##// END OF EJS Templates
removed implicit conversion of QByteArray to python str, use str() to convert to Python string or QByteArray::data()...
florianlink -
r125:50c6d9f6a6dd
parent child
Show More
@@ -81,6 +81,7 void PythonQt::init(int flags, const QByteArray& pythonQtModuleName)
81 PythonQt_init_QtCoreBuiltin(NULL);
81 PythonQt_init_QtCoreBuiltin(NULL);
82 PythonQt_init_QtGuiBuiltin(NULL);
82 PythonQt_init_QtGuiBuiltin(NULL);
83
83
84 PythonQtRegisterToolClassesTemplateConverter(QByteArray);
84 PythonQtRegisterToolClassesTemplateConverter(QDate);
85 PythonQtRegisterToolClassesTemplateConverter(QDate);
85 PythonQtRegisterToolClassesTemplateConverter(QTime);
86 PythonQtRegisterToolClassesTemplateConverter(QTime);
86 PythonQtRegisterToolClassesTemplateConverter(QDateTime);
87 PythonQtRegisterToolClassesTemplateConverter(QDateTime);
@@ -146,10 +146,11 PyObject* PythonQtConv::ConvertQtValueToPythonInternal(int type, const void* dat
146 return PyLong_FromLongLong(*((qint64*)data));
146 return PyLong_FromLongLong(*((qint64*)data));
147 case QMetaType::ULongLong:
147 case QMetaType::ULongLong:
148 return PyLong_FromUnsignedLongLong(*((quint64*)data));
148 return PyLong_FromUnsignedLongLong(*((quint64*)data));
149 case QMetaType::QByteArray: {
149 // implicit conversion from QByteArray to str has been removed:
150 QByteArray* v = (QByteArray*) data;
150 //case QMetaType::QByteArray: {
151 return PyString_FromStringAndSize(*v, v->size());
151 // QByteArray* v = (QByteArray*) data;
152 }
152 // return PyString_FromStringAndSize(*v, v->size());
153 // }
153 case QMetaType::QVariantMap:
154 case QMetaType::QVariantMap:
154 return PythonQtConv::QVariantMapToPyObject(*((QVariantMap*)data));
155 return PythonQtConv::QVariantMapToPyObject(*((QVariantMap*)data));
155 case QMetaType::QVariantList:
156 case QMetaType::QVariantList:
@@ -689,6 +690,7 QString PythonQtConv::PyObjGetString(PyObject* val, bool strict, bool& ok) {
689 }
690 }
690
691
691 QByteArray PythonQtConv::PyObjGetBytes(PyObject* val, bool /*strict*/, bool& ok) {
692 QByteArray PythonQtConv::PyObjGetBytes(PyObject* val, bool /*strict*/, bool& ok) {
693 // TODO: support buffer objects in general
692 QByteArray r;
694 QByteArray r;
693 ok = true;
695 ok = true;
694 if (val->ob_type == &PyString_Type) {
696 if (val->ob_type == &PyString_Type) {
@@ -146,7 +146,7
146 - QObject.emit to emit Qt signals from Python is not yet implemented but PythonQt allows to just emit a signal by calling it
146 - QObject.emit to emit Qt signals from Python is not yet implemented but PythonQt allows to just emit a signal by calling it
147 - PythonQt does not (yet) offer to add new signals to Python/C++ objects
147 - PythonQt does not (yet) offer to add new signals to Python/C++ objects
148 - Ownership of objects is a bit different in PythonQt, currently Python classes derived from a C++ class need to be manually referenced in Python to not get deleted too early (this will be fixed)
148 - Ownership of objects is a bit different in PythonQt, currently Python classes derived from a C++ class need to be manually referenced in Python to not get deleted too early (this will be fixed)
149 - QString and QBytearray are always converted to unicode and str Python objects (PyQt returns QString and QByteArray instead).
149 - QStrings are always converted to unicode Python objects (PyQt returns QString instead), we prefered to return Python strings.
150 - Probably there are lots of details that differ, I do not know PyQt that well to list them all.
150 - Probably there are lots of details that differ, I do not know PyQt that well to list them all.
151
151
152 \section Interface
152 \section Interface
@@ -566,6 +566,17 static QString getStringFromObject(PythonQtInstanceWrapper* wrapper) {
566 static PyObject * PythonQtInstanceWrapper_str(PyObject * obj)
566 static PyObject * PythonQtInstanceWrapper_str(PyObject * obj)
567 {
567 {
568 PythonQtInstanceWrapper* wrapper = (PythonQtInstanceWrapper*)obj;
568 PythonQtInstanceWrapper* wrapper = (PythonQtInstanceWrapper*)obj;
569
570 // QByteArray should be directly returned as a str
571 if (wrapper->classInfo()->metaTypeId()==QVariant::ByteArray) {
572 QByteArray* b = (QByteArray*) wrapper->_wrappedPtr;
573 if (b->data()) {
574 return PyString_FromStringAndSize(b->data(), b->size());
575 } else {
576 return PyString_FromString("");
577 }
578 }
579
569 const char* typeName = obj->ob_type->tp_name;
580 const char* typeName = obj->ob_type->tp_name;
570 QObject *qobj = wrapper->_obj;
581 QObject *qobj = wrapper->_obj;
571 QString str = getStringFromObject(wrapper);
582 QString str = getStringFromObject(wrapper);
General Comments 0
You need to be logged in to leave comments. Login now