static void enum_group_changed (GSettings *settings, gchar *key, gpointer user_data) { enum_group_load (user_data); }
static void enum_group_changed (MateConfClient *client, guint cnxn_id, MateConfEntry *entry, gpointer user_data) { enum_group_load (user_data); }
static void enum_item_toggled (GtkToggleButton *toggle_button, EnumItem *item) { EnumGroup *group = item->group; if (!in_change) { g_settings_set_enum (group->settings, group->settings_key, item->value); } /* Restore back to the previous state until we get notification */ enum_group_load (group); }
static void enum_item_toggled (GtkToggleButton *toggle_button, EnumItem *item) { EnumGroup *group = item->group; if (!in_change) { mateconf_client_set_string (group->client, group->mateconf_key, mateconf_enum_to_string (group->enums, item->value), NULL); } /* Restore back to the previous state until we get notification */ enum_group_load (group); }
static EnumGroup * enum_group_create (const gchar *mateconf_key, MateConfEnumStringPair *enums, int default_value, GtkWidget *first_widget, ...) { EnumGroup *group; GtkWidget *widget; va_list args; group = g_new (EnumGroup, 1); group->client = mateconf_client_get_default (); group->mateconf_key = g_strdup (mateconf_key); group->enums = enums; group->default_value = default_value; group->items = NULL; va_start (args, first_widget); widget = first_widget; while (widget) { EnumItem *item; item = g_new (EnumItem, 1); item->group = group; item->widget = GTK_TOGGLE_BUTTON (widget); item->value = va_arg (args, int); g_signal_connect (item->widget, "toggled", G_CALLBACK (enum_item_toggled), item); group->items = g_slist_prepend (group->items, item); widget = va_arg (args, GtkWidget *); } va_end (args); enum_group_load (group); mateconf_client_notify_add (group->client, mateconf_key, enum_group_changed, group, NULL, NULL); return group; }
static EnumGroup * enum_group_create (GSettings *settings, const gchar *settings_key, GtkWidget *first_widget, ...) { EnumGroup *group; GtkWidget *widget; va_list args; group = g_new (EnumGroup, 1); group->settings = g_object_ref (settings); group->settings_key = g_strdup (settings_key); group->items = NULL; va_start (args, first_widget); widget = first_widget; while (widget) { EnumItem *item; item = g_new (EnumItem, 1); item->group = group; item->widget = GTK_TOGGLE_BUTTON (widget); item->value = va_arg (args, int); g_signal_connect (item->widget, "toggled", G_CALLBACK (enum_item_toggled), item); group->items = g_slist_prepend (group->items, item); widget = va_arg (args, GtkWidget *); } va_end (args); enum_group_load (group); gchar *signal_name = g_strdup_printf("changed::%s", settings_key); group->settings_signal_id = g_signal_connect (settings, signal_name, G_CALLBACK (enum_group_changed), group); g_free (signal_name); return group; }