/* 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 (NULL == act->grp_var)
return FALSE;
- if ( 0 == gtk_tree_model_get_iter_first (vars, ¬used))
+ if (0 == gtk_tree_model_get_iter_first (vars, ¬used))
return FALSE;
- if ( act->group_defn == GROUPS_UNDEF)
+ if (act->group_defn == GROUPS_UNDEF)
return FALSE;
return TRUE;
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);
{
gboolean result = FALSE;
- if (var)
+ if (var)
{
union value val;
const int width = var_get_width (var);
value_init (&val, width);
- if ( psppire_value_entry_get_value (ve, &val, width))
+ if (psppire_value_entry_get_value (ve, &val, width))
{
if (var_is_value_missing (var, &val, MV_SYSTEM))
{
{
PsppireDialogActionIndepSamps *act = data;
+ if (act->grp_var == NULL)
+ return FALSE;
+
if (gtk_toggle_button_get_active
(GTK_TOGGLE_BUTTON (act->dg_values_toggle_button)))
{
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_table_attach_defaults (GTK_TABLE (act->dg_table1), act->dg_table2,
- 1, 2, 1, 2);
+ gtk_grid_attach (GTK_GRID (act->dg_table1), act->dg_table2,
+ 1, 1, 1, 1);
gtk_container_add (GTK_CONTAINER (act->dg_box), act->dg_table1);
}
psppire_value_entry_set_variable (PSPPIRE_VALUE_ENTRY (act->dg_grp_entry[1]), act->grp_var);
psppire_value_entry_set_variable (PSPPIRE_VALUE_ENTRY (act->dg_cut_point_entry), act->grp_var);
- if ( act->group_defn != GROUPS_CUT_POINT )
+ if (act->group_defn != GROUPS_CUT_POINT )
{
gtk_toggle_button_set_active
(GTK_TOGGLE_BUTTON (act->dg_cut_point_toggle_button), TRUE);
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';
+ act->cut_point.s[0] = '\0';
+ act->grp_val[0].s[0] = '\0';
+ act->grp_val[1].s[0] = '\0';
}
}
act->grp_var = v;
+ act->grp_var_width = v ? var_get_width (v) : -1;
}
static void
}
-static void
-psppire_dialog_action_indep_samps_activate (GtkAction *a)
+static GtkBuilder *
+psppire_dialog_action_indep_samps_activate (PsppireDialogAction *a, GVariant *param)
{
PsppireDialogActionIndepSamps *act = PSPPIRE_DIALOG_ACTION_INDEP_SAMPS (a);
PsppireDialogAction *pda = PSPPIRE_DIALOG_ACTION (a);
- GtkBuilder *xml = builder_new ("indep-samples.ui");
+ GtkBuilder *xml = builder_new ( "indep-samples.ui");
- pda->dialog = get_widget_assert (xml,"independent-samples-dialog");
+ pda->dialog = get_widget_assert (xml,"independent-samples-dialog");
pda->source = get_widget_assert (xml, "indep-samples-treeview1");
act->define_groups_button = get_widget_assert (xml, "define-groups-button");
act->options_button = get_widget_assert (xml, "indep-samples-options-button");
g_signal_connect (act->dg_values_toggle_button, "toggled",
G_CALLBACK (set_group_criterion_type), act);
-
- g_object_unref (xml);
-
psppire_dialog_action_set_refresh (pda, refresh);
psppire_dialog_action_set_valid_predicate (pda,
g_signal_connect (act->group_var_entry, "changed",
G_CALLBACK (on_grp_var_change), 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);
+ on_grp_var_change (GTK_ENTRY (act->group_var_entry), act);
+
+ return xml;
}
static char *
-generate_syntax (PsppireDialogAction *a)
+generate_syntax (const PsppireDialogAction *a)
{
PsppireDialogActionIndepSamps *act = PSPPIRE_DIALOG_ACTION_INDEP_SAMPS (a);
gchar *text;
g_string_append (str, "(");
{
- const union value *val =
+ const union value *val =
(act->group_defn == GROUPS_VALUES) ?
&act->grp_val[0] :
&act->cut_point;
- struct string strx;
+ struct string strx;
ds_init_empty (&strx);
syntax_gen_value (&strx, val, var_get_width (act->grp_var),
var_get_print_format (act->grp_var));
-
+
g_string_append (str, ds_cstr (&strx));
ds_destroy (&strx);
}
{
struct string strx;
ds_init_empty (&strx);
-
+
syntax_gen_value (&strx, &act->grp_val[1], var_get_width (act->grp_var),
var_get_print_format (act->grp_var));
-
+
g_string_append (str, ds_cstr (&strx));
ds_destroy (&strx);
}
static void
psppire_dialog_action_indep_samps_class_init (PsppireDialogActionIndepSampsClass *class)
{
- GtkActionClass *action_class = GTK_ACTION_CLASS (class);
-
- action_class->activate = psppire_dialog_action_indep_samps_activate;
+ PSPPIRE_DIALOG_ACTION_CLASS (class)->initial_activate = psppire_dialog_action_indep_samps_activate;
PSPPIRE_DIALOG_ACTION_CLASS (class)->generate_syntax = generate_syntax;
}
psppire_dialog_action_indep_samps_init (PsppireDialogActionIndepSamps *act)
{
act->grp_var = NULL;
+ act->grp_var_width = -1;
act->group_defn = GROUPS_UNDEF;
}