comparison lib/ruby/kinput2_default.rb @ 16:598fcbe482b5

imported patch 19_kinput2-v3.1-ruby.patch
author Yoshiki Yazawa <yaz@honeyplanet.jp>
date Mon, 08 Mar 2010 20:38:17 +0900
parents
children
comparison
equal deleted inserted replaced
15:89750191b165 16:598fcbe482b5
1 require 'kinput2'
2
3 class KanjiConv < KanjiConvCore
4 attr_reader :input, :selection, :dialog
5
6 def initialize
7 super
8 @input = JTextEdit.new
9
10 @selection = Selection.new (self)
11 @dialog = Dialog.new (self)
12 @mode = ModeMaster.new (self)
13
14 @fundMode = FundMode.new(self)
15 @inputMode = InputMode.new(self)
16 @convMode = ConvMode.new(self)
17 @mode.set(:fund, @fundMode)
18 @mode.set(:input, @inputMode)
19 @mode.set(:conv, @convMode)
20 @mode.change(:fund)
21
22 debug_message("Initialize Done.")
23 end
24
25 def reset
26 super
27 @mode.change(:fund)
28 @input.reset
29 reset_cand_list
30 end
31
32 def convert (word)
33 cand_list = [word, word.upcase]
34 return cand_list
35 end
36
37 ## inputEvent (keynum, keysym = nil, state = nil)
38 ## ReturnValue 1:Pass 0:Trap
39 def inputEvent (keynum, keysym = nil, state = nil)
40 debug_message("KeyNum: #{keynum}, KeySym: #{keysym}, Status: #{state}")
41
42 if keynum == 0 then
43 return 1
44 end
45 key = [keynum]
46
47 if @mode.current then
48 trap = @mode.current.call (keynum, keysym, state)
49 return ((trap == true) ? 0 : 1)
50 end
51 return 1;
52 end
53
54 def selection_fix (index)
55 fix (index)
56 @mode.change(:fund)
57 end
58
59 def fix (fixed_arg)
60 ### Must NOT chage @mode here, because exceptional case can exist.
61 super (fixed_arg)
62 @input.reset
63 reset_cand_list
64 end
65
66 def insert (keysym, modifiers)
67 debug_message("insert '#{keysym.chr}'")
68 @input.insert(keysym.chr)
69 set_cand_list (convert(@input.text), 0)
70 end
71 end
72
73 class PrimeModeCore < ModeCore
74 def initialize (parent)
75 super
76 end
77
78 private
79 def insert (keysym, modifiers)
80 @parent.insert(keysym, modifiers)
81 @parent.mode.change(:input)
82 return true
83 end
84
85 def fix (keysym, modifiers)
86 fix_internal(keysym, modifiers)
87 @parent.mode.change(:fund)
88 return true
89 end
90
91 def fix_and_insert (keysym, modifiers)
92 fix_internal (keysym, modifiers)
93 insert (keysym, modifiers)
94 return true
95 end
96
97 def cursor_right (keysym, modifiers)
98 @parent.input.cursor_right
99 return true
100 end
101 def cursor_left (keysym, modifiers)
102 @parent.input.cursor_left
103 return true
104 end
105 def cursor_beginning (keysym, modifiers)
106 @parent.input.cursor_beginning
107 return true
108 end
109 def cursor_end (keysym, modifiers)
110 @parent.input.cursor_end
111 return true
112 end
113
114 def selection_right (keysym, modifiers)
115 @parent.selection.right
116 return true
117 end
118 def selection_left (keysym, modifiers)
119 @parent.selection.left
120 return true
121 end
122 def selection_beginning (keysym, modifiers)
123 @parent.selection.line_beginning
124 return true
125 end
126 def selection_end (keysym, modifiers)
127 @parent.selection.line_end
128 return true
129 end
130 def selection_up (keysym, modifiers)
131 @parent.selection.up
132 return true
133 end
134 def selection_down (keysym, modifiers)
135 @parent.selection.down
136 return true
137 end
138 end
139
140 class FundMode < PrimeModeCore
141 def initialize (parent)
142 super
143 @label = '[ $B$"(B ]'
144 @trap = false
145 end
146
147 def initialize_keys
148 (33..126).each {|char|
149 @keymap.add(char, :insert)
150 }
151 end
152
153 def on (prev_mode = nil)
154 @parent.selection.close
155 end
156 end
157
158 class InputMode < PrimeModeCore
159 def initialize (parent)
160 super
161 @label = "[$BF~NO(B]"
162 end
163
164 def initialize_keys
165 (33..126).each {|char|
166 @keymap.add(char, :insert)
167 }
168 (?A..?Z).each {|char|
169 @keymap.add(char, :fix_and_insert)
170 }
171 @keymap.add(:enter, :fix)
172 @keymap.add([?m, :ctrl], :fix)
173 @keymap.add(:space, :convert)
174 @keymap.add(:backspace, :backspace)
175 @keymap.add([?h, :ctrl], :backspace)
176 @keymap.add(:delete, :delete)
177 @keymap.add([?d, :ctrl], :delete)
178 @keymap.add(:left, :cursor_left)
179 @keymap.add([?b, :ctrl], :cursor_left)
180 @keymap.add(:right, :cursor_right)
181 @keymap.add([?f, :ctrl], :cursor_right)
182 @keymap.add([?a, :ctrl], :cursor_beginning)
183 @keymap.add([?e, :ctrl], :cursor_end)
184 @keymap.add([?g, :ctrl], :cancel)
185 @keymap.add(:esc, :cancel)
186 end
187
188 def on (prev_mode = nil)
189 @parent.selection.close
190 end
191
192 def entries
193 return @parent.input.segments
194 end
195
196 private
197 def fix_internal (keysym, modifiers)
198 @parent.fix(@parent.input.text)
199 end
200
201 def backspace (keysym, modifiers)
202 @parent.input.backspace
203 if @parent.input.text.length == 0 then
204 @parent.mode.change(:fund)
205 end
206 return true
207 end
208
209 def delete (keysym, modifiers)
210 @parent.input.delete
211 if @parent.input.text.length == 0 then
212 @parent.mode.change(:fund)
213 end
214 return true
215 end
216
217 def cancel (keysym, modifiers)
218 @parent.input.reset
219 @parent.mode.change(:fund)
220 return true
221 end
222
223 def convert (keysym, modifiers)
224 if @parent.set_cand_list (@parent.convert(@parent.input.text)) then
225 @parent.set_cand_index(0)
226 @parent.mode.change(:conv)
227 end
228 return true
229 end
230 end
231
232 class ConvMode < PrimeModeCore
233 def initialize (parent)
234 super
235 @label = "[$BJQ49(B]"
236 end
237
238 def initialize_keys
239 (33..126).each {|char|
240 @keymap.add(char, :fix_and_insert)
241 }
242 @keymap.add(:enter, :fix)
243 @keymap.add([?m, :ctrl], :fix)
244 @keymap.add(:space, :convert)
245 # @keymap.add(:backspace, :backspace)
246 # @keymap.add([?h, :ctrl], :backspace)
247 # @keymap.add(:delete, :delete)
248 # @keymap.add([?d, :ctrl], :delete)
249 @keymap.add(:left, :selection_left)
250 @keymap.add([?b, :ctrl], :selection_left)
251 @keymap.add(:right, :selection_right)
252 @keymap.add([?f, :ctrl], :selection_right)
253 @keymap.add(:down, :selection_down)
254 @keymap.add([?n, :ctrl], :selection_down)
255 @keymap.add(:up, :selection_up)
256 @keymap.add([?p, :ctrl], :selection_up)
257 @keymap.add([?a, :ctrl], :selection_beginning)
258 @keymap.add([?e, :ctrl], :selection_end)
259 @keymap.add([?g, :ctrl], :cancel)
260 @keymap.add(:esc, :cancel)
261 end
262
263 def on (prev_mode = nil)
264 @parent.selection.open
265 end
266
267 def entries
268 return ['', @parent.cand_list[@parent.cand_index]]
269 end
270
271 private
272 def fix_internal (keysym, modifiers)
273 @parent.fix(@parent.cand_list[@parent.cand_index])
274 end
275
276 def cancel (keysym, modifiers)
277 @parent.mode.change(:input)
278 return true
279 end
280
281 def convert (keysym, modifiers)
282 return selection_right(keysym, modifiers)
283 end
284 end
285
286 $kanjiConv = KanjiConv.new
287 #p local_variables