#include #include #include "../misc.h" #include "../config.h" #include "settings.h" static void try_write_config(const Config& config) { try { write_config(config); } catch (const std::exception& e) { log(std::string("Failed to write config: ") + e.what()); } } void settings_window(Config& __restrict active_config, Config& __restrict inactive_config, bool* p_open) { if (!ImGui::BeginWithCloseShortcut("Settings", p_open)) { ImGui::End(); return; } ImGui::TextUnformatted("Logcat command only takes effect when logcat is not running"); ImGui::InputTextWithHint("Logcat command", default_logcat_command, &inactive_config.logcat_command); ImGui::TextWrapped("Font sizes only take effect when LogMeow is restarted (using non-integer values may cause spacing issues)"); #ifdef USE_FONTCONFIG ImGui::InputFloat("Normal font size", &inactive_config.normal_font_size, 0.5f, 1.0f, "%.3f"); #endif ImGui::InputFloat("Monospace font size", &inactive_config.monospace_font_size, 0.5f, 1.0f, "%.3f"); ImGui::Separator(); ImVec2 button_size(4 * ImGui::GetFontSize(), 0); if (ImGui::Button("OK", button_size)) { active_config.logcat_command = std::move(inactive_config.logcat_command); active_config.normal_font_size = inactive_config.normal_font_size; active_config.monospace_font_size = inactive_config.monospace_font_size; try_write_config(active_config); *p_open = false; } ImGui::SameLine(); if (ImGui::Button("Cancel", button_size)) { *p_open = false; } ImGui::SameLine(); if (ImGui::Button("Apply", button_size)) { active_config.logcat_command = inactive_config.logcat_command; active_config.normal_font_size = inactive_config.normal_font_size; active_config.monospace_font_size = inactive_config.monospace_font_size; try_write_config(active_config); } ImGui::End(); }