X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;ds=sidebyside;f=src%2Fui%2Fgui%2Fdata-editor.c;h=96f42cc263982657d54bbcfe490711ff8fe63b0c;hb=4d688b2e05945b3e3c733a005fb2775110ebb78b;hp=cda87a107292ce1c23b09d7978b506d9676eeff4;hpb=3b064b5cce148b1c7d5386553a87cda37913429f;p=pspp-builds.git diff --git a/src/ui/gui/data-editor.c b/src/ui/gui/data-editor.c index cda87a10..96f42cc2 100644 --- a/src/ui/gui/data-editor.c +++ b/src/ui/gui/data-editor.c @@ -42,14 +42,17 @@ #include "comments-dialog.h" #include "variable-info-dialog.h" #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" #include "t-test-independent-samples-dialog.h" #include "t-test-one-sample.h" +#include "t-test-paired-samples.h" #define _(msgid) gettext (msgid) #define N_(msgid) msgid @@ -613,6 +616,16 @@ new_data_editor (void) G_CALLBACK (t_test_independent_samples_dialog), de); + de->invoke_t_test_paired_samples_dialog = + gtk_action_new ("t-test-paired-samples", + _("_Paired Samples T Test"), + _("Calculate T Test for paired samples"), + NULL); + + g_signal_connect (de->invoke_t_test_paired_samples_dialog, "activate", + G_CALLBACK (t_test_paired_samples_dialog), de); + + de->invoke_t_test_one_sample_dialog = gtk_action_new ("t-test-one-sample", _("One _Sample T Test"), @@ -700,6 +713,34 @@ new_data_editor (void) g_signal_connect (de->invoke_frequencies_dialog, "activate", G_CALLBACK (frequencies_dialog), de); + de->invoke_crosstabs_dialog = + gtk_action_new ("crosstabs-dialog", + _("_Crosstabs"), + _("Generate crosstabulations"), + "pspp-crosstabs"); + + g_signal_connect (de->invoke_crosstabs_dialog, "activate", + 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")); @@ -713,7 +754,6 @@ new_data_editor (void) G_CALLBACK (gtk_action_activate), de->action_data_open); - #if RECENT_LISTS_AVAILABLE { GtkRecentManager *rm = gtk_recent_manager_get_default (); @@ -829,6 +869,12 @@ new_data_editor (void) ); + gtk_action_connect_proxy (de->invoke_t_test_paired_samples_dialog, + get_widget_assert (de->xml, + "paired-t-test") + ); + + gtk_action_connect_proxy (de->invoke_t_test_one_sample_dialog, get_widget_assert (de->xml, "one-sample-t-test") @@ -853,10 +899,23 @@ new_data_editor (void) get_widget_assert (de->xml, "analyze_descriptives") ); + gtk_action_connect_proxy (de->invoke_crosstabs_dialog, + get_widget_assert (de->xml, "crosstabs") + ); + gtk_action_connect_proxy (de->invoke_frequencies_dialog, 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), @@ -1184,6 +1243,7 @@ toggle_value_labels (GtkToggleAction *ta, gpointer data) gtk_toggle_action_get_active (ta)); } +extern PsppireDataStore *the_data_store ; static void file_quit (GtkCheckMenuItem *menuitem, gpointer data) @@ -1191,6 +1251,7 @@ file_quit (GtkCheckMenuItem *menuitem, gpointer data) /* FIXME: Need to be more intelligent here. Give the user the opportunity to save any unsaved data. */ + g_object_unref (the_data_store); gtk_main_quit (); } @@ -1737,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 = @@ -1744,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 = @@ -1753,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, @@ -1771,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); @@ -1786,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; }