Class | Tk::BLT::Tree
In: | tk/lib/tkextlib/blt/tree.rb
Parent: | TkObject

### Methods

__destroy_hook__ __keyonly_optkeys ancestor ancestor? apply attach before? children copy copy_to degree delete depth destroy destroy dump dump_to_file exist? find find_child first_child fullpath get get_value id2obj index initialzie insert keys label last_child leaf? link link? move names new next next_sibling notify_create notify_delete notify_info notify_names parent position prev_sibling previous restore restore_from_file restore_overwrite restore_overwrite_from_file root root? set size sort tag_add tag_delete tag_forget tag_get tag_names tag_nodes tag_set tag_unset tagid trace_create trace_delete trace_info trace_names type unset values

### Classes and Modules

Class Tk::BLT::Tree::Node
Class Tk::BLT::Tree::Notify
Class Tk::BLT::Tree::Tag
Class Tk::BLT::Tree::Trace

### Constants

TkCommandNames | = | ['::blt::tree'.freeze].freeze
TreeID_TBL | = | TkCore::INTERP.create_table |  |
Tree_ID | = | ['blt_tree'.freeze, '00000'.taint].freeze

### Public Class methods

destroy(*names)

[Source]

    # File tk/lib/tkextlib/blt/tree.rb, line 510
        def self.destroy(*names)
          tk_call('::blt::tree', 'destroy',
                  *(names.collect{|n| (n.kind_of?(Tk::BLT::Tree))? n.id: n }) )
        end

id2obj(id)

[Source]

    # File tk/lib/tkextlib/blt/tree.rb, line 500
        def self.id2obj(id)
          TreeID_TBL[id]? TreeID_TBL[id]: id
        end

names(pat = None)

[Source]

    # File tk/lib/tkextlib/blt/tree.rb, line 504
        def self.names(pat = None)
          simplelist(tk_call('::blt::tree', 'names', pat)).collect{|name|
            id2obj(name)
          }
        end

new(name = nil)

[Source]

    # File tk/lib/tkextlib/blt/tree.rb, line 515
        def self.new(name = nil)
          return TreeID_TBL[name] if name && TreeID_TBL[name]
          super(name)
        end

### Public Instance methods

__destroy_hook__()

[Source]

    # File tk/lib/tkextlib/blt/tree.rb, line 532
        def __destroy_hook__
          Tk::BLT::Tree::Node::TreeNodeID_TBL.delete(@path)
          Tk::BLT::Tree::Tag::TreeTagID_TBL.delete(@path)
          Tk::BLT::Tree::Notify::NotifyID_TBL.delete(@path)
          Tk::BLT::Tree::Trace::TraceID_TBL.delete(@path)
        end

__keyonly_optkeys()

[Source]

    # File tk/lib/tkextlib/blt/tree.rb, line 480
        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

ancestor(node1, node2)

[Source]

    # File tk/lib/tkextlib/blt/tree.rb, line 555
        def ancestor(node1, node2)
          Tk::BLT::Tree::Node.id2obj(self, tk_call('::blt::tree', 'ancestor',
                                                   tagid(node1), tagid(node2)))
        end

ancestor?(node1, node2)

[Source]

    # File tk/lib/tkextlib/blt/tree.rb, line 658
        def ancestor?(node1, node2)
          bool(tk_call('::blt::tree', 'is', 'ancestor',
                       tagid(node1), tagid(node2)))
        end

apply(node, keys={})

[Source]

    # File tk/lib/tkextlib/blt/tree.rb, line 560
        def apply(node, keys={})
          tk_call('::blt::tree', 'apply', tagid(node), __conv_keyonly_opts(keys))
          self
        end

attach(tree_obj)

[Source]

    # File tk/lib/tkextlib/blt/tree.rb, line 565
        def attach(tree_obj)
          tk_call('::blt::tree', 'attach', tree_obj)
          self
        end

before?(node1, node2)

[Source]

    # File tk/lib/tkextlib/blt/tree.rb, line 662
        def before?(node1, node2)
          bool(tk_call('::blt::tree', 'is', 'before',
                       tagid(node1), tagid(node2)))
        end

children(node)

[Source]

    # File tk/lib/tkextlib/blt/tree.rb, line 570
        def children(node)
          simplelist(tk_call('::blt::tree', 'children', tagid(node))).collect{|n|
            Tk::BLT::Tree::Node.id2obj(self, n)
          }
        end

copy(src, parent, keys={})

[Source]

    # File tk/lib/tkextlib/blt/tree.rb, line 576
        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

copy_to(src, dest_tree, parent, keys={})

[Source]

    # File tk/lib/tkextlib/blt/tree.rb, line 581
        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

degree(node)

[Source]

    # File tk/lib/tkextlib/blt/tree.rb, line 589
        def degree(node)
          number(tk_call('::blt::tree', 'degree', tagid(node)))
        end

delete(*nodes)

[Source]

    # File tk/lib/tkextlib/blt/tree.rb, line 593
        def delete(*nodes)
          tk_call('::blt::tree', 'delete', *(nodes.collect{|node| tagid(node)}))
          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

depth(node)

[Source]

    # File tk/lib/tkextlib/blt/tree.rb, line 605
        def depth(node)
          number(tk_call('::blt::tree', 'depth', tagid(node)))
        end

destroy()

[Source]

    # File tk/lib/tkextlib/blt/tree.rb, line 550
        def destroy()
          tk_call('::blt::tree', 'destroy', @id)
          self
        end

dump(node)

[Source]

    # File tk/lib/tkextlib/blt/tree.rb, line 609
        def dump(node)
          simplelist(tk_call('::blt::tree', 'dump', tagid(node))).collect{|n|
            simplelist(n)
          }
        end

dump_to_file(node, file)

[Source]

    # File tk/lib/tkextlib/blt/tree.rb, line 615
        def dump_to_file(node, file)
          tk_call('::blt::tree', 'dumpfile', tagid(node), file)
          self
        end

exist?(node, key=None)

[Source]

    # File tk/lib/tkextlib/blt/tree.rb, line 620
        def exist?(node, key=None)
          bool(tk_call('::blt::tree', 'exists', tagid(node), key))
        end

find(node, keys={})

[Source]

    # File tk/lib/tkextlib/blt/tree.rb, line 624
        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

find_child(node, label)

[Source]

    # File tk/lib/tkextlib/blt/tree.rb, line 631
        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

first_child(node)

[Source]

    # File tk/lib/tkextlib/blt/tree.rb, line 636
        def first_child(node)
          ret = tk_call('::blt::tree', 'firstchild', tagid(node))
          (ret == '-1')? nil: Tk::BLT::Tree::Node.id2obj(self, ret)
        end

fullpath(node)

[Source]

    # File tk/lib/tkextlib/blt/tree.rb, line 755
        def fullpath(node)
          tk_call('::blt::tree', 'path', tagid(node))
        end

get(node)

[Source]

    # File tk/lib/tkextlib/blt/tree.rb, line 641
        def get(node)
          Hash[*simplelist(tk_call('::blt::tree', 'get', tagid(node)))]
        end

get_value(node, key, default_val=None)

[Source]

    # File tk/lib/tkextlib/blt/tree.rb, line 644
        def get_value(node, key, default_val=None)
          tk_call('::blt::tree', 'get', tagid(node), key, default_val)
        end

index(node)

[Source]

    # File tk/lib/tkextlib/blt/tree.rb, line 648
        def index(node)
          Tk::BLT::Tree::Node.id2obj(self,
                                     tk_call('::blt::tree', 'index', tagid(node)))
        end

initialzie(name = nil)

[Source]

    # File tk/lib/tkextlib/blt/tree.rb, line 520
        def initialzie(name = nil)
          if name
            @path = @id = name
          else
            @path = @id = Tree_ID.join(TkCore::INTERP._ip_id_)
            TreeID_TBL[@id] = self
            Tree_ID[1].succ!
          end
          TreeID_TBL[@id] = self
          tk_call('::blt::tree', 'create', @id)
        end

insert(parent, keys={})

[Source]

    # File tk/lib/tkextlib/blt/tree.rb, line 653
        def insert(parent, keys={})
          id = tk_call('::blt::tree', 'insert', tagid(parent), keys)
          Tk::BLT::Tree::Node.new(self, nil, 'node'=>id)
        end

keys(node, *nodes)

[Source]

    # File tk/lib/tkextlib/blt/tree.rb, line 676
        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

label(node, text=nil)

[Source]

    # File tk/lib/tkextlib/blt/tree.rb, line 687
        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

last_child(node)

[Source]

    # File tk/lib/tkextlib/blt/tree.rb, line 696
        def last_child(node)
          ret = tk_call('::blt::tree', 'lastchild', tagid(node))
          (ret == '-1')? nil: Tk::BLT::Tree::Node.id2obj(self, ret)
        end

leaf?(node)

[Source]

    # File tk/lib/tkextlib/blt/tree.rb, line 666
        def leaf?(node)
          bool(tk_call('::blt::tree', 'is', 'leaf', tagid(node)))
        end

link(parent, node, keys={})

[Source]

    # File tk/lib/tkextlib/blt/tree.rb, line 701
        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

link?(node)

[Source]

    # File tk/lib/tkextlib/blt/tree.rb, line 669
        def link?(node)
          bool(tk_call('::blt::tree', 'is', 'link', tagid(node)))
        end

move(node, dest, keys={})

[Source]

    # File tk/lib/tkextlib/blt/tree.rb, line 707
        def move(node, dest, keys={})
          tk_call('::blt::tree', 'move', tagid(node), tagid(dest), keys)
          self
        end

next(node)

[Source]

    # File tk/lib/tkextlib/blt/tree.rb, line 712
        def next(node)
          ret = tk_call('::blt::tree', 'next', tagid(node))
          (ret == '-1')? nil: Tk::BLT::Tree::Node.id2obj(self, ret)
        end

next_sibling(node)

[Source]

    # File tk/lib/tkextlib/blt/tree.rb, line 717
        def next_sibling(node)
          ret = tk_call('::blt::tree', 'nextsibling', tagid(node))
          (ret == '-1')? nil: Tk::BLT::Tree::Node.id2obj(self, ret)
        end

notify_create(*args, &b)

[Source]

    # File tk/lib/tkextlib/blt/tree.rb, line 722
        def notify_create(*args, &b)
          Tk::BLT::Tree::Notify.new(self, *args, &b)
        end

notify_delete(id)

[Source]

    # File tk/lib/tkextlib/blt/tree.rb, line 726
        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[@path].delete(id.to_s)
          end
          self
        end

notify_info(id)

[Source]

    # File tk/lib/tkextlib/blt/tree.rb, line 736
        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

notify_names()

[Source]

    # File tk/lib/tkextlib/blt/tree.rb, line 744
        def notify_names()
          tk_call(@path, 'notify', 'names').collect{|id|
            Tk::BLT::Tree::Notify.id2obj(self, id)
          }
        end

parent(node)

[Source]

    # File tk/lib/tkextlib/blt/tree.rb, line 750
        def parent(node)
          ret = tk_call('::blt::tree', 'parent', tagid(node))
          (ret == '-1')? nil: Tk::BLT::Tree::Node.id2obj(self, ret)
        end

position(node)

[Source]

    # File tk/lib/tkextlib/blt/tree.rb, line 759
        def position(node)
          number(tk_call('::blt::tree', 'position', tagid(node)))
        end

prev_sibling(node)

[Source]

    # File tk/lib/tkextlib/blt/tree.rb, line 768
        def prev_sibling(node)
          ret = tk_call('::blt::tree', 'prevsibling', tagid(node))
          (ret == '-1')? nil: Tk::BLT::Tree::Node.id2obj(self, ret)
        end

previous(node)

[Source]

    # File tk/lib/tkextlib/blt/tree.rb, line 763
        def previous(node)
          ret = tk_call('::blt::tree', 'previous', tagid(node))
          (ret == '-1')? nil: Tk::BLT::Tree::Node.id2obj(self, ret)
        end

restore(node, str, keys={})

[Source]

    # File tk/lib/tkextlib/blt/tree.rb, line 773
        def restore(node, str, keys={})
          tk_call('::blt::tree', 'restore', tagid(node), str,
                  __conv_keyonly_opts(keys))
          self
        end

restore_from_file(node, file, keys={})

[Source]

    # File tk/lib/tkextlib/blt/tree.rb, line 786
        def restore_from_file(node, file, keys={})
          tk_call('::blt::tree', 'restorefile', tagid(node), file,
                  __conv_keyonly_opts(keys))
          self
        end

restore_overwrite(node, str, keys={})

[Source]

    # File tk/lib/tkextlib/blt/tree.rb, line 778
        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

restore_overwrite_from_file(node, file, keys={})

[Source]

    # File tk/lib/tkextlib/blt/tree.rb, line 791
        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

root(node=None)

[Source]

    # File tk/lib/tkextlib/blt/tree.rb, line 800
        def root(node=None)
          Tk::BLT::Tree::Node.id2obj(self, tk_call('::blt::tree', 'root',
                                                   tagid(node)))
        end

root?(node)

[Source]

    # File tk/lib/tkextlib/blt/tree.rb, line 672
        def root?(node)
          bool(tk_call('::blt::tree', 'is', 'root', tagid(node)))
        end

set(node, data)

[Source]

    # File tk/lib/tkextlib/blt/tree.rb, line 805
        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

size(node)

[Source]

    # File tk/lib/tkextlib/blt/tree.rb, line 815
        def size(node)
          number(tk_call('::blt::tree', 'size', tagid(node)))
        end

sort(node, keys={})

[Source]

    # File tk/lib/tkextlib/blt/tree.rb, line 819
        def sort(node, keys={})
          tk_call('::blt::tree', 'sort', tagid(node), __conv_keyonly_opts(keys))
          self
        end

tag_add(tag, *nodes)

[Source]

    # File tk/lib/tkextlib/blt/tree.rb, line 824
        def tag_add(tag, *nodes)
          tk_call(@path, 'tag', 'add', tagid(tag), *(nodes.collect{|n| tagid(n)}))
          self
        end

tag_delete(tag, *nodes)

[Source]

    # File tk/lib/tkextlib/blt/tree.rb, line 829
        def tag_delete(tag, *nodes)
          tk_call(@path, 'tag', 'delete', tagid(tag),
                  *(nodes.collect{|n| tagid(n)}))
          self
        end

tag_forget(tag)

[Source]

    # File tk/lib/tkextlib/blt/tree.rb, line 835
        def tag_forget(tag)
          tag = tag.id if tag.kind_of?(Tk::BLT::Tree::Tag)
          tk_call(@path, 'tag', 'forget', tag)
          TreeTagID_TBL[@path].delete(tag)
          self
        end

tag_get(node, *patterns)

[Source]

    # File tk/lib/tkextlib/blt/tree.rb, line 842
        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

tag_names(node = None)

[Source]

    # File tk/lib/tkextlib/blt/tree.rb, line 849
        def tag_names(node = None)
          simplelist(tk_call(@tpath, 'tag', 'names', tagid(node))).collect{|str|
            Tk::BLT::Tree::Tag.id2obj(self, str)
          }
        end

tag_nodes(tag)

[Source]

    # File tk/lib/tkextlib/blt/tree.rb, line 855
        def tag_nodes(tag)
          simplelist(tk_call(@tpath, 'tag', 'nodes', tagid(tag))).collect{|node|
            Tk::BLT::Tree::Node.id2obj(self, node)
          }
        end

tag_set(node, *tags)

[Source]

    # File tk/lib/tkextlib/blt/tree.rb, line 861
        def tag_set(node, *tags)
          tk_call(@path, 'tag', 'set', tagid(node), *(tags.collect{|t| tagid(t)}))
          self
        end

tag_unset(node, *tags)

[Source]

    # File tk/lib/tkextlib/blt/tree.rb, line 866
        def tag_unset(node, *tags)
          tk_call(@path, 'tag', 'unset', tagid(node),
                  *(tags.collect{|t| tagid(t)}))
          self
        end

tagid(tag)

[Source]

    # File tk/lib/tkextlib/blt/tree.rb, line 539
        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

trace_create(*args, &b)

[Source]

    # File tk/lib/tkextlib/blt/tree.rb, line 872
        def trace_create(*args, &b)
          Tk::BLT::Tree::Trace.new(self, *args, &b)
        end

trace_delete(*args)

[Source]

    # File tk/lib/tkextlib/blt/tree.rb, line 889
        def trace_delete(*args)
          args = args.collect{|id| tagid(id)}
          tk_call(@path, 'trace', 'delete', *args)
          args.each{|id| Tk::BLT::Tree::Trace::TraceID_TBL[@path].delete(id.to_s)}
          self
        end

trace_info(id)

[Source]

    # File tk/lib/tkextlib/blt/tree.rb, line 896
        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

trace_names()

[Source]

    # File tk/lib/tkextlib/blt/tree.rb, line 904
        def trace_names()
          tk_call(@path, 'trace', 'names').collect{|id|
            Tk::BLT::Tree::Trace.id2obj(self, id)
          }
        end

type(node, key)

[Source]

    # File tk/lib/tkextlib/blt/tree.rb, line 910
        def type(node, key)
          tk_call('::blt::tree', 'type', tagid(node), key)
        end

unset(node, *keys)

[Source]

    # File tk/lib/tkextlib/blt/tree.rb, line 914
        def unset(node, *keys)
          tk_call('::blt::tree', 'unset', tagid(node), *keys)
          self
        end

values(node, key=None)

[Source]

    # File tk/lib/tkextlib/blt/tree.rb, line 919
        def values(node, key=None)
          simplelist(tk_call('::blt::tree', 'values', tagid(node), key))
        end

[Validate]