/** * write_gconf_schemas_file: * @filename: Filename for output. * * Output the parameters as GSettings schemes file. */ gboolean write_schemas_file(const gchar * filename) { mkdg_log(INFO, "write_schemes_file(%s,)", filename); FILE *outF = fopen(filename, "w"); if (outF == NULL) { mkdg_log(DEBUG, "write_gconf_schemas_file(%s) file %s cannot be written!", filename, filename); return FALSE; } gboolean result = mkdg_g_settings_write_schema_from_spec_array(QUOTE_ME (PROJECT_SCHEMA_ID), QUOTE_ME (PROJECT_SCHEMA_PATH), outF, propSpecs, QUOTE_ME (PROJECT_NAME)); if (fclose(outF)) return FALSE; mkdg_log(DEBUG, "write_gconf_schemas_file(%s) ... done.", filename); return result; }
int main(gint argc, gchar * argv[]) { GError *error = NULL; GOptionContext *context; /* Init i18n messages */ setlocale(LC_ALL, ""); bindtextdomain(QUOTE_ME(PROJECT_NAME), QUOTE_ME(DATA_DIR) "/locale"); textdomain(QUOTE_ME(PROJECT_NAME)); context = g_option_context_new("schemasFile"); g_option_context_add_main_entries(context, entries, "ibus-chewing"); if (!g_option_context_parse(context, &argc, &argv, &error)) { g_print("Option parsing failed: %s\n", error->message); return 1; } g_option_context_free(context); if (argc < 2) { fprintf(stderr, "Specify filename of outputing schemas file!\n"); return 1; } mkdg_log_set_level(verbose); schemasFilename = argv[1]; gboolean result = write_schemas_file(schemasFilename); if (!result) { return 2; } return 0; }
int main(gint argc, gchar * argv[]) { GError *error = NULL; GOptionContext *context; gtk_init(&argc, &argv); /* Init i18n messages */ setlocale(LC_ALL, ""); bindtextdomain(QUOTE_ME(PROJECT_NAME), QUOTE_ME(DATA_DIR) "/locale"); textdomain(QUOTE_ME(PROJECT_NAME)); determine_locale(); context = g_option_context_new("- ibus chewing engine component"); g_option_context_add_main_entries(context, entries, QUOTE_ME(PROJECT_NAME)); if (!g_option_context_parse(context, &argc, &argv, &error)) { g_print("Option parsing failed: %s\n", error->message); exit(-1); } g_option_context_free(context); mkdg_log_set_level(ibus_chewing_verbose); if (showFlags) { printf("PROJECT_NAME=" QUOTE_ME(PROJECT_NAME) "\n"); printf("DATA_DIR=" QUOTE_ME(DATA_DIR) "\n"); printf("CHEWING_DATADIR_REAL=" QUOTE_ME(CHEWING_DATADIR_REAL) "\n"); } else { start_component(); } return 0; }
void backend_command_set_key_value(const gchar * key, GValue * value) { gchar *valueStr = mkdg_g_value_to_string(value); if (mkdg_g_value_is_boolean(value)) { valueStr = (g_value_get_boolean(value)) ? "true" : "false"; } gchar cmdBuf[COMMAND_BUFFER_SIZE]; gchar *cKey = mkdg_backend_get_key(backend, NULL, key, NULL); #ifdef USE_GSETTINGS g_snprintf(cmdBuf, COMMAND_BUFFER_SIZE, "gsettings set %s %s %s", QUOTE_ME(PROJECT_SCHEMA_ID), cKey, valueStr); #else gchar *typeStr; GType gType = G_VALUE_TYPE(value); switch (gType) { case G_TYPE_BOOLEAN: typeStr = "bool"; break; case G_TYPE_FLOAT: case G_TYPE_DOUBLE: typeStr = "float"; break; case G_TYPE_INT: case G_TYPE_UINT: case G_TYPE_LONG: case G_TYPE_ULONG: case G_TYPE_INT64: case G_TYPE_UINT64: typeStr = "int"; break; case G_TYPE_STRING: typeStr = "string"; break; } g_snprintf(cmdBuf, COMMAND_BUFFER_SIZE, "gconftool-2 --set %s/%s --type %s '%s'", QUOTE_ME(PROJECT_SCHEMA_DIR), cKey, typeStr, valueStr); #endif command_run_obtain_output(cmdBuf); }
gint main(gint argc, gchar ** argv) { g_test_init(&argc, &argv, NULL); #ifdef USE_GSETTINGS backend = mkdg_g_settings_backend_new(QUOTE_ME(PROJECT_SCHEMA_ID), QUOTE_ME(PROJECT_SCHEMA_DIR), NULL); #elif defined USE_GCONF2 backend = gconf2_backend_new(QUOTE_ME(PROJECT_SCHEMA_BASE), NULL); #else g_error("Flag GSETTINGS_SUPPORT or GCONF2_SUPPORT are required!"); return 2; #endif /* USE_GSETTINGS */ mkdg_log_set_level(DEBUG); TEST_RUN_THIS(mkdg_g_value_from_string_boolean_test); TEST_RUN_THIS(mkdg_g_value_from_string_int_test); TEST_RUN_THIS(mkdg_g_value_from_string_uint_test); TEST_RUN_THIS(mkdg_g_value_from_string_string_test); return g_test_run(); }
GValue *backend_command_get_key_value(const gchar * key, GValue * value) { gchar cmdBuf[COMMAND_BUFFER_SIZE]; gchar *cKey = mkdg_backend_get_key(backend, NULL, key, NULL); #ifdef USE_GSETTINGS g_snprintf(cmdBuf, COMMAND_BUFFER_SIZE, "gsettings get %s %s", QUOTE_ME(PROJECT_SCHEMA_ID), cKey); #else g_snprintf(cmdBuf, COMMAND_BUFFER_SIZE, "gconftool-2 --get %s/%s", QUOTE_ME(PROJECT_GCONF2_SCHEMA_DIR), cKey); #endif gchar *retStr = command_run_obtain_output(cmdBuf); #ifdef USE_GSETTINGS /* gsettings prepend 'uint32 ' before actual value */ if (G_VALUE_TYPE(value) == G_TYPE_UINT) { gint offset = strlen("uint32 "); retStr += offset; } #endif mkdg_g_value_from_string(value, retStr); return value; }
void int_w_test() { #define GCONF_KEY "max-chi-symbol-len" GValue origValue = { 0 }; g_value_init(&origValue, G_TYPE_BOOLEAN); backend_command_get_key_value(GCONF_KEY, &origValue); GValue newValue = { 0 }; g_value_init(&newValue, G_TYPE_BOOLEAN); g_value_set_int(&newValue, !g_value_get_int(&origValue)); mkdg_backend_write(backend, &newValue, QUOTE_ME(PROJECT_SCHEMA_SECTION), GCONF_KEY, NULL); GValue storedValue = { 0 }; g_value_init(&storedValue, G_TYPE_BOOLEAN); backend_command_get_key_value(GCONF_KEY, &storedValue); g_assert(mkdg_g_value_is_equal(&newValue, &storedValue)); /* * Restore the original value */ backend_command_set_key_value(GCONF_KEY, &origValue); #undef GCONF_KEY }
static void start_component(void) { IBUS_CHEWING_LOG(INFO, "start_component"); ibus_init(); bus = ibus_bus_new(); g_signal_connect(bus, "disconnected", G_CALLBACK(ibus_disconnected_cb), NULL); factory = ibus_factory_new(ibus_bus_get_connection(bus)); ibus_factory_add_engine(factory, "chewing", IBUS_TYPE_CHEWING_ENGINE); if (ibus) { ibus_bus_request_name(bus, QUOTE_ME(PROJECT_SCHEMA_ID), 0); } else { IBusComponent *component = NULL; if (xml) { component = ibus_component_new_from_file(QUOTE_ME(DATA_DIR) "/ibus/component/chewing.xml"); } else { component = ibus_component_new(QUOTE_ME(PROJECT_SCHEMA_ID), _("Chewing component"), QUOTE_ME(PRJ_VER), "GPLv2+", _("Peng Huang, Ding-Yi Chen"), "http://code.google.com/p/ibus", QUOTE_ME(LIBEXEC_DIR) "/ibus-engine-chewing --ibus", QUOTE_ME(PROJECT_NAME)); } IBusEngineDesc *engineDesc = ibus_engine_desc_new_varargs("name", "chewing", "longname", _("Chewing"), "description", _("Chinese chewing input method"), "language", "zh_TW", "license", "GPLv2+", "author", _("Peng Huang, Ding-Yi Chen"), "icon", QUOTE_ME(PRJ_DATA_DIR) "/icons/" QUOTE_ME(PROJECT_NAME) ".png", "layout", "us", "setup", QUOTE_ME(LIBEXEC_DIR) "/ibus-setup-chewing", "version", QUOTE_ME(PRJ_VER), "textdomain", QUOTE_ME(PROJECT_NAME), NULL); ibus_component_add_engine(component, engineDesc); ibus_bus_register_component(bus, component); } ibus_main(); }
void write_key_with_g_value(const gchar * key, GValue * value) { mkdg_backend_write(backend, value, QUOTE_ME(PROJECT_SCHEMA_SECTION), key, NULL); }