/* 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 <http://www.gnu.org/licenses/>. */
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
#include <config.h>
#include "psppire-dialog.h"
#include "builder-wrapper.h"
-#include "checkbox-treeview.h"
+#include "psppire-checkbox-treeview.h"
#include "psppire-dict.h"
#include "libpspp/str.h"
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 )
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));
}
}
PsppireDialogActionFrequencies *act = PSPPIRE_DIALOG_ACTION_FREQUENCIES (a);
PsppireDialogAction *pda = PSPPIRE_DIALOG_ACTION (a);
- GtkBuilder *xml = builder_new ("frequencies.ui");
+ GHashTable *thing = psppire_dialog_action_get_pointer (pda);
+ GtkBuilder *xml = g_hash_table_lookup (thing, a);
+ if (!xml)
+ {
+ xml = builder_new ("frequencies.ui");
+ g_hash_table_insert (thing, a, xml);
+ }
GtkWidget *stats_treeview = get_widget_assert (xml, "stats-treeview");
GtkWidget *tables_button = get_widget_assert (xml, "tables-button");
act->stat_vars = get_widget_assert (xml, "var-treeview");
- put_checkbox_items_in_treeview (GTK_TREE_VIEW (stats_treeview),
+ psppire_checkbox_treeview_populate (PSPPIRE_CHECKBOX_TREEVIEW (stats_treeview),
B_FS_DEFAULT, N_FREQUENCY_STATS, stats);
act->stats = gtk_tree_view_get_model (GTK_TREE_VIEW (stats_treeview));
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");
act->pie = (get_widget_assert (xml, "pie"));
act->pie_include_missing = get_widget_assert (xml, "pie-include-missing");
-
- g_object_unref (xml);
-
+ act->bar = (get_widget_assert (xml, "bar"));
act->tables_opts_order = FRQ_AVALUE;
act->tables_opts_table = FRQ_TABLE;
gboolean ok;
GtkTreeIter iter;
guint selected = 0;
+ struct string str;
- GString *string = g_string_new ("FREQUENCIES");
+ ds_init_cstr (&str, "FREQUENCIES");
- g_string_append (string, "\n\t/VARIABLES=");
- psppire_var_view_append_names (PSPPIRE_VAR_VIEW (fd->stat_vars), 0, string);
+ ds_put_cstr (&str, "\n\t/VARIABLES=");
+ psppire_var_view_append_names_str (PSPPIRE_VAR_VIEW (fd->stat_vars), 0, &str);
- g_string_append (string, "\n\t/FORMAT=");
+ ds_put_cstr (&str, "\n\t/FORMAT=");
switch (fd->tables_opts_order)
{
case FRQ_AVALUE:
- g_string_append (string, "AVALUE");
+ ds_put_cstr (&str, "AVALUE");
break;
case FRQ_DVALUE:
- g_string_append (string, "DVALUE");
+ ds_put_cstr (&str, "DVALUE");
break;
case FRQ_ACOUNT:
- g_string_append (string, "AFREQ");
+ ds_put_cstr (&str, "AFREQ");
break;
case FRQ_DCOUNT:
- g_string_append (string, "DFREQ");
+ ds_put_cstr (&str, "DFREQ");
break;
default:
g_assert_not_reached ();
}
- g_string_append (string, " ");
+ ds_put_cstr (&str, " ");
switch (fd->tables_opts_table)
{
case FRQ_TABLE:
- g_string_append (string, "TABLE");
+ ds_put_cstr (&str, "TABLE");
break;
case FRQ_NOTABLE:
- g_string_append (string, "NOTABLE");
+ ds_put_cstr (&str, "NOTABLE");
break;
case FRQ_LIMIT:
- g_string_append_printf (string, "LIMIT (%d)", fd->tables_opts_limit);
+ ds_put_c_format (&str, "LIMIT (%d)", fd->tables_opts_limit);
break;
}
if (selected != B_FS_DEFAULT)
{
- g_string_append (string, "\n\t/STATISTICS=");
+ ds_put_cstr (&str, "\n\t/STATISTICS=");
if (selected == B_FS_ALL)
- g_string_append (string, "ALL");
+ ds_put_cstr (&str, "ALL");
else if (selected == 0)
- g_string_append (string, "NONE");
+ ds_put_cstr (&str, "NONE");
else
{
int n = 0;
if ((selected & B_FS_DEFAULT) == B_FS_DEFAULT)
{
- g_string_append (string, "DEFAULT");
+ ds_put_cstr (&str, "DEFAULT");
selected &= ~B_FS_DEFAULT;
n++;
}
if (selected & (1u << i))
{
if (n++)
- g_string_append (string, " ");
- g_string_append (string, stats[i].name);
+ ds_put_cstr (&str, " ");
+ ds_put_cstr (&str, stats[i].name);
}
}
}
if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (fd->include_missing)))
- g_string_append (string, "\n\t/MISSING=INCLUDE");
+ ds_put_cstr (&str, "\n\t/MISSING=INCLUDE");
if (fd->charts_opts_draw_hist)
{
- g_string_append (string, "\n\t/HISTOGRAM=");
- g_string_append (string,
+ ds_put_cstr (&str, "\n\t/HISTOGRAM=");
+ ds_put_cstr (&str,
fd->charts_opts_draw_normal ? "NORMAL" : "NONORMAL");
if (fd->charts_opts_scale == FRQ_PERCENT)
- g_string_append (string, " PERCENT");
+ ds_put_cstr (&str, " PERCENT");
if (fd->charts_opts_use_min)
- g_string_append_printf (string, " MIN(%.15g)", fd->charts_opts_min);
+ ds_put_c_format (&str, " MIN(%.15g)", fd->charts_opts_min);
if (fd->charts_opts_use_max)
- g_string_append_printf (string, " MAX(%.15g)", fd->charts_opts_max);
+ ds_put_c_format (&str, " MAX(%.15g)", fd->charts_opts_max);
}
if (fd->charts_opts_draw_pie)
{
- g_string_append (string, "\n\t/PIECHART=");
+ ds_put_cstr (&str, "\n\t/PIECHART=");
if (fd->charts_opts_pie_include_missing)
- g_string_append (string, " MISSING");
+ ds_put_cstr (&str, " MISSING");
+
+ 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);
+ }
+
+
+ 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)
- g_string_append_printf (string, " MIN(%.15g)", fd->charts_opts_min);
+ ds_put_c_format (&str, " MIN(%.15g)", fd->charts_opts_min);
if (fd->charts_opts_use_max)
- g_string_append_printf (string, " MAX(%.15g)", fd->charts_opts_max);
+ ds_put_c_format (&str, " MAX(%.15g)", fd->charts_opts_max);
}
- g_string_append (string, ".\n");
- text = string->str;
+ ds_put_cstr (&str, ".\n");
+
+ text = ds_steal_cstr (&str);
- g_string_free (string, FALSE);
+ ds_destroy (&str);
return text;
}
static void
psppire_dialog_action_frequencies_class_init (PsppireDialogActionFrequenciesClass *class)
{
- GtkActionClass *action_class = GTK_ACTION_CLASS (class);
-
- action_class->activate = psppire_dialog_action_frequencies_activate;
-
+ psppire_dialog_action_set_activation (class, psppire_dialog_action_frequencies_activate);
PSPPIRE_DIALOG_ACTION_CLASS (class)->generate_syntax = generate_syntax;
}