id2obj(chart, id)
click to toggle source
def self.id2obj(chart, id)
cpath = chart.path
PenID_TBL.mutex.synchronize{
return id unless PenID_TBL[cpath]
PenID_TBL[cpath][id]? PenID_TBL[cpath][id]: id
}
end
new(chart, pen=nil, keys={})
click to toggle source
def self.new(chart, pen=nil, keys={})
if pen.kind_of?(Hash)
keys = pen
pen = nil
end
if keys
keys = _symbolkey2str(keys)
not_create = keys.delete('without_creating')
else
not_create = false
end
obj = nil
PenID_TBL.mutex.synchronize{
chart_path = chart.path
PenID_TBL[chart_path] ||= {}
if pen && PenID_TBL[chart_path][pen]
obj = PenID_TBL[chart_path][pen]
else
(obj = self.allocate).instance_eval{
if pen
@pen = @id = pen.to_s
else
OBJ_ID.mutex.synchronize{
@pen = @id = OBJ_ID.join(TkCore::INTERP._ip_id_).freeze
OBJ_ID[1].succ!
}
end
@path = @id
@parent = @chart = chart
@cpath = @chart.path
Pen::PenID_TBL[@cpath][@pen] = self
unless not_create
tk_call(@chart, 'pen', 'create', @pen, keys)
return obj
end
}
end
}
obj.configure(keys) if obj && ! keys.empty?
obj
end
new(chart, pen=nil, keys={})
click to toggle source
def initialize(chart, pen=nil, keys={})
if pen.kind_of?(Hash)
keys = pen
pen = nil
end
if pen
@pen = @id = pen.to_s
else
OBJ_ID.mutex.synchronize{
@pen = @id = OBJ_ID.join(TkCore::INTERP._ip_id_).freeze
OBJ_ID[1].succ!
}
end
@path = @id
@parent = @chart = chart
@cpath = @chart.path
Pen::PenID_TBL[@cpath][@pen] = self
keys = _symbolkey2str(keys)
unless keys.delete('without_creating')
tk_call(@chart, 'pen', 'create', @pen, keys)
end
end
cget(option)
click to toggle source
def cget(option)
@chart.pen_cget(@id, option)
end
cget_strict(option)
click to toggle source
def cget_strict(option)
@chart.pen_cget_strict(@id, option)
end
cget_tkstring(option)
click to toggle source
def cget_tkstring(option)
@chart.pen_cget_tkstring(@id, option)
end
configinfo(key=nil)
click to toggle source
def configinfo(key=nil)
@chart.pen_configinfo(@id, key)
end
current_configinfo(key=nil)
click to toggle source
def current_configinfo(key=nil)
@chart.current_pen_configinfo(@id, key)
end
delete()
click to toggle source
def delete
@chart.pen_delete(@id)
self
end
id()
click to toggle source
mutex()
click to toggle source
name()
click to toggle source
to_eval()
click to toggle source