projects
/
pspp
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
EXAMINE: Convert another test to Autotest framework.
[pspp]
/
src
/
ui
/
gui
/
psppire-data-editor.c
diff --git
a/src/ui/gui/psppire-data-editor.c
b/src/ui/gui/psppire-data-editor.c
index a608e6de29e8745d089b885189e0249dc5b36570..036b9b7746cbabd9cf878662cdc63a435a84e877 100644
(file)
--- a/
src/ui/gui/psppire-data-editor.c
+++ b/
src/ui/gui/psppire-data-editor.c
@@
-1,5
+1,5
@@
/* PSPPIRE - a graphical user interface for PSPP.
/* PSPPIRE - a graphical user interface for PSPP.
- Copyright (C) 2008, 2009 Free Software Foundation, Inc.
+ Copyright (C) 2008, 2009
, 2010
Free Software Foundation, Inc.
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
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
@@
-23,8
+23,9
@@
#include <language/syntax-string-source.h>
#include "psppire-data-store.h"
#include <language/syntax-string-source.h>
#include "psppire-data-store.h"
-#include <ui/gui/sheet/psppire-axis-impl.h>
-#include "helper.h"
+#include <libpspp/i18n.h>
+#include <ui/gui/sheet/psppire-axis.h>
+#include "executor.h"
#include <gtk-contrib/gtkxpaned.h>
#include <gettext.h>
#include <gtk-contrib/gtkxpaned.h>
#include <gettext.h>
@@
-220,8
+221,8
@@
new_data_callback (PsppireDataStore *ds, gpointer data)
for (i = 0; i < 2; ++i)
{
for (i = 0; i < 2; ++i)
{
- psppire_axis_
impl_
clear (de->vaxis[i]);
- psppire_axis_
impl_
append_n (de->vaxis[i], n_cases, DEFAULT_ROW_HEIGHT);
+ psppire_axis_clear (de->vaxis[i]);
+ psppire_axis_append_n (de->vaxis[i], n_cases, DEFAULT_ROW_HEIGHT);
}
}
}
}
@@
-232,7
+233,7
@@
case_inserted_callback (PsppireDataStore *ds, gint before, gpointer data)
PsppireDataEditor *de = PSPPIRE_DATA_EDITOR (data);
for (i = 0; i < 2; ++i)
PsppireDataEditor *de = PSPPIRE_DATA_EDITOR (data);
for (i = 0; i < 2; ++i)
- psppire_axis_i
mpl_i
nsert (de->vaxis[i], before, DEFAULT_ROW_HEIGHT);
+ psppire_axis_insert (de->vaxis[i], before, DEFAULT_ROW_HEIGHT);
}
}
@@
-243,7
+244,7
@@
cases_deleted_callback (PsppireDataStore *ds, gint first, gint n_cases, gpointer
PsppireDataEditor *de = PSPPIRE_DATA_EDITOR (data);
for (i = 0; i < 2; ++i)
PsppireDataEditor *de = PSPPIRE_DATA_EDITOR (data);
for (i = 0; i < 2; ++i)
- psppire_axis_
impl_
delete (de->vaxis[0], first, n_cases);
+ psppire_axis_delete (de->vaxis[0], first, n_cases);
}
}
@@
-288,22
+289,22
@@
new_variables_callback (PsppireDict *dict, gpointer data)
PsppireDataEditor *de = PSPPIRE_DATA_EDITOR (data);
gint m_width = width_of_m (GTK_WIDGET (de));
PsppireDataEditor *de = PSPPIRE_DATA_EDITOR (data);
gint m_width = width_of_m (GTK_WIDGET (de));
- PsppireAxis
Impl
*vaxis;
+ PsppireAxis *vaxis;
g_object_get (de->var_sheet, "vertical-axis", &vaxis, NULL);
g_object_get (de->var_sheet, "vertical-axis", &vaxis, NULL);
- psppire_axis_
impl_
clear (vaxis);
- psppire_axis_
impl_
append_n (vaxis, 1 + psppire_dict_get_var_cnt (dict), DEFAULT_ROW_HEIGHT);
+ psppire_axis_clear (vaxis);
+ psppire_axis_append_n (vaxis, 1 + psppire_dict_get_var_cnt (dict), DEFAULT_ROW_HEIGHT);
g_signal_connect_swapped (de->haxis, "resize-unit",
G_CALLBACK (rewidth_variable), de);
g_signal_connect_swapped (de->haxis, "resize-unit",
G_CALLBACK (rewidth_variable), de);
- psppire_axis_
impl_
clear (de->haxis);
+ psppire_axis_clear (de->haxis);
for (v = 0 ; v < psppire_dict_get_var_cnt (dict); ++v)
{
const struct variable *var = psppire_dict_get_variable (dict, v);
for (v = 0 ; v < psppire_dict_get_var_cnt (dict); ++v)
{
const struct variable *var = psppire_dict_get_variable (dict, v);
- psppire_axis_
impl_
append (de->haxis, m_width * var_get_display_width (var));
+ psppire_axis_append (de->haxis, m_width * var_get_display_width (var));
}
}
}
}
@@
-314,16
+315,16
@@
insert_variable_callback (PsppireDict *dict, gint x, gpointer data)
gint m_width = width_of_m (GTK_WIDGET (de));
gint m_width = width_of_m (GTK_WIDGET (de));
- PsppireAxis
Impl
*var_vaxis;
+ PsppireAxis *var_vaxis;
const struct variable *var = psppire_dict_get_variable (dict, x);
g_object_get (de->var_sheet, "vertical-axis", &var_vaxis, NULL);
const struct variable *var = psppire_dict_get_variable (dict, x);
g_object_get (de->var_sheet, "vertical-axis", &var_vaxis, NULL);
- psppire_axis_i
mpl_i
nsert (var_vaxis, x, DEFAULT_ROW_HEIGHT);
+ psppire_axis_insert (var_vaxis, x, DEFAULT_ROW_HEIGHT);
- psppire_axis_i
mpl_i
nsert (de->haxis, x, m_width * var_get_display_width (var));
+ psppire_axis_insert (de->haxis, x, m_width * var_get_display_width (var));
}
}
@@
-333,12
+334,12
@@
delete_variable_callback (PsppireDict *dict, gint posn,
{
PsppireDataEditor *de = PSPPIRE_DATA_EDITOR (data);
{
PsppireDataEditor *de = PSPPIRE_DATA_EDITOR (data);
- PsppireAxis
Impl
*var_vaxis;
+ PsppireAxis *var_vaxis;
g_object_get (de->var_sheet, "vertical-axis", &var_vaxis, NULL);
g_object_get (de->var_sheet, "vertical-axis", &var_vaxis, NULL);
- psppire_axis_
impl_
delete (var_vaxis, posn, 1);
+ psppire_axis_delete (var_vaxis, posn, 1);
- psppire_axis_
impl_
delete (de->haxis, posn, 1);
+ psppire_axis_delete (de->haxis, posn, 1);
}
}
@@
-356,7
+357,7
@@
rewidth_variable_callback (PsppireDict *dict, gint posn, gpointer data)
if ( var_width < 1 )
var_width = 1;
if ( var_width < 1 )
var_width = 1;
- psppire_axis_
impl_
resize (de->haxis, posn, m_width * var_width);
+ psppire_axis_resize (de->haxis, posn, m_width * var_width);
}
}
@@
-743,13
+744,10
@@
update_data_ref_entry (const PsppireSheet *sheet,
gchar *text = g_strdup_printf ("%d: %s", row + FIRST_CASE_NUMBER,
var_get_name (var));
gchar *text = g_strdup_printf ("%d: %s", row + FIRST_CASE_NUMBER,
var_get_name (var));
- gchar *s = pspp_locale_to_utf8 (text, -1, 0);
- g_free (text);
-
- gtk_entry_set_text (GTK_ENTRY (de->cell_ref_entry), s);
+ gtk_entry_set_text (GTK_ENTRY (de->cell_ref_entry), text);
- g_free (
s
);
+ g_free (
text
);
}
else
goto blank_entry;
}
else
goto blank_entry;
@@
-822,8
+820,8
@@
on_map (GtkWidget *w)
static void
init_sheet (PsppireDataEditor *de, int i,
GtkAdjustment *hadj, GtkAdjustment *vadj,
static void
init_sheet (PsppireDataEditor *de, int i,
GtkAdjustment *hadj, GtkAdjustment *vadj,
- PsppireAxis
Impl
*vaxis,
- PsppireAxis
Impl
*haxis
+ PsppireAxis *vaxis,
+ PsppireAxis *haxis
)
{
de->sheet_bin[i] = gtk_scrolled_window_new (hadj, vadj);
)
{
de->sheet_bin[i] = gtk_scrolled_window_new (hadj, vadj);
@@
-859,13
+857,12
@@
init_data_sheet (PsppireDataEditor *de)
GtkAdjustment *vadj1, *hadj1;
GtkWidget *sheet ;
GtkAdjustment *vadj1, *hadj1;
GtkWidget *sheet ;
- de->vaxis[0] = psppire_axis_
impl_
new ();
- de->vaxis[1] = psppire_axis_
impl_
new ();
+ de->vaxis[0] = psppire_axis_new ();
+ de->vaxis[1] = psppire_axis_new ();
- /* T
xoxov
here's only one horizontal axis, since the
+ /* There's only one horizontal axis, since the
column widths are parameters of the variables */
column widths are parameters of the variables */
- de->haxis = psppire_axis_impl_new ();
-
+ de->haxis = psppire_axis_new ();
de->split = TRUE;
de->paned = gtk_xpaned_new ();
de->split = TRUE;
de->paned = gtk_xpaned_new ();
@@
-1206,9
+1203,13
@@
popup_variable_row_menu (PsppireSheet *sheet, gint row,
PsppireVarStore *var_store =
PSPPIRE_VAR_STORE (psppire_sheet_get_model (sheet));
PsppireVarStore *var_store =
PSPPIRE_VAR_STORE (psppire_sheet_get_model (sheet));
+
+ PsppireDict *dict;
+ const struct variable *v ;
- const struct variable *v =
- psppire_dict_get_variable (var_store->dict, row);
+ g_object_get (var_store, "dictionary", &dict, NULL);
+
+ v = psppire_dict_get_variable (dict, row);
if ( v && event->button == 3)
{
if ( v && event->button == 3)
{
@@
-1302,13
+1303,15
@@
psppire_data_editor_insert_variable (PsppireDataEditor *de)
switch (gtk_notebook_get_current_page (GTK_NOTEBOOK (de)))
{
case PSPPIRE_DATA_EDITOR_DATA_VIEW:
switch (gtk_notebook_get_current_page (GTK_NOTEBOOK (de)))
{
case PSPPIRE_DATA_EDITOR_DATA_VIEW:
- if ( de->data_sheet[0]->state == PSPPIRE_SHEET_COLUMN_SELECTED )
+ if ( PSPPIRE_SHEET (de->data_sheet[0])->select_status
+ == PSPPIRE_SHEET_COLUMN_SELECTED )
posn = PSPPIRE_SHEET (de->data_sheet[0])->range.col0;
else
posn = PSPPIRE_SHEET (de->data_sheet[0])->active_cell.col;
break;
case PSPPIRE_DATA_EDITOR_VARIABLE_VIEW:
posn = PSPPIRE_SHEET (de->data_sheet[0])->range.col0;
else
posn = PSPPIRE_SHEET (de->data_sheet[0])->active_cell.col;
break;
case PSPPIRE_DATA_EDITOR_VARIABLE_VIEW:
- if ( de->var_sheet->state == PSPPIRE_SHEET_ROW_SELECTED )
+ if ( PSPPIRE_SHEET (de->var_sheet)->select_status
+ == PSPPIRE_SHEET_ROW_SELECTED )
posn = PSPPIRE_SHEET (de->var_sheet)->range.row0;
else
posn = PSPPIRE_SHEET (de->var_sheet)->active_cell.row;
posn = PSPPIRE_SHEET (de->var_sheet)->range.row0;
else
posn = PSPPIRE_SHEET (de->var_sheet)->active_cell.row;
@@
-1327,10
+1330,14
@@
psppire_data_editor_insert_case (PsppireDataEditor *de)
{
glong posn = -1;
{
glong posn = -1;
- if ( de->data_sheet[0]->state == PSPPIRE_SHEET_ROW_SELECTED )
- posn = PSPPIRE_SHEET (de->data_sheet[0])->range.row0;
+ if ( PSPPIRE_SHEET (de->data_sheet[0])->select_status == PSPPIRE_SHEET_ROW_SELECTED )
+ {
+ posn = PSPPIRE_SHEET (de->data_sheet[0])->range.row0;
+ }
else
else
- posn = PSPPIRE_SHEET (de->data_sheet[0])->active_cell.row;
+ {
+ posn = PSPPIRE_SHEET (de->data_sheet[0])->active_cell.row;
+ }
if ( posn == -1 ) posn = 0;
if ( posn == -1 ) posn = 0;
@@
-1354,6
+1361,7
@@
psppire_data_editor_delete_cases (PsppireDataEditor *de)
void
psppire_data_editor_delete_variables (PsppireDataEditor *de)
{
void
psppire_data_editor_delete_variables (PsppireDataEditor *de)
{
+ PsppireDict *dict = NULL;
gint first, n;
switch (gtk_notebook_get_current_page (GTK_NOTEBOOK (de)))
gint first, n;
switch (gtk_notebook_get_current_page (GTK_NOTEBOOK (de)))
@@
-1371,7
+1379,9
@@
psppire_data_editor_delete_variables (PsppireDataEditor *de)
break;
}
break;
}
- psppire_dict_delete_variables (de->var_store->dict, first, n);
+ g_object_get (de->var_store, "dictionary", &dict, NULL);
+
+ psppire_dict_delete_variables (dict, first, n);
psppire_sheet_unselect_range (PSPPIRE_SHEET (de->data_sheet[0]));
psppire_sheet_unselect_range (PSPPIRE_SHEET (de->var_sheet));
psppire_sheet_unselect_range (PSPPIRE_SHEET (de->data_sheet[0]));
psppire_sheet_unselect_range (PSPPIRE_SHEET (de->var_sheet));
@@
-1558,43
+1568,45
@@
data_sheet_set_clip (PsppireSheet *sheet)
struct case_map *map = NULL;
casenumber max_rows;
size_t max_columns;
struct case_map *map = NULL;
casenumber max_rows;
size_t max_columns;
+ gint row0, rowi;
+ gint col0, coli;
ds = PSPPIRE_DATA_STORE (psppire_sheet_get_model (sheet));
psppire_sheet_get_selected_range (sheet, &range);
ds = PSPPIRE_DATA_STORE (psppire_sheet_get_model (sheet));
psppire_sheet_get_selected_range (sheet, &range);
+ col0 = MIN (range.col0, range.coli);
+ coli = MAX (range.col0, range.coli);
+ row0 = MIN (range.row0, range.rowi);
+ rowi = MAX (range.row0, range.rowi);
+
/* If nothing selected, then use active cell */
/* If nothing selected, then use active cell */
- if ( r
ange.row0 < 0 || range.
col0 < 0 )
+ if ( r
ow0 < 0 ||
col0 < 0 )
{
gint row, col;
psppire_sheet_get_active_cell (sheet, &row, &col);
{
gint row, col;
psppire_sheet_get_active_cell (sheet, &row, &col);
- r
ange.row0 = range.
rowi = row;
-
range.col0 = range.
coli = col;
+ r
ow0 =
rowi = row;
+
col0 =
coli = col;
}
/* The sheet range can include cells that do not include data.
Exclude them from the range. */
max_rows = psppire_data_store_get_case_count (ds);
}
/* The sheet range can include cells that do not include data.
Exclude them from the range. */
max_rows = psppire_data_store_get_case_count (ds);
- if (r
ange.r
owi >= max_rows)
+ if (rowi >= max_rows)
{
if (max_rows == 0)
return;
{
if (max_rows == 0)
return;
- r
ange.r
owi = max_rows - 1;
+ rowi = max_rows - 1;
}
max_columns = dict_get_var_cnt (ds->dict->dict);
}
max_columns = dict_get_var_cnt (ds->dict->dict);
- if (
range.
coli >= max_columns)
+ if (coli >= max_columns)
{
if (max_columns == 0)
return;
{
if (max_columns == 0)
return;
-
range.
coli = max_columns - 1;
+ coli = max_columns - 1;
}
}
- g_return_if_fail (range.rowi >= range.row0);
- g_return_if_fail (range.row0 >= 0);
- g_return_if_fail (range.coli >= range.col0);
- g_return_if_fail (range.col0 >= 0);
-
/* Destroy any existing clip */
if ( clip_datasheet )
{
/* Destroy any existing clip */
if ( clip_datasheet )
{
@@
-1610,16
+1622,14
@@
data_sheet_set_clip (PsppireSheet *sheet)
/* Construct clip dictionary. */
clip_dict = dict_create ();
/* Construct clip dictionary. */
clip_dict = dict_create ();
- for (i = range.col0; i <= range.coli; i++)
- {
- const struct variable *old = dict_get_var (ds->dict->dict, i);
- dict_clone_var_assert (clip_dict, old, var_get_name (old));
- }
+ dict_set_encoding (clip_dict, dict_get_encoding (ds->dict->dict));
+ for (i = col0; i <= coli; i++)
+ dict_clone_var_assert (clip_dict, dict_get_var (ds->dict->dict, i));
/* Construct clip data. */
map = case_map_by_name (ds->dict->dict, clip_dict);
/* Construct clip data. */
map = case_map_by_name (ds->dict->dict, clip_dict);
- writer = autopaging_writer_create (dict_get_
next_value_idx
(clip_dict));
- for (i = r
ange.row0; i <= range.
rowi ; ++i )
+ writer = autopaging_writer_create (dict_get_
proto
(clip_dict));
+ for (i = r
ow0; i <=
rowi ; ++i )
{
struct ccase *old = psppire_data_store_get_case (ds, i);
if (old != NULL)
{
struct ccase *old = psppire_data_store_get_case (ds, i);
if (old != NULL)
@@
-1646,17
+1656,14
@@
static void
data_out_g_string (GString *string, const struct variable *v,
const struct ccase *cc)
{
data_out_g_string (GString *string, const struct variable *v,
const struct ccase *cc)
{
- char *buf ;
-
const struct fmt_spec *fs = var_get_print_format (v);
const union value *val = case_data (cc, v);
const struct fmt_spec *fs = var_get_print_format (v);
const union value *val = case_data (cc, v);
- buf = xzalloc (fs->w);
-
data_out (val, fs, buf
);
+
char *s = data_out (val, var_get_encoding (v), fs
);
- g_string_append
_len (string, buf, fs->w
);
+ g_string_append
(string, s
);
- g_free (
buf
);
+ g_free (
s
);
}
static GString *
}
static GString *
@@
-1665,7
+1672,7
@@
clip_to_text (void)
casenumber r;
GString *string;
casenumber r;
GString *string;
- const size_t val_cnt = case
reader_get_value_cnt (clip_datasheet
);
+ const size_t val_cnt = case
proto_get_n_widths (casereader_get_proto (clip_datasheet)
);
const casenumber case_cnt = casereader_get_case_cnt (clip_datasheet);
const size_t var_cnt = dict_get_var_cnt (clip_dict);
const casenumber case_cnt = casereader_get_case_cnt (clip_datasheet);
const size_t var_cnt = dict_get_var_cnt (clip_dict);
@@
-1707,13
+1714,15
@@
clip_to_html (void)
casenumber r;
GString *string;
casenumber r;
GString *string;
- const size_t val_cnt = case
reader_get_value_cnt (clip_datasheet
);
+ const size_t val_cnt = case
proto_get_n_widths (casereader_get_proto (clip_datasheet)
);
const casenumber case_cnt = casereader_get_case_cnt (clip_datasheet);
const size_t var_cnt = dict_get_var_cnt (clip_dict);
const casenumber case_cnt = casereader_get_case_cnt (clip_datasheet);
const size_t var_cnt = dict_get_var_cnt (clip_dict);
-
/* Guestimate the size needed */
/* Guestimate the size needed */
- string = g_string_sized_new (20 * val_cnt * case_cnt);
+ string = g_string_sized_new (80 + 20 * val_cnt * case_cnt);
+
+ g_string_append (string,
+ "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">\n");
g_string_append (string, "<table>\n");
for (r = 0 ; r < case_cnt ; ++r )
g_string_append (string, "<table>\n");
for (r = 0 ; r < case_cnt ; ++r )