From: Ron F. <ro...@us...> - 2006-10-18 19:39:36
|
Update of /cvsroot/nscldaq/clients/slowControls/widgets In directory sc8-pr-cvs7.sourceforge.net:/tmp/cvs-serv7545 Modified Files: Makefile.am epicsEnumTest.tcl epicsEnumeratedControl.tcl Added Files: epicsTypeNGo.tcl Log Message: Added the epicstypngo which, for now is suitable for motors. Index: Makefile.am =================================================================== RCS file: /cvsroot/nscldaq/clients/slowControls/widgets/Makefile.am,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** Makefile.am 18 Oct 2006 15:02:26 -0000 1.1 --- Makefile.am 18 Oct 2006 19:39:23 -0000 1.2 *************** *** 2,6 **** PACKAGES = meter.tcl bcmMeter.tcl epicsLabel.tcl \ ! radioMatrix.tcl epicsEnumeratedControl.tcl XMLFILES = meter.xml bcmMeter.xml epicsLabel.xml --- 2,7 ---- PACKAGES = meter.tcl bcmMeter.tcl epicsLabel.tcl \ ! radioMatrix.tcl epicsEnumeratedControl.tcl \ ! typeNGo.tcl epicsTypeNGo.tcl XMLFILES = meter.xml bcmMeter.xml epicsLabel.xml --- NEW FILE: epicsTypeNGo.tcl --- # This software is Copyright by the Board of Trustees of Michigan # State University (c) Copyright 2005. # # You may use this software under the terms of the GNU public license # (GPL). The terms of this license are described at: # # http://www.gnu.org/licenses/gpl.txt # # Author: # Ron Fox # NSCL # Michigan State University # East Lansing, MI 48824-1321 # # Implements a typeNGo widget that is specialized to epics. # In particular, the label part of the typeNGo tracks an epics # channel value and the click/<Return> binding will # map to setting the value of the channel from the entry widget. # # OPTIONS: # -channel - Specifies the epics channel to control/monitor. # All other options other than -command are delegated to the # typeNGo widget we are based on. # # METHODS: # All typeNGo methods are supported. # package provide epicsTypeNGo 1.0 package require Tk package require snit package require typeNGo package require epics namespace eval controlwidget { } snit::widget controlwidget::epicsTypeNGo { delegate option * to basewidget except -command delegate method * to basewidget option -channel {} constructor args { install basewidget as controlwidget::typeNGo $win.tng -command [mymethod onChanged] $self configurelist $args # Now deal with getting/binding the channel to the widget. # set channel $options(-channel) if {$channel eq "" } { error "controlwdiget::epicsTypeNGo must have a -channel specification" } epicschannel $channel $channel link ::controlwidget::$channel $win.tng configure -textvariable ::controlwidget::$channel pack $win.tng -fill both -expand 1 # try to preload the entry with the setv... epicschannel $channel.SETV after 100 [mymethod loadEntry] } # Called when the entry has been comitted.. we just need to set the epics # channel value: method onChanged {} { set newValue [$win.tng Get] set channel $options(-channel) $channel set $newValue; # The label will track readback changes. } # # Called to attempt to load the entry widget with the value of SETV at # start time. On failure reschedules self. # method loadEntry {} { set channel $options(-channel).SETV if {[catch {$channel get} value] || ($value eq "")} { after 100 [mymethod loadEntry] } # value is the current setv value: $win.tng Set $value } } Index: epicsEnumeratedControl.tcl =================================================================== RCS file: /cvsroot/nscldaq/clients/slowControls/widgets/epicsEnumeratedControl.tcl,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** epicsEnumeratedControl.tcl 18 Oct 2006 15:01:31 -0000 1.1 --- epicsEnumeratedControl.tcl 18 Oct 2006 19:39:23 -0000 1.2 *************** *** 77,80 **** --- 77,81 ---- epicschannel $channel + epicschannel $channel.SETV $channel link ::controlwidget::$channel *************** *** 111,118 **** method updateRadio {} { set channel $options(-channel) # If not connected reschedule every 100ms ! if {[catch {$channel get} value] || ($value eq "")} { after 100 [mymethod updateRadio] } --- 112,120 ---- method updateRadio {} { set channel $options(-channel) + # If not connected reschedule every 100ms ! if {[catch {$channel.SETV get} value] || ($value eq "")} { after 100 [mymethod updateRadio] } Index: epicsEnumTest.tcl =================================================================== RCS file: /cvsroot/nscldaq/clients/slowControls/widgets/epicsEnumTest.tcl,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** epicsEnumTest.tcl 18 Oct 2006 15:01:31 -0000 1.1 --- epicsEnumTest.tcl 18 Oct 2006 19:39:23 -0000 1.2 *************** *** 3,7 **** # NSCL aio test channel is ABTEST ! ::controlwidget::epicsEnumeratedControl .tgt -channel ABTEST \ -rows 3 -values [list 0 1 2 3 4 5 6] pack .tgt --- 3,7 ---- # NSCL aio test channel is ABTEST ! ::controlwidget::epicsEnumeratedControl .tgt -channel ABTEST \ -rows 3 -values [list 0 1 2 3 4 5 6] pack .tgt |