# File tk/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
# File tk/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
# File tk/lib/tkextlib/bwidget/tree.rb, line 395
def [](key)
cget(key)
end
# File tk/lib/tkextlib/bwidget/tree.rb, line 399
def []=(key, val)
configure(key, val)
val
end
# File tk/lib/tkextlib/bwidget/tree.rb, line 407
def cget(key)
@tree.itemcget(@id, key)
end
# File tk/lib/tkextlib/bwidget/tree.rb, line 410
def cget_strict(key)
@tree.itemcget_strict(@id, key)
end
# File tk/lib/tkextlib/bwidget/tree.rb, line 404
def cget_tkstring(key)
@tree.itemcget_tkstring(@id, key)
end
# File tk/lib/tkextlib/bwidget/tree.rb, line 426
def close_tree(recurse=None)
@tree.close_tree(@id, recurse)
self
end
# File tk/lib/tkextlib/bwidget/tree.rb, line 418
def configinfo(key=nil)
@tree.itemconfiginfo(@id, key)
end
# File tk/lib/tkextlib/bwidget/tree.rb, line 414
def configure(key, val=None)
@tree.itemconfigure(@id, key, val)
end
# File tk/lib/tkextlib/bwidget/tree.rb, line 422
def current_configinfo(key=nil)
@tree.current_itemconfiginfo(@id, key)
end
# File tk/lib/tkextlib/bwidget/tree.rb, line 431
def delete
@tree.delete(@id)
self
end
# File tk/lib/tkextlib/bwidget/tree.rb, line 436
def edit(*args)
@tree.edit(@id, *args)
self
end
# File tk/lib/tkextlib/bwidget/tree.rb, line 441
def exist?
@tree.exist?(@id)
end
# File tk/lib/tkextlib/bwidget/tree.rb, line 445
def index
@tree.index(@id)
end
# File tk/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
# File tk/lib/tkextlib/bwidget/tree.rb, line 315
def mutex; @mutex; end
# File tk/lib/tkextlib/bwidget/tree.rb, line 462
def open?
bool(@tree.itemcget(@id, 'open'))
end
# File tk/lib/tkextlib/bwidget/tree.rb, line 457
def open_tree(recurse=None)
@tree.open_tree(@id, recurse)
self
end
# File tk/lib/tkextlib/bwidget/tree.rb, line 466
def parent
@tree.parent(@id)
end
# File tk/lib/tkextlib/bwidget/tree.rb, line 470
def reorder(neworder)
@tree.reorder(@id, neworder)
end
# File tk/lib/tkextlib/bwidget/tree.rb, line 474
def see
@tree.see(@id)
end
# File tk/lib/tkextlib/bwidget/tree.rb, line 478
def selection_add
@tree.selection_add(@id)
end
# File tk/lib/tkextlib/bwidget/tree.rb, line 482
def selection_remove
@tree.selection_remove(@id)
end
# File tk/lib/tkextlib/bwidget/tree.rb, line 486
def selection_set
@tree.selection_set(@id)
end
# File tk/lib/tkextlib/bwidget/tree.rb, line 490
def selection_toggle
@tree.selection_toggle(@id)
end
Commenting is here to help enhance the documentation. For example, code samples, or clarification of the documentation.
If you have questions about Ruby or the documentation, please post to one of the Ruby mailing lists. You will get better, faster, help that way.
If you wish to post a correction of the docs, please do so, but also file bug report so that it can be corrected for the next release. Thank you.
If you want to help improve the Ruby documentation, please visit Documenting-ruby.org.