X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fui%2Fgui%2Fpsppire-dialog-action-crosstabs.c;h=afb450a3ad884eaee1e6e4bddf6282d3b1330620;hb=c2d972816fce591524db963390a97ff32d55117c;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..afb450a3ad 100644 --- a/src/ui/gui/psppire-dialog-action-crosstabs.c +++ b/src/ui/gui/psppire-dialog-action-crosstabs.c @@ -203,67 +203,70 @@ on_statistics_clicked (PsppireDialogActionCrosstabs *cd) static void -psppire_dialog_action_crosstabs_activate (GtkAction *a) +psppire_dialog_action_crosstabs_activate (PsppireDialogAction *a) { PsppireDialogActionCrosstabs *act = PSPPIRE_DIALOG_ACTION_CROSSTABS (a); PsppireDialogAction *pda = PSPPIRE_DIALOG_ACTION (a); - GtkBuilder *xml = builder_new ("crosstabs.ui"); - - pda->dialog = get_widget_assert (xml, "crosstabs-dialog"); - pda->source = get_widget_assert (xml, "dict-treeview"); - - act->dest_rows = get_widget_assert (xml, "rows"); - act->dest_cols = get_widget_assert (xml, "cols"); - act->format_button = get_widget_assert (xml, "format-button"); - act->stat_button = get_widget_assert (xml, "stats-button"); - act->cell_button = get_widget_assert (xml, "cell-button"); - act->stat_view = get_widget_assert (xml, "stats-view"); - act->cell_view = get_widget_assert (xml, "cell-view"); - act->cell_dialog = get_widget_assert (xml, "cell-dialog"); - act->stat_dialog = get_widget_assert (xml, "stat-dialog"); - act->format_dialog = get_widget_assert (xml, "format-dialog"); - - act->avalue_button = get_widget_assert (xml, "ascending"); - act->table_button = get_widget_assert (xml, "print-tables"); - act->pivot_button = get_widget_assert (xml, "pivot"); + GHashTable *thing = psppire_dialog_action_get_hash_table (pda); + GtkBuilder *xml = g_hash_table_lookup (thing, a); + if (!xml) + { + xml = builder_new ("crosstabs.ui"); + g_hash_table_insert (thing, a, xml); + pda->dialog = get_widget_assert (xml, "crosstabs-dialog"); + pda->source = get_widget_assert (xml, "dict-treeview"); - g_object_unref (xml); + act->dest_rows = get_widget_assert (xml, "rows"); + act->dest_cols = get_widget_assert (xml, "cols"); + act->format_button = get_widget_assert (xml, "format-button"); + act->stat_button = get_widget_assert (xml, "stats-button"); + act->cell_button = get_widget_assert (xml, "cell-button"); + act->stat_view = get_widget_assert (xml, "stats-view"); + act->cell_view = get_widget_assert (xml, "cell-view"); + act->cell_dialog = get_widget_assert (xml, "cell-dialog"); + act->stat_dialog = get_widget_assert (xml, "stat-dialog"); + act->format_dialog = get_widget_assert (xml, "format-dialog"); - act->format_options_avalue = TRUE; - act->format_options_table = TRUE; - act->format_options_pivot = TRUE; + act->avalue_button = get_widget_assert (xml, "ascending"); + act->table_button = get_widget_assert (xml, "print-tables"); + act->pivot_button = get_widget_assert (xml, "pivot"); - psppire_checkbox_treeview_populate (PSPPIRE_CHECKBOX_TREEVIEW (act->cell_view), - B_CS_CELL_DEFAULT, - N_CROSSTABS_CELLS, - cells); + act->format_options_avalue = TRUE; + act->format_options_table = TRUE; + act->format_options_pivot = TRUE; - act->cell = gtk_tree_view_get_model (GTK_TREE_VIEW (act->cell_view)); + psppire_checkbox_treeview_populate (PSPPIRE_CHECKBOX_TREEVIEW (act->cell_view), + B_CS_CELL_DEFAULT, + N_CROSSTABS_CELLS, + cells); - psppire_checkbox_treeview_populate (PSPPIRE_CHECKBOX_TREEVIEW (act->stat_view), - B_CS_STATS_DEFAULT, - N_CROSSTABS_STATS, - stats); + act->cell = gtk_tree_view_get_model (GTK_TREE_VIEW (act->cell_view)); - act->stat = gtk_tree_view_get_model (GTK_TREE_VIEW (act->stat_view)); + psppire_checkbox_treeview_populate (PSPPIRE_CHECKBOX_TREEVIEW (act->stat_view), + B_CS_STATS_DEFAULT, + N_CROSSTABS_STATS, + stats); - psppire_dialog_action_set_refresh (pda, refresh); + act->stat = gtk_tree_view_get_model (GTK_TREE_VIEW (act->stat_view)); - psppire_dialog_action_set_valid_predicate (pda, - dialog_state_valid); + psppire_dialog_action_set_refresh (pda, refresh); - g_signal_connect_swapped (act->cell_button, "clicked", - G_CALLBACK (on_cell_clicked), act); + psppire_dialog_action_set_valid_predicate (pda, + dialog_state_valid); - g_signal_connect_swapped (act->stat_button, "clicked", - G_CALLBACK (on_statistics_clicked), act); + g_signal_connect_swapped (act->cell_button, "clicked", + G_CALLBACK (on_cell_clicked), act); - g_signal_connect_swapped (act->format_button, "clicked", - G_CALLBACK (on_format_clicked), act); + g_signal_connect_swapped (act->stat_button, "clicked", + G_CALLBACK (on_statistics_clicked), act); + 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); } @@ -378,10 +381,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_set_activation (class, psppire_dialog_action_crosstabs_activate); PSPPIRE_DIALOG_ACTION_CLASS (class)->generate_syntax = generate_syntax; }