# File tk/lib/tkextlib/blt/treeview.rb, line 1178
def self.id2obj(tree, name)
tpath = tree.path
TreeTagID_TBL.mutex.synchronize{
if TreeTagID_TBL[tpath]
if TreeTagID_TBL[tpath][name]
TreeTagID_TBL[tpath][name]
else
#self.new(tree, name)
(obj = self.allocate).instance_eval{
@parent = @tree = tree
@tpath = @parent.path
@path = @id = name
TreeTagID_TBL[@tpath] = {} unless TreeTagID_TBL[@tpath]
TreeTagID_TBL[@tpath][@id] = self
}
obj
end
else
id
end
}
end
# File tk/lib/tkextlib/blt/treeview.rb, line 1214
def self.new(tree, *ids)
TreeTagID_TBL.mutex.synchronize{
(obj = self.allocate).instance_eval{
if tree.kind_of?(Array)
initialize(tree[0], tree[1], ids)
else
initialize(tree, nil, ids)
end
TreeTagID_TBL[@tpath] = {} unless TreeTagID_TBL[@tpath]
TreeTagID_TBL[@tpath][@id] = self
}
obj
}
end
# File tk/lib/tkextlib/blt/treeview.rb, line 1229
def initialize(tree, name, ids)
@parent = @tree = tree
@tpath = @parent.path
if name
@path = @id = name
else
TreeTag_ID.mutex.synchronize{
@path = @id = TreeTag_ID.join(TkCore::INTERP._ip_id_).freeze
TreeTag_ID[1].succ!
}
end
unless ids.empty?
tk_call(@tpath, 'tag', 'add', @id, *(ids.collect{|id| tagid(id)}))
end
end
# File tk/lib/tkextlib/blt/treeview.rb, line 1201
def self.new_by_name(tree, name, *ids)
TreeTagID_TBL.mutex.synchronize{
unless (obj = TreeTagID_TBL[tree.path][name])
(obj = self.allocate).instance_eval{
initialize(tree, name, ids)
TreeTagID_TBL[@tpath] = {} unless TreeTagID_TBL[@tpath]
TreeTagID_TBL[@tpath][@id] = self
}
end
obj
}
end
# File tk/lib/tkextlib/blt/treeview.rb, line 1261
def add(*ids)
tk_call(@tpath, 'tag', 'add', @id, *(ids{|id| tagid(id)}))
self
end
# File tk/lib/tkextlib/blt/treeview.rb, line 1271
def forget
tk_call(@tpath, 'tag', 'forget', @id)
self
end
# File tk/lib/tkextlib/blt/treeview.rb, line 1170
def mutex; @mutex; end