yaze 0.3.2
Link to the Past ROM Editor
 
Loading...
Searching...
No Matches
window_delegate.h
Go to the documentation of this file.
1#ifndef YAZE_APP_EDITOR_LAYOUT_WINDOW_DELEGATE_H_
2#define YAZE_APP_EDITOR_LAYOUT_WINDOW_DELEGATE_H_
3
4#include <string>
5#include <unordered_map>
6#include <vector>
7
8#include "absl/status/status.h"
9#include "imgui/imgui.h"
10
11namespace yaze {
12namespace editor {
13
28 public:
29 WindowDelegate() = default;
30 ~WindowDelegate() = default;
31
32 // Window visibility management
33 void ShowAllWindows();
34 void HideAllWindows();
35 void ShowWindow(const std::string& window_id);
36 void HideWindow(const std::string& window_id);
37 void ToggleWindow(const std::string& window_id);
38 bool IsWindowVisible(const std::string& window_id) const;
39
40 // Focus and positioning
41 void FocusWindow(const std::string& window_id);
42 void MaximizeWindow(const std::string& window_id);
43 void RestoreWindow(const std::string& window_id);
44 void CenterWindow(const std::string& window_id);
45
46 // Docking operations
47 void DockWindow(const std::string& window_id, ImGuiDir dock_direction);
48 void UndockWindow(const std::string& window_id);
49 void SetDockSpace(const std::string& dock_space_id,
50 const ImVec2& size = ImVec2(0, 0));
51
52 // Layout management
53 absl::Status SaveLayout(const std::string& preset_name);
54 absl::Status LoadLayout(const std::string& preset_name);
55 absl::Status ResetLayout();
56 std::vector<std::string> GetAvailableLayouts() const;
57
58 // Workspace-specific layout methods (match EditorManager API)
62
63 // Layout presets
65 void LoadDesignerLayout();
66 void LoadModderLayout();
67
68 // Window state queries
69 std::vector<std::string> GetVisibleWindows() const;
70 std::vector<std::string> GetHiddenWindows() const;
71 ImVec2 GetWindowSize(const std::string& window_id) const;
72 ImVec2 GetWindowPosition(const std::string& window_id) const;
73
74 // Batch operations
75 void ShowWindowsInCategory(const std::string& category);
76 void HideWindowsInCategory(const std::string& category);
77 void ShowOnlyWindow(const std::string& window_id); // Hide all others
78
79 // Window registration (for tracking)
80 void RegisterWindow(const std::string& window_id,
81 const std::string& category = "");
82 void UnregisterWindow(const std::string& window_id);
83
84 // Layout presets
85 void LoadMinimalLayout();
86
87 private:
88 // Window registry for tracking
89 struct WindowInfo {
90 std::string id;
91 std::string category;
92 bool is_registered = false;
93 };
94
95 std::unordered_map<std::string, WindowInfo> registered_windows_;
96
97 // Helper methods
98 bool IsWindowRegistered(const std::string& window_id) const;
99 std::string GetLayoutFilePath(const std::string& preset_name) const;
100 void ApplyLayoutToWindow(const std::string& window_id,
101 const std::string& layout_data);
102};
103
104} // namespace editor
105} // namespace yaze
106
107#endif // YAZE_APP_EDITOR_LAYOUT_WINDOW_DELEGATE_H_
108
Low-level window operations with minimal dependencies.
std::vector< std::string > GetVisibleWindows() const
void SetDockSpace(const std::string &dock_space_id, const ImVec2 &size=ImVec2(0, 0))
bool IsWindowVisible(const std::string &window_id) const
void UnregisterWindow(const std::string &window_id)
void RegisterWindow(const std::string &window_id, const std::string &category="")
std::unordered_map< std::string, WindowInfo > registered_windows_
void RestoreWindow(const std::string &window_id)
void MaximizeWindow(const std::string &window_id)
std::string GetLayoutFilePath(const std::string &preset_name) const
void ShowWindow(const std::string &window_id)
void HideWindow(const std::string &window_id)
std::vector< std::string > GetAvailableLayouts() const
ImVec2 GetWindowSize(const std::string &window_id) const
void ToggleWindow(const std::string &window_id)
void UndockWindow(const std::string &window_id)
absl::Status SaveLayout(const std::string &preset_name)
void ShowOnlyWindow(const std::string &window_id)
void ShowWindowsInCategory(const std::string &category)
bool IsWindowRegistered(const std::string &window_id) const
void HideWindowsInCategory(const std::string &category)
void CenterWindow(const std::string &window_id)
ImVec2 GetWindowPosition(const std::string &window_id) const
void ApplyLayoutToWindow(const std::string &window_id, const std::string &layout_data)
absl::Status LoadLayout(const std::string &preset_name)
void DockWindow(const std::string &window_id, ImGuiDir dock_direction)
std::vector< std::string > GetHiddenWindows() const
void FocusWindow(const std::string &window_id)