diff options
author | Juan Pablo Ugarte <jpu@src.gnome.org> | 2006-09-13 20:37:13 +0000 |
---|---|---|
committer | Juan Pablo Ugarte <jpu@src.gnome.org> | 2006-09-13 20:37:13 +0000 |
commit | 9a8448174a22b784588bf3203e3824d3303c1192 (patch) | |
tree | 7ed61a8b298052b55aaac772f6b4a03bedc9882b | |
parent | c815a61e1de587f6262a40f20178adbe6f316088 (diff) | |
download | glade-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-- | ChangeLog | 8 | ||||
-rw-r--r-- | src/glade-gnome.c | 131 | ||||
-rw-r--r-- | widgets/bonobo.xml.in | 1 |
3 files changed, 95 insertions, 45 deletions
@@ -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> |