Веб-сайт самохостера Lotigara

summaryrefslogtreecommitdiff
path: root/source
diff options
context:
space:
mode:
authorErodeesFleurs <3353309908@qq.com>2024-03-16 20:00:53 +0800
committerErodeesFleurs <3353309908@qq.com>2024-03-16 20:00:53 +0800
commitc6a2f4fa7d5930fe54d99a688b428f469dbe0e4c (patch)
tree46ea465f2e0d903f6bb680c94f1162b66a96e96b /source
parent5499b04e9fd012402e966c5913274e8da8d5915e (diff)
add clipboard lua binds
Diffstat (limited to 'source')
-rw-r--r--source/client/StarClientApplication.cpp3
-rw-r--r--source/frontend/CMakeLists.txt2
-rw-r--r--source/frontend/StarClipboardLuaBindings.cpp24
-rw-r--r--source/frontend/StarClipboardLuaBindings.hpp12
4 files changed, 41 insertions, 0 deletions
diff --git a/source/client/StarClientApplication.cpp b/source/client/StarClientApplication.cpp
index 3370802..e5cf601 100644
--- a/source/client/StarClientApplication.cpp
+++ b/source/client/StarClientApplication.cpp
@@ -21,6 +21,7 @@
#include "StarInterfaceLuaBindings.hpp"
#include "StarInputLuaBindings.hpp"
#include "StarVoiceLuaBindings.hpp"
+#include "StarClipboardLuaBindings.hpp"
#if defined STAR_SYSTEM_WINDOWS
#include <windows.h>
@@ -516,6 +517,8 @@ void ClientApplication::changeState(MainAppState newState) {
m_universeClient->setLuaCallbacks("input", LuaBindings::makeInputCallbacks());
m_universeClient->setLuaCallbacks("voice", LuaBindings::makeVoiceCallbacks());
+ if(!m_root->configuration()->get("safeScripts").toBool())
+ m_universeClient->setLuaCallbacks("clipboard", LuaBindings::makeClipboardCallbacks(appController()));
auto heldScriptPanes = make_shared<List<MainInterface::ScriptPaneInfo>>();
diff --git a/source/frontend/CMakeLists.txt b/source/frontend/CMakeLists.txt
index cae2d43..0934308 100644
--- a/source/frontend/CMakeLists.txt
+++ b/source/frontend/CMakeLists.txt
@@ -23,6 +23,7 @@ SET (star_frontend_HEADERS
StarChatBubbleManager.hpp
StarCinematic.hpp
StarClientCommandProcessor.hpp
+ StarClipboardLuaBindings.hpp
StarCodexInterface.hpp
StarConfirmationDialog.hpp
StarContainerInterface.hpp
@@ -74,6 +75,7 @@ SET (star_frontend_SOURCES
StarChatBubbleManager.cpp
StarCinematic.cpp
StarClientCommandProcessor.cpp
+ StarClipboardLuaBindings.cpp
StarCodexInterface.cpp
StarConfirmationDialog.cpp
StarContainerInterface.cpp
diff --git a/source/frontend/StarClipboardLuaBindings.cpp b/source/frontend/StarClipboardLuaBindings.cpp
new file mode 100644
index 0000000..c4fbc41
--- /dev/null
+++ b/source/frontend/StarClipboardLuaBindings.cpp
@@ -0,0 +1,24 @@
+#include "StarClipboardLuaBindings.hpp"
+#include "StarLuaConverters.hpp"
+
+#include "SDL2/SDL.h"
+
+namespace Star {
+
+LuaCallbacks LuaBindings::makeClipboardCallbacks(ApplicationControllerPtr appController) {
+ LuaCallbacks callbacks;
+
+ callbacks.registerCallback("hasText", []() -> bool { return SDL_HasClipboardText() == SDL_TRUE;});
+
+ callbacks.registerCallback("getText", [appController]() -> Maybe<String> {
+ return appController->getClipboard();
+ });
+
+ callbacks.registerCallback("setText", [appController](String const& text) {
+ appController->setClipboard(text);
+ });
+
+ return callbacks;
+};
+
+}// namespace Star
diff --git a/source/frontend/StarClipboardLuaBindings.hpp b/source/frontend/StarClipboardLuaBindings.hpp
new file mode 100644
index 0000000..7515c0b
--- /dev/null
+++ b/source/frontend/StarClipboardLuaBindings.hpp
@@ -0,0 +1,12 @@
+#pragma once
+
+#include "StarLua.hpp"
+#include "StarApplicationController.hpp"
+
+namespace Star {
+
+namespace LuaBindings {
+LuaCallbacks makeClipboardCallbacks(ApplicationControllerPtr appController);
+}
+
+}// namespace Star