# class Tk::BWidget::Tree::Node

### Constants

TreeNode_ID
TreeNode_TBL

### Public Class Methods

id2obj(tree, id) click to toggle source

    # File lib/tkextlib/bwidget/tree.rb, line 323
    def self.id2obj(tree, id)
      tpath = tree.path
      TreeNode_TBL.mutex.synchronize{
        if TreeNode_TBL[tpath]
          TreeNode_TBL[tpath][id]? TreeNode_TBL[tpath][id]: id
        else
          id
        end
      }
    end

new(tree, *args) click to toggle source

    # File lib/tkextlib/bwidget/tree.rb, line 334
    def initialize(tree, *args)
      if tree.kind_of?(Tk::BWidget::Tree)
        @tree = tree
        parent = args.shift
        if parent.kind_of?(Tk::BWidget::Tree::Node)
          if parent.tree.path != @tree.path
            fail RuntimeError, 'tree of parent node is not match'
          end
        end
      elsif tree.kind_of?(Tk::BWidget::Tree::Node)
        @tree = tree.tree
        parent = tree.parent
      else
        fail RuntimeError,
          "expect Tk::BWidget::Tree or Tk::BWidget::Tree::Node for 1st argument"
      end

      if args[-1].kind_of?(Hash)
        keys = _symbolkey2str(args.pop)
      else
        keys = {}
      end

      index = keys.delete('index')
      unless args.empty?
        index = args.shift
      end
      index = 'end' unless index

      unless args.empty?
        fail RuntimeError, 'too much arguments'
      end

      @tpath = @tree.path

      if keys.key?('nodename')
        @path = @id = keys.delete('nodename')
      else
        TreeNode_ID.mutex.synchronize{
          @path = @id = TreeNode_ID.join(TkCore::INTERP._ip_id_)
          TreeNode_ID[1].succ!
        }
      end

      TreeNode_TBL.mutex.synchronize{
        TreeNode_TBL[@id] = self
        TreeNode_TBL[@tpath] = {} unless TreeNode_TBL[@tpath]
        TreeNode_TBL[@tpath][@id] = self
      }

      @tree.insert(index, parent, @id, keys)
    end

### Public Instance Methods

[](key) click to toggle source

    # File lib/tkextlib/bwidget/tree.rb, line 395
    def [](key)
      cget(key)
    end

[]=(key, val) click to toggle source

    # File lib/tkextlib/bwidget/tree.rb, line 399
    def []=(key, val)
      configure(key, val)
      val
    end

cget(key) click to toggle source

    # File lib/tkextlib/bwidget/tree.rb, line 407
    def cget(key)
      @tree.itemcget(@id, key)
    end

cget_strict(key) click to toggle source

    # File lib/tkextlib/bwidget/tree.rb, line 410
    def cget_strict(key)
      @tree.itemcget_strict(@id, key)
    end

cget_tkstring(key) click to toggle source

    # File lib/tkextlib/bwidget/tree.rb, line 404
    def cget_tkstring(key)
      @tree.itemcget_tkstring(@id, key)
    end

close_tree(recurse=None) click to toggle source

    # File lib/tkextlib/bwidget/tree.rb, line 426
    def close_tree(recurse=None)
      @tree.close_tree(@id, recurse)
      self
    end

configinfo(key=nil) click to toggle source

    # File lib/tkextlib/bwidget/tree.rb, line 418
    def configinfo(key=nil)
      @tree.itemconfiginfo(@id, key)
    end

configure(key, val=None) click to toggle source

    # File lib/tkextlib/bwidget/tree.rb, line 414
    def configure(key, val=None)
      @tree.itemconfigure(@id, key, val)
    end

current_configinfo(key=nil) click to toggle source

    # File lib/tkextlib/bwidget/tree.rb, line 422
    def current_configinfo(key=nil)
      @tree.current_itemconfiginfo(@id, key)
    end

delete() click to toggle source

    # File lib/tkextlib/bwidget/tree.rb, line 431
    def delete
      @tree.delete(@id)
      self
    end

edit(*args) click to toggle source

    # File lib/tkextlib/bwidget/tree.rb, line 436
    def edit(*args)
      @tree.edit(@id, *args)
      self
    end

exist?() click to toggle source

    # File lib/tkextlib/bwidget/tree.rb, line 441
    def exist?
      @tree.exist?(@id)
    end

id() click to toggle source

    # File lib/tkextlib/bwidget/tree.rb, line 391
    def id
      @id
    end

index() click to toggle source

    # File lib/tkextlib/bwidget/tree.rb, line 445
    def index
      @tree.index(@id)
    end

move(index, parent=nil) click to toggle source

    # File lib/tkextlib/bwidget/tree.rb, line 449
    def move(index, parent=nil)
      if parent
        @tree.move(parent, @id, index)
      else
        @tree.move(self.parent, @id, index)
      end
    end

mutex() click to toggle source

    # File lib/tkextlib/bwidget/tree.rb, line 315
    def mutex; @mutex; end

open?() click to toggle source

    # File lib/tkextlib/bwidget/tree.rb, line 462
    def open?
      bool(@tree.itemcget(@id, 'open'))
    end

open_tree(recurse=None) click to toggle source

    # File lib/tkextlib/bwidget/tree.rb, line 457
    def open_tree(recurse=None)
      @tree.open_tree(@id, recurse)
      self
    end

parent() click to toggle source

    # File lib/tkextlib/bwidget/tree.rb, line 466
    def parent
      @tree.parent(@id)
    end

reorder(neworder) click to toggle source

    # File lib/tkextlib/bwidget/tree.rb, line 470
    def reorder(neworder)
      @tree.reorder(@id, neworder)
    end

see() click to toggle source

    # File lib/tkextlib/bwidget/tree.rb, line 474
    def see
      @tree.see(@id)
    end

selection_add() click to toggle source

    # File lib/tkextlib/bwidget/tree.rb, line 478
    def selection_add
      @tree.selection_add(@id)
    end

selection_remove() click to toggle source

    # File lib/tkextlib/bwidget/tree.rb, line 482
    def selection_remove
      @tree.selection_remove(@id)
    end

selection_set() click to toggle source

    # File lib/tkextlib/bwidget/tree.rb, line 486
    def selection_set
      @tree.selection_set(@id)
    end

selection_toggle() click to toggle source

    # File lib/tkextlib/bwidget/tree.rb, line 490
    def selection_toggle
      @tree.selection_toggle(@id)
    end

toggle() click to toggle source

    # File lib/tkextlib/bwidget/tree.rb, line 494
    def toggle
      @tree.toggle(@id)
    end

tree() click to toggle source

    # File lib/tkextlib/bwidget/tree.rb, line 387
    def tree
      @tree
    end

visible() click to toggle source

    # File lib/tkextlib/bwidget/tree.rb, line 498
    def visible
      @tree.visible(@id)
    end