static gboolean ibus_property_copy (IBusProperty *dest, const IBusProperty *src) { gboolean retval; retval = IBUS_SERIALIZABLE_CLASS (ibus_property_parent_class)->copy ((IBusSerializable *) dest, (IBusSerializable *) src); g_return_val_if_fail (retval, FALSE); g_return_val_if_fail (IBUS_IS_PROPERTY (dest), FALSE); g_return_val_if_fail (IBUS_IS_PROPERTY (src), FALSE); dest->key = g_strdup (src->key); dest->icon = g_strdup (src->icon); if (src->label) { dest->label = (IBusText *) ibus_serializable_copy ((IBusSerializable *) src->label); } else dest->label = ibus_text_new_from_static_string (""); if (src->tooltip) { dest->tooltip = (IBusText *) ibus_serializable_copy ((IBusSerializable *) src->tooltip); } else dest->tooltip = ibus_text_new_from_static_string (""); dest->sensitive = src->sensitive; dest->visible = src->visible; dest->type = src->type; dest->state = src->state; dest->sub_props = (IBusPropList *) ibus_serializable_copy ((IBusSerializable *) src->sub_props); return TRUE; }
SunPinyinProperty SunPinyinProperty::create_letter_prop(ibus::Engine engine, bool state) { SunPinyinProperty prop(engine, PROP_LETTER); prop.m_info[0].label = ibus_text_new_from_static_string("Aa"); prop.m_info[0].icon = IBUS_SUNPINYIN_ICON_DIR"/halfwidth.svg"; prop.m_info[0].tooltip = ibus_text_new_from_static_string(_("Switch to full-width letter input mode")); prop.m_info[1].label = ibus_text_new_from_static_string("Aa"); prop.m_info[1].icon = IBUS_SUNPINYIN_ICON_DIR"/fullwidth.svg"; prop.m_info[1].tooltip = ibus_text_new_from_static_string(_("Switch to half-width letter input mode")); prop.init(state); return prop; }
SunPinyinProperty SunPinyinProperty::create_punct_prop(ibus::Engine engine, bool state) { SunPinyinProperty prop(engine, PROP_PUNCT); prop.m_info[0].label = ibus_text_new_from_static_string(",."); prop.m_info[0].icon = IBUS_SUNPINYIN_ICON_DIR"/enpunc.svg"; prop.m_info[0].tooltip = ibus_text_new_from_static_string(_("Switch to Chinese punctuation")); prop.m_info[1].label = ibus_text_new_from_static_string(",。"); prop.m_info[1].icon = IBUS_SUNPINYIN_ICON_DIR"/cnpunc.svg"; prop.m_info[1].tooltip = ibus_text_new_from_static_string(_("Switch to English punctuation")); prop.init(state); return prop; }
SunPinyinProperty SunPinyinProperty::create_status_prop(ibus::Engine engine, bool state) { SunPinyinProperty prop(engine, PROP_STATUS); prop.m_info[0].label = ibus_text_new_from_static_string("EN"); prop.m_info[0].icon = IBUS_SUNPINYIN_ICON_DIR"/eng.svg"; prop.m_info[0].tooltip = ibus_text_new_from_static_string(_("Switch to Chinese input mode")); prop.m_info[1].label = ibus_text_new_from_static_string("CN"); prop.m_info[1].icon = IBUS_SUNPINYIN_ICON_DIR"/han.svg"; prop.m_info[1].tooltip = ibus_text_new_from_static_string(_("Switch to English input mode")); prop.init(state); return prop; }
SetupLauncher::SetupLauncher() : ibus::Property( ibus_property_new("setup", PROP_TYPE_NORMAL, NULL, /* label */ NULL, /* icon */ NULL, /* tooltip */ TRUE, /* sensitive */ TRUE, /* visible */ PROP_STATE_UNCHECKED, /* state */ NULL)), m_name("setup") { m_info.label = ibus_text_new_from_static_string(_("Preference")); m_info.tooltip = ibus_text_new_from_static_string(_("Preference")); m_info.icon = IBUS_SUNPINYIN_ICON_DIR"/setup.svg"; init(); }
static gboolean lx_tn_engine_convert_seq (LxTNEngine *lx_tn_engine, IBusEngine *ibus_engine, gunichar input_char) { if (is_client_support_surrounding (ibus_engine)) { IBusText *surrounding; guint cursor_pos; guint anchor_pos; LxTNConv conv; ibus_engine_get_surrounding_text (ibus_engine, &surrounding, &cursor_pos, &anchor_pos); if (lx_tn_im_conversion (ibus_text_get_text (surrounding), cursor_pos, anchor_pos, input_char, &conv)) { IBusText *text; ibus_engine_delete_surrounding_text (ibus_engine, conv.del_offset, -conv.del_offset); text = ibus_text_new_from_static_string (conv.commit_text); ibus_engine_commit_text (ibus_engine, text); return TRUE; } } return FALSE; }
static void ibus_unikey_engine_commit_string(IBusEngine *engine, const gchar *string) { IBusText *text; text = ibus_text_new_from_static_string(string); ibus_engine_commit_text(engine, text); }
static void ibus_hangul_engine_clear_preedit_text (IBusHangulEngine *hangul) { IBusText *text; text = ibus_text_new_from_static_string (""); ibus_engine_update_preedit_text ((IBusEngine *)hangul, text, 0, FALSE); }
static void ibus_m17n_engine_commit_string (IBusM17NEngine *m17n, const gchar *string) { IBusText *text; text = ibus_text_new_from_static_string (string); ibus_engine_commit_text ((IBusEngine *)m17n, text); ibus_m17n_engine_update_preedit (m17n); }
static void ibus_unikey_engine_update_preedit_string(IBusEngine *engine, const gchar *string, gboolean visible) { IBusText *text; text = ibus_text_new_from_static_string(string); // underline text ibus_text_append_attribute(text, IBUS_ATTR_TYPE_UNDERLINE, IBUS_ATTR_UNDERLINE_SINGLE, 0, -1); // update and display text ibus_engine_update_preedit_text_with_mode(engine, text, ibus_text_get_length(text), visible, IBUS_ENGINE_PREEDIT_COMMIT); }
static void ibus_unikey_engine_commit(IBusEngine* engine) { unikey = (IBusUnikeyEngine*)engine; if (unikey->preeditstr->length() > 0) { IBusText *text; text = ibus_text_new_from_static_string(unikey->preeditstr->c_str()); ibus_engine_commit_text(engine, text); } ibus_unikey_engine_clean_buffer(engine); }
static void ibus_handwrite_engine_focus_in(IBusHandwriteEngine *engine) { UI_show_ui(engine); IBusPropList * pl = ibus_prop_list_new(); IBusProperty * p = ibus_property_new("choose-color", PROP_TYPE_NORMAL, ibus_text_new_from_static_string(_("color")), GTK_STOCK_COLOR_PICKER, ibus_text_new_from_static_string(_("click to set color")), TRUE, TRUE, PROP_STATE_UNCHECKED, NULL); ibus_prop_list_append(pl, p); #ifdef WITH_ZINNIA if( strcmp(lang,"jp") ==0 || strcmp(lang,"ja")) { extern char icondir[4096]; gchar * iconfile = g_strdup_printf("%s/switch.svg",icondir); g_debug("icon file is %s",iconfile); p = ibus_property_new("choose-engine", PROP_TYPE_NORMAL, ibus_text_new_from_static_string(_("engine")), iconfile, ibus_text_new_from_static_string(_("click to set engine")), TRUE, TRUE, PROP_STATE_UNCHECKED, NULL); g_free(iconfile); ibus_prop_list_append(pl, p); } #endif ibus_engine_register_properties(IBUS_ENGINE(engine), pl); }
static void ibus_hangul_engine_update_preedit_text (IBusHangulEngine *hangul) { const ucschar *hic_preedit; IBusText *text; UString *preedit; gint preedit_len; // ibus-hangul's preedit string is made up of ibus context's // internal preedit string and libhangul's preedit string. // libhangul only supports one syllable preedit string. // In order to make longer preedit string, ibus-hangul maintains // internal preedit string. hic_preedit = hangul_ic_get_preedit_string (hangul->context); preedit = ustring_dup (hangul->preedit); preedit_len = ustring_length(preedit); ustring_append_ucs4 (preedit, hic_preedit, -1); if (ustring_length(preedit) > 0) { IBusPreeditFocusMode preedit_option = IBUS_ENGINE_PREEDIT_COMMIT; if (hangul->hanja_list != NULL) preedit_option = IBUS_ENGINE_PREEDIT_CLEAR; text = ibus_text_new_from_ucs4 ((gunichar*)preedit->data); // ibus-hangul's internal preedit string ibus_text_append_attribute (text, IBUS_ATTR_TYPE_UNDERLINE, IBUS_ATTR_UNDERLINE_SINGLE, 0, preedit_len); // Preedit string from libhangul context. // This is currently composing syllable. ibus_text_append_attribute (text, IBUS_ATTR_TYPE_FOREGROUND, 0x00ffffff, preedit_len, -1); ibus_text_append_attribute (text, IBUS_ATTR_TYPE_BACKGROUND, 0x00000000, preedit_len, -1); ibus_engine_update_preedit_text_with_mode ((IBusEngine *)hangul, text, ibus_text_get_length (text), TRUE, preedit_option); } else { text = ibus_text_new_from_static_string (""); ibus_engine_update_preedit_text ((IBusEngine *)hangul, text, 0, FALSE); } ustring_delete(preedit); }
void ibus_property_set_label (IBusProperty *prop, IBusText *label) { g_assert (IBUS_IS_PROPERTY (prop)); g_return_if_fail (label == NULL || IBUS_IS_TEXT (label)); if (prop->label) { g_object_unref (prop->label); } if (label == NULL) { prop->label = ibus_text_new_from_static_string (""); } else { prop->label = g_object_ref_sink (label); } }
static void ibus_unikey_engine_update_preedit_string(IBusEngine *engine, const gchar *string, gboolean visible) { IBusText *text; text = ibus_text_new_from_static_string(string); // underline text ibus_text_append_attribute(text, IBUS_ATTR_TYPE_UNDERLINE, IBUS_ATTR_UNDERLINE_SINGLE, 0, -1); // update and display text ibus_engine_update_preedit_text(engine, text, ibus_text_get_length(text), visible); // every time have preedit text -> unlock mutex -> start capture mouse if (unikey->mouse_capture) { // unlock capture thread (start capture) pthread_mutex_unlock(&mutex_mcap); } }
void ibus_property_set_tooltip (IBusProperty *prop, IBusText *tooltip) { g_assert (IBUS_IS_PROPERTY (prop)); g_assert (tooltip == NULL || IBUS_IS_TEXT (tooltip)); if (prop->tooltip) { g_object_unref (prop->tooltip); } if (tooltip == NULL) { prop->tooltip = ibus_text_new_from_static_string (""); g_object_ref_sink (prop->tooltip); } else { prop->tooltip = tooltip; g_object_ref_sink (prop->tooltip); } }
static void ibus_m17n_engine_update_preedit (IBusM17NEngine *m17n) { IBusText *text; gchar *buf; IBusM17NEngineClass *klass = (IBusM17NEngineClass *) G_OBJECT_GET_CLASS (m17n); buf = ibus_m17n_mtext_to_utf8 (m17n->context->preedit); if (buf) { text = ibus_text_new_from_static_string (buf); if (klass->preedit_foreground != INVALID_COLOR) ibus_text_append_attribute (text, IBUS_ATTR_TYPE_FOREGROUND, klass->preedit_foreground, 0, -1); if (klass->preedit_background != INVALID_COLOR) ibus_text_append_attribute (text, IBUS_ATTR_TYPE_BACKGROUND, klass->preedit_background, 0, -1); ibus_text_append_attribute (text, IBUS_ATTR_TYPE_UNDERLINE, klass->preedit_underline, 0, -1); ibus_engine_update_preedit_text ((IBusEngine *) m17n, text, m17n->context->cursor_pos, mtext_len (m17n->context->preedit) > 0); } }
static void ibus_unikey_engine_property_activate(IBusEngine* engine, const gchar* prop_name, guint prop_state) { IBusProperty* prop; IBusText* label; guint i, j; unikey = (IBusUnikeyEngine*)engine; // input method active if (strncmp(prop_name, CONFIG_INPUTMETHOD, strlen(CONFIG_INPUTMETHOD)) == 0) { for (i=0; i<NUM_INPUTMETHOD; i++) { if (strcmp(prop_name + strlen(CONFIG_INPUTMETHOD)+1, Unikey_IMNames[i]) == 0) { unikey->im = Unikey_IM[i]; // update label for (j=0; j<unikey->prop_list->properties->len; j++) { prop = ibus_prop_list_get(unikey->prop_list, j); if (prop==NULL) return; else if (strcmp(ibus_property_get_key(prop), CONFIG_INPUTMETHOD) == 0) { label = ibus_text_new_from_static_string(Unikey_IMNames[i]); ibus_property_set_label(prop, label); break; } } // end update label // update property state for (j=0; j<unikey->menu_im->properties->len; j++) { prop = ibus_prop_list_get(unikey->menu_im, j); if (prop==NULL) return; else if (strcmp(ibus_property_get_key(prop), prop_name)==0) ibus_property_set_state(prop, PROP_STATE_CHECKED); else ibus_property_set_state(prop, PROP_STATE_UNCHECKED); } // end update property state break; } } } // end input method active // output charset active else if (strncmp(prop_name, CONFIG_OUTPUTCHARSET, strlen(CONFIG_OUTPUTCHARSET)) == 0) { for (i=0; i<NUM_OUTPUTCHARSET; i++) { if (strcmp(prop_name+strlen(CONFIG_OUTPUTCHARSET)+1, Unikey_OCNames[i]) == 0) { unikey->oc = Unikey_OC[i]; // update label for (j=0; j<unikey->prop_list->properties->len; j++) { prop = ibus_prop_list_get(unikey->prop_list, j); if (prop==NULL) return; else if (strcmp(ibus_property_get_key(prop), CONFIG_OUTPUTCHARSET)==0) { label = ibus_text_new_from_static_string(Unikey_OCNames[i]); ibus_property_set_label(prop, label); break; } } // end update label // update property state for (j=0; j<unikey->menu_oc->properties->len; j++) { prop = ibus_prop_list_get(unikey->menu_oc, j); if (prop==NULL) return; else if (strcmp(ibus_property_get_key(prop), prop_name) == 0) ibus_property_set_state(prop, PROP_STATE_CHECKED); else ibus_property_set_state(prop, PROP_STATE_UNCHECKED); } // end update property state break; } } } // end output charset active // spellcheck active else if (strcmp(prop_name, CONFIG_SPELLCHECK) == 0) { unikey->ukopt.spellCheckEnabled = !unikey->ukopt.spellCheckEnabled; // update state for (j = 0; j < unikey->menu_opt->properties->len ; j++) { prop = ibus_prop_list_get(unikey->menu_opt, j); if (prop == NULL) return; else if (strcmp(ibus_property_get_key(prop), CONFIG_SPELLCHECK) == 0) { ibus_property_set_state(prop, (unikey->ukopt.spellCheckEnabled == 1)? PROP_STATE_CHECKED:PROP_STATE_UNCHECKED); break; } } // end update state } // end spellcheck active // MacroEnabled active else if (strcmp(prop_name, CONFIG_MACROENABLED) == 0) { unikey->ukopt.macroEnabled = !unikey->ukopt.macroEnabled; // update state for (j = 0; j < unikey->menu_opt->properties->len ; j++) { prop = ibus_prop_list_get(unikey->menu_opt, j); if (prop == NULL) return; else if (strcmp(ibus_property_get_key(prop), CONFIG_MACROENABLED) == 0) { ibus_property_set_state(prop, (unikey->ukopt.macroEnabled == 1)? PROP_STATE_CHECKED:PROP_STATE_UNCHECKED); break; } } // end update state } // end MacroEnabled active // MouseCapture active else if (strcmp(prop_name, CONFIG_MOUSECAPTURE) == 0) { unikey->mouse_capture = !unikey->mouse_capture; // update state for (j = 0; j < unikey->menu_opt->properties->len ; j++) { prop = ibus_prop_list_get(unikey->menu_opt, j); if (prop == NULL) return; else if (strcmp(ibus_property_get_key(prop), CONFIG_MOUSECAPTURE) == 0) { ibus_property_set_state(prop, (unikey->mouse_capture == 1)? PROP_STATE_CHECKED:PROP_STATE_UNCHECKED); break; } } // end update state } // end MouseCapture active // if Run setup else if (strcmp(prop_name, "RunSetupGUI") == 0) { system(LIBEXECDIR "/ibus-setup-unikey &"); } // END Run setup ibus_unikey_engine_reset(engine); UnikeySetInputMethod(unikey->im); UnikeySetOutputCharset(unikey->oc); UnikeySetOptions(&unikey->ukopt); }
static void ibus_unikey_engine_create_property_list(IBusUnikeyEngine* unikey) { IBusProperty* prop; IBusText* label,* tooltip; gchar name[32]; guint i; if (unikey->prop_list == NULL) { unikey->prop_list = ibus_prop_list_new(); unikey->menu_im = ibus_prop_list_new(); unikey->menu_oc = ibus_prop_list_new(); unikey->menu_opt = ibus_prop_list_new(); g_object_ref_sink(unikey->prop_list); } // create input method menu // add item for (i = 0; i < NUM_INPUTMETHOD; i++) { label = ibus_text_new_from_static_string(Unikey_IMNames[i]); tooltip = ibus_text_new_from_static_string(""); // ? sprintf(name, CONFIG_INPUTMETHOD"_%s", Unikey_IMNames[i]); prop = ibus_property_new(name, PROP_TYPE_RADIO, label, "", tooltip, TRUE, TRUE, Unikey_IM[i]==unikey->im?PROP_STATE_CHECKED:PROP_STATE_UNCHECKED, NULL); if (ibus_prop_list_update_property(unikey->menu_im, prop) == false) ibus_prop_list_append(unikey->menu_im, prop); } // END create input method menu // create output charset menu // add item for (i = 0; i < NUM_OUTPUTCHARSET; i++) { label = ibus_text_new_from_static_string(Unikey_OCNames[i]); tooltip = ibus_text_new_from_static_string(""); // ? sprintf(name, CONFIG_OUTPUTCHARSET"_%s", Unikey_OCNames[i]); prop = ibus_property_new(name, PROP_TYPE_RADIO, label, "", tooltip, TRUE, TRUE, Unikey_OC[i]==unikey->oc?PROP_STATE_CHECKED:PROP_STATE_UNCHECKED, NULL); if (ibus_prop_list_update_property(unikey->menu_oc, prop) == false) ibus_prop_list_append(unikey->menu_oc, prop); } // END create output charset menu // create option menu (for configure unikey) // add option property // --create and add spellcheck property label = ibus_text_new_from_static_string(_("Enable spell check")); tooltip = ibus_text_new_from_static_string(_("If enable, you can decrease mistake when typing")); prop = ibus_property_new(CONFIG_SPELLCHECK, PROP_TYPE_TOGGLE, label, "", tooltip, TRUE, TRUE, (unikey->ukopt.spellCheckEnabled==1)? PROP_STATE_CHECKED:PROP_STATE_UNCHECKED, NULL); if (ibus_prop_list_update_property(unikey->menu_opt, prop) == false) ibus_prop_list_append(unikey->menu_opt, prop); // --create and add macroEnabled property label = ibus_text_new_from_static_string(_("Enable Macro")); tooltip = ibus_text_new_from_static_string(""); prop = ibus_property_new(CONFIG_MACROENABLED, PROP_TYPE_TOGGLE, label, "", tooltip, TRUE, TRUE, (unikey->ukopt.macroEnabled==1)? PROP_STATE_CHECKED:PROP_STATE_UNCHECKED, NULL); if (ibus_prop_list_update_property(unikey->menu_opt, prop) == false) ibus_prop_list_append(unikey->menu_opt, prop); // --create and add MouseCapture property label = ibus_text_new_from_static_string(_("Capture mouse event")); tooltip = ibus_text_new_from_static_string(_("Auto send PreEdit string to Application when mouse move or click")); prop = ibus_property_new(CONFIG_MOUSECAPTURE, PROP_TYPE_TOGGLE, label, "", tooltip, TRUE, TRUE, (unikey->mouse_capture==1)? PROP_STATE_CHECKED:PROP_STATE_UNCHECKED, NULL); if (ibus_prop_list_update_property(unikey->menu_opt, prop) == false) ibus_prop_list_append(unikey->menu_opt, prop); // --separator prop = ibus_property_new("", PROP_TYPE_SEPARATOR, NULL, "", NULL, TRUE, TRUE, PROP_STATE_UNCHECKED, NULL); if (ibus_prop_list_update_property(unikey->menu_opt, prop) == false) ibus_prop_list_append(unikey->menu_opt, prop); // --create and add Launch Setup GUI property label = ibus_text_new_from_static_string(_("Full setup...")); tooltip = ibus_text_new_from_static_string(_("Full setup utility for IBus-Unikey")); prop = ibus_property_new("RunSetupGUI", PROP_TYPE_NORMAL, label, "", tooltip, TRUE, TRUE, PROP_STATE_UNCHECKED, NULL); if (ibus_prop_list_update_property(unikey->menu_opt, prop) == false) ibus_prop_list_append(unikey->menu_opt, prop); // END create option menu // create top menu // add item // -- add input method menu for (i = 0; i < NUM_INPUTMETHOD; i++) { if (Unikey_IM[i] == unikey->im) break; } label = ibus_text_new_from_static_string(Unikey_IMNames[i]); tooltip = ibus_text_new_from_static_string(_("Choose input method")); prop = ibus_property_new(CONFIG_INPUTMETHOD, PROP_TYPE_MENU, label, "", tooltip, TRUE, TRUE, PROP_STATE_UNCHECKED, unikey->menu_im); if (ibus_prop_list_update_property(unikey->prop_list, prop) == false) ibus_prop_list_append(unikey->prop_list, prop); // -- add output charset menu for (i = 0; i < NUM_OUTPUTCHARSET; i++) { if (Unikey_OC[i] == unikey->oc) break; } label = ibus_text_new_from_static_string(Unikey_OCNames[i]); tooltip = ibus_text_new_from_static_string(_("Choose output charset")); prop = ibus_property_new(CONFIG_OUTPUTCHARSET, PROP_TYPE_MENU, label, "", tooltip, TRUE, TRUE, PROP_STATE_UNCHECKED, unikey->menu_oc); if (ibus_prop_list_update_property(unikey->prop_list, prop) == false) ibus_prop_list_append(unikey->prop_list, prop); // -- add option menu label = ibus_text_new_from_static_string(_("Options")); tooltip = ibus_text_new_from_static_string(_("Options for Unikey")); prop = ibus_property_new("Options", PROP_TYPE_MENU, label, "gtk-preferences", tooltip, TRUE, TRUE, PROP_STATE_UNCHECKED, unikey->menu_opt); if (ibus_prop_list_update_property(unikey->prop_list, prop) == false) ibus_prop_list_append(unikey->prop_list, prop); // end top menu }