From 7509ebde480e3d687f8d354b89a43e86e4bdb1a2 Mon Sep 17 00:00:00 2001 From: "OSK\\schmidt" Date: Thu, 12 Dec 2024 12:03:09 +0100 Subject: [PATCH] broken --- .gitignore | 2 ++ .gitmodules | 8 ++++++- CMakeLists.txt | 7 +++++- installer/toolbox_installer.spec | 40 ++++++++++++++++++++++++++++++++ lib/fltk | 1 + lib/moonfltk | 1 + src/toolboxWindow.cpp | 21 +++++++++++------ 7 files changed, 71 insertions(+), 9 deletions(-) create mode 100644 installer/toolbox_installer.spec create mode 160000 lib/fltk create mode 160000 lib/moonfltk diff --git a/.gitignore b/.gitignore index f7496bc..08a1977 100644 --- a/.gitignore +++ b/.gitignore @@ -4,3 +4,5 @@ /cmake-build-release-visual-studio/ /cmake-build-minsizerel-visual-studio/ /installer/.idea/ +/installer/build/ +/installer/dist/ diff --git a/.gitmodules b/.gitmodules index 39d9ef4..7e97abf 100644 --- a/.gitmodules +++ b/.gitmodules @@ -15,4 +15,10 @@ url = https://github.com/nlohmann/json.git [submodule "lib/cppcodec"] path = lib/cppcodec - url = https://github.com/tplgy/cppcodec.git \ No newline at end of file + url = https://github.com/tplgy/cppcodec.git +[submodule "lib/fltk"] + path = lib/fltk + url = https://github.com/fltk/fltk.git +[submodule "lib/moonfltk"] + path = lib/moonfltk + url = https://git.schmidti.digital/Yadciel/moonfltk.git diff --git a/CMakeLists.txt b/CMakeLists.txt index 7c39bf7..13e807e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -7,14 +7,19 @@ set(BUILD_SHARED_LIBS OFF) option(BUILD_SHARED_LIBS "Build as shared library" ON) add_subdirectory(lib/c_tray) +add_subdirectory(lib/fltk) add_subdirectory(lib/json) add_subdirectory(lib/cppcodec) add_subdirectory(lib/saucer) add_subdirectory(lib/lua) add_subdirectory(lib/sol2) +add_subdirectory(lib/moonfltk) include_directories(inc) include_directories(lib/json/include/nlohmann) + +#include_directories(lib/fltk/fl) + #include_directories(out_embed) if(WIN32) @@ -44,7 +49,7 @@ file(GLOB_RECURSE SOURCES "src/*.cpp" "inc/*.h") add_executable(Toolbox main.cpp ${SOURCES} ${RESOURCE_FILES} ${PLATFORM_SOURCES}) target_include_directories(${PROJECT_NAME} PRIVATE "out_embed") -target_link_libraries(Toolbox PRIVATE saucer::saucer sol2::sol2 lua tray nlohmann_json cppcodec) +target_link_libraries(Toolbox PRIVATE saucer::saucer sol2::sol2 tray nlohmann_json cppcodec fltk::fltk moonfltk lua) if(WIN32 AND (CMAKE_BUILD_TYPE STREQUAL "Release" OR CMAKE_BUILD_TYPE STREQUAL "MinSizeRel")) set_target_properties(Toolbox PROPERTIES WIN32_EXECUTABLE TRUE) diff --git a/installer/toolbox_installer.spec b/installer/toolbox_installer.spec new file mode 100644 index 0000000..869d967 --- /dev/null +++ b/installer/toolbox_installer.spec @@ -0,0 +1,40 @@ +# -*- mode: python ; coding: utf-8 -*- + + +a = Analysis( + ['main.py'], + pathex=[], + binaries=[], + datas=[], + hiddenimports=[], + hookspath=[], + hooksconfig={}, + runtime_hooks=[], + excludes=[], + noarchive=False, + optimize=0, +) +pyz = PYZ(a.pure) + +exe = EXE( + pyz, + a.scripts, + a.binaries, + a.datas, + [], + name='toolbox_installer', + debug=False, + bootloader_ignore_signals=False, + strip=False, + upx=True, + upx_exclude=[], + runtime_tmpdir=None, + console=True, + disable_windowed_traceback=False, + argv_emulation=False, + target_arch=None, + codesign_identity=None, + entitlements_file=None, + uac_admin=True, + icon=['..\\res\\ico\\toolbox.ico'], +) diff --git a/lib/fltk b/lib/fltk new file mode 160000 index 0000000..34b5fe9 --- /dev/null +++ b/lib/fltk @@ -0,0 +1 @@ +Subproject commit 34b5fe9e92a560d0507838c3dc1c6c3fd19648f9 diff --git a/lib/moonfltk b/lib/moonfltk new file mode 160000 index 0000000..8c63723 --- /dev/null +++ b/lib/moonfltk @@ -0,0 +1 @@ +Subproject commit 8c63723dbbc85e41be97e3a4685ab66e4ea72e7b diff --git a/src/toolboxWindow.cpp b/src/toolboxWindow.cpp index 5c4f54d..10c2ac1 100644 --- a/src/toolboxWindow.cpp +++ b/src/toolboxWindow.cpp @@ -241,12 +241,22 @@ void ToolboxWindow::fillToolboxMenu() { } } -void ToolboxWindow::run_lua(int id) { +extern "C" int luaopen_moonfltk(lua_State* L); - // Lambda-Funktion, um das Lua-Skript auszuführen +void ToolboxWindow::run_lua(int id) { auto lua_task = [this, id]() { sol::state lua; - lua.open_libraries(sol::lib::base, sol::lib::os); + lua.open_libraries(sol::lib::base, sol::lib::os, sol::lib::utf8, sol::lib::package); + + // Hier machen wir das statisch eingebundene Modul 'moonfltk' für require verfügbar: + lua["package"]["preload"]["moonfltk"] = luaopen_moonfltk; + + + // Teste, ob require nun verfügbar ist: + sol::object req = lua["require"]; + if (!req.is()) { + std::cerr << "require is not available!" << std::endl; + } try { std::string scriptPath = m_toolboxItems[id].lua_script; @@ -258,11 +268,8 @@ void ToolboxWindow::run_lua(int id) { } }; - // Erstellen und starten des Threads std::thread lua_thread(lua_task); - - // Optional: Warten auf den Abschluss des Threads - lua_thread.detach(); // Falls Sie den Thread nicht blockieren wollen + lua_thread.detach(); std::cout << "Lua-Skript wurde gestartet." << std::endl; }