void IMContextImpl::set_enabled (bool status) { enabled = status; if (imengine != NULL) { imengine->focus_out (); imengine->reset (); } BackEndPointer scim_backend = scim_console->get_scim_backend (); const String scim_language = scim_console->get_scim_language (); if (enabled) { IMEngineFactoryPointer factory = scim_backend->get_default_factory (scim_language, "UTF-8"); if (factory != NULL) { imengine = factory->create_instance ("UTF-8", imengine_id); ++imengine_id; } } else { imengine = NULL; } if (imengine == NULL) { imengine = fallback_imengine; factory_info = PanelFactoryInfo (String (""), String (_ ("English/Keyboard")), String ("C"), String (SCIM_KEYBOARD_ICON_FILE)); } else { IMEngineFactoryPointer factory = scim_backend->get_factory (imengine->get_factory_uuid ()); factory_info = PanelFactoryInfo (factory->get_uuid (), utf8_wcstombs (factory->get_name ()), factory->get_language (), factory->get_icon_file ()); imengine->signal_connect_show_preedit_string (slot (slot_show_preedit)); imengine->signal_connect_show_aux_string (slot (slot_show_aux)); imengine->signal_connect_show_lookup_table (slot (slot_show_lookup_table)); imengine->signal_connect_hide_preedit_string (slot (slot_hide_preedit)); imengine->signal_connect_hide_aux_string (slot (slot_hide_aux)); imengine->signal_connect_hide_lookup_table (slot (slot_hide_lookup_table)); imengine->signal_connect_update_preedit_caret (slot (slot_update_preedit_cursor_position)); imengine->signal_connect_update_preedit_string (slot (slot_update_preedit_string)); imengine->signal_connect_update_aux_string (slot (slot_update_aux_string)); imengine->signal_connect_update_lookup_table (slot (slot_update_lookup_table)); imengine->signal_connect_commit_string (slot (slot_commit)); imengine->signal_connect_forward_key_event (slot (slot_forward_key_event)); imengine->signal_connect_register_properties (slot (slot_register_properties)); imengine->signal_connect_update_property (slot (slot_update_property)); imengine->signal_connect_beep (slot (slot_beep)); imengine->signal_connect_start_helper (slot (slot_start_helper)); imengine->signal_connect_stop_helper (slot (slot_stop_helper)); imengine->signal_connect_send_helper_event (slot (slot_send_helper_event)); imengine->signal_connect_get_surrounding_text (slot (slot_get_surrounding_text)); imengine->signal_connect_delete_surrounding_text (slot (slot_delete_surrounding_text)); } imengine->focus_in (); }
void IMContextImpl::change_imengine (IMEngineFactoryPointer new_factory) { if (imengine != NULL) { imengine->focus_out (); imengine->reset (); } BackEndPointer scim_backend = scim_console->get_scim_backend (); scim_backend->set_default_factory (scim_console->get_scim_language (), new_factory->get_uuid ()); imengine = new_factory->create_instance ("UTF-8", imengine_id); ++imengine_id; factory_info = PanelFactoryInfo (new_factory->get_uuid (), utf8_wcstombs (new_factory->get_name ()), new_factory->get_language (), new_factory->get_icon_file ()); if (imengine != NULL) { imengine->signal_connect_show_preedit_string (slot (slot_show_preedit)); imengine->signal_connect_show_aux_string (slot (slot_show_aux)); imengine->signal_connect_show_lookup_table (slot (slot_show_lookup_table)); imengine->signal_connect_hide_preedit_string (slot (slot_hide_preedit)); imengine->signal_connect_hide_aux_string (slot (slot_hide_aux)); imengine->signal_connect_hide_lookup_table (slot (slot_hide_lookup_table)); imengine->signal_connect_update_preedit_caret (slot (slot_update_preedit_cursor_position)); imengine->signal_connect_update_preedit_string (slot (slot_update_preedit_string)); imengine->signal_connect_update_aux_string (slot (slot_update_aux_string)); imengine->signal_connect_update_lookup_table (slot (slot_update_lookup_table)); imengine->signal_connect_commit_string (slot (slot_commit)); imengine->signal_connect_forward_key_event (slot (slot_forward_key_event)); imengine->signal_connect_register_properties (slot (slot_register_properties)); imengine->signal_connect_update_property (slot (slot_update_property)); imengine->signal_connect_beep (slot (slot_beep)); imengine->signal_connect_start_helper (slot (slot_start_helper)); imengine->signal_connect_stop_helper (slot (slot_stop_helper)); imengine->signal_connect_send_helper_event (slot (slot_send_helper_event)); imengine->signal_connect_get_surrounding_text (slot (slot_get_surrounding_text)); imengine->signal_connect_delete_surrounding_text (slot (slot_delete_surrounding_text)); } preedit_string.clear (); preedit_attributes.clear (); preedit_cursor_position = 0; preedit_shown = false; enabled = true; imengine->focus_in (); }