summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJuan Pablo Ugarte <jpu@src.gnome.org>2006-09-13 20:37:13 +0000
committerJuan Pablo Ugarte <jpu@src.gnome.org>2006-09-13 20:37:13 +0000
commit9a8448174a22b784588bf3203e3824d3303c1192 (patch)
tree7ed61a8b298052b55aaac772f6b4a03bedc9882b
parentc815a61e1de587f6262a40f20178adbe6f316088 (diff)
downloadglade-9a8448174a22b784588bf3203e3824d3303c1192.tar.gz
o added support for removing a BonoboDockItem from BonoboDock. o added
* src/glade-gnome.c: o added support for removing a BonoboDockItem from BonoboDock. o added missing g_return_if_fail() in several functions * widgets/bonobo.xml.in: added glade_gnome_bonobodock_remove_item()
-rw-r--r--ChangeLog8
-rw-r--r--src/glade-gnome.c131
-rw-r--r--widgets/bonobo.xml.in1
3 files changed, 95 insertions, 45 deletions
diff --git a/ChangeLog b/ChangeLog
index 08744461..14d6e13f 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2006-09-13 Juan Pablo Ugarte <juanpablougarte@gmail.com>
+
+ * src/glade-gnome.c:
+ o added support for removing a BonoboDockItem from BonoboDock.
+ o added missing g_return_if_fail() in several functions
+
+ * widgets/bonobo.xml.in: added glade_gnome_bonobodock_remove_item()
+
2006-09-12 Juan Pablo Ugarte <juanpablougarte@gmail.com>
* src/glade-gtk.c: GtkImage support improved. Finally no more
diff --git a/src/glade-gnome.c b/src/glade-gnome.c
index 7bd43b97..93fb1914 100644
--- a/src/glade-gnome.c
+++ b/src/glade-gnome.c
@@ -176,8 +176,12 @@ GList * GLADEGNOME_API
glade_gnome_app_get_children (GObject *object)
{
GList *list = NULL;
- GnomeApp *app = GNOME_APP (object);
+ GnomeApp *app;
+ g_return_val_if_fail (GNOME_IS_APP (object), NULL);
+
+ app = GNOME_APP (object);
+
if (app->dock) list = g_list_append (list, G_OBJECT (app->dock));
if (app->statusbar) list = g_list_append (list, G_OBJECT (app->statusbar));
if (app->contents) list = g_list_append (list, G_OBJECT (app->contents));
@@ -870,10 +874,13 @@ glade_gnome_dialog_add_button (GladeWidget *gaction_area,
void GLADEGNOME_API
glade_gnome_dialog_post_create (GObject *object, GladeCreateReason reason)
{
- GnomeDialog *dialog = GNOME_DIALOG (object);
GladeWidget *gdialog, *gvbox, *gaction_area;
GtkWidget *separator;
-
+ GnomeDialog *dialog;
+
+ g_return_if_fail (GNOME_IS_DIALOG (object));
+
+ dialog = GNOME_DIALOG (object);
gdialog = glade_widget_get_from_gobject (object);
/* Ignore close signal */
@@ -1003,6 +1010,8 @@ glade_gnome_about_dialog_get_children (GObject *object)
void GLADEGNOME_API
glade_gnome_about_set_name (GObject *object, GValue *value)
{
+ g_return_if_fail (GNOME_IS_ABOUT (object));
+
if (g_value_get_string (value))
g_object_set_property (object, "name", value);
}
@@ -1010,6 +1019,8 @@ glade_gnome_about_set_name (GObject *object, GValue *value)
void GLADEGNOME_API
glade_gnome_about_set_version (GObject *object, GValue *value)
{
+ g_return_if_fail (GNOME_IS_ABOUT (object));
+
if (g_value_get_string (value))
g_object_set_property (object, "version", value);
}
@@ -1256,6 +1267,8 @@ glade_gnome_font_picker_get_children (GObject *object)
{
GtkWidget *child;
+ g_return_val_if_fail (GNOME_IS_FONT_PICKER (object), NULL);
+
if ((child = gnome_font_picker_uw_get_widget (GNOME_FONT_PICKER (object))))
return g_list_append (NULL, G_OBJECT (child));
else
@@ -1265,6 +1278,7 @@ glade_gnome_font_picker_get_children (GObject *object)
void GLADEGNOME_API
glade_gnome_font_picker_add_child (GtkWidget *container, GtkWidget *child)
{
+ g_return_if_fail (GNOME_IS_FONT_PICKER (container));
gnome_font_picker_uw_set_widget (GNOME_FONT_PICKER (container), child);
}
@@ -1507,17 +1521,73 @@ glade_gnome_gtk_pack_type_spec (void)
0, G_PARAM_READWRITE);
}
+/* BonoboDockBand convenience functions */
+static BonoboDockBand *
+glade_gnome_bdb_get_band (GList *bands, GtkWidget *widget)
+{
+ GList *l;
+
+ for (l = bands; l; l = l->next)
+ {
+ BonoboDockBand *band = (BonoboDockBand *) l->data;
+ GList *cl;
+ for (cl = band->children; cl; cl = cl->next)
+ {
+ BonoboDockBandChild *child = (BonoboDockBandChild *) cl->data;
+ if (child->widget == widget) return band;
+ }
+ }
+
+ return NULL;
+}
+
+static BonoboDockBand *
+glade_gnome_bd_get_band (BonoboDock *dock, GtkWidget *widget)
+{
+ BonoboDockBand *retval;
+
+ retval = glade_gnome_bdb_get_band (dock->top_bands, widget);
+ if (retval) return retval;
+
+ retval = glade_gnome_bdb_get_band (dock->bottom_bands, widget);
+ if (retval) return retval;
+
+ retval = glade_gnome_bdb_get_band (dock->right_bands, widget);
+ if (retval) return retval;
+
+ retval = glade_gnome_bdb_get_band (dock->left_bands, widget);
+ if (retval) return retval;
+
+ return NULL;
+}
+
/* BonoboDock */
void GLADEGNOME_API
glade_gnome_bonobodock_add_item (GObject *object, GObject *child)
{
+ g_return_if_fail (BONOBO_IS_DOCK (object));
+ g_return_if_fail (BONOBO_IS_DOCK_ITEM (child));
+
bonobo_dock_add_item (BONOBO_DOCK (object), BONOBO_DOCK_ITEM (child),
0,0,0,0, TRUE);
}
void GLADEGNOME_API
+glade_gnome_bonobodock_remove_item (GObject *object, GObject *child)
+{
+ BonoboDockBand *band;
+
+ g_return_if_fail (BONOBO_IS_DOCK (object));
+
+ band = glade_gnome_bd_get_band (BONOBO_DOCK (object), GTK_WIDGET (child));
+
+ gtk_container_remove (GTK_CONTAINER (band), GTK_WIDGET (child));
+}
+
+void GLADEGNOME_API
glade_gnome_bonobodock_add_client_area (GObject *object, GObject *child)
{
+ g_return_if_fail (BONOBO_IS_DOCK (object));
bonobo_dock_set_client_area (BONOBO_DOCK (object), GTK_WIDGET (child));
}
@@ -1525,8 +1595,11 @@ GList * GLADEGNOME_API
glade_gnome_bonobodock_get_children (GObject *object)
{
GList *list = NULL, *l;
- BonoboDock *dock = BONOBO_DOCK (object);
- BonoboDockLayout *layout = bonobo_dock_get_layout (dock);
+ BonoboDockLayout *layout;
+
+ g_return_val_if_fail (BONOBO_IS_DOCK (object), NULL);
+
+ layout = bonobo_dock_get_layout (BONOBO_DOCK (object));
for (l = layout->items; l; l = l->next)
{
@@ -1540,7 +1613,11 @@ glade_gnome_bonobodock_get_children (GObject *object)
GList * GLADEGNOME_API
glade_gnome_bonobodock_get_client_area (GObject *object)
{
- GtkWidget *client_area = bonobo_dock_get_client_area (BONOBO_DOCK (object));
+ GtkWidget *client_area;
+
+ g_return_val_if_fail (BONOBO_IS_DOCK (object), NULL);
+
+ client_area = bonobo_dock_get_client_area (BONOBO_DOCK (object));
if (client_area) return g_list_append (NULL, client_area);
@@ -1552,48 +1629,10 @@ glade_gnome_bonobodock_replace_client_area (GtkWidget *container,
GtkWidget *current,
GtkWidget *new)
{
+ g_return_if_fail (BONOBO_IS_DOCK (container));
bonobo_dock_set_client_area (BONOBO_DOCK (container), new);
}
-static BonoboDockBand *
-glade_gnome_bdb_get_band (GList *bands, GtkWidget *widget)
-{
- GList *l;
-
- for (l = bands; l; l = l->next)
- {
- BonoboDockBand *band = (BonoboDockBand *) l->data;
- GList *cl;
- for (cl = band->children; cl; cl = cl->next)
- {
- BonoboDockBandChild *child = (BonoboDockBandChild *) cl->data;
- if (child->widget == widget) return band;
- }
- }
-
- return NULL;
-}
-
-static BonoboDockBand *
-glade_gnome_bd_get_band (BonoboDock *dock, GtkWidget *widget)
-{
- BonoboDockBand *retval;
-
- retval = glade_gnome_bdb_get_band (dock->top_bands, widget);
- if (retval) return retval;
-
- retval = glade_gnome_bdb_get_band (dock->bottom_bands, widget);
- if (retval) return retval;
-
- retval = glade_gnome_bdb_get_band (dock->right_bands, widget);
- if (retval) return retval;
-
- retval = glade_gnome_bdb_get_band (dock->left_bands, widget);
- if (retval) return retval;
-
- return NULL;
-}
-
static gboolean
glade_gnome_bonobodockitem_get_props (BonoboDock *doc,
BonoboDockItem *item,
@@ -1637,6 +1676,7 @@ glade_gnome_bonobodock_set_child_property (GObject *container,
gboolean new_band = FALSE;
g_return_if_fail (BONOBO_IS_DOCK (container));
+ g_return_if_fail (BONOBO_IS_DOCK_ITEM (child));
dock = BONOBO_DOCK (container);
item = BONOBO_DOCK_ITEM (child);
@@ -1720,6 +1760,7 @@ glade_gnome_bonobodock_get_child_property (GObject *container,
void GLADEGNOME_API
glade_gnome_bonobodock_set_allow_floating (GObject *object, GValue *value)
{
+ g_return_if_fail (BONOBO_IS_DOCK (object));
bonobo_dock_allow_floating_items (BONOBO_DOCK (object),
g_value_get_boolean (value));
}
diff --git a/widgets/bonobo.xml.in b/widgets/bonobo.xml.in
index 6fd457ee..754604f0 100644
--- a/widgets/bonobo.xml.in
+++ b/widgets/bonobo.xml.in
@@ -12,6 +12,7 @@
<child>
<type>BonoboDockItem</type>
<add-child-function>glade_gnome_bonobodock_add_item</add-child-function>
+ <remove-child-function>glade_gnome_bonobodock_remove_item</remove-child-function>
<get-children-function>glade_gnome_bonobodock_get_children</get-children-function>
<child-set-property-function>glade_gnome_bonobodock_set_child_property</child-set-property-function>
<child-get-property-function>glade_gnome_bonobodock_get_child_property</child-get-property-function>