# File tk/lib/tk/canvas.rb, line 54 def __destroy_hook__ TkcItem::CItemID_TBL.delete(@path) end
# File tk/lib/tk/canvas.rb, line 99 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 107 def addtag_above(tagOrId, target) addtag(tagOrId, 'above', tagid(target)) end
# File tk/lib/tk/canvas.rb, line 110 def addtag_all(tagOrId) addtag(tagOrId, 'all') end
# File tk/lib/tk/canvas.rb, line 113 def addtag_below(tagOrId, target) addtag(tagOrId, 'below', tagid(target)) end
# File tk/lib/tk/canvas.rb, line 116 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 119 def addtag_enclosed(tagOrId, x1, y1, x2, y2) addtag(tagOrId, 'enclosed', x1, y1, x2, y2) end
# File tk/lib/tk/canvas.rb, line 122 def addtag_overlapping(tagOrId, x1, y1, x2, y2) addtag(tagOrId, 'overlapping', x1, y1, x2, y2) end
# File tk/lib/tk/canvas.rb, line 125 def addtag_withtag(tagOrId, tag) addtag(tagOrId, 'withtag', tagid(tag)) end
# File tk/lib/tk/canvas.rb, line 129 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 173 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 177 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 184 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 88 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 614 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 193 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 199 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 220 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 226 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 231 def find_above(target) find('above', tagid(target)) end
# File tk/lib/tk/canvas.rb, line 237 def find_below(target) find('below', tagid(target)) end
# File tk/lib/tk/canvas.rb, line 240 def find_closest(x, y, halo=None, start=None) find('closest', x, y, halo, start) end
# File tk/lib/tk/canvas.rb, line 243 def find_enclosed(x1, y1, x2, y2) find('enclosed', x1, y1, x2, y2) end
# File tk/lib/tk/canvas.rb, line 246 def find_overlapping(x1, y1, x2, y2) find('overlapping', x1, y1, x2, y2) end
# File tk/lib/tk/canvas.rb, line 249 def find_withtag(tag) find('withtag', tag) end
# File tk/lib/tk/canvas.rb, line 273 def icursor(tagOrId, index) tk_send_without_enc('icursor', tagid(tagOrId), index) self end
# File tk/lib/tk/canvas.rb, line 278 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 284 def index(tagOrId, idx) number(tk_send_without_enc('index', tagid(tagOrId), idx)) end
# File tk/lib/tk/canvas.rb, line 288 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 138 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 153 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 164 def itembind_remove(tag, context) _bind_remove([path, "bind", tagid(tag)], context) self end
# File tk/lib/tk/canvas.rb, line 169 def itembindinfo(tag, context=nil) _bindinfo([path, "bind", tagid(tag)], context) end
# File tk/lib/tk/canvas.rb, line 253 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 610 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 533 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 542 def move(tag, dx, dy) tk_send_without_enc('move', tagid(tag), dx, dy) self end
# File tk/lib/tk/canvas.rb, line 547 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 554 def postscript(keys) tk_send("postscript", *hash_kv(keys)) end
# File tk/lib/tk/canvas.rb, line 558 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 567 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 576 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 585 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 581 def scan_mark(x, y) tk_send_without_enc('scan', 'mark', x, y) self end
# File tk/lib/tk/canvas.rb, line 590 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 594 def select_adjust(tagOrId, index) select('adjust', tagid(tagOrId), index) end
# File tk/lib/tk/canvas.rb, line 597 def select_clear select('clear') end
# File tk/lib/tk/canvas.rb, line 600 def select_from(tagOrId, index) select('from', tagid(tagOrId), index) end
Commenting is here to help enhance the documentation. For example, code samples, or clarification of the documentation.
If you have questions about Ruby or the documentation, please post to one of the Ruby mailing lists. You will get better, faster, help that way.
If you wish to post a correction of the docs, please do so, but also file bug report so that it can be corrected for the next release. Thank you.
If you want to help improve the Ruby documentation, please visit Documenting-ruby.org.