pspp-cvs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Pspp-cvs] pspp lib/gtksheet/gtksheet.c src/ui/gui/data-ed...


From: John Darrington
Subject: [Pspp-cvs] pspp lib/gtksheet/gtksheet.c src/ui/gui/data-ed...
Date: Wed, 18 Jul 2007 04:27:30 +0000

CVSROOT:        /sources/pspp
Module name:    pspp
Changes by:     John Darrington <jmd>   07/07/18 04:27:30

Modified files:
        lib/gtksheet   : gtksheet.c 
        src/ui/gui     : data-editor.c data-editor.glade data-editor.h 
                         psppire-case-file.c 

Log message:
        Enabled deleting of variables from the datasheet

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/pspp/lib/gtksheet/gtksheet.c?cvsroot=pspp&r1=1.25&r2=1.26
http://cvs.savannah.gnu.org/viewcvs/pspp/src/ui/gui/data-editor.c?cvsroot=pspp&r1=1.38&r2=1.39
http://cvs.savannah.gnu.org/viewcvs/pspp/src/ui/gui/data-editor.glade?cvsroot=pspp&r1=1.24&r2=1.25
http://cvs.savannah.gnu.org/viewcvs/pspp/src/ui/gui/data-editor.h?cvsroot=pspp&r1=1.15&r2=1.16
http://cvs.savannah.gnu.org/viewcvs/pspp/src/ui/gui/psppire-case-file.c?cvsroot=pspp&r1=1.26&r2=1.27

Patches:
Index: lib/gtksheet/gtksheet.c
===================================================================
RCS file: /sources/pspp/pspp/lib/gtksheet/gtksheet.c,v
retrieving revision 1.25
retrieving revision 1.26
diff -u -b -r1.25 -r1.26
--- lib/gtksheet/gtksheet.c     16 Jul 2007 11:18:09 -0000      1.25
+++ lib/gtksheet/gtksheet.c     18 Jul 2007 04:27:29 -0000      1.26
@@ -4754,6 +4754,7 @@
 {
   gtk_sheet_real_unselect_range (sheet, NULL);
   sheet->state = GTK_STATE_NORMAL;
+
   gtk_sheet_activate_cell (sheet,
                           sheet->active_cell.row, sheet->active_cell.col);
 }
@@ -4772,6 +4773,9 @@
   if (range->row0 < 0 || range->rowi < 0) return;
   if (range->col0 < 0 || range->coli < 0) return;
 
+  g_signal_emit (G_OBJECT (sheet), sheet_signals[SELECT_COLUMN], 0, -1);
+  g_signal_emit (G_OBJECT (sheet), sheet_signals[SELECT_ROW], 0, -1);
+
   if (gtk_sheet_range_isvisible (sheet, *range))
     gtk_sheet_draw_backing_pixmap (sheet, *range);
 

Index: src/ui/gui/data-editor.c
===================================================================
RCS file: /sources/pspp/pspp/src/ui/gui/data-editor.c,v
retrieving revision 1.38
retrieving revision 1.39
diff -u -b -r1.38 -r1.39
--- src/ui/gui/data-editor.c    16 Jul 2007 05:07:02 -0000      1.38
+++ src/ui/gui/data-editor.c    18 Jul 2007 04:27:30 -0000      1.39
@@ -58,9 +58,9 @@
 static void register_data_editor_actions (struct data_editor *de);
 
 static void insert_variable (GtkAction *, gpointer data);
-
 static void insert_case (GtkAction *a, gpointer data);
-
+static void delete_cases (GtkAction *a, gpointer data);
+static void delete_variables (GtkAction *a, gpointer data);
 
 
 /* Switch between the VAR SHEET and the DATA SHEET */
@@ -99,30 +99,24 @@
 
 static void file_quit (GtkCheckMenuItem *, gpointer );
 
-static void on_clear_activate (GtkMenuItem *, gpointer);
-
 static void
-enable_edit_clear (GtkWidget *w, gint row, gpointer data)
+enable_delete_cases (GtkWidget *w, gint var, gpointer data)
 {
   struct data_editor *de = data;
 
-  GtkWidget *menuitem = get_widget_assert (de->xml, "edit_clear");
-
-  gtk_widget_set_sensitive (menuitem, TRUE);
+  gtk_action_set_visible (de->delete_cases, var != -1);
 }
 
-static gboolean
-disable_edit_clear (GtkWidget *w, gint x, gint y, gpointer data)
+
+static void
+enable_delete_variables (GtkWidget *w, gint var, gpointer data)
 {
   struct data_editor *de = data;
 
-  GtkWidget *menuitem = get_widget_assert (de->xml, "edit_clear");
-
-  gtk_widget_set_sensitive (menuitem, FALSE);
-
-  return FALSE;
+  gtk_action_set_visible (de->delete_variables, var != -1);
 }
 
+
 static void open_data_file (const gchar *, struct data_editor *);
 
 
@@ -241,6 +235,37 @@
 
   register_data_editor_actions (de);
 
+
+  de->delete_cases =
+    gtk_action_new ("clear-cases",
+                   _("Clear"),
+                   _("Delete the cases at the selected position(s)"),
+                   "pspp-clear-cases");
+
+  g_signal_connect (de->delete_cases, "activate",
+                   G_CALLBACK (delete_cases), de);
+
+  gtk_action_connect_proxy (de->delete_cases,
+                           get_widget_assert (de->xml, "edit_clear-cases"));
+
+
+  gtk_action_set_visible (de->delete_cases, FALSE);
+
+  de->delete_variables =
+    gtk_action_new ("clear-variables",
+                   _("Clear"),
+                   _("Delete the variables at the selected position(s)"),
+                   "pspp-clear-variables");
+
+  g_signal_connect (de->delete_variables, "activate",
+                   G_CALLBACK (delete_variables), de);
+
+  gtk_action_connect_proxy (de->delete_variables,
+                           get_widget_assert (de->xml, "edit_clear-variables")
+                           );
+
+  gtk_action_set_visible (de->delete_variables, FALSE);
+
   de->insert_variable =
     gtk_action_new ("insert-variable",
                    _("Insert Variable"),
@@ -447,14 +472,6 @@
                            G_CALLBACK (gtk_action_activate),
                            de->action_data_save_as);
 
-
-  g_signal_connect (get_widget_assert (de->xml,"edit_clear"),
-                   "activate",
-                   G_CALLBACK (on_clear_activate),
-                   de);
-
-
-
   gtk_action_connect_proxy (de->invoke_weight_cases_dialog,
                            get_widget_assert (de->xml, "data_weight-cases")
                            );
@@ -500,31 +517,26 @@
                    de);
 
   g_signal_connect (data_sheet,
-                   "select-row",
-                   GTK_SIGNAL_FUNC (enable_edit_clear),
+                   "select-column",
+                   G_CALLBACK (enable_delete_variables),
                    de);
 
   g_signal_connect (data_sheet,
-                   "activate",
-                   GTK_SIGNAL_FUNC (disable_edit_clear),
+                   "select-row",
+                   G_CALLBACK (enable_delete_cases),
                    de);
 
+
   g_signal_connect (var_sheet,
                    "double-click-row",
                    GTK_SIGNAL_FUNC (click2row),
                    de);
 
-  g_signal_connect (var_sheet,
+  g_signal_connect_after (var_sheet,
                    "select-row",
-                   GTK_SIGNAL_FUNC (enable_edit_clear),
+                   G_CALLBACK (enable_delete_variables),
                    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);
@@ -853,28 +865,48 @@
   gtk_main_quit ();
 }
 
-
-/* Callback for when the Clear item in the edit menu is activated */
 static void
-on_clear_activate (GtkMenuItem *menuitem, gpointer data)
+delete_cases (GtkAction *action, gpointer data)
 {
   struct data_editor *de = data;
+  GtkSheet *data_sheet =
+    GTK_SHEET (get_widget_assert (de->xml, "data_sheet"));
+
+  GtkSheetRange range;
+
+  PsppireDataStore *data_store = PSPPIRE_DATA_STORE
+    (gtk_sheet_get_model (data_sheet) );
+
+
+  /* This shouldn't be able to happen, because the action
+     should be disabled */
+  g_return_if_fail (gtk_sheet_get_state (data_sheet)
+                   ==  GTK_SHEET_ROW_SELECTED );
 
-  GtkSheet *sheet  = NULL;
-  GtkSheetRange range ;
+  gtk_sheet_get_selected_range (data_sheet, &range);
+
+  gtk_sheet_unselect_range (data_sheet);
+
+  psppire_data_store_delete_cases (data_store, range.row0,
+                                  1 + range.rowi - range.row0);
+
+}
+
+static void
+delete_variables (GtkAction *a, gpointer data)
+{
+  struct data_editor *de = data;
+  GtkSheetRange range;
 
   GtkNotebook *notebook = GTK_NOTEBOOK (get_widget_assert (de->xml,
                                                           "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 );
+  GtkSheet *sheet = GTK_SHEET (get_widget_assert (de->xml,
+                                                 (page == PAGE_VAR_SHEET) ?
+                                                 "variable_sheet" :
+                                                 "data_sheet"));
 
 
   gtk_sheet_get_selected_range (sheet, &range);
@@ -883,9 +915,8 @@
     {
     case PAGE_VAR_SHEET:
       {
-       PsppireVarStore *vs = PSPPIRE_VAR_STORE
-         (gtk_sheet_get_model (sheet) );
-
+       PsppireVarStore *vs =
+         PSPPIRE_VAR_STORE (gtk_sheet_get_model (sheet));
 
        psppire_dict_delete_variables (vs->dict,
                                       range.row0,
@@ -896,23 +927,17 @@
       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 );
-
+       PsppireDataStore *ds =
+         PSPPIRE_DATA_STORE (gtk_sheet_get_model (sheet));
 
-       psppire_data_store_delete_cases (data_store, range.row0,
-                                        1 + range.rowi - range.row0);
+       psppire_dict_delete_variables (ds->dict,
+                                      range.col0,
+                                      1 +
+                                      range.coli -
+                                      range.col0 );
       }
       break;
-    default:
-      g_assert_not_reached ();
-    }
+    };
 
   gtk_sheet_unselect_range (sheet);
 }

Index: src/ui/gui/data-editor.glade
===================================================================
RCS file: /sources/pspp/pspp/src/ui/gui/data-editor.glade,v
retrieving revision 1.24
retrieving revision 1.25
diff -u -b -r1.24 -r1.25
--- src/ui/gui/data-editor.glade        10 Jul 2007 06:38:09 -0000      1.24
+++ src/ui/gui/data-editor.glade        18 Jul 2007 04:27:30 -0000      1.25
@@ -169,10 +169,18 @@
                       </widget>
                     </child>
                     <child>
-                      <widget class="GtkMenuItem" id="edit_clear">
+                      <widget class="GtkMenuItem" id="edit_clear-variables">
                         <property name="visible">True</property>
                         <property name="sensitive">False</property>
-                        <property name="label" 
translatable="yes">Cl_ear</property>
+                        <property name="label" translatable="yes">Cl_ear 
Variables</property>
+                        <property name="use_underline">True</property>
+                      </widget>
+                   </child>
+                    <child>
+                      <widget class="GtkMenuItem" id="edit_clear-cases">
+                        <property name="visible">True</property>
+                        <property name="sensitive">False</property>
+                        <property name="label" translatable="yes">_Clear 
Cases</property>
                         <property name="use_underline">True</property>
                       </widget>
                     </child>

Index: src/ui/gui/data-editor.h
===================================================================
RCS file: /sources/pspp/pspp/src/ui/gui/data-editor.h,v
retrieving revision 1.15
retrieving revision 1.16
diff -u -b -r1.15 -r1.16
--- src/ui/gui/data-editor.h    9 Jul 2007 05:21:12 -0000       1.15
+++ src/ui/gui/data-editor.h    18 Jul 2007 04:27:30 -0000      1.16
@@ -43,6 +43,9 @@
   GtkAction *insert_variable;
   GtkAction *insert_case;
 
+  GtkAction *delete_variables;
+  GtkAction *delete_cases;
+
   GladeXML *xml;
 
   gboolean save_as_portable;

Index: src/ui/gui/psppire-case-file.c
===================================================================
RCS file: /sources/pspp/pspp/src/ui/gui/psppire-case-file.c,v
retrieving revision 1.26
retrieving revision 1.27
diff -u -b -r1.26 -r1.27
--- src/ui/gui/psppire-case-file.c      18 Jul 2007 00:50:59 -0000      1.26
+++ src/ui/gui/psppire-case-file.c      18 Jul 2007 04:27:30 -0000      1.27
@@ -171,7 +171,7 @@
 
   datasheet_delete_rows (cf->datasheet, first, n_cases);
 
-  g_signal_emit (cf, signals [CASES_DELETED], 0, n_cases, first);
+  g_signal_emit (cf, signals [CASES_DELETED], 0, first, n_cases);
 
   return TRUE;
 }




reply via email to

[Prev in Thread] Current Thread [Next in Thread]