glade3 r1955 - in trunk: . gladeui plugins/gtk+



Author: tvb
Date: Mon Sep 22 17:54:58 2008
New Revision: 1955
URL: http://svn.gnome.org/viewvc/glade3?rev=1955&view=rev

Log:

	* gladeui/glade-editor-property.c: Fixed adjustments when values are null in
	libglade mode

	* plugins/gtk+/gtk+.xml.in: Reorganized groups, added some more metadatas

	* plugins/gtk+/glade-convert.c: 
	  - Convert "text" property of TextView to a textbuffer and text property 
	    in builder format.
	  - Convert "tooltip" <--> "tooltip-text"
	
	* gladeui/glade-popup.c, gladeui/glade-inspector.c: enhanced menu for 
	inspector empty spots (paste toplevels)

	* gladeui/glade-editor-property.c: Adjustments in libglade had bugs, hardcoded
	default values here and made sure object is NULL on default.

	* gladeui/glade-widget.[ch]: Removed glade_widget_project_notify()

	* gladeui/glade-command.c: 
	  - glade_command_remove() implicitly makes commands to unset any properties 
	    reffering to the object being removed from the project.
	  - project conversions now cleanup unsupported widgets/properties

	* gladeui/glade-palette.c, gladeui/glade-app.c: Moved toplevel widget creation
	code from gladeapp to gladepalette.



Modified:
   trunk/ChangeLog
   trunk/gladeui/glade-app.c
   trunk/gladeui/glade-app.h
   trunk/gladeui/glade-command.c
   trunk/gladeui/glade-editor-property.c
   trunk/gladeui/glade-inspector.c
   trunk/gladeui/glade-inspector.h
   trunk/gladeui/glade-palette.c
   trunk/gladeui/glade-popup.c
   trunk/gladeui/glade-project.c
   trunk/gladeui/glade-property.c
   trunk/gladeui/glade-property.h
   trunk/gladeui/glade-widget.c
   trunk/gladeui/glade-widget.h
   trunk/plugins/gtk+/glade-convert.c
   trunk/plugins/gtk+/glade-gtk.c
   trunk/plugins/gtk+/gtk+.xml.in

Modified: trunk/gladeui/glade-app.c
==============================================================================
--- trunk/gladeui/glade-app.c	(original)
+++ trunk/gladeui/glade-app.c	Mon Sep 22 17:54:58 2008
@@ -288,29 +288,6 @@
 			glade_app_refresh_undo_redo_button (app, list->data, FALSE);
 }
 
-static void
-on_palette_button_clicked (GladePalette *palette, GladeApp *app)
-{
-	GladeWidgetAdaptor *adaptor;
-	GladeWidget        *widget;
-
-	g_return_if_fail (GLADE_IS_PALETTE (palette));
-	adaptor = glade_palette_get_current_item (palette);
-
-	/* class may be NULL if the selector was pressed */
-	if (adaptor && GWA_IS_TOPLEVEL (adaptor))
-	{
-		widget = glade_palette_create_root_widget (palette, adaptor);
-		
-		/* if this is a top level widget set the accel group */
-		if (widget && app->priv->accel_group && GTK_IS_WINDOW (widget->object))
-		{
-			gtk_window_add_accel_group (GTK_WINDOW (widget->object),
-						    app->priv->accel_group);
-		}
-	}
-}
-
 static gboolean
 clipboard_view_on_delete_cb (GtkWidget *clipboard_view, GdkEvent *e, GladeApp *app)
 {
@@ -441,9 +418,6 @@
 	app->priv->palette = (GladePalette *) glade_palette_new (app->priv->catalogs);
 	g_object_ref_sink (app->priv->palette);
 	
-	g_signal_connect (G_OBJECT (app->priv->palette), "toggled",
-			  G_CALLBACK (on_palette_button_clicked), app);
-
 	/* Create Editor */
 	app->priv->editor = GLADE_EDITOR (glade_editor_new ());
 	g_object_ref_sink (GTK_OBJECT (app->priv->editor));
@@ -1259,11 +1233,19 @@
 	clipboard = glade_app_get_clipboard ();
 
 	/* If there is a selection, paste in to the selected widget, otherwise
-	 * paste into the placeholder's parent.
+	 * paste into the placeholder's parent, or at the toplevel
 	 */
 	parent = list ? glade_widget_get_from_gobject (list->data) : 
 		 (placeholder) ? glade_placeholder_get_parent (placeholder) : NULL;
-	
+
+	widget = clipboard->selection ? clipboard->selection->data : NULL;
+
+	/* Ignore parent argument if we are pasting a toplevel
+	 */
+	if (g_list_length (clipboard->selection) == 1 &&
+	    widget && GWA_IS_TOPLEVEL (widget->adaptor))
+		parent = NULL;
+
 	if (parent && GLADE_IS_FIXED (parent)) fixed = GLADE_FIXED (parent);
 
 	/* Check if parent is actually a container of any sort */
@@ -1483,6 +1465,12 @@
 	app->priv->accel_group = accel_group;
 }
 
+GtkAccelGroup *
+glade_app_get_accel_group (void)
+{
+	return glade_app_get()->priv->accel_group;
+}
+
 static gboolean
 glade_app_undo_button_destroyed (GtkWidget *button, GladeApp *app)
 {

Modified: trunk/gladeui/glade-app.h
==============================================================================
--- trunk/gladeui/glade-app.h	(original)
+++ trunk/gladeui/glade-app.h	Mon Sep 22 17:54:58 2008
@@ -45,8 +45,6 @@
 typedef struct _GladeApp         GladeApp;
 typedef struct _GladeAppPrivate  GladeAppPrivate;
 typedef struct _GladeAppClass    GladeAppClass;
-typedef enum   _GladePointerMode GladePointerMode;
-
 
 /**
  * GladePointerMode:
@@ -63,6 +61,8 @@
 	GLADE_POINTER_ADD_WIDGET,
 	GLADE_POINTER_DRAG_RESIZE
 };
+typedef enum _GladePointerMode GladePointerMode;
+
 
 struct _GladeApp
 {
@@ -162,6 +162,8 @@
 GtkWindow         *glade_app_get_transient_parent (void);
  
 void               glade_app_set_accel_group (GtkAccelGroup *accel_group);
+
+GtkAccelGroup     *glade_app_get_accel_group (void);
  
 void               glade_app_update_instance_count  (GladeProject *project);
 

Modified: trunk/gladeui/glade-command.c
==============================================================================
--- trunk/gladeui/glade-command.c	(original)
+++ trunk/gladeui/glade-command.c	Mon Sep 22 17:54:58 2008
@@ -1043,6 +1043,21 @@
 		
 } /* end of glade_command_add() */
 
+
+
+static void
+glade_command_delete_prop_refs (GladeWidget *widget)
+{
+	GladeProperty *property;
+
+	while (widget->prop_refs)
+	{
+		property = GLADE_PROPERTY (widget->prop_refs->data);
+		glade_command_set_property (property, NULL);
+	}
+}
+
+
 /**
  * glade_command_remove:
  * @widgets: a #GList of #GladeWidgets
@@ -1058,6 +1073,7 @@
 	CommandData				*cdata;
 	GtkWidget                               *placeholder;
 	GList					*list, *l;
+	gchar                                   *desc;
 
 	g_return_if_fail (widgets != NULL);
 
@@ -1079,6 +1095,16 @@
 	}
 
 	me->project = glade_widget_get_project (widget);
+	GLADE_COMMAND (me)->description = g_strdup ("dummy");
+
+	if (g_list_length (widgets) == 1)
+		desc = g_strdup_printf (_("Remove %s"), 
+					GLADE_WIDGET (widgets->data)->name);
+	else
+		desc = g_strdup_printf (_("Remove multiple"));
+
+	glade_command_push_group (desc);
+	g_free (desc);
 
 	for (list = widgets; list && list->data; list = list->next)
 	{
@@ -1088,6 +1114,9 @@
 		cdata->widget  = g_object_ref (G_OBJECT (widget));
 		cdata->parent  = glade_widget_get_parent (widget);
 		cdata->project = glade_widget_get_project (widget);
+		
+		/* Undoably unset any object properties that may point to the removed object */
+		glade_command_delete_prop_refs (widget);
 
 		if (widget->internal)
 			g_critical ("Internal widget in Remove");
@@ -1118,14 +1147,6 @@
 		}
 	}
 
-	if (g_list_length (widgets) == 1)
-		GLADE_COMMAND (me)->description =
-			g_strdup_printf (_("Remove %s"), 
-					 GLADE_WIDGET (widgets->data)->name);
-	else
-		GLADE_COMMAND (me)->description =
-			g_strdup_printf (_("Remove multiple"));
-
 	g_assert (widget);
 
 	glade_command_check_group (GLADE_COMMAND (me));
@@ -1135,6 +1156,7 @@
 	else
 		g_object_unref (G_OBJECT (me));
 
+	glade_command_pop_group ();
 } /* end of glade_command_remove() */
 
 static void
@@ -1192,13 +1214,10 @@
 									g_strdup (cdata->special_type), 
 									g_free);
 					}
-				}
 				
-				/* Only transfer properties when they are from the clipboard,
-				 * otherwise prioritize packing defaults. 
-				 */
-				if (me->from_clipboard)
-				{
+					/* Only transfer properties when they are from the clipboard,
+					 * otherwise prioritize packing defaults. 
+					 */
 					saved_props =
 						glade_widget_dup_properties (cdata->widget->packing_properties, FALSE);
 					
@@ -2173,6 +2192,73 @@
 	/* no unify/collapse */
 }
 
+
+static void
+glade_command_convert_cleanup_props (GList              *properties,
+				     GladeProjectFormat  fmt)
+{
+	GladeProperty *property;
+	GList *list;
+
+	for (list = properties; list; list = list->next)
+	{
+		property = list->data;
+
+		if (glade_property_original_default (property))
+			continue;
+
+		/* Reset any unsupported properties to thier defaults */
+		if ((fmt == GLADE_PROJECT_FORMAT_GTKBUILDER &&
+		     property->klass->libglade_only) ||
+		    (fmt == GLADE_PROJECT_FORMAT_LIBGLADE &&
+		     property->klass->libglade_unsupported))
+		{
+			GValue value = { 0, };
+
+			glade_property_get_default (property, &value);
+			glade_command_set_property (property, &value);
+			g_value_unset (&value);
+		}
+	}
+}
+
+
+static void
+glade_command_convert_cleanup (GladeProject       *project, 
+			       GladeProjectFormat  fmt)
+{
+	GladeWidget   *widget;
+	const GList   *objects;
+
+	for (objects = glade_project_get_objects (project); objects; objects = objects->next)
+	{
+		widget = glade_widget_get_from_gobject (objects->data);
+
+		/* If libglade-only widget going in builder format ... */
+		if ((fmt == GLADE_PROJECT_FORMAT_GTKBUILDER &&
+		     GWA_LIBGLADE_ONLY (widget->adaptor)) ||
+		    /* If going in libglade format... */
+		    (fmt == GLADE_PROJECT_FORMAT_LIBGLADE &&
+		     /* ... and widget is unsupported by libglade */
+		     (GWA_LIBGLADE_UNSUPPORTED (widget->adaptor) ||
+		      /* ... and widget is a non GtkWidget object */
+		      !GTK_IS_WIDGET (widget->object) ||
+		      /* ... and its a non-window toplevel */
+		      (!widget->parent && !GTK_IS_WINDOW (widget->object)))))
+		{
+			GList delete = { 0, };
+			delete.data = widget;
+			glade_command_delete (&delete);
+		}
+		else
+		{
+			glade_command_convert_cleanup_props (widget->properties, fmt);
+			glade_command_convert_cleanup_props (widget->packing_properties, fmt);
+		}
+	}
+}
+
+
 /**
  * glade_command_set_project_format:
  * @project: a #GladeProject
@@ -2219,6 +2305,8 @@
 				catalog  = glade_app_get_catalog (cat_name);
 				
 				glade_catalog_convert_project (catalog, project, fmt);
+
+				glade_command_convert_cleanup (project, fmt);
 				
 				g_free (cat_name);
 			}

Modified: trunk/gladeui/glade-editor-property.c
==============================================================================
--- trunk/gladeui/glade-editor-property.c	(original)
+++ trunk/gladeui/glade-editor-property.c	Mon Sep 22 17:54:58 2008
@@ -2630,10 +2630,13 @@
 	project = glade_widget_get_project (eprop->property->widget);
 	parent = gtk_widget_get_toplevel (GTK_WIDGET (eprop));
 
-	if (eprop->property->klass->create_type)
-		create_adaptor = glade_widget_adaptor_get_by_name (eprop->property->klass->create_type);
-	if (!create_adaptor)
-		create_adaptor = glade_widget_adaptor_get_by_type (eprop->klass->pspec->value_type);
+	if (glade_project_get_format (project) != GLADE_PROJECT_FORMAT_LIBGLADE)
+	{
+		if (eprop->property->klass->create_type)
+			create_adaptor = glade_widget_adaptor_get_by_name (eprop->property->klass->create_type);
+		if (!create_adaptor)
+			create_adaptor = glade_widget_adaptor_get_by_type (eprop->klass->pspec->value_type);
+	}
 
 	if (create_adaptor)
 	{
@@ -3128,8 +3131,8 @@
 	GladeEPropAdjustment *eprop_adj = GLADE_EPROP_ADJUSTMENT (eprop);
 	GladeProjectFormat fmt;
 	GObject *object;
-	GtkAdjustment *adj;
-	
+	GtkAdjustment *adj = NULL;
+
 	/* Chain up first */
 	editor_property_class->load (eprop, property);
 
@@ -3140,9 +3143,9 @@
 	if (fmt == GLADE_PROJECT_FORMAT_LIBGLADE)
 	{
 		object = g_value_get_object (property->value);
-		if (object == NULL) return;
-		
-		adj = GTK_ADJUSTMENT (object);
+
+		if (object)
+			adj = GTK_ADJUSTMENT (object);
 		
 		/* Keep track of external adjustment changes */
 		g_signal_connect (object, "value-changed",
@@ -3150,11 +3153,12 @@
 				  eprop);
 	
 		/* Update adjustment's values */
-		eprop_adj->value_adj->lower = adj->lower;
-		eprop_adj->value_adj->upper = adj->upper;
-		eprop_adj->value_adj->step_increment = adj->step_increment;
-		eprop_adj->value_adj->page_increment = adj->page_increment;
-		eprop_adj->value_adj->page_size = adj->page_size;
+		eprop_adj->value_adj->value = adj ? adj->value : 0.0;
+		eprop_adj->value_adj->lower = adj ? adj->lower : 0.0;
+		eprop_adj->value_adj->upper = adj ? adj->upper : 100.0;
+		eprop_adj->value_adj->step_increment = adj ? adj->step_increment : 1;
+		eprop_adj->value_adj->page_increment = adj ? adj->page_increment : 10;
+		eprop_adj->value_adj->page_size = adj ? adj->page_size : 10;
 		
 		/* Block Handlers */
 		g_signal_handler_block (eprop_adj->value, eprop_adj->ids.value);
@@ -3165,12 +3169,14 @@
 		g_signal_handler_block (eprop_adj->page_size, eprop_adj->ids.page_size);
 		
 		/* Update spinbuttons values */
-		gtk_spin_button_set_value (GTK_SPIN_BUTTON (eprop_adj->value), adj->value);
-		gtk_spin_button_set_value (GTK_SPIN_BUTTON (eprop_adj->lower), adj->lower);
-		gtk_spin_button_set_value (GTK_SPIN_BUTTON (eprop_adj->upper), adj->upper);
-		gtk_spin_button_set_value (GTK_SPIN_BUTTON (eprop_adj->step_increment), adj->step_increment);
-		gtk_spin_button_set_value (GTK_SPIN_BUTTON (eprop_adj->page_increment), adj->page_increment);
-		gtk_spin_button_set_value (GTK_SPIN_BUTTON (eprop_adj->page_size), adj->page_size);
+		gtk_spin_button_set_value (GTK_SPIN_BUTTON (eprop_adj->value), eprop_adj->value_adj->value);
+		gtk_spin_button_set_value (GTK_SPIN_BUTTON (eprop_adj->lower), eprop_adj->value_adj->lower);
+		gtk_spin_button_set_value (GTK_SPIN_BUTTON (eprop_adj->upper), eprop_adj->value_adj->upper);
+		gtk_spin_button_set_value (GTK_SPIN_BUTTON (eprop_adj->step_increment), 
+					   eprop_adj->value_adj->step_increment);
+		gtk_spin_button_set_value (GTK_SPIN_BUTTON (eprop_adj->page_increment), 
+					   eprop_adj->value_adj->page_increment);
+		gtk_spin_button_set_value (GTK_SPIN_BUTTON (eprop_adj->page_size), eprop_adj->value_adj->page_size);
 		
 		/* Unblock Handlers */
 		g_signal_handler_unblock (eprop_adj->value, eprop_adj->ids.value);
@@ -3180,9 +3186,8 @@
 		g_signal_handler_unblock (eprop_adj->page_increment, eprop_adj->ids.page_increment);
 		g_signal_handler_unblock (eprop_adj->page_size, eprop_adj->ids.page_size);
 
-		gtk_notebook_set_page (GTK_NOTEBOOK (eprop_adj->notebook), 0);
-
 		gtk_widget_show (eprop_adj->libglade);
+		gtk_notebook_set_page (GTK_NOTEBOOK (eprop_adj->notebook), 0);
 	}
 	else
 	{
@@ -3214,7 +3219,9 @@
 	GObject *object;
 	
 	object = g_value_get_object (eprop->property->value);
-	if (object == NULL) return NULL;
+	if (object == NULL) 
+		return GTK_ADJUSTMENT (gtk_adjustment_new (0.0, 0.0, 100.0,
+							   1.0, 10.0, 10.0));
 	
 	adj = GTK_ADJUSTMENT (object);
 
@@ -3233,8 +3240,20 @@
 	GValue value = {0, };
 	
 	g_value_init (&value, GTK_TYPE_ADJUSTMENT);
-	g_value_set_object (&value, G_OBJECT (adjustment));
 
+	if (adjustment->value == 0.00 &&
+	    adjustment->lower == 0.00 &&
+	    adjustment->upper == 100.00 &&
+	    adjustment->step_increment == 1.00 &&
+	    adjustment->page_increment == 10.00 &&
+	    adjustment->page_size == 10.00)
+	{
+		gtk_object_destroy (GTK_OBJECT (adjustment));
+		g_value_set_object (&value, NULL);
+	}
+	else
+		g_value_set_object (&value, G_OBJECT (adjustment));
+	
 	glade_editor_property_commit_no_callback (eprop, &value);
 
 	g_value_unset (&value);

Modified: trunk/gladeui/glade-inspector.c
==============================================================================
--- trunk/gladeui/glade-inspector.c	(original)
+++ trunk/gladeui/glade-inspector.c	Mon Sep 22 17:54:58 2008
@@ -544,7 +544,8 @@
 	GtkTreePath      *path      = NULL;
 	gboolean          handled   = FALSE;
 
-	if (event->window == gtk_tree_view_get_bin_window (view))
+	if (event->button == 3 &&
+	    event->window == gtk_tree_view_get_bin_window (view))
 	{
 		if (gtk_tree_view_get_path_at_pos (view, (gint) event->x, (gint) event->y,
 					   &path, NULL, 
@@ -559,16 +560,21 @@
 				 */
 				gtk_tree_model_get (GTK_TREE_MODEL (inspector->priv->model), &iter,
 							WIDGET_COLUMN, &widget, -1);
-				if (widget != NULL && event->button == 3)
-				{
-					glade_popup_widget_pop (widget, event, FALSE);
+					if (widget != NULL)
+						glade_popup_widget_pop (widget, event, FALSE);
+					else
+						glade_popup_simple_pop (event);
+
 					handled = TRUE;
-				}
+
 				gtk_tree_path_free (path);
 			}
 		}
 		else
+		{
 			glade_popup_simple_pop (event);
+			handled = TRUE;
+		}
 	}
 	return handled;
 }

Modified: trunk/gladeui/glade-inspector.h
==============================================================================
--- trunk/gladeui/glade-inspector.h	(original)
+++ trunk/gladeui/glade-inspector.h	Mon Sep 22 17:54:58 2008
@@ -30,9 +30,7 @@
 
 #include <gtk/gtkvbox.h>
 
-/* forward declaration */
-/* btw, this makes gtkdoc list GladeProject twice in gladeui-sections.txt wich gives a warning. */
-struct GladeProject;
+#include <gladeui/glade-xml-utils.h>
 
 G_BEGIN_DECLS
 

Modified: trunk/gladeui/glade-palette.c
==============================================================================
--- trunk/gladeui/glade-palette.c	(original)
+++ trunk/gladeui/glade-palette.c	Mon Sep 22 17:54:58 2008
@@ -323,6 +323,33 @@
 }
 
 static void
+glade_palette_toggled (GladePalette *palette)
+{
+	GladeProject       *project;
+	GladeWidgetAdaptor *adaptor;
+	GladeWidget        *widget;
+
+	g_return_if_fail (GLADE_IS_PALETTE (palette));
+	adaptor = glade_palette_get_current_item (palette);
+
+	/* class may be NULL if the selector was pressed */
+	if (adaptor && GWA_IS_TOPLEVEL (adaptor))
+	{
+		/* Inappropriate toplevel classes for libglade are
+		 * disabled so no chance of creating a non-window toplevel here
+		 */
+		widget = glade_palette_create_root_widget (palette, adaptor);
+		
+		/* if this is a top level widget set the accel group */
+		if (widget && glade_app_get_accel_group () && GTK_IS_WINDOW (widget->object))
+		{
+			gtk_window_add_accel_group (GTK_WINDOW (widget->object),
+						    glade_app_get_accel_group ());
+		}
+	}
+}
+
+static void
 glade_palette_class_init (GladePaletteClass *klass)
 {
 	GObjectClass   *object_class;
@@ -331,7 +358,7 @@
 	object_class = G_OBJECT_CLASS (klass);
 	widget_class = GTK_WIDGET_CLASS (klass);
 
-	klass->toggled = NULL;
+	klass->toggled = glade_palette_toggled;
 	
 	object_class->get_property = glade_palette_get_property;
 	object_class->set_property = glade_palette_set_property;
@@ -475,6 +502,7 @@
 	g_signal_emit (G_OBJECT (palette), glade_palette_signals[TOGGLED], 0);
 }
 
+
 static GtkWidget*
 glade_palette_new_item (GladePalette *palette, GladeWidgetAdaptor *adaptor)
 {

Modified: trunk/gladeui/glade-popup.c
==============================================================================
--- trunk/gladeui/glade-popup.c	(original)
+++ trunk/gladeui/glade-popup.c	Mon Sep 22 17:54:58 2008
@@ -144,7 +144,10 @@
 	glade_util_clear_selection ();
 
 	/* The selected widget is the paste destination */
-	glade_app_selection_set	(glade_widget_get_object (widget), FALSE);
+	if (widget)
+		glade_app_selection_set	(glade_widget_get_object (widget), FALSE);
+	else
+		glade_app_selection_clear (FALSE);
 
 	glade_app_command_paste (NULL);
 }
@@ -412,15 +415,22 @@
 			 GladePlaceholder *placeholder,
 			 gboolean          packing)
 {
+	GladeProjectFormat fmt;
+	GladeProject *project;
 	GtkWidget *popup_menu;
-	gboolean   sensitive;
+	GtkWidget *separator;
+	GList *list;
+	gboolean   sensitive, non_window;
 	GladePlaceholder *tmp_placeholder;
 	gchar     *book;
 
 	sensitive = glade_palette_get_current_item (glade_app_get_palette ()) != NULL;
 
-	if (!sensitive && !widget)
-		return NULL;
+	/* Resolve project format first... */
+	project = widget ? glade_widget_get_project (widget) :
+		placeholder ? glade_placeholder_get_project (placeholder) : glade_app_get_project ();
+	fmt = glade_project_get_format (project);
+
 
 	popup_menu = gtk_menu_new ();
 	
@@ -431,44 +441,53 @@
 			tmp_placeholder = find_placeholder (glade_widget_get_object (widget));
 		glade_popup_append_item (popup_menu, NULL, _("_Add widget here"), NULL, tmp_placeholder != NULL,
 					 glade_popup_placeholder_add_cb, tmp_placeholder);
-		glade_popup_append_item (popup_menu, NULL, _("Add widget as _toplevel"), NULL, TRUE,
+		glade_popup_append_item (popup_menu, NULL, _("Add widget as _toplevel"), NULL, 
+					 fmt != GLADE_PROJECT_FORMAT_LIBGLADE,
 					 glade_popup_root_add_cb, NULL);
-	}
 
-	if (!widget)
-		return popup_menu;
-		
-	if (sensitive)
-	{
-		GtkWidget *separator = gtk_menu_item_new ();		
+		separator = gtk_menu_item_new ();		
 		gtk_menu_shell_append (GTK_MENU_SHELL (popup_menu), separator);
 		gtk_widget_show (separator);
 	}
 
-	glade_popup_append_item (popup_menu, NULL, _("_Select"), NULL, TRUE,
+	sensitive = (widget != NULL);
+
+	glade_popup_append_item (popup_menu, NULL, _("_Select"), NULL, sensitive,
 				 glade_popup_select_cb, widget);
-	glade_popup_append_item (popup_menu, GTK_STOCK_CUT, NULL, NULL, TRUE,
+	glade_popup_append_item (popup_menu, GTK_STOCK_CUT, NULL, NULL, sensitive,
 				 glade_popup_cut_cb, widget);
-	glade_popup_append_item (popup_menu, GTK_STOCK_COPY, NULL, NULL, TRUE,
+	glade_popup_append_item (popup_menu, GTK_STOCK_COPY, NULL, NULL, sensitive,
 				 glade_popup_copy_cb, widget);
 
 	/* paste is placholder specific when the popup is on a placeholder */
 	sensitive = glade_clipboard_get_has_selection (glade_app_get_clipboard ());
+	non_window = FALSE;
+	for (list = glade_app_get_clipboard ()->selection; list; list = list->next)
+		if (!GTK_IS_WINDOW (GLADE_WIDGET (list->data)->object))
+			non_window = TRUE;
+
 	if (placeholder)
 		glade_popup_append_item (popup_menu, GTK_STOCK_PASTE, NULL, NULL, sensitive,
 					 glade_popup_placeholder_paste_cb, placeholder);
-	else
+	else if (widget)
 		glade_popup_append_item (popup_menu, GTK_STOCK_PASTE, NULL, NULL, sensitive,
 					 glade_popup_paste_cb, widget);
+	else
+		/* No toplevel non-GtkWindow pastes in libglade */
+		glade_popup_append_item (popup_menu, GTK_STOCK_PASTE, NULL, NULL, 
+					 sensitive && !(non_window &&  (fmt == GLADE_PROJECT_FORMAT_LIBGLADE)),
+					 glade_popup_paste_cb, NULL);
 
-	glade_popup_append_item (popup_menu, GTK_STOCK_DELETE, NULL, NULL, TRUE,
+
+
+	glade_popup_append_item (popup_menu, GTK_STOCK_DELETE, NULL, NULL, (widget != NULL),
 				 glade_popup_delete_cb, widget);
 
 
 	/* packing actions are a little different on placholders */
 	if (placeholder)
 	{
-		if (widget->actions)
+		if (widget && widget->actions)
 		{
 			GtkWidget *separator = gtk_menu_item_new ();
 			gtk_menu_shell_append (GTK_MENU_SHELL (popup_menu), separator);
@@ -496,7 +515,7 @@
 				 placeholder);
 		}
 	}
-	else if (widget->actions || (packing && widget->packing_actions))
+	else if (widget && (widget->actions || (packing && widget->packing_actions)))
 	{
 		GtkWidget *separator = gtk_menu_item_new ();
 		gtk_menu_shell_append (GTK_MENU_SHELL (popup_menu), separator);
@@ -505,20 +524,21 @@
 		glade_popup_action_populate_menu (popup_menu, widget, NULL, packing);
 	}
 
-
-	g_object_get (widget->adaptor, "book", &book, NULL);
-	if (book)
+	if (widget)
 	{
-		GtkWidget *icon = glade_util_get_devhelp_icon (GTK_ICON_SIZE_MENU);
-		GtkWidget *separator = gtk_menu_item_new ();
-		gtk_menu_shell_append (GTK_MENU_SHELL (popup_menu), separator);
-		gtk_widget_show (separator);
-
-		glade_popup_append_item (popup_menu, NULL, _("Read _documentation"), icon, TRUE,
-					 glade_popup_docs_cb, widget->adaptor);
+		g_object_get (widget->adaptor, "book", &book, NULL);
+		if (book)
+		{
+			GtkWidget *icon = glade_util_get_devhelp_icon (GTK_ICON_SIZE_MENU);
+			GtkWidget *separator = gtk_menu_item_new ();
+			gtk_menu_shell_append (GTK_MENU_SHELL (popup_menu), separator);
+			gtk_widget_show (separator);
+			
+			glade_popup_append_item (popup_menu, NULL, _("Read _documentation"), icon, TRUE,
+						 glade_popup_docs_cb, widget->adaptor);
+		}
+		g_free (book);
 	}
-	g_free (book);
-
 
 	return popup_menu;
 }
@@ -631,6 +651,8 @@
 glade_popup_palette_pop (GladeWidgetAdaptor *adaptor,
 			 GdkEventButton     *event)
 {
+	GladeProjectFormat fmt;
+	GladeProject *project;
 	GtkWidget *popup_menu;
 	gchar *book = NULL;
 	gint button;
@@ -639,11 +661,14 @@
 	g_return_if_fail (GLADE_IS_WIDGET_ADAPTOR (adaptor));
 
 	popup_menu = gtk_menu_new ();
+	
+	project = glade_app_get_project ();
+	fmt = glade_project_get_format (project);
 
-	glade_popup_append_item (popup_menu, NULL, _("Add widget as _toplevel"), NULL, TRUE,
+	glade_popup_append_item (popup_menu, NULL, _("Add widget as _toplevel"), NULL, 
+				 (fmt != GLADE_PROJECT_FORMAT_LIBGLADE),
 				 glade_popup_root_add_cb, adaptor);
 
-
 	g_object_get (adaptor, "book", &book, NULL);
 	if (book)
 	{

Modified: trunk/gladeui/glade-project.c
==============================================================================
--- trunk/gladeui/glade-project.c	(original)
+++ trunk/gladeui/glade-project.c	Mon Sep 22 17:54:58 2008
@@ -1,6 +1,7 @@
 /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
 /*
  * Copyright (C) 2001 Ximian, Inc.
+ * Copyright (C) 2008 Tristan Van Berkom
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as
@@ -18,6 +19,7 @@
  *
  * Authors:
  *   Chema Celorio <chema celorio com>
+ *   Tristan Van Berkom <tvb gnome org>
  */
 
 #include <config.h>
@@ -1661,13 +1663,14 @@
 		glade_project_verify_property (widget->project, property, path_name, string, forwidget);
 	}
 
-	for (list = widget->packing_properties; list; list = list->next)
+	/* Sometimes widgets on the clipboard have packing props with no parent */
+	if (widget->parent)
 	{
-		property = list->data;
-
-		g_assert (widget->parent);
-		property = list->data;
-		glade_project_verify_property (widget->project, property, path_name, string, forwidget);
+		for (list = widget->packing_properties; list; list = list->next)
+		{
+			property = list->data;
+			glade_project_verify_property (widget->project, property, path_name, string, forwidget);
+		}
 	}
 }
 
@@ -2013,9 +2016,6 @@
 	/* Update user visible compatability info */
 	glade_project_verify_properties (gwidget);
 
-	/* Notify widget it was added to the project */
-	glade_widget_project_notify (gwidget, project);
-
 	/* Run this once at the end for every recursive call */
 	if (--reentrancy_count == 0)
 	{
@@ -2121,9 +2121,6 @@
 
 	/* Code body starts here */
 	reentrancy_count++;
-
-	/* Notify widget is being removed from the project */
-	glade_widget_project_notify (gwidget, NULL);
 	
 	if ((children = 
 	     glade_widget_adaptor_get_children (gwidget->adaptor,

Modified: trunk/gladeui/glade-property.c
==============================================================================
--- trunk/gladeui/glade-property.c	(original)
+++ trunk/gladeui/glade-property.c	Mon Sep 22 17:54:58 2008
@@ -321,14 +321,6 @@
 }
 
 static void
-glade_property_get_default_impl (GladeProperty *property, GValue *value)
-{
-
-	g_value_init (value, property->klass->pspec->value_type);
-	g_value_copy (property->klass->def, value);
-}
-
-static void
 glade_property_sync_impl (GladeProperty *property)
 {
 
@@ -378,12 +370,13 @@
 	    property->klass->virt    ||
 	    property->klass->packing ||
 	    property->klass->ignore  ||
-	    !(property->klass->pspec->flags & G_PARAM_READABLE))
+	    !(property->klass->pspec->flags & G_PARAM_READABLE) ||
+	    G_IS_PARAM_SPEC_OBJECT(property->klass->pspec))
 		return;
 
 	object = glade_widget_get_object (property->widget);
 	oclass = G_OBJECT_GET_CLASS (object);
-	
+
 	if (g_object_class_find_property (oclass, property->klass->id))
 		glade_widget_object_get_property (property->widget, property->klass->id, property->value);
 }
@@ -507,7 +500,6 @@
 	prop_class->equals_value          = glade_property_equals_value_impl;
 	prop_class->set_value             = glade_property_set_value_impl;
 	prop_class->get_value             = glade_property_get_value_impl;
-	prop_class->get_default           = glade_property_get_default_impl;
 	prop_class->sync                  = glade_property_sync_impl;
 	prop_class->load                  = glade_property_load_impl;
 	prop_class->value_changed         = NULL;
@@ -891,7 +883,9 @@
 {
 	g_return_if_fail (GLADE_IS_PROPERTY (property));
 	g_return_if_fail (value != NULL);
-	GLADE_PROPERTY_GET_KLASS (property)->get_default (property, value);
+
+	g_value_init (value, property->klass->pspec->value_type);
+	g_value_copy (property->klass->def, value);
 }
 
 /**
@@ -1143,6 +1137,13 @@
 	if (!property->klass->save || !property->enabled)
 		return;
 
+	/* Dont write unsupported properties */
+	if ((fmt == GLADE_PROJECT_FORMAT_GTKBUILDER &&
+	     property->klass->libglade_only) ||
+	    (fmt == GLADE_PROJECT_FORMAT_LIBGLADE &&
+	     property->klass->libglade_unsupported))
+		return;
+
 	g_assert (property->klass->orig_def);
 	g_assert (property->klass->def);
 

Modified: trunk/gladeui/glade-property.h
==============================================================================
--- trunk/gladeui/glade-property.h	(original)
+++ trunk/gladeui/glade-property.h	Mon Sep 22 17:54:58 2008
@@ -95,7 +95,6 @@
 	gboolean                (* equals_value)          (GladeProperty *, const GValue *);
 	gboolean                (* set_value)             (GladeProperty *, const GValue *);
 	void                    (* get_value)             (GladeProperty *, GValue *);
-	void                    (* get_default)           (GladeProperty *, GValue *);
 	void                    (* sync)                  (GladeProperty *);
 	void                    (* load)                  (GladeProperty *);
 

Modified: trunk/gladeui/glade-widget.c
==============================================================================
--- trunk/gladeui/glade-widget.c	(original)
+++ trunk/gladeui/glade-widget.c	Mon Sep 22 17:54:58 2008
@@ -1,5 +1,6 @@
 /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
 /*
+ * Copyright (C) 2008 Tristan Van Berkom
  * Copyright (C) 2004 Joaquin Cuenca Abela
  * Copyright (C) 2001, 2002, 2003 Ximian, Inc.
  *
@@ -941,7 +942,6 @@
 	widget->properties = NULL;
 	widget->packing_properties = NULL;
 	widget->prop_refs = NULL;
-	widget->prop_refs_readonly = FALSE;
 	widget->signals = g_hash_table_new_full
 		(g_str_hash, g_str_equal,
 		 (GDestroyNotify) g_free,
@@ -1929,8 +1929,8 @@
  *
  * Adds @property to @widget 's list of referenced properties.
  *
- * Note: this is used to track object reference properties that
- *       go in and out of the project.
+ * Note: this is used to track properties on other objects that
+ *       reffer to this object.
  */
 void
 glade_widget_add_prop_ref (GladeWidget *widget, GladeProperty *property)
@@ -1938,8 +1938,7 @@
 	g_return_if_fail (GLADE_IS_WIDGET (widget));
 	g_return_if_fail (GLADE_IS_PROPERTY (property));
 
-	if (property && !widget->prop_refs_readonly &&
-	    !g_list_find (widget->prop_refs, property))
+	if (!g_list_find (widget->prop_refs, property))
 		widget->prop_refs = g_list_prepend (widget->prop_refs, property);
 }
 
@@ -1950,8 +1949,8 @@
  *
  * Removes @property from @widget 's list of referenced properties.
  *
- * Note: this is used to track object reference properties that
- *       go in and out of the project.
+ * Note: this is used to track properties on other objects that
+ *       reffer to this object.
  */
 void
 glade_widget_remove_prop_ref (GladeWidget *widget, GladeProperty *property)
@@ -1959,8 +1958,7 @@
 	g_return_if_fail (GLADE_IS_WIDGET (widget));
 	g_return_if_fail (GLADE_IS_PROPERTY (property));
 
-	if (!widget->prop_refs_readonly)
-		widget->prop_refs = g_list_remove (widget->prop_refs, property);
+	widget->prop_refs = g_list_remove (widget->prop_refs, property);
 }
 
 GladeProperty *
@@ -1982,42 +1980,6 @@
 	return NULL;
 }
 
-/**
- * glade_widget_project_notify:
- * @widget: A #GladeWidget
- * @project: The #GladeProject (or %NULL)
- *
- * Notifies @widget that it is now in @project.
- *
- * Note that this doesnt really set the project; the project is saved
- * for internal reasons even when the widget is on the clipboard.
- * (also used for property references).
- */
-void
-glade_widget_project_notify (GladeWidget *widget, GladeProject *project)
-{
-	GList         *l;
-	GladeProperty *property;
-
-	g_return_if_fail (GLADE_IS_WIDGET (widget));
-
-	/* Since glade_property_set() will try to modify list,
-	 * we protect it with the 'prop_refs_readonly' flag.
-	 */
-	widget->prop_refs_readonly = TRUE;
-	for (l = widget->prop_refs; l && l->data; l = l->next)
-	{
-		property = GLADE_PROPERTY (l->data);
-
-		if (project != NULL && 
-		    project == property->widget->project)
-			glade_property_add_object (property, widget->object);
-		else
-			glade_property_remove_object (property, widget->object);
-	}
-	widget->prop_refs_readonly = FALSE;
-}
-
 static void
 glade_widget_accum_signal_foreach (const gchar *key,
 				   GPtrArray   *signals,

Modified: trunk/gladeui/glade-widget.h
==============================================================================
--- trunk/gladeui/glade-widget.h	(original)
+++ trunk/gladeui/glade-widget.h	Mon Sep 22 17:54:58 2008
@@ -82,8 +82,6 @@
 			     * since the objects copy may be invalid due to a rebuild.
 			     */
 
-
-	gboolean   prop_refs_readonly; /* Whether this list is currently readonly */
 	GList     *prop_refs; /* List of properties in the project who's value are `this object'
 			       * (this is used to set/unset those properties when the object is
 			       * added/removed from the project).
@@ -257,9 +255,6 @@
                       Project, object property references
  *******************************************************************************/
  
-void                    glade_widget_project_notify         (GladeWidget      *widget,
-							     GladeProject     *project);
- 
 void                    glade_widget_add_prop_ref           (GladeWidget      *widget,
 							     GladeProperty    *property);
  

Modified: trunk/plugins/gtk+/glade-convert.c
==============================================================================
--- trunk/plugins/gtk+/glade-convert.c	(original)
+++ trunk/plugins/gtk+/glade-convert.c	Mon Sep 22 17:54:58 2008
@@ -38,9 +38,15 @@
 } AdjustmentData;
 
 typedef struct {
+	GladeWidget *widget;
+	gchar *text;
+} TextData;
+
+typedef struct {
 	/* List of newly created objects to set */
 	GList *adjustments;
-
+	GList *textviews;
+	GList *tooltips;
 } ConvertData;
 
 /*****************************************
@@ -74,7 +80,7 @@
 				      NULL);
 
 			/* Cant cancel an adjustment.... */
-			widget = glade_command_create (adaptor, NULL, NULL, glade_app_get_project ());
+			widget = glade_command_create (adaptor, NULL, NULL, project);
 
 			/* Initial properties on the new adjustment dont need command history */
 			glade_widget_property_set (widget, "value", value);
@@ -98,6 +104,8 @@
 
 		g_free (adata);
 	}
+
+	g_list_free (data->adjustments);
 }
 
 static void
@@ -176,6 +184,176 @@
 	}
 }
 
+/*****************************************
+ *           TextViews                   *
+ *****************************************/
+static void
+convert_textviews_finished (GladeProject  *project,
+			    ConvertData   *data)
+{
+	GladeProjectFormat  new_format = glade_project_get_format (project);
+	GladeWidgetAdaptor *adaptor = glade_widget_adaptor_get_by_type (GTK_TYPE_TEXT_BUFFER);
+	GladeProperty *property;
+	GladeWidget *widget;
+	TextData  *tdata;
+	GList *list;
+
+	for (list = data->textviews; list; list = list->next)
+	{
+		tdata = list->data;
+
+		if (new_format == GLADE_PROJECT_FORMAT_GTKBUILDER)
+		{
+			property = glade_widget_get_property (tdata->widget, "buffer");
+
+			/* Cant cancel a textbuffer.... */
+			widget = glade_command_create (adaptor, NULL, NULL, project);
+
+			glade_command_set_property (property, widget->object);
+
+			property = glade_widget_get_property (widget, "text");
+			glade_property_set (property, tdata->text);
+		}
+		else
+		{
+			property = glade_widget_get_property (tdata->widget, "text");
+			glade_command_set_property (property, tdata->text);
+		}
+		g_free (tdata->text);
+		g_free (tdata);
+	}
+
+	g_list_free (data->textviews);
+}
+
+static void
+convert_textviews (GladeProject       *project,
+		   GladeProjectFormat  new_format,
+		   ConvertData        *data)
+{
+	GladeWidget   *widget, *gbuffer;
+	GladeProperty *property;
+	TextData  *tdata;
+	GtkTextBuffer *buffer;
+	const GList   *objects;
+	gchar         *text;
+
+	for (objects = glade_project_get_objects (project); objects; objects = objects->next)
+	{
+		widget = glade_widget_get_from_gobject (objects->data);
+		if (!GTK_IS_TEXT_VIEW (widget->object))
+			continue;
+
+		if (new_format == GLADE_PROJECT_FORMAT_GTKBUILDER)
+		{
+			text = NULL;
+			property = glade_widget_get_property (widget, "text");
+			glade_property_get (property, &text);
+		
+			if (text)
+			{
+				tdata = g_new0 (TextData, 1);
+				tdata->widget = widget;
+				tdata->text = g_strdup (text);
+				data->textviews = g_list_prepend (data->textviews, tdata);
+
+				glade_command_set_property (property, NULL);
+			}
+		}
+		else
+		{
+			text = NULL;
+			gbuffer = NULL;
+			buffer = NULL;
+			property = glade_widget_get_property (widget, "buffer");
+			glade_property_get (property, &buffer);
+
+			if (buffer && (gbuffer = glade_widget_get_from_gobject (buffer)))
+				glade_widget_property_get (gbuffer, "text", &text);
+
+			if (text)
+			{
+				GList delete = { 0, };
+				delete.data = gbuffer;
+				
+				tdata = g_new0 (TextData, 1);
+				tdata->widget = widget;
+				tdata->text = g_strdup (text);
+				data->textviews = g_list_prepend (data->textviews, tdata);
+
+				/* This will take care of unsetting the buffer property as well */
+				glade_command_delete (&delete);
+			}
+		}
+	}
+}
+
+/*****************************************
+ *           Tooltips                    *
+ *****************************************/
+static void
+convert_tooltips_finished (GladeProject  *project,
+			   ConvertData   *data)
+{
+	GladeProjectFormat  new_format = glade_project_get_format (project);
+	GladeProperty *property;
+	GList *list;
+	TextData *tdata;
+
+	for (list = data->tooltips; list; list = list->next)
+	{
+		tdata = list->data;
+		
+		if (new_format == GLADE_PROJECT_FORMAT_GTKBUILDER)
+			property = glade_widget_get_property (tdata->widget, "tooltip-text");
+		else	
+			property = glade_widget_get_property (tdata->widget, "tooltip");
+
+		glade_command_set_property (property, tdata->text);
+
+		g_free (tdata->text);
+		g_free (tdata);
+	}
+	
+	g_list_free (data->tooltips);
+}
+
+static void
+convert_tooltips (GladeProject       *project,
+		  GladeProjectFormat  new_format,
+		  ConvertData        *data)
+{
+	GladeWidget   *widget;
+	GladeProperty *property;
+	TextData      *tdata;
+	const GList   *objects;
+	gchar         *text;
+
+	for (objects = glade_project_get_objects (project); objects; objects = objects->next)
+	{
+		widget = glade_widget_get_from_gobject (objects->data);
+		if (!GTK_IS_WIDGET (widget->object))
+			continue;
+
+		if (new_format == GLADE_PROJECT_FORMAT_GTKBUILDER)
+			property = glade_widget_get_property (widget, "tooltip");
+		else	
+			property = glade_widget_get_property (widget, "tooltip-text");
+
+
+		text = NULL;
+		glade_property_get (property, &text);
+		if (text)
+		{
+			tdata = g_new0 (TextData, 1);
+			tdata->widget = widget;
+			tdata->text = g_strdup (text);
+			data->tooltips = g_list_prepend (data->tooltips, tdata);
+
+			glade_command_set_property (property, NULL);
+		}
+	}
+}
 
 /*****************************************
  *           Main entry point            *
@@ -185,6 +363,8 @@
 				    ConvertData  *data)
 {
 	convert_adjustments_finished (project, data);
+	convert_textviews_finished (project, data);
+	convert_tooltips_finished (project, data);
 
 	/* Once per conversion */
 	g_signal_handlers_disconnect_by_func (G_OBJECT (project),
@@ -199,8 +379,9 @@
 {
 	ConvertData  *data = g_new0 (ConvertData, 1);
 
-	/* Convert GtkAdjustments ... */
 	convert_adjustments (project, new_format, data);
+	convert_textviews (project, new_format, data);
+	convert_tooltips (project, new_format, data);
 
 	/* Clean up after the new_format is in effect */
 	g_signal_connect (G_OBJECT (project), "convert-finished",

Modified: trunk/plugins/gtk+/glade-gtk.c
==============================================================================
--- trunk/plugins/gtk+/glade-gtk.c	(original)
+++ trunk/plugins/gtk+/glade-gtk.c	Mon Sep 22 17:54:58 2008
@@ -7592,10 +7592,15 @@
 	GtkTextBuffer *buffy;
 	GladeWidget *gtext;
 	const gchar *text;
+	GladeProject *project;
 
 	g_return_if_fail (GTK_IS_TEXT_VIEW (object));
 	gtext = glade_widget_get_from_gobject (object);
 	g_return_if_fail (GLADE_IS_WIDGET (gtext));
+
+	project = glade_widget_get_project (gtext);
+	if (glade_project_get_format (project) != GLADE_PROJECT_FORMAT_LIBGLADE)
+		return;
 	
 	buffy = gtk_text_view_get_buffer (GTK_TEXT_VIEW (object));
 	

Modified: trunk/plugins/gtk+/gtk+.xml.in
==============================================================================
--- trunk/plugins/gtk+/gtk+.xml.in	(original)
+++ trunk/plugins/gtk+/gtk+.xml.in	Mon Sep 22 17:54:58 2008
@@ -47,14 +47,17 @@
       </actions>
 
       <properties>
-	<property id="tooltip-text" since="2.12"/>
-	<property id="tooltip-markup" since="2.12"/>
+	<!-- Disable tooltip-text & tooltip-markup in libglade since we do
+	     conversions of the "tooltip" fake property -->
+	<property id="tooltip-text" since="2.12" weight="4.2" libglade-unsupported="True"/>
+	<property id="tooltip-markup" since="2.12" weight="4.1" libglade-unsupported="True"/>
 	<property id="visible" default="True" common="True" ignore="True"/>
 	<property id="width-request"  common="True" optional="True" optional-default="False" default="0"/>
 	<property id="height-request" common="True" optional="True" optional-default="False" default="0"/>
 	<property id="no-show-all" weight="4.6" ignore="True"/>
 
-	<property common="True" id="tooltip" _name="Tooltip" default="" translatable="True" weight="4.5">
+	<property common="True" id="tooltip" _name="Tooltip" default="" translatable="True" weight="4.5" 
+		  libglade-only="True">
 	  <spec>glade_standard_string_spec</spec>
 	  <_tooltip>A tooltip text for this widget</_tooltip>
 	</property>
@@ -1647,7 +1650,7 @@
     <glade-widget-class name="GtkGammaCurve" generic-name="gammacurve" _title="Gamma Curve"/>
 
     <glade-widget-class name="GtkFileSelection" generic-name="fileselection" _title="File Selection" deprecated="True" libglade-only="True"/>
-    <glade-widget-class name="Custom" generic-name="custom" _title="Custom widget">
+    <glade-widget-class name="Custom" generic-name="custom" _title="Custom widget" deprecated="True" libglade-only="True">
       <properties>
 	<property id="creation-function"/>
 	<property id="string1"/>
@@ -1739,7 +1742,7 @@
     </glade-widget-class>
     
     <!-- Objects -->
-    <glade-widget-class name="GtkSizeGroup" generic-name="sizegroup" _title="Size Group" libglade-unsupported="True">
+    <glade-widget-class name="GtkSizeGroup" generic-name="sizegroup" _title="Size Group" libglade-unsupported="True" toplevel="True">
       <read-widget-function>glade_gtk_size_group_read_widget</read-widget-function>
       <write-widget-function>glade_gtk_size_group_write_widget</write-widget-function>
       <set-property-function>glade_gtk_size_group_set_property</set-property-function>
@@ -1751,34 +1754,68 @@
       </properties>
     </glade-widget-class>
 
-    <glade-widget-class name="GtkWindowGroup" generic-name="windowgroup" _title="Window Group" libglade-unsupported="True"/>
-    <glade-widget-class name="GtkAdjustment" generic-name="adjustment" _title="Adjustment" libglade-unsupported="True"/>
-
-
-    <glade-widget-class name="GtkAction" generic-name="action" _title="Action" libglade-unsupported="True"/>
-    <glade-widget-class name="GtkToggleAction" generic-name="toggleaction" _title="Toggle Action" libglade-unsupported="True"/>
-    <glade-widget-class name="GtkRadioAction" generic-name="radioaction" _title="Radio Action" libglade-unsupported="True"/>
-    <glade-widget-class name="GtkRecentAction" generic-name="recentaction" _title="Recent Action" libglade-unsupported="True" since="2.12"/>
-    <glade-widget-class name="GtkActionGroup" generic-name="actiongroup" _title="Action Group" libglade-unsupported="True"/>
-    <glade-widget-class name="GtkEntryCompletion" generic-name="entrycompletion" _title="Entry Completion" libglade-unsupported="True"/>
-    <glade-widget-class name="GtkIconFactory" generic-name="iconfactory" _title="Icon Factory" libglade-unsupported="True"/>
-
-    <glade-widget-class name="GtkListStore" generic-name="liststore" _title="List Store" libglade-unsupported="True"/>
-    <glade-widget-class name="GtkTreeStore" generic-name="treestore" _title="Tree Store" libglade-unsupported="True"/>
-    <glade-widget-class name="GtkTreeModelFilter" generic-name="treemodelfilter" _title="Tree Model Filter" libglade-unsupported="True"/>
-    <glade-widget-class name="GtkTreeModelSort" generic-name="treemodelsort" _title="Tree Model Sort" libglade-unsupported="True"/>
-    <glade-widget-class name="GtkTreeSelection" generic-name="treeselection" _title="Tree Selection" libglade-unsupported="True"/>
+    <glade-widget-class name="GtkWindowGroup" generic-name="windowgroup" 
+			_title="Window Group" libglade-unsupported="True" toplevel="True"/>
+    <glade-widget-class name="GtkAdjustment" generic-name="adjustment" 
+			_title="Adjustment" libglade-unsupported="True" toplevel="True">
+      <properties>
+	<property id="value" default="0.0"/>
+	<property id="lower" default="0.0"/>
+	<property id="upper" default="100.0"/>
+	<property id="page-increment" default="10.0"/>
+	<property id="step-increment" default="1.0"/>
+	<property id="page-size" default="10.0"/>
+      </properties>
+    </glade-widget-class>
 
+    <glade-widget-class name="GtkAction" generic-name="action" _title="Action" 
+			libglade-unsupported="True" toplevel="True"/>
+    <glade-widget-class name="GtkToggleAction" generic-name="toggleaction" _title="Toggle Action" 
+			libglade-unsupported="True"/>
+    <glade-widget-class name="GtkRadioAction" generic-name="radioaction" _title="Radio Action" 
+			libglade-unsupported="True"/>
+    <glade-widget-class name="GtkRecentAction" generic-name="recentaction" _title="Recent Action" 
+			libglade-unsupported="True" since="2.12"/>
+    <glade-widget-class name="GtkActionGroup" generic-name="actiongroup" _title="Action Group" 
+			libglade-unsupported="True" toplevel="True"/>
+    <glade-widget-class name="GtkEntryCompletion" generic-name="entrycompletion" _title="Entry Completion" 
+			libglade-unsupported="True" toplevel="True"/>
+    <glade-widget-class name="GtkIconFactory" generic-name="iconfactory" _title="Icon Factory" 
+			libglade-unsupported="True" toplevel="True"/>
+    <glade-widget-class name="GtkUIManager" generic-name="uimanager" _title="UI Manager" 
+			libglade-unsupported="True" toplevel="True"/>
+
+    <glade-widget-class name="GtkListStore" generic-name="liststore" _title="List Store" 
+			libglade-unsupported="True" toplevel="True"/>
+    <glade-widget-class name="GtkTreeStore" generic-name="treestore" _title="Tree Store" 
+			libglade-unsupported="True" toplevel="True"/>
+    <glade-widget-class name="GtkTreeModelFilter" generic-name="treemodelfilter" _title="Tree Model Filter" 
+			libglade-unsupported="True" toplevel="True"/>
+    <glade-widget-class name="GtkTreeModelSort" generic-name="treemodelsort" _title="Tree Model Sort" 
+			libglade-unsupported="True" toplevel="True"/>
+    <glade-widget-class name="GtkTreeSelection" generic-name="treeselection" _title="Tree Selection" 
+			libglade-unsupported="True" toplevel="True"/>
 
-    <glade-widget-class name="GtkStatusIcon" generic-name="statusicon" _title="Status Icon" libglade-unsupported="True"/>
+    <glade-widget-class name="GtkStatusIcon" generic-name="statusicon" _title="Status Icon" 
+			libglade-unsupported="True" toplevel="True"/>
 
+    <glade-widget-class name="GtkTextBuffer" generic-name="textbuffer" _title="Text Buffer" 
+			libglade-unsupported="True" toplevel="True">
+      <properties>
+	<property id="text" translatable="True">
+	  <visible-lines>2</visible-lines>
+	</property>
+      </properties>
+    </glade-widget-class>
 
-    <glade-widget-class name="GtkTextBuffer" generic-name="textbuffer" _title="Text Buffer" libglade-unsupported="True"/>
-    <glade-widget-class name="GtkTextTag" generic-name="texttag" _title="Text Tag" libglade-unsupported="True"/>
-    <glade-widget-class name="GtkTextTagTable" generic-name="texttagtable" _title="Text Tag Table" libglade-unsupported="True"/>
 
-    <glade-widget-class name="GtkFileFilter" generic-name="filefilter" _title="File Filter" libglade-unsupported="True"/>
+    <glade-widget-class name="GtkTextTag" generic-name="texttag" _title="Text Tag" 
+			libglade-unsupported="True" toplevel="True"/>
+    <glade-widget-class name="GtkTextTagTable" generic-name="texttagtable" _title="Text Tag Table" 
+			libglade-unsupported="True" toplevel="True"/>
 
+    <glade-widget-class name="GtkFileFilter" generic-name="filefilter" _title="File Filter" 
+			libglade-unsupported="True" toplevel="True"/>
   </glade-widget-classes>
   
   <glade-widget-group name="gtk-toplevels" _title="Toplevels">
@@ -1816,7 +1853,7 @@
     <glade-widget-class-ref name="GtkAlignment"/>
   </glade-widget-group>
 
-  <glade-widget-group name="gtk-control-display" title="Control and Display">
+  <glade-widget-group name="gtk-control-display" _title="Control and Display">
 
     <glade-widget-class-ref name="GtkButton"/>
     <glade-widget-class-ref name="GtkToggleButton"/>
@@ -1857,38 +1894,59 @@
     <glade-widget-class-ref name="GtkVSeparator"/>
     <glade-widget-class-ref name="GtkArrow"/>
     <glade-widget-class-ref name="GtkDrawingArea"/>
-    
+  </glade-widget-group>
+
+  <glade-widget-group name="gtk-composite" _title="Composite Widgets">
+
+    <default-palette-state expanded="False"/>
+
     <glade-widget-class-ref name="GtkColorSelection"/>
     <glade-widget-class-ref name="GtkFontSelection"/>
     <glade-widget-class-ref name="GtkRecentChooserWidget"/>
     <glade-widget-class-ref name="GtkFileChooserWidget"/>
   </glade-widget-group>
 
-  <glade-widget-group name="gtk-objects" title="Objects">
-    <glade-widget-class-ref name="GtkSizeGroup"/>
-    <glade-widget-class-ref name="GtkWindowGroup"/>
-
-    <glade-widget-class-ref name="GtkAdjustment"/>
+  <glade-widget-group name="gtk-actions" _title="Actions">
 
+    <glade-widget-class-ref name="GtkActionGroup"/>
     <glade-widget-class-ref name="GtkAction"/>
     <glade-widget-class-ref name="GtkToggleAction"/>
     <glade-widget-class-ref name="GtkRadioAction"/>
     <glade-widget-class-ref name="GtkRecentAction"/>
-    <glade-widget-class-ref name="GtkActionGroup"/>
-    <glade-widget-class-ref name="GtkEntryCompletion"/>
-    <glade-widget-class-ref name="GtkIconFactory"/>
+  </glade-widget-group>
+
+  <glade-widget-group name="gtk-mvc" title="Tree Model">
+
+    <default-palette-state expanded="False"/>
 
     <glade-widget-class-ref name="GtkListStore"/>
     <glade-widget-class-ref name="GtkTreeStore"/>
     <glade-widget-class-ref name="GtkTreeModelFilter"/>
     <glade-widget-class-ref name="GtkTreeModelSort"/>
     <glade-widget-class-ref name="GtkTreeSelection"/>
-    <glade-widget-class-ref name="GtkStatusIcon"/>
+  </glade-widget-group>
+
+  <glade-widget-group name="gtk-text" _title="Text Manipulation">
+
+    <default-palette-state expanded="False"/>
 
     <glade-widget-class-ref name="GtkTextBuffer"/>
     <glade-widget-class-ref name="GtkTextTag"/>
     <glade-widget-class-ref name="GtkTextTagTable"/>
+  </glade-widget-group>
+
+
+  <glade-widget-group name="gtk-objects" title="Miscellaneous">
 
+    <default-palette-state expanded="False"/>
+
+    <glade-widget-class-ref name="GtkSizeGroup"/>
+    <glade-widget-class-ref name="GtkWindowGroup"/>
+    <glade-widget-class-ref name="GtkAdjustment"/>
+    <glade-widget-class-ref name="GtkEntryCompletion"/>
+    <glade-widget-class-ref name="GtkUIManager"/>
+    <glade-widget-class-ref name="GtkIconFactory"/>
+    <glade-widget-class-ref name="GtkStatusIcon"/>
     <glade-widget-class-ref name="GtkFileFilter"/>
   </glade-widget-group>
 



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]