[libgda] GdaBrowser: query exec. improvements



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]