yaze 0.3.2
Link to the Past ROM Editor
 
Loading...
Searching...
No Matches
assembly_editor.h
Go to the documentation of this file.
1#ifndef YAZE_APP_EDITOR_ASSEMBLY_EDITOR_H
2#define YAZE_APP_EDITOR_ASSEMBLY_EDITOR_H
3
4#include <map>
5#include <string>
6#include <vector>
7
8#include "absl/container/flat_hash_map.h"
9#include "app/editor/editor.h"
11#include "app/gui/core/style.h"
13#include "rom/rom.h"
14#include "core/asar_wrapper.h"
15
16namespace yaze {
17namespace editor {
18
19struct FolderItem {
20 std::string name;
21 std::vector<FolderItem> subfolders;
22 std::vector<std::string> files;
23};
24
29class AssemblyEditor : public Editor {
30 public:
36 void ChangeActiveFile(const std::string_view& filename);
37
38 void Initialize() override;
39 absl::Status Load() override;
40 void Update(bool& is_loaded);
41 void InlineUpdate();
42
43 void UpdateCodeView();
44
45 absl::Status Cut() override;
46 absl::Status Copy() override;
47 absl::Status Paste() override;
48
49 absl::Status Undo() override;
50 absl::Status Redo() override;
51 absl::Status Find() override { return absl::UnimplementedError("Find"); }
52
53 absl::Status Update() override;
54
55 absl::Status Save() override;
56
57 void OpenFolder(const std::string& folder_path);
58
59 // Asar integration methods
60 absl::Status ValidateCurrentFile();
61 absl::Status ApplyPatchToRom();
62 void UpdateErrorMarkers(const core::AsarPatchResult& result);
63 void ClearErrorMarkers();
64
65 void SetRom(Rom* rom) { rom_ = rom; }
66 Rom* rom() const { return rom_; }
67
68 // Accessors for Asar state
69 bool is_asar_initialized() const { return asar_initialized_; }
70 const std::map<std::string, core::AsarSymbol>& symbols() const {
71 return symbols_;
72 }
74
75 private:
76 // Panel content drawing (called by EditorPanel instances)
77 void DrawCodeEditor();
78 void DrawFileBrowser();
79 void DrawSymbolsContent();
80 void DrawBuildOutput();
81 void DrawToolbarContent();
82
83 // Menu drawing
84 void DrawFileMenu();
85 void DrawEditMenu();
86 void DrawAssembleMenu();
87
88 // Helper drawing
89 void DrawCurrentFolder();
90 void DrawFileTabView();
91 void DrawToolset();
92 void DrawSymbolPanel();
93
94 bool file_is_loaded_ = false;
97
98 std::vector<std::string> files_;
99 std::vector<TextEditor> open_files_;
100 ImVector<int> active_files_;
101
102 std::string current_file_;
105
107
108 // Asar integration state
110 bool asar_initialized_ = false;
111 bool show_symbol_panel_ = false;
112 std::map<std::string, core::AsarSymbol> symbols_;
113 std::vector<std::string> last_errors_;
114 std::vector<std::string> last_warnings_;
115};
116
117} // namespace editor
118} // namespace yaze
119
120#endif
static const Palette & GetDarkPalette()
void SetShowWhitespaces(bool aValue)
void SetPalette(const Palette &aValue)
The Rom class is used to load, save, and modify Rom data. This is a generic SNES ROM container and do...
Definition rom.h:24
Modern C++ wrapper for Asar 65816 assembler integration.
Text editor for modifying assembly code.
absl::Status Find() override
core::AsarWrapper * asar_wrapper()
std::vector< std::string > last_warnings_
std::map< std::string, core::AsarSymbol > symbols_
absl::Status Save() override
std::vector< TextEditor > open_files_
absl::Status Load() override
void ChangeActiveFile(const std::string_view &filename)
absl::Status Copy() override
void UpdateErrorMarkers(const core::AsarPatchResult &result)
void OpenFolder(const std::string &folder_path)
absl::Status Paste() override
absl::Status Update() override
std::vector< std::string > files_
const std::map< std::string, core::AsarSymbol > & symbols() const
AssemblyEditor(Rom *rom=nullptr)
absl::Status Redo() override
absl::Status Undo() override
absl::Status Cut() override
std::vector< std::string > last_errors_
Interface for editor classes.
Definition editor.h:179
EditorType type_
Definition editor.h:236
Asar patch result information.
std::vector< FolderItem > subfolders
std::vector< std::string > files