X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fui%2Fgui%2Fdata-editor.c;h=96f42cc263982657d54bbcfe490711ff8fe63b0c;hb=4d688b2e05945b3e3c733a005fb2775110ebb78b;hp=a69b7e665ec7721c3e483c8eacaf3fb8d4bcf59e;hpb=c86f5b8a45cca158b46a4fe3b48280e88ce9aba1;p=pspp-builds.git diff --git a/src/ui/gui/data-editor.c b/src/ui/gui/data-editor.c index a69b7e66..96f42cc2 100644 --- a/src/ui/gui/data-editor.c +++ b/src/ui/gui/data-editor.c @@ -42,13 +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 @@ -612,6 +616,26 @@ 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"), + _("Calculate T Test for sample from a single distribution"), + NULL); + + g_signal_connect (de->invoke_t_test_one_sample_dialog, "activate", + G_CALLBACK (t_test_one_sample_dialog), de); + + de->invoke_comments_dialog = gtk_action_new ("commments-dialog", _("Data File Comments"), @@ -689,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")); @@ -702,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 (); @@ -818,6 +869,18 @@ 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") + ); + + gtk_action_connect_proxy (de->invoke_oneway_anova_dialog, get_widget_assert (de->xml, "oneway-anova") @@ -836,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), @@ -1167,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) @@ -1174,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 (); } @@ -1720,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 = @@ -1727,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 = @@ -1736,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, @@ -1754,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); @@ -1769,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; }