Tcl Callbacks¶
When gtkwave performs various functions, global callback variables
prepended with gtkwave::
are modified within the Tcl interpreter. By
using the trace write feature in Tcl, scripts can achieve a very tight
integration with gtkwave. Global variables which may be used to register
callback procedures are as follows:
gtkwave::cbCloseTabNumber
contains the value returned is the number of
the tab which is going to be closed, starting from zero. As this is set
before the tab actually closes, scripts can interrogate for further
information.
gtkwave::cbCloseTraceGroup
contains the name of the expanded trace or
trace group being closed.
gtkwave::cbCurrentActiveTab
contains the number of the tab currently
selected. Note that when new tabs are being created, this callback
sometimes will oscillate between the old and new tab number, finally
settling on the new tab being created.
gtkwave::cbError
contains an error string such as “reload failed”,
“gtkwave::loadFile prohibited in callback”, “gtkwave::reLoadFile
prohibited in callback”, or “gtkwave::setTabActive prohibited in
callback”.
gtkwave::cbFromEntryUpdated
contains the value stored in the “From:”
widget when it is updated.
gtkwave::cbOpenTraceGroup
contains the name of a trace being expanded or
trace group being opened.
gtkwave::cbQuitProgram
contains the tab number which initiated a Quit
operation. Tabs are numbered starting from zero.
gtkwave::cbReloadBegin
contains the name of a trace being reloaded. This
is called at the start of a reload sequence.
gtkwave::cbReloadEnd
contains the name of a trace being reloaded. This
is called at the end of a reload sequence.
gtkwave::cbStatusText
contains the status text which goes to stderr.
gtkwave::cbTimerPeriod
contains the timer period in milliseconds
(default is 250), and this callback is invoked every timer period
expiration. If Tcl code modifies this value, the timer period can be
changed dynamically.
gtkwave::cbToEntryUpdated
contains the value stored in the “To:” widget
when it is updated.
gtkwave::cbTracesUpdated
contains the total number of traces. This is
called when traces are added, deleted, etc. from the viewer.
gtkwave::cbTreeCollapse
contains the flattened hierarchical name of the
SST tree node being collapsed.
gtkwave::cbTreeExpand
contains the flattened hierarchical name of the
SST tree node being expanded.
gtkwave::cbTreeSelect
contains the flattened hierarchical name of the
SST tree node being selected.
gtkwave::cbTreeSigDoubleClick
contains the name of the signal being
double-clicked in the signals section of the SST.
gtkwave::cbTreeSigSelect
contains the name of the signal being selected
in the signals section of the SST.
gtkwave::cbTreeSigUnselect
contains the name of the signal being
unselected in the signals section of the SST.
gtkwave::cbTreeUnselect
contains the flattened hierarchical name of the
SST tree node being unselected.
An example Tcl script follows to illustrate usage.
proc tracer {varname args} {
upvar 0 $varname var
puts "$varname was updated to be \"$var\""
}
proc tracer_error {varname args} {
upvar 0 $varname var
puts "*** ERROR: $varname was updated to be \"$var\""
}
set ie [ info exists tracer_defined ]
if { $ie == 0 } {
set tracer_defined 1
trace add variable gtkwave::cbTreeExpand
write "tracer gtkwave::cbTreeExpand"
trace add variable gtkwave::cbTreeCollapse
write "tracer gtkwave::cbTreeCollapse"
trace add variable gtkwave::cbTreeSelect
write "tracer gtkwave::cbTreeSelect"
trace add variable gtkwave::cbTreeUnselect
write "tracer gtkwave::cbTreeUnselect"
trace add variable gtkwave::cbTreeSigSelect
write "tracer gtkwave::cbTreeSigSelect"
trace add variable gtkwave::cbTreeSigUnselect
write "tracer gtkwave::cbTreeSigUnselect"
trace add variable gtkwave::cbTreeSigDoubleClick
write "tracer gtkwave::cbTreeSigDoubleClick"
}
puts "Exiting script!"