static void ibus_handwrite_engine_class_init(IBusHandwriteEngineClass *klass) { //init global class data IBusObjectClass *ibus_object_class = IBUS_OBJECT_CLASS (klass); IBusEngineClass *engine_class = IBUS_ENGINE_CLASS (klass); // parent_class = (IBusEngineClass *) g_type_class_peek_parent(klass); ibus_object_class->destroy = (IBusObjectDestroyFunc) ibus_handwrite_engine_destroy; engine_class->process_key_event = ibus_handwrite_engine_process_key_event; engine_class->disable = (ibus_engine_callback) ibus_handwrite_engine_disable; engine_class->enable = (ibus_engine_callback) ibus_handwrite_engine_enable; engine_class->focus_in = (ibus_engine_callback) ibus_handwrite_engine_focus_in; engine_class->focus_out = (ibus_engine_callback) ibus_handwrite_engine_focus_out; engine_class->reset = (ibus_engine_callback) ibus_handwrite_engine_reset; engine_class->property_activate = ibus_handwrite_property_activate; klass->commit_text = ibus_handwrite_engine_commit_text; }
// initialize the meta class object void ibus_sunpinyin_engine_class_init (IBusSunPinyinEngineClass *klass) { IBusObjectClass *ibus_object_class = IBUS_OBJECT_CLASS (klass); IBusEngineClass *engine_class = IBUS_ENGINE_CLASS (klass); parent_class = (IBusEngineClass *) g_type_class_peek_parent (klass); ibus_object_class->destroy = (IBusObjectDestroyFunc) ibus_sunpinyin_engine_destroy; engine_class->process_key_event = ibus_sunpinyin_engine_process_key_event; engine_class->focus_in = ibus_sunpinyin_engine_focus_in; engine_class->focus_out = ibus_sunpinyin_engine_focus_out; engine_class->reset = ibus_sunpinyin_engine_reset; engine_class->enable = ibus_sunpinyin_engine_enable; engine_class->disable = ibus_sunpinyin_engine_disable; engine_class->focus_in = ibus_sunpinyin_engine_focus_in; engine_class->focus_out = ibus_sunpinyin_engine_focus_out; engine_class->page_up = ibus_sunpinyin_engine_page_up; engine_class->page_down = ibus_sunpinyin_engine_page_down; engine_class->cursor_up = ibus_sunpinyin_engine_cursor_up; engine_class->cursor_down = ibus_sunpinyin_engine_cursor_down; engine_class->property_activate = ibus_sunpinyin_engine_property_activate; engine_class->candidate_clicked = ibus_sunpinyin_engine_candidate_clicked; }
static void ibus_lanxang_engine_class_init (IBusLanXangEngineClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); IBusObjectClass *ibus_object_class = IBUS_OBJECT_CLASS (klass); IBusEngineClass *engine_class = IBUS_ENGINE_CLASS (klass); object_class->constructor = ibus_lanxang_engine_constructor; ibus_object_class->destroy = (IBusObjectDestroyFunc) ibus_lanxang_engine_destroy; engine_class->process_key_event = ibus_lanxang_engine_process_key_event; }
static void ibus_unikey_engine_class_init(IBusUnikeyEngineClass* klass) { GObjectClass* object_class = G_OBJECT_CLASS(klass); IBusObjectClass* ibus_object_class = IBUS_OBJECT_CLASS(klass); IBusEngineClass* engine_class = IBUS_ENGINE_CLASS(klass); parent_class = (IBusEngineClass* )g_type_class_peek_parent(klass); object_class->constructor = ibus_unikey_engine_constructor; ibus_object_class->destroy = (IBusObjectDestroyFunc)ibus_unikey_engine_destroy; engine_class->process_key_event = ibus_unikey_engine_process_key_event; engine_class->reset = ibus_unikey_engine_reset; engine_class->enable = ibus_unikey_engine_enable; engine_class->disable = ibus_unikey_engine_disable; engine_class->focus_in = ibus_unikey_engine_focus_in; engine_class->focus_out = ibus_unikey_engine_focus_out; engine_class->property_activate = ibus_unikey_engine_property_activate; }
static void ibus_m17n_engine_class_init (IBusM17NEngineClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); IBusObjectClass *ibus_object_class = IBUS_OBJECT_CLASS (klass); IBusEngineClass *engine_class = IBUS_ENGINE_CLASS (klass); gchar *engine_name, *lang = NULL, *name = NULL; IBusM17NEngineConfig *engine_config; gchar *hex; if (parent_class == NULL) parent_class = (IBusEngineClass *) g_type_class_peek_parent (klass); object_class->constructor = ibus_m17n_engine_constructor; ibus_object_class->destroy = (IBusObjectDestroyFunc) ibus_m17n_engine_destroy; engine_class->process_key_event = ibus_m17n_engine_process_key_event; engine_class->reset = ibus_m17n_engine_reset; engine_class->enable = ibus_m17n_engine_enable; engine_class->disable = ibus_m17n_engine_disable; engine_class->focus_in = ibus_m17n_engine_focus_in; engine_class->focus_out = ibus_m17n_engine_focus_out; engine_class->page_up = ibus_m17n_engine_page_up; engine_class->page_down = ibus_m17n_engine_page_down; engine_class->cursor_up = ibus_m17n_engine_cursor_up; engine_class->cursor_down = ibus_m17n_engine_cursor_down; engine_class->property_activate = ibus_m17n_engine_property_activate; if (!ibus_m17n_scan_class_name (G_OBJECT_CLASS_NAME (klass), &lang, &name)) { g_free (lang); g_free (name); return; } engine_name = g_strdup_printf ("m17n:%s:%s", lang, name); klass->config_section = g_strdup_printf ("engine/M17N/%s/%s", lang, name); g_free (lang); g_free (name); /* configurations are per class */ klass->preedit_foreground = INVALID_COLOR; klass->preedit_background = INVALID_COLOR; klass->preedit_underline = IBUS_ATTR_UNDERLINE_NONE; klass->lookup_table_orientation = IBUS_ORIENTATION_SYSTEM; engine_config = ibus_m17n_get_engine_config (engine_name); g_free (engine_name); if (ibus_m17n_config_get_string (config, klass->config_section, "preedit_foreground", &hex)) { klass->preedit_foreground = ibus_m17n_parse_color (hex); g_free (hex); } else if (engine_config->preedit_highlight) klass->preedit_foreground = PREEDIT_FOREGROUND; if (ibus_m17n_config_get_string (config, klass->config_section, "preedit_background", &hex)) { klass->preedit_background = ibus_m17n_parse_color (hex); g_free (hex); } else if (engine_config->preedit_highlight) klass->preedit_background = PREEDIT_BACKGROUND; if (!ibus_m17n_config_get_int (config, klass->config_section, "preedit_underline", &klass->preedit_underline)) klass->preedit_underline = IBUS_ATTR_UNDERLINE_NONE; if (!ibus_m17n_config_get_int (config, klass->config_section, "lookup_table_orientation", &klass->lookup_table_orientation)) klass->lookup_table_orientation = IBUS_ORIENTATION_SYSTEM; g_signal_connect (config, "value-changed", G_CALLBACK(ibus_m17n_config_value_changed), klass); klass->im = NULL; }