glade3 r2087 - trunk/gladeui



Author: tvb
Date: Thu Jan 15 17:02:39 2009
New Revision: 2087
URL: http://svn.gnome.org/viewvc/glade3?rev=2087&view=rev

Log:
some unfinished work



Modified:
   trunk/gladeui/glade-command.c
   trunk/gladeui/glade-displayable-values.c
   trunk/gladeui/glade-widget.c

Modified: trunk/gladeui/glade-command.c
==============================================================================
--- trunk/gladeui/glade-command.c	(original)
+++ trunk/gladeui/glade-command.c	Thu Jan 15 17:02:39 2009
@@ -936,6 +936,9 @@
 	GList *children, *l, *list;
 	GladeWidget *child;
 
+	if ((list = glade_widget_get_parentless_reffed_widgets (widget)) != NULL)
+		reffed = g_list_concat (reffed, list);
+
 	children = glade_widget_adaptor_get_children (widget->adaptor,
 						      widget->object);
 
@@ -943,13 +946,12 @@
 	{
 		if ((child = glade_widget_get_from_gobject (l->data)) != NULL)
 		{
-			if ((list = glade_widget_get_parentless_reffed_widgets (child)) != NULL)
-				reffed = g_list_concat (reffed, list);
-
 			reffed = get_all_parentless_reffed_widgets (reffed, child);
 		}
 	}
 
+	g_list_free (children);
+
 	return reffed;
 }
 
@@ -992,11 +994,9 @@
 	 */
 	widget = GLADE_WIDGET (widgets->data);
 	if (placeholder && GTK_IS_WINDOW (widget->object) == FALSE)
-	{
-		GladeWidget *some_widget = glade_placeholder_get_parent (placeholder);
-		me->project = glade_widget_get_project (some_widget);
-	}
-	else me->project = glade_app_get_project();
+		me->project = glade_placeholder_get_project (placeholder);
+	else 
+		me->project = glade_app_get_project();
 
 	GLADE_COMMAND (me)->description = 
 		g_strdup_printf (_("Add %s"), g_list_length (widgets) == 1 ? 
@@ -1810,6 +1810,67 @@
 		g_list_free(copied_widgets);
 }
 
+#if 0
+static void
+glade_command_break_references_for_widget (GladeWidget *widget, GList *widgets)
+{
+	GList *l, *children;
+		
+	for (l = widget->properties; l; l = l->next)
+	{
+		property = l->data;
+		
+		if (glade_property_class_is_object (property->klass) &&
+		    property->klass->parentless_widget == FALSE)
+		{
+			GList   *obj_list;
+			GObject *reffed_obj = NULL;
+			GladeWidget *reffed_widget;
+			
+			if (GLADE_IS_PARAM_SPEC_OBJECTS (klass->pspec))
+			{
+				glade_property_get (property, &obj_list);
+				
+			}
+			else
+			{
+				glade_property_get (property, &reffed_obj);
+			}				
+		}
+	}
+
+	children = glade_widget_adaptor_get_children (widget->adaptor,
+						      widget->object);
+
+	for (l = children; l; l = l->next)
+	{
+		if ((child = glade_widget_get_from_gobject (l->data)) != NULL)
+			glade_command_break_references_for_widget (child, widgets);
+	}
+
+	g_list_free (children);
+}
+
+static void
+glade_command_break_references (GladeProject *project, GList *widgets)
+{
+	GList *list;
+	GladeWidget *widget;
+
+	for (list = widgets; list && list->data; list = list->next)
+	{
+		widget = l->data;
+
+		if (project == widget->project)
+			continue;
+
+		glade_command_break_references_for_widget (widget, widgets);
+	}
+
+
+}
+#endif
+
 /**
  * glade_command_paste:
  * @widgets: a #GList of #GladeWidget
@@ -1823,12 +1884,21 @@
 void
 glade_command_paste(GList *widgets, GladeWidget *parent, GladePlaceholder *placeholder)
 {
-	GList *list, *copied_widgets = NULL;
+	GList *l, *list, *copied_widgets = NULL;
 	GladeWidget *copied_widget = NULL;
+	GladeProperty *property;
+/* 	GladeProject  *target_project; */
 	gboolean exact;
 	
 	g_return_if_fail (widgets != NULL);
 	
+/* 	if (placeholder && GTK_IS_WINDOW (widget->object) == FALSE) */
+/* 		target_project = glade_placeholder_get_project (placeholder); */
+/* 	else if (parent && GTK_IS_WINDOW (widget->object) == FALSE) */
+/* 		target_project = glade_widget_get_project (parent); */
+/* 	else  */
+/* 		target_project = glade_app_get_project(); */
+
 	for (list = widgets; list && list->data; list = list->next)
 	{
 		exact = GPOINTER_TO_INT (g_object_get_data (G_OBJECT (list->data), "glade-command-was-cut"));
@@ -1836,7 +1906,14 @@
 		copied_widget = glade_widget_dup(list->data, exact);
 		copied_widgets = g_list_prepend(copied_widgets, copied_widget);
 	}
+
 	glade_command_push_group(_("Paste %s"), g_list_length (widgets) == 1 ? copied_widget->name : _("multiple"));
+
+	/* When pasting widgets across projects, we nullify the property references that
+	 * are not satisfied by the paste list.
+	 */
+
+
 	glade_command_add(copied_widgets, parent, placeholder, TRUE);
 	glade_command_pop_group();
 	

Modified: trunk/gladeui/glade-displayable-values.c
==============================================================================
--- trunk/gladeui/glade-displayable-values.c	(original)
+++ trunk/gladeui/glade-displayable-values.c	Thu Jan 15 17:02:39 2009
@@ -61,10 +61,6 @@
 				  const gchar   *domain,
 				  const gchar   *string)
 {
-	ValueTab *tab;
-	gpointer  klass;
-	GList    *values;
-
 	g_return_if_fail (value && value[0]);
 	g_return_if_fail (domain && domain[0]);
 	g_return_if_fail (string && string[0]);

Modified: trunk/gladeui/glade-widget.c
==============================================================================
--- trunk/gladeui/glade-widget.c	(original)
+++ trunk/gladeui/glade-widget.c	Thu Jan 15 17:02:39 2009
@@ -2058,7 +2058,7 @@
 		property = GLADE_PROPERTY (l->data);
 
 		if (property->klass->parentless_widget)
-			/* For now only one property can point to the widget */
+			/* only one external property can point to this widget */
 			return property;
 	}
 	return NULL;
@@ -2068,7 +2068,7 @@
 GList *
 glade_widget_get_parentless_reffed_widgets (GladeWidget *widget)
 {
-	GladeWidget   *reffed = NULL;
+	GObject       *reffed = NULL;
 	GladeProperty *property = NULL;
 	GList         *l, *widgets = NULL;
 



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