コード例 #1
0
ファイル: complex-gconf-app.c プロジェクト: GNOME/gconf
static void
update_entry(GtkWidget* dialog, GConfChangeSet* cs, const gchar* config_key)
{
    GConfValue* value = NULL;
    GConfClient* client;

    client = g_object_get_data(dialog, "client");

    if (gconf_change_set_check_value(cs, config_key,
                                     &value))
    {
        GtkWidget* entry;

        entry = g_object_get_data(dialog, config_key);

        g_assert(entry != NULL);

        if (value == NULL)
        {
            /* We need to check for a default value,
               since the revert set will unset the user setting */
            GConfValue* def;

            def = gconf_client_get_default_from_schema(client,
                    config_key,
                    NULL);

            if (def)
            {
                if (def->type == GCONF_VALUE_STRING)
                {
                    gtk_entry_set_text(GTK_ENTRY(entry), gconf_value_get_string(def));
                }
                else
                    g_warning("Wrong type for default value of %s", config_key);

                gconf_value_free(def);
            }
            else
                gtk_entry_set_text(GTK_ENTRY(entry), "");
        }
        else if (value->type == GCONF_VALUE_STRING)
        {
            gtk_entry_set_text(GTK_ENTRY(entry), gconf_value_get_string(value));
        }
        else
        {
            /* error, wrong type value in the config database */
            g_warning("GConfChangeSet had wrong value type %d for key %s",
                      value->type, config_key);
            gtk_entry_set_text(GTK_ENTRY(entry), "");
        }
    }
}
コード例 #2
0
static
gboolean
is_default_value (
  GConfClient* client,
  const GConfEntry* entry
) {
  // This doesn't work:
  // return gconf_entry_get_is_default(entry);

  GError* error = NULL;
  const GConfValue* def = gconf_client_get_default_from_schema(
    client,
    gconf_entry_get_key(entry),
    &error
  );
  if (error || !def)
      return FALSE;
  return gconf_value_compare(def, entry->value) == 0;
}
コード例 #3
0
GConfValue*
eel_gconf_get_default_value (const char *key)
{
    GConfValue *value = NULL;
    GConfClient *client;
    GError *error = NULL;

    g_return_val_if_fail (key != NULL, NULL);

    client = eel_gconf_client_get_global ();
    g_return_val_if_fail (client != NULL, NULL);

    value = gconf_client_get_default_from_schema (client, key, &error);

    if (eel_gconf_handle_error (&error)) {
        if (value != NULL) {
            gconf_value_free (value);
            value = NULL;
        }
    }

    return value;
}