[libgda] GdaBrowser: query exec. improvements
- From: Vivien Malerba <vivien src gnome org>
- To: svn-commits-list gnome org
- Cc:
- Subject: [libgda] GdaBrowser: query exec. improvements
- Date: Sun, 13 Sep 2009 13:24:35 +0000 (UTC)
commit 54b3cc7bacd016d1799fd2c2908b1e43c1baefe7
Author: Vivien Malerba <malerba gnome-db org>
Date: Mon Sep 7 21:56:26 2009 +0200
GdaBrowser: query exec. improvements
tools/browser/query-exec/query-console.c | 10 +-
tools/browser/query-exec/query-editor.c | 2 +-
tools/browser/query-exec/query-editor.h | 25 +++---
tools/browser/query-exec/query-result.c | 126 ++++++++++++++++++------------
4 files changed, 96 insertions(+), 67 deletions(-)
---
diff --git a/tools/browser/query-exec/query-console.c b/tools/browser/query-exec/query-console.c
index 03ccb0e..c435415 100644
--- a/tools/browser/query-exec/query-console.c
+++ b/tools/browser/query-exec/query-console.c
@@ -297,7 +297,7 @@ query_console_new (BrowserConnection *bcnc)
GtkWidget *vpaned;
vpaned = gtk_vpaned_new ();
tconsole->priv->vpaned = NULL;
- gtk_box_pack_start (GTK_BOX (tconsole), vpaned, TRUE, TRUE, 0);
+ gtk_box_pack_start (GTK_BOX (tconsole), vpaned, TRUE, TRUE, 6);
/* top paned for the editor */
GtkWidget *wid, *vbox, *hbox, *bbox, *hpaned, *button;
@@ -316,8 +316,8 @@ query_console_new (BrowserConnection *bcnc)
gtk_label_set_markup (GTK_LABEL (wid), str);
g_free (str);
gtk_misc_set_alignment (GTK_MISC (wid), 0., -1);
- gtk_widget_set_tooltip_text (wid, _("Enter SQL code to execute\nwhich can be specific to the database to\n"
- "which the connection is opened"));
+ gtk_widget_set_tooltip_text (wid, _("Enter SQL code to execute\n(must be understood by the database to\n"
+ "which the connection is opened, except for the variables definition)"));
gtk_box_pack_start (GTK_BOX (vbox), wid, FALSE, FALSE, 0);
wid = query_editor_new ();
@@ -400,7 +400,7 @@ query_console_new (BrowserConnection *bcnc)
tconsole->priv->history = QUERY_EDITOR (wid);
query_editor_set_mode (tconsole->priv->history, QUERY_EDITOR_HISTORY);
gtk_widget_set_size_request (wid, 200, -1);
- gtk_box_pack_start (GTK_BOX (vbox), wid, TRUE, TRUE, 0);
+ gtk_box_pack_start (GTK_BOX (vbox), wid, TRUE, TRUE, 6);
g_signal_connect (wid, "changed",
G_CALLBACK (history_changed_cb), tconsole);
@@ -435,7 +435,7 @@ query_console_new (BrowserConnection *bcnc)
wid = query_result_new ();
tconsole->priv->query_result = wid;
- gtk_box_pack_start (GTK_BOX (vbox), wid, TRUE, TRUE, 0);
+ gtk_box_pack_start (GTK_BOX (vbox), wid, TRUE, TRUE, 6);
/* show everything */
gtk_widget_show_all (vpaned);
diff --git a/tools/browser/query-exec/query-editor.c b/tools/browser/query-exec/query-editor.c
index 6896b22..3b7bf00 100644
--- a/tools/browser/query-exec/query-editor.c
+++ b/tools/browser/query-exec/query-editor.c
@@ -853,7 +853,7 @@ query_editor_add_history_item (QueryEditor *editor, QueryEditorHistoryItem *hist
tag = gtk_text_buffer_create_tag (buffer, NULL,
- "scale", PANGO_SCALE_X_SMALL,
+ "scale", 0.75,
"foreground", "gray",
"foreground-set", TRUE, NULL);
hdata->tag = g_object_ref (tag);
diff --git a/tools/browser/query-exec/query-editor.h b/tools/browser/query-exec/query-editor.h
index 462f724..bf42bad 100644
--- a/tools/browser/query-exec/query-editor.h
+++ b/tools/browser/query-exec/query-editor.h
@@ -39,18 +39,6 @@ typedef struct _QueryEditor QueryEditor;
typedef struct _QueryEditorClass QueryEditorClass;
typedef struct _QueryEditorPrivate QueryEditorPrivate;
-struct _QueryEditor {
- GtkVBox parent;
- QueryEditorPrivate *priv;
-};
-
-struct _QueryEditorClass {
- GtkVBoxClass parent_class;
-
- /* signals */
- void (* changed) (QueryEditor editor);
-};
-
/*
* Query history item
*/
@@ -85,6 +73,19 @@ void query_editor_history_batch_add_item (QueryEditorHistory
void query_editor_history_batch_del_item (QueryEditorHistoryBatch *qib,
QueryEditorHistoryItem *qih);
+
+struct _QueryEditor {
+ GtkVBox parent;
+ QueryEditorPrivate *priv;
+};
+
+struct _QueryEditorClass {
+ GtkVBoxClass parent_class;
+
+ /* signals */
+ void (* changed) (QueryEditor *editor);
+};
+
/*
* Editor modes
*/
diff --git a/tools/browser/query-exec/query-result.c b/tools/browser/query-exec/query-result.c
index 788555e..546f9e4 100644
--- a/tools/browser/query-exec/query-result.c
+++ b/tools/browser/query-exec/query-result.c
@@ -141,17 +141,50 @@ query_result_new (void)
void
query_result_show_history_batch (QueryResult *qres, QueryEditorHistoryBatch *hbatch)
{
+ GtkWidget *sw, *vbox;
+ GSList *list;
GtkWidget *child;
+
g_return_if_fail (IS_QUERY_RESULT (qres));
if (qres->priv->child)
gtk_widget_destroy (qres->priv->child);
- TO_IMPLEMENT;
- child = make_widget_for_notice ();
- gtk_box_pack_start (GTK_BOX (qres), child, TRUE, TRUE, 10);
- gtk_widget_show (child);
- qres->priv->child = child;
+ if (!hbatch) {
+ child = make_widget_for_notice ();
+ gtk_box_pack_start (GTK_BOX (qres), child, TRUE, TRUE, 10);
+ gtk_widget_show (child);
+ qres->priv->child = child;
+ return;
+ }
+
+ vbox = gtk_vbox_new (FALSE, 0);
+ for (list = hbatch->hist_items; list; list = list->next) {
+ QueryEditorHistoryItem *hitem;
+
+ hitem = (QueryEditorHistoryItem*) list->data;
+ if (hitem->result) {
+ if (GDA_IS_DATA_MODEL (hitem->result))
+ child = make_widget_for_data_model (GDA_DATA_MODEL (hitem->result));
+ else if (GDA_IS_SET (hitem->result))
+ child = make_widget_for_set (GDA_SET (hitem->result));
+ else
+ g_assert_not_reached ();
+ }
+ else
+ child = make_widget_for_error (hitem->exec_error);
+ gtk_box_pack_start (GTK_BOX (vbox), child, TRUE, TRUE, 10);
+ }
+
+ sw = gtk_scrolled_window_new (NULL, NULL);
+ gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (sw),
+ GTK_POLICY_AUTOMATIC,
+ GTK_POLICY_AUTOMATIC);
+ gtk_scrolled_window_add_with_viewport (GTK_SCROLLED_WINDOW (sw), vbox);
+
+ gtk_box_pack_start (GTK_BOX (qres), sw, TRUE, TRUE, 0);
+ gtk_widget_show_all (sw);
+ qres->priv->child = sw;
}
/**
@@ -183,7 +216,7 @@ query_result_show_history_item (QueryResult *qres, QueryEditorHistoryItem *hitem
else
child = make_widget_for_error (hitem->exec_error);
- gtk_box_pack_start (GTK_BOX (qres), child, TRUE, TRUE, 10);
+ gtk_box_pack_start (GTK_BOX (qres), child, TRUE, TRUE, 0);
gtk_widget_show (child);
qres->priv->child = child;
}
@@ -201,6 +234,7 @@ make_widget_for_data_model (GdaDataModel *model)
{
GtkWidget *grid;
grid = gdaui_grid_new (model);
+ gdaui_grid_set_sample_size (GDAUI_GRID (grid), 300);
return grid;
}
@@ -214,44 +248,41 @@ make_widget_for_set (GdaSet *set)
gtk_misc_set_alignment (GTK_MISC (img), 0., 0.);
gtk_box_pack_start (GTK_BOX (hbox), img, FALSE, FALSE, 0);
- GtkWidget *sw;
- GtkWidget *view;
- GtkTextBuffer *buffer;
+ GtkWidget *label;
+ GString *string;
GSList *list;
- GtkTextIter iter;
-
- view = gtk_text_view_new ();
- sw = gtk_scrolled_window_new (NULL, NULL);
- gtk_box_pack_start (GTK_BOX (hbox), sw, TRUE, TRUE, 0);
- gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (sw),
- GTK_POLICY_AUTOMATIC,
- GTK_POLICY_AUTOMATIC);
- gtk_container_add (GTK_CONTAINER (sw), view);
- buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (view));
- gtk_text_view_set_editable (GTK_TEXT_VIEW (view), FALSE);
+ label = gtk_label_new ("");
+ string = g_string_new ("");
for (list = set->holders; list; list = list->next) {
GdaHolder *h;
const GValue *value;
gchar *tmp;
const gchar *cstr;
h = GDA_HOLDER (list->data);
- gtk_text_buffer_get_end_iter (buffer, &iter);
if (list != set->holders)
- gtk_text_buffer_insert (buffer, &iter, "\n", -1);
+ g_string_append_c (string, '\n');
cstr = gda_holder_get_id (h);
if (!strcmp (cstr, "IMPACTED_ROWS"))
- gtk_text_buffer_insert (buffer, &iter, _("Number of rows impacted"), -1);
- else
- gtk_text_buffer_insert (buffer, &iter, cstr, -1);
- gtk_text_buffer_insert (buffer, &iter, ": ", -1);
+ g_string_append_printf (string, "<b>%s</b> ",
+ _("Number of rows impacted:"));
+ else {
+ tmp = g_markup_escape_text (cstr, -1);
+ g_string_append_printf (string, "<b>%s</b>", tmp);
+ g_free (tmp);
+ }
+
value = gda_holder_get_value (h);
tmp = gda_value_stringify (value);
- gtk_text_buffer_insert (buffer, &iter, tmp, -1);
+ g_string_append_printf (string, "%s", tmp);
g_free (tmp);
}
+ gtk_label_set_markup (GTK_LABEL (label), string->str);
+ gtk_misc_set_alignment (GTK_MISC (label), 0., 0.);
+ g_string_free (string, TRUE);
+ gtk_box_pack_start (GTK_BOX (hbox), label, TRUE, TRUE, 0);
gtk_widget_show_all (hbox);
gtk_widget_hide (hbox);
@@ -269,29 +300,26 @@ make_widget_for_error (GError *error)
gtk_misc_set_alignment (GTK_MISC (img), 0., 0.);
gtk_box_pack_start (GTK_BOX (hbox), img, FALSE, FALSE, 0);
- GtkWidget *sw;
- GtkWidget *view;
- GtkTextBuffer *buffer;
- GSList *list;
- GtkTextIter iter;
-
- view = gtk_text_view_new ();
- sw = gtk_scrolled_window_new (NULL, NULL);
- gtk_box_pack_start (GTK_BOX (hbox), sw, TRUE, TRUE, 0);
- gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (sw),
- GTK_POLICY_AUTOMATIC,
- GTK_POLICY_AUTOMATIC);
- gtk_container_add (GTK_CONTAINER (sw), view);
-
- buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (view));
- gtk_text_view_set_editable (GTK_TEXT_VIEW (view), FALSE);
- gtk_text_buffer_get_end_iter (buffer, &iter);
- gtk_text_buffer_insert (buffer, &iter, "Error\n", -1);
- if (error && error->message)
- gtk_text_buffer_insert (buffer, &iter, error->message, -1);
+ GtkWidget *label;
+ GString *string;
+ gchar *tmp;
+
+ label = gtk_label_new ("");
+ string = g_string_new ("");
+ g_string_append_printf (string, "<b>%s</b> ", _("Execution error:\n"));
+ if (error && error->message) {
+ tmp = g_markup_escape_text (error->message, -1);
+ g_string_append (string, tmp);
+ g_free (tmp);
+ }
else
- gtk_text_buffer_insert (buffer, &iter, _("No detail"), -1);
-
+ g_string_append (string, _("No detail"));
+
+ gtk_label_set_markup (GTK_LABEL (label), string->str);
+ gtk_misc_set_alignment (GTK_MISC (label), 0., 0.);
+ g_string_free (string, TRUE);
+ gtk_box_pack_start (GTK_BOX (hbox), label, TRUE, TRUE, 0);
+
gtk_widget_show_all (hbox);
gtk_widget_hide (hbox);
return hbox;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]