# # tk/canvastag.rb - methods for treating canvas tags # require 'tk' require 'tk/canvas' require 'tk/tagfont' module TkcTagAccess include TkComm include TkTreatTagFont def addtag(tag) @c.addtag(tag, 'with', @id) self end def bbox @c.bbox(@id) end def bind(seq, cmd=Proc.new, args=nil) @c.itembind @id, seq, cmd, args self end def bind_append(seq, cmd=Proc.new, args=nil) @c.itembind_append @id, seq, cmd, args self end def bind_remove(seq) @c.itembind_remove @id, seq self end def bindinfo(seq=nil) @c.itembindinfo @id, seq end def cget(option) @c.itemcget @id, option end def configure(key, value=None) @c.itemconfigure @id, key, value self end # def configure(keys) # @c.itemconfigure @id, keys # end def configinfo(key=nil) @c.itemconfiginfo @id, key end def current_configinfo(key=nil) @c.current_itemconfiginfo @id, key end def coords(*args) @c.coords @id, *args end def dchars(first, last=None) @c.dchars @id, first, last self end def dtag(tag_to_del=None) @c.dtag @id, tag_to_del self end def find @c.find 'withtag', @id end alias list find def focus @c.itemfocus @id end def gettags @c.gettags @id end def icursor(index) @c.icursor @id, index self end def index(index) @c.index @id, index end def insert(beforethis, string) @c.insert @id, beforethis, string self end def lower(belowthis=None) @c.lower @id, belowthis self end def move(xamount, yamount) @c.move @id, xamount, yamount self end def raise(abovethis=None) @c.raise @id, abovethis self end def scale(xorigin, yorigin, xscale, yscale) @c.scale @id, xorigin, yorigin, xscale, yscale self end def select_adjust(index) @c.select('adjust', @id, index) self end def select_from(index) @c.select('from', @id, index) self end def select_to(index) @c.select('to', @id, index) self end def itemtype @c.itemtype @id end # Following operators support logical expressions of canvas tags # (for Tk8.3+). # If tag1.path is 't1' and tag2.path is 't2', then # ltag = tag1 & tag2; ltag.path => "(t1)&&(t2)" # ltag = tag1 | tag2; ltag.path => "(t1)||(t2)" # ltag = tag1 ^ tag2; ltag.path => "(t1)^(t2)" # ltag = - tag1; ltag.path => "!(t1)" def & (tag) if tag.kind_of? TkObject TkcTagString.new(@c, '(' + @id + ')&&(' + tag.path + ')') else TkcTagString.new(@c, '(' + @id + ')&&(' + tag.to_s + ')') end end def | (tag) if tag.kind_of? TkObject TkcTagString.new(@c, '(' + @id + ')||(' + tag.path + ')') else TkcTagString.new(@c, '(' + @id + ')||(' + tag.to_s + ')') end end def ^ (tag) if tag.kind_of? TkObject TkcTagString.new(@c, '(' + @id + ')^(' + tag.path + ')') else TkcTagString.new(@c, '(' + @id + ')^(' + tag.to_s + ')') end end def -@ TkcTagString.new(@c, '!(' + @id + ')') end end class TkcTag