[gdl] Remove public members from GdlDockLayout
- From: Sebastien Granjoux <sgranjoux src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gdl] Remove public members from GdlDockLayout
- Date: Sat, 4 Aug 2012 20:00:52 +0000 (UTC)
commit 8957f12450b935d774a9120fbe9f47a689e206f0
Author: SÃbastien Granjoux <seb sfo free fr>
Date: Sat Aug 4 08:48:41 2012 +0200
Remove public members from GdlDockLayout
gdl/gdl-deprecated.c | 19 ++++++++
gdl/gdl-dock-layout.c | 120 ++++++++++++++++++++++++++++++++-----------------
gdl/gdl-dock-layout.h | 14 ++++--
gdl/test-dock.c | 2 +-
4 files changed, 109 insertions(+), 46 deletions(-)
---
diff --git a/gdl/gdl-deprecated.c b/gdl/gdl-deprecated.c
index 653d593..14bc18e 100644
--- a/gdl/gdl-deprecated.c
+++ b/gdl/gdl-deprecated.c
@@ -124,4 +124,23 @@ gdl_dock_item_set_default_position (GdlDockItem *item,
g_return_if_fail (item != NULL);
}
+/**
+ * gdl_dock_layout_attach:
+ * @layout: The layout object
+ * @master: The master object to which the layout will be attached
+ *
+ * Attach the @layout to the @master and delete the reference to
+ * the master that the layout attached previously.
+ *
+ * Deprecated 3.6: Use gdl_dock_layout_set_master() instead.
+ */
+void
+gdl_dock_layout_attach (GdlDockLayout *layout,
+ GdlDockMaster *master)
+{
+ g_return_if_fail (master == NULL || GDL_IS_DOCK_MASTER (master));
+
+ gdl_dock_layout_set_master (layout, G_OBJECT (master));
+}
+
#endif
diff --git a/gdl/gdl-dock-layout.c b/gdl/gdl-dock-layout.c
index 1e72dcf..21ff251 100644
--- a/gdl/gdl-dock-layout.c
+++ b/gdl/gdl-dock-layout.c
@@ -76,6 +76,9 @@ enum {
#define COLUMN_EDITABLE COLUMN_SHOW
struct _GdlDockLayoutPrivate {
+ gboolean dirty;
+ GdlDockMaster *master;
+
xmlDocPtr doc;
glong layout_changed_id;
@@ -123,9 +126,9 @@ gdl_dock_layout_class_init (GdlDockLayoutClass *klass)
g_object_class_install_property (
object_class, PROP_MASTER,
g_param_spec_object ("master", _("Master"),
- _("GdlDockMaster object which the layout object "
+ _("GdlDockMaster or GdlDockObject object which the layout object "
"is attached to"),
- GDL_TYPE_DOCK_MASTER,
+ G_TYPE_OBJECT,
G_PARAM_READWRITE));
g_object_class_install_property (
@@ -146,10 +149,13 @@ gdl_dock_layout_init (GdlDockLayout *layout)
GDL_TYPE_DOCK_LAYOUT,
GdlDockLayoutPrivate);
+ layout->priv->master = NULL;
+ layout->priv->dirty = FALSE;
+ layout->priv->idle_save_pending = FALSE;
+#ifndef GDL_DISABLE_DEPRECATED
layout->master = NULL;
layout->dirty = FALSE;
- layout->priv->idle_save_pending = FALSE;
-
+#endif
}
static void
@@ -162,7 +168,7 @@ gdl_dock_layout_set_property (GObject *object,
switch (prop_id) {
case PROP_MASTER:
- gdl_dock_layout_attach (layout, g_value_get_object (value));
+ gdl_dock_layout_set_master (layout, g_value_get_object (value));
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
@@ -179,10 +185,10 @@ gdl_dock_layout_get_property (GObject *object,
switch (prop_id) {
case PROP_MASTER:
- g_value_set_object (value, layout->master);
+ g_value_set_object (value, layout->priv->master);
break;
case PROP_DIRTY:
- g_value_set_boolean (value, layout->dirty);
+ g_value_set_boolean (value, layout->priv->dirty);
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
@@ -196,8 +202,8 @@ gdl_dock_layout_dispose (GObject *object)
layout = GDL_DOCK_LAYOUT (object);
- if (layout->master)
- gdl_dock_layout_attach (layout, NULL);
+ if (layout->priv->master)
+ gdl_dock_layout_set_master (layout, NULL);
if (layout->priv->idle_save_pending) {
layout->priv->idle_save_pending = FALSE;
@@ -543,20 +549,19 @@ gdl_dock_layout_save (GdlDockMaster *master,
/**
* gdl_dock_layout_new:
- * @dock: The dock item.
+ * @master: A master or a dock object to which the layout will be attached.
*
- * Creates a new #GdlDockLayout
+ * Creates a new #GdlDockLayout. Instead of setting @master
+ * directly with a master object, it is possible to use a #GdlDockObject, in
+ * this case the layout will be attached to the same master than the dock
+ * object.
*
* Returns: New #GdlDockLayout item.
*/
GdlDockLayout *
-gdl_dock_layout_new (GdlDock *dock)
+gdl_dock_layout_new (GObject *master)
{
- GdlDockMaster *master = NULL;
-
- /* get the master of the given dock */
- if (dock)
- master = GDL_DOCK_MASTER (gdl_dock_object_get_master (GDL_DOCK_OBJECT (dock)));
+ g_return_val_if_fail (master == NULL || GDL_IS_DOCK_MASTER (master) || GDL_IS_DOCK_OBJECT (master), NULL);
return g_object_new (GDL_TYPE_DOCK_LAYOUT,
"master", master,
@@ -586,45 +591,78 @@ gdl_dock_layout_layout_changed_cb (GdlDockMaster *master,
/**
- * gdl_dock_layout_attach:
- * @layout: The layout item
- * @master: The master item to which the layout will be attached
+ * gdl_dock_layout_set_master:
+ * @layout: The layout object
+ * @master: The master object to which the layout will be attached
*
* Attach the @layout to the @master and delete the reference to
- * the master that the layout attached previously
+ * the master that the layout attached previously. Instead of setting @master
+ * directly with the master object, it is possible to use a #GdlDockObject, in
+ * this case the layout will be attached to the same master than the dock
+ * object.
*/
void
-gdl_dock_layout_attach (GdlDockLayout *layout,
- GdlDockMaster *master)
+gdl_dock_layout_set_master (GdlDockLayout *layout,
+ GObject *master)
{
g_return_if_fail (layout != NULL);
- g_return_if_fail (master == NULL || GDL_IS_DOCK_MASTER (master));
+ g_return_if_fail (master == NULL || GDL_IS_DOCK_OBJECT (master) || GDL_IS_DOCK_MASTER (master));
- if (layout->master) {
- g_signal_handler_disconnect (layout->master,
+ if (layout->priv->master) {
+ g_signal_handler_disconnect (layout->priv->master,
layout->priv->layout_changed_id);
- g_object_unref (layout->master);
+ g_object_unref (layout->priv->master);
}
- layout->master = master;
- if (layout->master) {
- g_object_ref (layout->master);
+ if (master != NULL)
+ {
+ /* Accept a GdlDockObject instead of a GdlDockMaster */
+ if (GDL_IS_DOCK_OBJECT (master)) {
+ master = gdl_dock_object_get_master (GDL_DOCK_OBJECT (master));
+ }
+ layout->priv->master = g_object_ref (master);
layout->priv->layout_changed_id =
- g_signal_connect (layout->master, "layout-changed",
+ g_signal_connect (layout->priv->master, "layout-changed",
(GCallback) gdl_dock_layout_layout_changed_cb,
layout);
+
+ } else {
+ layout->priv->master = NULL;
}
+#ifndef GDL_DISABLE_DEPRECATED
+ layout->master = layout->priv->master;
+#endif
+}
+
+/**
+ * gdl_dock_layout_get_master:
+ * @layout: a #GdlDockLayout
+ *
+ * Retrieves the master of the object.
+ *
+ * Return value: (transfer none): a #GdlDockMaster object
+ *
+ * Since: 3.6
+ */
+GObject *
+gdl_dock_layout_get_master (GdlDockLayout *layout)
+{
+ g_return_val_if_fail (GDL_IS_DOCK_LAYOUT (layout), NULL);
+
+ return G_OBJECT (layout->priv->master);
}
+
/**
* gdl_dock_layout_load_layout:
* @layout: The dock item.
* @name: (allow-none): The name of the layout to load or %NULL for a default layout name.
*
-* Loads the layout with the given name to the memory.
+* Loads the layout with the given name from the memory.
* This will set #GdlDockLayout:dirty to %TRUE.
*
* See also gdl_dock_layout_load_from_file()
+*
* Returns: %TRUE if layout successfully loaded else %FALSE
*/
gboolean
@@ -636,7 +674,7 @@ gdl_dock_layout_load_layout (GdlDockLayout *layout,
g_return_val_if_fail (layout != NULL, FALSE);
- if (!layout->priv->doc || !layout->master)
+ if (!layout->priv->doc || !layout->priv->master)
return FALSE;
if (!name)
@@ -650,7 +688,7 @@ gdl_dock_layout_load_layout (GdlDockLayout *layout,
node = gdl_dock_layout_find_layout (layout, NULL);
if (node) {
- gdl_dock_layout_load (layout->master, node);
+ gdl_dock_layout_load (layout->priv->master, node);
return TRUE;
} else
return FALSE;
@@ -675,7 +713,7 @@ gdl_dock_layout_save_layout (GdlDockLayout *layout,
gchar *layout_name;
g_return_if_fail (layout != NULL);
- g_return_if_fail (layout->master != NULL);
+ g_return_if_fail (layout->priv->master != NULL);
if (!layout->priv->doc)
gdl_dock_layout_build_doc (layout);
@@ -698,8 +736,8 @@ gdl_dock_layout_save_layout (GdlDockLayout *layout,
xmlSetProp (node, BAD_CAST NAME_ATTRIBUTE_NAME, BAD_CAST layout_name);
/* save the layout */
- gdl_dock_layout_save (layout->master, node);
- layout->dirty = TRUE;
+ gdl_dock_layout_save (layout->priv->master, node);
+ layout->priv->dirty = TRUE;
g_object_notify (G_OBJECT (layout), "dirty");
}
@@ -727,7 +765,7 @@ gdl_dock_layout_delete_layout (GdlDockLayout *layout,
if (node) {
xmlUnlinkNode (node);
xmlFreeNode (node);
- layout->dirty = TRUE;
+ layout->priv->dirty = TRUE;
g_object_notify (G_OBJECT (layout), "dirty");
}
}
@@ -751,7 +789,7 @@ gdl_dock_layout_load_from_file (GdlDockLayout *layout,
if (layout->priv->doc) {
xmlFreeDoc (layout->priv->doc);
layout->priv->doc = NULL;
- layout->dirty = FALSE;
+ layout->priv->dirty = FALSE;
g_object_notify (G_OBJECT (layout), "dirty");
}
@@ -802,7 +840,7 @@ gdl_dock_layout_save_to_file (GdlDockLayout *layout,
if (file_handle) {
bytes = xmlDocDump (file_handle, layout->priv->doc);
if (bytes >= 0) {
- layout->dirty = FALSE;
+ layout->priv->dirty = FALSE;
g_object_notify (G_OBJECT (layout), "dirty");
retval = TRUE;
};
@@ -824,7 +862,7 @@ gdl_dock_layout_is_dirty (GdlDockLayout *layout)
{
g_return_val_if_fail (layout != NULL, FALSE);
- return layout->dirty;
+ return layout->priv->dirty;
};
/**
diff --git a/gdl/gdl-dock-layout.h b/gdl/gdl-dock-layout.h
index d2b73db..82ed8ec 100644
--- a/gdl/gdl-dock-layout.h
+++ b/gdl/gdl-dock-layout.h
@@ -52,9 +52,10 @@ struct _GdlDockLayout {
GObject g_object;
/*< private >*/
+#ifndef GDL_DISABLE_DEPRECATED
gboolean dirty;
GdlDockMaster *master;
-
+#endif
GdlDockLayoutPrivate *priv;
};
@@ -67,10 +68,11 @@ struct _GdlDockLayoutClass {
GType gdl_dock_layout_get_type (void);
-GdlDockLayout *gdl_dock_layout_new (GdlDock *dock);
+GdlDockLayout *gdl_dock_layout_new (GObject *master);
-void gdl_dock_layout_attach (GdlDockLayout *layout,
- GdlDockMaster *master);
+void gdl_dock_layout_set_master (GdlDockLayout *layout,
+ GObject *master);
+GObject *gdl_dock_layout_get_master (GdlDockLayout *layout);
gboolean gdl_dock_layout_load_layout (GdlDockLayout *layout,
const gchar *name);
@@ -92,6 +94,10 @@ gboolean gdl_dock_layout_save_to_file (GdlDockLayout *layout,
gboolean gdl_dock_layout_is_dirty (GdlDockLayout *layout);
+#ifndef GDL_DISABLE_DEPRECATED
+void gdl_dock_layout_attach (GdlDockLayout *layout,
+ GdlDockMaster *master);
+#endif
G_END_DECLS
diff --git a/gdl/test-dock.c b/gdl/test-dock.c
index b92100c..954b4ca 100644
--- a/gdl/test-dock.c
+++ b/gdl/test-dock.c
@@ -202,7 +202,7 @@ main (int argc, char **argv)
dock = gdl_dock_new ();
/* ... and the layout manager */
- layout = gdl_dock_layout_new (GDL_DOCK (dock));
+ layout = gdl_dock_layout_new (G_OBJECT (dock));
/* create the dockbar */
dockbar = gdl_dock_bar_new (G_OBJECT (dock));
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]