SeS 16th of September 2015
Hi, yet again, an initiative for the electronics department, some more measurement widgets that I have been working on lately. The below namespace is part of a much more elaborate library of widgets to be included in tG² in the near future. This is work in progress, but already usable, and serves well as an early demonstrator.
Things in the pipeline:
- knob switches - flip switches - LED of various sizes and properties - Different sizes of meters - all to be inlcuded into the layout editor for user to pick-and-place in the toplevel layout
If you are interested in pursuing making your own background images for your widgets, I can recommend MS Word 2013's many reconfigerable & insertable drawing objects. I always used a more professional tool for image editing & creation, but as it turns out Word is powerfull as well for the smaller jobs, here a screenshot of the compund meter-widget:
Below script is tested on a MS Windows 10 OS, using Wish v8.4.19.
# Copyright (C) 2015 by Sedat Serper, email : [email protected] # # The author hereby grant permission to use, copy, modify, distribute, # and license this software and its documentation for any purpose, # provided that existing copyright notices are retained in all copies # and that this notice is included verbatim in any distributions. No # written agreement, license, or royalty fee is required for any of the # authorized uses. Modifications to this software may be copyrighted by # their authors and need not follow the licensing terms described here, # provided that the new terms are clearly indicated on the first page of # each file where they apply. # # IN NO EVENT SHALL THE AUTHOR OR DISTRIBUTORS BE LIABLE TO ANY PARTY # FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES # ARISING OUT OF THE USE OF THIS SOFTWARE, ITS DOCUMENTATION, OR ANY # DERIVATIVES THEREOF, EVEN IF THE AUTHOR HAVE BEEN ADVISED OF THE # POSSIBILITY OF SUCH DAMAGE. # # THE AUTHOR AND DISTRIBUTORS SPECIFICALLY DISCLAIM ANY WARRANTIES, # INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND # NON-INFRINGEMENT. THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, # AND THE AUTHOR AND DISTRIBUTORS HAVE NO OBLIGATION TO PROVIDE # MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. # usage example: # 1. creation with minimum set of params: set w [::electr::place_meter . -100 100] # 2. change meter indicator with: set ::electr::($w,var) 23 package require Img namespace eval ::electr { image create photo ::electr::electr_meter1 -data { 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 } image create photo ::electr::electr_meter_screw -data { iVBORw0KGgoAAAANSUhEUgAAABMAAAASCAMAAACO0hVbAAAABGdBTUEAALGPC/xhBQAAACBjSFJN AAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAABtlBMVEUAAADv7/Da2tzKys3G xsnMzM/d3d/y8vPGxsqnp62cnKKZmZ+dnaKqqq/z8/Pg4OKYmJ6wsLXo6Oni4uOkpKqSkph0dHxx cXh4eH+Wlpyrq7Dp6evw8PCurrOamp+OjpdiYmxcXGRra3KWlp23t7v09PXOztGQkJpkZHBdXWRy cnmZmaCcnKHZ2dvx8fKxsbWYmJ2NjZpjY3FcXGN2dn2YmJ+Xl52Xl567u7/19fXl5eajo6ibm62Y mMCPj7KGhqV/f6NxcYNqanGCgombm6OpqbC0tLuioqjt7e3c3N6enqSZmZ2dnbulpe6kpO2iouui ouqamrWVlZq0tLra2uHa2uLd3eTb2+KqqrCjo6nm5ufc3N2jo+yioumhoeacnLaXl5y1tbvZ2eCa mquZmbuTk7CMjKV+fpyLi5yQkJagoKejo6qdnaSoqK6xsbfq6uqZmZ6RkZyJiZaOjpS7u76UlJ6M jJeOjpWVlZybm6HW1tjx8fCvr7OVlZ6NjZaSkpmamqDb29ympquTk5qUlJqsrLDh4eLZ2dre3t/E xMapqa6dnaPIyMvT09THx8nDw8bV1db///9fcCquAAAAAXRSTlMAQObYZgAAAAFiS0dEkQ8NvpoA AAAJcEhZcwAACxIAAAsSAdLdfvwAAAEfSURBVBjTY2AAA0YmZhZWNnYGBGDk4OTi5ubm4WXlgwnx 8woIcAuAMLegEERIWESAm1tUTFxCkptbQEoaJCQjCxSSk1dQVFIG6hdQUQWKqQFZ3HLqGppa2iCW ji4Dg56+ALeBgYGhkbGJqZmZALe5hSWDlbWAja2dvYOjk7Oyi6ubuzmvB4Onl7ePr59/QGBQcEho WHiEWWQUQzRQzC8mNi4+ITEpKTwEKGbFwGAtkJySmpaekZmVnZOblyXAm8/AALSjwLugsKjYlAvs 7hIZBgZWOZATSsvKKypBDK6qaqADa4Bu5q6tK69vALsZ7LfGJqCgeXN9C0iotQ3i4XYpbpBSoEiD fgc8sDq7uhu4G7xae5ACkKGtt6+/ZwKUAwDPnDh1f0MvqAAAABZ0RVh0Q3JlYXRpb24gVGltZQAw My8yMC8wOSwpFjkAAAAldEVYdGRhdGU6Y3JlYXRlADIwMTUtMDktMTZUMTE6MjY6MzIrMDI6MDCd drhBAAAAJXRFWHRkYXRlOm1vZGlmeQAyMDE1LTA5LTE2VDExOjI2OjMyKzAyOjAw7CsA/QAAABh0 RVh0U29mdHdhcmUAQWRvYmUgRmlyZXdvcmtzT7MfTgAAAABJRU5ErkJggg== } # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - proc ::electr::drawMtrIndicator {w} { variable cfg set xoff $cfg($w,xoffs) set yoff $cfg($w,yoffs) set mL $cfg($w,ilength) $w create polygon \ [expr $xoff] [expr $yoff] \ [expr $xoff-5] [expr $yoff+7] \ [expr $xoff-$mL] [expr $yoff+1] \ [expr $xoff-$mL] [expr $yoff-1] \ [expr $xoff-5] [expr $yoff-7] \ [expr $xoff] [expr $yoff] \ -tags {arrowPointer} -fill $cfg($w,aClr) -outline $cfg($w,aLClr) -width 1 set cfg($w,initCrds) [$w coords arrowPointer] } # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - proc ::electr::sweepMeter {w} { variable cfg $w itemconfigure reset1 -outline gray30 $w itemconfigure reset2 -fill gray30 $w itemconfigure play -fill white $w itemconfigure pause -fill white set cfg($w,init) 1 set dir "" set i $cfg($w,minR) while {$i > ($cfg($w,minR)-2)} { ::electr::rotateIndicator $w $i 1 after 4 update idletasks incr i ${dir}2 if {$i==($cfg($w,max)+$cfg($w,minR)-2)} {set dir -} } set cfg($w,init) 0 $w itemconfigure reset1 -outline white $w itemconfigure reset2 -fill white if {$::electr::cfg($w,pause)} {$w itemconfigure pause -fill gray30} {$w itemconfigure play -fill gray30} } # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - proc ::electr::rotateIndicator {w val {init 0}} { variable cfg if {$val < $cfg($w,minR)} {set val $cfg($w,minR)} if {$val > $cfg($w,maxR)} {set val $cfg($w,maxR)} set v $val if {(!$init && $cfg($w,init)) || (!$init && $cfg($w,pause))} {return} if {$cfg($w,minR)!=0} {set val [expr $val + abs($cfg($w,minR))]} if {[string first "." $val]<0} {set val $val.00} set angle [expr -$val/$cfg($w,max)*(1.25 * 3.14159265)] set xoffs $cfg($w,xoffs) set yoffs $cfg($w,yoffs) set crds {} foreach {x y} $cfg($w,initCrds) { set thr [expr {atan2($y-$yoffs, $x-$xoffs)}] set r [expr {hypot($x-$xoffs, $y-$yoffs)}] lappend crds [expr {$xoffs + $r * cos($thr - $angle)}] lappend crds [expr {$yoffs + $r * sin($thr - $angle)}] } if {$cfg($w,prevCrds)!=$crds} { $w coords arrowPointer $crds set cfg($w,prevCrds) $crds $w itemconfigure txtVal -text [format %0.$cfg($w,dec)f $v] $w coords txtVal [expr [lindex $crds 4] + 5] [expr [lindex $crds 5] - 8] } } # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - proc ::electr::createMtrBindings {w} { variable cfg $w bind reset <ButtonRelease-1> { ::electr::sweepMeter %W set ::electr::cfg(%W,pause) 0 %W itemconfigure play -fill gray30 %W itemconfigure pause -fill white } $w bind reset <Enter> { %W itemconfigure reset1 -outline $::electr::cfg(%W,mCtrl) %W itemconfigure reset2 -fill $::electr::cfg(%W,mCtrl) } $w bind reset <Leave> { %W itemconfigure reset1 -outline white %W itemconfigure reset2 -fill white } $w bind pause <ButtonRelease-1> { set ::electr::cfg(%W,pause) 1 %W itemconfigure pause -fill gray30 %W itemconfigure play -fill white } $w bind pause <Enter> { %W itemconfigure pause -fill $::electr::cfg(%W,mCtrl) } $w bind pause <Leave> { if {$::electr::cfg(%W,pause)} { %W itemconfigure pause -fill gray30 } { %W itemconfigure pause -fill white } } $w bind play <ButtonRelease-1> { set ::electr::cfg(%W,pause) 0 %W itemconfigure play -fill gray30 %W itemconfigure pause -fill white ::electr::rotateIndicator %W $::electr::cfg(%W,var) } $w bind play <Enter> { %W itemconfigure play -fill $::electr::cfg(%W,mCtrl) } $w bind play <Leave> { if {!$::electr::cfg(%W,pause)} { %W itemconfigure play -fill gray30 } { %W itemconfigure play -fill white } } } # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - proc ::electr::placeMtrCtrls {w} { variable cfg switch $cfg($w,size) { "0" { set x 70 set y 250 $w create polygon \ [expr $x] [expr $y] \ [expr $x+30] [expr $y+20] \ [expr $x] [expr $y+40] \ [expr $x] [expr $y] \ -fill white -outline {} -tags {play} set x 130 set y 310 $w create rectangle $x $y [expr $x + 8] [expr $y + 34] -fill white -outline {} -tags {pause pause1} $w create rectangle [expr $x+8+5] $y [expr $x + 16+5] [expr $y + 34] -fill white -outline {} -tags {pause pause2} set x 212 set y 318 $w create oval [expr $x] [expr $y] [expr $x+35] [expr $y+35] -fill gray -width 8 -outline white -tags {reset reset1} set x [expr $x-11] set y [expr $y+15] $w create polygon \ [expr $x] [expr $y] \ [expr $x+12] [expr $y+12] \ [expr $x+24] [expr $y] \ [expr $x] [expr $y] \ -fill white -outline {} -tags {reset reset2} } } } # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - proc ::electr::place_meter {tParent min max {size 0} {init 1} {x ""} {y ""} {txtClr black} {decimals 1} {Pack "-expand 1 -fill both"} {toolTip ""}} { variable cfg if {$tParent=="."} {set w .eMtr} {set w $tParent.eMtr} set cfg(w) $w set cfg($w,mCtrl) steelblue set cfg($w,prevCrds) 0 set cfg($w,min) 0 set cfg($w,minR) $min set cfg($w,maxR) $max set cfg($w,max) $max set cfg($w,init) $init set cfg($w,pause) 0 set cfg($w,size) $size set cfg($w,txtClr) $txtClr set cfg($w,var) $cfg($w,minR) set cfg($w,dec) $decimals if {$min<0} {set cfg($w,max) [expr $max + abs($min)]} switch $size { "0" { set cfg($w,xoffs) 200 set cfg($w,yoffs) 220 set cfg($w,W) 400 set cfg($w,H) 400 set cfg($w,ilength) 130 } } set cfg($w,aClr) white set cfg($w,aLClr) black canvas $w -width $cfg($w,W) -height $cfg($w,H) entry $w.e -textvariable ::electr::cfg($w,var) -validate all -validatecommand " ::electr::rotateIndicator $w \$::electr::cfg($w,var) return 1 " switch $size { "0" { $w create image 200 220 -image ::electr::electr_meter1 -tags bg $w create image 200 220 -image ::electr::electr_meter_screw -tags screw $w create text 40 270 -text "" -tags {txtVal} -font $::defaultFont -fill blue $w create text 20 220 -text $min -tags {txt1} -font $::defaultFont -fill $cfg($w,txtClr) $w create text 75 100 -text [expr $min + ($max - $min)*1/5.0] -tags {txt2} -font $::defaultFont -fill $cfg($w,txtClr) $w create text 195 50 -text [expr $min + ($max - $min)*2/5.0] -tags {txt3} -font $::defaultFont -fill $cfg($w,txtClr) $w create text 325 100 -text [expr $min + ($max - $min)*3/5.0] -tags {txt4} -font $::defaultFont -fill $cfg($w,txtClr) $w create text 370 220 -text [expr $min + ($max - $min)*4/5.0] -tags {txt5} -font $::defaultFont -fill $cfg($w,txtClr) $w create text 325 335 -text [expr $max] -tags {txt6} -font $::defaultFont -fill $cfg($w,txtClr) ::electr::placeMtrCtrls $w } } if {($x!="") && ($y!="")} {place $w -x $x -y $y} {eval "pack $w $Pack"} if {$toolTip!=""} {balloon $w $toolTip} ::electr::drawMtrIndicator $w $w raise screw $w raise txtVal if {$init} {after idle ::electr::sweepMeter $w} ::electr::createMtrBindings $w return $w } }
How to test? Simple:
# save the above to a file (the_above.tcl) and source it source the_above.tcl # create the widget set defaultFont {arial 8} set w [::electr::place_meter . -100 100] # set a different value for the meter set ::electr::($w,var) 23