From: John Darrington Date: Mon, 10 Dec 2007 10:21:05 +0000 (+0000) Subject: Added the One Sample T Test dialog X-Git-Tag: v0.6.0~162 X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=3b064b5cce148b1c7d5386553a87cda37913429f;p=pspp-builds.git Added the One Sample T Test dialog --- diff --git a/src/ui/gui/ChangeLog b/src/ui/gui/ChangeLog index e908b7da..fa7e052b 100644 --- a/src/ui/gui/ChangeLog +++ b/src/ui/gui/ChangeLog @@ -1,3 +1,16 @@ +2007-12-08 John Darrington + + * data-editor.h data-editor.c: Added hooks for one sample t-test + + * t-test-one-sample.c t-test-one-sample.h (new files): Implemented + a dialog box for the One Sample T Test. + + * t-test-independent-samples-dialog.c: Factored out the options sub + dialog (see following). + + * t-test-options.c t-test-options.h (new files): New module + implementing the options sub-dialog for T tests. + 2007-12-07 John Darrington * frequencies-dialog.c: Made the options subdialog transient diff --git a/src/ui/gui/automake.mk b/src/ui/gui/automake.mk index 24f0196c..a3ad6e1f 100644 --- a/src/ui/gui/automake.mk +++ b/src/ui/gui/automake.mk @@ -157,6 +157,10 @@ src_ui_gui_psppire_SOURCES = \ src/ui/gui/transpose-dialog.h \ src/ui/gui/t-test-independent-samples-dialog.c \ src/ui/gui/t-test-independent-samples-dialog.h \ + src/ui/gui/t-test-one-sample.c \ + src/ui/gui/t-test-one-sample.h \ + src/ui/gui/t-test-options.c \ + src/ui/gui/t-test-options.h \ src/ui/gui/val-labs-dialog.c \ src/ui/gui/val-labs-dialog.h \ src/ui/gui/var-display.c \ diff --git a/src/ui/gui/data-editor.c b/src/ui/gui/data-editor.c index a69b7e66..cda87a10 100644 --- a/src/ui/gui/data-editor.c +++ b/src/ui/gui/data-editor.c @@ -49,6 +49,7 @@ #include "oneway-anova-dialog.h" #include "t-test-independent-samples-dialog.h" +#include "t-test-one-sample.h" #define _(msgid) gettext (msgid) #define N_(msgid) msgid @@ -612,6 +613,16 @@ new_data_editor (void) G_CALLBACK (t_test_independent_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"), @@ -818,6 +829,12 @@ new_data_editor (void) ); + 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") diff --git a/src/ui/gui/data-editor.h b/src/ui/gui/data-editor.h index 9f8ce0a6..97c7c1ec 100644 --- a/src/ui/gui/data-editor.h +++ b/src/ui/gui/data-editor.h @@ -51,6 +51,7 @@ struct data_editor GtkAction *invoke_t_test_independent_samples_dialog; GtkAction *invoke_oneway_anova_dialog; + GtkAction *invoke_t_test_one_sample_dialog; /* Actions which do things */ diff --git a/src/ui/gui/t-test-independent-samples-dialog.c b/src/ui/gui/t-test-independent-samples-dialog.c index 21383171..718709bf 100644 --- a/src/ui/gui/t-test-independent-samples-dialog.c +++ b/src/ui/gui/t-test-independent-samples-dialog.c @@ -29,6 +29,7 @@ #include "dialog-common.h" #include "dict-display.h" #include "widget-io.h" +#include "t-test-options.h" #include #include "syntax-editor.h" @@ -44,8 +45,8 @@ struct tt_indep_samples_dialog GtkWidget *dialog; PsppireDict *dict; gboolean groups_defined; - gboolean non_default_options; - gdouble confidence_interval; + + struct tt_options_dialog *opts; }; @@ -79,21 +80,8 @@ generate_syntax (const struct tt_indep_samples_dialog *d) g_string_append (str, ")"); } - if ( d->non_default_options ) - { - GtkToggleButton *analysis = - GTK_TOGGLE_BUTTON (get_widget_assert (d->xml, "radiobutton1")); - - g_string_append (str, "\n\t"); - g_string_append_printf (str, "/CRITERIA=CIN(%g)", - d->confidence_interval/100.0); - - g_string_append (str, "\n\t"); - g_string_append_printf (str, "/MISSING=%s", - gtk_toggle_button_get_active (analysis) ? - "ANALYSIS" : "LISTWISE"); - } + tt_options_dialog_append_syntax (d->opts, str); g_string_append (str, ".\n"); @@ -159,43 +147,6 @@ run_define_groups (struct tt_indep_samples_dialog *ttd) } -static void -run_options (struct tt_indep_samples_dialog *ttd) -{ - gint response; - GtkWidget *dialog = - get_widget_assert (ttd->xml, "options-dialog"); - - GtkWidget *box = - get_widget_assert (ttd->xml, "vbox1"); - - GtkSpinButton *conf_percent = NULL; - - GtkWidget *confidence = - widget_scanf (_("Confidence Interval: %2d %%"), - &conf_percent); - - gtk_spin_button_set_value (conf_percent, ttd->confidence_interval); - - gtk_widget_show (confidence); - - gtk_box_pack_start_defaults (GTK_BOX (box), confidence); - - gtk_window_set_transient_for (GTK_WINDOW (dialog), GTK_WINDOW (ttd->dialog)); - - response = psppire_dialog_run (PSPPIRE_DIALOG (dialog)); - - if ( response == PSPPIRE_RESPONSE_CONTINUE) - { - ttd->non_default_options = TRUE; - ttd->confidence_interval = gtk_spin_button_get_value (conf_percent); - } - - gtk_container_remove (GTK_CONTAINER (box), confidence); -} - - - static gboolean dialog_state_valid (gpointer data) @@ -250,7 +201,6 @@ t_test_independent_samples_dialog (GObject *o, gpointer data) GtkWidget *selector1 = get_widget_assert (xml, "indep-samples-t-test-selector1"); - GtkWidget *entry = get_widget_assert (xml, "indep-samples-t-test-entry"); @@ -266,8 +216,7 @@ t_test_independent_samples_dialog (GObject *o, gpointer data) tt_d.xml = xml; tt_d.dict = vs->dict; tt_d.groups_defined = FALSE; - tt_d.non_default_options = FALSE; - tt_d.confidence_interval = 95.0; + tt_d.opts = tt_options_dialog_create (xml, de->parent.window); gtk_window_set_transient_for (GTK_WINDOW (tt_d.dialog), de->parent.window); @@ -294,7 +243,7 @@ t_test_independent_samples_dialog (GObject *o, gpointer data) g_signal_connect_swapped (options_button, "clicked", - G_CALLBACK (run_options), &tt_d); + G_CALLBACK (tt_options_dialog_run), tt_d.opts); g_signal_connect_swapped (tt_d.dialog, "refresh", G_CALLBACK (refresh), xml); @@ -332,7 +281,7 @@ t_test_independent_samples_dialog (GObject *o, gpointer data) break; } - + tt_options_dialog_destroy (tt_d.opts); g_object_unref (xml); } diff --git a/src/ui/gui/t-test-one-sample.c b/src/ui/gui/t-test-one-sample.c new file mode 100644 index 00000000..ba27cf2d --- /dev/null +++ b/src/ui/gui/t-test-one-sample.c @@ -0,0 +1,214 @@ +/* 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 . +*/ + + +#include +#include +#include +#include "t-test-one-sample.h" +#include "psppire-dict.h" +#include "psppire-var-store.h" +#include "helper.h" +#include +#include "data-editor.h" +#include "psppire-dialog.h" +#include "dialog-common.h" +#include "dict-display.h" +#include "widget-io.h" + +#include "t-test-options.h" +#include +#include "syntax-editor.h" + +#include +#define _(msgid) gettext (msgid) +#define N_(msgid) msgid + + +struct tt_one_sample_dialog +{ + PsppireDict *dict; + GtkWidget *vars_treeview; + GtkWidget *test_value_entry; + struct tt_options_dialog *opt; +}; + + +static gchar * +generate_syntax (const struct tt_one_sample_dialog *d) +{ + gchar *text; + + GString *str = g_string_new ("T-TEST "); + + g_string_append_printf (str, "/TESTVAL=%s", + gtk_entry_get_text (GTK_ENTRY (d->test_value_entry))); + + g_string_append (str, "\n\t/VARIABLES="); + + append_variable_names (str, d->dict, GTK_TREE_VIEW (d->vars_treeview)); + + tt_options_dialog_append_syntax (d->opt, str); + + g_string_append (str, ".\n"); + + text = str->str; + + g_string_free (str, FALSE); + + return text; +} + + + +static void +refresh (const struct tt_one_sample_dialog *d) +{ + GtkTreeModel *model = + gtk_tree_view_get_model (GTK_TREE_VIEW (d->vars_treeview)); + + gtk_entry_set_text (GTK_ENTRY (d->test_value_entry), ""); + + gtk_list_store_clear (GTK_LIST_STORE (model)); +} + + + +static gboolean +dialog_state_valid (gpointer data) +{ + gchar *s = NULL; + const gchar *text; + struct tt_one_sample_dialog *tt_d = data; + + GtkTreeModel *vars = + gtk_tree_view_get_model (GTK_TREE_VIEW (tt_d->vars_treeview)); + + GtkTreeIter notused; + + text = gtk_entry_get_text (GTK_ENTRY (tt_d->test_value_entry)); + + if ( 0 == strcmp ("", text)) + return FALSE; + + /* Check to see if the entry is numeric */ + g_strtod (text, &s); + + if (s - text != strlen (text)) + return FALSE; + + + if ( 0 == gtk_tree_model_get_iter_first (vars, ¬used)) + return FALSE; + + return TRUE; +} + + +/* Pops up the dialog box */ +void +t_test_one_sample_dialog (GObject *o, gpointer data) +{ + struct tt_one_sample_dialog tt_d; + gint response; + struct data_editor *de = data; + + PsppireVarStore *vs; + + GladeXML *xml = XML_NEW ("t-test.glade"); + + GtkSheet *var_sheet = + GTK_SHEET (get_widget_assert (de->xml, "variable_sheet")); + + GtkWidget *dict_view = + get_widget_assert (xml, "one-sample-t-test-treeview2"); + + GtkWidget *options_button = + get_widget_assert (xml, "button1"); + + GtkWidget *selector = get_widget_assert (xml, "psppire-selector1"); + + GtkWidget *dialog = get_widget_assert (xml, "t-test-one-sample-dialog"); + + vs = PSPPIRE_VAR_STORE (gtk_sheet_get_model (var_sheet)); + + tt_d.dict = vs->dict; + tt_d.vars_treeview = get_widget_assert (xml, "one-sample-t-test-treeview1"); + tt_d.test_value_entry = get_widget_assert (xml, "test-value-entry"); + tt_d.opt = tt_options_dialog_create (xml, de->parent.window); + + gtk_window_set_transient_for (GTK_WINDOW (dialog), de->parent.window); + + attach_dictionary_to_treeview (GTK_TREE_VIEW (dict_view), + vs->dict, + GTK_SELECTION_MULTIPLE, + var_is_numeric); + + set_dest_model (GTK_TREE_VIEW (tt_d.vars_treeview), vs->dict); + + + psppire_selector_set_subjects (PSPPIRE_SELECTOR (selector), + dict_view, tt_d.vars_treeview, + insert_source_row_into_tree_view, + NULL); + + + g_signal_connect_swapped (dialog, "refresh", + G_CALLBACK (refresh), &tt_d); + + + g_signal_connect_swapped (options_button, "clicked", + G_CALLBACK (tt_options_dialog_run), tt_d.opt); + + psppire_dialog_set_valid_predicate (PSPPIRE_DIALOG (dialog), + dialog_state_valid, &tt_d); + + response = psppire_dialog_run (PSPPIRE_DIALOG (dialog)); + + switch (response) + { + case GTK_RESPONSE_OK: + { + gchar *syntax = generate_syntax (&tt_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 (&tt_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); + tt_options_dialog_destroy (tt_d.opt); +} + + diff --git a/src/ui/gui/t-test-one-sample.h b/src/ui/gui/t-test-one-sample.h new file mode 100644 index 00000000..6d50f116 --- /dev/null +++ b/src/ui/gui/t-test-one-sample.h @@ -0,0 +1,6 @@ +#ifndef T_TEST_ONE_SAMPLE_DIALOG +#define T_TEST_ONE_SAMPLE_DIALOG + +void t_test_one_sample_dialog (GObject *, gpointer) ; + +#endif diff --git a/src/ui/gui/t-test-options.c b/src/ui/gui/t-test-options.c new file mode 100644 index 00000000..37bdc229 --- /dev/null +++ b/src/ui/gui/t-test-options.c @@ -0,0 +1,130 @@ +/* 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 . +*/ + + +#include +#include + +#include "psppire-dialog.h" +#include +#include "helper.h" +#include "t-test-options.h" + +#include "widget-io.h" + +#include +#define _(msgid) gettext (msgid) +#define N_(msgid) msgid + + +enum exclude_mode + { + EXCL_ANALYSIS, + EXCL_LISTWISE + }; + +struct tt_options_dialog +{ + GtkWidget *dialog; + GtkWidget *box; + GtkWidget *confidence; + GtkSpinButton *conf_percent; + GtkToggleButton *analysis; + GtkToggleButton *listwise; + + gdouble confidence_interval; + gboolean non_default_options; + enum exclude_mode excl; +}; + +struct tt_options_dialog * +tt_options_dialog_create (GladeXML *xml, GtkWindow *parent) +{ + struct tt_options_dialog *tto = xmalloc (sizeof (*tto)); + + tto->confidence = + widget_scanf (_("Confidence Interval: %2d %%"), + &tto->conf_percent); + + tto->dialog = get_widget_assert (xml, "options-dialog"); + + tto->box = get_widget_assert (xml, "vbox1"); + + tto->analysis = GTK_TOGGLE_BUTTON (get_widget_assert (xml, "radiobutton1")); + tto->listwise = GTK_TOGGLE_BUTTON (get_widget_assert (xml, "radiobutton2")); + + gtk_widget_show (tto->confidence); + + gtk_box_pack_start_defaults (GTK_BOX (tto->box), tto->confidence); + + gtk_window_set_transient_for (parent, GTK_WINDOW (tto->dialog)); + + tto->confidence_interval = 95; + tto->excl = EXCL_ANALYSIS; + + return tto; +} + + +void +tt_options_dialog_destroy (struct tt_options_dialog *tto) +{ + gtk_container_remove (GTK_CONTAINER (tto->box), tto->confidence); + g_free (tto); +} + + +void +tt_options_dialog_run (struct tt_options_dialog *tto) +{ + gint response; + + if ( tto->excl == EXCL_ANALYSIS) + gtk_toggle_button_set_active (tto->analysis, TRUE); + else + gtk_toggle_button_set_active (tto->listwise, TRUE); + + gtk_spin_button_set_value (tto->conf_percent, tto->confidence_interval); + + response = psppire_dialog_run (PSPPIRE_DIALOG (tto->dialog)); + + if ( response == PSPPIRE_RESPONSE_CONTINUE) + { + tto->non_default_options = TRUE; + + tto->confidence_interval = gtk_spin_button_get_value (tto->conf_percent); + if ( gtk_toggle_button_get_active (tto->analysis) ) + tto->excl = EXCL_ANALYSIS; + else + tto->excl = EXCL_LISTWISE; + } +} + +void +tt_options_dialog_append_syntax (struct tt_options_dialog *tto, GString *str) +{ + g_string_append (str, "\t/MISSING="); + + if ( tto->excl == EXCL_ANALYSIS ) + g_string_append (str, "ANALYSIS"); + else + g_string_append (str, "LISTWISE"); + + + g_string_append_printf (str, "\n\t/CRITERIA=CIN(%g)", + tto->confidence_interval/100.0); +} diff --git a/src/ui/gui/t-test-options.h b/src/ui/gui/t-test-options.h new file mode 100644 index 00000000..fdb2d87c --- /dev/null +++ b/src/ui/gui/t-test-options.h @@ -0,0 +1,35 @@ +/* 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 T_TEST_OPTIONS_DIALOG +#define T_TEST_OPTIONS_DIALOG + + +struct tt_options_dialog; + + +void tt_options_dialog_run (struct tt_options_dialog *); + +struct tt_options_dialog * tt_options_dialog_create (GladeXML *, GtkWindow *); + +void tt_options_dialog_destroy (struct tt_options_dialog *); + + +void tt_options_dialog_append_syntax (struct tt_options_dialog *, GString *); + + +#endif diff --git a/src/ui/gui/t-test.glade b/src/ui/gui/t-test.glade index c5119ef0..afa954e4 100644 --- a/src/ui/gui/t-test.glade +++ b/src/ui/gui/t-test.glade @@ -43,18 +43,15 @@ 3 2 - + 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 - Define Groups - 0 + 0 + Grouping Variable: False @@ -62,54 +59,21 @@ - + True True - True GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - Options... - 0 - False - False 1 + 1 2 - 2 - 3 - GTK_FILL - 5 - - - - - True - True - True - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - 5 - - - - GTK_EXPAND - - - - - True - True - True - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - 5 - - 1 2 - @@ -157,15 +121,45 @@ - + + 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 + + + + GTK_EXPAND + + + + 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 - 0 - Grouping Variable: + Define Groups False @@ -173,22 +167,26 @@ - + True True + True GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + Options... + False + False 1 - 1 2 - 1 - 2 - + 2 + 3 + GTK_FILL + 5 @@ -231,16 +229,27 @@ 2 5 - + True + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + + + 1 + 2 + + + + + True + True GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - Group_2 value: - True + 1 + 2 1 2 - @@ -255,27 +264,16 @@ - + True - True GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + Group_2 value: + True - 1 - 2 1 2 - - - - - True - True - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - - - 1 - 2 + @@ -320,7 +318,6 @@ True GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - 0 True @@ -338,7 +335,6 @@ GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK Exclude cases _analysis by analysis True - 0 True True @@ -350,7 +346,6 @@ GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK Exclude cases _listwise True - 0 True True radiobutton1 @@ -400,4 +395,178 @@ + + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + One - Sample T Test + True + PSPPIRE_TABULAR + + + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + 2 + 4 + + + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + 0.059999998658895493 + 0 + + + True + True + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + True + 5 + + + + + 1 + 2 + 2 + + + + + True + True + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + Options... + + + 3 + 4 + 1 + 2 + + 5 + 5 + + + + + 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 + 0 + Test Value: + + + False + False + + + + + True + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + + + False + False + 5 + 1 + + + + + 2 + 3 + 1 + 2 + + + + + + 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 + + + + + 2 + 5 + 5 + + + + + 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 + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + Test Variable(s): + True + + + label_item + + + + + 2 + 3 + + + + + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + 5 + + + 3 + 4 + + + + +