# class TclTkCallback

class TclTkCallback: tcl/tk callbacks

### Public Class Methods

new(interp, pr, arg = nil) click to toggle source

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

Calls superclass method TclTkObject.new

    # File lib/tcltk.rb, line 318
    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) click to toggle source

_call(arg): invoke callback

    arg: callback parameter

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

to_eval() click to toggle source

#to_eval(): returns string representation for @ip._eval_args

    # File lib/tcltk.rb, line 331
    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