From: John Darrington Date: Sat, 31 Mar 2012 06:41:27 +0000 (+0200) Subject: Explore Dialog: Replace add hoc functions with the new DialogAction class X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b1bb3352ce1e12a85c0b1ee1def1d1bcd6f62e69;p=pspp Explore Dialog: Replace add hoc functions with the new DialogAction class --- diff --git a/src/ui/gui/automake.mk b/src/ui/gui/automake.mk index cd2696fba5..75ca28a713 100644 --- a/src/ui/gui/automake.mk +++ b/src/ui/gui/automake.mk @@ -170,8 +170,6 @@ src_ui_gui_psppire_SOURCES = \ src/ui/gui/dict-display.c \ src/ui/gui/entry-dialog.c \ src/ui/gui/entry-dialog.h \ - src/ui/gui/examine-dialog.c \ - src/ui/gui/examine-dialog.h \ src/ui/gui/executor.c \ src/ui/gui/executor.h \ src/ui/gui/find-dialog.c \ @@ -216,6 +214,8 @@ src_ui_gui_psppire_SOURCES = \ src/ui/gui/psppire-dialog-action-correlation.h \ src/ui/gui/psppire-dialog-action-descriptives.c \ src/ui/gui/psppire-dialog-action-descriptives.h \ + src/ui/gui/psppire-dialog-action-examine.c \ + src/ui/gui/psppire-dialog-action-examine.h \ src/ui/gui/psppire-dialog-action-kmeans.c \ src/ui/gui/psppire-dialog-action-kmeans.h \ src/ui/gui/psppire-dialog-action-means.c \ diff --git a/src/ui/gui/data-editor.ui b/src/ui/gui/data-editor.ui index 3e91796812..e568f2bc40 100644 --- a/src/ui/gui/data-editor.ui +++ b/src/ui/gui/data-editor.ui @@ -358,8 +358,9 @@ - + analyze_explore + uimanager1 _Explore... @@ -607,7 +608,7 @@ - + diff --git a/src/ui/gui/examine-dialog.c b/src/ui/gui/examine-dialog.c deleted file mode 100644 index 857394fb3d..0000000000 --- a/src/ui/gui/examine-dialog.c +++ /dev/null @@ -1,314 +0,0 @@ -/* PSPPIRE - a graphical user interface for PSPP. - Copyright (C) 2007, 2008, 2009, 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 - 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 "psppire-var-view.h" - -#include -#include - -#include -#include -#include -#include -#include -#include -#include "executor.h" -#include "helper.h" - -#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="); - psppire_var_view_append_names (PSPPIRE_VAR_VIEW (ed->dep_list), 0, str); - - 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 "); - psppire_var_view_append_names (PSPPIRE_VAR_VIEW (ed->fct_list), 0, str); - } - - 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 (PsppireDataWindow *de) -{ - gint response; - - struct examine_dialog ex_d; - - GtkBuilder *xml = builder_new ("examine.ui"); - - 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"); - - PsppireVarStore *vs = NULL; - - g_object_get (de->data_editor, "var-store", &vs, NULL); - - 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), GTK_WINDOW (de)); - gtk_window_set_transient_for (GTK_WINDOW (ex_d.stats_dialog), GTK_WINDOW (de)); - gtk_window_set_transient_for (GTK_WINDOW (ex_d.opts_dialog), GTK_WINDOW (de)); - - g_object_get (vs, "dictionary", &ex_d.dict, NULL); - g_object_set (source, "model", ex_d.dict, NULL); - - psppire_selector_set_allow (PSPPIRE_SELECTOR (dep_selector), - numeric_only); - - 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: - g_free (execute_syntax_string (de, generate_syntax (&ex_d))); - break; - case PSPPIRE_RESPONSE_PASTE: - g_free (paste_syntax_to_window (generate_syntax (&ex_d))); - break; - default: - break; - } - - g_object_unref (xml); -} diff --git a/src/ui/gui/examine-dialog.h b/src/ui/gui/examine-dialog.h deleted file mode 100644 index 15835a0ecd..0000000000 --- a/src/ui/gui/examine-dialog.h +++ /dev/null @@ -1,24 +0,0 @@ -/* PSPPIRE - a graphical user interface for PSPP. - Copyright (C) 2007, 2010 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 "psppire-data-window.h" - -void examine_dialog (PsppireDataWindow * data); - -#endif diff --git a/src/ui/gui/psppire-data-window.c b/src/ui/gui/psppire-data-window.c index 5e9691c5d0..87a6bb69fc 100644 --- a/src/ui/gui/psppire-data-window.c +++ b/src/ui/gui/psppire-data-window.c @@ -34,7 +34,6 @@ #include "ui/gui/count-dialog.h" #include "ui/gui/crosstabs-dialog.h" #include "ui/gui/entry-dialog.h" -#include "ui/gui/examine-dialog.h" #include "ui/gui/executor.h" #include "ui/gui/factor-dialog.h" #include "ui/gui/find-dialog.h" @@ -1096,9 +1095,6 @@ psppire_data_window_finish_init (PsppireDataWindow *de, connect_action (de, "analyze_frequencies", G_CALLBACK (frequencies_dialog)); connect_action (de, "crosstabs", G_CALLBACK (crosstabs_dialog)); - - connect_action (de, "analyze_explore", G_CALLBACK (examine_dialog)); - connect_action (de, "linear-regression", G_CALLBACK (regression_dialog)); connect_action (de, "univariate", G_CALLBACK (univariate_dialog)); diff --git a/src/ui/gui/psppire-dialog-action-examine.c b/src/ui/gui/psppire-dialog-action-examine.c new file mode 100644 index 0000000000..904beec1e8 --- /dev/null +++ b/src/ui/gui/psppire-dialog-action-examine.c @@ -0,0 +1,253 @@ +/* PSPPIRE - a graphical user interface for PSPP. + Copyright (C) 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 + 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 "psppire-dialog-action-examine.h" + +#include "psppire-var-view.h" +#include "psppire-dict.h" +#include "psppire-dialog.h" +#include "builder-wrapper.h" + +#include "gettext.h" +#define _(msgid) gettext (msgid) +#define N_(msgid) msgid + +static void psppire_dialog_action_examine_class_init (PsppireDialogActionExamineClass *class); + +G_DEFINE_TYPE (PsppireDialogActionExamine, psppire_dialog_action_examine, PSPPIRE_TYPE_DIALOG_ACTION); + + +#define STAT_DESCRIPTIVES 0x01 +#define STAT_EXTREMES 0x02 +#define STAT_PERCENTILES 0x04 + +static void +run_stats_dialog (PsppireDialogActionExamine *ed) +{ + gint response; + + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (ed->descriptives_button), + ed->stats & STAT_DESCRIPTIVES); + + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (ed->extremes_button), + ed->stats & STAT_EXTREMES); + + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (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 (GTK_TOGGLE_BUTTON (ed->descriptives_button) )) + ed->stats |= STAT_DESCRIPTIVES; + + if ( gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (ed->extremes_button) )) + ed->stats |= STAT_EXTREMES; + + if ( gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (ed->percentiles_button) )) + ed->stats |= STAT_PERCENTILES; + } +} + +static void +run_opts_dialog (PsppireDialogActionExamine *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; + } +} + + + + +static char * +generate_syntax (PsppireDialogAction *act) +{ + PsppireDialogActionExamine *ed = PSPPIRE_DIALOG_ACTION_EXAMINE (act); + + const char *label; + gchar *text = NULL; + GString *str = g_string_new ("EXAMINE "); + + g_string_append (str, "\n\t/VARIABLES="); + psppire_var_view_append_names (PSPPIRE_VAR_VIEW (ed->variables), 0, str); + + if ( 0 < gtk_tree_model_iter_n_children + (gtk_tree_view_get_model (GTK_TREE_VIEW (ed->factors)), NULL)) + { + g_string_append (str, "\n\tBY "); + psppire_var_view_append_names (PSPPIRE_VAR_VIEW (ed->factors), 0, str); + } + + label = gtk_entry_get_text (GTK_ENTRY (ed->id_var)); + 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; +} + +static gboolean +dialog_state_valid (PsppireDialogAction *da) +{ + PsppireDialogActionExamine *pae = PSPPIRE_DIALOG_ACTION_EXAMINE (da); + GtkTreeIter notused; + GtkTreeModel *vars = + gtk_tree_view_get_model (GTK_TREE_VIEW (pae->variables)); + + return gtk_tree_model_get_iter_first (vars, ¬used); +} + +static void +dialog_refresh (PsppireDialogAction *da) +{ + PsppireDialogActionExamine *dae = PSPPIRE_DIALOG_ACTION_EXAMINE (da); + GtkTreeModel *liststore = NULL; + + liststore = gtk_tree_view_get_model (GTK_TREE_VIEW (dae->variables)); + gtk_list_store_clear (GTK_LIST_STORE (liststore)); + + liststore = gtk_tree_view_get_model (GTK_TREE_VIEW (dae->factors)); + gtk_list_store_clear (GTK_LIST_STORE (liststore)); + + gtk_entry_set_text (GTK_ENTRY (dae->id_var), ""); + dae->stats = 0x00; + dae->opts = OPT_LISTWISE; +} + +static void +psppire_dialog_action_examine_activate (GtkAction *a) +{ + PsppireDialogAction *pda = PSPPIRE_DIALOG_ACTION (a); + PsppireDialogActionExamine *act = PSPPIRE_DIALOG_ACTION_EXAMINE (a); + + GtkBuilder *xml = builder_new ("examine.ui"); + + GtkWidget *stats_button = get_widget_assert (xml, "stats-button"); + GtkWidget *opts_button = get_widget_assert (xml, "opts-button"); + + pda->dialog = get_widget_assert (xml, "examine-dialog"); + pda->source = get_widget_assert (xml, "treeview1"); + act->variables = get_widget_assert (xml, "treeview2"); + act->factors = get_widget_assert (xml, "treeview3"); + act->id_var = get_widget_assert (xml, "entry1"); + + act->stats_dialog = get_widget_assert (xml, "statistics-dialog"); + act->descriptives_button = get_widget_assert (xml, "descriptives-button"); + act->extremes_button = get_widget_assert (xml, "extremes-button"); + act->percentiles_button = get_widget_assert (xml, "percentiles-button"); + + act->opts_dialog = get_widget_assert (xml, "options-dialog"); + act->listwise = get_widget_assert (xml, "radiobutton1"); + act->pairwise = get_widget_assert (xml, "radiobutton2"); + act->report = get_widget_assert (xml, "radiobutton3"); + + g_object_set (pda->source, + "model", pda->dict, + "predicate", var_is_numeric, + NULL); + + psppire_dialog_action_set_valid_predicate (pda, (void *) dialog_state_valid); + psppire_dialog_action_set_refresh (pda, dialog_refresh); + + g_signal_connect_swapped (stats_button, "clicked", + G_CALLBACK (run_stats_dialog), act); + + g_signal_connect_swapped (opts_button, "clicked", + G_CALLBACK (run_opts_dialog), act); + + PSPPIRE_DIALOG_ACTION_CLASS (psppire_dialog_action_examine_parent_class)->activate (pda); +} + +static void +psppire_dialog_action_examine_class_init (PsppireDialogActionExamineClass *class) +{ + GTK_ACTION_CLASS (class)->activate = psppire_dialog_action_examine_activate; + + PSPPIRE_DIALOG_ACTION_CLASS (class)->generate_syntax = generate_syntax; +} + +static void +psppire_dialog_action_examine_init (PsppireDialogActionExamine *act) +{ +} diff --git a/src/ui/gui/psppire-dialog-action-examine.h b/src/ui/gui/psppire-dialog-action-examine.h new file mode 100644 index 0000000000..0780064ebf --- /dev/null +++ b/src/ui/gui/psppire-dialog-action-examine.h @@ -0,0 +1,98 @@ +/* PSPPIRE - a graphical user interface for PSPP. + Copyright (C) 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 + 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 __PSPPIRE_DIALOG_ACTION_EXAMINE_H__ +#define __PSPPIRE_DIALOG_ACTION_EXAMINE_H__ + +#include +#include + +#include "psppire-dialog-action.h" + +G_BEGIN_DECLS + + +#define PSPPIRE_TYPE_DIALOG_ACTION_EXAMINE (psppire_dialog_action_examine_get_type ()) + +#define PSPPIRE_DIALOG_ACTION_EXAMINE(obj) \ + (G_TYPE_CHECK_INSTANCE_CAST ((obj), \ + PSPPIRE_TYPE_DIALOG_ACTION_EXAMINE, PsppireDialogActionExamine)) + +#define PSPPIRE_DIALOG_ACTION_EXAMINE_CLASS(klass) \ + (G_TYPE_CHECK_CLASS_CAST ((klass), \ + PSPPIRE_TYPE_DIALOG_ACTION_EXAMINE, \ + PsppireDialogActionExamineClass)) + + +#define PSPPIRE_IS_DIALOG_ACTION_EXAMINE(obj) \ + (G_TYPE_CHECK_INSTANCE_TYPE ((obj), PSPPIRE_TYPE_DIALOG_ACTION_EXAMINE)) + +#define PSPPIRE_IS_DIALOG_ACTION_EXAMINE_CLASS(klass) \ + (G_TYPE_CHECK_CLASS_TYPE ((klass), PSPPIRE_TYPE_DIALOG_ACTION_EXAMINE)) + + +#define PSPPIRE_DIALOG_ACTION_EXAMINE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), \ + PSPPIRE_TYPE_DIALOG_ACTION_EXAMINE, \ + PsppireDialogActionExamineClass)) + +typedef struct _PsppireDialogActionExamine PsppireDialogActionExamine; +typedef struct _PsppireDialogActionExamineClass PsppireDialogActionExamineClass; + + +enum PsppireDialogActionExamineOpts + { + OPT_LISTWISE, + OPT_PAIRWISE, + OPT_REPORT + }; + +struct _PsppireDialogActionExamine +{ + PsppireDialogAction parent; + + /*< private >*/ + GtkWidget *variables; + GtkWidget *factors; + GtkWidget *id_var; + + /* The stats dialog */ + GtkWidget *stats_dialog; + GtkWidget *descriptives_button; + GtkWidget *extremes_button; + GtkWidget *percentiles_button; + guint stats; + + /* The options dialog */ + GtkWidget *opts_dialog; + GtkWidget *listwise; + GtkWidget *pairwise; + GtkWidget *report; + enum PsppireDialogActionExamineOpts opts; +}; + + +struct _PsppireDialogActionExamineClass +{ + PsppireDialogActionClass parent_class; +}; + + +GType psppire_dialog_action_examine_get_type (void) ; + +G_END_DECLS + +#endif /* __PSPPIRE_DIALOG_ACTION_EXAMINE_H__ */ diff --git a/src/ui/gui/widgets.c b/src/ui/gui/widgets.c index d131b6469f..ed8328a5a5 100644 --- a/src/ui/gui/widgets.c +++ b/src/ui/gui/widgets.c @@ -15,6 +15,7 @@ #include "psppire-dialog-action-correlation.h" #include "psppire-dialog-action-descriptives.h" +#include "psppire-dialog-action-examine.h" #include "psppire-dialog-action-kmeans.h" #include "psppire-dialog-action-means.h" #include "psppire-means-layer.h" @@ -42,6 +43,7 @@ preregister_widgets (void) psppire_dialog_action_correlation_get_type (); psppire_dialog_action_descriptives_get_type (); + psppire_dialog_action_examine_get_type (); psppire_dialog_action_kmeans_get_type (); psppire_dialog_action_means_get_type (); psppire_means_layer_get_type ();