X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fui%2Fgui%2Fpsppire-dialog-action-crosstabs.c;h=6ea08a88cbade665dcc2f59256263233e9f68fc7;hb=443d13b24337b93e4d88db9518b3bd043716439e;hp=b0b08b5ce6fd9356f58349e031098aa308fd891a;hpb=e2da62d735c597afeef2e0e9b36e5a4a83d7da94;p=pspp diff --git a/src/ui/gui/psppire-dialog-action-crosstabs.c b/src/ui/gui/psppire-dialog-action-crosstabs.c index b0b08b5ce6..6ea08a88cb 100644 --- a/src/ui/gui/psppire-dialog-action-crosstabs.c +++ b/src/ui/gui/psppire-dialog-action-crosstabs.c @@ -51,7 +51,7 @@ dialog_state_valid (gpointer data) GtkTreeIter notused; - return (gtk_tree_model_get_iter_first (row_vars, ¬used) + return (gtk_tree_model_get_iter_first (row_vars, ¬used) && gtk_tree_model_get_iter_first (col_vars, ¬used)); } @@ -62,42 +62,44 @@ refresh (PsppireDialogAction *rd_) GtkTreeModel *liststore = gtk_tree_view_get_model (GTK_TREE_VIEW (cd->dest_rows)); gtk_list_store_clear (GTK_LIST_STORE (liststore)); - + liststore = gtk_tree_view_get_model (GTK_TREE_VIEW (cd->dest_cols)); gtk_list_store_clear (GTK_LIST_STORE (liststore)); } -#define CROSSTABS_STATS \ - CS (CHISQ, N_("Chisq")) \ - CS (PHI, N_("Phi")) \ - CS (CC, N_("CC")) \ - CS (LAMBDA, N_("Lambda")) \ - CS (UC, N_("UC")) \ - CS (BTAU, N_("BTau")) \ - CS (CTAU, N_("CTau")) \ - CS (RISK, N_("Risk")) \ - CS (GAMMA, N_("Gamma")) \ - CS (D, N_("D")) \ - CS (KAPPA, N_("Kappa")) \ - CS (ETA, N_("Eta")) \ - CS (CORR, N_("Corr")) \ - CS (STATS_NONE, N_("None")) - - -#define CROSSTABS_CELLS \ - CS (COUNT, N_("Count")) \ - CS (ROW, N_("Row")) \ - CS (COLUMN, N_("Column")) \ - CS (TOTAL, N_("Total")) \ - CS (EXPECTED, N_("Expected")) \ - CS (RESIDUAL, N_("Residual")) \ - CS (SRESIDUAL, N_("Std. Residual")) \ - CS (ASRESIDUAL, N_("Adjusted Std. Residual")) \ - CS (CELLS_NONE, N_("None")) +#define CROSSTABS_STATS \ + CS (CHISQ, N_("Chisq"), N_("Pearson chi-square, " \ + "likelihood ratio, Fisher’s exact test, continuity correction, " \ + "linear-by-linear association.")) \ + CS (PHI, N_("Phi and Cramer's V"), NULL) \ + CS (CC, N_("CC"), N_("Contingency coefficient")) \ + CS (LAMBDA, N_("Lambda"), NULL) \ + CS (UC, N_("UC"), N_("Uncertainty coefficient")) \ + CS (BTAU, N_("BTau"), N_("Kendall's Tau-b")) \ + CS (CTAU, N_("CTau"), N_("Kendall's Tau-c")) \ + CS (RISK, N_("Risk"), N_("Relative Risk estimate")) \ + CS (GAMMA, N_("Gamma"), NULL) \ + CS (D, N_("D"), N_("Somer's d")) \ + CS (KAPPA, N_("Kappa"), N_("Cohen's Kappa")) \ + CS (ETA, N_("Eta"), NULL) \ + CS (CORR, N_("Corr"), N_("Spearman correlation, Pearson's r")) \ + CS (STATS_NONE, N_("None"), NULL) + + +#define CROSSTABS_CELLS \ + CS (COUNT, N_("Count"), N_("Frequency Count")) \ + CS (ROW, N_("Row"), N_("Row percent")) \ + CS (COLUMN, N_("Column"), N_("Column percent")) \ + CS (TOTAL, N_("Total"), N_("Total percent")) \ + CS (EXPECTED, N_("Expected"), N_("Expected value")) \ + CS (RESIDUAL, N_("Residual"), NULL) \ + CS (SRESIDUAL, N_("Std. Residual"), N_("Standardized Residual")) \ + CS (ASRESIDUAL, N_("Adjusted Std. Residual"), NULL) \ + CS (CELLS_NONE, N_("None"), NULL) enum { -#define CS(NAME, LABEL) CS_##NAME, +#define CS(NAME, LABEL, TOOLTIP) CS_##NAME, CROSSTABS_STATS #undef CS N_CROSSTABS_STATS @@ -105,7 +107,7 @@ enum enum { -#define CS(NAME, LABEL) CS_##NAME, +#define CS(NAME, LABEL, TOOLTIP) CS_##NAME, CROSSTABS_CELLS #undef CS N_CROSSTABS_CELLS @@ -113,7 +115,7 @@ enum enum { -#define CS(NAME, LABEL) B_CS_##NAME = 1u << CS_##NAME, +#define CS(NAME, LABEL, TOOLTIP) B_CS_##NAME = 1u << CS_##NAME, CROSSTABS_STATS CROSSTABS_CELLS #undef CS @@ -126,17 +128,17 @@ enum static const struct checkbox_entry_item stats[] = { -#define CS(NAME, LABEL) {#NAME, LABEL}, +#define CS(NAME, LABEL, TOOLTIP) {#NAME, LABEL, TOOLTIP}, CROSSTABS_STATS \ - CS(NONE, N_("None")) + CS(NONE, N_("None"), NULL) #undef CS }; static const struct checkbox_entry_item cells[] = { -#define CS(NAME, LABEL) {#NAME, LABEL}, +#define CS(NAME, LABEL, TOOLTIP) {#NAME, LABEL, TOOLTIP}, CROSSTABS_CELLS \ - CS(NONE, N_("None")) + CS(NONE, N_("None"), NULL) #undef CS }; @@ -151,7 +153,7 @@ on_format_clicked (PsppireDialogActionCrosstabs *cd) ret = psppire_dialog_run (PSPPIRE_DIALOG (cd->format_dialog)); - if ( ret == PSPPIRE_RESPONSE_CONTINUE ) + if (ret == PSPPIRE_RESPONSE_CONTINUE) { cd->format_options_avalue = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (cd->avalue_button)); @@ -159,7 +161,7 @@ on_format_clicked (PsppireDialogActionCrosstabs *cd) cd->format_options_table = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (cd->table_button)); - cd->format_options_pivot = + cd->format_options_pivot = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (cd->pivot_button)); } } @@ -171,7 +173,7 @@ on_cell_clicked (PsppireDialogActionCrosstabs *cd) gint ret = psppire_dialog_run (PSPPIRE_DIALOG (cd->cell_dialog)); - if ( ret == PSPPIRE_RESPONSE_CONTINUE ) + if (ret == PSPPIRE_RESPONSE_CONTINUE) { g_object_unref (liststore); } @@ -190,7 +192,7 @@ on_statistics_clicked (PsppireDialogActionCrosstabs *cd) gint ret = psppire_dialog_run (PSPPIRE_DIALOG (cd->stat_dialog)); - if ( ret == PSPPIRE_RESPONSE_CONTINUE ) + if (ret == PSPPIRE_RESPONSE_CONTINUE) { g_object_unref (liststore); } @@ -202,8 +204,8 @@ on_statistics_clicked (PsppireDialogActionCrosstabs *cd) } -static void -psppire_dialog_action_crosstabs_activate (GtkAction *a) +static GtkBuilder * +psppire_dialog_action_crosstabs_activate (PsppireDialogAction *a, GVariant *param) { PsppireDialogActionCrosstabs *act = PSPPIRE_DIALOG_ACTION_CROSSTABS (a); PsppireDialogAction *pda = PSPPIRE_DIALOG_ACTION (a); @@ -228,31 +230,28 @@ psppire_dialog_action_crosstabs_activate (GtkAction *a) act->table_button = get_widget_assert (xml, "print-tables"); act->pivot_button = get_widget_assert (xml, "pivot"); - - g_object_unref (xml); - act->format_options_avalue = TRUE; act->format_options_table = TRUE; act->format_options_pivot = TRUE; psppire_checkbox_treeview_populate (PSPPIRE_CHECKBOX_TREEVIEW (act->cell_view), - B_CS_CELL_DEFAULT, - N_CROSSTABS_CELLS, - cells); + B_CS_CELL_DEFAULT, + N_CROSSTABS_CELLS, + cells); act->cell = gtk_tree_view_get_model (GTK_TREE_VIEW (act->cell_view)); psppire_checkbox_treeview_populate (PSPPIRE_CHECKBOX_TREEVIEW (act->stat_view), - B_CS_STATS_DEFAULT, - N_CROSSTABS_STATS, - stats); + B_CS_STATS_DEFAULT, + N_CROSSTABS_STATS, + stats); act->stat = gtk_tree_view_get_model (GTK_TREE_VIEW (act->stat_view)); psppire_dialog_action_set_refresh (pda, refresh); psppire_dialog_action_set_valid_predicate (pda, - dialog_state_valid); + dialog_state_valid); g_signal_connect_swapped (act->cell_button, "clicked", G_CALLBACK (on_cell_clicked), act); @@ -263,15 +262,13 @@ psppire_dialog_action_crosstabs_activate (GtkAction *a) g_signal_connect_swapped (act->format_button, "clicked", G_CALLBACK (on_format_clicked), act); - - if (PSPPIRE_DIALOG_ACTION_CLASS (psppire_dialog_action_crosstabs_parent_class)->activate) - PSPPIRE_DIALOG_ACTION_CLASS (psppire_dialog_action_crosstabs_parent_class)->activate (pda); + return xml; } static char * -generate_syntax (PsppireDialogAction *a) +generate_syntax (const PsppireDialogAction *a) { PsppireDialogActionCrosstabs *cd = PSPPIRE_DIALOG_ACTION_CROSSTABS (a); gchar *text = NULL; @@ -291,7 +288,7 @@ generate_syntax (PsppireDialogAction *a) if (cd->format_options_avalue) g_string_append (string, "AVALUE"); - else + else g_string_append (string, "DVALUE"); g_string_append (string, " "); @@ -303,20 +300,20 @@ generate_syntax (PsppireDialogAction *a) if (cd->format_options_pivot) g_string_append (string, "PIVOT"); - else + else g_string_append (string, "NOPIVOT"); selected = 0; - for (i = 0, ok = gtk_tree_model_get_iter_first (cd->stat, &iter); ok; + for (i = 0, ok = gtk_tree_model_get_iter_first (cd->stat, &iter); ok; i++, ok = gtk_tree_model_iter_next (cd->stat, &iter)) { gboolean toggled; gtk_tree_model_get (cd->stat, &iter, - CHECKBOX_COLUMN_SELECTED, &toggled, -1); - if (toggled) - selected |= 1u << i; - else + CHECKBOX_COLUMN_SELECTED, &toggled, -1); + if (toggled) + selected |= 1u << i; + else selected &= ~(1u << i); } @@ -337,15 +334,15 @@ generate_syntax (PsppireDialogAction *a) } selected = 0; - for (i = 0, ok = gtk_tree_model_get_iter_first (cd->cell, &iter); ok; + for (i = 0, ok = gtk_tree_model_get_iter_first (cd->cell, &iter); ok; i++, ok = gtk_tree_model_iter_next (cd->cell, &iter)) { gboolean toggled; gtk_tree_model_get (cd->cell, &iter, - CHECKBOX_COLUMN_SELECTED, &toggled, -1); - if (toggled) - selected |= 1u << i; - else + CHECKBOX_COLUMN_SELECTED, &toggled, -1); + if (toggled) + selected |= 1u << i; + else selected &= ~(1u << i); } @@ -378,10 +375,7 @@ generate_syntax (PsppireDialogAction *a) static void psppire_dialog_action_crosstabs_class_init (PsppireDialogActionCrosstabsClass *class) { - GtkActionClass *action_class = GTK_ACTION_CLASS (class); - - action_class->activate = psppire_dialog_action_crosstabs_activate; - + PSPPIRE_DIALOG_ACTION_CLASS (class)->initial_activate = psppire_dialog_action_crosstabs_activate; PSPPIRE_DIALOG_ACTION_CLASS (class)->generate_syntax = generate_syntax; } @@ -390,4 +384,3 @@ static void psppire_dialog_action_crosstabs_init (PsppireDialogActionCrosstabs *act) { } -