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"
49struct GfxGroupWorkspaceState;
50class GlobalEditorContext;
51class WorkspaceWindowManager;
83 explicit operator bool()
const {
return IsValid(); }
230 "Unknown",
"Assembly",
"Dungeon",
"Emulator",
"Graphics",
231 "Music",
"Overworld",
"Palette",
"Screen",
"Sprite",
232 "Message",
"Hex",
"Agent",
"Settings",
"Planning",
240 return static_cast<size_t>(type);
267 virtual absl::Status
Load() = 0;
270 virtual absl::Status
Save() = 0;
288 virtual absl::Status
Cut() = 0;
289 virtual absl::Status
Copy() = 0;
292 virtual absl::Status
Undo() = 0;
293 virtual absl::Status
Redo() = 0;
305 virtual absl::Status
Find() = 0;
307 virtual absl::Status
Clear() {
return absl::OkStatus(); }
321 virtual bool CanCut()
const {
return true; }
324 virtual bool CanFind()
const {
return false; }
352 return "ROM state not implemented";
390 template <
typename T>
392 const std::string& operation =
"")
const {
394 return absl::FailedPreconditionError(
395 operation.empty() ?
"ROM not loaded"
396 : absl::StrFormat(
"%s: ROM not loaded", operation));
400 }
catch (
const std::exception& e) {
401 return absl::InternalError(absl::StrFormat(
402 "%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
virtual bool CanFind() const
zelda3::GameData * game_data() const
EditorDependencies dependencies_
virtual absl::Status Clear()
void set_active(bool active)
virtual ~Editor()=default
virtual void CommitSaveTransaction()
virtual EditorContextSnapshot BuildContextSnapshot() const
virtual std::string GetRomStatus() const
virtual absl::Status Save()=0
virtual bool CanRedo() 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 bool CanCut() const
virtual absl::Status Find()=0
virtual bool CanUndo() const
virtual bool CanPaste() const
core::VersionManager * version_manager() const
virtual void PrepareForSessionTeardown()
virtual absl::Status Paste()=0
virtual absl::Status Load()=0
virtual absl::Status Update()=0
virtual absl::Status Undo()=0
virtual bool CanCopy() const
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 *, 15 > kEditorNames
size_t EditorTypeIndex(EditorType type)
constexpr EditorType kLastEditorType
constexpr size_t kEditorTypeCount
zelda3::GameData * game_data
EditorContext context() const
GlobalEditorContext * global_context
project::YazeProject * project
core::VersionManager * version_manager
std::string semantic_owner
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.