/* PSPPIRE - a graphical user interface for PSPP.
- Copyright (C) 2007, 2009, 2010, 2011, 2012 Free Software Foundation
+ Copyright (C) 2007, 2009, 2010, 2011, 2012, 2016 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
if (act->grp_var)
{
- int width = var_get_width (act->grp_var);
+ const int width = act->grp_var_width;
value_destroy (&act->cut_point, width);
value_destroy (&act->grp_val[0], width);
value_destroy (&act->grp_val[1], width);
act->grp_var = NULL;
+ act->grp_var_width = -1;
}
psppire_value_entry_set_variable (PSPPIRE_VALUE_ENTRY (act->dg_grp_entry[0]), NULL);
{
PsppireDialogActionIndepSamps *act = data;
+ if (act->grp_var == NULL)
+ return FALSE;
+
if (gtk_toggle_button_get_active
(GTK_TOGGLE_BUTTON (act->dg_values_toggle_button)))
{
PsppireDialogAction *da = PSPPIRE_DIALOG_ACTION (act);
GtkWidget *parent1 = gtk_widget_get_parent (act->dg_table1);
GtkWidget *parent2 = gtk_widget_get_parent (act->dg_table2);
-
+
+ g_return_if_fail (act->grp_var);
+
if (parent1)
gtk_container_remove (GTK_CONTAINER (parent1), act->dg_table1);
if (parent2)
gtk_container_remove (GTK_CONTAINER (parent2), act->dg_table2);
- if ( var_is_numeric (act->grp_var))
+ if (var_is_numeric (act->grp_var))
{
gtk_grid_attach (GTK_GRID (act->dg_table1), act->dg_table2,
1, 1, 1, 1);
PsppireDialogAction *da = PSPPIRE_DIALOG_ACTION (act);
const gchar *text = gtk_entry_get_text (entry);
- const struct variable *v = psppire_dict_lookup_var (da->dict, text);
+ const struct variable *v = da->dict ? psppire_dict_lookup_var (da->dict, text) : NULL;
gtk_widget_set_sensitive (act->define_groups_button, v != NULL);
if (act->grp_var)
{
- int width = var_get_width (act->grp_var);
+ const int width = act->grp_var_width;
value_destroy (&act->cut_point, width);
value_destroy (&act->grp_val[0], width);
value_destroy (&act->grp_val[1], width);
}
else
{
- act->cut_point.short_string[0] = '\0';
- act->grp_val[0].short_string[0] = '\0';
- act->grp_val[1].short_string[0] = '\0';
+ value_str_rw (&act->cut_point, width)[0] = '\0';
+ value_str_rw (&act->grp_val[0], width)[0] = '\0';
+ value_str_rw (&act->grp_val[1], width)[0] = '\0';
}
}
act->grp_var = v;
+ act->grp_var_width = v ? var_get_width (v) : -1;
}
static void
g_signal_connect (act->group_var_entry, "changed",
G_CALLBACK (on_grp_var_change), act);
+ on_grp_var_change (GTK_ENTRY (act->group_var_entry), act);
+
if (PSPPIRE_DIALOG_ACTION_CLASS (psppire_dialog_action_indep_samps_parent_class)->activate)
PSPPIRE_DIALOG_ACTION_CLASS (psppire_dialog_action_indep_samps_parent_class)->activate (pda);
}
psppire_dialog_action_indep_samps_init (PsppireDialogActionIndepSamps *act)
{
act->grp_var = NULL;
+ act->grp_var_width = -1;
act->group_defn = GROUPS_UNDEF;
}