diff --git a/src/settings/Config.cpp b/src/settings/Config.cpp index 671ffd2..a9cde4f 100644 --- a/src/settings/Config.cpp +++ b/src/settings/Config.cpp @@ -4,12 +4,12 @@ #include "Config.h" -TyroConfig::TyroConfig() +TyroConfig::TyroConfig() {} +TyroConfig::~TyroConfig() {} + +void TyroConfig::LoadJson(const char json[]) { - // Defines languages_json - // Generated on compile from languages.json - #include "../../config/languages_json.h" - string json_string(languages_json); + string json_string(json); if ( ! reader.parse(json_string, default_root)) { @@ -17,22 +17,7 @@ TyroConfig::TyroConfig() } } -TyroConfig::~TyroConfig() -{ - -} - JsonValue TyroConfig::GetRoot() { return default_root; -} - -JsonValue TyroConfig::GetLang(string name) -{ - return default_root.get(name, JsonValue()); -} - -JsonValue TyroConfig::GetLangKeywords(string name) -{ - return this->GetLang(name).get("keywords", JsonValue()); } \ No newline at end of file diff --git a/src/settings/Config.h b/src/settings/Config.h index d1dc881..33bdc63 100644 --- a/src/settings/Config.h +++ b/src/settings/Config.h @@ -13,8 +13,7 @@ public: TyroConfig(); ~TyroConfig(); JsonValue GetRoot(); - JsonValue GetLang(string name); - JsonValue GetLangKeywords(string name); + void LoadJson(const char json[]); private: JsonValue default_root; JsonReader reader; diff --git a/src/widgets/EditPane.cpp b/src/widgets/EditPane.cpp index bc9f99d..0f9e8f1 100644 --- a/src/widgets/EditPane.cpp +++ b/src/widgets/EditPane.cpp @@ -5,7 +5,13 @@ EditPane::EditPane( const wxSize &size, long style ) : wxStyledTextCtrl (parent, id, pos, size, style) { - config = new TyroConfig(); + #include "../../config/languages_json.h" + lang_config = new TyroConfig(); + lang_config->LoadJson(languages_json); + + #include "../../config/themes_json.h" + theme_config = new TyroConfig(); + theme_config->LoadJson(themes_json); lexerMap["batch"] = wxSTC_LEX_BATCH; lexerMap["caml"] = wxSTC_LEX_CAML; @@ -27,7 +33,8 @@ EditPane::EditPane( EditPane::~EditPane() { - delete config; + delete lang_config; + delete theme_config; } /** @@ -78,7 +85,7 @@ void EditPane::Highlight(wxString filePath) this->SetProperty("font.quality", "3"); // LCD Optimized // Get the list of keywords for the current language - JsonValue keywords_array = config->GetLangKeywords(lang); + JsonValue keywords_array = this->GetKeywordList(lang); // Make sure every background is the same color! for(int i = 0; i <= wxSTC_STYLE_MAX; i++) @@ -196,7 +203,7 @@ bool EditPane::Load(wxString filePath) */ string EditPane::GetLangByFile() { - JsonValue langList = config->GetRoot(); + JsonValue langList = lang_config->GetRoot(); JsonValue::iterator it; wxString curr_file = this->fileName.GetFullName(); @@ -344,3 +351,10 @@ void EditPane::OnMarginClick(wxStyledTextEvent& event) } } } + +JsonValue EditPane::GetKeywordList(string lang) +{ + return lang_config->GetRoot() + .get(lang, JsonValue()) + .get("keywords", JsonValue()); +} diff --git a/src/widgets/EditPane.h b/src/widgets/EditPane.h index a318dae..658f50f 100644 --- a/src/widgets/EditPane.h +++ b/src/widgets/EditPane.h @@ -31,7 +31,8 @@ public: private: StringConstMap lexerMap; StringConstMap::iterator lexerMapIt; - TyroConfig *config; + TyroConfig *lang_config; + TyroConfig *theme_config; enum { MARGIN_FOLD, @@ -41,6 +42,7 @@ private: bool FileWritable(); void BindEvents(); void OnMarginClick(wxStyledTextEvent &event); + JsonValue GetKeywordList(string lang); }; #endif // TYRODOC_FRAME_H