From 8456c322c0d6173bfd3f05ea24ea4c4450ae9caa Mon Sep 17 00:00:00 2001 From: Veerapuram Varadhan Date: Tue, 16 Aug 2005 21:14:14 +0000 Subject: [PATCH] Enable/disable the style-menu, shading-menu and color-picker buttons w.r.t 2005-08-15 Veerapuram Varadhan * gnome-wp-capplet.c (gnome_wp_props_wp_set): (gnome_wp_color[12]_changed, gnome_wp_options_changed): (gnome_wp_shading_changed, wallpaper_properties_init): Enable/disable the style-menu, shading-menu and color-picker buttons w.r.t gconf-keys. (gnome_wp_set_sensitivities): Utility function to take care of enabling/disabling widgets w.r.t gconf-keys. (gnome_wp_props_wp_set): Don't set the sensitivity of the remove and style buttons here. Just call the new method to do it instead --- capplets/background/ChangeLog | 12 ++++++ capplets/background/gnome-wp-capplet.c | 58 ++++++++++++++++++++++++-- 2 files changed, 66 insertions(+), 4 deletions(-) diff --git a/capplets/background/ChangeLog b/capplets/background/ChangeLog index 3ca583d70..480ad38eb 100644 --- a/capplets/background/ChangeLog +++ b/capplets/background/ChangeLog @@ -1,3 +1,15 @@ +2005-08-15 Veerapuram Varadhan + + * gnome-wp-capplet.c (gnome_wp_props_wp_set): + (gnome_wp_color[12]_changed, gnome_wp_options_changed): + (gnome_wp_shading_changed, wallpaper_properties_init): + Enable/disable the style-menu, shading-menu and color-picker + buttons w.r.t gconf-keys. + (gnome_wp_set_sensitivities): Utility function to take care of + enabling/disabling widgets w.r.t gconf-keys. + (gnome_wp_props_wp_set): Don't set the sensitivity of the remove and + style buttons here. Just call the new method to do it instead + 2005-07-25 Sebastien Bacher * gnome-wp-capplet.c (gnome_wp_{scale,shade}_type_changed): diff --git a/capplets/background/gnome-wp-capplet.c b/capplets/background/gnome-wp-capplet.c index b2df32f39..b5352edb6 100644 --- a/capplets/background/gnome-wp-capplet.c +++ b/capplets/background/gnome-wp-capplet.c @@ -39,6 +39,8 @@ static void wp_props_load_wallpaper (gchar * key, GnomeWPItem * item, GnomeWPCapplet * capplet); +static void gnome_wp_set_sensitivities (GnomeWPCapplet* capplet); + static void wp_properties_error_dialog (GtkWindow * parent, char const * msg, GError * err) { if (err != NULL) { @@ -284,13 +286,11 @@ static gboolean gnome_wp_props_wp_set (GnomeWPCapplet * capplet) { cs = gconf_change_set_new (); + gnome_wp_set_sensitivities (capplet); + if (!strcmp (item->filename, "(none)")) { gconf_change_set_set_string (cs, WP_OPTIONS_KEY, "none"); - gtk_widget_set_sensitive (capplet->wp_opts, FALSE); - gtk_widget_set_sensitive (capplet->rm_button, FALSE); } else { - gtk_widget_set_sensitive (capplet->wp_opts, TRUE); - gtk_widget_set_sensitive (capplet->rm_button, TRUE); gconf_change_set_set_string (cs, WP_FILE_KEY, item->filename); gconf_change_set_set_string (cs, WP_OPTIONS_KEY, item->options); gnome_wp_option_menu_set (capplet, item->options, FALSE); @@ -732,6 +732,8 @@ static void gnome_wp_shading_changed (GConfClient * client, guint id, GnomeWPItem * item; gchar * wpfile; + gnome_wp_set_sensitivities (capplet); + selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (capplet->treeview)); if (gtk_tree_selection_get_selected (selection, &model, &iter)) { gtk_tree_model_get (model, &iter, 2, &wpfile, -1); @@ -768,6 +770,8 @@ static void gnome_wp_color2_changed (GConfClient * client, guint id, GdkColor color; const gchar * colorhex; + gnome_wp_set_sensitivities (capplet); + colorhex = gconf_value_get_string (entry->value); gdk_color_parse (colorhex, &color); @@ -1240,6 +1244,8 @@ static void wallpaper_properties_init (poptContext ctx) { g_signal_connect (G_OBJECT (selection), "changed", G_CALLBACK (gnome_wp_props_wp_selected), capplet); + gnome_wp_set_sensitivities (capplet); + /* Create the file chooser dialog stuff here */ capplet->filesel = gtk_file_chooser_dialog_new_with_backend (_("Add Wallpaper"), GTK_WINDOW (capplet->window), @@ -1267,6 +1273,50 @@ static void wallpaper_properties_init (poptContext ctx) { G_CALLBACK (gnome_wp_update_preview), capplet); } +static void gnome_wp_set_sensitivities (GnomeWPCapplet* capplet) { + GtkTreeIter iter; + GtkTreeModel * model; + GtkTreeSelection * selection; + GnomeWPItem * item; + gchar * wpfile; + gchar * filename = NULL; + + selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (capplet->treeview)); + if (gtk_tree_selection_get_selected (selection, &model, &iter)) { + gtk_tree_model_get (model, &iter, 2, &wpfile, -1); + + item = g_hash_table_lookup (capplet->wphash, wpfile); + filename = item->filename; + g_free (wpfile); + } + + if (!gconf_client_key_is_writable (capplet->client, WP_OPTIONS_KEY, NULL) + || (filename && !strcmp (filename, "(none)"))) + gtk_widget_set_sensitive (capplet->wp_opts, FALSE); + else + gtk_widget_set_sensitive (capplet->wp_opts, TRUE); + + if (!gconf_client_key_is_writable (capplet->client, WP_SHADING_KEY, NULL)) + gtk_widget_set_sensitive (capplet->color_opt, FALSE); + else + gtk_widget_set_sensitive (capplet->color_opt, TRUE); + + if (!gconf_client_key_is_writable (capplet->client, WP_PCOLOR_KEY, NULL)) + gtk_widget_set_sensitive (capplet->pc_picker, FALSE); + else + gtk_widget_set_sensitive (capplet->pc_picker, TRUE); + + if (!gconf_client_key_is_writable (capplet->client, WP_SCOLOR_KEY, NULL)) + gtk_widget_set_sensitive (capplet->sc_picker, FALSE); + else + gtk_widget_set_sensitive (capplet->sc_picker, TRUE); + + if (!filename || !strcmp (filename, "(none)")) + gtk_widget_set_sensitive (capplet->rm_button, FALSE); + else + gtk_widget_set_sensitive (capplet->rm_button, TRUE); +} + gint main (gint argc, gchar *argv[]) { GnomeProgram * program; GValue context = { 0 };