yaze 0.3.2
Link to the Past ROM Editor
 
Loading...
Searching...
No Matches
layout_manager.h
Go to the documentation of this file.
1#ifndef YAZE_APP_EDITOR_LAYOUT_LAYOUT_MANAGER_H_
2#define YAZE_APP_EDITOR_LAYOUT_LAYOUT_MANAGER_H_
3
4#include <string>
5#include <unordered_map>
6
7#include "app/editor/editor.h"
8#include "imgui/imgui.h"
9
10namespace yaze {
11namespace editor {
12
13// Forward declaration
14class PanelManager;
15
20enum class LayoutType {
26 kScreen,
27 kMusic,
28 kSprite,
33};
34
51 public:
52 LayoutManager() = default;
53 ~LayoutManager() = default;
54
60 panel_manager_ = manager;
61 }
62
68
74 void InitializeEditorLayout(EditorType type, ImGuiID dockspace_id);
75
84 void RebuildLayout(EditorType type, ImGuiID dockspace_id);
85
90 void SaveCurrentLayout(const std::string& name);
91
96 void LoadLayout(const std::string& name);
97
103
109 bool IsLayoutInitialized(EditorType type) const;
110
116
121
127
132
137
141 bool IsRebuildRequested() const { return rebuild_requested_; }
142
147
153 std::string GetWindowTitle(const std::string& card_id) const;
154
155 private:
156 // DockBuilder layout implementations for each editor type
157 void BuildLayoutFromPreset(EditorType type, ImGuiID dockspace_id);
158
159 // Deprecated individual builders - kept for compatibility or as wrappers
160 void BuildOverworldLayout(ImGuiID dockspace_id);
161 void BuildDungeonLayout(ImGuiID dockspace_id);
162 void BuildGraphicsLayout(ImGuiID dockspace_id);
163 void BuildPaletteLayout(ImGuiID dockspace_id);
164 void BuildScreenLayout(ImGuiID dockspace_id);
165 void BuildMusicLayout(ImGuiID dockspace_id);
166 void BuildSpriteLayout(ImGuiID dockspace_id);
167 void BuildMessageLayout(ImGuiID dockspace_id);
168 void BuildAssemblyLayout(ImGuiID dockspace_id);
169 void BuildSettingsLayout(ImGuiID dockspace_id);
170 void BuildEmulatorLayout(ImGuiID dockspace_id);
171
172 // Track which layouts have been initialized
173 std::unordered_map<EditorType, bool> layouts_initialized_;
174
175 // Panel manager for window title lookups
177
178 // Current layout type
180
181 // Rebuild flag
182 bool rebuild_requested_ = false;
183
184 // Last used dockspace ID (for rebuild operations)
186
187 // Current editor type being displayed
189};
190
191} // namespace editor
192} // namespace yaze
193
194#endif // YAZE_APP_EDITOR_LAYOUT_LAYOUT_MANAGER_H_
195
Manages ImGui DockBuilder layouts for each editor type.
void SetLayoutType(LayoutType type)
Set the current layout type for rebuild.
void LoadLayout(const std::string &name)
Load a saved layout by name.
std::string GetWindowTitle(const std::string &card_id) const
Get window title for a card ID from registry.
void BuildScreenLayout(ImGuiID dockspace_id)
void BuildPaletteLayout(ImGuiID dockspace_id)
void BuildDungeonLayout(ImGuiID dockspace_id)
void SetPanelManager(PanelManager *manager)
Set the panel manager for window title lookups.
void BuildGraphicsLayout(ImGuiID dockspace_id)
void RebuildLayout(EditorType type, ImGuiID dockspace_id)
Force rebuild of layout for a specific editor type.
void BuildEmulatorLayout(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.
LayoutType GetLayoutType() const
Get the current layout type.
void BuildSettingsLayout(ImGuiID dockspace_id)
void ResetToDefaultLayout(EditorType type)
Reset the layout for an editor to its default.
void BuildOverworldLayout(ImGuiID dockspace_id)
void ClearRebuildRequest()
Clear rebuild request flag.
PanelManager * panel_manager() const
Get the panel manager.
void MarkLayoutInitialized(EditorType type)
Mark a layout as initialized.
void RequestRebuild()
Request a layout rebuild on next frame.
void InitializeEditorLayout(EditorType type, ImGuiID dockspace_id)
Initialize the default layout for a specific editor type.
bool IsRebuildRequested() const
Check if rebuild was requested.
void BuildLayoutFromPreset(EditorType type, ImGuiID dockspace_id)
void SaveCurrentLayout(const std::string &name)
Save the current layout with a custom name.
void BuildSpriteLayout(ImGuiID dockspace_id)
void BuildMusicLayout(ImGuiID dockspace_id)
Central registry for all editor cards with session awareness and dependency injection.
LayoutType
Predefined layout types for different editor workflows.