/**
 * 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;
}
Exemple #3
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
}
Exemple #8
0
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);
}