1
/* Generated by GOB (v2.0.16) (do not edit directly) */
3
/* End world hunger, donate to the World Food Programme, http://www.wfp.org */
6
#line 3 "/home/dchen/ibus-chewing/src/IBusChewingEngine.gob"
9
* Copyright © 2009 Red Hat, Inc. All rights reserved.
10
* Copyright © 2009 Ding-Yi Chen <dchen at redhat.com>
12
* This file is part of the ibus-chewing Project.
14
* This program is free software; you can redistribute it and/or
15
* modify it under the terms of the GNU General Public License
16
* as published by the Free Software Foundation; either version 2
17
* of the License, or (at your option) any later version.
19
* This program is distributed in the hope that it will be useful,
20
* but WITHOUT ANY WARRANTY; without even the implied warranty of
21
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
22
* GNU General Public License for more details.
24
* You should have received a copy of the GNU General Public License
25
* along with this program; if not, write to the Free Software
26
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
34
#define GETTEXT_PACKAGE "gtk20"
35
#include <glib/gi18n.h>
37
#include <X11/extensions/XTest.h>
41
#line 42 "ibus-chewing-engine.c"
42
#define GOB_VERSION_MAJOR 2
43
#define GOB_VERSION_MINOR 0
44
#define GOB_VERSION_PATCHLEVEL 16
46
#define selfp (self->_priv)
48
#include <string.h> /* memset() */
50
#include "ibus-chewing-engine.h"
52
#include "ibus-chewing-engine-private.h"
55
#define ___GOB_LIKELY(expr) G_LIKELY(expr)
56
#define ___GOB_UNLIKELY(expr) G_UNLIKELY(expr)
57
#else /* ! G_LIKELY */
58
#define ___GOB_LIKELY(expr) (expr)
59
#define ___GOB_UNLIKELY(expr) (expr)
61
static const GEnumValue _chewing_kbtype_values[] = {
62
{ CHEWING_KBTYPE_INVALID, (char *)"CHEWING_KBTYPE_INVALID", (char *)"invalid" },
63
{ CHEWING_KBTYPE_DEFAULT, (char *)"CHEWING_KBTYPE_DEFAULT", (char *)"default" },
64
{ CHEWING_KBTYPE_HSU, (char *)"CHEWING_KBTYPE_HSU", (char *)"hsu" },
65
{ CHEWING_KBTYPE_IBM, (char *)"CHEWING_KBTYPE_IBM", (char *)"ibm" },
66
{ CHEWING_KBTYPE_GIN_YIEH, (char *)"CHEWING_KBTYPE_GIN_YIEH", (char *)"gin-yieh" },
67
{ CHEWING_KBTYPE_ETEN, (char *)"CHEWING_KBTYPE_ETEN", (char *)"eten" },
68
{ CHEWING_KBTYPE_ETEN26, (char *)"CHEWING_KBTYPE_ETEN26", (char *)"eten26" },
69
{ CHEWING_KBTYPE_DVORAK, (char *)"CHEWING_KBTYPE_DVORAK", (char *)"dvorak" },
70
{ CHEWING_KBTYPE_DVORAK_HSU, (char *)"CHEWING_KBTYPE_DVORAK_HSU", (char *)"dvorak-hsu" },
71
{ CHEWING_KBTYPE_DACHEN_CP26, (char *)"CHEWING_KBTYPE_DACHEN_CP26", (char *)"dachen-cp26" },
72
{ CHEWING_KBTYPE_HAN_YU, (char *)"CHEWING_KBTYPE_HAN_YU", (char *)"han-yu" },
77
chewing_kbtype_get_type (void)
79
static GType type = 0;
80
if ___GOB_UNLIKELY(type == 0)
81
type = g_enum_register_static ("ChewingKbType", _chewing_kbtype_values);
85
static const GEnumValue _chewing_modifier_sync_values[] = {
86
{ CHEWING_MODIFIER_SYNC_DISABLE, (char *)"CHEWING_MODIFIER_SYNC_DISABLE", (char *)"disable" },
87
{ CHEWING_MODIFIER_SYNC_FROM_KEYBOARD, (char *)"CHEWING_MODIFIER_SYNC_FROM_KEYBOARD", (char *)"from-keyboard" },
88
{ CHEWING_MODIFIER_SYNC_FROM_IM, (char *)"CHEWING_MODIFIER_SYNC_FROM_IM", (char *)"from-im" },
93
chewing_modifier_sync_get_type (void)
95
static GType type = 0;
96
if ___GOB_UNLIKELY(type == 0)
97
type = g_enum_register_static ("ChewingModifierSync", _chewing_modifier_sync_values);
101
static const GEnumValue _chewing_input_style_values[] = {
102
{ CHEWING_INPUT_STYLE_IN_APPLICATION, (char *)"CHEWING_INPUT_STYLE_IN_APPLICATION", (char *)"in-application" },
103
{ CHEWING_INPUT_STYLE_IN_CANDIDATE, (char *)"CHEWING_INPUT_STYLE_IN_CANDIDATE", (char *)"in-candidate" },
108
chewing_input_style_get_type (void)
110
static GType type = 0;
111
if ___GOB_UNLIKELY(type == 0)
112
type = g_enum_register_static ("ChewingInputStyle", _chewing_input_style_values);
116
static const GEnumValue _chewing_input_mode_values[] = {
117
{ CHEWING_INPUT_MODE_BYPASS, (char *)"CHEWING_INPUT_MODE_BYPASS", (char *)"bypass" },
118
{ CHEWING_INPUT_MODE_EDITING, (char *)"CHEWING_INPUT_MODE_EDITING", (char *)"editing" },
119
{ CHEWING_INPUT_MODE_SELECTING, (char *)"CHEWING_INPUT_MODE_SELECTING", (char *)"selecting" },
120
{ CHEWING_INPUT_MODE_SELECTING_DONE, (char *)"CHEWING_INPUT_MODE_SELECTING_DONE", (char *)"selecting-done" },
125
chewing_input_mode_get_type (void)
127
static GType type = 0;
128
if ___GOB_UNLIKELY(type == 0)
129
type = g_enum_register_static ("ChewingInputMode", _chewing_input_mode_values);
133
static const GEnumValue _chewing_output_charset_values[] = {
134
{ CHEWING_OUTPUT_CHARSET_AUTO, (char *)"CHEWING_OUTPUT_CHARSET_AUTO", (char *)"auto" },
135
{ CHEWING_OUTPUT_CHARSET_BIG5, (char *)"CHEWING_OUTPUT_CHARSET_BIG5", (char *)"big5" },
136
{ CHEWING_OUTPUT_CHARSET_UTF8, (char *)"CHEWING_OUTPUT_CHARSET_UTF8", (char *)"utf8" },
141
chewing_output_charset_get_type (void)
143
static GType type = 0;
144
if ___GOB_UNLIKELY(type == 0)
145
type = g_enum_register_static ("ChewingOutputCharset", _chewing_output_charset_values);
149
static const GEnumValue _chewing_flag_values[] = {
150
{ CHEWING_FLAG_PLAIN_ZHUYIN, (char *)"CHEWING_FLAG_PLAIN_ZHUYIN", (char *)"plain-zhuyin" },
151
{ CHEWING_FLAG_FORCE_LOWERCASE_ENGLISH, (char *)"CHEWING_FLAG_FORCE_LOWERCASE_ENGLISH", (char *)"force-lowercase-english" },
152
{ CHEWING_FLAG_NUMPAD_ALWAYS_NUMBER, (char *)"CHEWING_FLAG_NUMPAD_ALWAYS_NUMBER", (char *)"numpad-always-number" },
153
{ CHEWING_FLAG_EASY_SYMBOL_INPUT, (char *)"CHEWING_FLAG_EASY_SYMBOL_INPUT", (char *)"easy-symbol-input" },
158
chewing_flag_get_type (void)
160
static GType type = 0;
161
if ___GOB_UNLIKELY(type == 0)
162
type = g_enum_register_static ("ChewingFlag", _chewing_flag_values);
166
static const GEnumValue _engine_status_values[] = {
167
{ ENGINE_STATUS_INITIALIZED, (char *)"ENGINE_STATUS_INITIALIZED", (char *)"initialized" },
168
{ ENGINE_STATUS_ENABLED, (char *)"ENGINE_STATUS_ENABLED", (char *)"enabled" },
169
{ ENGINE_STATUS_FOCUS_IN, (char *)"ENGINE_STATUS_FOCUS_IN", (char *)"focus-in" },
170
{ ENGINE_STATUS_SHOW_CANDIDATE, (char *)"ENGINE_STATUS_SHOW_CANDIDATE", (char *)"show-candidate" },
171
{ ENGINE_STATUS_NEED_COMMIT, (char *)"ENGINE_STATUS_NEED_COMMIT", (char *)"need-commit" },
172
{ ENGINE_STATUS_FORCE_COMMIT, (char *)"ENGINE_STATUS_FORCE_COMMIT", (char *)"force-commit" },
177
engine_status_get_type (void)
179
static GType type = 0;
180
if ___GOB_UNLIKELY(type == 0)
181
type = g_enum_register_static ("EngineStatus", _engine_status_values);
186
#line 147 "/home/dchen/ibus-chewing/src/IBusChewingEngine.gob"
188
extern gboolean ibus_chewing_verbose;
189
//extern IBusConfig *iConfig;
191
#define IBUS_CHEWING_MAIN
192
#include "IBusChewingEngine-def.c"
195
IBusKeymap *ibus_keymap_get(gchar *keymap_name){
198
#endif /* IBUS_1_1 */
200
return ibus_keymap_new(keymap_name);
201
#endif /* IBUS_1_2 */
203
#endif /* IBUS_1_3 */
205
#line 206 "ibus-chewing-engine.c"
206
/* self casting macros */
207
#define SELF(x) IBUS_CHEWING_ENGINE(x)
208
#define SELF_CONST(x) IBUS_CHEWING_ENGINE_CONST(x)
209
#define IS_SELF(x) IBUS_IS_CHEWING_ENGINE(x)
210
#define TYPE_SELF IBUS_TYPE_CHEWING_ENGINE
211
#define SELF_CLASS(x) IBUS_CHEWING_ENGINE_CLASS(x)
213
#define SELF_GET_CLASS(x) IBUS_CHEWING_ENGINE_GET_CLASS(x)
216
typedef IBusChewingEngine Self;
217
typedef IBusChewingEngineClass SelfClass;
219
/* here are local prototypes */
220
#line 238 "/home/dchen/ibus-chewing/src/IBusChewingEngine.gob"
221
static void ibus_chewing_engine_init (IBusChewingEngine * self) G_GNUC_UNUSED;
222
#line 223 "ibus-chewing-engine.c"
223
#line 261 "/home/dchen/ibus-chewing/src/IBusChewingEngine.gob"
224
static void ibus_chewing_engine_class_init (IBusChewingEngineClass * klass) G_GNUC_UNUSED;
225
#line 226 "ibus-chewing-engine.c"
226
#line 269 "/home/dchen/ibus-chewing/src/IBusChewingEngine.gob"
227
static void ibus_chewing_engine_load_setting (IBusChewingEngine * self) G_GNUC_UNUSED;
228
#line 229 "ibus-chewing-engine.c"
229
#line 340 "/home/dchen/ibus-chewing/src/IBusChewingEngine.gob"
230
static gchar * ibus_chewing_engine_make_preedit_string (IBusChewingEngine * self, glong * zhuyin_item_written_ptr) G_GNUC_UNUSED;
231
#line 232 "ibus-chewing-engine.c"
232
#line 407 "/home/dchen/ibus-chewing/src/IBusChewingEngine.gob"
233
static void ibus_chewing_engine_show_lookup_table (IBusChewingEngine * self, gboolean isShow) G_GNUC_UNUSED;
234
#line 235 "ibus-chewing-engine.c"
235
#line 418 "/home/dchen/ibus-chewing/src/IBusChewingEngine.gob"
236
static void ibus_chewing_engine_update_lookup_table (IBusChewingEngine * self) G_GNUC_UNUSED;
237
#line 238 "ibus-chewing-engine.c"
238
#line 447 "/home/dchen/ibus-chewing/src/IBusChewingEngine.gob"
239
static IBusText * ibus_chewing_engine_decorate_preedit (IBusChewingEngine * self, gchar * preeditBuf, gint * chiSymbolCursor, gint zhuyin_item_written) G_GNUC_UNUSED;
240
#line 241 "ibus-chewing-engine.c"
241
#line 490 "/home/dchen/ibus-chewing/src/IBusChewingEngine.gob"
242
static void ibus_chewing_engine_update_aux_string (IBusChewingEngine * self, IBusText * preeditIText) G_GNUC_UNUSED;
243
#line 244 "ibus-chewing-engine.c"
244
#line 517 "/home/dchen/ibus-chewing/src/IBusChewingEngine.gob"
245
static void ibus_chewing_engine_update_preedit (IBusChewingEngine * self, IBusText * preeditIText, gint chiSymbolCursor) G_GNUC_UNUSED;
246
#line 247 "ibus-chewing-engine.c"
247
#line 667 "/home/dchen/ibus-chewing/src/IBusChewingEngine.gob"
248
static IBusProperty * ibus_chewing_engine_get_iBusProperty (IBusChewingEngine * self, const gchar * prop_name) G_GNUC_UNUSED;
249
#line 250 "ibus-chewing-engine.c"
250
#line 713 "/home/dchen/ibus-chewing/src/IBusChewingEngine.gob"
251
static void ibus_chewing_engine_determine_input_mode (IBusChewingEngine * self) G_GNUC_UNUSED;
252
#line 253 "ibus-chewing-engine.c"
253
#line 815 "/home/dchen/ibus-chewing/src/IBusChewingEngine.gob"
254
static void ___18_ibus_chewing_engine_reset (IBusEngine * engine) G_GNUC_UNUSED;
255
#line 256 "ibus-chewing-engine.c"
256
#line 833 "/home/dchen/ibus-chewing/src/IBusChewingEngine.gob"
257
static void ___19_ibus_chewing_engine_page_up (IBusEngine * engine) G_GNUC_UNUSED;
258
#line 259 "ibus-chewing-engine.c"
259
#line 841 "/home/dchen/ibus-chewing/src/IBusChewingEngine.gob"
260
static void ___1a_ibus_chewing_engine_page_down (IBusEngine * engine) G_GNUC_UNUSED;
261
#line 262 "ibus-chewing-engine.c"
262
#line 848 "/home/dchen/ibus-chewing/src/IBusChewingEngine.gob"
263
static void ___1b_ibus_chewing_engine_cursor_up (IBusEngine * engine) G_GNUC_UNUSED;
264
#line 265 "ibus-chewing-engine.c"
265
#line 855 "/home/dchen/ibus-chewing/src/IBusChewingEngine.gob"
266
static void ___1c_ibus_chewing_engine_cursor_down (IBusEngine * engine) G_GNUC_UNUSED;
267
#line 268 "ibus-chewing-engine.c"
268
#line 862 "/home/dchen/ibus-chewing/src/IBusChewingEngine.gob"
269
static void ___1d_ibus_chewing_engine_enable (IBusEngine * engine) G_GNUC_UNUSED;
270
#line 271 "ibus-chewing-engine.c"
271
#line 875 "/home/dchen/ibus-chewing/src/IBusChewingEngine.gob"
272
static void ___1e_ibus_chewing_engine_disable (IBusEngine * engine) G_GNUC_UNUSED;
273
#line 274 "ibus-chewing-engine.c"
274
#line 885 "/home/dchen/ibus-chewing/src/IBusChewingEngine.gob"
275
static void ___1f_ibus_chewing_engine_focus_in (IBusEngine * engine) G_GNUC_UNUSED;
276
#line 277 "ibus-chewing-engine.c"
277
#line 921 "/home/dchen/ibus-chewing/src/IBusChewingEngine.gob"
278
static void ___20_ibus_chewing_engine_focus_out (IBusEngine * engine) G_GNUC_UNUSED;
279
#line 280 "ibus-chewing-engine.c"
280
#line 930 "/home/dchen/ibus-chewing/src/IBusChewingEngine.gob"
281
static void ___21_ibus_chewing_engine_property_activate (IBusEngine * engine, const gchar * prop_name, guint prop_state) G_GNUC_UNUSED;
282
#line 283 "ibus-chewing-engine.c"
283
#line 957 "/home/dchen/ibus-chewing/src/IBusChewingEngine.gob"
284
static void ___22_ibus_chewing_engine_property_show (IBusEngine * engine, const gchar * prop_name) G_GNUC_UNUSED;
285
#line 286 "ibus-chewing-engine.c"
286
#line 966 "/home/dchen/ibus-chewing/src/IBusChewingEngine.gob"
287
static void ___23_ibus_chewing_engine_property_hide (IBusEngine * engine, const gchar * prop_name) G_GNUC_UNUSED;
288
#line 289 "ibus-chewing-engine.c"
290
/* pointer to the class of our parent */
291
static IBusEngineClass *parent_class = NULL;
293
/* Short form macros */
294
#define self_load_setting ibus_chewing_engine_load_setting
295
#define self_set_lookup_table_label ibus_chewing_engine_set_lookup_table_label
296
#define self_make_preedit_string ibus_chewing_engine_make_preedit_string
297
#define self_show_lookup_table ibus_chewing_engine_show_lookup_table
298
#define self_update_lookup_table ibus_chewing_engine_update_lookup_table
299
#define self_decorate_preedit ibus_chewing_engine_decorate_preedit
300
#define self_update_aux_string ibus_chewing_engine_update_aux_string
301
#define self_update_preedit ibus_chewing_engine_update_preedit
302
#define self_update ibus_chewing_engine_update
303
#define self_refresh_property ibus_chewing_engine_refresh_property
304
#define self_refresh_property_list ibus_chewing_engine_refresh_property_list
305
#define self_hide_property_list ibus_chewing_engine_hide_property_list
306
#define self_save_config ibus_chewing_engine_save_config
307
#define self_save_config_all ibus_chewing_engine_save_config_all
308
#define self_is_selectKey ibus_chewing_engine_is_selectKey
309
#define self_set_selKeys_string ibus_chewing_engine_set_selKeys_string
310
#define self_get_iBusProperty ibus_chewing_engine_get_iBusProperty
311
#define self_handle_Default ibus_chewing_engine_handle_Default
312
#define self_determine_input_mode ibus_chewing_engine_determine_input_mode
313
#define self_commit ibus_chewing_engine_commit
314
#define self_force_commit ibus_chewing_engine_force_commit
316
ibus_chewing_engine_get_type (void)
318
static GType type = 0;
320
if ___GOB_UNLIKELY(type == 0) {
321
static const GTypeInfo info = {
322
sizeof (IBusChewingEngineClass),
323
(GBaseInitFunc) NULL,
324
(GBaseFinalizeFunc) NULL,
325
(GClassInitFunc) ibus_chewing_engine_class_init,
326
(GClassFinalizeFunc) NULL,
327
NULL /* class_data */,
328
sizeof (IBusChewingEngine),
330
(GInstanceInitFunc) ibus_chewing_engine_init,
334
type = g_type_register_static (IBUS_TYPE_ENGINE, "IBusChewingEngine", &info, (GTypeFlags)0);
340
/* a macro for creating a new object of our type */
341
#define GET_NEW ((IBusChewingEngine *)g_object_new(ibus_chewing_engine_get_type(), NULL))
343
/* a function for creating a new object of our type */
345
static IBusChewingEngine * GET_NEW_VARG (const char *first, ...) G_GNUC_UNUSED;
346
static IBusChewingEngine *
347
GET_NEW_VARG (const char *first, ...)
349
IBusChewingEngine *ret;
351
va_start (ap, first);
352
ret = (IBusChewingEngine *)g_object_new_valist (ibus_chewing_engine_get_type (), first, ap);
359
___finalize(GObject *obj_self)
361
#define __GOB_FUNCTION__ "IBus:Chewing:Engine::finalize"
362
IBusChewingEngine *self G_GNUC_UNUSED = IBUS_CHEWING_ENGINE (obj_self);
363
gpointer priv G_GNUC_UNUSED = self->_priv;
364
if(G_OBJECT_CLASS(parent_class)->finalize) \
365
(* G_OBJECT_CLASS(parent_class)->finalize)(obj_self);
366
#line 168 "/home/dchen/ibus-chewing/src/IBusChewingEngine.gob"
367
if(self->context) { chewing_delete ((gpointer) self->context); self->context = NULL; }
368
#line 369 "ibus-chewing-engine.c"
369
#line 188 "/home/dchen/ibus-chewing/src/IBusChewingEngine.gob"
370
if(self->table) { ibus_lookup_table_clear ((gpointer) self->table); self->table = NULL; }
371
#line 372 "ibus-chewing-engine.c"
372
#line 197 "/home/dchen/ibus-chewing/src/IBusChewingEngine.gob"
373
if(self->chieng_prop) { g_object_unref ((gpointer) self->chieng_prop); self->chieng_prop = NULL; }
374
#line 375 "ibus-chewing-engine.c"
375
#line 206 "/home/dchen/ibus-chewing/src/IBusChewingEngine.gob"
376
if(self->alnumSize_prop) { g_object_unref ((gpointer) self->alnumSize_prop); self->alnumSize_prop = NULL; }
377
#line 378 "ibus-chewing-engine.c"
378
#line 215 "/home/dchen/ibus-chewing/src/IBusChewingEngine.gob"
379
if(self->settings_prop) { g_object_unref ((gpointer) self->settings_prop); self->settings_prop = NULL; }
380
#line 381 "ibus-chewing-engine.c"
381
#line 218 "/home/dchen/ibus-chewing/src/IBusChewingEngine.gob"
382
if(self->prop_list) { g_object_unref ((gpointer) self->prop_list); self->prop_list = NULL; }
383
#line 384 "ibus-chewing-engine.c"
384
#line 225 "/home/dchen/ibus-chewing/src/IBusChewingEngine.gob"
385
if(self->_priv->pDisplay) { XCloseDisplay ((gpointer) self->_priv->pDisplay); self->_priv->pDisplay = NULL; }
386
#line 387 "ibus-chewing-engine.c"
388
#undef __GOB_FUNCTION__
390
#line 238 "/home/dchen/ibus-chewing/src/IBusChewingEngine.gob"
392
ibus_chewing_engine_init (IBusChewingEngine * self G_GNUC_UNUSED)
394
#line 395 "ibus-chewing-engine.c"
395
#define __GOB_FUNCTION__ "IBus:Chewing:Engine::init"
396
self->_priv = G_TYPE_INSTANCE_GET_PRIVATE(self,IBUS_TYPE_CHEWING_ENGINE,IBusChewingEnginePrivate);
397
#line 147 "/home/dchen/ibus-chewing/src/IBusChewingEngine.gob"
398
self->context = NULL;
399
#line 400 "ibus-chewing-engine.c"
400
#line 147 "/home/dchen/ibus-chewing/src/IBusChewingEngine.gob"
401
self->syncCapsLock_local = CHEWING_MODIFIER_SYNC_FROM_KEYBOARD;
402
#line 403 "ibus-chewing-engine.c"
403
#line 172 "/home/dchen/ibus-chewing/src/IBusChewingEngine.gob"
404
self->setting_dialog =
405
GTK_WIDGET(maker_dialog_new_full(_("Setting"),3,page_labels,1,button_labels,button_responses));
406
#line 407 "ibus-chewing-engine.c"
407
#line 172 "/home/dchen/ibus-chewing/src/IBusChewingEngine.gob"
408
self->inputMode = CHEWING_INPUT_MODE_BYPASS;
409
#line 410 "ibus-chewing-engine.c"
410
#line 172 "/home/dchen/ibus-chewing/src/IBusChewingEngine.gob"
412
#line 413 "ibus-chewing-engine.c"
413
#line 172 "/home/dchen/ibus-chewing/src/IBusChewingEngine.gob"
414
self->_priv->statusFlags = 0;
415
#line 416 "ibus-chewing-engine.c"
416
#line 172 "/home/dchen/ibus-chewing/src/IBusChewingEngine.gob"
418
#line 419 "ibus-chewing-engine.c"
419
#line 190 "/home/dchen/ibus-chewing/src/IBusChewingEngine.gob"
422
ibus_property_new("chewing_chieng_prop",PROP_TYPE_NORMAL,
423
SELF_GET_CLASS(self)->chieng_prop_label_chi,
424
NULL, NULL, TRUE, TRUE,
425
PROP_STATE_UNCHECKED, NULL))
427
#line 428 "ibus-chewing-engine.c"
428
#line 199 "/home/dchen/ibus-chewing/src/IBusChewingEngine.gob"
429
self->alnumSize_prop =
431
ibus_property_new("chewing_alnumSize_prop",PROP_TYPE_NORMAL,
432
SELF_GET_CLASS(self)->alnumSize_prop_label_half,
433
NULL, NULL, TRUE, TRUE,
434
PROP_STATE_UNCHECKED, NULL))
436
#line 437 "ibus-chewing-engine.c"
437
#line 208 "/home/dchen/ibus-chewing/src/IBusChewingEngine.gob"
438
self->settings_prop =
440
ibus_property_new("chewing_settings_prop",PROP_TYPE_TOGGLE,
441
SELF_GET_CLASS(self)->settings_prop_label,
442
PKGDATADIR "/icons/settings.png", NULL, TRUE, TRUE,
443
PROP_STATE_UNCHECKED, NULL))
445
#line 446 "ibus-chewing-engine.c"
446
#line 217 "/home/dchen/ibus-chewing/src/IBusChewingEngine.gob"
447
self->prop_list = g_object_ref_sink (ibus_prop_list_new()) ;
448
#line 449 "ibus-chewing-engine.c"
449
#line 217 "/home/dchen/ibus-chewing/src/IBusChewingEngine.gob"
451
#line 452 "ibus-chewing-engine.c"
452
#line 222 "/home/dchen/ibus-chewing/src/IBusChewingEngine.gob"
453
self->keymap_us = ibus_keymap_get("us");
454
#line 455 "ibus-chewing-engine.c"
455
#line 224 "/home/dchen/ibus-chewing/src/IBusChewingEngine.gob"
456
self->_priv->pDisplay = XOpenDisplay( NULL );
457
#line 458 "ibus-chewing-engine.c"
458
#line 224 "/home/dchen/ibus-chewing/src/IBusChewingEngine.gob"
459
self->_priv->key_last = 0;
460
#line 461 "ibus-chewing-engine.c"
462
#line 238 "/home/dchen/ibus-chewing/src/IBusChewingEngine.gob"
464
/* initialize the object here */
465
G_DEBUG_MSG(1,"[I1] init() %sinitialized",(self->_priv->statusFlags & ENGINE_STATUS_INITIALIZED)? "": "un" );
466
if (!(self->_priv->statusFlags & ENGINE_STATUS_INITIALIZED)){
467
maker_dialog_set_verbose_level(MAKER_DIALOG(self->setting_dialog),ibus_chewing_verbose);
469
g_snprintf(buf,100,"%s/.chewing",getenv("HOME"));
471
chewing_Init(CHEWING_DATADIR, buf);
473
self->context=chewing_new();
474
chewing_set_ChiEngMode(self->context,CHINESE_MODE);
475
self->inputMode=CHEWING_INPUT_MODE_SELECTING_DONE;
477
/* init properties */
478
ibus_prop_list_append(self->prop_list,self->chieng_prop);
479
ibus_prop_list_append(self->prop_list,self->alnumSize_prop);
480
ibus_prop_list_append(self->prop_list,self->settings_prop);
482
ibus_chewing_engine_set_status_flag(self,ENGINE_STATUS_INITIALIZED);
485
#line 486 "ibus-chewing-engine.c"
488
#undef __GOB_FUNCTION__
489
#line 261 "/home/dchen/ibus-chewing/src/IBusChewingEngine.gob"
491
ibus_chewing_engine_class_init (IBusChewingEngineClass * klass G_GNUC_UNUSED)
493
#line 494 "ibus-chewing-engine.c"
494
#define __GOB_FUNCTION__ "IBus:Chewing:Engine::class_init"
495
GObjectClass *g_object_class G_GNUC_UNUSED = (GObjectClass*) klass;
496
IBusEngineClass *ibus_engine_class = (IBusEngineClass *)klass;
498
g_type_class_add_private(klass,sizeof(IBusChewingEnginePrivate));
499
#line 230 "/home/dchen/ibus-chewing/src/IBusChewingEngine.gob"
500
klass->chieng_prop_label_chi = g_object_ref_sink(ibus_text_new_from_static_string(_("Chi")));
501
#line 502 "ibus-chewing-engine.c"
502
#line 231 "/home/dchen/ibus-chewing/src/IBusChewingEngine.gob"
503
klass->chieng_prop_label_eng = g_object_ref_sink(ibus_text_new_from_static_string(_("Eng")));
504
#line 505 "ibus-chewing-engine.c"
505
#line 232 "/home/dchen/ibus-chewing/src/IBusChewingEngine.gob"
506
klass->alnumSize_prop_label_full = g_object_ref_sink(ibus_text_new_from_static_string(_("Full")));
507
#line 508 "ibus-chewing-engine.c"
508
#line 233 "/home/dchen/ibus-chewing/src/IBusChewingEngine.gob"
509
klass->alnumSize_prop_label_half = g_object_ref_sink(ibus_text_new_from_static_string(_("Half")));
510
#line 511 "ibus-chewing-engine.c"
511
#line 235 "/home/dchen/ibus-chewing/src/IBusChewingEngine.gob"
512
klass->settings_prop_label = g_object_ref_sink(ibus_text_new_from_static_string(_("Settings")));
513
#line 514 "ibus-chewing-engine.c"
514
#line 236 "/home/dchen/ibus-chewing/src/IBusChewingEngine.gob"
515
klass->emptyText = g_object_ref_sink(ibus_text_new_from_static_string(""));
516
#line 517 "ibus-chewing-engine.c"
518
parent_class = g_type_class_ref (IBUS_TYPE_ENGINE);
520
#line 815 "/home/dchen/ibus-chewing/src/IBusChewingEngine.gob"
521
ibus_engine_class->reset = ___18_ibus_chewing_engine_reset;
522
#line 833 "/home/dchen/ibus-chewing/src/IBusChewingEngine.gob"
523
ibus_engine_class->page_up = ___19_ibus_chewing_engine_page_up;
524
#line 841 "/home/dchen/ibus-chewing/src/IBusChewingEngine.gob"
525
ibus_engine_class->page_down = ___1a_ibus_chewing_engine_page_down;
526
#line 848 "/home/dchen/ibus-chewing/src/IBusChewingEngine.gob"
527
ibus_engine_class->cursor_up = ___1b_ibus_chewing_engine_cursor_up;
528
#line 855 "/home/dchen/ibus-chewing/src/IBusChewingEngine.gob"
529
ibus_engine_class->cursor_down = ___1c_ibus_chewing_engine_cursor_down;
530
#line 862 "/home/dchen/ibus-chewing/src/IBusChewingEngine.gob"
531
ibus_engine_class->enable = ___1d_ibus_chewing_engine_enable;
532
#line 875 "/home/dchen/ibus-chewing/src/IBusChewingEngine.gob"
533
ibus_engine_class->disable = ___1e_ibus_chewing_engine_disable;
534
#line 885 "/home/dchen/ibus-chewing/src/IBusChewingEngine.gob"
535
ibus_engine_class->focus_in = ___1f_ibus_chewing_engine_focus_in;
536
#line 921 "/home/dchen/ibus-chewing/src/IBusChewingEngine.gob"
537
ibus_engine_class->focus_out = ___20_ibus_chewing_engine_focus_out;
538
#line 930 "/home/dchen/ibus-chewing/src/IBusChewingEngine.gob"
539
ibus_engine_class->property_activate = ___21_ibus_chewing_engine_property_activate;
540
#line 957 "/home/dchen/ibus-chewing/src/IBusChewingEngine.gob"
541
ibus_engine_class->property_show = ___22_ibus_chewing_engine_property_show;
542
#line 966 "/home/dchen/ibus-chewing/src/IBusChewingEngine.gob"
543
ibus_engine_class->property_hide = ___23_ibus_chewing_engine_property_hide;
544
#line 545 "ibus-chewing-engine.c"
545
g_object_class->finalize = ___finalize;
547
#line 261 "/home/dchen/ibus-chewing/src/IBusChewingEngine.gob"
550
ibus_engine_class->process_key_event = ibus_chewing_engine_process_key_event;
552
ibus_engine_class->process_key_event = ibus_chewing_engine_process_key_event_1_2;
553
#endif /* IBUS_1_1 */
555
#line 556 "ibus-chewing-engine.c"
558
#undef __GOB_FUNCTION__
562
#line 269 "/home/dchen/ibus-chewing/src/IBusChewingEngine.gob"
564
ibus_chewing_engine_load_setting (IBusChewingEngine * self)
566
#line 567 "ibus-chewing-engine.c"
567
#define __GOB_FUNCTION__ "IBus:Chewing:Engine::load_setting"
568
#line 269 "/home/dchen/ibus-chewing/src/IBusChewingEngine.gob"
569
g_return_if_fail (self != NULL);
570
#line 269 "/home/dchen/ibus-chewing/src/IBusChewingEngine.gob"
571
g_return_if_fail (IBUS_IS_CHEWING_ENGINE (self));
572
#line 573 "ibus-chewing-engine.c"
574
#line 269 "/home/dchen/ibus-chewing/src/IBusChewingEngine.gob"
576
#define BUFFER_SIZE_LOCAL 200
577
G_DEBUG_MSG(3,"[I3] load_setting()");
578
GList *connections_list=ibus_service_get_connections(IBUS_SERVICE(self));
579
g_assert(connections_list);
580
g_assert(connections_list->data);
581
IBusConnection *iConnection=(IBusConnection *) connections_list->data;
582
self->config=ibus_config_new(iConnection);
585
gchar buf[BUFFER_SIZE_LOCAL];
588
for (i=0; propSpecs[i].valueType!=G_TYPE_INVALID;i++){
589
G_DEBUG_MSG(4,"[I4] load_setting(), i=%d",i);
590
if (ibus_config_get_value(self->config, "engine/Chewing",propSpecs[i].key, &gValue)){
591
switch(propSpecs[i].valueType){
593
buf[0]=(g_value_get_boolean(&gValue))? '1' : '0';
597
g_snprintf(buf,BUFFER_SIZE_LOCAL,"%u",
598
g_value_get_uint(&gValue));
601
g_snprintf(buf,BUFFER_SIZE_LOCAL,"%d",
602
g_value_get_int(&gValue));
605
g_strlcpy(buf,g_value_get_string(&gValue), BUFFER_SIZE_LOCAL);
612
g_warning("[WW] %s /desktop/ibus/engine/Chewing/%s, %s %s",
613
_("Warning: cannot load configure key"),
615
(propSpecs[i].defaultValue)? _(" Use default value:") : _(" No default value, skipped.") ,
616
(propSpecs[i].defaultValue)? propSpecs[i].defaultValue : ""
618
if (propSpecs[i].defaultValue){
619
g_strlcpy(buf,propSpecs[i].defaultValue, BUFFER_SIZE_LOCAL);
624
/* Add property to dialog */
625
maker_dialog_add_property(MAKER_DIALOG(self->setting_dialog),&propSpecs[i],buf,self);
626
maker_dialog_apply_widget_value(MAKER_DIALOG(self->setting_dialog),propSpecs[i].key);
627
g_value_unset(&gValue);
630
for (i=0; page_labels[i]!=NULL;i++){
631
maker_dialog_align_labels(MAKER_DIALOG(self->setting_dialog),page_labels[i],1.0f, 0.5f);
633
gtk_widget_hide(self->setting_dialog);
634
#undef BUFFER_SIZE_LOCAL
636
#line 637 "ibus-chewing-engine.c"
637
#undef __GOB_FUNCTION__
639
#line 331 "/home/dchen/ibus-chewing/src/IBusChewingEngine.gob"
641
ibus_chewing_engine_set_lookup_table_label (IBusChewingEngine * self, const gchar * labels)
643
#line 644 "ibus-chewing-engine.c"
644
#define __GOB_FUNCTION__ "IBus:Chewing:Engine::set_lookup_table_label"
645
#line 331 "/home/dchen/ibus-chewing/src/IBusChewingEngine.gob"
646
g_return_if_fail (self != NULL);
647
#line 331 "/home/dchen/ibus-chewing/src/IBusChewingEngine.gob"
648
g_return_if_fail (IBUS_IS_CHEWING_ENGINE (self));
649
#line 650 "ibus-chewing-engine.c"
651
#line 331 "/home/dchen/ibus-chewing/src/IBusChewingEngine.gob"
653
int i,len=strlen(labels);
654
g_array_set_size(self->table->labels,0);
656
IBusText *text=ibus_text_new_from_unichar((gunichar) labels[i]);
657
ibus_lookup_table_append_label (self->table,text);
660
#line 661 "ibus-chewing-engine.c"
661
#undef __GOB_FUNCTION__
663
#line 340 "/home/dchen/ibus-chewing/src/IBusChewingEngine.gob"
665
ibus_chewing_engine_make_preedit_string (IBusChewingEngine * self, glong * zhuyin_item_written_ptr)
667
#line 668 "ibus-chewing-engine.c"
668
#define __GOB_FUNCTION__ "IBus:Chewing:Engine::make_preedit_string"
669
#line 340 "/home/dchen/ibus-chewing/src/IBusChewingEngine.gob"
670
g_return_val_if_fail (self != NULL, (gchar * )0);
671
#line 340 "/home/dchen/ibus-chewing/src/IBusChewingEngine.gob"
672
g_return_val_if_fail (IBUS_IS_CHEWING_ENGINE (self), (gchar * )0);
673
#line 674 "ibus-chewing-engine.c"
675
#line 340 "/home/dchen/ibus-chewing/src/IBusChewingEngine.gob"
677
gchar *buff_str=chewing_buffer_String(self->context);
678
G_DEBUG_MSG(4, "[I4] make_preedit_string(): chewing_buffer_String=%s ",
681
int chiSymbolCursor = chewing_cursor_Current(self->context);
685
gchar *zhuyin_str=chewing_zuin_String(self->context,&zhuyin_count);
686
*zhuyin_item_written_ptr= (glong) zhuyin_count;
687
G_DEBUG_MSG(5, "[I5] make_preedit_string(): chewing_zuin_String=%s count=%d inputMode=%d",
688
zhuyin_str,zhuyin_count,self->inputMode);
690
switch(self->inputMode){
691
case CHEWING_INPUT_MODE_EDITING:
692
g_strlcpy(self->_priv->zhuyin_latest,zhuyin_str,ZHUYIN_BUFFER_SIZE);
695
case CHEWING_INPUT_MODE_SELECTING:
696
zhuyin_tone=get_tone(chewing_get_KBType(self->context),self->_priv->key_last);
697
add_tone(self->_priv->zhuyin_latest,zhuyin_tone);
699
if (self->flags & CHEWING_FLAG_PLAIN_ZHUYIN){
700
/* Open candidate selection window */
701
if (chewing_get_spaceAsSelection(self->context)){
702
chewing_handle_Space(self->context);
704
chewing_handle_Down(self->context);
709
case CHEWING_INPUT_MODE_SELECTING_DONE:
710
self->_priv->zhuyin_latest[0]='\0';
713
self->inputMode=CHEWING_INPUT_MODE_EDITING;
721
gsize len=strlen(zhuyin_str)+strlen(buff_str);
722
gchar *preeditBuf=g_new(gchar, len+1);
724
if (chiSymbolCursor>0){
725
g_utf8_strncpy(preeditBuf, buff_str, chiSymbolCursor);
727
gsize zhuyin_start=strlen(preeditBuf);
728
/* Inserting zhuyinBuf */
730
g_strlcat(preeditBuf,zhuyin_str,len+1);
732
/* Append rest chiSymbolBuf */
733
g_strlcat(preeditBuf,buff_str+zhuyin_start, len+1);
737
G_DEBUG_MSG(4, "[I4] make_preedit_string(): return preedit=%s zhuyin_latest=%s zhuyin_tone=%d inputMode=%d",
738
preeditBuf, self->_priv->zhuyin_latest,zhuyin_tone,self->inputMode);
742
#line 743 "ibus-chewing-engine.c"
743
#undef __GOB_FUNCTION__
745
#line 407 "/home/dchen/ibus-chewing/src/IBusChewingEngine.gob"
747
ibus_chewing_engine_show_lookup_table (IBusChewingEngine * self, gboolean isShow)
749
#line 750 "ibus-chewing-engine.c"
750
#define __GOB_FUNCTION__ "IBus:Chewing:Engine::show_lookup_table"
751
#line 407 "/home/dchen/ibus-chewing/src/IBusChewingEngine.gob"
752
g_return_if_fail (self != NULL);
753
#line 407 "/home/dchen/ibus-chewing/src/IBusChewingEngine.gob"
754
g_return_if_fail (IBUS_IS_CHEWING_ENGINE (self));
755
#line 756 "ibus-chewing-engine.c"
757
#line 407 "/home/dchen/ibus-chewing/src/IBusChewingEngine.gob"
759
ibus_engine_update_lookup_table(IBUS_ENGINE(self),self->table,isShow);
761
ibus_engine_show_lookup_table(IBUS_ENGINE(self));
762
ibus_chewing_engine_set_status_flag(self,ENGINE_STATUS_SHOW_CANDIDATE);
764
ibus_engine_hide_lookup_table(IBUS_ENGINE(self));
765
ibus_chewing_engine_clear_status_flag(self,ENGINE_STATUS_SHOW_CANDIDATE);
768
#line 769 "ibus-chewing-engine.c"
769
#undef __GOB_FUNCTION__
771
#line 418 "/home/dchen/ibus-chewing/src/IBusChewingEngine.gob"
773
ibus_chewing_engine_update_lookup_table (IBusChewingEngine * self)
775
#line 776 "ibus-chewing-engine.c"
776
#define __GOB_FUNCTION__ "IBus:Chewing:Engine::update_lookup_table"
777
#line 418 "/home/dchen/ibus-chewing/src/IBusChewingEngine.gob"
778
g_return_if_fail (self != NULL);
779
#line 418 "/home/dchen/ibus-chewing/src/IBusChewingEngine.gob"
780
g_return_if_fail (IBUS_IS_CHEWING_ENGINE (self));
781
#line 782 "ibus-chewing-engine.c"
783
#line 418 "/home/dchen/ibus-chewing/src/IBusChewingEngine.gob"
785
ibus_lookup_table_clear(self->table);
786
int choicePerPage=chewing_cand_ChoicePerPage(self->context);
788
char *candidate=NULL;
789
IBusText *iText=NULL;
791
G_DEBUG_MSG(4,"[I4] update_lookup_table() TotalChoice=%d CurrentPage=%d",
792
chewing_cand_TotalChoice(self->context),chewing_cand_CurrentPage(self->context));
793
if (chewing_cand_TotalChoice(self->context) >0){
794
chewing_cand_Enumerate(self->context);
795
for(i=0;i<choicePerPage;i++){
796
if (chewing_cand_hasNext(self->context)){
797
candidate=chewing_cand_String(self->context);
798
iText=g_object_ref_sink(ibus_text_new_from_string (candidate));
799
ibus_lookup_table_append_candidate(self->table,iText);
801
g_object_unref (iText);
806
self_show_lookup_table(self, TRUE);
808
self_show_lookup_table(self, FALSE);
811
#line 812 "ibus-chewing-engine.c"
812
#undef __GOB_FUNCTION__
814
#line 447 "/home/dchen/ibus-chewing/src/IBusChewingEngine.gob"
816
ibus_chewing_engine_decorate_preedit (IBusChewingEngine * self, gchar * preeditBuf, gint * chiSymbolCursor, gint zhuyin_item_written)
818
#line 819 "ibus-chewing-engine.c"
819
#define __GOB_FUNCTION__ "IBus:Chewing:Engine::decorate_preedit"
820
#line 447 "/home/dchen/ibus-chewing/src/IBusChewingEngine.gob"
821
g_return_val_if_fail (self != NULL, (IBusText * )0);
822
#line 447 "/home/dchen/ibus-chewing/src/IBusChewingEngine.gob"
823
g_return_val_if_fail (IBUS_IS_CHEWING_ENGINE (self), (IBusText * )0);
824
#line 825 "ibus-chewing-engine.c"
826
#line 447 "/home/dchen/ibus-chewing/src/IBusChewingEngine.gob"
828
IBusText *iText=g_object_ref_sink(ibus_text_new_from_string(preeditBuf));
829
*chiSymbolCursor = chewing_cursor_Current(self->context);
830
G_DEBUG_MSG(4,"[I4] decorate_preedit() chiSymbolCursor=%d preeditBuf=%s statusFlags=%x",
831
*chiSymbolCursor,preeditBuf, self->_priv->statusFlags);
835
gint charLen=(gint) g_utf8_strlen(iText->text, -1);
836
switch(self->inputMode){
837
case CHEWING_INPUT_MODE_SELECTING:
838
cursorRight=*chiSymbolCursor + MAX(zhuyin_item_written, 1);
840
case CHEWING_INPUT_MODE_EDITING:
841
case CHEWING_INPUT_MODE_SELECTING_DONE:
842
default: /* BYPASS */
843
cursorRight=*chiSymbolCursor + MAX(zhuyin_item_written, 1);
847
G_DEBUG_MSG(5,"[I5] decorate_preedit() charLen=%d cursorRight=%d", charLen, cursorRight);
848
if (*chiSymbolCursor< cursorRight){
849
ibus_text_append_attribute (iText, IBUS_ATTR_TYPE_FOREGROUND, 0x00ffffff,
850
*chiSymbolCursor, cursorRight);
851
ibus_text_append_attribute (iText, IBUS_ATTR_TYPE_BACKGROUND, 0x00000000,
852
*chiSymbolCursor, cursorRight);
856
chewing_interval_Enumerate(self->context);
857
while(chewing_interval_hasNext(self->context)){
858
chewing_interval_Get(self->context,&it);
859
G_DEBUG_MSG(6,"[I6] decorate_preedit() it.from=%d it.to=%d", it.from, it.to);
860
if (it.to-it.from >1){
861
ibus_text_append_attribute (iText, IBUS_ATTR_TYPE_UNDERLINE, IBUS_ATTR_UNDERLINE_DOUBLE,
865
ibus_text_append_attribute (iText, IBUS_ATTR_TYPE_UNDERLINE, IBUS_ATTR_UNDERLINE_SINGLE,
869
#line 870 "ibus-chewing-engine.c"
870
#undef __GOB_FUNCTION__
872
#line 490 "/home/dchen/ibus-chewing/src/IBusChewingEngine.gob"
874
ibus_chewing_engine_update_aux_string (IBusChewingEngine * self, IBusText * preeditIText)
876
#line 877 "ibus-chewing-engine.c"
877
#define __GOB_FUNCTION__ "IBus:Chewing:Engine::update_aux_string"
878
#line 490 "/home/dchen/ibus-chewing/src/IBusChewingEngine.gob"
879
g_return_if_fail (self != NULL);
880
#line 490 "/home/dchen/ibus-chewing/src/IBusChewingEngine.gob"
881
g_return_if_fail (IBUS_IS_CHEWING_ENGINE (self));
882
#line 883 "ibus-chewing-engine.c"
884
#line 490 "/home/dchen/ibus-chewing/src/IBusChewingEngine.gob"
886
G_DEBUG_MSG(4,"[I4] update_aux_string() statusFlags=%x", self->_priv->statusFlags);
887
IBusText *iText=NULL;
888
switch (self->_priv->inputStyle){
889
case CHEWING_INPUT_STYLE_IN_APPLICATION:
890
if (chewing_aux_Length(self->context)>0){
891
gchar *aux_string=chewing_aux_String(self->context);
892
iText=g_object_ref_sink(ibus_text_new_from_string (aux_string));
893
ibus_engine_update_auxiliary_text(IBUS_ENGINE(self),iText,TRUE);
894
g_object_unref (iText);
895
ibus_engine_show_auxiliary_text(IBUS_ENGINE(self));
898
ibus_engine_hide_auxiliary_text(IBUS_ENGINE(self));
901
case CHEWING_INPUT_STYLE_IN_CANDIDATE:
902
if (self->inputMode==CHEWING_INPUT_MODE_BYPASS){
903
ibus_engine_hide_auxiliary_text(IBUS_ENGINE(self));
905
ibus_engine_update_auxiliary_text(IBUS_ENGINE(self),preeditIText,TRUE);
906
ibus_engine_show_auxiliary_text(IBUS_ENGINE(self));
911
#line 912 "ibus-chewing-engine.c"
912
#undef __GOB_FUNCTION__
914
#line 517 "/home/dchen/ibus-chewing/src/IBusChewingEngine.gob"
916
ibus_chewing_engine_update_preedit (IBusChewingEngine * self, IBusText * preeditIText, gint chiSymbolCursor)
918
#line 919 "ibus-chewing-engine.c"
919
#define __GOB_FUNCTION__ "IBus:Chewing:Engine::update_preedit"
920
#line 517 "/home/dchen/ibus-chewing/src/IBusChewingEngine.gob"
921
g_return_if_fail (self != NULL);
922
#line 517 "/home/dchen/ibus-chewing/src/IBusChewingEngine.gob"
923
g_return_if_fail (IBUS_IS_CHEWING_ENGINE (self));
924
#line 925 "ibus-chewing-engine.c"
926
#line 517 "/home/dchen/ibus-chewing/src/IBusChewingEngine.gob"
928
G_DEBUG_MSG(5,"[I5] update_preedit() text=%s statusFlags=%x", preeditIText->text, self->_priv->statusFlags);
929
switch (self->_priv->inputStyle){
930
case CHEWING_INPUT_STYLE_IN_APPLICATION:
931
ibus_engine_update_preedit_text (IBUS_ENGINE(self),preeditIText, chiSymbolCursor, TRUE);
933
case CHEWING_INPUT_STYLE_IN_CANDIDATE:
934
ibus_engine_update_preedit_text (IBUS_ENGINE(self),SELF_GET_CLASS(self)->emptyText, 0, TRUE);
937
G_DEBUG_MSG(5,"[I5] update_preedit(): return");
939
#line 940 "ibus-chewing-engine.c"
940
#undef __GOB_FUNCTION__
942
#line 530 "/home/dchen/ibus-chewing/src/IBusChewingEngine.gob"
944
ibus_chewing_engine_update (IBusChewingEngine * self)
946
#line 947 "ibus-chewing-engine.c"
947
#define __GOB_FUNCTION__ "IBus:Chewing:Engine::update"
948
#line 530 "/home/dchen/ibus-chewing/src/IBusChewingEngine.gob"
949
g_return_val_if_fail (self != NULL, (gboolean )0);
950
#line 530 "/home/dchen/ibus-chewing/src/IBusChewingEngine.gob"
951
g_return_val_if_fail (IBUS_IS_CHEWING_ENGINE (self), (gboolean )0);
952
#line 953 "ibus-chewing-engine.c"
954
#line 530 "/home/dchen/ibus-chewing/src/IBusChewingEngine.gob"
956
G_DEBUG_MSG(3,"[I3] update() statusFlags=%x", self->_priv->statusFlags);
957
self_determine_input_mode(self);
958
gint chiSymbolCursor;
959
glong zhuyin_item_written;
961
gchar *preeditBuf=self_make_preedit_string(self, &zhuyin_item_written);
962
IBusText *iText=self_decorate_preedit(self, preeditBuf, &chiSymbolCursor, zhuyin_item_written);
964
self_update_aux_string(self, iText);
965
self_update_preedit(self, iText, chiSymbolCursor);
966
g_object_unref(iText);
967
G_DEBUG_MSG(4,"[I4] update() inputMode=%d nPhoneSeq=%d statusFlags=%x",
969
chewing_get_phoneSeqLen(self->context),
970
self->_priv->statusFlags);
971
self_update_lookup_table(self);
974
if (chewing_keystroke_CheckAbsorb(self->context)){
976
}else if (chewing_keystroke_CheckIgnore(self->context)){
979
G_DEBUG_MSG(4,"[I4] update() return %s",(ret)? "TRUE": "FALSE");
982
#line 983 "ibus-chewing-engine.c"
983
#undef __GOB_FUNCTION__
985
#line 558 "/home/dchen/ibus-chewing/src/IBusChewingEngine.gob"
987
ibus_chewing_engine_refresh_property (IBusChewingEngine * self, const gchar * prop_name)
989
#line 990 "ibus-chewing-engine.c"
990
#define __GOB_FUNCTION__ "IBus:Chewing:Engine::refresh_property"
991
#line 558 "/home/dchen/ibus-chewing/src/IBusChewingEngine.gob"
992
g_return_if_fail (self != NULL);
993
#line 558 "/home/dchen/ibus-chewing/src/IBusChewingEngine.gob"
994
g_return_if_fail (IBUS_IS_CHEWING_ENGINE (self));
995
#line 996 "ibus-chewing-engine.c"
997
#line 558 "/home/dchen/ibus-chewing/src/IBusChewingEngine.gob"
999
G_DEBUG_MSG(2,"[I2] refresh_property(%s)",prop_name);
1000
if (strcmp(prop_name,"chewing_chieng_prop")==0){
1001
if (chewing_get_ChiEngMode(self->context)){
1003
ibus_property_set_label(self->chieng_prop,SELF_GET_CLASS(self)->chieng_prop_label_chi);
1006
ibus_property_set_label(self->chieng_prop,SELF_GET_CLASS(self)->chieng_prop_label_eng);
1008
ibus_engine_update_property(IBUS_ENGINE(self),self->chieng_prop);
1009
}else if (strcmp(prop_name,"chewing_alnumSize_prop")==0){
1010
if (chewing_get_ShapeMode(self->context)){
1011
/* Full-Sized Shape */
1012
ibus_property_set_label(self->alnumSize_prop,SELF_GET_CLASS(self)->alnumSize_prop_label_full);
1014
/* Half-Sized Shape */
1015
ibus_property_set_label(self->alnumSize_prop,SELF_GET_CLASS(self)->alnumSize_prop_label_half);
1017
ibus_engine_update_property(IBUS_ENGINE(self),self->alnumSize_prop);
1019
G_DEBUG_MSG(2,"[I2] refresh_property(%s) finished",prop_name);
1021
#line 1022 "ibus-chewing-engine.c"
1022
#undef __GOB_FUNCTION__
1025
* ibus_chewing_engine_refresh_property_list:
1026
* @self: this instances.
1028
* Refresh the property list (language bar).
1030
#line 588 "/home/dchen/ibus-chewing/src/IBusChewingEngine.gob"
1032
ibus_chewing_engine_refresh_property_list (IBusChewingEngine * self)
1034
#line 1035 "ibus-chewing-engine.c"
1035
#define __GOB_FUNCTION__ "IBus:Chewing:Engine::refresh_property_list"
1036
#line 588 "/home/dchen/ibus-chewing/src/IBusChewingEngine.gob"
1037
g_return_if_fail (self != NULL);
1038
#line 588 "/home/dchen/ibus-chewing/src/IBusChewingEngine.gob"
1039
g_return_if_fail (IBUS_IS_CHEWING_ENGINE (self));
1040
#line 1041 "ibus-chewing-engine.c"
1042
#line 588 "/home/dchen/ibus-chewing/src/IBusChewingEngine.gob"
1044
self_refresh_property(self,"chewing_chieng_prop");
1046
self_refresh_property(self,"chewing_alnumSize_prop");
1048
self_refresh_property(self,"chewing_settings_prop");
1049
if (self->_priv->statusFlags & (ENGINE_STATUS_ENABLED | ENGINE_STATUS_FOCUS_IN)){
1050
ibus_engine_register_properties(IBUS_ENGINE(self),self->prop_list);
1051
IBUS_ENGINE_GET_CLASS(self)->property_show(IBUS_ENGINE(self),"chewing_chieng_prop");
1052
IBUS_ENGINE_GET_CLASS(self)->property_show(IBUS_ENGINE(self),"chewing_alnumSize_prop");
1053
IBUS_ENGINE_GET_CLASS(self)->property_show(IBUS_ENGINE(self),"chewing_settings_prop");
1056
#line 1057 "ibus-chewing-engine.c"
1057
#undef __GOB_FUNCTION__
1060
* ibus_chewing_engine_hide_property_list:
1061
* @self: this instances.
1063
* Hide the property list (language bar).
1065
#line 608 "/home/dchen/ibus-chewing/src/IBusChewingEngine.gob"
1067
ibus_chewing_engine_hide_property_list (IBusChewingEngine * self)
1069
#line 1070 "ibus-chewing-engine.c"
1070
#define __GOB_FUNCTION__ "IBus:Chewing:Engine::hide_property_list"
1071
#line 608 "/home/dchen/ibus-chewing/src/IBusChewingEngine.gob"
1072
g_return_if_fail (self != NULL);
1073
#line 608 "/home/dchen/ibus-chewing/src/IBusChewingEngine.gob"
1074
g_return_if_fail (IBUS_IS_CHEWING_ENGINE (self));
1075
#line 1076 "ibus-chewing-engine.c"
1077
#line 608 "/home/dchen/ibus-chewing/src/IBusChewingEngine.gob"
1079
IBUS_ENGINE_GET_CLASS(self)->property_hide(IBUS_ENGINE(self),"chewing_chieng_prop");
1080
IBUS_ENGINE_GET_CLASS(self)->property_hide(IBUS_ENGINE(self),"chewing_alnumSize_prop");
1081
IBUS_ENGINE_GET_CLASS(self)->property_hide(IBUS_ENGINE(self),"chewing_settings_prop");
1083
#line 1084 "ibus-chewing-engine.c"
1084
#undef __GOB_FUNCTION__
1087
* ibus_chewing_engine_save_config:
1088
* @self: this instances.
1089
* @key_suffix: key to be set.
1090
* @returns: TRUE if successful, FALSE otherwise.
1092
* Save the property value to disk.
1094
#line 622 "/home/dchen/ibus-chewing/src/IBusChewingEngine.gob"
1096
ibus_chewing_engine_save_config (IBusChewingEngine * self, const gchar * key_suffix)
1098
#line 1099 "ibus-chewing-engine.c"
1099
#define __GOB_FUNCTION__ "IBus:Chewing:Engine::save_config"
1100
#line 622 "/home/dchen/ibus-chewing/src/IBusChewingEngine.gob"
1101
g_return_val_if_fail (self != NULL, (gboolean )0);
1102
#line 622 "/home/dchen/ibus-chewing/src/IBusChewingEngine.gob"
1103
g_return_val_if_fail (IBUS_IS_CHEWING_ENGINE (self), (gboolean )0);
1104
#line 1105 "ibus-chewing-engine.c"
1106
#line 622 "/home/dchen/ibus-chewing/src/IBusChewingEngine.gob"
1108
G_DEBUG_MSG(1,"[I1] save_config(%s,-)",key_suffix);
1110
maker_dialog_get_widget_value(MAKER_DIALOG(self->setting_dialog),key_suffix,&gValue);
1111
return ibus_config_set_value (self->config,"engine/Chewing",key_suffix,&gValue);
1113
#line 1114 "ibus-chewing-engine.c"
1114
#undef __GOB_FUNCTION__
1117
* ibus_chewing_engine_save_config_all:
1118
* @self: this instances.
1119
* @key_suffix: key to be set.
1120
* @returns: TRUE if all successful, FALSE otherwise.
1122
* Save alll property values to disk.
1124
#line 637 "/home/dchen/ibus-chewing/src/IBusChewingEngine.gob"
1126
ibus_chewing_engine_save_config_all (IBusChewingEngine * self)
1128
#line 1129 "ibus-chewing-engine.c"
1129
#define __GOB_FUNCTION__ "IBus:Chewing:Engine::save_config_all"
1130
#line 637 "/home/dchen/ibus-chewing/src/IBusChewingEngine.gob"
1131
g_return_val_if_fail (self != NULL, (gboolean )0);
1132
#line 637 "/home/dchen/ibus-chewing/src/IBusChewingEngine.gob"
1133
g_return_val_if_fail (IBUS_IS_CHEWING_ENGINE (self), (gboolean )0);
1134
#line 1135 "ibus-chewing-engine.c"
1136
#line 637 "/home/dchen/ibus-chewing/src/IBusChewingEngine.gob"
1139
gboolean success=TRUE;
1140
for(i=0;propSpecs[i].valueType!=G_TYPE_INVALID;i++){
1141
if (!self_save_config(self,propSpecs[i].key)){
1147
#line 1148 "ibus-chewing-engine.c"
1148
#undef __GOB_FUNCTION__
1150
#line 648 "/home/dchen/ibus-chewing/src/IBusChewingEngine.gob"
1152
ibus_chewing_engine_is_selectKey (IBusChewingEngine * self, guint keyval)
1154
#line 1155 "ibus-chewing-engine.c"
1155
#define __GOB_FUNCTION__ "IBus:Chewing:Engine::is_selectKey"
1156
#line 648 "/home/dchen/ibus-chewing/src/IBusChewingEngine.gob"
1157
g_return_val_if_fail (self != NULL, (gboolean )0);
1158
#line 648 "/home/dchen/ibus-chewing/src/IBusChewingEngine.gob"
1159
g_return_val_if_fail (IBUS_IS_CHEWING_ENGINE (self), (gboolean )0);
1160
#line 1161 "ibus-chewing-engine.c"
1162
#line 648 "/home/dchen/ibus-chewing/src/IBusChewingEngine.gob"
1165
for (j=0;j< MAX_SELKEY;j++){
1166
if (self->selKeys[j]==keyval){
1172
#line 1173 "ibus-chewing-engine.c"
1173
#undef __GOB_FUNCTION__
1175
#line 658 "/home/dchen/ibus-chewing/src/IBusChewingEngine.gob"
1177
ibus_chewing_engine_set_selKeys_string (IBusChewingEngine * self, const gchar * selKeys_str)
1179
#line 1180 "ibus-chewing-engine.c"
1180
#define __GOB_FUNCTION__ "IBus:Chewing:Engine::set_selKeys_string"
1181
#line 658 "/home/dchen/ibus-chewing/src/IBusChewingEngine.gob"
1182
g_return_if_fail (self != NULL);
1183
#line 658 "/home/dchen/ibus-chewing/src/IBusChewingEngine.gob"
1184
g_return_if_fail (IBUS_IS_CHEWING_ENGINE (self));
1185
#line 1186 "ibus-chewing-engine.c"
1187
#line 658 "/home/dchen/ibus-chewing/src/IBusChewingEngine.gob"
1190
int len_min= MIN(strlen(selKeys_str), MAX_SELKEY);
1191
for (j=0;j< len_min;j++){
1192
self->selKeys[j]=(int) selKeys_str[j];
1194
chewing_set_selKey(self->context, self->selKeys,len_min);
1196
#line 1197 "ibus-chewing-engine.c"
1197
#undef __GOB_FUNCTION__
1199
#line 667 "/home/dchen/ibus-chewing/src/IBusChewingEngine.gob"
1200
static IBusProperty *
1201
ibus_chewing_engine_get_iBusProperty (IBusChewingEngine * self, const gchar * prop_name)
1203
#line 1204 "ibus-chewing-engine.c"
1204
#define __GOB_FUNCTION__ "IBus:Chewing:Engine::get_iBusProperty"
1205
#line 667 "/home/dchen/ibus-chewing/src/IBusChewingEngine.gob"
1206
g_return_val_if_fail (self != NULL, (IBusProperty * )0);
1207
#line 667 "/home/dchen/ibus-chewing/src/IBusChewingEngine.gob"
1208
g_return_val_if_fail (IBUS_IS_CHEWING_ENGINE (self), (IBusProperty * )0);
1209
#line 1210 "ibus-chewing-engine.c"
1211
#line 667 "/home/dchen/ibus-chewing/src/IBusChewingEngine.gob"
1213
if (strcmp(prop_name,"chewing_chieng_prop")==0){
1214
return self->chieng_prop;
1215
}else if (strcmp(prop_name,"chewing_alnumSize_prop")==0){
1216
return self->alnumSize_prop;
1217
}else if (strcmp(prop_name,"chewing_settings_prop")==0){
1218
return self->settings_prop;
1220
G_DEBUG_MSG(2,"[I2] get_iBusProperty(%s): NULL is returned",prop_name);
1223
#line 1224 "ibus-chewing-engine.c"
1224
#undef __GOB_FUNCTION__
1226
#line 679 "/home/dchen/ibus-chewing/src/IBusChewingEngine.gob"
1228
ibus_chewing_engine_handle_Default (IBusChewingEngine * self, guint keyval, gboolean shiftPressed)
1230
#line 1231 "ibus-chewing-engine.c"
1231
#define __GOB_FUNCTION__ "IBus:Chewing:Engine::handle_Default"
1232
#line 679 "/home/dchen/ibus-chewing/src/IBusChewingEngine.gob"
1233
g_return_if_fail (self != NULL);
1234
#line 679 "/home/dchen/ibus-chewing/src/IBusChewingEngine.gob"
1235
g_return_if_fail (IBUS_IS_CHEWING_ENGINE (self));
1236
#line 1237 "ibus-chewing-engine.c"
1238
#line 679 "/home/dchen/ibus-chewing/src/IBusChewingEngine.gob"
1240
G_DEBUG_MSG(2,"[I2] handle_Default(-,%u) plainZhuyin=%s inputMode=%d",
1241
keyval,(self->flags & CHEWING_FLAG_PLAIN_ZHUYIN)? "TRUE": "FALSE",self->inputMode);
1242
ibus_chewing_engine_set_status_flag(self, ENGINE_STATUS_NEED_COMMIT);
1243
#ifdef EASY_SYMBOL_INPUT_WORK_AROUND
1244
if (self->flags & CHEWING_FLAG_EASY_SYMBOL_INPUT){
1245
/* If shift is pressed, turn on the easySymbolInput, turn off
1248
chewing_set_easySymbolInput(self->context,(shiftPressed)? 1:0);
1251
if (self->flags & CHEWING_FLAG_FORCE_LOWERCASE_ENGLISH){
1252
if (isupper(keyval) && !shiftPressed){
1253
keyval=tolower(keyval);
1254
}else if (islower(keyval) && shiftPressed){
1255
keyval=toupper(keyval);
1258
chewing_handle_Default(self->context,keyval);
1259
if (self->flags & CHEWING_FLAG_PLAIN_ZHUYIN){
1260
if (self_is_selectKey(self,self->_priv->key_last) &&
1261
self->inputMode==CHEWING_INPUT_MODE_SELECTING){
1262
chewing_handle_Enter(self->context);
1263
self->inputMode= CHEWING_INPUT_MODE_SELECTING_DONE;
1267
#line 1268 "ibus-chewing-engine.c"
1268
#undef __GOB_FUNCTION__
1270
#line 713 "/home/dchen/ibus-chewing/src/IBusChewingEngine.gob"
1272
ibus_chewing_engine_determine_input_mode (IBusChewingEngine * self)
1274
#line 1275 "ibus-chewing-engine.c"
1275
#define __GOB_FUNCTION__ "IBus:Chewing:Engine::determine_input_mode"
1276
#line 713 "/home/dchen/ibus-chewing/src/IBusChewingEngine.gob"
1277
g_return_if_fail (self != NULL);
1278
#line 713 "/home/dchen/ibus-chewing/src/IBusChewingEngine.gob"
1279
g_return_if_fail (IBUS_IS_CHEWING_ENGINE (self));
1280
#line 1281 "ibus-chewing-engine.c"
1282
#line 713 "/home/dchen/ibus-chewing/src/IBusChewingEngine.gob"
1284
gint zhuyin_count=-1;
1285
gchar *str_ptr=chewing_zuin_String(self->context,&zhuyin_count);
1286
G_DEBUG_MSG(3, "[I3] determine_input_mode(): chewing_zuin_String=%s count=%d inputMode=%d",
1287
str_ptr,zhuyin_count,self->inputMode);
1290
if (zhuyin_count>0){
1291
/* Incomplete Character*/
1292
self->inputMode=CHEWING_INPUT_MODE_EDITING;
1294
/* Character/Phrase is completed. */
1295
if (self->inputMode==CHEWING_INPUT_MODE_EDITING){
1296
/* In EDITING mode */
1297
zhuyin_tone=get_tone(chewing_get_KBType(self->context),self->_priv->key_last);
1298
if (zhuyin_tone>0 ){
1299
if (self->flags & CHEWING_FLAG_PLAIN_ZHUYIN){
1300
/* For plain zhuyin, Enter SELECTING mode */
1301
self->inputMode=CHEWING_INPUT_MODE_SELECTING;
1303
/* For normal zhuyin, Enter SELECTING mode */
1304
self->inputMode=CHEWING_INPUT_MODE_SELECTING_DONE;
1307
}else if (self->inputMode==CHEWING_INPUT_MODE_BYPASS){
1308
/* In BYPASS mode */
1309
if (chewing_buffer_Len(self->context)>0){
1310
/* Has punctuation mark in buffer */
1311
self->inputMode=CHEWING_INPUT_MODE_SELECTING;
1313
}else if (self->inputMode==CHEWING_INPUT_MODE_SELECTING_DONE){
1314
/* In SELECTING_DONE mode */
1315
/* One of selection keys is pressed */
1317
/* In SELECTING mode */
1321
if (chewing_buffer_Len(self->context)+ zhuyin_count==0){
1322
/* If preedit buffer is empty, then enter BYPASS mode.*/
1323
/* So cursor keys can be used freely. */
1324
self->inputMode=CHEWING_INPUT_MODE_BYPASS;
1325
self->_priv->zhuyin_latest[0]='\0';
1328
G_DEBUG_MSG(3, "[I3] determine_input_mode() return: zhuyin_latest=%s zhuyin_tone=%d inputMode=%d",
1329
self->_priv->zhuyin_latest,zhuyin_tone,self->inputMode);
1331
#line 1332 "ibus-chewing-engine.c"
1332
#undef __GOB_FUNCTION__
1334
#line 763 "/home/dchen/ibus-chewing/src/IBusChewingEngine.gob"
1336
ibus_chewing_engine_commit (IBusChewingEngine * self)
1338
#line 1339 "ibus-chewing-engine.c"
1339
#define __GOB_FUNCTION__ "IBus:Chewing:Engine::commit"
1340
#line 763 "/home/dchen/ibus-chewing/src/IBusChewingEngine.gob"
1341
g_return_val_if_fail (self != NULL, (gboolean )0);
1342
#line 763 "/home/dchen/ibus-chewing/src/IBusChewingEngine.gob"
1343
g_return_val_if_fail (IBUS_IS_CHEWING_ENGINE (self), (gboolean )0);
1344
#line 1345 "ibus-chewing-engine.c"
1346
#line 763 "/home/dchen/ibus-chewing/src/IBusChewingEngine.gob"
1348
gint commit=chewing_commit_Check(self->context);
1349
G_DEBUG_MSG(2,"[I2] commit() %s statusFlags=%x", (commit) ? "TRUE": "FALSE", self->_priv->statusFlags);
1350
if ((self->_priv->statusFlags & ENGINE_STATUS_NEED_COMMIT) && commit){
1351
IBusText *iText=NULL;
1353
gchar *commit_string=chewing_commit_String(self->context);
1354
G_DEBUG_MSG(3,"[I3] commit() commit:%s", commit_string);
1355
iText=g_object_ref_sink(ibus_text_new_from_string(commit_string));
1356
ibus_engine_commit_text(IBUS_ENGINE(self),iText);
1357
g_free(commit_string);
1358
g_object_unref(iText);
1359
if (!chewing_buffer_Check(self->context)){
1360
/* Buffer is clean */
1361
ibus_chewing_engine_clear_status_flag(self, ENGINE_STATUS_NEED_COMMIT | ENGINE_STATUS_FORCE_COMMIT );
1362
}else if (self->_priv->statusFlags & ENGINE_STATUS_FORCE_COMMIT){
1363
/* Flush the buffer */
1364
chewing_handle_Enter(self->context);
1365
commit_string=chewing_commit_String(self->context);
1366
iText=g_object_ref_sink(ibus_text_new_from_string(commit_string));
1367
ibus_engine_commit_text(IBUS_ENGINE(self),iText);
1368
g_free(commit_string);
1369
g_object_unref(iText);
1370
ibus_chewing_engine_clear_status_flag(self, ENGINE_STATUS_FORCE_COMMIT );
1375
#line 1376 "ibus-chewing-engine.c"
1376
#undef __GOB_FUNCTION__
1378
#line 792 "/home/dchen/ibus-chewing/src/IBusChewingEngine.gob"
1380
ibus_chewing_engine_force_commit (IBusChewingEngine * self)
1382
#line 1383 "ibus-chewing-engine.c"
1383
#define __GOB_FUNCTION__ "IBus:Chewing:Engine::force_commit"
1384
#line 792 "/home/dchen/ibus-chewing/src/IBusChewingEngine.gob"
1385
g_return_if_fail (self != NULL);
1386
#line 792 "/home/dchen/ibus-chewing/src/IBusChewingEngine.gob"
1387
g_return_if_fail (IBUS_IS_CHEWING_ENGINE (self));
1388
#line 1389 "ibus-chewing-engine.c"
1390
#line 792 "/home/dchen/ibus-chewing/src/IBusChewingEngine.gob"
1392
G_DEBUG_MSG(3,"[I3] force_commit() buffer=%d, commit=%d statusFlags=%x",
1393
chewing_buffer_Check(self->context),chewing_commit_Check(self->context), self->_priv->statusFlags);
1394
/* Remove the incomplete zhuyin symbol */
1395
if (self->inputMode==CHEWING_INPUT_MODE_EDITING)
1396
chewing_handle_Esc(self->context);
1397
if (chewing_buffer_Check(self->context)){
1398
if (!chewing_commit_Check(self->context)){
1399
/* Close candidate window */
1400
if (self->_priv->statusFlags & ENGINE_STATUS_SHOW_CANDIDATE){
1401
chewing_handle_Esc(self->context);
1403
chewing_handle_Enter(self->context);
1405
ibus_chewing_engine_set_status_flag(self, ENGINE_STATUS_NEED_COMMIT | ENGINE_STATUS_FORCE_COMMIT);
1409
#line 1410 "ibus-chewing-engine.c"
1410
#undef __GOB_FUNCTION__
1412
#line 815 "/home/dchen/ibus-chewing/src/IBusChewingEngine.gob"
1414
___18_ibus_chewing_engine_reset (IBusEngine * engine G_GNUC_UNUSED)
1415
#line 1416 "ibus-chewing-engine.c"
1416
#define PARENT_HANDLER(___engine) \
1417
{ if(IBUS_ENGINE_CLASS(parent_class)->reset) \
1418
(* IBUS_ENGINE_CLASS(parent_class)->reset)(___engine); }
1420
#define __GOB_FUNCTION__ "IBus:Chewing:Engine::reset"
1422
#line 816 "/home/dchen/ibus-chewing/src/IBusChewingEngine.gob"
1424
G_DEBUG_MSG(1,"[I1] reset");
1425
Self *self=SELF(engine);
1426
if (self->_priv->statusFlags & ENGINE_STATUS_NEED_COMMIT){
1427
/* Force commit non-empty preedit buffer */
1428
self_force_commit(self);
1430
ibus_lookup_table_clear(self->table);
1431
/* Save KBType type, becaue chewing_Reset() will reset it to default.
1433
int kbType=chewing_get_KBType(self->context);
1434
chewing_Reset(self->context);
1435
chewing_set_KBType(self->context,kbType);
1436
ibus_engine_hide_auxiliary_text(IBUS_ENGINE(engine));
1437
ibus_engine_hide_lookup_table(IBUS_ENGINE(self));
1439
#line 1440 "ibus-chewing-engine.c"
1440
#undef __GOB_FUNCTION__
1441
#undef PARENT_HANDLER
1443
#line 833 "/home/dchen/ibus-chewing/src/IBusChewingEngine.gob"
1445
___19_ibus_chewing_engine_page_up (IBusEngine * engine G_GNUC_UNUSED)
1446
#line 1447 "ibus-chewing-engine.c"
1447
#define PARENT_HANDLER(___engine) \
1448
{ if(IBUS_ENGINE_CLASS(parent_class)->page_up) \
1449
(* IBUS_ENGINE_CLASS(parent_class)->page_up)(___engine); }
1451
#define __GOB_FUNCTION__ "IBus:Chewing:Engine::page_up"
1453
#line 834 "/home/dchen/ibus-chewing/src/IBusChewingEngine.gob"
1455
Self *self=SELF(engine);
1456
chewing_handle_PageUp(self->context);
1459
#line 1460 "ibus-chewing-engine.c"
1460
#undef __GOB_FUNCTION__
1461
#undef PARENT_HANDLER
1463
#line 841 "/home/dchen/ibus-chewing/src/IBusChewingEngine.gob"
1465
___1a_ibus_chewing_engine_page_down (IBusEngine * engine G_GNUC_UNUSED)
1466
#line 1467 "ibus-chewing-engine.c"
1467
#define PARENT_HANDLER(___engine) \
1468
{ if(IBUS_ENGINE_CLASS(parent_class)->page_down) \
1469
(* IBUS_ENGINE_CLASS(parent_class)->page_down)(___engine); }
1471
#define __GOB_FUNCTION__ "IBus:Chewing:Engine::page_down"
1473
#line 842 "/home/dchen/ibus-chewing/src/IBusChewingEngine.gob"
1475
Self *self=SELF(engine);
1476
chewing_handle_PageDown(self->context);
1479
#line 1480 "ibus-chewing-engine.c"
1480
#undef __GOB_FUNCTION__
1481
#undef PARENT_HANDLER
1483
#line 848 "/home/dchen/ibus-chewing/src/IBusChewingEngine.gob"
1485
___1b_ibus_chewing_engine_cursor_up (IBusEngine * engine G_GNUC_UNUSED)
1486
#line 1487 "ibus-chewing-engine.c"
1487
#define PARENT_HANDLER(___engine) \
1488
{ if(IBUS_ENGINE_CLASS(parent_class)->cursor_up) \
1489
(* IBUS_ENGINE_CLASS(parent_class)->cursor_up)(___engine); }
1491
#define __GOB_FUNCTION__ "IBus:Chewing:Engine::cursor_up"
1493
#line 849 "/home/dchen/ibus-chewing/src/IBusChewingEngine.gob"
1495
Self *self=SELF(engine);
1496
chewing_handle_Up(self->context);
1499
#line 1500 "ibus-chewing-engine.c"
1500
#undef __GOB_FUNCTION__
1501
#undef PARENT_HANDLER
1503
#line 855 "/home/dchen/ibus-chewing/src/IBusChewingEngine.gob"
1505
___1c_ibus_chewing_engine_cursor_down (IBusEngine * engine G_GNUC_UNUSED)
1506
#line 1507 "ibus-chewing-engine.c"
1507
#define PARENT_HANDLER(___engine) \
1508
{ if(IBUS_ENGINE_CLASS(parent_class)->cursor_down) \
1509
(* IBUS_ENGINE_CLASS(parent_class)->cursor_down)(___engine); }
1511
#define __GOB_FUNCTION__ "IBus:Chewing:Engine::cursor_down"
1513
#line 856 "/home/dchen/ibus-chewing/src/IBusChewingEngine.gob"
1515
Self *self=SELF(engine);
1516
chewing_handle_Down(self->context);
1519
#line 1520 "ibus-chewing-engine.c"
1520
#undef __GOB_FUNCTION__
1521
#undef PARENT_HANDLER
1523
#line 862 "/home/dchen/ibus-chewing/src/IBusChewingEngine.gob"
1525
___1d_ibus_chewing_engine_enable (IBusEngine * engine G_GNUC_UNUSED)
1526
#line 1527 "ibus-chewing-engine.c"
1527
#define PARENT_HANDLER(___engine) \
1528
{ if(IBUS_ENGINE_CLASS(parent_class)->enable) \
1529
(* IBUS_ENGINE_CLASS(parent_class)->enable)(___engine); }
1531
#define __GOB_FUNCTION__ "IBus:Chewing:Engine::enable"
1533
#line 863 "/home/dchen/ibus-chewing/src/IBusChewingEngine.gob"
1535
G_DEBUG_MSG(2,"[I2] enable()");
1536
Self *self=SELF(engine);
1539
self_load_setting(self);
1541
self_refresh_property_list(self);
1542
self->inputMode=CHEWING_INPUT_MODE_SELECTING_DONE;
1543
ibus_chewing_engine_set_status_flag(self, ENGINE_STATUS_ENABLED);
1545
#line 1546 "ibus-chewing-engine.c"
1546
#undef __GOB_FUNCTION__
1547
#undef PARENT_HANDLER
1549
#line 875 "/home/dchen/ibus-chewing/src/IBusChewingEngine.gob"
1551
___1e_ibus_chewing_engine_disable (IBusEngine * engine G_GNUC_UNUSED)
1552
#line 1553 "ibus-chewing-engine.c"
1553
#define PARENT_HANDLER(___engine) \
1554
{ if(IBUS_ENGINE_CLASS(parent_class)->disable) \
1555
(* IBUS_ENGINE_CLASS(parent_class)->disable)(___engine); }
1557
#define __GOB_FUNCTION__ "IBus:Chewing:Engine::disable"
1559
#line 876 "/home/dchen/ibus-chewing/src/IBusChewingEngine.gob"
1561
G_DEBUG_MSG(2,"[I2] disable()");
1562
Self *self=SELF(engine);
1563
self_force_commit(self);
1564
self_hide_property_list(self);
1565
self->inputMode=CHEWING_INPUT_MODE_BYPASS;
1566
ibus_chewing_engine_clear_status_flag(self,ENGINE_STATUS_ENABLED);
1568
#line 1569 "ibus-chewing-engine.c"
1569
#undef __GOB_FUNCTION__
1570
#undef PARENT_HANDLER
1572
#line 885 "/home/dchen/ibus-chewing/src/IBusChewingEngine.gob"
1574
___1f_ibus_chewing_engine_focus_in (IBusEngine * engine G_GNUC_UNUSED)
1575
#line 1576 "ibus-chewing-engine.c"
1576
#define PARENT_HANDLER(___engine) \
1577
{ if(IBUS_ENGINE_CLASS(parent_class)->focus_in) \
1578
(* IBUS_ENGINE_CLASS(parent_class)->focus_in)(___engine); }
1580
#define __GOB_FUNCTION__ "IBus:Chewing:Engine::focus_in"
1582
#line 886 "/home/dchen/ibus-chewing/src/IBusChewingEngine.gob"
1584
Self *self=SELF(engine);
1586
self_load_setting(self);
1588
self_refresh_property_list(self);
1590
/* Sync Caps_Lock and ChiEngMode */
1591
guint modifiers=keyModifier_get(self->_priv->pDisplay);
1592
gint caps_is_lock=(modifiers & IBUS_LOCK_MASK)!=0;
1593
G_DEBUG_MSG(2,"[I2] focus_in(): statusFlags=%d ChiEng=%d IBUS_LOCK=%d",
1594
self->_priv->statusFlags,
1595
chewing_get_ChiEngMode(self->context),caps_is_lock);
1596
if (chewing_get_ChiEngMode(self->context)==caps_is_lock){
1597
/* Caps_lock and ChiEngMode does not agree each other */
1598
switch(self->syncCapsLock_local){
1599
case CHEWING_MODIFIER_SYNC_FROM_KEYBOARD:
1600
chewing_set_ChiEngMode(self->context,!caps_is_lock);
1602
case CHEWING_MODIFIER_SYNC_FROM_IM:
1603
/* fake event won't go through process_key_event */
1604
key_send_fake_event(IBUS_Caps_Lock,self->_priv->pDisplay);
1607
g_warning("Caps_lock and ChiEngMode does not agree each other!");
1612
self_refresh_property_list(self);
1614
ibus_chewing_engine_set_status_flag(self, ENGINE_STATUS_FOCUS_IN);
1615
G_DEBUG_MSG(4,"[I4] focus_in(): return");
1617
#line 1618 "ibus-chewing-engine.c"
1618
#undef __GOB_FUNCTION__
1619
#undef PARENT_HANDLER
1621
#line 921 "/home/dchen/ibus-chewing/src/IBusChewingEngine.gob"
1623
___20_ibus_chewing_engine_focus_out (IBusEngine * engine G_GNUC_UNUSED)
1624
#line 1625 "ibus-chewing-engine.c"
1625
#define PARENT_HANDLER(___engine) \
1626
{ if(IBUS_ENGINE_CLASS(parent_class)->focus_out) \
1627
(* IBUS_ENGINE_CLASS(parent_class)->focus_out)(___engine); }
1629
#define __GOB_FUNCTION__ "IBus:Chewing:Engine::focus_out"
1631
#line 922 "/home/dchen/ibus-chewing/src/IBusChewingEngine.gob"
1633
Self *self=SELF(engine);
1634
G_DEBUG_MSG(2,"[I2] focus_out(): statusFlags=%d",self->_priv->statusFlags);
1635
self_force_commit(self);
1636
ibus_chewing_engine_clear_status_flag(self, ENGINE_STATUS_FOCUS_IN);
1637
G_DEBUG_MSG(5,"[I5] focus_out(): return");
1639
#line 1640 "ibus-chewing-engine.c"
1640
#undef __GOB_FUNCTION__
1641
#undef PARENT_HANDLER
1643
#line 930 "/home/dchen/ibus-chewing/src/IBusChewingEngine.gob"
1645
___21_ibus_chewing_engine_property_activate (IBusEngine * engine G_GNUC_UNUSED, const gchar * prop_name, guint prop_state)
1646
#line 1647 "ibus-chewing-engine.c"
1647
#define PARENT_HANDLER(___engine,___prop_name,___prop_state) \
1648
{ if(IBUS_ENGINE_CLASS(parent_class)->property_activate) \
1649
(* IBUS_ENGINE_CLASS(parent_class)->property_activate)(___engine,___prop_name,___prop_state); }
1651
#define __GOB_FUNCTION__ "IBus:Chewing:Engine::property_activate"
1653
#line 931 "/home/dchen/ibus-chewing/src/IBusChewingEngine.gob"
1655
G_DEBUG_MSG(2,"[I2] property_activate(-, %s, %u)", prop_name, prop_state);
1656
Self *self=SELF(engine);
1657
gboolean needRefresh=TRUE;
1658
if (strcmp(prop_name,"chewing_chieng_prop")==0){
1659
/* Toggle Chinese <-> English */
1660
chewing_set_ChiEngMode(self->context, !chewing_get_ChiEngMode(self->context));
1661
}else if (strcmp(prop_name,"chewing_alnumSize_prop")==0){
1662
/* Toggle Full <-> Half */
1663
chewing_set_ShapeMode(self->context, !chewing_get_ShapeMode(self->context));
1664
}else if (strcmp(prop_name,"chewing_settings_prop")==0){
1665
if (self->settings_prop->state==PROP_STATE_UNCHECKED){
1666
if (gtk_dialog_run(GTK_DIALOG(self->setting_dialog))==GTK_RESPONSE_OK){
1667
self_save_config_all(self);
1669
gtk_widget_hide(self->setting_dialog);
1670
self->settings_prop->state=PROP_STATE_UNCHECKED;
1673
G_DEBUG_MSG(2,"[I2] property_activate(-, %s, %u) not recognized",prop_name, prop_state);
1677
self_refresh_property(self,prop_name);
1679
#line 1680 "ibus-chewing-engine.c"
1680
#undef __GOB_FUNCTION__
1681
#undef PARENT_HANDLER
1683
#line 957 "/home/dchen/ibus-chewing/src/IBusChewingEngine.gob"
1685
___22_ibus_chewing_engine_property_show (IBusEngine * engine G_GNUC_UNUSED, const gchar * prop_name)
1686
#line 1687 "ibus-chewing-engine.c"
1687
#define PARENT_HANDLER(___engine,___prop_name) \
1688
{ if(IBUS_ENGINE_CLASS(parent_class)->property_show) \
1689
(* IBUS_ENGINE_CLASS(parent_class)->property_show)(___engine,___prop_name); }
1691
#define __GOB_FUNCTION__ "IBus:Chewing:Engine::property_show"
1693
#line 958 "/home/dchen/ibus-chewing/src/IBusChewingEngine.gob"
1695
G_DEBUG_MSG(2,"[I2] property_show(-, %s)",prop_name);
1696
Self *self=SELF(engine);
1697
IBusProperty *prop=self_get_iBusProperty(self, prop_name);
1698
ibus_property_set_visible(prop,TRUE);
1699
ibus_engine_update_property(engine,prop);
1701
#line 1702 "ibus-chewing-engine.c"
1702
#undef __GOB_FUNCTION__
1703
#undef PARENT_HANDLER
1705
#line 966 "/home/dchen/ibus-chewing/src/IBusChewingEngine.gob"
1707
___23_ibus_chewing_engine_property_hide (IBusEngine * engine G_GNUC_UNUSED, const gchar * prop_name)
1708
#line 1709 "ibus-chewing-engine.c"
1709
#define PARENT_HANDLER(___engine,___prop_name) \
1710
{ if(IBUS_ENGINE_CLASS(parent_class)->property_hide) \
1711
(* IBUS_ENGINE_CLASS(parent_class)->property_hide)(___engine,___prop_name); }
1713
#define __GOB_FUNCTION__ "IBus:Chewing:Engine::property_hide"
1715
#line 967 "/home/dchen/ibus-chewing/src/IBusChewingEngine.gob"
1717
G_DEBUG_MSG(2,"[I2] property_hide(-, %s)",prop_name);
1718
Self *self=SELF(engine);
1719
IBusProperty *prop=self_get_iBusProperty(self, prop_name);
1720
ibus_property_set_visible(prop,FALSE);
1721
ibus_engine_update_property(engine,prop);
1723
#line 1724 "ibus-chewing-engine.c"
1724
#undef __GOB_FUNCTION__
1725
#undef PARENT_HANDLER
1727
#line 976 "/home/dchen/ibus-chewing/src/IBusChewingEngine.gob"
1729
#include "IBusChewingEngine-keys.c"
1731
#line 1732 "ibus-chewing-engine.c"