diff --git a/src/app/editor/code/assembly_editor.cc b/src/app/editor/code/assembly_editor.cc index edf3b559..cd435d0a 100644 --- a/src/app/editor/code/assembly_editor.cc +++ b/src/app/editor/code/assembly_editor.cc @@ -329,6 +329,33 @@ void AssemblyEditor::SetEditorText() { } } +absl::Status AssemblyEditor::Cut() { + text_editor_.Cut(); + return absl::OkStatus(); +} + +absl::Status AssemblyEditor::Copy() { + text_editor_.Copy(); + return absl::OkStatus(); +} + +absl::Status AssemblyEditor::Paste() { + text_editor_.Paste(); + return absl::OkStatus(); +} + +absl::Status AssemblyEditor::Undo() { + text_editor_.Undo(); + return absl::OkStatus(); +} + +absl::Status AssemblyEditor::Redo() { + text_editor_.Redo(); + return absl::OkStatus(); +} + +absl::Status AssemblyEditor::Update() { return absl::OkStatus(); } + } // namespace editor } // namespace app } // namespace yaze \ No newline at end of file diff --git a/src/app/editor/code/assembly_editor.h b/src/app/editor/code/assembly_editor.h index 2e673012..a4c9e9d2 100644 --- a/src/app/editor/code/assembly_editor.h +++ b/src/app/editor/code/assembly_editor.h @@ -9,6 +9,7 @@ #include #include "app/core/common.h" +#include "app/editor/utils/editor.h" #include "app/gui/widgets.h" namespace yaze { @@ -19,12 +20,13 @@ namespace editor { * @class AssemblyEditor * @brief Text editor for modifying assembly code. */ -class AssemblyEditor { +class AssemblyEditor : public Editor { public: AssemblyEditor() { text_editor_.SetLanguageDefinition(gui::GetAssemblyLanguageDef()); text_editor_.SetPalette(TextEditor::GetDarkPalette()); text_editor_.SetShowWhitespaces(false); + type_ = EditorType::kAssembly; } void ChangeActiveFile(const std::string_view &filename) { current_file_ = filename; @@ -36,6 +38,15 @@ class AssemblyEditor { void UpdateCodeView(); + absl::Status Cut() override; + absl::Status Copy() override; + absl::Status Paste() override; + + absl::Status Undo() override; + absl::Status Redo() override; + + absl::Status Update() override; + private: void DrawFileMenu(); void DrawEditMenu(); diff --git a/src/app/editor/dungeon_editor.h b/src/app/editor/dungeon_editor.h index 38774e7c..557df494 100644 --- a/src/app/editor/dungeon_editor.h +++ b/src/app/editor/dungeon_editor.h @@ -4,10 +4,10 @@ #include #include "app/core/common.h" -#include "app/editor/utils/editor.h" #include "app/core/labeling.h" #include "app/editor/modules/gfx_group_editor.h" #include "app/editor/modules/palette_editor.h" +#include "app/editor/utils/editor.h" #include "app/gui/canvas.h" #include "app/gui/icons.h" #include "app/rom.h" @@ -46,6 +46,8 @@ class DungeonEditor : public Editor, public SharedRom, public core::ExperimentFlags { public: + DungeonEditor() { type_ = EditorType::kDungeon; } + absl::Status Update() override; absl::Status Cut() override { return absl::OkStatus(); } absl::Status Copy() override { return absl::OkStatus(); } diff --git a/src/app/editor/graphics_editor.h b/src/app/editor/graphics_editor.h index 48502ad7..805d8c64 100644 --- a/src/app/editor/graphics_editor.h +++ b/src/app/editor/graphics_editor.h @@ -9,6 +9,7 @@ #include "absl/status/status.h" #include "absl/status/statusor.h" #include "app/editor/modules/palette_editor.h" +#include "app/editor/utils/editor.h" #include "app/gfx/bitmap.h" #include "app/gfx/snes_tile.h" #include "app/gui/canvas.h" @@ -73,10 +74,18 @@ constexpr ImGuiTableFlags kGfxEditFlags = ImGuiTableFlags_Reorderable | * drawing toolsets, palette controls, clipboard imports, experimental features, * and memory editor. */ -class GraphicsEditor : public SharedRom { +class GraphicsEditor : public SharedRom, public Editor { public: + GraphicsEditor() { type_ = EditorType::kGraphics; } + absl::Status Update(); + absl::Status Cut() override { return absl::OkStatus(); } + absl::Status Copy() override { return absl::OkStatus(); } + absl::Status Paste() override { return absl::OkStatus(); } + absl::Status Undo() override { return absl::OkStatus(); } + absl::Status Redo() override { return absl::OkStatus(); } + private: enum class GfxEditMode { kSelect, diff --git a/src/app/editor/modules/music_editor.cc b/src/app/editor/modules/music_editor.cc index 8aaa8bd8..479bf3d9 100644 --- a/src/app/editor/modules/music_editor.cc +++ b/src/app/editor/modules/music_editor.cc @@ -12,7 +12,7 @@ namespace yaze { namespace app { namespace editor { -void MusicEditor::Update() { +absl::Status MusicEditor::Update() { if (ImGui::BeginTable("MusicEditorColumns", 2, music_editor_flags_, ImVec2(0, 0))) { ImGui::TableSetupColumn("Assembly"); @@ -30,6 +30,8 @@ void MusicEditor::Update() { ImGui::EndTable(); } + + return absl::OkStatus(); } void MusicEditor::DrawChannels() { diff --git a/src/app/editor/modules/music_editor.h b/src/app/editor/modules/music_editor.h index ad1087f7..d0bf9fc1 100644 --- a/src/app/editor/modules/music_editor.h +++ b/src/app/editor/modules/music_editor.h @@ -5,6 +5,7 @@ #include "absl/strings/str_format.h" #include "app/editor/code/assembly_editor.h" +#include "app/editor/utils/editor.h" #include "app/gui/canvas.h" #include "app/gui/icons.h" #include "app/gui/input.h" @@ -58,9 +59,17 @@ static constexpr absl::string_view kSongNotes[] = { * @class MusicEditor * @brief A class for editing music data in a Rom. */ -class MusicEditor : public SharedRom { +class MusicEditor : public SharedRom, public Editor { public: - void Update(); + MusicEditor() { type_ = EditorType::kMusic; } + + absl::Status Update() override; + + absl::Status Cut() override { return absl::OkStatus(); } + absl::Status Copy() override { return absl::OkStatus(); } + absl::Status Paste() override { return absl::OkStatus(); } + absl::Status Undo() override { return absl::OkStatus(); } + absl::Status Redo() override { return absl::OkStatus(); } private: void DrawChannels(); diff --git a/src/app/editor/modules/palette_editor.h b/src/app/editor/modules/palette_editor.h index 04de62d6..78e21f26 100644 --- a/src/app/editor/modules/palette_editor.h +++ b/src/app/editor/modules/palette_editor.h @@ -4,6 +4,7 @@ #include #include "absl/status/status.h" +#include "app/editor/utils/editor.h" #include "app/gfx/snes_palette.h" #include "app/gui/canvas.h" #include "app/gui/icons.h" @@ -81,9 +82,18 @@ class PaletteEditorHistory { * @class PaletteEditor * @brief Allows the user to view and edit in game palettes. */ -class PaletteEditor : public SharedRom { +class PaletteEditor : public SharedRom, public Editor { public: - absl::Status Update(); + PaletteEditor() { type_ = EditorType::kPalette; } + + absl::Status Update() override; + + absl::Status Cut() override { return absl::OkStatus(); } + absl::Status Copy() override { return absl::OkStatus(); } + absl::Status Paste() override { return absl::OkStatus(); } + absl::Status Undo() override { return absl::OkStatus(); } + absl::Status Redo() override { return absl::OkStatus(); } + void DisplayCategoryTable(); absl::Status DrawPaletteGroups(); diff --git a/src/app/editor/overworld_editor.h b/src/app/editor/overworld_editor.h index 4a946d89..8081e333 100644 --- a/src/app/editor/overworld_editor.h +++ b/src/app/editor/overworld_editor.h @@ -85,6 +85,8 @@ class OverworldEditor : public Editor, public context::EntranceContext, public core::ExperimentFlags { public: + OverworldEditor() { type_ = EditorType::kOverworld; } + void InitializeZeml(); absl::Status Update() final; diff --git a/src/app/editor/screen_editor.cc b/src/app/editor/screen_editor.cc index a42f5519..74dbca34 100644 --- a/src/app/editor/screen_editor.cc +++ b/src/app/editor/screen_editor.cc @@ -25,9 +25,9 @@ namespace yaze { namespace app { namespace editor { -ScreenEditor::ScreenEditor() { screen_canvas_.SetCanvasSize(ImVec2(512, 512)); } -void ScreenEditor::Update() { + +absl::Status ScreenEditor::Update() { TAB_BAR("##TabBar") TAB_ITEM("Dungeon Maps") if (rom()->is_loaded()) { @@ -39,6 +39,8 @@ void ScreenEditor::Update() { DrawTitleScreenEditor(); DrawNamingScreenEditor(); END_TAB_BAR() + + return absl::OkStatus(); } void ScreenEditor::DrawInventoryMenuEditor() { diff --git a/src/app/editor/screen_editor.h b/src/app/editor/screen_editor.h index 468aa4b7..de5ccc78 100644 --- a/src/app/editor/screen_editor.h +++ b/src/app/editor/screen_editor.h @@ -7,6 +7,7 @@ #include "absl/status/status.h" #include "app/core/constants.h" +#include "app/editor/utils/editor.h" #include "app/gfx/bitmap.h" #include "app/gfx/snes_palette.h" #include "app/gfx/snes_tile.h" @@ -36,10 +37,20 @@ namespace editor { * * The class inherits from the SharedRom class. */ -class ScreenEditor : public SharedRom { +class ScreenEditor : public SharedRom, public Editor { public: - ScreenEditor(); - void Update(); + ScreenEditor() { + screen_canvas_.SetCanvasSize(ImVec2(512, 512)); + type_ = EditorType::kScreen; + } + + absl::Status Update() override; + + absl::Status Cut() override { return absl::OkStatus(); } + absl::Status Copy() override { return absl::OkStatus(); } + absl::Status Paste() override { return absl::OkStatus(); } + absl::Status Undo() override { return absl::OkStatus(); } + absl::Status Redo() override { return absl::OkStatus(); } absl::Status SaveDungeonMaps(); diff --git a/src/app/editor/sprite_editor.h b/src/app/editor/sprite_editor.h index 110c38aa..961ebd46 100644 --- a/src/app/editor/sprite_editor.h +++ b/src/app/editor/sprite_editor.h @@ -2,6 +2,7 @@ #define YAZE_APP_EDITOR_SPRITE_EDITOR_H #include "absl/status/status.h" +#include "app/editor/utils/editor.h" #include "app/gui/canvas.h" #include "app/rom.h" @@ -29,14 +30,22 @@ constexpr ImGuiTableFlags kSpriteTableFlags = * This class provides functionality for updating the sprite editor, drawing the * editor table, drawing the sprite canvas, and drawing the current sheets. */ -class SpriteEditor : public SharedRom { +class SpriteEditor : public SharedRom, public Editor { public: + SpriteEditor() { type_ = EditorType::kSprite; } + /** * @brief Updates the sprite editor. * * @return An absl::Status indicating the success or failure of the update. */ - absl::Status Update(); + absl::Status Update() override; + + absl::Status Cut() override { return absl::OkStatus(); } + absl::Status Copy() override { return absl::OkStatus(); } + absl::Status Paste() override { return absl::OkStatus(); } + absl::Status Undo() override { return absl::OkStatus(); } + absl::Status Redo() override { return absl::OkStatus(); } private: /**