X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fui%2Fgui%2Fpsppire-dialog-action-select.c;h=5ee493a45f7fa79190c1daba34f975bcece675a4;hb=8025dcc3e696a57445561ce81be44d29f3679ed3;hp=538087934f6073dfee62b42e2533d7d3bc7fab5d;hpb=facb4a1ad3c9e8b2cdf55824680eed2afb91aebe;p=pspp diff --git a/src/ui/gui/psppire-dialog-action-select.c b/src/ui/gui/psppire-dialog-action-select.c index 538087934f..5ee493a45f 100644 --- a/src/ui/gui/psppire-dialog-action-select.c +++ b/src/ui/gui/psppire-dialog-action-select.c @@ -1,5 +1,5 @@ /* PSPPIRE - a graphical user interface for PSPP. - Copyright (C) 2007, 2008, 2009, 2010, 2011, 2014, 2015 Free Software Foundation, Inc. + Copyright (C) 2007, 2008, 2009, 2010, 2011, 2014, 2015, 2020 Free Software Foundation, Inc. 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 @@ -172,7 +172,7 @@ sample_subdialog (GtkButton *b, gpointer data) response = psppire_dialog_run (PSPPIRE_DIALOG (scd->rsample_dialog)); - if ( response != PSPPIRE_RESPONSE_CONTINUE) + if (response != PSPPIRE_RESPONSE_CONTINUE) { g_signal_handlers_disconnect_by_func (G_OBJECT (scd->percent), @@ -192,7 +192,7 @@ sample_subdialog (GtkButton *b, gpointer data) { gchar *text; - if ( gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (scd->percent))) + if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (scd->percent))) { text = widget_printf (gettext(label1), scd->spinbutton); gtk_label_set_text (GTK_LABEL (scd->l0), text); @@ -231,7 +231,7 @@ range_subdialog (GtkButton *b, gpointer data) GTK_WINDOW (pda->dialog)); response = psppire_dialog_run (PSPPIRE_DIALOG (scd->range_subdialog)); - if ( response == PSPPIRE_RESPONSE_CONTINUE) + if (response == PSPPIRE_RESPONSE_CONTINUE) { gchar *text = widget_printf (_("%d thru %d"), scd->first, scd->last); gtk_label_set_text (GTK_LABEL (scd->l1), text); @@ -255,13 +255,27 @@ consistency (GtkSpinButton *spin, PsppireDialogActionSelect *act) } } + +/* When the all cases label button is clicked, set the corresponding button + to active. This is a convenience thing, since the button itself has + a very small area and is hard to find with the mouse pointer. */ +static gboolean +on_button_release (GtkWidget *w, GdkEvent *e, gpointer a) +{ + PsppireDialogActionSelect *act = PSPPIRE_DIALOG_ACTION_SELECT (a); + + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (act->radiobutton_all), TRUE); + + return FALSE; +} + static GtkBuilder * psppire_dialog_action_select_activate (PsppireDialogAction *a, GVariant *param) { PsppireDialogActionSelect *act = PSPPIRE_DIALOG_ACTION_SELECT (a); PsppireDialogAction *pda = PSPPIRE_DIALOG_ACTION (a); - GtkBuilder *xml = builder_new ( "select-cases.ui"); + GtkBuilder *xml = builder_new ("select-cases.ui"); pda->dialog = get_widget_assert (xml, "select-cases-dialog"); pda->source = get_widget_assert (xml, "select-cases-treeview"); @@ -301,8 +315,10 @@ psppire_dialog_action_select_activate (PsppireDialogAction *a, GVariant *param) act->radiobutton_filter = get_widget_assert (xml, "radiobutton-filter"); act->radiobutton_delete = get_widget_assert (xml, "radiobutton-delete"); + GtkWidget *all_cases_event = get_widget_assert (xml, "all-cases-event"); + g_signal_connect (all_cases_event, "button-release-event", G_CALLBACK (on_button_release), act); - GtkWidget *button_range = get_widget_assert (xml, "button-range"); + GtkWidget *button_range = get_widget_assert (xml, "button-range"); GtkWidget *button_sample = get_widget_assert (xml, "button-sample"); GtkWidget *button_if =get_widget_assert (xml, "button-if"); @@ -379,10 +395,10 @@ generate_syntax_filter (const PsppireDialogAction *a) ds_put_cstr (&dss, "EXECUTE.\n"); } - else if ( gtk_toggle_button_get_active + else if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (scd->radiobutton_sample))) { - if ( gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (scd->percent))) + if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (scd->percent))) { const double percentage = gtk_spin_button_get_value (GTK_SPIN_BUTTON (scd->spinbutton)); @@ -390,7 +406,7 @@ generate_syntax_filter (const PsppireDialogAction *a) ds_put_c_format (&dss, "COMPUTE %s = RV.UNIFORM (0,1) < %.*g.\n", filter, - DBL_DIG + 1, percentage / 100.0 ); + DBL_DIG + 1, percentage / 100.0); } else { @@ -422,13 +438,13 @@ generate_syntax_filter (const PsppireDialogAction *a) ds_put_c_format (&dss, "COMPUTE %s = $CASENUM.\n", - filter ); + filter); ds_put_c_format (&dss, "COMPUTE %s = %s <= %d\n", filter, filter, - n_cases ); + n_cases); ds_put_cstr (&dss, "EXECUTE.\n"); @@ -466,7 +482,7 @@ generate_syntax_delete (const PsppireDialogAction *a) gchar *text = NULL; struct string dss; - if ( gtk_toggle_button_get_active + if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (scd->radiobutton_all))) { return xstrdup ("\n"); @@ -474,12 +490,12 @@ generate_syntax_delete (const PsppireDialogAction *a) ds_init_empty (&dss); - if ( gtk_toggle_button_get_active + if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (scd->radiobutton_sample))) { ds_put_cstr (&dss, "SAMPLE "); - if ( gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (scd->percent))) + if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (scd->percent))) { const double percentage = gtk_spin_button_get_value (GTK_SPIN_BUTTON (scd->spinbutton)); @@ -496,7 +512,7 @@ generate_syntax_delete (const PsppireDialogAction *a) } } - else if ( gtk_toggle_button_get_active + else if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (scd->radiobutton_range))) { ds_put_c_format (&dss, @@ -532,13 +548,13 @@ generate_syntax (const PsppireDialogAction *a) PsppireDialogActionSelect *scd = PSPPIRE_DIALOG_ACTION_SELECT (a); /* In the simple case, all we need to do is cancel any existing filter */ - if ( gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (scd->radiobutton_all))) + if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (scd->radiobutton_all))) { return g_strdup ("FILTER OFF.\n"); } /* Are we filtering or deleting ? */ - if ( gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (scd->radiobutton_delete))) + if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (scd->radiobutton_delete))) { return generate_syntax_delete (a); }