-
-/* Returns the UI manager that should be merged into DE's toplevel widget's UI
- manager to display menu items and toolbar items specific to DE's current
- page and data sheet.
-
- DE's toplevel widget can watch for changes by connecting to DE's
- notify::ui-manager signal. */
-GtkUIManager *
-psppire_data_editor_get_ui_manager (PsppireDataEditor *de)
-{
- psppire_data_editor_update_ui_manager (de);
- return de->ui_manager;
-}
-
-static void
-psppire_data_editor_update_ui_manager (PsppireDataEditor *de)
-{
- PsppireDataSheet *data_sheet;
- GtkUIManager *ui_manager;
-
- ui_manager = NULL;
-
- switch (gtk_notebook_get_current_page (GTK_NOTEBOOK (de)))
- {
- case PSPPIRE_DATA_EDITOR_DATA_VIEW:
- data_sheet = psppire_data_editor_get_active_data_sheet (de);
- if (data_sheet != NULL)
- ui_manager = psppire_data_sheet_get_ui_manager (data_sheet);
- else
- {
- /* This happens transiently in psppire_data_editor_split_window(). */
- }
- break;
-
- case PSPPIRE_DATA_EDITOR_VARIABLE_VIEW:
- ui_manager = psppire_var_sheet_get_ui_manager (
- PSPPIRE_VAR_SHEET (de->var_sheet));
- break;
-
- default:
- /* This happens transiently in psppire_data_editor_init(). */
- break;
- }
-
- if (ui_manager != de->ui_manager)
- {
- if (de->ui_manager)
- g_object_unref (de->ui_manager);
- if (ui_manager)
- g_object_ref (ui_manager);
- de->ui_manager = ui_manager;
-
- g_object_notify (G_OBJECT (de), "ui-manager");
- }
-}