# class Tk::Iwidgets::Scrolledtext

### Constants

TkCommandNames
WidgetClassName

### Public Class Methods

new(*args) click to toggle source
Calls superclass method TkWindow.new

    # File lib/tkextlib/iwidgets/scrolledtext.rb, line 35
    def initialize(*args)
      super(*args)
      @text = component_widget('text')
    end

### Public Instance Methods

bbox(index) click to toggle source

    # File lib/tkextlib/iwidgets/scrolledtext.rb, line 86
    def bbox(index)
      list(tk_send('bbox', index))
    end

child_site() click to toggle source

    # File lib/tkextlib/iwidgets/scrolledtext.rb, line 50
    def child_site
      window(tk_call(@path, 'childsite'))
    end

clear() click to toggle source

    # File lib/tkextlib/iwidgets/scrolledtext.rb, line 54
    def clear
      tk_call(@path, 'clear')
      self
    end

compare(idx1, op, idx2) click to toggle source

    # File lib/tkextlib/iwidgets/scrolledtext.rb, line 89
    def compare(idx1, op, idx2)
      bool(tk_send_without_enc('compare', _get_eval_enc_str(idx1),
                               op, _get_eval_enc_str(idx2)))
    end

current_image_configinfo(index, slot = nil) click to toggle source

    # File lib/tkextlib/iwidgets/scrolledtext.rb, line 260
    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 lib/tkextlib/iwidgets/scrolledtext.rb, line 94
    def debug
      bool(tk_send_without_enc('debug'))
    end

debug=(boolean) click to toggle source

    # File lib/tkextlib/iwidgets/scrolledtext.rb, line 97
    def debug=(boolean)
      tk_send_without_enc('debug', boolean)
      #self
      boolean
    end

delete(first, last=None) click to toggle source

    # File lib/tkextlib/iwidgets/scrolledtext.rb, line 103
    def delete(first, last=None)
      tk_send_without_enc('delete', first, last)
      self
    end

dlineinfo(index) click to toggle source

    # File lib/tkextlib/iwidgets/scrolledtext.rb, line 108
    def dlineinfo(index)
      list(tk_send_without_enc('dlineinfo', _get_eval_enc_str(index)))
    end

export(file) click to toggle source

    # File lib/tkextlib/iwidgets/scrolledtext.rb, line 68
    def export(file)
      tk_call(@path, 'export', file)
      self
    end

get(*index) click to toggle source

    # File lib/tkextlib/iwidgets/scrolledtext.rb, line 112
    def get(*index)
      _fromUTF8(tk_send_without_enc('get', *index))
    end

get_displaychars(*index) click to toggle source

    # File lib/tkextlib/iwidgets/scrolledtext.rb, line 115
    def get_displaychars(*index)
      # Tk8.5 feature
      get('-displaychars', *index)
    end

image_cget(index, slot) click to toggle source

    # File lib/tkextlib/iwidgets/scrolledtext.rb, line 135
    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.has_key?(slot.to_s)
              # error on known option
              fail e
            else
              # unknown option
              nil
            end
          rescue
            fail e  # tag error
          end
        end
      end
    end

image_cget_strict(index, slot) click to toggle source

    # File lib/tkextlib/iwidgets/scrolledtext.rb, line 124
    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_cget_tkstring(index, slot) click to toggle source

    # File lib/tkextlib/iwidgets/scrolledtext.rb, line 120
    def image_cget_tkstring(index, slot)
      _fromUTF8(tk_send_without_enc('image', 'cget',
                                    _get_eval_enc_str(index), "-#{slot.to_s}"))
    end

image_configinfo(index, slot = nil) click to toggle source

    # File lib/tkextlib/iwidgets/scrolledtext.rb, line 171
    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 lib/tkextlib/iwidgets/scrolledtext.rb, line 157
    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 lib/tkextlib/iwidgets/scrolledtext.rb, line 281
    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

import(file, idx=nil) click to toggle source

    # File lib/tkextlib/iwidgets/scrolledtext.rb, line 59
    def import(file, idx=nil)
      if idx
        tk_call(@path, 'import', file, index(idx))
      else
        tk_call(@path, 'import', file)
      end
      self
    end

index(idx) click to toggle source

    # File lib/tkextlib/iwidgets/scrolledtext.rb, line 288
    def index(idx)
      tk_send_without_enc('index', _get_eval_enc_str(idx))
    end

insert(index, *args) click to toggle source

    # File lib/tkextlib/iwidgets/scrolledtext.rb, line 292
    def insert(index, *args)
      tk_send('insert', index, *args)
      self
    end

mark_gravity(mark, direction=nil) click to toggle source

    # File lib/tkextlib/iwidgets/scrolledtext.rb, line 304
    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 lib/tkextlib/iwidgets/scrolledtext.rb, line 297
    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 lib/tkextlib/iwidgets/scrolledtext.rb, line 328
    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 lib/tkextlib/iwidgets/scrolledtext.rb, line 334
    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 lib/tkextlib/iwidgets/scrolledtext.rb, line 314
    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 lib/tkextlib/iwidgets/scrolledtext.rb, line 321
    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
method_missing(id, *args) click to toggle source
Calls superclass method Busy.method_missing

    # File lib/tkextlib/iwidgets/scrolledtext.rb, line 40
    def method_missing(id, *args)
      if @text.respond_to?(id)
        @text.__send__(id, *args)
      else
        super(id, *args)
      end
    end

next_mark(index)
Alias for: mark_next
previous_mark(index)
Alias for: mark_previous
rsearch(pat,start,stop=None) click to toggle source

    # File lib/tkextlib/iwidgets/scrolledtext.rb, line 529
    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 lib/tkextlib/iwidgets/scrolledtext.rb, line 477
    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

scan_dragto(x, y) click to toggle source

    # File lib/tkextlib/iwidgets/scrolledtext.rb, line 344
    def scan_dragto(x, y)
      tk_send_without_enc('scan', 'dragto', x, y)
      self
    end

scan_mark(x, y) click to toggle source

    # File lib/tkextlib/iwidgets/scrolledtext.rb, line 340
    def scan_mark(x, y)
      tk_send_without_enc('scan', 'mark', x, y)
      self
    end

search(pat,start,stop=None) click to toggle source

    # File lib/tkextlib/iwidgets/scrolledtext.rb, line 473
    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 lib/tkextlib/iwidgets/scrolledtext.rb, line 416
    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

see(index) click to toggle source

    # File lib/tkextlib/iwidgets/scrolledtext.rb, line 533
    def see(index)
      tk_send_without_enc('see', index)
      self
    end

set_mark(mark, index)
Alias for: mark_set
tksearch(*args) click to toggle source

    # File lib/tkextlib/iwidgets/scrolledtext.rb, line 376
    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
      if args[0].kind_of?(Array)
        opts = args.shift.collect{|opt| '-' + opt.to_s }
      else
        opts = []
      end

      opts << '--'

      ret = tk_send('search', *(opts + args))
      if ret == ""
        nil
      else
        ret
      end
    end

tksearch_with_count(*args) click to toggle source

    # File lib/tkextlib/iwidgets/scrolledtext.rb, line 396
    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
      if args[0].kind_of?(Array)
        opts = args.shift.collect{|opt| '-' + opt.to_s }
      else
        opts = []
      end

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

      ret = tk_send('search', *(opts + args))
      if ret == ""
        nil
      else
        ret
      end
    end

unset_mark(*marks)
Alias for: mark_unset
xview(*index) click to toggle source

    # File lib/tkextlib/iwidgets/scrolledtext.rb, line 540
    def xview(*index)
      if index.size == 0
        list(tk_send_without_enc('xview'))
      else
        tk_send_without_enc('xview', *index)
        self
      end
    end

xview_moveto(*index) click to toggle source

    # File lib/tkextlib/iwidgets/scrolledtext.rb, line 548
    def xview_moveto(*index)
      xview('moveto', *index)
    end

xview_scroll(*index) click to toggle source

    # File lib/tkextlib/iwidgets/scrolledtext.rb, line 551
    def xview_scroll(*index)
      xview('scroll', *index)
    end

yview(*index) click to toggle source

    # File lib/tkextlib/iwidgets/scrolledtext.rb, line 555
    def yview(*index)
      if index.size == 0
        list(tk_send_without_enc('yview'))
      else
        tk_send_without_enc('yview', *index)
        self
      end
    end

yview_moveto(*index) click to toggle source

    # File lib/tkextlib/iwidgets/scrolledtext.rb, line 563
    def yview_moveto(*index)
      yview('moveto', *index)
    end

yview_scroll(*index) click to toggle source

    # File lib/tkextlib/iwidgets/scrolledtext.rb, line 566
    def yview_scroll(*index)
      yview('scroll', *index)
    end

### Private Instance Methods

__font_optkeys() click to toggle source
Calls superclass method Tk::Iwidgets::Labeledwidget#__font_optkeys

    # File lib/tkextlib/iwidgets/scrolledtext.rb, line 28
    def __font_optkeys
      super() << 'textfont'
    end

__strval_optkeys() click to toggle source
Calls superclass method Tk::Iwidgets::Labeledwidget#__strval_optkeys

    # File lib/tkextlib/iwidgets/scrolledtext.rb, line 23
    def __strval_optkeys
      super() << 'textbackground'
    end

_ktext_length(txt) click to toggle source

    # File lib/tkextlib/iwidgets/scrolledtext.rb, line 350
    def _ktext_length(txt)
      if TkCore::WITH_ENCODING ### Ruby 1.9 !!!!!!!!!!!!!
        return txt.length
      end
      ###########################

      if $KCODE !~ /n/i
        return txt.gsub(/[^\Wa-zA-Z_\d]/, ' ').length
      end

      # $KCODE == 'NONE'
      if JAPANIZED_TK
        tk_call_without_enc('kstring', 'length',
                            _get_eval_enc_str(txt)).to_i
      else
        begin
          tk_call_without_enc('encoding', 'convertto', 'ascii',
                              _get_eval_enc_str(txt)).length
        rescue StandardError, NameError
          # sorry, I have no plan
          txt.length
        end
      end
    end

tagid(tag) click to toggle source
Calls superclass method

    # File lib/tkextlib/iwidgets/scrolledtext.rb, line 77
    def tagid(tag)
      if tag.kind_of?(Tk::Itk::Component)
        tag.name
      else
        super(tag)
      end
    end