diff --git a/src/app/editor/editor.cc b/src/app/editor/editor.cc index 78887710..f1480863 100644 --- a/src/app/editor/editor.cc +++ b/src/app/editor/editor.cc @@ -13,62 +13,14 @@ #include "app/rom.h" #include "gui/icons.h" #include "gui/input.h" +#include "gui/widgets.h" namespace yaze { namespace app { namespace editor { Editor::Editor() { - for (auto &k : app::core::constants::kKeywords) - language_65816_.mKeywords.emplace(k); - - for (auto &k : app::core::constants::kIdentifiers) { - TextEditor::Identifier id; - id.mDeclaration = "Built-in function"; - language_65816_.mIdentifiers.insert(std::make_pair(std::string(k), id)); - } - - language_65816_.mTokenRegexStrings.push_back( - std::make_pair( - "[ \\t]*#[ \\t]*[a-zA-Z_]+", TextEditor::PaletteIndex::Preprocessor)); - language_65816_.mTokenRegexStrings.push_back( - std::make_pair( - "L?\\\"(\\\\.|[^\\\"])*\\\"", TextEditor::PaletteIndex::String)); - language_65816_.mTokenRegexStrings.push_back( - std::make_pair( - "\\'\\\\?[^\\']\\'", TextEditor::PaletteIndex::CharLiteral)); - language_65816_.mTokenRegexStrings.push_back( - std::make_pair( - "[+-]?([0-9]+([.][0-9]*)?|[.][0-9]+)([eE][+-]?[0-9]+)?[fF]?", - TextEditor::PaletteIndex::Number)); - language_65816_.mTokenRegexStrings.push_back( - std::make_pair( - "[+-]?[0-9]+[Uu]?[lL]?[lL]?", TextEditor::PaletteIndex::Number)); - language_65816_.mTokenRegexStrings.push_back( - std::make_pair( - "0[0-7]+[Uu]?[lL]?[lL]?", TextEditor::PaletteIndex::Number)); - language_65816_.mTokenRegexStrings.push_back( - std::make_pair( - "0[xX][0-9a-fA-F]+[uU]?[lL]?[lL]?", - TextEditor::PaletteIndex::Number)); - language_65816_.mTokenRegexStrings.push_back( - std::make_pair( - "[a-zA-Z_][a-zA-Z0-9_]*", TextEditor::PaletteIndex::Identifier)); - language_65816_.mTokenRegexStrings.push_back( - std::make_pair( - "[\\[\\]\\{\\}\\!\\%\\^\\&\\*\\(\\)\\-\\+\\=\\~\\|\\<\\>\\?\\/" - "\\;\\,\\.]", - TextEditor::PaletteIndex::Punctuation)); - - language_65816_.mCommentStart = "/*"; - language_65816_.mCommentEnd = "*/"; - language_65816_.mSingleLineComment = ";"; - - language_65816_.mCaseSensitive = false; - language_65816_.mAutoIndentation = true; - - language_65816_.mName = "65816"; - asm_editor_.SetLanguageDefinition(language_65816_); + asm_editor_.SetLanguageDefinition(gui::widgets::GetAssemblyLanguageDef()); asm_editor_.SetPalette(TextEditor::GetDarkPalette()); current_set_.bits_per_pixel_ = 4; @@ -324,7 +276,6 @@ void Editor::DrawProjectEditor() { ImGui::TableNextColumn(); ImGui::Text("Title: %s", rom_.getTitle()); - ImGui::Text("Version: %d", rom_.getVersion()); ImGui::Text("ROM Size: %ld", rom_.getSize()); ImGui::Separator(); diff --git a/src/app/editor/editor.h b/src/app/editor/editor.h index c4125e7a..cb4c0aaa 100644 --- a/src/app/editor/editor.h +++ b/src/app/editor/editor.h @@ -50,8 +50,8 @@ class Editor { TextEditor asm_editor_; TextEditor::LanguageDefinition language_65816_; OverworldEditor overworld_editor_; - std::unordered_map image_cache_; std::shared_ptr sdl_renderer_; + std::unordered_map image_cache_; ImVec4 current_palette_[8]; @@ -63,7 +63,7 @@ class Editor { }; } // namespace editor -} // namespace gui +} // namespace app } // namespace yaze #endif // YAZE_APP_VIEW_EDITOR_H \ No newline at end of file diff --git a/src/gui/widgets.cc b/src/gui/widgets.cc new file mode 100644 index 00000000..fcd7a416 --- /dev/null +++ b/src/gui/widgets.cc @@ -0,0 +1,66 @@ +#include "widgets.h" + +#include "app/core/constants.h" + +namespace yaze { +namespace gui { +namespace widgets { + +TextEditor::LanguageDefinition GetAssemblyLanguageDef() { + TextEditor::LanguageDefinition language_65816; + for (auto &k : app::core::constants::kKeywords) + language_65816.mKeywords.emplace(k); + + for (auto &k : app::core::constants::kIdentifiers) { + TextEditor::Identifier id; + id.mDeclaration = "Built-in function"; + language_65816.mIdentifiers.insert(std::make_pair(std::string(k), id)); + } + + language_65816.mTokenRegexStrings.push_back( + std::make_pair( + "[ \\t]*#[ \\t]*[a-zA-Z_]+", TextEditor::PaletteIndex::Preprocessor)); + language_65816.mTokenRegexStrings.push_back( + std::make_pair( + "L?\\\"(\\\\.|[^\\\"])*\\\"", TextEditor::PaletteIndex::String)); + language_65816.mTokenRegexStrings.push_back( + std::make_pair( + "\\'\\\\?[^\\']\\'", TextEditor::PaletteIndex::CharLiteral)); + language_65816.mTokenRegexStrings.push_back( + std::make_pair( + "[+-]?([0-9]+([.][0-9]*)?|[.][0-9]+)([eE][+-]?[0-9]+)?[fF]?", + TextEditor::PaletteIndex::Number)); + language_65816.mTokenRegexStrings.push_back( + std::make_pair( + "[+-]?[0-9]+[Uu]?[lL]?[lL]?", TextEditor::PaletteIndex::Number)); + language_65816.mTokenRegexStrings.push_back( + std::make_pair( + "0[0-7]+[Uu]?[lL]?[lL]?", TextEditor::PaletteIndex::Number)); + language_65816.mTokenRegexStrings.push_back( + std::make_pair( + "0[xX][0-9a-fA-F]+[uU]?[lL]?[lL]?", + TextEditor::PaletteIndex::Number)); + language_65816.mTokenRegexStrings.push_back( + std::make_pair( + "[a-zA-Z_][a-zA-Z0-9_]*", TextEditor::PaletteIndex::Identifier)); + language_65816.mTokenRegexStrings.push_back( + std::make_pair( + "[\\[\\]\\{\\}\\!\\%\\^\\&\\*\\(\\)\\-\\+\\=\\~\\|\\<\\>\\?\\/" + "\\;\\,\\.]", + TextEditor::PaletteIndex::Punctuation)); + + language_65816.mCommentStart = "/*"; + language_65816.mCommentEnd = "*/"; + language_65816.mSingleLineComment = ";"; + + language_65816.mCaseSensitive = false; + language_65816.mAutoIndentation = true; + + language_65816.mName = "65816"; + + return language_65816; +} + +} // namespace widgets +} // namespace gui +} // namespace yaze diff --git a/src/gui/widgets.h b/src/gui/widgets.h new file mode 100644 index 00000000..305d84f7 --- /dev/null +++ b/src/gui/widgets.h @@ -0,0 +1,16 @@ +#ifndef YAZE_GUI_WIDGETS_H +#define YAZE_GUI_WIDGETS_H + +#include + +namespace yaze { +namespace gui { +namespace widgets { + +TextEditor::LanguageDefinition GetAssemblyLanguageDef(); + +} +} // namespace gui +} // namespace yaze + +#endif \ No newline at end of file