[Xfce4-commits] <xfce4-settings:jeromeg/settings-editor> Monitor the channels using property-changed.
Jérôme Guelfucci
noreply at xfce.org
Wed Dec 23 13:10:02 CET 2009
Updating branch refs/heads/jeromeg/settings-editor
to 734e3594868ce20b66552d122e71755f01fb857b (commit)
from 468c69b0b0a31defcc304ef0cfd56f8582f184f8 (commit)
commit 734e3594868ce20b66552d122e71755f01fb857b
Author: Jérôme Guelfucci <jeromeg at xfce.org>
Date: Wed Dec 23 11:37:55 2009 +0100
Monitor the channels using property-changed.
That way we react to all kind of changes, the only issue is that
the treeview is no longer expanded to the current row as we
reload it totally.
xfce4-settings-editor/main_window.c | 39 ++++++++++++++++++----------------
1 files changed, 21 insertions(+), 18 deletions(-)
diff --git a/xfce4-settings-editor/main_window.c b/xfce4-settings-editor/main_window.c
index c9eb556..5249210 100644
--- a/xfce4-settings-editor/main_window.c
+++ b/xfce4-settings-editor/main_window.c
@@ -76,6 +76,9 @@ static void
cb_property_revert_button_clicked (GtkButton *button, gpointer user_data);
static void
xfce_settings_editor_dialog_response (GtkWidget *dialog, gint response, gpointer user_data);
+static void
+cb_channel_property_changed (XfconfChannel *channel, gchar *property, GValue *value, GtkBuilder *builder);
+
@@ -464,6 +467,8 @@ cb_channel_treeview_selection_changed (GtkTreeSelection *selection, GtkBuilder *
load_properties (channel, GTK_TREE_STORE(tree_store), GTK_TREE_VIEW(property_treeview));
current_channel = channel;
+
+ g_signal_connect (channel, "property-changed", G_CALLBACK (cb_channel_property_changed), builder);
}
static void
@@ -540,9 +545,6 @@ cb_property_edit_button_clicked (GtkButton *button, gpointer user_data)
GValue value = {0, };
gchar *prop_name = NULL;
- GObject *property_treeview = gtk_builder_get_object (builder, "property_treeview");
- GtkTreeModel *tree_store = gtk_tree_view_get_model (GTK_TREE_VIEW (property_treeview));
- GtkTreeSelection *selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (property_treeview));
GObject *dialog = gtk_builder_get_object (builder, "edit_settings_dialog");
GObject *prop_name_entry = gtk_builder_get_object (builder, "property_name_entry");
GObject *prop_type_combo = gtk_builder_get_object (builder, "property_type_combo");
@@ -636,9 +638,6 @@ cb_property_edit_button_clicked (GtkButton *button, gpointer user_data)
if (gtk_dialog_run (GTK_DIALOG(dialog)) == GTK_RESPONSE_APPLY)
{
- GtkTreeIter iter;
- GValue child_value = {0, };
-
gtk_widget_hide (GTK_WIDGET (dialog));
switch (gtk_combo_box_get_active (GTK_COMBO_BOX (prop_type_combo)))
{
@@ -669,16 +668,6 @@ cb_property_edit_button_clicked (GtkButton *button, gpointer user_data)
break;
}
xfconf_channel_set_property (current_channel, current_property, &value);
-
- /* Update the tree model so that the view is updated */
- gtk_tree_selection_get_selected (selection, &tree_store, &iter);
- g_value_init (&child_value, G_TYPE_STRING);
- g_value_transform (&value, &child_value);
- gtk_tree_store_set_value (GTK_TREE_STORE(tree_store), &iter, 3, &child_value);
-
- /* Cleanup */
- g_value_unset (&value);
- g_value_reset (&child_value);
}
else
{
@@ -713,8 +702,6 @@ cb_property_revert_button_clicked (GtkButton *button, gpointer user_data)
tree_store = gtk_tree_view_get_model (GTK_TREE_VIEW (property_treeview));
gtk_widget_hide (dialog);
xfconf_channel_reset_property (current_channel, current_property, FALSE);
- gtk_tree_store_clear (GTK_TREE_STORE(tree_store));
- load_properties (current_channel, GTK_TREE_STORE (tree_store), GTK_TREE_VIEW (property_treeview));
}
gtk_widget_destroy (dialog);
@@ -737,3 +724,19 @@ xfce_settings_editor_dialog_response (GtkWidget *dialog, gint response, gpointer
gtk_widget_destroy (dialog);
}
+
+static void
+cb_channel_property_changed (XfconfChannel *channel, gchar *property, GValue *value, GtkBuilder *builder)
+{
+ if (g_strcmp0 (property, current_property) == 0)
+ {
+ GObject *property_treeview;
+ GtkTreeModel *tree_store = NULL;
+
+ property_treeview = gtk_builder_get_object (builder, "property_treeview");
+ tree_store = gtk_tree_view_get_model (GTK_TREE_VIEW (property_treeview));
+
+ gtk_tree_store_clear (GTK_TREE_STORE(tree_store));
+ load_properties (current_channel, GTK_TREE_STORE (tree_store), GTK_TREE_VIEW (property_treeview));
+ }
+}
More information about the Xfce4-commits
mailing list