glade3 r1928 - in trunk: . gladeui src



Author: tvb
Date: Thu Sep 18 19:05:01 2008
New Revision: 1928
URL: http://svn.gnome.org/viewvc/glade3?rev=1928&view=rev

Log:

	* src/glade-window.c: 
	  - Show glade widgets in the workspace on selection changes in the project 
	    and not on item-activated.
	  - Rename "Dock Editor" -> "Dock Properties" as per bug 487613.
	
	* gladeui/glade-design-layout.c: Fixed expose event to chain to parent class
	  after drawing an orange box (non window widgets are usualy GTK_NO_WINDOW).

	* gladeui/glade-widget.c: Made glade_widget_show() show the toplevel of any
	  GtkWidget object, also now shows toplevel non window glade widgets in the
	  workspace, if the widget is referenced by a property that as a result parents
	  the widget (i.e. bears a "parentless-widget" property reference), then the
	  referencing widget is shown instead.

	* gladeui/glade-popup.c: Added devhelp icon to documentation menu item, added
	  docs icon to normal menu.



Modified:
   trunk/ChangeLog
   trunk/gladeui/glade-command.c
   trunk/gladeui/glade-design-layout.c
   trunk/gladeui/glade-popup.c
   trunk/gladeui/glade-widget.c
   trunk/gladeui/glade-widget.h
   trunk/src/glade-window.c

Modified: trunk/gladeui/glade-command.c
==============================================================================
--- trunk/gladeui/glade-command.c	(original)
+++ trunk/gladeui/glade-command.c	Thu Sep 18 19:05:01 2008
@@ -1267,8 +1267,6 @@
 					/* Mark the properties as recorded */
 					cdata->props_recorded = TRUE;
 				}
-				
-				
 			}
 
 			/* Toplevels get pasted to the active project */

Modified: trunk/gladeui/glade-design-layout.c
==============================================================================
--- trunk/gladeui/glade-design-layout.c	(original)
+++ trunk/gladeui/glade-design-layout.c	Thu Sep 18 19:05:01 2008
@@ -787,10 +787,12 @@
 		/* draw a filled rectangle in case child does not draw 
 		 * it's own background (a GTK_WIDGET_NO_WINDOW child). */
 		gdk_draw_rectangle (widget->window,
-				    widget->style->fg_gc[GTK_STATE_NORMAL],
+				    widget->style->bg_gc[GTK_STATE_NORMAL],
 				    TRUE,
-				    x + OUTLINE_WIDTH / 2, y + OUTLINE_WIDTH / 2, 
+				    x + OUTLINE_WIDTH / 2, y + OUTLINE_WIDTH / 2,
 				    w - OUTLINE_WIDTH, h - OUTLINE_WIDTH);
+
+		GTK_WIDGET_CLASS (glade_design_layout_parent_class)->expose_event (widget, ev);
 	}	
 
 	return TRUE;

Modified: trunk/gladeui/glade-popup.c
==============================================================================
--- trunk/gladeui/glade-popup.c	(original)
+++ trunk/gladeui/glade-popup.c	Thu Sep 18 19:05:01 2008
@@ -217,6 +217,7 @@
 glade_popup_append_item (GtkWidget *popup_menu,
 			 const gchar *stock_id,
 			 const gchar *label,
+			 GtkWidget   *image,
 			 gboolean sensitive,
 			 gpointer callback,
 			 gpointer data)
@@ -229,6 +230,11 @@
 		gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_item),
 			gtk_image_new_from_stock (stock_id, GTK_ICON_SIZE_MENU));
 	}
+	else if (image && label)
+	{
+		menu_item = gtk_image_menu_item_new_with_mnemonic (label);
+		gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_item), image);
+	}
 	else if (stock_id)
 		menu_item = gtk_image_menu_item_new_from_stock (stock_id, NULL);
 	else
@@ -311,7 +317,7 @@
 				
 		item = glade_popup_append_item (menu, 
 						a->klass->stock,
-						a->klass->label, TRUE,
+						a->klass->label, NULL, TRUE,
 						(a->actions) ? NULL : callback,
 						(a->actions) ? NULL : a->klass->path);
 		
@@ -398,6 +404,7 @@
 	GtkWidget *popup_menu;
 	gboolean   sensitive;
 	GladePlaceholder *tmp_placeholder;
+	gchar     *book;
 
 	sensitive = glade_palette_get_current_item (glade_app_get_palette ()) != NULL;
 
@@ -411,9 +418,9 @@
 		tmp_placeholder = placeholder;
 		if (!tmp_placeholder && widget)
 			tmp_placeholder = find_placeholder (glade_widget_get_object (widget));
-		glade_popup_append_item (popup_menu, NULL, _("_Add widget here"), tmp_placeholder != NULL,
+		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"), TRUE,
+		glade_popup_append_item (popup_menu, NULL, _("Add widget as _toplevel"), NULL, TRUE,
 					 glade_popup_root_add_cb, NULL);
 	}
 
@@ -427,23 +434,23 @@
 		gtk_widget_show (separator);
 	}
 
-	glade_popup_append_item (popup_menu, NULL, _("_Select"), TRUE,
+	glade_popup_append_item (popup_menu, NULL, _("_Select"), NULL, TRUE,
 				 glade_popup_select_cb, widget);
-	glade_popup_append_item (popup_menu, GTK_STOCK_CUT, NULL, TRUE,
+	glade_popup_append_item (popup_menu, GTK_STOCK_CUT, NULL, NULL, TRUE,
 				 glade_popup_cut_cb, widget);
-	glade_popup_append_item (popup_menu, GTK_STOCK_COPY, NULL, TRUE,
+	glade_popup_append_item (popup_menu, GTK_STOCK_COPY, NULL, NULL, TRUE,
 				 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 ());
 	if (placeholder)
-		glade_popup_append_item (popup_menu, GTK_STOCK_PASTE, NULL, sensitive,
+		glade_popup_append_item (popup_menu, GTK_STOCK_PASTE, NULL, NULL, sensitive,
 					 glade_popup_placeholder_paste_cb, placeholder);
 	else
-		glade_popup_append_item (popup_menu, GTK_STOCK_PASTE, NULL, sensitive,
+		glade_popup_append_item (popup_menu, GTK_STOCK_PASTE, NULL, NULL, sensitive,
 					 glade_popup_paste_cb, widget);
 
-	glade_popup_append_item (popup_menu, GTK_STOCK_DELETE, NULL, TRUE,
+	glade_popup_append_item (popup_menu, GTK_STOCK_DELETE, NULL, NULL, TRUE,
 				 glade_popup_delete_cb, widget);
 
 
@@ -485,6 +492,21 @@
 		glade_popup_action_populate_menu (popup_menu, widget, NULL, packing);
 	}
 
+
+	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);
+
+
 	return popup_menu;
 }
 
@@ -498,11 +520,11 @@
 	if (GTK_WIDGET_TOPLEVEL (glade_widget_get_object (widget)))
 	{
 		glade_popup_append_item (popup_menu, GTK_STOCK_PASTE, 
-					 NULL, TRUE,
+					 NULL, NULL, TRUE,
 					 glade_popup_clipboard_paste_cb, NULL);
 	}
 
-	glade_popup_append_item (popup_menu, GTK_STOCK_DELETE, NULL, TRUE,
+	glade_popup_append_item (popup_menu, GTK_STOCK_DELETE, NULL, NULL, TRUE,
 				 glade_popup_clipboard_delete_cb, widget);
 
 	return popup_menu;
@@ -605,14 +627,17 @@
 
 	popup_menu = gtk_menu_new ();
 
-	glade_popup_append_item (popup_menu, NULL, _("Add widget as _toplevel"), TRUE,
+	glade_popup_append_item (popup_menu, NULL, _("Add widget as _toplevel"), NULL, TRUE,
 				 glade_popup_root_add_cb, adaptor);
 
 
 	g_object_get (adaptor, "book", &book, NULL);
 	if (book)
-		glade_popup_append_item (popup_menu, NULL, _("Read _documentation"), TRUE,
+	{
+		GtkWidget *icon = glade_util_get_devhelp_icon (GTK_ICON_SIZE_MENU);
+		glade_popup_append_item (popup_menu, NULL, _("Read _documentation"), icon, TRUE,
 					 glade_popup_docs_cb, adaptor);
+	}
 	g_free (book);
 
 

Modified: trunk/gladeui/glade-widget.c
==============================================================================
--- trunk/gladeui/glade-widget.c	(original)
+++ trunk/gladeui/glade-widget.c	Thu Sep 18 19:05:01 2008
@@ -1858,12 +1858,29 @@
 {
 	GladeDesignView *view;
 	GtkWidget *layout;
+	GladeProperty *property;
 
 	g_return_if_fail (GLADE_IS_WIDGET (widget));
 	
 	/* Position window at saved coordinates or in the center */
-	if (GTK_IS_WINDOW (widget->object) && glade_widget_embed (widget))
+	if (GTK_IS_WIDGET (widget->object) && !widget->parent)
 	{
+		if (GTK_IS_WINDOW (widget->object) && !glade_widget_embed (widget))
+		{
+			g_warning ("Unable to embed %s\n", widget->name);
+			return;
+		}
+
+		/* Maybe a property references this widget internally, show that widget instead */
+		if ((property = glade_widget_get_parentless_widget_ref (widget)) != NULL)
+		{
+			/* will never happen, paranoid check to avoid endless recursion. */
+			if (property->widget != widget)
+				glade_widget_show (property->widget);
+			return;
+		}
+
+
 		view = glade_design_view_get_from_project (glade_widget_get_project (widget));
 		layout = GTK_WIDGET (glade_design_view_get_layout (view));
 
@@ -1877,9 +1894,12 @@
 					       G_CALLBACK (glade_widget_add_to_layout), 
 					       widget, NULL, G_CONNECT_AFTER | G_CONNECT_SWAPPED);
 
-	} else if (GTK_IS_WIDGET (widget->object))
+	} 
+	else if (GTK_IS_WIDGET (widget->object))
 	{
-		gtk_widget_show_all (GTK_WIDGET (widget->object));
+		GladeWidget *toplevel = glade_widget_get_toplevel (widget);
+		if (toplevel != widget)
+			glade_widget_show (toplevel);
 	}
 	widget->visible = TRUE;
 }
@@ -3287,6 +3307,24 @@
 }
 
 /**
+ * glade_widget_get_toplevel:
+ * @widget: A #GladeWidget
+ *
+ * Returns: The toplevel #GladeWidget in the hierarchy (or @widget)
+ */
+GladeWidget *
+glade_widget_get_toplevel (GladeWidget *widget)
+{
+	GladeWidget *toplevel = widget;
+	g_return_val_if_fail (GLADE_IS_WIDGET (widget), NULL);
+
+	while (toplevel->parent)
+		toplevel = toplevel->parent;
+
+	return toplevel;
+}
+
+/**
  * glade_widget_set_packing_properties:
  * @widget:     A #GladeWidget
  * @container:  The parent #GladeWidget

Modified: trunk/gladeui/glade-widget.h
==============================================================================
--- trunk/gladeui/glade-widget.h	(original)
+++ trunk/gladeui/glade-widget.h	Thu Sep 18 19:05:01 2008
@@ -394,6 +394,8 @@
  
 void                    glade_widget_set_parent             (GladeWidget      *widget,
 							     GladeWidget      *parent);
+
+GladeWidget            *glade_widget_get_toplevel           (GladeWidget      *widget);
  
 gboolean                glade_widget_superuser              (void);
  

Modified: trunk/src/glade-window.c
==============================================================================
--- trunk/src/glade-window.c	(original)
+++ trunk/src/glade-window.c	Thu Sep 18 19:05:01 2008
@@ -644,19 +644,20 @@
 	 */
 	g_return_if_fail (GLADE_IS_WINDOW (window));
 
-	/* Only update the editor if the selection has changed on
+	/* Only update the toolbar & workspace if the selection has changed on
 	 * the currently active project.
 	 */
-	if (glade_app_get_editor() &&
-	    project && (project == glade_app_get_project ()))
+	if (project == glade_app_get_project ())
 	{
 		list = glade_project_selection_get (project);
 		num = g_list_length (list);
 		
 		if (num == 1 && !GLADE_IS_PLACEHOLDER (list->data))
 		{
-		
 			glade_widget = glade_widget_get_from_gobject (G_OBJECT (list->data));
+
+			glade_widget_show (glade_widget);
+
 			clean_actions (window);
 			if (glade_widget->actions)
 				add_actions (window, glade_widget, glade_widget->actions);
@@ -1606,21 +1607,6 @@
 }
 
 static void
-inspector_item_activated_cb (GladeInspector     *inspector,
-		             GladeWindow *window)
-{
-	GList *item = glade_inspector_get_selected_items (inspector);
-	g_assert (GLADE_IS_WIDGET (item->data) && (item->next == NULL));
-
-	/* bring window on top since inspector may be detached */
-	gtk_window_present (GTK_WINDOW (window));
-	/* switch to this widget in the workspace */
-	glade_widget_show (GLADE_WIDGET (item->data));
-
-	g_list_free (item);
-}
-
-static void
 notebook_switch_page_cb (GtkNotebook *notebook,
 			     GtkNotebookPage *page,
 			     guint page_num,
@@ -1695,11 +1681,7 @@
 	inspector = glade_inspector_new ();
 	gtk_widget_show (inspector);
 	glade_inspector_set_project (GLADE_INSPECTOR (inspector), project);
-	
-	g_signal_connect (inspector, "item-activated",
-			  G_CALLBACK (inspector_item_activated_cb),
-			  window); 
-	
+		
 	gtk_notebook_append_page (GTK_NOTEBOOK (window->priv->inspectors_notebook), inspector, NULL);
 	
 
@@ -2265,7 +2247,7 @@
 	  N_("Dock the inspector into the main window"),
 	  G_CALLBACK (toggle_dock_cb), TRUE },
 
-	{ "DockEditor", NULL, N_("Dock _Editor"), NULL,
+	{ "DockEditor", NULL, N_("Dock Prop_erties"), NULL,
 	  N_("Dock the editor into the main window"),
 	  G_CALLBACK (toggle_dock_cb), TRUE },
 



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