diff --git a/src/plugins/lua/bindings/settings.cpp b/src/plugins/lua/bindings/settings.cpp index 0bea26fb466..72165304410 100644 --- a/src/plugins/lua/bindings/settings.cpp +++ b/src/plugins/lua/bindings/settings.cpp @@ -326,12 +326,12 @@ void setupSettingsModule() = options[i].get>(); if (optiontable) { sol::table option = *optiontable; - sol::optional data = option["data"]; + sol::optional data = option["data"]; if (data) { aspect->addOption( {option["name"], option["tooltip"].get_or(QString()), - *data}); + QVariant::fromValue(*data)}); } else { aspect->addOption( option["name"], option["tooltip"].get_or(QString())); @@ -352,11 +352,21 @@ void setupSettingsModule() }, "stringValue", sol::property(&SelectionAspect::stringValue, &SelectionAspect::setStringValue), + "dataValue", + sol::property([](SelectionAspect *aspect) { + return qvariant_cast(aspect->itemValue()); + }), "addOption", sol::overload( [](SelectionAspect &self, const QString &name) { self.addOption(name); }, [](SelectionAspect &self, const QString &name, const QString &tooltip) { self.addOption(name, tooltip); + }, + [](SelectionAspect &self, + const QString &name, + const QString &tooltip, + const sol::object &data) { + self.addOption({name, tooltip, QVariant::fromValue(data)}); }), sol::base_classes, sol::bases, BaseAspect>()); diff --git a/src/plugins/lua/meta/settings.lua b/src/plugins/lua/meta/settings.lua index ea6e8b27032..f2652947a25 100644 --- a/src/plugins/lua/meta/settings.lua +++ b/src/plugins/lua/meta/settings.lua @@ -77,7 +77,9 @@ function settings.ColorAspect.create(options) end ---@class SelectionAspect : TypedAspect ---@field stringValue string The string value of the aspect. +---@field dataValue any The data value of the aspect. settings.SelectionAspect = {} + ---@enum SelectionDisplayStyle settings.SelectionDisplayStyle = { RadioButtons = 0,