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
50 // Preset management
51 void SaveWorkspacePreset(const std::string& name);
52 void LoadWorkspacePreset(const std::string& name);
53 void RefreshPresets();
55 void LoadDesignerLayout();
56 void LoadModderLayout();
57
58 // Window management
59 void ShowAllWindows();
60 void HideAllWindows();
62 void RestoreAllWindows();
64
65 // Window operations for keyboard navigation
66 void FocusNextWindow();
70 void CloseCurrentWindow();
71
72 // Session queries
73 size_t GetActiveSessionCount() const;
74 bool HasDuplicateSession(const std::string& filepath) const;
75
76 void set_sessions(std::deque<SessionInfo>* sessions) { sessions_ = sessions; }
77
78 const std::vector<std::string>& workspace_presets() const {
79 return workspace_presets_;
80 }
82
83 private:
87 std::function<void(const std::string&)> apply_preset_callback_;
88 std::deque<SessionInfo>* sessions_ = nullptr;
90 std::vector<std::string> workspace_presets_;
92};
93
94} // namespace editor
95} // namespace yaze
96
97#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:52
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="")
Central registry for all editor cards with session awareness and dependency injection.