Lua: Expose QCompleter

Change-Id: I93f0adad78d3cff23a5431ad211e66b481360d1f
Reviewed-by: <lie@spyro-soft.com>
Reviewed-by: hjk <hjk@qt.io>
This commit is contained in:
Artur Twardy
2024-09-27 16:43:52 +02:00
parent 3436c93861
commit 18a048b34d
2 changed files with 52 additions and 0 deletions

View File

@@ -3,6 +3,9 @@
#include "../luaengine.h"
#include "utils.h"
#include <QCompleter>
#include <QDir>
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<ScriptPluginSpec *>("PluginSpec");
qt.new_usertype<QCompleter>(
"QCompleter",
"create",
[](const QStringList &list) -> std::unique_ptr<QCompleter> {
return std::make_unique<QCompleter>(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<const QString &>::of(&QCompleter::activated),
guard->connectionGuard.get(),
[callback](const QString &arg) {
void_safe_call(callback, arg);
});})
);
mirrorEnum(qt, QMetaEnum::fromType<QCompleter::CompletionMode>(), "QCompleterCompletionMode");
// clang-format off
qt["TextElideMode"] = lua.create_table_with(

View File

@@ -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,