void init_dialog_controls(GtkBuilder* builder)
{
    GtkWidget* wid;
    guint i;
    gchar* str;
    gboolean b;
    GtkListStore* ls;
    GtkTreeIter iter;

    // fill inputmethod
    ls = GTK_LIST_STORE(gtk_builder_get_object(builder, "list_input_method"));
    gtk_list_store_clear(ls);
    for (i = 0; i < NUM_INPUTMETHOD; i++)
    {
        gtk_list_store_append(ls, &iter);
        gtk_list_store_set(ls, &iter, 0, Unikey_IMNames[i], -1);
    }

    // fill outputcharset
    ls = GTK_LIST_STORE(gtk_builder_get_object(builder, "list_output_charset"));
    gtk_list_store_clear(ls);
    for (i = 0; i < NUM_OUTPUTCHARSET; i++)
    {
        gtk_list_store_append(ls, &iter);
        gtk_list_store_set(ls, &iter, 0, Unikey_OCNames[i], -1);
    }

    wid = GTK_WIDGET(gtk_builder_get_object(builder, "cbb_input_method"));
    g_signal_connect(wid, "changed", G_CALLBACK(input_method_combo_box_changed_cb), NULL);
    i = 0;
    if (ibus_unikey_config_get_string(config, CONFIG_SECTION, CONFIG_INPUTMETHOD, &str))
    {   
        for (; i < NUM_INPUTMETHOD; i++)
        {   
            if (strcasecmp(str, Unikey_IMNames[i]) == 0) break;
        }   
    }
    gtk_combo_box_set_active(GTK_COMBO_BOX(wid), i);

    wid = GTK_WIDGET(gtk_builder_get_object(builder, "cbb_output_charset"));
    g_signal_connect(wid, "changed", G_CALLBACK(output_charset_combo_box_changed_cb), NULL);
    i = 0;
    if (ibus_unikey_config_get_string(config, CONFIG_SECTION, CONFIG_OUTPUTCHARSET, &str))
    {   
        for (; i < NUM_OUTPUTCHARSET; i++)
        {   
            if (strcasecmp(str, Unikey_OCNames[i]) == 0) break;
        }   
    }
    gtk_combo_box_set_active(GTK_COMBO_BOX(wid), i);

    wid = GTK_WIDGET(gtk_builder_get_object(builder, "check_spellcheck"));
    g_signal_connect(wid, "toggled", G_CALLBACK(update_config_toggle_cb), (void*)CONFIG_SPELLCHECK);
    if (!ibus_unikey_config_get_boolean(config, CONFIG_SECTION, CONFIG_SPELLCHECK, &b))
        b = DEFAULT_CONF_SPELLCHECK;
    gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(wid), b);

    wid = GTK_WIDGET(gtk_builder_get_object(builder, "check_autorestorenonvn"));
    g_signal_connect(wid, "toggled", G_CALLBACK(update_config_toggle_cb), (void*)CONFIG_AUTORESTORENONVN);
    if (!ibus_unikey_config_get_boolean(config, CONFIG_SECTION, CONFIG_AUTORESTORENONVN, &b))
        b = DEFAULT_CONF_AUTONONVNRESTORE;
    gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(wid), b);

    wid = GTK_WIDGET(gtk_builder_get_object(builder, "check_modernstyle"));
    g_signal_connect(wid, "toggled", G_CALLBACK(update_config_toggle_cb), (void*)CONFIG_MODERNSTYLE);
    if (!ibus_unikey_config_get_boolean(config, CONFIG_SECTION, CONFIG_MODERNSTYLE, &b))
        b = DEFAULT_CONF_MODERNSTYLE;
    gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(wid), b);

    wid = GTK_WIDGET(gtk_builder_get_object(builder, "check_freemarking"));
    g_signal_connect(wid, "toggled", G_CALLBACK(update_config_toggle_cb), (void*)CONFIG_FREEMARKING);
    if (!ibus_unikey_config_get_boolean(config, CONFIG_SECTION, CONFIG_FREEMARKING, &b))
        b = DEFAULT_CONF_FREEMARKING;
    gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(wid), b);

    wid = GTK_WIDGET(gtk_builder_get_object(builder, "check_macroenable"));
    g_signal_connect(wid, "toggled", G_CALLBACK(update_config_toggle_cb), (void*)CONFIG_MACROENABLED);
    if (!ibus_unikey_config_get_boolean(config, CONFIG_SECTION, CONFIG_MACROENABLED, &b))
        b = DEFAULT_CONF_MACROENABLED;
    gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(wid), b);

    wid = GTK_WIDGET(gtk_builder_get_object(builder, "check_processwatbegin"));
    g_signal_connect(wid, "toggled", G_CALLBACK(update_config_toggle_cb), (void*)CONFIG_PROCESSWATBEGIN);
    if (!ibus_unikey_config_get_boolean(config, CONFIG_SECTION, CONFIG_PROCESSWATBEGIN, &b))
        b = DEFAULT_CONF_PROCESSWATBEGIN;
    gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(wid), b);

    wid = GTK_WIDGET(gtk_builder_get_object(builder, "check_mousecapture"));
    g_signal_connect(wid, "toggled", G_CALLBACK(update_config_toggle_cb), (void*)CONFIG_MOUSECAPTURE);
    if (!ibus_unikey_config_get_boolean(config, CONFIG_SECTION, CONFIG_MOUSECAPTURE, &b))
        b = DEFAULT_CONF_MOUSECAPTURE;
    gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(wid), b);

    wid = GTK_WIDGET(gtk_builder_get_object(builder, "btn_macroedit"));
    g_signal_connect(wid, "clicked", G_CALLBACK(macro_edit_button_cb), gtk_builder_get_object(builder, "dlg_main_setup"));
}
Example #2
0
static void ibus_unikey_engine_load_config(IBusUnikeyEngine* unikey)
{
    gchar* str;
    gboolean b;
    guint i;

//set default options
    unikey->im = Unikey_IM[0];
    unikey->oc = Unikey_OC[0];
    unikey->ukopt.spellCheckEnabled     = DEFAULT_CONF_SPELLCHECK;
    unikey->ukopt.autoNonVnRestore      = DEFAULT_CONF_AUTONONVNRESTORE;
    unikey->ukopt.modernStyle           = DEFAULT_CONF_MODERNSTYLE;
    unikey->ukopt.freeMarking           = DEFAULT_CONF_FREEMARKING;
    unikey->ukopt.macroEnabled          = DEFAULT_CONF_MACROENABLED;
    unikey->process_w_at_begin          = DEFAULT_CONF_PROCESSWATBEGIN;
    unikey->mouse_capture               = DEFAULT_CONF_MOUSECAPTURE;

    if (ibus_unikey_config_get_string(config, CONFIG_SECTION, CONFIG_INPUTMETHOD, &str))
    {
        for (i = 0; i < NUM_INPUTMETHOD; i++)
        {
            if (strcasecmp(str, Unikey_IMNames[i]) == 0)
            {
                unikey->im = Unikey_IM[i];
                break;
            }
        }
    }

    if (ibus_unikey_config_get_string(config, CONFIG_SECTION, CONFIG_OUTPUTCHARSET, &str))
    {
        for (i = 0; i < NUM_OUTPUTCHARSET; i++)
        {
            if (strcasecmp(str, Unikey_OCNames[i]) == 0)
            {
                unikey->oc = Unikey_OC[i];
                break;
            }
        }
    }

    if (ibus_unikey_config_get_boolean(config, CONFIG_SECTION, CONFIG_FREEMARKING, &b))
        unikey->ukopt.freeMarking = b;

    if (ibus_unikey_config_get_boolean(config, CONFIG_SECTION, CONFIG_MODERNSTYLE, &b))
        unikey->ukopt.modernStyle = b;

    if (ibus_unikey_config_get_boolean(config, CONFIG_SECTION, CONFIG_MACROENABLED, &b))
        unikey->ukopt.macroEnabled = b;

    if (ibus_unikey_config_get_boolean(config, CONFIG_SECTION, CONFIG_SPELLCHECK, &b))
        unikey->ukopt.spellCheckEnabled = b;

    if (ibus_unikey_config_get_boolean(config, CONFIG_SECTION, CONFIG_AUTORESTORENONVN, &b))
        unikey->ukopt.autoNonVnRestore = b;

    if (ibus_unikey_config_get_boolean(config, CONFIG_SECTION, CONFIG_PROCESSWATBEGIN, &b))
        unikey->process_w_at_begin = b;

    if (ibus_unikey_config_get_boolean(config, CONFIG_SECTION, CONFIG_MOUSECAPTURE, &b))
        unikey->mouse_capture = b;

    // load macro
    gchar* fn = get_macro_file();
    UnikeyLoadMacroTable(fn);
    g_free(fn);

    unikey->last_load_config = 0;
}