3#include "imgui/imgui.h"
4#include "imgui/imgui_internal.h"
11 ImGuiID dockspace_id) {
15 "Layout for editor type %d already initialized, skipping",
16 static_cast<int>(type));
20 LOG_INFO(
"LayoutManager",
"Initializing layout for editor type %d",
21 static_cast<int>(type));
24 ImGui::DockBuilderRemoveNode(dockspace_id);
25 ImGui::DockBuilderAddNode(dockspace_id,
26 ImGuiDockNodeFlags_DockSpace);
27 ImGui::DockBuilderSetNodeSize(dockspace_id, ImGui::GetMainViewport()->Size);
62 LOG_WARN(
"LayoutManager",
"No layout defined for editor type %d",
63 static_cast<int>(type));
68 ImGui::DockBuilderFinish(dockspace_id);
89 ImGuiID dock_left_id = 0;
90 ImGuiID dock_center_id = 0;
91 ImGuiID dock_right_id = 0;
94 dock_left_id = ImGui::DockBuilderSplitNode(dockspace_id, ImGuiDir_Left, 0.25f,
95 nullptr, &dockspace_id);
96 dock_right_id = ImGui::DockBuilderSplitNode(dockspace_id, ImGuiDir_Right,
97 0.20f,
nullptr, &dockspace_id);
98 dock_center_id = dockspace_id;
101 ImGuiID dock_left_top = 0;
102 ImGuiID dock_left_bottom = ImGui::DockBuilderSplitNode(
103 dock_left_id, ImGuiDir_Down, 0.50f,
nullptr, &dock_left_top);
106 ImGuiID dock_right_top = 0;
107 ImGuiID dock_right_bottom = ImGui::DockBuilderSplitNode(
108 dock_right_id, ImGuiDir_Down, 0.40f,
nullptr, &dock_right_top);
111 ImGui::DockBuilderDockWindow(
" Overworld Canvas", dock_center_id);
112 ImGui::DockBuilderDockWindow(
" Tile16 Selector", dock_left_top);
113 ImGui::DockBuilderDockWindow(
" Tile8 Selector", dock_left_bottom);
114 ImGui::DockBuilderDockWindow(
" Area Graphics", dock_right_top);
115 ImGui::DockBuilderDockWindow(
" Scratch Pad", dock_right_bottom);
130 ImGuiID dock_left_id = 0;
131 ImGuiID dock_center_id = 0;
132 ImGuiID dock_right_id = 0;
135 dock_left_id = ImGui::DockBuilderSplitNode(dockspace_id, ImGuiDir_Left, 0.20f,
136 nullptr, &dockspace_id);
137 dock_right_id = ImGui::DockBuilderSplitNode(dockspace_id, ImGuiDir_Right,
138 0.19f,
nullptr, &dockspace_id);
139 dock_center_id = dockspace_id;
142 ImGuiID dock_left_top = 0;
143 ImGuiID dock_left_bottom = ImGui::DockBuilderSplitNode(
144 dock_left_id, ImGuiDir_Down, 0.40f,
nullptr, &dock_left_top);
147 ImGuiID dock_right_top = 0;
148 ImGuiID dock_right_bottom = ImGui::DockBuilderSplitNode(
149 dock_right_id, ImGuiDir_Down, 0.50f,
nullptr, &dock_right_top);
152 ImGui::DockBuilderDockWindow(
" Rooms List", dock_left_top);
153 ImGui::DockBuilderDockWindow(
" Entrances", dock_left_bottom);
154 ImGui::DockBuilderDockWindow(
" Object Editor", dock_right_top);
155 ImGui::DockBuilderDockWindow(
" Palette Editor", dock_right_bottom);
171 ImGuiID dock_left_id = 0;
172 ImGuiID dock_center_id = 0;
173 ImGuiID dock_right_id = 0;
176 dock_left_id = ImGui::DockBuilderSplitNode(dockspace_id, ImGuiDir_Left, 0.30f,
177 nullptr, &dockspace_id);
178 dock_right_id = ImGui::DockBuilderSplitNode(dockspace_id, ImGuiDir_Right,
179 0.29f,
nullptr, &dockspace_id);
180 dock_center_id = dockspace_id;
183 ImGuiID dock_right_top = 0;
184 ImGuiID dock_right_bottom = ImGui::DockBuilderSplitNode(
185 dock_right_id, ImGuiDir_Down, 0.50f,
nullptr, &dock_right_top);
188 ImGui::DockBuilderDockWindow(
" GFX Sheets", dock_left_id);
189 ImGui::DockBuilderDockWindow(
" Sheet Editor", dock_center_id);
190 ImGui::DockBuilderDockWindow(
" Animations", dock_right_top);
191 ImGui::DockBuilderDockWindow(
" Prototype", dock_right_bottom);
203 ImGuiID dock_left_id = 0;
204 ImGuiID dock_center_id = 0;
205 ImGuiID dock_right_id = 0;
208 dock_left_id = ImGui::DockBuilderSplitNode(dockspace_id, ImGuiDir_Left, 0.25f,
209 nullptr, &dockspace_id);
210 dock_right_id = ImGui::DockBuilderSplitNode(dockspace_id, ImGuiDir_Right,
211 0.33f,
nullptr, &dockspace_id);
212 dock_center_id = dockspace_id;
215 ImGuiID dock_left_top = 0;
216 ImGuiID dock_left_bottom = ImGui::DockBuilderSplitNode(
217 dock_left_id, ImGuiDir_Down, 0.50f,
nullptr, &dock_left_top);
220 ImGuiID dock_right_top = 0;
221 ImGuiID dock_right_bottom = ImGui::DockBuilderSplitNode(
222 dock_right_id, ImGuiDir_Down, 0.50f,
nullptr, &dock_right_top);
225 ImGui::DockBuilderDockWindow(
" Group Manager", dock_left_top);
226 ImGui::DockBuilderDockWindow(
" ROM Palette Browser", dock_left_bottom);
227 ImGui::DockBuilderDockWindow(
" Palette Editor", dock_center_id);
228 ImGui::DockBuilderDockWindow(
" SNES Palette", dock_right_top);
229 ImGui::DockBuilderDockWindow(
" Color Harmony", dock_right_bottom);
240 ImGuiID dock_top = 0;
241 ImGuiID dock_bottom = ImGui::DockBuilderSplitNode(
242 dockspace_id, ImGuiDir_Down, 0.50f,
nullptr, &dock_top);
245 ImGuiID dock_top_left = 0;
246 ImGuiID dock_top_right = ImGui::DockBuilderSplitNode(
247 dock_top, ImGuiDir_Right, 0.50f,
nullptr, &dock_top_left);
250 ImGuiID dock_bottom_left = 0;
251 ImGuiID dock_bottom_right = ImGui::DockBuilderSplitNode(
252 dock_bottom, ImGuiDir_Right, 0.50f,
nullptr, &dock_bottom_left);
255 ImGui::DockBuilderDockWindow(
" Dungeon Map Editor", dock_top_left);
256 ImGui::DockBuilderDockWindow(
" Title Screen", dock_top_right);
257 ImGui::DockBuilderDockWindow(
" Inventory Menu", dock_bottom_left);
258 ImGui::DockBuilderDockWindow(
" Naming Screen", dock_bottom_right);
271 ImGuiID dock_left_id = 0;
272 ImGuiID dock_center_id = 0;
273 ImGuiID dock_right_id = 0;
276 dock_left_id = ImGui::DockBuilderSplitNode(dockspace_id, ImGuiDir_Left, 0.30f,
277 nullptr, &dockspace_id);
278 dock_right_id = ImGui::DockBuilderSplitNode(dockspace_id, ImGuiDir_Right,
279 0.36f,
nullptr, &dockspace_id);
280 dock_center_id = dockspace_id;
283 ImGui::DockBuilderDockWindow(
" Music Tracker", dock_left_id);
284 ImGui::DockBuilderDockWindow(
" Instrument Editor", dock_center_id);
285 ImGui::DockBuilderDockWindow(
" Music Assembly", dock_right_id);
296 ImGuiID dock_left_id = 0;
297 ImGuiID dock_right_id = ImGui::DockBuilderSplitNode(
298 dockspace_id, ImGuiDir_Right, 0.50f,
nullptr, &dock_left_id);
301 ImGui::DockBuilderDockWindow(
" Vanilla Sprites", dock_left_id);
302 ImGui::DockBuilderDockWindow(
" Custom Sprites", dock_right_id);
314 ImGuiID dock_left_id = 0;
315 ImGuiID dock_center_id = 0;
316 ImGuiID dock_right_id = 0;
319 dock_left_id = ImGui::DockBuilderSplitNode(dockspace_id, ImGuiDir_Left, 0.25f,
320 nullptr, &dockspace_id);
321 dock_right_id = ImGui::DockBuilderSplitNode(dockspace_id, ImGuiDir_Right,
322 0.33f,
nullptr, &dockspace_id);
323 dock_center_id = dockspace_id;
326 ImGuiID dock_right_top = 0;
327 ImGuiID dock_right_bottom = ImGui::DockBuilderSplitNode(
328 dock_right_id, ImGuiDir_Down, 0.50f,
nullptr, &dock_right_top);
331 ImGui::DockBuilderDockWindow(
" Message List", dock_left_id);
332 ImGui::DockBuilderDockWindow(
" Message Editor", dock_center_id);
333 ImGui::DockBuilderDockWindow(
" Font Atlas", dock_right_top);
334 ImGui::DockBuilderDockWindow(
" Dictionary", dock_right_bottom);
345 ImGuiID dock_left_id = 0;
346 ImGuiID dock_right_id = ImGui::DockBuilderSplitNode(
347 dockspace_id, ImGuiDir_Right, 0.40f,
nullptr, &dock_left_id);
350 ImGuiID dock_right_top = 0;
351 ImGuiID dock_right_bottom = ImGui::DockBuilderSplitNode(
352 dock_right_id, ImGuiDir_Down, 0.50f,
nullptr, &dock_right_top);
355 ImGui::DockBuilderDockWindow(
" Assembly Editor", dock_left_id);
356 ImGui::DockBuilderDockWindow(
" Assembly Output", dock_right_top);
357 ImGui::DockBuilderDockWindow(
" Assembly Docs", dock_right_bottom);
368 ImGuiID dock_left_id = 0;
369 ImGuiID dock_right_id = ImGui::DockBuilderSplitNode(
370 dockspace_id, ImGuiDir_Right, 0.75f,
nullptr, &dock_left_id);
373 ImGui::DockBuilderDockWindow(
" Settings Navigation", dock_left_id);
374 ImGui::DockBuilderDockWindow(
" Settings Content", dock_right_id);
380 LOG_INFO(
"LayoutManager",
"Saving layout: %s", name.c_str());
386 LOG_INFO(
"LayoutManager",
"Loading layout: %s", name.c_str());
391 LOG_INFO(
"LayoutManager",
"Reset layout for editor type %d",
392 static_cast<int>(type));
402 LOG_INFO(
"LayoutManager",
"Marked layout for editor type %d as initialized",
403 static_cast<int>(type));
408 LOG_INFO(
"LayoutManager",
"Cleared all layout initialization flags");
void LoadLayout(const std::string &name)
Load a saved layout by name.
void BuildScreenLayout(ImGuiID dockspace_id)
void BuildPaletteLayout(ImGuiID dockspace_id)
void BuildDungeonLayout(ImGuiID dockspace_id)
void BuildGraphicsLayout(ImGuiID dockspace_id)
void BuildAssemblyLayout(ImGuiID dockspace_id)
void ClearInitializationFlags()
Clear all initialization flags (for testing)
void BuildMessageLayout(ImGuiID dockspace_id)
std::unordered_map< EditorType, bool > layouts_initialized_
bool IsLayoutInitialized(EditorType type) const
Check if a layout has been initialized for an editor.
void BuildSettingsLayout(ImGuiID dockspace_id)
void ResetToDefaultLayout(EditorType type)
Reset the layout for an editor to its default.
void BuildOverworldLayout(ImGuiID dockspace_id)
void MarkLayoutInitialized(EditorType type)
Mark a layout as initialized.
void InitializeEditorLayout(EditorType type, ImGuiID dockspace_id)
Initialize the default layout for a specific editor type.
void SaveCurrentLayout(const std::string &name)
Save the current layout with a custom name.
void BuildSpriteLayout(ImGuiID dockspace_id)
void BuildMusicLayout(ImGuiID dockspace_id)
#define LOG_WARN(category, format,...)
#define LOG_INFO(category, format,...)
Main namespace for the application.