X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fui%2Fgui%2Fpsppire-dialog-action-logistic.c;h=8640beef9bb3e23f3d22565f6459eb3e0249a381;hb=cdfb21de2cbbf921b4e1fe0662439da1c460eabc;hp=1908bd98c79c2532fecb0827ecec0f8ce16a4594;hpb=78cffcbf683cd66a6717d40854825d731fd4f01d;p=pspp diff --git a/src/ui/gui/psppire-dialog-action-logistic.c b/src/ui/gui/psppire-dialog-action-logistic.c index 1908bd98c7..8640beef9b 100644 --- a/src/ui/gui/psppire-dialog-action-logistic.c +++ b/src/ui/gui/psppire-dialog-action-logistic.c @@ -96,13 +96,19 @@ on_opts_clicked (PsppireDialogActionLogistic *act) static void -psppire_dialog_action_logistic_activate (GtkAction *a) +psppire_dialog_action_logistic_activate (PsppireDialogAction *a) { PsppireDialogActionLogistic *act = PSPPIRE_DIALOG_ACTION_LOGISTIC (a); PsppireDialogAction *pda = PSPPIRE_DIALOG_ACTION (a); GtkWidget *opts_button; - GtkBuilder *xml = builder_new ("logistic.ui"); + GHashTable *thing = psppire_dialog_action_get_hash_table (pda); + GtkBuilder *xml = g_hash_table_lookup (thing, a); + if (!xml) + { + xml = builder_new ("logistic.ui"); + g_hash_table_insert (thing, a, xml); + } pda->dialog = get_widget_assert (xml, "logistic-dialog"); pda->source = get_widget_assert (xml, "dict-view"); @@ -134,8 +140,6 @@ psppire_dialog_action_logistic_activate (GtkAction *a) gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON(act->conf_checkbox), TRUE); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON(act->conf_checkbox), FALSE); - g_object_unref (xml); - psppire_dialog_action_set_refresh (pda, refresh); psppire_dialog_action_set_valid_predicate (pda, @@ -152,38 +156,38 @@ generate_syntax (PsppireDialogAction *a) { PsppireDialogActionLogistic *rd = PSPPIRE_DIALOG_ACTION_LOGISTIC (a); gchar *text = NULL; - struct string str; + const gchar *dep = gtk_entry_get_text (GTK_ENTRY (rd->dep_var)); - ds_init_cstr (&str, "LOGISTIC REGRESSION "); + GString *strx = g_string_new ("LOGISTIC REGRESSION "); - ds_put_cstr (&str, dep); + g_string_append (strx, dep); - ds_put_cstr (&str, " WITH "); + g_string_append (strx, " WITH "); - psppire_var_view_append_names_str (PSPPIRE_VAR_VIEW (rd->indep_vars), 0, &str); + psppire_var_view_append_names (PSPPIRE_VAR_VIEW (rd->indep_vars), 0, strx); - ds_put_cstr (&str, "\n\t/CRITERIA ="); + g_string_append (strx, "\n\t/CRITERIA ="); - syntax_gen_pspp (&str, " CUT(%g)", rd->cut_point); + g_string_append_printf (strx, " CUT(%g)", rd->cut_point); - syntax_gen_pspp (&str, " ITERATE(%d)", rd->max_iterations); + g_string_append_printf (strx, " ITERATE(%d)", rd->max_iterations); if (rd->conf) { - syntax_gen_pspp (&str, "\n\t/PRINT = CI(%g)", rd->conf_level); + g_string_append_printf (strx, "\n\t/PRINT = CI(%g)", rd->conf_level); } if (rd->constant) - ds_put_cstr (&str, "\n\t/NOORIGIN"); + g_string_append (strx, "\n\t/NOORIGIN"); else - ds_put_cstr (&str, "\n\t/ORIGIN"); + g_string_append (strx, "\n\t/ORIGIN"); - ds_put_cstr (&str, ".\n"); + g_string_append (strx, ".\n"); - text = ds_steal_cstr (&str); + text = strx->str; - ds_destroy (&str); + g_string_free (strx, FALSE); return text; } @@ -191,9 +195,7 @@ generate_syntax (PsppireDialogAction *a) static void psppire_dialog_action_logistic_class_init (PsppireDialogActionLogisticClass *class) { - GtkActionClass *action_class = GTK_ACTION_CLASS (class); - - action_class->activate = psppire_dialog_action_logistic_activate; + psppire_dialog_action_set_activation (class, psppire_dialog_action_logistic_activate); PSPPIRE_DIALOG_ACTION_CLASS (class)->generate_syntax = generate_syntax; }