Class | Tk::Itk::Component
In: | tk/lib/tkextlib/itk/incr_tk.rb
Parent: | TkObject

### Methods

bind bind_append bind_remove bindinfo epath id2obj master method_missing name new new path tk_send tk_send_with_enc tk_send_without_enc to_eval widget widget_class

### Constants

ComponentID_TBL | = | TkCore::INTERP.create_table
Itk_Component_ID | = | ['itk:component'.freeze, '00000'.taint].freeze

### Public Class methods

id2obj(master, id)

[Source]

    # File tk/lib/tkextlib/itk/incr_tk.rb, line 152
          def self.id2obj(master, id)
            if master.kind_of?(TkObject)
              master = master.path
            else
              master = master.to_s
            end
            return id unless ComponentID_TBL.key?(master)
            (ComponentID_TBL.key?(id))? ComponentID_TBL[master][id]: id
          end

new(master, component=nil)

[Source]

    # File tk/lib/tkextlib/itk/incr_tk.rb, line 162
          def self.new(master, component=nil)
            if master.kind_of?(TkObject)
              master = master.path
            else
              master = master.to_s
            end

            if component.kind_of?(Tk::Itk::Component)
              component = component.name
            elsif component
              component = component.to_s
            else
              component = Itk_Component_ID.join(TkCore::INTERP._ip_id_)
              Itk_Component_ID[1].succ!
            end

            if ComponentID_TBL.key?(master)
              if ComponentID_TBL[master].key?(component)
                return ComponentID_TBL[master][component]
              end
            else
              ComponentID_TBL[master] = {}
            end

            super(master, component)
          end

new(master, component)

[Source]

    # File tk/lib/tkextlib/itk/incr_tk.rb, line 189
          def initialize(master, component)
            @master = master
            @component = component

            ComponentID_TBL[@master][@component] = self

            begin
              @widget = window(tk_call(@master, 'component', @component))
              @path = @widget.path
            rescue
              @widget = nil
              @path = nil
            end
          end

### Public Instance methods

bind(context, *args)

def bind(*args)

      unless @widget
        begin
          @widget = window(tk_call(@master, 'component', @component))
          @path = @widget.path
        rescue
          fail RuntimeError, 'component is not assigned to a widget'
        end
      end
      @widget.bind(*args)

end

[Source]

    # File tk/lib/tkextlib/itk/incr_tk.rb, line 354
          def bind(context, *args)
            unless @widget
              begin
                @widget = window(tk_call(@master, 'component', @component))
                @path = @widget.path
              rescue
                fail RuntimeError, 'component is not assigned to a widget'
              end
            end
            # if args[0].kind_of?(Proc) || args[0].kind_of?(Method)
            if TkComm._callback_entry?(args[0]) || !block_given?
              cmd = args.shift
            else
              cmd = Proc.new
            end
            @widget.bind(context, cmd, *args)
          end

bind_append(context, *args)

def bind_append(*args)

      unless @widget
        begin
          @widget = window(tk_call(@master, 'component', @component))
          @path = @widget.path
        rescue
          fail RuntimeError, 'component is not assigned to a widget'
        end
      end
      @widget.bind_append(*args)

end

[Source]

    # File tk/lib/tkextlib/itk/incr_tk.rb, line 383
          def bind_append(context, *args)
            unless @widget
              begin
                @widget = window(tk_call(@master, 'component', @component))
                @path = @widget.path
              rescue
                fail RuntimeError, 'component is not assigned to a widget'
              end
            end
            # if args[0].kind_of?(Proc) || args[0].kind_of?(Method)
            if TkComm._callback_entry?(args[0]) || !block_given?
              cmd = args.shift
            else
              cmd = Proc.new
            end
            @widget.bind_append(context, cmd, *args)
          end

bind_remove(*args)

[Source]

    # File tk/lib/tkextlib/itk/incr_tk.rb, line 401
          def bind_remove(*args)
            unless @widget
              begin
                @widget = window(tk_call(@master, 'component', @component))
                @path = @widget.path
              rescue
                fail RuntimeError, 'component is not assigned to a widget'
              end
            end
            @widget.bind_remove(*args)
          end

bindinfo(*args)

[Source]

    # File tk/lib/tkextlib/itk/incr_tk.rb, line 413
          def bindinfo(*args)
            unless @widget
              begin
                @widget = window(tk_call(@master, 'component', @component))
                @path = @widget.path
              rescue
                fail RuntimeError, 'component is not assigned to a widget'
              end
            end
            @widget.bindinfo(*args)
          end

epath()

[Source]

    # File tk/lib/tkextlib/itk/incr_tk.rb, line 216
          def epath
            path()
          end

master()

[Source]

    # File tk/lib/tkextlib/itk/incr_tk.rb, line 224
          def master
            @master
          end

method_missing(id, *args)

[Source]

    # File tk/lib/tkextlib/itk/incr_tk.rb, line 256
          def method_missing(id, *args)
            name = id.id2name

            # try 1 : component command
            begin
              return tk_call(@master, 'component', @component, name, *args)
            rescue
            end

            # try 2 : component configure
            len = args.length
            begin
              case len
              when 1
                if name[-1] == ?=
                  return configure(name[0..-2], args[0])
                else
                  return configure(name, args[0])
                end
              when 0
                return cget(name)
              end
            rescue
            end

            # try 3 : widget method or widget configure
            begin
              unless @widget
                @widget = window(tk_call(@master, 'component', @component))
                @path = @widget.path
              end
              @widget.__send__(id, *args)
            rescue
            end

            # unknown method
            fail RuntimeError, "unknown method '#{name}' for #{self.inspect}"
          end

name()

[Source]

    # File tk/lib/tkextlib/itk/incr_tk.rb, line 228
          def name
            @component
          end

path()

[Source]

    # File tk/lib/tkextlib/itk/incr_tk.rb, line 204
          def path
            unless @path
              begin
                @widget = window(tk_call(@master, 'component', @component))
                @path = @widget.path
              rescue
                fail RuntimeError, 'component is not assigned to a widget'
              end
            end
            @path
          end

tk_send(cmd, *rest)

[Source]

    # File tk/lib/tkextlib/itk/incr_tk.rb, line 295
          def tk_send(cmd, *rest)
            begin
              tk_call(@master, 'component', @component, cmd, *rest)
            rescue
              unless @path
                begin
                  @widget = window(tk_call(@master, 'component', @component))
                  @path = @widget.path
                rescue
                  fail RuntimeError, 'component is not assigned to a widget'
                end
              end
              tk_call(@path, cmd, *rest)
            end
          end

tk_send_with_enc(cmd, *rest)

[Source]

    # File tk/lib/tkextlib/itk/incr_tk.rb, line 327
          def tk_send_with_enc(cmd, *rest)
            begin
              tk_call_with_enc(@master, 'component', @component, cmd, *rest)
            rescue
              unless @path
                begin
                  @widget = window(tk_call(@master, 'component', @component))
                  @path = @widget.path
                rescue
                  fail RuntimeError, 'component is not assigned to a widget'
                end
              end
              tk_call_with_enc(@path, cmd, *rest)
            end
          end

tk_send_without_enc(cmd, *rest)

[Source]

    # File tk/lib/tkextlib/itk/incr_tk.rb, line 311
          def tk_send_without_enc(cmd, *rest)
            begin
              tk_call_without_enc(@master, 'component', @component, cmd, *rest)
            rescue
              unless @path
                begin
                  @widget = window(tk_call(@master, 'component', @component))
                  @path = @widget.path
                rescue
                  fail RuntimeError, 'component is not assigned to a widget'
                end
              end
              tk_call_without_enc(@path, cmd, *rest)
            end
          end

to_eval()

[Source]

    # File tk/lib/tkextlib/itk/incr_tk.rb, line 220
          def to_eval
            path()
          end

widget()

[Source]

    # File tk/lib/tkextlib/itk/incr_tk.rb, line 232
          def widget
            unless @widget
              begin
                @widget = window(tk_call(@master, 'component', @component))
                @path = @widget.path
              rescue
                fail RuntimeError, 'component is not assigned to a widget'
              end
            end
            @widget
          end

widget_class()

[Source]

    # File tk/lib/tkextlib/itk/incr_tk.rb, line 244
          def widget_class
            unless @widget
              begin
                @widget = window(tk_call(@master, 'component', @component))
                @path = @widget.path
                @widget.classname
              rescue
                nil
              end
            end
          end

[Validate]