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"
48struct GfxGroupWorkspaceState;
49class GlobalEditorContext;
50class WorkspaceWindowManager;
82 explicit operator bool()
const {
return IsValid(); }
227 "Unknown",
"Assembly",
"Dungeon",
"Emulator",
"Graphics",
228 "Music",
"Overworld",
"Palette",
"Screen",
"Sprite",
229 "Message",
"Hex",
"Agent",
"Settings",
236 return static_cast<size_t>(type);
263 virtual absl::Status
Load() = 0;
266 virtual absl::Status
Save() = 0;
279 virtual absl::Status
Cut() = 0;
280 virtual absl::Status
Copy() = 0;
283 virtual absl::Status
Undo() = 0;
284 virtual absl::Status
Redo() = 0;
296 virtual absl::Status
Find() = 0;
298 virtual absl::Status
Clear() {
return absl::OkStatus(); }
315 return "ROM state not implemented";
353 template <
typename T>
355 const std::string& operation =
"")
const {
357 return absl::FailedPreconditionError(
358 operation.empty() ?
"ROM not loaded"
359 : absl::StrFormat(
"%s: ROM not loaded", operation));
363 }
catch (
const std::exception& e) {
364 return absl::InternalError(absl::StrFormat(
365 "%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 BeginSaveTransaction()
virtual absl::Status Cut()=0
virtual absl::Status Copy()=0
virtual void ContributeStatus(StatusBar *)
virtual absl::Status Redo()=0
EditorContext context() const
UndoManager undo_manager_
virtual std::string GetRedoDescription() const
project::YazeProject * project() const
virtual void RollbackSaveTransaction()
const UndoManager & undo_manager() const
virtual void SetDependencies(const EditorDependencies &deps)
std::string MakeWindowId(const std::string &base_id) const
virtual void Initialize()=0
zelda3::GameData * game_data() const
EditorDependencies dependencies_
virtual absl::Status Clear()
void set_active(bool active)
virtual ~Editor()=default
virtual void CommitSaveTransaction()
virtual std::string GetRomStatus() const
virtual absl::Status Save()=0
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
core::VersionManager * version_manager() const
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.
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.
Central registry for all editor cards with session awareness and dependency injection.
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
WorkspaceWindowManager * window_manager
PopupManager * popup_manager
GfxGroupWorkspaceState * gfx_group_workspace
Per-ROM-session UI state shared by all GfxGroupEditor surfaces.
bool has_overworld_map_metadata
std::vector< int > overworld_tile16_ids
OverworldMapMetadataClipboard overworld_map_metadata
bool has_overworld_tile16
UndoManager * undo_manager
ToastManager * toast_manager
ShortcutManager * shortcut_manager
UserSettings * user_settings
WorkspaceWindowManager * window_manager
SharedClipboard * shared_clipboard
PopupManager * popup_manager
Modern project structure with comprehensive settings consolidation.