# File tk/lib/tkextlib/bwidget/tree.rb, line 322
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
# File tk/lib/tkextlib/bwidget/tree.rb, line 333
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
# File tk/lib/tkextlib/bwidget/tree.rb, line 394
def [](key)
cget(key)
end
# File tk/lib/tkextlib/bwidget/tree.rb, line 398
def []=(key, val)
configure(key, val)
val
end
# File tk/lib/tkextlib/bwidget/tree.rb, line 406
def cget(key)
@tree.itemcget(@id, key)
end
# File tk/lib/tkextlib/bwidget/tree.rb, line 409
def cget_strict(key)
@tree.itemcget_strict(@id, key)
end
# File tk/lib/tkextlib/bwidget/tree.rb, line 403
def cget_tkstring(key)
@tree.itemcget_tkstring(@id, key)
end
# File tk/lib/tkextlib/bwidget/tree.rb, line 425
def close_tree(recurse=None)
@tree.close_tree(@id, recurse)
self
end
# File tk/lib/tkextlib/bwidget/tree.rb, line 417
def configinfo(key=nil)
@tree.itemconfiginfo(@id, key)
end
# File tk/lib/tkextlib/bwidget/tree.rb, line 413
def configure(key, val=None)
@tree.itemconfigure(@id, key, val)
end
# File tk/lib/tkextlib/bwidget/tree.rb, line 421
def current_configinfo(key=nil)
@tree.current_itemconfiginfo(@id, key)
end
# File tk/lib/tkextlib/bwidget/tree.rb, line 430
def delete
@tree.delete(@id)
self
end
# File tk/lib/tkextlib/bwidget/tree.rb, line 435
def edit(*args)
@tree.edit(@id, *args)
self
end
# File tk/lib/tkextlib/bwidget/tree.rb, line 440
def exist?
@tree.exist?(@id)
end
# File tk/lib/tkextlib/bwidget/tree.rb, line 444
def index
@tree.index(@id)
end
# File tk/lib/tkextlib/bwidget/tree.rb, line 448
def move(index, parent=nil)
if parent
@tree.move(parent, @id, index)
else
@tree.move(self.parent, @id, index)
end
end
# File tk/lib/tkextlib/bwidget/tree.rb, line 314
def mutex; @mutex; end
# File tk/lib/tkextlib/bwidget/tree.rb, line 461
def open?
bool(@tree.itemcget(@id, 'open'))
end
# File tk/lib/tkextlib/bwidget/tree.rb, line 456
def open_tree(recurse=None)
@tree.open_tree(@id, recurse)
self
end
# File tk/lib/tkextlib/bwidget/tree.rb, line 465
def parent
@tree.parent(@id)
end
# File tk/lib/tkextlib/bwidget/tree.rb, line 469
def reorder(neworder)
@tree.reorder(@id, neworder)
end
# File tk/lib/tkextlib/bwidget/tree.rb, line 473
def see
@tree.see(@id)
end
# File tk/lib/tkextlib/bwidget/tree.rb, line 477
def selection_add
@tree.selection_add(@id)
end
# File tk/lib/tkextlib/bwidget/tree.rb, line 481
def selection_remove
@tree.selection_remove(@id)
end
# File tk/lib/tkextlib/bwidget/tree.rb, line 485
def selection_set
@tree.selection_set(@id)
end
# File tk/lib/tkextlib/bwidget/tree.rb, line 489
def selection_toggle
@tree.selection_toggle(@id)
end