summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRamiro Estrugo <ramiro@src.gnome.org>2001-03-31 08:37:53 +0000
committerRamiro Estrugo <ramiro@src.gnome.org>2001-03-31 08:37:53 +0000
commit1112db52e478c6bd0039d08ffcc3ae3924d0f57f (patch)
tree084c866e61f9a0811a621646e369b7b201f29ac8
parente073afed03d085692fed247ee173a7ee20407a73 (diff)
downloadnautilus-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--ChangeLog24
-rw-r--r--libnautilus-extensions/nautilus-preferences-dialog.c20
-rw-r--r--libnautilus-extensions/nautilus-preferences-group.c19
-rw-r--r--libnautilus-extensions/nautilus-preferences-item.c44
-rw-r--r--libnautilus-extensions/nautilus-preferences-item.h2
-rw-r--r--libnautilus-private/nautilus-preferences-dialog.c20
-rw-r--r--libnautilus-private/nautilus-preferences-group.c19
-rw-r--r--libnautilus-private/nautilus-preferences-item.c44
-rw-r--r--libnautilus-private/nautilus-preferences-item.h2
9 files changed, 110 insertions, 84 deletions
diff --git a/ChangeLog b/ChangeLog
index 6aa5a353d..7acdb8e75 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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