X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fui%2Fgui%2Fpsppire-dialog-action-recode.c;h=5bbaf43df7bcc9c7adef3fa4f0af8fe00473ab7c;hb=b525a9596e60d5ae4c6c464b4a426b77ade3dd72;hp=7abe51df64c6f3e01a1150b745924046b648b41d;hpb=3dd0f6ae0d5eb73a2270a243e443c4ae03c2c16e;p=pspp diff --git a/src/ui/gui/psppire-dialog-action-recode.c b/src/ui/gui/psppire-dialog-action-recode.c index 7abe51df64..5bbaf43df7 100644 --- a/src/ui/gui/psppire-dialog-action-recode.c +++ b/src/ui/gui/psppire-dialog-action-recode.c @@ -1,5 +1,6 @@ /* PSPPIRE - a graphical user interface for PSPP. - Copyright (C) 2007, 2009, 2010, 2011, 2012, 2014, 2016 Free Software Foundation + Copyright (C) 2007, 2009, 2010, 2011, 2012, 2014, 2016, + 2020 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 @@ -72,7 +73,7 @@ new_value_copy (struct new_value *nv) { struct new_value *copy = g_memdup (nv, sizeof (*copy)); - if ( nv->type == NV_STRING ) + if (nv->type == NV_STRING) copy->v.s = xstrdup (nv->v.s); return copy; @@ -82,7 +83,7 @@ new_value_copy (struct new_value *nv) static void new_value_free (struct new_value *nv) { - if ( nv->type == NV_STRING ) + if (nv->type == NV_STRING) g_free (nv->v.s); g_free (nv); @@ -127,7 +128,7 @@ new_value_get_type (void) { static GType t = 0; - if (t == 0 ) + if (t == 0) { t = g_boxed_type_register_static ("psppire-recode-new-values", (GBoxedCopyFunc) new_value_copy, @@ -146,7 +147,7 @@ static void on_string_toggled (GtkToggleButton *b, PsppireDialogActionRecode *rd) { gboolean active; - if (! rd->input_var_is_string ) + if (! rd->input_var_is_string) return ; active = gtk_toggle_button_get_active (b); @@ -168,7 +169,7 @@ on_convert_toggled (GtkToggleButton *b, PsppireDialogActionRecode *rd) static void focus_value_entry (GtkWidget *w, PsppireDialogActionRecode *rd) { - if ( gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (w))) + if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (w))) gtk_widget_grab_focus (rd->new_value_entry); } @@ -180,7 +181,7 @@ set_acr (PsppireDialogActionRecode *rd) { const gchar *text; - if ( !gtk_toggle_button_get_active + if (!gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (rd->toggle[BUTTON_NEW_VALUE]))) { psppire_acr_set_enabled (PSPPIRE_ACR (rd->acr), TRUE); @@ -216,7 +217,7 @@ on_acr_selection_change (GtkTreeSelection *selection, gpointer data) struct old_value *ov = NULL; struct new_value *nv = NULL; - if ( ! gtk_tree_selection_get_selected (selection, &model, &iter) ) + if (! gtk_tree_selection_get_selected (selection, &model, &iter)) return; @@ -304,7 +305,7 @@ set_new_value (GValue *val, const PsppireDialogActionRecode *rd) if (PSPPIRE_DIALOG_ACTION_RECODE_CLASS (G_OBJECT_GET_CLASS (rd))->target_is_string (rd)) nv.type = NV_STRING; - if ( nv.type == NV_STRING ) + if (nv.type == NV_STRING) nv.v.s = g_strdup (text); else nv.v.v = g_strtod (text, 0); @@ -334,7 +335,7 @@ set_value (gint col, GValue *val, gpointer data) { PsppireDialogActionRecode *rd = data; - switch ( col ) + switch (col) { case COL_VALUE_OLD: set_old_value (val, rd); @@ -349,6 +350,16 @@ set_value (gint col, GValue *val, gpointer data) return TRUE; } +static void +set_old_and_new_button_sensitivity (GtkTreeSelection *sel, PsppireDialogActionRecode *rd) +{ + GtkTreeModel *model = NULL; + + GList *rows = gtk_tree_selection_get_selected_rows (sel, &model); + + gtk_widget_set_sensitive (rd->old_and_new, rows != NULL); +} + static void run_old_and_new_dialog (PsppireDialogActionRecode *rd) { @@ -388,7 +399,7 @@ run_old_and_new_dialog (PsppireDialogActionRecode *rd) psppire_acr_set_model (PSPPIRE_ACR (rd->acr), NULL); - if ( response == PSPPIRE_RESPONSE_CONTINUE ) + if (response == PSPPIRE_RESPONSE_CONTINUE) { g_object_unref (rd->value_map); rd->value_map = clone_list_store (local_store); @@ -435,128 +446,129 @@ psppire_dialog_action_recode_refresh (PsppireDialogAction *rd_) gtk_widget_set_sensitive (rd->change_button, FALSE); gtk_widget_set_sensitive (rd->new_name_entry, FALSE); gtk_widget_set_sensitive (rd->new_label_entry, FALSE); + gtk_widget_set_sensitive (rd->old_and_new, FALSE); gtk_list_store_clear (GTK_LIST_STORE (rd->value_map)); } -void -psppire_dialog_action_recode_pre_activate (PsppireDialogActionRecode *act, void (*populate_treeview) (PsppireDialogActionRecode *)) +GtkBuilder * +psppire_dialog_action_recode_pre_activate (PsppireDialogActionRecode *act, + void (*populate_treeview) (PsppireDialogActionRecode *)) { PsppireDialogAction *pda = PSPPIRE_DIALOG_ACTION (act); - GHashTable *thing = psppire_dialog_action_get_hash_table (pda); - GtkBuilder *xml = g_hash_table_lookup (thing, act); - if (!xml) - { - xml = builder_new ("recode.ui"); - g_hash_table_insert (thing, act, xml); + GtkBuilder *xml = builder_new ("recode.ui"); - pda->dialog = get_widget_assert (xml, "recode-dialog"); - pda->source = get_widget_assert (xml, "treeview1"); + pda->dialog = get_widget_assert (xml, "recode-dialog"); + pda->source = get_widget_assert (xml, "treeview1"); - GtkWidget *selector = get_widget_assert (xml, "psppire-selector1"); - GtkWidget *oldandnew = get_widget_assert (xml, "button1"); + GtkWidget *selector = get_widget_assert (xml, "psppire-selector1"); + act->old_and_new = get_widget_assert (xml, "button1"); + act->output_variable_box = get_widget_assert (xml,"frame4"); - act->output_variable_box = get_widget_assert (xml,"frame4"); + act->change_button = get_widget_assert (xml, "change-button"); + act->variable_treeview = get_widget_assert (xml, "treeview2"); + act->new_name_entry = get_widget_assert (xml, "dest-name-entry"); + act->new_label_entry = get_widget_assert (xml, "dest-label-entry"); - act->change_button = get_widget_assert (xml, "change-button"); - act->variable_treeview = get_widget_assert (xml, "treeview2"); - act->new_name_entry = get_widget_assert (xml, "dest-name-entry"); - act->new_label_entry = get_widget_assert (xml, "dest-label-entry"); + act->value_map = gtk_list_store_new (2, + old_value_get_type (), + new_value_get_type ()); - act->value_map = gtk_list_store_new (2, - old_value_get_type (), - new_value_get_type ()); + if (populate_treeview) + populate_treeview (act); - if (populate_treeview) - populate_treeview (act); + psppire_selector_set_allow (PSPPIRE_SELECTOR (selector), homogeneous_types); - psppire_selector_set_allow (PSPPIRE_SELECTOR (selector), homogeneous_types); + /* Set up the Old & New Values subdialog */ + { + act->string_button = get_widget_assert (xml, "checkbutton1"); + act->width_entry = get_widget_assert (xml, "spinbutton1"); - /* Set up the Old & New Values subdialog */ - { - act->string_button = get_widget_assert (xml, "checkbutton1"); - act->width_entry = get_widget_assert (xml, "spinbutton1"); + act->convert_button = get_widget_assert (xml, "checkbutton2"); - act->convert_button = get_widget_assert (xml, "checkbutton2"); + act->old_value_chooser = get_widget_assert (xml, "val-chooser"); - act->old_value_chooser = get_widget_assert (xml, "val-chooser"); + act->new_value_entry = get_widget_assert (xml, "entry1"); - act->new_value_entry = get_widget_assert (xml, "entry1"); + act->toggle[BUTTON_NEW_VALUE] = get_widget_assert (xml, "radiobutton1"); + act->toggle[BUTTON_NEW_SYSMIS] = get_widget_assert (xml, "radiobutton2"); + act->toggle[BUTTON_NEW_COPY] = get_widget_assert (xml, "radiobutton3"); - act->toggle[BUTTON_NEW_VALUE] = get_widget_assert (xml, "radiobutton1"); - act->toggle[BUTTON_NEW_SYSMIS] = get_widget_assert (xml, "radiobutton2"); - act->toggle[BUTTON_NEW_COPY] = get_widget_assert (xml, "radiobutton3"); + act->new_copy_label = get_widget_assert (xml, "label3"); + act->strings_box = get_widget_assert (xml, "table3"); - act->new_copy_label = get_widget_assert (xml, "label3"); - act->strings_box = get_widget_assert (xml, "table3"); + act->old_and_new_dialog = + PSPPIRE_DIALOG (get_widget_assert (xml, "old-new-values-dialog")); - act->old_and_new_dialog = - PSPPIRE_DIALOG (get_widget_assert (xml, "old-new-values-dialog")); + act->acr = get_widget_assert (xml, "psppire-acr1"); - act->acr = get_widget_assert (xml, "psppire-acr1"); + g_signal_connect_swapped (act->toggle[BUTTON_NEW_VALUE], "toggled", + G_CALLBACK (set_acr), act); - g_signal_connect_swapped (act->toggle[BUTTON_NEW_VALUE], "toggled", - G_CALLBACK (set_acr), act); + g_signal_connect_after (act->toggle[BUTTON_NEW_VALUE], "toggled", + G_CALLBACK (focus_value_entry), act); - g_signal_connect_after (act->toggle[BUTTON_NEW_VALUE], "toggled", - G_CALLBACK (focus_value_entry), act); + g_signal_connect_swapped (act->new_value_entry, "changed", + G_CALLBACK (set_acr), act); - g_signal_connect_swapped (act->new_value_entry, "changed", - G_CALLBACK (set_acr), act); + { + GtkTreeSelection *sel; + /* Remove the ACR's default column. We don't like it */ + GtkTreeViewColumn *column = gtk_tree_view_get_column (PSPPIRE_ACR(act->acr)->tv, 0); + gtk_tree_view_remove_column (PSPPIRE_ACR (act->acr)->tv, column); - { - GtkTreeSelection *sel; - /* Remove the ACR's default column. We don't like it */ - GtkTreeViewColumn *column = gtk_tree_view_get_column (PSPPIRE_ACR(act->acr)->tv, 0); - gtk_tree_view_remove_column (PSPPIRE_ACR (act->acr)->tv, column); + column = + gtk_tree_view_column_new_with_attributes (_("Old"), + gtk_cell_renderer_text_new (), + "text", 0, + NULL); - column = - gtk_tree_view_column_new_with_attributes (_("Old"), - gtk_cell_renderer_text_new (), - "text", 0, - NULL); + gtk_tree_view_append_column (PSPPIRE_ACR (act->acr)->tv, column); - gtk_tree_view_append_column (PSPPIRE_ACR (act->acr)->tv, column); + column = + gtk_tree_view_column_new_with_attributes (_("New"), + gtk_cell_renderer_text_new (), + "text", 1, + NULL); - column = - gtk_tree_view_column_new_with_attributes (_("New"), - gtk_cell_renderer_text_new (), - "text", 1, - NULL); + gtk_tree_view_append_column (PSPPIRE_ACR(act->acr)->tv, column); + g_object_set (PSPPIRE_ACR (act->acr)->tv, "headers-visible", TRUE, NULL); - gtk_tree_view_append_column (PSPPIRE_ACR(act->acr)->tv, column); - g_object_set (PSPPIRE_ACR (act->acr)->tv, "headers-visible", TRUE, NULL); + sel = gtk_tree_view_get_selection (GTK_TREE_VIEW (PSPPIRE_ACR(act->acr)->tv)); + g_signal_connect (sel, "changed", + G_CALLBACK (on_acr_selection_change), act); + } - sel = gtk_tree_view_get_selection (GTK_TREE_VIEW (PSPPIRE_ACR(act->acr)->tv)); - g_signal_connect (sel, "changed", - G_CALLBACK (on_acr_selection_change), act); - } + g_signal_connect_swapped (act->old_and_new, "clicked", + G_CALLBACK (run_old_and_new_dialog), act); - g_signal_connect_swapped (oldandnew, "clicked", - G_CALLBACK (run_old_and_new_dialog), act); + GtkTreeSelection *sel = + gtk_tree_view_get_selection (GTK_TREE_VIEW (act->variable_treeview)); + g_signal_connect (sel, "changed", + G_CALLBACK (set_old_and_new_button_sensitivity), act); - g_signal_connect (act->toggle[BUTTON_NEW_VALUE], "toggled", - G_CALLBACK (toggle_sensitivity), act->new_value_entry); + g_signal_connect (act->toggle[BUTTON_NEW_VALUE], "toggled", + G_CALLBACK (toggle_sensitivity), act->new_value_entry); - g_signal_connect (act->string_button, "toggled", - G_CALLBACK (toggle_sensitivity), act->width_entry); + g_signal_connect (act->string_button, "toggled", + G_CALLBACK (toggle_sensitivity), act->width_entry); - g_signal_connect (act->string_button, "toggled", - G_CALLBACK (on_string_toggled), act); + g_signal_connect (act->string_button, "toggled", + G_CALLBACK (on_string_toggled), act); - g_signal_connect (act->convert_button, "toggled", - G_CALLBACK (on_convert_toggled), act); - } + g_signal_connect (act->convert_button, "toggled", + G_CALLBACK (on_convert_toggled), act); } + return xml; } /* Generate a syntax fragment for NV and append it to STR */ @@ -608,7 +620,7 @@ psppire_dialog_action_recode_generate_syntax (const PsppireDialogAction *act, ds_put_cstr (&dds, "\n\t"); - if ( gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (rd->convert_button))) + if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (rd->convert_button))) { ds_put_cstr (&dds, "(CONVERT) "); }