yaze 0.3.2
Link to the Past ROM Editor
 
Loading...
Searching...
No Matches
panel_host.cc
Go to the documentation of this file.
2
4#include "imgui/imgui.h"
5
6namespace yaze {
7namespace editor {
8
9WindowDescriptor WindowHost::ToDescriptor(const WindowDefinition& definition) {
10 WindowDescriptor descriptor;
11 descriptor.card_id = definition.id;
12 descriptor.display_name = definition.display_name;
13 descriptor.icon = definition.icon;
14 descriptor.category = definition.category;
15 descriptor.window_title = definition.window_title;
16 descriptor.shortcut_hint = definition.shortcut_hint;
17 descriptor.priority = definition.priority;
18 descriptor.scope = definition.scope;
19 descriptor.window_lifecycle = definition.window_lifecycle;
20 descriptor.context_scope = definition.context_scope;
21 descriptor.on_show = definition.on_show;
22 descriptor.on_hide = definition.on_hide;
23 descriptor.visibility_flag = definition.visibility_flag;
24 return descriptor;
25}
26
27bool WindowHost::RegisterPanel(size_t session_id,
28 const WindowDefinition& definition) {
29 if (!window_manager_ || definition.id.empty()) {
30 return false;
31 }
32
33 for (const auto& legacy_id : definition.legacy_ids) {
34 RegisterPanelAlias(legacy_id, definition.id);
35 }
36
37 window_manager_->RegisterWindow(session_id, ToDescriptor(definition));
38 if (definition.visible_by_default) {
39 window_manager_->OpenWindow(session_id, definition.id);
40 }
41
42 return true;
43}
44
45bool WindowHost::RegisterPanel(const WindowDefinition& definition) {
46 if (!window_manager_) {
47 return false;
48 }
50}
51
53 size_t session_id, const std::vector<WindowDefinition>& definitions) {
54 if (!window_manager_) {
55 return false;
56 }
57
58 bool any_registered = false;
59 for (const auto& definition : definitions) {
60 any_registered = RegisterPanel(session_id, definition) || any_registered;
61 }
62 return any_registered;
63}
64
66 const std::vector<WindowDefinition>& definitions) {
67 if (!window_manager_) {
68 return false;
69 }
71}
72
73void WindowHost::RegisterPanelAlias(const std::string& legacy_id,
74 const std::string& canonical_id) {
75 if (!window_manager_) {
76 return;
77 }
78 window_manager_->RegisterPanelAlias(legacy_id, canonical_id);
79}
80
81bool WindowHost::OpenWindow(size_t session_id, const std::string& window_id) {
82 return window_manager_ && window_manager_->OpenWindow(session_id, window_id);
83}
84
85bool WindowHost::CloseWindow(size_t session_id, const std::string& window_id) {
86 return window_manager_ && window_manager_->CloseWindow(session_id, window_id);
87}
88
89bool WindowHost::ToggleWindow(size_t session_id, const std::string& window_id) {
90 return window_manager_ &&
91 window_manager_->ToggleWindow(session_id, window_id);
92}
93
94bool WindowHost::IsWindowOpen(size_t session_id,
95 const std::string& window_id) const {
96 return window_manager_ &&
97 window_manager_->IsWindowOpen(session_id, window_id);
98}
99
100bool WindowHost::OpenAndFocusWindow(size_t session_id,
101 const std::string& window_id) const {
102 if (!window_manager_) {
103 return false;
104 }
105
106 if (!window_manager_->OpenWindow(session_id, window_id)) {
107 return false;
108 }
109
110 const std::string window_name =
111 window_manager_->GetWorkspaceWindowName(session_id, window_id);
112 if (window_name.empty()) {
113 return false;
114 }
115
116 ImGui::SetWindowFocus(window_name.c_str());
117 return true;
118}
119
120std::string WindowHost::ResolveWindowId(const std::string& window_id) const {
122 : window_id;
123}
124
126 size_t session_id, const std::string& window_id) const {
127 return window_manager_
128 ? window_manager_->GetWorkspaceWindowName(session_id, window_id)
129 : std::string();
130}
131
132} // namespace editor
133} // namespace yaze
bool OpenWindow(size_t session_id, const std::string &window_id)
Definition panel_host.cc:81
static WindowDescriptor ToDescriptor(const WindowDefinition &definition)
Definition panel_host.cc:9
std::string GetWorkspaceWindowName(size_t session_id, const std::string &window_id) const
bool IsWindowOpen(size_t session_id, const std::string &window_id) const
Definition panel_host.cc:93
void RegisterPanelAlias(const std::string &legacy_id, const std::string &canonical_id)
Definition panel_host.cc:73
std::string ResolveWindowId(const std::string &window_id) const
bool OpenAndFocusWindow(size_t session_id, const std::string &window_id) const
Definition panel_host.cc:98
bool RegisterPanels(size_t session_id, const std::vector< WindowDefinition > &definitions)
Definition panel_host.cc:52
WorkspaceWindowManager * window_manager_
Definition panel_host.h:95
bool ToggleWindow(size_t session_id, const std::string &window_id)
Definition panel_host.cc:89
bool CloseWindow(size_t session_id, const std::string &window_id)
Definition panel_host.cc:85
bool RegisterPanel(size_t session_id, const WindowDefinition &definition)
Definition panel_host.cc:27
std::string GetWorkspaceWindowName(size_t session_id, const std::string &base_window_id) const
Resolve the exact ImGui window name for a panel by base ID.
std::string ResolveWindowAlias(const std::string &window_id) const
bool CloseWindow(size_t session_id, const std::string &base_window_id)
void RegisterWindow(size_t session_id, const WindowDescriptor &descriptor)
bool IsWindowOpen(size_t session_id, const std::string &base_window_id) const
bool OpenWindow(size_t session_id, const std::string &base_window_id)
bool ToggleWindow(size_t session_id, const std::string &base_window_id)
void RegisterPanelAlias(const std::string &legacy_base_id, const std::string &canonical_base_id)
Register a legacy panel ID alias that resolves to a canonical ID.