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
10
namespace
yaze
{
11
namespace
editor {
12
13
// Forward declaration
14
class
EditorManager;
15
21
enum 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
35
struct
PopupDefinition
{
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
47
struct
PopupParams
{
48
std::string
name
;
49
PopupType
type
;
50
bool
is_visible
=
false
;
51
bool
allow_resize
=
false
;
52
std::function<void()>
draw_function
;
53
};
54
59
namespace
PopupID
{
60
// File Operations
61
constexpr
const
char
*
kSaveAs
=
"Save As.."
;
62
constexpr
const
char
*
kSaveScope
=
"Save Scope"
;
63
constexpr
const
char
*
kNewProject
=
"New Project"
;
64
constexpr
const
char
*
kManageProject
=
"Manage Project"
;
65
constexpr
const
char
*
kRomBackups
=
"ROM Backups"
;
66
67
// Information
68
constexpr
const
char
*
kAbout
=
"About"
;
69
constexpr
const
char
*
kRomInfo
=
"ROM Information"
;
70
constexpr
const
char
*
kSupportedFeatures
=
"Supported Features"
;
71
constexpr
const
char
*
kStatus
=
"Status"
;
72
73
// Help Documentation
74
constexpr
const
char
*
kGettingStarted
=
"Getting Started"
;
75
constexpr
const
char
*
kAsarIntegration
=
"Asar Integration"
;
76
constexpr
const
char
*
kBuildInstructions
=
"Build Instructions"
;
77
constexpr
const
char
*
kCLIUsage
=
"CLI Usage"
;
78
constexpr
const
char
*
kTroubleshooting
=
"Troubleshooting"
;
79
constexpr
const
char
*
kContributing
=
"Contributing"
;
80
constexpr
const
char
*
kWhatsNew
=
"What's New"
;
81
constexpr
const
char
*
kOpenRomHelp
=
"Open a ROM"
;
82
83
// Settings
84
constexpr
const
char
*
kDisplaySettings
=
"Display Settings"
;
85
constexpr
const
char
*
kFeatureFlags
=
"Feature Flags"
;
86
87
// Workspace
88
constexpr
const
char
*
kWorkspaceHelp
=
"Workspace Help"
;
89
constexpr
const
char
*
kSessionLimitWarning
=
"Session Limit Warning"
;
90
constexpr
const
char
*
kLayoutResetConfirm
=
"Reset Layout Confirmation"
;
91
constexpr
const
char
*
kLayoutPresets
=
"Layout Presets"
;
92
constexpr
const
char
*
kSessionManager
=
"Session Manager"
;
93
94
// Debug/Testing
95
constexpr
const
char
*
kDataIntegrity
=
"Data Integrity Check"
;
96
97
// Editor safety confirmations
98
constexpr
const
char
*
kDungeonPotItemSaveConfirm
=
99
"Dungeon Pot Item Save Confirmation"
;
100
constexpr
const
char
*
kRomWriteConfirm
=
"ROM Write Confirmation"
;
101
constexpr
const
char
*
kWriteConflictWarning
=
"Write Conflict Warning"
;
102
constexpr
const
char
*
kUnsavedSessionChanges
=
103
"Unsaved Session Changes Confirmation"
;
104
105
// Future expansion
106
constexpr
const
char
*
kQuickExport
=
"Quick Export"
;
107
constexpr
const
char
*
kAssetImport
=
"Asset Import"
;
108
constexpr
const
char
*
kScriptGenerator
=
"Script Generator"
;
109
}
// namespace PopupID
110
111
// ImGui popup manager.
112
class
PopupManager
{
113
public
:
114
PopupManager
(
EditorManager
* editor_manager);
115
116
// Initialize popups
117
void
Initialize
();
118
119
// Draw all popups
120
void
DrawPopups
();
121
122
// Show a specific popup
123
void
Show
(
const
char
* name);
124
125
// Hide a specific popup
126
void
Hide
(
const
char
* name);
127
128
// Check if a popup is visible
129
bool
IsVisible
(
const
char
* name)
const
;
130
131
// Set the status for status popup
132
void
SetStatus
(
const
absl::Status& status);
133
134
// Get the current status
135
absl::Status
GetStatus
()
const
{
return
status_
; }
136
137
private
:
138
// Helper function to begin a centered popup
139
bool
BeginCentered
(
const
char
* name);
140
141
// Draw the about popup
142
void
DrawAboutPopup
();
143
144
// Draw the ROM info popup
145
void
DrawRomInfoPopup
();
146
147
// Draw the status popup
148
void
DrawStatusPopup
();
149
150
// Draw the save as popup
151
void
DrawSaveAsPopup
();
152
void
DrawSaveScopePopup
();
153
154
// Draw the new project popup
155
void
DrawNewProjectPopup
();
156
157
// Draw the supported features popup
158
void
DrawSupportedFeaturesPopup
();
159
160
// Draw the open ROM help popup
161
void
DrawOpenRomHelpPopup
();
162
163
// Draw the manage project popup
164
void
DrawManageProjectPopup
();
165
166
// Help Documentation popups
167
void
DrawGettingStartedPopup
();
168
void
DrawAsarIntegrationPopup
();
169
void
DrawBuildInstructionsPopup
();
170
void
DrawCLIUsagePopup
();
171
void
DrawTroubleshootingPopup
();
172
void
DrawContributingPopup
();
173
void
DrawWhatsNewPopup
();
174
175
// Workspace-related popups
176
void
DrawWorkspaceHelpPopup
();
177
void
DrawSessionLimitWarningPopup
();
178
void
DrawLayoutResetConfirmPopup
();
179
void
DrawLayoutPresetsPopup
();
180
void
DrawSessionManagerPopup
();
181
182
// Settings popups (accessible without ROM)
183
void
DrawDisplaySettingsPopup
();
184
void
DrawFeatureFlagsPopup
();
185
186
// Debug/Testing popups
187
void
DrawDataIntegrityPopup
();
188
void
DrawDungeonPotItemSaveConfirmPopup
();
189
void
DrawRomBackupManagerPopup
();
190
void
DrawRomWriteConfirmPopup
();
191
void
DrawWriteConflictWarningPopup
();
192
void
DrawUnsavedSessionChangesPopup
();
193
194
EditorManager
*
editor_manager_
;
195
std::unordered_map<std::string, PopupParams>
popups_
;
196
absl::Status
status_
;
197
bool
show_status_
=
false
;
198
absl::Status
prev_status_
;
199
};
200
201
}
// namespace editor
202
}
// namespace yaze
203
204
#endif
// YAZE_APP_EDITOR_POPUP_MANAGER_H
yaze::editor::EditorManager
The EditorManager controls the main editor window and manages the various editor classes.
Definition
editor_manager.h:98
yaze::editor::PopupManager
Definition
popup_manager.h:112
yaze::editor::PopupManager::DrawBuildInstructionsPopup
void DrawBuildInstructionsPopup()
Definition
popup_manager.cc:855
yaze::editor::PopupManager::SetStatus
void SetStatus(const absl::Status &status)
Definition
popup_manager.cc:219
yaze::editor::PopupManager::GetStatus
absl::Status GetStatus() const
Definition
popup_manager.h:135
yaze::editor::PopupManager::DrawWriteConflictWarningPopup
void DrawWriteConflictWarningPopup()
Definition
popup_manager.cc:1461
yaze::editor::PopupManager::DrawLayoutPresetsPopup
void DrawLayoutPresetsPopup()
Definition
popup_manager.cc:1050
yaze::editor::PopupManager::IsVisible
bool IsVisible(const char *name) const
Definition
popup_manager.cc:206
yaze::editor::PopupManager::DrawPopups
void DrawPopups()
Definition
popup_manager.cc:150
yaze::editor::PopupManager::Show
void Show(const char *name)
Definition
popup_manager.cc:172
yaze::editor::PopupManager::DrawDataIntegrityPopup
void DrawDataIntegrityPopup()
Definition
popup_manager.cc:1322
yaze::editor::PopupManager::DrawSessionLimitWarningPopup
void DrawSessionLimitWarningPopup()
Definition
popup_manager.cc:1016
yaze::editor::PopupManager::DrawUnsavedSessionChangesPopup
void DrawUnsavedSessionChangesPopup()
Definition
popup_manager.cc:1533
yaze::editor::PopupManager::Hide
void Hide(const char *name)
Definition
popup_manager.cc:193
yaze::editor::PopupManager::DrawTroubleshootingPopup
void DrawTroubleshootingPopup()
Definition
popup_manager.cc:895
yaze::editor::PopupManager::DrawRomWriteConfirmPopup
void DrawRomWriteConfirmPopup()
Definition
popup_manager.cc:1396
yaze::editor::PopupManager::DrawSupportedFeaturesPopup
void DrawSupportedFeaturesPopup()
Definition
popup_manager.cc:648
yaze::editor::PopupManager::Initialize
void Initialize()
Definition
popup_manager.cc:35
yaze::editor::PopupManager::PopupManager
PopupManager(EditorManager *editor_manager)
Definition
popup_manager.cc:32
yaze::editor::PopupManager::popups_
std::unordered_map< std::string, PopupParams > popups_
Definition
popup_manager.h:195
yaze::editor::PopupManager::editor_manager_
EditorManager * editor_manager_
Definition
popup_manager.h:194
yaze::editor::PopupManager::DrawStatusPopup
void DrawStatusPopup()
Definition
popup_manager.cc:237
yaze::editor::PopupManager::DrawGettingStartedPopup
void DrawGettingStartedPopup()
Definition
popup_manager.cc:814
yaze::editor::PopupManager::DrawDisplaySettingsPopup
void DrawDisplaySettingsPopup()
Definition
popup_manager.cc:1239
yaze::editor::PopupManager::DrawRomBackupManagerPopup
void DrawRomBackupManagerPopup()
Definition
popup_manager.cc:422
yaze::editor::PopupManager::DrawSaveAsPopup
void DrawSaveAsPopup()
Definition
popup_manager.cc:309
yaze::editor::PopupManager::DrawContributingPopup
void DrawContributingPopup()
Definition
popup_manager.cc:914
yaze::editor::PopupManager::prev_status_
absl::Status prev_status_
Definition
popup_manager.h:198
yaze::editor::PopupManager::DrawFeatureFlagsPopup
void DrawFeatureFlagsPopup()
Definition
popup_manager.cc:1282
yaze::editor::PopupManager::status_
absl::Status status_
Definition
popup_manager.h:196
yaze::editor::PopupManager::DrawCLIUsagePopup
void DrawCLIUsagePopup()
Definition
popup_manager.cc:874
yaze::editor::PopupManager::BeginCentered
bool BeginCentered(const char *name)
Definition
popup_manager.cc:227
yaze::editor::PopupManager::DrawDungeonPotItemSaveConfirmPopup
void DrawDungeonPotItemSaveConfirmPopup()
Definition
popup_manager.cc:1350
yaze::editor::PopupManager::DrawWhatsNewPopup
void DrawWhatsNewPopup()
Definition
popup_manager.cc:930
yaze::editor::PopupManager::show_status_
bool show_status_
Definition
popup_manager.h:197
yaze::editor::PopupManager::DrawSessionManagerPopup
void DrawSessionManagerPopup()
Definition
popup_manager.cc:1151
yaze::editor::PopupManager::DrawRomInfoPopup
void DrawRomInfoPopup()
Definition
popup_manager.cc:273
yaze::editor::PopupManager::DrawSaveScopePopup
void DrawSaveScopePopup()
Definition
popup_manager.cc:359
yaze::editor::PopupManager::DrawLayoutResetConfirmPopup
void DrawLayoutResetConfirmPopup()
Definition
popup_manager.cc:1033
yaze::editor::PopupManager::DrawAboutPopup
void DrawAboutPopup()
Definition
popup_manager.cc:260
yaze::editor::PopupManager::DrawOpenRomHelpPopup
void DrawOpenRomHelpPopup()
Definition
popup_manager.cc:783
yaze::editor::PopupManager::DrawNewProjectPopup
void DrawNewProjectPopup()
Definition
popup_manager.cc:545
yaze::editor::PopupManager::DrawManageProjectPopup
void DrawManageProjectPopup()
Definition
popup_manager.cc:799
yaze::editor::PopupManager::DrawAsarIntegrationPopup
void DrawAsarIntegrationPopup()
Definition
popup_manager.cc:839
yaze::editor::PopupManager::DrawWorkspaceHelpPopup
void DrawWorkspaceHelpPopup()
Definition
popup_manager.cc:986
PopupID
String constants for all popup identifiers to prevent typos.
yaze::editor::PopupID::kRomInfo
constexpr const char * kRomInfo
Definition
popup_manager.h:69
yaze::editor::PopupID::kLayoutPresets
constexpr const char * kLayoutPresets
Definition
popup_manager.h:91
yaze::editor::PopupID::kSaveScope
constexpr const char * kSaveScope
Definition
popup_manager.h:62
yaze::editor::PopupID::kAbout
constexpr const char * kAbout
Definition
popup_manager.h:68
yaze::editor::PopupID::kSessionManager
constexpr const char * kSessionManager
Definition
popup_manager.h:92
yaze::editor::PopupID::kTroubleshooting
constexpr const char * kTroubleshooting
Definition
popup_manager.h:78
yaze::editor::PopupID::kAssetImport
constexpr const char * kAssetImport
Definition
popup_manager.h:107
yaze::editor::PopupID::kRomBackups
constexpr const char * kRomBackups
Definition
popup_manager.h:65
yaze::editor::PopupID::kWhatsNew
constexpr const char * kWhatsNew
Definition
popup_manager.h:80
yaze::editor::PopupID::kStatus
constexpr const char * kStatus
Definition
popup_manager.h:71
yaze::editor::PopupID::kSupportedFeatures
constexpr const char * kSupportedFeatures
Definition
popup_manager.h:70
yaze::editor::PopupID::kDataIntegrity
constexpr const char * kDataIntegrity
Definition
popup_manager.h:95
yaze::editor::PopupID::kQuickExport
constexpr const char * kQuickExport
Definition
popup_manager.h:106
yaze::editor::PopupID::kManageProject
constexpr const char * kManageProject
Definition
popup_manager.h:64
yaze::editor::PopupID::kNewProject
constexpr const char * kNewProject
Definition
popup_manager.h:63
yaze::editor::PopupID::kSaveAs
constexpr const char * kSaveAs
Definition
popup_manager.h:61
yaze::editor::PopupID::kDisplaySettings
constexpr const char * kDisplaySettings
Definition
popup_manager.h:84
yaze::editor::PopupID::kSessionLimitWarning
constexpr const char * kSessionLimitWarning
Definition
popup_manager.h:89
yaze::editor::PopupID::kCLIUsage
constexpr const char * kCLIUsage
Definition
popup_manager.h:77
yaze::editor::PopupID::kScriptGenerator
constexpr const char * kScriptGenerator
Definition
popup_manager.h:108
yaze::editor::PopupID::kLayoutResetConfirm
constexpr const char * kLayoutResetConfirm
Definition
popup_manager.h:90
yaze::editor::PopupID::kWriteConflictWarning
constexpr const char * kWriteConflictWarning
Definition
popup_manager.h:101
yaze::editor::PopupID::kAsarIntegration
constexpr const char * kAsarIntegration
Definition
popup_manager.h:75
yaze::editor::PopupID::kOpenRomHelp
constexpr const char * kOpenRomHelp
Definition
popup_manager.h:81
yaze::editor::PopupID::kFeatureFlags
constexpr const char * kFeatureFlags
Definition
popup_manager.h:85
yaze::editor::PopupID::kDungeonPotItemSaveConfirm
constexpr const char * kDungeonPotItemSaveConfirm
Definition
popup_manager.h:98
yaze::editor::PopupID::kGettingStarted
constexpr const char * kGettingStarted
Definition
popup_manager.h:74
yaze::editor::PopupID::kContributing
constexpr const char * kContributing
Definition
popup_manager.h:79
yaze::editor::PopupID::kUnsavedSessionChanges
constexpr const char * kUnsavedSessionChanges
Definition
popup_manager.h:102
yaze::editor::PopupID::kBuildInstructions
constexpr const char * kBuildInstructions
Definition
popup_manager.h:76
yaze::editor::PopupID::kWorkspaceHelp
constexpr const char * kWorkspaceHelp
Definition
popup_manager.h:88
yaze::editor::PopupID::kRomWriteConfirm
constexpr const char * kRomWriteConfirm
Definition
popup_manager.h:100
yaze::editor::StartupSurface::kEditor
@ kEditor
yaze::editor::EditorType::kSettings
@ kSettings
yaze::editor::PopupType
PopupType
Type classification for popups to enable future filtering and organization.
Definition
popup_manager.h:21
yaze::editor::PopupType::kInfo
@ kInfo
yaze::editor::PopupType::kHelp
@ kHelp
yaze::editor::PopupType::kConfirmation
@ kConfirmation
yaze::editor::PopupType::kFileOperation
@ kFileOperation
yaze::editor::PopupType::kWarning
@ kWarning
yaze
Definition
patch_export_usage.cc:8
yaze::editor::PopupDefinition
Complete definition of a popup including metadata.
Definition
popup_manager.h:35
yaze::editor::PopupDefinition::id
const char * id
Definition
popup_manager.h:36
yaze::editor::PopupDefinition::display_name
const char * display_name
Definition
popup_manager.h:37
yaze::editor::PopupDefinition::allow_resize
bool allow_resize
Definition
popup_manager.h:39
yaze::editor::PopupDefinition::type
PopupType type
Definition
popup_manager.h:38
yaze::editor::PopupDefinition::draw_function
std::function< void()> draw_function
Definition
popup_manager.h:40
yaze::editor::PopupParams
Runtime state for a registered popup.
Definition
popup_manager.h:47
yaze::editor::PopupParams::type
PopupType type
Definition
popup_manager.h:49
yaze::editor::PopupParams::name
std::string name
Definition
popup_manager.h:48
yaze::editor::PopupParams::draw_function
std::function< void()> draw_function
Definition
popup_manager.h:52
yaze::editor::PopupParams::is_visible
bool is_visible
Definition
popup_manager.h:50
yaze::editor::PopupParams::allow_resize
bool allow_resize
Definition
popup_manager.h:51
src
app
editor
shell
feedback
popup_manager.h
Generated by
1.10.0