[nautilus] pane: refactor to make NautilusWindow a GObject property
- From: Cosimo Cecchi <cosimoc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [nautilus] pane: refactor to make NautilusWindow a GObject property
- Date: Mon, 9 Jan 2012 22:25:48 +0000 (UTC)
commit e83f6e0990971ea22275bd9cf877541b7824ab14
Author: Cosimo Cecchi <cosimoc gnome org>
Date: Fri Jan 6 14:50:35 2012 +0100
pane: refactor to make NautilusWindow a GObject property
src/nautilus-window-pane.c | 103 +++++++++++++++++++++++++++++++++----------
1 files changed, 79 insertions(+), 24 deletions(-)
---
diff --git a/src/nautilus-window-pane.c b/src/nautilus-window-pane.c
index 8735ec0..0c4543a 100644
--- a/src/nautilus-window-pane.c
+++ b/src/nautilus-window-pane.c
@@ -45,6 +45,13 @@
#define DEBUG_FLAG NAUTILUS_DEBUG_WINDOW
#include <libnautilus-private/nautilus-debug.h>
+enum {
+ PROP_WINDOW = 1,
+ NUM_PROPERTIES
+};
+
+static GParamSpec *properties[NUM_PROPERTIES] = { NULL, };
+
G_DEFINE_TYPE (NautilusWindowPane, nautilus_window_pane,
GTK_TYPE_BOX)
@@ -658,12 +665,66 @@ setup_search_action (NautilusWindowPane *pane)
}
static void
-nautilus_window_pane_setup (NautilusWindowPane *pane)
+nautilus_window_pane_set_property (GObject *object,
+ guint arg_id,
+ const GValue *value,
+ GParamSpec *pspec)
+{
+ NautilusWindowPane *self = NAUTILUS_WINDOW_PANE (object);
+
+ switch (arg_id) {
+ case PROP_WINDOW:
+ self->window = g_value_get_object (value);
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, arg_id, pspec);
+ break;
+ }
+}
+
+static void
+nautilus_window_pane_get_property (GObject *object,
+ guint arg_id,
+ GValue *value,
+ GParamSpec *pspec)
+{
+ NautilusWindowPane *self = NAUTILUS_WINDOW_PANE (object);
+
+ switch (arg_id) {
+ case PROP_WINDOW:
+ g_value_set_object (value, self->window);
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, arg_id, pspec);
+ break;
+ }
+}
+
+static void
+nautilus_window_pane_dispose (GObject *object)
+{
+ NautilusWindowPane *pane = NAUTILUS_WINDOW_PANE (object);
+
+ unset_focus_widget (pane);
+
+ pane->window = NULL;
+ g_clear_object (&pane->action_group);
+
+ g_assert (pane->slots == NULL);
+
+ G_OBJECT_CLASS (nautilus_window_pane_parent_class)->dispose (object);
+}
+
+static void
+nautilus_window_pane_constructed (GObject *obj)
{
+ NautilusWindowPane *pane = NAUTILUS_WINDOW_PANE (obj);
GtkSizeGroup *header_size_group;
NautilusWindow *window;
GtkActionGroup *action_group;
+ G_OBJECT_CLASS (nautilus_window_pane_parent_class)->constructed (obj);
+
window = pane->window;
header_size_group = gtk_size_group_new (GTK_SIZE_GROUP_VERTICAL);
@@ -759,26 +820,25 @@ nautilus_window_pane_setup (NautilusWindowPane *pane)
}
static void
-nautilus_window_pane_dispose (GObject *object)
-{
- NautilusWindowPane *pane = NAUTILUS_WINDOW_PANE (object);
-
- unset_focus_widget (pane);
-
- pane->window = NULL;
- g_clear_object (&pane->action_group);
-
- g_assert (pane->slots == NULL);
-
- G_OBJECT_CLASS (nautilus_window_pane_parent_class)->dispose (object);
-}
-
-static void
nautilus_window_pane_class_init (NautilusWindowPaneClass *klass)
{
GObjectClass *oclass = G_OBJECT_CLASS (klass);
+ oclass->constructed = nautilus_window_pane_constructed;
oclass->dispose = nautilus_window_pane_dispose;
+ oclass->set_property = nautilus_window_pane_set_property;
+ oclass->get_property = nautilus_window_pane_get_property;
+
+ properties[PROP_WINDOW] =
+ g_param_spec_object ("window",
+ "The NautilusWindow",
+ "The parent NautilusWindow",
+ NAUTILUS_TYPE_WINDOW,
+ G_PARAM_READWRITE |
+ G_PARAM_CONSTRUCT_ONLY |
+ G_PARAM_STATIC_STRINGS);
+
+ g_object_class_install_properties (oclass, NUM_PROPERTIES, properties);
}
static void
@@ -794,14 +854,9 @@ nautilus_window_pane_init (NautilusWindowPane *pane)
NautilusWindowPane *
nautilus_window_pane_new (NautilusWindow *window)
{
- NautilusWindowPane *pane;
-
- pane = g_object_new (NAUTILUS_TYPE_WINDOW_PANE, NULL);
- pane->window = window;
-
- nautilus_window_pane_setup (pane);
-
- return pane;
+ return g_object_new (NAUTILUS_TYPE_WINDOW_PANE,
+ "window", window,
+ NULL);
}
NautilusWindowSlot *
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]