42 |
static PSPP_Dict *pspp_dictionary ; |
static PSPP_Dict *pspp_dictionary ; |
43 |
|
|
44 |
static gint last_populated_row = -1; |
static gint last_populated_row = -1; |
45 |
static gint n_variables; |
static gint n_initial_columns = 10; |
46 |
|
|
47 |
|
|
48 |
static void repopulate_columns(GtkSheet *sheet, PSPP_Dict *dict, |
static void repopulate_columns(GtkSheet *sheet, PSPP_Dict *dict, |
161 |
return FALSE; |
return FALSE; |
162 |
} |
} |
163 |
|
|
164 |
|
|
165 |
/* Update COLUMN of the data sheet */ |
/* Update COLUMN of the data sheet */ |
166 |
static gint |
static gint |
167 |
update_variable(GObject *obj, gint column, gpointer data) |
update_variable(GObject *obj, gint column, gpointer data) |
171 |
GtkSheetRange range; |
GtkSheetRange range; |
172 |
GtkSheet *sheet = GTK_SHEET(data); |
GtkSheet *sheet = GTK_SHEET(data); |
173 |
|
|
174 |
if ( column >= n_variables) |
if ( column >= gtk_sheet_get_columns_count(sheet) ) |
175 |
{ |
{ |
176 |
g_warning |
gtk_sheet_add_column(sheet, |
177 |
("Sorry. Maximum of %d variables is all that\'s currently implemented\n", |
column - gtk_sheet_get_columns_count(sheet) + 1); |
|
n_variables); |
|
|
return FALSE; |
|
178 |
} |
} |
179 |
|
|
180 |
const struct variable *var = pspp_dict_get_var(dict, column); |
const struct variable *var = pspp_dict_get_var(dict, column); |
286 |
{ |
{ |
287 |
g_return_if_fail(sheet); |
g_return_if_fail(sheet); |
288 |
|
|
289 |
|
gtk_sheet_set_active_cell(sheet, 0, 0); |
290 |
|
|
291 |
/* get rid of all the cells */ |
/* get rid of all the cells */ |
292 |
gtk_sheet_range_clear (sheet, NULL); |
gtk_sheet_range_delete (sheet, NULL); |
293 |
|
|
294 |
|
/* Delete any excess columns */ |
295 |
|
gtk_sheet_delete_columns(sheet, 0, |
296 |
|
gtk_sheet_get_columns_count(sheet) - n_initial_columns); |
297 |
|
|
298 |
last_populated_row = -1; |
last_populated_row = -1; |
299 |
|
|
388 |
static void |
static void |
389 |
value_encode_func(gint row, gint col, const gchar *text, GValue *dest) |
value_encode_func(gint row, gint col, const gchar *text, GValue *dest) |
390 |
{ |
{ |
391 |
|
if ( ! pspp_dictionary ) |
392 |
|
return; |
393 |
|
|
394 |
const struct variable *v = pspp_dict_get_var (pspp_dictionary, col); |
const struct variable *v = pspp_dict_get_var (pspp_dictionary, col); |
395 |
|
|
396 |
|
if ( ! v ) |
397 |
|
return; |
398 |
|
|
399 |
struct ccase mycase; |
struct ccase mycase; |
400 |
|
|
401 |
case_create(&mycase, dict_get_next_value_idx(pspp_dictionary->dict)); |
case_create(&mycase, dict_get_next_value_idx(pspp_dictionary->dict)); |
402 |
|
|
403 |
union value *val = case_data_rw (&mycase, v->fv); |
union value *val = case_data_rw (&mycase, v->fv); |
404 |
|
|
|
|
|
405 |
struct data_in d_in; |
struct data_in d_in; |
406 |
d_in.s = text; |
d_in.s = text; |
407 |
d_in.e = text + strlen(text); |
d_in.e = text + strlen(text); |
451 |
GtkWidget *sheet; |
GtkWidget *sheet; |
452 |
gint i; |
gint i; |
453 |
|
|
454 |
n_variables = 10; |
const gint rows = 46; |
|
const gint rows=46; |
|
455 |
|
|
456 |
GtkSheetRange entire_sheet= {0,0,0,0}; |
GtkSheetRange entire_sheet= {0,0,0,0}; |
457 |
entire_sheet.rowi = rows - 1; |
entire_sheet.rowi = rows - 1; |
458 |
entire_sheet.coli = n_variables - 1; |
entire_sheet.coli = n_initial_columns - 1; |
459 |
|
|
460 |
sheet = gtk_sheet_new(rows, n_variables, "data sheet"); |
sheet = gtk_sheet_new(rows, n_initial_columns, "data sheet"); |
461 |
|
|
462 |
gtk_sheet_set_coding(GTK_SHEET(sheet), |
gtk_sheet_set_coding(GTK_SHEET(sheet), |
463 |
value_encode_func, value_format_func, 0); |
value_encode_func, value_format_func, 0); |
466 |
G_CALLBACK(adjust_column_width), 0); |
G_CALLBACK(adjust_column_width), 0); |
467 |
|
|
468 |
gtk_sheet_columns_set_sensitivity(GTK_SHEET(sheet), FALSE); |
gtk_sheet_columns_set_sensitivity(GTK_SHEET(sheet), FALSE); |
469 |
for (i = 0 ; i < n_variables ; ++i ) |
for (i = 0 ; i < n_initial_columns ; ++i ) |
470 |
{ |
{ |
471 |
gtk_sheet_column_button_add_label (GTK_SHEET(sheet), i, _("var")); |
gtk_sheet_column_button_add_label (GTK_SHEET(sheet), i, _("var")); |
472 |
} |
} |
546 |
g_assert(G_VALUE_HOLDS(&gval, G_TYPE_DOUBLE)); |
g_assert(G_VALUE_HOLDS(&gval, G_TYPE_DOUBLE)); |
547 |
value->f = g_value_get_double(&gval); |
value->f = g_value_get_double(&gval); |
548 |
} |
} |
|
|
|
549 |
} |
} |
550 |
|
|
551 |
if ( ! sfm_write_case(writer, &mycase) ) |
if ( ! sfm_write_case(writer, &mycase) ) |