diff --git a/CodeLite/JSON.cpp b/CodeLite/JSON.cpp index 0a867e722c..6e3d1ba08b 100644 --- a/CodeLite/JSON.cpp +++ b/CodeLite/JSON.cpp @@ -376,10 +376,9 @@ void JSONItem::arrayAppend(const JSONItem& element) } } -JSONItem JSONItem::createArray(const wxString& name) +JSONItem JSONItem::createArray() { JSONItem arr(cJSON_CreateArray()); - arr.SetPropertyName(name); arr.setType(cJSON_Array); return arr; } @@ -501,11 +500,11 @@ JSONItem& JSONItem::addProperty(const wxString& name, long value) JSONItem& JSONItem::addProperty(const wxString& name, const wxArrayString& arr) { - JSONItem arrEle = JSONItem::createArray(name); + JSONItem arrEle = JSONItem::createArray(); for (const auto& s : arr) { arrEle.arrayAppend(s); } - append(arrEle); + addProperty(name, arrEle); return *this; } @@ -621,14 +620,14 @@ JSONItem& JSONItem::addProperty(const wxString& name, const wxStringMap_t& strin if (!m_json) return *this; - JSONItem arr = JSONItem::createArray(name); + JSONItem arr = JSONItem::createArray(); for (const auto& [key, value] : stringMap) { JSONItem obj = JSONItem::createObject(); obj.addProperty("key", key); obj.addProperty("value", value); arr.arrayAppend(obj); } - append(arr); + addProperty(name, arr); return *this; } #endif @@ -753,8 +752,8 @@ JSONItem& JSONItem::addProperty(const wxString& name, const wxFileName& filename JSONItem JSONItem::AddArray(const wxString& name) { - JSONItem json = createArray(name); - append(json); + JSONItem json = createArray(); + addProperty(name, json); return json; } diff --git a/CodeLite/JSON.h b/CodeLite/JSON.h index 4a9109f1f3..4f0efc12cc 100644 --- a/CodeLite/JSON.h +++ b/CodeLite/JSON.h @@ -171,10 +171,10 @@ class WXDLLIMPEXP_CL JSONItem */ static JSONItem createObject(const wxString& name = wxT("")); /** - * @brief create new named array and append it to this json element + * @brief create new array * @return the newly created array */ - static JSONItem createArray(const wxString& name = wxT("")); + static JSONItem createArray(); /** * @brief add array to this json and return a reference to the newly added array diff --git a/CodeLite/LSP/InitializeRequest.cpp b/CodeLite/LSP/InitializeRequest.cpp index 9523d94015..6b69648943 100644 --- a/CodeLite/LSP/InitializeRequest.cpp +++ b/CodeLite/LSP/InitializeRequest.cpp @@ -13,8 +13,7 @@ JSONItem LSP::InitializeRequest::ToJSON(const wxString& name) const JSONItem json = Request::ToJSON(name); // add the 'params' - JSONItem params = JSONItem::createObject("params"); - json.append(params); + JSONItem params = JSONItem::createObject(); params.addProperty("processId", GetProcessId()); if (GetRootUri().IsEmpty()) { JSON nullItem(JsonType::Null); @@ -79,6 +78,8 @@ JSONItem LSP::InitializeRequest::ToJSON(const wxString& name) const tokenModifiers.arrayAppend("documentation"); tokenModifiers.arrayAppend("defaultLibrary"); } + + json.addProperty("params", params); return json; } diff --git a/CodeLite/LSP/MessageWithParams.cpp b/CodeLite/LSP/MessageWithParams.cpp index 8741666a4f..1702593192 100644 --- a/CodeLite/LSP/MessageWithParams.cpp +++ b/CodeLite/LSP/MessageWithParams.cpp @@ -10,7 +10,7 @@ JSONItem LSP::MessageWithParams::ToJSON(const wxString& name) const JSONItem json = Message::ToJSON(name); json.addProperty("method", GetMethod()); if (m_params) { - json.append(m_params->ToJSON("params")); + json.addProperty("params", m_params->ToJSON("params")); } return json; } diff --git a/CodeLite/LSP/basic_types.cpp b/CodeLite/LSP/basic_types.cpp index 6641c0e304..aa155dc4ae 100644 --- a/CodeLite/LSP/basic_types.cpp +++ b/CodeLite/LSP/basic_types.cpp @@ -118,7 +118,7 @@ JSONItem TextDocumentContentChangeEvent::ToJSON(const wxString& name) const { JSONItem json = JSONItem::createObject(name); if(m_range.IsOk()) { - json.append(m_range.ToJSON("range")); + json.addProperty("range", m_range.ToJSON("range")); } json.addProperty("text", m_text); return json; @@ -133,8 +133,8 @@ void Range::FromJSON(const JSONItem& json) JSONItem Range::ToJSON(const wxString& name) const { JSONItem json = JSONItem::createObject(name); - json.append(m_start.ToJSON("start")); - json.append(m_end.ToJSON("end")); + json.addProperty("start", m_start.ToJSON("start")); + json.addProperty("end", m_end.ToJSON("end")); return json; } @@ -150,7 +150,7 @@ JSONItem Location::ToJSON(const wxString& name) const { JSONItem json = JSONItem::createObject(name); json.addProperty("uri", GetPathAsURI()); - json.append(m_range.ToJSON("range")); + json.addProperty("range", m_range.ToJSON("range")); json.addProperty("pattern", m_pattern); json.addProperty("name", m_name); return json; @@ -166,7 +166,7 @@ JSONItem TextEdit::ToJSON(const wxString& name) const { JSONItem json = JSONItem::createObject(name); json.addProperty("newText", m_newText); - json.append(m_range.ToJSON("range")); + json.addProperty("range", m_range.ToJSON("range")); return json; } @@ -209,11 +209,11 @@ JSONItem SignatureInformation::ToJSON(const wxString& name) const json.addProperty("label", m_label); json.addProperty("documentation", m_documentation); if(!m_parameters.empty()) { - JSONItem params = JSONItem::createArray("parameters"); - json.append(params); + JSONItem params = JSONItem::createArray(); for (const auto& paramInfo : m_parameters) { params.append(paramInfo.ToJSON("")); } + json.addProperty("parameters", params); } return json; } @@ -237,11 +237,11 @@ void SignatureHelp::FromJSON(const JSONItem& json) JSONItem SignatureHelp::ToJSON(const wxString& name) const { JSONItem json = JSONItem::createObject(name); - JSONItem signatures = JSONItem::createArray("signatures"); - json.append(signatures); + JSONItem signatures = JSONItem::createArray(); for(const SignatureInformation& si : m_signatures) { signatures.arrayAppend(si.ToJSON("")); } + json.addProperty("signatures", signatures); json.addProperty("activeSignature", m_activeSignature); json.addProperty("activeParameter", m_activeParameter); return json; @@ -270,8 +270,8 @@ void Hover::FromJSON(const JSONItem& json) JSONItem Hover::ToJSON(const wxString& name) const { JSONItem json = JSONItem::createObject(name); - json.append(m_contents.ToJSON("contents")); - json.append(m_range.ToJSON("range")); + json.addProperty("contents", m_contents.ToJSON("contents")); + json.addProperty("range", m_range.ToJSON("range")); return json; } @@ -288,7 +288,7 @@ void Diagnostic::FromJSON(const JSONItem& json) JSONItem Diagnostic::ToJSON(const wxString& name) const { JSONItem json = JSONItem::createObject(name); - json.append(m_range.ToJSON("range")); + json.addProperty("range", m_range.ToJSON("range")); json.addProperty("message", GetMessage()); json.addProperty("severity", (int)m_severity); return json; @@ -361,7 +361,7 @@ JSONItem SymbolInformation::ToJSON(const wxString& name) const JSONItem json = JSONItem::createObject(name); json.addProperty("kind", (int)kind); json.addProperty("containerName", containerName); - json.append(location.ToJSON("location")); + json.addProperty("location", location.ToJSON("location")); json.addProperty("name", this->name); return json; } diff --git a/CodeLite/LSP/json_rpc_params.cpp b/CodeLite/LSP/json_rpc_params.cpp index 70ba7664c6..5ad78d1d74 100644 --- a/CodeLite/LSP/json_rpc_params.cpp +++ b/CodeLite/LSP/json_rpc_params.cpp @@ -15,8 +15,8 @@ void TextDocumentPositionParams::FromJSON(const JSONItem& json) JSONItem TextDocumentPositionParams::ToJSON(const wxString& name) const { JSONItem json = JSONItem::createObject(name); - json.append(m_textDocument.ToJSON("textDocument")); - json.append(m_position.ToJSON("position")); + json.addProperty("textDocument", m_textDocument.ToJSON("textDocument")); + json.addProperty("position", m_position.ToJSON("position")); return json; } @@ -29,7 +29,7 @@ void SemanticTokensParams::FromJSON(const JSONItem& json) { m_textDocument.FromJ JSONItem SemanticTokensParams::ToJSON(const wxString& name) const { JSONItem json = JSONItem::createObject(name); - json.append(m_textDocument.ToJSON("textDocument")); + json.addProperty("textDocument", m_textDocument.ToJSON("textDocument")); return json; } @@ -42,7 +42,7 @@ void DidOpenTextDocumentParams::FromJSON(const JSONItem& json) { m_textDocument. JSONItem DidOpenTextDocumentParams::ToJSON(const wxString& name) const { JSONItem json = JSONItem::createObject(name); - json.append(m_textDocument.ToJSON("textDocument")); + json.addProperty("textDocument", m_textDocument.ToJSON("textDocument")); return json; } @@ -55,7 +55,7 @@ void DidCloseTextDocumentParams::FromJSON(const JSONItem& json) { m_textDocument JSONItem DidCloseTextDocumentParams::ToJSON(const wxString& name) const { JSONItem json = JSONItem::createObject(name); - json.append(m_textDocument.ToJSON("textDocument")); + json.addProperty("textDocument", m_textDocument.ToJSON("textDocument")); return json; } @@ -81,12 +81,12 @@ void DidChangeTextDocumentParams::FromJSON(const JSONItem& json) JSONItem DidChangeTextDocumentParams::ToJSON(const wxString& name) const { JSONItem json = JSONItem::createObject(name); - json.append(m_textDocument.ToJSON("textDocument")); - JSONItem arr = JSONItem::createArray("contentChanges"); + json.addProperty("textDocument", m_textDocument.ToJSON("textDocument")); + JSONItem arr = JSONItem::createArray(); for (const auto& contentChange : m_contentChanges) { arr.arrayAppend(contentChange.ToJSON("")); } - json.append(arr); + json.addProperty("contentChanges", arr); return json; } @@ -103,7 +103,7 @@ void DidSaveTextDocumentParams::FromJSON(const JSONItem& json) JSONItem DidSaveTextDocumentParams::ToJSON(const wxString& name) const { JSONItem json = JSONItem::createObject(name); - json.append(m_textDocument.ToJSON("textDocument")); + json.addProperty("textDocument", m_textDocument.ToJSON("textDocument")); json.addProperty("text", m_text); return json; } @@ -153,8 +153,8 @@ void CodeActionParams::FromJSON(const JSONItem& json) { wxUnusedVar(json); } JSONItem CodeActionParams::ToJSON(const wxString& name) const { JSONItem json = JSONItem::createObject(name); - json.append(m_textDocument.ToJSON("textDocument")); - json.append(m_range.ToJSON("range")); + json.addProperty("textDocument", m_textDocument.ToJSON("textDocument")); + json.addProperty("range", m_range.ToJSON("range")); // add empty context auto context = json.AddObject("context"); @@ -174,7 +174,7 @@ void DocumentSymbolParams::FromJSON(const JSONItem& json) { m_textDocument.FromJ JSONItem DocumentSymbolParams::ToJSON(const wxString& name) const { JSONItem json = JSONItem::createObject(name); - json.append(m_textDocument.ToJSON("textDocument")); + json.addProperty("textDocument", m_textDocument.ToJSON("textDocument")); return json; } diff --git a/CodeLite/cl_config.cpp b/CodeLite/cl_config.cpp index 77b7772dc8..292a800900 100644 --- a/CodeLite/cl_config.cpp +++ b/CodeLite/cl_config.cpp @@ -32,16 +32,16 @@ #include #include -#define ADD_OBJ_IF_NOT_EXISTS(parent, objName) \ - if (!parent.hasNamedObject(objName)) { \ - JSONItem obj = JSONItem::createObject(objName); \ - parent.append(obj); \ +#define ADD_OBJ_IF_NOT_EXISTS(parent, objName) \ + if (!(parent).hasNamedObject((objName))) { \ + JSONItem obj = JSONItem::createObject(); \ + (parent).addProperty((objName), obj); \ } -#define ADD_ARR_IF_NOT_EXISTS(parent, arrName) \ - if (!parent.hasNamedObject(arrName)) { \ - JSONItem arr = JSONItem::createArray(arrName); \ - parent.append(arr); \ +#define ADD_ARR_IF_NOT_EXISTS(parent, arrName) \ + if (!(parent).hasNamedObject((arrName))) { \ + JSONItem arr = JSONItem::createArray(); \ + (parent).addProperty((arrName), arr); \ } namespace @@ -115,10 +115,10 @@ void clConfig::SetOutputTabOrder(const wxArrayString& tabs, int selected) DoDeleteProperty("outputTabOrder"); // first time - JSONItem e = JSONItem::createObject("outputTabOrder"); + JSONItem e = JSONItem::createObject(); e.addProperty("tabs", tabs); e.addProperty("selected", selected); - m_root->toElement().append(e); + m_root->toElement().addProperty("outputTabOrder", e); m_root->save(m_filename); } @@ -138,10 +138,10 @@ void clConfig::SetWorkspaceTabOrder(const wxArrayString& tabs, int selected) DoDeleteProperty("workspaceTabOrder"); // first time - JSONItem e = JSONItem::createObject("workspaceTabOrder"); + JSONItem e = JSONItem::createObject(); e.addProperty("tabs", tabs); e.addProperty("selected", selected); - m_root->toElement().append(e); + m_root->toElement().addProperty("workspaceTabOrder", e); m_root->save(m_filename); } @@ -173,8 +173,7 @@ bool clConfig::Write(const wxString& name, std::function serialiser_ } else { // add it to the global configuration file DoDeleteProperty(name); - item.SetPropertyName(name); - m_root->toElement().append(item); + m_root->toElement().addProperty(name, item); return true; } } @@ -263,10 +262,7 @@ void clConfig::Save(const wxFileName& fn) JSONItem clConfig::GetGeneralSetting() { - if (!m_root->toElement().hasNamedObject("General")) { - JSONItem general = JSONItem::createObject("General"); - m_root->toElement().append(general); - } + ADD_OBJ_IF_NOT_EXISTS(m_root->toElement(), "General") return m_root->toElement().namedObject("General"); } @@ -342,10 +338,7 @@ int clConfig::GetAnnoyingDlgAnswer(const wxString& name, int defaultValue) void clConfig::SetAnnoyingDlgAnswer(const wxString& name, int value) { - if (!m_root->toElement().hasNamedObject("AnnoyingDialogsAnswers")) { - JSONItem element = JSONItem::createObject("AnnoyingDialogsAnswers"); - m_root->toElement().append(element); - } + ADD_OBJ_IF_NOT_EXISTS(m_root->toElement(), "AnnoyingDialogsAnswers") JSONItem element = m_root->toElement().namedObject("AnnoyingDialogsAnswers"); if (element.hasNamedObject(name)) { @@ -524,14 +517,13 @@ wxFont clConfig::Read(const wxString& name, const wxFont& defaultValue) void clConfig::Write(const wxString& name, const wxFont& value) { - JSONItem font = JSONItem::createObject(name); - font.addProperty("fontDesc", FontUtils::GetFontInfo(value)); - JSONItem general = GetGeneralSetting(); if (general.hasNamedObject(name)) { general.removeProperty(name); } - general.append(font); + JSONItem font = JSONItem::createObject(); + font.addProperty("fontDesc", FontUtils::GetFontInfo(value)); + general.addProperty(name, font); Save(); } diff --git a/DatabaseExplorer/db_explorer_settings.cpp b/DatabaseExplorer/db_explorer_settings.cpp index d8bd7d75b1..68665d5c11 100644 --- a/DatabaseExplorer/db_explorer_settings.cpp +++ b/DatabaseExplorer/db_explorer_settings.cpp @@ -105,11 +105,11 @@ JSONItem DbExplorerSettings::ToJSON() const element.addProperty("m_sqlHistory", m_sqlHistory); // add the connections array - JSONItem arrConnections = JSONItem::createArray("connections"); - element.append(arrConnections); + JSONItem arrConnections = JSONItem::createArray(); for (const auto& connection : m_connections) { arrConnections.arrayAppend(connection.ToJSON()); } + element.addProperty("connections", arrConnections); return element; } diff --git a/Docker/clDockerWorkspaceSettings.cpp b/Docker/clDockerWorkspaceSettings.cpp index 194d4e1a19..18416e6d8b 100644 --- a/Docker/clDockerWorkspaceSettings.cpp +++ b/Docker/clDockerWorkspaceSettings.cpp @@ -29,11 +29,11 @@ JSONItem clDockerWorkspaceSettings::ToJSON() const { JSONItem json = JSONItem::createObject(GetName()); json.addProperty("Version", DOCKER_VERSION); - JSONItem files = JSONItem::createArray("files"); - json.append(files); + JSONItem files = JSONItem::createArray(); for (const auto& p : m_files) { files.arrayAppend(p.second->ToJSON(m_workspaceFile.GetPath())); } + json.addProperty("files", files); return json; } diff --git a/MemCheck/memchecksettings.cpp b/MemCheck/memchecksettings.cpp index 71444fe4e1..93df7b7335 100644 --- a/MemCheck/memchecksettings.cpp +++ b/MemCheck/memchecksettings.cpp @@ -99,6 +99,6 @@ JSONItem MemCheckSettings::ToJSON() const element.addProperty("m_omitDuplications", m_omitDuplications); element.addProperty("m_omitSuppressed", m_omitSuppressed); - element.append(m_valgrindSettings.ToJSON()); + element.addProperty(CONFIG_ITEM_NAME_VALGRIND, m_valgrindSettings.ToJSON()); return element; } diff --git a/PHPLint/lintoptions.cpp b/PHPLint/lintoptions.cpp index 0ae65db102..0b1c949b8d 100644 --- a/PHPLint/lintoptions.cpp +++ b/PHPLint/lintoptions.cpp @@ -33,10 +33,10 @@ LintOptions::LintOptions() // Save it JSON newRoot(newConfigFile); - JSONItem e = JSONItem::createObject(GetName()); + JSONItem e = JSONItem::createObject(); e.addProperty("lintOnFileSave", m_lintOnFileSave); e.addProperty("lintOnFileLoad", m_lintOnFileLoad); - newRoot.toElement().append(e); + newRoot.toElement().addProperty(GetName(), e); newRoot.save(newConfigFile); } } diff --git a/Plugin/Keyboard/clKeyboardBindingConfig.cpp b/Plugin/Keyboard/clKeyboardBindingConfig.cpp index 57454b5b53..359250c5ad 100644 --- a/Plugin/Keyboard/clKeyboardBindingConfig.cpp +++ b/Plugin/Keyboard/clKeyboardBindingConfig.cpp @@ -63,8 +63,7 @@ clKeyboardBindingConfig& clKeyboardBindingConfig::Save() // set the version mainObj.addProperty("version", BINDING_VERSION); - JSONItem menuArr = JSONItem::createArray("menus"); - mainObj.append(menuArr); + JSONItem menuArr = JSONItem::createArray(); for (const auto& [_, menuItem] : m_bindings) { JSONItem binding = JSONItem::createObject(); binding.addProperty("resourceID", menuItem.resourceID); @@ -73,6 +72,7 @@ clKeyboardBindingConfig& clKeyboardBindingConfig::Save() binding.addProperty("accelerator", menuItem.accel.ToString()); menuArr.arrayAppend(binding); } + mainObj.addProperty("menus", menuArr); wxFileName fn(clStandardPaths::Get().GetUserDataDir(), "keybindings.conf"); fn.AppendDir("config"); root.save(fn); diff --git a/Plugin/LSP/LanguageServerConfig.cpp b/Plugin/LSP/LanguageServerConfig.cpp index 2d6d334075..5ba0f9efbb 100644 --- a/Plugin/LSP/LanguageServerConfig.cpp +++ b/Plugin/LSP/LanguageServerConfig.cpp @@ -51,11 +51,11 @@ JSONItem LanguageServerConfig::ToJSON() const { JSONItem json = JSONItem::createObject(GetName()); json.addProperty("flags", m_flags); - JSONItem servers = JSONItem::createArray("servers"); + JSONItem servers = JSONItem::createArray(); for (const auto& p : m_servers) { servers.append(p.second.ToJSON()); } - json.append(servers); + json.addProperty("servers", servers); return json; } diff --git a/Plugin/SFTPSessionInfo.cpp b/Plugin/SFTPSessionInfo.cpp index 2f509a805c..383db96367 100644 --- a/Plugin/SFTPSessionInfo.cpp +++ b/Plugin/SFTPSessionInfo.cpp @@ -80,7 +80,7 @@ void SFTPSessionInfoList::FromJSON(const JSONItem& json) JSONItem SFTPSessionInfoList::ToJSON() const { - JSONItem json = JSONItem::createArray(GetName()); + JSONItem json = JSONItem::createArray(); for (const auto& [_, sess] : m_sessions) { json.arrayAppend(sess.ToJSON()); } diff --git a/Plugin/lexer_configuration.cpp b/Plugin/lexer_configuration.cpp index 8ae3c18634..d4385d4894 100644 --- a/Plugin/lexer_configuration.cpp +++ b/Plugin/lexer_configuration.cpp @@ -447,19 +447,19 @@ JSONItem LexerConf::ToJSON(bool forExport) const json.addProperty("Extensions", GetFileSpec()); json.addProperty("SubstyleBase", GetSubStyleBase()); - JSONItem word_set = json.createArray("WordSet"); + JSONItem word_set = json.createArray(); word_set.arrayAppend(m_wordSets[WS_CLASS].to_json()); // 0 word_set.arrayAppend(m_wordSets[WS_FUNCTIONS].to_json()); // 1 word_set.arrayAppend(m_wordSets[WS_VARIABLES].to_json()); // 2 word_set.arrayAppend(m_wordSets[WS_OTHERS].to_json()); // 3 json.addProperty("WordSet", word_set); - JSONItem properties = JSONItem::createArray("Properties"); - json.append(properties); + JSONItem properties = JSONItem::createArray(); for (const auto& sp : GetLexerProperties()) { properties.arrayAppend(sp.ToJSON(forExport)); } + json.addProperty("Properties", properties); return json; } diff --git a/Plugin/phpoptions.cpp b/Plugin/phpoptions.cpp index 795b018037..c76d8244c3 100644 --- a/Plugin/phpoptions.cpp +++ b/Plugin/phpoptions.cpp @@ -44,11 +44,11 @@ PhpOptions::PhpOptions() } JSON newRoot(newConfigFile); - JSONItem e = JSONItem::createObject(GetName()); + JSONItem e = JSONItem::createObject(); e.addProperty("m_phpExe", m_phpExe); e.addProperty("m_includePaths", m_includePaths); e.addProperty("m_errorReporting", m_errorReporting); - newRoot.toElement().append(e); + newRoot.toElement().addProperty(GetName(), e); newRoot.save(newConfigFile); } } diff --git a/Plugin/sftp_settings.cpp b/Plugin/sftp_settings.cpp index 8f3ac20ba7..c017f3126c 100644 --- a/Plugin/sftp_settings.cpp +++ b/Plugin/sftp_settings.cpp @@ -62,11 +62,11 @@ JSONItem SFTPSettings::ToJSON() const { JSONItem element = JSONItem::createObject(GetName()); element.addProperty("sshClient", m_sshClient); - JSONItem arrAccounts = JSONItem::createArray("accounts"); - element.append(arrAccounts); + JSONItem arrAccounts = JSONItem::createArray(); for(size_t i = 0; i < m_accounts.size(); ++i) { arrAccounts.append(m_accounts.at(i).ToJSON()); } + element.addProperty("accounts", arrAccounts); return element; } diff --git a/codelitephp/PHPParser/PHPUserWorkspace.cpp b/codelitephp/PHPParser/PHPUserWorkspace.cpp index 6c47739722..5b847f4ecd 100644 --- a/codelitephp/PHPParser/PHPUserWorkspace.cpp +++ b/codelitephp/PHPParser/PHPUserWorkspace.cpp @@ -41,12 +41,12 @@ PHPUserWorkspace& PHPUserWorkspace::Save() // Serialize the breakpoints JSON root(JsonType::Object); JSONItem json = root.toElement(); - JSONItem bpArr = JSONItem::createArray("m_breakpoints"); - json.append(bpArr); + JSONItem bpArr = JSONItem::createArray(); for (const auto& breakpoint : m_breakpoints) { bpArr.arrayAppend(breakpoint.ToJSON()); } + json.addProperty("m_breakpoints", bpArr); root.save(GetFileName()); return *this; } diff --git a/codelitephp/PHPParser/php_workspace.cpp b/codelitephp/PHPParser/php_workspace.cpp index 5960ce5b8f..c8531254f0 100644 --- a/codelitephp/PHPParser/php_workspace.cpp +++ b/codelitephp/PHPParser/php_workspace.cpp @@ -342,22 +342,22 @@ void PHPWorkspace::FromJSON(const JSONItem& e) JSONItem PHPWorkspace::ToJSON(JSONItem& e) const { - JSONItem metadata = JSONItem::createObject("metadata"); - e.append(metadata); + JSONItem metadata = JSONItem::createObject(); metadata.addProperty("version", PHP_WORKSPACE_VERSION); metadata.addProperty("ide", PHP_WORKSPACE_IDE); metadata.addProperty("type", wxString("php")); + e.addProperty("metadata", metadata); // Store the list of files - JSONItem projectsArr = JSONItem::createArray("projects"); - e.append(projectsArr); + JSONItem projectsArr = JSONItem::createArray(); for (const auto& [_, project] : m_projects) { wxFileName projectFile = project->GetFilename(); projectFile.MakeRelativeTo(m_workspaceFile.GetPath()); projectsArr.arrayAppend(projectFile.GetFullPath(wxPATH_UNIX)); } + e.addProperty("projects", projectsArr); return e; } diff --git a/git/gitentry.cpp b/git/gitentry.cpp index cade684ee4..f2fdb06b34 100644 --- a/git/gitentry.cpp +++ b/git/gitentry.cpp @@ -167,17 +167,17 @@ JSONItem GitEntry::ToJSON() const json.addProperty("m_gitBlameDlgVSashPos", m_gitBlameDlgVSashPos); // Add the git commands array - JSONItem arrCommands = JSONItem::createArray("Commands"); - json.append(arrCommands); + JSONItem arrCommands = JSONItem::createArray(); for (const auto& p : m_commandsMap) { p.second.ToJSON(arrCommands); } + json.addProperty("Commands", arrCommands); // and the workspace info - JSONItem arrWorkspaces = JSONItem::createArray("Workspaces"); - json.append(arrWorkspaces); + JSONItem arrWorkspaces = JSONItem::createArray(); for (const auto& p : m_workspacesMap) { p.second.ToJSON(arrWorkspaces); } + json.addProperty("Workspaces", arrWorkspaces); json.addProperty("DiffTool", m_difftool); return json; } @@ -411,15 +411,14 @@ void GitCommandsEntries::ToJSON(JSONItem& arr) const obj.addProperty("m_commandName", m_commandName); obj.addProperty("m_lastUsed", m_lastUsed); - JSONItem commandsArr = JSONItem::createArray("m_commands"); - obj.append(commandsArr); - + JSONItem commandsArr = JSONItem::createArray(); for (const auto& command : m_commands) { JSONItem e = JSONItem::createObject(); e.addProperty("label", command.label); e.addProperty("command", command.command); commandsArr.arrayAppend(e); } + obj.addProperty("m_commands", commandsArr); arr.arrayAppend(obj); } diff --git a/wxcrafter/aui/aui_pane_info.cpp b/wxcrafter/aui/aui_pane_info.cpp index 2fdb9c7a2f..21519c07d1 100644 --- a/wxcrafter/aui/aui_pane_info.cpp +++ b/wxcrafter/aui/aui_pane_info.cpp @@ -139,7 +139,7 @@ void AuiPaneInfo::FromJSON(const JSONItem& json) JSONItem AuiPaneInfo::ToJSON() const { - JSONItem element = JSONItem::createObject("wxAuiPaneInfo"); + JSONItem element = JSONItem::createObject(); element.addProperty(wxT("m_name"), m_name); element.addProperty(wxT("m_caption"), m_caption); element.addProperty(wxT("m_dockDirection"), m_dockDirection); diff --git a/wxcrafter/src/wxc_project_metadata.cpp b/wxcrafter/src/wxc_project_metadata.cpp index 5772310683..6d10a589d6 100644 --- a/wxcrafter/src/wxc_project_metadata.cpp +++ b/wxcrafter/src/wxc_project_metadata.cpp @@ -49,7 +49,7 @@ void wxcProjectMetadata::FromJSON(const JSONItem& json) JSONItem wxcProjectMetadata::ToJSON() { - JSONItem metadata = JSONItem::createObject("metadata"); + JSONItem metadata = JSONItem::createObject(); UpdatePaths(); metadata.addProperty("m_generatedFilesDir", m_generatedFilesDir); @@ -69,7 +69,7 @@ JSONItem wxcProjectMetadata::ToJSON() void wxcProjectMetadata::AppendCustomControlsJSON(const wxArrayString& controls, JSONItem& element) const { JSONItem customControls = wxcSettings::Get().GetCustomControlsAsJSON(controls); - element.append(customControls); + element.addProperty("m_templateClasses", customControls); } wxString wxcProjectMetadata::GetCppFileName() const @@ -195,18 +195,16 @@ wxString wxcProjectMetadata::GetBitmapsFile() const } void wxcProjectMetadata::Serialize(const wxcWidget::List_t& topLevelsList, const wxFileName& filename) { - wxcProjectMetadata p; - p.GenerateBitmapFunctionName(); - - JSON root(JsonType::Object); - root.toElement().append(p.ToJSON()); - - // The windows - JSONItem windows = JSONItem::createArray("windows"); - root.toElement().append(windows); - wxFFile fp(filename.GetFullPath(), "w+b"); if (fp.IsOpened()) { + wxcProjectMetadata p; + p.GenerateBitmapFunctionName(); + + JSON root(JsonType::Object); + root.toElement().addProperty("metadata", p.ToJSON()); + + // The windows + JSONItem windows = JSONItem::createArray(); for (auto widget : topLevelsList) { JSONItem obj = JSONItem::createObject(); @@ -214,6 +212,7 @@ void wxcProjectMetadata::Serialize(const wxcWidget::List_t& topLevelsList, const widget->Serialize(obj); windows.arrayAppend(obj); } + root.toElement().addProperty("windows", windows); fp.Write(root.toElement().format(), wxConvUTF8); fp.Close(); diff --git a/wxcrafter/src/wxc_settings.cpp b/wxcrafter/src/wxc_settings.cpp index 7f88d21b98..b31bf34cb8 100644 --- a/wxcrafter/src/wxc_settings.cpp +++ b/wxcrafter/src/wxc_settings.cpp @@ -52,12 +52,12 @@ void wxcSettings::Save() root.toElement().addProperty("m_treeviewSashPos", m_treeviewSashPos); root.toElement().addProperty("recentFiles", m_history); - JSONItem arr = JSONItem::createArray("m_templateClasses"); - root.toElement().append(arr); + JSONItem arr = JSONItem::createArray(); for (const auto& p : m_templateClasses) { arr.append(p.second.ToJSON()); } + root.toElement().addProperty("m_templateClasses", arr); root.save(fn); } @@ -120,7 +120,7 @@ void wxcSettings::MergeCustomControl(const JSONItem& arr) JSONItem wxcSettings::GetCustomControlsAsJSON(const wxArrayString& controls) const { - JSONItem arr = JSONItem::createArray("m_templateClasses"); + JSONItem arr = JSONItem::createArray(); for (const auto& p : m_templateClasses) { if (controls.Index(p.first) != wxNOT_FOUND) { arr.append(p.second.ToJSON()); diff --git a/wxcrafter/src/wxc_widget.cpp b/wxcrafter/src/wxc_widget.cpp index eea217c859..3f4969663d 100644 --- a/wxcrafter/src/wxc_widget.cpp +++ b/wxcrafter/src/wxc_widget.cpp @@ -622,41 +622,41 @@ void wxcWidget::Serialize(JSONItem& json) const json.addProperty("gbSpan", m_gbSpan); json.addProperty("gbPosition", m_gbPos); - JSONItem styles = JSONItem::createArray("m_styles"); + JSONItem styles = JSONItem::createArray(); for (const auto& [_, styleInfo] : m_styles) { if (styleInfo.is_set) { styles.arrayAppend(styleInfo.style_name); } } - json.append(styles); + json.addProperty("m_styles", styles); if (IsAuiPane()) { - json.append(m_auiPaneInfo.ToJSON()); + json.addProperty("wxAuiPaneInfo", m_auiPaneInfo.ToJSON()); } - JSONItem sizerFlags = JSONItem::createArray("m_sizerFlags"); + JSONItem sizerFlags = JSONItem::createArray(); for (const auto& [_, styleInfo] : m_sizerFlags) { if (styleInfo.is_set) { sizerFlags.arrayAppend(styleInfo.style_name); } } - json.append(sizerFlags); + json.addProperty("m_sizerFlags", sizerFlags); - JSONItem properties = JSONItem::createArray("m_properties"); + JSONItem properties = JSONItem::createArray(); for (const auto& [_, property] : m_properties) { if (property) { properties.arrayAppend(property->Serialize()); } } - json.append(properties); + json.addProperty("m_properties", properties); - JSONItem events = JSONItem::createArray("m_events"); + JSONItem events = JSONItem::createArray(); for (const auto& p : m_connectedEvents) { events.arrayAppend(p.second.ToJSON()); } - json.append(events); + json.addProperty("m_events", events); - JSONItem children = JSONItem::createArray("m_children"); + JSONItem children = JSONItem::createArray(); List_t::const_iterator child_iter = m_children.begin(); for (; child_iter != m_children.end(); child_iter++) { JSONItem child = JSONItem::createObject(); @@ -664,7 +664,7 @@ void wxcWidget::Serialize(JSONItem& json) const children.arrayAppend(child); } - json.append(children); + json.addProperty("m_children", children); } void wxcWidget::UnSerialize(const JSONItem& json) diff --git a/wxcrafter/src/wxguicraft_main_view.cpp b/wxcrafter/src/wxguicraft_main_view.cpp index 6410f88780..8b41323b8d 100644 --- a/wxcrafter/src/wxguicraft_main_view.cpp +++ b/wxcrafter/src/wxguicraft_main_view.cpp @@ -1027,7 +1027,7 @@ wxString GUICraftMainPanel::GetStyleFromGuiID(int guiId) const JSONItem GUICraftMainPanel::ToJSON(const wxTreeItemId& fromItem) { - JSONItem json = JSONItem::createArray("windows"); + JSONItem json = JSONItem::createArray(); wxTreeItemIdValue cookie; wxTreeItemId rootItem = fromItem.IsOk() ? fromItem : m_treeControls->GetRootItem(); wxTreeItemId child = m_treeControls->GetFirstChild(rootItem, cookie); @@ -1075,11 +1075,11 @@ void GUICraftMainPanel::OnSaveProject(wxCommandEvent& e) JSONItem metadata = wxcProjectMetadata::Get().ToJSON(); wxcProjectMetadata::Get().AppendCustomControlsJSON(customControls, metadata); - root.toElement().append(metadata); + root.toElement().addProperty("metadata", metadata); wxFFile fp(wxcProjectMetadata::Get().GetProjectFile(), "w+b"); if (fp.IsOpened()) { - root.toElement().append(ToJSON()); + root.toElement().addProperty("windows", ToJSON()); fp.Write(root.toElement().format(), wxConvUTF8); fp.Close(); @@ -2577,8 +2577,8 @@ State::Ptr_t GUICraftMainPanel::CurrentState() JSONItem metadata = wxcProjectMetadata::Get().ToJSON(); wxcProjectMetadata::Get().AppendCustomControlsJSON(GetCustomControlsUsed(), metadata); - root.toElement().append(metadata); - root.toElement().append(ToJSON(wxTreeItemId())); + root.toElement().addProperty("metadata", metadata); + root.toElement().addProperty("windows", ToJSON(wxTreeItemId())); State::Ptr_t state(new State); state->project_json = root.toElement().format();