5 #include "dlg_main_setup.h"
7 #include "scim_unikey_const.h"
9 #define get_macro_file() (g_build_filename(g_getenv("HOME"), SCIM_IMENGINE_UNIKEY_MACROPATH, NULL))
10 void scim_set_config(const gchar* key, GType t, gpointer data);
11 gboolean scim_get_config(const gchar* key, GType t, gpointer data);
13 void set_default_config(UnikeyMainSetupOptions* opt)
15 opt->input_method = 0;
16 opt->output_charset = 0;
18 opt->enableSpellcheck = SCIM_IMENGINE_UNIKEY_SPELLCHECKENABLED_DEF;
19 opt->autoRestoreNonVn = SCIM_IMENGINE_UNIKEY_AUTONONVNRESTORE_DEF;
20 opt->modernStyle = SCIM_IMENGINE_UNIKEY_MODERNSTYLE_DEF;
21 opt->freeMarking = SCIM_IMENGINE_UNIKEY_FREEMARKING_DEF;
22 opt->enableMacro = SCIM_IMENGINE_UNIKEY_MACROENABLED_DEF;
24 opt->processwatbegin = SCIM_IMENGINE_UNIKEY_PROCESSWATWORDBEGIN_DEF;
26 opt->macrofile = get_macro_file();
29 void read_config(UnikeyMainSetupOptions* opt)
37 b = scim_get_config(SCIM_IMENGINE_UNIKEY_INPUTMETHOD, G_TYPE_INT, &k);
40 opt->input_method = k;
42 // END get Input method
45 b = scim_get_config(SCIM_IMENGINE_UNIKEY_OUTPUTCHARSET, G_TYPE_INT, &k);
48 opt->output_charset = k;
50 // END get Output charset
53 b = scim_get_config(SCIM_IMENGINE_UNIKEY_SPELLCHECKENABLED, G_TYPE_BOOLEAN, &t);
56 opt->enableSpellcheck = t;
60 // get autoRestoreNonVn
61 b = scim_get_config(SCIM_IMENGINE_UNIKEY_AUTONONVNRESTORE, G_TYPE_BOOLEAN, &t);
64 opt->autoRestoreNonVn = t;
66 // END get autoRestoreNonVn
69 b = scim_get_config(SCIM_IMENGINE_UNIKEY_MODERNSTYLE, G_TYPE_BOOLEAN, &t);
74 // END get modernStyle
77 b = scim_get_config(SCIM_IMENGINE_UNIKEY_FREEMARKING, G_TYPE_BOOLEAN, &t);
82 // END get freeMarking
85 b = scim_get_config(SCIM_IMENGINE_UNIKEY_MACROENABLED, G_TYPE_BOOLEAN, &t);
90 // END get enableMacro
92 // get ProcessWAtBegin
93 b = scim_get_config(SCIM_IMENGINE_UNIKEY_PROCESSWATWORDBEGIN, G_TYPE_BOOLEAN, &t);
96 opt->processwatbegin = t;
98 // END get ProcessWAtBegin
101 void write_config(UnikeyMainSetupOptions* opt)
103 scim_set_config(SCIM_IMENGINE_UNIKEY_INPUTMETHOD, G_TYPE_INT, &opt->input_method);
104 scim_set_config(SCIM_IMENGINE_UNIKEY_OUTPUTCHARSET, G_TYPE_INT, &opt->output_charset);
105 scim_set_config(SCIM_IMENGINE_UNIKEY_SPELLCHECKENABLED, G_TYPE_BOOLEAN, &opt->enableSpellcheck);
106 scim_set_config(SCIM_IMENGINE_UNIKEY_AUTONONVNRESTORE, G_TYPE_BOOLEAN, &opt->autoRestoreNonVn);
107 scim_set_config(SCIM_IMENGINE_UNIKEY_MODERNSTYLE, G_TYPE_BOOLEAN, &opt->modernStyle);
108 scim_set_config(SCIM_IMENGINE_UNIKEY_FREEMARKING, G_TYPE_BOOLEAN, &opt->freeMarking);
109 scim_set_config(SCIM_IMENGINE_UNIKEY_MACROENABLED, G_TYPE_BOOLEAN, &opt->enableMacro);
110 scim_set_config(SCIM_IMENGINE_UNIKEY_PROCESSWATWORDBEGIN, G_TYPE_BOOLEAN, &opt->processwatbegin);
113 int force_engine_to_reload_config()
115 return system("scim-config-agent --reload > /dev/null");
118 void scim_set_config(const gchar* key, GType t, gpointer data)
124 argv = (gchar**)g_malloc(sizeof(gchar*)*4);
125 argv[0] = (gchar*)"scim-config-agent";
126 argv[1] = (gchar*)"--set";
127 argv[3] = (gchar*)NULL;
135 strcat(s, *(gboolean*)data?"true":"false");
138 sprintf(s+strlen(s), "%d", *(gint*)data);
141 strcat(s, *(gchar**)data);
147 g_spawn_sync(NULL, argv, NULL, G_SPAWN_SEARCH_PATH, NULL, NULL, &output, NULL, NULL, NULL);
151 gboolean scim_get_config(const gchar* key, GType t, gpointer data)
156 argv = (gchar**)g_malloc(sizeof(gchar*)*4);
157 argv[0] = (gchar*)"scim-config-agent";
158 argv[1] = (gchar*)"--get";
159 argv[2] = (gchar*)key;
160 argv[3] = (gchar*)NULL;
162 g_spawn_sync(NULL, argv, NULL, G_SPAWN_SEARCH_PATH, NULL, NULL, &output, NULL, NULL, NULL);
166 output[strlen(output)-1] = 0;
168 if (strcmp(output, "Failed to get key value.") == 0)
181 pb = (gboolean*)data;
182 if (strcmp(output, "true") == 0)
184 else if (strcmp(output, "false") == 0)
194 if (isalpha(output[0]))