gchar *property_context_to_string(PropertyContext * ctx) { if (ctx == NULL) { return NULL; } return mkdg_g_value_to_string(&(ctx->value)); }
/*============================================ * Callback routines */ gboolean KBType_apply_callback(PropertyContext * ctx, gpointer userData) { GValue *value = &(ctx->value); IBUS_CHEWING_LOG(DEBUG, "KBType_apply_callback(%s,%s)", ctx->spec->key, mkdg_g_value_to_string(value)); ChewingKbType kbType = kbType_id_get_index(g_value_get_string(value)); IBusChewingPreEdit *icPreEdit = (IBusChewingPreEdit *) ctx->parent; chewing_set_KBType(icPreEdit->context, kbType); return TRUE; }
GValue *property_context_get(PropertyContext * ctx) { if (ctx == NULL) { mkdg_log(WARN, "property_context_get(-): ctx is NULL"); return NULL; } mkdg_log(DEBUG, "property_context_get(%s): value=%s", ctx->spec->key, mkdg_g_value_to_string(&(ctx->value))); return &(ctx->value); }
gboolean selKeys_apply_callback(PropertyContext * ctx, gpointer userData) { GValue *value = &(ctx->value); IBUS_CHEWING_LOG(DEBUG, "selKeys_apply_callback(%s,%s)", ctx->spec->key, mkdg_g_value_to_string(value)); IBusChewingPreEdit *icPreEdit = (IBusChewingPreEdit *) ctx->parent; ibus_chewing_lookup_table_resize(icPreEdit->iTable, icPreEdit->iProperties, icPreEdit->context); return TRUE; }
gboolean property_context_set(PropertyContext * ctx, GValue * value) { if (ctx == NULL) { mkdg_log(WARN, "property_context_set(-): ctx is NULL"); return FALSE; } if (!G_IS_VALUE(value)) { mkdg_log(WARN, "property_context_set(%s): value is not GValue", ctx->spec->key); return FALSE; } mkdg_log(DEBUG, "property_context_set(%s,%s)", ctx->spec->key, mkdg_g_value_to_string(value)); g_value_copy(value, &(ctx->value)); return TRUE; }
gboolean property_context_apply(PropertyContext * ctx, gpointer userData) { if (ctx == NULL || ctx->parent == NULL) { mkdg_log(WARN, "property_context_apply(%s): either ctx or ctx->parent is NULL", ctx->spec->key); return FALSE; } if (ctx->spec->applyFunc == NULL) { mkdg_log(DEBUG, "property_context_apply(%s,-): No apply function, skip", ctx->spec->key); return TRUE; } mkdg_log(DEBUG, "property_context_apply(%s,-): value %s", ctx->spec->key, mkdg_g_value_to_string(&(ctx->value))); return ctx->spec->applyFunc(ctx, userData); }
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); }