From e9f1ea2a9970b31d6c1ff2aeba1fc9f4edccdb8b Mon Sep 17 00:00:00 2001 From: John Darrington Date: Sat, 21 Feb 2015 13:27:24 +0100 Subject: [PATCH] Frequencies Dialog: Add the ability to specify a bar chart --- src/ui/gui/frequencies.ui | 132 ++++++++++++------ .../gui/psppire-dialog-action-frequencies.c | 47 +++++-- .../gui/psppire-dialog-action-frequencies.h | 3 + 3 files changed, 126 insertions(+), 56 deletions(-) diff --git a/src/ui/gui/frequencies.ui b/src/ui/gui/frequencies.ui index 177fd01c16..b1708f7649 100644 --- a/src/ui/gui/frequencies.ui +++ b/src/ui/gui/frequencies.ui @@ -607,6 +607,51 @@ 1 + + + True + + + True + Scale: + + + 0 + + + + + _Frequencies + True + True + False + True + True + True + + + 1 + + + + + _Percentages + True + True + False + True + True + freqs + + + 2 + + + + + 2 + + @@ -662,49 +707,46 @@ 1 + + + + + + + True + <b>Histograms</b> + True + + + + + 1 + + + + + True + 0 + none + + + True + 12 + + + True + vertical - + + Draw _bar charts True - - - True - Scale: - - - 0 - - - - - _Frequencies - True - True - False - True - True - True - - - 1 - - - - - _Percentages - True - True - False - True - True - freqs - - - 2 - - + True + False + True + True - 2 + 0 @@ -712,17 +754,17 @@ - + True - <b>Histograms</b> + <b>Bar Charts</b> True - + - 1 + 2 - + True @@ -775,7 +817,7 @@ - 2 + 3 diff --git a/src/ui/gui/psppire-dialog-action-frequencies.c b/src/ui/gui/psppire-dialog-action-frequencies.c index a5c5010a09..78400effcf 100644 --- a/src/ui/gui/psppire-dialog-action-frequencies.c +++ b/src/ui/gui/psppire-dialog-action-frequencies.c @@ -1,18 +1,18 @@ /* PSPPIRE - a graphical user interface for PSPP. -Copyright (C) 2012 Free Software Foundation + 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 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. + 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 . */ + You should have received a copy of the GNU General Public License + along with this program. If not, see . */ #include @@ -178,6 +178,10 @@ on_charts_clicked (PsppireDialogActionFrequencies *fd) g_signal_emit_by_name (fd->pie, "toggled"); + + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (fd->bar), fd->charts_opts_draw_bar); + g_signal_emit_by_name (fd->bar, "toggled"); + ret = psppire_dialog_run (PSPPIRE_DIALOG (fd->charts_dialog)); if ( ret == PSPPIRE_RESPONSE_CONTINUE ) @@ -198,6 +202,9 @@ on_charts_clicked (PsppireDialogActionFrequencies *fd) fd->charts_opts_draw_pie = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (fd->pie)); fd->charts_opts_pie_include_missing = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (fd->pie_include_missing)); + + + fd->charts_opts_draw_bar = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (fd->bar)); } } @@ -295,6 +302,7 @@ psppire_dialog_action_frequencies_activate (GtkAction * a) act->charts_opts_draw_normal = false; act->charts_opts_scale = FRQ_FREQ; act->charts_opts_draw_pie = false; + act->charts_opts_draw_bar = false; act->charts_opts_pie_include_missing = false; act->freqs = get_widget_assert (xml, "freqs"); @@ -317,6 +325,8 @@ psppire_dialog_action_frequencies_activate (GtkAction * a) act->pie = (get_widget_assert (xml, "pie")); act->pie_include_missing = get_widget_assert (xml, "pie-include-missing"); + act->bar = (get_widget_assert (xml, "bar")); + g_object_unref (xml); @@ -461,6 +471,21 @@ generate_syntax (PsppireDialogAction * a) ds_put_c_format (&str, " MAX(%.15g)", fd->charts_opts_max); } + + if (fd->charts_opts_draw_bar) + { + ds_put_cstr (&str, "\n\t/BARCHART="); + + if (fd->charts_opts_scale == FRQ_PERCENT) + ds_put_cstr (&str, " PERCENT"); + + if (fd->charts_opts_use_min) + ds_put_c_format (&str, " MIN(%.15g)", fd->charts_opts_min); + if (fd->charts_opts_use_max) + ds_put_c_format (&str, " MAX(%.15g)", fd->charts_opts_max); + } + + ds_put_cstr (&str, ".\n"); text = ds_steal_cstr (&str); diff --git a/src/ui/gui/psppire-dialog-action-frequencies.h b/src/ui/gui/psppire-dialog-action-frequencies.h index ea801581ad..a06eee3e0d 100644 --- a/src/ui/gui/psppire-dialog-action-frequencies.h +++ b/src/ui/gui/psppire-dialog-action-frequencies.h @@ -126,6 +126,7 @@ struct _PsppireDialogActionFrequencies gboolean charts_opts_draw_pie; gboolean charts_opts_pie_include_missing; + gboolean charts_opts_draw_bar; enum frq_scale charts_opts_scale; @@ -134,6 +135,8 @@ struct _PsppireDialogActionFrequencies GtkWidget *pie; GtkWidget *pie_include_missing; + GtkWidget *bar; + GtkWidget *charts_dialog; }; -- 2.30.2