void macro_edit_button_cb(GtkButton* btn, gpointer user_data) { GtkWidget* parent_dlg = GTK_WIDGET(user_data); gtk_widget_set_sensitive(parent_dlg, FALSE); GtkWidget* dlg = unikey_macro_dialog_new(); gchar* macrofile = get_macro_file(); CMacroTable macro; macro.init(); macro.loadFromFile(macrofile); unikey_macro_dialog_load_macro(GTK_DIALOG(dlg), macro); int ret = gtk_dialog_run(GTK_DIALOG(dlg)); if (ret == GTK_RESPONSE_OK) { unikey_macro_dialog_save_macro(GTK_DIALOG(dlg), ¯o); GFile* f = g_file_get_parent(g_file_new_for_path(macrofile)); if (g_file_query_exists(f, NULL) == FALSE) { g_file_make_directory_with_parents(f, NULL, NULL); } g_object_unref(f); macro.writeToFile(macrofile); } g_free(macrofile); gtk_widget_destroy(dlg); gtk_widget_set_sensitive(parent_dlg, TRUE); }
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; }