-
-/* Popup menu related stuff */
-
-static void
-popup_variable_column_menu (PsppireSheet *sheet, gint column,
- GdkEventButton *event, gpointer data)
-{
- GtkMenu *menu = GTK_MENU (data);
-
- PsppireDataStore *data_store =
- PSPPIRE_DATA_STORE (psppire_sheet_get_model (sheet));
-
- const struct variable *v =
- psppire_dict_get_variable (data_store->dict, column);
-
- if ( v && event->button == 3)
- {
- psppire_sheet_select_column (sheet, column);
-
- gtk_menu_popup (menu,
- NULL, NULL, NULL, NULL,
- event->button, event->time);
- }
-}
-
-
-static void
-popup_variable_row_menu (PsppireSheet *sheet, gint row,
- GdkEventButton *event, gpointer data)
-{
- GtkMenu *menu = GTK_MENU (data);
-
- PsppireVarStore *var_store =
- PSPPIRE_VAR_STORE (psppire_sheet_get_model (sheet));
-
- PsppireDict *dict;
- const struct variable *v ;
-
- g_object_get (var_store, "dictionary", &dict, NULL);
-
- v = psppire_dict_get_variable (dict, row);
-
- if ( v && event->button == 3)
- {
- psppire_sheet_select_row (sheet, row);
-
- gtk_menu_popup (menu,
- NULL, NULL, NULL, NULL,
- event->button, event->time);
- }
-}
-
-
-static void
-popup_cases_menu (PsppireSheet *sheet, gint row,
- GdkEventButton *event, gpointer data)
-{
- GtkMenu *menu = GTK_MENU (data);
-
- PsppireDataStore *data_store =
- PSPPIRE_DATA_STORE (psppire_sheet_get_model (sheet));
-
- if ( row <= psppire_data_store_get_case_count (data_store) &&
- event->button == 3)
- {
- psppire_sheet_select_row (sheet, row);
-
- gtk_menu_popup (menu,
- NULL, NULL, NULL, NULL,
- event->button, event->time);
- }
-}
-
-\f
-
-/* Sorting */
-
-static void
-do_sort (PsppireDataStore *ds, int var, gboolean descend)
-{
- GString *string = g_string_new ("SORT CASES BY ");
-
- const struct variable *v =
- psppire_dict_get_variable (ds->dict, var);
-
- g_string_append_printf (string, "%s", var_get_name (v));
-
- if ( descend )
- g_string_append (string, " (D)");
-
- g_string_append (string, ".");
-
- execute_syntax (create_syntax_string_source (string->str));
-
- g_string_free (string, TRUE);
-}
-
-
-/* Sort the data by the the variable which the editor has currently
- selected */
-void
-psppire_data_editor_sort_ascending (PsppireDataEditor *de)
-{
- PsppireSheetRange range;
- psppire_sheet_get_selected_range (PSPPIRE_SHEET(de->data_sheet[0]), &range);
-
- do_sort (de->data_store, range.col0, FALSE);
-}
-
-
-/* Sort the data by the the variable which the editor has currently
- selected */
-void
-psppire_data_editor_sort_descending (PsppireDataEditor *de)
-{
- PsppireSheetRange range;
- psppire_sheet_get_selected_range (PSPPIRE_SHEET(de->data_sheet[0]), &range);
-
- do_sort (de->data_store, range.col0, TRUE);
-}
-
-
-\f
-
-
-/* Insert a new variable before the currently selected position */
-void
-psppire_data_editor_insert_variable (PsppireDataEditor *de)
-{
- glong posn = 0;
-
- switch (gtk_notebook_get_current_page (GTK_NOTEBOOK (de)))
- {
- case PSPPIRE_DATA_EDITOR_DATA_VIEW:
- if ( PSPPIRE_SHEET (de->data_sheet[0])->select_status
- == PSPPIRE_SHEET_COLUMN_SELECTED )
- posn = PSPPIRE_SHEET (de->data_sheet[0])->range.col0;
- else
- posn = PSPPIRE_SHEET (de->data_sheet[0])->active_cell.col;
- break;
- case PSPPIRE_DATA_EDITOR_VARIABLE_VIEW:
- if ( PSPPIRE_SHEET (de->var_sheet)->select_status
- == PSPPIRE_SHEET_ROW_SELECTED )
- posn = PSPPIRE_SHEET (de->var_sheet)->range.row0;
- else
- posn = PSPPIRE_SHEET (de->var_sheet)->active_cell.row;
- break;
- default:
- g_assert_not_reached ();
- break;
- };
-
- psppire_dict_insert_variable (de->data_store->dict, posn, NULL);
-}
-
-/* Insert a new case before the currently selected position */
-void
-psppire_data_editor_insert_case (PsppireDataEditor *de)
-{
- glong posn = -1;
-
- if ( PSPPIRE_SHEET (de->data_sheet[0])->select_status == PSPPIRE_SHEET_ROW_SELECTED )
- {
- posn = PSPPIRE_SHEET (de->data_sheet[0])->range.row0;
- }
- else
- {
- posn = PSPPIRE_SHEET (de->data_sheet[0])->active_cell.row;
- }
-
- if ( posn == -1 ) posn = 0;
-
- psppire_data_store_insert_new_case (de->data_store, posn);
-}
-
-/* Delete the cases currently selected in the data sheet */
-void
-psppire_data_editor_delete_cases (PsppireDataEditor *de)
-{
- gint first = PSPPIRE_SHEET (de->data_sheet[0])->range.row0;
- gint n = PSPPIRE_SHEET (de->data_sheet[0])->range.rowi - first + 1;
-
- psppire_data_store_delete_cases (de->data_store, first, n);
-
- psppire_sheet_unselect_range (PSPPIRE_SHEET (de->data_sheet[0]));
-}
-
-/* Delete the variables currently selected in the
- datasheet or variable sheet */
-void
-psppire_data_editor_delete_variables (PsppireDataEditor *de)
-{
- PsppireDict *dict = NULL;
- gint first, n;
-
- switch (gtk_notebook_get_current_page (GTK_NOTEBOOK (de)))
- {
- case PSPPIRE_DATA_EDITOR_DATA_VIEW:
- first = PSPPIRE_SHEET (de->data_sheet[0])->range.col0;
- n = PSPPIRE_SHEET (de->data_sheet[0])->range.coli - first + 1;
- break;
- case PSPPIRE_DATA_EDITOR_VARIABLE_VIEW:
- first = PSPPIRE_SHEET (de->var_sheet)->range.row0;
- n = PSPPIRE_SHEET (de->var_sheet)->range.rowi - first + 1;
- break;
- default:
- g_assert_not_reached ();
- break;
- }
-
- g_object_get (de->var_store, "dictionary", &dict, NULL);
-
- psppire_dict_delete_variables (dict, first, n);
-
- psppire_sheet_unselect_range (PSPPIRE_SHEET (de->data_sheet[0]));
- psppire_sheet_unselect_range (PSPPIRE_SHEET (de->var_sheet));
-}
-
-