class Tk::Canvas
Constants
- TkCommandNames
- WidgetClassName
Public Instance Methods
__destroy_hook__()
click to toggle source
# File lib/tk/canvas.rb, line 54 def __destroy_hook__ TkcItem::CItemID_TBL.delete(@path) end
addtag(tag, mode, *args)
click to toggle source
# File 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
addtag_above(tagOrId, target)
click to toggle source
# File lib/tk/canvas.rb, line 107 def addtag_above(tagOrId, target) addtag(tagOrId, 'above', tagid(target)) end
addtag_all(tagOrId)
click to toggle source
# File lib/tk/canvas.rb, line 110 def addtag_all(tagOrId) addtag(tagOrId, 'all') end
addtag_below(tagOrId, target)
click to toggle source
# File lib/tk/canvas.rb, line 113 def addtag_below(tagOrId, target) addtag(tagOrId, 'below', tagid(target)) end
addtag_closest(tagOrId, x, y, halo=None, start=None)
click to toggle source
# File lib/tk/canvas.rb, line 116 def addtag_closest(tagOrId, x, y, halo=None, start=None) addtag(tagOrId, 'closest', x, y, halo, start) end
addtag_enclosed(tagOrId, x1, y1, x2, y2)
click to toggle source
# File lib/tk/canvas.rb, line 119 def addtag_enclosed(tagOrId, x1, y1, x2, y2) addtag(tagOrId, 'enclosed', x1, y1, x2, y2) end
addtag_overlapping(tagOrId, x1, y1, x2, y2)
click to toggle source
# File lib/tk/canvas.rb, line 122 def addtag_overlapping(tagOrId, x1, y1, x2, y2) addtag(tagOrId, 'overlapping', x1, y1, x2, y2) end
addtag_withtag(tagOrId, tag)
click to toggle source
# File lib/tk/canvas.rb, line 125 def addtag_withtag(tagOrId, tag) addtag(tagOrId, 'withtag', tagid(tag)) end
bbox(tagOrId, *tags)
click to toggle source
# File lib/tk/canvas.rb, line 129 def bbox(tagOrId, *tags) list(tk_send_without_enc('bbox', tagid(tagOrId), *tags.collect{|t| tagid(t)})) end
canvasx(screen_x, *args)
click to toggle source
# File 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
Also aliased as: canvas_x
canvasy(screen_y, *args)
click to toggle source
# File 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
Also aliased as: canvas_y
coords(tag, *args)
click to toggle source
# File 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(type, *args)
click to toggle source
create a canvas item without creating a TkcItem
object
# File 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
create_itemobj_from_id(idnum)
click to toggle source
# File 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
dchars(tag, first, last=None)
click to toggle source
# File 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
delete(*args)
click to toggle source
# File 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
Also aliased as: remove
dtag(tag, tag_to_del=None)
click to toggle source
# File 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
Also aliased as: deltag
find(mode, *args)
click to toggle source
# File 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
find_above(target)
click to toggle source
# File lib/tk/canvas.rb, line 231 def find_above(target) find('above', tagid(target)) end
find_all()
click to toggle source
# File lib/tk/canvas.rb, line 234 def find_all find('all') end
find_below(target)
click to toggle source
# File lib/tk/canvas.rb, line 237 def find_below(target) find('below', tagid(target)) end
find_closest(x, y, halo=None, start=None)
click to toggle source
# File lib/tk/canvas.rb, line 240 def find_closest(x, y, halo=None, start=None) find('closest', x, y, halo, start) end
find_enclosed(x1, y1, x2, y2)
click to toggle source
# File lib/tk/canvas.rb, line 243 def find_enclosed(x1, y1, x2, y2) find('enclosed', x1, y1, x2, y2) end
find_overlapping(x1, y1, x2, y2)
click to toggle source
# File lib/tk/canvas.rb, line 246 def find_overlapping(x1, y1, x2, y2) find('overlapping', x1, y1, x2, y2) end
find_withtag(tag)
click to toggle source
# File lib/tk/canvas.rb, line 249 def find_withtag(tag) find('withtag', tag) end
icursor(tagOrId, index)
click to toggle source
# File lib/tk/canvas.rb, line 273 def icursor(tagOrId, index) tk_send_without_enc('icursor', tagid(tagOrId), index) self end
imove(tagOrId, idx, x, y)
click to toggle source
# File lib/tk/canvas.rb, line 278 def imove(tagOrId, idx, x, y) tk_send_without_enc('imove', tagid(tagOrId), idx, x, y) self end
Also aliased as: i_move
index(tagOrId, idx)
click to toggle source
# File lib/tk/canvas.rb, line 284 def index(tagOrId, idx) number(tk_send_without_enc('index', tagid(tagOrId), idx)) end
insert(tagOrId, index, string)
click to toggle source
# File 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
itembind(tag, context, *args)
click to toggle source
def itembind(tag, context, cmd=Proc.new, *args)
_bind([path, "bind", tagid(tag)], context, cmd, *args) self
end
# File 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
itembind_append(tag, context, *args)
click to toggle source
def itembind_append
(tag, context, cmd=Proc.new, *args)
_bind_append([path, "bind", tagid(tag)], context, cmd, *args) self
end
# File 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
itembind_remove(tag, context)
click to toggle source
# File lib/tk/canvas.rb, line 164 def itembind_remove(tag, context) _bind_remove([path, "bind", tagid(tag)], context) self end
itembindinfo(tag, context=nil)
click to toggle source
# File lib/tk/canvas.rb, line 169 def itembindinfo(tag, context=nil) _bindinfo([path, "bind", tagid(tag)], context) end
itemfocus(tagOrId=nil)
click to toggle source
# File 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
itemtype(tag)
click to toggle source
# File lib/tk/canvas.rb, line 610 def itemtype(tag) TkcItem.type2class(tk_send('type', tagid(tag))) end
lower(tag, below=nil)
click to toggle source
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 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
move(tag, dx, dy)
click to toggle source
# File lib/tk/canvas.rb, line 542 def move(tag, dx, dy) tk_send_without_enc('move', tagid(tag), dx, dy) self end
moveto(tag, x, y)
click to toggle source
# File 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
Also aliased as: move_to
postscript(keys)
click to toggle source
# File lib/tk/canvas.rb, line 554 def postscript(keys) tk_send("postscript", *hash_kv(keys)) end
raise(tag, above=nil)
click to toggle source
# File 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
rchars(tag, first, last, str_or_coords)
click to toggle source
# File 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.kind_of? Array tk_send_without_enc('rchars', tagid(tag), first, last, str_or_coords) self end
Also aliased as: replace_chars, replace_coords
scale(tag, x, y, xs, ys)
click to toggle source
# File 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
scan_dragto(x, y, gain=None)
click to toggle source
# File lib/tk/canvas.rb, line 585 def scan_dragto(x, y, gain=None) tk_send_without_enc('scan', 'dragto', x, y, gain) self end
scan_mark(x, y)
click to toggle source
# File lib/tk/canvas.rb, line 581 def scan_mark(x, y) tk_send_without_enc('scan', 'mark', x, y) self end
select(mode, *args)
click to toggle source
# File 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
select_adjust(tagOrId, index)
click to toggle source
# File lib/tk/canvas.rb, line 594 def select_adjust(tagOrId, index) select('adjust', tagid(tagOrId), index) end
select_clear()
click to toggle source
# File lib/tk/canvas.rb, line 597 def select_clear select('clear') end
select_from(tagOrId, index)
click to toggle source
# File lib/tk/canvas.rb, line 600 def select_from(tagOrId, index) select('from', tagid(tagOrId), index) end
select_item()
click to toggle source
# File lib/tk/canvas.rb, line 603 def select_item select('item') end
select_to(tagOrId, index)
click to toggle source
# File lib/tk/canvas.rb, line 606 def select_to(tagOrId, index) select('to', tagid(tagOrId), index) end
Private Instance Methods
__boolval_optkeys()
click to toggle source
Calls superclass method
TkConfigMethod#__boolval_optkeys
# File lib/tk/canvas.rb, line 72 def __boolval_optkeys super() + ['confine'] end
__item_boolval_optkeys(id)
click to toggle source
# File lib/tkextlib/blt/eps.rb, line 28 def __item_boolval_optkeys(id) __BLT_EPS_item_boolval_optkeys(id) + ['showimage'] end
Also aliased as: __BLT_EPS_item_boolval_optkeys
__item_strval_optkeys(id)
click to toggle source
# File lib/tkextlib/blt/eps.rb, line 20 def __item_strval_optkeys(id) __BLT_EPS_item_strval_optkeys(id) + [ 'shadowcolor', 'title', 'titlecolor' ] end
Also aliased as: __BLT_EPS_item_strval_optkeys
__numval_optkeys()
click to toggle source
def create_self(keys)
if keys and keys != None tk_call_without_enc('canvas', @path, *hash_kv(keys, true)) else tk_call_without_enc('canvas', @path) end
end private :create_self
Calls superclass method
TkConfigMethod#__numval_optkeys
# File lib/tk/canvas.rb, line 67 def __numval_optkeys super() + ['closeenough'] end
tagid(tag)
click to toggle source
# File lib/tk/canvas.rb, line 77 def tagid(tag) if tag.kind_of?(TkcItem) || tag.kind_of?(TkcTag) tag.id else tag # maybe an Array of configure parameters end end