#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};
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.
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"),
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),
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);
data_editor_select_sheet (de, PAGE_DATA_SHEET);
- gtk_sheet_get_active_cell (GTK_SHEET(data_sheet),
+ gtk_sheet_get_active_cell (GTK_SHEET (data_sheet),
¤t_row, ¤t_column);
- gtk_sheet_set_active_cell (GTK_SHEET(data_sheet), current_row, row);
+ gtk_sheet_set_active_cell (GTK_SHEET (data_sheet), current_row, row);
return FALSE;
}
data_editor_select_sheet (de, PAGE_VAR_SHEET);
- gtk_sheet_get_active_cell (GTK_SHEET(var_sheet),
+ gtk_sheet_get_active_cell (GTK_SHEET (var_sheet),
¤t_row, ¤t_column);
- gtk_sheet_set_active_cell (GTK_SHEET(var_sheet), col, current_column);
+ gtk_sheet_set_active_cell (GTK_SHEET (var_sheet), col, current_column);
return FALSE;
}
gtk_file_filter_set_name (filter, _("System Files (*.sav)"));
gtk_file_filter_add_pattern (filter, "*.sav");
gtk_file_filter_add_pattern (filter, "*.SAV");
- gtk_file_chooser_add_filter (GTK_FILE_CHOOSER(dialog), filter);
+ gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (dialog), filter);
filter = gtk_file_filter_new ();
gtk_file_filter_set_name (filter, _("Portable Files (*.por) "));
gtk_file_filter_add_pattern (filter, "*.por");
gtk_file_filter_add_pattern (filter, "*.POR");
- gtk_file_chooser_add_filter (GTK_FILE_CHOOSER(dialog), filter);
+ gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (dialog), filter);
filter = gtk_file_filter_new ();
gtk_file_filter_set_name (filter, _("All Files"));
gtk_file_filter_add_pattern (filter, "*");
- gtk_file_chooser_add_filter (GTK_FILE_CHOOSER(dialog), filter);
+ gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (dialog), filter);
do {
if ( GTK_RESPONSE_OK == gtk_dialog_run (GTK_DIALOG (dialog)) )
{
GtkSheet *data_sheet =
- GTK_SHEET(get_widget_assert (de->xml, "data_sheet"));
+ GTK_SHEET (get_widget_assert (de->xml, "data_sheet"));
GtkSheet *var_sheet =
- GTK_SHEET(get_widget_assert (de->xml, "variable_sheet"));
+ GTK_SHEET (get_widget_assert (de->xml, "variable_sheet"));
PsppireDataStore *ds = PSPPIRE_DATA_STORE (gtk_sheet_get_model (data_sheet));
PsppireVarStore *vs = PSPPIRE_VAR_STORE (gtk_sheet_get_model (var_sheet));
*/
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 ();
+ }
+}