TkCanvas (Class)

In: tk/lib/tk/canvas.rb
Parent: TkWindow

Constants

TkCommandNames = ['canvas'.freeze].freeze
WidgetClassName = 'Canvas'.freeze

Included Modules

TkTreatCItemFont Scrollable

Public Instance methods

[Source]

# File tk/lib/tk/canvas.rb, line 40
  def __destroy_hook__
    TkcItem::CItemID_TBL.delete(@path)
  end

[Source]

# File tk/lib/tk/canvas.rb, line 69
  def addtag(tag, mode, *args)
    tk_send_without_enc('addtag', tagid(tag), mode, *args)
    self
  end

[Source]

# File tk/lib/tk/canvas.rb, line 73
  def addtag_above(tagOrId, target)
    addtag(tagOrId, 'above', tagid(target))
  end

[Source]

# File tk/lib/tk/canvas.rb, line 76
  def addtag_all(tagOrId)
    addtag(tagOrId, 'all')
  end

[Source]

# File tk/lib/tk/canvas.rb, line 79
  def addtag_below(tagOrId, target)
    addtag(tagOrId, 'below', tagid(target))
  end

[Source]

# File tk/lib/tk/canvas.rb, line 82
  def addtag_closest(tagOrId, x, y, halo=None, start=None)
    addtag(tagOrId, 'closest', x, y, halo, start)
  end

[Source]

# File tk/lib/tk/canvas.rb, line 85
  def addtag_enclosed(tagOrId, x1, y1, x2, y2)
    addtag(tagOrId, 'enclosed', x1, y1, x2, y2)
  end

[Source]

# File tk/lib/tk/canvas.rb, line 88
  def addtag_overlapping(tagOrId, x1, y1, x2, y2)
    addtag(tagOrId, 'overlapping', x1, y1, x2, y2)
  end

[Source]

# File tk/lib/tk/canvas.rb, line 91
  def addtag_withtag(tagOrId, tag)
    addtag(tagOrId, 'withtag', tagid(tag))
  end

[Source]

# File tk/lib/tk/canvas.rb, line 95
  def bbox(tagOrId, *tags)
    list(tk_send_without_enc('bbox', tagid(tagOrId), 
                             *tags.collect{|t| tagid(t)}))
  end

[Source]

# File tk/lib/tk/canvas.rb, line 119
  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

[Source]

# File tk/lib/tk/canvas.rb, line 123
  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

[Source]

# File tk/lib/tk/canvas.rb, line 128
  def coords(tag, *args)
    if args == []
      tk_split_list(tk_send_without_enc('coords', tagid(tag)))
    else
      tk_send_without_enc('coords', tagid(tag), *(args.flatten))
    end
  end

create a canvas item without creating a TkcItem object

[Source]

# File tk/lib/tk/canvas.rb, line 64
  def create(type, *args)
    type.create(self, *args)
  end

[Source]

# File tk/lib/tk/canvas.rb, line 436
  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

[Source]

# File tk/lib/tk/canvas.rb, line 136
  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

[Source]

# File tk/lib/tk/canvas.rb, line 142
  def delete(*args)
    if TkcItem::CItemID_TBL[self.path]
      find('withtag', *args).each{|item| 
        TkcItem::CItemID_TBL[self.path].delete(item.id)
      }
    end
    tk_send_without_enc('delete', *args.collect{|t| tagid(t)})
    self
  end

[Source]

# File tk/lib/tk/canvas.rb, line 153
  def dtag(tag, tag_to_del=None)
    tk_send_without_enc('dtag', tagid(tag), tag_to_del)
    self
  end

[Source]

# File tk/lib/tk/canvas.rb, line 158
  def find(mode, *args)
    list(tk_send_without_enc('find', mode, *args)).collect!{|id| 
      TkcItem.id2obj(self, id)
    }
  end

[Source]

# File tk/lib/tk/canvas.rb, line 163
  def find_above(target)
    find('above', tagid(target))
  end

[Source]

# File tk/lib/tk/canvas.rb, line 166
  def find_all
    find('all')
  end

[Source]

# File tk/lib/tk/canvas.rb, line 169
  def find_below(target)
    find('below', tagid(target))
  end

[Source]

# File tk/lib/tk/canvas.rb, line 172
  def find_closest(x, y, halo=None, start=None)
    find('closest', x, y, halo, start)
  end

[Source]

# File tk/lib/tk/canvas.rb, line 175
  def find_enclosed(x1, y1, x2, y2)
    find('enclosed', x1, y1, x2, y2)
  end

[Source]

# File tk/lib/tk/canvas.rb, line 178
  def find_overlapping(x1, y1, x2, y2)
    find('overlapping', x1, y1, x2, y2)
  end

[Source]

# File tk/lib/tk/canvas.rb, line 181
  def find_withtag(tag)
    find('withtag', tag)
  end

[Source]

# File tk/lib/tk/canvas.rb, line 199
  def gettags(tagOrId)
    list(tk_send_without_enc('gettags', tagid(tagOrId))).collect{|tag|
      TkcTag.id2obj(self, tag)
    }
  end

[Source]

# File tk/lib/tk/canvas.rb, line 205
  def icursor(tagOrId, index)
    tk_send_without_enc('icursor', tagid(tagOrId), index)
    self
  end

[Source]

# File tk/lib/tk/canvas.rb, line 210
  def index(tagOrId, index)
    number(tk_send_without_enc('index', tagid(tagOrId), index))
  end

[Source]

# File tk/lib/tk/canvas.rb, line 214
  def insert(tagOrId, index, string)
    tk_send_without_enc('insert', tagid(tagOrId), index, 
                        _get_eval_enc_str(string))
    self
  end

[Source]

# File tk/lib/tk/canvas.rb, line 100
  def itembind(tag, context, cmd=Proc.new, args=nil)
    _bind([path, "bind", tagid(tag)], context, cmd, args)
    self
  end

[Source]

# File tk/lib/tk/canvas.rb, line 105
  def itembind_append(tag, context, cmd=Proc.new, args=nil)
    _bind_append([path, "bind", tagid(tag)], context, cmd, args)
    self
  end

[Source]

# File tk/lib/tk/canvas.rb, line 110
  def itembind_remove(tag, context)
    _bind_remove([path, "bind", tagid(tag)], context)
    self
  end

[Source]

# File tk/lib/tk/canvas.rb, line 115
  def itembindinfo(tag, context=nil)
    _bindinfo([path, "bind", tagid(tag)], context)
  end

[Source]

# File tk/lib/tk/canvas.rb, line 220
  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
    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

[Source]

# File tk/lib/tk/canvas.rb, line 293
  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

[Source]

# File tk/lib/tk/canvas.rb, line 249
  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

[Source]

# File tk/lib/tk/canvas.rb, line 185
  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

[Source]

# File tk/lib/tk/canvas.rb, line 518
  def itemtype(tag)
    TkcItem.type2class(tk_send('type', tagid(tag)))
  end

[Source]

# File tk/lib/tk/canvas.rb, line 457
  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

[Source]

# File tk/lib/tk/canvas.rb, line 466
  def move(tag, x, y)
    tk_send_without_enc('move', tagid(tag), x, y)
    self
  end

[Source]

# File tk/lib/tk/canvas.rb, line 471
  def postscript(keys)
    tk_send("postscript", *hash_kv(keys))
  end

[Source]

# File tk/lib/tk/canvas.rb, line 475
  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
remove(*args)

Alias for delete

[Source]

# File tk/lib/tk/canvas.rb, line 484
  def scale(tag, x, y, xs, ys)
    tk_send_without_enc('scale', tagid(tag), x, y, xs, ys)
    self
  end

[Source]

# File tk/lib/tk/canvas.rb, line 493
  def scan_dragto(x, y)
    tk_send_without_enc('scan', 'dragto', x, y)
    self
  end

[Source]

# File tk/lib/tk/canvas.rb, line 489
  def scan_mark(x, y)
    tk_send_without_enc('scan', 'mark', x, y)
    self
  end

[Source]

# File tk/lib/tk/canvas.rb, line 498
  def select(mode, *args)
    r = tk_send_without_enc('select', mode, *args)
    (mode == 'item')? TkcItem.id2obj(self, r): self
  end

[Source]

# File tk/lib/tk/canvas.rb, line 502
  def select_adjust(tagOrId, index)
    select('adjust', tagid(tagOrId), index)
  end

[Source]

# File tk/lib/tk/canvas.rb, line 505
  def select_clear
    select('clear')
  end

[Source]

# File tk/lib/tk/canvas.rb, line 508
  def select_from(tagOrId, index)
    select('from', tagid(tagOrId), index)
  end

[Source]

# File tk/lib/tk/canvas.rb, line 511
  def select_item
    select('item')
  end

[Source]

# File tk/lib/tk/canvas.rb, line 514
  def select_to(tagOrId, index)
    select('to', tagid(tagOrId), index)
  end

[Validate]