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_SYSTEM_WINDOW_DELEGATE_H_
2#define YAZE_APP_EDITOR_SYSTEM_WINDOW_DELEGATE_H_
3
4#include <string>
5#include <vector>
6
7#include "absl/status/status.h"
8#include "imgui/imgui.h"
9
10namespace yaze {
11namespace editor {
12
27 public:
28 WindowDelegate() = default;
29 ~WindowDelegate() = default;
30
31 // Window visibility management
32 void ShowAllWindows();
33 void HideAllWindows();
34 void ShowWindow(const std::string& window_id);
35 void HideWindow(const std::string& window_id);
36 void ToggleWindow(const std::string& window_id);
37 bool IsWindowVisible(const std::string& window_id) const;
38
39 // Focus and positioning
40 void FocusWindow(const std::string& window_id);
41 void MaximizeWindow(const std::string& window_id);
42 void RestoreWindow(const std::string& window_id);
43 void CenterWindow(const std::string& window_id);
44
45 // Docking operations
46 void DockWindow(const std::string& window_id, ImGuiDir dock_direction);
47 void UndockWindow(const std::string& window_id);
48 void SetDockSpace(const std::string& dock_space_id, const ImVec2& size = ImVec2(0, 0));
49
50 // Layout management
51 absl::Status SaveLayout(const std::string& preset_name);
52 absl::Status LoadLayout(const std::string& preset_name);
53 absl::Status ResetLayout();
54 std::vector<std::string> GetAvailableLayouts() const;
55
56 // Workspace-specific layout methods (match EditorManager API)
60
61 // Layout presets
63 void LoadDesignerLayout();
64 void LoadModderLayout();
65
66 // Window state queries
67 std::vector<std::string> GetVisibleWindows() const;
68 std::vector<std::string> GetHiddenWindows() const;
69 ImVec2 GetWindowSize(const std::string& window_id) const;
70 ImVec2 GetWindowPosition(const std::string& window_id) const;
71
72 // Batch operations
73 void ShowWindowsInCategory(const std::string& category);
74 void HideWindowsInCategory(const std::string& category);
75 void ShowOnlyWindow(const std::string& window_id); // Hide all others
76
77 // Window registration (for tracking)
78 void RegisterWindow(const std::string& window_id, const std::string& category = "");
79 void UnregisterWindow(const std::string& window_id);
80
81 // Layout presets
82 void LoadMinimalLayout();
83
84 private:
85 // Window registry for tracking
86 struct WindowInfo {
87 std::string id;
88 std::string category;
89 bool is_registered = false;
90 };
91
92 std::unordered_map<std::string, WindowInfo> registered_windows_;
93
94 // Helper methods
95 bool IsWindowRegistered(const std::string& window_id) const;
96 std::string GetLayoutFilePath(const std::string& preset_name) const;
97 void ApplyLayoutToWindow(const std::string& window_id, const std::string& layout_data);
98};
99
100} // namespace editor
101} // namespace yaze
102
103#endif // YAZE_APP_EDITOR_SYSTEM_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)
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)
Main namespace for the application.
Definition controller.cc:20