From 18a048b34d16804a82d33779c909b2863bc8fac4 Mon Sep 17 00:00:00 2001 From: Artur Twardy Date: Fri, 27 Sep 2024 16:43:52 +0200 Subject: [PATCH] Lua: Expose QCompleter Change-Id: I93f0adad78d3cff23a5431ad211e66b481360d1f Reviewed-by: Reviewed-by: hjk --- src/plugins/lua/bindings/qt.cpp | 29 +++++++++++++++++++++++++++++ src/plugins/lua/meta/qt.lua | 23 +++++++++++++++++++++++ 2 files changed, 52 insertions(+) diff --git a/src/plugins/lua/bindings/qt.cpp b/src/plugins/lua/bindings/qt.cpp index 4616b7d51b0..58864a5ef33 100644 --- a/src/plugins/lua/bindings/qt.cpp +++ b/src/plugins/lua/bindings/qt.cpp @@ -3,6 +3,9 @@ #include "../luaengine.h" +#include "utils.h" + +#include #include namespace Lua::Internal { @@ -11,6 +14,32 @@ void setupQtModule() { registerProvider("Qt", [](sol::state_view lua) { sol::table qt(lua, sol::create); + const ScriptPluginSpec *pluginSpec = lua.get("PluginSpec"); + + qt.new_usertype( + "QCompleter", + "create", + [](const QStringList &list) -> std::unique_ptr { + return std::make_unique(list); + }, + "currentCompletion", + &QCompleter::currentCompletion, + "completionMode", + sol::property(&QCompleter::completionMode, + [](QCompleter *c, QCompleter::CompletionMode mode) { + c->setCompletionMode(mode); + }), + "onActivated", + sol::property([guard = pluginSpec](QCompleter &obj, sol::function callback) { + QObject::connect(&obj, + QOverload::of(&QCompleter::activated), + guard->connectionGuard.get(), + [callback](const QString &arg) { + void_safe_call(callback, arg); + });}) + ); + + mirrorEnum(qt, QMetaEnum::fromType(), "QCompleterCompletionMode"); // clang-format off qt["TextElideMode"] = lua.create_table_with( diff --git a/src/plugins/lua/meta/qt.lua b/src/plugins/lua/meta/qt.lua index 7d446bce628..e0d04093d67 100644 --- a/src/plugins/lua/meta/qt.lua +++ b/src/plugins/lua/meta/qt.lua @@ -4,6 +4,29 @@ local qt = {} +---@enum CompleterCompletionMode +qt.CompleterCompletionMode = { + PopupCompletion = 0, + InlineCompletion = 1, + UnfilteredPopupCompletion = 2, +}; + +---Creates QCompleter. +---@class QCompleter +---@field completionMode CompleterCompletionMode The completion mode. +local QCompleter = {} + +---Returns current completion. +---@return string +function qt.QCompleter:currentCompletion() end + +---@param params string list A list of suggestions. +---@return QCompleter Created Completer. +function qt.QCompleter.create(params) end + +---@param function The function to be called when user choice is selected from popup. +function qt.QCompleter.onActivated(function) end + ---@enum TextElideMode qt.TextElideMode = { ElideLeft = 0,