Added egression dialog
[pspp-builds.git] / src / ui / gui / data-editor.c
index 2007c7bbc01c3ba5a06325cda1410b410a33e45b..96f42cc263982657d54bbcfe490711ff8fe63b0c 100644 (file)
@@ -44,7 +44,9 @@
 #include "descriptives-dialog.h"
 #include "crosstabs-dialog.h"
 #include "frequencies-dialog.h"
+#include "examine-dialog.h"
 #include "dict-display.h"
+#include "regression-dialog.h"
 #include "clipboard.h"
 
 #include "oneway-anova-dialog.h"
@@ -721,6 +723,25 @@ new_data_editor (void)
                    G_CALLBACK (crosstabs_dialog), de);
 
 
+  de->invoke_examine_dialog =
+    gtk_action_new ("examine-dialog",
+                   _("_Explore"),
+                   _("Examine Data by Factors"),
+                   "pspp-examine");
+
+  g_signal_connect (de->invoke_examine_dialog, "activate",
+                   G_CALLBACK (examine_dialog), de);
+
+
+  de->invoke_regression_dialog =
+    gtk_action_new ("regression-dialog",
+                   _("Linear _Regression"),
+                   _("Estimate parameters of the linear model"),
+                   "pspp-regression");
+
+  g_signal_connect (de->invoke_regression_dialog, "activate",
+                   G_CALLBACK (regression_dialog), de);
+
   e->window = GTK_WINDOW (get_widget_assert (de->xml, "data_editor"));
 
   g_signal_connect_swapped (get_widget_assert (de->xml,"file_new_data"),
@@ -886,6 +907,15 @@ new_data_editor (void)
                            get_widget_assert (de->xml, "analyze_frequencies")
                            );
 
+
+  gtk_action_connect_proxy (de->invoke_examine_dialog,
+                           get_widget_assert (de->xml, "analyze_explore")
+                           );
+
+  gtk_action_connect_proxy (de->invoke_regression_dialog,
+                           get_widget_assert (de->xml, "linear-regression")
+                           );
+
   g_signal_connect (get_widget_assert (de->xml,"help_about"),
                    "activate",
                    G_CALLBACK (about_new),
@@ -1768,6 +1798,7 @@ open_data_dialog (GtkAction *action, struct data_editor *de)
 static gint
 update_data_ref_entry (const GtkSheet *sheet, gint row, gint col, gpointer data)
 {
+  GtkEntry *datum_entry;
   GladeXML *data_editor_xml = data;
 
   PsppireDataStore *data_store =
@@ -1775,6 +1806,11 @@ update_data_ref_entry (const GtkSheet *sheet, gint row, gint col, gpointer data)
 
   g_return_val_if_fail (data_editor_xml, FALSE);
 
+
+  datum_entry =
+    GTK_ENTRY (get_widget_assert (data_editor_xml,
+                                 "datum_entry"));
+
   if (data_store)
     {
       const struct variable *var =
@@ -1784,10 +1820,6 @@ update_data_ref_entry (const GtkSheet *sheet, gint row, gint col, gpointer data)
       GtkEntry *cell_ref_entry =
        GTK_ENTRY (get_widget_assert (data_editor_xml,
                                      "cell_ref_entry"));
-      GtkEntry *datum_entry =
-       GTK_ENTRY (get_widget_assert (data_editor_xml,
-                                     "datum_entry"));
-
       if ( var )
        {
          gchar *text = g_strdup_printf ("%d: %s", row + FIRST_CASE_NUMBER,
@@ -1802,14 +1834,17 @@ update_data_ref_entry (const GtkSheet *sheet, gint row, gint col, gpointer data)
          g_free (s);
        }
       else
-       gtk_entry_set_text (cell_ref_entry, "");
-
+       goto blank_entry;
 
       if ( var )
        {
          gchar *text =
            psppire_data_store_get_string (data_store, row,
                                           var_get_dict_index(var));
+
+         if ( ! text )
+           goto blank_entry;
+
          g_strchug (text);
 
          gtk_entry_set_text (datum_entry, text);
@@ -1817,10 +1852,16 @@ update_data_ref_entry (const GtkSheet *sheet, gint row, gint col, gpointer data)
          free (text);
        }
       else
-       gtk_entry_set_text (datum_entry, "");
+       goto blank_entry;
+
     }
 
   return FALSE;
+
+ blank_entry:
+  gtk_entry_set_text (datum_entry, "");
+
+  return FALSE;
 }