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"
47struct GfxGroupWorkspaceState;
48class GlobalEditorContext;
49class WorkspaceWindowManager;
81 explicit operator bool()
const {
return IsValid(); }
222 "Unknown",
"Assembly",
"Dungeon",
"Emulator",
"Graphics",
223 "Music",
"Overworld",
"Palette",
"Screen",
"Sprite",
224 "Message",
"Hex",
"Agent",
"Settings",
231 return static_cast<size_t>(type);
258 virtual absl::Status
Load() = 0;
261 virtual absl::Status
Save() = 0;
266 virtual absl::Status
Cut() = 0;
267 virtual absl::Status
Copy() = 0;
270 virtual absl::Status
Undo() = 0;
271 virtual absl::Status
Redo() = 0;
283 virtual absl::Status
Find() = 0;
285 virtual absl::Status
Clear() {
return absl::OkStatus(); }
302 return "ROM state not implemented";
336 template <
typename T>
338 const std::string& operation =
"")
const {
340 return absl::FailedPreconditionError(
341 operation.empty() ?
"ROM not loaded"
342 : absl::StrFormat(
"%s: ROM not loaded", operation));
346 }
catch (
const std::exception& e) {
347 return absl::InternalError(absl::StrFormat(
348 "%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 void ContributeStatus(StatusBar *)
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)
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 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
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.
std::vector< int > overworld_tile16_ids
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.