X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fui%2Fgui%2Fpsppire-data-window.c;h=6f3fdd4608b661da8c899a4fca6984689b1708eb;hb=05fa57f30df52167a060f33fce1abd3719d569ee;hp=7565dbb4b7ca223c434e6527701a762b5c14af7c;hpb=1b2a87ad88df1fcbf19efaff1476b48711278917;p=pspp-builds.git diff --git a/src/ui/gui/psppire-data-window.c b/src/ui/gui/psppire-data-window.c index 7565dbb4..6f3fdd46 100644 --- a/src/ui/gui/psppire-data-window.c +++ b/src/ui/gui/psppire-data-window.c @@ -1,5 +1,5 @@ /* PSPPIRE - a graphical user interface for PSPP. - Copyright (C) 2008, 2009 Free Software Foundation + Copyright (C) 2008, 2009, 2010 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 @@ -18,48 +18,46 @@ #include #include -#include "helper.h" - -#include "text-data-import-dialog.h" - - -#include -#include -#include #include -#include - -#include "psppire.h" -#include "psppire-window.h" -#include "psppire-data-window.h" -#include "psppire-syntax-window.h" - -#include "about.h" - -#include "goto-case-dialog.h" -#include "weight-cases-dialog.h" -#include "split-file-dialog.h" -#include "transpose-dialog.h" -#include "sort-cases-dialog.h" -#include "select-cases-dialog.h" -#include "compute-dialog.h" -#include "find-dialog.h" -#include "rank-dialog.h" -#include "recode-dialog.h" -#include "comments-dialog.h" -#include "variable-info-dialog.h" -#include "descriptives-dialog.h" -#include "crosstabs-dialog.h" -#include "frequencies-dialog.h" -#include "examine-dialog.h" -#include "dict-display.h" -#include "regression-dialog.h" -#include "oneway-anova-dialog.h" -#include "t-test-independent-samples-dialog.h" -#include "t-test-one-sample.h" -#include "t-test-paired-samples.h" - +#include "data/any-reader.h" +#include "data/procedure.h" +#include "language/syntax-string-source.h" +#include "libpspp/message.h" +#include "ui/gui/about.h" +#include "ui/gui/comments-dialog.h" +#include "ui/gui/compute-dialog.h" +#include "ui/gui/correlation-dialog.h" +#include "ui/gui/crosstabs-dialog.h" +#include "ui/gui/descriptives-dialog.h" +#include "ui/gui/examine-dialog.h" +#include "ui/gui/executor.h" +#include "ui/gui/factor-dialog.h" +#include "ui/gui/find-dialog.h" +#include "ui/gui/frequencies-dialog.h" +#include "ui/gui/goto-case-dialog.h" +#include "ui/gui/helper.h" +#include "ui/gui/oneway-anova-dialog.h" +#include "ui/gui/psppire-data-window.h" +#include "ui/gui/psppire-syntax-window.h" +#include "ui/gui/psppire-window.h" +#include "ui/gui/psppire.h" +#include "ui/gui/rank-dialog.h" +#include "ui/gui/recode-dialog.h" +#include "ui/gui/regression-dialog.h" +#include "ui/gui/reliability-dialog.h" +#include "ui/gui/roc-dialog.h" +#include "ui/gui/select-cases-dialog.h" +#include "ui/gui/sort-cases-dialog.h" +#include "ui/gui/split-file-dialog.h" +#include "ui/gui/t-test-independent-samples-dialog.h" +#include "ui/gui/t-test-one-sample.h" +#include "ui/gui/t-test-paired-samples.h" +#include "ui/gui/text-data-import-dialog.h" +#include "ui/gui/transpose-dialog.h" +#include "ui/gui/variable-info-dialog.h" +#include "ui/gui/weight-cases-dialog.h" +#include "ui/syntax-gen.h" #include #define _(msgid) gettext (msgid) @@ -230,12 +228,14 @@ on_filter_change (GObject *o, gint filter_index, gpointer data) else { PsppireVarStore *vs = NULL; + PsppireDict *dict = NULL; struct variable *var ; gchar *text ; g_object_get (de->data_editor, "var-store", &vs, NULL); + g_object_get (vs, "dictionary", &dict, NULL); - var = psppire_dict_get_variable (vs->dict, filter_index); + var = psppire_dict_get_variable (dict, filter_index); text = g_strdup_printf (_("Filter by %s"), var_get_name (var)); @@ -301,11 +301,13 @@ on_weight_change (GObject *o, gint weight_index, gpointer data) { struct variable *var ; PsppireVarStore *vs = NULL; + PsppireDict *dict = NULL; gchar *text; g_object_get (de->data_editor, "var-store", &vs, NULL); - - var = psppire_dict_get_variable (vs->dict, weight_index); + g_object_get (vs, "dictionary", &dict, NULL); + + var = psppire_dict_get_variable (dict, weight_index); text = g_strdup_printf (_("Weight by %s"), var_get_name (var)); @@ -347,11 +349,18 @@ dump_rm (GtkRecentManager *rm) static gboolean load_file (PsppireWindow *de, const gchar *file_name) { + gchar *native_file_name; struct getl_interface *sss; struct string filename; ds_init_empty (&filename); - syntax_gen_string (&filename, ss_cstr (file_name)); + + native_file_name = + convert_glib_filename_to_system_filename (file_name, NULL); + + syntax_gen_string (&filename, ss_cstr (native_file_name)); + + g_free (native_file_name); sss = create_syntax_string_source ("GET FILE=%s.", ds_cstr (&filename)); @@ -359,29 +368,35 @@ load_file (PsppireWindow *de, const gchar *file_name) ds_destroy (&filename); if (execute_syntax (sss) ) - { - psppire_window_set_filename (de, file_name); - return TRUE; - } + return TRUE; return FALSE; } - -/* Callback for the data_open action. - Prompts for a filename and opens it */ -static void -open_data_dialog (GtkAction *action, PsppireWindow *de) +static GtkWidget * +sysfile_chooser_dialog (PsppireWindow *toplevel) { GtkWidget *dialog = gtk_file_chooser_dialog_new (_("Open"), - GTK_WINDOW (de), + GTK_WINDOW (toplevel), GTK_FILE_CHOOSER_ACTION_OPEN, GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT, NULL); - GtkFileFilter *filter = gtk_file_filter_new (); + GtkFileFilter *filter; + + filter = gtk_file_filter_new (); + gtk_file_filter_set_name (filter, _("Data and Syntax Files")); + gtk_file_filter_add_pattern (filter, "*.sav"); + gtk_file_filter_add_pattern (filter, "*.SAV"); + gtk_file_filter_add_pattern (filter, "*.por"); + gtk_file_filter_add_pattern (filter, "*.POR"); + gtk_file_filter_add_pattern (filter, "*.sps"); + gtk_file_filter_add_pattern (filter, "*.SPS"); + gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (dialog), filter); + + filter = gtk_file_filter_new (); gtk_file_filter_set_name (filter, _("System Files (*.sav)")); gtk_file_filter_add_pattern (filter, "*.sav"); gtk_file_filter_add_pattern (filter, "*.SAV"); @@ -393,23 +408,48 @@ open_data_dialog (GtkAction *action, PsppireWindow *de) gtk_file_filter_add_pattern (filter, "*.POR"); gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (dialog), filter); + filter = gtk_file_filter_new (); + gtk_file_filter_set_name (filter, _("Syntax Files (*.sps) ")); + gtk_file_filter_add_pattern (filter, "*.sps"); + gtk_file_filter_add_pattern (filter, "*.SPS"); + gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (dialog), filter); + filter = gtk_file_filter_new (); gtk_file_filter_set_name (filter, _("All Files")); gtk_file_filter_add_pattern (filter, "*"); gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (dialog), filter); - { gchar *dir_name; gchar *filename = NULL; - g_object_get (de, "filename", &filename, NULL); + g_object_get (toplevel, "filename", &filename, NULL); - dir_name = g_path_get_dirname (filename); + if ( ! g_path_is_absolute (filename)) + { + gchar *path = + g_build_filename (g_get_current_dir (), filename, NULL); + dir_name = g_path_get_dirname (path); + g_free (path); + } + else + { + dir_name = g_path_get_dirname (filename); + } gtk_file_chooser_set_current_folder (GTK_FILE_CHOOSER (dialog), dir_name); free (dir_name); } + return dialog; +} + +/* Callback for the data_open action. + Prompts for a filename and opens it */ +static void +open_window (GtkAction *action, PsppireWindow *de) +{ + GtkWidget *dialog = sysfile_chooser_dialog (de); + switch (gtk_dialog_run (GTK_DIALOG (dialog))) { case GTK_RESPONSE_ACCEPT: @@ -417,7 +457,10 @@ open_data_dialog (GtkAction *action, PsppireWindow *de) gchar *name = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (dialog)); - psppire_window_load (de, name); + if (any_reader_may_open (name)) + psppire_window_load (de, name); + else + open_syntax_window (name); g_free (name); } @@ -448,16 +491,18 @@ name_has_suffix (const gchar *name) /* Save DE to file */ static void -save_file (PsppireDataWindow *de) +save_file (PsppireWindow *w) { - gchar *fn = NULL; + gchar *native_file_name = NULL; + gchar *file_name = NULL; GString *fnx; struct getl_interface *sss; - struct string file_name ; + struct string filename ; + PsppireDataWindow *de = PSPPIRE_DATA_WINDOW (w); - g_object_get (de, "filename", &fn, NULL); + g_object_get (w, "filename", &file_name, NULL); - fnx = g_string_new (fn); + fnx = g_string_new (file_name); if ( ! name_has_suffix (fnx->str)) { @@ -467,26 +512,30 @@ save_file (PsppireDataWindow *de) g_string_append (fnx, ".sav"); } - ds_init_empty (&file_name); - syntax_gen_string (&file_name, ss_cstr (fnx->str)); - g_string_free (fnx, FALSE); + ds_init_empty (&filename); + + native_file_name = + convert_glib_filename_to_system_filename (fnx->str, NULL); + + g_string_free (fnx, TRUE); + + syntax_gen_string (&filename, ss_cstr (native_file_name)); + g_free (native_file_name); if ( de->save_as_portable ) { sss = create_syntax_string_source ("EXPORT OUTFILE=%s.", - ds_cstr (&file_name)); + ds_cstr (&filename)); } else { sss = create_syntax_string_source ("SAVE OUTFILE=%s.", - ds_cstr (&file_name)); + ds_cstr (&filename)); } - ds_destroy (&file_name); + ds_destroy (&filename); execute_syntax (sss); - - psppire_window_set_unsaved (PSPPIRE_WINDOW (de), FALSE); } @@ -494,15 +543,54 @@ static void insert_case (GtkAction *action, gpointer data) { PsppireDataWindow *dw = PSPPIRE_DATA_WINDOW (data); - psppire_data_editor_insert_case (dw->data_editor); } static void on_insert_variable (GtkAction *action, gpointer data) { - PsppireDataEditor *de = PSPPIRE_DATA_EDITOR (data); - psppire_data_editor_insert_variable (de); + PsppireDataWindow *dw = PSPPIRE_DATA_WINDOW (data); + psppire_data_editor_insert_variable (dw->data_editor); +} + + +static void +display_dict (PsppireDataWindow *de) +{ + + struct getl_interface *sss = + create_syntax_string_source ("DISPLAY DICTIONARY."); + + execute_syntax (sss); +} + +static void +sysfile_info (PsppireDataWindow *de) +{ + GtkWidget *dialog = sysfile_chooser_dialog (PSPPIRE_WINDOW (de)); + + if ( GTK_RESPONSE_ACCEPT == gtk_dialog_run (GTK_DIALOG (dialog))) + { + struct string filename; + struct getl_interface *sss; + gchar *file_name = + gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (dialog)); + + gchar *native_file_name = + convert_glib_filename_to_system_filename (file_name, NULL); + + ds_init_empty (&filename); + + syntax_gen_string (&filename, ss_cstr (native_file_name)); + + g_free (native_file_name); + + sss = create_syntax_string_source ("SYSFILE INFO %s.", + ds_cstr (&filename)); + execute_syntax (sss); + } + + gtk_widget_destroy (dialog); } @@ -547,8 +635,8 @@ data_save_as_dialog (PsppireDataWindow *de) (gtk_radio_button_get_group (GTK_RADIO_BUTTON(button_sys)), _("Portable File")); - gtk_box_pack_start_defaults (GTK_BOX (vbox), button_sys); - gtk_box_pack_start_defaults (GTK_BOX (vbox), button_por); + psppire_box_pack_start_defaults (GTK_BOX (vbox), button_sys); + psppire_box_pack_start_defaults (GTK_BOX (vbox), button_por); gtk_widget_show_all (vbox); @@ -578,7 +666,7 @@ data_save_as_dialog (PsppireDataWindow *de) psppire_window_set_filename (PSPPIRE_WINDOW (de), filename->str); - save_file (de); + save_file (PSPPIRE_WINDOW (de)); g_string_free (filename, TRUE); } @@ -599,7 +687,7 @@ data_save (PsppireWindow *de) const gchar *fn = psppire_window_get_filename (de); if ( NULL != fn) - save_file (PSPPIRE_DATA_WINDOW (de)); + psppire_window_save (de); else data_save_as_dialog (PSPPIRE_DATA_WINDOW (de)); } @@ -691,6 +779,7 @@ static void fonts_activate (GtkMenuItem *menuitem, gpointer data) { PsppireDataWindow *de = PSPPIRE_DATA_WINDOW (data); + GtkWidget *toplevel = gtk_widget_get_toplevel (GTK_WIDGET (de)); PangoFontDescription *current_font; gchar *font_name; GtkWidget *dialog = @@ -705,8 +794,8 @@ fonts_activate (GtkMenuItem *menuitem, gpointer data) g_free (font_name); gtk_window_set_transient_for (GTK_WINDOW (dialog), - GTK_WINDOW (get_widget_assert (de->builder, - "data_editor"))); + GTK_WINDOW (toplevel)); + if ( GTK_RESPONSE_OK == gtk_dialog_run (GTK_DIALOG (dialog)) ) { const gchar *font = gtk_font_selection_dialog_get_font_name @@ -1016,13 +1105,14 @@ resolve_action (GtkBuilder *builder, const gchar *action, const gchar *proxy) static void set_unsaved (gpointer w) { - psppire_window_set_unsaved (PSPPIRE_WINDOW (w), TRUE); + psppire_window_set_unsaved (PSPPIRE_WINDOW (w)); } static void psppire_data_window_init (PsppireDataWindow *de) { PsppireVarStore *vs; + PsppireDict *dict = NULL; GtkWidget *menubar; GtkWidget *hb ; @@ -1051,15 +1141,6 @@ psppire_data_window_init (PsppireDataWindow *de) connect_help (de->builder); - g_object_ref (menubar); - gtk_widget_unparent (menubar); - - g_object_ref (hb); - gtk_widget_unparent (hb); - - g_object_ref (sb); - gtk_widget_unparent (sb); - gtk_box_pack_start (GTK_BOX (box), menubar, FALSE, TRUE, 0); gtk_box_pack_start (GTK_BOX (box), hb, FALSE, TRUE, 0); gtk_box_pack_start (GTK_BOX (box), GTK_WIDGET (de->data_editor), TRUE, TRUE, 0); @@ -1087,15 +1168,17 @@ psppire_data_window_init (PsppireDataWindow *de) g_assert(vs); /* Traps a possible bug in w32 build */ - g_signal_connect (vs->dict, "weight-changed", + g_object_get (vs, "dictionary", &dict, NULL); + + g_signal_connect (dict, "weight-changed", G_CALLBACK (on_weight_change), de); - g_signal_connect (vs->dict, "filter-changed", + g_signal_connect (dict, "filter-changed", G_CALLBACK (on_filter_change), de); - g_signal_connect (vs->dict, "split-changed", + g_signal_connect (dict, "split-changed", G_CALLBACK (on_split_change), de); @@ -1110,19 +1193,6 @@ psppire_data_window_init (PsppireDataWindow *de) - { - GtkAction *action_data_open = - resolve_action (de->builder, "file_open_data", "button-open"); - - g_object_set (action_data_open, - "tooltip", _("Open a data file"), - "stock-id", "gtk-open", - NULL); - - g_signal_connect (action_data_open, "activate", - G_CALLBACK (open_data_dialog), de); - } - { @@ -1156,28 +1226,25 @@ psppire_data_window_init (PsppireDataWindow *de) { - GtkAction *action_data_save = - resolve_action (de->builder, "file_save", "button-save"); - - - g_object_set (action_data_save, - "tooltip", _("Save data to file"), - "stock-id", "gtk-save", - NULL); + GtkAction *action_data_save = get_action_assert (de->builder, "file_save"); g_signal_connect_swapped (action_data_save, "activate", - G_CALLBACK (data_save), de); + G_CALLBACK (data_save), de); } + { + GtkAction *action_data_open = get_action_assert (de->builder, "file_open"); + g_signal_connect (action_data_open, "activate", + G_CALLBACK (open_window), de); + } { GtkAction *action_data_save_as = resolve_action (de->builder, "file_save_as", NULL); g_object_set (action_data_save_as, - "label", _("Save As"), "tooltip", _("Save data to file"), "stock-id", "gtk-save-as", NULL); @@ -1187,26 +1254,62 @@ psppire_data_window_init (PsppireDataWindow *de) } + { + GtkAction *action_info_working_file = + resolve_action (de->builder, + "file_information_working-file", NULL); + + + g_signal_connect_swapped (action_info_working_file, "activate", + G_CALLBACK (display_dict), de); + } + { - GtkAction *value_labels_action = + GtkAction *action_info_external_file = resolve_action (de->builder, - "view_value-labels", "togglebutton-value-labels"); + "file_information_external-file", NULL); - g_object_set (value_labels_action, - "tooltip", _("Show/hide value labels"), - "stock-id", "pspp-value-labels", - NULL); - g_signal_connect (value_labels_action, "toggled", - G_CALLBACK (toggle_value_labels), de); + g_signal_connect_swapped (action_info_external_file, "activate", + G_CALLBACK (sysfile_info), de); } + + g_signal_connect (get_action_assert (de->builder, "edit_paste"), "activate", G_CALLBACK (on_edit_paste), de); + { + de->insert_case = get_action_assert (de->builder, "edit_insert-case"); + g_signal_connect (de->insert_case, "activate", + G_CALLBACK (insert_case), + de); + + } + + { + de->insert_variable = get_action_assert (de->builder, "action_insert-variable"); + + g_signal_connect (de->insert_variable, "activate", + G_CALLBACK (on_insert_variable), + de); + + + } + + de->invoke_goto_dialog = get_action_assert (de->builder, "edit_goto-case"); + g_signal_connect (de->invoke_goto_dialog, "activate", G_CALLBACK (goto_case_dialog), de); + + + { + GtkAction *value_labels_action = get_action_assert (de->builder, "view_value-labels"); + g_signal_connect (value_labels_action, "toggled", + G_CALLBACK (toggle_value_labels), de); + } + { de->delete_cases = resolve_action (de->builder, "edit_clear-cases", NULL); @@ -1245,65 +1348,6 @@ psppire_data_window_init (PsppireDataWindow *de) } - de->insert_variable = - resolve_action (de->builder, "edit_insert-variable", - "button-insert-variable"); - - g_object_set (de->insert_variable, - "tooltip", _("Create a new variable at the current position"), - "stock-id", "pspp-insert-variable", - NULL); - - g_signal_connect (de->insert_variable, "activate", - G_CALLBACK (on_insert_variable), de->data_editor); - - - - - - de->insert_case = - resolve_action (de->builder, "edit_insert-case", "button-insert-case"); - - g_object_set (de->insert_case, - "tooltip", _("Create a new case at the current position"), - "stock-id", "pspp-insert-case", - NULL); - - g_signal_connect (de->insert_case, "activate", - G_CALLBACK (insert_case), de); - - - - - - de->invoke_goto_dialog = - resolve_action (de->builder, "edit_goto-case", "button-goto-case"); - - - g_object_set (de->invoke_goto_dialog, - "tooltip", _("Jump to a Case in the Data Sheet"), - "stock-id", "gtk-jump-to", - NULL); - - g_signal_connect (de->invoke_goto_dialog, "activate", - G_CALLBACK (goto_case_dialog), de); - - - - { - GtkAction *invoke_weight_cases_dialog = - resolve_action (de->builder, "data_weight-cases", "button-weight-cases"); - - - g_object_set (invoke_weight_cases_dialog, - "stock-id", "pspp-weight-cases", - "tooltip", _("Weight cases by variable"), - NULL); - - g_signal_connect (invoke_weight_cases_dialog, "activate", - G_CALLBACK (weight_cases_dialog), de); - } - { GtkAction *invoke_transpose_dialog = @@ -1320,20 +1364,6 @@ psppire_data_window_init (PsppireDataWindow *de) } - { - GtkAction *invoke_split_file_dialog = - resolve_action (de->builder, "data_split-file", "button-split-file"); - - g_object_set (invoke_split_file_dialog, - "tooltip", _("Split the active file"), - "stock-id", "pspp-split-file", - NULL); - - g_signal_connect (invoke_split_file_dialog, "activate", - G_CALLBACK (split_file_dialog), de); - } - - { GtkAction *invoke_sort_cases_dialog = resolve_action (de->builder, "data_sort-cases", NULL); @@ -1349,19 +1379,6 @@ psppire_data_window_init (PsppireDataWindow *de) } - { - GtkAction *invoke_select_cases_dialog = - resolve_action (de->builder, "data_select-cases", "button-select-cases"); - - g_object_set (invoke_select_cases_dialog, - "tooltip", _("Select cases from the active file"), - "stock-id", "pspp-select-cases", - NULL); - - g_signal_connect (invoke_select_cases_dialog, "activate", - G_CALLBACK (select_cases_dialog), de); - } - { GtkAction *invoke_compute_dialog = @@ -1376,6 +1393,39 @@ psppire_data_window_init (PsppireDataWindow *de) G_CALLBACK (compute_dialog), de); } + { + GtkAction *invoke_find_dialog = get_action_assert (de->builder, "edit_find"); + + g_signal_connect (invoke_find_dialog, "activate", + G_CALLBACK (find_dialog), de); + } + + + { + GtkAction *invoke_split_file_dialog = get_action_assert (de->builder, "data_split-file"); + + g_signal_connect (invoke_split_file_dialog, "activate", + G_CALLBACK (split_file_dialog), de); + } + + + { + GtkAction *invoke_weight_cases_dialog = get_action_assert (de->builder, "data_weight-cases"); + + g_signal_connect (invoke_weight_cases_dialog, "activate", + G_CALLBACK (weight_cases_dialog), de); + } + + + + { + GtkAction *invoke_variable_info_dialog = get_action_assert (de->builder, "utilities_variables"); + + g_signal_connect (invoke_variable_info_dialog, "activate", + G_CALLBACK (variable_info_dialog), de); + } + + { GtkAction *invoke_oneway_anova_dialog = @@ -1449,17 +1499,6 @@ psppire_data_window_init (PsppireDataWindow *de) - { - GtkAction *invoke_find_dialog = - resolve_action (de->builder, "edit_find", "button-find"); - - g_object_set (invoke_find_dialog, "stock-id", "gtk-find", NULL); - - g_signal_connect (invoke_find_dialog, "activate", - G_CALLBACK (find_dialog), de); - } - - { GtkAction *invoke_rank_dialog = resolve_action (de->builder, "transform_rank", NULL); @@ -1502,20 +1541,6 @@ psppire_data_window_init (PsppireDataWindow *de) } - { - GtkAction *invoke_variable_info_dialog = - resolve_action (de->builder, "utilities_variables", "button-goto-variable"); - - g_object_set (invoke_variable_info_dialog, - "stock-id", "pspp-goto-variable", - "tooltip", _("Jump to variable"), - NULL); - - g_signal_connect (invoke_variable_info_dialog, "activate", - G_CALLBACK (variable_info_dialog), de); - } - - { GtkAction *invoke_descriptives_dialog = resolve_action (de->builder, "analyze_descriptives", NULL); @@ -1587,7 +1612,64 @@ psppire_data_window_init (PsppireDataWindow *de) G_CALLBACK (regression_dialog), de); } - { + { + GtkAction *invoke_reliability_dialog = + resolve_action (de->builder, "reliability", NULL); + + g_object_set (invoke_reliability_dialog, + "tooltip", _("Reliability Analysis"), + "stock-id", "pspp-reliability", + NULL + ); + + g_signal_connect (invoke_reliability_dialog, "activate", + G_CALLBACK (reliability_dialog), de); + } + + { + GtkAction *invoke_roc_dialog = + resolve_action (de->builder, "roc-curve", NULL); + + g_object_set (invoke_roc_dialog, + "tooltip", _("ROC Curve"), + "stock-id", "pspp-roc", + NULL + ); + + g_signal_connect (invoke_roc_dialog, "activate", + G_CALLBACK (roc_dialog), de); + } + + { + GtkAction *invoke_correlation_dialog = + resolve_action (de->builder, "correlation", NULL); + + g_object_set (invoke_correlation_dialog, + "tooltip", _("Bivariate Correlation"), + "stock-id", "pspp-correlation", + NULL + ); + + g_signal_connect (invoke_correlation_dialog, "activate", + G_CALLBACK (correlation_dialog), de); + } + + { + GtkAction *invoke_factor_dialog = + resolve_action (de->builder, "factor-analysis", NULL); + + g_object_set (invoke_factor_dialog, + "tooltip", _("Principal Axis Factoring and Principal Components Analysis"), + "stock-id", "pspp-factor", + NULL + ); + + g_signal_connect (invoke_factor_dialog, "activate", + G_CALLBACK (factor_dialog), de); + } + + + { GtkUIManager *uim = GTK_UI_MANAGER (get_object_assert (de->builder, "uimanager1", GTK_TYPE_UI_MANAGER)); GtkWidget *recent_data = @@ -1647,10 +1729,6 @@ psppire_data_window_init (PsppireDataWindow *de) G_CALLBACK (create_syntax_window), NULL); - g_signal_connect (get_action_assert (de->builder,"file_open_syntax"), - "activate", - G_CALLBACK (open_syntax_window), - de); { GtkAction *abt = get_action_assert (de->builder, "help_about"); @@ -1749,28 +1827,29 @@ psppire_data_window_init (PsppireDataWindow *de) de); } - de->data_sheet_variable_popup_menu = - GTK_MENU (create_data_sheet_variable_popup_menu (de)); - - de->var_sheet_variable_popup_menu = - GTK_MENU (create_var_sheet_variable_popup_menu (de)); + { + GtkUIManager *uim = GTK_UI_MANAGER (get_object_assert (de->builder, "uimanager1", GTK_TYPE_UI_MANAGER)); - de->data_sheet_cases_popup_menu = - GTK_MENU (create_data_sheet_cases_popup_menu (de)); + PSPPIRE_WINDOW (de)->menu = + GTK_MENU_SHELL (gtk_ui_manager_get_widget (uim,"/ui/menubar/windows/windows_minimise_all")->parent); + } { - GtkUIManager *uim = GTK_UI_MANAGER (get_object_assert (de->builder, "uimanager1", GTK_TYPE_UI_MANAGER)); + GtkMenu *data_sheet_variable_popup_menu = + GTK_MENU (create_data_sheet_variable_popup_menu (de)); - PSPPIRE_WINDOW (de)->menu = - GTK_MENU_SHELL (gtk_ui_manager_get_widget (uim,"/ui/menubar/windows/windows_minimise_all")->parent); - } + GtkMenu *var_sheet_variable_popup_menu = + GTK_MENU (create_var_sheet_variable_popup_menu (de)); + GtkMenu *data_sheet_cases_popup_menu = + GTK_MENU (create_data_sheet_cases_popup_menu (de)); - g_object_set (de->data_editor, - "datasheet-column-menu", de->data_sheet_variable_popup_menu, - "datasheet-row-menu", de->data_sheet_cases_popup_menu, - "varsheet-row-menu", de->var_sheet_variable_popup_menu, - NULL); + g_object_set (de->data_editor, + "datasheet-column-menu", data_sheet_variable_popup_menu, + "datasheet-row-menu", data_sheet_cases_popup_menu, + "varsheet-row-menu", var_sheet_variable_popup_menu, + NULL); + } gtk_widget_show (GTK_WIDGET (de->data_editor)); gtk_widget_show (box); @@ -1793,6 +1872,6 @@ psppire_data_window_new (void) static void psppire_data_window_iface_init (PsppireWindowIface *iface) { - iface->save = data_save; + iface->save = save_file; iface->load = load_file; }