class Tk::BLT::Tree::Tag

Constants

TreeTagID_TBL
TreeTag_ID

Public Class Methods

id2obj(tree, id) click to toggle source
# File lib/tkextlib/blt/tree.rb, line 282
def self.id2obj(tree, id)
  tpath = tree.path
  TreeTagID_TBL.mutex.synchronize{
    if TreeTagID_TBL[tpath]
      if TreeTagID_TBL[tpath][id]
        TreeTagID_TBL[tpath][id]
      else
        begin
          # self.new(tree, id)
          (obj = self.allocate).instance_eval{
            @parent = @tree = tree
            @tpath = @parent.path
            @path = @id = id.dup.freeze if id
            TreeTagID_TBL[@tpath] = {} unless TreeTagID_TBL[@tpath]
            TreeTagID_TBL[@tpath][@id] = self
          }
          obj
        rescue
          id
        end
      end
    else
      id
    end
  }
end
new(tree, tag_str = nil) click to toggle source
# File lib/tkextlib/blt/tree.rb, line 309
def initialize(tree, tag_str = nil)
  @parent = @tree = tree
  @tpath = @parent.path

  if tag_str
    @path = @id = tag_str.dup.freeze
  else
    TreeTag_ID.mutex.synchronize{
      @path = @id = TreeTag_ID.join(TkCore::INTERP._ip_id_)
      TreeTag_ID[1].succ!
    }
  end
  TreeTagID_TBL.mutex.synchronize{
    TreeTagID_TBL[@tpath] = {} unless TreeTagID_TBL[@tpath]
    TreeTagID_TBL[@tpath][@id] = self
  }
end

Public Instance Methods

add(*nodes) click to toggle source
# File lib/tkextlib/blt/tree.rb, line 331
def add(*nodes)
  tk_call(@tpath, 'tag', 'add', @id, *nodes)
  self
end
delete(*nodes) click to toggle source
# File lib/tkextlib/blt/tree.rb, line 336
def delete(*nodes)
  tk_call(@tpath, 'tag', 'delete', @id, *nodes)
  self
end
forget() click to toggle source
# File lib/tkextlib/blt/tree.rb, line 341
def forget()
  tk_call(@tpath, 'tag', 'forget', @id)
  TreeTagID_TBL.mutex.synchronize{
    TreeTagID_TBL[@tpath].delete(@id)
  }
  self
end
id() click to toggle source
# File lib/tkextlib/blt/tree.rb, line 327
def id
  @id
end
mutex() click to toggle source
# File lib/tkextlib/blt/tree.rb, line 278
def mutex; @mutex; end
nodes() click to toggle source
# File lib/tkextlib/blt/tree.rb, line 349
def nodes()
  simplelist(tk_call(@tpath, 'tag', 'nodes', @id)).collect{|node|
    Tk::BLT::Tree::Node.id2obj(@path, node)
  }
end
set(node) click to toggle source
# File lib/tkextlib/blt/tree.rb, line 355
def set(node)
  tk_call(@tpath, 'tag', 'set', node, @id)
  self
end
unset(node) click to toggle source
# File lib/tkextlib/blt/tree.rb, line 360
def unset(node)
  tk_call(@tpath, 'tag', 'unset', node, @id)
  self
end