Set custom ImGui ini file path
Path is set to `~/.config/kte/imgui.ini`, enable keyboard and gamepad navigation, and ensure configuration directory creation.
This commit is contained in:
@@ -222,6 +222,17 @@ if (BUILD_TESTS)
|
|||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
if (${BUILD_GUI})
|
if (${BUILD_GUI})
|
||||||
|
# ImGui::CreateContext();
|
||||||
|
# ImGuiIO& io = ImGui::GetIO();
|
||||||
|
|
||||||
|
# // Set custom ini filename path to ~/.config/kte/imgui.ini
|
||||||
|
# if (const char* home = std::getenv("HOME")) {
|
||||||
|
# static std::string ini_path = std::string(home) + "/.config/kte/imgui.ini";
|
||||||
|
# io.IniFilename = ini_path.c_str();
|
||||||
|
# }
|
||||||
|
|
||||||
|
# io.ConfigFlags |= ImGuiConfigFlags_NavEnableKeyboard; // Enable Keyboard Controls
|
||||||
|
# io.ConfigFlags |= ImGuiConfigFlags_NavEnableGamepad; // Enable Gamepad Controls
|
||||||
target_sources(kte PRIVATE
|
target_sources(kte PRIVATE
|
||||||
Font.h
|
Font.h
|
||||||
GUIConfig.cc
|
GUIConfig.cc
|
||||||
|
|||||||
@@ -13,6 +13,7 @@
|
|||||||
#include "Editor.h"
|
#include "Editor.h"
|
||||||
#include "Command.h"
|
#include "Command.h"
|
||||||
#include "GUIFrontend.h"
|
#include "GUIFrontend.h"
|
||||||
|
#include <filesystem>
|
||||||
#include "Font.h" // embedded default font (DefaultFontRegular)
|
#include "Font.h" // embedded default font (DefaultFontRegular)
|
||||||
#include "GUIConfig.h"
|
#include "GUIConfig.h"
|
||||||
#include "GUITheme.h"
|
#include "GUITheme.h"
|
||||||
@@ -105,7 +106,25 @@ GUIFrontend::Init(Editor &ed)
|
|||||||
IMGUI_CHECKVERSION();
|
IMGUI_CHECKVERSION();
|
||||||
ImGui::CreateContext();
|
ImGui::CreateContext();
|
||||||
ImGuiIO &io = ImGui::GetIO();
|
ImGuiIO &io = ImGui::GetIO();
|
||||||
(void) io;
|
|
||||||
|
// Set custom ini filename path to ~/.config/kte/imgui.ini
|
||||||
|
if (const char *home = std::getenv("HOME")) {
|
||||||
|
namespace fs = std::filesystem;
|
||||||
|
fs::path config_dir = fs::path(home) / ".config" / "kte";
|
||||||
|
|
||||||
|
std::error_code ec;
|
||||||
|
if (!fs::exists(config_dir)) {
|
||||||
|
fs::create_directories(config_dir, ec);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (fs::exists(config_dir)) {
|
||||||
|
static std::string ini_path = (config_dir / "imgui.ini").string();
|
||||||
|
io.IniFilename = ini_path.c_str();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
io.ConfigFlags |= ImGuiConfigFlags_NavEnableKeyboard; // Enable Keyboard Controls
|
||||||
|
io.ConfigFlags |= ImGuiConfigFlags_NavEnableGamepad; // Enable Gamepad Controls
|
||||||
ImGui::StyleColorsDark();
|
ImGui::StyleColorsDark();
|
||||||
|
|
||||||
// Apply background mode and selected theme (default: Nord). Can be changed at runtime via commands.
|
// Apply background mode and selected theme (default: Nord). Can be changed at runtime via commands.
|
||||||
@@ -318,4 +337,4 @@ GUIFrontend::LoadGuiFont_(const char * /*path*/, float size_px)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// No runtime font reload or system font resolution in this simplified build.
|
// No runtime font reload or system font resolution in this simplified build.
|
||||||
|
|||||||
Reference in New Issue
Block a user