X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fui%2Fgui%2Fmenu-actions.c;h=0dc03658c0c93f6222100d13c5be3c1066658a31;hb=e294a372f351d7105c21a2db58022af8b119aa64;hp=c23beb49a872c5d02c55ec007384a4fd038045ed;hpb=6abdd9ecfc1a5a9a6c4db1b675249357da453167;p=pspp-builds.git diff --git a/src/ui/gui/menu-actions.c b/src/ui/gui/menu-actions.c index c23beb49..0dc03658 100644 --- a/src/ui/gui/menu-actions.c +++ b/src/ui/gui/menu-actions.c @@ -25,6 +25,7 @@ #define N_(msgid) msgid +#include #include #include #include @@ -50,8 +51,6 @@ extern GladeXML *xml; extern PsppireDict *the_dictionary ; -extern PsppireCaseArray *the_cases ; - static struct file_handle *psppire_handle = 0; @@ -75,20 +74,32 @@ psppire_set_window_title(const gchar *text) g_free(title); } - +/* Clear the active file and set the data and var sheets to + reflect this. + */ gboolean clear_file(void) { - GtkWidget *data_sheet = get_widget_assert(xml, "data_sheet"); - GtkWidget *var_sheet = get_widget_assert(xml, "variable_sheet"); - - gtk_sheet_set_active_cell(GTK_SHEET(data_sheet), -1, -1); + PsppireDataStore *data_store ; + GtkSheet *data_sheet = GTK_SHEET(get_widget_assert(xml, "data_sheet")); + GtkSheet *var_sheet = GTK_SHEET(get_widget_assert(xml, "variable_sheet")); - gtk_sheet_set_active_cell(GTK_SHEET(var_sheet), 0, 0); + gtk_sheet_set_active_cell(data_sheet, -1, -1); + gtk_sheet_set_active_cell(var_sheet, 0, 0); + + if ( GTK_WIDGET_REALIZED(GTK_WIDGET(data_sheet))) + gtk_sheet_unselect_range(data_sheet); + + if ( GTK_WIDGET_REALIZED(GTK_WIDGET(var_sheet))) + gtk_sheet_unselect_range(var_sheet); + + gtk_sheet_moveto(data_sheet, 0, 0, 0.0, 0.0); + gtk_sheet_moveto(var_sheet, 0, 0, 0.0, 0.0); + + data_store = PSPPIRE_DATA_STORE(gtk_sheet_get_model(data_sheet)); + + psppire_data_store_clear(data_store); - psppire_dict_clear(the_dictionary); - psppire_case_array_clear(the_cases); - psppire_set_window_title(gettext(untitled)); if (psppire_handle) @@ -107,23 +118,13 @@ on_new1_activate (GtkMenuItem *menuitem, -static gboolean -populate_case_from_reader(struct ccase *c, gpointer aux) -{ - struct sfm_reader *reader = aux; - - return sfm_read_case(reader, c); -} - - /* Load a system file. Return TRUE if successfull */ gboolean load_system_file(const gchar *file_name) { - int ni ; - gint case_num; + int var_cnt ; PsppireVarStore *var_store ; PsppireDataStore *data_store ; @@ -134,12 +135,10 @@ load_system_file(const gchar *file_name) GtkWidget *data_sheet = get_widget_assert(xml, "data_sheet"); GtkWidget *var_sheet = get_widget_assert(xml, "variable_sheet"); - g_assert(data_sheet); g_assert(var_sheet); - if ( psppire_handle ) - fh_free(psppire_handle); + clear_file(); psppire_handle = fh_create_file (handle_name, file_name, fh_default_properties()); @@ -151,7 +150,6 @@ load_system_file(const gchar *file_name) return FALSE; } - reader = sfm_open_reader (psppire_handle, &new_dict, &ri); if ( ! reader ) @@ -172,25 +170,36 @@ load_system_file(const gchar *file_name) psppire_data_store_set_dictionary(data_store, the_dictionary); - psppire_case_array_clear(data_store->cases); - - psppire_set_window_title(basename(file_name)); - ni = dict_get_next_value_idx(the_dictionary->dict); - if ( ni == 0 ) + var_cnt = dict_get_next_value_idx(the_dictionary->dict); + if ( var_cnt == 0 ) return FALSE; - for(case_num=0;;case_num++) + + for(;;) { - if (!psppire_case_array_append_case(the_cases, - populate_case_from_reader, - reader)) - break; - } + struct ccase c; + case_create(&c, var_cnt); + if ( 0 == sfm_read_case (reader, &c) ) + { + case_destroy(&c); + break; + } + + if ( !psppire_case_file_append_case(data_store->case_file, &c) ) + { + g_warning("Cannot write case to casefile\n"); + break; + } + + case_destroy(&c); + } + + sfm_close_reader(reader); - sfm_close_reader(reader); + psppire_case_file_get_case_count(data_store->case_file); return TRUE; } @@ -396,6 +405,7 @@ on_insert1_activate (GtkMenuItem *menuitem, switch (page) { case PAGE_DATA_SHEET: +#if 0 { GtkSheet *data_sheet = GTK_SHEET(get_widget_assert(xml, "data_sheet")); PsppireDataStore *data_store = @@ -406,6 +416,7 @@ on_insert1_activate (GtkMenuItem *menuitem, blank_case, the_dictionary); } break; +#endif case PAGE_VAR_SHEET: { GtkSheet *var_sheet = @@ -430,6 +441,7 @@ on_delete1_activate (GtkMenuItem *menuitem, page = gtk_notebook_get_current_page(GTK_NOTEBOOK(notebook)); switch ( page) { +#if 0 case PAGE_DATA_SHEET: { GtkSheet *data_sheet = GTK_SHEET(get_widget_assert(xml, "data_sheet")); @@ -442,6 +454,7 @@ on_delete1_activate (GtkMenuItem *menuitem, - data_sheet->range.row0 ); } break; +#endif case PAGE_VAR_SHEET: { GtkSheet *var_sheet =