- g_signal_connect_swapped (insert_variable, "activate",
- G_CALLBACK (gtk_action_activate),
- de->insert_variable);
-
-
- gtk_menu_shell_append (GTK_MENU_SHELL (menu),
- gtk_separator_menu_item_new ());
-
-
- gtk_menu_shell_append (GTK_MENU_SHELL (menu), delete_variable);
-
-
- 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);
-
-
-
-
-
- {
- 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 = get_action_assert (de->builder, "file_save");
-
- g_signal_connect_swapped (action_data_save, "activate",
- 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,
- "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);
- }
-
-
-
-
- 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);
-
-
- 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);
- }
-
-
-
- {
- 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_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_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_find_dialog = get_action_assert (de->builder, "edit_find");
-
- g_signal_connect (invoke_find_dialog, "activate",
- G_CALLBACK (find_dialog), de);
- }