46
46
47
47
#include < QCoreApplication>
48
48
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)
52
50
{
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 ;
60
54
}
61
- return bytes;
62
- }
63
-
64
- bool PythonQtStdDecorators::connect (QObject* sender, PyObject* signal, PyObject* callable)
65
- {
66
55
bool result = false ;
67
- QByteArray signalTmp = getByteArrayFromPyObject ( signal) ;
56
+ QByteArray signalTmp = signal;
68
57
char first = signalTmp.at (0 );
69
58
if (first<' 0' || first>' 9' ) {
70
59
signalTmp = " 2" + signalTmp;
@@ -74,24 +63,32 @@ bool PythonQtStdDecorators::connect(QObject* sender, PyObject* signal, PyObject*
74
63
result = PythonQt::self ()->addSignalHandler (sender, signalTmp, callable);
75
64
if (!result) {
76
65
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 ;
78
67
}
79
68
}
80
69
}
81
70
return result;
82
71
}
83
72
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)
85
74
{
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
+ }
86
83
bool r = false ;
87
84
if (sender && receiver) {
88
- QByteArray signalTmp = getByteArrayFromPyObject ( signal) ;
85
+ QByteArray signalTmp = signal;
89
86
char first = signalTmp.at (0 );
90
87
if (first<' 0' || first>' 9' ) {
91
88
signalTmp = " 2" + signalTmp;
92
89
}
93
90
94
- QByteArray slotTmp = getByteArrayFromPyObject ( slot) ;
91
+ QByteArray slotTmp = slot;
95
92
first = slotTmp.at (0 );
96
93
if (first<' 0' || first>' 9' ) {
97
94
slotTmp = " 1" + slotTmp;
@@ -101,10 +98,15 @@ bool PythonQtStdDecorators::connect(QObject* sender, PyObject* signal, QObject*
101
98
return r;
102
99
}
103
100
104
- bool PythonQtStdDecorators::disconnect (QObject* sender, PyObject* signal, PyObject* callable)
101
+ bool PythonQtStdDecorators::disconnect (QObject* sender, const QByteArray& signal, PyObject* callable)
105
102
{
103
+ if (signal.size () == 0 ) {
104
+ std::cerr << " PythonQt: QObject::disconnect() signal is empty." << std::endl;
105
+ return false ;
106
+ }
107
+
106
108
bool result = false ;
107
- QByteArray signalTmp = getByteArrayFromPyObject ( signal) ;
109
+ QByteArray signalTmp = signal;
108
110
char first = signalTmp.at (0 );
109
111
if (first<' 0' || first>' 9' ) {
110
112
signalTmp = " 2" + signalTmp;
@@ -116,24 +118,32 @@ bool PythonQtStdDecorators::disconnect(QObject* sender, PyObject* signal, PyObje
116
118
}
117
119
if (!result) {
118
120
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 ;
120
122
}
121
123
}
122
124
}
123
125
return result;
124
126
}
125
127
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)
127
129
{
128
130
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
+ }
129
139
if (sender && receiver) {
130
- QByteArray signalTmp = getByteArrayFromPyObject ( signal) ;
140
+ QByteArray signalTmp = signal;
131
141
char first = signalTmp.at (0 );
132
142
if (first<' 0' || first>' 9' ) {
133
143
signalTmp = " 2" + signalTmp;
134
144
}
135
145
136
- QByteArray slotTmp = getByteArrayFromPyObject ( slot) ;
146
+ QByteArray slotTmp = slot;
137
147
first = slotTmp.at (0 );
138
148
if (first<' 0' || first>' 9' ) {
139
149
slotTmp = " 1" + slotTmp;
0 commit comments