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
*
kNewProject
=
"New Project"
;
63
constexpr
const
char
*
kManageProject
=
"Manage Project"
;
64
65
// Information
66
constexpr
const
char
*
kAbout
=
"About"
;
67
constexpr
const
char
*
kRomInfo
=
"ROM Information"
;
68
constexpr
const
char
*
kSupportedFeatures
=
"Supported Features"
;
69
constexpr
const
char
*
kStatus
=
"Status"
;
70
71
// Help Documentation
72
constexpr
const
char
*
kGettingStarted
=
"Getting Started"
;
73
constexpr
const
char
*
kAsarIntegration
=
"Asar Integration"
;
74
constexpr
const
char
*
kBuildInstructions
=
"Build Instructions"
;
75
constexpr
const
char
*
kCLIUsage
=
"CLI Usage"
;
76
constexpr
const
char
*
kTroubleshooting
=
"Troubleshooting"
;
77
constexpr
const
char
*
kContributing
=
"Contributing"
;
78
constexpr
const
char
*
kWhatsNew
=
"Whats New v03"
;
79
constexpr
const
char
*
kOpenRomHelp
=
"Open a ROM"
;
80
81
// Settings
82
constexpr
const
char
*
kDisplaySettings
=
"Display Settings"
;
83
constexpr
const
char
*
kFeatureFlags
=
"Feature Flags"
;
84
85
// Workspace
86
constexpr
const
char
*
kWorkspaceHelp
=
"Workspace Help"
;
87
constexpr
const
char
*
kSessionLimitWarning
=
"Session Limit Warning"
;
88
constexpr
const
char
*
kLayoutResetConfirm
=
"Reset Layout Confirmation"
;
89
constexpr
const
char
*
kLayoutPresets
=
"Layout Presets"
;
90
constexpr
const
char
*
kSessionManager
=
"Session Manager"
;
91
92
// Debug/Testing
93
constexpr
const
char
*
kDataIntegrity
=
"Data Integrity Check"
;
94
95
// Future expansion
96
constexpr
const
char
*
kQuickExport
=
"Quick Export"
;
97
constexpr
const
char
*
kAssetImport
=
"Asset Import"
;
98
constexpr
const
char
*
kScriptGenerator
=
"Script Generator"
;
99
}
// namespace PopupID
100
101
// ImGui popup manager.
102
class
PopupManager
{
103
public
:
104
PopupManager
(
EditorManager
* editor_manager);
105
106
// Initialize popups
107
void
Initialize
();
108
109
// Draw all popups
110
void
DrawPopups
();
111
112
// Show a specific popup
113
void
Show
(
const
char
* name);
114
115
// Hide a specific popup
116
void
Hide
(
const
char
* name);
117
118
// Check if a popup is visible
119
bool
IsVisible
(
const
char
* name)
const
;
120
121
// Set the status for status popup
122
void
SetStatus
(
const
absl::Status& status);
123
124
// Get the current status
125
absl::Status
GetStatus
()
const
{
return
status_
; }
126
127
private
:
128
// Helper function to begin a centered popup
129
bool
BeginCentered
(
const
char
* name);
130
131
// Draw the about popup
132
void
DrawAboutPopup
();
133
134
// Draw the ROM info popup
135
void
DrawRomInfoPopup
();
136
137
// Draw the status popup
138
void
DrawStatusPopup
();
139
140
// Draw the save as popup
141
void
DrawSaveAsPopup
();
142
143
// Draw the new project popup
144
void
DrawNewProjectPopup
();
145
146
// Draw the supported features popup
147
void
DrawSupportedFeaturesPopup
();
148
149
// Draw the open ROM help popup
150
void
DrawOpenRomHelpPopup
();
151
152
// Draw the manage project popup
153
void
DrawManageProjectPopup
();
154
155
// v0.3 Help Documentation popups
156
void
DrawGettingStartedPopup
();
157
void
DrawAsarIntegrationPopup
();
158
void
DrawBuildInstructionsPopup
();
159
void
DrawCLIUsagePopup
();
160
void
DrawTroubleshootingPopup
();
161
void
DrawContributingPopup
();
162
void
DrawWhatsNewPopup
();
163
164
// Workspace-related popups
165
void
DrawWorkspaceHelpPopup
();
166
void
DrawSessionLimitWarningPopup
();
167
void
DrawLayoutResetConfirmPopup
();
168
void
DrawLayoutPresetsPopup
();
169
void
DrawSessionManagerPopup
();
170
171
// Settings popups (accessible without ROM)
172
void
DrawDisplaySettingsPopup
();
173
void
DrawFeatureFlagsPopup
();
174
175
// Debug/Testing popups
176
void
DrawDataIntegrityPopup
();
177
178
EditorManager
*
editor_manager_
;
179
std::unordered_map<std::string, PopupParams>
popups_
;
180
absl::Status
status_
;
181
bool
show_status_
=
false
;
182
absl::Status
prev_status_
;
183
};
184
185
}
// namespace editor
186
}
// namespace yaze
187
188
#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:87
yaze::editor::PopupManager
Definition
popup_manager.h:102
yaze::editor::PopupManager::DrawBuildInstructionsPopup
void DrawBuildInstructionsPopup()
Definition
popup_manager.cc:545
yaze::editor::PopupManager::SetStatus
void SetStatus(const absl::Status &status)
Definition
popup_manager.cc:218
yaze::editor::PopupManager::GetStatus
absl::Status GetStatus() const
Definition
popup_manager.h:125
yaze::editor::PopupManager::DrawLayoutPresetsPopup
void DrawLayoutPresetsPopup()
Definition
popup_manager.cc:733
yaze::editor::PopupManager::IsVisible
bool IsVisible(const char *name) const
Definition
popup_manager.cc:205
yaze::editor::PopupManager::DrawPopups
void DrawPopups()
Definition
popup_manager.cc:149
yaze::editor::PopupManager::Show
void Show(const char *name)
Definition
popup_manager.cc:171
yaze::editor::PopupManager::DrawDataIntegrityPopup
void DrawDataIntegrityPopup()
Definition
popup_manager.cc:1003
yaze::editor::PopupManager::DrawSessionLimitWarningPopup
void DrawSessionLimitWarningPopup()
Definition
popup_manager.cc:698
yaze::editor::PopupManager::Hide
void Hide(const char *name)
Definition
popup_manager.cc:192
yaze::editor::PopupManager::DrawTroubleshootingPopup
void DrawTroubleshootingPopup()
Definition
popup_manager.cc:577
yaze::editor::PopupManager::DrawSupportedFeaturesPopup
void DrawSupportedFeaturesPopup()
Definition
popup_manager.cc:416
yaze::editor::PopupManager::Initialize
void Initialize()
Definition
popup_manager.cc:22
yaze::editor::PopupManager::PopupManager
PopupManager(EditorManager *editor_manager)
Definition
popup_manager.cc:19
yaze::editor::PopupManager::popups_
std::unordered_map< std::string, PopupParams > popups_
Definition
popup_manager.h:179
yaze::editor::PopupManager::editor_manager_
EditorManager * editor_manager_
Definition
popup_manager.h:178
yaze::editor::PopupManager::DrawStatusPopup
void DrawStatusPopup()
Definition
popup_manager.cc:236
yaze::editor::PopupManager::DrawGettingStartedPopup
void DrawGettingStartedPopup()
Definition
popup_manager.cc:513
yaze::editor::PopupManager::DrawDisplaySettingsPopup
void DrawDisplaySettingsPopup()
Definition
popup_manager.cc:920
yaze::editor::PopupManager::DrawSaveAsPopup
void DrawSaveAsPopup()
Definition
popup_manager.cc:284
yaze::editor::PopupManager::DrawContributingPopup
void DrawContributingPopup()
Definition
popup_manager.cc:591
yaze::editor::PopupManager::prev_status_
absl::Status prev_status_
Definition
popup_manager.h:182
yaze::editor::PopupManager::DrawFeatureFlagsPopup
void DrawFeatureFlagsPopup()
Definition
popup_manager.cc:963
yaze::editor::PopupManager::status_
absl::Status status_
Definition
popup_manager.h:180
yaze::editor::PopupManager::DrawCLIUsagePopup
void DrawCLIUsagePopup()
Definition
popup_manager.cc:562
yaze::editor::PopupManager::BeginCentered
bool BeginCentered(const char *name)
Definition
popup_manager.cc:226
yaze::editor::PopupManager::DrawWhatsNewPopup
void DrawWhatsNewPopup()
Definition
popup_manager.cc:607
yaze::editor::PopupManager::show_status_
bool show_status_
Definition
popup_manager.h:181
yaze::editor::PopupManager::DrawSessionManagerPopup
void DrawSessionManagerPopup()
Definition
popup_manager.cc:831
yaze::editor::PopupManager::DrawRomInfoPopup
void DrawRomInfoPopup()
Definition
popup_manager.cc:270
yaze::editor::PopupManager::DrawLayoutResetConfirmPopup
void DrawLayoutResetConfirmPopup()
Definition
popup_manager.cc:715
yaze::editor::PopupManager::DrawAboutPopup
void DrawAboutPopup()
Definition
popup_manager.cc:258
yaze::editor::PopupManager::DrawOpenRomHelpPopup
void DrawOpenRomHelpPopup()
Definition
popup_manager.cc:485
yaze::editor::PopupManager::DrawNewProjectPopup
void DrawNewProjectPopup()
Definition
popup_manager.cc:334
yaze::editor::PopupManager::DrawManageProjectPopup
void DrawManageProjectPopup()
Definition
popup_manager.cc:498
yaze::editor::PopupManager::DrawAsarIntegrationPopup
void DrawAsarIntegrationPopup()
Definition
popup_manager.cc:529
yaze::editor::PopupManager::DrawWorkspaceHelpPopup
void DrawWorkspaceHelpPopup()
Definition
popup_manager.cc:668
PopupID
String constants for all popup identifiers to prevent typos.
yaze::editor::PopupID::kRomInfo
constexpr const char * kRomInfo
Definition
popup_manager.h:67
yaze::editor::PopupID::kLayoutPresets
constexpr const char * kLayoutPresets
Definition
popup_manager.h:89
yaze::editor::PopupID::kAbout
constexpr const char * kAbout
Definition
popup_manager.h:66
yaze::editor::PopupID::kSessionManager
constexpr const char * kSessionManager
Definition
popup_manager.h:90
yaze::editor::PopupID::kTroubleshooting
constexpr const char * kTroubleshooting
Definition
popup_manager.h:76
yaze::editor::PopupID::kAssetImport
constexpr const char * kAssetImport
Definition
popup_manager.h:97
yaze::editor::PopupID::kWhatsNew
constexpr const char * kWhatsNew
Definition
popup_manager.h:78
yaze::editor::PopupID::kStatus
constexpr const char * kStatus
Definition
popup_manager.h:69
yaze::editor::PopupID::kSupportedFeatures
constexpr const char * kSupportedFeatures
Definition
popup_manager.h:68
yaze::editor::PopupID::kDataIntegrity
constexpr const char * kDataIntegrity
Definition
popup_manager.h:93
yaze::editor::PopupID::kQuickExport
constexpr const char * kQuickExport
Definition
popup_manager.h:96
yaze::editor::PopupID::kManageProject
constexpr const char * kManageProject
Definition
popup_manager.h:63
yaze::editor::PopupID::kNewProject
constexpr const char * kNewProject
Definition
popup_manager.h:62
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:82
yaze::editor::PopupID::kSessionLimitWarning
constexpr const char * kSessionLimitWarning
Definition
popup_manager.h:87
yaze::editor::PopupID::kCLIUsage
constexpr const char * kCLIUsage
Definition
popup_manager.h:75
yaze::editor::PopupID::kScriptGenerator
constexpr const char * kScriptGenerator
Definition
popup_manager.h:98
yaze::editor::PopupID::kLayoutResetConfirm
constexpr const char * kLayoutResetConfirm
Definition
popup_manager.h:88
yaze::editor::PopupID::kAsarIntegration
constexpr const char * kAsarIntegration
Definition
popup_manager.h:73
yaze::editor::PopupID::kOpenRomHelp
constexpr const char * kOpenRomHelp
Definition
popup_manager.h:79
yaze::editor::PopupID::kFeatureFlags
constexpr const char * kFeatureFlags
Definition
popup_manager.h:83
yaze::editor::PopupID::kGettingStarted
constexpr const char * kGettingStarted
Definition
popup_manager.h:72
yaze::editor::PopupID::kContributing
constexpr const char * kContributing
Definition
popup_manager.h:77
yaze::editor::PopupID::kBuildInstructions
constexpr const char * kBuildInstructions
Definition
popup_manager.h:74
yaze::editor::PopupID::kWorkspaceHelp
constexpr const char * kWorkspaceHelp
Definition
popup_manager.h:86
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::kEditor
@ kEditor
yaze::editor::PopupType::kConfirmation
@ kConfirmation
yaze::editor::PopupType::kFileOperation
@ kFileOperation
yaze::editor::PopupType::kWarning
@ kWarning
yaze
Definition
application.cc:18
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
ui
popup_manager.h
Generated by
1.10.0