[libgda] Tools: modifications to get rid of deprecated API
- From: Vivien Malerba <vivien src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [libgda] Tools: modifications to get rid of deprecated API
- Date: Wed, 8 Jul 2015 13:40:27 +0000 (UTC)
commit 50c989b57bc53211008f79266d1e7d32e1717d1d
Author: Vivien Malerba <malerba gnome-db org>
Date: Wed Jul 8 15:21:37 2015 +0200
Tools: modifications to get rid of deprecated API
control-center/gdaui-bar.c | 13 +
control-center/gdaui-bar.h | 3 +-
tools/browser/Makefile.am | 4 +-
tools/browser/browser-page.c | 52 ++--
tools/browser/browser-page.h | 12 +-
tools/browser/browser-perspective.c | 238 ++++++++---------
tools/browser/browser-perspective.h | 32 +--
tools/browser/browser-window.c | 47 +---
tools/browser/browser-window.h | 4 -
tools/browser/canvas/browser-canvas-db-relations.c | 16 +-
tools/browser/canvas/browser-canvas-text.c | 12 +-
tools/browser/canvas/browser-canvas.c | 15 +-
tools/browser/data-manager/data-console.c | 110 ++++-----
.../browser/data-manager/data-favorite-selector.c | 2 -
.../data-manager/data-manager-perspective.c | 81 ++-----
tools/browser/data-manager/data-source.c | 2 +-
.../browser/dummy-perspective/dummy-perspective.c | 113 +++------
tools/browser/ldap-browser/entry-properties.c | 8 +-
.../ldap-browser/ldap-browser-perspective.c | 86 ++-----
tools/browser/ldap-browser/ldap-classes-page.c | 150 +++++------
tools/browser/ldap-browser/ldap-entries-page.c | 150 +++++------
tools/browser/ldap-browser/ldap-search-page.c | 223 +++--------------
tools/browser/ldap-browser/vtable-dialog.c | 6 +-
tools/browser/query-exec/query-console-page.c | 130 ++++------
tools/browser/query-exec/query-exec-perspective.c | 82 ++-----
tools/browser/query-exec/query-result.c | 6 +-
tools/browser/schema-browser/relations-diagram.c | 77 +++----
.../schema-browser/schema-browser-perspective.c | 85 ++-----
tools/browser/schema-browser/table-info.c | 134 ++++++-----
tools/browser/text-search.c | 10 +-
tools/browser/ui-customize.c | 269 ++++++++++++++++++++
tools/browser/ui-customize.h | 39 +++
tools/browser/ui-formgrid.c | 3 +-
tools/browser/ui-support.c | 2 +-
tools/browser/widget-overlay.c | 9 +-
35 files changed, 1018 insertions(+), 1207 deletions(-)
---
diff --git a/control-center/gdaui-bar.c b/control-center/gdaui-bar.c
index cb9bc2d..60574ad 100644
--- a/control-center/gdaui-bar.c
+++ b/control-center/gdaui-bar.c
@@ -413,6 +413,19 @@ gdaui_bar_set_icon_from_pixbuf (GdauiBar *bar, GdkPixbuf *pixbuf)
}
/**
+ * gdaui_bar_set_icon_from_icon_name:
+ */
+void
+gdaui_bar_set_icon_from_icon_name (GdauiBar *bar, const gchar *icon_name)
+{
+ g_return_if_fail (GDAUI_IS_BAR (bar));
+ g_return_if_fail (icon_name);
+
+ gtk_image_set_from_icon_name (GTK_IMAGE (bar->priv->icon), icon_name, GTK_ICON_SIZE_SMALL_TOOLBAR);
+ gdaui_bar_set_show_icon (bar, TRUE);
+}
+
+/**
* gdaui_bar_set_show_icon
* @bar: a #GdauiBar widget.
* @show: whether to show the icon or not.
diff --git a/control-center/gdaui-bar.h b/control-center/gdaui-bar.h
index 704ddd7..91f8a44 100644
--- a/control-center/gdaui-bar.h
+++ b/control-center/gdaui-bar.h
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2012 - 2014 Vivien Malerba <malerba gnome-db org>
+ * Copyright (C) 2009 - 2015 Vivien Malerba <malerba gnome-db org>
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
@@ -59,6 +59,7 @@ void gdaui_bar_set_text (GdauiBar *bar, const gchar *te
void gdaui_bar_set_icon_from_file (GdauiBar *bar, const gchar *file);
void gdaui_bar_set_icon_from_resource (GdauiBar *bar, const gchar *resource_name);
void gdaui_bar_set_icon_from_pixbuf (GdauiBar *bar, GdkPixbuf *pixbuf);
+void gdaui_bar_set_icon_from_icon_name (GdauiBar *bar, const gchar *icon_name);
void gdaui_bar_set_show_icon (GdauiBar *bar, gboolean show);
gboolean gdaui_bar_get_show_icon (GdauiBar *bar);
diff --git a/tools/browser/Makefile.am b/tools/browser/Makefile.am
index 8e706a2..ca9ebe4 100644
--- a/tools/browser/Makefile.am
+++ b/tools/browser/Makefile.am
@@ -75,7 +75,9 @@ libbrowsercore_la_SOURCES=\
ui-formgrid.h \
ui-formgrid.c \
text-search.h \
- text-search.c
+ text-search.c \
+ ui-customize.h \
+ ui-customize.c
$(OBJECTS): marshal.c marshal.h
diff --git a/tools/browser/browser-page.c b/tools/browser/browser-page.c
index b95ccae..fb8e3d6 100644
--- a/tools/browser/browser-page.c
+++ b/tools/browser/browser-page.c
@@ -19,6 +19,8 @@
#include "browser-page.h"
#include "browser-perspective.h"
+#include "ui-customize.h"
+
static GRecMutex init_rmutex;
#define MUTEX_LOCK() g_rec_mutex_lock(&init_rmutex)
#define MUTEX_UNLOCK() g_rec_mutex_unlock(&init_rmutex)
@@ -66,43 +68,41 @@ browser_page_class_init (G_GNUC_UNUSED gpointer g_class)
}
/**
- * browser_page_get_actions_group
+ * browser_page_customize:
* @page: an object implementing the #BrowserPage interface
+ * @toolbar: (allow-none):
+ * @header: (allow-none):
*
- * Get the #GtkActionGroup from a @page to represent its specific actions.
- *
- * Returns: a new #GtkActionGroup
+ * Add optional custom UI elements to @toolbar, @header and @menu. any call to the
+ * browser_page_uncustomize() function will undo all the customizations to
+ * these elements.
*/
-GtkActionGroup *
-browser_page_get_actions_group (BrowserPage *page)
+void
+browser_page_customize (BrowserPage *page, GtkToolbar *toolbar, GtkHeaderBar *header)
{
- g_return_val_if_fail (IS_BROWSER_PAGE (page), NULL);
-
- if (BROWSER_PAGE_GET_CLASS (page)->i_get_actions_group)
- return (BROWSER_PAGE_GET_CLASS (page)->i_get_actions_group) (page);
- else
- return NULL;
+ g_return_if_fail (IS_BROWSER_PAGE (page));
+ if (BROWSER_PAGE_GET_CLASS (page)->i_customize)
+ (BROWSER_PAGE_GET_CLASS (page)->i_customize) (page, toolbar, header);
}
/**
- * browser_page_get_actions_ui
+ * browser_page_uncustomize:
* @page: an object implementing the #BrowserPage interface
*
- * Get the UI definition from @page to represent how its specific actions (obtained
- * using browser_page_get_actions_group()) are to be integrated in a #BrowserWindow's menu
- * and toolbar.
- *
- * Returns: a read-only string
+ * Remove any optional custom UI elements which have been added
+ * when browser_page_customize() was called.
*/
-const gchar *
-browser_page_get_actions_ui (BrowserPage *page)
+void
+browser_page_uncustomize (BrowserPage *page)
{
- g_return_val_if_fail (IS_BROWSER_PAGE (page), NULL);
-
- if (BROWSER_PAGE_GET_CLASS (page)->i_get_actions_ui)
- return (BROWSER_PAGE_GET_CLASS (page)->i_get_actions_ui) (page);
- else
- return NULL;
+ g_return_if_fail (IS_BROWSER_PAGE (page));
+ if (BROWSER_PAGE_GET_CLASS (page)->i_uncustomize)
+ (BROWSER_PAGE_GET_CLASS (page)->i_uncustomize) (page);
+ else {
+ g_print ("Default browser_page_uncustomize for %s\n", G_OBJECT_CLASS_NAME (G_OBJECT_GET_CLASS
(page)));
+ if (customization_data_exists (G_OBJECT (page)))
+ customization_data_release (G_OBJECT (page));
+ }
}
/**
diff --git a/tools/browser/browser-page.h b/tools/browser/browser-page.h
index aa67856..49b95ca 100644
--- a/tools/browser/browser-page.h
+++ b/tools/browser/browser-page.h
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2009 - 2014 Vivien Malerba <malerba gnome-db org>
+ * Copyright (C) 2009 - 2015 Vivien Malerba <malerba gnome-db org>
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
@@ -34,8 +34,9 @@ struct _BrowserPageIface {
GTypeInterface g_iface;
/* virtual table */
- GtkActionGroup *(* i_get_actions_group) (BrowserPage *page);
- const gchar *(* i_get_actions_ui) (BrowserPage *page);
+ void (* i_customize) (BrowserPage *page, GtkToolbar *toolbar, GtkHeaderBar *header);
+ void (* i_uncustomize) (BrowserPage *page);
+
GtkWidget *(* i_get_tab_label) (BrowserPage *page, GtkWidget **out_close_button);
};
@@ -54,8 +55,9 @@ struct _BrowserPageIface {
GType browser_page_get_type (void) G_GNUC_CONST;
-GtkActionGroup *browser_page_get_actions_group (BrowserPage *page);
-const gchar *browser_page_get_actions_ui (BrowserPage *page);
+void browser_page_customize (BrowserPage *page, GtkToolbar *toolbar, GtkHeaderBar
*header);
+void browser_page_uncustomize (BrowserPage *page);
+
BrowserPerspective *browser_page_get_perspective (BrowserPage *page);
GtkWidget *browser_page_get_tab_label (BrowserPage *page, GtkWidget **out_close_button);
diff --git a/tools/browser/browser-perspective.c b/tools/browser/browser-perspective.c
index 50b3243..02be830 100644
--- a/tools/browser/browser-perspective.c
+++ b/tools/browser/browser-perspective.c
@@ -22,6 +22,7 @@
#include "browser-page.h"
#include "browser-window.h"
#include "ui-support.h"
+#include "ui-customize.h"
#include <string.h>
#include "schema-browser/perspective-main.h"
@@ -83,196 +84,181 @@ browser_perspective_class_init (G_GNUC_UNUSED gpointer g_class)
* @perspective: an object implementing the #BrowserPerspective interface
* @toolbar: (allow-none):
* @header: (allow-none):
- * @menu: (allow-none):
*
* Add optional custom UI elements to @toolbar, @header and @menu. any call to the
* browser_perspective_uncustomize() function will undo all the customizations to
* these elements
*/
void
-browser_perspective_customize (BrowserPerspective *perspective, GtkToolbar *toolbar,
- GtkHeaderBar *header, GMenu *menu)
+browser_perspective_customize (BrowserPerspective *perspective, GtkToolbar *toolbar, GtkHeaderBar *header)
{
g_return_if_fail (IS_BROWSER_PERSPECTIVE (perspective));
- g_print ("%s (%p)\n", __FUNCTION__, perspective);
if (BROWSER_PERSPECTIVE_GET_CLASS (perspective)->i_customize)
- (BROWSER_PERSPECTIVE_GET_CLASS (perspective)->i_customize) (perspective, toolbar, header,
menu);
+ (BROWSER_PERSPECTIVE_GET_CLASS (perspective)->i_customize) (perspective, toolbar, header);
+
+ /* Current BrowserPage */
+ GtkNotebook *nb;
+ nb = (GtkNotebook*) browser_perspective_get_notebook (perspective);
+ if (nb) {
+ gint current_index;
+ current_index = gtk_notebook_get_current_page (nb);
+ if (current_index >= 0) {
+ GtkWidget *current_page;
+ current_page = gtk_notebook_get_nth_page (nb, current_index);
+ if (current_page && IS_BROWSER_PAGE (current_page))
+ browser_page_customize (BROWSER_PAGE (current_page), toolbar, header);
+ }
+ }
}
/**
* browser_perspective_uncustomize:
* @perspective: an object implementing the #BrowserPerspective interface
- * @toolbar: (allow-none):
- * @header: (allow-none):
- * @menu: (allow-none):
*
- * Remove any optional custom UI elements to @toolbar, @header and @menu which have been added
+ * Remove any optional custom UI elements which have been added
* when browser_perspective_customize() was called.
*/
void
-browser_perspective_uncustomize (BrowserPerspective *perspective, GtkToolbar *toolbar,
- GtkHeaderBar *header, GMenu *menu)
+browser_perspective_uncustomize (BrowserPerspective *perspective)
{
g_return_if_fail (IS_BROWSER_PERSPECTIVE (perspective));
- g_print ("%s (%p)\n", __FUNCTION__, perspective);
+
+ /* Current BrowserPage */
+ GtkNotebook *nb;
+ nb = (GtkNotebook*) browser_perspective_get_notebook (perspective);
+ if (nb) {
+ gint current_index;
+ current_index = gtk_notebook_get_current_page (nb);
+ if (current_index >= 0) {
+ GtkWidget *current_page;
+ current_page = gtk_notebook_get_nth_page (nb, current_index);
+ if (current_page && IS_BROWSER_PAGE (current_page))
+ browser_page_uncustomize (BROWSER_PAGE (current_page));
+ }
+ }
+
if (BROWSER_PERSPECTIVE_GET_CLASS (perspective)->i_uncustomize)
- (BROWSER_PERSPECTIVE_GET_CLASS (perspective)->i_uncustomize) (perspective, toolbar, header,
menu);
+ (BROWSER_PERSPECTIVE_GET_CLASS (perspective)->i_uncustomize) (perspective);
+ else {
+ g_print ("Default browser_perspective_uncustomize for %s\n",
+ G_OBJECT_CLASS_NAME (G_OBJECT_GET_CLASS (perspective)));
+ if (customization_data_exists (G_OBJECT (perspective)))
+ customization_data_release (G_OBJECT (perspective));
+ }
}
/**
- * browser_perspective_page_tab_label_change:
+ * browser_perspective_get_window:
* @perspective: an object implementing the #BrowserPerspective interface
- * @page: an object implementing the #BrowserPage interface
*
- * When @perspective organizes its contents as pages in a notebook, each page may
- * request that the tab's label may be changed, and the purpose of this method
- * is to request that @perspective update the tab's label associated to @page.
+ * Returns: (transfer none): the #BrowserWindow @perspective is in
*/
-void
-browser_perspective_page_tab_label_change (BrowserPerspective *perspective, BrowserPage *page)
+BrowserWindow *
+browser_perspective_get_window (BrowserPerspective *perspective)
{
- g_return_if_fail (IS_BROWSER_PERSPECTIVE (perspective));
- g_return_if_fail (IS_BROWSER_PAGE (page));
-
- if (BROWSER_PERSPECTIVE_GET_CLASS (perspective)->i_page_tab_label_change)
- (BROWSER_PERSPECTIVE_GET_CLASS (perspective)->i_page_tab_label_change) (perspective, page);
+ g_return_val_if_fail (IS_BROWSER_PERSPECTIVE (perspective), NULL);
+ return (BrowserWindow*) ui_find_parent_widget (GTK_WIDGET (perspective), BROWSER_TYPE_WINDOW);
}
/**
- * browser_perspective_get_window:
+ * browser_perspective_get_notebook:
* @perspective: an object implementing the #BrowserPerspective interface
*
- * Returns: (transfer none): the #BrowserWindow @perspective is in
+ * Returns: (transfer none): the #GtkWidget which acts a a notebook for #BrowserPage widgets
*/
-BrowserWindow *
-browser_perspective_get_window (BrowserPerspective *perspective)
+GtkWidget *
+browser_perspective_get_notebook (BrowserPerspective *perspective)
{
g_return_val_if_fail (IS_BROWSER_PERSPECTIVE (perspective), NULL);
- if (BROWSER_PERSPECTIVE_GET_CLASS (perspective)->i_get_window)
- return (BROWSER_PERSPECTIVE_GET_CLASS (perspective)->i_get_window) (perspective);
+ if (BROWSER_PERSPECTIVE_GET_CLASS (perspective)->i_get_notebook)
+ return (BROWSER_PERSPECTIVE_GET_CLASS (perspective)->i_get_notebook) (perspective);
else
- return (BrowserWindow*) ui_find_parent_widget (GTK_WIDGET (perspective), BROWSER_TYPE_WINDOW);
+ return NULL;
}
-static void nb_page_added_or_removed_cb (GtkNotebook *nb, GtkWidget *child, guint page_num,
- BrowserPerspective *perspective);
-static void nb_switch_page_cb (GtkNotebook *nb, GtkWidget *page, gint page_num,
- BrowserPerspective *perspective);
-static void adapt_notebook_for_fullscreen (BrowserPerspective *perspective);;
-static void fullscreen_changed_cb (BrowserWindow *bwin, gboolean fullscreen, BrowserPerspective
*perspective);
+static void notebook_switch_page_cb (GtkNotebook *nb, GtkWidget *page, gint pagenb, BrowserPerspective
*bpers);
+static void notebook_remove_page_cb (GtkNotebook *nb, GtkWidget *page, gint pagenb, BrowserPerspective
*bpers);
+static void notebook_destroy_cb (GtkNotebook *nb, BrowserPerspective *bpers);
/**
- * browser_perspective_declare_notebook:
- * @pers: an object implementing the #BrowserPerspective interface
- * @nb: a #GtkNotebook
+ * browser_perspective_create_notebook:
+ * @perspective: an object implementing the #BrowserPerspective interface
*
- * Internally used by browser's perspectives to declare they internally use a notebook
- * which state is modified when switching to and from fullscreen
+ * Creates a #GtkNotebook to hold #BrowserPage widgets in each page. It handles the customization (header
and tool bars)
+ * when pages are toggles.
+ *
+ * Returns: (transfer full): a new #GtkNotebook
*/
-void
-browser_perspective_declare_notebook (BrowserPerspective *perspective, GtkNotebook *nb)
+GtkWidget *
+browser_perspective_create_notebook (BrowserPerspective *perspective)
{
- BrowserWindow *bwin;
- g_return_if_fail (IS_BROWSER_PERSPECTIVE (perspective));
- g_return_if_fail (! nb || GTK_IS_NOTEBOOK (nb));
-
- bwin = browser_perspective_get_window (perspective);
- if (!bwin)
- return;
+ g_return_val_if_fail (IS_BROWSER_PERSPECTIVE (perspective), NULL);
- g_print ("REMOVE THIS FUNCTION: %s()\n", __FUNCTION__);
- GtkNotebook *onb;
- onb = g_object_get_data (G_OBJECT (perspective), "fullscreen_nb");
- if (onb) {
- g_signal_handlers_disconnect_by_func (onb,
- G_CALLBACK (nb_page_added_or_removed_cb),
- perspective);
- g_signal_handlers_disconnect_by_func (onb,
- G_CALLBACK (nb_switch_page_cb),
- perspective);
- g_signal_handlers_disconnect_by_func (bwin,
- G_CALLBACK (fullscreen_changed_cb), perspective);
+ GtkWidget *nb;
+ nb = gtk_notebook_new ();
+ gtk_notebook_set_scrollable (GTK_NOTEBOOK (nb), TRUE);
+ gtk_notebook_popup_enable (GTK_NOTEBOOK (nb));
- }
+ g_signal_connect (nb, "destroy",
+ G_CALLBACK (notebook_destroy_cb), perspective);
+ g_signal_connect (nb, "switch-page",
+ G_CALLBACK (notebook_switch_page_cb), perspective);
+ g_signal_connect (nb, "page-removed",
+ G_CALLBACK (notebook_remove_page_cb), perspective);
- g_object_set_data (G_OBJECT (perspective), "fullscreen_nb", nb);
- if (nb) {
- g_signal_connect (bwin, "fullscreen-changed",
- G_CALLBACK (fullscreen_changed_cb), perspective);
- g_signal_connect (nb, "page-added",
- G_CALLBACK (nb_page_added_or_removed_cb), perspective);
- g_signal_connect (nb, "page-removed",
- G_CALLBACK (nb_page_added_or_removed_cb), perspective);
- g_signal_connect (nb, "switch-page",
- G_CALLBACK (nb_switch_page_cb), perspective);
- adapt_notebook_for_fullscreen (perspective);
- }
+ return nb;
}
static void
-nb_switch_page_cb (GtkNotebook *nb, G_GNUC_UNUSED GtkWidget *page, gint page_num, BrowserPerspective
*perspective)
+notebook_destroy_cb (GtkNotebook *nb, BrowserPerspective *bpers)
{
- GtkWidget *page_contents;
- GtkActionGroup *actions = NULL;
- const gchar *ui = NULL;
- BrowserWindow *bwin;
-
- page_contents = gtk_notebook_get_nth_page (nb, page_num);
- if (IS_BROWSER_PAGE (page_contents)) {
- actions = browser_page_get_actions_group (BROWSER_PAGE (page_contents));
- ui = browser_page_get_actions_ui (BROWSER_PAGE (page_contents));
- }
-
- bwin = browser_perspective_get_window (perspective);
- if (bwin)
- browser_window_customize_perspective_ui (bwin, perspective, actions, ui);
- if (actions)
- g_object_unref (actions);
+ g_signal_handlers_disconnect_by_func (nb,
+ G_CALLBACK (notebook_switch_page_cb), bpers);
+ g_signal_handlers_disconnect_by_func (nb,
+ G_CALLBACK (notebook_remove_page_cb), bpers);
+ g_print ("==== %s\n", __FUNCTION__);
}
static void
-nb_page_added_or_removed_cb (GtkNotebook *nb, G_GNUC_UNUSED GtkWidget *child, G_GNUC_UNUSED guint page_num,
- BrowserPerspective *perspective)
+notebook_switch_page_cb (GtkNotebook *nb, GtkWidget *page, gint pagenb, BrowserPerspective *bpers)
{
- adapt_notebook_for_fullscreen (perspective);
- if (gtk_notebook_get_n_pages (nb) == 0) {
- BrowserWindow *bwin;
- bwin = browser_perspective_get_window (perspective);
- if (!bwin)
- return;
- browser_window_customize_perspective_ui (bwin,
- BROWSER_PERSPECTIVE (perspective),
- NULL, NULL);
+ if (customization_data_exists (G_OBJECT (bpers))) {
+ gint current_index;
+ current_index = gtk_notebook_get_current_page (nb);
+ g_print ("\tNotebook, current page %d switching to %d\n", current_index, pagenb);
+ if (current_index >= 0) {
+ GtkWidget *current_page;
+ current_page = gtk_notebook_get_nth_page (nb, current_index);
+ if (current_page && IS_BROWSER_PAGE (current_page))
+ browser_page_uncustomize (BROWSER_PAGE (current_page));
+ }
+ if (pagenb >= 0) {
+ GtkWidget *next_page;
+ next_page = gtk_notebook_get_nth_page (nb, pagenb);
+ if (next_page && IS_BROWSER_PAGE (next_page))
+ browser_page_customize (BROWSER_PAGE (next_page),
+ customization_data_get_toolbar (G_OBJECT (bpers)),
+ customization_data_get_header_bar (G_OBJECT (bpers)));
+ }
}
}
static void
-fullscreen_changed_cb (G_GNUC_UNUSED BrowserWindow *bwin, G_GNUC_UNUSED gboolean fullscreen,
- BrowserPerspective *perspective)
+notebook_remove_page_cb (GtkNotebook *nb, GtkWidget *page, gint pagenb, BrowserPerspective *bpers)
{
- adapt_notebook_for_fullscreen (perspective);
+ if (customization_data_exists (G_OBJECT (bpers))) {
+ g_print ("\tNotebook, removing page %d\n", pagenb);
+ if (pagenb >= 0) {
+ GtkWidget *current_page;
+ current_page = gtk_notebook_get_nth_page (nb, pagenb);
+ if (current_page && IS_BROWSER_PAGE (current_page))
+ browser_page_uncustomize (BROWSER_PAGE (current_page));
+ }
+ }
}
-static void
-adapt_notebook_for_fullscreen (BrowserPerspective *perspective)
-{
- gboolean showtabs = TRUE;
- gboolean fullscreen;
- BrowserWindow *bwin;
- GtkNotebook *nb;
- bwin = browser_perspective_get_window (perspective);
- if (!bwin)
- return;
- nb = g_object_get_data (G_OBJECT (perspective), "fullscreen_nb");
- if (!nb)
- return;
- fullscreen = browser_window_is_fullscreen (bwin);
- if (fullscreen && gtk_notebook_get_n_pages (nb) == 1)
- showtabs = FALSE;
- gtk_notebook_set_show_tabs (nb, showtabs);
-}
/*
* All perspectives information
diff --git a/tools/browser/browser-perspective.h b/tools/browser/browser-perspective.h
index 71021cd..33873a6 100644
--- a/tools/browser/browser-perspective.h
+++ b/tools/browser/browser-perspective.h
@@ -34,20 +34,13 @@ typedef struct _BrowserPerspective BrowserPerspective;
/* struct for the interface */
struct _BrowserPerspectiveIface {
- GTypeInterface g_iface;
+ GTypeInterface g_iface;
/* virtual table */
- BrowserWindow *(* i_get_window) (BrowserPerspective *perspective);
- void (* i_customize) (BrowserPerspective *perspective, GtkToolbar *toolbar,
- GtkHeaderBar *header, GMenu *menu);
- void (* i_uncustomize) (BrowserPerspective *perspective, GtkToolbar *toolbar,
- GtkHeaderBar *header, GMenu *menu);
- GtkActionGroup *(* i_get_actions_group) (BrowserPerspective *perspective);
- const gchar *(* i_get_actions_ui) (BrowserPerspective *perspective);
- void (* i_get_current_customization) (BrowserPerspective *perspective,
- GtkActionGroup **out_agroup,
- const gchar **out_ui);
- void (* i_page_tab_label_change) (BrowserPerspective *perspective, BrowserPage *page);
+ GtkWidget *(* i_get_notebook) (BrowserPerspective *perspective);
+
+ void (* i_customize) (BrowserPerspective *perspective, GtkToolbar *toolbar,
GtkHeaderBar *header);
+ void (* i_uncustomize) (BrowserPerspective *perspective);
};
/**
@@ -63,16 +56,15 @@ struct _BrowserPerspectiveIface {
GType browser_perspective_get_type (void) G_GNUC_CONST;
-void browser_perspective_customize (BrowserPerspective *perspective,
- GtkToolbar *toolbar, GtkHeaderBar *header, GMenu
*menu);
-void browser_perspective_uncustomize (BrowserPerspective *perspective,
- GtkToolbar *toolbar, GtkHeaderBar *header, GMenu
*menu);
+void browser_perspective_customize (BrowserPerspective *perspective,
+ GtkToolbar *toolbar, GtkHeaderBar *header);
+void browser_perspective_uncustomize (BrowserPerspective *perspective);
-void browser_perspective_page_tab_label_change (BrowserPerspective *perspective,
- BrowserPage *page);
+BrowserWindow *browser_perspective_get_window (BrowserPerspective *perspective);
+GtkWidget *browser_perspective_get_notebook (BrowserPerspective *perspective);
-BrowserWindow *browser_perspective_get_window (BrowserPerspective *perspective);
-void browser_perspective_declare_notebook (BrowserPerspective *perspective, GtkNotebook *nb);
+/* reserved for BrowserPerspective implementations */
+GtkWidget *browser_perspective_create_notebook (BrowserPerspective *perspective);
/*
* All perspectives information
diff --git a/tools/browser/browser-window.c b/tools/browser/browser-window.c
index 5e38988..458cae5 100644
--- a/tools/browser/browser-window.c
+++ b/tools/browser/browser-window.c
@@ -29,8 +29,6 @@
#include <thread-wrapper/gda-connect.h>
#include "browser-connections-list.h"
-#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
-
/*
* structure representing a 'tab' in a window
*
@@ -467,8 +465,7 @@ browser_window_new (TConnection *tcnc, BrowserPerspectiveFactory *factory)
/* customize currect perspective */
browser_perspective_customize (bwin->priv->current_perspective->perspective_widget,
- bwin->priv->toolbar, bwin->priv->header,
- G_MENU (gtk_application_get_menubar (GTK_APPLICATION (t_app_get ()))));
+ bwin->priv->toolbar, bwin->priv->header);
return bwin;
}
@@ -496,7 +493,6 @@ fullscreen_cb (G_GNUC_UNUSED GSimpleAction *action, GVariant *state, gpointer da
static void
cnc_status_changed_cb (TConnection *tcnc, GdaConnectionStatus status, BrowserWindow *bwin)
{
- GtkAction *action;
gchar *reason = "AAAA";
gboolean is_busy;
is_busy = (status == GDA_CONNECTION_STATUS_IDLE) ? FALSE : TRUE;
@@ -1009,7 +1005,7 @@ browser_window_show_notice (BrowserWindow *bwin, GtkMessageType type, const gcha
/* use a GtkInfoBar */
GtkWidget *ibar, *content_area, *label;
- ibar = gtk_info_bar_new_with_buttons (GTK_STOCK_CLOSE, 1, NULL);
+ ibar = gtk_info_bar_new_with_buttons (_("_Close"), 1, NULL);
if (context)
g_object_set_data_full (G_OBJECT (ibar), "context", g_strdup (context), g_free);
if (text)
@@ -1045,38 +1041,6 @@ browser_window_show_notice (BrowserWindow *bwin, GtkMessageType type, const gcha
}
}
-
-/**
- * browser_window_customize_perspective_ui
- * @bwin: a #BrowserWindow
- * @bpers: the #BrowserPerspective concerned
- * @actions_group: (allow-none): a #GtkActionGroup object, or %NULL
- * @ui_info: (allow-none): a merge UI string, or %NULL. See gtk_ui_manager_add_ui_from_string()
- *
- * Customizes a UI specific to the @bpers perspective. Any
- * previous customization is removed, replaced by the new requested one.
- *
- * If @actions_group is %NULL then any it simply removes the customization.
- */
-void
-browser_window_customize_perspective_ui (BrowserWindow *bwin, BrowserPerspective *bpers,
- GtkActionGroup *actions_group,
- const gchar *ui_info)
-{
- PerspectiveData *pdata = NULL;
- GSList *list;
-
- g_return_if_fail (BROWSER_IS_WINDOW (bwin));
- g_return_if_fail (IS_BROWSER_PERSPECTIVE (bpers));
-
- for (list = bwin->priv->pers_list; list; list = list->next) {
- if (PERSPECTIVE_DATA (list->data)->perspective_widget == bpers) {
- pdata = PERSPECTIVE_DATA (list->data);
- break;
- }
- }
-}
-
/**
* browser_window_change_perspective
* @bwin: a #BrowserWindow
@@ -1103,9 +1067,7 @@ browser_window_change_perspective (BrowserWindow *bwin, const gchar *perspective
return current_pdata->perspective_widget;
/* clean ups for current perspective */
- browser_perspective_uncustomize (bwin->priv->current_perspective->perspective_widget,
- bwin->priv->toolbar, bwin->priv->header,
- G_MENU (gtk_application_get_menubar (GTK_APPLICATION
(t_app_get ()))));
+ browser_perspective_uncustomize (bwin->priv->current_perspective->perspective_widget);
}
/* find factory */
@@ -1137,8 +1099,7 @@ browser_window_change_perspective (BrowserWindow *bwin, const gchar *perspective
}
gtk_stack_set_visible_child (bwin->priv->pers_stack, GTK_WIDGET (bpers));
browser_perspective_customize (bpers,
- bwin->priv->toolbar, bwin->priv->header,
- G_MENU (gtk_application_get_menubar (GTK_APPLICATION (t_app_get ()))));
+ bwin->priv->toolbar, bwin->priv->header);
bwin->priv->current_perspective = pdata;
/* setup for the new perspective */
diff --git a/tools/browser/browser-window.h b/tools/browser/browser-window.h
index a1a2c2b..360aa18 100644
--- a/tools/browser/browser-window.h
+++ b/tools/browser/browser-window.h
@@ -75,10 +75,6 @@ void browser_window_show_notice (BrowserWindow *bwin,
void browser_window_show_notice_printf (BrowserWindow *bwin, GtkMessageType type,
const gchar *context, const gchar *format, ...);
-void browser_window_customize_perspective_ui (BrowserWindow *bwin, BrowserPerspective *bpers,
- GtkActionGroup *actions_group,
- const gchar *ui_info);
-
BrowserPerspective *browser_window_change_perspective (BrowserWindow *bwin, const gchar *perspective);
void browser_window_set_fullscreen (BrowserWindow *bwin, gboolean fullscreen);
diff --git a/tools/browser/canvas/browser-canvas-db-relations.c
b/tools/browser/canvas/browser-canvas-db-relations.c
index 249bcaa..8fcffe7 100644
--- a/tools/browser/canvas/browser-canvas-db-relations.c
+++ b/tools/browser/canvas/browser-canvas-db-relations.c
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2009 - 2014 Vivien Malerba <malerba gnome-db org>
+ * Copyright (C) 2009 - 2015 Vivien Malerba <malerba gnome-db org>
* Copyright (C) 2010 David King <davidk openismus com>
* Copyright (C) 2011 Murray Cumming <murrayc murrayc com>
*
@@ -31,7 +31,6 @@
#include <libgda-ui/internal/popup-container.h>
#include "../browser-window.h"
#include "../ui-support.h"
-#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
static void browser_canvas_db_relations_class_init (BrowserCanvasDbRelationsClass *class);
static void browser_canvas_db_relations_init (BrowserCanvasDbRelations *canvas);
@@ -651,7 +650,6 @@ build_context_menu (BrowserCanvas *canvas)
for (list = all_dbo; list; list = list->next) {
GdaMetaDbObject *dbo = GDA_META_DB_OBJECT (list->data);
- GtkWidget *img;
if (dbo->obj_type != GDA_META_DB_TABLE)
continue;
if (g_hash_table_lookup (dbrel->priv->hash_tables, dbo))
@@ -659,9 +657,7 @@ build_context_menu (BrowserCanvas *canvas)
continue;
if (strcmp (dbo->obj_short_name, dbo->obj_full_name)) {
- mitem = gtk_image_menu_item_new_with_label (dbo->obj_short_name);
- img = gtk_image_new_from_pixbuf (ui_get_pixbuf_icon (UI_ICON_TABLE));
- gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (mitem), img);
+ mitem = gtk_menu_item_new_with_label (dbo->obj_short_name);
g_object_set_data (G_OBJECT (mitem), "dbtable", GDA_META_TABLE (dbo));
gtk_menu_shell_prepend (GTK_MENU_SHELL (submenu), mitem);
g_signal_connect (mitem, "activate",
@@ -671,9 +667,7 @@ build_context_menu (BrowserCanvas *canvas)
GtkWidget *schema_menu;
schema_menu = g_hash_table_lookup (schemas, dbo->obj_schema);
if (!schema_menu) {
- mitem = gtk_image_menu_item_new_with_label (dbo->obj_schema);
- img = gtk_image_new_from_pixbuf (ui_get_pixbuf_icon (UI_ICON_SCHEMA));
- gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (mitem), img);
+ mitem = gtk_menu_item_new_with_label (dbo->obj_schema);
gtk_menu_shell_append (GTK_MENU_SHELL (submenu), mitem);
schema_menu = gtk_menu_new ();
@@ -683,9 +677,7 @@ build_context_menu (BrowserCanvas *canvas)
added_schemas = g_slist_prepend (added_schemas, schema_menu);
}
- mitem = gtk_image_menu_item_new_with_label (dbo->obj_short_name);
- img = gtk_image_new_from_pixbuf (ui_get_pixbuf_icon (UI_ICON_TABLE));
- gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (mitem), img);
+ mitem = gtk_menu_item_new_with_label (dbo->obj_short_name);
g_object_set_data (G_OBJECT (mitem), "dbtable", GDA_META_TABLE (dbo));
gtk_menu_shell_prepend (GTK_MENU_SHELL (schema_menu), mitem);
g_signal_connect (mitem, "activate",
diff --git a/tools/browser/canvas/browser-canvas-text.c b/tools/browser/canvas/browser-canvas-text.c
index b1b1679..e3724db 100644
--- a/tools/browser/canvas/browser-canvas-text.c
+++ b/tools/browser/canvas/browser-canvas-text.c
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2009 - 2014 Vivien Malerba <malerba gnome-db org>
+ * Copyright (C) 2009 - 2015 Vivien Malerba <malerba gnome-db org>
* Copyright (C) 2010 David King <davidk openismus com>
* Copyright (C) 2012 Murray Cumming <murrayc murrayc com>
*
@@ -449,7 +449,7 @@ void
browser_canvas_text_set_highlight (BrowserCanvasText *ct, gboolean highlight)
{
gchar *str_color;
- GdkColor gdk_color;
+ GdkRGBA gdk_rgba;
g_return_if_fail (ct && IS_BROWSER_CANVAS_TEXT (ct));
g_return_if_fail (ct->priv);
@@ -463,14 +463,14 @@ browser_canvas_text_set_highlight (BrowserCanvasText *ct, gboolean highlight)
}
str_color = highlight ? ct->priv->highlight_color : BROWSER_CANVAS_OBJ_BG_COLOR;
- if (gdk_color_parse (str_color, &gdk_color)) {
+ if (gdk_rgba_parse (&gdk_rgba, str_color)) {
guint col;
- col = ((guint) (gdk_color.red * 255. / 65535.0));
+ col = ((guint) (gdk_rgba.red * 255.));
ct->priv->end_anim_rgba = col << 24;
- col = ((guint) (gdk_color.green * 255. / 65535.0));
+ col = ((guint) (gdk_rgba.green * 255.));
ct->priv->end_anim_rgba += col << 16;
- col = ((guint) (gdk_color.blue * 255. / 65535.0));
+ col = ((guint) (gdk_rgba.blue * 255.));
ct->priv->end_anim_rgba += col << 8;
if (!ct->priv->current_anim_rgba)
ct->priv->current_anim_rgba = ct->priv->end_anim_rgba;
diff --git a/tools/browser/canvas/browser-canvas.c b/tools/browser/canvas/browser-canvas.c
index 955fc74..aabd494 100644
--- a/tools/browser/canvas/browser-canvas.c
+++ b/tools/browser/canvas/browser-canvas.c
@@ -27,7 +27,6 @@
#include "browser-canvas-print.h"
#include <libgda/libgda.h>
#include <libgda-ui/libgda-ui.h>
-#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
#define DEFAULT_SCALE .8
#ifdef HAVE_GRAPHVIZ
@@ -334,15 +333,15 @@ canvas_event_cb (BrowserCanvas *canvas, GdkEvent *event, GooCanvas *gcanvas)
gtk_widget_show (mitem);
gtk_menu_shell_append (GTK_MENU_SHELL (menu), mitem);
}
- mitem = gtk_image_menu_item_new_from_stock (GTK_STOCK_ZOOM_IN, NULL);
+ mitem = gtk_menu_item_new_with_label (_("Zoom in"));
gtk_widget_show (mitem);
gtk_menu_shell_append (GTK_MENU_SHELL (menu), mitem);
g_signal_connect (G_OBJECT (mitem), "activate", G_CALLBACK
(popup_zoom_in_cb), canvas);
- mitem = gtk_image_menu_item_new_from_stock (GTK_STOCK_ZOOM_OUT, NULL);
+ mitem = gtk_menu_item_new_with_label (_("Zoom out"));
gtk_widget_show (mitem);
gtk_menu_shell_append (GTK_MENU_SHELL (menu), mitem);
g_signal_connect (G_OBJECT (mitem), "activate", G_CALLBACK
(popup_zoom_out_cb), canvas);
- mitem = gtk_image_menu_item_new_from_stock (GTK_STOCK_ZOOM_FIT, NULL);
+ mitem = gtk_menu_item_new_with_label (_("Adjusted zoom"));
gtk_widget_show (mitem);
gtk_menu_shell_append (GTK_MENU_SHELL (menu), mitem);
g_signal_connect (G_OBJECT (mitem), "activate", G_CALLBACK
(popup_zoom_fit_cb), canvas);
@@ -367,12 +366,12 @@ canvas_event_cb (BrowserCanvas *canvas, GdkEvent *event, GooCanvas *gcanvas)
gtk_menu_shell_append (GTK_MENU_SHELL (menu), mitem);
#endif
- mitem = gtk_image_menu_item_new_from_stock (GTK_STOCK_SAVE_AS, NULL);
+ mitem = gtk_menu_item_new_with_label (_("Save as"));
gtk_widget_show (mitem);
gtk_menu_shell_append (GTK_MENU_SHELL (menu), mitem);
g_signal_connect (G_OBJECT (mitem), "activate", G_CALLBACK (popup_export_cb),
canvas);
- mitem = gtk_image_menu_item_new_from_stock (GTK_STOCK_PRINT, NULL);
+ mitem = gtk_menu_item_new_with_label (_("Print"));
gtk_widget_show (mitem);
g_signal_connect (G_OBJECT (mitem), "activate", G_CALLBACK (popup_print_cb),
canvas);
gtk_menu_shell_append (GTK_MENU_SHELL (menu), mitem);
@@ -466,8 +465,8 @@ popup_export_cb (G_GNUC_UNUSED GtkMenuItem *mitem, BrowserCanvas *canvas)
dlg = gtk_file_chooser_dialog_new (_("Save diagram as"), (GtkWindow*) toplevel,
GTK_FILE_CHOOSER_ACTION_SAVE,
- GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
- GTK_STOCK_SAVE, GTK_RESPONSE_ACCEPT,
+ _("_Cancel"), GTK_RESPONSE_CANCEL,
+ _("_Save"), GTK_RESPONSE_ACCEPT,
NULL);
gtk_file_chooser_set_current_folder (GTK_FILE_CHOOSER (dlg),
gdaui_get_default_path ());
diff --git a/tools/browser/data-manager/data-console.c b/tools/browser/data-manager/data-console.c
index 7414d9f..d8ccc23 100644
--- a/tools/browser/data-manager/data-console.c
+++ b/tools/browser/data-manager/data-console.c
@@ -26,6 +26,7 @@
#include "ui-spec-editor.h"
#include "../dnd.h"
#include "../ui-support.h"
+#include "../ui-customize.h"
#include "../gdaui-bar.h"
#include "../browser-window.h"
#include "../browser-page.h"
@@ -36,8 +37,7 @@
#include "data-source-manager.h"
#include <gdk/gdkkeysyms.h>
#include "analyser.h"
-
-#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
+#include <libgda/gda-debug-macros.h>
#define MAIN_PAGE_EDITORS 0
#define MAIN_PAGE_DATA 1
@@ -66,8 +66,6 @@ struct _DataConsolePrivate {
GtkWidget *xml_sped; /* in editors_notebook */
GtkWidget *ui_sped; /* in editors_notebook */
- GtkActionGroup *agroup;
-
gboolean toggling;
GtkToggleButton *params_toggle;
GtkWidget *params_top;
@@ -100,9 +98,8 @@ static void data_source_source_changed_cb (DataSourceManager *mgr, DataSource *s
/* BrowserPage interface */
static void data_console_page_init (BrowserPageIface *iface);
-static GtkActionGroup *data_console_page_get_actions_group (BrowserPage *page);
-static const gchar *data_console_page_get_actions_ui (BrowserPage *page);
-static GtkWidget *data_console_page_get_tab_label (BrowserPage *page, GtkWidget
**out_close_button);
+static void data_console_customize (BrowserPage *page, GtkToolbar *toolbar, GtkHeaderBar
*header);
+static GtkWidget *data_console_get_tab_label (BrowserPage *page, GtkWidget **out_close_button);
static GObjectClass *parent_class = NULL;
@@ -149,12 +146,14 @@ key_press_event (GtkWidget *widget, GdkEventKey *event)
dconsole = DATA_CONSOLE (widget);
if ((event->keyval == GDK_KEY_Escape) &&
(gtk_notebook_get_current_page (GTK_NOTEBOOK (dconsole->priv->main_notebook)) == MAIN_PAGE_DATA))
{
- if (dconsole->priv->agroup) {
- GtkAction *action;
- action = gtk_action_group_get_action (dconsole->priv->agroup, "ComposeMode");
- gtk_toggle_action_set_active (GTK_TOGGLE_ACTION (action), TRUE);
- return TRUE;
+ GAction *action;
+ action = customization_data_get_action (G_OBJECT (dconsole), "ComposeMode");
+ if (action) {
+ GVariant *value;
+ value = g_variant_new_boolean (TRUE);
+ g_simple_action_set_state (G_SIMPLE_ACTION (action), value);
}
+ return TRUE;
}
/* parent class */
@@ -164,9 +163,9 @@ key_press_event (GtkWidget *widget, GdkEventKey *event)
static void
data_console_page_init (BrowserPageIface *iface)
{
- iface->i_get_actions_group = data_console_page_get_actions_group;
- iface->i_get_actions_ui = data_console_page_get_actions_ui;
- iface->i_get_tab_label = data_console_page_get_tab_label;
+ iface->i_customize = data_console_customize;
+ iface->i_uncustomize = NULL;
+ iface->i_get_tab_label = data_console_get_tab_label;
}
static void
@@ -197,8 +196,6 @@ data_console_dispose (GObject *object)
gtk_widget_destroy (dconsole->priv->popup_container);
if (dconsole->priv->tcnc)
g_object_unref (dconsole->priv->tcnc);
- if (dconsole->priv->agroup)
- g_object_unref (dconsole->priv->agroup);
if (dconsole->priv->mgr) {
g_signal_handlers_disconnect_by_func (dconsole->priv->mgr,
G_CALLBACK (data_source_mgr_changed_cb),
@@ -520,12 +517,6 @@ data_console_set_fav_id (DataConsole *dconsole, gint fav_id, GError **error)
g_free (str);
dconsole->priv->fav_id = -1;
}
-
- /* update notebook's tab label */
- BrowserPerspective *pers;
- pers = browser_page_get_perspective (BROWSER_PAGE (dconsole));
- if (pers)
- browser_perspective_page_tab_label_change (pers, BROWSER_PAGE (dconsole));
}
/*
@@ -860,20 +851,23 @@ add_source_clicked_cb (G_GNUC_UNUSED GtkButton *button, DataConsole *dconsole)
* UI actions
*/
static void
-compose_mode_toggled_cb (G_GNUC_UNUSED GtkToggleAction *action, DataConsole *dconsole)
+compose_mode_toggled_cb (GSimpleAction *action, GVariant *state, gpointer data)
{
- gint pagenb;
+ DataConsole *dconsole;
+ dconsole = DATA_CONSOLE (data);
/* show variables if necessary */
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (dconsole->priv->params_toggle),
dconsole->priv->params_form &&
GDAUI_IS_BASIC_FORM (dconsole->priv->params_form) ? TRUE : FALSE);
+ g_simple_action_set_state (action, state);
if (dconsole->priv->toggling) {
dconsole->priv->toggling = FALSE;
return;
}
+ gint pagenb;
pagenb = gtk_notebook_get_current_page (GTK_NOTEBOOK (dconsole->priv->main_notebook));
if (pagenb == MAIN_PAGE_EDITORS) {
/* Get Data sources */
@@ -920,47 +914,33 @@ compose_mode_toggled_cb (G_GNUC_UNUSED GtkToggleAction *action, DataConsole *dco
gtk_notebook_set_current_page (GTK_NOTEBOOK (dconsole->priv->main_notebook), pagenb);
}
-static GtkToggleActionEntry ui_actions[] = {
- { "ComposeMode", NULL /*BROWSER_STOCK_BUILDER*/, N_("_Toggle mode"), NULL, N_("Switch between compose
and execute modes"),
- G_CALLBACK (compose_mode_toggled_cb), TRUE},
+static GActionEntry win_entries[] = {
+ { "ComposeMode", NULL, NULL, "false", compose_mode_toggled_cb},
};
-static const gchar *ui_actions_console =
- "<ui>"
- " <menubar name='MenuBar'>"
- " <placeholder name='MenuExtension'>"
- " <menu name='Data manager' action='DataManagerMenu'>"
- " <menuitem name='ComposeMode' action= 'ComposeMode'/>"
- " </menu>"
- " </placeholder>"
- " </menubar>"
- " <toolbar name='ToolBar'>"
- " <separator/>"
- " <toolitem action='ComposeMode'/>"
- " </toolbar>"
- "</ui>";
-
-static GtkActionGroup *
-data_console_page_get_actions_group (BrowserPage *page)
-{
- DataConsole *dconsole;
- dconsole = DATA_CONSOLE (page);
- if (! dconsole->priv->agroup) {
- dconsole->priv->agroup = gtk_action_group_new ("DataManagerConsoleActions");
- gtk_action_group_set_translation_domain (dconsole->priv->agroup, GETTEXT_PACKAGE);
- gtk_action_group_add_toggle_actions (dconsole->priv->agroup,
- ui_actions, G_N_ELEMENTS (ui_actions), page);
- }
- return g_object_ref (dconsole->priv->agroup);
-}
-static const gchar *
-data_console_page_get_actions_ui (G_GNUC_UNUSED BrowserPage *page)
+static void
+data_console_customize (BrowserPage *page, GtkToolbar *toolbar, GtkHeaderBar *header)
{
- return ui_actions_console;
+ g_print ("%s ()\n", __FUNCTION__);
+
+ customization_data_init (G_OBJECT (page), toolbar, header);
+
+ /* add page's actions */
+ customization_data_add_actions (G_OBJECT (page), win_entries, G_N_ELEMENTS (win_entries));
+
+ /* add to toolbar */
+ GtkToolItem *titem;
+ titem = gtk_toggle_tool_button_new ();
+ gtk_tool_button_set_icon_name (GTK_TOOL_BUTTON (titem), "applications-engineering-symbolic");
+ gtk_widget_set_tooltip_text (GTK_WIDGET (titem), _("Switch between compose and execute modes"));
+ gtk_toolbar_insert (GTK_TOOLBAR (toolbar), titem, -1);
+ gtk_actionable_set_action_name (GTK_ACTIONABLE (titem), "win.ComposeMode");
+ gtk_widget_show (GTK_WIDGET (titem));
+ customization_data_add_part (G_OBJECT (page), G_OBJECT (titem));
}
static GtkWidget *
-data_console_page_get_tab_label (BrowserPage *page, GtkWidget **out_close_button)
+data_console_get_tab_label (BrowserPage *page, GtkWidget **out_close_button)
{
const gchar *tab_name;
@@ -1023,9 +1003,11 @@ void
data_console_execute (DataConsole *console)
{
g_return_if_fail (IS_DATA_CONSOLE (console));
- if (console->priv->agroup) {
- GtkAction *action;
- action = gtk_action_group_get_action (console->priv->agroup, "ComposeMode");
- gtk_toggle_action_set_active (GTK_TOGGLE_ACTION (action), FALSE);
+ GAction *action;
+ action = customization_data_get_action (G_OBJECT (console), "ComposeMode");
+ if (action) {
+ GVariant *value;
+ value = g_variant_new_boolean (FALSE);
+ g_simple_action_set_state (G_SIMPLE_ACTION (action), value);
}
}
diff --git a/tools/browser/data-manager/data-favorite-selector.c
b/tools/browser/data-manager/data-favorite-selector.c
index 8455d52..e3def2c 100644
--- a/tools/browser/data-manager/data-favorite-selector.c
+++ b/tools/browser/data-manager/data-favorite-selector.c
@@ -44,8 +44,6 @@
#include <gtksourceview/gtksourcestylescheme.h>
#endif
-#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
-
struct _DataFavoriteSelectorPrivate {
TConnection *tcnc;
GdaTree *tree;
diff --git a/tools/browser/data-manager/data-manager-perspective.c
b/tools/browser/data-manager/data-manager-perspective.c
index e165a81..9ea63b4 100644
--- a/tools/browser/data-manager/data-manager-perspective.c
+++ b/tools/browser/data-manager/data-manager-perspective.c
@@ -22,6 +22,7 @@
#include <glib/gi18n-lib.h>
#include "data-manager-perspective.h"
#include "data-console.h"
+#include "../ui-customize.h"
#include "../browser-window.h"
#include "../browser-page.h"
#include "data-favorite-selector.h"
@@ -36,10 +37,9 @@ static void data_manager_perspective_grab_focus (GtkWidget *widget);
/* BrowserPerspective interface */
static void data_manager_perspective_perspective_init (BrowserPerspectiveIface *iface);
+static GtkWidget *data_manager_perspective_get_notebook (BrowserPerspective *perspective);
static void data_manager_perspective_customize (BrowserPerspective *perspective,
- GtkToolbar *toolbar, GtkHeaderBar *header,
GMenu *menu);
-static void data_manager_perspective_uncustomize (BrowserPerspective *perspective,
- GtkToolbar *toolbar, GtkHeaderBar *header,
GMenu *menu);
+ GtkToolbar *toolbar, GtkHeaderBar *header);
/* get a pointer to the parents to be able to call their destructor */
static GObjectClass *parent_class = NULL;
@@ -50,8 +50,6 @@ struct _DataManagerPerspectivePriv {
gboolean favorites_shown;
BrowserWindow *bwin;
TConnection *tcnc;
-
- GArray *custom_parts;
};
GType
@@ -113,8 +111,9 @@ data_manager_perspective_grab_focus (GtkWidget *widget)
static void
data_manager_perspective_perspective_init (BrowserPerspectiveIface *iface)
{
+ iface->i_get_notebook = data_manager_perspective_get_notebook;
iface->i_customize = data_manager_perspective_customize;
- iface->i_uncustomize = data_manager_perspective_uncustomize;
+ iface->i_uncustomize = NULL;
}
@@ -123,7 +122,6 @@ data_manager_perspective_init (DataManagerPerspective *perspective)
{
perspective->priv = g_new0 (DataManagerPerspectivePriv, 1);
perspective->priv->favorites_shown = TRUE;
- perspective->priv->custom_parts = NULL;
gtk_orientable_set_orientation (GTK_ORIENTABLE (perspective), GTK_ORIENTATION_VERTICAL);
}
@@ -165,11 +163,9 @@ data_manager_perspective_new (BrowserWindow *bwin)
perspective->priv->favorites = wid;
}
- nb = gtk_notebook_new ();
+ nb = browser_perspective_create_notebook (bpers);
perspective->priv->notebook = nb;
gtk_paned_pack2 (GTK_PANED (paned), nb, TRUE, TRUE);
- gtk_notebook_set_scrollable (GTK_NOTEBOOK (nb), TRUE);
- gtk_notebook_popup_enable (GTK_NOTEBOOK (nb));
GtkWidget *page, *tlabel, *button;
page = data_console_new (tcnc);
@@ -195,8 +191,6 @@ data_manager_perspective_new (BrowserWindow *bwin)
gtk_widget_grab_focus (page);
- browser_perspective_declare_notebook (bpers, GTK_NOTEBOOK (perspective->priv->notebook));
-
return bpers;
}
@@ -293,7 +287,9 @@ data_manager_perspective_dispose (GObject *object)
perspective = DATA_MANAGER_PERSPECTIVE (object);
if (perspective->priv) {
- browser_perspective_declare_notebook ((BrowserPerspective*) perspective, NULL);
+ if (customization_data_exists (object))
+ customization_data_release (object);
+
if (perspective->priv->tcnc)
g_object_unref (perspective->priv->tcnc);
@@ -331,29 +327,27 @@ favorites_toggle_cb (GSimpleAction *action, GVariant *state, gpointer data)
g_simple_action_set_state (action, state);
}
+static GtkWidget *
+data_manager_perspective_get_notebook (BrowserPerspective *perspective)
+{
+ g_return_val_if_fail (IS_DATA_MANAGER_PERSPECTIVE (perspective), NULL);
+ return DATA_MANAGER_PERSPECTIVE (perspective)->priv->notebook;
+}
+
static GActionEntry win_entries[] = {
{ "show-favorites", NULL, NULL, "true", favorites_toggle_cb },
{ "data-manager-new", manager_new_cb, NULL, NULL, NULL },
};
static void
-data_manager_perspective_customize (BrowserPerspective *perspective,
- GtkToolbar *toolbar, GtkHeaderBar *header, GMenu *menu)
+data_manager_perspective_customize (BrowserPerspective *perspective, GtkToolbar *toolbar, GtkHeaderBar
*header)
{
g_print ("%s ()\n", __FUNCTION__);
- DataManagerPerspective *persp;
- persp = DATA_MANAGER_PERSPECTIVE (perspective);
- BrowserWindow *bwin;
- bwin = browser_perspective_get_window (perspective);
+ customization_data_init (G_OBJECT (perspective), toolbar, header);
/* add perspective's actions */
- g_action_map_add_action_entries (G_ACTION_MAP (bwin),
- win_entries, G_N_ELEMENTS (win_entries),
- perspective);
-
- g_assert (! persp->priv->custom_parts);
- persp->priv->custom_parts = g_array_new (FALSE, FALSE, sizeof (gpointer));
+ customization_data_add_actions (G_OBJECT (perspective), win_entries, G_N_ELEMENTS (win_entries));
/* add to toolbar */
GtkToolItem *titem;
@@ -363,7 +357,7 @@ data_manager_perspective_customize (BrowserPerspective *perspective,
gtk_toolbar_insert (GTK_TOOLBAR (toolbar), titem, -1);
gtk_actionable_set_action_name (GTK_ACTIONABLE (titem), "win.show-favorites");
gtk_widget_show (GTK_WIDGET (titem));
- g_array_append_val (persp->priv->custom_parts, titem);
+ customization_data_add_part (G_OBJECT (perspective), G_OBJECT (titem));
titem = gtk_tool_button_new (NULL, NULL);
gtk_tool_button_set_icon_name (GTK_TOOL_BUTTON (titem), "tab-new-symbolic");
@@ -371,40 +365,7 @@ data_manager_perspective_customize (BrowserPerspective *perspective,
gtk_toolbar_insert (GTK_TOOLBAR (toolbar), titem, -1);
gtk_actionable_set_action_name (GTK_ACTIONABLE (titem), "win.data-manager-new");
gtk_widget_show (GTK_WIDGET (titem));
- g_array_append_val (persp->priv->custom_parts, titem);
-}
-
-static void
-data_manager_perspective_uncustomize (BrowserPerspective *perspective,
- GtkToolbar *toolbar, GtkHeaderBar *header, GMenu *menu)
-{
- g_print ("%s ()\n", __FUNCTION__);
- DataManagerPerspective *persp;
- persp = DATA_MANAGER_PERSPECTIVE (perspective);
-
- BrowserWindow *bwin;
- bwin = browser_perspective_get_window (perspective);
-
- /* remove perspective's actions */
- guint i;
- for (i = 0; i < G_N_ELEMENTS (win_entries); i++) {
- GActionEntry *entry;
- entry = &win_entries [i];
- g_action_map_remove_action (G_ACTION_MAP (bwin), entry->name);
- }
-
- /* cleanups, headerbar and toolbar */
- g_assert (persp->priv->custom_parts);
- for (i = 0; i < persp->priv->custom_parts->len; i++) {
- GObject *obj;
- obj = g_array_index (persp->priv->custom_parts, GObject*, i);
- if (GTK_IS_WIDGET (obj))
- gtk_widget_destroy (GTK_WIDGET (obj));
- else
- g_warning ("Unknown type to uncustomize: %s\n", G_OBJECT_CLASS_NAME
(G_OBJECT_GET_CLASS (obj)));
- }
- g_array_free (persp->priv->custom_parts, TRUE);
- persp->priv->custom_parts = NULL;
+ customization_data_add_part (G_OBJECT (perspective), G_OBJECT (titem));
}
/**
diff --git a/tools/browser/data-manager/data-source.c b/tools/browser/data-manager/data-source.c
index f6acf3f..0fde2ed 100644
--- a/tools/browser/data-manager/data-source.c
+++ b/tools/browser/data-manager/data-source.c
@@ -942,7 +942,7 @@ data_source_execute (DataSource *source, GError **error)
}
static void
-action_refresh_cb (GtkAction *action, DataSource *source)
+action_refresh_cb (GtkButton *button, DataSource *source)
{
source->priv->need_rerun = TRUE;
data_source_execute (source, NULL);
diff --git a/tools/browser/dummy-perspective/dummy-perspective.c
b/tools/browser/dummy-perspective/dummy-perspective.c
index 20deb8f..daf131b 100644
--- a/tools/browser/dummy-perspective/dummy-perspective.c
+++ b/tools/browser/dummy-perspective/dummy-perspective.c
@@ -20,12 +20,12 @@
#include <string.h>
#include <glib/gi18n-lib.h>
+#include "../ui-customize.h"
#include "dummy-perspective.h"
#include "dummy-perspective.gresources.h"
struct _DummyPerspectivePriv {
- GArray *custom_parts;
- gint custom_menu_pos;
+ GtkWidget *notebook;
};
/*
* Main static functions
@@ -36,10 +36,9 @@ static void dummy_perspective_dispose (GObject *object);
/* BrowserPerspective interface */
static void dummy_perspective_perspective_init (BrowserPerspectiveIface *iface);
+static GtkWidget *dummy_perspective_get_notebook (BrowserPerspective *perspective);
static void dummy_perspective_customize (BrowserPerspective *perspective,
- GtkToolbar *toolbar, GtkHeaderBar *header, GMenu
*menu);
-static void dummy_perspective_uncustomize (BrowserPerspective *perspective,
- GtkToolbar *toolbar, GtkHeaderBar *header, GMenu
*menu);
+ GtkToolbar *toolbar, GtkHeaderBar *header);
/* get a pointer to the parents to be able to call their destructor */
static GObjectClass *parent_class = NULL;
@@ -95,28 +94,32 @@ dummy_perspective_class_init (DummyPerspectiveClass * klass)
static void
dummy_perspective_perspective_init (BrowserPerspectiveIface *iface)
{
+ iface->i_get_notebook = dummy_perspective_get_notebook;
iface->i_customize = dummy_perspective_customize;
- iface->i_uncustomize = dummy_perspective_uncustomize;
+ iface->i_uncustomize = NULL;
}
static void
dummy_perspective_init (DummyPerspective *perspective)
{
- GtkWidget *wid;
+ GtkWidget *wid, *nb;
perspective->priv = g_new0 (DummyPerspectivePriv, 1);
- perspective->priv->custom_parts = NULL;
- perspective->priv->custom_menu_pos = -1;
gtk_orientable_set_orientation (GTK_ORIENTABLE (perspective), GTK_ORIENTATION_VERTICAL);
+
+ nb = browser_perspective_create_notebook (BROWSER_PERSPECTIVE (perspective));
+ perspective->priv->notebook = nb;
+ gtk_box_pack_start (GTK_BOX (perspective), nb, TRUE, TRUE, 0);
wid = gtk_label_new ("");
gtk_label_set_markup (GTK_LABEL (wid),
"<big><b>Dummy perspective</b></big>\n"
"Use this as a starting point for your own perspective...");
- gtk_box_pack_start (GTK_BOX (perspective), wid, TRUE, TRUE, 0);
- gtk_widget_show (wid);
+ gtk_notebook_append_page (GTK_NOTEBOOK (nb), wid, NULL);
+
+ gtk_widget_show_all (nb);
}
/**
@@ -129,12 +132,6 @@ dummy_perspective_new (BrowserWindow *bwin)
{
BrowserPerspective *bpers;
bpers = (BrowserPerspective*) g_object_new (TYPE_DUMMY_PERSPECTIVE, NULL);
- DummyPerspective *dpers;
- dpers = (DummyPerspective *) bpers;
-
- /* if there is a notebook to store pages, use:
- browser_perspective_declare_notebook (bpers, GTK_NOTEBOOK (perspective->priv->notebook));
- */
return bpers;
}
@@ -149,8 +146,10 @@ dummy_perspective_dispose (GObject *object)
g_return_if_fail (IS_DUMMY_PERSPECTIVE (object));
perspective = DUMMY_PERSPECTIVE (object);
- browser_perspective_declare_notebook ((BrowserPerspective*) perspective, NULL);
if (perspective->priv) {
+ if (customization_data_exists (object))
+ customization_data_release (object);
+
g_free (perspective->priv);
perspective->priv = NULL;
}
@@ -159,6 +158,13 @@ dummy_perspective_dispose (GObject *object)
parent_class->dispose (object);
}
+static GtkWidget *
+dummy_perspective_get_notebook (BrowserPerspective *perspective)
+{
+ g_return_val_if_fail (IS_DUMMY_PERSPECTIVE (perspective), NULL);
+ return DUMMY_PERSPECTIVE (perspective)->priv->notebook;
+}
+
static void
dummy1_cb (GSimpleAction *action, GVariant *state, gpointer data)
{
@@ -183,34 +189,14 @@ static GActionEntry win_entries[] = {
};
static void
-dummy_perspective_customize (BrowserPerspective *perspective,
- GtkToolbar *toolbar, GtkHeaderBar *header, GMenu *menu)
+dummy_perspective_customize (BrowserPerspective *perspective, GtkToolbar *toolbar, GtkHeaderBar *header)
{
g_print ("%s ()\n", __FUNCTION__);
- DummyPerspective *dpers;
- dpers = DUMMY_PERSPECTIVE (perspective);
- BrowserWindow *bwin;
- bwin = browser_perspective_get_window (perspective);
+ customization_data_init (G_OBJECT (perspective), toolbar, header);
/* add perspective's actions */
- g_action_map_add_action_entries (G_ACTION_MAP (bwin),
- win_entries, G_N_ELEMENTS (win_entries),
- dpers);
-
- g_assert (! dpers->priv->custom_parts);
- dpers->priv->custom_parts = g_array_new (FALSE, FALSE, sizeof (gpointer));
- g_assert (dpers->priv->custom_menu_pos == -1);
-
- /* add menu */
- GtkBuilder *builder;
- builder = gtk_builder_new ();
- gtk_builder_add_from_resource (builder, "/dummy-perspective/perspective-menus.ui", NULL);
- GMenuModel *menumodel;
- menumodel = G_MENU_MODEL (gtk_builder_get_object (builder, "menubar"));
- dpers->priv->custom_menu_pos = g_menu_model_get_n_items (G_MENU_MODEL (menu));
- g_menu_append_submenu (menu, "Dummy", menumodel);
- g_object_unref (builder);
+ customization_data_add_actions (G_OBJECT (perspective), win_entries, G_N_ELEMENTS (win_entries));
/* add to toolbar */
GtkToolItem *titem;
@@ -220,7 +206,7 @@ dummy_perspective_customize (BrowserPerspective *perspective,
gtk_toolbar_insert (GTK_TOOLBAR (toolbar), titem, -1);
gtk_actionable_set_action_name (GTK_ACTIONABLE (titem), "win.dummy1");
gtk_widget_show (GTK_WIDGET (titem));
- g_array_append_val (dpers->priv->custom_parts, titem);
+ customization_data_add_part (G_OBJECT (perspective), G_OBJECT (titem));
titem = gtk_tool_button_new (NULL, NULL);
gtk_tool_button_set_icon_name (GTK_TOOL_BUTTON (titem), "process-stop-symbolic");
@@ -228,12 +214,12 @@ dummy_perspective_customize (BrowserPerspective *perspective,
gtk_toolbar_insert (GTK_TOOLBAR (toolbar), titem, -1);
gtk_actionable_set_action_name (GTK_ACTIONABLE (titem), "win.dummy2");
gtk_widget_show (GTK_WIDGET (titem));
- g_array_append_val (dpers->priv->custom_parts, titem);
+ customization_data_add_part (G_OBJECT (perspective), G_OBJECT (titem));
/* add to header bar */
GtkWidget *img, *button;
button = gtk_menu_button_new ();
- g_array_append_val (dpers->priv->custom_parts, button);
+ customization_data_add_part (G_OBJECT (perspective), G_OBJECT (button));
img = gtk_image_new_from_icon_name ("start-here-symbolic", GTK_ICON_SIZE_MENU);
gtk_button_set_image (GTK_BUTTON (button), img);
gtk_header_bar_pack_end (GTK_HEADER_BAR (header), button);
@@ -249,42 +235,3 @@ dummy_perspective_customize (BrowserPerspective *perspective,
mitem = g_menu_item_new ("Dummy 2", "win.dummy2");
g_menu_insert_item (smenu, -1, mitem);
}
-
-static void
-dummy_perspective_uncustomize (BrowserPerspective *perspective,
- GtkToolbar *toolbar, GtkHeaderBar *header, GMenu *menu)
-{
- g_print ("%s ()\n", __FUNCTION__);
- DummyPerspective *dpers;
- dpers = DUMMY_PERSPECTIVE (perspective);
-
- BrowserWindow *bwin;
- bwin = browser_perspective_get_window (perspective);
-
- /* remove perspective's actions */
- guint i;
- for (i = 0; i < G_N_ELEMENTS (win_entries); i++) {
- GActionEntry *entry;
- entry = &win_entries [i];
- g_action_map_remove_action (G_ACTION_MAP (bwin), entry->name);
- }
-
- /* cleanups, headerbar and toolbar */
- g_assert (dpers->priv->custom_parts);
- for (i = 0; i < dpers->priv->custom_parts->len; i++) {
- GObject *obj;
- obj = g_array_index (dpers->priv->custom_parts, GObject*, i);
- if (GTK_IS_WIDGET (obj))
- gtk_widget_destroy (GTK_WIDGET (obj));
- else
- g_warning ("Unknown type to uncustomize: %s\n", G_OBJECT_CLASS_NAME
(G_OBJECT_GET_CLASS (obj)));
- }
- g_array_free (dpers->priv->custom_parts, TRUE);
- dpers->priv->custom_parts = NULL;
-
- /* cleanups, menu */
- if (dpers->priv->custom_menu_pos >= 0) {
- g_menu_remove (menu, dpers->priv->custom_menu_pos);
- dpers->priv->custom_menu_pos = -1;
- }
-}
diff --git a/tools/browser/ldap-browser/entry-properties.c b/tools/browser/ldap-browser/entry-properties.c
index d16c3e6..393ad49 100644
--- a/tools/browser/ldap-browser/entry-properties.c
+++ b/tools/browser/ldap-browser/entry-properties.c
@@ -1,6 +1,6 @@
/*
* Copyright (C) 2011 Murray Cumming <murrayc murrayc com>
- * Copyright (C) 2011 - 2014 Vivien Malerba <malerba gnome-db org>
+ * Copyright (C) 2011 - 2015 Vivien Malerba <malerba gnome-db org>
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
@@ -27,8 +27,6 @@
#include "../ui-support.h"
#include "../text-search.h"
-#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
-
struct _EntryPropertiesPrivate {
TConnection *tcnc;
@@ -225,8 +223,8 @@ data_save_cb (GtkWidget *mitem, EntryProperties *eprop)
dialog = gtk_file_chooser_dialog_new (_("Select the file to save data to"),
(GtkWindow*) gtk_widget_get_toplevel (GTK_WIDGET (eprop)),
GTK_FILE_CHOOSER_ACTION_SAVE,
- GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
- GTK_STOCK_SAVE, GTK_RESPONSE_ACCEPT,
+ _("_Cancel"), GTK_RESPONSE_CANCEL,
+ _("_Save"), GTK_RESPONSE_ACCEPT,
NULL);
gtk_file_chooser_set_current_folder (GTK_FILE_CHOOSER (dialog),
gdaui_get_default_path ());
diff --git a/tools/browser/ldap-browser/ldap-browser-perspective.c
b/tools/browser/ldap-browser/ldap-browser-perspective.c
index f84c1d4..21518bb 100644
--- a/tools/browser/ldap-browser/ldap-browser-perspective.c
+++ b/tools/browser/ldap-browser/ldap-browser-perspective.c
@@ -25,6 +25,7 @@
#include "ldap-classes-page.h"
#include "ldap-search-page.h"
#include "../ui-support.h"
+#include "../ui-customize.h"
#include "../browser-page.h"
#include "ldap-favorite-selector.h"
@@ -37,10 +38,9 @@ static void ldap_browser_perspective_dispose (GObject *object);
/* BrowserPerspective interface */
static void ldap_browser_perspective_perspective_init (BrowserPerspectiveIface *iface);
+static GtkWidget *ldap_browser_perspective_get_notebook (BrowserPerspective *perspective);
static void ldap_browser_perspective_customize (BrowserPerspective *perspective,
- GtkToolbar *toolbar, GtkHeaderBar *header,
GMenu *menu);
-static void ldap_browser_perspective_uncustomize (BrowserPerspective *perspective,
- GtkToolbar *toolbar, GtkHeaderBar *header,
GMenu *menu);
+ GtkToolbar *toolbar, GtkHeaderBar *header);
/* get a pointer to the parents to be able to call their destructor */
static GObjectClass *parent_class = NULL;
@@ -50,8 +50,6 @@ struct _LdapBrowserPerspectivePrivate {
GtkWidget *favorites;
gboolean favorites_shown;
BrowserWindow *bwin;
-
- GArray *custom_parts;
};
GType
@@ -102,8 +100,9 @@ ldap_browser_perspective_class_init (LdapBrowserPerspectiveClass * klass)
static void
ldap_browser_perspective_perspective_init (BrowserPerspectiveIface *iface)
{
+ iface->i_get_notebook = ldap_browser_perspective_get_notebook;
iface->i_customize = ldap_browser_perspective_customize;
- iface->i_uncustomize = ldap_browser_perspective_uncustomize;
+ iface->i_uncustomize = NULL;
}
@@ -112,7 +111,6 @@ ldap_browser_perspective_init (LdapBrowserPerspective *perspective)
{
perspective->priv = g_new0 (LdapBrowserPerspectivePrivate, 1);
perspective->priv->favorites_shown = TRUE;
- perspective->priv->custom_parts = NULL;
gtk_orientable_set_orientation (GTK_ORIENTABLE (perspective), GTK_ORIENTATION_VERTICAL);
}
@@ -153,11 +151,9 @@ ldap_browser_perspective_new (BrowserWindow *bwin)
gtk_paned_set_position (GTK_PANED (paned), DEFAULT_FAVORITES_SIZE);
perspective->priv->favorites = wid;
- nb = gtk_notebook_new ();
+ nb = browser_perspective_create_notebook (bpers);
perspective->priv->notebook = nb;
gtk_paned_add2 (GTK_PANED (paned), nb);
- gtk_notebook_set_scrollable (GTK_NOTEBOOK (nb), TRUE);
- gtk_notebook_popup_enable (GTK_NOTEBOOK (nb));
wid = ldap_entries_page_new (tcnc, NULL);
tlabel = browser_page_get_tab_label (BROWSER_PAGE (wid), &button);
@@ -174,8 +170,6 @@ ldap_browser_perspective_new (BrowserWindow *bwin)
if (!perspective->priv->favorites_shown)
gtk_widget_hide (perspective->priv->favorites);
- browser_perspective_declare_notebook (bpers, GTK_NOTEBOOK (perspective->priv->notebook));
-
return bpers;
}
@@ -205,7 +199,9 @@ ldap_browser_perspective_dispose (GObject *object)
perspective = LDAP_BROWSER_PERSPECTIVE (object);
if (perspective->priv) {
- browser_perspective_declare_notebook ((BrowserPerspective*) perspective, NULL);
+ if (customization_data_exists (object))
+ customization_data_release (object);
+
g_free (perspective->priv);
perspective->priv = NULL;
}
@@ -328,6 +324,13 @@ ldab_search_add_cb (G_GNUC_UNUSED GSimpleAction *action, G_GNUC_UNUSED GVariant
gtk_widget_grab_focus (page);
}
+static GtkWidget *
+ldap_browser_perspective_get_notebook (BrowserPerspective *perspective)
+{
+ g_return_val_if_fail (IS_LDAP_BROWSER_PERSPECTIVE (perspective), NULL);
+ return LDAP_BROWSER_PERSPECTIVE (perspective)->priv->notebook;
+}
+
static GActionEntry win_entries[] = {
{ "show-favorites", NULL, NULL, "true", favorites_toggle_cb },
{ "entries-page-new", ldab_ldap_entries_page_add_cb, NULL, NULL, NULL },
@@ -336,23 +339,12 @@ static GActionEntry win_entries[] = {
};
static void
-ldap_browser_perspective_customize (BrowserPerspective *perspective,
- GtkToolbar *toolbar, GtkHeaderBar *header, GMenu *menu)
+ldap_browser_perspective_customize (BrowserPerspective *perspective, GtkToolbar *toolbar, GtkHeaderBar
*header)
{
g_print ("%s ()\n", __FUNCTION__);
- LdapBrowserPerspective *persp;
- persp = LDAP_BROWSER_PERSPECTIVE (perspective);
-
- BrowserWindow *bwin;
- bwin = browser_perspective_get_window (perspective);
/* add perspective's actions */
- g_action_map_add_action_entries (G_ACTION_MAP (bwin),
- win_entries, G_N_ELEMENTS (win_entries),
- perspective);
-
- g_assert (! persp->priv->custom_parts);
- persp->priv->custom_parts = g_array_new (FALSE, FALSE, sizeof (gpointer));
+ customization_data_add_actions (G_OBJECT (perspective), win_entries, G_N_ELEMENTS (win_entries));
/* add to toolbar */
GtkToolItem *titem;
@@ -362,7 +354,7 @@ ldap_browser_perspective_customize (BrowserPerspective *perspective,
gtk_toolbar_insert (GTK_TOOLBAR (toolbar), titem, -1);
gtk_actionable_set_action_name (GTK_ACTIONABLE (titem), "win.show-favorites");
gtk_widget_show (GTK_WIDGET (titem));
- g_array_append_val (persp->priv->custom_parts, titem);
+ customization_data_add_part (G_OBJECT (perspective), G_OBJECT (titem));
GdkPixbuf *pix;
GtkWidget *img;
@@ -375,7 +367,7 @@ ldap_browser_perspective_customize (BrowserPerspective *perspective,
gtk_toolbar_insert (GTK_TOOLBAR (toolbar), titem, -1);
gtk_actionable_set_action_name (GTK_ACTIONABLE (titem), "win.entries-page-new");
gtk_widget_show (GTK_WIDGET (titem));
- g_array_append_val (persp->priv->custom_parts, titem);
+ customization_data_add_part (G_OBJECT (perspective), G_OBJECT (titem));
pix = ui_get_pixbuf_icon (UI_ICON_LDAP_CLASS_STRUCTURAL);
img = gtk_image_new_from_pixbuf (pix);
@@ -386,7 +378,7 @@ ldap_browser_perspective_customize (BrowserPerspective *perspective,
gtk_toolbar_insert (GTK_TOOLBAR (toolbar), titem, -1);
gtk_actionable_set_action_name (GTK_ACTIONABLE (titem), "win.classes-page-new");
gtk_widget_show (GTK_WIDGET (titem));
- g_array_append_val (persp->priv->custom_parts, titem);
+ customization_data_add_part (G_OBJECT (perspective), G_OBJECT (titem));
titem = gtk_tool_button_new (NULL, NULL);
gtk_tool_button_set_icon_name (GTK_TOOL_BUTTON (titem), "edit-find");
@@ -394,43 +386,9 @@ ldap_browser_perspective_customize (BrowserPerspective *perspective,
gtk_toolbar_insert (GTK_TOOLBAR (toolbar), titem, -1);
gtk_actionable_set_action_name (GTK_ACTIONABLE (titem), "win.search-page-new");
gtk_widget_show (GTK_WIDGET (titem));
- g_array_append_val (persp->priv->custom_parts, titem);
-}
-
-static void
-ldap_browser_perspective_uncustomize (BrowserPerspective *perspective,
- GtkToolbar *toolbar, GtkHeaderBar *header, GMenu *menu)
-{
- g_print ("%s ()\n", __FUNCTION__);
- LdapBrowserPerspective *persp;
- persp = LDAP_BROWSER_PERSPECTIVE (perspective);
-
- BrowserWindow *bwin;
- bwin = browser_perspective_get_window (perspective);
-
- /* remove perspective's actions */
- guint i;
- for (i = 0; i < G_N_ELEMENTS (win_entries); i++) {
- GActionEntry *entry;
- entry = &win_entries [i];
- g_action_map_remove_action (G_ACTION_MAP (bwin), entry->name);
- }
-
- /* cleanups, headerbar and toolbar */
- g_assert (persp->priv->custom_parts);
- for (i = 0; i < persp->priv->custom_parts->len; i++) {
- GObject *obj;
- obj = g_array_index (persp->priv->custom_parts, GObject*, i);
- if (GTK_IS_WIDGET (obj))
- gtk_widget_destroy (GTK_WIDGET (obj));
- else
- g_warning ("Unknown type to uncustomize: %s\n", G_OBJECT_CLASS_NAME
(G_OBJECT_GET_CLASS (obj)));
- }
- g_array_free (persp->priv->custom_parts, TRUE);
- persp->priv->custom_parts = NULL;
+ customization_data_add_part (G_OBJECT (perspective), G_OBJECT (titem));
}
-
/**
* ldap_browser_perspective_display_ldap_entry
*
diff --git a/tools/browser/ldap-browser/ldap-classes-page.c b/tools/browser/ldap-browser/ldap-classes-page.c
index cc06bcd..e20e0c9 100644
--- a/tools/browser/ldap-browser/ldap-classes-page.c
+++ b/tools/browser/ldap-browser/ldap-classes-page.c
@@ -24,6 +24,7 @@
#include "class-properties.h"
#include "../dnd.h"
#include "../ui-support.h"
+#include "../ui-customize.h"
#include "../gdaui-bar.h"
#include "../browser-page.h"
#include "../browser-window.h"
@@ -33,8 +34,6 @@
#include <libgda-ui/gdaui-tree-store.h>
#include <libgda/gda-debug-macros.h>
-#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
-
typedef struct {
gchar *classname;
GtkTreeRowReference *reference;
@@ -54,7 +53,6 @@ struct _LdapClassesPagePrivate {
GtkWidget *classes_view;
GtkWidget *entry_props;
- GtkActionGroup *agroup;
GArray *history_items; /* array of @HistoryItem */
guint history_max_len; /* max allowed length of @history_items */
gint current_hitem; /* index in @history_items, or -1 */
@@ -67,9 +65,8 @@ static void ldap_classes_page_dispose (GObject *object);
/* BrowserPage interface */
static void ldap_classes_page_page_init (BrowserPageIface *iface);
-static GtkActionGroup *ldap_classes_page_page_get_actions_group (BrowserPage *page);
-static const gchar *ldap_classes_page_page_get_actions_ui (BrowserPage *page);
-static GtkWidget *ldap_classes_page_page_get_tab_label (BrowserPage *page, GtkWidget
**out_close_button);
+static void ldap_classes_customize (BrowserPage *page, GtkToolbar *toolbar, GtkHeaderBar
*header);
+static GtkWidget *ldap_classes_page_get_tab_label (BrowserPage *page, GtkWidget
**out_close_button);
static GObjectClass *parent_class = NULL;
@@ -91,9 +88,9 @@ ldap_classes_page_class_init (LdapClassesPageClass *klass)
static void
ldap_classes_page_page_init (BrowserPageIface *iface)
{
- iface->i_get_actions_group = ldap_classes_page_page_get_actions_group;
- iface->i_get_actions_ui = ldap_classes_page_page_get_actions_ui;
- iface->i_get_tab_label = ldap_classes_page_page_get_tab_label;
+ iface->i_customize = ldap_classes_customize;
+ iface->i_uncustomize = NULL;
+ iface->i_get_tab_label = ldap_classes_page_get_tab_label;
}
static void
@@ -116,8 +113,6 @@ ldap_classes_page_dispose (GObject *object)
if (ebrowser->priv) {
if (ebrowser->priv->tcnc)
g_object_unref (ebrowser->priv->tcnc);
- if (ebrowser->priv->agroup)
- g_object_unref (ebrowser->priv->agroup);
if (ebrowser->priv->history_items) {
guint i;
for (i = 0; i < ebrowser->priv->history_items->len; i++) {
@@ -205,7 +200,7 @@ source_drag_data_get_cb (G_GNUC_UNUSED GtkWidget *widget, G_GNUC_UNUSED GdkDragC
static void
update_history_actions (LdapClassesPage *ebrowser)
{
- if (!ebrowser->priv->agroup)
+ if (!customization_data_exists (G_OBJECT (ebrowser)))
return;
gboolean is_first = TRUE;
@@ -229,11 +224,13 @@ update_history_actions (LdapClassesPage *ebrowser)
}
}
- GtkAction *action;
- action = gtk_action_group_get_action (ebrowser->priv->agroup, "DnBack");
- gtk_action_set_sensitive (action, !is_first);
- action = gtk_action_group_get_action (ebrowser->priv->agroup, "DnForward");
- gtk_action_set_sensitive (action, !is_last);
+ GAction *action;
+ action = customization_data_get_action (G_OBJECT (ebrowser), "ClassBack");
+ if (action)
+ g_simple_action_set_enabled (G_SIMPLE_ACTION (action), !is_first);
+ action = customization_data_get_action (G_OBJECT (ebrowser), "ClassForward");
+ if (action)
+ g_simple_action_set_enabled (G_SIMPLE_ACTION (action), !is_last);
}
static void
@@ -246,11 +243,12 @@ selection_changed_cb (GtkTreeSelection *sel, LdapClassesPage *ebrowser)
if (!current_classname)
return;
- if (ebrowser->priv->agroup) {
- GtkAction *action;
- action = gtk_action_group_get_action (ebrowser->priv->agroup, "AddToFav");
+ GAction *action;
+ action = customization_data_get_action (G_OBJECT (ebrowser), "AddToFav");
+ if (action) {
current_classname = ldap_classes_page_get_current_class (ebrowser);
- gtk_action_set_sensitive (action, (current_classname && *current_classname) ? TRUE : FALSE);
+ g_simple_action_set_enabled (G_SIMPLE_ACTION (action),
+ (current_classname && *current_classname) ? TRUE : FALSE);
}
GtkTreeModel *model;
@@ -409,8 +407,11 @@ ldap_classes_page_set_current_class (LdapClassesPage *ldap_classes_page, const g
* UI actions
*/
static void
-action_add_to_fav_cb (G_GNUC_UNUSED GtkAction *action, LdapClassesPage *ebrowser)
+action_add_to_fav_cb (G_GNUC_UNUSED GSimpleAction *action, G_GNUC_UNUSED GVariant *state, gpointer data)
{
+ LdapClassesPage *ebrowser;
+ ebrowser = LDAP_CLASSES_PAGE (data);
+
TFavorites *bfav;
TFavoritesAttributes fav;
GError *error = NULL;
@@ -435,8 +436,11 @@ action_add_to_fav_cb (G_GNUC_UNUSED GtkAction *action, LdapClassesPage *ebrowser
}
static void
-action_class_back_cb (G_GNUC_UNUSED GtkAction *action, LdapClassesPage *ebrowser)
+action_class_back_cb (G_GNUC_UNUSED GSimpleAction *action, G_GNUC_UNUSED GVariant *state, gpointer data)
{
+ LdapClassesPage *ebrowser;
+ ebrowser = LDAP_CLASSES_PAGE (data);
+
ebrowser->priv->add_hist_item = FALSE;
if (ebrowser->priv->current_hitem > 0) {
HistoryItem *hitem = NULL;
@@ -468,8 +472,11 @@ action_class_back_cb (G_GNUC_UNUSED GtkAction *action, LdapClassesPage *ebrowser
}
static void
-action_class_forward_cb (G_GNUC_UNUSED GtkAction *action, LdapClassesPage *ebrowser)
+action_class_forward_cb (G_GNUC_UNUSED GSimpleAction *action, G_GNUC_UNUSED GVariant *state, gpointer data)
{
+ LdapClassesPage *ebrowser;
+ ebrowser = LDAP_CLASSES_PAGE (data);
+
ebrowser->priv->add_hist_item = FALSE;
if ((ebrowser->priv->current_hitem >=0) &&
((guint) ebrowser->priv->current_hitem < ebrowser->priv->history_items->len)) {
@@ -501,68 +508,51 @@ action_class_forward_cb (G_GNUC_UNUSED GtkAction *action, LdapClassesPage *ebrow
ebrowser->priv->add_hist_item = TRUE;
}
-static GtkActionEntry ui_actions[] = {
- { "LDAP", NULL, N_("_LDAP"), NULL, N_("LDAP"), NULL },
- { "AddToFav", /*STOCK_ADD_BOOKMARK*/ NULL, N_("Add to _Favorites"), NULL, N_("Add class to
favorites"),
- G_CALLBACK (action_add_to_fav_cb)},
- { "DnBack", GTK_STOCK_GO_BACK, N_("Previous Class"), NULL, N_("Move back to previous LDAP class"),
- G_CALLBACK (action_class_back_cb)},
- { "DnForward", GTK_STOCK_GO_FORWARD, N_("Next Class"), NULL, N_("Move to next LDAP class"),
- G_CALLBACK (action_class_forward_cb)},
+static GActionEntry win_entries[] = {
+ { "AddToFav", action_add_to_fav_cb, NULL, NULL, NULL },
+ { "ClassBack", action_class_back_cb, NULL, NULL, NULL },
+ { "ClassForward", action_class_forward_cb, NULL, NULL, NULL },
};
-static const gchar *ui_actions_browser =
- "<ui>"
- " <menubar name='MenuBar'>"
- " <placeholder name='MenuExtension'>"
- " <menu name='LDAP' action='LDAP'>"
- " <menuitem name='AddToFav' action= 'AddToFav'/>"
- " <separator/>"
- " <menuitem name='DnBack' action= 'DnBack'/>"
- " <menuitem name='DnForward' action= 'DnForward'/>"
- " </menu>"
- " </placeholder>"
- " </menubar>"
- " <toolbar name='ToolBar'>"
- " <separator/>"
- " <toolitem action='AddToFav'/>"
- " <toolitem action='DnBack'/>"
- " <toolitem action='DnForward'/>"
- " </toolbar>"
- "</ui>";
-
-static GtkActionGroup *
-ldap_classes_page_page_get_actions_group (BrowserPage *page)
-{
- LdapClassesPage *ebrowser;
-
- ebrowser = LDAP_CLASSES_PAGE (page);
- if (! ebrowser->priv->agroup) {
- GtkActionGroup *agroup;
- agroup = gtk_action_group_new ("LdapLdapClassesPageActions");
- gtk_action_group_set_translation_domain (agroup, GETTEXT_PACKAGE);
- gtk_action_group_add_actions (agroup, ui_actions, G_N_ELEMENTS (ui_actions), page);
- ebrowser->priv->agroup = agroup;
-
- GtkAction *action;
- const gchar *current_classname;
- action = gtk_action_group_get_action (agroup, "AddToFav");
- current_classname = ldap_classes_page_get_current_class (ebrowser);
- gtk_action_set_sensitive (action, (current_classname && *current_classname) ? TRUE : FALSE);
-
- update_history_actions (ebrowser);
- }
-
- return g_object_ref (ebrowser->priv->agroup);
-}
-static const gchar *
-ldap_classes_page_page_get_actions_ui (G_GNUC_UNUSED BrowserPage *page)
+static void
+ldap_classes_customize (BrowserPage *page, GtkToolbar *toolbar, GtkHeaderBar *header)
{
- return ui_actions_browser;
+ g_print ("%s ()\n", __FUNCTION__);
+
+ customization_data_init (G_OBJECT (page), toolbar, header);
+
+ /* add perspective's actions */
+ customization_data_add_actions (G_OBJECT (page), win_entries, G_N_ELEMENTS (win_entries));
+
+ /* add to toolbar */
+ GtkToolItem *titem;
+ titem = gtk_tool_button_new (NULL, NULL);
+ gtk_tool_button_set_icon_name (GTK_TOOL_BUTTON (titem), "bookmark-new-symbolic");
+ gtk_widget_set_tooltip_text (GTK_WIDGET (titem), _("Add class Favorites"));
+ gtk_toolbar_insert (GTK_TOOLBAR (toolbar), titem, -1);
+ gtk_actionable_set_action_name (GTK_ACTIONABLE (titem), "win.AddToFav");
+ gtk_widget_show (GTK_WIDGET (titem));
+ customization_data_add_part (G_OBJECT (page), G_OBJECT (titem));
+
+ titem = gtk_tool_button_new (NULL, NULL);
+ gtk_tool_button_set_icon_name (GTK_TOOL_BUTTON (titem), "go-previous-symbolic");
+ gtk_widget_set_tooltip_text (GTK_WIDGET (titem), _("Move back to previous LDAP class"));
+ gtk_toolbar_insert (GTK_TOOLBAR (toolbar), titem, -1);
+ gtk_actionable_set_action_name (GTK_ACTIONABLE (titem), "win.ClassBack");
+ gtk_widget_show (GTK_WIDGET (titem));
+ customization_data_add_part (G_OBJECT (page), G_OBJECT (titem));
+
+ titem = gtk_tool_button_new (NULL, NULL);
+ gtk_tool_button_set_icon_name (GTK_TOOL_BUTTON (titem), "go-next-symbolic");
+ gtk_widget_set_tooltip_text (GTK_WIDGET (titem), _("Move to next LDAP class"));
+ gtk_toolbar_insert (GTK_TOOLBAR (toolbar), titem, -1);
+ gtk_actionable_set_action_name (GTK_ACTIONABLE (titem), "win.ClassForward");
+ gtk_widget_show (GTK_WIDGET (titem));
+ customization_data_add_part (G_OBJECT (page), G_OBJECT (titem));
}
static GtkWidget *
-ldap_classes_page_page_get_tab_label (BrowserPage *page, GtkWidget **out_close_button)
+ldap_classes_page_get_tab_label (BrowserPage *page, GtkWidget **out_close_button)
{
const gchar *tab_name;
GdkPixbuf *classes_pixbuf;
diff --git a/tools/browser/ldap-browser/ldap-entries-page.c b/tools/browser/ldap-browser/ldap-entries-page.c
index 0904ce7..2599084 100644
--- a/tools/browser/ldap-browser/ldap-entries-page.c
+++ b/tools/browser/ldap-browser/ldap-entries-page.c
@@ -24,6 +24,7 @@
#include "entry-properties.h"
#include "../dnd.h"
#include "../ui-support.h"
+#include "../ui-customize.h"
#include "../gdaui-bar.h"
#include "../browser-page.h"
#include "../browser-window.h"
@@ -34,8 +35,6 @@
#include "ldap-browser-perspective.h"
#include <libgda/gda-debug-macros.h>
-#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
-
typedef struct {
gchar *dn;
GtkTreeRowReference *reference;
@@ -55,7 +54,6 @@ struct _LdapEntriesPagePrivate {
GtkWidget *entries_view;
GtkWidget *entry_props;
- GtkActionGroup *agroup;
GArray *history_items; /* array of @HistoryItem */
guint history_max_len; /* max allowed length of @history_items */
gint current_hitem; /* index in @history_items, or -1 */
@@ -68,9 +66,8 @@ static void ldap_entries_page_dispose (GObject *object);
/* BrowserPage interface */
static void ldap_entries_page_page_init (BrowserPageIface *iface);
-static GtkActionGroup *ldap_entries_page_page_get_actions_group (BrowserPage *page);
-static const gchar *ldap_entries_page_page_get_actions_ui (BrowserPage *page);
-static GtkWidget *ldap_entries_page_page_get_tab_label (BrowserPage *page, GtkWidget
**out_close_button);
+static void ldap_entries_customize (BrowserPage *page, GtkToolbar *toolbar, GtkHeaderBar
*header);
+static GtkWidget *ldap_entries_page_get_tab_label (BrowserPage *page, GtkWidget
**out_close_button);
static GObjectClass *parent_class = NULL;
@@ -92,9 +89,9 @@ ldap_entries_page_class_init (LdapEntriesPageClass *klass)
static void
ldap_entries_page_page_init (BrowserPageIface *iface)
{
- iface->i_get_actions_group = ldap_entries_page_page_get_actions_group;
- iface->i_get_actions_ui = ldap_entries_page_page_get_actions_ui;
- iface->i_get_tab_label = ldap_entries_page_page_get_tab_label;
+ iface->i_customize = ldap_entries_customize;
+ iface->i_uncustomize = NULL;
+ iface->i_get_tab_label = ldap_entries_page_get_tab_label;
}
static void
@@ -117,8 +114,6 @@ ldap_entries_page_dispose (GObject *object)
if (ebrowser->priv) {
if (ebrowser->priv->tcnc)
g_object_unref (ebrowser->priv->tcnc);
- if (ebrowser->priv->agroup)
- g_object_unref (ebrowser->priv->agroup);
if (ebrowser->priv->history_items) {
guint i;
for (i = 0; i < ebrowser->priv->history_items->len; i++) {
@@ -206,7 +201,7 @@ source_drag_data_get_cb (G_GNUC_UNUSED GtkWidget *widget, G_GNUC_UNUSED GdkDragC
static void
update_history_actions (LdapEntriesPage *ebrowser)
{
- if (!ebrowser->priv->agroup)
+ if (!customization_data_exists (G_OBJECT (ebrowser)))
return;
gboolean is_first = TRUE;
@@ -230,11 +225,13 @@ update_history_actions (LdapEntriesPage *ebrowser)
}
}
- GtkAction *action;
- action = gtk_action_group_get_action (ebrowser->priv->agroup, "DnBack");
- gtk_action_set_sensitive (action, !is_first);
- action = gtk_action_group_get_action (ebrowser->priv->agroup, "DnForward");
- gtk_action_set_sensitive (action, !is_last);
+ GAction *action;
+ action = customization_data_get_action (G_OBJECT (ebrowser), "DnBack");
+ if (action)
+ g_simple_action_set_enabled (G_SIMPLE_ACTION (action), !is_first);
+ action = customization_data_get_action (G_OBJECT (ebrowser), "DnForward");
+ if (action)
+ g_simple_action_set_enabled (G_SIMPLE_ACTION (action), !is_last);
}
static void
@@ -244,11 +241,12 @@ selection_changed_cb (GtkTreeSelection *sel, LdapEntriesPage *ebrowser)
current_dn = hierarchy_view_get_current_dn (HIERARCHY_VIEW (ebrowser->priv->entries_view), NULL);
entry_properties_set_dn (ENTRY_PROPERTIES (ebrowser->priv->entry_props), current_dn);
- if (ebrowser->priv->agroup) {
- GtkAction *action;
- action = gtk_action_group_get_action (ebrowser->priv->agroup, "AddToFav");
+ GAction *action;
+ action = customization_data_get_action (G_OBJECT (ebrowser), "AddToFav");
+ if (action) {
current_dn = ldap_entries_page_get_current_dn (ebrowser);
- gtk_action_set_sensitive (action, (current_dn && *current_dn) ? TRUE : FALSE);
+ g_simple_action_set_enabled (G_SIMPLE_ACTION (action),
+ (current_dn && *current_dn) ? TRUE : FALSE);
}
GtkTreeModel *model;
@@ -414,8 +412,11 @@ ldap_entries_page_set_current_dn (LdapEntriesPage *ldap_entries_page, const gcha
* UI actions
*/
static void
-action_add_to_fav_cb (G_GNUC_UNUSED GtkAction *action, LdapEntriesPage *ebrowser)
+action_add_to_fav_cb (G_GNUC_UNUSED GSimpleAction *action, G_GNUC_UNUSED GVariant *state, gpointer data)
{
+ LdapEntriesPage *ebrowser;
+ ebrowser = LDAP_ENTRIES_PAGE (data);
+
TFavorites *bfav;
TFavoritesAttributes fav;
GError *error = NULL;
@@ -441,8 +442,11 @@ action_add_to_fav_cb (G_GNUC_UNUSED GtkAction *action, LdapEntriesPage *ebrowser
}
static void
-action_dn_back_cb (G_GNUC_UNUSED GtkAction *action, LdapEntriesPage *ebrowser)
+action_dn_back_cb (G_GNUC_UNUSED GSimpleAction *action, G_GNUC_UNUSED GVariant *state, gpointer data)
{
+ LdapEntriesPage *ebrowser;
+ ebrowser = LDAP_ENTRIES_PAGE (data);
+
ebrowser->priv->add_hist_item = FALSE;
if (ebrowser->priv->current_hitem > 0) {
HistoryItem *hitem = NULL;
@@ -474,8 +478,11 @@ action_dn_back_cb (G_GNUC_UNUSED GtkAction *action, LdapEntriesPage *ebrowser)
}
static void
-action_dn_forward_cb (G_GNUC_UNUSED GtkAction *action, LdapEntriesPage *ebrowser)
+action_dn_forward_cb (G_GNUC_UNUSED GSimpleAction *action, G_GNUC_UNUSED GVariant *state, gpointer data)
{
+ LdapEntriesPage *ebrowser;
+ ebrowser = LDAP_ENTRIES_PAGE (data);
+
ebrowser->priv->add_hist_item = FALSE;
if ((ebrowser->priv->current_hitem >=0) &&
((guint) ebrowser->priv->current_hitem < ebrowser->priv->history_items->len)) {
@@ -507,68 +514,51 @@ action_dn_forward_cb (G_GNUC_UNUSED GtkAction *action, LdapEntriesPage *ebrowser
ebrowser->priv->add_hist_item = TRUE;
}
-static GtkActionEntry ui_actions[] = {
- { "LDAP", NULL, N_("_LDAP"), NULL, N_("LDAP"), NULL },
- { "AddToFav", /*STOCK_ADD_BOOKMARK*/ NULL, N_("Add to _Favorites"), NULL, N_("Add entry to
favorites"),
- G_CALLBACK (action_add_to_fav_cb)},
- { "DnBack", GTK_STOCK_GO_BACK, N_("Previous Entry"), NULL, N_("Move back to previous LDAP entry"),
- G_CALLBACK (action_dn_back_cb)},
- { "DnForward", GTK_STOCK_GO_FORWARD, N_("Next Entry"), NULL, N_("Move to next LDAP entry"),
- G_CALLBACK (action_dn_forward_cb)},
+static GActionEntry win_entries[] = {
+ { "AddToFav", action_add_to_fav_cb, NULL, NULL, NULL },
+ { "DnBack", action_dn_back_cb, NULL, NULL, NULL },
+ { "DnForward", action_dn_forward_cb, NULL, NULL, NULL },
};
-static const gchar *ui_actions_browser =
- "<ui>"
- " <menubar name='MenuBar'>"
- " <placeholder name='MenuExtension'>"
- " <menu name='LDAP' action='LDAP'>"
- " <menuitem name='AddToFav' action= 'AddToFav'/>"
- " <separator/>"
- " <menuitem name='DnBack' action= 'DnBack'/>"
- " <menuitem name='DnForward' action= 'DnForward'/>"
- " </menu>"
- " </placeholder>"
- " </menubar>"
- " <toolbar name='ToolBar'>"
- " <separator/>"
- " <toolitem action='AddToFav'/>"
- " <toolitem action='DnBack'/>"
- " <toolitem action='DnForward'/>"
- " </toolbar>"
- "</ui>";
-
-static GtkActionGroup *
-ldap_entries_page_page_get_actions_group (BrowserPage *page)
-{
- LdapEntriesPage *ebrowser;
-
- ebrowser = LDAP_ENTRIES_PAGE (page);
- if (! ebrowser->priv->agroup) {
- GtkActionGroup *agroup;
- agroup = gtk_action_group_new ("LdapLdapEntriesPageActions");
- gtk_action_group_set_translation_domain (agroup, GETTEXT_PACKAGE);
- gtk_action_group_add_actions (agroup, ui_actions, G_N_ELEMENTS (ui_actions), page);
- ebrowser->priv->agroup = agroup;
-
- GtkAction *action;
- const gchar *current_dn;
- action = gtk_action_group_get_action (agroup, "AddToFav");
- current_dn = ldap_entries_page_get_current_dn (ebrowser);
- gtk_action_set_sensitive (action, (current_dn && *current_dn) ? TRUE : FALSE);
-
- update_history_actions (ebrowser);
- }
-
- return g_object_ref (ebrowser->priv->agroup);
-}
-static const gchar *
-ldap_entries_page_page_get_actions_ui (G_GNUC_UNUSED BrowserPage *page)
+static void
+ldap_entries_customize (BrowserPage *page, GtkToolbar *toolbar, GtkHeaderBar *header)
{
- return ui_actions_browser;
+ g_print ("%s ()\n", __FUNCTION__);
+
+ customization_data_init (G_OBJECT (page), toolbar, header);
+
+ /* add perspective's actions */
+ customization_data_add_actions (G_OBJECT (page), win_entries, G_N_ELEMENTS (win_entries));
+
+ /* add to toolbar */
+ GtkToolItem *titem;
+ titem = gtk_tool_button_new (NULL, NULL);
+ gtk_tool_button_set_icon_name (GTK_TOOL_BUTTON (titem), "bookmark-new-symbolic");
+ gtk_widget_set_tooltip_text (GTK_WIDGET (titem), _("Add entry to Favorites"));
+ gtk_toolbar_insert (GTK_TOOLBAR (toolbar), titem, -1);
+ gtk_actionable_set_action_name (GTK_ACTIONABLE (titem), "win.AddToFav");
+ gtk_widget_show (GTK_WIDGET (titem));
+ customization_data_add_part (G_OBJECT (page), G_OBJECT (titem));
+
+ titem = gtk_tool_button_new (NULL, NULL);
+ gtk_tool_button_set_icon_name (GTK_TOOL_BUTTON (titem), "go-previous-symbolic");
+ gtk_widget_set_tooltip_text (GTK_WIDGET (titem), _("Move back to previous LDAP entry"));
+ gtk_toolbar_insert (GTK_TOOLBAR (toolbar), titem, -1);
+ gtk_actionable_set_action_name (GTK_ACTIONABLE (titem), "win.DnBack");
+ gtk_widget_show (GTK_WIDGET (titem));
+ customization_data_add_part (G_OBJECT (page), G_OBJECT (titem));
+
+ titem = gtk_tool_button_new (NULL, NULL);
+ gtk_tool_button_set_icon_name (GTK_TOOL_BUTTON (titem), "go-next-symbolic");
+ gtk_widget_set_tooltip_text (GTK_WIDGET (titem), _("Move to next LDAP entry"));
+ gtk_toolbar_insert (GTK_TOOLBAR (toolbar), titem, -1);
+ gtk_actionable_set_action_name (GTK_ACTIONABLE (titem), "win.DnForward");
+ gtk_widget_show (GTK_WIDGET (titem));
+ customization_data_add_part (G_OBJECT (page), G_OBJECT (titem));
}
static GtkWidget *
-ldap_entries_page_page_get_tab_label (BrowserPage *page, GtkWidget **out_close_button)
+ldap_entries_page_get_tab_label (BrowserPage *page, GtkWidget **out_close_button)
{
const gchar *tab_name;
GdkPixbuf *entries_pixbuf;
diff --git a/tools/browser/ldap-browser/ldap-search-page.c b/tools/browser/ldap-browser/ldap-search-page.c
index 973faf7..7277886 100644
--- a/tools/browser/ldap-browser/ldap-search-page.c
+++ b/tools/browser/ldap-browser/ldap-search-page.c
@@ -23,6 +23,7 @@
#include "filter-editor.h"
#include "../gdaui-bar.h"
#include "../ui-support.h"
+#include "../ui-customize.h"
#include "../browser-page.h"
#include "../browser-window.h"
#include "common/t-connection.h"
@@ -31,8 +32,6 @@
#include "vtable-dialog.h"
#include <libgda/gda-debug-macros.h>
-#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
-
typedef struct {
gchar *base_dn;
gchar *filter;
@@ -58,7 +57,6 @@ struct _LdapSearchPagePrivate {
GtkWidget *search_entry;
GtkWidget *result_view;
- GtkActionGroup *agroup;
GArray *history_items; /* array of @HistoryItem */
guint history_max_len; /* max allowed length of @history_items */
gint current_hitem; /* index in @history_items, or -1 */
@@ -71,9 +69,8 @@ static void ldap_search_page_dispose (GObject *object);
/* BrowserPage interface */
static void ldap_search_page_page_init (BrowserPageIface *iface);
-static GtkActionGroup *ldap_search_page_page_get_actions_group (BrowserPage *page);
-static const gchar *ldap_search_page_page_get_actions_ui (BrowserPage *page);
-static GtkWidget *ldap_search_page_page_get_tab_label (BrowserPage *page, GtkWidget
**out_close_button);
+static void ldap_search_customize (BrowserPage *page, GtkToolbar *toolbar, GtkHeaderBar
*header);
+static GtkWidget *ldap_search_page_get_tab_label (BrowserPage *page, GtkWidget **out_close_button);
static GObjectClass *parent_class = NULL;
@@ -95,9 +92,9 @@ ldap_search_page_class_init (LdapSearchPageClass *klass)
static void
ldap_search_page_page_init (BrowserPageIface *iface)
{
- iface->i_get_actions_group = ldap_search_page_page_get_actions_group;
- iface->i_get_actions_ui = ldap_search_page_page_get_actions_ui;
- iface->i_get_tab_label = ldap_search_page_page_get_tab_label;
+ iface->i_customize = ldap_search_customize;
+ iface->i_uncustomize = NULL;
+ iface->i_get_tab_label = ldap_search_page_get_tab_label;
}
static void
@@ -120,8 +117,6 @@ ldap_search_page_dispose (GObject *object)
if (epage->priv) {
if (epage->priv->tcnc)
g_object_unref (epage->priv->tcnc);
- if (epage->priv->agroup)
- g_object_unref (epage->priv->agroup);
if (epage->priv->history_items) {
guint i;
for (i = 0; i < epage->priv->history_items->len; i++) {
@@ -170,41 +165,6 @@ ldap_search_page_get_type (void)
}
static void
-update_history_actions (LdapSearchPage *epage)
-{
- if (!epage->priv->agroup)
- return;
- /*
- gboolean is_first = TRUE;
- gboolean is_last = TRUE;
- const gchar *current_classname;
- epage->priv->current_hitem = -1;
- current_classname = ldap_search_page_get_current_class (epage);
- if (current_classname) {
- guint i;
- for (i = 0; i < epage->priv->history_items->len; i++) {
- HistoryItem *hitem;
- hitem = g_array_index (epage->priv->history_items, HistoryItem*, i);
- if (!strcmp (hitem->classname, current_classname)) {
- if (i != 0)
- is_first = FALSE;
- if (i+1 < epage->priv->history_items->len)
- is_last = FALSE;
- epage->priv->current_hitem = (gint) i;
- break;
- }
- }
- }
-
- GtkAction *action;
- action = gtk_action_group_get_action (epage->priv->agroup, "DnBack");
- gtk_action_set_sensitive (action, !is_first);
- action = gtk_action_group_get_action (epage->priv->agroup, "DnForward");
- gtk_action_set_sensitive (action, !is_last);
- */
-}
-
-static void
filter_exec_clicked_cb (G_GNUC_UNUSED GtkWidget *button, LdapSearchPage *epage)
{
guint id;
@@ -307,13 +267,13 @@ ldap_search_page_new (TConnection *tcnc, const gchar *base_dn)
gtk_box_pack_start (GTK_BOX (hb), bb, FALSE, FALSE, 5);
button = ui_make_small_button (FALSE, FALSE, _("Clear"),
- GTK_STOCK_CLEAR, _("Clear the search settings"));
+ "edit-clear-symbolic", _("Clear the search settings"));
gtk_box_pack_start (GTK_BOX (bb), button, TRUE, TRUE, 0);
g_signal_connect (button, "clicked",
G_CALLBACK (filter_clear_clicked_cb), epage);
button = ui_make_small_button (FALSE, FALSE, _("Execute"),
- GTK_STOCK_EXECUTE, _("Execute LDAP search"));
+ "system-run-symbolic", _("Execute LDAP search"));
gtk_box_pack_start (GTK_BOX (bb), button, TRUE, TRUE, 0);
g_signal_connect (button, "clicked",
G_CALLBACK (filter_exec_clicked_cb), epage);
@@ -340,8 +300,11 @@ ldap_search_page_new (TConnection *tcnc, const gchar *base_dn)
* UI actions
*/
static void
-action_define_as_table_cb (G_GNUC_UNUSED GtkAction *action, LdapSearchPage *epage)
+action_define_as_table_cb (G_GNUC_UNUSED GSimpleAction *action, G_GNUC_UNUSED GVariant *state, gpointer data)
{
+ LdapSearchPage *epage;
+ epage = LDAP_SEARCH_PAGE (data);
+
GtkWidget *dlg;
gint res;
GtkWindow *parent;
@@ -377,153 +340,39 @@ action_define_as_table_cb (G_GNUC_UNUSED GtkAction *action, LdapSearchPage *epag
}
gtk_widget_destroy (dlg);
}
-/*
-static void
-action_class_back_cb (G_GNUC_UNUSED GtkAction *action, LdapSearchPage *epage)
-{
- epage->priv->add_hist_item = FALSE;
- if (epage->priv->current_hitem > 0) {
- HistoryItem *hitem = NULL;
- gboolean use_dn = TRUE;
- hitem = g_array_index (epage->priv->history_items, HistoryItem*,
- epage->priv->current_hitem - 1);
- if (hitem->reference) {
- if (gtk_tree_row_reference_valid (hitem->reference)) {
- GtkTreeSelection *sel;
- GtkTreePath *path;
- path = gtk_tree_row_reference_get_path (hitem->reference);
- sel = gtk_tree_view_get_selection (GTK_TREE_VIEW (epage->priv->search_view));
- gtk_tree_selection_select_path (sel, path);
- gtk_tree_view_scroll_to_cell (GTK_TREE_VIEW (epage->priv->search_view),
- path, NULL, TRUE, 0.5, 0.5);
- gtk_tree_path_free (path);
- use_dn = FALSE;
- }
- else {
- gtk_tree_row_reference_free (hitem->reference);
- hitem->reference = NULL;
- }
- }
- if (use_dn)
- search_view_set_current_class (SEARCH_VIEW (epage->priv->search_view),
- hitem->classname);
- }
- epage->priv->add_hist_item = TRUE;
-}
-
-static void
-action_class_forward_cb (G_GNUC_UNUSED GtkAction *action, LdapSearchPage *epage)
-{
- epage->priv->add_hist_item = FALSE;
- if ((epage->priv->current_hitem >=0) &&
- ((guint) epage->priv->current_hitem < epage->priv->history_items->len)) {
- HistoryItem *hitem = NULL;
- gboolean use_dn = TRUE;
- hitem = g_array_index (epage->priv->history_items, HistoryItem*,
- epage->priv->current_hitem + 1);
- if (hitem->reference) {
- if (gtk_tree_row_reference_valid (hitem->reference)) {
- GtkTreeSelection *sel;
- GtkTreePath *path;
- path = gtk_tree_row_reference_get_path (hitem->reference);
- sel = gtk_tree_view_get_selection (GTK_TREE_VIEW (epage->priv->search_view));
- gtk_tree_selection_select_path (sel, path);
- gtk_tree_view_scroll_to_cell (GTK_TREE_VIEW (epage->priv->search_view),
- path, NULL, TRUE, 0.5, 0.5);
- gtk_tree_path_free (path);
- use_dn = FALSE;
- }
- else {
- gtk_tree_row_reference_free (hitem->reference);
- hitem->reference = NULL;
- }
- }
- if (use_dn)
- search_view_set_current_class (SEARCH_VIEW (epage->priv->search_view),
- hitem->classname);
- }
- epage->priv->add_hist_item = TRUE;
-}
-*/
-static GtkActionEntry ui_actions[] = {
- { "LDAP", NULL, N_("_LDAP"), NULL, N_("LDAP"), NULL },
- { "DefineAsTable", /*BROWSER_STOCK_TABLE_ADD*/ NULL, N_("Define as Table"), NULL, N_("Define search
as a virtual table"),
- G_CALLBACK (action_define_as_table_cb)},
- /*
- { "DnBack", GTK_STOCK_GO_BACK, N_("Previous class"), NULL, N_("Move back to previous LDAP class"),
- G_CALLBACK (action_class_back_cb)},
- { "DnForward", GTK_STOCK_GO_FORWARD, N_("Next class"), NULL, N_("Move to next LDAP class"),
- G_CALLBACK (action_class_forward_cb)},
- */
+static GActionEntry win_entries[] = {
+ { "DefineAsTable", action_define_as_table_cb, NULL, NULL, NULL },
};
-static const gchar *ui_actions_page =
- "<ui>"
- " <menubar name='MenuBar'>"
- " <placeholder name='MenuExtension'>"
- " <menu name='LDAP' action='LDAP'>"
- " <menuitem name='DefineAsTable' action= 'DefineAsTable'/>"
- /*" <separator/>"
- " <menuitem name='DnBack' action= 'DnBack'/>"
- " <menuitem name='DnForward' action= 'DnForward'/>"*/
- " </menu>"
- " </placeholder>"
- " </menubar>"
- " <toolbar name='ToolBar'>"
- " <separator/>"
- " <toolitem action='DefineAsTable'/>"
- /*" <toolitem action='DnBack'/>"
- " <toolitem action='DnForward'/>"*/
- " </toolbar>"
- "</ui>";
-
-static GtkActionGroup *
-ldap_search_page_page_get_actions_group (BrowserPage *page)
-{
- LdapSearchPage *epage;
-
- epage = LDAP_SEARCH_PAGE (page);
- if (! epage->priv->agroup) {
- GtkActionGroup *agroup;
- agroup = gtk_action_group_new ("LdapLdapSearchPageActions");
- gtk_action_group_set_translation_domain (agroup, GETTEXT_PACKAGE);
- gtk_action_group_add_actions (agroup, ui_actions, G_N_ELEMENTS (ui_actions), page);
- epage->priv->agroup = agroup;
- GtkAction *action;
- gchar *base_dn, *filter, *attributes;
- gboolean act = FALSE;
- action = gtk_action_group_get_action (agroup, "DefineAsTable");
- filter_editor_get_settings (FILTER_EDITOR (epage->priv->search_entry),
- &base_dn, &filter, &attributes, NULL);
- if ((base_dn && *base_dn) || (filter && *filter) || (attributes && *attributes))
- act = TRUE;
- g_free (base_dn);
- g_free (filter);
- g_free (attributes);
- gtk_action_set_sensitive (action, act);
-
- update_history_actions (epage);
- }
-
- return g_object_ref (epage->priv->agroup);
-}
-
-static const gchar *
-ldap_search_page_page_get_actions_ui (G_GNUC_UNUSED BrowserPage *page)
+static void
+ldap_search_customize (BrowserPage *page, GtkToolbar *toolbar, GtkHeaderBar *header)
{
- return ui_actions_page;
+ g_print ("%s ()\n", __FUNCTION__);
+
+ customization_data_init (G_OBJECT (page), toolbar, header);
+
+ /* add perspective's actions */
+ customization_data_add_actions (G_OBJECT (page), win_entries, G_N_ELEMENTS (win_entries));
+
+ /* add to toolbar */
+ GtkToolItem *titem;
+ titem = gtk_tool_button_new (NULL, NULL);
+ gtk_tool_button_set_icon_name (GTK_TOOL_BUTTON (titem), "star-new-symbolic");
+ gtk_widget_set_tooltip_text (GTK_WIDGET (titem), _("Define search as a virtual table"));
+ gtk_toolbar_insert (GTK_TOOLBAR (toolbar), titem, -1);
+ gtk_actionable_set_action_name (GTK_ACTIONABLE (titem), "win.DefineAsTable");
+ gtk_widget_show (GTK_WIDGET (titem));
+ customization_data_add_part (G_OBJECT (page), G_OBJECT (titem));
}
static GtkWidget *
-ldap_search_page_page_get_tab_label (BrowserPage *page, GtkWidget **out_close_button)
+ldap_search_page_get_tab_label (BrowserPage *page, GtkWidget **out_close_button)
{
const gchar *tab_name;
- GdkPixbuf *search_pixbuf;
- search_pixbuf = gtk_widget_render_icon_pixbuf (GTK_WIDGET (page), GTK_STOCK_FIND, GTK_ICON_SIZE_MENU);
tab_name = _("LDAP search");
- return ui_make_tab_label_with_pixbuf (tab_name,
- search_pixbuf,
- out_close_button ? TRUE : FALSE, out_close_button);
+ return ui_make_tab_label_with_icon (tab_name,
+ "edit-find-symbolic",
+ out_close_button ? TRUE : FALSE, out_close_button);
}
diff --git a/tools/browser/ldap-browser/vtable-dialog.c b/tools/browser/ldap-browser/vtable-dialog.c
index 7b64d5e..938abd8 100644
--- a/tools/browser/ldap-browser/vtable-dialog.c
+++ b/tools/browser/ldap-browser/vtable-dialog.c
@@ -21,8 +21,6 @@
#include <gtk/gtk.h>
#include "vtable-dialog.h"
-#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
-
#define SPACING 3
struct _VtableDialogPrivate {
@@ -156,8 +154,8 @@ vtable_dialog_new (GtkWindow *parent, TConnection *tcnc)
gtk_widget_show_all (dcontents);
gtk_dialog_add_buttons (GTK_DIALOG (dlg),
- GTK_STOCK_OK, GTK_RESPONSE_OK,
- GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, NULL);
+ _("_Ok"), GTK_RESPONSE_OK,
+ _("_Cancel"), GTK_RESPONSE_CANCEL, NULL);
return (GtkWidget*) dlg;
}
diff --git a/tools/browser/query-exec/query-console-page.c b/tools/browser/query-exec/query-console-page.c
index ba7d048..2146b80 100644
--- a/tools/browser/query-exec/query-console-page.c
+++ b/tools/browser/query-exec/query-console-page.c
@@ -23,6 +23,7 @@
#include "query-console-page.h"
#include "../dnd.h"
#include "../ui-support.h"
+#include "../ui-customize.h"
#include "../gdaui-bar.h"
#include "query-exec-perspective.h"
#include "../browser-window.h"
@@ -34,14 +35,10 @@
#include <libgda-ui/libgda-ui.h>
#include <libgda/gda-debug-macros.h>
-#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
-
struct _QueryConsolePagePrivate {
TConnection *tcnc;
GdaSqlParser *parser;
- GtkActionGroup *agroup;
-
GdauiBar *header;
GtkWidget *vpaned; /* top=>query editor, bottom=>results */
@@ -77,9 +74,8 @@ static void query_console_page_grab_focus (GtkWidget *widget);
/* BrowserPage interface */
static void query_console_page_page_init (BrowserPageIface *iface);
-static GtkActionGroup *query_console_page_page_get_actions_group (BrowserPage *page);
-static const gchar *query_console_page_page_get_actions_ui (BrowserPage *page);
-static GtkWidget *query_console_page_page_get_tab_label (BrowserPage *page, GtkWidget
**out_close_button);
+static void query_console_customize (BrowserPage *page, GtkToolbar *toolbar, GtkHeaderBar
*header);
+static GtkWidget *query_console_page_get_tab_label (BrowserPage *page, GtkWidget
**out_close_button);
static GObjectClass *parent_class = NULL;
@@ -114,9 +110,9 @@ query_console_page_show_all (GtkWidget *widget)
static void
query_console_page_page_init (BrowserPageIface *iface)
{
- iface->i_get_actions_group = query_console_page_page_get_actions_group;
- iface->i_get_actions_ui = query_console_page_page_get_actions_ui;
- iface->i_get_tab_label = query_console_page_page_get_tab_label;
+ iface->i_customize = query_console_customize;
+ iface->i_uncustomize = NULL;
+ iface->i_get_tab_label = query_console_page_get_tab_label;
}
static void
@@ -127,14 +123,12 @@ query_console_page_init (QueryConsolePage *tconsole, G_GNUC_UNUSED QueryConsoleP
tconsole->priv->params_compute_id = 0;
tconsole->priv->params = NULL;
tconsole->priv->params_popup = NULL;
- tconsole->priv->agroup = NULL;
tconsole->priv->fav_id = -1;
gtk_orientable_set_orientation (GTK_ORIENTABLE (tconsole), GTK_ORIENTATION_VERTICAL);
}
-static void connection_busy_cb (TConnection *tcnc, gboolean is_busy,
- gchar *reason, QueryConsolePage *tconsole);
+static void connection_status_changed_cb (TConnection *tcnc, GdaConnectionStatus status, QueryConsolePage
*tconsole);
static void
query_console_page_dispose (GObject *object)
{
@@ -144,7 +138,7 @@ query_console_page_dispose (GObject *object)
if (tconsole->priv) {
if (tconsole->priv->tcnc) {
g_signal_handlers_disconnect_by_func (tconsole->priv->tcnc,
- G_CALLBACK (connection_busy_cb), tconsole);
+ G_CALLBACK (connection_status_changed_cb),
tconsole);
g_object_unref (tconsole->priv->tcnc);
}
if (tconsole->priv->parser)
@@ -155,8 +149,6 @@ query_console_page_dispose (GObject *object)
g_source_remove (tconsole->priv->params_compute_id);
if (tconsole->priv->params_popup)
gtk_widget_destroy (tconsole->priv->params_popup);
- if (tconsole->priv->agroup)
- g_object_unref (tconsole->priv->agroup);
if (tconsole->priv->favorites_menu)
gtk_widget_destroy (tconsole->priv->favorites_menu);
@@ -405,28 +397,29 @@ query_console_page_new (TConnection *tcnc)
gtk_widget_hide (tconsole->priv->params_top);
/* busy connection handling */
- gchar *reason = NULL;
- if (t_connection_is_busy (tconsole->priv->tcnc, &reason)) {
- connection_busy_cb (tconsole->priv->tcnc, TRUE, reason, tconsole);
- g_free (reason);
- }
- g_signal_connect (tconsole->priv->tcnc, "busy",
- G_CALLBACK (connection_busy_cb), tconsole);
+ connection_status_changed_cb (tconsole->priv->tcnc,
+ gda_connection_get_status (t_connection_get_cnc (tconsole->priv->tcnc)),
+ tconsole);
+
+ g_signal_connect (tconsole->priv->tcnc, "status-changed",
+ G_CALLBACK (connection_status_changed_cb), tconsole);
return (GtkWidget*) tconsole;
}
static void
-connection_busy_cb (G_GNUC_UNUSED TConnection *tcnc, gboolean is_busy, G_GNUC_UNUSED gchar *reason,
QueryConsolePage *tconsole)
+connection_status_changed_cb (G_GNUC_UNUSED TConnection *tcnc, GdaConnectionStatus status, QueryConsolePage
*tconsole)
{
+ gboolean is_busy;
+ is_busy = (status == GDA_CONNECTION_STATUS_IDLE) ? FALSE : TRUE;
+
gtk_widget_set_sensitive (tconsole->priv->exec_button, !is_busy);
gtk_widget_set_sensitive (tconsole->priv->indent_button, !is_busy);
- if (tconsole->priv->agroup) {
- GtkAction *action;
- action = gtk_action_group_get_action (tconsole->priv->agroup, "ExecuteQuery");
- gtk_action_set_sensitive (action, !is_busy);
- }
+ GAction *action;
+ action = customization_data_get_action (G_OBJECT (tconsole), "ExecuteQuery");
+ if (action)
+ g_simple_action_set_enabled (G_SIMPLE_ACTION (action), !is_busy);
}
static void
@@ -881,7 +874,7 @@ sql_execute_clicked_cb (G_GNUC_UNUSED GtkButton *button, QueryConsolePage *tcons
gtk_box_pack_start (GTK_BOX (vbox), bbox, FALSE, FALSE, 10);
gtk_button_box_set_layout (GTK_BUTTON_BOX (bbox), GTK_BUTTONBOX_END);
- button = gtk_button_new_from_stock (GTK_STOCK_EXECUTE);
+ button = gtk_button_new_from_icon_name ("system-run-symbolic",
GTK_ICON_SIZE_BUTTON);
gtk_box_pack_start (GTK_BOX (bbox), button, TRUE, TRUE, 0);
g_signal_connect_swapped (button, "clicked",
G_CALLBACK (gtk_widget_hide),
tconsole->priv->params_popup);
@@ -890,7 +883,7 @@ sql_execute_clicked_cb (G_GNUC_UNUSED GtkButton *button, QueryConsolePage *tcons
gtk_widget_set_sensitive (button, FALSE);
g_object_set_data (G_OBJECT (tconsole->priv->params_popup), "exec", button);
- button = gtk_button_new_from_stock (GTK_STOCK_CANCEL);
+ button = gtk_button_new_with_mnemonic (_("_Cancel"));
gtk_box_pack_start (GTK_BOX (bbox), button, TRUE, TRUE, 0);
g_signal_connect_swapped (button, "clicked",
G_CALLBACK (gtk_widget_hide),
tconsole->priv->params_popup);
@@ -1062,66 +1055,41 @@ query_console_page_set_text (QueryConsolePage *console, const gchar *text, gint
* UI actions
*/
static void
-query_execute_cb (G_GNUC_UNUSED GtkAction *action, QueryConsolePage *tconsole)
+query_execute_cb (G_GNUC_UNUSED GSimpleAction *action, G_GNUC_UNUSED GVariant *state, gpointer data)
{
+ QueryConsolePage *tconsole;
+ tconsole = QUERY_CONSOLE_PAGE (data);
+
sql_execute_clicked_cb (NULL, tconsole);
}
-#ifdef HAVE_GTKSOURCEVIEW
-static void
-editor_undo_cb (G_GNUC_UNUSED GtkAction *action, G_GNUC_UNUSED QueryConsolePage *tconsole)
-{
- TO_IMPLEMENT;
-}
-#endif
-
-static GtkActionEntry ui_actions[] = {
- { "ExecuteQuery", GTK_STOCK_EXECUTE, N_("_Execute"), NULL, N_("Execute query"),
- G_CALLBACK (query_execute_cb)},
-#ifdef HAVE_GTKSOURCEVIEW
- { "EditorUndo", GTK_STOCK_UNDO, N_("_Undo"), NULL, N_("Undo last change"),
- G_CALLBACK (editor_undo_cb)},
-#endif
+static GActionEntry win_entries[] = {
+ { "ExecuteQuery", query_execute_cb, NULL, NULL, NULL },
};
-static const gchar *ui_actions_console =
- "<ui>"
- " <menubar name='MenuBar'>"
- " <menu name='Edit' action='Edit'>"
- " <menuitem name='EditorUndo' action= 'EditorUndo'/>"
- " </menu>"
- " </menubar>"
- " <toolbar name='ToolBar'>"
- " <separator/>"
- " <toolitem action='ExecuteQuery'/>"
- " </toolbar>"
- "</ui>";
-
-static GtkActionGroup *
-query_console_page_page_get_actions_group (BrowserPage *page)
-{
- QueryConsolePage *tconsole;
- tconsole = QUERY_CONSOLE_PAGE (page);
- if (! tconsole->priv->agroup) {
- tconsole->priv->agroup = gtk_action_group_new ("QueryExecConsoleActions");
- gtk_action_group_set_translation_domain (tconsole->priv->agroup, GETTEXT_PACKAGE);
- gtk_action_group_add_actions (tconsole->priv->agroup,
- ui_actions, G_N_ELEMENTS (ui_actions), page);
-
- GtkAction *action;
- action = gtk_action_group_get_action (tconsole->priv->agroup, "ExecuteQuery");
- gtk_action_set_sensitive (action, !t_connection_is_busy (tconsole->priv->tcnc, NULL));
- }
- return g_object_ref (tconsole->priv->agroup);
-}
-static const gchar *
-query_console_page_page_get_actions_ui (G_GNUC_UNUSED BrowserPage *page)
+static void
+query_console_customize (BrowserPage *page, GtkToolbar *toolbar, GtkHeaderBar *header)
{
- return ui_actions_console;
+ g_print ("%s ()\n", __FUNCTION__);
+
+ customization_data_init (G_OBJECT (page), toolbar, header);
+
+ /* add perspective's actions */
+ customization_data_add_actions (G_OBJECT (page), win_entries, G_N_ELEMENTS (win_entries));
+
+ /* add to toolbar */
+ GtkToolItem *titem;
+ titem = gtk_tool_button_new (NULL, NULL);
+ gtk_tool_button_set_icon_name (GTK_TOOL_BUTTON (titem), "system-run-symbolic");
+ gtk_widget_set_tooltip_text (GTK_WIDGET (titem), _("Execute query"));
+ gtk_toolbar_insert (GTK_TOOLBAR (toolbar), titem, -1);
+ gtk_actionable_set_action_name (GTK_ACTIONABLE (titem), "win.ExecuteQuery");
+ gtk_widget_show (GTK_WIDGET (titem));
+ customization_data_add_part (G_OBJECT (page), G_OBJECT (titem));
}
static GtkWidget *
-query_console_page_page_get_tab_label (BrowserPage *page, GtkWidget **out_close_button)
+query_console_page_get_tab_label (BrowserPage *page, GtkWidget **out_close_button)
{
const gchar *tab_name;
diff --git a/tools/browser/query-exec/query-exec-perspective.c
b/tools/browser/query-exec/query-exec-perspective.c
index a816f11..4b70197 100644
--- a/tools/browser/query-exec/query-exec-perspective.c
+++ b/tools/browser/query-exec/query-exec-perspective.c
@@ -25,6 +25,7 @@
#include "../browser-page.h"
#include "query-console-page.h"
#include "../ui-support.h"
+#include "../ui-customize.h"
#include "query-favorite-selector.h"
#include "query-editor.h"
#include <libgda/gda-debug-macros.h>
@@ -41,10 +42,9 @@ static void query_exec_new_cb (G_GNUC_UNUSED GSimpleAction *action, G_GNUC_UNUSE
/* BrowserPerspective interface */
static void query_exec_perspective_perspective_init (BrowserPerspectiveIface *iface);
+static GtkWidget *query_exec_perspective_get_notebook (BrowserPerspective *perspective);
static void query_exec_perspective_customize (BrowserPerspective *perspective,
- GtkToolbar *toolbar, GtkHeaderBar *header,
GMenu *menu);
-static void query_exec_perspective_uncustomize (BrowserPerspective *perspective,
- GtkToolbar *toolbar, GtkHeaderBar *header,
GMenu *menu);
+ GtkToolbar *toolbar, GtkHeaderBar *header);
/* get a pointer to the parents to be able to call their destructor */
static GObjectClass *parent_class = NULL;
@@ -55,8 +55,6 @@ struct _QueryExecPerspectivePrivate {
gboolean favorites_shown;
BrowserWindow *bwin;
TConnection *tcnc;
-
- GArray *custom_parts;
};
GType
@@ -117,8 +115,9 @@ query_exec_perspective_grab_focus (GtkWidget *widget)
static void
query_exec_perspective_perspective_init (BrowserPerspectiveIface *iface)
{
+ iface->i_get_notebook = query_exec_perspective_get_notebook;
iface->i_customize = query_exec_perspective_customize;
- iface->i_uncustomize = query_exec_perspective_uncustomize;
+ iface->i_uncustomize = NULL;
}
static void
@@ -167,11 +166,9 @@ query_exec_perspective_new (BrowserWindow *bwin)
perspective->priv->favorites = wid;
}
- nb = gtk_notebook_new ();
+ nb = browser_perspective_create_notebook (bpers);
perspective->priv->notebook = nb;
gtk_paned_pack2 (GTK_PANED (paned), nb, TRUE, TRUE);
- gtk_notebook_set_scrollable (GTK_NOTEBOOK (nb), TRUE);
- gtk_notebook_popup_enable (GTK_NOTEBOOK (nb));
GtkWidget *page, *tlabel, *button;
@@ -197,8 +194,6 @@ query_exec_perspective_new (BrowserWindow *bwin)
gtk_widget_hide (perspective->priv->favorites);
gtk_widget_grab_focus (page);
- browser_perspective_declare_notebook (bpers, GTK_NOTEBOOK (perspective->priv->notebook));
-
return bpers;
}
@@ -244,7 +239,9 @@ query_exec_perspective_dispose (GObject *object)
perspective = QUERY_EXEC_PERSPECTIVE (object);
if (perspective->priv) {
- browser_perspective_declare_notebook ((BrowserPerspective*) perspective, NULL);
+ if (customization_data_exists (object))
+ customization_data_release (object);
+
if (perspective->priv->tcnc)
g_object_unref (perspective->priv->tcnc);
@@ -305,30 +302,28 @@ favorites_toggle_cb (GSimpleAction *action, GVariant *state, gpointer data)
g_simple_action_set_state (action, state);
}
+static GtkWidget *
+query_exec_perspective_get_notebook (BrowserPerspective *perspective)
+{
+ g_return_val_if_fail (IS_QUERY_EXEC_PERSPECTIVE (perspective), NULL);
+ return QUERY_EXEC_PERSPECTIVE (perspective)->priv->notebook;
+}
+
static GActionEntry win_entries[] = {
{ "show-favorites", NULL, NULL, "true", favorites_toggle_cb },
{ "query-exec-new", query_exec_new_cb, NULL, NULL, NULL },
};
static void
-query_exec_perspective_customize (BrowserPerspective *perspective,
- GtkToolbar *toolbar, GtkHeaderBar *header, GMenu *menu)
+query_exec_perspective_customize (BrowserPerspective *perspective, GtkToolbar *toolbar, GtkHeaderBar *header)
{
g_print ("%s ()\n", __FUNCTION__);
- QueryExecPerspective *persp;
- persp = QUERY_EXEC_PERSPECTIVE (perspective);
- BrowserWindow *bwin;
- bwin = browser_perspective_get_window (perspective);
+ customization_data_init (G_OBJECT (perspective), toolbar, header);
/* add perspective's actions */
- g_action_map_add_action_entries (G_ACTION_MAP (bwin),
- win_entries, G_N_ELEMENTS (win_entries),
- perspective);
-
- g_assert (! persp->priv->custom_parts);
- persp->priv->custom_parts = g_array_new (FALSE, FALSE, sizeof (gpointer));
-
+ customization_data_add_actions (G_OBJECT (perspective), win_entries, G_N_ELEMENTS (win_entries));
+
/* add to toolbar */
GtkToolItem *titem;
titem = gtk_toggle_tool_button_new ();
@@ -337,7 +332,7 @@ query_exec_perspective_customize (BrowserPerspective *perspective,
gtk_toolbar_insert (GTK_TOOLBAR (toolbar), titem, -1);
gtk_actionable_set_action_name (GTK_ACTIONABLE (titem), "win.show-favorites");
gtk_widget_show (GTK_WIDGET (titem));
- g_array_append_val (persp->priv->custom_parts, titem);
+ customization_data_add_part (G_OBJECT (perspective), G_OBJECT (titem));
titem = gtk_tool_button_new (NULL, NULL);
gtk_tool_button_set_icon_name (GTK_TOOL_BUTTON (titem), "tab-new-symbolic");
@@ -345,38 +340,5 @@ query_exec_perspective_customize (BrowserPerspective *perspective,
gtk_toolbar_insert (GTK_TOOLBAR (toolbar), titem, -1);
gtk_actionable_set_action_name (GTK_ACTIONABLE (titem), "win.query-exec-new");
gtk_widget_show (GTK_WIDGET (titem));
- g_array_append_val (persp->priv->custom_parts, titem);
-}
-
-static void
-query_exec_perspective_uncustomize (BrowserPerspective *perspective,
- GtkToolbar *toolbar, GtkHeaderBar *header, GMenu *menu)
-{
- g_print ("%s ()\n", __FUNCTION__);
- QueryExecPerspective *persp;
- persp = QUERY_EXEC_PERSPECTIVE (perspective);
-
- BrowserWindow *bwin;
- bwin = browser_perspective_get_window (perspective);
-
- /* remove perspective's actions */
- guint i;
- for (i = 0; i < G_N_ELEMENTS (win_entries); i++) {
- GActionEntry *entry;
- entry = &win_entries [i];
- g_action_map_remove_action (G_ACTION_MAP (bwin), entry->name);
- }
-
- /* cleanups, headerbar and toolbar */
- g_assert (persp->priv->custom_parts);
- for (i = 0; i < persp->priv->custom_parts->len; i++) {
- GObject *obj;
- obj = g_array_index (persp->priv->custom_parts, GObject*, i);
- if (GTK_IS_WIDGET (obj))
- gtk_widget_destroy (GTK_WIDGET (obj));
- else
- g_warning ("Unknown type to uncustomize: %s\n", G_OBJECT_CLASS_NAME
(G_OBJECT_GET_CLASS (obj)));
- }
- g_array_free (persp->priv->custom_parts, TRUE);
- persp->priv->custom_parts = NULL;
+ customization_data_add_part (G_OBJECT (perspective), G_OBJECT (titem));
}
diff --git a/tools/browser/query-exec/query-result.c b/tools/browser/query-exec/query-result.c
index c0e6770..52815dd 100644
--- a/tools/browser/query-exec/query-result.c
+++ b/tools/browser/query-exec/query-result.c
@@ -357,7 +357,7 @@ make_widget_for_notice (void)
}
static void
-action_refresh_cb (GtkAction *action, QueryResult *qres)
+action_refresh_cb (G_GNUC_UNUSED GtkWidget *button, QueryResult *qres)
{
QueryEditorHistoryBatch *batch;
QueryEditorHistoryItem *item;
@@ -399,7 +399,7 @@ make_widget_for_set (GdaSet *set)
GtkWidget *hbox, *img;
hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 5);
- img = gtk_image_new_from_stock (GTK_STOCK_DIALOG_INFO, GTK_ICON_SIZE_DIALOG);
+ img = gtk_image_new_from_icon_name ("dialog-information", GTK_ICON_SIZE_DIALOG);
gtk_widget_set_halign (img, GTK_ALIGN_START);
gtk_box_pack_start (GTK_BOX (hbox), img, FALSE, FALSE, 0);
@@ -462,7 +462,7 @@ make_widget_for_error (GError *error)
GtkWidget *hbox, *img;
hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 5);
- img = gtk_image_new_from_stock (GTK_STOCK_DIALOG_ERROR, GTK_ICON_SIZE_DIALOG);
+ img = gtk_image_new_from_icon_name ("dialog-error", GTK_ICON_SIZE_DIALOG);
gtk_widget_set_halign (img, GTK_ALIGN_START);
gtk_box_pack_start (GTK_BOX (hbox), img, FALSE, FALSE, 0);
diff --git a/tools/browser/schema-browser/relations-diagram.c
b/tools/browser/schema-browser/relations-diagram.c
index 3adfe9c..bf61f16 100644
--- a/tools/browser/schema-browser/relations-diagram.c
+++ b/tools/browser/schema-browser/relations-diagram.c
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2009 - 2014 Vivien Malerba <malerba gnome-db org>
+ * Copyright (C) 2009 - 2015 Vivien Malerba <malerba gnome-db org>
* Copyright (C) 2010 David King <davidk openismus com>
* Copyright (C) 2011 Murray Cumming <murrayc murrayc com>
*
@@ -22,6 +22,7 @@
#include <string.h>
#include "t-app.h"
#include "relations-diagram.h"
+#include "../ui-customize.h"
#include "../gdaui-bar.h"
#include "../canvas/browser-canvas-db-relations.h"
#include <gdk/gdkkeysyms.h>
@@ -31,7 +32,6 @@
#include "../browser-window.h"
#include "../data-manager/data-manager-perspective.h"
#include "../ui-support.h"
-#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
struct _RelationsDiagramPrivate {
TConnection *tcnc;
@@ -60,9 +60,9 @@ static void relations_diagram_get_property (GObject *object,
/* BrowserPage interface */
static void relations_diagram_page_init (BrowserPageIface *iface);
-static GtkActionGroup *relations_diagram_page_get_actions_group (BrowserPage *page);
-static const gchar *relations_diagram_page_get_actions_ui (BrowserPage *page);
-static GtkWidget *relations_diagram_page_get_tab_label (BrowserPage *page, GtkWidget
**out_close_button);
+static void relations_diagram_customize (BrowserPage *page, GtkToolbar *toolbar,
+ GtkHeaderBar *header);
+static GtkWidget *relations_diagram_get_tab_label (BrowserPage *page, GtkWidget
**out_close_button);
static void meta_changed_cb (TConnection *tcnc, GdaMetaStruct *mstruct, RelationsDiagram *diagram);
static void favorites_changed_cb (TConnection *tcnc, RelationsDiagram *diagram);
@@ -97,9 +97,9 @@ relations_diagram_class_init (RelationsDiagramClass *klass)
static void
relations_diagram_page_init (BrowserPageIface *iface)
{
- iface->i_get_actions_group = relations_diagram_page_get_actions_group;
- iface->i_get_actions_ui = relations_diagram_page_get_actions_ui;
- iface->i_get_tab_label = relations_diagram_page_get_tab_label;
+ iface->i_customize = relations_diagram_customize;
+ iface->i_uncustomize = NULL;
+ iface->i_get_tab_label = relations_diagram_get_tab_label;
}
static void
@@ -476,12 +476,6 @@ relations_diagram_set_fav_id (RelationsDiagram *diagram, gint fav_id, GError **e
g_free (str);
diagram->priv->fav_id = -1;
}
-
- /* update notebook's tab label */
- BrowserPerspective *pers;
- pers = browser_page_get_perspective (BROWSER_PAGE (diagram));
- if (pers)
- browser_perspective_page_tab_label_change (pers, BROWSER_PAGE (diagram));
}
/**
@@ -496,8 +490,11 @@ relations_diagram_get_fav_id (RelationsDiagram *diagram)
}
static void
-action_view_contents_cb (G_GNUC_UNUSED GtkAction *action, RelationsDiagram *diagram)
+action_view_contents_cb (G_GNUC_UNUSED GSimpleAction *action, G_GNUC_UNUSED GVariant *state, gpointer data)
{
+ RelationsDiagram *diagram;
+ diagram = RELATIONS_DIAGRAM (data);
+
gchar *str;
str = browser_canvas_db_relations_items_to_data_manager (BROWSER_CANVAS_DB_RELATIONS
(diagram->priv->canvas));
g_print ("%s\n", str);
@@ -513,41 +510,33 @@ action_view_contents_cb (G_GNUC_UNUSED GtkAction *action, RelationsDiagram *dia
}
}
-
-static GtkActionEntry ui_actions[] = {
- { "ViewContents", GTK_STOCK_EDIT, N_("_Contents"), NULL, N_("View contents"),
- G_CALLBACK (action_view_contents_cb)},
+static GActionEntry win_entries[] = {
+ { "ViewContents", action_view_contents_cb, NULL, NULL, NULL },
};
-static const gchar *ui_actions_info =
- "<ui>"
- " <menubar name='MenuBar'>"
- " </menubar>"
- " <toolbar name='ToolBar'>"
- " <separator/>"
- " <toolitem action='ViewContents'/>"
- " </toolbar>"
- "</ui>";
-
-static GtkActionGroup *
-relations_diagram_page_get_actions_group (BrowserPage *page)
-{
- GtkActionGroup *agroup;
- agroup = gtk_action_group_new ("SchemaBrowserRelationsDiagramActions");
- gtk_action_group_set_translation_domain (agroup, GETTEXT_PACKAGE);
- gtk_action_group_add_actions (agroup, ui_actions, G_N_ELEMENTS (ui_actions), page);
-
- return agroup;
-}
-static const gchar *
-relations_diagram_page_get_actions_ui (G_GNUC_UNUSED BrowserPage *page)
+static void
+relations_diagram_customize (BrowserPage *page, GtkToolbar *toolbar, GtkHeaderBar *header)
{
- return ui_actions_info;
+ g_print ("%s ()\n", __FUNCTION__);
+
+ customization_data_init (G_OBJECT (page), toolbar, header);
+
+ /* add perspective's actions */
+ customization_data_add_actions (G_OBJECT (page), win_entries, G_N_ELEMENTS (win_entries));
+
+ /* add to toolbar */
+ GtkToolItem *titem;
+ titem = gtk_tool_button_new (NULL, NULL);
+ gtk_tool_button_set_icon_name (GTK_TOOL_BUTTON (titem), "go-jump-symbolic");
+ gtk_widget_set_tooltip_text (GTK_WIDGET (titem), _("Manage data in selected tables"));
+ gtk_toolbar_insert (GTK_TOOLBAR (toolbar), titem, -1);
+ gtk_actionable_set_action_name (GTK_ACTIONABLE (titem), "win.ViewContents");
+ gtk_widget_show (GTK_WIDGET (titem));
+ customization_data_add_part (G_OBJECT (page), G_OBJECT (titem));
}
-
static GtkWidget *
-relations_diagram_page_get_tab_label (BrowserPage *page, GtkWidget **out_close_button)
+relations_diagram_get_tab_label (BrowserPage *page, GtkWidget **out_close_button)
{
GtkWidget *wid;
RelationsDiagram *diagram;
diff --git a/tools/browser/schema-browser/schema-browser-perspective.c
b/tools/browser/schema-browser/schema-browser-perspective.c
index 4bfc152..adae26d 100644
--- a/tools/browser/schema-browser/schema-browser-perspective.c
+++ b/tools/browser/schema-browser/schema-browser-perspective.c
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2009 - 2015 Vivien Malerba <malerba gnome-db org>
+5 4* Copyright (C) 2009 - 2015 Vivien Malerba <malerba gnome-db org>
* Copyright (C) 2010 David King <davidk openismus com>
* Copyright (C) 2011 Murray Cumming <murrayc murrayc com>
*
@@ -26,6 +26,7 @@
#include "../browser-window.h"
#include "table-info.h"
#include "../ui-support.h"
+#include "../ui-customize.h"
#include "../browser-page.h"
#ifdef HAVE_GOOCANVAS
#include "relations-diagram.h"
@@ -41,10 +42,10 @@ static void schema_browser_perspective_dispose (GObject *object);
/* BrowserPerspective interface */
static void schema_browser_perspective_perspective_init (BrowserPerspectiveIface *iface);
+static GtkWidget *schema_browser_perspective_get_notebook (BrowserPerspective *perspective);
static void schema_browser_perspective_customize (BrowserPerspective *perspective,
- GtkToolbar *toolbar, GtkHeaderBar *header,
GMenu *menu);
-static void schema_browser_perspective_uncustomize (BrowserPerspective *perspective,
- GtkToolbar *toolbar, GtkHeaderBar
*header, GMenu *menu);
+ GtkToolbar *toolbar, GtkHeaderBar *header);
+
/* get a pointer to the parents to be able to call their destructor */
static GObjectClass *parent_class = NULL;
@@ -54,8 +55,6 @@ struct _SchemaBrowserPerspectivePrivate {
GtkWidget *favorites;
gboolean favorites_shown;
BrowserWindow *bwin;
-
- GArray *custom_parts;
};
GType
@@ -106,8 +105,9 @@ schema_browser_perspective_class_init (SchemaBrowserPerspectiveClass * klass)
static void
schema_browser_perspective_perspective_init (BrowserPerspectiveIface *iface)
{
+ iface->i_get_notebook = schema_browser_perspective_get_notebook;
iface->i_customize = schema_browser_perspective_customize;
- iface->i_uncustomize = schema_browser_perspective_uncustomize;
+ iface->i_uncustomize = NULL;
}
@@ -116,7 +116,6 @@ schema_browser_perspective_init (SchemaBrowserPerspective *perspective)
{
perspective->priv = g_new0 (SchemaBrowserPerspectivePrivate, 1);
perspective->priv->favorites_shown = TRUE;
- perspective->priv->custom_parts = NULL;
gtk_orientable_set_orientation (GTK_ORIENTABLE (perspective), GTK_ORIENTATION_VERTICAL);
}
@@ -156,11 +155,9 @@ schema_browser_perspective_new (BrowserWindow *bwin)
perspective->priv->favorites = wid;
}
- nb = gtk_notebook_new ();
+ nb = browser_perspective_create_notebook (bpers);
perspective->priv->notebook = nb;
gtk_paned_add2 (GTK_PANED (paned), nb);
- gtk_notebook_set_scrollable (GTK_NOTEBOOK (nb), TRUE);
- gtk_notebook_popup_enable (GTK_NOTEBOOK (nb));
wid = objects_index_new (tcnc);
g_signal_connect (wid, "selection-changed",
@@ -178,8 +175,6 @@ schema_browser_perspective_new (BrowserWindow *bwin)
if (perspective->priv->favorites && !perspective->priv->favorites_shown)
gtk_widget_hide (perspective->priv->favorites);
- browser_perspective_declare_notebook (bpers, GTK_NOTEBOOK (perspective->priv->notebook));
-
return bpers;
}
@@ -267,7 +262,9 @@ schema_browser_perspective_dispose (GObject *object)
perspective = SCHEMA_BROWSER_PERSPECTIVE (object);
if (perspective->priv) {
- browser_perspective_declare_notebook ((BrowserPerspective*) perspective, NULL);
+ if (customization_data_exists (object))
+ customization_data_release (object);
+
g_free (perspective->priv);
perspective->priv = NULL;
}
@@ -304,6 +301,13 @@ favorites_toggle_cb (GSimpleAction *action, GVariant *state, gpointer data)
g_simple_action_set_state (action, state);
}
+static GtkWidget *
+schema_browser_perspective_get_notebook (BrowserPerspective *perspective)
+{
+ g_return_val_if_fail (IS_SCHEMA_BROWSER_PERSPECTIVE (perspective), NULL);
+ return SCHEMA_BROWSER_PERSPECTIVE (perspective)->priv->notebook;
+}
+
static GActionEntry win_entries[] = {
{ "show-favorites", NULL, NULL, "true", favorites_toggle_cb },
#ifdef HAVE_GOOCANVAS
@@ -312,23 +316,14 @@ static GActionEntry win_entries[] = {
};
static void
-schema_browser_perspective_customize (BrowserPerspective *perspective,
- GtkToolbar *toolbar, GtkHeaderBar *header, GMenu *menu)
+schema_browser_perspective_customize (BrowserPerspective *perspective, GtkToolbar *toolbar, GtkHeaderBar
*header)
{
g_print ("%s ()\n", __FUNCTION__);
- SchemaBrowserPerspective *persp;
- persp = SCHEMA_BROWSER_PERSPECTIVE (perspective);
- BrowserWindow *bwin;
- bwin = browser_perspective_get_window (perspective);
+ customization_data_init (G_OBJECT (perspective), toolbar, header);
/* add perspective's actions */
- g_action_map_add_action_entries (G_ACTION_MAP (bwin),
- win_entries, G_N_ELEMENTS (win_entries),
- perspective);
-
- g_assert (! persp->priv->custom_parts);
- persp->priv->custom_parts = g_array_new (FALSE, FALSE, sizeof (gpointer));
+ customization_data_add_actions (G_OBJECT (perspective), win_entries, G_N_ELEMENTS (win_entries));
/* add to toolbar */
GtkToolItem *titem;
@@ -338,7 +333,7 @@ schema_browser_perspective_customize (BrowserPerspective *perspective,
gtk_toolbar_insert (GTK_TOOLBAR (toolbar), titem, -1);
gtk_actionable_set_action_name (GTK_ACTIONABLE (titem), "win.show-favorites");
gtk_widget_show (GTK_WIDGET (titem));
- g_array_append_val (persp->priv->custom_parts, titem);
+ customization_data_add_part (G_OBJECT (perspective), G_OBJECT (titem));
#ifdef HAVE_GOOCANVAS
titem = gtk_tool_button_new (NULL, NULL);
@@ -347,44 +342,10 @@ schema_browser_perspective_customize (BrowserPerspective *perspective,
gtk_toolbar_insert (GTK_TOOLBAR (toolbar), titem, -1);
gtk_actionable_set_action_name (GTK_ACTIONABLE (titem), "win.action-diagram-new");
gtk_widget_show (GTK_WIDGET (titem));
- g_array_append_val (persp->priv->custom_parts, titem);
+ customization_data_add_part (G_OBJECT (perspective), G_OBJECT (titem));
#endif
}
-static void
-schema_browser_perspective_uncustomize (BrowserPerspective *perspective,
- GtkToolbar *toolbar, GtkHeaderBar *header, GMenu *menu)
-{
- g_print ("%s ()\n", __FUNCTION__);
- SchemaBrowserPerspective *persp;
- persp = SCHEMA_BROWSER_PERSPECTIVE (perspective);
-
- BrowserWindow *bwin;
- bwin = browser_perspective_get_window (perspective);
-
- /* remove perspective's actions */
- guint i;
- for (i = 0; i < G_N_ELEMENTS (win_entries); i++) {
- GActionEntry *entry;
- entry = &win_entries [i];
- g_action_map_remove_action (G_ACTION_MAP (bwin), entry->name);
- }
-
- /* cleanups, headerbar and toolbar */
- g_assert (persp->priv->custom_parts);
- for (i = 0; i < persp->priv->custom_parts->len; i++) {
- GObject *obj;
- obj = g_array_index (persp->priv->custom_parts, GObject*, i);
- if (GTK_IS_WIDGET (obj))
- gtk_widget_destroy (GTK_WIDGET (obj));
- else
- g_warning ("Unknown type to uncustomize: %s\n", G_OBJECT_CLASS_NAME
(G_OBJECT_GET_CLASS (obj)));
- }
- g_array_free (persp->priv->custom_parts, TRUE);
- persp->priv->custom_parts = NULL;
-}
-
-
#ifdef HAVE_GOOCANVAS
/**
* schema_browser_perspective_display_diagram
diff --git a/tools/browser/schema-browser/table-info.c b/tools/browser/schema-browser/table-info.c
index 5da9382..d574d0c 100644
--- a/tools/browser/schema-browser/table-info.c
+++ b/tools/browser/schema-browser/table-info.c
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2009 - 2014 Vivien Malerba <malerba gnome-db org>
+ * Copyright (C) 2009 - 2015 Vivien Malerba <malerba gnome-db org>
* Copyright (C) 2010 David King <davidk openismus com>
* Copyright (C) 2011 Murray Cumming <murrayc murrayc com>
*
@@ -23,6 +23,7 @@
#include "table-info.h"
#include "../dnd.h"
#include "../ui-support.h"
+#include "../ui-customize.h"
#include "../gdaui-bar.h"
#include "table-columns.h"
#include "table-preferences.h"
@@ -40,8 +41,6 @@
#include "../fk-declare.h"
#include <libgda/gda-debug-macros.h>
-#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
-
struct _TableInfoPrivate {
TConnection *tcnc;
@@ -72,9 +71,8 @@ static void table_info_get_property (GObject *object,
GParamSpec *pspec);
/* BrowserPage interface */
static void table_info_page_init (BrowserPageIface *iface);
-static GtkActionGroup *table_info_page_get_actions_group (BrowserPage *page);
-static const gchar *table_info_page_get_actions_ui (BrowserPage *page);
-static GtkWidget *table_info_page_get_tab_label (BrowserPage *page, GtkWidget **out_close_button);
+static void table_info_customize (BrowserPage *page, GtkToolbar *toolbar, GtkHeaderBar
*header);
+static GtkWidget *table_info_get_tab_label (BrowserPage *page, GtkWidget **out_close_button);
static void meta_changed_cb (TConnection *tcnc, GdaMetaStruct *mstruct, TableInfo *tinfo);
@@ -107,9 +105,9 @@ table_info_class_init (TableInfoClass *klass)
static void
table_info_page_init (BrowserPageIface *iface)
{
- iface->i_get_actions_group = table_info_page_get_actions_group;
- iface->i_get_actions_ui = table_info_page_get_actions_ui;
- iface->i_get_tab_label = table_info_page_get_tab_label;
+ iface->i_customize = table_info_customize;
+ iface->i_uncustomize = NULL;
+ iface->i_get_tab_label = table_info_get_tab_label;
}
static void
@@ -451,8 +449,11 @@ table_info_get_connection (TableInfo *tinfo)
* UI actions
*/
static void
-action_add_to_fav_cb (G_GNUC_UNUSED GtkAction *action, TableInfo *tinfo)
+action_add_to_fav_cb (G_GNUC_UNUSED GSimpleAction *action, G_GNUC_UNUSED GVariant *state, gpointer data)
{
+ TableInfo *tinfo;
+ tinfo = TABLE_INFO (data);
+
TFavorites *bfav;
TFavoritesAttributes fav;
GError *error = NULL;
@@ -476,8 +477,10 @@ action_add_to_fav_cb (G_GNUC_UNUSED GtkAction *action, TableInfo *tinfo)
}
static void
-action_view_contents_cb (G_GNUC_UNUSED GtkAction *action, TableInfo *tinfo)
+action_view_contents_cb (G_GNUC_UNUSED GSimpleAction *action, G_GNUC_UNUSED GVariant *state, gpointer data)
{
+ TableInfo *tinfo;
+ tinfo = TABLE_INFO (data);
if (! tinfo->priv->table_short_name)
return;
@@ -630,8 +633,11 @@ fkdata_list_free (GSList *fkdata_list)
}
static void
-action_insert_cb (G_GNUC_UNUSED GtkAction *action, TableInfo *tinfo)
+action_insert_cb (G_GNUC_UNUSED GSimpleAction *action, G_GNUC_UNUSED GVariant *state, gpointer data)
{
+ TableInfo *tinfo;
+ tinfo = TABLE_INFO (data);
+
/* init */
if (! tinfo->priv->table_short_name)
return;
@@ -884,10 +890,10 @@ action_insert_cb (G_GNUC_UNUSED GtkAction *action, TableInfo *tinfo)
popup = gtk_dialog_new_with_buttons (_("Values to insert into table"), GTK_WINDOW (bwin),
0,
#ifdef HAVE_GDU
- GTK_STOCK_HELP, GTK_RESPONSE_HELP,
+ _("Help"), GTK_RESPONSE_HELP,
#endif
- GTK_STOCK_EXECUTE, GTK_RESPONSE_ACCEPT,
- GTK_STOCK_CANCEL, GTK_RESPONSE_REJECT,
+ _("Execute"), GTK_RESPONSE_ACCEPT,
+ _("Cancel"), GTK_RESPONSE_REJECT,
NULL);
tinfo->priv->insert_popup = popup;
g_object_set_data_full (G_OBJECT (popup), "stmt", stmt, g_object_unref);
@@ -926,8 +932,11 @@ action_insert_cb (G_GNUC_UNUSED GtkAction *action, TableInfo *tinfo)
}
static void
-action_declarefk_cb (G_GNUC_UNUSED GtkAction *action, TableInfo *tinfo)
+action_declarefk_cb (G_GNUC_UNUSED GSimpleAction *action, G_GNUC_UNUSED GVariant *state, gpointer data)
{
+ TableInfo *tinfo;
+ tinfo = TABLE_INFO (data);
+
GtkWidget *dlg, *parent;
GdaMetaStruct *mstruct;
GdaMetaDbObject *dbo;
@@ -970,57 +979,60 @@ action_declarefk_cb (G_GNUC_UNUSED GtkAction *action, TableInfo *tinfo)
gtk_widget_destroy (dlg);
}
-static GtkActionEntry ui_actions[] = {
- { "Table", NULL, N_("_Table"), NULL, N_("Table"), NULL },
- { "AddToFav", NULL, N_("Add to _Favorites"), NULL, N_("Add table to favorites"),
- G_CALLBACK (action_add_to_fav_cb)},
- { "ViewContents", GTK_STOCK_EDIT, N_("_Contents"), NULL, N_("View table's contents"),
- G_CALLBACK (action_view_contents_cb)},
- { "InsertData", GTK_STOCK_ADD, N_("_Insert Data"), NULL, N_("Insert data into table"),
- G_CALLBACK (action_insert_cb)},
- { "KfDeclare", NULL, N_("_Declare Foreign Key"), NULL, N_("Declare a foreign key for table"),
- G_CALLBACK (action_declarefk_cb)},
+static GActionEntry win_entries[] = {
+ { "AddToFav", action_add_to_fav_cb, NULL, NULL, NULL },
+ { "ViewContents", action_view_contents_cb, NULL, NULL, NULL },
+ { "InsertData", action_insert_cb, NULL, NULL, NULL },
+ { "KfDeclare", action_declarefk_cb, NULL, NULL, NULL }
};
-static const gchar *ui_actions_info =
- "<ui>"
- " <menubar name='MenuBar'>"
- " <placeholder name='MenuExtension'>"
- " <menu name='Table' action='Table'>"
- " <menuitem name='AddToFav' action= 'AddToFav'/>"
- " <menuitem name='InsertData' action= 'InsertData'/>"
- " <menuitem name='ViewContents' action= 'ViewContents'/>"
- " <separator/>"
- " <menuitem name='KfDeclare' action= 'KfDeclare'/>"
- " </menu>"
- " </placeholder>"
- " </menubar>"
- " <toolbar name='ToolBar'>"
- " <separator/>"
- " <toolitem action='AddToFav'/>"
- " <toolitem action='ViewContents'/>"
- " <toolitem action='InsertData'/>"
- " </toolbar>"
- "</ui>";
-
-static GtkActionGroup *
-table_info_page_get_actions_group (BrowserPage *page)
-{
- GtkActionGroup *agroup;
- agroup = gtk_action_group_new ("SchemaBrowserTableInfoActions");
- gtk_action_group_set_translation_domain (agroup, GETTEXT_PACKAGE);
- gtk_action_group_add_actions (agroup, ui_actions, G_N_ELEMENTS (ui_actions), page);
-
- return agroup;
-}
-static const gchar *
-table_info_page_get_actions_ui (G_GNUC_UNUSED BrowserPage *page)
+static void
+table_info_customize (BrowserPage *page, GtkToolbar *toolbar, GtkHeaderBar *header)
{
- return ui_actions_info;
+ g_print ("%s ()\n", __FUNCTION__);
+
+ customization_data_init (G_OBJECT (page), toolbar, header);
+
+ /* add perspective's actions */
+ customization_data_add_actions (G_OBJECT (page), win_entries, G_N_ELEMENTS (win_entries));
+
+ /* add to toolbar */
+ GtkToolItem *titem;
+ titem = gtk_tool_button_new (NULL, NULL);
+ gtk_tool_button_set_icon_name (GTK_TOOL_BUTTON (titem), "bookmark-new-symbolic");
+ gtk_widget_set_tooltip_text (GTK_WIDGET (titem), _("Add to Favorites"));
+ gtk_toolbar_insert (GTK_TOOLBAR (toolbar), titem, -1);
+ gtk_actionable_set_action_name (GTK_ACTIONABLE (titem), "win.AddToFav");
+ gtk_widget_show (GTK_WIDGET (titem));
+ customization_data_add_part (G_OBJECT (page), G_OBJECT (titem));
+
+ titem = gtk_tool_button_new (NULL, NULL);
+ gtk_tool_button_set_icon_name (GTK_TOOL_BUTTON (titem), "go-jump-symbolic");
+ gtk_widget_set_tooltip_text (GTK_WIDGET (titem), _("View table's contents"));
+ gtk_toolbar_insert (GTK_TOOLBAR (toolbar), titem, -1);
+ gtk_actionable_set_action_name (GTK_ACTIONABLE (titem), "win.ViewContents");
+ gtk_widget_show (GTK_WIDGET (titem));
+ customization_data_add_part (G_OBJECT (page), G_OBJECT (titem));
+
+ titem = gtk_tool_button_new (NULL, NULL);
+ gtk_tool_button_set_icon_name (GTK_TOOL_BUTTON (titem), "document-new-symbolic");
+ gtk_widget_set_tooltip_text (GTK_WIDGET (titem), _("Insert data into table"));
+ gtk_toolbar_insert (GTK_TOOLBAR (toolbar), titem, -1);
+ gtk_actionable_set_action_name (GTK_ACTIONABLE (titem), "win.InsertData");
+ gtk_widget_show (GTK_WIDGET (titem));
+ customization_data_add_part (G_OBJECT (page), G_OBJECT (titem));
+
+ titem = gtk_tool_button_new (NULL, NULL);
+ gtk_tool_button_set_icon_name (GTK_TOOL_BUTTON (titem), "insert-link-symbolic");
+ gtk_widget_set_tooltip_text (GTK_WIDGET (titem), _("Declare Foreign Key"));
+ gtk_toolbar_insert (GTK_TOOLBAR (toolbar), titem, -1);
+ gtk_actionable_set_action_name (GTK_ACTIONABLE (titem), "win.KfDeclare");
+ gtk_widget_show (GTK_WIDGET (titem));
+ customization_data_add_part (G_OBJECT (page), G_OBJECT (titem));
}
static GtkWidget *
-table_info_page_get_tab_label (BrowserPage *page, GtkWidget **out_close_button)
+table_info_get_tab_label (BrowserPage *page, GtkWidget **out_close_button)
{
TableInfo *tinfo;
const gchar *tab_name;
diff --git a/tools/browser/text-search.c b/tools/browser/text-search.c
index b18e002..d1b4b2e 100644
--- a/tools/browser/text-search.c
+++ b/tools/browser/text-search.c
@@ -1,6 +1,6 @@
/*
* Copyright (C) 2011 Murray Cumming <murrayc murrayc com>
- * Copyright (C) 2011 - 2014 Vivien Malerba <malerba gnome-db org>
+ * Copyright (C) 2011 - 2015 Vivien Malerba <malerba gnome-db org>
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
@@ -22,8 +22,6 @@
#include "text-search.h"
#include "ui-support.h"
-#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
-
struct _TextSearchPrivate {
GtkTextView *view;
GtkTextBuffer *text;
@@ -263,7 +261,7 @@ text_search_new (GtkTextView *view)
gtk_text_buffer_create_tag (tsearch->priv->text, "search",
"background", "yellow", NULL);
- wid = ui_make_small_button (FALSE, FALSE, NULL, GTK_STOCK_CLOSE,
+ wid = ui_make_small_button (FALSE, FALSE, NULL, "window-close-symbolic",
_("Hide search toolbar"));
gtk_box_pack_start (GTK_BOX (tsearch), wid, FALSE, FALSE, 0);
g_signal_connect_swapped (wid, "clicked",
@@ -279,12 +277,12 @@ text_search_new (GtkTextView *view)
g_signal_connect (wid, "changed",
G_CALLBACK (search_text_changed_cb), tsearch);
- wid = ui_make_small_button (FALSE, FALSE, NULL, GTK_STOCK_GO_BACK, NULL);
+ wid = ui_make_small_button (FALSE, FALSE, NULL, "go-previous-symbolic", NULL);
gtk_box_pack_start (GTK_BOX (tsearch), wid, FALSE, FALSE, 0);
g_signal_connect (wid, "clicked",
G_CALLBACK (go_back_search_cb), tsearch);
- wid = ui_make_small_button (FALSE, FALSE, NULL, GTK_STOCK_GO_FORWARD, NULL);
+ wid = ui_make_small_button (FALSE, FALSE, NULL, "go-next-symbolic", NULL);
gtk_box_pack_start (GTK_BOX (tsearch), wid, FALSE, FALSE, 0);
g_signal_connect (wid, "clicked",
G_CALLBACK (go_forward_search_cb), tsearch);
diff --git a/tools/browser/ui-customize.c b/tools/browser/ui-customize.c
new file mode 100644
index 0000000..514ee83
--- /dev/null
+++ b/tools/browser/ui-customize.c
@@ -0,0 +1,269 @@
+/*
+ * Copyright (C) 2015 Vivien Malerba <malerba gnome-db org>
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ */
+
+#include "ui-customize.h"
+#include <browser-perspective.h>
+#include <browser-page.h>
+
+/*
+ * UI customization management (toolbar, top level window header, and top level menu
+ */
+typedef struct {
+ GtkToolbar *toolbar;
+ GtkHeaderBar *header;
+ GArray *custom_parts;
+
+ BrowserWindow *bwin;
+ GActionEntry *actions;
+ guint n_actions;
+} CustomizationData;
+
+static GHashTable *cust_hash = NULL; /* key = a #GObject, value = a #CustomizationData (owned) */
+static void
+customization_data_free (CustomizationData *cust_data)
+{
+ g_assert (cust_data);
+ if (cust_data->custom_parts) {
+ guint i;
+ for (i = 0; i < cust_data->custom_parts->len; i++) {
+ GWeakRef *wref;
+ wref = g_array_index (cust_data->custom_parts, GWeakRef*, i);
+ GObject *obj;
+ obj = g_weak_ref_get (wref);
+ g_weak_ref_clear (wref);
+ if (obj) {
+ if (GTK_IS_WIDGET (obj))
+ gtk_widget_destroy (GTK_WIDGET (obj));
+ else
+ g_warning ("Unknown type to uncustomize: %s\n",
+ G_OBJECT_CLASS_NAME (G_OBJECT_GET_CLASS (obj)));
+ g_object_unref (obj);
+ }
+ g_free (wref);
+ }
+ g_array_free (cust_data->custom_parts, TRUE);
+ }
+
+ if (cust_data->actions) {
+ guint i;
+ for (i = 0; i < cust_data->n_actions; i++) {
+ GActionEntry *entry;
+ entry = &cust_data->actions [i];
+ g_action_map_remove_action (G_ACTION_MAP (cust_data->bwin), entry->name);
+ }
+ }
+ g_free (cust_data);
+}
+
+/**
+ * customization_data_release:
+ * @object: an object being customized (#BrowserPerspective or #BrowserPage)
+ *
+ * Removes any customization done for @object
+ */
+void
+customization_data_release (GObject *object)
+{
+ g_return_if_fail (G_IS_OBJECT (object));
+ if (cust_hash) {
+ if (g_hash_table_lookup (cust_hash, object))
+ g_hash_table_remove (cust_hash, object);
+ }
+}
+
+static CustomizationData *
+customization_data_get (GObject *object)
+{
+ if (cust_hash)
+ return g_hash_table_lookup (cust_hash, object);
+ else
+ return NULL;
+}
+
+/**
+ * customization_data_init:
+ * @object: an object being customized (#BrowserPerspective or #BrowserPage)
+ * @toolbar: (allow-none): a #GtkToolbar
+ * @header: (allow-none): a #GtkHeaderBar
+ *
+ * Initializes the customization for @object
+ */
+void
+customization_data_init (GObject *object, GtkToolbar *toolbar, GtkHeaderBar *header)
+{
+ g_return_val_if_fail (G_IS_OBJECT (object), NULL);
+ if (customization_data_get (object)) {
+ g_warning ("Customization for %p already exists", object);
+ customization_data_release (object);
+ }
+ if (!cust_hash)
+ cust_hash = g_hash_table_new_full (NULL, NULL, NULL, (GDestroyNotify)
customization_data_free);
+
+ CustomizationData *cust_data;
+ cust_data = g_new0 (CustomizationData, 1);
+ cust_data->toolbar = toolbar;
+ cust_data->header = header;
+ cust_data->custom_parts = g_array_new (FALSE, FALSE, sizeof (gpointer));
+ g_hash_table_insert (cust_hash, object, cust_data);
+}
+
+/**
+ * customization_data_exists:
+ * @object: an object being customized (#BrowserPerspective or #BrowserPage)
+ *
+ * Tells if some customization data exists for @object
+ */
+gboolean
+customization_data_exists (GObject *object)
+{
+ g_return_val_if_fail (G_IS_OBJECT (object), NULL);
+ return customization_data_get (object) ? TRUE : FALSE;
+}
+
+/**
+ * customization_data_add_part:
+ * @object: an object being customized (#BrowserPerspective or #BrowserPage)
+ * @part: a #GObject object part of the customization
+ *
+ * Declares that @part is part of the customization (and will be removed when customization_data_release()
is called)
+ */
+void
+customization_data_add_part (GObject *object, GObject *part)
+{
+ g_return_if_fail (G_IS_OBJECT (object));
+ g_return_if_fail (G_IS_OBJECT (part));
+
+ CustomizationData *cust_data;
+ cust_data = customization_data_get (object);
+ if (!cust_data)
+ return;
+
+ GWeakRef *wref;
+ wref = g_new0 (GWeakRef, 1);
+ g_weak_ref_init (wref, part);
+ g_array_append_val (cust_data->custom_parts, wref);
+}
+
+/**
+ * customization_data_add_actions:
+ * @object: an object being customized (#BrowserPerspective or #BrowserPage)
+ * @entries: a list of actions
+ * @n_entries: the size of @entries
+ *
+ * Adds some actions (which will be removed when customization_data_release() is called)
+ */
+void
+customization_data_add_actions (GObject *object, GActionEntry *entries, guint n_entries)
+{
+ g_return_if_fail (G_IS_OBJECT (object));
+ g_return_if_fail (entries);
+
+ CustomizationData *cust_data;
+ cust_data = customization_data_get (object);
+ if (!cust_data)
+ return;
+
+ BrowserWindow *bwin;
+ if (IS_BROWSER_PERSPECTIVE (object))
+ bwin = browser_perspective_get_window (BROWSER_PERSPECTIVE (object));
+ else if (IS_BROWSER_PAGE (object))
+ bwin = browser_perspective_get_window (browser_page_get_perspective (BROWSER_PAGE (object)));
+ else {
+ g_warning ("Unhandled object type for %s", __FUNCTION__);
+ return;
+ }
+ g_action_map_add_action_entries (G_ACTION_MAP (bwin), entries, n_entries, object);
+
+ cust_data->bwin = bwin;
+ cust_data->actions = entries;
+ cust_data->n_actions = n_entries;
+}
+
+/**
+ * customization_data_get_toolbar:
+ * @object: an object being customized (#BrowserPerspective or #BrowserPage)
+ *
+ * Retreive the toolbar used in @cust_data
+ *
+ * Returns: (transfer none): the requested data
+ */
+GtkToolbar *
+customization_data_get_toolbar (GObject *object)
+{
+ g_return_val_if_fail (G_IS_OBJECT (object), NULL);
+
+ CustomizationData *cust_data;
+ cust_data = customization_data_get (object);
+ if (!cust_data)
+ return NULL;
+ else
+ return cust_data->toolbar;
+}
+
+/**
+ * customization_data_get_header_bar:
+ * @object: an object being customized (#BrowserPerspective or #BrowserPage)
+ *
+ * Retreive the header bar used in @cust_data
+ *
+ * Returns: (transfer none): the requested data
+ */
+GtkHeaderBar *
+customization_data_get_header_bar (GObject *object)
+{
+ g_return_val_if_fail (G_IS_OBJECT (object), NULL);
+
+ CustomizationData *cust_data;
+ cust_data = customization_data_get (object);
+ if (!cust_data)
+ return NULL;
+ else
+ return cust_data->header;
+}
+
+/**
+ * customization_data_get_action:
+ * @object: an object being customized (#BrowserPerspective or #BrowserPage)
+ * @action_name: the name of the action to retreive
+ *
+ * Get a pointer to the #GAction names @action_name.
+ *
+ * Returns: (transfer none): the requested #Gaction, or %NULL if not found (not existant,
+ * or no customization data for @object)
+ */
+GAction *
+customization_data_get_action (GObject *object, const gchar *action_name)
+{
+ g_return_val_if_fail (G_IS_OBJECT (object), NULL);
+ g_return_val_if_fail (action_name && *action_name, NULL);
+
+ if (customization_data_exists (object)) {
+ BrowserWindow *bwin;
+ if (IS_BROWSER_PERSPECTIVE (object))
+ bwin = browser_perspective_get_window (BROWSER_PERSPECTIVE (object));
+ else if (IS_BROWSER_PAGE (object))
+ bwin = browser_perspective_get_window (browser_page_get_perspective (BROWSER_PAGE
(object)));
+ else {
+ g_warning ("Unhandled object type for %s", __FUNCTION__);
+ return NULL;
+ }
+
+ return g_action_map_lookup_action (G_ACTION_MAP (bwin), action_name);
+ }
+ return NULL;
+}
diff --git a/tools/browser/ui-customize.h b/tools/browser/ui-customize.h
new file mode 100644
index 0000000..7c31458
--- /dev/null
+++ b/tools/browser/ui-customize.h
@@ -0,0 +1,39 @@
+/*
+ * Copyright (C) 2015 Vivien Malerba <malerba gnome-db org>
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ */
+
+
+#ifndef __UI_CUSTOMIZE_H_
+#define __UI_CUSTOMIZE_H_
+
+#include <gtk/gtk.h>
+
+G_BEGIN_DECLS
+
+void customization_data_release (GObject *object);
+void customization_data_init (GObject *object, GtkToolbar *toolbar, GtkHeaderBar
*header);
+gboolean customization_data_exists (GObject *object);
+void customization_data_add_part (GObject *object, GObject *part);
+void customization_data_add_actions (GObject *object, GActionEntry *entries, guint
n_entries);
+
+GtkToolbar *customization_data_get_toolbar (GObject *object);
+GtkHeaderBar *customization_data_get_header_bar (GObject *object);
+GAction *customization_data_get_action (GObject *object, const gchar *action_name);
+
+G_END_DECLS
+
+#endif
diff --git a/tools/browser/ui-formgrid.c b/tools/browser/ui-formgrid.c
index 41d9df1..ded67e5 100644
--- a/tools/browser/ui-formgrid.c
+++ b/tools/browser/ui-formgrid.c
@@ -1116,7 +1116,8 @@ compute_modification_statements (UiFormGrid *formgrid, GdaDataModel *model)
* @user_data: (allow-none): a pointer passed to the @callback function, or %NULL
*
* If @callback is not %NULL, then a "Refresh" button is added to @formgrid which, when clicked,
- * calls @callback.
+ * calls @callback. The callback function will have a first argument which is a button, and a second argument
+ * which is @user_data
*
* If @callback is %NULL, then the "Refresh" button (if there was any) is removed.
*/
diff --git a/tools/browser/ui-support.c b/tools/browser/ui-support.c
index 4ae01f6..1389000 100644
--- a/tools/browser/ui-support.c
+++ b/tools/browser/ui-support.c
@@ -453,7 +453,7 @@ _make_tab_label (const gchar *label,
gtk_box_pack_start (GTK_BOX (hbox), wid, TRUE, TRUE, 0);
if (with_close) {
- image = gtk_image_new_from_icon_name ("window-close", GTK_ICON_SIZE_MENU);
+ image = gtk_image_new_from_icon_name ("window-close-symbolic", GTK_ICON_SIZE_MENU);
close_button = gtk_button_new ();
gtk_button_set_relief (GTK_BUTTON (close_button), GTK_RELIEF_NONE);
gtk_button_set_focus_on_click (GTK_BUTTON (close_button), FALSE);
diff --git a/tools/browser/widget-overlay.c b/tools/browser/widget-overlay.c
index 8d95acb..4383549 100644
--- a/tools/browser/widget-overlay.c
+++ b/tools/browser/widget-overlay.c
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2011 - 2014 Vivien Malerba <malerba gnome-db org>
+ * Copyright (C) 2011 - 2015 Vivien Malerba <malerba gnome-db org>
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
@@ -19,8 +19,6 @@
#include <stdarg.h>
#include <glib/gi18n-lib.h>
-#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
-
#define SCALE_MIN .6
#define SCALE_MAX 1.
#define SCALE_MAX_SCALE 1.5
@@ -253,7 +251,7 @@ widget_overlay_set_property (GObject *object,
gtk_box_pack_start (GTK_BOX (box), wid, TRUE, TRUE, 0);
button = gtk_button_new ();
- image = gtk_image_new_from_stock (GTK_STOCK_CLOSE,
+ image = gtk_image_new_from_icon_name ("window-close-symbolic",
GTK_ICON_SIZE_MENU);
gtk_container_add (GTK_CONTAINER (button), image);
gtk_container_add (GTK_CONTAINER (box), button);
@@ -636,8 +634,7 @@ widget_overlay_realize (GtkWidget *widget)
attributes.height = allocation.height;
}
- cd->offscreen_window = gdk_window_new (gtk_widget_get_root_window (widget),
- &attributes, attributes_mask);
+ cd->offscreen_window = gdk_window_new (NULL, &attributes, attributes_mask);
gdk_window_set_user_data (cd->offscreen_window, widget);
gtk_widget_set_parent_window (cd->child, cd->offscreen_window);
gdk_offscreen_window_set_embedder (cd->offscreen_window, win);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]