HangulFactory::HangulFactory (const ConfigPointer &config) { m_uuid = "d75857a5-4148-4745-89e2-1da7ddaf70a9"; m_name = _("Korean"); m_config = config; m_keyboard_layout = "2"; m_show_candidate_comment = true; m_use_ascii_mode = false; m_commit_by_word = false; m_hanja_table = hanja_table_load(NULL); m_symbol_table = NULL; std::string symbol_file = getenv("HOME"); symbol_file += "/.scim/hangul/symbol.txt"; if (access(symbol_file.c_str(), R_OK) == 0) m_symbol_table = hanja_table_load(symbol_file.c_str()); if (m_symbol_table == NULL) { symbol_file = SCIM_HANGUL_DATADIR "/symbol.txt"; if (access(symbol_file.c_str(), R_OK) == 0) m_symbol_table = hanja_table_load(symbol_file.c_str()); } set_languages ("ko"); reload_config(m_config); m_reload_signal_connection = m_config->signal_connect_reload(slot(this, &HangulFactory::reload_config)); }
static void nimf_libhangul_init (NimfLibhangul *hangul) { g_debug (G_STRLOC ": %s", G_STRFUNC); gchar **hanja_keys; hangul->settings = g_settings_new ("org.nimf.engines.nimf-libhangul"); hangul->method = g_settings_get_string (hangul->settings, "get-method-infos"); hangul->is_double_consonant_rule = g_settings_get_boolean (hangul->settings, "double-consonant-rule"); hangul->is_auto_reordering = g_settings_get_boolean (hangul->settings, "auto-reordering"); hangul->ignore_reset_in_commit_cb = g_settings_get_boolean (hangul->settings, "ignore-reset-in-commit-cb"); hanja_keys = g_settings_get_strv (hangul->settings, "hanja-keys"); hangul->hanja_keys = nimf_key_newv ((const gchar **) hanja_keys); hangul->context = hangul_ic_new (hangul->method); hangul->id = g_strdup ("nimf-libhangul"); hangul->preedit_string = g_strdup (""); hangul->preedit_attrs = g_malloc0_n (2, sizeof (NimfPreeditAttr *)); hangul->preedit_attrs[0] = nimf_preedit_attr_new (NIMF_PREEDIT_ATTR_UNDERLINE, 0, 0); hangul->preedit_attrs[1] = NULL; if (nimf_libhangul_hanja_table_ref_count == 0) { nimf_libhangul_hanja_table = hanja_table_load (NULL); nimf_libhangul_symbol_table = hanja_table_load (MSSYMBOL_PATH); } nimf_libhangul_hanja_table_ref_count++; g_strfreev (hanja_keys); nimf_libhangul_update_transition_cb (hangul); g_signal_connect (hangul->settings, "changed::get-method-infos", G_CALLBACK (on_changed_method), hangul); g_signal_connect (hangul->settings, "changed::trigger-keys", G_CALLBACK (on_changed_keys), hangul); g_signal_connect (hangul->settings, "changed::hanja-keys", G_CALLBACK (on_changed_keys), hangul); g_signal_connect (hangul->settings, "changed::double-consonant-rule", G_CALLBACK (on_changed_double_consonant_rule), hangul); g_signal_connect (hangul->settings, "changed::auto-reordering", G_CALLBACK (on_changed_auto_reordering), hangul); g_signal_connect (hangul->settings, "changed::ignore-reset-in-commit-cb", G_CALLBACK (on_changed_ignore_reset_in_commit_cb), hangul); }
void ibus_hangul_init (IBusBus *bus) { GVariant* value; hanja_table = hanja_table_load (NULL); symbol_table = hanja_table_load (IBUSHANGUL_DATADIR "/data/symbol.txt"); config = ibus_bus_get_config (bus); if (config) g_object_ref_sink (config); hangul_keyboard = g_string_new_len ("2", 8); value = ibus_config_get_value (config, "engine/Hangul", "HangulKeyboard"); if (value != NULL) { const gchar* str = g_variant_get_string (value, NULL); g_string_assign (hangul_keyboard, str); g_variant_unref(value); } hanja_key_list_init(&hanja_keys); value = ibus_config_get_value (config, "engine/Hangul", "HanjaKeys"); if (value != NULL) { const gchar* str = g_variant_get_string (value, NULL); hanja_key_list_set_from_string(&hanja_keys, str); g_variant_unref(value); } else { hanja_key_list_append(&hanja_keys, IBUS_Hangul_Hanja, 0); hanja_key_list_append(&hanja_keys, IBUS_F9, 0); } value = ibus_config_get_value (config, "engine/Hangul", "WordCommit"); if (value != NULL) { word_commit = g_variant_get_boolean (value); g_variant_unref(value); } value = ibus_config_get_value (config, "engine/Hangul", "AutoReorder"); if (value != NULL) { auto_reorder = g_variant_get_boolean (value); g_variant_unref (value); } keymap = ibus_keymap_get("us"); }
int main(int argc, char *argv[]) { char* hanja_table_file = NULL; char buf[256] = { '\0', }; if (argc > 1) hanja_table_file = argv[1]; HanjaTable *table; table = hanja_table_load(hanja_table_file); while (fgets(buf, sizeof(buf), stdin) != NULL) { char* p = strchr(buf, '\n'); if (p != NULL) *p = '\0'; HanjaList *list = hanja_table_match_prefix(table, buf); int i, n; n = hanja_list_get_size(list); for (i = 0; i < n; i++) { const char* key = hanja_list_get_nth_key(list, i); const char* value = hanja_list_get_nth_value(list, i); const char* comment = hanja_list_get_nth_comment(list, i); printf("%s:%s:%s\n", key, value, comment); } hanja_list_delete(list); } hanja_table_delete(table); return 0; }
QInputContextPluginHangul::QInputContextPluginHangul() { if (QInputContextHangul::hanjaTable) hanja_table_delete(QInputContextHangul::hanjaTable); QInputContextHangul::hanjaTable = hanja_table_load(NULL); }