TkTextTag (Class)

In: tk/lib/tk/texttag.rb
Parent: TkObject

Methods

[]   []=   add   bind   bind_append   bind_remove   bindinfo   cget   configinfo   configure   current_configinfo   destroy   first   id   id2obj   last   lower   new   nextrange   prevrange   raise   ranges   remove  

Constants

TTagID_TBL = TkCore::INTERP.create_table
Tk_TextTag_ID = ['tag'.freeze, '00000'.taint].freeze

Included Modules

TkTreatTagFont

Public Class methods

[Source]

# File tk/lib/tk/texttag.rb, line 16
  def TkTextTag.id2obj(text, id)
    tpath = text.path
    return id unless TTagID_TBL[tpath]
    TTagID_TBL[tpath][id]? TTagID_TBL[tpath][id]: id
  end

[Source]

# File tk/lib/tk/texttag.rb, line 22
  def initialize(parent, *args)
    unless parent.kind_of?(TkText)
      fail ArguemntError, "expect TkText for 1st argument"
    end
    @parent = @t = parent
    @tpath = parent.path
    @path = @id = Tk_TextTag_ID.join('')
    TTagID_TBL[@id] = self
    TTagID_TBL[@tpath] = {} unless TTagID_TBL[@tpath]
    TTagID_TBL[@tpath][@id] = self
    Tk_TextTag_ID[1].succ!
    #tk_call @t.path, "tag", "configure", @id, *hash_kv(keys)

    if args != [] then
      keys = args.pop
      if keys.kind_of? Hash then
        add(*args) if args != []
        configure(keys)
      else
        args.push keys
        add(*args)
      end
    end
    @t._addtag id, self
  end

Public Instance methods

[Source]

# File tk/lib/tk/texttag.rb, line 92
  def [](key)
    cget key
  end

[Source]

# File tk/lib/tk/texttag.rb, line 96
  def []=(key,val)
    configure key, val
    val
  end

[Source]

# File tk/lib/tk/texttag.rb, line 59
  def add(*indices)
    tk_call_without_enc(@t.path, 'tag', 'add', @id, 
                        *(indices.collect{|idx| _get_eval_enc_str(idx)}))
    self
  end

[Source]

# File tk/lib/tk/texttag.rb, line 151
  def bind(seq, cmd=Proc.new, args=nil)
    _bind([@t.path, 'tag', 'bind', @id], seq, cmd, args)
    self
  end

[Source]

# File tk/lib/tk/texttag.rb, line 156
  def bind_append(seq, cmd=Proc.new, args=nil)
    _bind_append([@t.path, 'tag', 'bind', @id], seq, cmd, args)
    self
  end

[Source]

# File tk/lib/tk/texttag.rb, line 161
  def bind_remove(seq)
    _bind_remove([@t.path, 'tag', 'bind', @id], seq)
    self
  end

[Source]

# File tk/lib/tk/texttag.rb, line 166
  def bindinfo(context=nil)
    _bindinfo([@t.path, 'tag', 'bind', @id], context)
  end

[Source]

# File tk/lib/tk/texttag.rb, line 101
  def cget(key)
    case key.to_s
    when 'text', 'label', 'show', 'data', 'file'
      _fromUTF8(tk_call_without_enc(@t.path, 'tag', 'cget', @id, "-#{key}"))
    when 'font', 'kanjifont'
      #fnt = tk_tcl2ruby(tk_call(@t.path, 'tag', 'cget', @id, "-#{key}"))

      fnt = tk_tcl2ruby(_fromUTF8(tk_call_without_enc(@t.path, 'tag', 'cget', 
                                                      @id, '-font')))
      unless fnt.kind_of?(TkFont)
        fnt = tagfontobj(@id, fnt)
      end
      if key.to_s == 'kanjifont' && JAPANIZED_TK && TK_VERSION =~ /^4\.*/
        # obsolete; just for compatibility

        fnt.kanji_font
      else
        fnt
      end
    else
      tk_tcl2ruby(_fromUTF8(tk_call_without_enc(@t.path, 'tag', 'cget', 
                                                @id, "-#{key}")))
    end
  end

def configure(key, val=None)

  if key.kind_of? Hash
    tk_call @t.path, 'tag', 'configure', @id, *hash_kv(key)
  else
    tk_call @t.path, 'tag', 'configure', @id, "-#{key}", val
  end

end def configure(key, value)

  if value == FALSE
    value = "0"
  elsif value.kind_of? Proc
    value = install_cmd(value)
  end
  tk_call @t.path, 'tag', 'configure', @id, "-#{key}", value

end

[Source]

# File tk/lib/tk/texttag.rb, line 143
  def configinfo(key=nil)
    @t.tag_configinfo @id, key
  end

[Source]

# File tk/lib/tk/texttag.rb, line 124
  def configure(key, val=None)
    @t.tag_configure @id, key, val
  end

[Source]

# File tk/lib/tk/texttag.rb, line 147
  def current_configinfo(key=nil)
    @t.current_tag_configinfo @id, key
  end

[Source]

# File tk/lib/tk/texttag.rb, line 182
  def destroy
    tk_call_without_enc(@t.path, 'tag', 'delete', @id)
    TTagID_TBL[@tpath].delete(@id) if TTagID_TBL[@tpath]
    self
  end

[Source]

# File tk/lib/tk/texttag.rb, line 51
  def first
    @id + '.first'
  end

[Source]

# File tk/lib/tk/texttag.rb, line 47
  def id
    @id
  end

[Source]

# File tk/lib/tk/texttag.rb, line 55
  def last
    @id + '.last'
  end

[Source]

# File tk/lib/tk/texttag.rb, line 176
  def lower(below=None)
    tk_call_without_enc(@t.path, 'tag', 'lower', @id, 
                        _get_eval_enc_str(below))
    self
  end

[Source]

# File tk/lib/tk/texttag.rb, line 80
  def nextrange(first, last=None)
    tk_split_list(tk_call_without_enc(@t.path, 'tag', 'nextrange', @id, 
                                      _get_eval_enc_str(first), 
                                      _get_eval_enc_str(last)))
  end

[Source]

# File tk/lib/tk/texttag.rb, line 86
  def prevrange(first, last=None)
    tk_split_list(tk_call_without_enc(@t.path, 'tag', 'prevrange', @id, 
                                      _get_eval_enc_str(first), 
                                      _get_eval_enc_str(last)))
  end

[Source]

# File tk/lib/tk/texttag.rb, line 170
  def raise(above=None)
    tk_call_without_enc(@t.path, 'tag', 'raise', @id, 
                        _get_eval_enc_str(above))
    self
  end

[Source]

# File tk/lib/tk/texttag.rb, line 71
  def ranges
    l = tk_split_simplelist(tk_call_without_enc(@t.path, 'tag', 'ranges', @id))
    r = []
    while key=l.shift
      r.push [key, l.shift]
    end
    r
  end

[Source]

# File tk/lib/tk/texttag.rb, line 65
  def remove(*indices)
    tk_call_without_enc(@t.path, 'tag', 'remove', @id, 
                        *(indices.collect{|idx| _get_eval_enc_str(idx)}))
    self
  end

[Validate]