refactor(editor): integrate EditorCardRegistry for improved card management

- Updated EditorManager and various editor components to utilize EditorCardRegistry for card registration and visibility management, enhancing dependency injection and modularity.
- Refactored card registration logic across multiple editors, ensuring a consistent approach to managing editor cards.
- Improved UI coordination by delegating visibility checks and card management to the new registry, streamlining the user experience.

Benefits:
- Simplifies card management, leading to a more organized and efficient user experience.
- Enhances maintainability by clearly defining roles for card handling and editor operations, aligning with the overall architecture improvements.
This commit is contained in:
scawful
2025-10-15 14:04:01 -04:00
parent 651be0fdca
commit f5a54b8f01
20 changed files with 243 additions and 134 deletions

View File

@@ -1,4 +1,5 @@
#include "music_editor.h"
#include "app/editor/system/editor_card_registry.h"
#include "absl/strings/str_format.h"
#include "app/gfx/debug/performance/performance_profiler.h"
@@ -13,20 +14,21 @@ namespace yaze {
namespace editor {
void MusicEditor::Initialize() {
auto& card_manager = gui::EditorCardManager::Get();
if (!dependencies_.card_registry) return;
auto* card_registry = dependencies_.card_registry;
card_manager.RegisterCard({.card_id = "music.tracker", .display_name = "Music Tracker",
card_registry->RegisterCard({.card_id = "music.tracker", .display_name = "Music Tracker",
.icon = ICON_MD_MUSIC_NOTE, .category = "Music",
.shortcut_hint = "Ctrl+Shift+M", .priority = 10});
card_manager.RegisterCard({.card_id = "music.instrument_editor", .display_name = "Instrument Editor",
card_registry->RegisterCard({.card_id = "music.instrument_editor", .display_name = "Instrument Editor",
.icon = ICON_MD_PIANO, .category = "Music",
.shortcut_hint = "Ctrl+Shift+I", .priority = 20});
card_manager.RegisterCard({.card_id = "music.assembly", .display_name = "Assembly View",
card_registry->RegisterCard({.card_id = "music.assembly", .display_name = "Assembly View",
.icon = ICON_MD_CODE, .category = "Music",
.shortcut_hint = "Ctrl+Shift+A", .priority = 30});
// Show tracker by default
card_manager.ShowCard("music.tracker");
card_registry->ShowCard("music.tracker");
}
absl::Status MusicEditor::Load() {
@@ -35,7 +37,8 @@ absl::Status MusicEditor::Load() {
}
absl::Status MusicEditor::Update() {
auto& card_manager = gui::EditorCardManager::Get();
if (!dependencies_.card_registry) return absl::OkStatus();
auto* card_registry = dependencies_.card_registry;
static gui::EditorCard tracker_card("Music Tracker", ICON_MD_MUSIC_NOTE);
static gui::EditorCard instrument_card("Instrument Editor", ICON_MD_PIANO);
@@ -46,19 +49,19 @@ absl::Status MusicEditor::Update() {
assembly_card.SetDefaultSize(700, 600);
// Music Tracker Card
if (tracker_card.Begin(card_manager.GetVisibilityFlag("music.tracker"))) {
if (tracker_card.Begin(card_registry->GetVisibilityFlag("music.tracker"))) {
DrawTrackerView();
}
tracker_card.End();
// Instrument Editor Card
if (instrument_card.Begin(card_manager.GetVisibilityFlag("music.instrument_editor"))) {
if (instrument_card.Begin(card_registry->GetVisibilityFlag("music.instrument_editor"))) {
DrawInstrumentEditor();
}
instrument_card.End();
// Assembly View Card
if (assembly_card.Begin(card_manager.GetVisibilityFlag("music.assembly"))) {
if (assembly_card.Begin(card_registry->GetVisibilityFlag("music.assembly"))) {
assembly_editor_.InlineUpdate();
}
assembly_card.End();