Class: Tk::Iwidgets::Scrolledtext

Class | Tk::Iwidgets::Scrolledtext
In: | tk/lib/tkextlib/iwidgets/scrolledtext.rb
Parent: | Tk::Iwidgets::Scrolledwidget

### Methods

bbox child_site clear compare current_image_configinfo debug debug= delete dlineinfo export get get_displaychars image_cget image_configinfo image_configure image_names import index insert mark_gravity mark_names mark_next mark_previous mark_set mark_unset method_missing new next_mark previous_mark rsearch rsearch_with_length scan_dragto scan_mark search search_with_length see set_mark tksearch tksearch_with_count unset_mark xview xview_moveto xview_scroll yview yview_moveto yview_scroll

### Included Modules

TkTextTagConfig

### Constants

TkCommandNames | = | ['::iwidgets::scrolledtext'.freeze].freeze
WidgetClassName | = | 'Scrolledtext'.freeze

### Public Class methods

new(*args)

[Source]

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

### Public Instance methods

bbox(index)

[Source]

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

child_site()

[Source]

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

clear()

[Source]

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

compare(idx1, op, idx2)

[Source]

    # File tk/lib/tkextlib/iwidgets/scrolledtext.rb, line 88
      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)

[Source]

    # File tk/lib/tkextlib/iwidgets/scrolledtext.rb, line 234
      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()

[Source]

    # File tk/lib/tkextlib/iwidgets/scrolledtext.rb, line 93
      def debug
        bool(tk_send_without_enc('debug'))
      end

debug=(boolean)

[Source]

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

delete(first, last=None)

[Source]

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

dlineinfo(index)

[Source]

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

export(file)

[Source]

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

get(*index)

[Source]

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

get_displaychars(*index)

[Source]

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

image_cget(index, slot)

[Source]

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

image_configinfo(index, slot = nil)

[Source]

    # File tk/lib/tkextlib/iwidgets/scrolledtext.rb, line 145
      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)

[Source]

    # File tk/lib/tkextlib/iwidgets/scrolledtext.rb, line 131
      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()

[Source]

    # File tk/lib/tkextlib/iwidgets/scrolledtext.rb, line 255
      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)

[Source]

    # File tk/lib/tkextlib/iwidgets/scrolledtext.rb, line 58
      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)

[Source]

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

insert(index, *args)

[Source]

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

mark_gravity(mark, direction=nil)

[Source]

    # File tk/lib/tkextlib/iwidgets/scrolledtext.rb, line 278
      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()

[Source]

    # File tk/lib/tkextlib/iwidgets/scrolledtext.rb, line 271
      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)

[Source]

    # File tk/lib/tkextlib/iwidgets/scrolledtext.rb, line 302
      def mark_next(index)
        tagid2obj(_fromUTF8(tk_send_without_enc('mark', 'next',
                                                _get_eval_enc_str(index))))
      end

mark_previous(index)

[Source]

    # File tk/lib/tkextlib/iwidgets/scrolledtext.rb, line 308
      def mark_previous(index)
        tagid2obj(_fromUTF8(tk_send_without_enc('mark', 'previous',
                                                _get_eval_enc_str(index))))
      end

mark_set(mark, index)

[Source]

    # File tk/lib/tkextlib/iwidgets/scrolledtext.rb, line 288
      def mark_set(mark, index)
        tk_send_without_enc('mark', 'set', _get_eval_enc_str(mark),
                            _get_eval_enc_str(index))
        self
      end

mark_unset(*marks)

[Source]

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

method_missing(id, *args)

[Source]

    # File tk/lib/tkextlib/iwidgets/scrolledtext.rb, line 39
      def method_missing(id, *args)
        if @text.methods.include?(id.id2name)
          @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)

[Source]

    # File tk/lib/tkextlib/iwidgets/scrolledtext.rb, line 498
      def rsearch(pat,start,stop=None)
        rsearch_with_length(pat,start,stop)[0]
      end

rsearch_with_length(pat,start,stop=None)

[Source]

    # File tk/lib/tkextlib/iwidgets/scrolledtext.rb, line 446
      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)

[Source]

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

scan_mark(x, y)

[Source]

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

search(pat,start,stop=None)

[Source]

    # File tk/lib/tkextlib/iwidgets/scrolledtext.rb, line 442
      def search(pat,start,stop=None)
        search_with_length(pat,start,stop)[0]
      end

search_with_length(pat,start,stop=None)

[Source]

    # File tk/lib/tkextlib/iwidgets/scrolledtext.rb, line 385
      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)

[Source]

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

set_mark(mark, index)

Alias for mark_set

tksearch(*args)

[Source]

    # File tk/lib/tkextlib/iwidgets/scrolledtext.rb, line 345
      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)

[Source]

    # File tk/lib/tkextlib/iwidgets/scrolledtext.rb, line 365
      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)

[Source]

    # File tk/lib/tkextlib/iwidgets/scrolledtext.rb, line 509
      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)

[Source]

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

xview_scroll(*index)

[Source]

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

yview(*index)

[Source]

    # File tk/lib/tkextlib/iwidgets/scrolledtext.rb, line 524
      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)

[Source]

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

yview_scroll(*index)

[Source]

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

[Validate]