summaryrefslogtreecommitdiff
path: root/libnautilus-extensions/nautilus-preferences-pane.c
diff options
context:
space:
mode:
authorRamiro Estrugo <ramiro@src.gnome.org>2001-03-31 02:20:56 +0000
committerRamiro Estrugo <ramiro@src.gnome.org>2001-03-31 02:20:56 +0000
commit42cd551224d106794287674d93dda7dc0ef1d61e (patch)
treeb34f557b63bde1622a4eee8dc71ee5b48f608270 /libnautilus-extensions/nautilus-preferences-pane.c
parentcbb03695e597a5c216cecd388646723b617d546f (diff)
downloadnautilus-42cd551224d106794287674d93dda7dc0ef1d61e.tar.gz
reviewed by: Mike Fleming <mfleming@eazel.com>
* libnautilus-extensions/nautilus-global-preferences.c: (global_preferences_create_dialog), (global_preferences_populate_pane): No need to explicitly add pane update callbacks for control preference. These happen automatically as needed now. * libnautilus-extensions/nautilus-preferences-pane.h: * libnautilus-extensions/nautilus-preferences-pane.c: (nautilus_preferences_pane_destroy), (nautilus_preferences_pane_find_group), (preferences_pane_control_preference_changed_callback), (nautilus_preferences_pane_add_control_preference): New function to add control preferences to the pane. For each unique control preference, a callback will be added to update the pane so that control actions (such as hiding or showing items) can take place as needed.
Diffstat (limited to 'libnautilus-extensions/nautilus-preferences-pane.c')
-rw-r--r--libnautilus-extensions/nautilus-preferences-pane.c36
1 files changed, 36 insertions, 0 deletions
diff --git a/libnautilus-extensions/nautilus-preferences-pane.c b/libnautilus-extensions/nautilus-preferences-pane.c
index 8f53aa249..92d90eb54 100644
--- a/libnautilus-extensions/nautilus-preferences-pane.c
+++ b/libnautilus-extensions/nautilus-preferences-pane.c
@@ -28,6 +28,7 @@
#include "nautilus-gtk-macros.h"
#include "nautilus-gtk-extensions.h"
#include "nautilus-string.h"
+#include "nautilus-string-list.h"
#include <gtk/gtkhbox.h>
@@ -38,6 +39,7 @@ struct _NautilusPreferencesPaneDetails
{
GtkWidget *groups_box;
GList *groups;
+ NautilusStringList *control_preference_list;
};
/* NautilusPreferencesPaneClass methods */
@@ -82,6 +84,7 @@ nautilus_preferences_pane_destroy (GtkObject* object)
preferences_pane = NAUTILUS_PREFERENCES_PANE (object);
g_list_free (preferences_pane->details->groups);
+ nautilus_string_list_free (preferences_pane->details->control_preference_list);
g_free (preferences_pane->details);
/* Chain destroy */
@@ -239,3 +242,36 @@ nautilus_preferences_pane_find_group (const NautilusPreferencesPane *pane,
return NULL;
}
+
+static void
+preferences_pane_control_preference_changed_callback (gpointer callback_data)
+{
+ g_return_if_fail (NAUTILUS_IS_PREFERENCES_PANE (callback_data));
+
+ nautilus_preferences_pane_update (NAUTILUS_PREFERENCES_PANE (callback_data));
+}
+
+void
+nautilus_preferences_pane_add_control_preference (NautilusPreferencesPane *pane,
+ const char *control_preference_name)
+{
+ g_return_if_fail (NAUTILUS_IS_PREFERENCES_PANE (pane));
+ g_return_if_fail (control_preference_name != NULL);
+
+ if (nautilus_string_list_contains (pane->details->control_preference_list,
+ control_preference_name)) {
+ return;
+ }
+
+ if (pane->details->control_preference_list == NULL) {
+ pane->details->control_preference_list = nautilus_string_list_new (TRUE);
+ }
+
+ nautilus_string_list_insert (pane->details->control_preference_list,
+ control_preference_name);
+
+ nautilus_preferences_add_callback_while_alive (control_preference_name,
+ preferences_pane_control_preference_changed_callback,
+ pane,
+ GTK_OBJECT (pane));
+}