diff options
author | Ramiro Estrugo <ramiro@src.gnome.org> | 2001-03-31 02:20:56 +0000 |
---|---|---|
committer | Ramiro Estrugo <ramiro@src.gnome.org> | 2001-03-31 02:20:56 +0000 |
commit | 42cd551224d106794287674d93dda7dc0ef1d61e (patch) | |
tree | b34f557b63bde1622a4eee8dc71ee5b48f608270 /libnautilus-extensions/nautilus-preferences-pane.c | |
parent | cbb03695e597a5c216cecd388646723b617d546f (diff) | |
download | nautilus-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.c | 36 |
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)); +} |