4646
4747#include < QCoreApplication>
4848
49- // we want to support bytes and unicode strings, since the user will not always write b''
50- // and signals and slots are always ascii...
51- static QByteArray getByteArrayFromPyObject (PyObject* obj)
49+ bool PythonQtStdDecorators::connect (QObject* sender, const QByteArray& signal, PyObject* callable)
5250{
53- bool ok;
54- QByteArray bytes = PythonQtConv::PyObjGetBytes (obj, true , ok);
55- if (!ok) {
56- QString str = PythonQtConv::PyObjGetString (obj, true , ok);
57- if (ok) {
58- bytes = str.toUtf8 ();
59- }
51+ if (signal.size () == 0 ) {
52+ std::cerr << " PythonQt: QObject::disconnect() signal is empty." << std::endl;
53+ return false ;
6054 }
61- return bytes;
62- }
63-
64- bool PythonQtStdDecorators::connect (QObject* sender, PyObject* signal, PyObject* callable)
65- {
6655 bool result = false ;
67- QByteArray signalTmp = getByteArrayFromPyObject ( signal) ;
56+ QByteArray signalTmp = signal;
6857 char first = signalTmp.at (0 );
6958 if (first<' 0' || first>' 9' ) {
7059 signalTmp = " 2" + signalTmp;
@@ -74,24 +63,32 @@ bool PythonQtStdDecorators::connect(QObject* sender, PyObject* signal, PyObject*
7463 result = PythonQt::self ()->addSignalHandler (sender, signalTmp, callable);
7564 if (!result) {
7665 if (sender->metaObject ()->indexOfSignal (QMetaObject::normalizedSignature (signalTmp.constData ()+1 )) == -1 ) {
77- qWarning ( " PythonQt: QObject::connect() signal '%s ' does not exist on %s " , PythonQtConv::PyObjGetString (signal). toUtf8 (). constData (), sender->metaObject ()->className ()) ;
66+ std::cerr << " PythonQt: QObject::connect() signal '" << signal. constData () << " ' does not exist on " << sender->metaObject ()->className () << std::endl ;
7867 }
7968 }
8069 }
8170 return result;
8271}
8372
84- bool PythonQtStdDecorators::connect (QObject* sender, PyObject* signal, QObject* receiver, PyObject* slot, Qt::ConnectionType type)
73+ bool PythonQtStdDecorators::connect (QObject* sender, const QByteArray& signal, QObject* receiver, const QByteArray& slot, Qt::ConnectionType type)
8574{
75+ if (signal.size () == 0 ) {
76+ std::cerr << " PythonQt: QObject::connect() signal is empty." << std::endl;
77+ return false ;
78+ }
79+ if (slot.size () == 0 ) {
80+ std::cerr << " PythonQt: QObject::connect() slot is empty." << std::endl;
81+ return false ;
82+ }
8683 bool r = false ;
8784 if (sender && receiver) {
88- QByteArray signalTmp = getByteArrayFromPyObject ( signal) ;
85+ QByteArray signalTmp = signal;
8986 char first = signalTmp.at (0 );
9087 if (first<' 0' || first>' 9' ) {
9188 signalTmp = " 2" + signalTmp;
9289 }
9390
94- QByteArray slotTmp = getByteArrayFromPyObject ( slot) ;
91+ QByteArray slotTmp = slot;
9592 first = slotTmp.at (0 );
9693 if (first<' 0' || first>' 9' ) {
9794 slotTmp = " 1" + slotTmp;
@@ -101,10 +98,15 @@ bool PythonQtStdDecorators::connect(QObject* sender, PyObject* signal, QObject*
10198 return r;
10299}
103100
104- bool PythonQtStdDecorators::disconnect (QObject* sender, PyObject* signal, PyObject* callable)
101+ bool PythonQtStdDecorators::disconnect (QObject* sender, const QByteArray& signal, PyObject* callable)
105102{
103+ if (signal.size () == 0 ) {
104+ std::cerr << " PythonQt: QObject::disconnect() signal is empty." << std::endl;
105+ return false ;
106+ }
107+
106108 bool result = false ;
107- QByteArray signalTmp = getByteArrayFromPyObject ( signal) ;
109+ QByteArray signalTmp = signal;
108110 char first = signalTmp.at (0 );
109111 if (first<' 0' || first>' 9' ) {
110112 signalTmp = " 2" + signalTmp;
@@ -116,24 +118,32 @@ bool PythonQtStdDecorators::disconnect(QObject* sender, PyObject* signal, PyObje
116118 }
117119 if (!result) {
118120 if (sender->metaObject ()->indexOfSignal (QMetaObject::normalizedSignature (signalTmp.constData ()+1 )) == -1 ) {
119- qWarning ( " PythonQt: QObject::disconnect() signal '%s ' does not exist on %s " , PythonQtConv::PyObjGetString (signal). toUtf8 (). constData (), sender->metaObject ()->className ()) ;
121+ std::cerr << " PythonQt: QObject::disconnect() signal '" << signal. constData () << " ' does not exist on " << sender->metaObject ()->className () << std::endl ;
120122 }
121123 }
122124 }
123125 return result;
124126}
125127
126- bool PythonQtStdDecorators::disconnect (QObject* sender, PyObject* signal, QObject* receiver, PyObject* slot)
128+ bool PythonQtStdDecorators::disconnect (QObject* sender, const QByteArray& signal, QObject* receiver, const QByteArray& slot)
127129{
128130 bool r = false ;
131+ if (signal.size () == 0 ) {
132+ std::cerr << " PythonQt: QObject::disconnect() signal is empty." << std::endl;
133+ return false ;
134+ }
135+ if (slot.size () == 0 ) {
136+ std::cerr << " PythonQt: QObject::disconnect() slot is empty." << std::endl;
137+ return false ;
138+ }
129139 if (sender && receiver) {
130- QByteArray signalTmp = getByteArrayFromPyObject ( signal) ;
140+ QByteArray signalTmp = signal;
131141 char first = signalTmp.at (0 );
132142 if (first<' 0' || first>' 9' ) {
133143 signalTmp = " 2" + signalTmp;
134144 }
135145
136- QByteArray slotTmp = getByteArrayFromPyObject ( slot) ;
146+ QByteArray slotTmp = slot;
137147 first = slotTmp.at (0 );
138148 if (first<' 0' || first>' 9' ) {
139149 slotTmp = " 1" + slotTmp;
0 commit comments