[libgda/LIBGDA_4.2] GdauiRawGrid data export corrections
- From: Vivien Malerba <vivien src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [libgda/LIBGDA_4.2] GdauiRawGrid data export corrections
- Date: Wed, 26 Oct 2011 18:41:37 +0000 (UTC)
commit 7569587b855f42d5c8ff69226ed5c67e03e4c3c5
Author: Vivien Malerba <malerba gnome-db org>
Date: Wed Oct 26 15:35:28 2011 +0200
GdauiRawGrid data export corrections
libgda-ui/gdaui-raw-grid.c | 80 +++++++++++++++++++++++++++-----------------
1 files changed, 49 insertions(+), 31 deletions(-)
---
diff --git a/libgda-ui/gdaui-raw-grid.c b/libgda-ui/gdaui-raw-grid.c
index e5af709..782bba8 100644
--- a/libgda-ui/gdaui-raw-grid.c
+++ b/libgda-ui/gdaui-raw-grid.c
@@ -47,6 +47,7 @@ static void gdaui_raw_grid_get_property (GObject *object,
static void create_columns_data (GdauiRawGrid *grid);
+static void proxy_filter_changed_cb (GdaDataProxy *proxy, GdauiRawGrid *grid);
static void proxy_sample_changed_cb (GdaDataProxy *proxy, gint sample_start, gint sample_end, GdauiRawGrid *grid);
static void proxy_row_updated_cb (GdaDataProxy *proxy, gint proxy_row, GdauiRawGrid *grid);
static void proxy_reset_cb (GdaDataProxy *proxy, GdauiRawGrid *grid);
@@ -512,6 +513,8 @@ gdaui_raw_grid_set_property (GObject *object,
grid->priv->data_model = gda_data_proxy_get_proxied_model (grid->priv->proxy);
g_object_ref (G_OBJECT (grid->priv->proxy));
+ g_signal_connect (grid->priv->proxy, "filter-changed",
+ G_CALLBACK (proxy_filter_changed_cb), grid);
g_signal_connect (grid->priv->proxy, "sample-changed",
G_CALLBACK (proxy_sample_changed_cb), grid);
g_signal_connect (grid->priv->proxy, "row-updated",
@@ -2038,7 +2041,7 @@ menu_save_as_cb (G_GNUC_UNUSED GtkWidget *widget, GdauiRawGrid *grid)
GtkWidget *dialog;
GtkWidget *label;
GtkWidget *filename;
- GtkWidget *types;
+ GtkWidget *types, *scope;
GtkWidget *hbox, *table, *check, *dbox;
char *str;
GtkTreeSelection *sel;
@@ -2050,12 +2053,11 @@ menu_save_as_cb (G_GNUC_UNUSED GtkWidget *widget, GdauiRawGrid *grid)
GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
GTK_STOCK_SAVE, GTK_RESPONSE_OK,
NULL);
- gtk_window_set_resizable (GTK_WINDOW (dialog), FALSE);
+ gtk_window_set_resizable (GTK_WINDOW (dialog), TRUE);
gtk_container_set_border_width (GTK_CONTAINER (dialog), 6);
str = g_strdup_printf ("<big><b>%s:</b></big>\n%s", _("Saving data to a file"),
- _("The data will be exported without any of the modifications which may "
- "have been made and have not been committed."));
+ _("The data will be exported to the selected file."));
label = gtk_label_new ("");
gtk_label_set_markup (GTK_LABEL (label), str);
gtk_misc_set_alignment (GTK_MISC (label), 0., -1);
@@ -2077,7 +2079,7 @@ menu_save_as_cb (G_GNUC_UNUSED GtkWidget *widget, GdauiRawGrid *grid)
gtk_box_pack_start (GTK_BOX (dbox), label, FALSE, TRUE, 2);
hbox = gtk_hbox_new (FALSE, 0); /* HIG */
- gtk_box_pack_start (GTK_BOX (dbox), hbox, FALSE, FALSE, 5);
+ gtk_box_pack_start (GTK_BOX (dbox), hbox, TRUE, TRUE, 5);
gtk_widget_show (hbox);
label = gtk_label_new (" ");
gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0);
@@ -2118,7 +2120,7 @@ menu_save_as_cb (G_GNUC_UNUSED GtkWidget *widget, GdauiRawGrid *grid)
types = gtk_combo_box_new_text ();
gtk_table_attach_defaults (GTK_TABLE (table), types, 1, 2, 0, 1);
- gtk_widget_show (label);
+ gtk_widget_show (types);
g_object_set_data (G_OBJECT (dialog), "types", types);
gtk_combo_box_append_text (GTK_COMBO_BOX (types), _("Tab-delimited"));
@@ -2129,8 +2131,8 @@ menu_save_as_cb (G_GNUC_UNUSED GtkWidget *widget, GdauiRawGrid *grid)
g_signal_connect (types, "changed",
G_CALLBACK (export_type_changed_cb), dialog);
- /* limit to selection ? */
- label = gtk_label_new (_("Limit to selection?"));
+ /* data scope */
+ label = gtk_label_new (_("Data to save:"));
gtk_misc_set_alignment (GTK_MISC (label), 0., -1);
gtk_table_attach (GTK_TABLE (table), label, 0, 1, 1, 2, GTK_FILL, 0, 0, 0);
gtk_widget_show (label);
@@ -2140,14 +2142,16 @@ menu_save_as_cb (G_GNUC_UNUSED GtkWidget *widget, GdauiRawGrid *grid)
if (selrows <= 0)
gtk_widget_set_sensitive (label, FALSE);
- check = gtk_check_button_new ();
- gtk_table_attach_defaults (GTK_TABLE (table), check, 1, 2, 1, 2);
- gtk_widget_show (check);
- if (selrows <= 0)
- gtk_widget_set_sensitive (check, FALSE);
- else
- gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (check), TRUE);
- g_object_set_data (G_OBJECT (dialog), "sel_only", check);
+ scope = gtk_combo_box_text_new ();
+ gtk_table_attach_defaults (GTK_TABLE (table), scope, 1, 2, 1, 2);
+ gtk_widget_show (scope);
+ g_object_set_data (G_OBJECT (dialog), "scope", scope);
+
+ gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (scope), _("All data (without any local modification)"));
+ gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (scope), _("Only displayed data"));
+ if (selrows > 0)
+ gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (scope), _("Only selected data"));
+ gtk_combo_box_set_active (GTK_COMBO_BOX (scope), 0);
/* other options */
GtkWidget *exp;
@@ -2215,15 +2219,14 @@ static gboolean confirm_file_overwrite (GtkWindow *parent, const gchar *path);
static void
save_as_response_cb (GtkDialog *dialog, gint response_id, GdauiRawGrid *grid)
{
- GtkWidget *types;
- gint export_type;
- GtkWidget *filename;
- gboolean selection_only = FALSE;
- gboolean null_as_empty = FALSE;
- gboolean invalid_as_null = FALSE;
- gboolean first_row = FALSE;
-
if (response_id == GTK_RESPONSE_OK) {
+ GtkWidget *types;
+ gint export_type;
+ GtkWidget *filename;
+ gboolean selection_only = FALSE;
+ gboolean null_as_empty = FALSE;
+ gboolean invalid_as_null = FALSE;
+ gboolean first_row = FALSE;
gchar *body;
gchar *path;
GList *columns, *list;
@@ -2231,12 +2234,21 @@ save_as_response_cb (GtkDialog *dialog, gint response_id, GdauiRawGrid *grid)
gint *rows = NULL, nb_rows = 0;
GdaHolder *param;
GdaSet *paramlist;
+ GdaDataModel *model_to_use = (GdaDataModel*) grid->priv->proxy;
+ GtkWidget *scope;
+ gint scope_v;
+
+ model_to_use = model_to_use;
+ scope = g_object_get_data (G_OBJECT (dialog), "scope");
+ scope_v = gtk_combo_box_get_active (GTK_COMBO_BOX (scope));
+ if (scope_v == 0)
+ model_to_use = grid->priv->data_model;
+ else if (scope_v == 2)
+ selection_only = TRUE;
types = g_object_get_data (G_OBJECT (dialog), "types");
filename = g_object_get_data (G_OBJECT (dialog), "filename");
gdaui_set_default_path (gtk_file_chooser_get_current_folder (GTK_FILE_CHOOSER (filename)));
- selection_only = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON
- (g_object_get_data (G_OBJECT (dialog), "sel_only")));
null_as_empty = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON
(g_object_get_data (G_OBJECT (dialog), "null_as_empty")));
invalid_as_null = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON
@@ -2246,7 +2258,7 @@ save_as_response_cb (GtkDialog *dialog, gint response_id, GdauiRawGrid *grid)
/* output columns computation */
columns = gtk_tree_view_get_columns (GTK_TREE_VIEW (grid));
- cols = g_new (gint, gda_data_model_get_n_columns (GDA_DATA_MODEL (grid->priv->data_model)));
+ cols = g_new (gint, gda_data_model_get_n_columns (GDA_DATA_MODEL (model_to_use)));
nb_cols = 0;
for (list = columns; list; list = list->next) {
if (gtk_tree_view_column_get_visible (GTK_TREE_VIEW_COLUMN (list->data))) {
@@ -2307,7 +2319,7 @@ save_as_response_cb (GtkDialog *dialog, gint response_id, GdauiRawGrid *grid)
param = gda_holder_new_string ("SEPARATOR", "\t");
gda_set_add_holder (paramlist, param);
g_object_unref (param);
- body = gda_data_model_export_to_string (GDA_DATA_MODEL (grid->priv->data_model),
+ body = gda_data_model_export_to_string (GDA_DATA_MODEL (model_to_use),
GDA_DATA_MODEL_IO_TEXT_SEPARATED,
cols, nb_cols, rows, nb_rows, paramlist);
break;
@@ -2315,20 +2327,20 @@ save_as_response_cb (GtkDialog *dialog, gint response_id, GdauiRawGrid *grid)
param = gda_holder_new_string ("SEPARATOR", ",");
gda_set_add_holder (paramlist, param);
g_object_unref (param);
- body = gda_data_model_export_to_string (GDA_DATA_MODEL (grid->priv->data_model),
+ body = gda_data_model_export_to_string (GDA_DATA_MODEL (model_to_use),
GDA_DATA_MODEL_IO_TEXT_SEPARATED,
cols, nb_cols, rows, nb_rows, paramlist);
break;
case 2:
param = NULL;
- body = (gchar *) g_object_get_data (G_OBJECT (grid->priv->data_model), "name");
+ body = (gchar *) g_object_get_data (G_OBJECT (model_to_use), "name");
if (body)
param = gda_holder_new_string ("NAME", body);
if (param) {
gda_set_add_holder (paramlist, param);
g_object_unref (param);
}
- body = gda_data_model_export_to_string (GDA_DATA_MODEL (grid->priv->data_model),
+ body = gda_data_model_export_to_string (GDA_DATA_MODEL (model_to_use),
GDA_DATA_MODEL_IO_DATA_ARRAY_XML,
cols, nb_cols, rows, nb_rows, paramlist);
break;
@@ -2894,6 +2906,12 @@ iter_row_changed_cb (G_GNUC_UNUSED GdaDataModelIter *iter, gint row, GdauiRawGri
}
static void
+proxy_filter_changed_cb (GdaDataProxy *proxy, GdauiRawGrid *grid)
+{
+
+}
+
+static void
proxy_sample_changed_cb (G_GNUC_UNUSED GdaDataProxy *proxy, G_GNUC_UNUSED gint sample_start,
G_GNUC_UNUSED gint sample_end, GdauiRawGrid *grid)
{
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]