Merge remote-tracking branch 'origin/master' into sheet
[pspp] / src / ui / gui / psppire-import-assistant.c
index ad32d1f5d3c5c80b1ba305293b2315314b26d642..2a44bda3600b6fe481e68c718be74eaff7140de2 100644 (file)
@@ -1,5 +1,5 @@
 /* PSPPIRE - a graphical user interface for PSPP.
-   Copyright (C) 2015  Free Software Foundation
+   Copyright (C) 2015, 2016  Free Software Foundation
 
    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
 
 #include "builder-wrapper.h"
 #include "helper.h"
-#include "pspp-sheet-view.h"
-#include "pspp-sheet-selection.h"
 #include "psppire-import-assistant.h"
 #include "psppire-scanf.h"
 #include "psppire-dialog.h"
 #include "psppire-empty-list-store.h"
 #include "psppire-encoding-selector.h"
 #include "psppire-spreadsheet-model.h"
-#include "psppire-var-sheet.h"
 #include "ui/syntax-gen.h"
 
 #include <gettext.h>
 #define _(msgid) gettext (msgid)
 #define N_(msgid) msgid
 
+GType psppire_import_assistant_get_type (void)
+{
+  return 0;
+}
+
+#if 0
 enum { MAX_LINE_LEN = 16384 }; /* Max length of an acceptable line. */
 
 
@@ -459,15 +462,6 @@ on_prepare (GtkAssistant *assistant, GtkWidget *page, PsppireImportAssistant *ia
       on_entering (ia, new_page);
   }
   
-#if GTK3_TRANSITION
-  if (gtk_assistant_get_page_type (assistant, page)
-      == GTK_ASSISTANT_PAGE_CONFIRM)
-    gtk_widget_grab_focus (assistant->apply);
-  else
-    gtk_widget_grab_focus (assistant->forward);
-#endif
-
-
   ia->current_page = pn;
 }
 
@@ -672,7 +666,7 @@ add_line_number_column (const PsppireImportAssistant *ia,
 
 
 static void
-set_model_on_treeview (const PsppireImportAssistant *ia, GtkWidget *tree_view, size_t first_line)
+set_model_on_treeview (PsppireImportAssistant *ia, GtkWidget *tree_view, size_t first_line)
 {
   GtkTreeModel *model = GTK_TREE_MODEL (psppire_empty_list_store_new (ia->line_cnt - first_line));
 
@@ -962,6 +956,8 @@ psppire_import_assistant_init (PsppireImportAssistant *ia)
   chooser_page_create (ia);
 
   gtk_assistant_set_forward_page_func (GTK_ASSISTANT (ia), next_page_func, NULL, NULL);
+
+  gtk_window_fullscreen (GTK_WINDOW (ia));
 }
 
 
@@ -1261,6 +1257,7 @@ intro_page_create (PsppireImportAssistant *ia)
   g_object_set_data (G_OBJECT (w), "on-reset", reset_intro_page);
 }
 
+#endif
 
 GtkWidget *
 psppire_import_assistant_new (GtkWindow *toplevel)
@@ -1270,6 +1267,8 @@ psppire_import_assistant_new (GtkWindow *toplevel)
                                   NULL));
 }
 
+#if 0
+
 \f
 
 struct column
@@ -1958,200 +1957,6 @@ on_variable_change (PsppireDict *dict, int dict_idx,
 static void
 prepare_formats_page (PsppireImportAssistant *ia)
 {
-  PsppireDict *psppire_dict = NULL;
-  PsppireVarSheet *var_sheet;
-  GtkBin *vars_scroller;
-  GtkWidget *old_var_sheet;
-
-  
-  push_watch_cursor (ia);
-
-  if (ia->spreadsheet == NULL)
-    {
-      struct fmt_guesser *fg;
-      unsigned long int number = 0;
-      size_t column_idx;
-
-      
-      ia->dict = dict_create (get_default_encoding ());
-      fg = fmt_guesser_create ();
-      for (column_idx = 0; column_idx < ia->column_cnt; column_idx++)
-       {
-         struct variable *modified_var = 
-           (column_idx < ia->modified_var_cnt ? ia->modified_vars[column_idx] : NULL);
-
-         if (modified_var == NULL)
-           {
-             struct column *column = &ia->columns[column_idx];
-             struct variable *var;
-             struct fmt_spec format;
-             char *name;
-             size_t row;
-
-             /* Choose variable name. */
-             name = dict_make_unique_var_name (ia->dict, column->name, &number);
-
-             /* Choose variable format. */
-             fmt_guesser_clear (fg);
-             for (row = ia->skip_lines; row < ia->line_cnt; row++)
-               fmt_guesser_add (fg, column->contents[row]);
-             fmt_guesser_guess (fg, &format);
-             fmt_fix_input (&format);
-
-             /* Create variable. */
-             var = dict_create_var_assert (ia->dict, name, fmt_var_width (&format));
-             var_set_both_formats (var, &format);
-
-             free (name);
-           }
-         else
-           {
-             char *name;
-
-             name = dict_make_unique_var_name (ia->dict, var_get_name (modified_var),
-                                               &number);
-             dict_clone_var_as_assert (ia->dict, modified_var, name);
-             free (name);
-           }
-       }
-      fmt_guesser_destroy (fg);
-    }
-  else
-    {
-      int row_start = -1;
-      int row_stop = -1;
-      int col_start = -1;
-      int col_stop = -1;
-
-      GtkBuilder *builder = ia->builder;
-
-      struct casereader *reader = NULL;
-
-      GtkWidget *readnames_checkbox = get_widget_assert (builder, "readnames-checkbox");
-      GtkWidget *range_entry = get_widget_assert (builder, "cell-range-entry");
-      const gchar *range = gtk_entry_get_text (GTK_ENTRY (range_entry));
-      GtkWidget *combo_box = get_widget_assert (builder, "sheet-entry");
-
-      gint num = gtk_combo_box_get_active (GTK_COMBO_BOX (combo_box));
-
-      struct spreadsheet_read_options sro;
-  
-      sro.sheet_name = NULL;
-      sro.cell_range = NULL;
-      sro.sheet_index = num + 1;
-
-      if ( convert_cell_ref (range, &col_start, &row_start, &col_stop, &row_stop))
-       {
-         sro.cell_range = g_strdup (range);
-       }
-
-      sro.read_names = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (readnames_checkbox));
-      sro.asw = -1;
-  
-      switch (ia->spreadsheet->type)
-       {
-       case SPREADSHEET_ODS:
-       case SPREADSHEET_GNUMERIC:
-         {
-           reader = spreadsheet_make_reader (ia->spreadsheet, &sro);
-           ia->dict = ia->spreadsheet->dict;
-         }
-         break;
-       default:
-         g_assert_not_reached ();
-         break;
-       }
-      g_free (sro.cell_range);
-
-      if (reader && ia->dict)
-       {
-         struct ccase *c;
-         int col;
-
-         ia->column_cnt = dict_get_var_cnt (ia->dict);
-         ia->columns = xcalloc (ia->column_cnt, sizeof (*ia->columns));
-         for (col = 0; col < ia->column_cnt ; ++col)
-           {
-             const struct variable *var = dict_get_var (ia->dict, col);
-             ia->columns[col].name = xstrdup (var_get_name (var));
-             ia->columns[col].contents = NULL;
-           }
-
-         casenumber rows = 0;
-         for (; (c = casereader_read (reader)) != NULL; case_unref (c))
-           {
-             rows++;
-             for (col = 0; col < ia->column_cnt ; ++col)
-               {
-                 char *ss;
-                 const struct variable *var = dict_get_var (ia->dict, col);
-             
-                 ia->columns[col].contents = xrealloc (ia->columns[col].contents,
-                                                       sizeof (struct substring) * rows);
-             
-                 ss = data_out (case_data (c, var), dict_get_encoding (ia->dict), 
-                                var_get_print_format (var));
-             
-                 ia->columns[col].contents[rows - 1] = ss_cstr (ss);
-               }
-         
-             if (rows > MAX_PREVIEW_LINES)
-               {
-                 case_unref (c);
-                 break;
-               }
-           }
-         casereader_destroy (reader);
-         ia->line_cnt = rows;
-       }
-      else
-       {
-         GtkWidget * dialog = gtk_message_dialog_new (NULL,
-                                                      GTK_DIALOG_MODAL,
-                                                      GTK_MESSAGE_ERROR,
-                                                      GTK_BUTTONS_CLOSE,
-                                                      _("An error occurred reading the spreadsheet file."));
-
-         gtk_dialog_run (GTK_DIALOG (dialog));
-         gtk_widget_destroy (dialog);
-       }
-    }
-
-  psppire_dict = psppire_dict_new_from_dict (ia->dict);
-  g_signal_connect (psppire_dict, "variable-changed",
-                   G_CALLBACK (on_variable_change), ia);
-  ia->psppire_dict = psppire_dict;
-
-  
-  /* XXX: PsppireVarStore doesn't hold a reference to
-     psppire_dict for now, but it should.  After it does, we
-     should g_object_ref the psppire_dict here, since we also
-     hold a reference via ia->formats->dict. */
-  var_sheet = PSPPIRE_VAR_SHEET (psppire_var_sheet_new ());
-  g_object_set (var_sheet,
-               "dictionary", psppire_dict,
-               "may-create-vars", FALSE,
-               "may-delete-vars", FALSE,
-               "format-use", FMT_FOR_INPUT,
-               "enable-grid-lines", PSPP_SHEET_VIEW_GRID_LINES_BOTH,
-               (void *) NULL);
-
-  vars_scroller = GTK_BIN (get_widget_assert (ia->builder, "vars-scroller"));
-  old_var_sheet = gtk_bin_get_child (GTK_BIN (vars_scroller));
-  if (old_var_sheet != NULL)
-    gtk_container_remove (GTK_CONTAINER (vars_scroller),  old_var_sheet);
-  gtk_container_add (GTK_CONTAINER (vars_scroller), GTK_WIDGET (var_sheet));
-  gtk_widget_show (GTK_WIDGET (var_sheet));
-
-  ia->data_tree_view =
-    GTK_WIDGET (create_data_tree_view (
-                                      FALSE,
-                                      GTK_CONTAINER (get_widget_assert (ia->builder, "data-scroller")),
-                                      ia));
-
-  gtk_widget_show (ia->paste_button);
-
-  pop_watch_cursor (ia);
 }
 
 static void
@@ -2233,13 +2038,11 @@ static void
 intro_append_syntax (const PsppireImportAssistant *ia, struct string *s)
 {
   if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (ia->n_cases_button)))
-    ds_put_format (s, "  /IMPORTCASE=FIRST %d\n",
+    ds_put_format (s, "N OF CASES %d.\n",
                   gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON (ia->n_cases_spin)));
   else if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (ia->percent_button)))
-    ds_put_format (s, "  /IMPORTCASE=PERCENT %d\n",
-                  gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON (ia->percent_spin)));
-  else
-    ds_put_cstr (s, "  /IMPORTCASE=ALL\n");
+    ds_put_format (s, "SAMPLE %.4g.\n",
+                  gtk_spin_button_get_value (GTK_SPIN_BUTTON (ia->percent_spin)) / 100.0);
 }
 
 
@@ -2368,11 +2171,14 @@ sheet_spec_gen_syntax (PsppireImportAssistant *ia)
   return ds_cstr (&s);
 }
 
+#endif
+
 gchar *
 psppire_import_assistant_generate_syntax (PsppireImportAssistant *ia)
 {
   struct string s = DS_EMPTY_INITIALIZER;
 
+#if 0
   if (!ia->spreadsheet)
     {
       if (ia->file_name == NULL)
@@ -2386,9 +2192,6 @@ psppire_import_assistant_generate_syntax (PsppireImportAssistant *ia)
       if (ia->encoding && strcmp (ia->encoding, "Auto"))
        syntax_gen_pspp (&s, "  /ENCODING=%sq\n", ia->encoding);
 
-      intro_append_syntax (ia, &s);
-
-
       ds_put_cstr (&s,
                   "  /ARRANGEMENT=DELIMITED\n"
                   "  /DELCASE=LINE\n");
@@ -2398,11 +2201,14 @@ psppire_import_assistant_generate_syntax (PsppireImportAssistant *ia)
 
       formats_append_syntax (ia, &s);
       apply_dict (ia->dict, &s);
+      intro_append_syntax (ia, &s);
     }
   else
     {
       return sheet_spec_gen_syntax (ia);
     }
+
+#endif
   
   return ds_cstr (&s);
 }