yaze 0.3.2
Link to the Past ROM Editor
 
Loading...
Searching...
No Matches
ui_coordinator.h
Go to the documentation of this file.
1#ifndef YAZE_APP_EDITOR_UI_UI_COORDINATOR_H_
2#define YAZE_APP_EDITOR_UI_UI_COORDINATOR_H_
3
4#include <string>
5#include <memory>
6
7#include "absl/status/status.h"
8#include "app/editor/editor.h"
11#include "app/gui/core/icons.h"
12
13namespace yaze {
14namespace editor {
15
16// Forward declarations to avoid circular dependencies
17class EditorManager;
18class RomFileManager;
19class ProjectManager;
20class EditorRegistry;
21class SessionCoordinator;
22class ToastManager;
23class WindowDelegate;
24class ShortcutManager;
25
42 public:
43 // Constructor takes references to the managers it coordinates with
44 UICoordinator(EditorManager* editor_manager,
45 RomFileManager& rom_manager,
46 ProjectManager& project_manager,
47 EditorRegistry& editor_registry,
48 EditorCardRegistry& card_registry,
49 SessionCoordinator& session_coordinator,
50 WindowDelegate& window_delegate,
51 ToastManager& toast_manager,
52 PopupManager& popup_manager,
53 ShortcutManager& shortcut_manager);
54 ~UICoordinator() = default;
55
56 // Non-copyable due to reference members
57 UICoordinator(const UICoordinator&) = delete;
59
60 // Main UI drawing interface
61 void DrawAllUI();
62 void DrawMenuBarExtras();
64
65 // Core UI components (actual ImGui rendering moved from EditorManager)
66 void DrawCommandPalette();
67 void DrawGlobalSearch();
69
70 // Session UI components
74 void DrawLayoutPresets();
75
76 // Welcome screen and project UI
77 void DrawWelcomeScreen();
78 void DrawProjectHelp();
79
80 // Window management UI
82 void DrawRomSelector();
83
84 // Popup and dialog management
85 void DrawAllPopups();
86 void ShowPopup(const std::string& popup_name);
87 void HidePopup(const std::string& popup_name);
88
89 // UI state management
94 // Session switcher is now managed by SessionCoordinator
101
102 // Window visibility management
103 void ShowAllWindows();
104 void HideAllWindows();
105
106 // UI state queries (EditorManager can check these)
109 // Session switcher visibility managed by SessionCoordinator
110 bool IsSessionSwitcherVisible() const;
118 bool IsImGuiDemoVisible() const { return show_imgui_demo_; }
120 bool IsEmulatorVisible() const { return show_emulator_; }
122 bool IsAsmEditorVisible() const { return show_asm_editor_; }
125
126 // UI state setters (for programmatic control)
127 void SetEditorSelectionVisible(bool visible) { show_editor_selection_ = visible; }
128 void SetDisplaySettingsVisible(bool visible) { show_display_settings_ = visible; }
129 // Session switcher state managed by SessionCoordinator
130 void SetSessionSwitcherVisible(bool visible);
131 void SetWelcomeScreenVisible(bool visible) { show_welcome_screen_ = visible; }
133 void SetGlobalSearchVisible(bool visible) { show_global_search_ = visible; }
135 void SetCardBrowserVisible(bool visible) { show_card_browser_ = visible; }
136 void SetCommandPaletteVisible(bool visible) { show_command_palette_ = visible; }
137 void SetCardSidebarVisible(bool visible) { show_card_sidebar_ = visible; }
138 void SetImGuiDemoVisible(bool visible) { show_imgui_demo_ = visible; }
139 void SetImGuiMetricsVisible(bool visible) { show_imgui_metrics_ = visible; }
140 void SetEmulatorVisible(bool visible) { show_emulator_ = visible; }
141 void SetMemoryEditorVisible(bool visible) { show_memory_editor_ = visible; }
142 void SetAsmEditorVisible(bool visible) { show_asm_editor_ = visible; }
143 void SetPaletteEditorVisible(bool visible) { show_palette_editor_ = visible; }
145
146 // Note: Theme styling is handled by ThemeManager, not UICoordinator
147
148 private:
149 // References to coordinated managers
160
161 // UI state flags (UICoordinator owns all UI visibility state)
164 // show_session_switcher_ removed - managed by SessionCoordinator
169 bool show_imgui_demo_ = false;
172 bool show_card_browser_ = false;
174 bool show_emulator_ = false;
176 bool show_asm_editor_ = false;
181 bool show_card_sidebar_ = true; // Show sidebar by default
182
183 // Command Palette state
186
187 // Global Search state
188 char global_search_query_[256] = {};
189
190 // Welcome screen component
191 std::unique_ptr<WelcomeScreen> welcome_screen_;
192
193 // Helper methods for drawing operations
195 void DrawSessionTabs();
196 void DrawSessionBadges();
197
198 // Material Design component helpers
199 void DrawMaterialButton(const std::string& text, const std::string& icon,
200 const ImVec4& color, std::function<void()> callback,
201 bool enabled = true);
202
203 // Layout and positioning helpers
204 void CenterWindow(const std::string& window_name);
205 void PositionWindow(const std::string& window_name, float x, float y);
206 void SetWindowSize(const std::string& window_name, float width, float height);
207
208 // Icon and theming helpers
209 std::string GetIconForEditor(EditorType type) const;
210 std::string GetColorForEditor(EditorType type) const;
211 void ApplyEditorTheme(EditorType type);
212
213};
214
215} // namespace editor
216} // namespace yaze
217
218#endif // YAZE_APP_EDITOR_UI_UI_COORDINATOR_H_
Central registry for all editor cards with session awareness and dependency injection.
The EditorManager controls the main editor window and manages the various editor classes.
Manages editor types, categories, and lifecycle.
Handles all project file operations.
Handles all ROM file I/O operations.
High-level orchestrator for multi-session UI.
Handles all UI drawing operations and state management.
ShortcutManager & shortcut_manager_
void DrawMaterialButton(const std::string &text, const std::string &icon, const ImVec4 &color, std::function< void()> callback, bool enabled=true)
void SetPerformanceDashboardVisible(bool visible)
void SetSessionSwitcherVisible(bool visible)
void SetGlobalSearchVisible(bool visible)
void HidePopup(const std::string &popup_name)
bool IsPerformanceDashboardVisible() const
SessionCoordinator & session_coordinator_
std::string GetColorForEditor(EditorType type) const
void SetWelcomeScreenManuallyClosed(bool closed)
void SetCardSidebarVisible(bool visible)
void SetMemoryEditorVisible(bool visible)
void SetResourceLabelManagerVisible(bool visible)
void SetEmulatorVisible(bool visible)
EditorCardRegistry & card_registry_
void SetAsmEditorVisible(bool visible)
void SetWelcomeScreenVisible(bool visible)
std::string GetIconForEditor(EditorType type) const
WindowDelegate & window_delegate_
void ShowPopup(const std::string &popup_name)
ProjectManager & project_manager_
UICoordinator & operator=(const UICoordinator &)=delete
bool IsResourceLabelManagerVisible() const
bool IsWelcomeScreenManuallyClosed() const
void PositionWindow(const std::string &window_name, float x, float y)
void SetWindowSize(const std::string &window_name, float width, float height)
UICoordinator(const UICoordinator &)=delete
void SetImGuiDemoVisible(bool visible)
void SetPaletteEditorVisible(bool visible)
void SetDisplaySettingsVisible(bool visible)
void SetCommandPaletteVisible(bool visible)
void ApplyEditorTheme(EditorType type)
void SetCardBrowserVisible(bool visible)
std::unique_ptr< WelcomeScreen > welcome_screen_
void SetImGuiMetricsVisible(bool visible)
void SetEditorSelectionVisible(bool visible)
EditorRegistry & editor_registry_
void CenterWindow(const std::string &window_name)
Low-level window operations with minimal dependencies.
Main namespace for the application.
Definition controller.cc:20