TkText (Class)

In: tk/lib/tk/text.rb
Parent: TkTextWin

Constants

ItemConfCMD = ['tag'.freeze, 'configure'.freeze].freeze
TkCommandNames = ['text'.freeze].freeze
WidgetClassName = 'Text'.freeze

Included Modules

TkTreatTextTagFont Scrollable

Public Class methods

[Source]

# File tk/lib/tk/text.rb, line 39
  def self.new(*args, &block)
    obj = super(*args){}
    obj.init_instance_variable
    obj.instance_eval(&block) if defined? yield
    obj
  end

Public Instance methods

[Source]

# File tk/lib/tk/text.rb, line 51
  def __destroy_hook__
    TTagID_TBL.delete(@path)
    TMarkID_TBL.delete(@path)
  end

[Source]

# File tk/lib/tk/text.rb, line 80
  def _addcmd(cmd)
    @cmdtbl.push cmd
  end

[Source]

# File tk/lib/tk/text.rb, line 84
  def _addtag(name, obj)
    @tags[name] = obj
  end
add_tag(tag, index1, index2=None)

Alias for tag_add

addtag(tag, index1, index2=None)

Alias for tag_add

[Source]

# File tk/lib/tk/text.rb, line 315
  def backspace
    self.delete 'insert'
  end

[Source]

# File tk/lib/tk/text.rb, line 319
  def bbox(index)
    list(tk_send_without_enc('bbox', _get_eval_enc_str(index)))
  end

[Source]

# File tk/lib/tk/text.rb, line 323
  def compare(idx1, op, idx2)
    bool(tk_send_without_enc('compare', _get_eval_enc_str(idx1), 
                             op, _get_eval_enc_str(idx2)))
  end

[Source]

# File tk/lib/tk/text.rb, line 328
  def count(idx1, idx2, *opts)
    opts = opts.collect{|opt| '-' + opt.to_s}
    number(tk_send_without_enc('count', _get_eval_enc_str(idx1), 
                               _get_eval_enc_str(idx2), *opts))
  end

[Source]

# File tk/lib/tk/text.rb, line 251
  def current_image_configinfo(index, slot = nil)
    if TkComm::GET_CONFIGINFO_AS_ARRAY
      if slot
        conf = image_configinfo(index, slot)
        {conf[0] => conf[4]}
      else
        ret = {}
        image_configinfo(index).each{|conf|
          ret[conf[0]] = conf[4] if conf.size > 2
        }
        ret
      end
    else # ! TkComm::GET_CONFIGINFO_AS_ARRAY

      ret = {}
      image_configinfo(index, slot).each{|k, conf|
        ret[k] = conf[-1] if conf.kind_of?(Array)
      }
      ret
    end
  end

[Source]

# File tk/lib/tk/text.rb, line 607
  def current_tag_configinfo(tag, key=nil)
    if TkComm::GET_CONFIGINFO_AS_ARRAY
      if key
        conf = tag_configinfo(tag, key)
        {conf[0] => conf[4]}
      else
        ret = {}
        tag_configinfo(tag).each{|conf|
          ret[conf[0]] = conf[4] if conf.size > 2
        }
        ret
      end
    else # ! TkComm::GET_CONFIGINFO_AS_ARRAY

      ret = {}
      tag_configinfo(tag, key).each{|k, conf|
        ret[k] = conf[-1] if conf.kind_of?(Array)
      }
      ret
    end
  end

[Source]

# File tk/lib/tk/text.rb, line 831
  def current_window_configinfo(win, slot = nil)
    if TkComm::GET_CONFIGINFO_AS_ARRAY
      if slot
        conf = window_configinfo(win, slot)
        {conf[0] => conf[4]}
      else
        ret = {}
        window_configinfo(win).each{|conf|
          ret[conf[0]] = conf[4] if conf.size > 2
        }
        ret
      end
    else # ! TkComm::GET_CONFIGINFO_AS_ARRAY

      ret = {}
      window_configinfo(win, slot).each{|k, conf|
        ret[k] = conf[-1] if conf.kind_of?(Array)
      }
      ret
    end
  end

[Source]

# File tk/lib/tk/text.rb, line 339
  def debug
    bool(tk_send_without_enc('debug'))
  end

[Source]

# File tk/lib/tk/text.rb, line 342
  def debug=(boolean)
    tk_send_without_enc('debug', boolean)
    #self

    boolean
  end
delete_tag(*tags)

Alias for tag_delete

deltag(*tags)

Alias for tag_delete

[Source]

# File tk/lib/tk/text.rb, line 307
  def destroy
    @tags = {} unless @tags
    @tags.each_value do |t|
      t.destroy
    end
    super
  end

[Source]

# File tk/lib/tk/text.rb, line 348
  def dlineinfo(index)
    list(tk_send_without_enc('dlineinfo', _get_eval_enc_str(index)))
  end

[Source]

# File tk/lib/tk/text.rb, line 1049
  def dump(type_info, *index, &block)
    args = type_info.collect{|inf| '-' + inf}
    args << '-command' << block if block
    str = tk_send('dump', *(args + index))
    result = []
    sel = nil
    i = 0
    while i < str.size
      # retrieve key

      idx = str.index(/ /, i)
      result.push str[i..(idx-1)]
      i = idx + 1
      
      # retrieve value

      case result[-1]
      when 'text'
        if str[i] == ?{
          # text formed as {...}

          val, i = _retrieve_braced_text(str, i)
          result.push val
        else
          # text which may contain backslahes

          val, i = _retrieve_backslashed_text(str, i)
          result.push val
        end
      else
        idx = str.index(/ /, i)
        val = str[i..(idx-1)]
        case result[-1]
        when 'mark'
          case val
          when 'insert'
            result.push TkTextMarkInsert.new(self)
          when 'current'
            result.push TkTextMarkCurrent.new(self)
          when 'anchor'
            result.push TkTextMarkAnchor.new(self)
          else
            result.push tk_tcl2ruby(val)
          end
        when 'tagon'
          if val == 'sel'
            if sel
              result.push sel
            else
              result.push TkTextTagSel.new(self)
            end
          else
            result.push tk_tcl2ruby(val)
          end
        when 'tagoff'
            result.push tk_tcl2ruby(val)
        when 'window'
          result.push tk_tcl2ruby(val)
        end
        i = idx + 1
      end

      # retrieve index

      idx = str.index(/ /, i)
      if idx
        result.push str[i..(idx-1)]
        i = idx + 1
      else
        result.push str[i..-1]
        break
      end
    end
    
    kvis = []
    until result.empty?
      kvis.push [result.shift, result.shift, result.shift]
    end
    kvis  # result is [[key1, value1, index1], [key2, value2, index2], ...]

  end

[Source]

# File tk/lib/tk/text.rb, line 1161
  def dump_all(*index, &block)
    dump(['all'], *index, &block)
  end

[Source]

# File tk/lib/tk/text.rb, line 1176
  def dump_image(*index, &block)
    dump(['image'], *index, &block)
  end

[Source]

# File tk/lib/tk/text.rb, line 1164
  def dump_mark(*index, &block)
    dump(['mark'], *index, &block)
  end

[Source]

# File tk/lib/tk/text.rb, line 1167
  def dump_tag(*index, &block)
    dump(['tag'], *index, &block)
  end

[Source]

# File tk/lib/tk/text.rb, line 1170
  def dump_text(*index, &block)
    dump(['text'], *index, &block)
  end

[Source]

# File tk/lib/tk/text.rb, line 1173
  def dump_window(*index, &block)
    dump(['window'], *index, &block)
  end

[Source]

# File tk/lib/tk/text.rb, line 364
  def edit_redo
    tk_send_without_enc('edit', 'redo')
    self
  end

[Source]

# File tk/lib/tk/text.rb, line 368
  def edit_reset
    tk_send_without_enc('edit', 'reset')
    self
  end

[Source]

# File tk/lib/tk/text.rb, line 372
  def edit_separator
    tk_send_without_enc('edit', 'separator')
    self
  end

[Source]

# File tk/lib/tk/text.rb, line 376
  def edit_undo
    tk_send_without_enc('edit', 'undo')
    self
  end

[Source]

# File tk/lib/tk/text.rb, line 144
  def image_cget(index, slot)
    case slot.to_s
    when 'text', 'label', 'show', 'data', 'file'
      _fromUTF8(tk_send_without_enc('image', 'cget', 
                                    _get_eval_enc_str(index), "-#{slot}"))
    else
      tk_tcl2ruby(_fromUTF8(tk_send_without_enc('image', 'cget', 
                                                _get_eval_enc_str(index), 
                                                "-#{slot}")))
    end
  end

[Source]

# File tk/lib/tk/text.rb, line 170
  def image_configinfo(index, slot = nil)
    if TkComm::GET_CONFIGINFO_AS_ARRAY
      if slot
        case slot.to_s
        when 'text', 'label', 'show', 'data', 'file'
          conf = tk_split_simplelist(_fromUTF8(tk_send_without_enc('image', 'configure', _get_eval_enc_str(index), "-#{slot}")))
        else
          conf = tk_split_list(_fromUTF8(tk_send_without_enc('image', 'configure', _get_eval_enc_str(index), "-#{slot}")))
        end
        conf[0] = conf[0][1..-1]
        conf
      else
        tk_split_simplelist(_fromUTF8(tk_send_without_enc('image', 'configure', _get_eval_enc_str(index)))).collect{|conflist|
          conf = tk_split_simplelist(conflist)
          conf[0] = conf[0][1..-1]
          case conf[0]
          when 'text', 'label', 'show', 'data', 'file'
          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
        }
      end
    else # ! TkComm::GET_CONFIGINFO_AS_ARRAY

      if slot
        case slot.to_s
        when 'text', 'label', 'show', 'data', 'file'
          conf = tk_split_simplelist(_fromUTF8(tk_send_without_enc('image', 'configure', _get_eval_enc_str(index), "-#{slot}")))
        else
          conf = tk_split_list(_fromUTF8(tk_send_without_enc('image', 'configure', _get_eval_enc_str(index), "-#{slot}")))
        end
        key = conf.shift[1..-1]
        { key => conf }
      else
        ret = {}
        tk_split_simplelist(_fromUTF8(tk_send_without_enc('image', 'configure', _get_eval_enc_str(index)))).each{|conflist|
          conf = tk_split_simplelist(conflist)
          key = conf.shift[1..-1]
          case key
          when 'text', 'label', 'show', 'data', 'file'
          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
        }
        ret
      end
    end
  end

[Source]

# File tk/lib/tk/text.rb, line 156
  def image_configure(index, slot, value=None)
    if slot.kind_of? Hash
      _fromUTF8(tk_send_without_enc('image', 'configure', 
                                    _get_eval_enc_str(index), 
                                    *hash_kv(slot, true)))
    else
      _fromUTF8(tk_send_without_enc('image', 'configure', 
                                    _get_eval_enc_str(index), 
                                    "-#{slot}", 
                                    _get_eval_enc_str(value)))
    end
    self
  end

[Source]

# File tk/lib/tk/text.rb, line 272
  def image_names
    tk_split_simplelist(_fromUTF8(tk_send_without_enc('image', 'names'))).collect{|elt|
      tagid2obj(elt)
    }
  end

[Source]

# File tk/lib/tk/text.rb, line 66
  def index(index)
    tk_send_without_enc('index', _get_eval_enc_str(index))
  end

[Source]

# File tk/lib/tk/text.rb, line 46
  def init_instance_variable
    @cmdtbl = []
    @tags = {}
  end

[Source]

# File tk/lib/tk/text.rb, line 288
  def insert(index, chars, *tags)
    if tags[0].kind_of? Array
      # multiple chars-taglist argument :: str, [tag,...], str, [tag,...], ...

      args = [chars]
      while tags.size > 0
        args << tags.shift.collect{|x|_get_eval_string(x)}.join(' ')  # taglist

        args << tags.shift if tags.size > 0                           # chars

      end
      super index, *args
    else
      # single chars-taglist argument :: str, tag, tag, ...

      if tags.size == 0
        super index, chars
      else
        super index, chars, tags.collect{|x|_get_eval_string(x)}.join(' ')
      end
    end
  end

[Source]

# File tk/lib/tk/text.rb, line 108
  def mark_gravity(mark, direction=nil)
    if direction
      tk_send_without_enc('mark', 'gravity', 
                          _get_eval_enc_str(mark), direction)
      self
    else
      tk_send_without_enc('mark', 'gravity', _get_eval_enc_str(mark))
    end
  end

[Source]

# File tk/lib/tk/text.rb, line 102
  def mark_names
    tk_split_simplelist(_fromUTF8(tk_send_without_enc('mark', 'names'))).collect{|elt|
      tagid2obj(elt)
    }
  end

[Source]

# File tk/lib/tk/text.rb, line 132
  def mark_next(index)
    tagid2obj(_fromUTF8(tk_send_without_enc('mark', 'next', 
                                            _get_eval_enc_str(index))))
  end

[Source]

# File tk/lib/tk/text.rb, line 138
  def mark_previous(index)
    tagid2obj(_fromUTF8(tk_send_without_enc('mark', 'previous', 
                                            _get_eval_enc_str(index))))
  end

[Source]

# File tk/lib/tk/text.rb, line 118
  def mark_set(mark, index)
    tk_send_without_enc('mark', 'set', _get_eval_enc_str(mark), 
                        _get_eval_enc_str(index))
    self
  end

[Source]

# File tk/lib/tk/text.rb, line 125
  def mark_unset(*marks)
    tk_send_without_enc('mark', 'unset', 
                        *(marks.collect{|mark| _get_eval_enc_str(mark)}))
    self
  end

[Source]

# File tk/lib/tk/text.rb, line 355
  def modified(mode)
    tk_send_without_enc('edit', 'modified', mode)
    self
  end

[Source]

# File tk/lib/tk/text.rb, line 359
  def modified=(mode)
    modified(mode)
    mode
  end

[Source]

# File tk/lib/tk/text.rb, line 352
  def modified?
    bool(tk_send_without_enc('edit', 'modified'))
  end
next_mark(index)

Alias for mark_next

previous_mark(index)

Alias for mark_previous

[Source]

# File tk/lib/tk/text.rb, line 334
  def replace(idx1, idx2, *opts)
    tk_send('replace', idx1, idx2, *opts)
    self
  end

[Source]

# File tk/lib/tk/text.rb, line 1045
  def rsearch(pat,start,stop=None)
    rsearch_with_length(pat,start,stop)[0]
  end

[Source]

# File tk/lib/tk/text.rb, line 993
  def rsearch_with_length(pat,start,stop=None)
    pat = pat.chr if pat.kind_of? Integer
    if stop != None
      return ["", 0] if compare(start,'<=',stop)
      txt = get(stop,start)
      if (pos = txt.rindex(pat))
        match = $&
        #pos = txt[0..(pos-1)].split('').length if pos > 0

        pos = _ktext_length(txt[0..(pos-1)]) if pos > 0
        if pat.kind_of? String
          #return [index(stop + " + #{pos} chars"), pat.split('').length]

          return [index(stop + " + #{pos} chars"), _ktext_length(pat), pat.dup]
        else
          #return [index(stop + " + #{pos} chars"), $&.split('').length]

          return [index(stop + " + #{pos} chars"), _ktext_length(match), match]
        end
      else
        return ["", 0]
      end
    else
      txt = get('1.0',start)
      if (pos = txt.rindex(pat))
        match = $&
        #pos = txt[0..(pos-1)].split('').length if pos > 0

        pos = _ktext_length(txt[0..(pos-1)]) if pos > 0
        if pat.kind_of? String
          #return [index("1.0 + #{pos} chars"), pat.split('').length]

          return [index("1.0 + #{pos} chars"), _ktext_length(pat), pat.dup]
        else
          #return [index("1.0 + #{pos} chars"), $&.split('').length]

          return [index("1.0 + #{pos} chars"), _ktext_length(match), match]
        end
      else
        txt = get('1.0','end - 1 char')
        if (pos = txt.rindex(pat))
          match = $&
          #pos = txt[0..(pos-1)].split('').length if pos > 0

          pos = _ktext_length(txt[0..(pos-1)]) if pos > 0
          if pat.kind_of? String
            #return [index("1.0 + #{pos} chars"), pat.split('').length]

            return [index("1.0 + #{pos} chars"), _ktext_length(pat), pat.dup]
          else
            #return [index("1.0 + #{pos} chars"), $&.split('').length]

            return [index("1.0 + #{pos} chars"), _ktext_length(match), match]
          end
        else
          return ["", 0]
        end
      end
    end
  end

[Source]

# File tk/lib/tk/text.rb, line 989
  def search(pat,start,stop=None)
    search_with_length(pat,start,stop)[0]
  end

[Source]

# File tk/lib/tk/text.rb, line 932
  def search_with_length(pat,start,stop=None)
    pat = pat.chr if pat.kind_of? Integer
    if stop != None
      return ["", 0] if compare(start,'>=',stop)
      txt = get(start,stop)
      if (pos = txt.index(pat))
        match = $&
        #pos = txt[0..(pos-1)].split('').length if pos > 0

        pos = _ktext_length(txt[0..(pos-1)]) if pos > 0
        if pat.kind_of? String
          #return [index(start + " + #{pos} chars"), pat.split('').length]

          return [index(start + " + #{pos} chars"), 
                  _ktext_length(pat), pat.dup]
        else
          #return [index(start + " + #{pos} chars"), $&.split('').length]

          return [index(start + " + #{pos} chars"), 
                  _ktext_length(match), match]
        end
      else
        return ["", 0]
      end
    else
      txt = get(start,'end - 1 char')
      if (pos = txt.index(pat))
        match = $&
        #pos = txt[0..(pos-1)].split('').length if pos > 0

        pos = _ktext_length(txt[0..(pos-1)]) if pos > 0
        if pat.kind_of? String
          #return [index(start + " + #{pos} chars"), pat.split('').length]

          return [index(start + " + #{pos} chars"), 
                  _ktext_length(pat), pat.dup]
        else
          #return [index(start + " + #{pos} chars"), $&.split('').length]

          return [index(start + " + #{pos} chars"), 
                  _ktext_length(match), match]
        end
      else
        txt = get('1.0','end - 1 char')
        if (pos = txt.index(pat))
          match = $&
          #pos = txt[0..(pos-1)].split('').length if pos > 0

          pos = _ktext_length(txt[0..(pos-1)]) if pos > 0
          if pat.kind_of? String
            #return [index("1.0 + #{pos} chars"), pat.split('').length]

            return [index("1.0 + #{pos} chars"), 
                    _ktext_length(pat), pat.dup]
          else
            #return [index("1.0 + #{pos} chars"), $&.split('').length]

            return [index("1.0 + #{pos} chars"), _ktext_length(match), match]
          end
        else
          return ["", 0]
        end
      end
    end
  end

[Source]

# File tk/lib/tk/text.rb, line 283
  def set_current(index)
    tk_send_without_enc('mark','set','current', _get_eval_enc_str(index))
    self
  end

[Source]

# File tk/lib/tk/text.rb, line 278
  def set_insert(index)
    tk_send_without_enc('mark','set','insert', _get_eval_enc_str(index))
    self
  end
set_mark(mark, index)

Alias for mark_set

[Source]

# File tk/lib/tk/text.rb, line 409
  def tag_add(tag, index1, index2=None)
    tk_send_without_enc('tag', 'add', _get_eval_enc_str(tag), 
                        _get_eval_enc_str(index1), 
                        _get_eval_enc_str(index2))
    self
  end

[Source]

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

[Source]

# File tk/lib/tk/text.rb, line 440
  def tag_bind_append(tag, seq, cmd=Proc.new, args=nil)
    _bind_append([@path, 'tag', 'bind', tag], seq, cmd, args)
    self
  end

[Source]

# File tk/lib/tk/text.rb, line 445
  def tag_bind_remove(tag, seq)
    _bind_remove([@path, 'tag', 'bind', tag], seq)
    self
  end

[Source]

# File tk/lib/tk/text.rb, line 450
  def tag_bindinfo(tag, context=nil)
    _bindinfo([@path, 'tag', 'bind', tag], context)
  end

[Source]

# File tk/lib/tk/text.rb, line 454
  def tag_cget(tag, key)
    case key.to_s
    when 'text', 'label', 'show', 'data', 'file'
      tk_call_without_enc(@path, 'tag', 'cget', 
                          _get_eval_enc_str(tag), "-#{key}")
    when 'font', 'kanjifont'
      #fnt = tk_tcl2ruby(tk_send('tag', 'cget', tag, "-#{key}"))

      fnt = tk_tcl2ruby(_fromUTF8(tk_send_without_enc('tag','cget',_get_eval_enc_str(tag),'-font')))
      unless fnt.kind_of?(TkFont)
        fnt = tagfontobj(tag, 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(@path,'tag','cget',_get_eval_enc_str(tag),"-#{key}")))
    end
  end

[Source]

# File tk/lib/tk/text.rb, line 505
  def tag_configinfo(tag, key=nil)
    if TkComm::GET_CONFIGINFO_AS_ARRAY
      if key
        case key.to_s
        when 'text', 'label', 'show', 'data', 'file'
          conf = tk_split_simplelist(_fromUTF8(tk_send_without_enc('tag','configure',_get_eval_enc_str(tag),"-#{key}")))
        when 'font', 'kanjifont'
          conf = tk_split_simplelist(_fromUTF8(tk_send_without_enc('tag','configure',_get_eval_enc_str(tag),"-#{key}")))
          conf[4] = tagfont_configinfo(tag, conf[4])
        else
          conf = tk_split_list(_fromUTF8(tk_send_without_enc('tag','configure',_get_eval_enc_str(tag),"-#{key}")))
        end
        conf[0] = conf[0][1..-1]
        conf
      else
        ret = tk_split_simplelist(_fromUTF8(tk_send('tag','configure',_get_eval_enc_str(tag)))).collect{|conflist|
          conf = tk_split_simplelist(conflist)
          conf[0] = conf[0][1..-1]
          case conf[0]
          when 'text', 'label', 'show', 'data', 'file'
          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(tag, fontconf[4])
          ret.push(fontconf)
        else
          ret
        end
      end
    else # ! TkComm::GET_CONFIGINFO_AS_ARRAY

      if key
        case key.to_s
        when 'text', 'label', 'show', 'data', 'file'
          conf = tk_split_simplelist(_fromUTF8(tk_send_without_enc('tag','configure',_get_eval_enc_str(tag),"-#{key}")))
        when 'font', 'kanjifont'
          conf = tk_split_simplelist(_fromUTF8(tk_send_without_enc('tag','configure',_get_eval_enc_str(tag),"-#{key}")))
          conf[4] = tagfont_configinfo(tag, conf[4])
        else
          conf = tk_split_list(_fromUTF8(tk_send_without_enc('tag','configure',_get_eval_enc_str(tag),"-#{key}")))
        end
        key = conf.shift[1..-1]
        { key => conf }
      else
        ret = {}
        tk_split_simplelist(_fromUTF8(tk_send('tag','configure',_get_eval_enc_str(tag)))).each{|conflist|
          conf = tk_split_simplelist(conflist)
          key = conf.shift[1..-1]
          case key
          when 'text', 'label', 'show', 'data', 'file'
          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(tag, fontconf[3])
          ret['font'] = fontconf
        end
        ret
      end
    end
  end

[Source]

# File tk/lib/tk/text.rb, line 476
  def tag_configure(tag, key, val=None)
    if key.kind_of? Hash
      key = _symbolkey2str(key)
      if ( key['font'] || key['kanjifont'] \
          || key['latinfont'] || key['asciifont'] )
        tagfont_configure(tag, key)
      else
        tk_send_without_enc('tag', 'configure', _get_eval_enc_str(tag), 
                            *hash_kv(key, true))
      end

    else
      if  key == 'font' || key == :font || 
          key == 'kanjifont' || key == :kanjifont ||
          key == 'latinfont' || key == :latinfont || 
          key == 'asciifont' || key == :asciifont
        if val == None
          tagfontobj(tag)
        else
          tagfont_configure(tag, {key=>val})
        end
      else
        tk_send_without_enc('tag', 'configure', _get_eval_enc_str(tag), 
                            "-#{key}", _get_eval_enc_str(val))
      end
    end
    self
  end

[Source]

# File tk/lib/tk/text.rb, line 418
  def tag_delete(*tags)
    tk_send_without_enc('tag', 'delete', 
                        *(tags.collect{|tag| _get_eval_enc_str(tag)}))
    if TkTextTag::TTagID_TBL[@path]
      tags.each{|tag|
        if tag.kind_of? TkTextTag
          TTagID_TBL[@path].delete(tag.id) 
        else
          TTagID_TBL[@path].delete(tag) 
        end
      }
    end
    self
  end

[Source]

# File tk/lib/tk/text.rb, line 634
  def tag_lower(tag, below=None)
    tk_send_without_enc('tag', 'lower', _get_eval_enc_str(tag), 
                        _get_eval_enc_str(below))
    self
  end

[Source]

# File tk/lib/tk/text.rb, line 96
  def tag_names(index=None)
    tk_split_simplelist(_fromUTF8(tk_send_without_enc('tag', 'names', _get_eval_enc_str(index)))).collect{|elt|
      tagid2obj(elt)
    }
  end

[Source]

# File tk/lib/tk/text.rb, line 656
  def tag_nextrange(tag, first, last=None)
    tk_split_list(tk_send_without_enc('tag', 'nextrange', 
                                      _get_eval_enc_str(tag), 
                                      _get_eval_enc_str(first), 
                                      _get_eval_enc_str(last)))
  end

[Source]

# File tk/lib/tk/text.rb, line 663
  def tag_prevrange(tag, first, last=None)
    tk_split_list(tk_send_without_enc('tag', 'prevrange', 
                                      _get_eval_enc_str(tag), 
                                      _get_eval_enc_str(first), 
                                      _get_eval_enc_str(last)))
  end

[Source]

# File tk/lib/tk/text.rb, line 628
  def tag_raise(tag, above=None)
    tk_send_without_enc('tag', 'raise', _get_eval_enc_str(tag), 
                        _get_eval_enc_str(above))
    self
  end

[Source]

# File tk/lib/tk/text.rb, line 646
  def tag_ranges(tag)
    l = tk_split_simplelist(tk_send_without_enc('tag', 'ranges',
                                                _get_eval_enc_str(tag)))
    r = []
    while key=l.shift
      r.push [key, l.shift]
    end
    r
  end

[Source]

# File tk/lib/tk/text.rb, line 640
  def tag_remove(tag, *indices)
    tk_send_without_enc('tag', 'remove', _get_eval_enc_str(tag), 
                        *(indces.collect{|idx| _get_eval_enc_str(idx)}))
    self
  end

[Source]

# File tk/lib/tk/text.rb, line 88
  def tagid2obj(tagid)
    if @tags[tagid]
      @tags[tagid]
    else
      tagid
    end
  end

[Source]

# File tk/lib/tk/text.rb, line 391
  def text_copy
    # Tk8.4 feature

    tk_call_without_enc('tk_textCopy', @path)
    self
  end

[Source]

# File tk/lib/tk/text.rb, line 397
  def text_cut
    # Tk8.4 feature

    tk_call_without_enc('tk_textCut', @path)
    self
  end

[Source]

# File tk/lib/tk/text.rb, line 403
  def text_paste
    # Tk8.4 feature

    tk_call_without_enc('tk_textPaste', @path)
    self
  end

[Source]

# File tk/lib/tk/text.rb, line 879
  def tksearch(*args)
    # call 'search' subcommand of text widget

    #   args ::= [<array_of_opts>] <pattern> <start_index> [<stop_index>]

    # <pattern> must be a regular expression of Tcl

    all_mode = false
    opts = args.shift
    if opts.kind_of?(Array)
      opts = opts.collect{|opt| 
        opt =  opt.to_s
        all_mode = true if opt == 'all'
        opt
      }
    else
      args.unshift(opts)
      opts = []
    end

    opts << '--'

    if all_mode
      tk_split_simplelist(tk_send(*(opts + args)))
    else
      tk_send(*(opts + args))
    end
  end

[Source]

# File tk/lib/tk/text.rb, line 905
  def tksearch_with_count(*args)
    # call 'search' subcommand of text widget

    #   args ::= [<array_of_opts>] <var> <pattern> <start_index> [<stop_index>]

    # <pattern> must be a regular expression of Tcl

    all_mode = false
    opts = args.shift
    if opts.kind_of?(Array)
      opts = opts.collect{|opt| 
        opt =  opt.to_s
        all_mode = true if opt == 'all'
        opt
      }
      var = args.shift
    else
      var = opts
      opts = []
    end

    opts << '-count' << var << '--'

    if all_mode
      tk_split_simplelist(tk_send(*(opts + args)))
    else
      tk_send(*(opts + args))
    end
  end
unset_mark(*marks)

Alias for mark_unset

[Source]

# File tk/lib/tk/text.rb, line 70
  def value
    _fromUTF8(tk_send_without_enc('get', "1.0", "end - 1 char"))
  end

[Source]

# File tk/lib/tk/text.rb, line 74
  def value= (val)
    tk_send_without_enc('delete', "1.0", 'end')
    tk_send_without_enc('insert', "1.0", _get_eval_enc_str(val))
    val
  end

[Source]

# File tk/lib/tk/text.rb, line 670
  def window_cget(index, slot)
    case slot.to_s
    when 'text', 'label', 'show', 'data', 'file'
      _fromUTF8(tk_send_without_enc('window', 'cget', 
                                    _get_eval_enc_str(index), "-#{slot}"))
    when 'font', 'kanjifont'
      #fnt = tk_tcl2ruby(tk_send('window', 'cget', index, "-#{slot}"))

      fnt = tk_tcl2ruby(_fromUTF8(tk_send_without_enc('window', 'cget', _get_eval_enc_str(index), '-font')))
      unless fnt.kind_of?(TkFont)
        fnt = tagfontobj(index, fnt)
      end
      if slot.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('window', 'cget', _get_eval_enc_str(index), "-#{slot}")))
    end
  end

[Source]

# File tk/lib/tk/text.rb, line 750
  def window_configinfo(win, slot = nil)
    if TkComm::GET_CONFIGINFO_AS_ARRAY
      if slot
        case slot.to_s
        when 'text', 'label', 'show', 'data', 'file'
          conf = tk_split_simplelist(_fromUTF8(tk_send('window', 'configure', _get_eval_enc_str(win), "-#{slot}")))
        else
          conf = tk_split_list(_fromUTF8(tk_send('window', 'configure', _get_eval_enc_str(win), "-#{slot}")))
        end
        conf[0] = conf[0][1..-1]
        conf
      else
        tk_split_simplelist(_fromUTF8(tk_send('window', 'configure', _get_eval_enc_str(win)))).collect{|conflist|
          conf = tk_split_simplelist(conflist)
          conf[0] = conf[0][1..-1]
          case conf[0]
          when 'text', 'label', 'show', 'data', 'file'
          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
        }
      end
    else # ! TkComm::GET_CONFIGINFO_AS_ARRAY

      if slot
        case slot.to_s
        when 'text', 'label', 'show', 'data', 'file'
          conf = tk_split_simplelist(_fromUTF8(tk_send('window', 'configure', _get_eval_enc_str(win), "-#{slot}")))
        else
          conf = tk_split_list(_fromUTF8(tk_send('window', 'configure', _get_eval_enc_str(win), "-#{slot}")))
        end
        key = conf.shift[1..-1]
        { key => conf }
      else
        ret = {}
        tk_split_simplelist(_fromUTF8(tk_send('window', 'configure', _get_eval_enc_str(win)))).each{|conflist|
          conf = tk_split_simplelist(conflist)
          key = conf.shift[1..-1]
          case key
          when 'text', 'label', 'show', 'data', 'file'
          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
        }
        ret
      end
    end
  end

[Source]

# File tk/lib/tk/text.rb, line 692
  def window_configure(index, slot, value=None)
    if index.kind_of? TkTextWindow
      index.configure(slot, value)
    else
      if slot.kind_of? Hash
        slot = _symbolkey2str(slot)
        win = slot['window']
        # slot['window'] = win.epath if win.kind_of?(TkWindow)

        slot['window'] = _epath(win) if win
        if slot['create']
          p_create = slot['create']
          if p_create.kind_of? Proc
??
            slot['create'] = install_cmd(proc{_epath(p_create.call)})
          end
        end
        tk_send_without_enc('window', 'configure', 
                            _get_eval_enc_str(index), 
                            *hash_kv(slot, true))
      else
        if slot == 'window' || slot == :window
          # id = value 

          # value = id.epath if id.kind_of?(TkWindow)

          value = _epath(value)
        end
        if slot == 'create' || slot == :create
          p_create = value
          if p_create.kind_of? Proc
??
            value = install_cmd(proc{_epath(p_create.call)})
          end
        end
        tk_send_without_enc('window', 'configure', 
                            _get_eval_enc_str(index), 
                            "-#{slot}", _get_eval_enc_str(value))
      end
    end
    self
  end

[Source]

# File tk/lib/tk/text.rb, line 852
  def window_names
    tk_split_simplelist(_fromUTF8(tk_send_without_enc('window', 'names'))).collect{|elt|
      tagid2obj(elt)
    }
  end

[Source]

# File tk/lib/tk/text.rb, line 381
  def xview_pickplace(index)
    tk_send_without_enc('xview', '-pickplace', _get_eval_enc_str(index))
    self
  end

[Source]

# File tk/lib/tk/text.rb, line 386
  def yview_pickplace(index)
    tk_send_without_enc('yview', '-pickplace', _get_eval_enc_str(index))
    self
  end

[Validate]