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
20
enum class
PopupType
{
21
kInfo
,
// Information display (About, ROM Info, etc.)
22
kHelp
,
// Help documentation (Getting Started, etc.)
23
kSettings
,
// Settings dialogs (Display Settings, etc.)
24
kFileOperation
,
// File operations (Save As, New Project, etc.)
25
kConfirmation
,
// Confirmation dialogs (Layout Reset, etc.)
26
kWarning
,
// Warning messages (Session Limit, etc.)
27
kEditor
// Editor-specific dialogs
28
};
29
34
struct
PopupDefinition
{
35
const
char
*
id
;
// Unique constant identifier
36
const
char
*
display_name
;
// Human-readable name for UI
37
PopupType
type
;
// Type classification
38
bool
allow_resize
;
// Whether popup can be resized
39
std::function<void()>
draw_function
;
// Drawing callback (set at runtime)
40
};
41
46
struct
PopupParams
{
47
std::string
name
;
48
PopupType
type
;
49
bool
is_visible
=
false
;
50
bool
allow_resize
=
false
;
51
std::function<void()>
draw_function
;
52
};
53
58
namespace
PopupID
{
59
// File Operations
60
constexpr
const
char
*
kSaveAs
=
"Save As.."
;
61
constexpr
const
char
*
kNewProject
=
"New Project"
;
62
constexpr
const
char
*
kManageProject
=
"Manage Project"
;
63
64
// Information
65
constexpr
const
char
*
kAbout
=
"About"
;
66
constexpr
const
char
*
kRomInfo
=
"ROM Information"
;
67
constexpr
const
char
*
kSupportedFeatures
=
"Supported Features"
;
68
constexpr
const
char
*
kStatus
=
"Status"
;
69
70
// Help Documentation
71
constexpr
const
char
*
kGettingStarted
=
"Getting Started"
;
72
constexpr
const
char
*
kAsarIntegration
=
"Asar Integration"
;
73
constexpr
const
char
*
kBuildInstructions
=
"Build Instructions"
;
74
constexpr
const
char
*
kCLIUsage
=
"CLI Usage"
;
75
constexpr
const
char
*
kTroubleshooting
=
"Troubleshooting"
;
76
constexpr
const
char
*
kContributing
=
"Contributing"
;
77
constexpr
const
char
*
kWhatsNew
=
"Whats New v03"
;
78
constexpr
const
char
*
kOpenRomHelp
=
"Open a ROM"
;
79
80
// Settings
81
constexpr
const
char
*
kDisplaySettings
=
"Display Settings"
;
82
constexpr
const
char
*
kFeatureFlags
=
"Feature Flags"
;
83
84
// Workspace
85
constexpr
const
char
*
kWorkspaceHelp
=
"Workspace Help"
;
86
constexpr
const
char
*
kSessionLimitWarning
=
"Session Limit Warning"
;
87
constexpr
const
char
*
kLayoutResetConfirm
=
"Reset Layout Confirmation"
;
88
89
// Debug/Testing
90
constexpr
const
char
*
kDataIntegrity
=
"Data Integrity Check"
;
91
92
// Future expansion
93
constexpr
const
char
*
kQuickExport
=
"Quick Export"
;
94
constexpr
const
char
*
kAssetImport
=
"Asset Import"
;
95
constexpr
const
char
*
kScriptGenerator
=
"Script Generator"
;
96
}
97
98
// ImGui popup manager.
99
class
PopupManager
{
100
public
:
101
PopupManager
(
EditorManager
* editor_manager);
102
103
// Initialize popups
104
void
Initialize
();
105
106
// Draw all popups
107
void
DrawPopups
();
108
109
// Show a specific popup
110
void
Show
(
const
char
* name);
111
112
// Hide a specific popup
113
void
Hide
(
const
char
* name);
114
115
// Check if a popup is visible
116
bool
IsVisible
(
const
char
* name)
const
;
117
118
// Set the status for status popup
119
void
SetStatus
(
const
absl::Status& status);
120
121
// Get the current status
122
absl::Status
GetStatus
()
const
{
return
status_
; }
123
124
private
:
125
// Helper function to begin a centered popup
126
bool
BeginCentered
(
const
char
* name);
127
128
// Draw the about popup
129
void
DrawAboutPopup
();
130
131
// Draw the ROM info popup
132
void
DrawRomInfoPopup
();
133
134
// Draw the status popup
135
void
DrawStatusPopup
();
136
137
// Draw the save as popup
138
void
DrawSaveAsPopup
();
139
140
// Draw the new project popup
141
void
DrawNewProjectPopup
();
142
143
// Draw the supported features popup
144
void
DrawSupportedFeaturesPopup
();
145
146
// Draw the open ROM help popup
147
void
DrawOpenRomHelpPopup
();
148
149
// Draw the manage project popup
150
void
DrawManageProjectPopup
();
151
152
// v0.3 Help Documentation popups
153
void
DrawGettingStartedPopup
();
154
void
DrawAsarIntegrationPopup
();
155
void
DrawBuildInstructionsPopup
();
156
void
DrawCLIUsagePopup
();
157
void
DrawTroubleshootingPopup
();
158
void
DrawContributingPopup
();
159
void
DrawWhatsNewPopup
();
160
161
// Workspace-related popups
162
void
DrawWorkspaceHelpPopup
();
163
void
DrawSessionLimitWarningPopup
();
164
void
DrawLayoutResetConfirmPopup
();
165
166
// Settings popups (accessible without ROM)
167
void
DrawDisplaySettingsPopup
();
168
void
DrawFeatureFlagsPopup
();
169
170
// Debug/Testing popups
171
void
DrawDataIntegrityPopup
();
172
173
EditorManager
*
editor_manager_
;
174
std::unordered_map<std::string, PopupParams>
popups_
;
175
absl::Status
status_
;
176
bool
show_status_
=
false
;
177
absl::Status
prev_status_
;
178
};
179
180
}
// namespace editor
181
}
// namespace yaze
182
183
#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:66
yaze::editor::PopupManager
Definition
popup_manager.h:99
yaze::editor::PopupManager::DrawBuildInstructionsPopup
void DrawBuildInstructionsPopup()
Definition
popup_manager.cc:506
yaze::editor::PopupManager::SetStatus
void SetStatus(const absl::Status &status)
Definition
popup_manager.cc:196
yaze::editor::PopupManager::GetStatus
absl::Status GetStatus() const
Definition
popup_manager.h:122
yaze::editor::PopupManager::IsVisible
bool IsVisible(const char *name) const
Definition
popup_manager.cc:183
yaze::editor::PopupManager::DrawPopups
void DrawPopups()
Definition
popup_manager.cc:130
yaze::editor::PopupManager::Show
void Show(const char *name)
Definition
popup_manager.cc:151
yaze::editor::PopupManager::DrawDataIntegrityPopup
void DrawDataIntegrityPopup()
Definition
popup_manager.cc:764
yaze::editor::PopupManager::DrawSessionLimitWarningPopup
void DrawSessionLimitWarningPopup()
Definition
popup_manager.cc:649
yaze::editor::PopupManager::Hide
void Hide(const char *name)
Definition
popup_manager.cc:170
yaze::editor::PopupManager::DrawTroubleshootingPopup
void DrawTroubleshootingPopup()
Definition
popup_manager.cc:538
yaze::editor::PopupManager::DrawSupportedFeaturesPopup
void DrawSupportedFeaturesPopup()
Definition
popup_manager.cc:389
yaze::editor::PopupManager::Initialize
void Initialize()
Definition
popup_manager.cc:19
yaze::editor::PopupManager::popups_
std::unordered_map< std::string, PopupParams > popups_
Definition
popup_manager.h:174
yaze::editor::PopupManager::editor_manager_
EditorManager * editor_manager_
Definition
popup_manager.h:173
yaze::editor::PopupManager::DrawStatusPopup
void DrawStatusPopup()
Definition
popup_manager.cc:214
yaze::editor::PopupManager::DrawGettingStartedPopup
void DrawGettingStartedPopup()
Definition
popup_manager.cc:477
yaze::editor::PopupManager::DrawDisplaySettingsPopup
void DrawDisplaySettingsPopup()
Definition
popup_manager.cc:683
yaze::editor::PopupManager::DrawSaveAsPopup
void DrawSaveAsPopup()
Definition
popup_manager.cc:260
yaze::editor::PopupManager::DrawContributingPopup
void DrawContributingPopup()
Definition
popup_manager.cc:552
yaze::editor::PopupManager::prev_status_
absl::Status prev_status_
Definition
popup_manager.h:177
yaze::editor::PopupManager::DrawFeatureFlagsPopup
void DrawFeatureFlagsPopup()
Definition
popup_manager.cc:724
yaze::editor::PopupManager::status_
absl::Status status_
Definition
popup_manager.h:175
yaze::editor::PopupManager::DrawCLIUsagePopup
void DrawCLIUsagePopup()
Definition
popup_manager.cc:523
yaze::editor::PopupManager::BeginCentered
bool BeginCentered(const char *name)
Definition
popup_manager.cc:204
yaze::editor::PopupManager::DrawWhatsNewPopup
void DrawWhatsNewPopup()
Definition
popup_manager.cc:568
yaze::editor::PopupManager::show_status_
bool show_status_
Definition
popup_manager.h:176
yaze::editor::PopupManager::DrawRomInfoPopup
void DrawRomInfoPopup()
Definition
popup_manager.cc:248
yaze::editor::PopupManager::DrawLayoutResetConfirmPopup
void DrawLayoutResetConfirmPopup()
Definition
popup_manager.cc:666
yaze::editor::PopupManager::DrawAboutPopup
void DrawAboutPopup()
Definition
popup_manager.cc:236
yaze::editor::PopupManager::DrawOpenRomHelpPopup
void DrawOpenRomHelpPopup()
Definition
popup_manager.cc:449
yaze::editor::PopupManager::DrawNewProjectPopup
void DrawNewProjectPopup()
Definition
popup_manager.cc:309
yaze::editor::PopupManager::DrawManageProjectPopup
void DrawManageProjectPopup()
Definition
popup_manager.cc:462
yaze::editor::PopupManager::DrawAsarIntegrationPopup
void DrawAsarIntegrationPopup()
Definition
popup_manager.cc:491
yaze::editor::PopupManager::DrawWorkspaceHelpPopup
void DrawWorkspaceHelpPopup()
Definition
popup_manager.cc:620
PopupID
String constants for all popup identifiers to prevent typos.
yaze::editor::PopupID::kRomInfo
constexpr const char * kRomInfo
Definition
popup_manager.h:66
yaze::editor::PopupID::kAbout
constexpr const char * kAbout
Definition
popup_manager.h:65
yaze::editor::PopupID::kTroubleshooting
constexpr const char * kTroubleshooting
Definition
popup_manager.h:75
yaze::editor::PopupID::kAssetImport
constexpr const char * kAssetImport
Definition
popup_manager.h:94
yaze::editor::PopupID::kWhatsNew
constexpr const char * kWhatsNew
Definition
popup_manager.h:77
yaze::editor::PopupID::kStatus
constexpr const char * kStatus
Definition
popup_manager.h:68
yaze::editor::PopupID::kSupportedFeatures
constexpr const char * kSupportedFeatures
Definition
popup_manager.h:67
yaze::editor::PopupID::kDataIntegrity
constexpr const char * kDataIntegrity
Definition
popup_manager.h:90
yaze::editor::PopupID::kQuickExport
constexpr const char * kQuickExport
Definition
popup_manager.h:93
yaze::editor::PopupID::kManageProject
constexpr const char * kManageProject
Definition
popup_manager.h:62
yaze::editor::PopupID::kNewProject
constexpr const char * kNewProject
Definition
popup_manager.h:61
yaze::editor::PopupID::kSaveAs
constexpr const char * kSaveAs
Definition
popup_manager.h:60
yaze::editor::PopupID::kDisplaySettings
constexpr const char * kDisplaySettings
Definition
popup_manager.h:81
yaze::editor::PopupID::kSessionLimitWarning
constexpr const char * kSessionLimitWarning
Definition
popup_manager.h:86
yaze::editor::PopupID::kCLIUsage
constexpr const char * kCLIUsage
Definition
popup_manager.h:74
yaze::editor::PopupID::kScriptGenerator
constexpr const char * kScriptGenerator
Definition
popup_manager.h:95
yaze::editor::PopupID::kLayoutResetConfirm
constexpr const char * kLayoutResetConfirm
Definition
popup_manager.h:87
yaze::editor::PopupID::kAsarIntegration
constexpr const char * kAsarIntegration
Definition
popup_manager.h:72
yaze::editor::PopupID::kOpenRomHelp
constexpr const char * kOpenRomHelp
Definition
popup_manager.h:78
yaze::editor::PopupID::kFeatureFlags
constexpr const char * kFeatureFlags
Definition
popup_manager.h:82
yaze::editor::PopupID::kGettingStarted
constexpr const char * kGettingStarted
Definition
popup_manager.h:71
yaze::editor::PopupID::kContributing
constexpr const char * kContributing
Definition
popup_manager.h:76
yaze::editor::PopupID::kBuildInstructions
constexpr const char * kBuildInstructions
Definition
popup_manager.h:73
yaze::editor::PopupID::kWorkspaceHelp
constexpr const char * kWorkspaceHelp
Definition
popup_manager.h:85
yaze::editor::EditorType::kSettings
@ kSettings
yaze::editor::PopupType
PopupType
Type classification for popups to enable future filtering and organization.
Definition
popup_manager.h:20
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
Main namespace for the application.
Definition
controller.cc:20
yaze::editor::PopupDefinition
Complete definition of a popup including metadata.
Definition
popup_manager.h:34
yaze::editor::PopupDefinition::id
const char * id
Definition
popup_manager.h:35
yaze::editor::PopupDefinition::display_name
const char * display_name
Definition
popup_manager.h:36
yaze::editor::PopupDefinition::allow_resize
bool allow_resize
Definition
popup_manager.h:38
yaze::editor::PopupDefinition::type
PopupType type
Definition
popup_manager.h:37
yaze::editor::PopupDefinition::draw_function
std::function< void()> draw_function
Definition
popup_manager.h:39
yaze::editor::PopupParams
Runtime state for a registered popup.
Definition
popup_manager.h:46
yaze::editor::PopupParams::type
PopupType type
Definition
popup_manager.h:48
yaze::editor::PopupParams::name
std::string name
Definition
popup_manager.h:47
yaze::editor::PopupParams::draw_function
std::function< void()> draw_function
Definition
popup_manager.h:51
yaze::editor::PopupParams::is_visible
bool is_visible
Definition
popup_manager.h:49
yaze::editor::PopupParams::allow_resize
bool allow_resize
Definition
popup_manager.h:50
src
app
editor
system
popup_manager.h
Generated by
1.9.8