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)
63
64 // Layout presets
66 void LoadDesignerLayout();
67 void LoadModderLayout();
68
69 // Window state queries
70 std::vector<std::string> GetVisibleWindows() const;
71 std::vector<std::string> GetHiddenWindows() const;
72 ImVec2 GetWindowSize(const std::string& window_id) const;
73 ImVec2 GetWindowPosition(const std::string& window_id) const;
74
75 // Batch operations
76 void ShowWindowsInCategory(const std::string& category);
77 void HideWindowsInCategory(const std::string& category);
78 void ShowOnlyWindow(const std::string& window_id); // Hide all others
79
80 // Window registration (for tracking)
81 void RegisterWindow(const std::string& window_id,
82 const std::string& category = "");
83 void UnregisterWindow(const std::string& window_id);
84
85 // Layout presets
86 void LoadMinimalLayout();
87
89 std::function<void(const std::string&)> callback) {
90 apply_preset_callback_ = std::move(callback);
91 }
92
93 private:
94 // Window registry for tracking
95 struct WindowInfo {
96 std::string id;
97 std::string category;
98 bool is_registered = false;
99 };
100
101 std::unordered_map<std::string, WindowInfo> registered_windows_;
102 std::function<void(const std::string&)> apply_preset_callback_;
103
104 // Helper methods
105 bool IsWindowRegistered(const std::string& window_id) const;
106 std::string GetLayoutFilePath(const std::string& preset_name) const;
107 void ApplyLayoutToWindow(const std::string& window_id,
108 const std::string& layout_data);
109};
110
111} // namespace editor
112} // namespace yaze
113
114#endif // YAZE_APP_EDITOR_LAYOUT_WINDOW_DELEGATE_H_
115
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)