Enable specification of the cell range
authorJohn Darrington <john@darrington.wattle.id.au>
Sat, 12 Jan 2013 12:08:58 +0000 (13:08 +0100)
committerJohn Darrington <john@darrington.wattle.id.au>
Sat, 16 Feb 2013 14:02:58 +0000 (15:02 +0100)
src/ui/gui/page-sheet-spec.c
src/ui/gui/text-data-import-dialog.c

index 91ab6e23b2a5beddc82121b509385dc1c298f95c..dc31dec5ae57cc92bf17705ddaee9c67f6849171 100644 (file)
@@ -93,6 +93,11 @@ reset_sheet_spec_page (struct import_assistant *ia)
 void
 post_sheet_spec_page (struct import_assistant *ia)
 {
+  char col_start[10];
+  char col_stop[10];
+  int row_start = -1;
+  int row_stop = -1;
+
   GtkBuilder *builder = ia->asst.builder;
 
   struct file *file = &ia->file;
@@ -101,16 +106,22 @@ post_sheet_spec_page (struct import_assistant *ia)
   struct dictionary *dict;
 
   GtkWidget *sheet_entry = get_widget_assert (builder, "sheet-entry");
+  GtkWidget *range_entry = get_widget_assert (builder, "cell-range-entry");
   GtkWidget *readnames_checkbox = get_widget_assert (builder, "readnames-checkbox");
 
-  gint num = atoi (gtk_entry_get_text (sheet_entry));
-  
-  printf ("%s sheet number %d\n", __FUNCTION__, num);
+  gint num = atoi (gtk_entry_get_text (GTK_ENTRY (sheet_entry)));
 
+  const gchar *range = gtk_entry_get_text (GTK_ENTRY (range_entry));
+  
+  sscanf (range, "%[a-zA-Z]%d:%[a-zA-Z]%d", col_start, &row_start, col_stop, &row_stop);
+  
   ssp->opts.sheet_name = NULL;
   ssp->opts.cell_range = NULL;
   ssp->opts.sheet_index = num;
 
+  if ( row_start > 0 && row_stop > 0)
+    ssp->opts.cell_range = xasprintf ("%s%d:%s%d", col_start, row_start, col_stop, row_stop);
+
   ssp->sri.file_name = file->file_name;
   ssp->sri.read_names = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (readnames_checkbox));
   ssp->sri.asw = -1;
index cda83ebb65caedf2e60f7b6aa7ac05411ca478a8..ea7d6da219751c61f493530060481ed9e5803d73 100644 (file)
@@ -289,12 +289,28 @@ generate_syntax (const struct import_assistant *ia)
                         "\n  /TYPE=%ss"
                         "\n  /FILE=%sq"
                         "\n  /SHEET=index %d"
-                        "\n  /READNAMES=%ss"
-                        ".",
+                        "\n  /READNAMES=%ss",
                         (ia->file.type == FTYPE_GNUMERIC) ? "GNM" : "ODS",
                         ia->file.file_name,                     
                         ssp->opts.sheet_index,
                         ssp->sri.read_names ? "ON" : "OFF");
+
+
+       if ( ssp->opts.cell_range)
+         {
+           syntax_gen_pspp (&s,
+                            "\n  /CELLRANGE=RANGE %sq",
+                            ssp->opts.cell_range);
+         }
+       else
+         {
+           syntax_gen_pspp (&s,
+                            "\n  /CELLRANGE=FULL");
+         }
+
+
+       syntax_gen_pspp (&s, ".");
+
       }
       break;