# File tk/lib/tk/canvas.rb, line 53 def __destroy_hook__ TkcItem::CItemID_TBL.delete(@path) end
# File tk/lib/tk/canvas.rb, line 98 def addtag(tag, mode, *args) mode = mode.to_s if args[0] && mode =~ /^(above|below|with(tag)?)$/ args[0] = tagid(args[0]) end tk_send_without_enc('addtag', tagid(tag), mode, *args) self end
# File tk/lib/tk/canvas.rb, line 106 def addtag_above(tagOrId, target) addtag(tagOrId, 'above', tagid(target)) end
# File tk/lib/tk/canvas.rb, line 109 def addtag_all(tagOrId) addtag(tagOrId, 'all') end
# File tk/lib/tk/canvas.rb, line 112 def addtag_below(tagOrId, target) addtag(tagOrId, 'below', tagid(target)) end
# File tk/lib/tk/canvas.rb, line 115 def addtag_closest(tagOrId, x, y, halo=None, start=None) addtag(tagOrId, 'closest', x, y, halo, start) end
# File tk/lib/tk/canvas.rb, line 118 def addtag_enclosed(tagOrId, x1, y1, x2, y2) addtag(tagOrId, 'enclosed', x1, y1, x2, y2) end
# File tk/lib/tk/canvas.rb, line 121 def addtag_overlapping(tagOrId, x1, y1, x2, y2) addtag(tagOrId, 'overlapping', x1, y1, x2, y2) end
# File tk/lib/tk/canvas.rb, line 124 def addtag_withtag(tagOrId, tag) addtag(tagOrId, 'withtag', tagid(tag)) end
# File tk/lib/tk/canvas.rb, line 128 def bbox(tagOrId, *tags) list(tk_send_without_enc('bbox', tagid(tagOrId), *tags.collect{|t| tagid(t)})) end
# File tk/lib/tk/canvas.rb, line 172 def canvasx(screen_x, *args) #tk_tcl2ruby(tk_send_without_enc('canvasx', screen_x, *args)) number(tk_send_without_enc('canvasx', screen_x, *args)) end
# File tk/lib/tk/canvas.rb, line 176 def canvasy(screen_y, *args) #tk_tcl2ruby(tk_send_without_enc('canvasy', screen_y, *args)) number(tk_send_without_enc('canvasy', screen_y, *args)) end
# File tk/lib/tk/canvas.rb, line 183 def coords(tag, *args) if args.empty? tk_split_list(tk_send_without_enc('coords', tagid(tag))) else tk_send_without_enc('coords', tagid(tag), *(args.flatten)) self end end
create a canvas item without creating a TkcItem object
# File tk/lib/tk/canvas.rb, line 87 def create(type, *args) if type.kind_of?(Class) && type < TkcItem # do nothing elsif TkcItem.type2class(type.to_s) type = TkcItem.type2class(type.to_s) else fail ArgumentError, "type must a subclass of TkcItem class, or a string in CItemTypeToClass" end type.create(self, *args) end
# File tk/lib/tk/canvas.rb, line 613 def create_itemobj_from_id(idnum) id = TkcItem.id2obj(self, idnum.to_i) return id if id.kind_of?(TkcItem) typename = tk_send('type', id) unless type = TkcItem.type2class(typename) (itemclass = typename.dup)[0,1] = typename[0,1].upcase type = TkcItem.const_set(itemclass, Class.new(TkcItem)) type.const_set("CItemTypeName", typename.freeze) TkcItem::CItemTypeToClass[typename] = type end canvas = self (obj = type.allocate).instance_eval{ @parent = @c = canvas @path = canvas.path @id = id TkcItem::CItemID_TBL.mutex.synchronize{ TkcItem::CItemID_TBL[@path] = {} unless TkcItem::CItemID_TBL[@path] TkcItem::CItemID_TBL[@path][@id] = self } } end
# File tk/lib/tk/canvas.rb, line 192 def dchars(tag, first, last=None) tk_send_without_enc('dchars', tagid(tag), _get_eval_enc_str(first), _get_eval_enc_str(last)) self end
# File tk/lib/tk/canvas.rb, line 198 def delete(*args) tbl = nil TkcItem::CItemID_TBL.mutex.synchronize{ tbl = TkcItem::CItemID_TBL[self.path] } if tbl args.each{|tag| find('withtag', tag).each{|item| if item.kind_of?(TkcItem) TkcItem::CItemID_TBL.mutex.synchronize{ tbl.delete(item.id) } end } } end tk_send_without_enc('delete', *args.collect{|t| tagid(t)}) self end
# File tk/lib/tk/canvas.rb, line 219 def dtag(tag, tag_to_del=None) tk_send_without_enc('dtag', tagid(tag), tagid(tag_to_del)) self end
# File tk/lib/tk/canvas.rb, line 225 def find(mode, *args) list(tk_send_without_enc('find', mode, *args)).collect!{|id| TkcItem.id2obj(self, id) } end
# File tk/lib/tk/canvas.rb, line 230 def find_above(target) find('above', tagid(target)) end
# File tk/lib/tk/canvas.rb, line 236 def find_below(target) find('below', tagid(target)) end
# File tk/lib/tk/canvas.rb, line 239 def find_closest(x, y, halo=None, start=None) find('closest', x, y, halo, start) end
# File tk/lib/tk/canvas.rb, line 242 def find_enclosed(x1, y1, x2, y2) find('enclosed', x1, y1, x2, y2) end
# File tk/lib/tk/canvas.rb, line 245 def find_overlapping(x1, y1, x2, y2) find('overlapping', x1, y1, x2, y2) end
# File tk/lib/tk/canvas.rb, line 248 def find_withtag(tag) find('withtag', tag) end
# File tk/lib/tk/canvas.rb, line 272 def icursor(tagOrId, index) tk_send_without_enc('icursor', tagid(tagOrId), index) self end
# File tk/lib/tk/canvas.rb, line 277 def imove(tagOrId, idx, x, y) tk_send_without_enc('imove', tagid(tagOrId), idx, x, y) self end
# File tk/lib/tk/canvas.rb, line 283 def index(tagOrId, idx) number(tk_send_without_enc('index', tagid(tagOrId), idx)) end
# File tk/lib/tk/canvas.rb, line 287 def insert(tagOrId, index, string) tk_send_without_enc('insert', tagid(tagOrId), index, _get_eval_enc_str(string)) self end
def itembind(tag, context, cmd=Proc.new, *args)
_bind([path, "bind", tagid(tag)], context, cmd, *args) self
end
# File tk/lib/tk/canvas.rb, line 137 def itembind(tag, context, *args) # if args[0].kind_of?(Proc) || args[0].kind_of?(Method) if TkComm._callback_entry?(args[0]) || !block_given? cmd = args.shift else cmd = Proc.new end _bind([path, "bind", tagid(tag)], context, cmd, *args) self end
def #itembind_append(tag, context, cmd=Proc.new, *args)
_bind_append([path, "bind", tagid(tag)], context, cmd, *args) self
end
# File tk/lib/tk/canvas.rb, line 152 def itembind_append(tag, context, *args) # if args[0].kind_of?(Proc) || args[0].kind_of?(Method) if TkComm._callback_entry?(args[0]) || !block_given? cmd = args.shift else cmd = Proc.new end _bind_append([path, "bind", tagid(tag)], context, cmd, *args) self end
# File tk/lib/tk/canvas.rb, line 163 def itembind_remove(tag, context) _bind_remove([path, "bind", tagid(tag)], context) self end
# File tk/lib/tk/canvas.rb, line 168 def itembindinfo(tag, context=nil) _bindinfo([path, "bind", tagid(tag)], context) end
# File tk/lib/tk/canvas.rb, line 252 def itemfocus(tagOrId=nil) if tagOrId tk_send_without_enc('focus', tagid(tagOrId)) self else ret = tk_send_without_enc('focus') if ret == "" nil else TkcItem.id2obj(self, ret) end end end
# File tk/lib/tk/canvas.rb, line 609 def itemtype(tag) TkcItem.type2class(tk_send('type', tagid(tag))) end
def itemcget(tagOrId, option) case option.to_s when 'dash', 'activedash', 'disableddash' conf = tk_send_without_enc('itemcget', tagid(tagOrId), "-#{option}") if conf =~ /^[0-9]/ list(conf) else conf end when 'text', 'label', 'show', 'data', 'file', 'maskdata', 'maskfile' _fromUTF8(tk_send_without_enc('itemcget', tagid(tagOrId), "-#{option}")) when 'font', 'kanjifont' #fnt = tk_tcl2ruby(tk_send('itemcget', tagid(tagOrId), "-#{option}")) fnt = tk_tcl2ruby(_fromUTF8(tk_send_with_enc('itemcget', tagid(tagOrId), '-font'))) unless fnt.kind_of?(TkFont) fnt = tagfontobj(tagid(tagOrId), fnt) end if option.to_s == 'kanjifont' && JAPANIZED_TK && TK_VERSION =~ /^4\.*/ # obsolete; just for compatibility fnt.kanji_font else fnt end else tk_tcl2ruby(_fromUTF8(tk_send_without_enc('itemcget', tagid(tagOrId), "-#{option}"))) end end def itemconfigure(tagOrId, key, value=None) if key.kind_of? Hash key = _symbolkey2str(key) coords = key.delete('coords') self.coords(tagOrId, coords) if coords if ( key['font'] || key['kanjifont'] \ || key['latinfont'] || key['asciifont'] ) tagfont_configure(tagid(tagOrId), key.dup) else _fromUTF8(tk_send_without_enc('itemconfigure', tagid(tagOrId), *hash_kv(key, true))) end else if ( key == 'coords' || key == :coords ) self.coords(tagOrId, value) elsif ( key == 'font' || key == :font || key == 'kanjifont' || key == :kanjifont || key == 'latinfont' || key == :latinfont || key == 'asciifont' || key == :asciifont ) if value == None tagfontobj(tagid(tagOrId)) else tagfont_configure(tagid(tagOrId), {key=>value}) end else _fromUTF8(tk_send_without_enc('itemconfigure', tagid(tagOrId), "-#{key}", _get_eval_enc_str(value))) end end self end
# def itemconfigure(tagOrId, key, value=None) # if key.kind_of? Hash # tk_send 'itemconfigure', tagid(tagOrId), *hash_kv(key) # else # tk_send 'itemconfigure', tagid(tagOrId), “-#{key}”, value # end # end # def itemconfigure(tagOrId, keys) # tk_send 'itemconfigure', tagid(tagOrId), *hash_kv(keys) # end
def itemconfiginfo(tagOrId, key=nil) if TkComm::GET_CONFIGINFO_AS_ARRAY if key case key.to_s when 'coords' return ['coords', '', '', '', self.coords(tagOrId)] when 'dash', 'activedash', 'disableddash' conf = tk_split_simplelist(tk_send_without_enc('itemconfigure', tagid(tagOrId), "-#{key}")) if conf[3] && conf[3] =~ /^[0-9]/ conf[3] = list(conf[3]) end if conf[4] && conf[4] =~ /^[0-9]/ conf[4] = list(conf[4]) end when 'text', 'label', 'show', 'data', 'file', 'maskdata', 'maskfile' conf = tk_split_simplelist(_fromUTF8(tk_send_without_enc('itemconfigure', tagid(tagOrId), "-#{key}"))) when 'font', 'kanjifont' conf = tk_split_simplelist(_fromUTF8(tk_send_without_enc('itemconfigure', tagid(tagOrId),"-#{key}"))) conf[4] = tagfont_configinfo(tagid(tagOrId), conf[4]) else conf = tk_split_list(_fromUTF8(tk_send_without_enc('itemconfigure', tagid(tagOrId), "-#{key}"))) end conf[0] = conf[0][1..-1] conf else ret = tk_split_simplelist(_fromUTF8(tk_send_without_enc('itemconfigure', tagid(tagOrId)))).collect{|conflist| conf = tk_split_simplelist(conflist) conf[0] = conf[0][1..-1] case conf[0] when 'text', 'label', 'show', 'data', 'file', 'maskdata', 'maskfile' when 'dash', 'activedash', 'disableddash' if conf[3] && conf[3] =~ /^[0-9]/ conf[3] = list(conf[3]) end if conf[4] && conf[4] =~ /^[0-9]/ conf[4] = list(conf[4]) end else if conf[3] if conf[3].index('{') conf[3] = tk_split_list(conf[3]) else conf[3] = tk_tcl2ruby(conf[3]) end end if conf[4] if conf[4].index('{') conf[4] = tk_split_list(conf[4]) else conf[4] = tk_tcl2ruby(conf[4]) end end end conf[1] = conf[1][1..-1] if conf.size == 2 # alias info conf } fontconf = ret.assoc('font') if fontconf ret.delete_if{|item| item[0] == 'font' || item[0] == 'kanjifont'} fontconf[4] = tagfont_configinfo(tagid(tagOrId), fontconf[4]) ret.push(fontconf) end ret << ['coords', '', '', '', self.coords(tagOrId)] end else # ! TkComm::GET_CONFIGINFO_AS_ARRAY if key case key.to_s when 'coords' {'coords' => ['', '', '', self.coords(tagOrId)]} when 'dash', 'activedash', 'disableddash' conf = tk_split_simplelist(tk_send_without_enc('itemconfigure', tagid(tagOrId), "-#{key}")) if conf[3] && conf[3] =~ /^[0-9]/ conf[3] = list(conf[3]) end if conf[4] && conf[4] =~ /^[0-9]/ conf[4] = list(conf[4]) end when 'text', 'label', 'show', 'data', 'file', 'maskdata', 'maskfile' conf = tk_split_simplelist(_fromUTF8(tk_send_without_enc('itemconfigure', tagid(tagOrId), "-#{key}"))) when 'font', 'kanjifont' conf = tk_split_simplelist(_fromUTF8(tk_send_without_enc('itemconfigure', tagid(tagOrId),"-#{key}"))) conf[4] = tagfont_configinfo(tagid(tagOrId), conf[4]) else conf = tk_split_list(_fromUTF8(tk_send_without_enc('itemconfigure', tagid(tagOrId), "-#{key}"))) end key = conf.shift[1..-1] { key => conf } else ret = {} tk_split_simplelist(_fromUTF8(tk_send_without_enc('itemconfigure', tagid(tagOrId)))).each{|conflist| conf = tk_split_simplelist(conflist) key = conf.shift[1..-1] case key when 'text', 'label', 'show', 'data', 'file', 'maskdata', 'maskfile' when 'dash', 'activedash', 'disableddash' if conf[2] && conf[2] =~ /^[0-9]/ conf[2] = list(conf[2]) end if conf[3] && conf[3] =~ /^[0-9]/ conf[3] = list(conf[3]) end else if conf[2] if conf[2].index('{') conf[2] = tk_split_list(conf[2]) else conf[2] = tk_tcl2ruby(conf[2]) end end if conf[3] if conf[3].index('{') conf[3] = tk_split_list(conf[3]) else conf[3] = tk_tcl2ruby(conf[3]) end end end if conf.size == 1 ret[key] = conf[0][1..-1] # alias info else ret[key] = conf end } fontconf = ret['font'] if fontconf ret.delete('font') ret.delete('kanjifont') fontconf[3] = tagfont_configinfo(tagid(tagOrId), fontconf[3]) ret['font'] = fontconf end ret['coords'] = ['', '', '', self.coords(tagOrId)] ret end end end def current_itemconfiginfo(tagOrId, key=nil) if TkComm::GET_CONFIGINFO_AS_ARRAY if key conf = itemconfiginfo(tagOrId, key) {conf[0] => conf[4]} else ret = {} itemconfiginfo(tagOrId).each{|conf| ret[conf[0]] = conf[4] if conf.size > 2 } ret end else # ! TkComm::GET_CONFIGINFO_AS_ARRAY ret = {} itemconfiginfo(tagOrId, key).each{|k, conf| ret[k] = conf[-1] if conf.kind_of?(Array) } ret end end
# File tk/lib/tk/canvas.rb, line 532 def lower(tag, below=nil) if below tk_send_without_enc('lower', tagid(tag), tagid(below)) else tk_send_without_enc('lower', tagid(tag)) end self end
# File tk/lib/tk/canvas.rb, line 541 def move(tag, dx, dy) tk_send_without_enc('move', tagid(tag), dx, dy) self end
# File tk/lib/tk/canvas.rb, line 546 def moveto(tag, x, y) # Tcl/Tk 8.6 or later tk_send_without_enc('moveto', tagid(tag), x, y) self end
# File tk/lib/tk/canvas.rb, line 553 def postscript(keys) tk_send("postscript", *hash_kv(keys)) end
# File tk/lib/tk/canvas.rb, line 557 def raise(tag, above=nil) if above tk_send_without_enc('raise', tagid(tag), tagid(above)) else tk_send_without_enc('raise', tagid(tag)) end self end
# File tk/lib/tk/canvas.rb, line 566 def rchars(tag, first, last, str_or_coords) # Tcl/Tk 8.6 or later str_or_coords = str_or_coords.flatten if str_or_coords.kinad_of? Array tk_send_without_enc('rchars', tagid(tag), first, last, str_or_coords) self end
# File tk/lib/tk/canvas.rb, line 575 def scale(tag, x, y, xs, ys) tk_send_without_enc('scale', tagid(tag), x, y, xs, ys) self end
# File tk/lib/tk/canvas.rb, line 584 def scan_dragto(x, y, gain=None) tk_send_without_enc('scan', 'dragto', x, y, gain) self end
# File tk/lib/tk/canvas.rb, line 580 def scan_mark(x, y) tk_send_without_enc('scan', 'mark', x, y) self end
# File tk/lib/tk/canvas.rb, line 589 def select(mode, *args) r = tk_send_without_enc('select', mode, *args) (mode == 'item')? TkcItem.id2obj(self, r): self end
# File tk/lib/tk/canvas.rb, line 593 def select_adjust(tagOrId, index) select('adjust', tagid(tagOrId), index) end
# File tk/lib/tk/canvas.rb, line 596 def select_clear select('clear') end
# File tk/lib/tk/canvas.rb, line 599 def select_from(tagOrId, index) select('from', tagid(tagOrId), index) end