summaryrefslogtreecommitdiff
path: root/jni/ruby/ext/tk/lib/tkextlib/blt/htext.rb
blob: 878bd9982d54ad75d21f5077d2e012a135e570fa (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
#
#  tkextlib/blt/htext.rb
#                               by Hidetoshi NAGAI (nagai@ai.kyutech.ac.jp)
#

require 'tk'
require 'tk/itemconfig.rb'
require 'tkextlib/blt.rb'

module Tk::BLT
  class Htext<TkWindow
    Htext_Var = TkVarAccess.new_hash('htext')
    Htext_Widget = TkVarAccess.new('htext(widget)', :window)
    Htext_File = TkVarAccess.new('htext(file)')
    Htext_Line = TkVarAccess.new('htext(line)')

    include TkItemConfigMethod
    include Scrollable

    TkCommandNames = ['::blt::htext'.freeze].freeze
    WidgetClassName = 'Htext'.freeze
    WidgetClassNames[WidgetClassName] ||= self

    alias window_cget_tkstring itemcget_tkstring
    alias window_cget itemcget
    alias window_cget_strict itemcget_strict
    alias window_configure itemconfigure
    alias window_configuinfo itemconfiginfo
    alias current_window_configuinfo current_itemconfiginfo

    def __strval_optkeys
      super() << 'filename'
    end
  private :__strval_optkeys

    def append(win, keys={})
      tk_send('append', _epath(win), keys)
      self
    end

    def goto_line(idx)
      tk_send_without_enc('gotoline', idx)
      self
    end
    def current_line
      number(tk_send_without_enc('gotoline'))
    end

    def index(str)
      number(tk_send('index', str))
    end

    def line_pos(str)
      tk_send('linepos', str)
    end

    def range(from=None, to=None)
      tk_send_without_enc('range', from, to)
    end

    def scan_mark(pos)
      tk_send_without_enc('scan', 'mark', pos)
      self
    end

    def scan_dragto(pos)
      tk_send_without_enc('scan', 'dragto', pos)
      self
    end

    def search(pat, from=None, to=None)
      num = number(tk_send('search', pat, from, to))
      (num < 0)? nil: num
    end

    def selection_adjust(index)
      tk_send_without_enc('selection', 'adjust', index)
      self
    end
    def selection_clear()
      tk_send_without_enc('selection', 'clear')
      self
    end
    def selection_from(index)
      tk_send_without_enc('selection', 'from', index)
      self
    end
    def selection_line(index)
      tk_send_without_enc('selection', 'line', index)
      self
    end
    def selection_present()
      bool(tk_send_without_enc('selection', 'present'))
    end
    def selection_range(first, last)
      tk_send_without_enc('selection', 'range', first, last)
      self
    end
    def selection_to(index)
      tk_send_without_enc('selection', 'to', index)
      self
    end
    def selection_word(index)
      tk_send_without_enc('selection', 'word', index)
      self
    end

    def windows(pat=None)
      list(tk_send('windows', pat))
    end
  end
end