projects
/
pspp
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge remote branch 'origin/master' into import-gui
[pspp]
/
src
/
ui
/
gui
/
page-file.c
diff --git
a/src/ui/gui/page-file.c
b/src/ui/gui/page-file.c
index e4cb781559b7cdc8a39307a5e4c8eb11102ba85b..2647bb5c256006656c13d552783e8e26796d53da 100644
(file)
--- a/
src/ui/gui/page-file.c
+++ b/
src/ui/gui/page-file.c
@@
-29,7
+29,9
@@
#include "data/data-in.h"
#include "data/data-out.h"
#include "data/format-guesser.h"
#include "data/data-in.h"
#include "data/data-out.h"
#include "data/format-guesser.h"
+#include "data/casereader.h"
#include "data/gnumeric-reader.h"
#include "data/gnumeric-reader.h"
+#include "data/ods-reader.h"
#include "data/spreadsheet-reader.h"
#include "data/value-labels.h"
#include "language/data-io/data-parser.h"
#include "data/spreadsheet-reader.h"
#include "data/value-labels.h"
#include "language/data-io/data-parser.h"
@@
-62,10
+64,12
@@
struct import_assistant;
struct import_assistant;
-/* Choosing a file and reading it. */
-
+/* Choose a file */
static char *choose_file (GtkWindow *parent_window, gchar **encodingp);
static char *choose_file (GtkWindow *parent_window, gchar **encodingp);
+
+
+
/* Obtains the file to import from the user and initializes IA's
file substructure. PARENT_WINDOW must be the window to use
as the file chooser window's parent.
/* Obtains the file to import from the user and initializes IA's
file substructure. PARENT_WINDOW must be the window to use
as the file chooser window's parent.
@@
-75,30
+79,36
@@
static char *choose_file (GtkWindow *parent_window, gchar **encodingp);
bool
init_file (struct import_assistant *ia, GtkWindow *parent_window)
{
bool
init_file (struct import_assistant *ia, GtkWindow *parent_window)
{
+ enum { MAX_LINE_LEN = 16384 }; /* Max length of an acceptable line. */
struct file *file = &ia->file;
struct file *file = &ia->file;
+ struct spreadsheet_read_options opts;
+
+ file->lines = NULL;
file->file_name = choose_file (parent_window, &file->encoding);
if (file->file_name == NULL)
return false;
file->file_name = choose_file (parent_window, &file->encoding);
if (file->file_name == NULL)
return false;
- struct dictionary *dict = NULL;
- struct spreadsheet_read_info sri;
+ opts.sheet_name = NULL;
+ opts.cell_range = NULL;
+ opts.sheet_index = 1;
+
+ opts.read_names = true;
+ opts.asw = -1;
- sri.sheet_name = NULL;
- sri.file_name = file->file_name;
- sri.cell_range = NULL;
- sri.sheet_index = 1;
- sri.read_names = true;
- sri.asw = 0;
+ printf ("%s:%d %p\n", __FILE__, __LINE__, ia->spreadsheet);
- struct casereader *creader = gnumeric_open_reader (&sri, &dict);
- printf ("%s:%d %s\n", __FILE__, __LINE__, sri.file_name);
- ia->file.type = FTYPE_SPREADSHEET;
+ if (ia->spreadsheet == NULL)
+ ia->spreadsheet = gnumeric_probe (file->file_name, false);
- if (creader == NULL)
- {
- enum { MAX_PREVIEW_LINES = 1000 }; /* Max number of lines to read. */
- enum { MAX_LINE_LEN = 16384 }; /* Max length of an acceptable line. */
+ printf ("%s:%d %p\n", __FILE__, __LINE__, ia->spreadsheet);
+ if (ia->spreadsheet == NULL)
+ ia->spreadsheet = ods_probe (file->file_name, false);
+
+ printf ("%s:%d %p\n", __FILE__, __LINE__, ia->spreadsheet);
+
+ if (ia->spreadsheet == NULL)
+ {
struct string input;
struct line_reader *reader = line_reader_for_file (file->encoding, file->file_name, O_RDONLY);
if (reader == NULL)
struct string input;
struct line_reader *reader = line_reader_for_file (file->encoding, file->file_name, O_RDONLY);
if (reader == NULL)
@@
-160,7
+170,6
@@
init_file (struct import_assistant *ia, GtkWindow *parent_window)
}
line_reader_close (reader);
}
line_reader_close (reader);
- ia->file.type = FTYPE_TEXT;
}
return true;
}
return true;
@@
-173,9
+182,13
@@
destroy_file (struct import_assistant *ia)
struct file *f = &ia->file;
size_t i;
struct file *f = &ia->file;
size_t i;
- for (i = 0; i < f->line_cnt; i++)
- ds_destroy (&f->lines[i]);
- free (f->lines);
+ if (f->lines)
+ {
+ for (i = 0; i < f->line_cnt; i++)
+ ds_destroy (&f->lines[i]);
+ free (f->lines);
+ }
+
g_free (f->file_name);
g_free (f->encoding);
}
g_free (f->file_name);
g_free (f->encoding);
}
@@
-237,7
+250,7
@@
choose_file (GtkWindow *parent_window, gchar **encodingp)
gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (dialog), filter);
filter = gtk_file_filter_new ();
gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (dialog), filter);
filter = gtk_file_filter_new ();
- gtk_file_filter_set_name (filter, _("Open
Office.Org
Spreadsheet Files"));
+ gtk_file_filter_set_name (filter, _("Open
Document
Spreadsheet Files"));
gtk_file_filter_add_mime_type (filter, "application/vnd.oasis.opendocument.spreadsheet");
gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (dialog), filter);
gtk_file_filter_add_mime_type (filter, "application/vnd.oasis.opendocument.spreadsheet");
gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (dialog), filter);