Module | TclTk |
In: |
tcltklib/lib/tcltk.rb
|
module TclTk: collection of tcl/tk utilities (supplies namespace.)
TclTk._addcallback(ca): register callback
ca: callback(TclTkCallback)
# File tcltklib/lib/tcltk.rb, line 52 def TclTk._addcallback(ca) print("_addcallback: ", ca.to_s(), "\n") if $DEBUG @callback[ca.to_s()] = ca end
TclTk._callcallback(key, arg): invoke registered callback
key: key to select callback (to_s value of the TclTkCallback) arg: parameter from tcl/tk interpreter
# File tcltklib/lib/tcltk.rb, line 60 def TclTk._callcallback(key, arg) print("_callcallback: ", @callback[key].inspect, "\n") if $DEBUG @callback[key]._call(arg) # throw out callback value # should return String to satisfy rb_eval_string() return "" end
TclTk._newname(prefix): generate unique name(String)
prefix: prefix of the unique name
# File tcltklib/lib/tcltk.rb, line 70 def TclTk._newname(prefix) # generated name counter is stored in @namecnt if !@namecnt.key?(prefix) # first appearing prefix, initialize @namecnt[prefix] = 1 else # already appeared prefix, generate next name @namecnt[prefix] += 1 end return "#{prefix}#{@namecnt[prefix]}" end
TclTk.dcb(ca, wid, W): call TclTk.deletecallbackkey() for each callbacks
in an array. this is for callback for top-level <Destroy> ca: array of callbacks(TclTkCallback) wid: top-level widget(TclTkWidget) w: information about window given by %W(String)
# File tcltklib/lib/tcltk.rb, line 42 def TclTk.dcb(ca, wid, w) if wid.to_s() == w ca.each{|i| TclTk.deletecallbackkey(i) } end end
TclTk.deletecallbackkey(ca): remove callback from TclTk module
this does not remove callbacks from tcl/tk interpreter without calling this method, TclTkInterpreter will not be GCed ca: callback(TclTkCallback)
# File tcltklib/lib/tcltk.rb, line 31 def TclTk.deletecallbackkey(ca) print("deletecallbackkey: ", ca.to_s(), "\n") if $DEBUG @callback.delete(ca.to_s) end
TclTk.mainloop(): call TclTkLib.mainloop()
# File tcltklib/lib/tcltk.rb, line 21 def TclTk.mainloop() print("mainloop: start\n") if $DEBUG TclTkLib.mainloop() print("mainloop: end\n") if $DEBUG end