X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fui%2Fgui%2Fdata-editor.c;h=5c2eaf4f30b29b65d111ba9d396215507c9fd05d;hb=b4dd1916b76c26b631330a6da615af4433360da4;hp=d37e52ebf8b5cf2e0a27a9da73a711e6e055b97b;hpb=75fe94ea24fd7b12a0d99b8f36a79d8423e668d4;p=pspp-builds.git diff --git a/src/ui/gui/data-editor.c b/src/ui/gui/data-editor.c index d37e52eb..5c2eaf4f 100644 --- a/src/ui/gui/data-editor.c +++ b/src/ui/gui/data-editor.c @@ -40,6 +40,7 @@ #include "psppire-data-store.h" #include "psppire-var-store.h" + /* Switch between the VAR SHEET and the DATA SHEET */ enum {PAGE_DATA_SHEET = 0, PAGE_VAR_SHEET}; @@ -72,6 +73,31 @@ static void value_labels_toggled (GtkToggleToolButton *, gpointer); static void file_quit (GtkCheckMenuItem *, gpointer ); +static void on_clear_activate (GtkMenuItem *, gpointer); + +static void +enable_edit_clear (GtkWidget *w, gint row, gpointer data) +{ + struct data_editor *de = data; + + GtkWidget *menuitem = get_widget_assert (de->xml, "edit_clear"); + + gtk_widget_set_sensitive (menuitem, TRUE); +} + +static gboolean +disable_edit_clear (GtkWidget *w, gint x, gint y, gpointer data) +{ + struct data_editor *de = data; + + GtkWidget *menuitem = get_widget_assert (de->xml, "edit_clear"); + + gtk_widget_set_sensitive (menuitem, FALSE); + + return FALSE; +} + + /* Create a new data editor. @@ -88,6 +114,8 @@ new_data_editor (void) de->xml = glade_xml_new (PKGDATADIR "/data-editor.glade", NULL, NULL); + connect_help (de->xml); + e->window = get_widget_assert (de->xml, "data_editor"); g_signal_connect (get_widget_assert (de->xml,"file_new_data"), @@ -110,12 +138,27 @@ new_data_editor (void) G_CALLBACK (open_syntax_window), e->window); + + g_signal_connect (get_widget_assert (de->xml,"edit_clear"), + "activate", + G_CALLBACK (on_clear_activate), + de); + + + g_signal_connect (get_widget_assert (de->xml,"help_about"), "activate", G_CALLBACK (about_new), e->window); + g_signal_connect (get_widget_assert (de->xml,"help_reference"), + "activate", + G_CALLBACK (reference_manual), + e->window); + + + g_signal_connect (get_widget_assert (de->xml,"data_sheet"), "double-click-column", G_CALLBACK (click2column), @@ -128,6 +171,17 @@ new_data_editor (void) de); + g_signal_connect (get_widget_assert (de->xml, "variable_sheet"), + "select-row", + GTK_SIGNAL_FUNC (enable_edit_clear), + de); + + g_signal_connect (get_widget_assert (de->xml, "variable_sheet"), + "activate", + GTK_SIGNAL_FUNC (disable_edit_clear), + de); + + g_signal_connect (get_widget_assert (de->xml, "notebook"), "switch-page", G_CALLBACK (data_var_select), de); @@ -481,3 +535,42 @@ file_quit (GtkCheckMenuItem *menuitem, gpointer data) */ gtk_main_quit (); } + + + +/* Callback for when the Clear item in the edit menu is activated */ +static void +on_clear_activate (GtkMenuItem *menuitem, gpointer data) +{ + struct data_editor *de = data; + + GtkNotebook *notebook = GTK_NOTEBOOK (get_widget_assert (de->xml, + "notebook")); + + switch ( gtk_notebook_get_current_page (notebook) ) + { + case PAGE_VAR_SHEET: + { + GtkSheet *var_sheet = + GTK_SHEET (get_widget_assert (de->xml, "variable_sheet")); + + PsppireVarStore *vs = PSPPIRE_VAR_STORE + (gtk_sheet_get_model (var_sheet) ); + + /* This shouldn't be able to happen, because the menuitem + should be disabled */ + g_return_if_fail (var_sheet->state == GTK_SHEET_ROW_SELECTED ); + + psppire_dict_delete_variables (vs->dict, + var_sheet->range.row0, + 1 + + var_sheet->range.rowi - + var_sheet->range.row0 ); + } + break; + case PAGE_DATA_SHEET: + break; + default: + g_assert_not_reached (); + } +}