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

Methods

Constants

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

Public Class methods

[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

[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

[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

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

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

[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

[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

[Source]

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

[Source]

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

[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

[Source]

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

[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

[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

[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

[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

[Source]

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

[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

[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]