#include "libpspp/str.h"
+enum { MAX_PREVIEW_LINES = 1000 }; /* Max number of lines to read. */
+
+struct assist_page
+{
+ GtkWidget *page;
+};
+
/* The file to be imported. */
struct file
{
GtkBuilder *builder;
GtkAssistant *assistant;
GMainLoop *main_loop;
+ bool loop_done;
GtkWidget *paste_button;
GtkWidget *reset_button;
int response;
GtkCellRenderer *fixed_renderer;
};
-
-/* The sheet_spec page of the assistant (only relevant for spreadsheet imports). */
-struct sheet_spec_page
- {
- GtkWidget *page;
- struct casereader *reader;
- struct dictionary *dict;
- struct spreadsheet *spreadsheet;
-
- struct spreadsheet_read_info sri;
- struct spreadsheet_read_options opts;
- };
-
-
-/* Page where the user chooses the first line of data. */
-struct first_line_page
- {
- int skip_lines; /* Number of initial lines to skip? */
- bool variable_names; /* Variable names above first line of data? */
-
- GtkWidget *page;
- GtkTreeView *tree_view;
- GtkWidget *variable_names_cb;
- };
-
-
-/* Page where the user chooses field separators. */
-struct separators_page
- {
- /* How to break lines into columns. */
- struct string separators; /* Field separators. */
- struct string quotes; /* Quote characters. */
- bool escape; /* Doubled quotes yield a quote mark? */
-
- /* The columns produced thereby. */
- struct column *columns; /* Information about each column. */
- size_t column_cnt; /* Number of columns. */
-
- GtkWidget *page;
- GtkWidget *custom_cb;
- GtkWidget *custom_entry;
- GtkWidget *quote_cb;
- GtkWidget *quote_combo;
- GtkEntry *quote_entry;
- GtkWidget *escape_cb;
- GtkTreeView *fields_tree_view;
- };
-
-/* Page where the user verifies and adjusts input formats. */
-struct formats_page
- {
- struct dictionary *dict;
-
- GtkWidget *page;
- GtkTreeView *data_tree_view;
- PsppireDict *psppire_dict;
- struct variable **modified_vars;
- size_t modified_var_cnt;
- };
-
-
struct import_assistant
{
struct file file;
struct first_line_page *first_line;
struct separators_page *separators;
struct formats_page *formats;
- };
+ /* The columns produced. */
+ struct column *columns; /* Information about each column. */
+ size_t column_cnt; /* Number of columns. */
+ int skip_lines; /* Number of initial lines to skip? */
+ bool variable_names; /* Variable names above first line of data? */
+ struct dictionary *dict;
+ struct spreadsheet *spreadsheet;
+ };
struct column
{
/* FIXME: Should this be private to first line page ? */
void make_tree_view (const struct import_assistant *ia,
size_t first_line,
- GtkTreeView **tree_view);
+ PsppSheetView **tree_view);
-gint get_monospace_width (GtkTreeView *, GtkCellRenderer *,
+gint get_monospace_width (PsppSheetView *, GtkCellRenderer *,
size_t char_cnt);
-gint get_string_width (GtkTreeView *, GtkCellRenderer *,
+gint get_string_width (PsppSheetView *, GtkCellRenderer *,
const char *string);
void pop_watch_cursor (struct import_assistant *);
-GtkTreeView *create_data_tree_view (bool input, GtkContainer *parent,
- struct import_assistant *);
+PsppSheetView *create_data_tree_view (bool input, GtkContainer *parent,
+ struct import_assistant *);
-GtkTreeViewColumn *make_data_column (struct import_assistant *,
- GtkTreeView *, bool input,
- gint column_idx);
+PsppSheetViewColumn *make_data_column (struct import_assistant *,
+ PsppSheetView *, bool input,
+ gint column_idx);
void update_assistant (struct import_assistant *ia);
bool init_file (struct import_assistant *ia, GtkWindow *parent_window);
void destroy_file (struct import_assistant *ia);
-
-void init_sheet_spec_page (struct import_assistant *);
void prepare_sheet_spec_page (struct import_assistant *ia);
void reset_sheet_spec_page (struct import_assistant *);
void post_sheet_spec_page (struct import_assistant *ia);
-void init_first_line_page (struct import_assistant *ia);
void prepare_first_line_page (struct import_assistant *ia);
void reset_first_line_page (struct import_assistant *);
-void init_separators_page (struct import_assistant *ia);
+void reset_intro_page (struct import_assistant *ia);
+
void prepare_separators_page (struct import_assistant *ia);
void reset_separators_page (struct import_assistant *);
void destroy_separators_page (struct import_assistant *ia);
-void init_formats_page (struct import_assistant *ia);
void prepare_formats_page (struct import_assistant *ia);
void reset_formats_page (struct import_assistant *);
void destroy_formats_page (struct import_assistant *ia);