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

In Files

  • tk/lib/tk/text.rb
  • tk/lib/tk/textimage.rb
  • tk/lib/tk/textmark.rb
  • tk/lib/tk/texttag.rb
  • tk/lib/tk/textwindow.rb

Class/Module Index [+]

Quicksearch

Tk::Text

Public Class Methods

at(x, y) click to toggle source
 
               # File tk/lib/tk/text.rb, line 306
def self.at(x, y)
  Tk::Text::IndexString.at(x, y)
end
            
new(*args, &block) click to toggle source
 
               # File tk/lib/tk/text.rb, line 262
def self.new(*args, &block)
  obj = super(*args){}
  obj.init_instance_variable
  if TkCore::WITH_RUBY_VM  ### Ruby 1.9 !!!!
    obj.instance_exec(obj, &block) if defined? yield
  else
    obj.instance_eval(&block) if defined? yield
  end
  obj
end
            

Public Instance Methods

__destroy_hook__() click to toggle source
 
               # File tk/lib/tk/text.rb, line 278
def __destroy_hook__
  TkTextTag::TTagID_TBL.mutex.synchronize{
    TkTextTag::TTagID_TBL.delete(@path)
  }
  TkTextTag::TMarkID_TBL.mutex.synchronize{
    TkTextMark::TMarkID_TBL.delete(@path)
  }
end
            
_addcmd(cmd) click to toggle source
 
               # File tk/lib/tk/text.rb, line 340
def _addcmd(cmd)
  @cmdtbl.push cmd
end
            
_addtag(name, obj) click to toggle source
 
               # File tk/lib/tk/text.rb, line 344
def _addtag(name, obj)
  @tags[name] = obj
end
            
add_tag(tag, index1, index2=None) click to toggle source
Alias for: tag_add
addtag(tag, index1, index2=None) click to toggle source
Alias for: tag_add
at(x, y) click to toggle source
 
               # File tk/lib/tk/text.rb, line 310
def at(x, y)
  Tk::Text::IndexString.at(x, y)
end
            
backspace() click to toggle source
 
               # File tk/lib/tk/text.rb, line 620
def backspace
  self.delete 'insert'
end
            
bbox(index) click to toggle source
 
               # File tk/lib/tk/text.rb, line 624
def bbox(index)
  list(tk_send_without_enc('bbox', _get_eval_enc_str(index)))
end
            
clear() click to toggle source
 
               # File tk/lib/tk/text.rb, line 334
def clear
  tk_send_without_enc('delete', "1.0", 'end')
  self
end
            
Also aliased as: erase
compare(idx1, op, idx2) click to toggle source
 
               # File tk/lib/tk/text.rb, line 628
def compare(idx1, op, idx2)
  bool(tk_send_without_enc('compare', _get_eval_enc_str(idx1),
                           op, _get_eval_enc_str(idx2)))
end
            
count(idx1, idx2, *opts) click to toggle source
 
               # File tk/lib/tk/text.rb, line 633
def count(idx1, idx2, *opts)
  # opts are Tk8.5 feature
  cnt = 0
  args = opts.collect{|opt|
    str = opt.to_s
    cnt += 1 if str != 'update'
    '-' + str
  }
  args << _get_eval_enc_str(idx1) << _get_eval_enc_str(idx2)
  if cnt <= 1
    number(tk_send_without_enc('count', *opts))
  else
    list(tk_send_without_enc('count', *opts))
  end
end
            
count_info(idx1, idx2, update=true) click to toggle source
 
               # File tk/lib/tk/text.rb, line 649
def count_info(idx1, idx2, update=true)
  # Tk8.5 feature
  opts = [
    :chars, :displaychars, :displayindices, :displaylines,
    :indices, :lines, :xpixels, :ypixels
  ]
  if update
    lst = count(idx1, idx2, :update, *opts)
  else
    lst = count(idx1, idx2, *opts)
  end
  info = {}
  opts.each_with_index{|key, idx| info[key] = lst[idx]}
  info
end
            
current_image_configinfo(index, slot = nil) click to toggle source
 
               # File tk/lib/tk/text.rb, line 555
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
            
debug() click to toggle source
 
               # File tk/lib/tk/text.rb, line 675
def debug
  bool(tk_send_without_enc('debug'))
end
            
debug=(boolean) click to toggle source
 
               # File tk/lib/tk/text.rb, line 678
def debug=(boolean)
  tk_send_without_enc('debug', boolean)
  #self
  boolean
end
            
delete_tag(*tags) click to toggle source
Alias for: tag_delete
deltag(*tags) click to toggle source
Alias for: tag_delete
destroy() click to toggle source
 
               # File tk/lib/tk/text.rb, line 612
def destroy
  @tags = {} unless @tags
  @tags.each_value do |t|
    t.destroy
  end
  super()
end
            
dlineinfo(index) click to toggle source
 
               # File tk/lib/tk/text.rb, line 684
def dlineinfo(index)
  list(tk_send_without_enc('dlineinfo', _get_eval_enc_str(index)))
end
            
dump(type_info, *index, &block) click to toggle source
 
               # File tk/lib/tk/text.rb, line 1439
def dump(type_info, *index, &block)
  if type_info.kind_of?(Symbol)
    type_info = [ type_info.to_s ]
  elsif type_info.kind_of?(String)
    type_info = [ type_info ]
  end
  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)
      when 'image'
        result.push tk_tcl2ruby(val)
      end
      i = idx + 1
    end

    # retrieve index
    idx = str.index(/ /, i)
    if idx
      result.push(Tk::Text::IndexString.new(str[i..(idx-1)]))
      i = idx + 1
    else
      result.push(Tk::Text::IndexString.new(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
            
dump_all(*index, &block) click to toggle source
 
               # File tk/lib/tk/text.rb, line 1558
def dump_all(*index, &block)
  dump(['all'], *index, &block)
end
            
dump_image(*index, &block) click to toggle source
 
               # File tk/lib/tk/text.rb, line 1573
def dump_image(*index, &block)
  dump(['image'], *index, &block)
end
            
dump_mark(*index, &block) click to toggle source
 
               # File tk/lib/tk/text.rb, line 1561
def dump_mark(*index, &block)
  dump(['mark'], *index, &block)
end
            
dump_tag(*index, &block) click to toggle source
 
               # File tk/lib/tk/text.rb, line 1564
def dump_tag(*index, &block)
  dump(['tag'], *index, &block)
end
            
dump_text(*index, &block) click to toggle source
 
               # File tk/lib/tk/text.rb, line 1567
def dump_text(*index, &block)
  dump(['text'], *index, &block)
end
            
dump_window(*index, &block) click to toggle source
 
               # File tk/lib/tk/text.rb, line 1570
def dump_window(*index, &block)
  dump(['window'], *index, &block)
end
            
edit_redo() click to toggle source
 
               # File tk/lib/tk/text.rb, line 700
def edit_redo
  tk_send_without_enc('edit', 'redo')
  self
end
            
edit_reset() click to toggle source
 
               # File tk/lib/tk/text.rb, line 704
def edit_reset
  tk_send_without_enc('edit', 'reset')
  self
end
            
edit_separator() click to toggle source
 
               # File tk/lib/tk/text.rb, line 708
def edit_separator
  tk_send_without_enc('edit', 'separator')
  self
end
            
edit_undo() click to toggle source
 
               # File tk/lib/tk/text.rb, line 712
def edit_undo
  tk_send_without_enc('edit', 'undo')
  self
end
            
erase() click to toggle source
Alias for: clear
get_displaychars(*index) click to toggle source
 
               # File tk/lib/tk/text.rb, line 319
def get_displaychars(*index)
  # Tk8.5 feature
  get('-displaychars', *index)
end
            
image_cget(index, slot) click to toggle source
 
               # File tk/lib/tk/text.rb, line 430
def image_cget(index, slot)
  unless TkItemConfigMethod.__IGNORE_UNKNOWN_CONFIGURE_OPTION__
    image_cget_strict(index, slot)
  else
    begin
      image_cget_strict(index, slot)
    rescue => e
      begin
        if current_image_configinfo(index).has_key?(slot.to_s)
          # not tag error & option is known -> error on known option
          fail e
        else
          # not tag error & option is unknown
          nil
        end
      rescue
        fail e  # tag error
      end
    end
  end
end
            
image_cget_strict(index, slot) click to toggle source
 
               # File tk/lib/tk/text.rb, line 418
def image_cget_strict(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
            
image_configinfo(index, slot = nil) click to toggle source
 
               # File tk/lib/tk/text.rb, line 466
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}")))
        conf = tk_split_simplelist(tk_send_without_enc('image', 'configure', _get_eval_enc_str(index), "-#{slot}"), false, true)
      else
        #conf = tk_split_list(_fromUTF8(tk_send_without_enc('image', 'configure', _get_eval_enc_str(index), "-#{slot}")))
        conf = tk_split_list(tk_send_without_enc('image', 'configure', _get_eval_enc_str(index), "-#{slot}"), 0, false, true)
      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)
      tk_split_simplelist(tk_send_without_enc('image', 'configure', _get_eval_enc_str(index)), false, false).collect{|conflist|
        conf = tk_split_simplelist(conflist, false, true)
        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}")))
        conf = tk_split_simplelist(tk_send_without_enc('image', 'configure', _get_eval_enc_str(index), "-#{slot}"), false, true)
      else
        #conf = tk_split_list(_fromUTF8(tk_send_without_enc('image', 'configure', _get_eval_enc_str(index), "-#{slot}")))
        conf = tk_split_list(tk_send_without_enc('image', 'configure', _get_eval_enc_str(index), "-#{slot}"), 0, false, true)
      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)
      tk_split_simplelist(tk_send_without_enc('image', 'configure', _get_eval_enc_str(index)), false, false).each{|conflist|
        conf = tk_split_simplelist(conflist, false, true)
        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
            
image_configure(index, slot, value=None) click to toggle source
 
               # File tk/lib/tk/text.rb, line 452
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
            
image_names() click to toggle source
 
               # File tk/lib/tk/text.rb, line 576
def image_names
  #tk_split_simplelist(_fromUTF8(tk_send_without_enc('image', 'names'))).collect{|elt|
  tk_split_simplelist(tk_send_without_enc('image', 'names'), false, true).collect{|elt|
    tagid2obj(elt)
  }
end
            
index(idx) click to toggle source
 
               # File tk/lib/tk/text.rb, line 314
def index(idx)
  Tk::Text::IndexString.new(tk_send_without_enc('index',
                                                _get_eval_enc_str(idx)))
end
            
init_instance_variable() click to toggle source
 
               # File tk/lib/tk/text.rb, line 273
def init_instance_variable
  @cmdtbl = []
  @tags = {}
end
            
insert(index, chars, *tags) click to toggle source
 
               # File tk/lib/tk/text.rb, line 593
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
            
mark_gravity(mark, direction=nil) click to toggle source
 
               # File tk/lib/tk/text.rb, line 382
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
            
mark_names() click to toggle source
 
               # File tk/lib/tk/text.rb, line 375
def mark_names
  #tk_split_simplelist(_fromUTF8(tk_send_without_enc('mark', 'names'))).collect{|elt|
  tk_split_simplelist(tk_send_without_enc('mark', 'names'), false, true).collect{|elt|
    tagid2obj(elt)
  }
end
            
mark_next(index) click to toggle source
 
               # File tk/lib/tk/text.rb, line 406
def mark_next(index)
  tagid2obj(_fromUTF8(tk_send_without_enc('mark', 'next',
                                          _get_eval_enc_str(index))))
end
            
Also aliased as: next_mark
mark_previous(index) click to toggle source
 
               # File tk/lib/tk/text.rb, line 412
def mark_previous(index)
  tagid2obj(_fromUTF8(tk_send_without_enc('mark', 'previous',
                                          _get_eval_enc_str(index))))
end
            
Also aliased as: previous_mark
mark_set(mark, index) click to toggle source
 
               # File tk/lib/tk/text.rb, line 392
def mark_set(mark, index)
  tk_send_without_enc('mark', 'set', _get_eval_enc_str(mark),
                      _get_eval_enc_str(index))
  self
end
            
Also aliased as: set_mark
mark_unset(*marks) click to toggle source
 
               # File tk/lib/tk/text.rb, line 399
def mark_unset(*marks)
  tk_send_without_enc('mark', 'unset',
                      *(marks.collect{|mark| _get_eval_enc_str(mark)}))
  self
end
            
Also aliased as: unset_mark
modified(mode) click to toggle source
 
               # File tk/lib/tk/text.rb, line 691
def modified(mode)
  tk_send_without_enc('edit', 'modified', mode)
  self
end
            
modified=(mode) click to toggle source
 
               # File tk/lib/tk/text.rb, line 695
def modified=(mode)
  modified(mode)
  mode
end
            
modified?() click to toggle source
 
               # File tk/lib/tk/text.rb, line 688
def modified?
  bool(tk_send_without_enc('edit', 'modified'))
end
            
next_mark(index) click to toggle source
Alias for: mark_next
peer_names() click to toggle source
 
               # File tk/lib/tk/text.rb, line 665
def peer_names()
  # Tk8.5 feature
  list(tk_send_without_enc('peer', 'names'))
end
            
previous_mark(index) click to toggle source
Alias for: mark_previous
replace(idx1, idx2, *opts) click to toggle source
 
               # File tk/lib/tk/text.rb, line 670
def replace(idx1, idx2, *opts)
  tk_send('replace', idx1, idx2, *opts)
  self
end
            
rsearch(pat,start,stop=None) click to toggle source
 
               # File tk/lib/tk/text.rb, line 1435
def rsearch(pat,start,stop=None)
  rsearch_with_length(pat,start,stop)[0]
end
            
rsearch_with_length(pat,start,stop=None) click to toggle source
 
               # File tk/lib/tk/text.rb, line 1383
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
            
search(pat,start,stop=None) click to toggle source
 
               # File tk/lib/tk/text.rb, line 1379
def search(pat,start,stop=None)
  search_with_length(pat,start,stop)[0]
end
            
search_with_length(pat,start,stop=None) click to toggle source
 
               # File tk/lib/tk/text.rb, line 1322
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
            
set_current(index) click to toggle source
 
               # File tk/lib/tk/text.rb, line 588
def set_current(index)
  tk_send_without_enc('mark','set','current', _get_eval_enc_str(index))
  self
end
            
set_insert(index) click to toggle source
 
               # File tk/lib/tk/text.rb, line 583
def set_insert(index)
  tk_send_without_enc('mark','set','insert', _get_eval_enc_str(index))
  self
end
            
set_mark(mark, index) click to toggle source
Alias for: mark_set
tag_add(tag, index1, index2=None) click to toggle source
 
               # File tk/lib/tk/text.rb, line 745
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
            
Also aliased as: addtag, add_tag
tag_bind(tag, seq, *args) click to toggle source

def #tag_bind(tag, seq, cmd=Proc.new, *args)

_bind([@path, 'tag', 'bind', tag], seq, cmd, *args)
self

end

 
               # File tk/lib/tk/text.rb, line 777
def tag_bind(tag, seq, *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, 'tag', 'bind', tag], seq, cmd, *args)
  self
end
            
tag_bind_append(tag, seq, *args) click to toggle source

def #tag_bind_append(tag, seq, cmd=Proc.new, *args)

_bind_append([@path, 'tag', 'bind', tag], seq, cmd, *args)
self

end

 
               # File tk/lib/tk/text.rb, line 792
def tag_bind_append(tag, seq, *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, 'tag', 'bind', tag], seq, cmd, *args)
  self
end
            
tag_bind_remove(tag, seq) click to toggle source
 
               # File tk/lib/tk/text.rb, line 803
def tag_bind_remove(tag, seq)
  _bind_remove([@path, 'tag', 'bind', tag], seq)
  self
end
            
tag_bindinfo(tag, context=nil) click to toggle source
 
               # File tk/lib/tk/text.rb, line 808
def tag_bindinfo(tag, context=nil)
  _bindinfo([@path, 'tag', 'bind', tag], context)
end
            
tag_delete(*tags) click to toggle source
 
               # File tk/lib/tk/text.rb, line 754
def tag_delete(*tags)
  tk_send_without_enc('tag', 'delete',
                      *(tags.collect{|tag| _get_eval_enc_str(tag)}))
  TkTextTag::TTagID_TBL.mutex.synchronize{
    if TkTextTag::TTagID_TBL[@path]
      tags.each{|tag|
        if tag.kind_of?(TkTextTag)
          TkTextTag::TTagID_TBL[@path].delete(tag.id)
        else
          TkTextTag::TTagID_TBL[@path].delete(tag)
        end
      }
    end
  }
  self
end
            
Also aliased as: deltag, delete_tag
tag_lower(tag, below=None) click to toggle source
 
               # File tk/lib/tk/text.rb, line 994
def tag_lower(tag, below=None)
  tk_send_without_enc('tag', 'lower', _get_eval_enc_str(tag),
                      _get_eval_enc_str(below))
  self
end
            
tag_names(index=None) click to toggle source
 
               # File tk/lib/tk/text.rb, line 368
def tag_names(index=None)
  #tk_split_simplelist(_fromUTF8(tk_send_without_enc('tag', 'names', _get_eval_enc_str(index)))).collect{|elt|
  tk_split_simplelist(tk_send_without_enc('tag', 'names', _get_eval_enc_str(index)), false, true).collect{|elt|
    tagid2obj(elt)
  }
end
            
tag_nextrange(tag, first, last=None) click to toggle source
 
               # File tk/lib/tk/text.rb, line 1019
def tag_nextrange(tag, first, last=None)
  simplelist(tk_send_without_enc('tag', 'nextrange',
                                 _get_eval_enc_str(tag),
                                 _get_eval_enc_str(first),
                                 _get_eval_enc_str(last))).collect{|idx|
    Tk::Text::IndexString.new(idx)
  }
end
            
tag_prevrange(tag, first, last=None) click to toggle source
 
               # File tk/lib/tk/text.rb, line 1028
def tag_prevrange(tag, first, last=None)
  simplelist(tk_send_without_enc('tag', 'prevrange',
                                 _get_eval_enc_str(tag),
                                 _get_eval_enc_str(first),
                                 _get_eval_enc_str(last))).collect{|idx|
    Tk::Text::IndexString.new(idx)
  }
end
            
tag_raise(tag, above=None) click to toggle source

begin

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

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

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

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

end

 
               # File tk/lib/tk/text.rb, line 988
def tag_raise(tag, above=None)
  tk_send_without_enc('tag', 'raise', _get_eval_enc_str(tag),
                      _get_eval_enc_str(above))
  self
end
            
tag_ranges(tag) click to toggle source
 
               # File tk/lib/tk/text.rb, line 1006
def tag_ranges(tag)
  #l = tk_split_simplelist(tk_send_without_enc('tag', 'ranges',
  #                                            _get_eval_enc_str(tag)))
  l = tk_split_simplelist(tk_send_without_enc('tag', 'ranges',
                                              _get_eval_enc_str(tag)),
                          false, true)
  r = []
  while key=l.shift
    r.push [Tk::Text::IndexString.new(key), Tk::Text::IndexString.new(l.shift)]
  end
  r
end
            
tag_remove(tag, *indices) click to toggle source
 
               # File tk/lib/tk/text.rb, line 1000
def tag_remove(tag, *indices)
  tk_send_without_enc('tag', 'remove', _get_eval_enc_str(tag),
                      *(indices.collect{|idx| _get_eval_enc_str(idx)}))
  self
end
            
tagid2obj(tagid) click to toggle source
 
               # File tk/lib/tk/text.rb, line 360
def tagid2obj(tagid)
  if @tags[tagid]
    @tags[tagid]
  else
    tagid
  end
end
            
text_copy() click to toggle source
 
               # File tk/lib/tk/text.rb, line 727
def text_copy
  # Tk8.4 feature
  tk_call_without_enc('tk_textCopy', @path)
  self
end
            
text_cut() click to toggle source
 
               # File tk/lib/tk/text.rb, line 733
def text_cut
  # Tk8.4 feature
  tk_call_without_enc('tk_textCut', @path)
  self
end
            
text_paste() click to toggle source
 
               # File tk/lib/tk/text.rb, line 739
def text_paste
  # Tk8.4 feature
  tk_call_without_enc('tk_textPaste', @path)
  self
end
            
tksearch(*args) click to toggle source
 
               # File tk/lib/tk/text.rb, line 1254
def tksearch(*args)
  # call 'search' subcommand of text widget
  #   args ::= [<array_of_opts>] <pattern> <start_index> [<stop_index>]
  # If <pattern> is regexp, then it must be a regular expression of Tcl
  nocase = false
  if args[0].kind_of?(Array)
    opts = args.shift.collect{|opt|
      s_opt = opt.to_s
      nocase = true if s_opt == 'nocase'
      '-' + s_opt
    }
  else
    opts = []
  end

  if args[0].kind_of?(Regexp)
    regexp = args.shift
    if !nocase && (regexp.options & Regexp::IGNORECASE) != 0
      opts << '-nocase'
    end
    args.unshift(regexp.source)
  end

  opts << '--'

  ret = tk_send('search', *(opts + args))
  if ret == ""
    nil
  else
    Tk::Text::IndexString.new(ret)
  end
end
            
tksearch_with_count(*args) click to toggle source
 
               # File tk/lib/tk/text.rb, line 1287
def tksearch_with_count(*args)
  # call 'search' subcommand of text widget
  #   args ::= [<array_of_opts>] <var> <pattern> <start_index> [<stop_index>]
  # If <pattern> is regexp, then it must be a regular expression of Tcl
  nocase = false
  if args[0].kind_of?(Array)
    opts = args.shift.collect{|opt|
      s_opt = opt.to_s
      nocase = true if s_opt == 'nocase'
      '-' + s_opt
    }
  else
    opts = []
  end

  opts << '-count' << args.shift

  if args[0].kind_of?(Regexp)
    regexp = args.shift
    if !nocase && (regexp.options & Regexp::IGNORECASE) != 0
      opts << '-nocase'
    end
    args.unshift(regexp.source)
  end

  opts << '--'

  ret = tk_send('search', *(opts + args))
  if ret == ""
    nil
  else
    Tk::Text::IndexString.new(ret)
  end
end
            
unset_mark(*marks) click to toggle source
Alias for: mark_unset
value() click to toggle source
 
               # File tk/lib/tk/text.rb, line 324
def value
  _fromUTF8(tk_send_without_enc('get', "1.0", "end - 1 char"))
end
            
value=(val) click to toggle source
 
               # File tk/lib/tk/text.rb, line 328
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
            
window_names() click to toggle source

begin

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

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)

#=begin

slot['create'] = install_cmd(proc{
                               id = p_create.call
                               if id.kind_of?(TkWindow)
                                 id.epath
                               else
                                 id
                               end
                             })

#=end

      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)

#=begin

value = install_cmd(proc{
                      id = p_create.call
                      if id.kind_of?(TkWindow)
                        id.epath
                      else
                        id
                      end
                    })

#=end

          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

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

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

end

 
               # File tk/lib/tk/text.rb, line 1221
def window_names
  # tk_split_simplelist(_fromUTF8(tk_send_without_enc('window', 'names'))).collect{|elt|
  tk_split_simplelist(tk_send_without_enc('window', 'names'), false, true).collect{|elt|
    tagid2obj(elt)
  }
end
            
xview_pickplace(index) click to toggle source
 
               # File tk/lib/tk/text.rb, line 717
def xview_pickplace(index)
  tk_send_without_enc('xview', '-pickplace', _get_eval_enc_str(index))
  self
end
            
yview_pickplace(index) click to toggle source
 
               # File tk/lib/tk/text.rb, line 722
def yview_pickplace(index)
  tk_send_without_enc('yview', '-pickplace', _get_eval_enc_str(index))
  self
end