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 <functional>
5#include <string>
6#include <unordered_map>
7#include <vector>
8
9#include "absl/status/status.h"
10#include "imgui/imgui.h"
11
12namespace yaze {
13namespace editor {
14
29 public:
30 WindowDelegate() = default;
31 ~WindowDelegate() = default;
32
33 // Window visibility management
34 void ShowAllWindows();
35 void HideAllWindows();
36 void ShowWindow(const std::string& window_id);
37 void HideWindow(const std::string& window_id);
38 void ToggleWindow(const std::string& window_id);
39 bool IsWindowVisible(const std::string& window_id) const;
40
41 // Focus and positioning
42 void FocusWindow(const std::string& window_id);
43 void MaximizeWindow(const std::string& window_id);
44 void RestoreWindow(const std::string& window_id);
45 void CenterWindow(const std::string& window_id);
46
47 // Docking operations
48 void DockWindow(const std::string& window_id, ImGuiDir dock_direction);
49 void UndockWindow(const std::string& window_id);
50 void SetDockSpace(const std::string& dock_space_id,
51 const ImVec2& size = ImVec2(0, 0));
52
53 // Layout management
54 absl::Status SaveLayout(const std::string& preset_name);
55 absl::Status LoadLayout(const std::string& preset_name);
56 absl::Status ResetLayout();
57 std::vector<std::string> GetAvailableLayouts() const;
58
59 // 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
88 std::function<void(const std::string&)> callback) {
89 apply_preset_callback_ = std::move(callback);
90 }
91
92 private:
93 // Window registry for tracking
94 struct WindowInfo {
95 std::string id;
96 std::string category;
97 bool is_registered = false;
98 };
99
100 std::unordered_map<std::string, WindowInfo> registered_windows_;
101 std::function<void(const std::string&)> apply_preset_callback_;
102
103 // Helper methods
104 bool IsWindowRegistered(const std::string& window_id) const;
105 std::string GetLayoutFilePath(const std::string& preset_name) const;
106 void ApplyLayoutToWindow(const std::string& window_id,
107 const std::string& layout_data);
108};
109
110} // namespace editor
111} // namespace yaze
112
113#endif // YAZE_APP_EDITOR_LAYOUT_WINDOW_DELEGATE_H_
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)
std::function< void(const std::string &) apply_preset_callback_)
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)
void set_apply_preset_callback(std::function< void(const std::string &)> callback)