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 <cstddef>
5
#include <cstdint>
6
#include <functional>
7
#include <string>
8
#include <unordered_map>
9
10
#include "absl/status/status.h"
11
12
namespace
yaze
{
13
namespace
editor {
14
15
// Forward declaration
16
class
EditorManager;
17
23
enum class
PopupType
{
24
kInfo
,
// Information display (About, ROM Info, etc.)
25
kHelp
,
// Help documentation (Getting Started, etc.)
26
kSettings
,
// Settings dialogs (Display Settings, etc.)
27
kFileOperation
,
// File operations (Save As, New Project, etc.)
28
kConfirmation
,
// Confirmation dialogs (Layout Reset, etc.)
29
kWarning
,
// Warning messages (Session Limit, etc.)
30
kEditor
// Editor-specific dialogs
31
};
32
37
struct
PopupDefinition
{
38
const
char
*
id
;
// Unique constant identifier
39
const
char
*
display_name
;
// Human-readable name for UI
40
PopupType
type
;
// Type classification
41
bool
allow_resize
;
// Whether popup can be resized
42
std::function<void()>
draw_function
;
// Drawing callback (set at runtime)
43
};
44
49
struct
PopupParams
{
50
std::string
name
;
51
PopupType
type
;
52
bool
is_visible
=
false
;
53
bool
allow_resize
=
false
;
54
std::function<void()>
draw_function
;
55
uint64_t
shown_order
= 0;
// Set by Show(); the newest visible popup is drawn
56
};
57
62
namespace
PopupID
{
63
// File Operations
64
constexpr
const
char
*
kSaveAs
=
"Save As.."
;
65
constexpr
const
char
*
kSaveScope
=
"Save Scope"
;
66
constexpr
const
char
*
kNewProject
=
"New Project"
;
67
constexpr
const
char
*
kManageProject
=
"Manage Project"
;
68
constexpr
const
char
*
kRomBackups
=
"ROM Backups"
;
69
70
// Information
71
constexpr
const
char
*
kAbout
=
"About"
;
72
constexpr
const
char
*
kRomInfo
=
"ROM Information"
;
73
constexpr
const
char
*
kSupportedFeatures
=
"Supported Features"
;
74
constexpr
const
char
*
kStatus
=
"Status"
;
75
76
// Help Documentation
77
constexpr
const
char
*
kGettingStarted
=
"Getting Started"
;
78
constexpr
const
char
*
kAsarIntegration
=
"Asar Integration"
;
79
constexpr
const
char
*
kBuildInstructions
=
"Build Instructions"
;
80
constexpr
const
char
*
kCLIUsage
=
"CLI Usage"
;
81
constexpr
const
char
*
kTroubleshooting
=
"Troubleshooting"
;
82
constexpr
const
char
*
kContributing
=
"Contributing"
;
83
constexpr
const
char
*
kWhatsNew
=
"What's New"
;
84
constexpr
const
char
*
kOpenRomHelp
=
"Open a ROM"
;
85
constexpr
const
char
*
kComingFromZScream
=
"Coming from ZScream"
;
86
87
// Settings
88
constexpr
const
char
*
kDisplaySettings
=
"Display Settings"
;
89
constexpr
const
char
*
kFeatureFlags
=
"Feature Flags"
;
90
91
// Workspace
92
constexpr
const
char
*
kWorkspaceHelp
=
"Workspace Help"
;
93
constexpr
const
char
*
kSessionLimitWarning
=
"Session Limit Warning"
;
94
constexpr
const
char
*
kLayoutResetConfirm
=
"Reset Layout Confirmation"
;
95
constexpr
const
char
*
kLayoutPresets
=
"Layout Presets"
;
96
constexpr
const
char
*
kSessionManager
=
"Session Manager"
;
97
98
// Debug/Testing
99
constexpr
const
char
*
kDataIntegrity
=
"Data Integrity Check"
;
100
101
// Editor safety confirmations
102
constexpr
const
char
*
kDungeonPotItemSaveConfirm
=
103
"Dungeon Pot Item Save Confirmation"
;
104
constexpr
const
char
*
kRomWriteConfirm
=
"ROM Write Confirmation"
;
105
constexpr
const
char
*
kWriteConflictWarning
=
"Write Conflict Warning"
;
106
constexpr
const
char
*
kUnsavedSessionChanges
=
107
"Unsaved Session Changes Confirmation"
;
108
109
// Future expansion
110
constexpr
const
char
*
kQuickExport
=
"Quick Export"
;
111
constexpr
const
char
*
kAssetImport
=
"Asset Import"
;
112
constexpr
const
char
*
kScriptGenerator
=
"Script Generator"
;
113
}
// namespace PopupID
114
115
// ImGui popup manager.
116
class
PopupManager
{
117
public
:
118
PopupManager
(
EditorManager
* editor_manager);
119
120
// Initialize popups
121
void
Initialize
();
122
123
// Draw all popups
124
void
DrawPopups
();
125
126
// Show a specific popup
127
void
Show
(
const
char
* name);
128
129
// Registers or replaces a popup. Initialize() registers the built-in ones.
130
void
RegisterPopup
(
const
std::string& name,
PopupType
type,
131
std::function<
void
()> draw_function,
132
bool
allow_resize =
false
);
133
134
// Hide a specific popup
135
void
Hide
(
const
char
* name);
136
137
// Check if a popup is visible
138
bool
IsVisible
(
const
char
* name)
const
;
139
140
// Set the status for status popup
141
void
SetStatus
(
const
absl::Status& status);
142
143
// Get the current status
144
absl::Status
GetStatus
()
const
{
return
status_
; }
145
146
private
:
147
// Helper function to begin a centered popup
148
bool
BeginCentered
(
const
char
* name);
149
150
// Draw the about popup
151
void
DrawAboutPopup
();
152
153
// Draw the ROM info popup
154
void
DrawRomInfoPopup
();
155
156
// Draw the status popup
157
void
DrawStatusPopup
();
158
159
// Draw the save as popup
160
void
DrawSaveAsPopup
();
161
void
ResetSaveAsState
();
162
void
DrawSaveScopePopup
();
163
164
// Draw the new project popup
165
void
DrawNewProjectPopup
();
166
167
// Draw the supported features popup
168
void
DrawSupportedFeaturesPopup
();
169
170
// Draw the open ROM help popup
171
void
DrawOpenRomHelpPopup
();
172
173
// Draw the manage project popup
174
void
DrawManageProjectPopup
();
175
176
// Help Documentation popups
177
void
DrawGettingStartedPopup
();
178
void
DrawAsarIntegrationPopup
();
179
void
DrawBuildInstructionsPopup
();
180
void
DrawCLIUsagePopup
();
181
void
DrawTroubleshootingPopup
();
182
void
DrawContributingPopup
();
183
void
DrawWhatsNewPopup
();
184
void
DrawComingFromZScreamPopup
();
185
186
// Workspace-related popups
187
void
DrawWorkspaceHelpPopup
();
188
void
DrawSessionLimitWarningPopup
();
189
void
DrawLayoutResetConfirmPopup
();
190
void
DrawLayoutPresetsPopup
();
191
void
DrawSessionManagerPopup
();
192
193
// Settings popups (accessible without ROM)
194
void
DrawDisplaySettingsPopup
();
195
void
DrawFeatureFlagsPopup
();
196
197
// Debug/Testing popups
198
void
DrawDataIntegrityPopup
();
199
void
DrawDungeonPotItemSaveConfirmPopup
();
200
void
DrawRomBackupManagerPopup
();
201
void
DrawRomWriteConfirmPopup
();
202
void
DrawWriteConflictWarningPopup
();
203
void
DrawUnsavedSessionChangesPopup
();
204
205
struct
SaveAsState
{
206
bool
initialized
=
false
;
207
std::size_t
session_id
= 0;
208
std::string
source_path
;
209
std::string
folder
;
210
std::string
filename
;
211
std::string
error
;
212
}
save_as_
;
213
214
EditorManager
*
editor_manager_
;
215
std::unordered_map<std::string, PopupParams>
popups_
;
216
uint64_t
next_shown_order_
= 1;
217
absl::Status
status_
;
218
bool
show_status_
=
false
;
219
absl::Status
prev_status_
;
220
};
221
222
}
// namespace editor
223
}
// namespace yaze
224
225
#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:99
yaze::editor::PopupManager
Definition
popup_manager.h:116
yaze::editor::PopupManager::DrawBuildInstructionsPopup
void DrawBuildInstructionsPopup()
Definition
popup_manager.cc:1015
yaze::editor::PopupManager::DrawComingFromZScreamPopup
void DrawComingFromZScreamPopup()
Definition
popup_manager.cc:1146
yaze::editor::PopupManager::SetStatus
void SetStatus(const absl::Status &status)
Definition
popup_manager.cc:256
yaze::editor::PopupManager::GetStatus
absl::Status GetStatus() const
Definition
popup_manager.h:144
yaze::editor::PopupManager::DrawWriteConflictWarningPopup
void DrawWriteConflictWarningPopup()
Definition
popup_manager.cc:1709
yaze::editor::PopupManager::DrawLayoutPresetsPopup
void DrawLayoutPresetsPopup()
Definition
popup_manager.cc:1288
yaze::editor::PopupManager::IsVisible
bool IsVisible(const char *name) const
Definition
popup_manager.cc:243
yaze::editor::PopupManager::DrawPopups
void DrawPopups()
Definition
popup_manager.cc:157
yaze::editor::PopupManager::Show
void Show(const char *name)
Definition
popup_manager.cc:189
yaze::editor::PopupManager::ResetSaveAsState
void ResetSaveAsState()
Definition
popup_manager.cc:367
yaze::editor::PopupManager::DrawDataIntegrityPopup
void DrawDataIntegrityPopup()
Definition
popup_manager.cc:1560
yaze::editor::PopupManager::DrawSessionLimitWarningPopup
void DrawSessionLimitWarningPopup()
Definition
popup_manager.cc:1254
yaze::editor::PopupManager::DrawUnsavedSessionChangesPopup
void DrawUnsavedSessionChangesPopup()
Definition
popup_manager.cc:1781
yaze::editor::PopupManager::Hide
void Hide(const char *name)
Definition
popup_manager.cc:216
yaze::editor::PopupManager::DrawTroubleshootingPopup
void DrawTroubleshootingPopup()
Definition
popup_manager.cc:1055
yaze::editor::PopupManager::save_as_
struct yaze::editor::PopupManager::SaveAsState save_as_
yaze::editor::PopupManager::DrawRomWriteConfirmPopup
void DrawRomWriteConfirmPopup()
Definition
popup_manager.cc:1641
yaze::editor::PopupManager::DrawSupportedFeaturesPopup
void DrawSupportedFeaturesPopup()
Definition
popup_manager.cc:807
yaze::editor::PopupManager::Initialize
void Initialize()
Definition
popup_manager.cc:38
yaze::editor::PopupManager::PopupManager
PopupManager(EditorManager *editor_manager)
Definition
popup_manager.cc:35
yaze::editor::PopupManager::popups_
std::unordered_map< std::string, PopupParams > popups_
Definition
popup_manager.h:215
yaze::editor::PopupManager::RegisterPopup
void RegisterPopup(const std::string &name, PopupType type, std::function< void()> draw_function, bool allow_resize=false)
Definition
popup_manager.cc:232
yaze::editor::PopupManager::editor_manager_
EditorManager * editor_manager_
Definition
popup_manager.h:214
yaze::editor::PopupManager::DrawStatusPopup
void DrawStatusPopup()
Definition
popup_manager.cc:274
yaze::editor::PopupManager::DrawGettingStartedPopup
void DrawGettingStartedPopup()
Definition
popup_manager.cc:973
yaze::editor::PopupManager::DrawDisplaySettingsPopup
void DrawDisplaySettingsPopup()
Definition
popup_manager.cc:1477
yaze::editor::PopupManager::DrawRomBackupManagerPopup
void DrawRomBackupManagerPopup()
Definition
popup_manager.cc:559
yaze::editor::PopupManager::DrawSaveAsPopup
void DrawSaveAsPopup()
Definition
popup_manager.cc:371
yaze::editor::PopupManager::DrawContributingPopup
void DrawContributingPopup()
Definition
popup_manager.cc:1074
yaze::editor::PopupManager::next_shown_order_
uint64_t next_shown_order_
Definition
popup_manager.h:216
yaze::editor::PopupManager::prev_status_
absl::Status prev_status_
Definition
popup_manager.h:219
yaze::editor::PopupManager::DrawFeatureFlagsPopup
void DrawFeatureFlagsPopup()
Definition
popup_manager.cc:1520
yaze::editor::PopupManager::status_
absl::Status status_
Definition
popup_manager.h:217
yaze::editor::PopupManager::DrawCLIUsagePopup
void DrawCLIUsagePopup()
Definition
popup_manager.cc:1034
yaze::editor::PopupManager::BeginCentered
bool BeginCentered(const char *name)
Definition
popup_manager.cc:264
yaze::editor::PopupManager::DrawDungeonPotItemSaveConfirmPopup
void DrawDungeonPotItemSaveConfirmPopup()
Definition
popup_manager.cc:1588
yaze::editor::PopupManager::DrawWhatsNewPopup
void DrawWhatsNewPopup()
Definition
popup_manager.cc:1090
yaze::editor::PopupManager::show_status_
bool show_status_
Definition
popup_manager.h:218
yaze::editor::PopupManager::DrawSessionManagerPopup
void DrawSessionManagerPopup()
Definition
popup_manager.cc:1389
yaze::editor::PopupManager::DrawRomInfoPopup
void DrawRomInfoPopup()
Definition
popup_manager.cc:310
yaze::editor::PopupManager::DrawSaveScopePopup
void DrawSaveScopePopup()
Definition
popup_manager.cc:488
yaze::editor::PopupManager::DrawLayoutResetConfirmPopup
void DrawLayoutResetConfirmPopup()
Definition
popup_manager.cc:1271
yaze::editor::PopupManager::DrawAboutPopup
void DrawAboutPopup()
Definition
popup_manager.cc:297
yaze::editor::PopupManager::DrawOpenRomHelpPopup
void DrawOpenRomHelpPopup()
Definition
popup_manager.cc:942
yaze::editor::PopupManager::DrawNewProjectPopup
void DrawNewProjectPopup()
Definition
popup_manager.cc:704
yaze::editor::PopupManager::DrawManageProjectPopup
void DrawManageProjectPopup()
Definition
popup_manager.cc:958
yaze::editor::PopupManager::DrawAsarIntegrationPopup
void DrawAsarIntegrationPopup()
Definition
popup_manager.cc:999
yaze::editor::PopupManager::DrawWorkspaceHelpPopup
void DrawWorkspaceHelpPopup()
Definition
popup_manager.cc:1224
PopupID
String constants for all popup identifiers to prevent typos.
yaze::editor::PopupID::kRomInfo
constexpr const char * kRomInfo
Definition
popup_manager.h:72
yaze::editor::PopupID::kLayoutPresets
constexpr const char * kLayoutPresets
Definition
popup_manager.h:95
yaze::editor::PopupID::kSaveScope
constexpr const char * kSaveScope
Definition
popup_manager.h:65
yaze::editor::PopupID::kAbout
constexpr const char * kAbout
Definition
popup_manager.h:71
yaze::editor::PopupID::kSessionManager
constexpr const char * kSessionManager
Definition
popup_manager.h:96
yaze::editor::PopupID::kTroubleshooting
constexpr const char * kTroubleshooting
Definition
popup_manager.h:81
yaze::editor::PopupID::kAssetImport
constexpr const char * kAssetImport
Definition
popup_manager.h:111
yaze::editor::PopupID::kRomBackups
constexpr const char * kRomBackups
Definition
popup_manager.h:68
yaze::editor::PopupID::kWhatsNew
constexpr const char * kWhatsNew
Definition
popup_manager.h:83
yaze::editor::PopupID::kStatus
constexpr const char * kStatus
Definition
popup_manager.h:74
yaze::editor::PopupID::kSupportedFeatures
constexpr const char * kSupportedFeatures
Definition
popup_manager.h:73
yaze::editor::PopupID::kDataIntegrity
constexpr const char * kDataIntegrity
Definition
popup_manager.h:99
yaze::editor::PopupID::kComingFromZScream
constexpr const char * kComingFromZScream
Definition
popup_manager.h:85
yaze::editor::PopupID::kQuickExport
constexpr const char * kQuickExport
Definition
popup_manager.h:110
yaze::editor::PopupID::kManageProject
constexpr const char * kManageProject
Definition
popup_manager.h:67
yaze::editor::PopupID::kNewProject
constexpr const char * kNewProject
Definition
popup_manager.h:66
yaze::editor::PopupID::kSaveAs
constexpr const char * kSaveAs
Definition
popup_manager.h:64
yaze::editor::PopupID::kDisplaySettings
constexpr const char * kDisplaySettings
Definition
popup_manager.h:88
yaze::editor::PopupID::kSessionLimitWarning
constexpr const char * kSessionLimitWarning
Definition
popup_manager.h:93
yaze::editor::PopupID::kCLIUsage
constexpr const char * kCLIUsage
Definition
popup_manager.h:80
yaze::editor::PopupID::kScriptGenerator
constexpr const char * kScriptGenerator
Definition
popup_manager.h:112
yaze::editor::PopupID::kLayoutResetConfirm
constexpr const char * kLayoutResetConfirm
Definition
popup_manager.h:94
yaze::editor::PopupID::kWriteConflictWarning
constexpr const char * kWriteConflictWarning
Definition
popup_manager.h:105
yaze::editor::PopupID::kAsarIntegration
constexpr const char * kAsarIntegration
Definition
popup_manager.h:78
yaze::editor::PopupID::kOpenRomHelp
constexpr const char * kOpenRomHelp
Definition
popup_manager.h:84
yaze::editor::PopupID::kFeatureFlags
constexpr const char * kFeatureFlags
Definition
popup_manager.h:89
yaze::editor::PopupID::kDungeonPotItemSaveConfirm
constexpr const char * kDungeonPotItemSaveConfirm
Definition
popup_manager.h:102
yaze::editor::PopupID::kGettingStarted
constexpr const char * kGettingStarted
Definition
popup_manager.h:77
yaze::editor::PopupID::kContributing
constexpr const char * kContributing
Definition
popup_manager.h:82
yaze::editor::PopupID::kUnsavedSessionChanges
constexpr const char * kUnsavedSessionChanges
Definition
popup_manager.h:106
yaze::editor::PopupID::kBuildInstructions
constexpr const char * kBuildInstructions
Definition
popup_manager.h:79
yaze::editor::PopupID::kWorkspaceHelp
constexpr const char * kWorkspaceHelp
Definition
popup_manager.h:92
yaze::editor::PopupID::kRomWriteConfirm
constexpr const char * kRomWriteConfirm
Definition
popup_manager.h:104
yaze::editor::StartupSurface::kEditor
@ kEditor
yaze::editor::EditorType::kSettings
@ kSettings
yaze::editor::EditorContextDiagnosticSeverity::kInfo
@ kInfo
yaze::editor::EditorContextDiagnosticSeverity::kWarning
@ kWarning
yaze::editor::PopupType
PopupType
Type classification for popups to enable future filtering and organization.
Definition
popup_manager.h:23
yaze::editor::PopupType::kHelp
@ kHelp
yaze::editor::PopupType::kConfirmation
@ kConfirmation
yaze::editor::PopupType::kFileOperation
@ kFileOperation
yaze
Definition
patch_export_usage.cc:8
yaze::editor::PopupDefinition
Complete definition of a popup including metadata.
Definition
popup_manager.h:37
yaze::editor::PopupDefinition::id
const char * id
Definition
popup_manager.h:38
yaze::editor::PopupDefinition::display_name
const char * display_name
Definition
popup_manager.h:39
yaze::editor::PopupDefinition::allow_resize
bool allow_resize
Definition
popup_manager.h:41
yaze::editor::PopupDefinition::type
PopupType type
Definition
popup_manager.h:40
yaze::editor::PopupDefinition::draw_function
std::function< void()> draw_function
Definition
popup_manager.h:42
yaze::editor::PopupManager::SaveAsState
Definition
popup_manager.h:205
yaze::editor::PopupManager::SaveAsState::source_path
std::string source_path
Definition
popup_manager.h:208
yaze::editor::PopupManager::SaveAsState::error
std::string error
Definition
popup_manager.h:211
yaze::editor::PopupManager::SaveAsState::initialized
bool initialized
Definition
popup_manager.h:206
yaze::editor::PopupManager::SaveAsState::filename
std::string filename
Definition
popup_manager.h:210
yaze::editor::PopupManager::SaveAsState::folder
std::string folder
Definition
popup_manager.h:209
yaze::editor::PopupManager::SaveAsState::session_id
std::size_t session_id
Definition
popup_manager.h:207
yaze::editor::PopupParams
Runtime state for a registered popup.
Definition
popup_manager.h:49
yaze::editor::PopupParams::type
PopupType type
Definition
popup_manager.h:51
yaze::editor::PopupParams::name
std::string name
Definition
popup_manager.h:50
yaze::editor::PopupParams::draw_function
std::function< void()> draw_function
Definition
popup_manager.h:54
yaze::editor::PopupParams::is_visible
bool is_visible
Definition
popup_manager.h:52
yaze::editor::PopupParams::allow_resize
bool allow_resize
Definition
popup_manager.h:53
yaze::editor::PopupParams::shown_order
uint64_t shown_order
Definition
popup_manager.h:55
src
app
editor
shell
feedback
popup_manager.h
Generated by
1.10.0