![show/hide quicksearch [+]](../../images/find.png)
 
               # File tk/lib/tkextlib/blt/tree.rb, line 619
def self.destroy(*names)
  tk_call('::blt::tree', 'destroy',
          *(names.collect{|n| (n.kind_of?(Tk::BLT::Tree))? n.id: n }) )
end
             
             
               # File tk/lib/tkextlib/blt/tree.rb, line 607
def self.id2obj(id)
  TreeID_TBL.mutex.synchronize{
    TreeID_TBL[id]? TreeID_TBL[id]: id
  }
end
             
             
               # File tk/lib/tkextlib/blt/tree.rb, line 651
def __destroy_hook__
  Tk::BLT::Tree::Node::TreeNodeID_TBL.mutex.synchronize{
    Tk::BLT::Tree::Node::TreeNodeID_TBL.delete(@path)
  }
  Tk::BLT::Tree::Tag::TreeTagID_TBL.mutex.synchronize{
    Tk::BLT::Tree::Tag::TreeTagID_TBL.delete(@path)
  }
  Tk::BLT::Tree::Notify::NotifyID_TBL.mutex.synchronize{
    Tk::BLT::Tree::Notify::NotifyID_TBL.delete(@path)
  }
  Tk::BLT::Tree::Trace::TraceID_TBL.mutex.synchronize{
    Tk::BLT::Tree::Trace::TraceID_TBL.delete(@path)
  }
end
             
             
               # File tk/lib/tkextlib/blt/tree.rb, line 587
def __keyonly_optkeys
  {
    # apply / find  command
    'invert'=>nil, 'leafonly'=>nil, 'nocase'=>nil,
    # apply / find / sort command
    'path'=>nil,
    # copy / restore / restorefile command
    'overwrite'=>nil,
    # copy command
    'recurse'=>nil, 'tags'=>nil,
    # sort command
    'ascii'=>nil, 'decreasing'=>nil, 'disctionary'=>nil,
    'integer'=>nil, 'real'=>nil, 'recurse'=>nil, 'reorder'=>nil,
  }
end
             
             
               # File tk/lib/tkextlib/blt/tree.rb, line 682
def ancestor(node1, node2)
  Tk::BLT::Tree::Node.id2obj(self, tk_call('::blt::tree', 'ancestor',
                                           tagid(node1), tagid(node2)))
end
             
             
               # File tk/lib/tkextlib/blt/tree.rb, line 787
def ancestor?(node1, node2)
  bool(tk_call('::blt::tree', 'is', 'ancestor',
               tagid(node1), tagid(node2)))
end
             
             
               # File tk/lib/tkextlib/blt/tree.rb, line 687
def apply(node, keys={})
  tk_call('::blt::tree', 'apply', tagid(node), __conv_keyonly_opts(keys))
  self
end
             
             
               # File tk/lib/tkextlib/blt/tree.rb, line 692
def attach(tree_obj)
  tk_call('::blt::tree', 'attach', tree_obj)
  self
end
             
             
               # File tk/lib/tkextlib/blt/tree.rb, line 791
def before?(node1, node2)
  bool(tk_call('::blt::tree', 'is', 'before',
               tagid(node1), tagid(node2)))
end
             
             
               # File tk/lib/tkextlib/blt/tree.rb, line 697
def children(node)
  simplelist(tk_call('::blt::tree', 'children', tagid(node))).collect{|n|
    Tk::BLT::Tree::Node.id2obj(self, n)
  }
end
             
             
               # File tk/lib/tkextlib/blt/tree.rb, line 703
def copy(src, parent, keys={})
  id = tk_call('::blt::tree', 'copy', tagid(src), tagid(parent),
               __conv_keyonly_opts(keys))
  Tk::BLT::Tree::Node.new(self, nil, 'node'=>id)
end
             
             
               # File tk/lib/tkextlib/blt/tree.rb, line 708
def copy_to(src, dest_tree, parent, keys={})
  return copy(src, parent, keys={}) unless dest_tree
  id = tk_call('::blt::tree', 'copy', tagid(src), dest_tree,
               tagid(parent), __conv_keyonly_opts(keys))
  Tk::BLT::Tree::Node.new(dest_tree, nil, 'node'=>id)
end
             
             
               # File tk/lib/tkextlib/blt/tree.rb, line 716
def degree(node)
  number(tk_call('::blt::tree', 'degree', tagid(node)))
end
             
             
               # File tk/lib/tkextlib/blt/tree.rb, line 720
def delete(*nodes)
  tk_call('::blt::tree', 'delete', *(nodes.collect{|node| tagid(node)}))
  Tk::BLT::Tree::Node::TreeNodeID_TBL.mutex.synchronize{
    nodes.each{|node|
      if node.kind_of?(Tk::BLT::Tree::Node)
        Tk::BLT::Tree::Node::TreeNodeID_TBL[@path].delete(node.id)
      else
        Tk::BLT::Tree::Node::TreeNodeID_TBL[@path].delete(node.to_s)
      end
    }
  }
  self
end
             
             
               # File tk/lib/tkextlib/blt/tree.rb, line 734
def depth(node)
  number(tk_call('::blt::tree', 'depth', tagid(node)))
end
             
             
               # File tk/lib/tkextlib/blt/tree.rb, line 677
def destroy()
  tk_call('::blt::tree', 'destroy', @id)
  self
end
             
             
               # File tk/lib/tkextlib/blt/tree.rb, line 738
def dump(node)
  simplelist(tk_call('::blt::tree', 'dump', tagid(node))).collect{|n|
    simplelist(n)
  }
end
             
             
               # File tk/lib/tkextlib/blt/tree.rb, line 744
def dump_to_file(node, file)
  tk_call('::blt::tree', 'dumpfile', tagid(node), file)
  self
end
             
             
               # File tk/lib/tkextlib/blt/tree.rb, line 749
def exist?(node, key=None)
  bool(tk_call('::blt::tree', 'exists', tagid(node), key))
end
             
             
               # File tk/lib/tkextlib/blt/tree.rb, line 753
def find(node, keys={})
  simplelist(tk_call('::blt::tree', 'find', tagid(node),
                     __conv_keyonly_opts(keys))).collect{|n|
    Tk::BLT::Tree::Node.id2obj(self, n)
  }
end
             
             
               # File tk/lib/tkextlib/blt/tree.rb, line 760
def find_child(node, label)
  ret = tk_call('::blt::tree', 'findchild', tagid(node), label)
  (ret == '-1')? nil: Tk::BLT::Tree::Node.id2obj(self, ret)
end
             
             
               # File tk/lib/tkextlib/blt/tree.rb, line 765
def first_child(node)
  ret = tk_call('::blt::tree', 'firstchild', tagid(node))
  (ret == '-1')? nil: Tk::BLT::Tree::Node.id2obj(self, ret)
end
             
             
               # File tk/lib/tkextlib/blt/tree.rb, line 886
def fullpath(node)
  tk_call('::blt::tree', 'path', tagid(node))
end
             
             
               # File tk/lib/tkextlib/blt/tree.rb, line 770
def get(node)
  Hash[*simplelist(tk_call('::blt::tree', 'get', tagid(node)))]
end
             
             
               # File tk/lib/tkextlib/blt/tree.rb, line 773
def get_value(node, key, default_val=None)
  tk_call('::blt::tree', 'get', tagid(node), key, default_val)
end
             
             
               # File tk/lib/tkextlib/blt/tree.rb, line 777
def index(node)
  Tk::BLT::Tree::Node.id2obj(self,
                             tk_call('::blt::tree', 'index', tagid(node)))
end
             
             
               # File tk/lib/tkextlib/blt/tree.rb, line 638
def initialzie(name = nil)
  if name
    @path = @id = name
  else
    Tree_ID.mutex.synchronize{
      @path = @id = Tree_ID.join(TkCore::INTERP._ip_id_)
      Tree_ID[1].succ!
    }
  end
  tk_call('::blt::tree', 'create', @id)
end
             
             
               # File tk/lib/tkextlib/blt/tree.rb, line 782
def insert(parent, keys={})
  id = tk_call('::blt::tree', 'insert', tagid(parent), keys)
  Tk::BLT::Tree::Node.new(self, nil, 'node'=>id)
end
             
             
               # File tk/lib/tkextlib/blt/tree.rb, line 805
def keys(node, *nodes)
  if nodes.empty?
    simplelist(tk_call('blt::tree', 'keys', tagid(node)))
  else
    simplelist(tk_call('blt::tree', 'keys', tagid(node),
                       *(nodes.collect{|n| tagid(n)}))).collect{|lst|
      simplelist(lst)
    }
  end
end
             
             
               # File tk/lib/tkextlib/blt/tree.rb, line 816
def label(node, text=nil)
  if text
    tk_call('::blt::tree', 'label', tagid(node), text)
    text
  else
    tk_call('::blt::tree', 'label', tagid(node))
  end
end
             
             
               # File tk/lib/tkextlib/blt/tree.rb, line 825
def last_child(node)
  ret = tk_call('::blt::tree', 'lastchild', tagid(node))
  (ret == '-1')? nil: Tk::BLT::Tree::Node.id2obj(self, ret)
end
             
             
               # File tk/lib/tkextlib/blt/tree.rb, line 795
def leaf?(node)
  bool(tk_call('::blt::tree', 'is', 'leaf', tagid(node)))
end
             
             
               # File tk/lib/tkextlib/blt/tree.rb, line 830
def link(parent, node, keys={})
  ret = tk_call('::blt::tree', 'link', tagid(parent), tagid(node),
                __conv_keyonly_opts(keys))
  (ret == '-1')? nil: Tk::BLT::Tree::Node.id2obj(self, ret)
end
             
             
               # File tk/lib/tkextlib/blt/tree.rb, line 798
def link?(node)
  bool(tk_call('::blt::tree', 'is', 'link', tagid(node)))
end
             
             
               # File tk/lib/tkextlib/blt/tree.rb, line 836
def move(node, dest, keys={})
  tk_call('::blt::tree', 'move', tagid(node), tagid(dest), keys)
  self
end
             
             
               # File tk/lib/tkextlib/blt/tree.rb, line 841
def next(node)
  ret = tk_call('::blt::tree', 'next', tagid(node))
  (ret == '-1')? nil: Tk::BLT::Tree::Node.id2obj(self, ret)
end
             
             
               # File tk/lib/tkextlib/blt/tree.rb, line 846
def next_sibling(node)
  ret = tk_call('::blt::tree', 'nextsibling', tagid(node))
  (ret == '-1')? nil: Tk::BLT::Tree::Node.id2obj(self, ret)
end
             
             
               # File tk/lib/tkextlib/blt/tree.rb, line 851
def notify_create(*args, &b)
  Tk::BLT::Tree::Notify.new(self, *args, &b)
end
             
             
               # File tk/lib/tkextlib/blt/tree.rb, line 855
def notify_delete(id)
  if id.kind_of?(Tk::BLT::Tree::Notify)
    id.delete
  else
    tk_call(@path, 'notify', 'delete', id)
    Tk::BLT::Tree::Notify::NotifyID_TBL.mutex.synchronize{
      Tk::BLT::Tree::Notify::NotifyID_TBL[@path].delete(id.to_s)
    }
  end
  self
end
             
             
               # File tk/lib/tkextlib/blt/tree.rb, line 867
def notify_info(id)
  lst = simplelist(tk_call(@path, 'notify', 'info', tagid(id)))
  lst[0] = Tk::BLT::Tree::Notify.id2obj(self, lst[0])
  lst[1] = simplelist(lst[1]).collect{|flag| flag[1..-1]}
  lst[2] = tk_tcl2ruby(lst[2])
  lst
end
             
             
               # File tk/lib/tkextlib/blt/tree.rb, line 875
def notify_names()
  tk_call(@path, 'notify', 'names').collect{|id|
    Tk::BLT::Tree::Notify.id2obj(self, id)
  }
end
             
             
               # File tk/lib/tkextlib/blt/tree.rb, line 881
def parent(node)
  ret = tk_call('::blt::tree', 'parent', tagid(node))
  (ret == '-1')? nil: Tk::BLT::Tree::Node.id2obj(self, ret)
end
             
             
               # File tk/lib/tkextlib/blt/tree.rb, line 890
def position(node)
  number(tk_call('::blt::tree', 'position', tagid(node)))
end
             
             
               # File tk/lib/tkextlib/blt/tree.rb, line 899
def prev_sibling(node)
  ret = tk_call('::blt::tree', 'prevsibling', tagid(node))
  (ret == '-1')? nil: Tk::BLT::Tree::Node.id2obj(self, ret)
end
             
             
               # File tk/lib/tkextlib/blt/tree.rb, line 894
def previous(node)
  ret = tk_call('::blt::tree', 'previous', tagid(node))
  (ret == '-1')? nil: Tk::BLT::Tree::Node.id2obj(self, ret)
end
             
             
               # File tk/lib/tkextlib/blt/tree.rb, line 904
def restore(node, str, keys={})
  tk_call('::blt::tree', 'restore', tagid(node), str,
          __conv_keyonly_opts(keys))
  self
end
             
             
               # File tk/lib/tkextlib/blt/tree.rb, line 917
def restore_from_file(node, file, keys={})
  tk_call('::blt::tree', 'restorefile', tagid(node), file,
          __conv_keyonly_opts(keys))
  self
end
             
             
               # File tk/lib/tkextlib/blt/tree.rb, line 909
def restore_overwrite(node, str, keys={})
  keys = __conv_keyonly_opts(keys)
  keys.delete('overwrite')
  keys.delete(:overwrite)
  tk_call('::blt::tree', 'restore', tagid(node), str, '-overwrite', keys)
  self
end
             
             
               # File tk/lib/tkextlib/blt/tree.rb, line 922
def restore_overwrite_from_file(node, file, keys={})
  keys = __conv_keyonly_opts(keys)
  keys.delete('overwrite')
  keys.delete(:overwrite)
  tk_call('::blt::tree', 'restorefile', tagid(node), file,
          '-overwrite', keys)
  self
end
             
             
               # File tk/lib/tkextlib/blt/tree.rb, line 931
def root(node=None)
  Tk::BLT::Tree::Node.id2obj(self, tk_call('::blt::tree', 'root',
                                           tagid(node)))
end
             
             
               # File tk/lib/tkextlib/blt/tree.rb, line 801
def root?(node)
  bool(tk_call('::blt::tree', 'is', 'root', tagid(node)))
end
             
             
               # File tk/lib/tkextlib/blt/tree.rb, line 936
def set(node, data)
  unless data.kind_of?(Hash)
    fail ArgumentError, 'Hash is expected for data'
  end
  args = []
  data.each{|k, v|  args << k << v}
  tk_call('::blt::tree', 'set', tagid(node), *args)
  self
end
             
             
               # File tk/lib/tkextlib/blt/tree.rb, line 946
def size(node)
  number(tk_call('::blt::tree', 'size', tagid(node)))
end
             
             
               # File tk/lib/tkextlib/blt/tree.rb, line 950
def sort(node, keys={})
  tk_call('::blt::tree', 'sort', tagid(node), __conv_keyonly_opts(keys))
  self
end
             
             
               # File tk/lib/tkextlib/blt/tree.rb, line 955
def tag_add(tag, *nodes)
  tk_call(@path, 'tag', 'add', tagid(tag), *(nodes.collect{|n| tagid(n)}))
  self
end
             
             
               # File tk/lib/tkextlib/blt/tree.rb, line 960
def tag_delete(tag, *nodes)
  tk_call(@path, 'tag', 'delete', tagid(tag),
          *(nodes.collect{|n| tagid(n)}))
  self
end
             
             
               # File tk/lib/tkextlib/blt/tree.rb, line 966
def tag_forget(tag)
  tag = tag.id if tag.kind_of?(Tk::BLT::Tree::Tag)
  tk_call(@path, 'tag', 'forget', tag)
  TreeTagID_TBL.mutex.synchronize{
    TreeTagID_TBL[@path].delete(tag)
  }
  self
end
             
             
               # File tk/lib/tkextlib/blt/tree.rb, line 975
def tag_get(node, *patterns)
  simplelist(tk_call(@tpath, 'tag', 'get', tagid(node),
                     *(patterns.collect{|pat| tagid(pat)}))).collect{|str|
    Tk::BLT::Tree::Tag.id2obj(self, str)
  }
end
             
             
               # File tk/lib/tkextlib/blt/tree.rb, line 982
def tag_names(node = None)
  simplelist(tk_call(@tpath, 'tag', 'names', tagid(node))).collect{|str|
    Tk::BLT::Tree::Tag.id2obj(self, str)
  }
end
             
             
               # File tk/lib/tkextlib/blt/tree.rb, line 988
def tag_nodes(tag)
  simplelist(tk_call(@tpath, 'tag', 'nodes', tagid(tag))).collect{|node|
    Tk::BLT::Tree::Node.id2obj(self, node)
  }
end
             
             
               # File tk/lib/tkextlib/blt/tree.rb, line 994
def tag_set(node, *tags)
  tk_call(@path, 'tag', 'set', tagid(node), *(tags.collect{|t| tagid(t)}))
  self
end
             
             
               # File tk/lib/tkextlib/blt/tree.rb, line 999
def tag_unset(node, *tags)
  tk_call(@path, 'tag', 'unset', tagid(node),
          *(tags.collect{|t| tagid(t)}))
  self
end
             
             
               # File tk/lib/tkextlib/blt/tree.rb, line 666
def tagid(tag)
  if tag.kind_of?(Tk::BLT::Tree::Node) ||
      tag.kind_of?(Tk::BLT::Tree::Tag) ||
      tag.kind_of?(Tk::BLT::Tree::Notify) ||
      tag.kind_of?(Tk::BLT::Tree::Trace)
    tag.id
  else
    tag  # maybe an Array of configure paramters
  end
end
             
             
               # File tk/lib/tkextlib/blt/tree.rb, line 1005
def trace_create(*args, &b)
  Tk::BLT::Tree::Trace.new(self, *args, &b)
end
             
            def #trace_delete(*args)
args.each{|id| if id.kind_of?(Tk::BLT::Tree::Trace) id.delete else tk_call(@path, 'trace', 'delete', id) Tk::BLT::Tree::Trace::TraceID_TBL[@path].delete(id.to_s) end self }
end
 
               # File tk/lib/tkextlib/blt/tree.rb, line 1022
def trace_delete(*args)
  args = args.collect{|id| tagid(id)}
  tk_call(@path, 'trace', 'delete', *args)
  Tk::BLT::Tree::Trace::TraceID_TBL.mutex.synchronize{
    args.each{|id| Tk::BLT::Tree::Trace::TraceID_TBL[@path].delete(id.to_s)}
  }
  self
end
             
             
               # File tk/lib/tkextlib/blt/tree.rb, line 1031
def trace_info(id)
  lst = simplelist(tk_call(@path, 'trace', 'info', tagid(id)))
  lst[0] = Tk::BLT::Tree::Trace.id2obj(self, lst[0])
  lst[2] = simplelist(lst[2])
  lst[3] = tk_tcl2ruby(lst[3])
  lst
end
             
             
               # File tk/lib/tkextlib/blt/tree.rb, line 1039
def trace_names()
  tk_call(@path, 'trace', 'names').collect{|id|
    Tk::BLT::Tree::Trace.id2obj(self, id)
  }
end
             
             
               # File tk/lib/tkextlib/blt/tree.rb, line 1045
def type(node, key)
  tk_call('::blt::tree', 'type', tagid(node), key)
end
             
            Commenting is here to help enhance the documentation. For example, sample code, 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.