From a1a48e90577e29f2e41a8e780d2455987a30580f Mon Sep 17 00:00:00 2001 From: scawful Date: Sat, 12 Apr 2025 13:23:46 -0400 Subject: [PATCH] message editor housekeeping --- src/app/editor/graphics/tile16_editor.h | 2 +- src/app/editor/message/message_data.cc | 4 --- src/app/editor/message/message_data.h | 1 - src/app/editor/message/message_editor.cc | 31 +++++++++++++++++------- src/app/editor/message/message_editor.h | 16 ++++++------ 5 files changed, 32 insertions(+), 22 deletions(-) diff --git a/src/app/editor/graphics/tile16_editor.h b/src/app/editor/graphics/tile16_editor.h index 0fae1d8a..ca46894f 100644 --- a/src/app/editor/graphics/tile16_editor.h +++ b/src/app/editor/graphics/tile16_editor.h @@ -110,7 +110,7 @@ class Tile16Editor : public gfx::GfxContext, public SharedRom { absl::Status status_; - Rom *transfer_rom_; + Rom *transfer_rom_ = nullptr; zelda3::Overworld transfer_overworld_{transfer_rom_}; std::array transfer_gfx_; absl::Status transfer_status_; diff --git a/src/app/editor/message/message_data.cc b/src/app/editor/message/message_data.cc index 10370952..9ca482a6 100644 --- a/src/app/editor/message/message_data.cc +++ b/src/app/editor/message/message_data.cc @@ -275,10 +275,6 @@ std::vector ParseMessageData( std::vector parsed_messages; for (auto &message : message_data) { - std::cout << "Message #" << message.ID << " at address " - << util::HexLong(message.Address) << std::endl; - std::cout << " " << message.RawString << std::endl; - std::string parsed_message = ""; for (const uint8_t &byte : message.Data) { if (CharEncoder.contains(byte)) { diff --git a/src/app/editor/message/message_data.h b/src/app/editor/message/message_data.h index bb492830..2be58bd7 100644 --- a/src/app/editor/message/message_data.h +++ b/src/app/editor/message/message_data.h @@ -5,7 +5,6 @@ #include #include -#include "absl/strings/str_cat.h" #include "absl/strings/str_format.h" #include "absl/strings/str_replace.h" #include "app/rom.h" diff --git a/src/app/editor/message/message_editor.cc b/src/app/editor/message/message_editor.cc index 1f1926a4..de04e75e 100644 --- a/src/app/editor/message/message_editor.cc +++ b/src/app/editor/message/message_editor.cc @@ -127,7 +127,7 @@ void MessageEditor::DrawMessageList() { TableHeadersRow(); - for (const auto &message : list_of_texts_) { + for (const auto& message : list_of_texts_) { TableNextColumn(); if (Button(util::HexWord(message.ID).c_str())) { current_message_ = message; @@ -190,7 +190,7 @@ void MessageEditor::DrawCurrentMessage() { void MessageEditor::DrawTextCommands() { if (BeginChild("##TextCommands", ImVec2(0, 0), true, ImGuiWindowFlags_AlwaysVerticalScrollbar)) { - for (const auto &text_element : TextCommands) { + for (const auto& text_element : TextCommands) { if (Button(text_element.GenericToken.c_str())) { // Insert the command into the message text box. message_text_box_.text.append(text_element.GenericToken); @@ -204,14 +204,16 @@ void MessageEditor::DrawTextCommands() { } void MessageEditor::DrawDictionary() { - if (ImGui::BeginChild("##DictionaryChild", ImVec2(0, 0), true, + if (all_dictionaries_.empty()) { + return; + } + if (ImGui::BeginChild("##DictionaryChild", ImVec2(200, 0), true, ImGuiWindowFlags_AlwaysVerticalScrollbar)) { if (BeginTable("##Dictionary", 2, kMessageTableFlags)) { - TableHeadersRow(); TableSetupColumn("ID"); TableSetupColumn("Contents"); - - for (const auto &dictionary : all_dictionaries_) { + TableHeadersRow(); + for (const auto& dictionary : all_dictionaries_) { TableNextColumn(); Text("%s", util::HexWord(dictionary.ID).c_str()); TableNextColumn(); @@ -451,8 +453,8 @@ void MessageEditor::DrawCharacterToPreview(char c) { DrawCharacterToPreview(FindMatchingCharacter(c)); } -void MessageEditor::DrawCharacterToPreview(const std::vector &text) { - for (const uint8_t &value : text) { +void MessageEditor::DrawCharacterToPreview(const std::vector& text) { + for (const uint8_t& value : text) { if (skip_next) { skip_next = false; continue; @@ -570,7 +572,7 @@ absl::Status MessageEditor::Save() { int pos = kTextData; bool in_second_bank = false; - for (const auto &message : list_of_texts_) { + for (const auto& message : list_of_texts_) { for (const auto value : message.Data) { RETURN_IF_ERROR(rom()->WriteByte(pos, value)); @@ -636,5 +638,16 @@ void MessageEditor::SelectAll() { } } +absl::Status MessageEditor::Redo() { + // Implementation of redo functionality + // This would require tracking a redo stack in the TextBox struct + return absl::OkStatus(); +} + +absl::Status MessageEditor::Find() { + return absl::OkStatus(); +} + + } // namespace editor } // namespace yaze diff --git a/src/app/editor/message/message_editor.h b/src/app/editor/message/message_editor.h index 624fb183..a16979ec 100644 --- a/src/app/editor/message/message_editor.h +++ b/src/app/editor/message/message_editor.h @@ -32,7 +32,9 @@ constexpr uint8_t kMessageBankChangeId = 0x80; class MessageEditor : public Editor, public SharedRom { public: - MessageEditor() { type_ = EditorType::kMessage; } + explicit MessageEditor(Rom* rom = nullptr) : rom_(rom) { + type_ = EditorType::kMessage; + } void Initialize() override; absl::Status Load() override; @@ -49,12 +51,8 @@ class MessageEditor : public Editor, public SharedRom { absl::Status Copy() override; absl::Status Paste() override; absl::Status Undo() override; - absl::Status Redo() override { - return absl::UnimplementedError("Redo not implemented"); - } - absl::Status Find() override { - return absl::UnimplementedError("Find not implemented"); - } + absl::Status Redo() override; + absl::Status Find() override; absl::Status Save() override; void Delete(); void SelectAll(); @@ -68,7 +66,11 @@ class MessageEditor : public Editor, public SharedRom { void DrawMessagePreview(); std::string DisplayTextOverflowError(int pos, bool bank); + void set_rom(Rom* rom) { rom_ = rom; } + Rom* rom() const { return rom_; } + private: + Rom* rom_; bool skip_next = false; bool data_loaded_ = false;