X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fui%2Fgui%2Fdata-editor.c;h=61b5aea0228975867f5ba32fab7d20bb51cf9caf;hb=c2362c315ddb57dfeed99c240ef4f58ec2aeaa4d;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..61b5aea0 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. @@ -110,6 +136,14 @@ 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), @@ -128,6 +162,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 +526,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 (); + } +}