- gtk_widget_show_all (menu);
-
- return menu;
-}
-
-
-static void
-on_recent_data_select (GtkMenuShell *menushell,
- PsppireWindow *window)
-{
- gchar *file;
-
- gchar *uri =
- gtk_recent_chooser_get_current_uri (GTK_RECENT_CHOOSER (menushell));
-
- file = g_filename_from_uri (uri, NULL, NULL);
-
- g_free (uri);
-
- psppire_window_load (window, file);
-
- g_free (file);
-}
-
-static void
-on_recent_files_select (GtkMenuShell *menushell, gpointer user_data)
-{
- gchar *file;
-
- GtkWidget *se ;
-
- gchar *uri =
- gtk_recent_chooser_get_current_uri (GTK_RECENT_CHOOSER (menushell));
-
- file = g_filename_from_uri (uri, NULL, NULL);
-
- g_free (uri);
-
- se = psppire_syntax_window_new ();
-
- if ( psppire_window_load (PSPPIRE_WINDOW (se), file) )
- gtk_widget_show (se);
- else
- gtk_widget_destroy (se);
-
- g_free (file);
-}
-
-
-static void
-enable_delete_cases (GtkWidget *w, gint case_num, gpointer data)
-{
- PsppireDataWindow *de = PSPPIRE_DATA_WINDOW (data);
-
- gtk_action_set_visible (de->delete_cases, case_num != -1);
-}
-
-
-static void
-enable_delete_variables (GtkWidget *w, gint var, gpointer data)
-{
- PsppireDataWindow *de = PSPPIRE_DATA_WINDOW (data);
-
- gtk_action_set_visible (de->delete_variables, var != -1);
-}
-
-/* Callback for when the datasheet/varsheet is selected */
-static void
-on_switch_sheet (GtkNotebook *notebook,
- GtkNotebookPage *page,
- guint page_num,
- gpointer user_data)
-{
- PsppireDataWindow *de = PSPPIRE_DATA_WINDOW (user_data);
-
- GtkUIManager *uim = GTK_UI_MANAGER (get_object_assert (de->builder, "uimanager1", GTK_TYPE_UI_MANAGER));
-
- GtkWidget *view_data =
- gtk_ui_manager_get_widget (uim,"/ui/menubar/view/view_data");
-
- GtkWidget *view_variables =
- gtk_ui_manager_get_widget (uim,"/ui/menubar/view/view_variables");
-
- switch (page_num)
- {
- case PSPPIRE_DATA_EDITOR_VARIABLE_VIEW:
- gtk_widget_hide (view_variables);
- gtk_widget_show (view_data);
- gtk_action_set_sensitive (de->insert_variable, TRUE);
- gtk_action_set_sensitive (de->insert_case, FALSE);
- gtk_action_set_sensitive (de->invoke_goto_dialog, FALSE);
- break;
- case PSPPIRE_DATA_EDITOR_DATA_VIEW:
- gtk_widget_show (view_variables);
- gtk_widget_hide (view_data);
- gtk_action_set_sensitive (de->invoke_goto_dialog, TRUE);
- gtk_action_set_sensitive (de->insert_case, TRUE);
- break;
- default:
- g_assert_not_reached ();
- break;
- }
-
-#if 0
- update_paste_menuitem (de, page_num);
-#endif
-}
-
-
-static GtkAction *
-resolve_action (GtkBuilder *builder, const gchar *action, const gchar *proxy)
-{
- GtkWidget *pr = NULL;
- GtkAction *act = get_action_assert (builder, action);
- g_assert (GTK_IS_ACTION (act));
-
- if ( proxy )
- pr = get_widget_assert (builder, proxy);
-
- if ( pr )
- gtk_action_connect_proxy (act, pr);
-
- return act;
-}
-
-
-static void
-set_unsaved (gpointer w)
-{
- psppire_window_set_unsaved (PSPPIRE_WINDOW (w));
-}
-
-static void
-psppire_data_window_init (PsppireDataWindow *de)
-{
- PsppireVarStore *vs;
- PsppireDict *dict = NULL;
-
- GtkWidget *menubar;
- GtkWidget *hb ;
- GtkWidget *sb ;
-
- GtkWidget *box = gtk_vbox_new (FALSE, 0);
- de->builder = builder_new ("data-editor.ui");
-
- menubar = get_widget_assert (de->builder, "menubar");
- hb = get_widget_assert (de->builder, "handlebox1");
- sb = get_widget_assert (de->builder, "status-bar");
-
- de->data_editor =
- PSPPIRE_DATA_EDITOR (psppire_data_editor_new (the_var_store, the_data_store));
-
- g_signal_connect_swapped (the_data_store, "case-changed",
- G_CALLBACK (set_unsaved), de);
-
- g_signal_connect_swapped (the_data_store, "case-inserted",
- G_CALLBACK (set_unsaved), de);
-
- g_signal_connect_swapped (the_data_store, "cases-deleted",
- G_CALLBACK (set_unsaved), de);
-
- dataset_set_callback (the_dataset, set_unsaved, de);
-
- connect_help (de->builder);
-
- 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);
- gtk_box_pack_start (GTK_BOX (box), sb, FALSE, TRUE, 0);
-
- gtk_container_add (GTK_CONTAINER (de), box);
-
- set_cut_copy_menuitem_sensitivity (de, FALSE);
-
- g_signal_connect_swapped (de->data_editor, "data-selection-changed",
- G_CALLBACK (set_cut_copy_menuitem_sensitivity), de);
-
-
- set_paste_menuitem_sensitivity (de, FALSE);
-
- g_signal_connect_swapped (de->data_editor, "data-available-changed",
- G_CALLBACK (set_paste_menuitem_sensitivity), de);
-
- dataset_add_transform_change_callback (the_dataset,
- transformation_change_callback,
- de);
-
-
- vs = the_var_store;
-
- g_assert(vs); /* Traps a possible bug in w32 build */
-
- g_object_get (vs, "dictionary", &dict, NULL);
-
- g_signal_connect (dict, "weight-changed",
- G_CALLBACK (on_weight_change),
- de);
-
- g_signal_connect (dict, "filter-changed",
- G_CALLBACK (on_filter_change),
- de);
-
- g_signal_connect (dict, "split-changed",
- G_CALLBACK (on_split_change),
- de);
-
-
- g_signal_connect (get_action_assert (de->builder, "edit_copy"),
- "activate",
- G_CALLBACK (on_edit_copy), de);
-
- g_signal_connect (get_action_assert (de->builder, "edit_cut"),
- "activate",
- G_CALLBACK (on_edit_cut), de);
-
-
-
- {
- GtkWidget *toolbarbutton = get_widget_assert (de->builder, "button-open");
-
- GtkAction *action_data_open =
- resolve_action (de->builder, "file_open", NULL);
-
- g_object_set (action_data_open,
- "tooltip", _("Open a data or syntax file"),
- "stock-id", "gtk-open",
- NULL);
-
- g_signal_connect (action_data_open, "activate",
- G_CALLBACK (open_window), de);
-
- g_signal_connect_swapped (toolbarbutton, "clicked",
- G_CALLBACK (gtk_action_activate), action_data_open);
- }
-
-
-
- {
- GtkAction *action_data_new =
- resolve_action (de->builder, "file_new_data", NULL);
-
- g_object_set (action_data_new,
- "tooltip", _("New data file"),
- "stock-id", "gtk-new",
- NULL);
-
- g_signal_connect (action_data_new, "activate",
- G_CALLBACK (new_file), de);
- }
-
-
-
- {
- GtkAction *invoke_text_import_assistant =
- resolve_action (de->builder, "file_import-text", NULL);
-
- g_object_set (invoke_text_import_assistant,
- "tooltip", _("Import text data file"),
- "stock-id", "gtk-convert",
- NULL);
-
- g_signal_connect (invoke_text_import_assistant, "activate",
- G_CALLBACK (text_data_import_assistant), 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);
-
- g_signal_connect_swapped (action_data_save, "activate",
- G_CALLBACK (data_save), de);
- }
-
-
-
-
- {
- GtkAction *action_data_save_as =
- resolve_action (de->builder, "file_save_as", NULL);
-
- g_object_set (action_data_save_as,
- "tooltip", _("Save data to file"),
- "stock-id", "gtk-save-as",
- NULL);
-
- g_signal_connect_swapped (action_data_save_as, "activate",
- G_CALLBACK (data_save_as_dialog), 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 *action_info_external_file =
- resolve_action (de->builder,
- "file_information_external-file", NULL);
-
-
- g_signal_connect_swapped (action_info_external_file, "activate",
- G_CALLBACK (sysfile_info), de);
- }
-
-
-
- {
- GtkAction *value_labels_action =
- resolve_action (de->builder,
- "view_value-labels", "togglebutton-value-labels");
-
- 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 (get_action_assert (de->builder, "edit_paste"), "activate",
- G_CALLBACK (on_edit_paste),
- de);
-
- {
- de->delete_cases =
- resolve_action (de->builder, "edit_clear-cases", NULL);
-
-
- g_object_set (de->delete_cases,
- "label", _("Clear"),
- "tooltip", _("Delete the cases at the selected position(s)"),
- "stock-id", "gtk-clear",
- NULL);
-
- g_signal_connect_swapped (de->delete_cases, "activate",
- G_CALLBACK (psppire_data_editor_delete_cases),
- de->data_editor);
-
- gtk_action_set_visible (de->delete_cases, FALSE);
- }
-
-
- {
- de->delete_variables =
- resolve_action (de->builder, "edit_clear-variables", NULL);
-
- g_object_set (de->delete_variables,
- "label", _("Clear"),
- "tooltip", _("Delete the variables at the selected position(s)"),
- "stock-id", "gtk-clear",
- NULL);
-
-
- g_signal_connect_swapped (de->delete_variables, "activate",
- G_CALLBACK (psppire_data_editor_delete_variables),
- de->data_editor);
-
- gtk_action_set_visible (de->delete_variables, FALSE);
- }
-
-
- 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 =
- resolve_action (de->builder, "data_transpose", NULL);
-
-
- g_object_set (invoke_transpose_dialog,
- "tooltip", _("Transpose the cases with the variables"),
- "stock-id", "pspp-transpose",
- NULL);
-
- g_signal_connect (invoke_transpose_dialog, "activate",
- G_CALLBACK (transpose_dialog), 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);
-
-
- g_object_set (invoke_sort_cases_dialog,
- "tooltip", _("Sort cases in the active file"),
- "stock-id", "gtk-sort-ascending",
- NULL);
-
- g_signal_connect (invoke_sort_cases_dialog, "activate",
- G_CALLBACK (sort_cases_dialog), 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 =
- resolve_action (de->builder, "transform_compute", NULL);
-
- g_object_set (invoke_compute_dialog,
- "tooltip", _("Compute new values for a variable"),
- "stock-id", "pspp-compute",
- NULL);
-
- g_signal_connect (invoke_compute_dialog, "activate",
- G_CALLBACK (compute_dialog), de);
- }
-
-
- {
- GtkAction *invoke_oneway_anova_dialog =
- resolve_action (de->builder, "oneway-anova", NULL);
-
- g_object_set (invoke_oneway_anova_dialog,
- "tooltip", _("Perform one way analysis of variance"),
- NULL);
-
- g_signal_connect (invoke_oneway_anova_dialog, "activate",
- G_CALLBACK (oneway_anova_dialog), de);
- }
-
-
- {
- GtkAction *invoke_t_test_independent_samples_dialog =
- resolve_action (de->builder, "indep-t-test", NULL);
-
-
- g_object_set (invoke_t_test_independent_samples_dialog,
- "tooltip",
- _("Calculate T Test for samples from independent groups"),
- NULL);
-
- g_signal_connect (invoke_t_test_independent_samples_dialog, "activate",
- G_CALLBACK (t_test_independent_samples_dialog), de);
- }
-
-
- {
- GtkAction *invoke_t_test_paired_samples_dialog =
- resolve_action (de->builder, "paired-t-test", NULL);
-
- g_object_set (invoke_t_test_paired_samples_dialog,
- "tooltip",
- _("Calculate T Test for paired samples"),
- NULL);
-
- g_signal_connect (invoke_t_test_paired_samples_dialog, "activate",
- G_CALLBACK (t_test_paired_samples_dialog), de);
- }
-
-
- {
- GtkAction *invoke_t_test_one_sample_dialog =
- resolve_action (de->builder, "one-sample-t-test", NULL);
-
- g_object_set (invoke_t_test_one_sample_dialog,
- "tooltip",
- _("Calculate T Test for sample from a single distribution"),
- NULL);
-
- g_signal_connect (invoke_t_test_one_sample_dialog, "activate",
- G_CALLBACK (t_test_one_sample_dialog), de);
- }
-
-
- {
- GtkAction *invoke_comments_dialog =
- resolve_action (de->builder, "utilities_comments", NULL);
-
-
- g_object_set (invoke_comments_dialog,
- "tooltip",
- _("Commentary text for the data file"),
- NULL);
-
- g_signal_connect (invoke_comments_dialog, "activate",
- G_CALLBACK (comments_dialog), de);
- }
-