Added a callback to set the range entry on change
authorJohn Darrington <john@darrington.wattle.id.au>
Sun, 27 Jan 2013 19:41:07 +0000 (20:41 +0100)
committerJohn Darrington <john@darrington.wattle.id.au>
Sat, 16 Feb 2013 14:03:58 +0000 (15:03 +0100)
src/ui/gui/page-sheet-spec.c
src/ui/gui/psppire-spreadsheet-model.c
src/ui/gui/psppire-spreadsheet-model.h

index a23ac40dd62cf95b97318289d05cf4a0828e174b..5a760bd53d1822c24e1a661498feea20323d405e 100644 (file)
@@ -53,6 +53,8 @@
 #include "ui/gui/psppire-scanf.h"
 #include "ui/syntax-gen.h"
 
+#include "ui/gui/psppire-spreadsheet-model.h"
+
 #include <data/casereader.h>
 
 #include "gl/error.h"
@@ -65,8 +67,6 @@
 
 struct import_assistant;
 
-
-
 /* The "sheet-spec" page of the assistant. */
 
 /* The sheet_spec page of the assistant (only relevant for spreadsheet imports). */
@@ -80,6 +80,20 @@ struct sheet_spec_page
     struct spreadsheet_read_options opts;
   };
 
+static void 
+on_sheet_combo_changed (GtkComboBox *cb, struct import_assistant *ia)
+{
+  GtkTreeIter iter;
+  gchar *range = NULL;
+  GtkTreeModel *model = gtk_combo_box_get_model (cb);
+  GtkBuilder *builder = ia->asst.builder;
+  GtkWidget *range_entry = get_widget_assert (builder, "cell-range-entry");
+
+  gtk_combo_box_get_active_iter (cb, &iter);
+  gtk_tree_model_get (model, &iter, PSPPIRE_SPREADSHEET_MODEL_COL_RANGE, &range, -1);
+  gtk_entry_set_text (GTK_ENTRY (range_entry), range);
+  g_free (range);
+}
 
 /* Initializes IA's sheet_spec substructure. */
 struct sheet_spec_page *
@@ -95,6 +109,8 @@ sheet_spec_page_create (struct import_assistant *ia)
                                  "text", 0,
                                  NULL);
 
+  g_signal_connect (combo_box, "changed", G_CALLBACK (on_sheet_combo_changed), ia);
+
   return p;
 }
 
index f66ce1da280031a14a0fc5e365adf7353c35336c..240356f294cb87f3b6239e752bcafed70314b2c5 100644 (file)
@@ -157,18 +157,10 @@ psppire_spreadsheet_model_new (struct spreadsheet *sp)
 
 \f
 
-
-enum
-{
-  COL_SHEET_NAME,
-  COL_SHEET_RANGE,
-  N_COLS
-};
-
 static gint
 tree_model_n_columns (GtkTreeModel * model)
 {
-  return N_COLS;
+  return PSPPIRE_SPREADSHEET_MODEL_N_COLS;
 }
 
 static GtkTreeModelFlags
@@ -184,7 +176,7 @@ static GType
 tree_model_column_type (GtkTreeModel * model, gint index)
 {
   g_return_val_if_fail (PSPPIRE_IS_SPREADSHEET_MODEL (model), (GType) 0);
-  g_return_val_if_fail (index < N_COLS, (GType) 0);
+  g_return_val_if_fail (index < PSPPIRE_SPREADSHEET_MODEL_N_COLS, (GType) 0);
 
   return G_TYPE_STRING;
 }
@@ -244,13 +236,13 @@ tree_model_get_value (GtkTreeModel * model, GtkTreeIter * iter,
 {
   PsppireSpreadsheetModel *spreadsheetModel =
     PSPPIRE_SPREADSHEET_MODEL (model);
-  g_return_if_fail (column < N_COLS);
+  g_return_if_fail (column < PSPPIRE_SPREADSHEET_MODEL_N_COLS);
   g_return_if_fail (iter->stamp == spreadsheetModel->stamp);
 
   g_value_init (value, G_TYPE_STRING);
   switch (column)
     {
-    case COL_SHEET_NAME:
+    case PSPPIRE_SPREADSHEET_MODEL_COL_NAME:
       {
         const char *x =
           gnumeric_get_sheet_name (spreadsheetModel->spreadsheet,
@@ -258,13 +250,13 @@ tree_model_get_value (GtkTreeModel * model, GtkTreeIter * iter,
         g_value_set_string (value, x);
       }
       break;
-    case COL_SHEET_RANGE:
+    case PSPPIRE_SPREADSHEET_MODEL_COL_RANGE:
       {
         char *x =
           gnumeric_get_sheet_range (spreadsheetModel->spreadsheet,
                                     (gint) iter->user_data);
         g_value_set_string (value, x);
-       free (x);
+       g_free (x);
       }
       break;
     default:
index 94be3c397ef75f3ac4b1fc0d9b640eb6e7433cea..0366ad4bc18db7c59cf2bb141293994b164cec0a 100644 (file)
@@ -82,4 +82,12 @@ GtkTreeModel * psppire_spreadsheet_model_new (struct spreadsheet *sp);
 
 G_END_DECLS
 
+
+enum
+{
+  PSPPIRE_SPREADSHEET_MODEL_COL_NAME,
+  PSPPIRE_SPREADSHEET_MODEL_COL_RANGE,
+  PSPPIRE_SPREADSHEET_MODEL_N_COLS
+};
+
 #endif /* __PSPPIRE_SPREADSHEET_MODEL_H__ */