From 1b77fc5931bf14b2a9e936a8d08334d9e00ffe7e Mon Sep 17 00:00:00 2001 From: Cristian Maureira-Fredes Date: Tue, 8 Jan 2019 17:15:24 +0100 Subject: Add support for parameterNames in Signals There were many uses cases when a proper interaction between Python and Qml was needed, one of them was the case to emit signals from Python an get those values via an argument name in QML. A simple example describing this situation can be found in PYSIDE-634: Python: sumResult = Signal(int, arguments=["sum"]) sumResult.emit(42) Qml: onSumResult: console.log(sum) // will print 42 A test case based on the same example was added. Change-Id: I0908f97d88eaadc0c02d81bc4daca936f72f6c6a Fixes: PYSIDE-634 Reviewed-by: Christian Tismer --- sources/pyside2/libpyside/dynamicqmetaobject.cpp | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) (limited to 'sources/pyside2/libpyside/dynamicqmetaobject.cpp') diff --git a/sources/pyside2/libpyside/dynamicqmetaobject.cpp b/sources/pyside2/libpyside/dynamicqmetaobject.cpp index c5de54aa0..857d242a2 100644 --- a/sources/pyside2/libpyside/dynamicqmetaobject.cpp +++ b/sources/pyside2/libpyside/dynamicqmetaobject.cpp @@ -467,8 +467,17 @@ void MetaObjectBuilderPrivate::parsePythonType(PyTypeObject *type) data->data->signalName = Shiboken::String::toCString(key); for (const auto &s : data->data->signatures) { const auto sig = data->data->signalName + '(' + s.signature + ')'; - if (m_baseObject->indexOfSignal(sig) == -1) - m_builder->addSignal(sig); + if (m_baseObject->indexOfSignal(sig) == -1) { + // Registering the parameterNames to the QMetaObject (PYSIDE-634) + // from: + // Signal(..., arguments=['...', ...] + // the arguments are now on data-data->signalArguments + if (!data->data->signalArguments->isEmpty()) { + m_builder->addSignal(sig).setParameterNames(*data->data->signalArguments); + } else { + m_builder->addSignal(sig); + } + } } } } -- cgit v1.2.3