[libgda/LIBGDA_4.2] GdaBrowser: improved UI



commit f1ebefb75743bce8f9457b1490e99c16faf81a16
Author: Vivien Malerba <malerba gnome-db org>
Date:   Sun Jul 24 19:25:43 2011 +0200

    GdaBrowser: improved UI

 tools/browser/Makefile.am                          |    2 -
 tools/browser/browser-stock-icons.c                |    2 +
 tools/browser/browser-stock-icons.h                |    2 +
 tools/browser/common/ui-formgrid.c                 |   58 +++++++++++++-------
 tools/browser/data/Makefile.am                     |    2 +
 .../hicolor_actions_22x22_form.png}                |  Bin 286 -> 286 bytes
 .../hicolor_actions_22x22_grid.png}                |  Bin 258 -> 258 bytes
 tools/browser/support.c                            |    2 -
 tools/browser/support.h                            |    3 -
 9 files changed, 45 insertions(+), 26 deletions(-)
---
diff --git a/tools/browser/Makefile.am b/tools/browser/Makefile.am
index 7042c58..2c692f6 100644
--- a/tools/browser/Makefile.am
+++ b/tools/browser/Makefile.am
@@ -177,8 +177,6 @@ icons_DATA= \
 	gda-browser-diagram.png \
 	gda-browser-query.png \
 	gda-browser-action.png \
-	gda-browser-form.png \
-	gda-browser-grid.png \
 	gda-browser-menu-ind.png \
 	gda-browser-ldap-entry.png \
 	gda-browser-ldap-group.png \
diff --git a/tools/browser/browser-stock-icons.c b/tools/browser/browser-stock-icons.c
index 7a0d1ea..ac09c4d 100644
--- a/tools/browser/browser-stock-icons.c
+++ b/tools/browser/browser-stock-icons.c
@@ -49,6 +49,8 @@ browser_stock_icons_init (void)
 		{ BROWSER_STOCK_BUILDER, N_("Builder"), 0, 0, NULL },
 		{ BROWSER_STOCK_LDAP_ENTRIES, N_("Ldap entries"), 0, 0, NULL },
 		{ BROWSER_STOCK_TABLE_ADD, N_("Add table"), 0, 0, NULL},
+		{ BROWSER_STOCK_GRID, N_("Grid"), 0, 0, NULL},
+		{ BROWSER_STOCK_FORM, N_("Form"), 0, 0, NULL},
 	};
 
 	factory = gtk_icon_factory_new ();
diff --git a/tools/browser/browser-stock-icons.h b/tools/browser/browser-stock-icons.h
index 3d0dd13..17d60e1 100644
--- a/tools/browser/browser-stock-icons.h
+++ b/tools/browser/browser-stock-icons.h
@@ -29,6 +29,8 @@ G_BEGIN_DECLS
 #define BROWSER_STOCK_BUILDER         "glade"
 #define BROWSER_STOCK_LDAP_ENTRIES    "ldap-entries"
 #define BROWSER_STOCK_TABLE_ADD       "table-add"
+#define BROWSER_STOCK_GRID            "grid"
+#define BROWSER_STOCK_FORM            "form"
 
 
 /* Named icons defined in fd.o Icon Naming Spec */
diff --git a/tools/browser/common/ui-formgrid.c b/tools/browser/common/ui-formgrid.c
index f48e31d..1718b1c 100644
--- a/tools/browser/common/ui-formgrid.c
+++ b/tools/browser/common/ui-formgrid.c
@@ -26,6 +26,7 @@
 #include <libgda-ui/gdaui-data-selector.h>
 #include "../support.h"
 #include "../browser-window.h"
+#include "../browser-stock-icons.h"
 #include <libgda/gda-data-model-extra.h>
 #ifdef HAVE_LDAP
 #include "../ldap-browser/ldap-browser-perspective.h"
@@ -195,7 +196,7 @@ ui_formgrid_show (GtkWidget *widget)
 }
 
 static void form_grid_autoupdate_cb (GtkToggleButton *button, UiFormGrid *formgrid);
-static void form_grid_toggled_cb (GtkToggleButton *button, UiFormGrid *formgrid);
+static void form_grid_toggled_cb (GtkToggleAction *action, UiFormGrid *formgrid);
 static void form_grid_populate_popup_cb (GtkWidget *wid, GtkMenu *menu, UiFormGrid *formgrid);
 static void selection_changed_cb (GdauiDataSelector *sel, UiFormGrid *formgrid);
 
@@ -246,18 +247,6 @@ ui_formgrid_init (UiFormGrid *formgrid)
 	gtk_box_pack_start (GTK_BOX (formgrid), hbox, FALSE, TRUE, 0);
 	gtk_widget_show (hbox);
 
-	/* button to toggle between grid and form mode */
-	button = gtk_toggle_button_new ();
-	GdkPixbuf *pixbuf = browser_get_pixbuf_icon (BROWSER_ICON_GRID);
-	gtk_button_set_image (GTK_BUTTON (button), gtk_image_new_from_pixbuf (pixbuf));
-
-	gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (button), TRUE);
-	gtk_box_pack_start (GTK_BOX (hbox), button, FALSE, TRUE, 0);
-	gtk_widget_show (button);
-	g_signal_connect (G_OBJECT (button), "toggled",
-			  G_CALLBACK (form_grid_toggled_cb), formgrid);
-	gtk_widget_set_tooltip_text (button, _("Toggle between grid and form presentations"));
-
 	/* button to toggle between auto update and not */
 	button = gtk_toggle_button_new ();
 	GtkWidget *img = gtk_image_new_from_stock (GTK_STOCK_EXECUTE, GTK_ICON_SIZE_MENU);
@@ -270,13 +259,46 @@ ui_formgrid_init (UiFormGrid *formgrid)
 			  G_CALLBACK (form_grid_autoupdate_cb), formgrid);
 	gtk_widget_set_tooltip_text (button, _("Enable or disable auto update of data"));
 
+	/* Proxy info */
 	formgrid->priv->info = gdaui_data_proxy_info_new (GDAUI_DATA_PROXY (formgrid->priv->raw_grid), 
 							  formgrid->priv->flags |
 							  GDAUI_DATA_PROXY_INFO_CURRENT_ROW |
 							  GDAUI_DATA_PROXY_INFO_CHUNCK_CHANGE_BUTTONS);
+
+	GtkUIManager *uimanager;
+	GtkActionGroup *agroup;
+	GtkAction *action;
+	guint mid;
+	
+	g_object_get (G_OBJECT (formgrid->priv->info), "ui-manager", &uimanager, NULL);
+	agroup = gtk_action_group_new ("FormGrid");
+	gtk_action_group_set_translation_domain (agroup, GETTEXT_PACKAGE);
+
+	action = GTK_ACTION (gtk_toggle_action_new ("FGToggle", "FGToggle",
+						    _("Toggle between grid and form presentations"),
+						    BROWSER_STOCK_GRID));
+	gtk_toggle_action_set_active (GTK_TOGGLE_ACTION (action), TRUE);
+	gtk_action_group_add_action (agroup, action);
+	g_signal_connect (G_OBJECT (action), "toggled",
+			  G_CALLBACK (form_grid_toggled_cb), formgrid);
+	g_object_unref (action);
+	gtk_ui_manager_insert_action_group (uimanager, agroup, 0);
+	g_object_unref (agroup);
+
+	mid = gtk_ui_manager_new_merge_id (uimanager);
+	gtk_ui_manager_add_ui (uimanager, mid, "/ToolBar", "FGToggle", "FGToggle",
+			       GTK_UI_MANAGER_AUTO, TRUE);
+	gtk_ui_manager_ensure_update (uimanager);
 	gtk_box_pack_start (GTK_BOX (hbox), formgrid->priv->info, TRUE, TRUE, 0);
 	gtk_widget_show (formgrid->priv->info);
 
+
+	/*gchar *tmp;
+	g_object_get (uimanager, "ui", &tmp, NULL);
+	g_print ("==>[%s]\n", tmp);
+	g_free (tmp);
+	*/
+
 	/* keep data in sync */
 	g_signal_connect (formgrid->priv->raw_grid, "selection-changed",
 			  G_CALLBACK (selection_changed_cb), formgrid);
@@ -314,9 +336,9 @@ form_grid_autoupdate_cb (GtkToggleButton *button, UiFormGrid *formgrid)
 }
 
 static void
-form_grid_toggled_cb (GtkToggleButton *button, UiFormGrid *formgrid)
+form_grid_toggled_cb (GtkToggleAction *action, UiFormGrid *formgrid)
 {
-	if (!gtk_toggle_button_get_active (button)) {
+	if (!gtk_toggle_action_get_active (action)) {
 		/* switch to form  view */
 		gtk_notebook_set_current_page (GTK_NOTEBOOK (formgrid->priv->nb), 1);
 		g_object_set (G_OBJECT (formgrid->priv->info),
@@ -327,8 +349,7 @@ form_grid_toggled_cb (GtkToggleButton *button, UiFormGrid *formgrid)
 				GDAUI_DATA_PROXY_INFO_ROW_MODIFY_BUTTONS |
 				GDAUI_DATA_PROXY_INFO_ROW_MOVE_BUTTONS*/, NULL);
 
-		GdkPixbuf *pixbuf = browser_get_pixbuf_icon (BROWSER_ICON_FORM);
-		gtk_button_set_image (GTK_BUTTON (button), gtk_image_new_from_pixbuf (pixbuf));
+		g_object_set (G_OBJECT (action), "stock-id", BROWSER_STOCK_FORM, NULL);
 	}
 	else {
 		/* switch to grid view */
@@ -341,8 +362,7 @@ form_grid_toggled_cb (GtkToggleButton *button, UiFormGrid *formgrid)
 				GDAUI_DATA_PROXY_INFO_ROW_MODIFY_BUTTONS |
 				GDAUI_DATA_PROXY_INFO_CHUNCK_CHANGE_BUTTONS*/, NULL);
 
-		GdkPixbuf *pixbuf = browser_get_pixbuf_icon (BROWSER_ICON_GRID);
-		gtk_button_set_image (GTK_BUTTON (button), gtk_image_new_from_pixbuf (pixbuf));
+		g_object_set (G_OBJECT (action), "stock-id", BROWSER_STOCK_GRID, NULL);
 	}
 }
 
diff --git a/tools/browser/data/Makefile.am b/tools/browser/data/Makefile.am
index dc306d8..20f4568 100644
--- a/tools/browser/data/Makefile.am
+++ b/tools/browser/data/Makefile.am
@@ -14,6 +14,8 @@ private_icons = \
 	hicolor_actions_22x22_bookmark-view.png \
 	hicolor_actions_22x22_history-view.png \
 	hicolor_actions_22x22_glade.png \
+	hicolor_actions_22x22_grid.png \
+	hicolor_actions_22x22_form.png \
 	hicolor_actions_24x24_bookmark-view.png \
 	hicolor_actions_24x24_history-view.png \
 	hicolor_actions_24x24_transaction-begin.png \
diff --git a/tools/browser/gda-browser-form.png b/tools/browser/data/hicolor_actions_22x22_form.png
similarity index 100%
rename from tools/browser/gda-browser-form.png
rename to tools/browser/data/hicolor_actions_22x22_form.png
diff --git a/tools/browser/gda-browser-grid.png b/tools/browser/data/hicolor_actions_22x22_grid.png
similarity index 100%
rename from tools/browser/gda-browser-grid.png
rename to tools/browser/data/hicolor_actions_22x22_grid.png
diff --git a/tools/browser/support.c b/tools/browser/support.c
index 3fcb7a4..e3609f4 100644
--- a/tools/browser/support.c
+++ b/tools/browser/support.c
@@ -390,8 +390,6 @@ browser_get_pixbuf_icon (BrowserIconType type)
 		"gda-browser-diagram.png",
 		"gda-browser-query.png",
 		"gda-browser-action.png",
-		"gda-browser-grid.png",
-		"gda-browser-form.png",
 		"gda-browser-menu-ind.png",
 		"gda-browser-ldap-entry.png",
 		"gda-browser-ldap-group.png",
diff --git a/tools/browser/support.h b/tools/browser/support.h
index f019ef9..06858e6 100644
--- a/tools/browser/support.h
+++ b/tools/browser/support.h
@@ -75,9 +75,6 @@ typedef enum {
 	BROWSER_ICON_QUERY,
 	BROWSER_ICON_ACTION,
 	
-	BROWSER_ICON_GRID,
-	BROWSER_ICON_FORM,
-
 	BROWSER_ICON_MENU_INDICATOR,
 
 	BROWSER_ICON_LDAP_ENTRY,



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