[libgda] GdaBrowser improvements
- From: Vivien Malerba <vivien src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [libgda] GdaBrowser improvements
- Date: Sun, 29 Nov 2015 13:53:22 +0000 (UTC)
commit 83417f84113f2d5a554751cc2324728c1f5a4c08
Author: Vivien Malerba <malerba gnome-db org>
Date: Sun Nov 29 14:20:29 2015 +0100
GdaBrowser improvements
libgda-ui/gdaui.css | 4 +
tools/browser/Makefile.am | 1 +
tools/browser/browser-perspective.c | 26 +++-
tools/browser/browser-window.c | 19 ++-
tools/browser/data-manager/perspective-main.c | 3 +-
tools/browser/fk-declare.c | 11 +-
tools/browser/ldap-browser/perspective-main.c | 3 +-
tools/browser/perspectives-names.h | 27 ++++
tools/browser/query-exec/perspective-main.c | 3 +-
tools/browser/query-exec/query-console-page.c | 159 ++++++++++---------
tools/browser/query-exec/query-editor.c | 57 +++-----
tools/browser/schema-browser/objects-index.c | 2 +-
tools/browser/schema-browser/perspective-main.c | 3 +-
.../schema-browser/schema-browser-perspective.c | 2 +-
tools/browser/schema-browser/table-info.c | 162 ++++++++++++--------
tools/browser/schema-browser/table-info.h | 2 +-
tools/browser/schema-browser/table-preferences.c | 10 +-
tools/browser/ui-support.c | 47 ++++++-
tools/browser/ui-support.h | 1 +
19 files changed, 330 insertions(+), 212 deletions(-)
---
diff --git a/libgda-ui/gdaui.css b/libgda-ui/gdaui.css
index 66ab1f9..4290115 100644
--- a/libgda-ui/gdaui.css
+++ b/libgda-ui/gdaui.css
@@ -36,3 +36,7 @@ GdauiRtEditor GtkToolbar {
margin: 0px;
padding: 0px;
}
+
+GtkPaned.paned-no-border {
+ -GtkPaned-handle-size: 0;
+}
\ No newline at end of file
diff --git a/tools/browser/Makefile.am b/tools/browser/Makefile.am
index ca9ebe4..07727b7 100644
--- a/tools/browser/Makefile.am
+++ b/tools/browser/Makefile.am
@@ -40,6 +40,7 @@ libbrowsercore_la_SOURCES=\
marshal.c \
marshal.h \
decl.h \
+ perspectives-names.h \
dnd.h \
dnd.c \
ui-support.h \
diff --git a/tools/browser/browser-perspective.c b/tools/browser/browser-perspective.c
index 02be830..ac61c38 100644
--- a/tools/browser/browser-perspective.c
+++ b/tools/browser/browser-perspective.c
@@ -247,13 +247,25 @@ static void
notebook_remove_page_cb (GtkNotebook *nb, GtkWidget *page, gint pagenb, BrowserPerspective *bpers)
{
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));
- }
+ gint current_index;
+ GtkWidget *current_page = NULL;
+ current_index = gtk_notebook_get_current_page (nb);
+ if (current_index >= 0)
+ current_page = gtk_notebook_get_nth_page (nb, current_index);
+
+ g_print ("\tNotebook, removing page %d, current page is now %d\n", pagenb, current_index);
+
+ /* REM: we need to uncustomize _both_ the removed page and the new page, and customize
+ * again the new page to avoid discrepancies */
+ if (current_page && IS_BROWSER_PAGE (current_page))
+ browser_page_uncustomize (BROWSER_PAGE (current_page));
+ if (page && IS_BROWSER_PAGE (page))
+ browser_page_uncustomize (BROWSER_PAGE (page));
+
+ if (current_page && IS_BROWSER_PAGE (current_page))
+ browser_page_customize (BROWSER_PAGE (current_page),
+ customization_data_get_toolbar (G_OBJECT (bpers)),
+ customization_data_get_header_bar (G_OBJECT (bpers)));
}
}
diff --git a/tools/browser/browser-window.c b/tools/browser/browser-window.c
index 458cae5..7432fc1 100644
--- a/tools/browser/browser-window.c
+++ b/tools/browser/browser-window.c
@@ -196,7 +196,7 @@ static void transaction_rollback_cb (G_GNUC_UNUSED GSimpleAction *action, GVaria
static void connection_properties_cb (G_GNUC_UNUSED GSimpleAction *action, GVariant *parameter, gpointer
data);
static void connection_close_cb (G_GNUC_UNUSED GSimpleAction *action, GVariant *parameter, gpointer data);
static void fullscreen_cb (G_GNUC_UNUSED GSimpleAction *action, GVariant *state, gpointer data);
-static void change_perspective_cb (G_GNUC_UNUSED GSimpleAction *action, GVariant *state, gpointer data);
+static void change_perspective_cb (GSimpleAction *action, GVariant *state, gpointer data);
static GActionEntry win_entries[] = {
{ "change-perspective", NULL, "s", NULL, change_perspective_cb },
@@ -622,14 +622,13 @@ transaction_rollback_cb (G_GNUC_UNUSED GSimpleAction *action, GVariant *paramete
}
static void
-change_perspective_cb (G_GNUC_UNUSED GSimpleAction *action, GVariant *state, gpointer data)
+change_perspective_cb (GSimpleAction *action, GVariant *state, gpointer data)
{
BrowserWindow *bwin = BROWSER_WINDOW (data);
const gchar *pname;
pname = g_variant_get_string (state, NULL);
g_print ("Switching to perspective [%s]\n", pname);
browser_window_change_perspective (bwin, pname);
- g_simple_action_set_state (action, state);
}
static gboolean
@@ -1097,13 +1096,21 @@ browser_window_change_perspective (BrowserWindow *bwin, const gchar *perspective
}
}
}
+
+ /* update GAction's state */
+ GAction *action;
+ action = g_action_map_lookup_action (G_ACTION_MAP (bwin), "change-perspective");
+ GVariant *value;
+ value = g_variant_new_string (perspective_id);
+ g_simple_action_set_state (G_SIMPLE_ACTION (action), value);
+
+ /* actually switch displayed page */
gtk_stack_set_visible_child (bwin->priv->pers_stack, GTK_WIDGET (bpers));
browser_perspective_customize (bpers,
bwin->priv->toolbar, bwin->priv->header);
bwin->priv->current_perspective = pdata;
- /* setup for the new perspective */
- /* TODO */
+ /* notice of perspective change */
gchar *tmp;
tmp = g_markup_printf_escaped (_("The current perspective has changed to the '%s' perspective, you "
"can switch back to previous perspective through the "
@@ -1111,8 +1118,6 @@ browser_window_change_perspective (BrowserWindow *bwin, const gchar *perspective
bwin->priv->current_perspective->factory->perspective_name,
current_pdata->factory->perspective_name,
current_pdata->factory->menu_shortcut);
-
-
browser_window_show_notice (bwin, GTK_MESSAGE_INFO, "Perspective change", tmp);
g_free (tmp);
diff --git a/tools/browser/data-manager/perspective-main.c b/tools/browser/data-manager/perspective-main.c
index 2fa945c..6ff1040 100644
--- a/tools/browser/data-manager/perspective-main.c
+++ b/tools/browser/data-manager/perspective-main.c
@@ -24,13 +24,14 @@
#include <gmodule.h>
#include "perspective-main.h"
#include "data-manager-perspective.h"
+#include "../perspectives-names.h"
static BrowserPerspectiveFactory bfact;
BrowserPerspectiveFactory *
data_manager_perspective_get_factory (void)
{
- bfact.id = "DataManP";
+ bfact.id = DATA_MANAGER_PERSPECTIVE_NAME;
bfact.perspective_name = _("Data manager");
bfact.menu_shortcut ="<control>D";
bfact.perspective_create = data_manager_perspective_new;
diff --git a/tools/browser/fk-declare.c b/tools/browser/fk-declare.c
index 6972920..eb72cdb 100644
--- a/tools/browser/fk-declare.c
+++ b/tools/browser/fk-declare.c
@@ -130,7 +130,7 @@ fk_declare_init (FkDeclare *declare)
NULL);
#ifdef HAVE_GDU
GtkWidget *help_btn;
- help_btn = gtk_button_new_from_icon_name ("help-browser", GTK_ICON_SIZE_DIALOG);
+ help_btn = gtk_button_new_from_icon_name ("help-browser", GTK_ICON_SIZE_BUTTON);
g_signal_connect (help_btn, "clicked",
G_CALLBACK (help_clicked_cb), declare);
gtk_widget_show (help_btn);
@@ -182,17 +182,18 @@ create_internal_layout (FkDeclare *decl)
gtk_label_set_line_wrap (GTK_LABEL (label), TRUE);
str = g_strdup_printf (_("Declare a foreign key for table '%s'"),
GDA_META_DB_OBJECT (decl->priv->mtable)->obj_short_name);
- markup = g_markup_printf_escaped ("<big><b>%s:</b></big>\n%s", str,
- _("define which table is references, which columns are "
+ markup = g_markup_printf_escaped ("<big><b>%s:</b></big>\n%s\n", str,
+ _("define which table is referenced, which columns are "
"part of the foreign key, "
"and which column each one references"));
g_free (str);
-
gtk_label_set_markup (GTK_LABEL (label), markup);
+ gtk_label_set_line_wrap (GTK_LABEL (label), TRUE);
+ gtk_label_set_width_chars (GTK_LABEL (label), 50);
g_free (markup);
gtk_widget_set_halign (label, GTK_ALIGN_START);
gtk_box_pack_start (GTK_BOX (dcontents), label, FALSE, FALSE, 0);
- gtk_widget_show_all (label);
+ gtk_widget_show (label);
/* GtkTable to hold contents */
grid = gtk_grid_new ();
diff --git a/tools/browser/ldap-browser/perspective-main.c b/tools/browser/ldap-browser/perspective-main.c
index e3320ea..4c99ab8 100644
--- a/tools/browser/ldap-browser/perspective-main.c
+++ b/tools/browser/ldap-browser/perspective-main.c
@@ -24,13 +24,14 @@
#include <gmodule.h>
#include "perspective-main.h"
#include "ldap-browser-perspective.h"
+#include "../perspectives-names.h"
static BrowserPerspectiveFactory bfact;
BrowserPerspectiveFactory *
ldap_browser_perspective_get_factory (void)
{
- bfact.id = "LDAPBrP";
+ bfact.id = LDAP_PERSPECTIVE_NAME;
bfact.perspective_name = _("LDAP browser");
bfact.menu_shortcut = "<control>P";
bfact.perspective_create = ldap_browser_perspective_new;
diff --git a/tools/browser/perspectives-names.h b/tools/browser/perspectives-names.h
new file mode 100644
index 0000000..684399e
--- /dev/null
+++ b/tools/browser/perspectives-names.h
@@ -0,0 +1,27 @@
+/*
+ * 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 __PERSPECTIVES_NAMES_H__
+#define __PERSPECTIVES_NAMES_H__
+
+#define SCHEMA_BROWSER_PERSPECTIVE_NAME "SchBrowP"
+#define QUERY_EXEC_PERSPECTIVE_NAME "QueryExecP"
+#define DATA_MANAGER_PERSPECTIVE_NAME "DataManP"
+#define LDAP_PERSPECTIVE_NAME "LDAPBrP"
+
+#endif
diff --git a/tools/browser/query-exec/perspective-main.c b/tools/browser/query-exec/perspective-main.c
index 6c62e24..1b1fb3b 100644
--- a/tools/browser/query-exec/perspective-main.c
+++ b/tools/browser/query-exec/perspective-main.c
@@ -24,13 +24,14 @@
#include <gmodule.h>
#include "perspective-main.h"
#include "query-exec-perspective.h"
+#include "../perspectives-names.h"
static BrowserPerspectiveFactory bfact;
BrowserPerspectiveFactory *
query_exec_perspective_get_factory (void)
{
- bfact.id = "QueryExecP";
+ bfact.id = QUERY_EXEC_PERSPECTIVE_NAME;
bfact.perspective_name = _("Query execution (SQL)");
bfact.menu_shortcut = "<control>S";
bfact.perspective_create = query_exec_perspective_new;
diff --git a/tools/browser/query-exec/query-console-page.c b/tools/browser/query-exec/query-console-page.c
index 2146b80..6757896 100644
--- a/tools/browser/query-exec/query-console-page.c
+++ b/tools/browser/query-exec/query-console-page.c
@@ -49,7 +49,7 @@ struct _QueryConsolePagePrivate {
GdaSet *params; /* execution params */
GtkWidget *params_popup; /* popup shown when invalid params are required */
- GtkToggleButton *params_toggle;
+ GtkToggleToolButton *params_toggle;
GtkWidget *params_top;
GtkWidget *params_form_box;
GtkWidget *params_form;
@@ -101,7 +101,7 @@ query_console_page_show_all (GtkWidget *widget)
QueryConsolePage *tconsole = (QueryConsolePage *) widget;
GTK_WIDGET_CLASS (parent_class)->show_all (widget);
- if (gtk_toggle_button_get_active (tconsole->priv->params_toggle))
+ if (gtk_toggle_tool_button_get_active (tconsole->priv->params_toggle))
gtk_widget_show (tconsole->priv->params_top);
else
gtk_widget_hide (tconsole->priv->params_top);
@@ -192,14 +192,14 @@ query_console_page_get_type (void)
static void editor_changed_cb (QueryEditor *editor, QueryConsolePage *tconsole);
static void editor_execute_request_cb (QueryEditor *editor, QueryConsolePage *tconsole);
-static void sql_clear_clicked_cb (GtkButton *button, QueryConsolePage *tconsole);
-static void sql_variables_clicked_cb (GtkToggleButton *button, QueryConsolePage *tconsole);
-static void sql_execute_clicked_cb (GtkButton *button, QueryConsolePage *tconsole);
-static void sql_indent_clicked_cb (GtkButton *button, QueryConsolePage *tconsole);
-static void sql_favorite_clicked_cb (GtkButton *button, QueryConsolePage *tconsole);
-
-static void history_copy_clicked_cb (GtkButton *button, QueryConsolePage *tconsole);
-static void history_clear_clicked_cb (GtkButton *button, QueryConsolePage *tconsole);
+static void sql_clear_clicked_cb (GtkToolButton *button, QueryConsolePage *tconsole);
+static void sql_variables_clicked_cb (GtkToggleToolButton *button, QueryConsolePage *tconsole);
+static void sql_execute_clicked_cb (GtkToolButton *button, QueryConsolePage *tconsole);
+static void sql_indent_clicked_cb (GtkToolButton *button, QueryConsolePage *tconsole);
+static void sql_favorite_clicked_cb (GtkToolButton *button, QueryConsolePage *tconsole);
+
+static void history_copy_clicked_cb (GtkToolButton *button, QueryConsolePage *tconsole);
+static void history_clear_clicked_cb (GtkToolButton *button, QueryConsolePage *tconsole);
static void history_changed_cb (QueryEditor *history, QueryConsolePage *tconsole);
static void rerun_requested_cb (QueryResult *qres, QueryEditorHistoryBatch *batch,
@@ -233,17 +233,15 @@ query_console_page_new (TConnection *tcnc)
/* main contents */
GtkWidget *vpaned;
vpaned = gtk_paned_new (GTK_ORIENTATION_VERTICAL);
+ gtk_style_context_add_class (gtk_widget_get_style_context (vpaned), "paned-no-border");
tconsole->priv->vpaned = NULL;
- gtk_box_pack_start (GTK_BOX (tconsole), vpaned, TRUE, TRUE, 6);
+ gtk_box_pack_start (GTK_BOX (tconsole), vpaned, TRUE, TRUE, 0);
/* top paned for the editor */
- GtkWidget *wid, *vbox, *hbox, *bbox, *hpaned, *button;
-
- hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0);
- gtk_paned_pack1 (GTK_PANED (vpaned), hbox, TRUE, FALSE);
+ GtkWidget *wid, *vbox, *bbox, *hpaned;
hpaned = gtk_paned_new (GTK_ORIENTATION_HORIZONTAL);
- gtk_box_pack_start (GTK_BOX (hbox), hpaned, TRUE, TRUE, 0);
+ gtk_style_context_add_class (gtk_widget_get_style_context (hpaned), "paned-no-border");
vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
gtk_paned_pack1 (GTK_PANED (hpaned), vbox, TRUE, FALSE);
@@ -285,61 +283,69 @@ query_console_page_new (TConnection *tcnc)
gtk_viewport_set_shadow_type (GTK_VIEWPORT (tconsole->priv->params_form_box), GTK_SHADOW_NONE);
gtk_container_add (GTK_CONTAINER (sw), tconsole->priv->params_form_box);
gtk_box_pack_start (GTK_BOX (vbox), sw, TRUE, TRUE, 0);
- gtk_widget_set_size_request (tconsole->priv->params_form_box, 250, -1);
+ gtk_widget_set_size_request (sw, 250, -1);
wid = gtk_label_new ("");
gtk_label_set_markup (GTK_LABEL (wid), VARIABLES_HELP);
gtk_widget_set_halign (wid, GTK_ALIGN_START);
gtk_container_add (GTK_CONTAINER (tconsole->priv->params_form_box), wid);
tconsole->priv->params_form = wid;
-
- bbox = gtk_button_box_new (GTK_ORIENTATION_VERTICAL);
- gtk_button_box_set_layout (GTK_BUTTON_BOX (bbox), GTK_BUTTONBOX_END);
- gtk_box_pack_start (GTK_BOX (hbox), bbox, FALSE, FALSE, 5);
-
- button = ui_make_small_button (FALSE, FALSE, _("Clear"),
- "_Clear", _("Clear the editor's\ncontents"));
- gtk_box_pack_start (GTK_BOX (bbox), button, FALSE, FALSE, 0);
- g_signal_connect (button, "clicked",
+
+ GtkWidget *packed;
+ GtkWidget *toolbar;
+ packed = ui_widget_add_toolbar (hpaned, &toolbar);
+ gtk_paned_pack1 (GTK_PANED (vpaned), packed, TRUE, FALSE);
+
+ GtkToolItem *titem;
+ titem = gtk_tool_button_new (NULL, NULL);
+ gtk_tool_button_set_icon_name (GTK_TOOL_BUTTON (titem), "edit-clear-symbolic");
+ gtk_widget_set_tooltip_text (GTK_WIDGET (titem), _("Clear the editor's\ncontents"));
+ gtk_toolbar_insert (GTK_TOOLBAR (toolbar), titem, -1);
+ g_signal_connect (titem, "clicked",
G_CALLBACK (sql_clear_clicked_cb), tconsole);
- button = ui_make_small_button (TRUE, FALSE, _("Variables"),
- NULL, _("Show variables needed\nto execute SQL"));
- gtk_box_pack_start (GTK_BOX (bbox), button, FALSE, FALSE, 0);
- tconsole->priv->params_toggle = GTK_TOGGLE_BUTTON (button);
- g_signal_connect (button, "toggled",
+ titem = gtk_toggle_tool_button_new ();
+ gtk_tool_button_set_icon_name (GTK_TOOL_BUTTON (titem), "insert-object-symbolic");
+ gtk_widget_set_tooltip_text (GTK_WIDGET (titem), _("Show variables needed\nto execute SQL"));
+ gtk_toolbar_insert (GTK_TOOLBAR (toolbar), titem, -1);
+ tconsole->priv->params_toggle = GTK_TOGGLE_TOOL_BUTTON (titem);
+ g_signal_connect (titem, "toggled",
G_CALLBACK (sql_variables_clicked_cb), tconsole);
- button = ui_make_small_button (FALSE, FALSE, _("Execute"),
- "_Execute", _("Execute SQL in editor"));
- tconsole->priv->exec_button = button;
- gtk_box_pack_start (GTK_BOX (bbox), button, FALSE, FALSE, 0);
- g_signal_connect (button, "clicked",
+ 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 SQL in editor"));
+ gtk_toolbar_insert (GTK_TOOLBAR (toolbar), titem, -1);
+ tconsole->priv->exec_button = GTK_WIDGET (titem);
+ g_signal_connect (titem, "clicked",
G_CALLBACK (sql_execute_clicked_cb), tconsole);
+
- button = ui_make_small_button (FALSE, FALSE, _("Indent"),
- NULL, _("Indent SQL in editor\n"
- "and make the code more readable\n"
- "(removes comments)"));
- tconsole->priv->indent_button = button;
- gtk_box_pack_start (GTK_BOX (bbox), button, FALSE, FALSE, 0);
- g_signal_connect (button, "clicked",
+ titem = gtk_tool_button_new (NULL, NULL);
+ gtk_tool_button_set_icon_name (GTK_TOOL_BUTTON (titem), "format-indent-more-symbolic");
+ gtk_widget_set_tooltip_text (GTK_WIDGET (titem), _("Indent SQL in editor\n"
+ "and make the code more readable\n"
+ "(removes comments)"));
+ gtk_toolbar_insert (GTK_TOOLBAR (toolbar), titem, -1);
+ tconsole->priv->indent_button = GTK_WIDGET (titem);
+ g_signal_connect (titem, "clicked",
G_CALLBACK (sql_indent_clicked_cb), tconsole);
- button = ui_make_small_button (FALSE, TRUE, _("Favorite"),
- NULL, _("Add SQL to favorite"));
- gtk_box_pack_start (GTK_BOX (bbox), button, FALSE, FALSE, 0);
- g_signal_connect (button, "clicked",
+
+ titem = gtk_tool_button_new (NULL, NULL);
+ gtk_tool_button_set_icon_name (GTK_TOOL_BUTTON (titem), "starred-symbolic");
+ gtk_widget_set_tooltip_text (GTK_WIDGET (titem), _("Add SQL to favorite"));
+ gtk_toolbar_insert (GTK_TOOLBAR (toolbar), titem, -1);
+ g_signal_connect (titem, "clicked",
G_CALLBACK (sql_favorite_clicked_cb), tconsole);
/* bottom paned for the results and history */
hpaned = gtk_paned_new (GTK_ORIENTATION_HORIZONTAL);
+ gtk_style_context_add_class (gtk_widget_get_style_context (hpaned), "paned-no-border");
gtk_paned_pack2 (GTK_PANED (vpaned), hpaned, TRUE, FALSE);
/* bottom left */
vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
- gtk_paned_pack1 (GTK_PANED (hpaned), vbox, FALSE, FALSE);
-
wid = gtk_label_new ("");
str = g_strdup_printf ("<b>%s</b>", _("Execution history:"));
gtk_label_set_markup (GTK_LABEL (wid), str);
@@ -355,30 +361,31 @@ query_console_page_new (TConnection *tcnc)
g_signal_connect (wid, "changed",
G_CALLBACK (history_changed_cb), tconsole);
- bbox = gtk_button_box_new (GTK_ORIENTATION_HORIZONTAL);
- gtk_box_pack_start (GTK_BOX (vbox), bbox, FALSE, FALSE, 0);
- gtk_button_box_set_layout (GTK_BUTTON_BOX (bbox), GTK_BUTTONBOX_END);
+ packed = ui_widget_add_toolbar (vbox, &toolbar);
+ gtk_paned_pack1 (GTK_PANED (hpaned), packed, FALSE, FALSE);
- button = ui_make_small_button (FALSE, FALSE, _("Copy"),
- "_Copy", _("Copy selected history\nto editor"));
- gtk_box_pack_start (GTK_BOX (bbox), button, FALSE, FALSE, 0);
- g_signal_connect (button, "clicked",
+ titem = gtk_tool_button_new (NULL, NULL);
+ gtk_tool_button_set_icon_name (GTK_TOOL_BUTTON (titem), "edit-copy-symbolic");
+ gtk_widget_set_tooltip_text (GTK_WIDGET (titem), _("Copy selected history\nto editor"));
+ gtk_toolbar_insert (GTK_TOOLBAR (toolbar), titem, -1);
+ tconsole->priv->history_copy_button = GTK_WIDGET (titem);
+ gtk_widget_set_sensitive (GTK_WIDGET (titem), FALSE);
+ g_signal_connect (titem, "clicked",
G_CALLBACK (history_copy_clicked_cb), tconsole);
- tconsole->priv->history_copy_button = button;
- gtk_widget_set_sensitive (button, FALSE);
- button = ui_make_small_button (FALSE, FALSE, _("Clear"),
- "_Clear", _("Clear history"));
- gtk_box_pack_start (GTK_BOX (bbox), button, FALSE, FALSE, 0);
- g_signal_connect (button, "clicked",
+ titem = gtk_tool_button_new (NULL, NULL);
+ gtk_tool_button_set_icon_name (GTK_TOOL_BUTTON (titem), "edit-clear-symbolic");
+ gtk_widget_set_tooltip_text (GTK_WIDGET (titem), _("Clear history"));
+ gtk_toolbar_insert (GTK_TOOLBAR (toolbar), titem, -1);
+ tconsole->priv->history_del_button = GTK_WIDGET (titem);
+ gtk_widget_set_sensitive (GTK_WIDGET (titem), FALSE);
+ g_signal_connect (titem, "clicked",
G_CALLBACK (history_clear_clicked_cb), tconsole);
- tconsole->priv->history_del_button = button;
- gtk_widget_set_sensitive (button, FALSE);
/* bottom right */
vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 8);
gtk_paned_pack2 (GTK_PANED (hpaned), vbox, TRUE, FALSE);
-
+
wid = gtk_label_new ("");
str = g_strdup_printf ("<b>%s</b>", _("Execution Results:"));
gtk_label_set_markup (GTK_LABEL (wid), str);
@@ -447,13 +454,13 @@ history_changed_cb (G_GNUC_UNUSED QueryEditor *history, QueryConsolePage *tconso
}
static void
-history_clear_clicked_cb (G_GNUC_UNUSED GtkButton *button, QueryConsolePage *tconsole)
+history_clear_clicked_cb (G_GNUC_UNUSED GtkToolButton *button, QueryConsolePage *tconsole)
{
query_editor_del_all_history_items (tconsole->priv->history);
}
static void
-history_copy_clicked_cb (G_GNUC_UNUSED GtkButton *button, QueryConsolePage *tconsole)
+history_copy_clicked_cb (G_GNUC_UNUSED GtkToolButton *button, QueryConsolePage *tconsole)
{
QueryEditorHistoryItem *qih;
QueryEditor *qe;
@@ -545,8 +552,8 @@ compute_params (QueryConsolePage *tconsole)
if (tconsole->priv->params && show_variables &&
gda_set_is_valid (tconsole->priv->params, NULL))
show_variables = FALSE;
- if (show_variables && !gtk_toggle_button_get_active (tconsole->priv->params_toggle))
- gtk_toggle_button_set_active (tconsole->priv->params_toggle, TRUE);
+ if (show_variables && !gtk_toggle_tool_button_get_active (tconsole->priv->params_toggle))
+ gtk_toggle_tool_button_set_active (tconsole->priv->params_toggle, TRUE);
}
else {
tconsole->priv->params_form = gtk_label_new ("");
@@ -578,16 +585,16 @@ editor_execute_request_cb (G_GNUC_UNUSED QueryEditor *editor, QueryConsolePage *
}
static void
-sql_variables_clicked_cb (GtkToggleButton *button, QueryConsolePage *tconsole)
+sql_variables_clicked_cb (GtkToggleToolButton *button, QueryConsolePage *tconsole)
{
- if (gtk_toggle_button_get_active (button))
+ if (gtk_toggle_tool_button_get_active (button))
gtk_widget_show (tconsole->priv->params_top);
else
gtk_widget_hide (tconsole->priv->params_top);
}
static void
-sql_clear_clicked_cb (G_GNUC_UNUSED GtkButton *button, QueryConsolePage *tconsole)
+sql_clear_clicked_cb (G_GNUC_UNUSED GtkToolButton *button, QueryConsolePage *tconsole)
{
query_editor_set_text (tconsole->priv->editor, NULL);
tconsole->priv->fav_id = -1;
@@ -595,7 +602,7 @@ sql_clear_clicked_cb (G_GNUC_UNUSED GtkButton *button, QueryConsolePage *tconsol
}
static void
-sql_indent_clicked_cb (G_GNUC_UNUSED GtkButton *button, QueryConsolePage *tconsole)
+sql_indent_clicked_cb (G_GNUC_UNUSED GtkToolButton *button, QueryConsolePage *tconsole)
{
gchar *sql;
GdaBatch *batch;
@@ -633,7 +640,7 @@ static void sql_favorite_new_mitem_cb (G_GNUC_UNUSED GtkMenuItem *mitem, QueryCo
static void sql_favorite_modify_mitem_cb (G_GNUC_UNUSED GtkMenuItem *mitem, QueryConsolePage *tconsole);
static void
-sql_favorite_clicked_cb (G_GNUC_UNUSED GtkButton *button, QueryConsolePage *tconsole)
+sql_favorite_clicked_cb (G_GNUC_UNUSED GtkToolButton *button, QueryConsolePage *tconsole)
{
GtkWidget *menu, *mitem;
TFavorites *tfav;
@@ -671,7 +678,7 @@ sql_favorite_clicked_cb (G_GNUC_UNUSED GtkButton *button, QueryConsolePage *tcon
GSList *allfav;
allfav = t_favorites_list (tfav, 0, T_FAVORITES_QUERIES, ORDER_KEY_QUERIES, NULL);
- if (allfav) {
+ if (allfav && allfav->next) {
GtkWidget *submenu;
GSList *list;
@@ -831,7 +838,7 @@ params_form_changed_cb (GdauiBasicForm *form, G_GNUC_UNUSED GdaHolder *param,
static void actually_execute (QueryConsolePage *tconsole, const gchar *sql, GdaSet *params,
gboolean add_editor_history);
static void
-sql_execute_clicked_cb (G_GNUC_UNUSED GtkButton *button, QueryConsolePage *tconsole)
+sql_execute_clicked_cb (G_GNUC_UNUSED GtkToolButton *button, QueryConsolePage *tconsole)
{
gchar *sql;
diff --git a/tools/browser/query-exec/query-editor.c b/tools/browser/query-exec/query-editor.c
index 5d11196..73e1f51 100644
--- a/tools/browser/query-exec/query-editor.c
+++ b/tools/browser/query-exec/query-editor.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>
* Copyright (C) 2015 Gergely Polonkai <gergely polonkai eu>
@@ -94,10 +94,6 @@ struct _QueryEditorPrivate {
GtkTreeView *completion_treeview;
GtkCellRenderer *completion_renderer;
GtkWidget *completion_sw;
-
- /* tooltip */
- GtkWidget *ovl;
- GtkWidget *tooltip_widget;
};
static void query_editor_class_init (QueryEditorClass *klass);
@@ -693,14 +689,18 @@ copy_all_in_signle_line_cb (GtkMenuItem *mitem, QueryEditor *editor)
}
static void
-text_view_populate_popup_cb (GtkTextView *entry, GtkMenu *menu, QueryEditor *editor)
+text_view_populate_popup_cb (GtkTextView *entry, GtkWidget *menu, QueryEditor *editor)
{
- GtkWidget *mitem;
- mitem = gtk_menu_item_new_with_label (_("Copy all in a single line"));
- g_signal_connect (G_OBJECT (mitem), "activate", G_CALLBACK (copy_all_in_signle_line_cb),
- editor);
- gtk_menu_shell_prepend (GTK_MENU_SHELL (menu), mitem);
- gtk_widget_show (mitem);
+ if (GTK_IS_MENU (menu)) {
+ if (editor->priv->mode != QUERY_EDITOR_HISTORY) {
+ GtkWidget *mitem;
+ mitem = gtk_menu_item_new_with_label (_("Copy all in a single line"));
+ g_signal_connect (G_OBJECT (mitem), "activate",
+ G_CALLBACK (copy_all_in_signle_line_cb), editor);
+ gtk_menu_shell_prepend (GTK_MENU_SHELL (menu), mitem);
+ gtk_widget_show (mitem);
+ }
+ }
}
static void
@@ -709,7 +709,7 @@ query_editor_init (QueryEditor *editor, G_GNUC_UNUSED QueryEditorClass *klass)
int tab = 8;
gboolean highlight = TRUE;
gboolean showlinesno = FALSE;
- GtkWidget *ovl, *wid;
+ GtkWidget *wid;
g_return_if_fail (QUERY_IS_EDITOR (editor));
@@ -729,32 +729,12 @@ query_editor_init (QueryEditor *editor, G_GNUC_UNUSED QueryEditorClass *klass)
editor->priv->completion_popup = NULL;
/* set up widgets */
- ovl = widget_overlay_new ();
- editor->priv->ovl = ovl;
- gtk_box_pack_start (GTK_BOX (editor), ovl, TRUE, TRUE, 2);
-
editor->priv->scrolled_window = gtk_scrolled_window_new (NULL, NULL);
+ gtk_box_pack_start (GTK_BOX (editor), editor->priv->scrolled_window, TRUE, TRUE, 2);
gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (editor->priv->scrolled_window),
- GTK_SHADOW_ETCHED_OUT);
+ GTK_SHADOW_NONE);
gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (editor->priv->scrolled_window),
GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
- gtk_container_add (GTK_CONTAINER (ovl), editor->priv->scrolled_window);
- widget_overlay_set_child_props (WIDGET_OVERLAY (ovl), editor->priv->scrolled_window,
- WIDGET_OVERLAY_CHILD_HALIGN, WIDGET_OVERLAY_ALIGN_FILL,
- WIDGET_OVERLAY_CHILD_VALIGN, WIDGET_OVERLAY_ALIGN_FILL,
- -1);
-
- wid = gtk_label_new ("");
- editor->priv->tooltip_widget = wid;
- gtk_label_set_markup (GTK_LABEL (wid), QUERY_EDITOR_TOOLTIP);
- gtk_container_add (GTK_CONTAINER (ovl), wid);
- widget_overlay_set_child_props (WIDGET_OVERLAY (ovl), wid,
- WIDGET_OVERLAY_CHILD_HALIGN, WIDGET_OVERLAY_ALIGN_CENTER,
- WIDGET_OVERLAY_CHILD_VALIGN, WIDGET_OVERLAY_ALIGN_CENTER,
- WIDGET_OVERLAY_CHILD_ALPHA, .8,
- WIDGET_OVERLAY_CHILD_TOOLTIP, TRUE,
- -1);
-
#ifdef HAVE_GTKSOURCEVIEW
editor->priv->text = gtk_source_view_new ();
gtk_source_buffer_set_highlight_syntax (GTK_SOURCE_BUFFER (gtk_text_view_get_buffer (GTK_TEXT_VIEW
(editor->priv->text))),
@@ -764,6 +744,7 @@ query_editor_init (QueryEditor *editor, G_GNUC_UNUSED QueryEditorClass *klass)
#else
editor->priv->text = gtk_text_view_new ();
#endif
+ gtk_widget_set_tooltip_markup (editor->priv->text, QUERY_EDITOR_TOOLTIP);
gtk_container_add (GTK_CONTAINER (editor->priv->scrolled_window), editor->priv->text);
g_signal_connect (editor->priv->text, "event",
@@ -804,10 +785,10 @@ query_editor_init (QueryEditor *editor, G_GNUC_UNUSED QueryEditorClass *klass)
create_tags_for_sql (editor, QUERY_EDITOR_LANGUAGE_SQL);
- gtk_widget_show_all (ovl);
-
/* timeout function to update timestamps */
editor->priv->ts_timeout_id = 0;
+
+ gtk_widget_show_all (GTK_WIDGET (editor));
}
static void
@@ -1000,8 +981,6 @@ query_editor_set_mode (QueryEditor *editor, QueryEditorMode mode)
gtk_widget_set_tooltip_markup (editor->priv->text, NULL);
gtk_text_view_set_editable (GTK_TEXT_VIEW (editor->priv->text), FALSE);
gtk_text_view_set_cursor_visible (GTK_TEXT_VIEW (editor->priv->text), FALSE);
- gtk_widget_destroy (editor->priv->tooltip_widget);
- editor->priv->tooltip_widget = NULL;
break;
default:
g_assert_not_reached ();
diff --git a/tools/browser/schema-browser/objects-index.c b/tools/browser/schema-browser/objects-index.c
index b31aa19..52945aa 100644
--- a/tools/browser/schema-browser/objects-index.c
+++ b/tools/browser/schema-browser/objects-index.c
@@ -172,7 +172,7 @@ objects_index_new (TConnection *tcnc)
GtkWidget *label;
gchar *str;
- str = g_strdup_printf ("<b>%s</b>", _("Tables' index"));
+ str = g_strdup_printf ("<b>%s</b>\n", _("Index of tables and views"));
label = gdaui_bar_new (str);
g_free (str);
gtk_box_pack_start (GTK_BOX (hbox), label, TRUE, TRUE, 0);
diff --git a/tools/browser/schema-browser/perspective-main.c b/tools/browser/schema-browser/perspective-main.c
index d470d91..a36596b 100644
--- a/tools/browser/schema-browser/perspective-main.c
+++ b/tools/browser/schema-browser/perspective-main.c
@@ -24,13 +24,14 @@
#include <gmodule.h>
#include "perspective-main.h"
#include "schema-browser-perspective.h"
+#include "../perspectives-names.h"
static BrowserPerspectiveFactory bfact;
BrowserPerspectiveFactory *
schema_browser_perspective_get_factory (void)
{
- bfact.id = "SchBrowP";
+ bfact.id = SCHEMA_BROWSER_PERSPECTIVE_NAME;
bfact.perspective_name = _("Schema browser");
bfact.menu_shortcut = "<control>B";
bfact.perspective_create = schema_browser_perspective_new;
diff --git a/tools/browser/schema-browser/schema-browser-perspective.c
b/tools/browser/schema-browser/schema-browser-perspective.c
index adae26d..646b9c0 100644
--- a/tools/browser/schema-browser/schema-browser-perspective.c
+++ b/tools/browser/schema-browser/schema-browser-perspective.c
@@ -1,5 +1,5 @@
/*
-5 4* Copyright (C) 2009 - 2015 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>
*
diff --git a/tools/browser/schema-browser/table-info.c b/tools/browser/schema-browser/table-info.c
index d574d0c..a8d88f7 100644
--- a/tools/browser/schema-browser/table-info.c
+++ b/tools/browser/schema-browser/table-info.c
@@ -40,6 +40,11 @@
#include <libgda/gda-data-model-extra.h>
#include "../fk-declare.h"
#include <libgda/gda-debug-macros.h>
+#include "../perspectives-names.h"
+
+#define PAGE_COLUMNS "C"
+#define PAGE_RELATIONS "R"
+#define PAGE_PREFS "P"
struct _TableInfoPrivate {
TConnection *tcnc;
@@ -49,9 +54,8 @@ struct _TableInfoPrivate {
gchar *table_short_name;
GdauiBar *header;
- GtkWidget *contents; /* notebook with pageO <=> @unknown_table_notice, page1 <=> @pages */
+ GtkWidget *contents; /* notebook with pageO <=> @unknown_table_notice, page1 <=> pages stack */
GtkWidget *unknown_table_notice;
- GtkWidget *pages; /* notebook to store individual pages */
GtkWidget *insert_popup;
GHashTable *insert_columns_hash; /* key = column index as a pointer, value = GdaHolder in the
@@ -258,10 +262,46 @@ source_drag_data_get_cb (G_GNUC_UNUSED GtkWidget *widget, G_GNUC_UNUSED GdkDragC
}
}
+static GdaMetaDbObject *
+get_table_meta_data (TableInfo *tinfo)
+{
+ gtk_widget_set_sensitive (GTK_WIDGET (tinfo), FALSE);
+ GdaMetaStruct *mstruct;
+ mstruct = t_connection_get_meta_struct (tinfo->priv->tcnc);
+ if (!mstruct) {
+ BrowserWindow *bwin;
+ bwin = (BrowserWindow*) gtk_widget_get_toplevel ((GtkWidget*) tinfo);
+ gtk_widget_set_sensitive (GTK_WIDGET (tinfo), TRUE);
+ ui_show_error (GTK_WINDOW (bwin), _("Meta data not yet available"));
+ return NULL;
+ }
+
+ /* get table's information */
+ GdaMetaDbObject *dbo;
+ GValue *v1, *v2;
+ g_value_set_string ((v1 = gda_value_new (G_TYPE_STRING)),
+ tinfo->priv->schema);
+ g_value_set_string ((v2 = gda_value_new (G_TYPE_STRING)),
+ tinfo->priv->table_name);
+ dbo = gda_meta_struct_complement (mstruct,
+ GDA_META_DB_TABLE, NULL, v1, v2, NULL);
+ gda_value_free (v1);
+ gda_value_free (v2);
+
+ if (! dbo) {
+ BrowserWindow *bwin;
+ bwin = (BrowserWindow*) gtk_widget_get_toplevel ((GtkWidget*) tinfo);
+ gtk_widget_set_sensitive (GTK_WIDGET (tinfo), TRUE);
+ ui_show_error (GTK_WINDOW (bwin), _("Can't find information about table"));
+ }
+
+ gtk_widget_set_sensitive (GTK_WIDGET (tinfo), TRUE);
+ return dbo;
+}
+
static void
meta_changed_cb (G_GNUC_UNUSED TConnection *tcnc, GdaMetaStruct *mstruct, TableInfo *tinfo)
{
- GdaMetaDbObject *dbo;
GValue *schema_v = NULL, *name_v;
if (tinfo->priv->insert_columns_hash) {
@@ -273,13 +313,6 @@ meta_changed_cb (G_GNUC_UNUSED TConnection *tcnc, GdaMetaStruct *mstruct, TableI
tinfo->priv->insert_popup = NULL;
}
- g_value_set_string ((schema_v = gda_value_new (G_TYPE_STRING)), tinfo->priv->schema);
- g_value_set_string ((name_v = gda_value_new (G_TYPE_STRING)), tinfo->priv->table_name);
- dbo = gda_meta_struct_get_db_object (mstruct, NULL, schema_v, name_v);
- if (schema_v)
- gda_value_free (schema_v);
- gda_value_free (name_v);
-
if (tinfo->priv->table_short_name) {
g_free (tinfo->priv->table_short_name);
tinfo->priv->table_short_name = NULL;
@@ -288,6 +321,9 @@ meta_changed_cb (G_GNUC_UNUSED TConnection *tcnc, GdaMetaStruct *mstruct, TableI
g_signal_handlers_disconnect_by_func (tinfo->priv->header,
G_CALLBACK (source_drag_data_get_cb), tinfo);
}
+
+ GdaMetaDbObject *dbo;
+ dbo = get_table_meta_data (tinfo);
if (dbo) {
tinfo->priv->table_short_name = g_strdup (dbo->obj_short_name);
gtk_drag_source_set ((GtkWidget *) tinfo->priv->header, GDK_BUTTON1_MASK | GDK_BUTTON3_MASK,
@@ -323,14 +359,32 @@ table_info_new (TConnection *tcnc,
G_CALLBACK (meta_changed_cb), tinfo);
tinfo->priv->schema = g_strdup (schema);
tinfo->priv->table_name = g_strdup (table);
-
+
+ GdaMetaDbObject *dbo;
+ dbo = get_table_meta_data (tinfo);
+
/* header */
GtkWidget *label;
gchar *str, *tmp;
+ /* To translators: "Object" is used when we can't determine if @table is a table or a view */
+ const gchar *otype = _("Object");
+ if (dbo) {
+ switch (dbo->obj_type) {
+ case GDA_META_DB_TABLE:
+ otype = _("Table");
+ break;
+ case GDA_META_DB_VIEW:
+ otype = _("View");
+ break;
+ default:
+ break;
+ }
+ }
+
/* To translators: "In schema" refers to the database schema an object is in */
tmp = g_strdup_printf (_("In schema '%s'"), schema);
- str = g_strdup_printf ("<b>%s</b>\n%s", table, tmp);
+ str = g_markup_printf_escaped ("%s <b>%s</b>\n%s", otype, table, tmp);
g_free (tmp);
label = gdaui_bar_new (str);
g_free (str);
@@ -364,44 +418,39 @@ table_info_new (TConnection *tcnc,
tinfo->priv->unknown_table_notice = label;
/* notebook for the pages */
- GtkWidget *sub_nb;
- sub_nb = gtk_notebook_new ();
- tinfo->priv->pages = sub_nb;
- gtk_notebook_append_page (GTK_NOTEBOOK (top_nb), sub_nb, NULL);
- gtk_notebook_set_tab_pos (GTK_NOTEBOOK (sub_nb), GTK_POS_BOTTOM);
+ GtkWidget *sub_stack;
+ sub_stack = gtk_stack_new ();
+ gtk_stack_set_transition_type (GTK_STACK (sub_stack), GTK_STACK_TRANSITION_TYPE_CROSSFADE);
+ GtkWidget *vbox;
+ vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
+ gtk_box_pack_start (GTK_BOX (vbox), sub_stack, TRUE, TRUE, 0);
+ GtkWidget *ss;
+ ss = gtk_stack_switcher_new ();
+ gdaui_bar_add_widget (tinfo->priv->header, ss);
+ gtk_stack_switcher_set_stack (GTK_STACK_SWITCHER (ss), GTK_STACK (sub_stack));
+ gtk_widget_show (ss);
+ gtk_notebook_append_page (GTK_NOTEBOOK (top_nb), vbox, NULL);
/* append pages */
GtkWidget *page;
page = table_columns_new (tinfo);
if (page) {
- label = gtk_label_new ("");
- str = g_strdup_printf ("<small>%s</small>", _("Columns"));
- gtk_label_set_markup (GTK_LABEL (label), str);
- g_free (str);
gtk_widget_show (page);
- gtk_notebook_append_page (GTK_NOTEBOOK (sub_nb), page, label);
+ gtk_stack_add_titled (GTK_STACK (sub_stack), page, PAGE_COLUMNS, _("Columns"));
}
#ifdef HAVE_GOOCANVAS
page = table_relations_new (tinfo);
if (page) {
- label = gtk_label_new ("");
- str = g_strdup_printf ("<small>%s</small>", _("Relations"));
- gtk_label_set_markup (GTK_LABEL (label), str);
- g_free (str);
gtk_widget_show (page);
- gtk_notebook_append_page (GTK_NOTEBOOK (sub_nb), page, label);
+ gtk_stack_add_titled (GTK_STACK (sub_stack), page, PAGE_RELATIONS, _("Relations"));
}
#endif
page = table_preferences_new (tinfo);
if (page) {
- label = gtk_label_new ("");
- str = g_strdup_printf ("<small>%s</small>", _("Preferences"));
- gtk_label_set_markup (GTK_LABEL (label), str);
- g_free (str);
gtk_widget_show (page);
- gtk_notebook_append_page (GTK_NOTEBOOK (sub_nb), page, label);
+ gtk_stack_add_titled (GTK_STACK (sub_stack), page, PAGE_PREFS, _("Preferences"));
}
- gtk_notebook_set_current_page (GTK_NOTEBOOK (sub_nb), 0);
+ gtk_stack_set_visible_child_name (GTK_STACK (sub_stack), PAGE_COLUMNS);
/* show everything */
gtk_widget_show_all (top_nb);
@@ -411,6 +460,8 @@ table_info_new (TConnection *tcnc,
mstruct = t_connection_get_meta_struct (tinfo->priv->tcnc);
if (mstruct)
meta_changed_cb (tinfo->priv->tcnc, mstruct, tinfo);
+ else
+ display_table_not_found_error (tinfo, dbo ? FALSE : TRUE);
return (GtkWidget*) tinfo;
}
@@ -487,7 +538,7 @@ action_view_contents_cb (G_GNUC_UNUSED GSimpleAction *action, G_GNUC_UNUSED GVar
BrowserWindow *bwin;
BrowserPerspective *pers;
bwin = (BrowserWindow*) gtk_widget_get_toplevel ((GtkWidget*) tinfo);
- pers = browser_window_change_perspective (bwin, _("Data manager"));
+ pers = browser_window_change_perspective (bwin, DATA_MANAGER_PERSPECTIVE_NAME);
xmlDocPtr doc;
xmlNodePtr node, topnode;
@@ -662,31 +713,11 @@ action_insert_cb (G_GNUC_UNUSED GSimpleAction *action, G_GNUC_UNUSED GVariant *s
return;
}
- BrowserWindow *bwin;
- GdaMetaStruct *mstruct;
- bwin = (BrowserWindow*) gtk_widget_get_toplevel ((GtkWidget*) tinfo);
- mstruct = t_connection_get_meta_struct (tinfo->priv->tcnc);
- if (!mstruct) {
- ui_show_error (GTK_WINDOW (bwin), _("Meta data not yet available"));
- return;
- }
-
/* get table's information */
GdaMetaDbObject *dbo;
- GValue *v1, *v2;
- g_value_set_string ((v1 = gda_value_new (G_TYPE_STRING)),
- tinfo->priv->schema);
- g_value_set_string ((v2 = gda_value_new (G_TYPE_STRING)),
- tinfo->priv->table_name);
- dbo = gda_meta_struct_complement (mstruct,
- GDA_META_DB_TABLE, NULL, v1, v2, NULL);
- gda_value_free (v1);
- gda_value_free (v2);
-
- if (! dbo) {
- ui_show_error (GTK_WINDOW (bwin), _("Can't find information about table"));
+ dbo = get_table_meta_data (tinfo);
+ if (! dbo)
return;
- }
/* build statement */
GdaSqlBuilder *b;
@@ -713,6 +744,16 @@ action_insert_cb (G_GNUC_UNUSED GSimpleAction *action, G_GNUC_UNUSED GVariant *s
g_free (sql);
#endif
+ /* common data required further down */
+ BrowserWindow *bwin;
+ GdaMetaStruct *mstruct;
+ bwin = (BrowserWindow*) gtk_widget_get_toplevel ((GtkWidget*) tinfo);
+ mstruct = t_connection_get_meta_struct (tinfo->priv->tcnc);
+ if (!mstruct) {
+ ui_show_error (GTK_WINDOW (bwin), _("Meta data not yet available"));
+ return;
+ }
+
/* handle user preferences */
GdaSet *params;
if (! gda_statement_get_parameters (stmt, ¶ms, NULL)) {
@@ -720,7 +761,7 @@ action_insert_cb (G_GNUC_UNUSED GSimpleAction *action, G_GNUC_UNUSED GVariant *s
sql = gda_statement_to_sql (stmt, NULL, NULL);
ui_show_error (GTK_WINDOW (bwin),
- _("Internal error while building INSERT statement:\n%s"), sql);
+ _("Internal error while building INSERT statement:\n%s"), sql);
g_free (sql);
g_object_unref (stmt);
return;
@@ -941,15 +982,10 @@ action_declarefk_cb (G_GNUC_UNUSED GSimpleAction *action, G_GNUC_UNUSED GVariant
GdaMetaStruct *mstruct;
GdaMetaDbObject *dbo;
gint response;
- GValue *v1, *v2;
parent = (GtkWidget*) gtk_widget_get_toplevel ((GtkWidget*) tinfo);
mstruct = t_connection_get_meta_struct (tinfo->priv->tcnc);
- g_value_set_string ((v1 = gda_value_new (G_TYPE_STRING)), tinfo->priv->schema);
- g_value_set_string ((v2 = gda_value_new (G_TYPE_STRING)), tinfo->priv->table_name);
- dbo = gda_meta_struct_get_db_object (mstruct, NULL, v1, v2);
- gda_value_free (v1);
- gda_value_free (v2);
+ dbo = get_table_meta_data (tinfo);
if (!dbo || (dbo->obj_type != GDA_META_DB_TABLE)) {
ui_show_error ((GtkWindow *) parent, _("Can't find information about table '%s'"),
tinfo->priv->table_short_name);
diff --git a/tools/browser/schema-browser/table-info.h b/tools/browser/schema-browser/table-info.h
index 4e6aed6..cbdb147 100644
--- a/tools/browser/schema-browser/table-info.h
+++ b/tools/browser/schema-browser/table-info.h
@@ -50,7 +50,7 @@ GtkWidget *table_info_new (TConnection *tcnc,
const gchar *schema, const gchar *table);
const gchar *table_info_get_table_schema (TableInfo *table_info);
const gchar *table_info_get_table_name (TableInfo *table_info);
-TConnection *table_info_get_connection (TableInfo *table_info);
+TConnection *table_info_get_connection (TableInfo *table_info);
G_END_DECLS
diff --git a/tools/browser/schema-browser/table-preferences.c
b/tools/browser/schema-browser/table-preferences.c
index 3bb572b..8bef034 100644
--- a/tools/browser/schema-browser/table-preferences.c
+++ b/tools/browser/schema-browser/table-preferences.c
@@ -50,8 +50,8 @@ struct _TablePreferencesPrivate {
gboolean save_plugin_changes;
GtkWidget *plugins_combo;
GtkWidget *options_vbox;
- GtkWidget *options_none;
GtkWidget *options_wid;
+ GtkWidget *options_label;
GtkWidget *preview_vbox;
GtkWidget *preview_none;
GtkWidget *preview_wid;
@@ -459,11 +459,9 @@ create_column_properties (TablePreferences *tpref)
/* plugin options */
tpref->priv->options_vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
gtk_grid_attach (GTK_GRID (grid), tpref->priv->options_vbox, 1, 1, 1, 1);
- tpref->priv->options_none = gtk_label_new (_("none"));
- gtk_widget_set_halign (tpref->priv->options_none, GTK_ALIGN_START);
- gtk_box_pack_start (GTK_BOX (tpref->priv->options_vbox), tpref->priv->options_none, FALSE, FALSE, 0);
label = gtk_label_new (_("Options:"));
+ tpref->priv->options_label = label;
gtk_widget_set_halign (label, GTK_ALIGN_START);
gtk_grid_attach (GTK_GRID (grid), label, 0, 1, 1, 1);
@@ -639,8 +637,8 @@ plugins_combo_changed_cb (GtkComboBox *combo, TablePreferences *tpref)
if (tpref->priv->options_wid) {
plist = gdaui_basic_form_get_data_set (GDAUI_BASIC_FORM
(tpref->priv->options_wid));
- gtk_widget_hide (tpref->priv->options_none);
gtk_widget_show (tpref->priv->options_wid);
+ gtk_widget_show (tpref->priv->options_label);
if (plist && !tpref->priv->save_plugin_changes) {
/* load plugin options */
@@ -700,7 +698,7 @@ plugins_combo_changed_cb (GtkComboBox *combo, TablePreferences *tpref)
gtk_widget_destroy (old_options);
if (! tpref->priv->options_wid)
- gtk_widget_show (tpref->priv->options_none);
+ gtk_widget_hide (tpref->priv->options_label);
}
static void
diff --git a/tools/browser/ui-support.c b/tools/browser/ui-support.c
index 1389000..b5d63db 100644
--- a/tools/browser/ui-support.c
+++ b/tools/browser/ui-support.c
@@ -376,12 +376,13 @@ ui_make_small_button (gboolean is_toggle, gboolean with_arrow,
const gchar *label, const gchar *icon_name,
const gchar *tooltip)
{
- GtkWidget *button, *hbox = NULL;
+ GtkWidget *button, *hbox = NULL;
if (is_toggle)
button = gtk_toggle_button_new ();
else
button = gtk_button_new ();
+ gtk_widget_set_halign (button, GTK_ALIGN_CENTER);
if ((label && icon_name) || with_arrow) {
hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0);
gtk_container_add (GTK_CONTAINER (button), hbox);
@@ -410,7 +411,7 @@ ui_make_small_button (gboolean is_toggle, gboolean with_arrow,
if (with_arrow) {
GtkWidget *arrow;
arrow = gtk_image_new_from_icon_name ("go-next-symbolic", GTK_ICON_SIZE_MENU);
- gtk_box_pack_start (GTK_BOX (hbox), arrow, TRUE, TRUE, 0);
+ gtk_box_pack_start (GTK_BOX (hbox), arrow, FALSE, FALSE, 0);
gtk_widget_set_halign (arrow, GTK_ALIGN_END);
gtk_widget_set_valign (arrow, GTK_ALIGN_CENTER);
gtk_widget_show (arrow);
@@ -574,3 +575,45 @@ ui_get_pixbuf_icon (UiIconType type)
return pix;
}
}
+
+/**
+ * ui_widget_add_toolbar:
+ * @widget: the widget to wrap
+ * @out_toolbar: a place holder for the new toolbar
+ *
+ * Wraps @widget and add a toolbar. The call is then responsible to add things to the toolbar.
+ *
+ * The returned widget is the one which needs to be incorporated in the UI by the caller, who is also
responsible
+ * for calling gtk_widget_show().
+ *
+ * Returns: a new #GtkWidget
+ */
+GtkWidget *
+ui_widget_add_toolbar (GtkWidget *widget, GtkWidget **out_toolbar)
+{
+ g_return_val_if_fail (out_toolbar, NULL);
+ g_return_val_if_fail (GTK_IS_WIDGET (widget), NULL);
+
+ GtkWidget *vbox;
+ vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
+ gtk_widget_set_margin_bottom (vbox, 6);
+
+ GtkWidget *frame;
+ frame = gtk_frame_new (NULL);
+ gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_IN);
+ gtk_box_pack_start (GTK_BOX (vbox), frame, TRUE, TRUE, 0);
+
+ gtk_container_add (GTK_CONTAINER (frame), widget);
+ gtk_widget_show (widget);
+
+ GtkWidget *toolbar;
+ toolbar = gtk_toolbar_new ();
+ gtk_widget_set_halign (toolbar, GTK_ALIGN_START);
+ gtk_toolbar_set_icon_size (GTK_TOOLBAR (toolbar), GTK_ICON_SIZE_SMALL_TOOLBAR);
+ gtk_style_context_add_class (gtk_widget_get_style_context (toolbar), "inline-toolbar");
+ gtk_box_pack_start (GTK_BOX (vbox), toolbar, FALSE, FALSE, 0);
+ gtk_widget_show (toolbar);
+ *out_toolbar = toolbar;
+
+ return vbox;
+}
diff --git a/tools/browser/ui-support.h b/tools/browser/ui-support.h
index d96984c..ce4cee6 100644
--- a/tools/browser/ui-support.h
+++ b/tools/browser/ui-support.h
@@ -58,6 +58,7 @@ GtkWidget *ui_make_tab_label_with_icon (const gchar *label,
GtkWidget *ui_make_tab_label_with_pixbuf (const gchar *label,
GdkPixbuf *pixbuf, gboolean with_close,
GtkWidget **out_close_button);
+GtkWidget *ui_widget_add_toolbar (GtkWidget *widget, GtkWidget **out_toolbar);
/*
* icons, use with ui_get_pixbuf_icon() for the associated icons
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]