yaze 0.3.2
Link to the Past ROM Editor
 
Loading...
Searching...
No Matches
popup_manager.h
Go to the documentation of this file.
1#ifndef YAZE_APP_EDITOR_POPUP_MANAGER_H
2#define YAZE_APP_EDITOR_POPUP_MANAGER_H
3
4#include <functional>
5#include <string>
6#include <unordered_map>
7
8#include "absl/status/status.h"
9
10namespace yaze {
11namespace editor {
12
13// Forward declaration
14class EditorManager;
15
21enum class PopupType {
22 kInfo, // Information display (About, ROM Info, etc.)
23 kHelp, // Help documentation (Getting Started, etc.)
24 kSettings, // Settings dialogs (Display Settings, etc.)
25 kFileOperation, // File operations (Save As, New Project, etc.)
26 kConfirmation, // Confirmation dialogs (Layout Reset, etc.)
27 kWarning, // Warning messages (Session Limit, etc.)
28 kEditor // Editor-specific dialogs
29};
30
36 const char* id; // Unique constant identifier
37 const char* display_name; // Human-readable name for UI
38 PopupType type; // Type classification
39 bool allow_resize; // Whether popup can be resized
40 std::function<void()> draw_function; // Drawing callback (set at runtime)
41};
42
48 std::string name;
50 bool is_visible = false;
51 bool allow_resize = false;
52 std::function<void()> draw_function;
53};
54
59namespace PopupID {
60// File Operations
61constexpr const char* kSaveAs = "Save As..";
62constexpr const char* kSaveScope = "Save Scope";
63constexpr const char* kNewProject = "New Project";
64constexpr const char* kManageProject = "Manage Project";
65constexpr const char* kRomBackups = "ROM Backups";
66
67// Information
68constexpr const char* kAbout = "About";
69constexpr const char* kRomInfo = "ROM Information";
70constexpr const char* kSupportedFeatures = "Supported Features";
71constexpr const char* kStatus = "Status";
72
73// Help Documentation
74constexpr const char* kGettingStarted = "Getting Started";
75constexpr const char* kAsarIntegration = "Asar Integration";
76constexpr const char* kBuildInstructions = "Build Instructions";
77constexpr const char* kCLIUsage = "CLI Usage";
78constexpr const char* kTroubleshooting = "Troubleshooting";
79constexpr const char* kContributing = "Contributing";
80constexpr const char* kWhatsNew = "What's New";
81constexpr const char* kOpenRomHelp = "Open a ROM";
82
83// Settings
84constexpr const char* kDisplaySettings = "Display Settings";
85constexpr const char* kFeatureFlags = "Feature Flags";
86
87// Workspace
88constexpr const char* kWorkspaceHelp = "Workspace Help";
89constexpr const char* kSessionLimitWarning = "Session Limit Warning";
90constexpr const char* kLayoutResetConfirm = "Reset Layout Confirmation";
91constexpr const char* kLayoutPresets = "Layout Presets";
92constexpr const char* kSessionManager = "Session Manager";
93
94// Debug/Testing
95constexpr const char* kDataIntegrity = "Data Integrity Check";
96
97// Editor safety confirmations
98constexpr const char* kDungeonPotItemSaveConfirm =
99 "Dungeon Pot Item Save Confirmation";
100constexpr const char* kRomWriteConfirm = "ROM Write Confirmation";
101constexpr const char* kWriteConflictWarning = "Write Conflict Warning";
102
103// Future expansion
104constexpr const char* kQuickExport = "Quick Export";
105constexpr const char* kAssetImport = "Asset Import";
106constexpr const char* kScriptGenerator = "Script Generator";
107} // namespace PopupID
108
109// ImGui popup manager.
111 public:
112 PopupManager(EditorManager* editor_manager);
113
114 // Initialize popups
115 void Initialize();
116
117 // Draw all popups
118 void DrawPopups();
119
120 // Show a specific popup
121 void Show(const char* name);
122
123 // Hide a specific popup
124 void Hide(const char* name);
125
126 // Check if a popup is visible
127 bool IsVisible(const char* name) const;
128
129 // Set the status for status popup
130 void SetStatus(const absl::Status& status);
131
132 // Get the current status
133 absl::Status GetStatus() const { return status_; }
134
135 private:
136 // Helper function to begin a centered popup
137 bool BeginCentered(const char* name);
138
139 // Draw the about popup
140 void DrawAboutPopup();
141
142 // Draw the ROM info popup
143 void DrawRomInfoPopup();
144
145 // Draw the status popup
146 void DrawStatusPopup();
147
148 // Draw the save as popup
149 void DrawSaveAsPopup();
150 void DrawSaveScopePopup();
151
152 // Draw the new project popup
153 void DrawNewProjectPopup();
154
155 // Draw the supported features popup
157
158 // Draw the open ROM help popup
160
161 // Draw the manage project popup
163
164 // Help Documentation popups
168 void DrawCLIUsagePopup();
171 void DrawWhatsNewPopup();
172
173 // Workspace-related popups
179
180 // Settings popups (accessible without ROM)
183
184 // Debug/Testing popups
190
192 std::unordered_map<std::string, PopupParams> popups_;
193 absl::Status status_;
194 bool show_status_ = false;
195 absl::Status prev_status_;
196};
197
198} // namespace editor
199} // namespace yaze
200
201#endif // YAZE_APP_EDITOR_POPUP_MANAGER_H
The EditorManager controls the main editor window and manages the various editor classes.
void SetStatus(const absl::Status &status)
absl::Status GetStatus() const
bool IsVisible(const char *name) const
void Show(const char *name)
void Hide(const char *name)
PopupManager(EditorManager *editor_manager)
std::unordered_map< std::string, PopupParams > popups_
EditorManager * editor_manager_
bool BeginCentered(const char *name)
String constants for all popup identifiers to prevent typos.
constexpr const char * kRomInfo
constexpr const char * kLayoutPresets
constexpr const char * kSaveScope
constexpr const char * kAbout
constexpr const char * kSessionManager
constexpr const char * kTroubleshooting
constexpr const char * kAssetImport
constexpr const char * kRomBackups
constexpr const char * kWhatsNew
constexpr const char * kStatus
constexpr const char * kSupportedFeatures
constexpr const char * kDataIntegrity
constexpr const char * kQuickExport
constexpr const char * kManageProject
constexpr const char * kNewProject
constexpr const char * kSaveAs
constexpr const char * kDisplaySettings
constexpr const char * kSessionLimitWarning
constexpr const char * kCLIUsage
constexpr const char * kScriptGenerator
constexpr const char * kLayoutResetConfirm
constexpr const char * kWriteConflictWarning
constexpr const char * kAsarIntegration
constexpr const char * kOpenRomHelp
constexpr const char * kFeatureFlags
constexpr const char * kDungeonPotItemSaveConfirm
constexpr const char * kGettingStarted
constexpr const char * kContributing
constexpr const char * kBuildInstructions
constexpr const char * kWorkspaceHelp
constexpr const char * kRomWriteConfirm
PopupType
Type classification for popups to enable future filtering and organization.
Complete definition of a popup including metadata.
std::function< void()> draw_function
Runtime state for a registered popup.
std::function< void()> draw_function