X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fui%2Fgui%2Fpsppire-dialog-action-indep-samps.c;h=f0995e92e85befe5918b06db37371519a08812d7;hb=052cf5f9ffd4fbbda175fcb0417352b332fabc37;hp=3d8284eac5e1ff3087a74ab6550621d01e516c2e;hpb=eed5852df052914a45dc2e2419c9b5f040315a3e;p=pspp diff --git a/src/ui/gui/psppire-dialog-action-indep-samps.c b/src/ui/gui/psppire-dialog-action-indep-samps.c index 3d8284eac5..f0995e92e8 100644 --- a/src/ui/gui/psppire-dialog-action-indep-samps.c +++ b/src/ui/gui/psppire-dialog-action-indep-samps.c @@ -49,10 +49,10 @@ dialog_state_valid (gpointer data) 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; @@ -74,6 +74,7 @@ refresh (PsppireDialogAction *da) value_destroy (&act->cut_point, width); value_destroy (&act->grp_val[0], width); value_destroy (&act->grp_val[1], width); + var_unref (act->grp_var); act->grp_var = NULL; act->grp_var_width = -1; } @@ -96,13 +97,13 @@ value_entry_contains_invalid (PsppireValueEntry *ve, const struct variable *var) { 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)) { @@ -157,9 +158,9 @@ run_define_groups (PsppireDialogActionIndepSamps *act) 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); @@ -187,7 +188,7 @@ run_define_groups (PsppireDialogActionIndepSamps *act) 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); @@ -243,7 +244,7 @@ on_grp_var_change (GtkEntry *entry, PsppireDialogActionIndepSamps *act) PsppireDialogAction *da = PSPPIRE_DIALOG_ACTION (act); const gchar *text = gtk_entry_get_text (entry); - const struct variable *v = da->dict ? psppire_dict_lookup_var (da->dict, text) : NULL; + struct variable *v = da->dict ? psppire_dict_lookup_var (da->dict, text) : NULL; gtk_widget_set_sensitive (act->define_groups_button, v != NULL); @@ -270,13 +271,17 @@ on_grp_var_change (GtkEntry *entry, PsppireDialogActionIndepSamps *act) } else { - 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->cut_point.s[0] = '\0'; + act->grp_val[0].s[0] = '\0'; + act->grp_val[1].s[0] = '\0'; } } - act->grp_var = v; + struct variable *old_grp_var = act->grp_var; + if (v) + act->grp_var = var_ref (v); + if (old_grp_var) + var_unref (old_grp_var); act->grp_var_width = v ? var_get_width (v) : -1; } @@ -293,21 +298,15 @@ set_group_criterion_type (GtkToggleButton *button, } -static void -psppire_dialog_action_indep_samps_activate (PsppireDialogAction *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); - GHashTable *thing = psppire_dialog_action_get_hash_table (pda); - GtkBuilder *xml = g_hash_table_lookup (thing, a); - if (!xml) - { - xml = builder_new ("indep-samples.ui"); - g_hash_table_insert (thing, a, xml); - } + 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"); @@ -354,8 +353,7 @@ psppire_dialog_action_indep_samps_activate (PsppireDialogAction *a) 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); + return xml; } @@ -379,16 +377,16 @@ generate_syntax (const PsppireDialogAction *a) 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); } @@ -400,10 +398,10 @@ generate_syntax (const PsppireDialogAction *a) { 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); } @@ -426,7 +424,7 @@ generate_syntax (const PsppireDialogAction *a) static void psppire_dialog_action_indep_samps_class_init (PsppireDialogActionIndepSampsClass *class) { - psppire_dialog_action_set_activation (class, 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; }