Class TclTkCallback
In: tk/lib/tcltk.rb
Parent: TclTkObject

class TclTkCallback: tcl/tk callbacks

Methods

_call   new   to_eval  

Public Class methods

initialize(interp, pr, arg):

  interp: interpreter(TclTkInterpreter)
  pr: callback procedure(Proc)
  arg: string to pass as block parameters of pr
      bind command of tcl/tk uses % replacement for parameters
      pr can receive replaced data using block parameter
      its format is specified by arg string
      You should not specify arg for the command like
      scrollbar with -command option, which receives parameters
      without specifying any replacement

[Source]

# File tk/lib/tcltk.rb, line 316
  def initialize(interp, pr, arg = nil)
    # auto-generate tcl/tk representation (variable name)
    exp = TclTk._newname("c_")
    # initialize TclTkObject
    super(interp._tcltkip(), exp)
    # save parameters
    @pr = pr
    @arg = arg
    # register in the module
    TclTk._addcallback(self)
  end

Public Instance methods

_call(arg): invoke callback

  arg: callback parameter

[Source]

# File tk/lib/tcltk.rb, line 342
  def _call(arg)
    @pr.call(arg)
  end

to_eval(): retuens string representation for @ip._eval_args

[Source]

# File tk/lib/tcltk.rb, line 329
  def to_eval()
    if @arg
      # bind replaces %s before calling ruby_fmt, so %%s is used
      s = %Q/{ruby_fmt {TclTk._callcallback("#{to_s()}", "%%s")} #{@arg}}/
    else
      s = %Q/{ruby_fmt {TclTk._callcallback("#{to_s()}", "%s")}}/
    end

    return s
  end

[Validate]