summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStefano Karapetsas <[email protected]>2012-10-22 16:45:56 +0200
committerStefano Karapetsas <[email protected]>2012-10-22 16:45:56 +0200
commitd2d6d2944d6e725cd6bd2fce1c6f979649e77ed8 (patch)
tree1a070e76f6215a15d14de7dd6952b56740a9706c
parent909bf45d2c2d567decaf57b7869e0fbdcb7c0ed4 (diff)
downloadmate-control-center-d2d6d2944d6e725cd6bd2fce1c6f979649e77ed8.tar.bz2
mate-control-center-d2d6d2944d6e725cd6bd2fce1c6f979649e77ed8.tar.xz
migrate common stuff to gsettings
-rw-r--r--capplets/common/Makefile.am4
-rw-r--r--capplets/common/capplet-util.h2
-rw-r--r--capplets/common/mate-theme-apply.c96
-rw-r--r--capplets/common/mateconf-property-editor-marshal.c41
-rw-r--r--capplets/common/mateconf-property-editor-marshal.h19
-rw-r--r--capplets/common/mateconf-property-editor.c1801
-rw-r--r--capplets/common/mateconf-property-editor.h162
7 files changed, 64 insertions, 2061 deletions
diff --git a/capplets/common/Makefile.am b/capplets/common/Makefile.am
index 6dcd64f7..358b00cc 100644
--- a/capplets/common/Makefile.am
+++ b/capplets/common/Makefile.am
@@ -28,10 +28,6 @@ libcommon_la_SOURCES = \
capplet-util.h \
file-transfer-dialog.c \
file-transfer-dialog.h \
- mateconf-property-editor.c \
- mateconf-property-editor.h \
- mateconf-property-editor-marshal.c \
- mateconf-property-editor-marshal.h \
mate-theme-apply.c \
mate-theme-apply.h \
mate-theme-info.c \
diff --git a/capplets/common/capplet-util.h b/capplets/common/capplet-util.h
index 3dfa175b..df79c20f 100644
--- a/capplets/common/capplet-util.h
+++ b/capplets/common/capplet-util.h
@@ -27,8 +27,6 @@
#include <gio/gio.h>
#include <gtk/gtk.h>
#include <glib/gi18n.h>
-#include <mateconf/mateconf.h>
-#include <mateconf/mateconf-changeset.h>
/* Macros to make certain repetitive tasks a bit easier */
diff --git a/capplets/common/mate-theme-apply.c b/capplets/common/mate-theme-apply.c
index 1fce6c2b..bd6d6caa 100644
--- a/capplets/common/mate-theme-apply.c
+++ b/capplets/common/mate-theme-apply.c
@@ -22,26 +22,36 @@
#endif
#include <string.h>
-#include <mateconf/mateconf-client.h>
+#include <gio/gio.h>
#include <mate-wm-manager.h>
#include "mate-theme-apply.h"
#include "gtkrc-utils.h"
-#define GTK_THEME_KEY "/desktop/mate/interface/gtk_theme"
-#define COLOR_SCHEME_KEY "/desktop/mate/interface/gtk_color_scheme"
-#define ICON_THEME_KEY "/desktop/mate/interface/icon_theme"
-#define FONT_KEY "/desktop/mate/interface/font_name"
-#define CURSOR_FONT_KEY "/desktop/mate/peripherals/mouse/cursor_font"
-#define CURSOR_THEME_KEY "/desktop/mate/peripherals/mouse/cursor_theme"
-#define CURSOR_SIZE_KEY "/desktop/mate/peripherals/mouse/cursor_size"
-#define NOTIFICATION_THEME_KEY "/apps/notification-daemon/theme"
+#define INTERFACE_SCHEMA "org.mate.interface"
+#define GTK_THEME_KEY "gtk-theme"
+#define COLOR_SCHEME_KEY "gtk-color-scheme"
+#define ICON_THEME_KEY "icon-theme"
+#define FONT_KEY "font-name"
+
+#define MOUSE_SCHEMA "org.mate.peripherals-mouse"
+#define CURSOR_FONT_KEY "cursor-font"
+#define CURSOR_THEME_KEY "cursor-theme"
+#define CURSOR_SIZE_KEY "cursor-size"
+
+#define NOTIFICATION_SCHEMA "org.mate.NotificationDaemon"
+#define NOTIFICATION_THEME_KEY "theme"
#define compare(x,y) (!x && y) || (x && !y) || (x && y && strcmp (x, y))
void
mate_meta_theme_set (MateThemeMetaInfo *meta_theme_info)
{
- MateConfClient *client;
+ GSettings *interface_settings;
+ GSettings *mouse_settings;
+ GSettings *notification_settings = NULL;
+ const char * const *schemas;
+ gboolean schema_exists;
+ gint i;
gchar *old_key;
gint old_key_int;
MateWindowManager *window_manager;
@@ -51,18 +61,34 @@ mate_meta_theme_set (MateThemeMetaInfo *meta_theme_info)
window_manager = mate_wm_manager_get_current (gdk_display_get_default_screen (gdk_display_get_default ()));
- client = mateconf_client_get_default ();
+ interface_settings = g_settings_new (INTERFACE_SCHEMA);
+ mouse_settings = g_settings_new (MOUSE_SCHEMA);
+
+ /* We need this because mate-control-center does not depend on mate-notification-daemon,
+ * and if we try to get notification theme without schema installed, gsettings crashes
+ * see https://bugzilla.gnome.org/show_bug.cgi?id=651225 */
+ schemas = g_settings_list_schemas ();
+ schema_exists = FALSE;
+ for (i = 0; schemas[i] != NULL; i++) {
+ if (g_strcmp0 (schemas[i], NOTIFICATION_SCHEMA) == 0) {
+ schema_exists = TRUE;
+ break;
+ }
+ }
+ if (schema_exists == TRUE) {
+ notification_settings = g_settings_new (NOTIFICATION_SCHEMA);
+ }
/* Set the gtk+ key */
- old_key = mateconf_client_get_string (client, GTK_THEME_KEY, NULL);
+ old_key = g_settings_get_string (interface_settings, GTK_THEME_KEY);
if (compare (old_key, meta_theme_info->gtk_theme_name))
{
- mateconf_client_set_string (client, GTK_THEME_KEY, meta_theme_info->gtk_theme_name, NULL);
+ g_settings_set_string (interface_settings, GTK_THEME_KEY, meta_theme_info->gtk_theme_name);
}
g_free (old_key);
/* Set the color scheme key */
- old_key = mateconf_client_get_string (client, COLOR_SCHEME_KEY, NULL);
+ old_key = g_settings_get_string (interface_settings, COLOR_SCHEME_KEY);
if (compare (old_key, meta_theme_info->gtk_color_scheme))
{
/* only save the color scheme if it differs from the default
@@ -75,11 +101,11 @@ mate_meta_theme_set (MateThemeMetaInfo *meta_theme_info)
if (newval == NULL || !strcmp (newval, "") ||
mate_theme_color_scheme_equal (newval, gtkcols))
{
- mateconf_client_unset (client, COLOR_SCHEME_KEY, NULL);
+ g_settings_reset (interface_settings, COLOR_SCHEME_KEY);
}
else
{
- mateconf_client_set_string (client, COLOR_SCHEME_KEY, newval, NULL);
+ g_settings_set_string (interface_settings, COLOR_SCHEME_KEY, newval);
}
g_free (gtkcols);
}
@@ -92,45 +118,51 @@ mate_meta_theme_set (MateThemeMetaInfo *meta_theme_info)
mate_window_manager_change_settings (window_manager, &wm_settings);
/* set the icon theme */
- old_key = mateconf_client_get_string (client, ICON_THEME_KEY, NULL);
+ old_key = g_settings_get_string (interface_settings, ICON_THEME_KEY);
if (compare (old_key, meta_theme_info->icon_theme_name))
{
- mateconf_client_set_string (client, ICON_THEME_KEY, meta_theme_info->icon_theme_name, NULL);
+ g_settings_set_string (interface_settings, ICON_THEME_KEY, meta_theme_info->icon_theme_name);
}
g_free (old_key);
/* set the notification theme */
- if (meta_theme_info->notification_theme_name != NULL)
+ if (notification_settings != NULL)
{
- old_key = mateconf_client_get_string (client, NOTIFICATION_THEME_KEY, NULL);
- if (compare (old_key, meta_theme_info->notification_theme_name))
- {
- mateconf_client_set_string (client, NOTIFICATION_THEME_KEY, meta_theme_info->notification_theme_name, NULL);
- }
- g_free (old_key);
+ if (meta_theme_info->notification_theme_name != NULL)
+ {
+ old_key = g_settings_get_string (notification_settings, NOTIFICATION_THEME_KEY);
+ if (compare (old_key, meta_theme_info->notification_theme_name))
+ {
+ g_settings_set_string (notification_settings, NOTIFICATION_THEME_KEY, meta_theme_info->notification_theme_name);
+ }
+ g_free (old_key);
+ }
}
/* Set the cursor theme key */
#ifdef HAVE_XCURSOR
- old_key = mateconf_client_get_string (client, CURSOR_THEME_KEY, NULL);
+ old_key = g_settings_get_string (mouse_settings, CURSOR_THEME_KEY);
if (compare (old_key, meta_theme_info->cursor_theme_name))
{
- mateconf_client_set_string (client, CURSOR_THEME_KEY, meta_theme_info->cursor_theme_name, NULL);
+ g_settings_set_string (mouse_settings, CURSOR_THEME_KEY, meta_theme_info->cursor_theme_name);
}
- old_key_int = mateconf_client_get_int (client, CURSOR_SIZE_KEY, NULL);
+ old_key_int = g_settings_get_int (mouse_settings, CURSOR_SIZE_KEY);
if (old_key_int != meta_theme_info->cursor_size)
{
- mateconf_client_set_int (client, CURSOR_SIZE_KEY, meta_theme_info->cursor_size, NULL);
+ g_settings_set_int (mouse_settings, CURSOR_SIZE_KEY, meta_theme_info->cursor_size);
}
#else
- old_key = mateconf_client_get_string (client, CURSOR_FONT_KEY, NULL);
+ old_key = g_settings_get_string (mouse_settings, CURSOR_FONT_KEY);
if (compare (old_key, meta_theme_info->cursor_theme_name))
{
- mateconf_client_set_string (client, CURSOR_FONT_KEY, meta_theme_info->cursor_theme_name, NULL);
+ g_settings_set_string (mouse_settings, CURSOR_FONT_KEY, meta_theme_info->cursor_theme_name);
}
#endif
g_free (old_key);
- g_object_unref (client);
+ g_object_unref (interface_settings);
+ g_object_unref (mouse_settings);
+ if (notification_settings != NULL)
+ g_object_unref (notification_settings);
}
diff --git a/capplets/common/mateconf-property-editor-marshal.c b/capplets/common/mateconf-property-editor-marshal.c
deleted file mode 100644
index 9bead349..00000000
--- a/capplets/common/mateconf-property-editor-marshal.c
+++ /dev/null
@@ -1,41 +0,0 @@
-#include <glib.h>
-#include <glib-object.h>
-#include "mateconf-property-editor-marshal.h"
-
-/* VOID:STRING,POINTER (peditor-marshal.list:25) */
-void
-mateconf_property_editor_marshal_VOID__STRING_POINTER (GClosure *closure,
- GValue *return_value,
- guint n_param_values,
- const GValue *param_values,
- gpointer invocation_hint,
- gpointer marshal_data)
-{
- typedef void (*GMarshalFunc_VOID__STRING_POINTER) (gpointer data1,
- gpointer arg_1,
- gpointer arg_2,
- gpointer data2);
- register GMarshalFunc_VOID__STRING_POINTER callback;
- register GCClosure *cc = (GCClosure*) closure;
- register gpointer data1, data2;
-
- g_return_if_fail (n_param_values == 3);
-
- if (G_CCLOSURE_SWAP_DATA (closure))
- {
- data1 = closure->data;
- data2 = g_value_peek_pointer (param_values + 0);
- }
- else
- {
- data1 = g_value_peek_pointer (param_values + 0);
- data2 = closure->data;
- }
- callback = (GMarshalFunc_VOID__STRING_POINTER) (marshal_data ? marshal_data : cc->callback);
-
- callback (data1,
- (char*) g_value_get_string (param_values + 1),
- g_value_get_pointer (param_values + 2),
- data2);
-}
-
diff --git a/capplets/common/mateconf-property-editor-marshal.h b/capplets/common/mateconf-property-editor-marshal.h
deleted file mode 100644
index e26505cf..00000000
--- a/capplets/common/mateconf-property-editor-marshal.h
+++ /dev/null
@@ -1,19 +0,0 @@
-
-#include <gobject/gmarshal.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* VOID:STRING,POINTER (peditor-marshal.list:25) */
-extern void mateconf_property_editor_marshal_VOID__STRING_POINTER (GClosure *closure,
- GValue *return_value,
- guint n_param_values,
- const GValue *param_values,
- gpointer invocation_hint,
- gpointer marshal_data);
-
-#ifdef __cplusplus
-}
-#endif
-
diff --git a/capplets/common/mateconf-property-editor.c b/capplets/common/mateconf-property-editor.c
deleted file mode 100644
index 89c363a5..00000000
--- a/capplets/common/mateconf-property-editor.c
+++ /dev/null
@@ -1,1801 +0,0 @@
-/* -*- mode: c; style: linux -*- */
-
-/* mateconf-property-editor.c
- * Copyright (C) 2001 Ximian, Inc.
- *
- * Written by Bradford Hovinen <[email protected]>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2, or (at your option)
- * any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301, USA.
- */
-
-#ifdef HAVE_CONFIG_H
-# include "config.h"
-#endif
-
-#include <string.h>
-#include <stdarg.h>
-#include <stdlib.h>
-
-#include "mateconf-property-editor.h"
-#include "mateconf-property-editor-marshal.h"
-
-enum {
- VALUE_CHANGED,
- LAST_SIGNAL
-};
-
-enum {
- PROP_0,
- PROP_KEY,
- PROP_CALLBACK,
- PROP_CHANGESET,
- PROP_CONV_TO_WIDGET_CB,
- PROP_CONV_FROM_WIDGET_CB,
- PROP_UI_CONTROL,
- PROP_DATA,
- PROP_DATA_FREE_CB
-};
-
-struct _MateConfPropertyEditorPrivate
-{
- gchar *key;
- guint handler_id;
- MateConfChangeSet *changeset;
- GObject *ui_control;
- MateConfPEditorValueConvFn conv_to_widget_cb;
- MateConfPEditorValueConvFn conv_from_widget_cb;
- MateConfClientNotifyFunc callback;
- gboolean inited;
-
- gpointer data;
- GFreeFunc data_free_cb;
-};
-
-typedef struct
-{
- GType enum_type;
- MateConfPEditorGetValueFn enum_val_true_fn;
- gpointer enum_val_true_fn_data;
- guint enum_val_false;
- gboolean use_nick;
-} MateConfPropertyEditorEnumData;
-
-static guint peditor_signals[LAST_SIGNAL];
-
-static void mateconf_property_editor_set_prop (GObject *object,
- guint prop_id,
- const GValue *value,
- GParamSpec *pspec);
-static void mateconf_property_editor_get_prop (GObject *object,
- guint prop_id,
- GValue *value,
- GParamSpec *pspec);
-
-static void mateconf_property_editor_finalize (GObject *object);
-
-static GObject *mateconf_peditor_new (const gchar *key,
- MateConfClientNotifyFunc cb,
- MateConfChangeSet *changeset,
- GObject *ui_control,
- const gchar *first_prop_name,
- va_list var_args,
- const gchar *first_custom,
- ...);
-
-G_DEFINE_TYPE (MateConfPropertyEditor, mateconf_property_editor, G_TYPE_OBJECT)
-
-#define MATECONF_PROPERTY_EDITOR_GET_PRIVATE(object) \
- (G_TYPE_INSTANCE_GET_PRIVATE ((object), mateconf_property_editor_get_type (), MateConfPropertyEditorPrivate))
-
-
-static MateConfValue*
-mateconf_property_editor_conv_default (MateConfPropertyEditor *peditor,
- const MateConfValue *value)
-{
- return mateconf_value_copy (value);
-}
-
-static void
-mateconf_property_editor_init (MateConfPropertyEditor *mateconf_property_editor)
-{
- mateconf_property_editor->p = MATECONF_PROPERTY_EDITOR_GET_PRIVATE (mateconf_property_editor);
- mateconf_property_editor->p->conv_to_widget_cb = mateconf_property_editor_conv_default;
- mateconf_property_editor->p->conv_from_widget_cb = mateconf_property_editor_conv_default;
- mateconf_property_editor->p->inited = FALSE;
-}
-
-static void
-mateconf_property_editor_class_init (MateConfPropertyEditorClass *class)
-{
- GObjectClass *object_class;
-
- object_class = G_OBJECT_CLASS (class);
-
- object_class->finalize = mateconf_property_editor_finalize;
- object_class->set_property = mateconf_property_editor_set_prop;
- object_class->get_property = mateconf_property_editor_get_prop;
-
- g_object_class_install_property
- (object_class, PROP_KEY,
- g_param_spec_string ("key",
- _("Key"),
- _("MateConf key to which this property editor is attached"),
- NULL,
- G_PARAM_READWRITE));
- g_object_class_install_property
- (object_class, PROP_CALLBACK,
- g_param_spec_pointer ("callback",
- _("Callback"),
- _("Issue this callback when the value associated with key gets changed"),
- G_PARAM_WRITABLE));
- g_object_class_install_property
- (object_class, PROP_CHANGESET,
- g_param_spec_pointer ("changeset",
- _("Change set"),
- _("MateConf change set containing data to be forwarded to the mateconf client on apply"),
- G_PARAM_READWRITE));
- g_object_class_install_property
- (object_class, PROP_CONV_TO_WIDGET_CB,
- g_param_spec_pointer ("conv-to-widget-cb",
- _("Conversion to widget callback"),
- _("Callback to be issued when data are to be converted from MateConf to the widget"),
- G_PARAM_WRITABLE));
- g_object_class_install_property
- (object_class, PROP_CONV_FROM_WIDGET_CB,
- g_param_spec_pointer ("conv-from-widget-cb",
- _("Conversion from widget callback"),
- _("Callback to be issued when data are to be converted to MateConf from the widget"),
- G_PARAM_WRITABLE));
- g_object_class_install_property
- (object_class, PROP_UI_CONTROL,
- g_param_spec_object ("ui-control",
- _("UI Control"),
- _("Object that controls the property (normally a widget)"),
- G_TYPE_OBJECT,
- G_PARAM_WRITABLE));
-
- peditor_signals[VALUE_CHANGED] =
- g_signal_new ("value-changed",
- G_TYPE_FROM_CLASS (object_class), 0,
- G_STRUCT_OFFSET (MateConfPropertyEditorClass, value_changed),
- NULL, NULL,
- (GSignalCMarshaller) mateconf_property_editor_marshal_VOID__STRING_POINTER,
- G_TYPE_NONE, 2, G_TYPE_STRING, G_TYPE_POINTER);
-
- g_object_class_install_property
- (object_class, PROP_DATA,
- g_param_spec_pointer ("data",
- _("Property editor object data"),
- _("Custom data required by the specific property editor"),
- G_PARAM_READWRITE));
-
- g_object_class_install_property
- (object_class, PROP_DATA_FREE_CB,
- g_param_spec_pointer ("data-free-cb",
- _("Property editor data freeing callback"),
- _("Callback to be issued when property editor object data is to be freed"),
- G_PARAM_WRITABLE));
-
- g_type_class_add_private (class, sizeof (MateConfPropertyEditorPrivate));
-}
-
-static void
-mateconf_property_editor_set_prop (GObject *object,
- guint prop_id,
- const GValue *value,
- GParamSpec *pspec)
-{
- MateConfPropertyEditor *peditor;
- MateConfClient *client;
- MateConfNotifyFunc cb;
-
- g_return_if_fail (object != NULL);
- g_return_if_fail (IS_MATECONF_PROPERTY_EDITOR (object));
-
- peditor = MATECONF_PROPERTY_EDITOR (object);
-
- switch (prop_id) {
- case PROP_KEY:
- peditor->p->key = g_value_dup_string (value);
- break;
-
- case PROP_CALLBACK:
- client = mateconf_client_get_default ();
- cb = g_value_get_pointer (value);
- peditor->p->callback = (MateConfClientNotifyFunc) cb;
- if (peditor->p->handler_id != 0) {
- mateconf_client_notify_remove (client,
- peditor->p->handler_id);
- }
- peditor->p->handler_id =
- mateconf_client_notify_add (client, peditor->p->key,
- peditor->p->callback,
- peditor, NULL, NULL);
- g_object_unref (client);
- break;
-
- case PROP_CHANGESET:
- peditor->p->changeset = g_value_get_pointer (value);
- break;
-
- case PROP_CONV_TO_WIDGET_CB:
- peditor->p->conv_to_widget_cb = g_value_get_pointer (value);
- break;
-
- case PROP_CONV_FROM_WIDGET_CB:
- peditor->p->conv_from_widget_cb = g_value_get_pointer (value);
- break;
-
- case PROP_UI_CONTROL:
- peditor->p->ui_control = g_value_get_object (value);
- g_object_weak_ref (peditor->p->ui_control, (GWeakNotify) g_object_unref, object);
- break;
- case PROP_DATA:
- peditor->p->data = g_value_get_pointer (value);
- break;
- case PROP_DATA_FREE_CB:
- peditor->p->data_free_cb = g_value_get_pointer (value);
- break;
- default:
- g_warning ("Bad argument set");
- break;
- }
-}
-
-static void
-mateconf_property_editor_get_prop (GObject *object,
- guint prop_id,
- GValue *value,
- GParamSpec *pspec)
-{
- MateConfPropertyEditor *peditor;
-
- g_return_if_fail (object != NULL);
- g_return_if_fail (IS_MATECONF_PROPERTY_EDITOR (object));
-
- peditor = MATECONF_PROPERTY_EDITOR (object);
-
- switch (prop_id) {
- case PROP_KEY:
- g_value_set_string (value, peditor->p->key);
- break;
-
- case PROP_CHANGESET:
- g_value_set_pointer (value, peditor->p->changeset);
- break;
-
- case PROP_DATA:
- g_value_set_pointer (value, peditor->p->data);
- break;
- default:
- g_warning ("Bad argument get");
- break;
- }
-}
-
-static void
-mateconf_property_editor_finalize (GObject *object)
-{
- MateConfPropertyEditor *mateconf_property_editor;
-
- g_return_if_fail (object != NULL);
- g_return_if_fail (IS_MATECONF_PROPERTY_EDITOR (object));
-
- mateconf_property_editor = MATECONF_PROPERTY_EDITOR (object);
-
- g_free (mateconf_property_editor->p->key);
-
- if (mateconf_property_editor->p->data_free_cb)
- mateconf_property_editor->p->data_free_cb (mateconf_property_editor->p->data);
-
- if (mateconf_property_editor->p->handler_id != 0) {
- MateConfClient *client;
-
- client = mateconf_client_get_default ();
- mateconf_client_notify_remove (client,
- mateconf_property_editor->p->handler_id);
- g_object_unref (client);
- }
-
- G_OBJECT_CLASS (mateconf_property_editor_parent_class)->finalize (object);
-}
-
-static GObject *
-mateconf_peditor_new (const gchar *key,
- MateConfClientNotifyFunc cb,
- MateConfChangeSet *changeset,
- GObject *ui_control,
- const gchar *first_prop_name,
- va_list var_args,
- const gchar *first_custom,
- ...)
-{
- GObject *obj;
- MateConfClient *client;
- MateConfEntry *mateconf_entry;
-
- g_return_val_if_fail (key != NULL, NULL);
- g_return_val_if_fail (cb != NULL, NULL);
-
- obj = g_object_new (mateconf_property_editor_get_type (),
- "key", key,
- "callback", cb,
- "changeset", changeset,
- "ui-control", ui_control,
- NULL);
-
- g_object_set_valist (obj, first_prop_name, var_args);
-
- if (first_custom)
- {
- va_list custom_args;
- va_start (custom_args, first_custom);
- g_object_set_valist (obj, first_custom, custom_args);
- va_end (custom_args);
- }
-
- client = mateconf_client_get_default ();
- mateconf_entry = mateconf_client_get_entry (client, MATECONF_PROPERTY_EDITOR (obj)->p->key, NULL, TRUE, NULL);
- MATECONF_PROPERTY_EDITOR (obj)->p->callback (client, 0, mateconf_entry, obj);
- MATECONF_PROPERTY_EDITOR (obj)->p->inited = TRUE;
- if (mateconf_entry)
- mateconf_entry_free (mateconf_entry);
- g_object_unref (client);
-
- return obj;
-}
-
-const gchar *
-mateconf_property_editor_get_key (MateConfPropertyEditor *peditor)
-{
- return peditor->p->key;
-}
-
-GObject *
-mateconf_property_editor_get_ui_control (MateConfPropertyEditor *peditor)
-{
- return peditor->p->ui_control;
-}
-
-static void
-peditor_set_mateconf_value (MateConfPropertyEditor *peditor,
- const gchar *key,
- MateConfValue *value)
-{
-
- if (peditor->p->changeset != NULL) {
- if (value)
- mateconf_change_set_set (peditor->p->changeset, peditor->p->key, value);
- else
- mateconf_change_set_unset (peditor->p->changeset, peditor->p->key);
- } else {
- MateConfClient *client = mateconf_client_get_default();
-
- if (value)
- mateconf_client_set (client, peditor->p->key, value, NULL);
- else
- mateconf_client_unset (client, peditor->p->key, NULL);
-
- g_object_unref (client);
- }
-
-}
-
-static void
-peditor_boolean_value_changed (MateConfClient *client,
- guint cnxn_id,
- MateConfEntry *entry,
- MateConfPropertyEditor *peditor)
-{
- MateConfValue *value, *value_wid;
-
- if (peditor->p->changeset != NULL)
- mateconf_change_set_remove (peditor->p->changeset, peditor->p->key);
-
- if (entry && (value = mateconf_entry_get_value (entry))) {
- value_wid = peditor->p->conv_to_widget_cb (peditor, value);
- gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (peditor->p->ui_control), mateconf_value_get_bool (value_wid));
- mateconf_value_free (value_wid);
- }
-}
-
-static void
-peditor_boolean_widget_changed (MateConfPropertyEditor *peditor,
- GtkToggleButton *tb)
-{
- MateConfValue *value, *value_wid;
-
- if (!peditor->p->inited) return;
- value_wid = mateconf_value_new (MATECONF_VALUE_BOOL);
- mateconf_value_set_bool (value_wid, gtk_toggle_button_get_active (tb));
- value = peditor->p->conv_from_widget_cb (peditor, value_wid);
- peditor_set_mateconf_value (peditor, peditor->p->key, value);
- g_signal_emit (peditor, peditor_signals[VALUE_CHANGED], 0, peditor->p->key, value);
- mateconf_value_free (value_wid);
- mateconf_value_free (value);
-}
-
-GObject *
-mateconf_peditor_new_boolean (MateConfChangeSet *changeset,
- const gchar *key,
- GtkWidget *checkbox,
- const gchar *first_property_name,
- ...)
-{
- GObject *peditor;
- va_list var_args;
-
- g_return_val_if_fail (key != NULL, NULL);
- g_return_val_if_fail (checkbox != NULL, NULL);
- g_return_val_if_fail (GTK_IS_TOGGLE_BUTTON (checkbox), NULL);
-
- va_start (var_args, first_property_name);
-
- peditor = mateconf_peditor_new
- (key,
- (MateConfClientNotifyFunc) peditor_boolean_value_changed,
- changeset,
- G_OBJECT (checkbox),
- first_property_name,
- var_args,
- NULL);
-
- va_end (var_args);
-
- g_signal_connect_swapped (checkbox, "toggled",
- (GCallback) peditor_boolean_widget_changed, peditor);
-
- return peditor;
-}
-
-static void
-peditor_integer_value_changed (MateConfClient *client,
- guint cnxn_id,
- MateConfEntry *entry,
- MateConfPropertyEditor *peditor)
-{
- MateConfValue *value, *value_wid;
- const char *entry_current_text;
- int entry_current_integer;
-
- if (peditor->p->changeset != NULL)
- mateconf_change_set_remove (peditor->p->changeset, peditor->p->key);
-
- if (entry && (value = mateconf_entry_get_value (entry))) {
- value_wid = peditor->p->conv_to_widget_cb (peditor, value);
- entry_current_text = gtk_entry_get_text (GTK_ENTRY (peditor->p->ui_control));
- entry_current_integer = strtol (entry_current_text, NULL, 10);
- if (entry_current_integer != mateconf_value_get_int (value)) {
- char *buf = g_strdup_printf ("%d", mateconf_value_get_int (value_wid));
- gtk_entry_set_text (GTK_ENTRY (peditor->p->ui_control), buf);
- g_free (buf);
- }
- mateconf_value_free (value_wid);
- }
-}
-
-static void
-peditor_integer_widget_changed (MateConfPropertyEditor *peditor,
- GtkEntry *entry)
-{
- MateConfValue *value, *value_wid;
-
- if (!peditor->p->inited) return;
-
- value_wid = mateconf_value_new (MATECONF_VALUE_INT);
-
- mateconf_value_set_int (value_wid, strtol (gtk_entry_get_text (entry), NULL, 10));
- value = peditor->p->conv_from_widget_cb (peditor, value_wid);
-
- peditor_set_mateconf_value (peditor, peditor->p->key, value);
-
- g_signal_emit (peditor, peditor_signals[VALUE_CHANGED], 0, peditor->p->key, value);
- mateconf_value_free (value_wid);
- mateconf_value_free (value);
-}
-
-static GObject *
-mateconf_peditor_new_integer_valist (MateConfChangeSet *changeset,
- const gchar *key,
- GtkWidget *entry,
- const gchar *first_property_name,
- va_list var_args)
-{
- GObject *peditor;
-
- peditor = mateconf_peditor_new
- (key,
- (MateConfClientNotifyFunc) peditor_integer_value_changed,
- changeset,
- G_OBJECT (entry),
- first_property_name,
- var_args, NULL);
-
- g_signal_connect_swapped (entry, "changed",
- (GCallback) peditor_integer_widget_changed, peditor);
-
- return peditor;
-}
-
-GObject *
-mateconf_peditor_new_integer (MateConfChangeSet *changeset,
- const gchar *key,
- GtkWidget *entry,
- const gchar *first_property_name,
- ...)
-{
- GObject *peditor;
- va_list var_args;
-
- g_return_val_if_fail (key != NULL, NULL);
- g_return_val_if_fail (entry != NULL, NULL);
- g_return_val_if_fail (GTK_IS_ENTRY (entry), NULL);
-
- va_start (var_args, first_property_name);
-
- peditor = mateconf_peditor_new_integer_valist
- (changeset, key, entry,
- first_property_name, var_args);
-
- va_end (var_args);
-
- return peditor;
-}
-
-static void
-peditor_string_value_changed (MateConfClient *client,
- guint cnxn_id,
- MateConfEntry *entry,
- MateConfPropertyEditor *peditor)
-{
- MateConfValue *value, *value_wid;
-
- if (peditor->p->changeset != NULL)
- mateconf_change_set_remove (peditor->p->changeset, peditor->p->key);
-
- if (entry && (value = mateconf_entry_get_value (entry))) {
- const char *entry_current_text;
- const char *mateconf_text;
-
- value_wid = peditor->p->conv_to_widget_cb (peditor, value);
- mateconf_text = mateconf_value_get_string (value_wid);
- entry_current_text = gtk_entry_get_text (GTK_ENTRY (peditor->p->ui_control));
-
- if (mateconf_text && strcmp (entry_current_text, mateconf_text) != 0) {
- gtk_entry_set_text (GTK_ENTRY (peditor->p->ui_control), mateconf_value_get_string (value_wid));
- }
- mateconf_value_free (value_wid);
- }
-}
-
-static void
-peditor_string_widget_changed (MateConfPropertyEditor *peditor,
- GtkEntry *entry)
-{
- MateConfValue *value, *value_wid;
-
- if (!peditor->p->inited) return;
-
- value_wid = mateconf_value_new (MATECONF_VALUE_STRING);
-
- mateconf_value_set_string (value_wid, gtk_entry_get_text (entry));
- value = peditor->p->conv_from_widget_cb (peditor, value_wid);
-
- peditor_set_mateconf_value (peditor, peditor->p->key, value);
-
- g_signal_emit (peditor, peditor_signals[VALUE_CHANGED], 0, peditor->p->key, value);
- mateconf_value_free (value_wid);
- mateconf_value_free (value);
-}
-
-static GObject *
-mateconf_peditor_new_string_valist (MateConfChangeSet *changeset,
- const gchar *key,
- GtkWidget *entry,
- const gchar *first_property_name,
- va_list var_args)
-{
- GObject *peditor;
-
- peditor = mateconf_peditor_new
- (key,
- (MateConfClientNotifyFunc) peditor_string_value_changed,
- changeset,
- G_OBJECT (entry),
- first_property_name,
- var_args, NULL);
-
- g_signal_connect_swapped (entry, "changed",
- (GCallback) peditor_string_widget_changed, peditor);
-
- return peditor;
-}
-
-GObject *
-mateconf_peditor_new_string (MateConfChangeSet *changeset,
- const gchar *key,
- GtkWidget *entry,
- const gchar *first_property_name,
- ...)
-{
- GObject *peditor;
- va_list var_args;
-
- g_return_val_if_fail (key != NULL, NULL);
- g_return_val_if_fail (entry != NULL, NULL);
- g_return_val_if_fail (GTK_IS_ENTRY (entry), NULL);
-
- va_start (var_args, first_property_name);
-
- peditor = mateconf_peditor_new_string_valist
- (changeset, key, entry,
- first_property_name, var_args);
-
- va_end (var_args);
-
- return peditor;
-}
-
-static void
-peditor_color_value_changed (MateConfClient *client,
- guint cnxn_id,
- MateConfEntry *entry,
- MateConfPropertyEditor *peditor)
-{
- MateConfValue *value, *value_wid;
-
- if (peditor->p->changeset != NULL)
- mateconf_change_set_remove (peditor->p->changeset, peditor->p->key);
-
- if (entry && (value = mateconf_entry_get_value (entry))) {
- const gchar *spec;
-
- value_wid = peditor->p->conv_to_widget_cb (peditor, value);
- spec = mateconf_value_get_string (value_wid);
- if (spec) {
- GdkColor color;
- gdk_color_parse (mateconf_value_get_string (value_wid), &color);
- gtk_color_button_set_color (
- GTK_COLOR_BUTTON (peditor->p->ui_control), &color);
- }
- mateconf_value_free (value_wid);
- }
-}
-
-static void
-peditor_color_widget_changed (MateConfPropertyEditor *peditor,
- GtkColorButton *cb)
-{
- gchar *str;
- MateConfValue *value, *value_wid;
- GdkColor color;
-
- if (!peditor->p->inited) return;
-
- value_wid = mateconf_value_new (MATECONF_VALUE_STRING);
- gtk_color_button_get_color (cb, &color);
- str = g_strdup_printf ("#%02x%02x%02x", color.red >> 8,
- color.green >> 8, color.blue >> 8);
- mateconf_value_set_string (value_wid, str);
- g_free (str);
-
- value = peditor->p->conv_from_widget_cb (peditor, value_wid);
-
- peditor_set_mateconf_value (peditor, peditor->p->key, value);
- g_signal_emit (peditor, peditor_signals[VALUE_CHANGED], 0, peditor->p->key, value);
-
- mateconf_value_free (value_wid);
- mateconf_value_free (value);
-}
-
-GObject *
-mateconf_peditor_new_color (MateConfChangeSet *changeset,
- const gchar *key,
- GtkWidget *cb,
- const gchar *first_property_name,
- ...)
-{
- GObject *peditor;
- va_list var_args;
-
- g_return_val_if_fail (key != NULL, NULL);
- g_return_val_if_fail (cb != NULL, NULL);
- g_return_val_if_fail (GTK_IS_COLOR_BUTTON (cb), NULL);
-
- va_start (var_args, first_property_name);
-
- peditor = mateconf_peditor_new
- (key,
- (MateConfClientNotifyFunc) peditor_color_value_changed,
- changeset,
- G_OBJECT (cb),
- first_property_name,
- var_args, NULL);
-
- va_end (var_args);
-
- g_signal_connect_swapped (cb, "color_set",
- (GCallback) peditor_color_widget_changed, peditor);
-
- return peditor;
-}
-
-static int
-peditor_enum_int_from_string (GType type, const gchar *str, gboolean use_nick)
-{
- GEnumClass *klass;
- GEnumValue *val;
- int ret = -1;
-
- klass = g_type_class_ref (type);
- if (use_nick)
- val = g_enum_get_value_by_nick (klass, str);
- else
- val = g_enum_get_value_by_name (klass, str);
-
- g_type_class_unref (klass);
-
- if (val)
- ret = val->value;
-
- return ret;
-}
-
-static gchar*
-peditor_enum_string_from_int (GType type, const int index, gboolean use_nick)
-{
- GEnumClass *klass;
- GEnumValue *val;
- gchar *ret = NULL;
-
- klass = g_type_class_ref (type);
- val = g_enum_get_value (klass, index);
- if (val)
- {
- if (val->value_nick && use_nick)
- ret = g_strdup (val->value_nick);
- else
- ret = g_strdup (val->value_name);
- }
-
- g_type_class_unref (klass);
-
- return ret;
-}
-
-static MateConfValue*
-peditor_enum_conv_to_widget (MateConfPropertyEditor *peditor,
- const MateConfValue *value)
-{
- MateConfValue *ret;
- MateConfPropertyEditorEnumData *data = peditor->p->data;
- int index;
-
- if (value->type == MATECONF_VALUE_INT)
- return mateconf_value_copy (value);
-
- ret = mateconf_value_new (MATECONF_VALUE_INT);
-
- index = peditor_enum_int_from_string (data->enum_type,
- mateconf_value_get_string (value),
- data->use_nick);
-
- mateconf_value_set_int (ret, index);
-
- return ret;
-}
-
-static MateConfValue*
-peditor_enum_conv_from_widget (MateConfPropertyEditor *peditor,
- const MateConfValue *value)
-{
- MateConfValue *ret;
- MateConfPropertyEditorEnumData *data = peditor->p->data;
- gchar *str;
-
- if (value->type == MATECONF_VALUE_STRING)
- return mateconf_value_copy (value);
-
- ret = mateconf_value_new (MATECONF_VALUE_STRING);
- str = peditor_enum_string_from_int (data->enum_type,
- mateconf_value_get_int (value),
- data->use_nick);
- mateconf_value_set_string (ret, str);
- g_free (str);
-
- return ret;
-}
-
-static void
-peditor_combo_box_value_changed (MateConfClient *client,
- guint cnxn_id,
- MateConfEntry *entry,
- MateConfPropertyEditor *peditor)
-{
- MateConfValue *value, *value_wid;
-
- if (peditor->p->changeset != NULL)
- mateconf_change_set_remove (peditor->p->changeset, peditor->p->key);
-
- if (entry && (value = mateconf_entry_get_value (entry))) {
- value_wid = peditor->p->conv_to_widget_cb (peditor, value);
- gtk_combo_box_set_active (GTK_COMBO_BOX (peditor->p->ui_control), mateconf_value_get_int (value_wid));
- mateconf_value_free (value_wid);
- }
-}
-
-static void
-peditor_combo_box_widget_changed (MateConfPropertyEditor *peditor,
- GtkComboBox *combo_box)
-{
- MateConfValue *value, *value_wid;
-
- if (!peditor->p->inited) return;
- value_wid = mateconf_value_new (MATECONF_VALUE_INT);
- mateconf_value_set_int (value_wid, gtk_combo_box_get_active (combo_box));
- value = peditor->p->conv_from_widget_cb (peditor, value_wid);
- peditor_set_mateconf_value (peditor, peditor->p->key, value);
- g_signal_emit (peditor, peditor_signals[VALUE_CHANGED], 0, peditor->p->key, value);
- mateconf_value_free (value_wid);
- if (value)
- mateconf_value_free (value);
-}
-
-GObject *
-mateconf_peditor_new_combo_box (MateConfChangeSet *changeset,
- const gchar *key,
- GtkWidget *combo_box,
- const gchar *first_property_name,
- ...)
-{
- GObject *peditor;
- va_list var_args;
-
- g_return_val_if_fail (key != NULL, NULL);
- g_return_val_if_fail (combo_box != NULL, NULL);
- g_return_val_if_fail (GTK_IS_COMBO_BOX (combo_box), NULL);
-
- va_start (var_args, first_property_name);
-
- peditor = mateconf_peditor_new
- (key,
- (MateConfClientNotifyFunc) peditor_combo_box_value_changed,
- changeset,
- G_OBJECT (combo_box),
- first_property_name,
- var_args, NULL);
-
- va_end (var_args);
-
- g_signal_connect_swapped (combo_box, "changed",
- (GCallback) peditor_combo_box_widget_changed, peditor);
-
- return peditor;
-}
-
-GObject *
-mateconf_peditor_new_combo_box_with_enum (MateConfChangeSet *changeset,
- const gchar *key,
- GtkWidget *combo_box,
- GType enum_type,
- gboolean use_nick,
- const gchar *first_property_name,
- ...)
-{
- GObject *peditor;
- MateConfPropertyEditorEnumData *data;
- va_list var_args;
-
- g_return_val_if_fail (key != NULL, NULL);
- g_return_val_if_fail (combo_box != NULL, NULL);
- g_return_val_if_fail (GTK_IS_COMBO_BOX (combo_box), NULL);
- g_return_val_if_fail (enum_type != G_TYPE_NONE, NULL);
-
- data = g_new0 (MateConfPropertyEditorEnumData, 1);
- data->enum_type = enum_type;
- data->use_nick = use_nick;
-
- va_start (var_args, first_property_name);
-
- peditor = mateconf_peditor_new
- (key,
- (MateConfClientNotifyFunc) peditor_combo_box_value_changed,
- changeset,
- G_OBJECT (combo_box),
- first_property_name,
- var_args,
- "conv-to-widget-cb",
- peditor_enum_conv_to_widget,
- "conv-from-widget-cb",
- peditor_enum_conv_from_widget,
- "data",
- data,
- "data-free-cb",
- g_free,
- NULL
- );
-
- va_end (var_args);
-
- g_signal_connect_swapped (combo_box, "changed",
- (GCallback) peditor_combo_box_widget_changed, peditor);
-
- return peditor;
-}
-
-static void
-peditor_select_radio_value_changed (MateConfClient *client,
- guint cnxn_id,
- MateConfEntry *entry,
- MateConfPropertyEditor *peditor)
-{
- GSList *group, *link;
- MateConfValue *value, *value_wid;
-
- if (peditor->p->changeset != NULL)
- mateconf_change_set_remove (peditor->p->changeset, peditor->p->key);
-
- if (entry && (value = mateconf_entry_get_value (entry))) {
- value_wid = peditor->p->conv_to_widget_cb (peditor, value);
- group = g_slist_copy (gtk_radio_button_get_group (GTK_RADIO_BUTTON (peditor->p->ui_control)));
- group = g_slist_reverse (group);
- link = g_slist_nth (group, mateconf_value_get_int (value_wid));
- if (link && link->data)
- gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (link->data), TRUE);
- mateconf_value_free (value_wid);
- g_slist_free (group);
- }
-}
-
-static void
-peditor_select_radio_widget_changed (MateConfPropertyEditor *peditor,
- GtkToggleButton *tb)
-{
- GSList *group;
- MateConfValue *value, *value_wid;
-
- if (!peditor->p->inited) return;
- if (!gtk_toggle_button_get_active (tb)) return;
-
- value_wid = mateconf_value_new (MATECONF_VALUE_INT);
- group = g_slist_copy (gtk_radio_button_get_group (GTK_RADIO_BUTTON (peditor->p->ui_control)));
- group = g_slist_reverse (group);
-
- mateconf_value_set_int (value_wid, g_slist_index (group, tb));
- value = peditor->p->conv_from_widget_cb (peditor, value_wid);
-
- peditor_set_mateconf_value (peditor, peditor->p->key, value);
- g_signal_emit (peditor, peditor_signals[VALUE_CHANGED], 0, peditor->p->key, value);
-
- mateconf_value_free (value_wid);
- mateconf_value_free (value);
- g_slist_free (group);
-}
-
-GObject *
-mateconf_peditor_new_select_radio (MateConfChangeSet *changeset,
- const gchar *key,
- GSList *radio_group,
- const gchar *first_property_name,
- ...)
-{
- GObject *peditor;
- GtkRadioButton *first_button;
- GSList *item;
- va_list var_args;
-
- g_return_val_if_fail (key != NULL, NULL);
- g_return_val_if_fail (radio_group != NULL, NULL);
- g_return_val_if_fail (radio_group->data != NULL, NULL);
- g_return_val_if_fail (GTK_IS_RADIO_BUTTON (radio_group->data), NULL);
-
- first_button = GTK_RADIO_BUTTON (radio_group->data);
-
- va_start (var_args, first_property_name);
-
- peditor = mateconf_peditor_new
- (key,
- (MateConfClientNotifyFunc) peditor_select_radio_value_changed,
- changeset,
- G_OBJECT (first_button),
- first_property_name,
- var_args, NULL);
-
- va_end (var_args);
-
- for (item = radio_group; item != NULL; item = item->next)
- g_signal_connect_swapped (item->data, "toggled",
- (GCallback) peditor_select_radio_widget_changed, peditor);
-
- return peditor;
-}
-
-static void
-peditor_numeric_range_value_changed (MateConfClient *client,
- guint cnxn_id,
- MateConfEntry *entry,
- MateConfPropertyEditor *peditor)
-{
- MateConfValue *value, *value_wid;
-
- if (peditor->p->changeset != NULL)
- mateconf_change_set_remove (peditor->p->changeset, peditor->p->key);
-
- if (entry && (value = mateconf_entry_get_value (entry))) {
- value_wid = peditor->p->conv_to_widget_cb (peditor, value);
-
- switch (value_wid->type) {
- case MATECONF_VALUE_FLOAT:
- gtk_adjustment_set_value (GTK_ADJUSTMENT (peditor->p->ui_control), mateconf_value_get_float (value_wid));
- break;
- case MATECONF_VALUE_INT:
- gtk_adjustment_set_value (GTK_ADJUSTMENT (peditor->p->ui_control), mateconf_value_get_int (value_wid));
- break;
- default:
- g_warning ("Unknown type in range peditor: %d\n", value_wid->type);
- }
- mateconf_value_free (value_wid);
- }
-}
-
-static void
-peditor_numeric_range_widget_changed (MateConfPropertyEditor *peditor,
- GtkAdjustment *adjustment)
-{
- MateConfValue *value, *value_wid, *default_value;
- MateConfClient *client;
-
- if (!peditor->p->inited) return;
-
- /* We try to get the default type from the schemas. if not, we default
- * to an int.
- */
- client = mateconf_client_get_default();
-
- default_value = mateconf_client_get_default_from_schema (client,
- peditor->p->key,
- NULL);
- g_object_unref (client);
-
- if (default_value) {
- value_wid = mateconf_value_new (default_value->type);
- mateconf_value_free (default_value);
- } else {
- g_warning ("Unable to find a default value for key for %s.\n"
- "I'll assume it is an integer, but that may break things.\n"
- "Please be sure that the associated schema is installed",
- peditor->p->key);
- value_wid = mateconf_value_new (MATECONF_VALUE_INT);
- }
-
- g_assert (value_wid);
-
- if (value_wid->type == MATECONF_VALUE_INT)
- mateconf_value_set_int (value_wid, gtk_adjustment_get_value (adjustment));
- else if (value_wid->type == MATECONF_VALUE_FLOAT)
- mateconf_value_set_float (value_wid, gtk_adjustment_get_value (adjustment));
- else {
- g_warning ("unable to set a mateconf key for %s of type %d",
- peditor->p->key,
- value_wid->type);
- mateconf_value_free (value_wid);
- return;
- }
- value = peditor->p->conv_from_widget_cb (peditor, value_wid);
- peditor_set_mateconf_value (peditor, peditor->p->key, value);
- g_signal_emit (peditor, peditor_signals[VALUE_CHANGED], 0, peditor->p->key, value);
- mateconf_value_free (value_wid);
- mateconf_value_free (value);
-}
-
-GObject *
-mateconf_peditor_new_numeric_range (MateConfChangeSet *changeset,
- const gchar *key,
- GtkWidget *range,
- const gchar *first_property_name,
- ...)
-{
- GObject *peditor;
- GObject *adjustment = NULL;
- va_list var_args;
-
- g_return_val_if_fail (key != NULL, NULL);
- g_return_val_if_fail (range != NULL, NULL);
- g_return_val_if_fail (GTK_IS_RANGE (range)||GTK_IS_SPIN_BUTTON (range), NULL);
-
- if (GTK_IS_RANGE (range))
- adjustment = G_OBJECT (gtk_range_get_adjustment (GTK_RANGE (range)));
- else if (GTK_IS_SPIN_BUTTON (range))
- adjustment = G_OBJECT (gtk_spin_button_get_adjustment (GTK_SPIN_BUTTON (range)));
- else
- g_assert_not_reached ();
-
- va_start (var_args, first_property_name);
-
- peditor = mateconf_peditor_new
- (key,
- (MateConfClientNotifyFunc) peditor_numeric_range_value_changed,
- changeset,
- adjustment,
- first_property_name,
- var_args, NULL);
-
- va_end (var_args);
-
- g_signal_connect_swapped (adjustment, "value_changed",
- (GCallback) peditor_numeric_range_widget_changed, peditor);
-
- return peditor;
-}
-
-static gboolean
-guard_get_bool (MateConfPropertyEditor *peditor, const MateConfValue *value)
-{
- if (value->type == MATECONF_VALUE_BOOL)
- return mateconf_value_get_bool (value);
- else
- {
- MateConfPropertyEditorEnumData *data = peditor->p->data;
- int index = peditor_enum_int_from_string (data->enum_type, mateconf_value_get_string (value), data->use_nick);
- return (index != data->enum_val_false);
- }
-}
-
-static void
-guard_value_changed (MateConfPropertyEditor *peditor,
- const gchar *key,
- const MateConfValue *value,
- GtkWidget *widget)
-{
- gtk_widget_set_sensitive (widget, guard_get_bool (peditor, value));
-}
-
-void
-mateconf_peditor_widget_set_guard (MateConfPropertyEditor *peditor,
- GtkWidget *widget)
-{
- MateConfClient *client;
- MateConfValue *value;
-
- g_return_if_fail (peditor != NULL);
- g_return_if_fail (IS_MATECONF_PROPERTY_EDITOR (peditor));
- g_return_if_fail (widget != NULL);
- g_return_if_fail (GTK_IS_WIDGET (widget));
-
- client = mateconf_client_get_default ();
- value = mateconf_client_get (client, peditor->p->key, NULL);
- g_object_unref (client);
-
- if (value) {
- gtk_widget_set_sensitive (widget, guard_get_bool (peditor, value));
- mateconf_value_free (value);
- } else {
- g_warning ("NULL MateConf value: %s: possibly incomplete setup", peditor->p->key);
- }
-
- g_signal_connect (peditor, "value-changed", (GCallback) guard_value_changed, widget);
-}
-
-MateConfValue *
-mateconf_value_int_to_float (MateConfPropertyEditor *ignored, const MateConfValue *value)
-{
- MateConfValue *new_value;
-
- new_value = mateconf_value_new (MATECONF_VALUE_FLOAT);
- mateconf_value_set_float (new_value, mateconf_value_get_int (value));
- return new_value;
-}
-
-MateConfValue *
-mateconf_value_float_to_int (MateConfPropertyEditor *ignored, const MateConfValue *value)
-{
- MateConfValue *new_value;
-
- new_value = mateconf_value_new (MATECONF_VALUE_INT);
- mateconf_value_set_int (new_value, mateconf_value_get_float (value));
- return new_value;
-}
-
-static void
-peditor_font_value_changed (MateConfClient *client,
- guint cnxn_id,
- MateConfEntry *entry,
- MateConfPropertyEditor *peditor)
-{
- MateConfValue *value, *value_wid;
-
- if (peditor->p->changeset != NULL)
- mateconf_change_set_remove (peditor->p->changeset, peditor->p->key);
-
- if (entry && (value = mateconf_entry_get_value (entry))) {
- const gchar *font;
-
- value_wid = peditor->p->conv_to_widget_cb (peditor, value);
- font = mateconf_value_get_string (value_wid);
- gtk_font_button_set_font_name (GTK_FONT_BUTTON (peditor->p->ui_control),
- font);
- mateconf_value_free (value_wid);
- }
-}
-
-static void
-peditor_font_widget_changed (MateConfPropertyEditor *peditor,
- GtkFontButton *font_button)
-{
- const gchar *font_name;
- MateConfValue *value, *value_wid = NULL;
-
- if (!peditor->p->inited)
- return;
-
- font_name = gtk_font_button_get_font_name (font_button);
-
- value_wid = mateconf_value_new (MATECONF_VALUE_STRING);
- mateconf_value_set_string (value_wid, font_name);
-
- value = peditor->p->conv_from_widget_cb (peditor, value_wid);
-
- peditor_set_mateconf_value (peditor, peditor->p->key, value);
- g_signal_emit (peditor, peditor_signals[VALUE_CHANGED], 0, peditor->p->key, value);
-
- mateconf_value_free (value_wid);
- mateconf_value_free (value);
-}
-
-GObject *
-mateconf_peditor_new_font (MateConfChangeSet *changeset,
- const gchar *key,
- GtkWidget *font_button,
- const gchar *first_property_name,
- ...)
-{
- GObject *peditor;
- va_list var_args;
-
- g_return_val_if_fail (key != NULL, NULL);
- g_return_val_if_fail (GTK_IS_FONT_BUTTON (font_button), NULL);
-
- va_start (var_args, first_property_name);
-
- peditor = mateconf_peditor_new (key,
- (MateConfClientNotifyFunc) peditor_font_value_changed,
- changeset,
- G_OBJECT (font_button),
- first_property_name,
- var_args,
- NULL);
-
- va_end (var_args);
-
- g_signal_connect_swapped (font_button, "font_set",
- (GCallback) peditor_font_widget_changed, peditor);
-
- return peditor;
-}
-
-static MateConfValue*
-peditor_enum_toggle_conv_to_widget (MateConfPropertyEditor *peditor,
- const MateConfValue *value)
-{
- MateConfValue *ret;
- MateConfPropertyEditorEnumData *data = peditor->p->data;
- int index;
-
- if (value->type == MATECONF_VALUE_BOOL)
- return mateconf_value_copy (value);
-
- ret = mateconf_value_new (MATECONF_VALUE_BOOL);
-
- index = peditor_enum_int_from_string (data->enum_type,
- mateconf_value_get_string (value),
- data->use_nick);
- mateconf_value_set_bool (ret, (index != data->enum_val_false));
-
- return ret;
-}
-
-static MateConfValue*
-peditor_enum_toggle_conv_from_widget (MateConfPropertyEditor *peditor,
- const MateConfValue *value)
-{
- MateConfValue *ret;
- MateConfPropertyEditorEnumData *data = peditor->p->data;
- gchar *str;
- int index;
-
- if (value->type == MATECONF_VALUE_STRING)
- return mateconf_value_copy (value);
-
- ret = mateconf_value_new (MATECONF_VALUE_STRING);
- if (mateconf_value_get_bool (value))
- index = data->enum_val_true_fn (peditor, data->enum_val_true_fn_data);
- else
- index = data->enum_val_false;
-
- str = peditor_enum_string_from_int (data->enum_type, index, data->use_nick);
- mateconf_value_set_string (ret, str);
- g_free (str);
-
- return ret;
-}
-
-GObject *
-mateconf_peditor_new_enum_toggle (MateConfChangeSet *changeset,
- const gchar *key,
- GtkWidget *checkbox,
- GType enum_type,
- MateConfPEditorGetValueFn val_true_fn,
- guint val_false,
- gboolean use_nick,
- gpointer data,
- const gchar *first_property_name,
- ...)
-{
- GObject *peditor;
- MateConfPropertyEditorEnumData *enum_data;
- va_list var_args;
-
- g_return_val_if_fail (key != NULL, NULL);
- g_return_val_if_fail (checkbox != NULL, NULL);
- g_return_val_if_fail (GTK_IS_TOGGLE_BUTTON (checkbox), NULL);
-
- enum_data = g_new0 (MateConfPropertyEditorEnumData, 1);
- enum_data->enum_type = enum_type;
- enum_data->enum_val_true_fn = val_true_fn;
- enum_data->enum_val_true_fn_data = data;
- enum_data->enum_val_false = val_false;
- enum_data->use_nick = use_nick;
-
- va_start (var_args, first_property_name);
-
- peditor = mateconf_peditor_new
- (key,
- (MateConfClientNotifyFunc) peditor_boolean_value_changed,
- changeset,
- G_OBJECT (checkbox),
- first_property_name,
- var_args,
- "conv-to-widget-cb",
- peditor_enum_toggle_conv_to_widget,
- "conv-from-widget-cb",
- peditor_enum_toggle_conv_from_widget,
- "data",
- enum_data,
- "data-free-cb",
- g_free,
- NULL);
-
- va_end (var_args);
-
- g_signal_connect_swapped (checkbox, "toggled",
- (GCallback) peditor_boolean_widget_changed, peditor);
-
- return peditor;
-}
-
-static gboolean
-peditor_image_set_filename (MateConfPropertyEditor *peditor, const gchar *filename)
-{
- GdkPixbuf *pixbuf = NULL;
- GtkImage *image = NULL;
- const int scale = 100;
- gchar *message = NULL;
- GtkWidget *ui_control_child;
- GList *l;
-
- /* NULL is not valid, however "" is, but not an error (it's
- * the default) */
- g_return_val_if_fail (filename != NULL, FALSE);
-
-
- if (!g_file_test (filename, G_FILE_TEST_EXISTS))
- {
- message = g_strdup_printf (_("Couldn't find the file '%s'.\n\nPlease make "
- "sure it exists and try again, "
- "or choose a different background picture."),
- filename);
-
- }
- else if (!(pixbuf = gdk_pixbuf_new_from_file_at_size (filename, scale, scale, NULL)))
- {
- message = g_strdup_printf (_("I don't know how to open the file '%s'.\n"
- "Perhaps it's "
- "a kind of picture that is not yet supported.\n\n"
- "Please select a different picture instead."),
- filename);
- }
-
- ui_control_child = gtk_bin_get_child (GTK_BIN (peditor->p->ui_control));
-
- if (GTK_IS_IMAGE (ui_control_child))
- image = GTK_IMAGE (ui_control_child);
- else
- {
- for (l = gtk_container_get_children (GTK_CONTAINER (ui_control_child)); l != NULL; l = l->next)
- {
- if (GTK_IS_IMAGE (l->data))
- image = GTK_IMAGE (l->data);
- else if (GTK_IS_LABEL (l->data) && message == NULL)
- {
- gchar *base = g_path_get_basename (filename);
- gtk_label_set_text (GTK_LABEL (l->data), base);
- g_free (base);
- }
- }
- }
-
- if (message)
- {
- if (peditor->p->inited)
- {
- GtkWidget *box;
-
- box = gtk_message_dialog_new (NULL,
- GTK_DIALOG_MODAL,
- GTK_MESSAGE_ERROR,
- GTK_BUTTONS_OK,
- "%s",
- message);
- gtk_dialog_run (GTK_DIALOG (box));
- gtk_widget_destroy (box);
- } else {
- gtk_image_set_from_stock (image, GTK_STOCK_MISSING_IMAGE,
- GTK_ICON_SIZE_BUTTON);
- }
- g_free (message);
-
- return FALSE;
- }
-
- gtk_image_set_from_pixbuf (image, pixbuf);
- g_object_unref (pixbuf);
-
- return TRUE;
-}
-
-static void
-peditor_image_chooser_response_cb (GtkWidget *chooser,
- gint response,
- MateConfPropertyEditor *peditor)
-{
- MateConfValue *value, *value_wid;
- gchar *filename;
-
- if (response == GTK_RESPONSE_CANCEL ||
- response == GTK_RESPONSE_DELETE_EVENT)
- {
- gtk_widget_destroy (chooser);
- return;
- }
-
- if (!peditor->p->inited)
- return;
-
- filename = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (chooser));
- if (!(filename && peditor_image_set_filename (peditor, filename)))
- {
- g_free (filename);
- return;
- }
-
- value_wid = mateconf_value_new (MATECONF_VALUE_STRING);
- mateconf_value_set_string (value_wid, filename);
- value = peditor->p->conv_from_widget_cb (peditor, value_wid);
-
- peditor_set_mateconf_value (peditor, peditor->p->key, value);
- g_signal_emit (peditor, peditor_signals[VALUE_CHANGED], 0, peditor->p->key, value);
-
- mateconf_value_free (value_wid);
- mateconf_value_free (value);
- g_free (filename);
- gtk_widget_destroy (chooser);
-}
-
-static void
-peditor_image_chooser_update_preview_cb (GtkFileChooser *chooser,
- GtkImage *preview)
-{
- char *filename;
- GdkPixbuf *pixbuf = NULL;
- const int scale = 100;
-
- filename = gtk_file_chooser_get_preview_filename (chooser);
-
- if (filename != NULL && g_file_test (filename, G_FILE_TEST_IS_REGULAR))
- pixbuf = gdk_pixbuf_new_from_file_at_size (filename, scale, scale, NULL);
-
- gtk_image_set_from_pixbuf (preview, pixbuf);
-
- g_free (filename);
-
- if (pixbuf != NULL)
- g_object_unref (pixbuf);
-}
-
-static void
-peditor_image_clicked_cb (MateConfPropertyEditor *peditor, GtkButton *button)
-{
- MateConfValue *value = NULL, *value_wid;
- const gchar *filename;
- GtkWidget *chooser, *toplevel, *preview, *preview_box;
-
- toplevel = gtk_widget_get_toplevel (GTK_WIDGET (button));
- chooser = gtk_file_chooser_dialog_new (_("Please select an image."),
- GTK_IS_WINDOW (toplevel) ? GTK_WINDOW (toplevel)
- : NULL,
- GTK_FILE_CHOOSER_ACTION_OPEN,
- GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
- _("_Select"), GTK_RESPONSE_OK,
- NULL);
-
- preview = gtk_image_new ();
-
- preview_box = gtk_hbox_new (FALSE, 6);
- gtk_box_pack_start (GTK_BOX (preview_box), preview, FALSE, TRUE, 0);
- gtk_container_set_border_width (GTK_CONTAINER (preview_box), 6);
-
- gtk_widget_show_all (preview_box);
- gtk_file_chooser_set_preview_widget (GTK_FILE_CHOOSER (chooser),
- preview_box);
- gtk_file_chooser_set_preview_widget_active (GTK_FILE_CHOOSER (chooser),
- TRUE);
-
- gtk_dialog_set_default_response (GTK_DIALOG (chooser), GTK_RESPONSE_OK);
- gtk_window_set_destroy_with_parent (GTK_WINDOW (chooser), TRUE);
- gtk_window_set_modal (GTK_WINDOW (chooser), TRUE);
-
- /* need the current filename */
- if (peditor->p->changeset)
- mateconf_change_set_check_value (peditor->p->changeset, peditor->p->key, &value);
-
- if (value)
- {
- /* the one we got is not a copy */
- value = mateconf_value_copy (value);
- }
- else
- {
- MateConfClient *client = mateconf_client_get_default ();
- value = mateconf_client_get (client, peditor->p->key, NULL);
- g_object_unref (client);
- }
-
- value_wid = peditor->p->conv_to_widget_cb (peditor, value);
- filename = mateconf_value_get_string (value_wid);
-
- if (filename && strcmp (filename, ""))
- gtk_file_chooser_set_filename (GTK_FILE_CHOOSER (chooser), filename);
-
- g_signal_connect (chooser, "update-preview",
- G_CALLBACK (peditor_image_chooser_update_preview_cb),
- preview);
- g_signal_connect (chooser, "response",
- G_CALLBACK (peditor_image_chooser_response_cb),
- peditor);
-
- if (gtk_grab_get_current ())
- gtk_grab_add (chooser);
-
- gtk_widget_show (chooser);
-
- mateconf_value_free (value);
- mateconf_value_free (value_wid);
-}
-
-static void
-peditor_image_value_changed (MateConfClient *client,
- guint cnxn_id,
- MateConfEntry *entry,
- MateConfPropertyEditor *peditor)
-{
- MateConfValue *value, *value_wid;
-
- if (peditor->p->changeset != NULL)
- mateconf_change_set_remove (peditor->p->changeset, peditor->p->key);
-
- if (entry && (value = mateconf_entry_get_value (entry))) {
- const gchar *filename;
-
- value_wid = peditor->p->conv_to_widget_cb (peditor, value);
- filename = mateconf_value_get_string (value_wid);
- peditor_image_set_filename (peditor, filename);
- mateconf_value_free (value_wid);
- }
-}
-
-GObject *
-mateconf_peditor_new_image (MateConfChangeSet *changeset,
- const gchar *key,
- GtkWidget *button,
- const gchar *first_property_name,
- ...)
-{
- GObject *peditor;
- va_list var_args;
-
- g_return_val_if_fail (key != NULL, NULL);
- g_return_val_if_fail (button != NULL, NULL);
- g_return_val_if_fail (GTK_IS_BUTTON (button), NULL);
-
- va_start (var_args, first_property_name);
-
- peditor = mateconf_peditor_new
- (key,
- (MateConfClientNotifyFunc) peditor_image_value_changed,
- changeset,
- G_OBJECT (button),
- first_property_name,
- var_args, NULL);
-
- va_end (var_args);
-
- g_signal_connect_swapped (button, "clicked",
- (GCallback) peditor_image_clicked_cb, peditor);
-
- return peditor;
-}
-
-GObject *
-mateconf_peditor_new_select_radio_with_enum (MateConfChangeSet *changeset,
- const gchar *key,
- GSList *radio_group,
- GType enum_type,
- gboolean use_nick,
- const gchar *first_property_name,
- ...)
-{
- GObject *peditor;
- MateConfPropertyEditorEnumData *enum_data;
- GtkRadioButton *first_button;
- GSList *item;
- va_list var_args;
-
- g_return_val_if_fail (key != NULL, NULL);
- g_return_val_if_fail (radio_group != NULL, NULL);
- g_return_val_if_fail (radio_group->data != NULL, NULL);
- g_return_val_if_fail (GTK_IS_RADIO_BUTTON (radio_group->data), NULL);
-
- enum_data = g_new0 (MateConfPropertyEditorEnumData, 1);
- enum_data->enum_type = enum_type;
- enum_data->use_nick = use_nick;
-
- first_button = GTK_RADIO_BUTTON (radio_group->data);
-
- va_start (var_args, first_property_name);
-
- peditor = mateconf_peditor_new
- (key,
- (MateConfClientNotifyFunc) peditor_select_radio_value_changed,
- changeset,
- G_OBJECT (first_button),
- first_property_name,
- var_args,
- "conv-to-widget-cb",
- peditor_enum_conv_to_widget,
- "conv-from-widget-cb",
- peditor_enum_conv_from_widget,
- "data",
- enum_data,
- "data-free-cb",
- g_free,
- NULL);
-
- va_end (var_args);
-
- for (item = radio_group; item != NULL; item = item->next)
- g_signal_connect_swapped (item->data, "toggled",
- (GCallback) peditor_select_radio_widget_changed, peditor);
-
- return peditor;
-}
-
-static void
-peditor_tree_view_value_changed (MateConfClient *client,
- guint cnxn_id,
- MateConfEntry *entry,
- MateConfPropertyEditor *peditor)
-{
- MateConfValue *value;
-
- if (peditor->p->changeset != NULL)
- mateconf_change_set_remove (peditor->p->changeset, peditor->p->key);
-
- if (entry && (value = mateconf_entry_get_value (entry))) {
- GtkTreeView *treeview;
- GtkTreeSelection *selection;
- MateConfValue *value_wid;
-
- treeview = GTK_TREE_VIEW (peditor->p->ui_control);
- selection = gtk_tree_view_get_selection (treeview);
-
- value_wid = peditor->p->conv_to_widget_cb (peditor, value);
-
- if (value_wid != NULL) {
- GtkTreePath *path = gtk_tree_path_new_from_string (
- mateconf_value_get_string (value_wid));
- gtk_tree_selection_select_path (selection, path);
- gtk_tree_view_scroll_to_cell (treeview, path, NULL, FALSE, 0, 0);
- gtk_tree_path_free (path);
- mateconf_value_free (value_wid);
- } else {
- gtk_tree_selection_unselect_all (selection);
- }
- }
-}
-
-static void
-peditor_tree_view_widget_changed (MateConfPropertyEditor *peditor,
- GtkTreeSelection *selection)
-{
- GtkTreeModel *model;
- GtkTreeIter iter;
- MateConfValue *value, *value_wid;
-
- if (!peditor->p->inited) return;
-
- /* we don't support GTK_SELECTION_MULTIPLE */
- if (gtk_tree_selection_get_selected (selection, &model, &iter)) {
- gchar *path;
-
- path = gtk_tree_model_get_string_from_iter (model, &iter);
- value_wid = mateconf_value_new (MATECONF_VALUE_STRING);
- mateconf_value_set_string (value_wid, path);
- g_free (path);
- } else
- value_wid = NULL;
-
- value = peditor->p->conv_from_widget_cb (peditor, value_wid);
- peditor_set_mateconf_value (peditor, peditor->p->key, value);
- g_signal_emit (peditor, peditor_signals[VALUE_CHANGED], 0, peditor->p->key, value);
-
- if (value_wid)
- mateconf_value_free (value_wid);
- if (value)
- mateconf_value_free (value);
-}
-
-GObject *
-mateconf_peditor_new_tree_view (MateConfChangeSet *changeset,
- const gchar *key,
- GtkWidget *tree_view,
- const gchar *first_property_name,
- ...)
-{
- GObject *peditor;
- va_list var_args;
-
- g_return_val_if_fail (key != NULL, NULL);
- g_return_val_if_fail (tree_view != NULL, NULL);
- g_return_val_if_fail (GTK_IS_TREE_VIEW (tree_view), NULL);
-
- va_start (var_args, first_property_name);
-
- peditor = mateconf_peditor_new
- (key,
- (MateConfClientNotifyFunc) peditor_tree_view_value_changed,
- changeset,
- G_OBJECT (tree_view),
- first_property_name,
- var_args, NULL);
-
- va_end (var_args);
-
- g_signal_connect_swapped (gtk_tree_view_get_selection (GTK_TREE_VIEW (tree_view)),
- "changed",
- (GCallback) peditor_tree_view_widget_changed, peditor);
-
- return peditor;
-}
diff --git a/capplets/common/mateconf-property-editor.h b/capplets/common/mateconf-property-editor.h
deleted file mode 100644
index ff43dfc6..00000000
--- a/capplets/common/mateconf-property-editor.h
+++ /dev/null
@@ -1,162 +0,0 @@
-/* -*- mode: c; style: linux -*- */
-
-/* mateconf-property-editor.h
- * Copyright (C) 2001 Ximian, Inc.
- *
- * Written by Bradford Hovinen <[email protected]>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2, or (at your option)
- * any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301, USA.
- */
-
-#ifndef __MATECONF_PROPERTY_EDITOR_H
-#define __MATECONF_PROPERTY_EDITOR_H
-
-#include <gtk/gtk.h>
-#include <glib/gi18n.h>
-#include <mateconf/mateconf-client.h>
-#include <mateconf/mateconf-changeset.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#define MATECONF_PROPERTY_EDITOR(obj) G_TYPE_CHECK_INSTANCE_CAST (obj, mateconf_property_editor_get_type (), MateConfPropertyEditor)
-#define MATECONF_PROPERTY_EDITOR_CLASS(klass) G_TYPE_CHECK_CLASS_CAST (klass, mateconf_property_editor_get_type (), MateConfPropertyEditorClass)
-#define IS_MATECONF_PROPERTY_EDITOR(obj) G_TYPE_CHECK_INSTANCE_TYPE (obj, mateconf_property_editor_get_type ())
-
-typedef struct _MateConfPropertyEditor MateConfPropertyEditor;
-typedef struct _MateConfPropertyEditorClass MateConfPropertyEditorClass;
-typedef struct _MateConfPropertyEditorPrivate MateConfPropertyEditorPrivate;
-
-typedef MateConfValue *(*MateConfPEditorValueConvFn) (MateConfPropertyEditor *peditor, const MateConfValue *);
-typedef int (*MateConfPEditorGetValueFn) (MateConfPropertyEditor *peditor, gpointer data);
-
-struct _MateConfPropertyEditor
-{
- GObject parent;
-
- MateConfPropertyEditorPrivate *p;
-};
-
-struct _MateConfPropertyEditorClass
-{
- GObjectClass g_object_class;
-
- void (*value_changed) (MateConfPropertyEditor *peditor, gchar *key, const MateConfValue *value);
-};
-
-GType mateconf_property_editor_get_type (void);
-
-const gchar *mateconf_property_editor_get_key (MateConfPropertyEditor *peditor);
-GObject *mateconf_property_editor_get_ui_control (MateConfPropertyEditor *peditor);
-
-GObject *mateconf_peditor_new_boolean (MateConfChangeSet *changeset,
- const gchar *key,
- GtkWidget *checkbox,
- const gchar *first_property_name,
- ...);
-
-GObject *mateconf_peditor_new_enum_toggle (MateConfChangeSet *changeset,
- const gchar *key,
- GtkWidget *checkbox,
- GType enum_type,
- MateConfPEditorGetValueFn val_true_fn,
- guint val_false,
- gboolean use_nick,
- gpointer data,
- const gchar *first_property_name,
- ...);
-
-GObject *mateconf_peditor_new_integer (MateConfChangeSet *changeset,
- const gchar *key,
- GtkWidget *entry,
- const gchar *first_property_name,
- ...);
-GObject *mateconf_peditor_new_string (MateConfChangeSet *changeset,
- const gchar *key,
- GtkWidget *entry,
- const gchar *first_property_name,
- ...);
-GObject *mateconf_peditor_new_color (MateConfChangeSet *changeset,
- const gchar *key,
- GtkWidget *color_entry,
- const gchar *first_property_name,
- ...);
-
-GObject *mateconf_peditor_new_combo_box (MateConfChangeSet *changeset,
- const gchar *key,
- GtkWidget *combo_box,
- const gchar *first_property_name,
- ...);
-
-GObject *mateconf_peditor_new_combo_box_with_enum (MateConfChangeSet *changeset,
- const gchar *key,
- GtkWidget *combo_box,
- GType enum_type,
- gboolean use_nick,
- const gchar *first_property_name,
- ...);
-
-GObject *mateconf_peditor_new_select_radio (MateConfChangeSet *changeset,
- const gchar *key,
- GSList *radio_group,
- const gchar *first_property_name,
- ...);
-
-GObject *mateconf_peditor_new_select_radio_with_enum (MateConfChangeSet *changeset,
- const gchar *key,
- GSList *radio_group,
- GType enum_type,
- gboolean use_nick,
- const gchar *first_property_name,
- ...);
-
-GObject *mateconf_peditor_new_numeric_range (MateConfChangeSet *changeset,
- const gchar *key,
- GtkWidget *range,
- const gchar *first_property_name,
- ...);
-
-GObject *mateconf_peditor_new_font (MateConfChangeSet *changeset,
- const gchar *key,
- GtkWidget *font_button,
- const gchar *first_property_name,
- ...);
-
-GObject *mateconf_peditor_new_image (MateConfChangeSet *changeset,
- const gchar *key,
- GtkWidget *button,
- const gchar *first_property,
- ...);
-
-GObject *mateconf_peditor_new_tree_view (MateConfChangeSet *changeset,
- const gchar *key,
- GtkWidget *tree_view,
- const gchar *first_property_name,
- ...);
-
-void mateconf_peditor_widget_set_guard (MateConfPropertyEditor *peditor,
- GtkWidget *widget);
-
-/* some convenience callbacks to map int <-> float */
-MateConfValue *mateconf_value_int_to_float (MateConfPropertyEditor *ignored, MateConfValue const *value);
-MateConfValue *mateconf_value_float_to_int (MateConfPropertyEditor *ignored, MateConfValue const *value);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __MATECONF_PROPERTY_EDITOR_H */