Extended maintenance of Ruby 1.9.3 ended on February 23, 2015. Read more

In Files

  • tk/lib/tk/canvas.rb
  • tk/lib/tkextlib/blt/eps.rb

Class/Module Index [+]

Quicksearch

Tk::Canvas

Public Instance Methods

__BLT_EPS_item_boolval_optkeys(id) click to toggle source
__BLT_EPS_item_strval_optkeys(id) click to toggle source
__destroy_hook__() click to toggle source
 
               # File tk/lib/tk/canvas.rb, line 53
def __destroy_hook__
  TkcItem::CItemID_TBL.delete(@path)
end
            
addtag(tag, mode, *args) click to toggle source
 
               # 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
            
addtag_above(tagOrId, target) click to toggle source
 
               # File tk/lib/tk/canvas.rb, line 106
def addtag_above(tagOrId, target)
  addtag(tagOrId, 'above', tagid(target))
end
            
addtag_all(tagOrId) click to toggle source
 
               # File tk/lib/tk/canvas.rb, line 109
def addtag_all(tagOrId)
  addtag(tagOrId, 'all')
end
            
addtag_below(tagOrId, target) click to toggle source
 
               # File tk/lib/tk/canvas.rb, line 112
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 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
            
addtag_enclosed(tagOrId, x1, y1, x2, y2) click to toggle source
 
               # File tk/lib/tk/canvas.rb, line 118
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 tk/lib/tk/canvas.rb, line 121
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 tk/lib/tk/canvas.rb, line 124
def addtag_withtag(tagOrId, tag)
  addtag(tagOrId, 'withtag', tagid(tag))
end
            
bbox(tagOrId, *tags) click to toggle source
 
               # 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
            
canvas_x(screen_x, *args) click to toggle source
Alias for: canvasx
canvas_y(screen_y, *args) click to toggle source
Alias for: canvasy
canvasx(screen_x, *args) click to toggle source
 
               # 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
            
Also aliased as: canvas_x
canvasy(screen_y, *args) click to toggle source
 
               # 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
            
Also aliased as: canvas_y
coords(tag, *args) click to toggle source
 
               # 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(type, *args) click to toggle source

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
            
create_itemobj_from_id(idnum) click to toggle source
 
               # 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
            
dchars(tag, first, last=None) click to toggle source
 
               # 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
            
delete(*args) click to toggle source
 
               # 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
            
Also aliased as: remove
deltag(tag, tag_to_del=None) click to toggle source
Alias for: dtag
dtag(tag, tag_to_del=None) click to toggle source
 
               # 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
            
Also aliased as: deltag
find(mode, *args) click to toggle source
 
               # 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
            
find_above(target) click to toggle source
 
               # File tk/lib/tk/canvas.rb, line 230
def find_above(target)
  find('above', tagid(target))
end
            
find_all() click to toggle source
 
               # File tk/lib/tk/canvas.rb, line 233
def find_all
  find('all')
end
            
find_below(target) click to toggle source
 
               # File tk/lib/tk/canvas.rb, line 236
def find_below(target)
  find('below', tagid(target))
end
            
find_closest(x, y, halo=None, start=None) click to toggle source
 
               # File tk/lib/tk/canvas.rb, line 239
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 tk/lib/tk/canvas.rb, line 242
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 tk/lib/tk/canvas.rb, line 245
def find_overlapping(x1, y1, x2, y2)
  find('overlapping', x1, y1, x2, y2)
end
            
find_withtag(tag) click to toggle source
 
               # File tk/lib/tk/canvas.rb, line 248
def find_withtag(tag)
  find('withtag', tag)
end
            
gettags(tagOrId) click to toggle source
 
               # File tk/lib/tk/canvas.rb, line 266
def gettags(tagOrId)
  list(tk_send_without_enc('gettags', tagid(tagOrId))).collect{|tag|
    TkcTag.id2obj(self, tag)
  }
end
            
i_move(tagOrId, idx, x, y) click to toggle source
Alias for: imove
icursor(tagOrId, index) click to toggle source
 
               # File tk/lib/tk/canvas.rb, line 272
def icursor(tagOrId, index)
  tk_send_without_enc('icursor', tagid(tagOrId), index)
  self
end
            
imove(tagOrId, idx, x, y) click to toggle source
 
               # 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
            
Also aliased as: i_move
index(tagOrId, idx) click to toggle source
 
               # File tk/lib/tk/canvas.rb, line 283
def index(tagOrId, idx)
  number(tk_send_without_enc('index', tagid(tagOrId), idx))
end
            
insert(tagOrId, index, string) click to toggle source
 
               # 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
            
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 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
            
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 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
            
itembind_remove(tag, context) click to toggle source
 
               # File tk/lib/tk/canvas.rb, line 163
def itembind_remove(tag, context)
  _bind_remove([path, "bind", tagid(tag)], context)
  self
end
            
itembindinfo(tag, context=nil) click to toggle source
 
               # File tk/lib/tk/canvas.rb, line 168
def itembindinfo(tag, context=nil)
  _bindinfo([path, "bind", tagid(tag)], context)
end
            
itemfocus(tagOrId=nil) click to toggle source
 
               # 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
            
itemtype(tag) click to toggle source
 
               # File tk/lib/tk/canvas.rb, line 609
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 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
            
move(tag, dx, dy) click to toggle source
 
               # File tk/lib/tk/canvas.rb, line 541
def move(tag, dx, dy)
  tk_send_without_enc('move', tagid(tag), dx, dy)
  self
end
            
move_to(tag, x, y) click to toggle source
Alias for: moveto
moveto(tag, x, y) click to toggle source
 
               # 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
            
Also aliased as: move_to
postscript(keys) click to toggle source
 
               # File tk/lib/tk/canvas.rb, line 553
def postscript(keys)
  tk_send("postscript", *hash_kv(keys))
end
            
raise(tag, above=nil) click to toggle source
 
               # 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
            
rchars(tag, first, last, str_or_coords) click to toggle source
 
               # 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
            
Also aliased as: replace_chars, replace_coords
remove(*args) click to toggle source
Alias for: delete
replace_chars(tag, first, last, str_or_coords) click to toggle source
Alias for: rchars
replace_coords(tag, first, last, str_or_coords) click to toggle source
Alias for: rchars
scale(tag, x, y, xs, ys) click to toggle source
 
               # 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
            
scan_dragto(x, y, gain=None) click to toggle source
 
               # 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
            
scan_mark(x, y) click to toggle source
 
               # File tk/lib/tk/canvas.rb, line 580
def scan_mark(x, y)
  tk_send_without_enc('scan', 'mark', x, y)
  self
end
            
select(mode, *args) click to toggle source
 
               # 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
            
select_adjust(tagOrId, index) click to toggle source
 
               # File tk/lib/tk/canvas.rb, line 593
def select_adjust(tagOrId, index)
  select('adjust', tagid(tagOrId), index)
end
            
select_clear() click to toggle source
 
               # File tk/lib/tk/canvas.rb, line 596
def select_clear
  select('clear')
end
            
select_from(tagOrId, index) click to toggle source
 
               # File tk/lib/tk/canvas.rb, line 599
def select_from(tagOrId, index)
  select('from', tagid(tagOrId), index)
end
            
select_item() click to toggle source
 
               # File tk/lib/tk/canvas.rb, line 602
def select_item
  select('item')
end
            
select_to(tagOrId, index) click to toggle source
 
               # File tk/lib/tk/canvas.rb, line 605
def select_to(tagOrId, index)
  select('to', tagid(tagOrId), index)
end