コード例 #1
0
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));
}
コード例 #2
0
ファイル: nimf-libhangul.c プロジェクト: cogniti/nimf
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);
}
コード例 #3
0
ファイル: engine.c プロジェクト: kleopatra999/ibus-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");
}
コード例 #4
0
ファイル: hanja.c プロジェクト: Nanbu21/libhangul
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;
}
コード例 #5
0
QInputContextPluginHangul::QInputContextPluginHangul()
{
    if (QInputContextHangul::hanjaTable)
	hanja_table_delete(QInputContextHangul::hanjaTable);
    QInputContextHangul::hanjaTable = hanja_table_load(NULL);
}