Class Tk::BLT::Treeview::Node
In: tk/lib/tkextlib/blt/treeview.rb
Parent: TkObject

Methods

id   id2obj   new   new  

Included Modules

Tk::BLT::Treeview::TagOrID_Methods

Constants

TreeNodeID_TBL = TkCore::INTERP.create_table
TreeNode_ID = ['blt_treeview_node'.freeze, '00000'.taint].freeze

Public Class methods

[Source]

# File tk/lib/tkextlib/blt/treeview.rb, line 974
  def self.id2obj(tree, id)
    tpath = tree.path
    return id unless TreeNodeID_TBL[tpath]
    if TreeNodeID_TBL[tpath][id]
      TreeNodeID_TBL[tpath][id]
    else
      begin
        self.new(tree, nil, nil, 'node'=>Integer(id))
      rescue
        id
      end
    end
  end

[Source]

# File tk/lib/tkextlib/blt/treeview.rb, line 988
  def self.new(tree, pos, parent=nil, keys={})
    if parent.kind_of?(Hash)
      keys = parent
      parent = nil
    end

    keys = _symbolkey2str(keys)
    tpath = tree.path

    if (id = keys['node']) && (obj = TreeNodeID_TBL[tpath][id])
      keys.delete('node')
      tk_call(tree.path, 'move', id, pos, parent) if parent
      return obj
    end

    super(tree, pos, parent, keys)
  end

[Source]

# File tk/lib/tkextlib/blt/treeview.rb, line 1006
  def initialize(tree, pos, parent, keys)
    @parent = @tree = tree
    @tpath = @parent.path

    if (id = keys['node'])
      @path = @id = id
      tk_call(@tpath, 'move', @id, pos, tagid(parent)) if parent
    else
      name = TreeNode_ID.join(TkCore::INTERP._ip_id_).freeze
      TreeNode_ID[1].succ!

      at = keys.delete['at']

      if parent
        if parent.kind_of?(Tk::BLT::Treeview::Node) || 
            parent.kind_of?(Tk::BLT::Treeview::Tag)
          path = [get_full(parent.id)[0], name]
          at = nil # ignore 'at' option
        else
          path = [parent.to_s, name]
        end
      else
        path = name
      end

      if at
        @id = tk_call(@tpath, 'insert', '-at', tagid(at), pos, path, keys)
      else
        @id = tk_call(@tpath, 'insert', pos, path, keys)
      end
      @path = @id
    end

    TreeNodeID_TBL[@tpath] = {} unless TreeNodeID_TBL[@tpath]
    TreeNodeID_TBL[@tpath][@id] = self
  end

Public Instance methods

[Source]

# File tk/lib/tkextlib/blt/treeview.rb, line 1043
  def id
    @id
  end

[Validate]