glade3 r2087 - trunk/gladeui
- From: tvb svn gnome org
- To: svn-commits-list gnome org
- Subject: glade3 r2087 - trunk/gladeui
- Date: Thu, 15 Jan 2009 17:02:39 +0000 (UTC)
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]