int
main(int argc, char **argv)
{
    if (!gtk_init_check(&argc, &argv)) {
	g_message("Could not init gtk.  Skipping test");
	return 77; /* magic value to ignore test */
    }

    g_print ("Testing string to enum... ");
    if (glade_enum_from_string(GTK_TYPE_ANCHOR_TYPE, "GTK_ANCHOR_NORTH_WEST")
	!= GTK_ANCHOR_NORTH_WEST) {
	g_print("failed\n");
	return 1;
    }
    g_print("passed\n");

    g_print ("Testing nickname string to enum... ");
    if (glade_enum_from_string(GTK_TYPE_ANCHOR_TYPE, "north-west")
	!= GTK_ANCHOR_NORTH_WEST) {
	g_print("failed\n");
	return 1;
    }
    g_print("passed\n");

    g_print ("Testing string to enum (single component)... ");
    if (glade_flags_from_string(GTK_TYPE_ATTACH_OPTIONS, "GTK_EXPAND")
	!= GTK_EXPAND) {
	g_print("failed\n");
	return 1;
    }
    g_print("passed\n");

    g_print ("Testing nicknamestring to enum (single component)... ");
    if (glade_flags_from_string(GTK_TYPE_ATTACH_OPTIONS, "expand")
	!= GTK_EXPAND) {
	g_print("failed\n");
	return 1;
    }
    g_print("passed\n");

    g_print ("Testing string to flag component ordering... ");
    if ((glade_flags_from_string(GTK_TYPE_ATTACH_OPTIONS, "expand|fill") !=
	 (GTK_EXPAND | GTK_FILL)) ||
	(glade_flags_from_string(GTK_TYPE_ATTACH_OPTIONS, "fill|expand") !=
	 (GTK_EXPAND | GTK_FILL))) {
	g_print("failed\n");
	return 1;
    }
    g_print("passed\n");

    g_print ("All tests passed\n");

    return 0;
}
static void
mate_add_dock_item (GladeXML *xml, 
		     GtkWidget *parent,
		     GladeWidgetInfo *info,
		     GladeChildInfo *childinfo)
{
	MateComponentDockPlacement placement;
	guint band, offset;
	int position;
	MateComponentDockItemBehavior behavior;
	int i;
	GtkWidget *child;
	GtkWidget *toplevel;

	band = offset = position = 0;
	placement = MATECOMPONENT_DOCK_TOP;
	behavior  = MATECOMPONENT_DOCK_ITEM_BEH_NORMAL;

	for (i = 0; i < childinfo->n_properties; i++) {
		const char *name  = childinfo->properties[i].name;
		const char *value = childinfo->properties[i].value;

		if (!strcmp (name, "placement"))
			placement = glade_enum_from_string (
				MATECOMPONENT_TYPE_DOCK_PLACEMENT,
				value);
		else if (!strcmp (name, "band"))
			band = strtoul (value, NULL, 10);
		else if (!strcmp (name, "position"))
			position = strtol (value, NULL, 10);
		else if (!strcmp (name, "offset"))
			offset = strtoul (value, NULL, 10);
		else if (!strcmp (name, "behavior"))
			behavior = glade_flags_from_string (
				MATECOMPONENT_TYPE_DOCK_ITEM_BEHAVIOR,
				value);
	}

	child = glade_xml_build_widget (xml, childinfo->child);

	toplevel = gtk_widget_get_ancestor (parent, MATE_TYPE_APP);

	matecomponent_dock_item_set_behavior (MATECOMPONENT_DOCK_ITEM (child), behavior);

	if (toplevel != NULL) {
	    mate_app_add_dock_item (
		MATE_APP (toplevel),
		MATECOMPONENT_DOCK_ITEM (child),
		placement, 
		band, 
		position,
		offset);
	} else {
	    matecomponent_dock_add_item (MATECOMPONENT_DOCK (parent),
				  MATECOMPONENT_DOCK_ITEM (child),
				  placement, band, position, offset, 
				  FALSE);
	}
}
static void
dock_item_set_behavior (GladeXML *xml, GtkWidget *widget,
			const char *name, const char *value)
{
	BonoboDockItem *dock_item = BONOBO_DOCK_ITEM (widget);
	gchar *old_name;

	old_name = dock_item->name;
	dock_item->name = NULL;
	bonobo_dock_item_construct (dock_item, old_name,
				    glade_flags_from_string (
					BONOBO_TYPE_DOCK_ITEM_BEHAVIOR,
					value));
	g_free (old_name);
}