Implement workspace and session management features in EditorManager

- Added functionality for creating, duplicating, and closing sessions, enhancing user experience with multiple ROMs.
- Integrated session management UI elements, including a session switcher and session manager, for better navigation.
- Introduced workspace layout management features, allowing users to save and load layouts, and reset to defaults.
- Updated popup manager to include workspace help and session limit warnings, improving user guidance.
- Enhanced UI drawing functions to support new session and layout management features, ensuring a cohesive user interface.
This commit is contained in:
scawful
2025-09-25 15:18:11 -04:00
parent c943577aff
commit 83dbee155b
4 changed files with 695 additions and 13 deletions

View File

@@ -131,6 +131,9 @@ class EditorManager {
bool show_workspace_layout = false;
bool show_save_workspace_preset_ = false;
bool show_load_workspace_preset_ = false;
bool show_session_switcher_ = false;
bool show_session_manager_ = false;
bool show_layout_presets_ = false;
bool show_homepage_ = true;
bool show_command_palette_ = false;
bool show_global_search_ = false;
@@ -174,6 +177,29 @@ class EditorManager {
void RefreshWorkspacePresets();
void SaveWorkspacePreset(const std::string& name);
void LoadWorkspacePreset(const std::string& name);
// Workspace management
void CreateNewSession();
void DuplicateCurrentSession();
void CloseCurrentSession();
void SwitchToSession(size_t index);
size_t GetCurrentSessionIndex() const;
void ResetWorkspaceLayout();
void SaveWorkspaceLayout();
void LoadWorkspaceLayout();
void ShowAllWindows();
void HideAllWindows();
void MaximizeCurrentWindow();
void RestoreAllWindows();
void CloseAllFloatingWindows();
void LoadDeveloperLayout();
void LoadDesignerLayout();
void LoadModderLayout();
// UI drawing helpers
void DrawSessionSwitcher();
void DrawSessionManager();
void DrawLayoutPresets();
};
} // namespace editor