X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;ds=sidebyside;f=src%2Fui%2Fgui%2Fpsppire-data-window.c;h=f6bd2efbd979b1063f745bc709129c4b1c3b674c;hb=7feca807d355556bc24234cd4742d5460f070201;hp=4e8d41a821a1aa5fe9cc45fa47b3f4d6efc54b3f;hpb=3255c12b6a9c2f4217d6df0649556d8e45c954ed;p=pspp diff --git a/src/ui/gui/psppire-data-window.c b/src/ui/gui/psppire-data-window.c index 4e8d41a821..f6bd2efbd9 100644 --- a/src/ui/gui/psppire-data-window.c +++ b/src/ui/gui/psppire-data-window.c @@ -51,7 +51,6 @@ #include "ui/gui/runs-dialog.h" #include "ui/gui/ks-one-sample-dialog.h" #include "ui/gui/recode-dialog.h" -#include "ui/gui/regression-dialog.h" #include "ui/gui/select-cases-dialog.h" #include "ui/gui/split-file-dialog.h" #include "ui/gui/t-test-one-sample.h" @@ -80,6 +79,7 @@ static void psppire_data_window_init (PsppireDataWindow *data_edit static void psppire_data_window_iface_init (PsppireWindowIface *iface); static void psppire_data_window_dispose (GObject *object); +static void psppire_data_window_finalize (GObject *object); static void psppire_data_window_set_property (GObject *object, guint prop_id, const GValue *value, @@ -143,6 +143,7 @@ psppire_data_window_class_init (PsppireDataWindowClass *class) parent_class = g_type_class_peek_parent (class); object_class->dispose = psppire_data_window_dispose; + object_class->finalize = psppire_data_window_finalize; object_class->set_property = psppire_data_window_set_property; object_class->get_property = psppire_data_window_get_property; @@ -952,6 +953,7 @@ psppire_data_window_finish_init (PsppireDataWindow *de, de->dataset = ds; dict = psppire_dict_new_from_dict (dataset_dict (ds)); de->var_store = psppire_var_store_new (dict); + g_object_unref (dict); de->data_store = psppire_data_store_new (dict); psppire_data_store_set_reader (de->data_store, NULL); @@ -1072,7 +1074,6 @@ psppire_data_window_finish_init (PsppireDataWindow *de, connect_action (de, "transform_recode-different", G_CALLBACK (recode_different_dialog)); connect_action (de, "analyze_frequencies", G_CALLBACK (frequencies_dialog)); connect_action (de, "crosstabs", G_CALLBACK (crosstabs_dialog)); - connect_action (de, "linear-regression", G_CALLBACK (regression_dialog)); connect_action (de, "univariate", G_CALLBACK (univariate_dialog)); connect_action (de, "chi-square", G_CALLBACK (chisquare_dialog)); connect_action (de, "binomial", G_CALLBACK (binomial_dialog)); @@ -1242,6 +1243,27 @@ psppire_data_window_dispose (GObject *object) G_OBJECT_CLASS (parent_class)->dispose (object); } +static void +psppire_data_window_finalize (GObject *object) +{ + PsppireDataWindow *dw = PSPPIRE_DATA_WINDOW (object); + + if (dw->dataset) + { + struct dataset *dataset = dw->dataset; + struct session *session = dataset_session (dataset); + + dw->dataset = NULL; + + dataset_set_callbacks (dataset, NULL, NULL); + session_set_active_dataset (session, NULL); + dataset_destroy (dataset); + } + + if (G_OBJECT_CLASS (parent_class)->finalize) + G_OBJECT_CLASS (parent_class)->finalize (object); +} + static void psppire_data_window_set_property (GObject *object, guint prop_id, @@ -1290,10 +1312,7 @@ psppire_data_window_new (struct dataset *ds) if (ds == NULL) { - static int n_datasets; - char *dataset_name; - - dataset_name = xasprintf ("DataSet%d", ++n_datasets); + char *dataset_name = session_generate_dataset_name (the_session); ds = dataset_create (the_session, dataset_name); free (dataset_name); }