aboutsummaryrefslogtreecommitdiffstats
path: root/sources
Commit message (Collapse)AuthorAgeFilesLines
* shiboken: Handle <array> modifications in template inheritanceFriedemann Kleint2019-03-017-36/+89
| | | | | | | | | | | | | | | | | | | | Array modifications did not work in template specializations (like typedef QGenericMatrix<2,2,int> QMatrix2x2> causing warnings like: There's no user provided way (conversion rule, argument removal, custom code, etc) to handle the primitive type 'const float *' of argument 1 in function 'QMatrix2x2::QMatrix2x2(const float * values)'. Rewrite the array modification code to operate on AbstractMetaType only instead of requiring code model data types and add the missing handling to AbstractMetaBuilderPrivate::inheritTemplate(). Add a test. Note that the warning was fixed by another change removing the array modification since it did not take effect due to the presence of a manually added PySequence constructor. Change-Id: Ie4a1092fbef7237f8858790a74e2f75070ef6586 Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io>
* shiboken: Add allow-thread attribute to type system and class entriesFriedemann Kleint2019-02-288-35/+97
| | | | | | | | | | | | | | In the typesystem parser, add the allow-thread attribute to root and complex type entry. Rewrite the handling of allow-thread (cached) in AbstractMetaFunction similar to the exception handling (store the modification in AbstractMetaFunction and go down the class hierarchy if it is unspecified). Change-Id: I00e6e2ab25208fda63ec20522814cbfccbb8c42d Fixes: PYSIDE-931 Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io>
* Doc: Avoid marketing Qt for Python as a productVenugopal Shivashankar2019-02-281-6/+6
| | | | | | | | It is an offering that provides Python bindings for Qt, enabling Python developers to explore the power of Qt. Change-Id: I19a487c9141554da04bd360b23e69ad25bee4dd2 Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io>
* shiboken: Fix exception handling when specified in base classFriedemann Kleint2019-02-284-45/+91
| | | | | | | | | | | | | | | | | | | | | Class-level exception specifications on a base class were not working so far. This requires a larger refactoring, since the base classes are not yet known at the point where class functions were traversed (AbstractMetaBuilder::setupInheritance() is called at a later stage). To fix this, store the actual type system modification in the AbstractMetaFunction and move the logic determining whether to generate exception handling into AbstractMetaFunction::generateExceptionHandling(). In this function, recurse down the base classes if the function does not have a modification set. This is a preparation for giving the allow-thread attribute, which can currently only be used at a function level, a similar handling. Task-number: PYSIDE-62 Change-Id: I28597559511d330cf860c6f6e21ffea229bfab3e Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io>
* shiboken: Extend the exception handling testFriedemann Kleint2019-02-262-11/+97
| | | | | | | | | | | | | | Turn the test into a data driven test to also test modifications to the class and typesystem level and test more cases, for example overriding modifications on a higher level. This is a preparation for giving the allow-thread attribute, which can currently only be used at a function level, a similar handling. Task-number: PYSIDE-62 Task-number: PYSIDE-931 Change-Id: Id5fe65b7d0edb4279b47aaa6e59dfb6cda2d75a3 Reviewed-by: Christian Tismer <tismer@stackless.com>
* Fix conversions of list of smart pointers to pythonRenato Araujo Oliveira Filho2019-02-265-1/+60
| | | | | | | | | While converting smart pointers do not initialize the object with default/minimal constructor. Change-Id: Ie9400d8487accc0c90b0f0b31b855038ae698b5c Task-Id: PYSIDE-947 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
* Prevent Python 3.5 From Crashing The BuildChristian Tismer2019-02-267-3/+499
| | | | | | | | | | | | | | | | | | | Python 3.5 has a bug that crashes the build. See the description in the issue tracker. The cure is to use a more recent contextlib.py and to avoid a PySide cleanup function that creates the crash. The problem is not solved for Python 3.5, and it is not clear if the testbinding module has a hidden bug, too. But this fix seems to be good enough for the moment. We should decide if we are going to fix Python 3.5 or abandon it altogether. Change-Id: Iacf2237de1f34d2b3cd1d68f1fb5833bdca3fdc2 Fixes: PYSIDE-953 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
* Add setPageSize new signature to QPageSizeCristian Maureira-Fredes2019-02-262-0/+49
| | | | | | | | | | | The generated code only takes an enum from the meta class (QPagedPaintDevice) as valid argument of the function `setPageSize` (QPagedPaintDevice::PageSize), but it should also accept a QPageSize argument. Change-Id: Ia31a69a5e52e781844ce6a7e4ff6e5e95d17563d Fixes: PYSIDE-940 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
* Allow Subclassing PyCFunction in Extension ModulesChristian Tismer2019-02-251-2/+2
| | | | | | | | | | | | | | | | The signature module tries to figure out if it has to act upon functions by examining their type. It was too specific to check for PyCFunction, directly. A user had built a subclass of PyCFunction and used it with 'inspect.signature', which then revealed wrong behavior. This patch removes that restriction. Change-Id: I7e126ce5750ec5c308cbd1bd1bc4ca4d5eb51e17 Fixes: PYSIDE-950 Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io> Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
* Set proper parent when overloading QUiLoaderCristian Maureira-Fredes2019-02-251-0/+3
| | | | | | | | | | | | | | | In a couple of methods of QUiLoader, we had a parent override leaving the methods without the proper parent. setParent(pyArgs[0], pyResult) # Correct setParent(self, pyResult) # Wrong override Defining the ownership to the target class corrects this issue and just leaves the "Correct" approach. Fixes: PYSIDE-938 Change-Id: Id20d74756e14c58caba2ab4c65484d15da88df16 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
* Add common QPrintSupport typesystem for QWebEngineCristian Maureira-Fredes2019-02-255-3/+55
| | | | | | | | | | | Moved around the files so we have a general QPrintSupport typesystem that we can include in other modules that need it, like QWebEngine. Change-Id: Ic277c37e6b0c08b370102d1bef18cd1375239169 Task-number: PYSIDE-946 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Christian Tismer <tismer@stackless.com>
* Fix error when importing signatures in frozen executablesAlberto Sottile2019-02-222-17/+24
| | | | | | | | | | Attempts to load the module directly from Python if loading it manually from the .py file fails. This exposes the support submodule to installers. The loader.py module was also patched to allow direct import from installers. Change-Id: If225ae7a2e916912a581e09d1a02c18fd3a17526 Fixes: PYSIDE-942 Reviewed-by: Christian Tismer <tismer@stackless.com>
* Fix smart pointers with namespaceRenato Araujo Oliveira Filho2019-02-216-2/+45
| | | | | | | | | Use the cppName when looking for metatype while generating smart pointer getter function Change-Id: Ib3a632dd7f667a6bf7c487cfb673f0e55cbddde9 Fixes: PYSIDE-948 Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io>
* shiboken: Suppress warnings about deprecated code in QtFriedemann Kleint2019-02-111-0/+3
| | | | | | | | Always generate QT_WARNING_DISABLE_DEPRECATED into Qt wrappers, silencing any deprecation warnings. Change-Id: I621ee357e6eddaee52dbb8ea12fe6dee8b588bec Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io>
* Return PyObject wrapper when not valid QVariantCristian Maureira-Fredes2019-02-081-6/+10
| | | | | | | | | | | | | | When resolving the meta type of QVariant we did not have a fallback case. So we had a NoneType when none of the converters worked. These changes allow to return a PyObjectWrapper of the object instead of NoneType. This allow users to use any type as QVariant. Change-Id: I18da3f10f6839975fdc0bf2ac62f6bd7063312df Fixes: PYSIDE-45 Reviewed-by: Christian Tismer <tismer@stackless.com>
* Fix Shiboken.ObjectType.__new__ for Python 2.7Christian Tismer2019-02-072-1/+19
| | | | | | | | | | | | | | | | | | | | | | | | | | | type(QtWidgets.QWidget).__new__(type(QtWidgets.QWidget), "", (), {}) gave a problem in Python 2.7 after transition to PEP 384. The reason for the problem is a check in Python 2.7 that tries to find out if the function used to create a new object is a secure (builtin) one. Therefore, all new types that are generated by a Python function are filtered out. Unfortunately, Python 2.7 did that assuming that only Python classes are heap types. This is at least no longer true since Python 3 migrated to the new type API where all new types are heap types. The internal check was therefore changed to do the test for a builtin "new" function differently. But not in Python 2.7 . The workaround was to create the Shiboken.ObjectType as a heap type and then remove that flag from the type. This seems to have no bad effects, probably because the types did barely change when doing the transition. Anyway, I will stay tuned and watch out if this later creates a problem. Task-number: PYSIDE-816 Change-Id: Ia596716b0e5dff3f1a7155ab6765186ef0b9d179 Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io>
* Make .pyi file generation a standalone CMake targetAlexandru Croitor2019-02-071-4/+8
| | | | | | | | | | | Rather than using add_custom_command(TARGET foo POST_BUILD) for pyi file generation, use add_custom_target() with add_dependencies() instead. Semantically it should have the same meaning, but I'm hoping this will eliminate the weird race condition build issues that occur with manifest embedding on Windows. Change-Id: I854b8f80fd39363723ab2661b2423461396efc11 Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io>
* Add pyObj check to setSequenceOwnershipCristian Maureira-Fredes2019-02-061-0/+4
| | | | | | | | | | | | | Ownership is always set recursively, so for each element we check the children of the object. When we don't have any, and also no parent the mechanism we have fails, so for constructors that allow having a null parent, we need to just skip this function. Change-Id: Iee6a81409cad7dd08c6ecbafd1b11c9a7bb0db85 Fixes: PYSIDE-922 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
* Modernize cmake buildAlexandru Croitor2019-02-0771-478/+468
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Add a CMake super project that includes the shiboken2, PySide2 and pyside2-tools subprojects, so that it's possible to build everything from Qt Creator (or any other IDE that supports CMake) with minimal set up effort, and thus inform the IDE CMake integration of all relevant files, for easier code editing, navigation and refactoring. This also lays the foundation for allowing 3rd parties to use the shiboken2 generator to generate custom modules. This is achieved by eliminating various hardcoded paths for libraries and include directories. Start using CMake targets throughout the build code to correctly propagate link flags and include dirs for libshiboken and shiboken2 executable targets. Same for the libpyside target. Generate two separate cmake config files (build-tree / install-tree) that can be used with find_package(Shiboken2), to make sure that the PySide2 project can be built as part of the super project build. This is currently the only way I've found to allow the super build to work. Note that for the build-tree find_package() to work, the CMAKE_MODULE_PATH has to be adjusted in the super project file. The generated config files contain variables and logic that allow usage of the installed shiboken package in downstream projects (PySide2). This involves things like getting the includes and libraries for the currently found python interpreter, the shiboken build type (release or debug), was shiboken built with limited api support, etc. Generate 2 separate (build-tree and install-tree) config files for PySide2, similar to how it's done for the shiboken case, for pyside2-tools to build correctly. Install shiboken2 target files using install(EXPORT) to allow building PySide2 with an installed Shiboken2 package (as opposed to one that is built as part of the super project). Same with PySide2 targets for pyside2-tools subproject. Make sure not to redefine uninstall targets if they are already defined. Add a --shorter-paths setup.py option, which would be used by the Windows CI, to circumvent creating paths that are too long, and thus avoiding build issues. Output the build characteristics / classifiers into the generated build_history/YYYY-MM-DD_AAAAAA/build_dir.txt file, so it can be used by the test runner to properly filter out blacklisted tests. This was necessary due to the shorter paths options. Fix various issues regarding target includes and library dependencies. Remove certain duplicated cmake code (like limited api check and build type checks) in PySide2, given that that information will now be present in the exported shiboken2 config file. Include a short README.cmake.md file that describes how to build the super project. References used https://rix0r.nl/blog/2015/08/13/cmake-guide/ https://pabloariasal.github.io/2018/02/19/its-time-to-do-cmake-right/ https://gist.github.com/mbinna/c61dbb39bca0e4fb7d1f73b0d66a4fd1 https://cliutils.gitlab.io/modern-cmake/chapters/basics/functions.html https://cmake.org/cmake/help/v3.0/manual/cmake-packages.7.html https://github.com/ComicSansMS/libstratcom/blob/master/CMakeLists.txt Abandoned approach using ExternalProject references: https://cmake.org/cmake/help/latest/module/ExternalProject.html https://stackoverflow.com/questions/44990964/how-to-perform-cmakefind-package-at-build-stage-only Fixes: PYSIDE-919 Change-Id: Iaa15d20b279a04c5e16ce2795d03f912bc44a389 Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io>
* Propagate Property attributes to the MetaObjectCristian Maureira-Fredes2019-02-071-0/+11
| | | | | | | | | | | | | | | The attributes were ignored when a new Property was being add to the MetaObject. The addProperty method was only creating a new QProperty with the name and default values. The way of setting the attributes comes from: src/corelib/kernel/qmetaobjectbuilder.cpp specifically QMetaObjectBuilder::addProperty. Change-Id: Id81a274b3c2ae9d6b3413ebd54c776cefa392a38 Fixes: PYSIDE-924 Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
* Update Qt version for CMakeCristian Maureira-Fredes2019-02-062-2/+2
| | | | | | | Probably a leftover from the old days. Change-Id: I3e165faa66632a4387733a0dbdb0ddaca601035f Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
* Type Hints: Handle Container Types Correctly: AddendumChristian Tismer2019-02-062-2/+3
| | | | | | | | | | | | | | The correction to container types has a small bug which does not exist in reality, but could give a problem in the future: - We need not only avoid instantiation in Missing, but generally in all _NotCalled classes. Otherwise, when called during processing of container types, they would loose their (Missing, Default, ...whatever) tag. Change-Id: I4eb154100da6f3067b816c190af314b2a710ff39 Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io>
* typesystem_gui_common.xml: CleanupFriedemann Kleint2019-02-065-66/+41
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - Remove duplicate modifications of QOpenGLExtraFunctions::SamplerParameteri/fv() that are covered by the below regular expression - Remove QMatrix4x2::copyDataTo() as is done for the other QMatrix<N>x<M> classes, fixing: There's no user provided way (conversion rule, argument removal, custom code, etc) to handle the primitive type 'float *' of argument 1 in function 'QMatrix4x2::copyDataTo(float * values) const'. - Remove the array modifications of the QMatrix<N>x<M> constructors (specializations of QGenericMatrix). They don't work since the handling is not implemented in shiboken's AbstractMetaBuilderPrivate::inheritTemplate(). This can be fixed, but has no effect here since the manually added constructor from a PySequence always takes preference. This fixes: There's no user provided way (conversion rule, argument removal, custom code, etc) to handle the primitive type 'const float *' of argument 1 in function 'QMatrix2x2::QMatrix2x2(const float * values)'. 'const float *' of argument 1 in function 'QMatrix2x3::QMatrix2x3(const float * values)'. 'const float *' of argument 1 in function 'QMatrix2x4::QMatrix2x4(const float * values)'. 'const float *' of argument 1 in function 'QMatrix3x2::QMatrix3x2(const float * values)'. 'const float *' of argument 1 in function 'QMatrix3x3::QMatrix3x3(const float * values)'. 'const float *' of argument 1 in function 'QMatrix3x4::QMatrix3x4(const float * values)'. 'const float *' of argument 1 in function 'QMatrix4x2::QMatrix4x2(const float * values)'. 'const float *' of argument 1 in function 'QMatrix4x3::QMatrix4x3(const float * values)'. Change-Id: Iea9ced35158b31fb006d038cd5c307d5feec839e Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
* Replace QString::null/isNull() by QString()/isEmpty()Friedemann Kleint2019-02-066-13/+13
| | | | | | | | | | | | | | Fix warnings appearing in Qt 5.13: sources/shiboken2/generator/shiboken2/shibokengenerator.cpp:873:25: warning: ‘QString::null’ is deprecated: use QString() [-Wdeprecated-declarations] sources/shiboken2/generator/shiboken2/shibokengenerator.cpp:873:25: warning: ‘QString::null’ is deprecated: use QString() [-Wdeprecated-declarations] sources/shiboken2/generator/shiboken2/shibokengenerator.cpp:880:25: warning: ‘QString::null’ is deprecated: use QString() [-Wdeprecated-declarations] sources/shiboken2/generator/shiboken2/shibokengenerator.cpp:880:25: warning: ‘QString::null’ is deprecated: use QString() [-Wdeprecated-declarations] sources/shiboken2/generator/shiboken2/cppgenerator.cpp:5060:34: warning: ‘QString::null’ is deprecated: use QString() [-Wdeprecated-declarations] sources/shiboken2/generator/shiboken2/cppgenerator.cpp:5060:34: warning: ‘QString::null’ is deprecated: use QString() [-Wdeprecated-declarations] Change-Id: I7c938df64babf824b58bf5c785b281a88d5111db Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
* Replace the deprecated Qt algorithms by their std:: equivalentsFriedemann Kleint2019-02-054-8/+17
| | | | | | | | | | | | | | Fix warnings occurring in 5.13: sources/shiboken2/ApiExtractor/abstractmetalang.cpp:1431:66: warning: ‘void qSort(RandomAccessIterator, RandomAccessIterator, LessThan) [with RandomAccessIterator = AbstractMetaFunction**; LessThan = bool (*)(AbstractMetaFunction*, AbstractMetaFunction*)]’ is deprecated: Use std::sort [-Wdeprecated-declarations] sources/shiboken2/generator/shiboken2/cppgenerator.cpp:358:43: warning: ‘void qSort(RandomAccessIterator, RandomAccessIterator) [with RandomAccessIterator = Include*]’ is deprecated: Use std::sort [-Wdeprecated-declarations] sources/shiboken2/generator/shiboken2/cppgenerator.cpp:1683:55: warning: ‘void qSort(RandomAccessIterator, RandomAccessIterator) [with RandomAccessIterator = QList<QString>::iterator]’ is deprecated: Use std::sort [-Wdeprecated-declarations] sources/shiboken2/generator/shiboken2/cppgenerator.cpp:5500:53: warning: ‘void qSort(RandomAccessIterator, RandomAccessIterator) [with RandomAccessIterator = Include*]’ is deprecated: Use std::sort [-Wdeprecated-declarations] sources/shiboken2/generator/qtdoc/qtdocgenerator.cpp:1585:65: warning: ‘void qSort(RandomAccessIterator, RandomAccessIterator, LessThan) [with RandomAccessIterator = AbstractMetaFunction**; LessThan = bool (*)(const AbstractMetaFunction*, const AbstractMetaFunction*)]’ is deprecated: Use std::sort [-Wdeprecated-declarations] sources/shiboken2/generator/qtdoc/qtdocgenerator.cpp:1681:24: warning: ‘void qSort(Container&) [with Container = QStringList]’ is deprecated: Use std::sort [-Wdeprecated-declarations] sources/shiboken2/generator/qtdoc/qtdocgenerator.cpp:2054:25: warning: ‘void qSort(Container&) [with Container = QStringList]’ is deprecated: Use std::sort [-Wdeprecated-declarations] Change-Id: If6940941ac31327597ce362a31b27773f4d5b94c Reviewed-by: Christian Tismer <tismer@stackless.com>
* Type Hints: Handle Container Types CorrectlyChristian Tismer2019-02-055-31/+132
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | An error was reported that we had a bug in this .pyi line: def parseErrors(self) -> PySide2.QtScxml.QScxmlError: ... which actually had to be a list like def parseErrors(self) -> typing.List[PySide2.QtScxml.QScxmlError]: ... A deeper look revealed that we had very many other examples, also in the argument lists, were we did not handle containers properly. (For example, 90 times in QtCore!) This is a leftover from the type error messages which were generated in C++, and never really understood. This is now a clean rewrite of the C++ part to expose all information and an extension of the Python parser that systematically uses the container types from the typing module. The implementation became a bit more complex because of Python 2: We need to provide our own copy of the public typing module, because it is not safe to assume that this module can be loaded. Importing it from support.signature gave a problem because we now need to find the names of instances to produce List[...], which needed to be implemented in the loader. Implemented the "Pair" type now as a native generic type. This is more correct than the former implementation and shorter in the .pyi files. Additionally, an own definition of "Char" was provided for brevity. This was not important to implement and could also be done with "int", but it is helpful for the future to know how to implement own types (and it was fun). Task-number: PYSIDE-921 Task-number: PYSIDE-795 Change-Id: I0e565b38d7b4fff39dd606950f9f8d97c45acbf5 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
* PySide2/QtSxcml: Support bool *ok in some of the models' evaluateTo() functionsFriedemann Kleint2019-02-042-0/+17
| | | | | | | | | | | | | | | | | Add yet another version of the fix_args,arg,bool template, fixing: There's no user provided way (conversion rule, argument removal, custom code, etc) to handle the primitive type 'bool *' of argument 2 in function 'QScxmlDataModel::evaluateToBool(int id, bool * ok)'. 'QScxmlDataModel::evaluateToString(int id, bool * ok)'. 'QScxmlDataModel::evaluateToVariant(int id, bool * ok)'. 'QScxmlEcmaScriptDataModel::evaluateToBool(int id, bool * ok)'. 'QScxmlEcmaScriptDataModel::evaluateToString(int id, bool * ok)'. 'QScxmlEcmaScriptDataModel::evaluateToVariant(int id, bool * ok)'. 'QScxmlEcmaScriptDataModel::evaluateToVoid(int id, bool * ok)'. 'QScxmlNullDataModel::evaluateToString(int id, bool * ok)'. 'QScxmlNullDataModel::evaluateToVariant(int id, bool * ok)'. Change-Id: Idfda2adc0875a4626797a92240fa5267016d04bb Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io>
* libshiboken: Fix unused function warning (PepRun_GetResult)Friedemann Kleint2019-02-041-0/+2
| | | | | | | | | Add #ifdefs, fixing: sources/shiboken2/libshiboken/pep384impl.cpp:413:1: warning: ‘PyObject* PepRun_GetResult(const char*, const char*)’ defined but not used [-Wunused-function] PepRun_GetResult(const char *command, const char *resvar) Change-Id: I5e469d6a24e95a602b882adbaad334a4ecf9af23 Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io>
* Unify The Function Formatting In Generated CodeChristian Tismer2019-02-031-1/+1
| | | | | | | | | | | | | | | | | | | PySide functions are quite uniquely formatted: - There comes some header - Then an opening brace to the very left - Then body text - Then a closing brace. This structure is very quickly parsable with a single regular expression, except: There is a single case where the structure is different. We remove that to save complexity in evaluation tools. Task-number: PYSIDE-803 Change-Id: If868eb4b6a6e0d62ed2f944aeb9227a3bc459458 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
* PySide2/QtGui: Add more array modifications for const (unsigned) int * ↵Friedemann Kleint2019-02-011-1/+13
| | | | | | | | | | | | | | | | | parameters Fix warnings: There's no user provided way (conversion rule, argument removal, custom code, etc) to handle the primitive type 'const unsigned int *' of argument 5 in function 'QOpenGLExtraFunctions::glDebugMessageControl(unsigned int source, unsigned int type, unsigned int severity, int count, const unsigned int * ids, unsigned char enabled)'. 'const int *' of argument 3 in function 'QOpenGLExtraFunctions::glSamplerParameterIiv(unsigned int sampler, unsigned int pname, const int * param)'. 'const unsigned int *' of argument 3 in function 'QOpenGLExtraFunctions::glSamplerParameterIuiv(unsigned int sampler, unsigned int pname, const unsigned int * param)'. 'const int *' of argument 3 in function 'QOpenGLExtraFunctions::glTexParameterIiv(unsigned int target, unsigned int pname, const int * params)'. 'const unsigned int *' of argument 3 in function 'QOpenGLExtraFunctions::glTexParameterIuiv(unsigned int target, unsigned int pname, const unsigned int * params)'. 'const unsigned int *' of argument 2 in function 'QOpenGLFunctions::glShaderBinary(int n, const unsigned int * shaders, unsigned int binaryformat, const void * binary, int length)'. Change-Id: I764823352fc4360d167acb07e8502a1dc8c060dc Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io> Reviewed-by: Christian Tismer <tismer@stackless.com>
* PySide2: Remove enumeration AbstractPhysicalDevice::DeviceStatusFriedemann Kleint2019-02-011-3/+1
| | | | | | | | Fix warning: enum 'Qt3DInput::QAbstractPhysicalDevice::DeviceStatus' is specified in typesystem, but not declared Change-Id: I2d241e6c524cce84fc090fec3eca4595beb998d0 Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io>
* QtGui: Fix warning about <array> modificationFriedemann Kleint2019-02-011-1/+1
| | | | | | | | | | Extend the regexp for the <array> modification of glClearBufferXX() to actually check for '*' so that only the overloads with arrays match, fixing warning: glClearBufferfi(uint,int,float,int): Cannot use parameter 3 as an array: Type does not have indirections. Change-Id: Ic1cd24ca3d66ea7eac593b4a2d3b1a759ab1af18 Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io>
* PySide2/Widgets: Add overload of QInputDialog::getDouble()Friedemann Kleint2019-01-312-0/+18
| | | | | | | | | | | | | Add modification and new variant of the fix_arg template, fixing warning: There's no user provided way (conversion rule, argument removal, custom code, etc) to handle the primitive type 'bool *' of argument 8 in function 'QInputDialog::getDouble(QWidget * parent, const QString & title, const QString & label, double value, double minValue, double maxValue, int decimals, bool * ok, QFlags<Qt::WindowType> flags, double step)'. Change-Id: I02ee5c477d74698bd5dda23bbec01f39775d5c6d Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io>
* shiboken: Suppress warnings about missing types for dropped entriesFriedemann Kleint2019-01-311-0/+1
| | | | | | | | | Fix warnings in case Qt is not built with SCTP: qt.shiboken: (network) type 'QSctpServer' is specified in typesystem, but not defined. This could potentially lead to compilation errors. qt.shiboken: (network) type 'QSctpSocket' is specified in typesystem, but not defined. This could potentially lead to compilation errors. Change-Id: I0352e34011f2123e08fe3330a53dcdadc468d6a9 Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io>
* PySide2: Remove non-existent or moved Qt3D classesFriedemann Kleint2019-01-312-9/+0
| | | | | | | | | | | | Fix warnings: (3dcore) type 'Qt3DCore::QAbstractEngine' is specified in typesystem, but not defined. This could potentially lead to compilation errors. (3dcore) type 'Qt3DCore::Quick::QQmlAspectEngine' is specified in typesystem, but not defined. This could potentially lead to compilation errors. (3drender) type 'Qt3DRender::AssimpImporter' is specified in typesystem, but not defined. This could potentially lead to compilation errors. (3drender) type 'Qt3DRender::GLTFExporter' is specified in typesystem, but not defined. This could potentially lead to compilation errors. (3drender) type 'Qt3DRender::GLTFImporter' is specified in typesystem, but not defined. This could potentially lead to compilation errors. Change-Id: Iee873d69214e8195bfbd72bb664b691dd01d6877 Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io>
* PySide2: Fix some build warningsFriedemann Kleint2019-01-313-1/+3
| | | | | | | | | - Add enum QJSValue::ErrorType - Add enum QWebEngineDownloadItem::DownloadType - Adapt suppressed warnings in XML class Change-Id: I0d598b256cf8f83253cdb7684dc4f8c3050a76e2 Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io>
* Bump version strings to 5.12.2Simo Fält2019-01-312-2/+2
| | | | | | | Next release out 5.12 branch will be 5.12.2 Change-Id: Ib2d6d2dcf60d5568699b06a299f3261d23cd6ebd Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
* shiboken: Add option to skip deprecated functionsFriedemann Kleint2019-01-319-2/+56
| | | | | | | | | | | | | Pass the "deprecated" annotation from Clang into the meta language and reject functions based on it when the the command line option --skip-deprecated is set. By default, have Python output a deprecation warning when a deprecated function is called (which is visible when passing -Wd). Task-number: PYSIDE-487 Change-Id: Ic28d82963fde11f258b2559b562d3f24017fe98d Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
* Add classes QWebEngineHistory, WebEngineHistoryItemFriedemann Kleint2019-01-302-5/+3
| | | | | | | Fixes: PYSIDE-906 Change-Id: I612a8881d530bb098d9e2991fd47a15bc454b2d6 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
* shiboken: Make constructor checks more fine-grainedFriedemann Kleint2019-01-306-31/+78
| | | | | | | | | | | | | | | | ShibokenGenerator::isValueTypeWithCopyConstructorOnly() returned false for QWebEngineHistoryItem since the check for AbstractMetaAttributes::HasRejectedConstructor triggered on WebEngineHistoryItem(QWebEngineHistoryItemPrivate *priv), causing the function to bail out. To prevent this, add a new AbstractMetaAttributes::HasRejectedDefaultConstructor attribute and use that in isValueTypeWithCopyConstructorOnly(). Task-number: PYSIDE-906 Change-Id: I4fee83b89f0a4c44e7e8d69e118ed7f2b03ceee1 Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
* shiboken: Generate unused variable cast for variable numArgsFriedemann Kleint2019-01-301-0/+1
| | | | | | | | | Fix warning: qsignalblocker_wrapper.cpp:110:9: warning: unused variable ‘numArgs’ [-Wunused-variable] int numArgs = PyTuple_GET_SIZE(args); Change-Id: Iad56d7b5218851df2ddf5cd68bfbddc8efcf83e0 Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
* Add QtRemoteObjects classesFriedemann Kleint2019-01-304-1/+121
| | | | | | | | | | | For starters, add the classes so that ready-made classes like QAbstractItemModelReplica can be used. Actually implementing repc requires another step. Task-number: PYSIDE-862 Change-Id: I28adb1d45c262f298f0ad1926198ec6a3013542f Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
* QtCore snippets: Fix warning about printf() format in generated codeFriedemann Kleint2019-01-301-1/+2
| | | | | | | | | | Add a cast to int for value_length and slicelength, fixing: qbytearray_wrapper.cpp:5288:158: warning: format ‘%d’ expects argument of type ‘int’, but argument 4 has type ‘Py_ssize_t {aka long int}’ [-Wformat=] PyErr_Format(PyExc_ValueError, "attempt to assign %s of size %d to extended slice of size %d",Py_TYPE(_value)->tp_name, value_length, slicelength); Change-Id: I4bd2e5d43a26c73c21a6121b469f5ec1c76994b2 Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
* Run generate_pyi After Generation of All BinariesChristian Tismer2019-01-221-1/+15
| | | | | | | | | | | | | | | | | | | | In COIN, there is a racing condition under Windows: Python opens as many modules as it can, while the build process is not yet done. This can lead to the situation that a module is loaded by Python before the Windows Manifest Tool has been run, and that creates a crash. We therefore wait when COIN is run, until all binaries have been created. That means that we are the last process, and the tool must have been already run. In non-COIN builds it is more convenient when in case of errors the generator crashes early. Task-number: PYSIDE-735 Change-Id: I060dbd54432778f14f74830596f28b4db83a0692 Reviewed-by: Christian Tismer <tismer@stackless.com>
* Support help() using the Signature ModuleChristian Tismer2019-01-155-22/+148
| | | | | | | | | | | | | | | | | | | | The signature module will be used to generate automated documentation by using the function signatures as docstrings. This functionality should be low-hanging fruit. Actually, it was a bit tricky to get this working. The crucial point was to use PyType_Modified(). The function works fine on methods. Supporting types needs some more effort. It is not clear why the __signature__ attribute can be added, but the change to __doc__ is not recognized. May be related to the absence of Py_TPFLAGS_HAVE_VERSION_TAG ? This will be addressed another time. Task-number: PYSIDE-908 Change-Id: If8faa87927899f4c072d42b91eafd8f7658c6abc Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io>
* shiboken: Fix security warning in formatting error messageFriedemann Kleint2019-01-151-2/+2
| | | | | | | cppgenerator.cpp:2698:107: warning: format not a string literal and no format arguments [-Wformat-security] Change-Id: I41d976749023bda142b680930f2d54d00687eb47 Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
* Fix a crash when overriding ↵Friedemann Kleint2019-01-141-2/+4
| | | | | | | | | | | | | | QAbstractNativeEventFilter.QAbstractNativeEventFilter() long * result is nullptr for the custom message WM_USER + 1 internally used by Qt (cf QEventDispatcherWin32::processEvents()). Add a check for that. Amends 899b3cfed8e1c3513f8d3001c53b0bb0cc1af548. Task-number: PYSIDE-790 Change-Id: I4c55cfb17aa95d79f728f43a9030d1f1cbb1d024 Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io>
* shiboken: Reduce C-style casts in generated codeFriedemann Kleint2019-01-141-47/+70
| | | | | Change-Id: I9539c1a4e24e915d5b356afafbd902266d493b5a Reviewed-by: Christian Tismer <tismer@stackless.com>
* shiboken: Refactor formatting of the PyType_Slot array in writeClassDefinition()Friedemann Kleint2019-01-132-31/+55
| | | | | | | | | | Change the tp_func handling such that "" means nullptr and introduce a formatter class for the entries to use nullptr and change the C-style casts to reinterpret_cast. Change-Id: I36a1a218d003035f23ab9f8d31c7a993379e23c2 Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io> Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
* Improve check when a QFlag<Enum> is foundCristian Maureira-Fredes2019-01-111-2/+11
| | | | | | | | | | | | | | | | | | | | | | For the case of the method `addAxis` in the QPolarChart class, the generated code evaluates first the inherited method: QChart::addAxis(QtCharts::QAbstractAxis*,QFlags<Qt::AlignmentFlag>) instead of the same class method: QPolarChart::addAxis(QtCharts::QAbstractAxis*,QtCharts::QPolarChart::PolarOrientation) The condition to check if an argument was a `QFlags<Qt::AlignmentFlag>`, was just `PyNumber_Check(...)`, which was too broad, and then any Enum would pass that condition. The change was to include an additional condition to check the type of the EnumType that was passed as argument. Change-Id: I2eebb6f05c097d170a6d61633698444f03f20b02 Fixes: PYSIDE-898 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>