X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fui%2Fgui%2Fdata-editor.c;h=d6cf50b395bf2e6d8737f3df71de31b0a2cc8bda;hb=b810b32ac59e1dcba90b8d4a70d626c4e249bad6;hp=d75ea5c9145d603cb46cec6baf9beb62fa1afe44;hpb=84eede115ff5615f934ae2c10953f7759e196774;p=pspp-builds.git diff --git a/src/ui/gui/data-editor.c b/src/ui/gui/data-editor.c index d75ea5c9..d6cf50b3 100644 --- a/src/ui/gui/data-editor.c +++ b/src/ui/gui/data-editor.c @@ -494,17 +494,27 @@ new_data_editor (void) G_CALLBACK (reference_manual), e->window); - g_signal_connect (get_widget_assert (de->xml,"data_sheet"), + g_signal_connect (data_sheet, "double-click-column", G_CALLBACK (click2column), de); - g_signal_connect (get_widget_assert (de->xml, "variable_sheet"), + g_signal_connect (data_sheet, + "select-row", + GTK_SIGNAL_FUNC (enable_edit_clear), + de); + + g_signal_connect (data_sheet, + "activate", + GTK_SIGNAL_FUNC (disable_edit_clear), + de); + + g_signal_connect (var_sheet, "double-click-row", GTK_SIGNAL_FUNC (click2row), de); - g_signal_connect (get_widget_assert (de->xml, "variable_sheet"), + g_signal_connect (var_sheet, "select-row", GTK_SIGNAL_FUNC (enable_edit_clear), de); @@ -844,42 +854,67 @@ file_quit (GtkCheckMenuItem *menuitem, gpointer data) } - /* 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; + GtkSheet *sheet = NULL; + GtkSheetRange range ; + GtkNotebook *notebook = GTK_NOTEBOOK (get_widget_assert (de->xml, "notebook")); - switch ( gtk_notebook_get_current_page (notebook) ) + const gint page = gtk_notebook_get_current_page (notebook); + + sheet = GTK_SHEET + (get_widget_assert (de->xml, + (page == PAGE_VAR_SHEET) ? "variable_sheet" : "data_sheet")); + + /* This shouldn't be able to happen, because the menuitem + should be disabled */ + g_return_if_fail (gtk_sheet_get_state (sheet) == GTK_SHEET_ROW_SELECTED ); + + + gtk_sheet_get_selected_range (sheet, &range); + + switch ( page ) { 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) ); + (gtk_sheet_get_model (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, + range.row0, 1 + - var_sheet->range.rowi - - var_sheet->range.row0 ); + range.rowi - + range.row0 ); + } + break; + case PAGE_DATA_SHEET: + { + PsppireDataStore *data_store = PSPPIRE_DATA_STORE + (gtk_sheet_get_model (sheet) ); + + + /* This shouldn't be able to happen, because the menuitem + should be disabled */ + g_return_if_fail (gtk_sheet_get_state (sheet) + == GTK_SHEET_ROW_SELECTED ); + + + psppire_data_store_delete_cases (data_store, range.row0, + 1 + range.rowi - range.row0); } break; - case PAGE_DATA_SHEET: - break; - default: - g_assert_not_reached (); + default: + g_assert_not_reached (); } + + gtk_sheet_unselect_range (sheet); } static void