/*----------------------------------------------------------------------------- * _imgui_utility.cpp *-----------------------------------------------------------------------------*/ #include "core/stdafx.h" #include "engine/sys_utils.h" #include "thirdparty/imgui/include/imgui_utility.h" int Stricmp(const char* s1, const char* s2) { int d; while ((d = toupper(*s2) - toupper(*s1)) == 0 && *s1) { s1++; s2++; } return d; } int Strnicmp(const char* s1, const char* s2, int n) { int d = 0; while (n > 0 && (d = toupper(*s2) - toupper(*s1)) == 0 && *s1) { s1++; s2++; n--; } return d; } char* Strdup(const char* s) { IM_ASSERT(s); size_t len = strlen(s) + 1; void* buf = malloc(len); IM_ASSERT(buf); if (buf != NULL) { return (char*)memcpy(buf, (const void*)s, len); } return NULL; } void Strtrim(char* s) { char* str_end = s + strlen(s); while (str_end > s && str_end[-1] == ' ') str_end--; *str_end = 0; } void ImGuiConfig::Load() { std::filesystem::path fsPath = std::filesystem::current_path() /= "platform\\imgui.json"; // Get current path + imgui.json DevMsg(eDLL_T::MS, "Loading ImGui config file '%s'\n", fsPath.string().c_str()); nlohmann::json jsIn; try { std::ifstream configFile(fsPath, std::ios::binary); // Parse config file. configFile >> jsIn; configFile.close(); if (!jsIn.is_null()) { if (!jsIn["config"].is_null()) { // IConsole IConsole_Config.m_nBind0 = jsIn["config"]["IConsole"]["bind0"].get(); IConsole_Config.m_nBind1 = jsIn["config"]["IConsole"]["bind1"].get(); // IBrowser IBrowser_Config.m_nBind0 = jsIn["config"]["IBrowser"]["bind0"].get(); IBrowser_Config.m_nBind1 = jsIn["config"]["IBrowser"]["bind1"].get(); } } } catch (const std::exception& ex) { DevMsg(eDLL_T::MS, "ImGui config file '%s' not found\n Changing the settings in the console or server browser options re-create's it\n Exception: '%s'\n", fsPath.string().c_str(), ex.what()); return; } } void ImGuiConfig::Save() { nlohmann::json jsOut; // IConsole jsOut["config"]["IConsole"]["bind0"] = IConsole_Config.m_nBind0; jsOut["config"]["IConsole"]["bind1"] = IConsole_Config.m_nBind1; // IBrowser jsOut["config"]["IBrowser"]["bind0"] = IBrowser_Config.m_nBind0; jsOut["config"]["IBrowser"]["bind1"] = IBrowser_Config.m_nBind1; std::filesystem::path fsPath = std::filesystem::current_path() /= "platform\\imgui.json"; // Get current path + imgui.json DevMsg(eDLL_T::MS, "Saving ImGui config file '%s'\n", fsPath.string().c_str()); std::ofstream outFile(fsPath, std::ios::out | std::ios::trunc); // Write config file. outFile << jsOut.dump(4); // Dump it into config file. outFile.close(); // Close the file handle. } ImGuiConfig* g_pImGuiConfig = new ImGuiConfig();