yaze 0.3.2
Link to the Past ROM Editor
 
Loading...
Searching...
No Matches
workspace_manager.h
Go to the documentation of this file.
1#ifndef YAZE_APP_EDITOR_SHELL_COORDINATOR_WORKSPACE_MANAGER_H_
2#define YAZE_APP_EDITOR_SHELL_COORDINATOR_WORKSPACE_MANAGER_H_
3
4#include <deque>
5#include <functional>
6#include <string>
7
8#include "absl/status/status.h"
9
10namespace yaze {
11class Rom;
12
13namespace editor {
14
15class EditorSet;
16class ToastManager;
17class WorkspaceWindowManager;
18class LayoutManager;
19
24 public:
25 struct SessionInfo {
28 std::string custom_name;
29 std::string filepath;
30 };
31
32 explicit WorkspaceManager(ToastManager* toast_manager)
33 : toast_manager_(toast_manager) {}
34
35 // Set window manager for window visibility management
37 window_manager_ = manager;
38 }
39
40 void set_layout_manager(LayoutManager* manager) { layout_manager_ = manager; }
42 std::function<void(const std::string&)> callback) {
43 apply_preset_callback_ = std::move(callback);
44 }
45
46 // Layout management
47 absl::Status SaveWorkspaceLayout(const std::string& name = "");
48 absl::Status LoadWorkspaceLayout(const std::string& name = "");
49 absl::Status ResetWorkspaceLayout();
50
51 // Preset management
52 void SaveWorkspacePreset(const std::string& name);
53 void LoadWorkspacePreset(const std::string& name);
54 void RefreshPresets();
56 void LoadDesignerLayout();
57 void LoadModderLayout();
58
59 // Window management
60 void ShowAllWindows();
61 void HideAllWindows();
63 void RestoreAllWindows();
65
66 // Window operations for keyboard navigation
67 void FocusNextWindow();
71 void CloseCurrentWindow();
72
73 // Command execution (for WhichKey integration)
74 void ExecuteWorkspaceCommand(const std::string& command_id);
75
76 // Session queries
77 size_t GetActiveSessionCount() const;
78 bool HasDuplicateSession(const std::string& filepath) const;
79
80 void set_sessions(std::deque<SessionInfo>* sessions) { sessions_ = sessions; }
81
82 const std::vector<std::string>& workspace_presets() const {
83 return workspace_presets_;
84 }
86
87 private:
91 std::function<void(const std::string&)> apply_preset_callback_;
92 std::deque<SessionInfo>* sessions_ = nullptr;
94 std::vector<std::string> workspace_presets_;
96};
97
98} // namespace editor
99} // namespace yaze
100
101#endif // YAZE_APP_EDITOR_SHELL_COORDINATOR_WORKSPACE_MANAGER_H_
The Rom class is used to load, save, and modify Rom data. This is a generic SNES ROM container and do...
Definition rom.h:28
Contains a complete set of editors for a single ROM instance.
Manages ImGui DockBuilder layouts for each editor type.
Manages workspace layouts, sessions, and presets.
void SaveWorkspacePreset(const std::string &name)
bool HasDuplicateSession(const std::string &filepath) const
void set_apply_preset_callback(std::function< void(const std::string &)> callback)
void set_window_manager(WorkspaceWindowManager *manager)
WorkspaceManager(ToastManager *toast_manager)
std::function< void(const std::string &) apply_preset_callback_)
std::vector< std::string > workspace_presets_
const std::vector< std::string > & workspace_presets() const
void set_sessions(std::deque< SessionInfo > *sessions)
std::deque< SessionInfo > * sessions_
void LoadWorkspacePreset(const std::string &name)
void set_layout_manager(LayoutManager *manager)
absl::Status SaveWorkspaceLayout(const std::string &name="")
WorkspaceWindowManager * window_manager_
absl::Status LoadWorkspaceLayout(const std::string &name="")
void ExecuteWorkspaceCommand(const std::string &command_id)
Central registry for all editor cards with session awareness and dependency injection.