From 0ce126fbfc5baac0f0b89f2e566c5fdcb6204b27 Mon Sep 17 00:00:00 2001 From: Yadciel Date: Tue, 27 Jan 2026 22:26:36 +0100 Subject: [PATCH] =?UTF-8?q?F=C3=BCgt=20Einstellungsfenster=20und=20Lua-Skr?= =?UTF-8?q?iptausf=C3=BChrung=20hinzu?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Implementiert ein Einstellungsfenster zur Konfiguration von Lua-Skript-Timeouts und anderen Einstellungen. Ermöglicht die Ausführung von Lua-Skripten in einem separaten Thread mit Abbruchfunktion und Timeout-Mechanismus. Verbessert die Benutzererfahrung durch Hinzufügen der Möglichkeit, das Toolbox-Verzeichnis im Dateisystem zu öffnen. Behebt Fokusprobleme und verbessert die Fensterpositionierung und -größe. --- inc/toolboxTray.h | 2 +- inc/toolboxWindow.h | 30 ++++- res/html/einstellungen.html | 54 +++++++- src/optionWindow.cpp | 142 +++++++++++++++++-- src/toolboxWindow.cpp | 262 ++++++++++++++++++++++++++++++++++-- 5 files changed, 461 insertions(+), 29 deletions(-) diff --git a/inc/toolboxTray.h b/inc/toolboxTray.h index 099a51b..82d3f6b 100644 --- a/inc/toolboxTray.h +++ b/inc/toolboxTray.h @@ -6,7 +6,7 @@ class toolboxTray : public tray { public: // Konstruktor mit optionalen Parametern für Icon und Tooltip - toolboxTray(const char* icon = nullptr, const char* tooltip = nullptr) { + explicit toolboxTray(const char* icon = nullptr, const char* tooltip = nullptr) : tray() { this->icon = icon; this->tooltip = const_cast(tooltip); this->menu = nullptr; // Initialisiere ohne Menü (kann später gesetzt werden) diff --git a/inc/toolboxWindow.h b/inc/toolboxWindow.h index d4faec7..c6817f5 100644 --- a/inc/toolboxWindow.h +++ b/inc/toolboxWindow.h @@ -5,6 +5,10 @@ #include #include #include +#include +#include +#include "optionWindow.h" +#include "toolConfig.h" class ToolboxWindow { public: @@ -21,6 +25,7 @@ public: void initialize(); void setupToolboxWindow(); + void toggleDevTools(); std::atomic_bool isIndex = true; @@ -40,12 +45,13 @@ public: std::vector m_toolboxItems; - saucer::smartview m_webview; + saucer::smartview m_webview; private: std::unique_ptr m_hwnd_module; HWND m_hwnd{}; std::shared_ptr m_app; + std::unique_ptr m_optionWindow; std::thread m_threadMonitor; std::atomic m_runningMonitor = true; @@ -77,6 +83,7 @@ private: void debug_print(); void run_lua(int id); + void cancel_lua(int id); void monitor_focus(); @@ -85,10 +92,31 @@ private: void SetJsonItems(); void openEinst(); + void openEinst(int id); void centerWindow(); void resizeWindow(int width, int height); void resizeWindow(double widthPercent, double heightPercent); void openIndex(); void getNewContent(); + + int getLuaTimeoutSeconds(); + void setLuaTimeoutSeconds(int seconds); + std::string getActiveToolName(); + + struct LuaTask { + std::shared_ptr cancel; + }; + + std::mutex m_luaTasksMutex; + std::unordered_map m_luaTasks; + + int m_activeToolId = -1; + ToolConfigStore m_configStore; + + std::filesystem::path getToolConfigPath(int id) const; + void ensureConfigExists(int id) const; + int getLuaTimeoutSecondsForId(int id) const; + std::string getToolConfigIni() const; + void setToolConfigIni(const std::string &content); }; diff --git a/res/html/einstellungen.html b/res/html/einstellungen.html index a1bc8fb..ec6ff2f 100644 --- a/res/html/einstellungen.html +++ b/res/html/einstellungen.html @@ -4,7 +4,6 @@ Toolbox -