/* PSPPIRE - a graphical user interface for PSPP.
- Copyright (C) 2008 Free Software Foundation
+ Copyright (C) 2008, 2010, 2011, 2012 Free Software Foundation
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
#include <gtk/gtk.h>
#include <stdlib.h>
-#include <language/syntax-string-source.h>
#include <ui/gui/psppire-data-window.h>
#include <ui/gui/dialog-common.h>
#include <ui/gui/dict-display.h>
+#include <ui/gui/builder-wrapper.h>
#include <ui/gui/helper.h>
#include <ui/gui/psppire-dialog.h>
#include <ui/gui/psppire-var-store.h>
#define N_(msgid) msgid
-#define REGRESSION_STATS \
+#define REGRESSION_STATS \
RG (COEFF, N_("Coeff")) \
- RG (R, N_("R")) \
- RG (ANOVA, N_("Anova")) \
+ RG (R, N_("R")) \
+ RG (ANOVA, N_("Anova")) \
RG (BCOV, N_("Bcov"))
enum
{
GtkWidget *save_dialog;
GtkWidget *stat_view;
- GtkTreeModel *stat;
struct save_options current_opts;
};
static void
on_statistics_clicked (struct regression_dialog *rd)
{
- GtkListStore *liststore;
int ret;
+ GtkTreeModel *model = gtk_tree_view_get_model (GTK_TREE_VIEW (rd->stat_view));
- liststore = clone_list_store (GTK_LIST_STORE (rd->stat));
+ /* Take a backup copy of the existing model */
+ GtkListStore *backup_model = clone_list_store (GTK_LIST_STORE (model));
ret = psppire_dialog_run (PSPPIRE_DIALOG (rd->stat_dialog));
- if ( ret == PSPPIRE_RESPONSE_CONTINUE )
- {
- g_object_unref (liststore);
- }
- else
+ if ( ret != PSPPIRE_RESPONSE_CONTINUE )
{
- g_object_unref (rd->stat);
- gtk_tree_view_set_model (GTK_TREE_VIEW (rd->stat_view) , GTK_TREE_MODEL (liststore));
- rd->stat = GTK_TREE_MODEL (liststore);
+ /* If the user chose to abandon his changes, then replace the model, from the backup */
+ gtk_tree_view_set_model (GTK_TREE_VIEW (rd->stat_view) , GTK_TREE_MODEL (backup_model));
}
+ g_object_unref (backup_model);
}
static void
gchar *text;
GString *string = g_string_new ("REGRESSION");
+ GtkTreeModel *model = gtk_tree_view_get_model (GTK_TREE_VIEW (rd->stat_view));
+
g_string_append (string, "\n\t/VARIABLES=");
psppire_var_view_append_names (PSPPIRE_VAR_VIEW (rd->indep_vars), 0, string);
g_string_append (string, "\n\t/DEPENDENT=\t");
psppire_var_view_append_names (PSPPIRE_VAR_VIEW (rd->dep_vars), 0, string);
selected = 0;
- for (i = 0, ok = gtk_tree_model_get_iter_first (rd->stat, &iter); ok;
- i++, ok = gtk_tree_model_iter_next (rd->stat, &iter))
+ for (i = 0, ok = gtk_tree_model_get_iter_first (model, &iter); ok;
+ i++, ok = gtk_tree_model_iter_next (model, &iter))
{
gboolean toggled;
- gtk_tree_model_get (rd->stat, &iter,
+ gtk_tree_model_get (model, &iter,
CHECKBOX_COLUMN_SELECTED, &toggled, -1);
if (toggled)
selected |= 1u << i;
/* Pops up the Regression dialog box */
void
-regression_dialog (GObject *o, gpointer data)
+regression_dialog (PsppireDataWindow *de)
{
gint response;
struct regression_dialog rd;
GtkBuilder *xml = builder_new ("regression.ui");
- PsppireDataWindow *de = PSPPIRE_DATA_WINDOW (data);
PsppireVarStore *vs;
GtkWidget *dialog = get_widget_assert (xml, "regression-dialog");
GtkWidget *stat_button = get_widget_assert (xml, "stat-button");
GtkWidget *save_button = get_widget_assert (xml, "save-button");
+ GtkWidget *dep_selector = get_widget_assert (xml, "dep-selector");
rd.stat_view = get_widget_assert (xml, "stat-view");
rd.dep_vars = GTK_TREE_VIEW (dest_dep);
rd.indep_vars = GTK_TREE_VIEW (dest_indep);
+ psppire_selector_set_allow (PSPPIRE_SELECTOR (dep_selector), numeric_only);
rd.save_dialog = get_widget_assert (xml, "save-dialog");
rd.pred_button = GTK_TOGGLE_BUTTON (get_widget_assert (xml, "pred-button"));
rd.resid_button = GTK_TOGGLE_BUTTON (get_widget_assert (xml, "resid-button"));
rd.stat_dialog = get_widget_assert (xml, "statistics-dialog");
- rd.stat = gtk_tree_view_get_model (GTK_TREE_VIEW (rd.stat_view));
rd.current_opts.pred = FALSE;
rd.current_opts.resid = FALSE;
switch (response)
{
case GTK_RESPONSE_OK:
- {
- gchar *syntax = generate_syntax (&rd);
-
- struct getl_interface *sss = create_syntax_string_source (syntax);
- execute_syntax (sss);
-
- g_free (syntax);
- }
+ g_free (execute_syntax_string (de, generate_syntax (&rd)));
break;
case PSPPIRE_RESPONSE_PASTE:
- {
- gchar *syntax = generate_syntax (&rd);
- paste_syntax_in_new_window (syntax);
-
- g_free (syntax);
- }
+ g_free (paste_syntax_to_window (generate_syntax (&rd)));
break;
default:
break;