Extended maintenance of Ruby 1.9.3 ended on February 23, 2015. Read more
# 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
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.