diff options
author | Ramiro Estrugo <ramiro@src.gnome.org> | 2001-03-31 08:37:53 +0000 |
---|---|---|
committer | Ramiro Estrugo <ramiro@src.gnome.org> | 2001-03-31 08:37:53 +0000 |
commit | 1112db52e478c6bd0039d08ffcc3ae3924d0f57f (patch) | |
tree | 084c866e61f9a0811a621646e369b7b201f29ac8 | |
parent | e073afed03d085692fed247ee173a7ee20407a73 (diff) | |
download | nautilus-1112db52e478c6bd0039d08ffcc3ae3924d0f57f.tar.gz |
New function to update the showing state of the item depending on
* libnautilus-extensions/nautilus-preferences-item.h:
* libnautilus-extensions/nautilus-preferences-item.c:
(nautilus_preferences_item_update_showing): New function to update
the showing state of the item depending on preferences visibility.
(preferences_item_construct),
(preferences_item_value_changed_callback),
(preferences_item_create_enum),
(preferences_item_update_displayed_value): Make
update_displayed_value private. It no longer needs to be called
by the parent container. Since preference items now get updated
by value changed callbacks.
* libnautilus-extensions/nautilus-preferences-group.c:
(nautilus_preferences_group_update): No need to update the showing
state of the items over here. Simpy call the new preferences item
function to do this.
* libnautilus-extensions/nautilus-preferences-dialog.c:
(nautilus_preferences_dialog_initialize),
(nautilus_preferences_dialog_destroy):
Have the callback automatically removed. Small style tweaking.
-rw-r--r-- | ChangeLog | 24 | ||||
-rw-r--r-- | libnautilus-extensions/nautilus-preferences-dialog.c | 20 | ||||
-rw-r--r-- | libnautilus-extensions/nautilus-preferences-group.c | 19 | ||||
-rw-r--r-- | libnautilus-extensions/nautilus-preferences-item.c | 44 | ||||
-rw-r--r-- | libnautilus-extensions/nautilus-preferences-item.h | 2 | ||||
-rw-r--r-- | libnautilus-private/nautilus-preferences-dialog.c | 20 | ||||
-rw-r--r-- | libnautilus-private/nautilus-preferences-group.c | 19 | ||||
-rw-r--r-- | libnautilus-private/nautilus-preferences-item.c | 44 | ||||
-rw-r--r-- | libnautilus-private/nautilus-preferences-item.h | 2 |
9 files changed, 110 insertions, 84 deletions
@@ -1,3 +1,27 @@ +2001-03-31 Ramiro Estrugo <ramiro@eazel.com> + + * libnautilus-extensions/nautilus-preferences-item.h: + * libnautilus-extensions/nautilus-preferences-item.c: + (nautilus_preferences_item_update_showing): New function to update + the showing state of the item depending on preferences visibility. + (preferences_item_construct), + (preferences_item_value_changed_callback), + (preferences_item_create_enum), + (preferences_item_update_displayed_value): Make + update_displayed_value private. It no longer needs to be called + by the parent container. Since preference items now get updated + by value changed callbacks. + + * libnautilus-extensions/nautilus-preferences-group.c: + (nautilus_preferences_group_update): No need to update the showing + state of the items over here. Simpy call the new preferences item + function to do this. + + * libnautilus-extensions/nautilus-preferences-dialog.c: + (nautilus_preferences_dialog_initialize), + (nautilus_preferences_dialog_destroy): + Have the callback automatically removed. Small style tweaking. + 2001-03-30 Ramiro Estrugo <ramiro@eazel.com> reviewed by: John Harper <jsh@eazel.com> diff --git a/libnautilus-extensions/nautilus-preferences-dialog.c b/libnautilus-extensions/nautilus-preferences-dialog.c index 8a4b7dde3..14c770909 100644 --- a/libnautilus-extensions/nautilus-preferences-dialog.c +++ b/libnautilus-extensions/nautilus-preferences-dialog.c @@ -107,13 +107,14 @@ nautilus_preferences_dialog_initialize_class (NautilusPreferencesDialogClass * k } static void -nautilus_preferences_dialog_initialize (NautilusPreferencesDialog * prefs_dialog) +nautilus_preferences_dialog_initialize (NautilusPreferencesDialog *prefs_dialog) { - prefs_dialog->details = g_new (NautilusPreferencesDialogDetails, 1); - - prefs_dialog->details->prefs_box = NULL; - - nautilus_preferences_add_callback ("user_level", user_level_changed_callback, prefs_dialog); + prefs_dialog->details = g_new0 (NautilusPreferencesDialogDetails, 1); + + nautilus_preferences_add_callback_while_alive ("user_level", + user_level_changed_callback, + prefs_dialog, + GTK_OBJECT (prefs_dialog)); } static void @@ -236,13 +237,10 @@ nautilus_preferences_dialog_destroy(GtkObject* object) prefs_dialog = NAUTILUS_PREFERENCES_DIALOG(object); - nautilus_preferences_remove_callback ("user_level", user_level_changed_callback, prefs_dialog); - g_free (prefs_dialog->details); - /* Chain */ - if (GTK_OBJECT_CLASS (parent_class)->destroy != NULL) - (* GTK_OBJECT_CLASS (parent_class)->destroy) (object); + /* Chain destroy */ + NAUTILUS_CALL_PARENT (GTK_OBJECT_CLASS, destroy, (object)); } GtkWidget* diff --git a/libnautilus-extensions/nautilus-preferences-group.c b/libnautilus-extensions/nautilus-preferences-group.c index 8ea5c0d87..59c51bd5d 100644 --- a/libnautilus-extensions/nautilus-preferences-group.c +++ b/libnautilus-extensions/nautilus-preferences-group.c @@ -269,28 +269,13 @@ void nautilus_preferences_group_update (NautilusPreferencesGroup *group) { GList *iterator; - NautilusPreferencesItem *preferences_item; - gboolean shown; - char *name = NULL; g_return_if_fail (NAUTILUS_IS_PREFERENCES_GROUP (group)); for (iterator = group->details->items; iterator != NULL; iterator = iterator->next) { - preferences_item = NAUTILUS_PREFERENCES_ITEM (iterator->data); - - name = nautilus_preferences_item_get_name (preferences_item); - - nautilus_preferences_item_update_displayed_value (preferences_item); - - if (nautilus_preferences_is_visible (name)) { - shown = nautilus_preferences_item_get_control_showing (preferences_item); - } else { - shown = FALSE; - } - - nautilus_gtk_widget_set_shown (GTK_WIDGET (iterator->data), shown); + g_assert (NAUTILUS_IS_PREFERENCES_ITEM (iterator->data)); - g_free (name); + nautilus_preferences_item_update_showing (NAUTILUS_PREFERENCES_ITEM (iterator->data)); } preferences_group_align_captions (group); diff --git a/libnautilus-extensions/nautilus-preferences-item.c b/libnautilus-extensions/nautilus-preferences-item.c index 4fe711eac..3385ccdcb 100644 --- a/libnautilus-extensions/nautilus-preferences-item.c +++ b/libnautilus-extensions/nautilus-preferences-item.c @@ -24,28 +24,31 @@ #include <config.h> #include "nautilus-preferences-item.h" -#include "nautilus-preferences.h" + +#include "nautilus-enumeration.h" #include "nautilus-file-utilities.h" +#include "nautilus-font-picker.h" #include "nautilus-glib-extensions.h" +#include "nautilus-global-preferences.h" +#include "nautilus-gtk-extensions.h" #include "nautilus-gtk-macros.h" +#include "nautilus-preferences.h" +#include "nautilus-radio-button-group.h" +#include "nautilus-string-picker.h" #include "nautilus-string.h" +#include "nautilus-text-caption.h" + #include <libgnomevfs/gnome-vfs.h> #include <ctype.h> #include <libgnome/gnome-i18n.h> + #include <gtk/gtkcheckbutton.h> #include <gtk/gtksignal.h> #include <gtk/gtklabel.h> #include <gtk/gtkmain.h> -#include "nautilus-radio-button-group.h" -#include "nautilus-string-picker.h" -#include "nautilus-font-picker.h" -#include "nautilus-text-caption.h" -#include "nautilus-enumeration.h" - -#include "nautilus-global-preferences.h" static const guint PREFERENCES_ITEM_TITLE_SPACING = 4; static const guint PREFERENCES_ITEM_FRAME_BORDER_WIDTH = 6; @@ -89,6 +92,7 @@ static void preferences_item_create_font (NautilusP const char *preference_name); static void preferences_item_create_smooth_font (NautilusPreferencesItem *item, const char *preference_name); +static void preferences_item_update_displayed_value (NautilusPreferencesItem *preferences_item); static void preferences_item_update_text_settings_at_idle (NautilusPreferencesItem *preferences_item); static void preferences_item_update_editable_integer_settings_at_idle (NautilusPreferencesItem *preferences_item); static void enum_radio_group_changed_callback (GtkWidget *button_group, @@ -208,7 +212,7 @@ preferences_item_construct (NautilusPreferencesItem *item, g_assert (item->details->child != NULL); g_assert (item->details->change_signal_ID != 0); - nautilus_preferences_item_update_displayed_value (item); + preferences_item_update_displayed_value (item); gtk_box_pack_start (GTK_BOX (item), item->details->child, @@ -247,7 +251,7 @@ preferences_item_value_changed_callback (gpointer callback_data) { g_return_if_fail (NAUTILUS_IS_PREFERENCES_ITEM (callback_data)); - nautilus_preferences_item_update_displayed_value (NAUTILUS_PREFERENCES_ITEM (callback_data)); + preferences_item_update_displayed_value (NAUTILUS_PREFERENCES_ITEM (callback_data)); } static void @@ -272,7 +276,7 @@ preferences_item_create_enum (NautilusPreferencesItem *item, nautilus_radio_button_group_insert (NAUTILUS_RADIO_BUTTON_GROUP (item->details->child), description); - + g_free (description); } @@ -838,8 +842,8 @@ nautilus_preferences_item_get_name (const NautilusPreferencesItem *preferences_i return g_strdup (preferences_item->details->preference_name); } -void -nautilus_preferences_item_update_displayed_value (NautilusPreferencesItem *item) +static void +preferences_item_update_displayed_value (NautilusPreferencesItem *item) { NautilusPreferencesItemType item_type; @@ -1082,3 +1086,17 @@ nautilus_preferences_item_set_caption_spacing (NautilusPreferencesItem *item, return nautilus_caption_set_spacing (NAUTILUS_CAPTION (item->details->child), spacing); } + +void +nautilus_preferences_item_update_showing (NautilusPreferencesItem *item) +{ + gboolean shown = FALSE; + + g_return_if_fail (NAUTILUS_IS_PREFERENCES_ITEM (item)); + + if (nautilus_preferences_is_visible (item->details->preference_name)) { + shown = nautilus_preferences_item_get_control_showing (item); + } + + nautilus_gtk_widget_set_shown (GTK_WIDGET (item), shown); +} diff --git a/libnautilus-extensions/nautilus-preferences-item.h b/libnautilus-extensions/nautilus-preferences-item.h index 8ff743ad5..2dbb2cb8e 100644 --- a/libnautilus-extensions/nautilus-preferences-item.h +++ b/libnautilus-extensions/nautilus-preferences-item.h @@ -83,7 +83,6 @@ GtkType nautilus_preferences_item_get_type (void); GtkWidget* nautilus_preferences_item_new (const char *preference_name, NautilusPreferencesItemType item_type); char * nautilus_preferences_item_get_name (const NautilusPreferencesItem *preferences_item); -void nautilus_preferences_item_update_displayed_value (NautilusPreferencesItem *preferences_item); void nautilus_preferences_item_set_control_preference (NautilusPreferencesItem *preferences_item, const char *control_preference_name); void nautilus_preferences_item_set_control_action (NautilusPreferencesItem *preferences_item, @@ -96,6 +95,7 @@ gboolean nautilus_preferences_item_child_is_caption (const Nauti int nautilus_preferences_item_get_caption_title_label_width (const NautilusPreferencesItem *item); void nautilus_preferences_item_set_caption_spacing (NautilusPreferencesItem *item, int spacing); +void nautilus_preferences_item_update_showing (NautilusPreferencesItem *item); END_GNOME_DECLS diff --git a/libnautilus-private/nautilus-preferences-dialog.c b/libnautilus-private/nautilus-preferences-dialog.c index 8a4b7dde3..14c770909 100644 --- a/libnautilus-private/nautilus-preferences-dialog.c +++ b/libnautilus-private/nautilus-preferences-dialog.c @@ -107,13 +107,14 @@ nautilus_preferences_dialog_initialize_class (NautilusPreferencesDialogClass * k } static void -nautilus_preferences_dialog_initialize (NautilusPreferencesDialog * prefs_dialog) +nautilus_preferences_dialog_initialize (NautilusPreferencesDialog *prefs_dialog) { - prefs_dialog->details = g_new (NautilusPreferencesDialogDetails, 1); - - prefs_dialog->details->prefs_box = NULL; - - nautilus_preferences_add_callback ("user_level", user_level_changed_callback, prefs_dialog); + prefs_dialog->details = g_new0 (NautilusPreferencesDialogDetails, 1); + + nautilus_preferences_add_callback_while_alive ("user_level", + user_level_changed_callback, + prefs_dialog, + GTK_OBJECT (prefs_dialog)); } static void @@ -236,13 +237,10 @@ nautilus_preferences_dialog_destroy(GtkObject* object) prefs_dialog = NAUTILUS_PREFERENCES_DIALOG(object); - nautilus_preferences_remove_callback ("user_level", user_level_changed_callback, prefs_dialog); - g_free (prefs_dialog->details); - /* Chain */ - if (GTK_OBJECT_CLASS (parent_class)->destroy != NULL) - (* GTK_OBJECT_CLASS (parent_class)->destroy) (object); + /* Chain destroy */ + NAUTILUS_CALL_PARENT (GTK_OBJECT_CLASS, destroy, (object)); } GtkWidget* diff --git a/libnautilus-private/nautilus-preferences-group.c b/libnautilus-private/nautilus-preferences-group.c index 8ea5c0d87..59c51bd5d 100644 --- a/libnautilus-private/nautilus-preferences-group.c +++ b/libnautilus-private/nautilus-preferences-group.c @@ -269,28 +269,13 @@ void nautilus_preferences_group_update (NautilusPreferencesGroup *group) { GList *iterator; - NautilusPreferencesItem *preferences_item; - gboolean shown; - char *name = NULL; g_return_if_fail (NAUTILUS_IS_PREFERENCES_GROUP (group)); for (iterator = group->details->items; iterator != NULL; iterator = iterator->next) { - preferences_item = NAUTILUS_PREFERENCES_ITEM (iterator->data); - - name = nautilus_preferences_item_get_name (preferences_item); - - nautilus_preferences_item_update_displayed_value (preferences_item); - - if (nautilus_preferences_is_visible (name)) { - shown = nautilus_preferences_item_get_control_showing (preferences_item); - } else { - shown = FALSE; - } - - nautilus_gtk_widget_set_shown (GTK_WIDGET (iterator->data), shown); + g_assert (NAUTILUS_IS_PREFERENCES_ITEM (iterator->data)); - g_free (name); + nautilus_preferences_item_update_showing (NAUTILUS_PREFERENCES_ITEM (iterator->data)); } preferences_group_align_captions (group); diff --git a/libnautilus-private/nautilus-preferences-item.c b/libnautilus-private/nautilus-preferences-item.c index 4fe711eac..3385ccdcb 100644 --- a/libnautilus-private/nautilus-preferences-item.c +++ b/libnautilus-private/nautilus-preferences-item.c @@ -24,28 +24,31 @@ #include <config.h> #include "nautilus-preferences-item.h" -#include "nautilus-preferences.h" + +#include "nautilus-enumeration.h" #include "nautilus-file-utilities.h" +#include "nautilus-font-picker.h" #include "nautilus-glib-extensions.h" +#include "nautilus-global-preferences.h" +#include "nautilus-gtk-extensions.h" #include "nautilus-gtk-macros.h" +#include "nautilus-preferences.h" +#include "nautilus-radio-button-group.h" +#include "nautilus-string-picker.h" #include "nautilus-string.h" +#include "nautilus-text-caption.h" + #include <libgnomevfs/gnome-vfs.h> #include <ctype.h> #include <libgnome/gnome-i18n.h> + #include <gtk/gtkcheckbutton.h> #include <gtk/gtksignal.h> #include <gtk/gtklabel.h> #include <gtk/gtkmain.h> -#include "nautilus-radio-button-group.h" -#include "nautilus-string-picker.h" -#include "nautilus-font-picker.h" -#include "nautilus-text-caption.h" -#include "nautilus-enumeration.h" - -#include "nautilus-global-preferences.h" static const guint PREFERENCES_ITEM_TITLE_SPACING = 4; static const guint PREFERENCES_ITEM_FRAME_BORDER_WIDTH = 6; @@ -89,6 +92,7 @@ static void preferences_item_create_font (NautilusP const char *preference_name); static void preferences_item_create_smooth_font (NautilusPreferencesItem *item, const char *preference_name); +static void preferences_item_update_displayed_value (NautilusPreferencesItem *preferences_item); static void preferences_item_update_text_settings_at_idle (NautilusPreferencesItem *preferences_item); static void preferences_item_update_editable_integer_settings_at_idle (NautilusPreferencesItem *preferences_item); static void enum_radio_group_changed_callback (GtkWidget *button_group, @@ -208,7 +212,7 @@ preferences_item_construct (NautilusPreferencesItem *item, g_assert (item->details->child != NULL); g_assert (item->details->change_signal_ID != 0); - nautilus_preferences_item_update_displayed_value (item); + preferences_item_update_displayed_value (item); gtk_box_pack_start (GTK_BOX (item), item->details->child, @@ -247,7 +251,7 @@ preferences_item_value_changed_callback (gpointer callback_data) { g_return_if_fail (NAUTILUS_IS_PREFERENCES_ITEM (callback_data)); - nautilus_preferences_item_update_displayed_value (NAUTILUS_PREFERENCES_ITEM (callback_data)); + preferences_item_update_displayed_value (NAUTILUS_PREFERENCES_ITEM (callback_data)); } static void @@ -272,7 +276,7 @@ preferences_item_create_enum (NautilusPreferencesItem *item, nautilus_radio_button_group_insert (NAUTILUS_RADIO_BUTTON_GROUP (item->details->child), description); - + g_free (description); } @@ -838,8 +842,8 @@ nautilus_preferences_item_get_name (const NautilusPreferencesItem *preferences_i return g_strdup (preferences_item->details->preference_name); } -void -nautilus_preferences_item_update_displayed_value (NautilusPreferencesItem *item) +static void +preferences_item_update_displayed_value (NautilusPreferencesItem *item) { NautilusPreferencesItemType item_type; @@ -1082,3 +1086,17 @@ nautilus_preferences_item_set_caption_spacing (NautilusPreferencesItem *item, return nautilus_caption_set_spacing (NAUTILUS_CAPTION (item->details->child), spacing); } + +void +nautilus_preferences_item_update_showing (NautilusPreferencesItem *item) +{ + gboolean shown = FALSE; + + g_return_if_fail (NAUTILUS_IS_PREFERENCES_ITEM (item)); + + if (nautilus_preferences_is_visible (item->details->preference_name)) { + shown = nautilus_preferences_item_get_control_showing (item); + } + + nautilus_gtk_widget_set_shown (GTK_WIDGET (item), shown); +} diff --git a/libnautilus-private/nautilus-preferences-item.h b/libnautilus-private/nautilus-preferences-item.h index 8ff743ad5..2dbb2cb8e 100644 --- a/libnautilus-private/nautilus-preferences-item.h +++ b/libnautilus-private/nautilus-preferences-item.h @@ -83,7 +83,6 @@ GtkType nautilus_preferences_item_get_type (void); GtkWidget* nautilus_preferences_item_new (const char *preference_name, NautilusPreferencesItemType item_type); char * nautilus_preferences_item_get_name (const NautilusPreferencesItem *preferences_item); -void nautilus_preferences_item_update_displayed_value (NautilusPreferencesItem *preferences_item); void nautilus_preferences_item_set_control_preference (NautilusPreferencesItem *preferences_item, const char *control_preference_name); void nautilus_preferences_item_set_control_action (NautilusPreferencesItem *preferences_item, @@ -96,6 +95,7 @@ gboolean nautilus_preferences_item_child_is_caption (const Nauti int nautilus_preferences_item_get_caption_title_label_width (const NautilusPreferencesItem *item); void nautilus_preferences_item_set_caption_spacing (NautilusPreferencesItem *item, int spacing); +void nautilus_preferences_item_update_showing (NautilusPreferencesItem *item); END_GNOME_DECLS |