## Process this file with automake to produce Makefile.in -*- makefile -*-
- include $(top_srcdir)/src/ui/gui/sheet/automake.mk
-
UI_FILES = \
src/ui/gui/aggregate.ui \
src/ui/gui/autorecode.ui \
src/ui/gui/count.ui \
src/ui/gui/crosstabs.ui \
src/ui/gui/chi-square.ui \
+ src/ui/gui/data-sheet.ui \
src/ui/gui/descriptives.ui \
src/ui/gui/entry-dialog.ui \
src/ui/gui/examine.ui \
src/ui/gui/data-editor.ui \
src/ui/gui/output-viewer.ui \
src/ui/gui/syntax-editor.ui \
+ src/ui/gui/var-sheet.ui \
src/ui/gui/var-type-dialog.ui
EXTRA_DIST += \
src_ui_gui_psppire_LDADD = \
- src/ui/gui/sheet/libsheet.la \
- lib/gtk-contrib/libgtksheet.a \
+ lib/gtk-contrib/libxpaned.a \
src/ui/libuicommon.la \
src/libpspp.la \
src/libpspp-core.la \
src/ui/gui/chi-square-dialog.h \
src/ui/gui/count-dialog.c \
src/ui/gui/count-dialog.h \
- src/ui/gui/customentry.c \
- src/ui/gui/customentry.h \
src/ui/gui/dialog-common.c \
src/ui/gui/dialog-common.h \
src/ui/gui/dict-display.h \
src/ui/gui/psppire-conf.h \
src/ui/gui/psppire-data-editor.c \
src/ui/gui/psppire-data-editor.h \
+ src/ui/gui/psppire-data-sheet.c \
+ src/ui/gui/psppire-data-sheet.h \
src/ui/gui/psppire-data-store.c \
src/ui/gui/psppire-data-store.h \
src/ui/gui/psppire-data-window.c \
src/ui/gui/psppire-var-ptr.h \
src/ui/gui/psppire-var-sheet.c \
src/ui/gui/psppire-var-sheet.h \
- src/ui/gui/psppire-var-store.c \
- src/ui/gui/psppire-var-store.h \
src/ui/gui/psppire-vbuttonbox.h \
src/ui/gui/psppire-window.c \
src/ui/gui/psppire-window.h \
src/ui/gui/page-formats.h \
src/ui/gui/page-separators.c \
src/ui/gui/page-separators.h \
+ src/ui/gui/page-sheet-spec.c \
+ src/ui/gui/page-sheet-spec.h \
src/ui/gui/text-data-import-dialog.c \
src/ui/gui/text-data-import-dialog.h \
src/ui/gui/transpose-dialog.c \
#include "ui/gui/text-data-import-dialog.h"
#include "page-intro.h"
+#include "page-sheet-spec.h"
#include "page-first-line.h"
#include "page-separators.h"
#include "page-formats.h"
#include <errno.h>
#include <fcntl.h>
- #include <gtk-contrib/psppire-sheet.h>
#include <gtk/gtk.h>
#include <limits.h>
#include <stdlib.h>
#include "ui/gui/executor.h"
#include "ui/gui/helper.h"
#include "ui/gui/builder-wrapper.h"
+ #include "ui/gui/pspp-sheet-selection.h"
+ #include "ui/gui/pspp-sheet-view.h"
#include "ui/gui/psppire-data-window.h"
#include "ui/gui/psppire-dialog.h"
#include "ui/gui/psppire-encoding-selector.h"
#include "ui/gui/psppire-empty-list-store.h"
#include "ui/gui/psppire-var-sheet.h"
- #include "ui/gui/psppire-var-store.h"
#include "ui/gui/psppire-scanf.h"
#include "ui/syntax-gen.h"
static char *generate_syntax (const struct import_assistant *);
static void add_line_number_column (const struct import_assistant *,
- GtkTreeView *);
+ PsppSheetView *);
/* Pops up the Text Data Import assistant. */
void
{
GtkWindow *parent_window = GTK_WINDOW (dw);
struct import_assistant *ia = init_assistant (parent_window);
+ struct sheet_spec_page *ssp ;
if (!init_file (ia, parent_window))
{
return;
}
+ ssp = ia->sheet_spec;
+ if (ia->spreadsheet)
+ {
+ ia->sheet_spec = sheet_spec_page_create (ia);
+ }
+ else
{
ia->intro = intro_page_create (ia);
ia->first_line = first_line_page_create (ia);
break;
}
+ if (ssp)
{
destroy_formats_page (ia);
destroy_separators_page (ia);
{
struct string s = DS_EMPTY_INITIALIZER;
+ if (ia->spreadsheet == NULL)
{
syntax_gen_pspp (&s,
"GET DATA"
if (ia->file.encoding && strcmp (ia->file.encoding, "Auto"))
syntax_gen_pspp (&s, " /ENCODING=%sq\n", ia->file.encoding);
-
intro_append_syntax (ia->intro, &s);
formats_append_syntax (ia, &s);
apply_dict (ia->dict, &s);
}
-
+ else
+ {
+ return sheet_spec_gen_syntax (ia);
+ }
+
return ds_cstr (&s);
}
- static void render_input_cell (GtkTreeViewColumn *tree_column,
+ static void render_input_cell (PsppSheetViewColumn *tree_column,
GtkCellRenderer *cell,
GtkTreeModel *model, GtkTreeIter *iter,
gpointer ia);
/* Called to render one of the cells in the fields preview tree
view. */
static void
- render_input_cell (GtkTreeViewColumn *tree_column, GtkCellRenderer *cell,
+ render_input_cell (PsppSheetViewColumn *tree_column, GtkCellRenderer *cell,
GtkTreeModel *model, GtkTreeIter *iter,
gpointer ia_)
{
/* Called to render one of the cells in the data preview tree
view. */
static void
- render_output_cell (GtkTreeViewColumn *tree_column,
+ render_output_cell (PsppSheetViewColumn *tree_column,
GtkCellRenderer *cell,
GtkTreeModel *model,
GtkTreeIter *iter,
const struct import_assistant *ia,
size_t *row, size_t *column)
{
- GtkTreeView *tree_view = GTK_TREE_VIEW (widget);
+ PsppSheetView *tree_view = PSPP_SHEET_VIEW (widget);
gint bx, by;
GtkTreePath *path;
GtkTreeIter iter;
- GtkTreeViewColumn *tree_column;
+ PsppSheetViewColumn *tree_column;
GtkTreeModel *tree_model;
bool ok;
if (!gtk_widget_get_mapped (widget))
return FALSE;
- gtk_tree_view_convert_widget_to_bin_window_coords (tree_view,
- wx, wy, &bx, &by);
- if (!gtk_tree_view_get_path_at_pos (tree_view, bx, by,
+ pspp_sheet_view_convert_widget_to_bin_window_coords (tree_view,
+ wx, wy, &bx, &by);
+ if (!pspp_sheet_view_get_path_at_pos (tree_view, bx, by,
&path, &tree_column, NULL, NULL))
return FALSE;
*column = GPOINTER_TO_INT (g_object_get_data (G_OBJECT (tree_column),
"column-number"));
- tree_model = gtk_tree_view_get_model (tree_view);
+ tree_model = pspp_sheet_view_get_model (tree_view);
ok = gtk_tree_model_get_iter (tree_model, &iter, path);
gtk_tree_path_free (path);
if (!ok)
void
make_tree_view (const struct import_assistant *ia,
size_t first_line,
- GtkTreeView **tree_view)
+ PsppSheetView **tree_view)
{
GtkTreeModel *model;
- *tree_view = GTK_TREE_VIEW (gtk_tree_view_new ());
+ *tree_view = PSPP_SHEET_VIEW (pspp_sheet_view_new ());
+ pspp_sheet_view_set_grid_lines (*tree_view, PSPP_SHEET_VIEW_GRID_LINES_BOTH);
model = GTK_TREE_MODEL (psppire_empty_list_store_new (
ia->file.line_cnt - first_line));
g_object_set_data (G_OBJECT (model), "lines", ia->file.lines + first_line);
g_object_set_data (G_OBJECT (model), "first-line",
GINT_TO_POINTER (first_line));
- gtk_tree_view_set_model (*tree_view, model);
+ pspp_sheet_view_set_model (*tree_view, model);
g_object_unref (model);
add_line_number_column (ia, *tree_view);
}
static void
- render_line_number (GtkTreeViewColumn *tree_column,
+ render_line_number (PsppSheetViewColumn *tree_column,
GtkCellRenderer *cell,
GtkTreeModel *tree_model,
GtkTreeIter *iter,
static void
add_line_number_column (const struct import_assistant *ia,
- GtkTreeView *treeview)
+ PsppSheetView *treeview)
{
- GtkTreeViewColumn *column;
-
- column = gtk_tree_view_column_new_with_attributes (
- _("Line"), ia->asst.prop_renderer, (void *) NULL);
- gtk_tree_view_column_set_sizing (column, GTK_TREE_VIEW_COLUMN_FIXED);
- gtk_tree_view_column_set_fixed_width (
- column, get_monospace_width (treeview, ia->asst.prop_renderer, 5));
- gtk_tree_view_column_set_resizable (column, TRUE);
- gtk_tree_view_column_set_cell_data_func (column, ia->asst.prop_renderer,
- render_line_number, NULL, NULL);
- gtk_tree_view_append_column (treeview, column);
+ PsppSheetViewColumn *column;
+
+ column = pspp_sheet_view_column_new_with_attributes (
+ _("Line"), ia->asst.prop_renderer, (void *) NULL);
+ pspp_sheet_view_column_set_fixed_width (
+ column, get_monospace_width (treeview, ia->asst.prop_renderer, 5));
+ pspp_sheet_view_column_set_resizable (column, TRUE);
+ pspp_sheet_view_column_set_cell_data_func (column, ia->asst.prop_renderer,
+ render_line_number, NULL, NULL);
+ pspp_sheet_view_append_column (treeview, column);
}
gint
- get_monospace_width (GtkTreeView *treeview, GtkCellRenderer *renderer,
+ get_monospace_width (PsppSheetView *treeview, GtkCellRenderer *renderer,
size_t char_cnt)
{
struct string s;
}
gint
- get_string_width (GtkTreeView *treeview, GtkCellRenderer *renderer,
+ get_string_width (PsppSheetView *treeview, GtkCellRenderer *renderer,
const char *string)
{
gint width;
return width;
}
- GtkTreeViewColumn *
- make_data_column (struct import_assistant *ia, GtkTreeView *tree_view,
+ PsppSheetViewColumn *
+ make_data_column (struct import_assistant *ia, PsppSheetView *tree_view,
bool input, gint dict_idx)
{
struct variable *var = NULL;
struct column *column = NULL;
size_t char_cnt;
gint content_width, header_width;
- GtkTreeViewColumn *tree_column;
+ PsppSheetViewColumn *tree_column;
char *name;
if (input)
header_width = get_string_width (tree_view, ia->asst.prop_renderer,
name);
- tree_column = gtk_tree_view_column_new ();
+ tree_column = pspp_sheet_view_column_new ();
g_object_set_data (G_OBJECT (tree_column), "column-number",
GINT_TO_POINTER (dict_idx));
- gtk_tree_view_column_set_title (tree_column, name);
- gtk_tree_view_column_pack_start (tree_column, ia->asst.fixed_renderer,
- FALSE);
- gtk_tree_view_column_set_cell_data_func (
- tree_column, ia->asst.fixed_renderer,
- input ? render_input_cell : render_output_cell, ia, NULL);
- gtk_tree_view_column_set_sizing (tree_column, GTK_TREE_VIEW_COLUMN_FIXED);
- gtk_tree_view_column_set_fixed_width (tree_column, MAX (content_width,
- header_width));
+ pspp_sheet_view_column_set_title (tree_column, name);
+ pspp_sheet_view_column_pack_start (tree_column, ia->asst.fixed_renderer,
+ FALSE);
+ pspp_sheet_view_column_set_cell_data_func (
+ tree_column, ia->asst.fixed_renderer,
+ input ? render_input_cell : render_output_cell, ia, NULL);
+ pspp_sheet_view_column_set_fixed_width (tree_column, MAX (content_width,
+ header_width));
free (name);
return tree_column;
}
- GtkTreeView *
+ PsppSheetView *
create_data_tree_view (bool input, GtkContainer *parent,
struct import_assistant *ia)
{
- GtkTreeView *tree_view;
+ PsppSheetView *tree_view;
gint i;
make_tree_view (ia, ia->skip_lines, &tree_view);
- gtk_tree_selection_set_mode (gtk_tree_view_get_selection (tree_view),
- GTK_SELECTION_NONE);
+ pspp_sheet_selection_set_mode (pspp_sheet_view_get_selection (tree_view),
+ PSPP_SHEET_SELECTION_NONE);
for (i = 0; i < ia->column_cnt; i++)
- gtk_tree_view_append_column (tree_view,
- make_data_column (ia, tree_view, input, i));
+ pspp_sheet_view_append_column (tree_view,
+ make_data_column (ia, tree_view, input, i));
g_object_set (G_OBJECT (tree_view), "has-tooltip", TRUE, (void *) NULL);
g_signal_connect (tree_view, "query-tooltip",
G_CALLBACK (input ? on_query_input_tooltip
: on_query_output_tooltip), ia);
- gtk_tree_view_set_fixed_height_mode (tree_view, true);
+
gtk_container_add (parent, GTK_WIDGET (tree_view));
gtk_widget_show (GTK_WIDGET (tree_view));
<property name="hscrollbar_policy">automatic</property>
<property name="vscrollbar_policy">automatic</property>
<child>
- <object class="GtkTreeView" id="first-line">
+ <object class="PsppSheetView" id="first-line">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
<property name="hscrollbar_policy">automatic</property>
<property name="vscrollbar_policy">automatic</property>
<child>
- <object class="GtkTreeView" id="fields">
+ <object class="PsppSheetView" id="fields">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
<property name="hscrollbar_policy">automatic</property>
<property name="vscrollbar_policy">automatic</property>
<child>
- <object class="GtkTreeView" id="data">
+ <object class="PsppSheetView" id="data">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
</object>
</child>
</object>
- <object class="GtkAdjustment" id="adjustment1">
- <property name="value">100</property>
- <property name="lower">1</property>
- <property name="upper">100</property>
- <property name="step_increment">1</property>
- <property name="page_increment">10</property>
- </object>
- <object class="GtkAdjustment" id="adjustment2">
- <property name="value">1000</property>
- <property name="upper">100000000</property>
- <property name="step_increment">1</property>
- <property name="page_increment">10</property>
+ <object class="GtkWindow" id="Sheet">
+ <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+ <property name="border_width">12</property>
+ <property name="title" translatable="yes">Importing Spreadsheet Data</property>
+ <child>
+ <object class="GtkVBox" id="vbox1">
+ <property name="visible">True</property>
+ <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+ <property name="orientation">vertical</property>
+ <property name="spacing">12</property>
+ <child>
+ <object class="GtkLabel" id="intro-label1">
+ <property name="visible">True</property>
+ <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+ <property name="label" translatable="yes">Enter below the sheet number and the cell range which you wish to import.</property>
+ <property name="wrap">True</property>
+ </object>
+ <packing>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkAlignment" id="alignment4">
+ <property name="visible">True</property>
+ <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+ <property name="xscale">0</property>
+ <child>
+ <object class="GtkFrame" id="frame1">
+ <property name="visible">True</property>
+ <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+ <property name="label_xalign">0</property>
+ <property name="shadow_type">none</property>
+ <child>
+ <object class="GtkAlignment" id="alignment7">
+ <property name="visible">True</property>
+ <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+ <property name="left_padding">12</property>
+ <child>
+ <object class="GtkTable" id="table3">
+ <property name="visible">True</property>
+ <property name="n_rows">3</property>
+ <property name="n_columns">2</property>
+ <child>
+ <object class="GtkEntry" id="cell-range-entry">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="invisible_char">●</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkComboBox" id="sheet-entry">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="active">0</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="cell-range-label">
+ <property name="visible">True</property>
+ <property name="xalign">1</property>
+ <property name="label" translatable="yes">_Cells: </property>
+ <property name="use_underline">True</property>
+ <property name="mnemonic_widget">cell-range-entry</property>
+ </object>
+ <packing>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="sheet-label">
+ <property name="visible">True</property>
+ <property name="xalign">1</property>
+ <property name="label" translatable="yes">_Sheet Index: </property>
+ <property name="use_underline">True</property>
+ <property name="mnemonic_widget">sheet-entry</property>
+ </object>
+ <packing>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="readnames-checkbox">
+ <property name="label" translatable="yes">Use first row as _variable names</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="use_underline">True</property>
+ <property name="image_position">right</property>
+ <property name="draw_indicator">True</property>
+ </object>
+ <packing>
+ <property name="right_attach">2</property>
+ <property name="top_attach">2</property>
+ <property name="bottom_attach">3</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child type="label">
+ <object class="GtkLabel" id="label4">
+ <property name="visible">True</property>
+ <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+ <property name="label" translatable="yes"><b>Cells to Import</b></property>
+ <property name="use_markup">True</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ </child>
</object>
</interface>