X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fui%2Fgui%2Fpsppire-dialog-action-var-info.c;h=570ce4ada68d54a40b00745517b2fb65fc609829;hb=26bad54c73bdb354262a2434de93e632a286b0d3;hp=d6b974f6877975b9a2952cd93d76e3b38d67b552;hpb=0df9cdd3df66caf4353128feff3008289cda8115;p=pspp diff --git a/src/ui/gui/psppire-dialog-action-var-info.c b/src/ui/gui/psppire-dialog-action-var-info.c index d6b974f687..570ce4ada6 100644 --- a/src/ui/gui/psppire-dialog-action-var-info.c +++ b/src/ui/gui/psppire-dialog-action-var-info.c @@ -1,6 +1,6 @@ /* PSPPIRE - a graphical user interface for PSPP. - Copyright (C) 2007, 2009, 2010, 2011, 2012, 2013, 2014 Free Software Foundation - + Copyright (C) 2007, 2009, 2010, 2011, 2012, 2013, 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 @@ -52,11 +52,11 @@ treeview_item_selected (gpointer data) GtkTreeView *tv = GTK_TREE_VIEW (pda->source); GtkTreeSelection *selection = gtk_tree_view_get_selection (tv); - return gtk_tree_selection_count_selected_rows (selection) == 1; + return gtk_tree_selection_count_selected_rows (selection) >= 1; } static gchar * -generate_syntax__ (PsppireDialogAction *act, const char *prefix) +generate_syntax__ (const PsppireDialogAction *act, const char *prefix) { struct variable **vars; size_t n_vars; @@ -101,11 +101,13 @@ generate_syntax__ (PsppireDialogAction *act, const char *prefix) } static gchar * -generate_syntax (PsppireDialogAction *act) +generate_syntax (const PsppireDialogAction *act) { return generate_syntax__ (act, ""); } + + static void populate_output (GtkTreeSelection *selection, gpointer data) { @@ -122,21 +124,9 @@ populate_output (GtkTreeSelection *selection, gpointer data) psppire_dict_view_get_selected_variables (PSPPIRE_DICT_VIEW (treeview), &vars, &n_vars); - if (n_vars > 0) - { - PsppireDataWindow *dw; - - g_object_get (act, "top-level", &dw, NULL); - - psppire_output_view_clear (act->output); + g_return_if_fail (n_vars <= 1); - output_engine_push (); - psppire_output_view_register_driver (act->output); - g_free (execute_syntax_string ( - dw, generate_syntax__ (&act->parent, - "DISPLAY DICTIONARY /VARIABLES="))); - output_engine_pop (); - } + g_object_set (act->var_info, "variable", n_vars > 0 ? vars[0] : NULL, NULL); } @@ -163,15 +153,15 @@ jump_to (PsppireDialog *d, gint response, gpointer data) g_free (vars); } -static void -psppire_dialog_action_var_info_activate (GtkAction *a) +static GtkBuilder * +psppire_dialog_action_var_info_activate (PsppireDialogAction *a, GVariant *param) { PsppireDialogAction *pda = PSPPIRE_DIALOG_ACTION (a); PsppireDialogActionVarInfo *act = PSPPIRE_DIALOG_ACTION_VAR_INFO (pda); GtkBuilder *xml = builder_new ("variable-info.ui"); - act->output = psppire_output_view_new ( - GTK_LAYOUT (get_widget_assert (xml, "layout1")), NULL, NULL, NULL); + + act->var_info = get_widget_assert (xml, "var-info0"); pda->dialog = get_widget_assert (xml, "variable-info-dialog"); pda->source = get_widget_assert (xml, "treeview2"); @@ -181,28 +171,22 @@ psppire_dialog_action_var_info_activate (GtkAction *a) NULL); g_signal_connect (gtk_tree_view_get_selection (GTK_TREE_VIEW (pda->source)), - "changed", G_CALLBACK (populate_output), + "changed", G_CALLBACK (populate_output), act); - g_signal_connect (pda->dialog, "response", G_CALLBACK (jump_to), pda); psppire_dialog_action_set_valid_predicate (pda, treeview_item_selected); - g_object_unref (xml); - - if (PSPPIRE_DIALOG_ACTION_CLASS (psppire_dialog_action_var_info_parent_class)->activate) - PSPPIRE_DIALOG_ACTION_CLASS (psppire_dialog_action_var_info_parent_class)->activate (pda); + return xml; } static void psppire_dialog_action_var_info_class_init (PsppireDialogActionVarInfoClass *class) { - GtkActionClass *action_class = GTK_ACTION_CLASS (class); - - action_class->activate = psppire_dialog_action_var_info_activate; + PSPPIRE_DIALOG_ACTION_CLASS (class)->initial_activate = psppire_dialog_action_var_info_activate; PSPPIRE_DIALOG_ACTION_CLASS (class)->generate_syntax = generate_syntax; }