From: John Darrington Date: Mon, 18 Feb 2008 08:35:27 +0000 (+0000) Subject: Implemented the Examine dialog X-Git-Tag: v0.6.0~113 X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=e8f3c723e255ca91fe94512a809762223e6edcc3;p=pspp-builds.git Implemented the Examine dialog --- diff --git a/src/ui/gui/automake.mk b/src/ui/gui/automake.mk index 12be6283..d5b5ec95 100644 --- a/src/ui/gui/automake.mk +++ b/src/ui/gui/automake.mk @@ -51,6 +51,7 @@ src_ui_gui_psppiredir = $(pkgdatadir) dist_src_ui_gui_psppire_DATA = \ $(top_srcdir)/src/ui/gui/data-editor.glade \ $(top_srcdir)/src/ui/gui/descriptives-dialog.glade \ + $(top_srcdir)/src/ui/gui/examine.glade \ $(top_srcdir)/src/ui/gui/crosstabs.glade \ $(top_srcdir)/src/ui/gui/frequencies.glade \ $(top_srcdir)/src/ui/gui/message-dialog.glade \ @@ -104,6 +105,8 @@ src_ui_gui_psppire_SOURCES = \ src/ui/gui/data-editor.h \ src/ui/gui/descriptives-dialog.c \ src/ui/gui/descriptives-dialog.h \ + src/ui/gui/examine-dialog.c \ + src/ui/gui/examine-dialog.h \ src/ui/gui/find-dialog.c \ src/ui/gui/find-dialog.h \ src/ui/gui/dialog-common.c \ diff --git a/src/ui/gui/data-editor.c b/src/ui/gui/data-editor.c index 318d059f..038b9685 100644 --- a/src/ui/gui/data-editor.c +++ b/src/ui/gui/data-editor.c @@ -44,6 +44,7 @@ #include "descriptives-dialog.h" #include "crosstabs-dialog.h" #include "frequencies-dialog.h" +#include "examine-dialog.h" #include "dict-display.h" #include "clipboard.h" @@ -721,6 +722,17 @@ 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); + + + 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 +898,12 @@ 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") + ); + + g_signal_connect (get_widget_assert (de->xml,"help_about"), "activate", G_CALLBACK (about_new), diff --git a/src/ui/gui/data-editor.glade b/src/ui/gui/data-editor.glade index 1746d9e7..e3cff71c 100644 --- a/src/ui/gui/data-editor.glade +++ b/src/ui/gui/data-editor.glade @@ -459,7 +459,7 @@ - + True GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK _Explore diff --git a/src/ui/gui/data-editor.h b/src/ui/gui/data-editor.h index ca69dd5a..8d79082c 100644 --- a/src/ui/gui/data-editor.h +++ b/src/ui/gui/data-editor.h @@ -50,6 +50,7 @@ struct data_editor GtkAction *invoke_crosstabs_dialog; GtkAction *invoke_descriptives_dialog; GtkAction *invoke_frequencies_dialog; + GtkAction *invoke_examine_dialog; GtkAction *invoke_t_test_independent_samples_dialog; GtkAction *invoke_t_test_paired_samples_dialog; diff --git a/src/ui/gui/examine-dialog.c b/src/ui/gui/examine-dialog.c new file mode 100644 index 00000000..14679d70 --- /dev/null +++ b/src/ui/gui/examine-dialog.c @@ -0,0 +1,365 @@ +/* PSPPIRE - a graphical user interface for PSPP. + Copyright (C) 2007, 2008 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 + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . */ + +#include + +#include "examine-dialog.h" + +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include + +#include "gettext.h" +#define _(msgid) gettext (msgid) +#define N_(msgid) msgid + +enum opts + { + OPT_LISTWISE, + OPT_PAIRWISE, + OPT_REPORT + }; + + +#define STAT_DESCRIPTIVES 0x01 +#define STAT_EXTREMES 0x02 +#define STAT_PERCENTILES 0x04 + + +struct examine_dialog +{ + PsppireDict *dict; + + GtkWidget *dep_list ; + GtkWidget *fct_list ; + GtkWidget *id_entry ; + + GtkWidget *stats_dialog; + GtkWidget *opts_dialog; + + /* Options */ + enum opts opts; + guint stats; + GtkWidget *listwise; + GtkWidget *pairwise; + GtkWidget *report; + + GtkToggleButton *descriptives_button; + GtkToggleButton *extremes_button; + GtkToggleButton *percentiles_button; +}; + +static void +refresh (PsppireDialog *dialog, struct examine_dialog *ex_d) +{ + GtkTreeModel *liststore = + gtk_tree_view_get_model (GTK_TREE_VIEW (ex_d->dep_list)); + + gtk_list_store_clear (GTK_LIST_STORE (liststore)); + + liststore = gtk_tree_view_get_model (GTK_TREE_VIEW (ex_d->fct_list)); + gtk_list_store_clear (GTK_LIST_STORE (liststore)); + + + gtk_entry_set_text (GTK_ENTRY (ex_d->id_entry), ""); + + ex_d->opts = OPT_LISTWISE; + ex_d->stats = 0x00; +} + +static char * +generate_syntax (const struct examine_dialog *ed) +{ + const char *label; + gchar *text = NULL; + GString *str = g_string_new ("EXAMINE "); + + g_string_append (str, "\n\t/VARIABLES="); + append_variable_names (str, ed->dict, GTK_TREE_VIEW (ed->dep_list), 0); + + if ( 0 < gtk_tree_model_iter_n_children + (gtk_tree_view_get_model (GTK_TREE_VIEW (ed->fct_list)), NULL)) + { + g_string_append (str, "\n\tBY "); + append_variable_names (str, ed->dict, GTK_TREE_VIEW (ed->fct_list), 0); + } + + label = gtk_entry_get_text (GTK_ENTRY (ed->id_entry)); + if ( 0 != strcmp (label, "") ) + { + g_string_append (str, "\n\t/ID = "); + g_string_append (str, label); + } + + if ( ed->stats & (STAT_DESCRIPTIVES | STAT_EXTREMES)) + { + g_string_append (str, "\n\t/STATISTICS ="); + + if ( ed->stats & STAT_DESCRIPTIVES) + g_string_append (str, " DESCRIPTIVES"); + + if ( ed->stats & STAT_EXTREMES) + g_string_append (str, " EXTREME"); + } + + if ( ed->stats & STAT_PERCENTILES) + g_string_append (str, "\n\t/PERCENTILES"); + + g_string_append (str, "\n\t/MISSING="); + switch (ed->opts) + { + case OPT_REPORT: + g_string_append (str, "REPORT"); + break; + case OPT_PAIRWISE: + g_string_append (str, "PAIRWISE"); + break; + default: + g_string_append (str, "LISTWISE"); + break; + }; + + g_string_append (str, "."); + + text = str->str; + + g_string_free (str, FALSE); + + return text; +} + +/* Dialog is valid iff at least one variable has been selected */ +static gboolean +dialog_state_valid (gpointer data) +{ + struct examine_dialog *ex_d = data; + + GtkTreeModel *vars = + gtk_tree_view_get_model (GTK_TREE_VIEW (ex_d->dep_list)); + + GtkTreeIter notused; + + return gtk_tree_model_get_iter_first (vars, ¬used); +} + + +static void +run_stats_dialog (struct examine_dialog *ed) +{ + gint response; + + gtk_toggle_button_set_active (ed->descriptives_button, + ed->stats & STAT_DESCRIPTIVES); + + gtk_toggle_button_set_active (ed->extremes_button, + ed->stats & STAT_EXTREMES); + + gtk_toggle_button_set_active (ed->percentiles_button, + ed->stats & STAT_PERCENTILES); + + response = psppire_dialog_run (PSPPIRE_DIALOG (ed->stats_dialog)); + + if ( response == PSPPIRE_RESPONSE_CONTINUE ) + { + ed->stats = 0; + if ( gtk_toggle_button_get_active (ed->descriptives_button) ) + ed->stats |= STAT_DESCRIPTIVES; + + if ( gtk_toggle_button_get_active (ed->extremes_button) ) + ed->stats |= STAT_EXTREMES; + + if ( gtk_toggle_button_get_active (ed->percentiles_button) ) + ed->stats |= STAT_PERCENTILES; + } +} + +static void +run_opts_dialog (struct examine_dialog *ed) +{ + gint response; + + + switch (ed->opts) + { + case OPT_LISTWISE: + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (ed->listwise), TRUE); + break; + case OPT_PAIRWISE: + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (ed->pairwise), TRUE); + break; + case OPT_REPORT: + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (ed->report), TRUE); + break; + default: + g_assert_not_reached (); + break; + }; + + response = psppire_dialog_run (PSPPIRE_DIALOG (ed->opts_dialog)); + + if ( response == PSPPIRE_RESPONSE_CONTINUE ) + { + if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (ed->listwise))) + ed->opts = OPT_LISTWISE; + if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (ed->pairwise))) + ed->opts = OPT_PAIRWISE; + if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (ed->report))) + ed->opts = OPT_REPORT; + } +} + + + +/* Pops up the Examine dialog box */ +void +examine_dialog (GObject *o, gpointer data) +{ + gint response; + struct data_editor *de = data; + + struct examine_dialog ex_d; + + + GladeXML *xml = XML_NEW ("examine.glade"); + + + GtkWidget *dialog = get_widget_assert (xml, "examine-dialog"); + GtkWidget *source = get_widget_assert (xml, "treeview1"); + + GtkWidget *stats_button = get_widget_assert (xml, "stats-button"); + GtkWidget *opts_button = get_widget_assert (xml, "opts-button"); + + + GtkWidget *dep_selector = get_widget_assert (xml, "psppire-selector1"); + GtkWidget *fct_selector = get_widget_assert (xml, "psppire-selector2"); + GtkWidget *id_selector = get_widget_assert (xml, "psppire-selector3"); + + GtkSheet *var_sheet = + GTK_SHEET (get_widget_assert (de->xml, "variable_sheet")); + + PsppireVarStore *vs = PSPPIRE_VAR_STORE (gtk_sheet_get_model (var_sheet)); + + ex_d.dep_list = get_widget_assert (xml, "treeview2"); + ex_d.fct_list = get_widget_assert (xml, "treeview3"); + ex_d.id_entry = get_widget_assert (xml, "entry1"); + ex_d.stats_dialog = get_widget_assert (xml, "statistics-dialog"); + ex_d.opts_dialog = get_widget_assert (xml, "options-dialog"); + ex_d.listwise = get_widget_assert (xml, "radiobutton1"); + ex_d.pairwise = get_widget_assert (xml, "radiobutton2"); + ex_d.report = get_widget_assert (xml, "radiobutton3"); + + ex_d.descriptives_button = GTK_TOGGLE_BUTTON + (get_widget_assert (xml, "descriptives-button")); + + ex_d.extremes_button = GTK_TOGGLE_BUTTON + (get_widget_assert (xml, "extremes-button")); + + ex_d.percentiles_button = GTK_TOGGLE_BUTTON + (get_widget_assert (xml, "percentiles-button")); + + gtk_window_set_transient_for (GTK_WINDOW (dialog), de->parent.window); + gtk_window_set_transient_for (GTK_WINDOW (ex_d.stats_dialog), de->parent.window); + gtk_window_set_transient_for (GTK_WINDOW (ex_d.opts_dialog), de->parent.window); + + attach_dictionary_to_treeview (GTK_TREE_VIEW (source), + vs->dict, + GTK_SELECTION_MULTIPLE, NULL); + + + set_dest_model (GTK_TREE_VIEW (ex_d.dep_list), vs->dict); + ex_d.dict = vs->dict; + + + psppire_selector_set_subjects (PSPPIRE_SELECTOR (dep_selector), + source, + ex_d.dep_list, + insert_source_row_into_tree_view, + NULL, NULL); + + psppire_selector_set_allow (PSPPIRE_SELECTOR (dep_selector), + numeric_only); + + set_dest_model (GTK_TREE_VIEW (ex_d.fct_list), vs->dict); + + + psppire_selector_set_subjects (PSPPIRE_SELECTOR (fct_selector), + source, + ex_d.fct_list, + insert_source_row_into_tree_view, + NULL, NULL); + + + psppire_selector_set_subjects (PSPPIRE_SELECTOR (id_selector), + source, + ex_d.id_entry, + insert_source_row_into_entry, + NULL, NULL); + + g_signal_connect (dialog, "refresh", G_CALLBACK (refresh), &ex_d); + + psppire_dialog_set_valid_predicate (PSPPIRE_DIALOG (dialog), + dialog_state_valid, &ex_d); + + + g_signal_connect_swapped (stats_button, "clicked", + G_CALLBACK (run_stats_dialog), &ex_d); + + g_signal_connect_swapped (opts_button, "clicked", + G_CALLBACK (run_opts_dialog), &ex_d); + + response = psppire_dialog_run (PSPPIRE_DIALOG (dialog)); + + + switch (response) + { + case GTK_RESPONSE_OK: + { + gchar *syntax = generate_syntax (&ex_d); + + struct getl_interface *sss = create_syntax_string_source (syntax); + + execute_syntax (sss); + + g_free (syntax); + } + break; + case PSPPIRE_RESPONSE_PASTE: + { + gchar *syntax = generate_syntax (&ex_d); + + struct syntax_editor *se = + (struct syntax_editor *) window_create (WINDOW_SYNTAX, NULL); + + gtk_text_buffer_insert_at_cursor (se->buffer, syntax, -1); + + g_free (syntax); + } + break; + default: + break; + } + + g_object_unref (xml); +} diff --git a/src/ui/gui/examine-dialog.h b/src/ui/gui/examine-dialog.h new file mode 100644 index 00000000..b8e70272 --- /dev/null +++ b/src/ui/gui/examine-dialog.h @@ -0,0 +1,27 @@ +/* PSPPIRE - a graphical user interface for PSPP. + Copyright (C) 2007 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 + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . */ + +#ifndef __EXAMINE_DIALOG_H +#define __EXAMINE_DIALOG_H + + +#include +#include + + +void examine_dialog (GObject *o, gpointer data); + +#endif diff --git a/src/ui/gui/examine.glade b/src/ui/gui/examine.glade new file mode 100644 index 00000000..00785397 --- /dev/null +++ b/src/ui/gui/examine.glade @@ -0,0 +1,449 @@ + + + + + + + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + Explore + True + + + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + 2 + + + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + 5 + + + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + 3 + 3 + + + True + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + GTK_POLICY_NEVER + GTK_POLICY_AUTOMATIC + GTK_SHADOW_ETCHED_IN + + + True + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + False + True + + + + + 3 + + + + + True + True + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + 5 + + + 1 + 2 + + + + + + + True + True + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + 5 + + + 1 + 2 + 1 + 2 + + + + + + + True + True + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + 5 + + + 1 + 2 + 2 + 3 + + + + + + + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + GTK_SHADOW_NONE + + + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + 12 + + + True + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + GTK_POLICY_NEVER + GTK_POLICY_AUTOMATIC + GTK_SHADOW_ETCHED_IN + + + True + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + False + True + + + + + + + + + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + Dependent List: + True + + + label_item + + + + + 2 + 3 + + + + + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + GTK_SHADOW_NONE + + + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + 12 + + + True + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + GTK_POLICY_NEVER + GTK_POLICY_AUTOMATIC + GTK_SHADOW_ETCHED_IN + + + True + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + False + True + + + + + + + + + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + Factor List: + True + + + label_item + + + + + 2 + 3 + 1 + 2 + + + + + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + GTK_SHADOW_NONE + + + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + 12 + + + True + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + + + + + + + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + Label Cases by: + True + + + label_item + + + + + 2 + 3 + 2 + 3 + + + + + + + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + GTK_BUTTONBOX_SPREAD + + + True + True + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + Statistics... + + + + + True + True + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + Options... + + + 1 + + + + + False + False + 5 + 1 + + + + + + + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + 5 + + + False + False + GTK_PACK_END + 1 + + + + + + + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + Explore: Statistics + True + PSPPIRE_VERTICAL + + + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + 2 + + + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + True + + + True + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + Descriptives + True + + + + + True + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + Extremes + True + + + 1 + + + + + True + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + Percentiles + True + + + 2 + + + + + + + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + 5 + GTK_BUTTONBOX_SPREAD + PSPPIRE_BUTTON_CONTINUE_MASK | PSPPIRE_BUTTON_CANCEL_MASK | PSPPIRE_BUTTON_HELP_MASK + + + False + False + GTK_PACK_END + 1 + + + + + + + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + Explore: Options + True + + + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + 2 + + + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + + + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + 12 + + + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + + + True + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + Exclude cases listwise + True + True + + + + + True + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + Exclude cases pairwise + True + True + radiobutton1 + + + 1 + + + + + True + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + Repeat values + True + True + radiobutton1 + + + 2 + + + + + + + + + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + Missing Values + True + + + label_item + + + + + + + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + 5 + PSPPIRE_BUTTON_CONTINUE_MASK | PSPPIRE_BUTTON_CANCEL_MASK | PSPPIRE_BUTTON_HELP_MASK + + + False + False + GTK_PACK_END + 1 + + + + + +