1#ifndef YAZE_APP_CORE_EDITOR_H
2#define YAZE_APP_CORE_EDITOR_H
9#include "absl/status/status.h"
10#include "absl/status/statusor.h"
11#include "absl/strings/str_format.h"
47class GlobalEditorContext;
80 explicit operator bool()
const {
return IsValid(); }
218 "Unknown",
"Assembly",
"Dungeon",
"Emulator",
"Graphics",
219 "Music",
"Overworld",
"Palette",
"Screen",
"Sprite",
220 "Message",
"Hex",
"Agent",
"Settings",
227 return static_cast<size_t>(type);
254 virtual absl::Status
Load() = 0;
257 virtual absl::Status
Save() = 0;
262 virtual absl::Status
Cut() = 0;
263 virtual absl::Status
Copy() = 0;
266 virtual absl::Status
Undo() = 0;
267 virtual absl::Status
Redo() = 0;
279 virtual absl::Status
Find() = 0;
281 virtual absl::Status
Clear() {
return absl::OkStatus(); }
292 return "ROM state not implemented";
326 template <
typename T>
328 const std::string& operation =
"")
const {
330 return absl::FailedPreconditionError(
331 operation.empty() ?
"ROM not loaded"
332 : absl::StrFormat(
"%s: ROM not loaded", operation));
336 }
catch (
const std::exception& e) {
337 return absl::InternalError(absl::StrFormat(
338 "%s: %s", operation.empty() ?
"ROM access failed" : operation,
The Rom class is used to load, save, and modify Rom data. This is a generic SNES ROM container and do...
Manages project versioning (Git) and ROM artifact snapshots.
Interface for editor classes.
virtual void SetGameData(zelda3::GameData *game_data)
virtual absl::Status Cut()=0
virtual absl::Status Copy()=0
virtual absl::Status Redo()=0
EditorContext context() const
UndoManager undo_manager_
virtual std::string GetRedoDescription() const
const UndoManager & undo_manager() const
virtual void SetDependencies(const EditorDependencies &deps)
virtual void Initialize()=0
zelda3::GameData * game_data() const
EditorDependencies dependencies_
virtual absl::Status Clear()
void set_active(bool active)
virtual ~Editor()=default
virtual std::string GetRomStatus() const
virtual absl::Status Save()=0
std::string MakePanelId(const std::string &base_id) const
virtual bool IsRomLoaded() const
std::string MakePanelTitle(const std::string &base_title) const
absl::StatusOr< T > SafeRomAccess(std::function< T()> accessor, const std::string &operation="") const
virtual absl::Status Find()=0
virtual absl::Status Paste()=0
virtual absl::Status Load()=0
virtual absl::Status Update()=0
virtual absl::Status Undo()=0
virtual std::string GetUndoDescription() const
Instance-based runtime context replacing ContentRegistry::Context.
Central registry for all editor cards with session awareness and dependency injection.
A session-aware status bar displayed at the bottom of the application.
Manages undo/redo stacks for a single editor.
std::string GetRedoDescription() const
Description of the action that would be redone (for UI)
std::string GetUndoDescription() const
Description of the action that would be undone (for UI)
Manages user preferences and settings persistence.
A class for emulating and debugging SNES games.
Defines an abstract interface for all rendering operations.
constexpr std::array< const char *, 14 > kEditorNames
size_t EditorTypeIndex(EditorType type)
constexpr size_t kEditorTypeCount
zelda3::GameData * game_data
EditorContext context() const
GlobalEditorContext * global_context
project::YazeProject * project
core::VersionManager * version_manager
Lightweight view into the essential runtime context (Rom + GameData)
zelda3::GameData * game_data
Unified dependency container for all editor types.
project::YazeProject * project
GlobalEditorContext * global_context
ToastManager * toast_manager
SharedClipboard * shared_clipboard
gfx::IRenderer * renderer
ShortcutManager * shortcut_manager
UndoManager * undo_manager
UserSettings * user_settings
core::VersionManager * version_manager
zelda3::GameData * game_data
EditorContext context() const
CoreDependencies GetCoreDeps() const
UIDependencies GetUIDeps() const
PanelManager * panel_manager
PopupManager * popup_manager
std::vector< int > overworld_tile16_ids
bool has_overworld_tile16
UndoManager * undo_manager
PanelManager * panel_manager
ToastManager * toast_manager
ShortcutManager * shortcut_manager
UserSettings * user_settings
SharedClipboard * shared_clipboard
PopupManager * popup_manager
Modern project structure with comprehensive settings consolidation.