yaze 0.3.2
Link to the Past ROM Editor
 
Loading...
Searching...
No Matches
menu_orchestrator.h
Go to the documentation of this file.
1#ifndef YAZE_APP_EDITOR_MENU_MENU_ORCHESTRATOR_H_
2#define YAZE_APP_EDITOR_MENU_MENU_ORCHESTRATOR_H_
3
4#include <functional>
5#include <string>
6
7#include "absl/status/status.h"
8#include "app/editor/editor.h"
13
14namespace yaze {
15namespace editor {
16
17// Forward declarations to avoid circular dependencies
18class EditorManager;
19class RomFileManager;
20class ProjectManager;
21class EditorRegistry;
22class PanelManager;
23class SessionCoordinator;
24class ToastManager;
25class PopupManager;
26
43 public:
44 // Constructor takes references to the managers it coordinates with
45 MenuOrchestrator(EditorManager* editor_manager, MenuBuilder& menu_builder,
46 RomFileManager& rom_manager, ProjectManager& project_manager,
47 EditorRegistry& editor_registry,
48 SessionCoordinator& session_coordinator,
49 ToastManager& toast_manager, PopupManager& popup_manager);
50 ~MenuOrchestrator() = default;
51
52 // Set optional dependencies for advanced features
53 void SetPanelManager(PanelManager* manager) { panel_manager_ = manager; }
54 void SetStatusBar(StatusBar* bar) { status_bar_ = bar; }
55 void SetUserSettings(UserSettings* settings) { user_settings_ = settings; }
56
57 // Non-copyable due to reference members
60
61 // Main menu building interface
62 void BuildMainMenu();
63 void BuildFileMenu();
64 void BuildEditMenu();
65 void BuildViewMenu();
66 void BuildPanelsMenu(); // Top-level Panels menu for panel management
67 void BuildToolsMenu(); // Also contains former Debug menu items
68 void BuildWindowMenu();
69 void BuildHelpMenu();
70
71 // Menu state management
72 void ClearMenu();
73 void RefreshMenu();
74
75 // Menu item callbacks (delegated to appropriate managers)
76 void OnOpenRom();
77 void OnSaveRom();
78 void OnSaveRomAs();
79 void OnCreateProject();
80 void OnOpenProject();
81 void OnSaveProject();
82 void OnSaveProjectAs();
85
86 // Edit menu actions (delegate to current editor)
87 void OnUndo();
88 void OnRedo();
89 void OnCut();
90 void OnCopy();
91 void OnPaste();
92 void OnFind();
93
94 // Editor-specific menu actions
95 void OnSwitchToEditor(EditorType editor_type);
97 void OnShowDisplaySettings(); // Display settings popup
98 void OnShowHexEditor();
99 void OnShowPanelBrowser();
100 void OnShowPanelFinder();
101 void OnShowWelcomeScreen();
102
103#ifdef YAZE_BUILD_AGENT_UI
104 void OnShowAIAgent();
105 void OnShowProposalDrawer();
106#endif
107
108 // Session management menu actions
109 void OnCreateNewSession();
114
115 // Window management menu actions
116 void OnShowAllWindows();
117 void OnHideAllWindows();
121 void OnShowLayoutPresets();
124 void OnLoadModderLayout();
125
126 // Tool menu actions
127 void OnShowGlobalSearch();
130 void OnShowImGuiDemo();
131 void OnShowImGuiMetrics();
132 void OnShowMemoryEditor();
134
135 // ROM Analysis menu actions
136 void OnShowRomInfo();
137 void OnCreateBackup();
138 void OnValidateRom();
140 void OnTestSaveLoad();
141
142 // ZSCustomOverworld menu actions
143 void OnCheckRomVersion();
144 void OnUpgradeRom();
146
147 // Asar Integration menu actions
148 void OnToggleAsarPatch();
149 void OnLoadAsmFile();
150
151 // Editor launch actions
153
154#ifdef YAZE_ENABLE_TESTING
155 void OnShowTestDashboard();
156 void OnRunAllTests();
157 void OnRunUnitTests();
158 void OnRunIntegrationTests();
159 void OnRunE2ETests();
160#endif
161
162#ifdef YAZE_WITH_GRPC
163 void OnStartCollaboration();
164 void OnJoinCollaboration();
165 void OnShowNetworkStatus();
166#endif
167
168 // Help menu actions
169 void OnShowAbout();
172 void OnShowCLIUsage();
174 void OnShowContributing();
175 void OnShowWhatsNew();
177
178 // Additional File menu actions
179 void OnShowSettings();
180 void OnQuit();
181
182 private:
183 // References to coordinated managers
192
193 // Optional dependencies for advanced features
197
198 // Menu state
200
201 // Helper methods for menu construction
202 void AddFileMenuItems();
203 void AddEditMenuItems();
204 void AddViewMenuItems();
206 void AddLayoutMenuItems();
207 void AddPanelsMenuItems(); // Top-level panels menu items
208 void AddToolsMenuItems(); // Also contains former Debug menu items
209 void AddSearchMenuItems();
213 void AddTestingMenuItems();
214#ifdef YAZE_WITH_GRPC
215 void AddCollaborationMenuItems();
216#endif
217 void AddWindowMenuItems();
218 void AddHelpMenuItems();
219
220 // Menu item validation helpers
221 bool CanSaveRom() const;
222 bool CanSaveProject() const;
223 bool HasActiveRom() const;
224 bool HasActiveProject() const;
225 bool HasProjectFile() const;
226 bool HasCurrentEditor() const;
227 bool HasMultipleSessions() const;
228
229 // Menu item text generation
230 std::string GetRomFilename() const;
231 std::string GetProjectName() const;
232 std::string GetCurrentEditorName() const;
233
234 // Shortcut key management
235 std::string GetShortcutForAction(const std::string& action) const;
237};
238
239} // namespace editor
240} // namespace yaze
241
242#endif // YAZE_APP_EDITOR_MENU_MENU_ORCHESTRATOR_H_
The EditorManager controls the main editor window and manages the various editor classes.
Manages editor types, categories, and lifecycle.
Fluent interface for building ImGui menus with icons.
Handles all menu building and UI coordination logic.
void SetUserSettings(UserSettings *settings)
void OnSwitchToEditor(EditorType editor_type)
SessionCoordinator & session_coordinator_
void SetStatusBar(StatusBar *bar)
MenuOrchestrator & operator=(const MenuOrchestrator &)=delete
void SetPanelManager(PanelManager *manager)
MenuOrchestrator(EditorManager *editor_manager, MenuBuilder &menu_builder, RomFileManager &rom_manager, ProjectManager &project_manager, EditorRegistry &editor_registry, SessionCoordinator &session_coordinator, ToastManager &toast_manager, PopupManager &popup_manager)
std::string GetShortcutForAction(const std::string &action) const
MenuOrchestrator(const MenuOrchestrator &)=delete
Central registry for all editor cards with session awareness and dependency injection.
Handles all project file operations with ROM-first workflow.
Handles all ROM file I/O operations.
High-level orchestrator for multi-session UI.
A session-aware status bar displayed at the bottom of the application.
Definition status_bar.h:39
Manages user preferences and settings persistence.