diff options
author | Friedemann Kleint <Friedemann.Kleint@qt.io> | 2023-10-18 16:19:50 +0200 |
---|---|---|
committer | Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> | 2023-10-23 17:24:40 +0000 |
commit | 7715b2910d87c101b064a4bbb6e0a7b769d82284 (patch) | |
tree | 35ab77d672d4440107e150386a77953446d435e4 | |
parent | bf37f4051502fb5ff4516128d17d635f48614f25 (diff) |
Add a separate __str__ function for Signal
List all signatures, separated by ';'.
Fixes: PYSIDE-2493
Change-Id: I3c7e3367c340ab142a388a3991dc08774b6c7075
Reviewed-by: Christian Tismer <tismer@stackless.com>
(cherry picked from commit 566a2164fea3a7fbeda9307ba91ed145b8cc4b52)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
(cherry picked from commit 1a41957a43b00284d12f719bb06366f0dfc267aa)
-rw-r--r-- | sources/pyside6/libpyside/pysidesignal.cpp | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/sources/pyside6/libpyside/pysidesignal.cpp b/sources/pyside6/libpyside/pysidesignal.cpp index e92ad6192..972647168 100644 --- a/sources/pyside6/libpyside/pysidesignal.cpp +++ b/sources/pyside6/libpyside/pysidesignal.cpp @@ -25,6 +25,8 @@ #define QT_SIGNAL_SENTINEL '2' +using namespace Qt::StringLiterals; + QDebug operator<<(QDebug debug, const PySideSignalData::Signature &s) { QDebugStateSaver saver(debug); @@ -305,9 +307,21 @@ static PyObject *signalGetItem(PyObject *obSelf, PyObject *key) return Shiboken::String::fromCString(sig.constData()); } -static PyObject *signalToString(PyObject *self) +static PyObject *signalToString(PyObject *obSelf) { - return signalGetItem(self, nullptr); + auto self = reinterpret_cast<PySideSignal *>(obSelf); + QByteArray result; + if (self->data == nullptr || self->data->signatures.isEmpty()) { + result = "<invalid>"_ba; + } else { + for (const auto &signature : std::as_const(self->data->signatures)) { + if (!result.isEmpty()) + result += "; "_ba; + result += PySide::Signal::buildSignature(self->data->signalName, + signature.signature); + } + } + return Shiboken::String::fromCString(result.constData()); } static PyObject *signalGetAttr(PyObject *obSelf, PyObject *name) |