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_UI_WORKSPACE_MANAGER_H_
2#define YAZE_APP_EDITOR_UI_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 PanelManager;
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 panel manager for window visibility management
37 panel_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_UI_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.
Central registry for all editor cards with session awareness and dependency injection.
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)
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)
void set_panel_manager(PanelManager *manager)
absl::Status SaveWorkspaceLayout(const std::string &name="")
absl::Status LoadWorkspaceLayout(const std::string &name="")
void ExecuteWorkspaceCommand(const std::string &command_id)