From d2b3cf46905c69707415a227ca2973108392ee28 Mon Sep 17 00:00:00 2001 From: Hugo Lima Date: Tue, 23 Mar 2010 19:23:01 -0300 Subject: [PATCH 0001/1285] Fix file name of generated source package. --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index d35bd94..b54e967 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -55,7 +55,7 @@ add_custom_target(uninstall "${CMAKE_COMMAND}" -P "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake") -set(ARCHIVE_NAME ${CMAKE_PROJECT_NAME}-qt${QT_VERSION_MAJOR}.${QT_VERSION_MINOR}+${BINDING_API_VERSION}) +set(ARCHIVE_NAME pyside-qt${QT_VERSION_MAJOR}.${QT_VERSION_MINOR}+${BINDING_API_VERSION}) add_custom_target(dist COMMAND mkdir -p "${CMAKE_BINARY_DIR}/${ARCHIVE_NAME}" && git log > "${CMAKE_BINARY_DIR}/${ARCHIVE_NAME}/ChangeLog" && From 2e1a48c831eb35ef8f2d77f44eed54dbf2e1c346 Mon Sep 17 00:00:00 2001 From: Hugo Lima Date: Tue, 23 Mar 2010 19:23:34 -0300 Subject: [PATCH 0002/1285] Version bump Reviewer: Marcelo Lira Reviewer: Lauro Moura --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index b54e967..b2ffc58 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -25,7 +25,7 @@ find_package(Qt4 4.5.0 REQUIRED) set(BINDING_NAME PySide) set(BINDING_API_MAJOR_VERSION "0") set(BINDING_API_MINOR_VERSION "3") -set(BINDING_API_MICRO_VERSION "0") +set(BINDING_API_MICRO_VERSION "1") set(BINDING_API_VERSION "${BINDING_API_MAJOR_VERSION}.${BINDING_API_MINOR_VERSION}.${BINDING_API_MICRO_VERSION}") set(LIB_SUFFIX "" CACHE STRING "Define suffix of directory name (32/64)" ) From 17730b9af517180cbc2a2c88c6b3f9fca99e76d6 Mon Sep 17 00:00:00 2001 From: Marcelo Lira Date: Fri, 26 Mar 2010 18:25:37 -0300 Subject: [PATCH 0003/1285] Added missing enums to QtOpenGL type system. --- PySide/QtOpenGL/typesystem_opengl.xml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/PySide/QtOpenGL/typesystem_opengl.xml b/PySide/QtOpenGL/typesystem_opengl.xml index e23bd49..62f0864 100644 --- a/PySide/QtOpenGL/typesystem_opengl.xml +++ b/PySide/QtOpenGL/typesystem_opengl.xml @@ -6,8 +6,10 @@ + + From a35a05883476b0f1fee51c0bfa99e1ee4e974038 Mon Sep 17 00:00:00 2001 From: Marcelo Lira Date: Fri, 26 Mar 2010 16:34:37 -0300 Subject: [PATCH 0004/1285] Removes the user added copy constructor for QPoint class. API Extractor already provides it. Reviewed by Hugo Parente Reviewed by Lauro Moura --- PySide/QtCore/typesystem_core.xml | 6 ------ 1 file changed, 6 deletions(-) diff --git a/PySide/QtCore/typesystem_core.xml b/PySide/QtCore/typesystem_core.xml index cae0803..df1a428 100644 --- a/PySide/QtCore/typesystem_core.xml +++ b/PySide/QtCore/typesystem_core.xml @@ -1226,12 +1226,6 @@ - - - %TYPE ptr = %CONVERTTOCPP[%TYPE](%PYARG_1); - %0 = new %TYPE(ptr.x(), ptr.y()); - - From 7107c2fef5b5a0eba19c513945d8698bc8d962bb Mon Sep 17 00:00:00 2001 From: Hugo Lima Date: Wed, 24 Mar 2010 18:41:35 -0300 Subject: [PATCH 0005/1285] Removed unused/duplicated test due to a typo. --- tests/qtuitools/test_ui.py | 14 -------------- 1 file changed, 14 deletions(-) delete mode 100644 tests/qtuitools/test_ui.py diff --git a/tests/qtuitools/test_ui.py b/tests/qtuitools/test_ui.py deleted file mode 100644 index 6f599ce..0000000 --- a/tests/qtuitools/test_ui.py +++ /dev/null @@ -1,14 +0,0 @@ - -import unittest - -from PySide.QtUiTools import QUiLoader - -from helper import UsesQApplication - -class QUiLoaderCreation(UsesQApplication): - - def testConstructor(self): - loader = QUiLoader() - -if __name__ == '__main__': - unittest.main() From 771c2be893567c8f6bd0deda87ff0e95322923a2 Mon Sep 17 00:00:00 2001 From: Hugo Lima Date: Wed, 24 Mar 2010 19:24:14 -0300 Subject: [PATCH 0006/1285] Initial bindings for QtUiTools. --- PySide/CMakeLists.txt | 1 + PySide/QtUiTools/CMakeLists.txt | 40 +++++++++++++++++++ PySide/QtUiTools/typesystem_uitools.xml | 52 +++++++++++++++++++++++++ tests/qtuitools/uiloader_test.py | 26 ++++++------- 4 files changed, 104 insertions(+), 15 deletions(-) create mode 100644 PySide/QtUiTools/CMakeLists.txt create mode 100644 PySide/QtUiTools/typesystem_uitools.xml diff --git a/PySide/CMakeLists.txt b/PySide/CMakeLists.txt index 6b8b3b2..c74e0b9 100644 --- a/PySide/CMakeLists.txt +++ b/PySide/CMakeLists.txt @@ -39,3 +39,4 @@ HAS_QT_MODULE(QT_QTXML_FOUND QtXml) HAS_QT_MODULE(QT_QTTEST_FOUND QtTest) HAS_QT_MODULE(QT_QTOPENGL_FOUND QtOpenGL) HAS_QT_MODULE(QT_QTSQL_FOUND QtSql) +HAS_QT_MODULE(QT_QTUITOOLS_FOUND QtUiTools) diff --git a/PySide/QtUiTools/CMakeLists.txt b/PySide/QtUiTools/CMakeLists.txt new file mode 100644 index 0000000..1145f97 --- /dev/null +++ b/PySide/QtUiTools/CMakeLists.txt @@ -0,0 +1,40 @@ +project(QtUiTools) + +set(QtUiTools_SRC + ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtUiTools/qtuitools_module_wrapper.cpp + ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtUiTools/quiloader_wrapper.cpp +) + +execute_generator(uitools QtUiTools_SRC "${CMAKE_CURRENT_BINARY_DIR}:${QtCore_SOURCE_DIR}:${QtGui_BINARY_DIR}:${QtGui_SOURCE_DIR}:${QtXml_SOURCE_DIR}:${QtUiTools_SOURCE_DIR}") + +include_directories(${CMAKE_CURRENT_SOURCE_DIR} + ${QT_QTCORE_INCLUDE_DIR} + ${QT_QTGUI_INCLUDE_DIR} + ${QT_QTXML_INCLUDE_DIR} + ${QT_QTUITOOLS_INCLUDE_DIR} + ${PYTHON_INCLUDE_PATH} + ${SHIBOKEN_INCLUDE_DIR} + ${libpyside_SOURCE_DIR} + ${QtCore_BINARY_DIR}/PySide/QtCore/ + ${QtXml_BINARY_DIR}/PySide/QtXml/ + ${QtGui_BINARY_DIR}/PySide/QtGui/ + ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtUiTools) + +add_library(QtUiTools MODULE ${QtUiTools_SRC}) +set_target_properties(QtUiTools PROPERTIES PREFIX "") +target_link_libraries(QtUiTools + pyside + ${PYTHON_LIBRARIES} + ${QT_QTCORE_LIBRARY} + ${QT_QTGUI_LIBRARY} + ${QT_QTXML_LIBRARY} + ${QT_QTUITOOLS_LIBRARY}) + +add_dependencies(QtUiTools QtGui QtXml) + +# install +install(FILES ${CMAKE_CURRENT_BINARY_DIR}/QtUiTools.so + DESTINATION ${SITE_PACKAGE}/PySide) +install(FILES ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtUiTools/pyside_qtuitools_python.h + DESTINATION include/PySide/QtUiTools/) + diff --git a/PySide/QtUiTools/typesystem_uitools.xml b/PySide/QtUiTools/typesystem_uitools.xml new file mode 100644 index 0000000..c155bff --- /dev/null +++ b/PySide/QtUiTools/typesystem_uitools.xml @@ -0,0 +1,52 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + QFile f(%1); + if (f.open(QIODevice::ReadOnly | QIODevice::Text)) + %PYARG_0 = %CONVERTTOPYTHON[QWidget*](%CPPSELF.load(&f, %2)); + else + PyErr_SetString(PyExc_RuntimeError, "Unable to open ui file"); + + + + + diff --git a/tests/qtuitools/uiloader_test.py b/tests/qtuitools/uiloader_test.py index 83dd9c4..fe3725b 100644 --- a/tests/qtuitools/uiloader_test.py +++ b/tests/qtuitools/uiloader_test.py @@ -2,11 +2,8 @@ import unittest import os from helper import UsesQApplication -from PySide.QtGui import QWidget, QFrame, QPushButton -from PySide.QtUiTools import QUiLoader - -#ugly workaround for work with ctest -file_path = [ "./test.ui", "./qtuitools/test.ui", "../tests/qtuitools/test.ui", "../../tests/qtuitools/test.ui" ] +from PySide.QtGui import * +from PySide.QtUiTools import * def get_file_path(): for path in file_path: @@ -16,18 +13,17 @@ def get_file_path(): class QUioaderTeste(UsesQApplication): def testLoadFile(self): - widget = QWidget() + filePath = os.path.join(os.path.dirname(__file__), 'test.ui') + loader = QUiLoader() + parent = QWidget() + w = loader.load(filePath, parent) + self.assertNotEqual(w, None) - file_path = get_file_path() - self.assertTrue(file_path != "") + self.assertEqual(len(parent.children()), 1) - QUiLoader.loadUi(file_path, widget) - - self.assertTrue("child_object" in dir(widget)) - self.assertTrue("grandson_object" in dir(widget.child_object)) - - self.assertEqual(type(widget.child_object), QFrame) - self.assertEqual(type(widget.child_object.grandson_object), QPushButton) + child = w.findChild(QWidget, "child_object") + self.assertNotEqual(child, None) + self.assertEqual(w.findChild(QWidget, "grandson_object"), child.findChild(QWidget, "grandson_object")) if __name__ == '__main__': unittest.main() From 718dd06ecd8443bc556f68bb17f7958e891ee48b Mon Sep 17 00:00:00 2001 From: Hugo Lima Date: Wed, 24 Mar 2010 20:23:47 -0300 Subject: [PATCH 0007/1285] Fix QObject::findChildren and QObject::findChild methods. QUiTools unit tests uses these functions and will fail without this patch. Reviewer: Marcelo Lira Reviewer: Anderson Lizardo --- PySide/QtCore/glue/qobject_findchild.cpp | 30 ++++++++++++++++++++++++ PySide/QtCore/typesystem_core.xml | 30 +++++++----------------- 2 files changed, 39 insertions(+), 21 deletions(-) create mode 100644 PySide/QtCore/glue/qobject_findchild.cpp diff --git a/PySide/QtCore/glue/qobject_findchild.cpp b/PySide/QtCore/glue/qobject_findchild.cpp new file mode 100644 index 0000000..351aa69 --- /dev/null +++ b/PySide/QtCore/glue/qobject_findchild.cpp @@ -0,0 +1,30 @@ +static QObject* _findChildHelper(const QObject* parent, const QString& name, PyTypeObject* desiredType) +{ + foreach(QObject* child, parent->children()) { + Shiboken::AutoDecRef pyChild(%CONVERTTOPYTHON[QObject*](child)); + if (PyType_IsSubtype(pyChild->ob_type, desiredType) + && (name.isNull() || name == child->objectName())) { + return child; + } + } + + QObject* obj; + foreach(QObject* child, parent->children()) { + obj = _findChildHelper(child, name, desiredType); + if (obj) + return obj; + } + return 0; +} + +static void _findChildrenHelper(const QObject* parent, const QString& name, PyTypeObject* desiredType, PyObject* result) +{ + foreach(QObject* child, parent->children()) { + Shiboken::AutoDecRef pyChild(%CONVERTTOPYTHON[QObject*](child)); + if (PyType_IsSubtype(pyChild->ob_type, desiredType) + && (name.isNull() || name == child->objectName())) { + PyList_Append(result, pyChild); + } + _findChildrenHelper(child, name, desiredType, result); + } +} \ No newline at end of file diff --git a/PySide/QtCore/typesystem_core.xml b/PySide/QtCore/typesystem_core.xml index df1a428..2a91dcb 100644 --- a/PySide/QtCore/typesystem_core.xml +++ b/PySide/QtCore/typesystem_core.xml @@ -1551,35 +1551,23 @@ + - const bool isEmpty = %2.isEmpty(); - foreach(QObject* o, %CPPSELF.children()) { - if (isEmpty || %2 == o->objectName()) { - PyObject* obj = %CONVERTTOPYTHON[QObject*](o); - Shiboken::setParent(self, obj); - if (PyType_IsSubtype(obj->ob_type, (PyTypeObject*)%PYARG_1)) - %PYARG_0 = obj; - else - Py_DECREF(obj); - } - } + %PYARG_0 = %CONVERTTOPYTHON[QObject*](_findChildHelper(%CPPSELF, %2, (PyTypeObject*)%PYARG_1)); + + + %PYARG_0 = PyList_New(0); - const bool isEmpty = %2.isEmpty(); - foreach(QObject* o, %CPPSELF.children()) { - if (isEmpty || %2 == o->objectName()) { - PyObject* obj = %CONVERTTOPYTHON[QObject*](o); - Shiboken::setParent(self, obj); - if (PyType_IsSubtype(obj->ob_type, (PyTypeObject*)%PYARG_1)) - PyList_Append(%PYARG_0, obj); - Py_DECREF(obj); - } - } + _findChildrenHelper(%CPPSELF, %2, (PyTypeObject*)%PYARG_1, %PYARG_0); + + + From 5bd8147956aa7b54af96ce4a0ec9f00afb8fcf88 Mon Sep 17 00:00:00 2001 From: Hugo Lima Date: Tue, 30 Mar 2010 12:01:10 -0300 Subject: [PATCH 0008/1285] Adapt to changes in libshiboken MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Reviewer: Anderson Lizardo Reviewer: Bruno Araújo --- PySide/QtCore/glue/qcoreapplication_init.cpp | 7 +++++-- PySide/QtCore/qvariant_conversions.h | 2 +- PySide/QtCore/typesystem_core.xml | 2 +- PySide/QtGui/glue/qapplication_init.cpp | 7 +++++-- libpyside/pysideconversions.h | 4 ++-- 5 files changed, 14 insertions(+), 8 deletions(-) diff --git a/PySide/QtCore/glue/qcoreapplication_init.cpp b/PySide/QtCore/glue/qcoreapplication_init.cpp index d290d6e..f53db03 100644 --- a/PySide/QtCore/glue/qcoreapplication_init.cpp +++ b/PySide/QtCore/glue/qcoreapplication_init.cpp @@ -31,9 +31,12 @@ int SbkQCoreApplication_Init(PyObject* self, PyObject* args, PyObject*) return -1; } - SbkBaseWrapper_setCptr(self, new QCoreApplication(QCoreApplicationArgCount, QCoreApplicationArgValues)); + void* cptr = new QCoreApplication(QCoreApplicationArgCount, QCoreApplicationArgValues); + Shiboken::setCppPointer(reinterpret_cast(self), + Shiboken::SbkType(), + cptr); SbkBaseWrapper_setValidCppObject(self, 1); - Shiboken::BindingManager::instance().registerWrapper(reinterpret_cast(self)); + Shiboken::BindingManager::instance().registerWrapper(reinterpret_cast(self), cptr); Py_INCREF(self); Py_AtExit(DeleteQCoreApplicationAtExit); diff --git a/PySide/QtCore/qvariant_conversions.h b/PySide/QtCore/qvariant_conversions.h index fc3f96f..d6c23ef 100644 --- a/PySide/QtCore/qvariant_conversions.h +++ b/PySide/QtCore/qvariant_conversions.h @@ -82,7 +82,7 @@ inline QVariant Converter::toCpp(PyObject* pyobj) } } else { // Is a known Qt type - return QVariant(typeCode, reinterpret_cast(pyobj)->cptr); + return QVariant(typeCode, reinterpret_cast(pyobj)->cptr[0]); } } diff --git a/PySide/QtCore/typesystem_core.xml b/PySide/QtCore/typesystem_core.xml index 2a91dcb..67d48f7 100644 --- a/PySide/QtCore/typesystem_core.xml +++ b/PySide/QtCore/typesystem_core.xml @@ -2786,7 +2786,7 @@ // The normal here would be to use the 'reference-count' tag but this // method is strongly tied to 'setTargetState' since both affect the same // internal value in QAbstractTransition. - Shiboken::SbkBaseWrapper_keepReference(reinterpret_cast<SbkBaseWrapper*>(%PYSELF), "setTargetState(QAbstractState*)1", %PYARG_1); + Shiboken::keepReference(reinterpret_cast<SbkBaseWrapper*>(%PYSELF), "setTargetState(QAbstractState*)1", %PYARG_1); diff --git a/PySide/QtGui/glue/qapplication_init.cpp b/PySide/QtGui/glue/qapplication_init.cpp index 554641d..20e487b 100644 --- a/PySide/QtGui/glue/qapplication_init.cpp +++ b/PySide/QtGui/glue/qapplication_init.cpp @@ -30,9 +30,12 @@ int SbkQApplication_Init(PyObject* self, PyObject* args, PyObject*) return -1; } - SbkBaseWrapper_setCptr(self, new QApplication(QApplicationArgCount, QApplicationArgValues)); + void* cptr = new QApplication(QApplicationArgCount, QApplicationArgValues); + Shiboken::setCppPointer(reinterpret_cast(self), + Shiboken::SbkType(), + cptr); SbkBaseWrapper_setValidCppObject(self, 1); - Shiboken::BindingManager::instance().registerWrapper(reinterpret_cast(self)); + Shiboken::BindingManager::instance().registerWrapper(reinterpret_cast(self), cptr); // Verify if qApp is in main module const char QAPP_MACRO[] = "qApp"; diff --git a/libpyside/pysideconversions.h b/libpyside/pysideconversions.h index 3c8effe..0c13d05 100644 --- a/libpyside/pysideconversions.h +++ b/libpyside/pysideconversions.h @@ -78,7 +78,7 @@ struct QtDictConverter static inline QtDict toCpp(PyObject* pyobj) { if (PyObject_TypeCheck(pyobj, Shiboken::SbkType())) - return *reinterpret_cast(SbkBaseWrapper_cptr(pyobj)); + return *reinterpret_cast(Shiboken::getCppPointer(pyobj, Shiboken::SbkType())); QtDict result; @@ -121,7 +121,7 @@ struct QSequenceConverter static T toCpp(PyObject* pyobj) { if (PyObject_TypeCheck(pyobj, Shiboken::SbkType())) - return *reinterpret_cast(SbkBaseWrapper_cptr(pyobj)); + return *reinterpret_cast(Shiboken::getCppPointer(pyobj, Shiboken::SbkType())); T result; for (int i = 0; i < PySequence_Size(pyobj); i++) { From bf8b1e7d38dd849a6cd22005fcfb0668007915f3 Mon Sep 17 00:00:00 2001 From: Anderson Lizardo Date: Mon, 29 Mar 2010 16:55:28 -0400 Subject: [PATCH 0009/1285] QtNetwork/typesystem_network.xml updates Reviewed-by: Lauro Moura Reviewed-by: Hugo Lima --- PySide/QtNetwork/typesystem_network.xml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/PySide/QtNetwork/typesystem_network.xml b/PySide/QtNetwork/typesystem_network.xml index afdccaf..def235f 100644 --- a/PySide/QtNetwork/typesystem_network.xml +++ b/PySide/QtNetwork/typesystem_network.xml @@ -12,6 +12,7 @@ + @@ -131,7 +132,7 @@ - + From 96e7b2db77552e1b322427125a9044381f778182 Mon Sep 17 00:00:00 2001 From: Anderson Lizardo Date: Mon, 29 Mar 2010 14:24:27 -0400 Subject: [PATCH 0010/1285] QEasingCurve::setCustomType typesystem workaround Due to bug #201, typesystem signatures that take pointer to function types are incorrectly expanded. To workaround this bug, the typesystem signature for QEasingCurve::setCustomType removal is: But for ARM, this same workaround does not work, and has to be: This is probably due to how apiextractor/shiboken is incorrectly expanding the pointer to function signature. To remove setCustomType on ARM (and thus allow the build to succeed), this commit adds both signatures. This is a temporary fix just while bug #201 is not fixed. Reviewed-by: Lauro Moura Reviewed-by: Bruno Araujo --- PySide/QtCore/typesystem_core.xml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/PySide/QtCore/typesystem_core.xml b/PySide/QtCore/typesystem_core.xml index 67d48f7..1f50621 100644 --- a/PySide/QtCore/typesystem_core.xml +++ b/PySide/QtCore/typesystem_core.xml @@ -2836,6 +2836,10 @@ + + From 77c2be562b00166172caf7fc460765488e47e3a4 Mon Sep 17 00:00:00 2001 From: Marcelo Lira Date: Tue, 30 Mar 2010 15:28:57 -0300 Subject: [PATCH 0011/1285] Extended QMatrix test with QPoint reverse multiplication. Reviewed by Anderson Lizardo Reviewed by Hugo Parente --- tests/qtgui/qmatrix_test.py | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/tests/qtgui/qmatrix_test.py b/tests/qtgui/qmatrix_test.py index 6404fef..7c87e23 100644 --- a/tests/qtgui/qmatrix_test.py +++ b/tests/qtgui/qmatrix_test.py @@ -1,8 +1,26 @@ import unittest -from PySide.QtGui import QMatrix4x4 +from PySide.QtCore import QPoint +from PySide.QtGui import QMatrix, QMatrix4x4 + + +def qpointTimesQMatrix(point, matrix): + '''As seen in "QPoint QMatrix::map(const QPoint &p) const" C++ implementation.''' + return QPoint(matrix.m11() * point.x() + matrix.m21() * point.y() + matrix.dx(), + matrix.m12() * point.x() + matrix.m22() * point.y() + matrix.dy()) class QMatrixTest(unittest.TestCase): + + def testMatrix(self): + matrix = QMatrix(11, 12, 21, 22, 100, 200) + point = QPoint(3, 3) + self.assertEqual(point * matrix, qpointTimesQMatrix(point, matrix)) + + def testMatrixWithWrongType(self): + matrix = QMatrix(11, 12, 21, 22, 100, 200) + point = QPoint(3, 3) + self.assertRaises(TypeError, matrix.__mul__, point) + def testMatrix4x4(self): self.assertRaises(TypeError, QMatrix4x4, [0.0, 1.0, 2.0, 3.0]) self.assertRaises(TypeError, QMatrix4x4, [0.0, 1.0, 2.0, 'I', From 956d6fd530a5c1c526dc64a357addd790ab87c12 Mon Sep 17 00:00:00 2001 From: Hugo Lima Date: Thu, 1 Apr 2010 18:12:40 -0300 Subject: [PATCH 0012/1285] Fix some issues with QVariant, including the QAbstractKinectScroller one. --- PySide/QtCore/qvariant_conversions.h | 94 +++++++++++++++------------- PySide/QtCore/typesystem_core.xml | 5 ++ tests/qtgui/qvariant_test.py | 27 ++++++++ 3 files changed, 82 insertions(+), 44 deletions(-) diff --git a/PySide/QtCore/qvariant_conversions.h b/PySide/QtCore/qvariant_conversions.h index d6c23ef..cd2ab8d 100644 --- a/PySide/QtCore/qvariant_conversions.h +++ b/PySide/QtCore/qvariant_conversions.h @@ -32,57 +32,63 @@ QT_END_NAMESPACE namespace Shiboken { // all types are convertible to QVariant -inline bool Converter::isConvertible(PyObject* pyobj) +inline bool Converter::isConvertible(PyObject* pyObj) { return true; } -inline QVariant Converter::toCpp(PyObject* pyobj) +inline QVariant Converter::toCpp(PyObject* pyObj) { - if (SbkQVariant_Check(pyobj)) - return *Converter::toCpp(pyobj); - // voodoo stuff to avoid linking qtcore bindings with qtgui bindings - QString className(pyobj->ob_type->tp_name); - className = className.mid(className.lastIndexOf(".") + 1); - uint typeCode = QMetaType::type(className.toAscii()); - if (!typeCode || typeCode > QVariant::UserType) { + if (SbkQVariant_Check(pyObj)) + return *Converter::toCpp(pyObj); - // Check the implicit conversion stuff for most python-native types - if (SbkPySide_QtCore_QVariant_Type_CheckExact(pyobj)) { - QVariant::Type cpp_arg0 = Shiboken::Converter::toCpp(pyobj); - // QVariant(QVariant::Type) - return QVariant(cpp_arg0); - } else if (SbkPySide_QtCore_Qt_GlobalColor_CheckExact(pyobj)) { - Qt::GlobalColor cpp_arg0 = Shiboken::Converter::toCpp(pyobj); - // QVariant(Qt::GlobalColor) - return QVariant(cpp_arg0); - } else if (PyBool_Check(pyobj)) { - bool cpp_arg0 = Shiboken::Converter::toCpp(pyobj); - // QVariant(bool) - return QVariant(cpp_arg0); - } else if (PyString_Check(pyobj)) { - const char * cpp_arg0 = Shiboken::Converter::toCpp(pyobj); - // QVariant(const char*) - return QVariant(cpp_arg0); - } else if (PyFloat_Check(pyobj)) { - double cpp_arg0 = Shiboken::Converter::toCpp(pyobj); - // QVariant(double) - return QVariant(cpp_arg0); - } else if (PyNumber_Check(pyobj)) { - int cpp_arg0 = Shiboken::Converter::toCpp(pyobj); - // QVariant(int) - return QVariant(cpp_arg0); - } else if (PyLong_Check(pyobj)) { - qlonglong cpp_arg0 = Shiboken::Converter::toCpp(pyobj); - // QVariant(qlonglong) - return QVariant(cpp_arg0); - } else { - Py_INCREF(pyobj); - return QVariant::fromValue(pyobj); - } + // Primitive types + if (PyBool_Check(pyObj)) { + // QVariant(bool) + return QVariant(Shiboken::Converter::toCpp(pyObj)); + } else if (PyString_CheckExact(pyObj)) { + // QVariant(const char*) + return QVariant(Shiboken::Converter::toCpp(pyObj)); + } else if (PyFloat_CheckExact(pyObj)) { + // QVariant(double) + return QVariant(Shiboken::Converter::toCpp(pyObj)); + } else if (PyInt_CheckExact(pyObj)) { + // QVariant(int) + return QVariant(Shiboken::Converter::toCpp(pyObj)); + } else if (PyLong_CheckExact(pyObj)) { + // QVariant(qlonglong) + return QVariant(Shiboken::Converter::toCpp(pyObj)); + } else if (Shiboken::isShibokenEnum(pyObj)) { + // QVariant(enum) + return QVariant(Shiboken::Converter::toCpp(pyObj)); + } else if (!Shiboken::isShibokenType(pyObj) || Shiboken::isUserType(pyObj)) { + // QVariant(User class) + Py_INCREF(pyObj); + return QVariant::fromValue(pyObj); } else { - // Is a known Qt type - return QVariant(typeCode, reinterpret_cast(pyobj)->cptr[0]); + // a class supported by QVariant? + const char* typeName = pyObj->ob_type->tp_name; + // check if the name starts with PySide. + if (!strncmp("PySide.", typeName, 7)) { + // get the type name + const char* lastDot = typeName; + for (int i = 8; typeName[i]; ++i) { + if (typeName[i] == '.') + lastDot = &typeName[i]; + } + lastDot++; + uint typeCode = QMetaType::type(lastDot); + if (!typeCode) {// Try with star at end, for QObject*, QWidget* and QAbstractKinectScroller* + QString typeName(lastDot); + typeName += '*'; + typeCode = QMetaType::type(typeName.toAscii()); + } + if (typeCode) + return QVariant(typeCode, reinterpret_cast(pyObj)->cptr[0]); + } + // Is a shiboken type not known by Qt + Py_INCREF(pyObj); + return QVariant::fromValue(pyObj); } } diff --git a/PySide/QtCore/typesystem_core.xml b/PySide/QtCore/typesystem_core.xml index 1f50621..d3bb0df 100644 --- a/PySide/QtCore/typesystem_core.xml +++ b/PySide/QtCore/typesystem_core.xml @@ -1637,7 +1637,12 @@ + + + + + diff --git a/tests/qtgui/qvariant_test.py b/tests/qtgui/qvariant_test.py index 7f9f109..92d3381 100644 --- a/tests/qtgui/qvariant_test.py +++ b/tests/qtgui/qvariant_test.py @@ -48,6 +48,33 @@ class QVariantQPixmap(UsesQApplication): self.assertEqual(variant.typeName(), "QPixmap") + def testQObject(self): + obj = QObject() + v = QVariant(obj) + self.assertEqual(v.typeName(), 'QObject*') + + def testQWidget(self): + obj = QWidget() + v = QVariant(obj) + self.assertEqual(v.typeName(), 'QWidget*') + +class MyColor(QColor): + pass + +class MyPrimitive(int): + pass + +class QVariantMess(unittest.TestCase): + def testMyColor(self): + c1 = MyColor() + v = QVariant(c1) + self.assertEqual(type(v.toPyObject()), MyColor) + + def testMyPrimitive(self): + p = MyPrimitive(3) + v = QVariant(p) + self.assertNotEqual(v.type(), QVariant.Int) + self.assertTrue(v.toPyObject() is p) if __name__ == '__main__': unittest.main() From 9b338f98571bd2d0433564014af3cf18e87788bd Mon Sep 17 00:00:00 2001 From: Hugo Lima Date: Thu, 1 Apr 2010 19:25:00 -0300 Subject: [PATCH 0013/1285] QVariant.toList returns a list when it contains a python sequence. --- PySide/QtCore/typesystem_core.xml | 16 ++++++++++++++++ tests/qtcore/qvariant_test.py | 5 +++++ 2 files changed, 21 insertions(+) diff --git a/PySide/QtCore/typesystem_core.xml b/PySide/QtCore/typesystem_core.xml index d3bb0df..d3a7904 100644 --- a/PySide/QtCore/typesystem_core.xml +++ b/PySide/QtCore/typesystem_core.xml @@ -1744,6 +1744,22 @@ %PYARG_0 = %CONVERTTOPYTHON[%RETURN_TYPE](%CPPSELF.typeName()); + + + if (%CPPSELF.userType() == qMetaTypeId<PyObjectHolder>()) { + PyObject* val = %CPPSELF.value<PyObjectHolder>(); + if (PySequence_Check(val)) { + %PYARG_0 = val; + Py_INCREF(val); + } else { + %PYARG_0 = Py_None; + Py_INCREF(Py_None); + } + } else { + %PYARG_0 = %CONVERTTOPYTHON[%RETURN_TYPE](%CPPSELF.%FUNCTION_NAME()); + } + + diff --git a/tests/qtcore/qvariant_test.py b/tests/qtcore/qvariant_test.py index d1823ee..5c23b40 100644 --- a/tests/qtcore/qvariant_test.py +++ b/tests/qtcore/qvariant_test.py @@ -131,6 +131,11 @@ class QVariantConstructor(unittest.TestCase): self.assertEqual(variant.type(), QVariant.Size) self.assertEqual(variant.toSize(), mysize) + def testToList(self): + v = QVariant((1,2,3)) + self.assertEqual(v.toList(), (1, 2, 3)) + v = QVariant([0,1,2]) + self.assertEqual(v.toList(), [0, 1, 2]) if __name__ == '__main__': unittest.main() From 826678cb91124784339c2a92118e82413ef03b5c Mon Sep 17 00:00:00 2001 From: Hugo Lima Date: Thu, 1 Apr 2010 19:26:07 -0300 Subject: [PATCH 0014/1285] Do not handle QVariant user types as Python objects, only the real Python objects. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Reviewer: Anderson Lizardo Reviewer: Bruno Araújo --- PySide/QtCore/typesystem_core.xml | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/PySide/QtCore/typesystem_core.xml b/PySide/QtCore/typesystem_core.xml index d3a7904..62a963f 100644 --- a/PySide/QtCore/typesystem_core.xml +++ b/PySide/QtCore/typesystem_core.xml @@ -1717,11 +1717,10 @@ - const char* type_name = %CPPSELF.typeName(); - uint type_id = QMetaType::type(type_name); - if (!type_id || type_id > QVariant::UserType) { + uint typeId = %CPPSELF.userType(); + if (typeId == qMetaTypeId<PyObjectHolder>()) { %PYARG_0 = %CPPSELF.value<PyObjectHolder>(); - } else if (type_id == QVariant::String) { + } else if (typeId == QVariant::String) { %PYARG_0 = %CONVERTTOPYTHON[QString](%CPPSELF.toString()); } else { %PYARG_0 = Py_None; @@ -1734,14 +1733,14 @@ if (%CPPSELF.isNull()) { %PYARG_0 = Py_None; Py_INCREF(Py_None); - } else if (%CPPSELF.userType() == QMetaTypeId<PyObjectHolder>::qt_metatype_id()) { + } else if (%CPPSELF.userType() == qMetaTypeId<PyObjectHolder>()) { // emulate PyQt4 behaviour PyObject* obj = %CPPSELF.value<PyObjectHolder>(); if (PySequence_Check(obj)) %PYARG_0 = %CONVERTTOPYTHON[%RETURN_TYPE]("QVariantList"); } if (!%PYARG_0) - %PYARG_0 = %CONVERTTOPYTHON[%RETURN_TYPE](%CPPSELF.typeName()); + %PYARG_0 = %CONVERTTOPYTHON[%RETURN_TYPE](%CPPSELF.%FUNCTION_NAME()); From a5b2237ee0a7a894e1eac4e2c0f4b270866a059a Mon Sep 17 00:00:00 2001 From: Hugo Parente Lima Date: Mon, 5 Apr 2010 18:10:23 -0300 Subject: [PATCH 0015/1285] None is convertible to QString, the result is a QString where QString.isNull is true. --- PySide/QtCore/qstring_conversions.h | 3 +++ tests/qtcore/qobject_test.py | 6 ------ tests/qtcore/qstring_test.py | 4 ++++ 3 files changed, 7 insertions(+), 6 deletions(-) diff --git a/PySide/QtCore/qstring_conversions.h b/PySide/QtCore/qstring_conversions.h index d2edf94..2c59928 100644 --- a/PySide/QtCore/qstring_conversions.h +++ b/PySide/QtCore/qstring_conversions.h @@ -7,6 +7,7 @@ inline bool Converter::isConvertible(PyObject* pyObj) || PyUnicode_Check(pyObj) || SbkQByteArray_Check(pyObj) || SbkQLatin1String_Check(pyObj) + || pyObj == Py_None #if PY_VERSION_HEX < 0x03000000 || (pyObj->ob_type->tp_as_buffer && PyType_HasFeature(pyObj->ob_type, Py_TPFLAGS_HAVE_GETCHARBUFFER) @@ -35,6 +36,8 @@ inline QString Converter::toCpp(PyObject* pyObj) #endif } else if (PyString_Check(pyObj)) { return QString(Converter< char * >::toCpp(pyObj)); + } else if (pyObj == Py_None) { + return QString(); } #if PY_VERSION_HEX < 0x03000000 // Support for buffer objects on QString constructor diff --git a/tests/qtcore/qobject_test.py b/tests/qtcore/qobject_test.py index 848cce3..a1749ba 100644 --- a/tests/qtcore/qobject_test.py +++ b/tests/qtcore/qobject_test.py @@ -25,12 +25,6 @@ class ObjectNameCase(unittest.TestCase): self.assertEqual(name, obj.objectName()) - def testNone(self): - #QObject.objectName(None) - obj = QObject() - - self.assertRaises(TypeError, obj.setObjectName, None) - def testDefault(self): #QObject.objectName() default obj = QObject() diff --git a/tests/qtcore/qstring_test.py b/tests/qtcore/qstring_test.py index 193ef09..9bb68a3 100644 --- a/tests/qtcore/qstring_test.py +++ b/tests/qtcore/qstring_test.py @@ -105,6 +105,10 @@ class QStringConstructor(unittest.TestCase): self.assertEqual(obj1, obj2) + def testNullQString(self): + s = QString(None) + self.assertTrue(s.isNull()) + def testQStringFromPy(self): #QString(const char*) sample = 'a new string' From 9f9c1aed52213deba3ca4b34b9010f7dbadb45ef Mon Sep 17 00:00:00 2001 From: Hugo Parente Lima Date: Tue, 6 Apr 2010 14:09:34 -0300 Subject: [PATCH 0016/1285] Better warning message when the signal emission fail. --- libpyside/signalmanager.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libpyside/signalmanager.cpp b/libpyside/signalmanager.cpp index 9d64861..c2ece92 100644 --- a/libpyside/signalmanager.cpp +++ b/libpyside/signalmanager.cpp @@ -249,7 +249,7 @@ bool SignalManager::emitSignal(QObject* source, const char* signal, PyObject* ar else return emitNormalSignal(source, signalIndex, signal, args, argTypes); } - qWarning() << "Error emitting signal: " << signal; + qWarning() << "Signal" << signal << "not found, probably a typo or you are emitting a dynamic signal that has never been used in a connection until now."; return false; } From fc08b8878113645692f65d84e488de8288fa09b7 Mon Sep 17 00:00:00 2001 From: Hugo Parente Lima Date: Tue, 6 Apr 2010 14:13:43 -0300 Subject: [PATCH 0017/1285] Fix QObject::connect(sender, signal, slot). --- PySide/QtCore/typesystem_core.xml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/PySide/QtCore/typesystem_core.xml b/PySide/QtCore/typesystem_core.xml index 62a963f..f928feb 100644 --- a/PySide/QtCore/typesystem_core.xml +++ b/PySide/QtCore/typesystem_core.xml @@ -1471,8 +1471,10 @@ + // %FUNCTION_NAME() - disable generation of function call. - %PYARG_0 = %CONVERTTOPYTHON[bool](qobjectConnect(%1, %2, %CPPSELF, %4)); + %PYARG_0 = %CONVERTTOPYTHON[bool](qobjectConnect(%1, %2, %CPPSELF, %3, %4)); + From fa9a91b59e4dee7e289c9711b86525016491e414 Mon Sep 17 00:00:00 2001 From: Hugo Parente Lima Date: Tue, 6 Apr 2010 17:02:13 -0300 Subject: [PATCH 0018/1285] QStrign uses the same hash function of str/unicode objects. --- PySide/QtCore/glue/qstring_hashfunc.cpp | 6 ++++++ PySide/QtCore/typesystem_core.xml | 4 +++- tests/qtcore/qstring_test.py | 5 +++++ 3 files changed, 14 insertions(+), 1 deletion(-) create mode 100644 PySide/QtCore/glue/qstring_hashfunc.cpp diff --git a/PySide/QtCore/glue/qstring_hashfunc.cpp b/PySide/QtCore/glue/qstring_hashfunc.cpp new file mode 100644 index 0000000..b2fb6a1 --- /dev/null +++ b/PySide/QtCore/glue/qstring_hashfunc.cpp @@ -0,0 +1,6 @@ +static long QStringCustomHashFunction(const QString& str) +{ + QByteArray data = str.toUtf8(); + Shiboken::AutoDecRef unicodeObj(PyUnicode_DecodeUTF8(data.constData(), data.length(), 0)); + return unicodeObj->ob_type->tp_hash(unicodeObj); +} diff --git a/PySide/QtCore/typesystem_core.xml b/PySide/QtCore/typesystem_core.xml index f928feb..1f9b9ac 100644 --- a/PySide/QtCore/typesystem_core.xml +++ b/PySide/QtCore/typesystem_core.xml @@ -976,13 +976,15 @@ - + + + diff --git a/tests/qtcore/qstring_test.py b/tests/qtcore/qstring_test.py index 9bb68a3..3f0fb49 100644 --- a/tests/qtcore/qstring_test.py +++ b/tests/qtcore/qstring_test.py @@ -183,5 +183,10 @@ class QStringImplicitConvertion(unittest.TestCase): obj.setObjectName(QByteArray('foobar')) self.assertEqual(obj.objectName(), QString('foobar')) +class QStringHash(unittest.TestCase): + def testHash(self): + self.assertEqual(hash("key"), hash(QString("key"))) + self.assertEqual(hash(u"aéióu"), hash(QString(u"aéióu"))) + if __name__ == '__main__': unittest.main() From bd8d5dabb334d16ccfdb76fe0fb8d083be2c0219 Mon Sep 17 00:00:00 2001 From: Hugo Parente Lima Date: Tue, 6 Apr 2010 18:57:10 -0300 Subject: [PATCH 0019/1285] Small optimization in QObject::receivers Reviewer: Lauro Moura Reviewer: Luciano Wolf --- PySide/QtCore/typesystem_core.xml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/PySide/QtCore/typesystem_core.xml b/PySide/QtCore/typesystem_core.xml index 1f9b9ac..8bb0053 100644 --- a/PySide/QtCore/typesystem_core.xml +++ b/PySide/QtCore/typesystem_core.xml @@ -1623,10 +1623,10 @@ - //Avoid return +1 because SignalManager connect to "destroyed()" signal to control object timelife + // Avoid return +1 because SignalManager connect to "destroyed()" signal to control object timelife int ret = %CPPSELF.%FUNCTION_NAME(%1); - if ((strcmp(%1, SIGNAL(destroyed())) == 0) && (PySide::SignalManager::instance().hasConnectionWith(%CPPSELF))) - ret--; + if (ret > 0 && strcmp(%1, SIGNAL(destroyed())) == 0 && PySide::SignalManager::instance().hasConnectionWith(%CPPSELF)) + ret--; %PYARG_0 = %CONVERTTOPYTHON[int](ret); From f8907f4e4ed306f07c28d285d2d46bd2b43ea19b Mon Sep 17 00:00:00 2001 From: Hugo Parente Lima Date: Thu, 8 Apr 2010 16:34:52 -0300 Subject: [PATCH 0020/1285] Fix bug#210, "Can't connect generic callable objects as a slot". MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Reviewer: Bruno Araújo Reviewer: Lauro Moura --- PySide/QtCore/glue/qobject_connect.cpp | 5 ++--- libpyside/signalmanager.cpp | 2 ++ tests/signals/signal_emission_test.py | 15 +++++++++++++++ 3 files changed, 19 insertions(+), 3 deletions(-) diff --git a/PySide/QtCore/glue/qobject_connect.cpp b/PySide/QtCore/glue/qobject_connect.cpp index 16842a0..deeaa6a 100644 --- a/PySide/QtCore/glue/qobject_connect.cpp +++ b/PySide/QtCore/glue/qobject_connect.cpp @@ -8,11 +8,10 @@ static bool getReceiver(PyObject *callback, QObject **receiver, PyObject **self) *self = PyCFunction_GET_SELF(callback); if (*self && SbkQObject_Check(*self)) *receiver = Converter::toCpp(*self); - } else if (!PyFunction_Check(callback)) { + } else if (PyCallable_Check(callback)) { + // Ok, just a callable object *receiver = 0; *self = 0; - qWarning() << "Invalid callback object."; - return false; } bool usingGlobalReceiver = !*receiver; diff --git a/libpyside/signalmanager.cpp b/libpyside/signalmanager.cpp index c2ece92..4884b49 100644 --- a/libpyside/signalmanager.cpp +++ b/libpyside/signalmanager.cpp @@ -102,6 +102,8 @@ QString PySide::getCallbackSignature(const char* signal, PyObject* callback, boo numArgs = -1; else if (flags & METH_NOARGS) numArgs = 0; + } else if (PyCallable_Check(callback)) { + functionName = "__callback"+QString::number((size_t)callback); } Q_ASSERT(!functionName.isEmpty()); diff --git a/tests/signals/signal_emission_test.py b/tests/signals/signal_emission_test.py index 4fcdbe1..5692b07 100644 --- a/tests/signals/signal_emission_test.py +++ b/tests/signals/signal_emission_test.py @@ -4,6 +4,7 @@ import sys import unittest +import functools from PySide.QtCore import QObject, SIGNAL, SLOT, QProcess, QTimeLine @@ -86,6 +87,20 @@ class CppSignalsToCppSlots(UsesQCoreApplication): else: self.assertEqual(new_dir, QTimeLine.Forward) +called = False +def someSlot(args=None): + global called + called = True + +class DynamicSignalsToFuncPartial(UsesQCoreApplication): + + def testIt(self): + global called + called = False + o = QObject() + o.connect(o, SIGNAL("ASignal"), functools.partial(someSlot, "partial ..")) + o.emit(SIGNAL("ASignal")) + self.assertTrue(called) if __name__ == '__main__': unittest.main() From fbf8774f5833bd7f864d3919e843a857f21f1fb5 Mon Sep 17 00:00:00 2001 From: Hugo Parente Lima Date: Thu, 8 Apr 2010 17:31:40 -0300 Subject: [PATCH 0021/1285] Fix bug#200 "Add support to disable the binding generation of some modules." MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Reviewer: Bruno Araújo Reviewer: Anderson Lizardo --- PySide/CMakeLists.txt | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/PySide/CMakeLists.txt b/PySide/CMakeLists.txt index c74e0b9..3b3de33 100644 --- a/PySide/CMakeLists.txt +++ b/PySide/CMakeLists.txt @@ -18,12 +18,16 @@ endmacro(execute_generator) # Only add subdirectory if the associated Qt module is found. macro(HAS_QT_MODULE var name) -IF (${var}) - add_subdirectory(${name}) - execute_process(COMMAND ${CMAKE_COMMAND} -E create_symlink "${CMAKE_CURRENT_BINARY_DIR}/${name}/${name}${CMAKE_SHARED_MODULE_SUFFIX}" - "${CMAKE_BINARY_DIR}/PySide/${name}${CMAKE_SHARED_MODULE_SUFFIX}") +if (DISABLE_${name}) + message(STATUS "Generation of ${name} disabled.") else() - message(STATUS "${name} NOT found. ${name} support disabled.") + if (${var}) + add_subdirectory(${name}) + execute_process(COMMAND ${CMAKE_COMMAND} -E create_symlink "${CMAKE_CURRENT_BINARY_DIR}/${name}/${name}${CMAKE_SHARED_MODULE_SUFFIX}" + "${CMAKE_BINARY_DIR}/PySide/${name}${CMAKE_SHARED_MODULE_SUFFIX}") + else() + message(STATUS "${name} NOT found. ${name} support disabled.") + endif() endif() endmacro(HAS_QT_MODULE) From 965a16322bade4098b8fe187296e62b746d6b590 Mon Sep 17 00:00:00 2001 From: Lauro Neto Date: Fri, 9 Apr 2010 17:49:31 -0300 Subject: [PATCH 0022/1285] Adding test for multiple QObject inheritance Reviewer: Hugo Lima Reviewer: Luciano Wolf --- tests/qtgui/qobject_mi_test.py | 37 ++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 tests/qtgui/qobject_mi_test.py diff --git a/tests/qtgui/qobject_mi_test.py b/tests/qtgui/qobject_mi_test.py new file mode 100644 index 0000000..8ccc1d3 --- /dev/null +++ b/tests/qtgui/qobject_mi_test.py @@ -0,0 +1,37 @@ +'''Test cases for multiple inheritance from 2 QObjects''' + +import unittest + +from PySide.QtCore import QObject +from PySide.QtGui import * + +from helper import UsesQApplication + +class WidgetValidator(QWidget, QIntValidator): + def __init__(self, parent=None): + QWidget.__init__(self, parent) + QIntValidator.__init__(self, parent) + + +class DoubleQObjectInheritanceTest(UsesQApplication): + + def testDouble(self): + '''Double inheritance from QObject classes''' + + obj = WidgetValidator() + + #QObject methods + obj.setObjectName('aaaa') + self.assertEqual(obj.objectName(), 'aaaa') + + #QWidget methods + obj.setVisible(False) + self.assertFalse(obj.isVisible()) + + #QIntValidator methods + self.assertEqual(obj.validate('aaaa', 0), QValidator.Invalid) + self.assertEqual(obj.validate('33', 0), QValidator.Acceptable) + + +if __name__ == '__main__': + unittest.main() From 9498ae46122f3f89e7aa44e50099be847c58ec2c Mon Sep 17 00:00:00 2001 From: Hugo Parente Lima Date: Fri, 9 Apr 2010 16:23:07 -0300 Subject: [PATCH 0023/1285] Initial bindings for QtHelp MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Reviewer: Renato Araújo Reviewer: Luciano Wolf --- PySide/CMakeLists.txt | 2 ++ PySide/QtHelp/CMakeLists.txt | 48 +++++++++++++++++++++++++++++++ PySide/QtHelp/typesystem_help.xml | 36 +++++++++++++++++++++++ 3 files changed, 86 insertions(+) create mode 100644 PySide/QtHelp/CMakeLists.txt create mode 100644 PySide/QtHelp/typesystem_help.xml diff --git a/PySide/CMakeLists.txt b/PySide/CMakeLists.txt index 3b3de33..b9b9d60 100644 --- a/PySide/CMakeLists.txt +++ b/PySide/CMakeLists.txt @@ -44,3 +44,5 @@ HAS_QT_MODULE(QT_QTTEST_FOUND QtTest) HAS_QT_MODULE(QT_QTOPENGL_FOUND QtOpenGL) HAS_QT_MODULE(QT_QTSQL_FOUND QtSql) HAS_QT_MODULE(QT_QTUITOOLS_FOUND QtUiTools) +HAS_QT_MODULE(QT_QTHELP_FOUND QtHelp) + diff --git a/PySide/QtHelp/CMakeLists.txt b/PySide/QtHelp/CMakeLists.txt new file mode 100644 index 0000000..fd27ab5 --- /dev/null +++ b/PySide/QtHelp/CMakeLists.txt @@ -0,0 +1,48 @@ +project(QtHelp) + +set(QtHelp_SRC + ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtHelp/qhelpcontentitem_wrapper.cpp + ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtHelp/qhelpcontentmodel_wrapper.cpp + ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtHelp/qhelpcontentwidget_wrapper.cpp + ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtHelp/qhelpenginecore_wrapper.cpp + ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtHelp/qhelpengine_wrapper.cpp + ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtHelp/qhelpindexmodel_wrapper.cpp + ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtHelp/qhelpindexwidget_wrapper.cpp + ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtHelp/qhelpsearchengine_wrapper.cpp + ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtHelp/qhelpsearchquerywidget_wrapper.cpp + ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtHelp/qhelpsearchquery_wrapper.cpp + ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtHelp/qhelpsearchresultwidget_wrapper.cpp + ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtHelp/qthelp_module_wrapper.cpp +) + +execute_generator(help QtHelp_SRC "${CMAKE_CURRENT_BINARY_DIR}:${QtCore_SOURCE_DIR}:${QtGui_BINARY_DIR}:${QtGui_SOURCE_DIR}:${QtHelp_SOURCE_DIR}") + +include_directories(${CMAKE_CURRENT_SOURCE_DIR} + ${QT_QTCORE_INCLUDE_DIR} + ${QT_QTGUI_INCLUDE_DIR} + ${QT_QTHELP_INCLUDE_DIR} + ${PYTHON_INCLUDE_PATH} + ${SHIBOKEN_INCLUDE_DIR} + ${libpyside_SOURCE_DIR} + ${QtGui_BINARY_DIR}/PySide/QtGui/ + ${QtCore_BINARY_DIR}/PySide/QtCore/ + ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtHelp) +add_library(QtHelp MODULE ${QtHelp_SRC}) + +set_target_properties(QtHelp PROPERTIES PREFIX "") + +target_link_libraries(QtHelp + pyside + ${PYTHON_LIBRARIES} + ${QT_QTCORE_LIBRARY} + ${QT_QTGUI_LIBRARY} + ${QT_QTHELP_LIBRARY}) +add_dependencies(QtHelp QtGui) + +# install +install(FILES ${CMAKE_CURRENT_BINARY_DIR}/QtHelp.so + DESTINATION ${SITE_PACKAGE}/PySide) +install(FILES ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtHelp/pyside_qthelp_python.h + DESTINATION include/PySide/QtHelp/) + + diff --git a/PySide/QtHelp/typesystem_help.xml b/PySide/QtHelp/typesystem_help.xml new file mode 100644 index 0000000..fecd3fb --- /dev/null +++ b/PySide/QtHelp/typesystem_help.xml @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From 4d699fd85d0e6726f4100bcd4b382dc2185c1435 Mon Sep 17 00:00:00 2001 From: Hugo Parente Lima Date: Fri, 9 Apr 2010 14:17:22 -0300 Subject: [PATCH 0024/1285] Remove warnings about deprecated const char* to char* conversions. --- PySide/QtCore/typesystem_core.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/PySide/QtCore/typesystem_core.xml b/PySide/QtCore/typesystem_core.xml index 8bb0053..fd465d9 100644 --- a/PySide/QtCore/typesystem_core.xml +++ b/PySide/QtCore/typesystem_core.xml @@ -2349,7 +2349,7 @@ Shiboken::SbkType<QTimer>()->tp_init(pyTimer, emptyTuple, 0); QTimer* timer = Converter<QTimer*>::toCpp(pyTimer); - PyObject* result = PyObject_CallMethod(pyTimer, "connect", "OsOs", pyTimer, SIGNAL(timeout()), %PYARG_2, %3); + PyObject* result = PyObject_CallMethod(pyTimer, const_cast<char*>("connect"), const_cast<char*>("OsOs"), pyTimer, SIGNAL(timeout()), %PYARG_2, %3); Py_DECREF(result); timer->setSingleShot(true); timer->connect(timer, SIGNAL("timeout()"), timer, SLOT("deleteLater()")); @@ -2365,7 +2365,7 @@ QTimer* timer = Converter<QTimer*>::toCpp(pyTimer); timer->setSingleShot(true); timer->connect(timer, SIGNAL(timeout()), timer, SLOT(deleteLater())); - PyObject* result = PyObject_CallMethod(pyTimer, "connect", "OsO", pyTimer, SIGNAL(timeout()), pyargs[2-1]); + PyObject* result = PyObject_CallMethod(pyTimer, const_cast<char*>("connect"), const_cast<char*>("OsO"), pyTimer, SIGNAL(timeout()), pyargs[1]); Py_DECREF(result); timer->start(cpp_arg0); From f9e2b8a5c5087bbb6570b64667bd4ab91f326b78 Mon Sep 17 00:00:00 2001 From: Hugo Parente Lima Date: Fri, 9 Apr 2010 14:21:32 -0300 Subject: [PATCH 0025/1285] Suppress some known warnings from apiextractor. --- PySide/QtCore/typesystem_core.xml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/PySide/QtCore/typesystem_core.xml b/PySide/QtCore/typesystem_core.xml index fd465d9..7fa6358 100644 --- a/PySide/QtCore/typesystem_core.xml +++ b/PySide/QtCore/typesystem_core.xml @@ -3052,4 +3052,8 @@ + + + + From ce69493714e3c6337dad103abea094136770d571 Mon Sep 17 00:00:00 2001 From: Hugo Lima Date: Thu, 18 Mar 2010 16:45:54 -0300 Subject: [PATCH 0026/1285] Initial bindings for QtXmlPatterns. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Reviewer: Renato Araújo Reviewer: Luciano Wolf --- PySide/CMakeLists.txt | 2 +- PySide/QtXmlPatterns/CMakeLists.txt | 53 +++++++++++++++++ .../QtXmlPatterns/typesystem_xmlpatterns.xml | 57 +++++++++++++++++++ 3 files changed, 111 insertions(+), 1 deletion(-) create mode 100644 PySide/QtXmlPatterns/CMakeLists.txt create mode 100644 PySide/QtXmlPatterns/typesystem_xmlpatterns.xml diff --git a/PySide/CMakeLists.txt b/PySide/CMakeLists.txt index b9b9d60..53e5851 100644 --- a/PySide/CMakeLists.txt +++ b/PySide/CMakeLists.txt @@ -45,4 +45,4 @@ HAS_QT_MODULE(QT_QTOPENGL_FOUND QtOpenGL) HAS_QT_MODULE(QT_QTSQL_FOUND QtSql) HAS_QT_MODULE(QT_QTUITOOLS_FOUND QtUiTools) HAS_QT_MODULE(QT_QTHELP_FOUND QtHelp) - +HAS_QT_MODULE(QT_QTXMLPATTERNS_FOUND QtXmlPatterns) diff --git a/PySide/QtXmlPatterns/CMakeLists.txt b/PySide/QtXmlPatterns/CMakeLists.txt new file mode 100644 index 0000000..ef70313 --- /dev/null +++ b/PySide/QtXmlPatterns/CMakeLists.txt @@ -0,0 +1,53 @@ +project(QtXml) + +if (${QT_VERSION_MAJOR} EQUAL 4 AND ${QT_VERSION_MINOR} LESS 6) + set(QtXmlPatterns_46_SRC ) +else() + set(QtXmlPatterns_46_SRC + ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtXmlPatterns/qxmlschemavalidator_wrapper.cpp + ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtXmlPatterns/qxmlschema_wrapper.cpp + ) +endif() + +set(QtXmlPatterns_SRC + ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtXmlPatterns/qabstractmessagehandler_wrapper.cpp + ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtXmlPatterns/qabstracturiresolver_wrapper.cpp + ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtXmlPatterns/qabstractxmlnodemodel_wrapper.cpp + ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtXmlPatterns/qabstractxmlreceiver_wrapper.cpp + ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtXmlPatterns/qsourcelocation_wrapper.cpp + ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtXmlPatterns/qtxmlpatterns_module_wrapper.cpp + ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtXmlPatterns/qxmlformatter_wrapper.cpp + ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtXmlPatterns/qxmlitem_wrapper.cpp + ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtXmlPatterns/qxmlnamepool_wrapper.cpp + ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtXmlPatterns/qxmlname_wrapper.cpp + ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtXmlPatterns/qxmlnodemodelindex_wrapper.cpp + ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtXmlPatterns/qxmlquery_wrapper.cpp + ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtXmlPatterns/qxmlresultitems_wrapper.cpp + ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtXmlPatterns/qxmlserializer_wrapper.cpp + ${QtXmlPatterns_46_SRC} +) + +execute_generator(xmlpatterns QtXmlPatterns_SRC "${CMAKE_CURRENT_BINARY_DIR}:${QtCore_SOURCE_DIR}") + +include_directories(${CMAKE_CURRENT_SOURCE_DIR} + ${QT_QTCORE_INCLUDE_DIR} + ${QT_QTXMLPATTERNS_INCLUDE_DIR} + ${PYTHON_INCLUDE_PATH} + ${SHIBOKEN_INCLUDE_DIR} + ${libpyside_SOURCE_DIR} + ${QtCore_BINARY_DIR}/PySide/QtCore/ + ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtXmlPatterns) +add_library(QtXmlPatterns MODULE ${QtXmlPatterns_SRC}) +set_target_properties(QtXmlPatterns PROPERTIES PREFIX "") +target_link_libraries(QtXmlPatterns + pyside + ${PYTHON_LIBRARIES} + ${QT_QTCORE_LIBRARY} + ${QT_QTXMLPATTERNS_LIBRARY}) +add_dependencies(QtXmlPatterns QtCore) +# install +install(FILES ${CMAKE_CURRENT_BINARY_DIR}/QtXmlPatterns.so + DESTINATION ${SITE_PACKAGE}/PySide) +install(FILES ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtXmlPatterns/pyside_qtxmlpatterns_python.h + DESTINATION include/PySide/QtXmlPatterns/) + diff --git a/PySide/QtXmlPatterns/typesystem_xmlpatterns.xml b/PySide/QtXmlPatterns/typesystem_xmlpatterns.xml new file mode 100644 index 0000000..a771a10 --- /dev/null +++ b/PySide/QtXmlPatterns/typesystem_xmlpatterns.xml @@ -0,0 +1,57 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From 7127770c641cbfa5b9d3b72276d949e300089707 Mon Sep 17 00:00:00 2001 From: Thomas Berg Date: Sun, 21 Mar 2010 03:31:51 +0100 Subject: [PATCH 0027/1285] Use heap allocation for array with unknown size. With msvc, arrays can only allocated on the stack if the size is known at compile time. --- libpyside/signalmanager.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/libpyside/signalmanager.cpp b/libpyside/signalmanager.cpp index 4884b49..2640e1e 100644 --- a/libpyside/signalmanager.cpp +++ b/libpyside/signalmanager.cpp @@ -223,7 +223,7 @@ static bool emitNormalSignal(QObject* source, int signalIndex, const char* signa return false; } - void* signalArgs[argsGiven+1]; + void** signalArgs = new void*[argsGiven+1]; signalArgs[0] = 0; for (int i = 0; i < argsGiven; ++i) @@ -232,6 +232,7 @@ static bool emitNormalSignal(QObject* source, int signalIndex, const char* signa // FIXME: This will cause troubles with non-direct connections. for (int i = 0; i < argsGiven; ++i) Shiboken::TypeResolver::get(qPrintable(argTypes[i]))->deleteObject(signalArgs[i+1]); + delete[] signalArgs; return true; } From 9ca3e6148aafc852c72302a2d3401a2dff56abd2 Mon Sep 17 00:00:00 2001 From: Thomas Berg Date: Sun, 21 Mar 2010 07:35:56 +0100 Subject: [PATCH 0028/1285] Use '&&' instead of 'and'. The 'and' keyword is not supported by msvc. Reviewer: Anderson Lizardo Reviewer: Luciano Wolf --- PySide/QtCore/glue/qobject_connect.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/PySide/QtCore/glue/qobject_connect.cpp b/PySide/QtCore/glue/qobject_connect.cpp index deeaa6a..698b3c8 100644 --- a/PySide/QtCore/glue/qobject_connect.cpp +++ b/PySide/QtCore/glue/qobject_connect.cpp @@ -52,7 +52,7 @@ static bool qobjectConnectCallback(QObject* source, const char* signal, PyObject QObject* receiver = 0; PyObject* self = 0; bool usingGlobalReceiver = getReceiver(callback, &receiver, &self); - if (receiver == 0 and self == 0) + if (receiver == 0 && self == 0) return false; const QMetaObject* metaObject = receiver->metaObject(); @@ -60,7 +60,7 @@ static bool qobjectConnectCallback(QObject* source, const char* signal, PyObject const char* slot = callbackSig.constData(); int slotIndex = metaObject->indexOfSlot(slot); if (slotIndex == -1) { - if (!usingGlobalReceiver and self and !((SbkBaseWrapper*)self)->containsCppWrapper) { + if (!usingGlobalReceiver && self && !((SbkBaseWrapper*)self)->containsCppWrapper) { qWarning() << "You can't add dynamic slots on an object originated from C++."; return false; } @@ -99,7 +99,7 @@ static bool qobjectDisconnectCallback(QObject* source, const char* signal, PyObj QObject* receiver = 0; PyObject* self = 0; bool usingGlobalReceiver = getReceiver(callback, &receiver, &self); - if (receiver == 0 and self == 0) + if (receiver == 0 && self == 0) return false; const QMetaObject* metaObject = receiver->metaObject(); From 542095e1ee72e32e5b935fb20c52d17d54903f79 Mon Sep 17 00:00:00 2001 From: Renato Filho Date: Fri, 9 Apr 2010 16:51:37 -0300 Subject: [PATCH 0029/1285] Fixed signal emission with pythonic signalture. Created unittest. Reviewer: Hugo Parente Lima , Luciano Wolf --- libpyside/signalmanager.cpp | 50 ++++++++++++++++++++++++++++++++++ tests/signals/pysignal_test.py | 16 +++++++++++ 2 files changed, 66 insertions(+) diff --git a/libpyside/signalmanager.cpp b/libpyside/signalmanager.cpp index 2640e1e..7d10f77 100644 --- a/libpyside/signalmanager.cpp +++ b/libpyside/signalmanager.cpp @@ -43,6 +43,7 @@ #include #include #include +#include #if QSLOT_CODE != 1 || QSIGNAL_CODE != 2 #error QSLOT_CODE and/or QSIGNAL_CODE changed! change the hardcoded stuff to the correct value! @@ -51,6 +52,44 @@ #define PYSIDE_SIGNAL '2' #include "globalreceiver.h" +#define PYTHON_TYPE "PyObject" + + +// Use this to wrap PyObject during the Signal/Slot handling +struct PyObjectWrapper +{ + PyObject* m_me; + PyObjectWrapper(PyObject* me) : m_me(me) {} + PyObjectWrapper() : m_me(Py_None) {} + operator PyObject*() const { return m_me; } +}; + +Q_DECLARE_METATYPE(PyObjectWrapper) + +namespace Shiboken { + +template<> +struct Converter +{ + static PyObjectWrapper toCpp(PyObject* obj) + { + return PyObjectWrapper(obj); + } + + static PyObject* toPython(void* obj) + { + return toPython(*reinterpret_cast(obj)); + } + + static PyObject* toPython(const PyObjectWrapper& obj) + { + return obj; + } +}; + +}; + + using namespace PySide; bool PySide::isSignal(const char* signal) @@ -157,6 +196,11 @@ SignalManager::SignalManager() : m_d(new SignalManagerPrivate) { // Register Qt primitive typedefs used on signals. using namespace Shiboken; + + // Register PyObject type to use in queued signal and slot connections + qRegisterMetaType(PYTHON_TYPE); + + TypeResolver::createValueTypeResolver(PYTHON_TYPE); TypeResolver::createValueTypeResolver("qint8"); TypeResolver::createValueTypeResolver("qint16"); TypeResolver::createValueTypeResolver("qint32"); @@ -228,11 +272,15 @@ static bool emitNormalSignal(QObject* source, int signalIndex, const char* signa for (int i = 0; i < argsGiven; ++i) signalArgs[i+1] = Shiboken::TypeResolver::get(qPrintable(argTypes[i]))->toCpp(PySequence_GetItem(args, i)); + QMetaObject::activate(source, signalIndex, signalArgs); + // FIXME: This will cause troubles with non-direct connections. for (int i = 0; i < argsGiven; ++i) Shiboken::TypeResolver::get(qPrintable(argTypes[i]))->deleteObject(signalArgs[i+1]); + delete[] signalArgs; + return true; } @@ -272,8 +320,10 @@ int PySide::SignalManager::qt_metacall(QObject* object, QMetaObject::Call call, } else { // call python slot Shiboken::GilState gil; + QList paramTypes = method.parameterTypes(); PyObject* self = Shiboken::BindingManager::instance().retrieveWrapper(object); + Shiboken::AutoDecRef preparedArgs(PyTuple_New(paramTypes.count())); for (int i = 0, max = paramTypes.count(); i < max; ++i) { diff --git a/tests/signals/pysignal_test.py b/tests/signals/pysignal_test.py index 5f7fc85..5d4b09f 100644 --- a/tests/signals/pysignal_test.py +++ b/tests/signals/pysignal_test.py @@ -15,6 +15,22 @@ class Dummy(QObject): def __init__(self, parent=None): QObject.__init__(self, parent) + def callDummy(self): + self.emit(SIGNAL("dummy(PyObject)"), "PyObject") + + +class PyObjectType(unittest.TestCase): + def mySlot(self, arg): + self.assertEqual(arg, "PyObject") + self.called = True + + def testType(self): + self.called = False + o = Dummy() + o.connect(SIGNAL("dummy(PyObject)"), self.mySlot) + o.callDummy() + self.assert_(self.called) + class PythonSigSlot(unittest.TestCase): def setUp(self): self.called = False From 3ddaabdefe113406be50447515fcf39cc058554a Mon Sep 17 00:00:00 2001 From: Carlos Goncalves Date: Tue, 9 Mar 2010 12:48:41 +0000 Subject: [PATCH 0030/1285] Initial QtMultimedia bindings --- PySide/CMakeLists.txt | 1 + PySide/QtMultimedia/CMakeLists.txt | 64 ++++++++++++++++++ PySide/QtMultimedia/typesystem_multimedia.xml | 65 +++++++++++++++++++ PySide/global.h | 1 + PySide/typesystem_templates.xml | 6 ++ 5 files changed, 137 insertions(+) create mode 100644 PySide/QtMultimedia/CMakeLists.txt create mode 100644 PySide/QtMultimedia/typesystem_multimedia.xml diff --git a/PySide/CMakeLists.txt b/PySide/CMakeLists.txt index 53e5851..d7f476a 100644 --- a/PySide/CMakeLists.txt +++ b/PySide/CMakeLists.txt @@ -46,3 +46,4 @@ HAS_QT_MODULE(QT_QTSQL_FOUND QtSql) HAS_QT_MODULE(QT_QTUITOOLS_FOUND QtUiTools) HAS_QT_MODULE(QT_QTHELP_FOUND QtHelp) HAS_QT_MODULE(QT_QTXMLPATTERNS_FOUND QtXmlPatterns) +HAS_QT_MODULE(QT_QTMULTIMEDIA_FOUND QtMultimedia) diff --git a/PySide/QtMultimedia/CMakeLists.txt b/PySide/QtMultimedia/CMakeLists.txt new file mode 100644 index 0000000..2234854 --- /dev/null +++ b/PySide/QtMultimedia/CMakeLists.txt @@ -0,0 +1,64 @@ +project(QtMultimedia) + +if(Q_WS_X11) + set(MODULE_NAME multimedia_x11) + set(SPECIFIC_OS_FILES + ) +elseif(Q_WS_MAC) + set(MODULE_NAME multimedia_mac) + set(SPECIFIC_OS_FILES + ) +else() + message(FATAL_ERROR "OS not supported") +endif(Q_WS_X11) + +if (${QT_VERSION_MAJOR} EQUAL 4 AND ${QT_VERSION_MINOR} LESS 6) + set (QtMultimedia_46_SRC ) +else () + set(QtMultimedia_46_SRC + ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtMultimedia/qaudio_wrapper.cpp + ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtMultimedia/qabstractvideobuffer_wrapper.cpp + ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtMultimedia/qabstractvideosurface_wrapper.cpp + ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtMultimedia/qaudiodeviceinfo_wrapper.cpp + ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtMultimedia/qaudioformat_wrapper.cpp + ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtMultimedia/qaudioinput_wrapper.cpp + ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtMultimedia/qaudiooutput_wrapper.cpp + ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtMultimedia/qvideoframe_wrapper.cpp + ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtMultimedia/qvideosurfaceformat_wrapper.cpp + ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtMultimedia/qtmultimedia_module_wrapper.cpp + ) +endif (${QT_VERSION_MAJOR} EQUAL 4 AND ${QT_VERSION_MINOR} LESS 6) + +set(QtMultimedia_SRC +${SPECIFIC_OS_FILES} +${QtMultimedia_46_SRC} +) + +execute_generator(multimedia QtMultimedia_SRC "${CMAKE_CURRENT_BINARY_DIR}:${QtCore_SOURCE_DIR}:${QtGui_SOURCE_DIR}") + +include_directories(${CMAKE_CURRENT_SOURCE_DIR} + ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtMultimedia/ + ${QT_INCLUDE_DIR} + ${QT_QTCORE_INCLUDE_DIR} + ${QT_QTGUI_INCLUDE_DIR} + ${QT_QTMULTIMEDIA_INCLUDE_DIR} + ${SHIBOKEN_INCLUDE_DIR} + ${libpyside_SOURCE_DIR} + ${PYTHON_INCLUDE_PATH} + ${QtCore_BINARY_DIR}/PySide/QtCore/ + ${QtGui_BINARY_DIR}/PySide/QtGui/ + ) + +add_library(QtMultimedia MODULE ${QtMultimedia_SRC}) +set_property(TARGET QtMultimedia PROPERTY PREFIX "") +target_link_libraries(QtMultimedia + pyside + ${PYTHON_LIBRARIES} + ${SHIBOKEN_LIBRARY} + ${QT_QTMULTIMEDIA_LIBRARY} + ) +add_dependencies(QtMultimedia QtGui) + +# install +install(FILES ${CMAKE_CURRENT_BINARY_DIR}/QtMultimedia.so + DESTINATION ${SITE_PACKAGE}/PySide) diff --git a/PySide/QtMultimedia/typesystem_multimedia.xml b/PySide/QtMultimedia/typesystem_multimedia.xml new file mode 100644 index 0000000..d523dba --- /dev/null +++ b/PySide/QtMultimedia/typesystem_multimedia.xml @@ -0,0 +1,65 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/PySide/global.h b/PySide/global.h index 6b9927f..23acc79 100644 --- a/PySide/global.h +++ b/PySide/global.h @@ -22,6 +22,7 @@ #include #include #include +#include // QT_GUI_LIB must be defined to QSqlRelationalDelegate become visible #define QT_GUI_LIB diff --git a/PySide/typesystem_templates.xml b/PySide/typesystem_templates.xml index b607575..3badcf2 100644 --- a/PySide/typesystem_templates.xml +++ b/PySide/typesystem_templates.xml @@ -133,5 +133,11 @@ *%2 = %CONVERTTOCPP[bool](_py_ok_); + From 354b8b6cea7b3f8ae1c95d20d48c598da5c6cbdc Mon Sep 17 00:00:00 2001 From: Hugo Lima Date: Tue, 23 Mar 2010 14:34:37 -0300 Subject: [PATCH 0031/1285] QtMultimedia doesn't exists in versions prior to 4.6, so we dont need to check if we had Qt4.6 to add specific Qt4.6 files. --- PySide/QtMultimedia/CMakeLists.txt | 23 +---------------------- 1 file changed, 1 insertion(+), 22 deletions(-) diff --git a/PySide/QtMultimedia/CMakeLists.txt b/PySide/QtMultimedia/CMakeLists.txt index 2234854..ec8c1a6 100644 --- a/PySide/QtMultimedia/CMakeLists.txt +++ b/PySide/QtMultimedia/CMakeLists.txt @@ -1,21 +1,6 @@ project(QtMultimedia) -if(Q_WS_X11) - set(MODULE_NAME multimedia_x11) - set(SPECIFIC_OS_FILES - ) -elseif(Q_WS_MAC) - set(MODULE_NAME multimedia_mac) - set(SPECIFIC_OS_FILES - ) -else() - message(FATAL_ERROR "OS not supported") -endif(Q_WS_X11) - -if (${QT_VERSION_MAJOR} EQUAL 4 AND ${QT_VERSION_MINOR} LESS 6) - set (QtMultimedia_46_SRC ) -else () - set(QtMultimedia_46_SRC +set(QtMultimedia_SRC ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtMultimedia/qaudio_wrapper.cpp ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtMultimedia/qabstractvideobuffer_wrapper.cpp ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtMultimedia/qabstractvideosurface_wrapper.cpp @@ -26,12 +11,6 @@ else () ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtMultimedia/qvideoframe_wrapper.cpp ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtMultimedia/qvideosurfaceformat_wrapper.cpp ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtMultimedia/qtmultimedia_module_wrapper.cpp - ) -endif (${QT_VERSION_MAJOR} EQUAL 4 AND ${QT_VERSION_MINOR} LESS 6) - -set(QtMultimedia_SRC -${SPECIFIC_OS_FILES} -${QtMultimedia_46_SRC} ) execute_generator(multimedia QtMultimedia_SRC "${CMAKE_CURRENT_BINARY_DIR}:${QtCore_SOURCE_DIR}:${QtGui_SOURCE_DIR}") From bbb1b7ef98d35f8cb03c827c05814fd942f46840 Mon Sep 17 00:00:00 2001 From: Hugo Lima Date: Tue, 23 Mar 2010 14:36:48 -0300 Subject: [PATCH 0032/1285] Fix CMakeLists and typesystem of qtmultimedia to use the right typesystem file from QtGui. --- PySide/QtMultimedia/CMakeLists.txt | 2 +- PySide/QtMultimedia/typesystem_multimedia.xml | 9 +++------ 2 files changed, 4 insertions(+), 7 deletions(-) diff --git a/PySide/QtMultimedia/CMakeLists.txt b/PySide/QtMultimedia/CMakeLists.txt index ec8c1a6..d0a8e8a 100644 --- a/PySide/QtMultimedia/CMakeLists.txt +++ b/PySide/QtMultimedia/CMakeLists.txt @@ -13,7 +13,7 @@ set(QtMultimedia_SRC ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtMultimedia/qtmultimedia_module_wrapper.cpp ) -execute_generator(multimedia QtMultimedia_SRC "${CMAKE_CURRENT_BINARY_DIR}:${QtCore_SOURCE_DIR}:${QtGui_SOURCE_DIR}") +execute_generator(multimedia QtMultimedia_SRC "${CMAKE_CURRENT_BINARY_DIR}:${QtCore_SOURCE_DIR}:${QtGui_SOURCE_DIR}:${QtGui_BINARY_DIR}") include_directories(${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtMultimedia/ diff --git a/PySide/QtMultimedia/typesystem_multimedia.xml b/PySide/QtMultimedia/typesystem_multimedia.xml index d523dba..556f4b6 100644 --- a/PySide/QtMultimedia/typesystem_multimedia.xml +++ b/PySide/QtMultimedia/typesystem_multimedia.xml @@ -1,7 +1,7 @@ - - + + @@ -48,18 +48,15 @@ - - + - - From 74624014231706acdd87d70f5c1fb01fdd1f8ab6 Mon Sep 17 00:00:00 2001 From: Hugo Lima Date: Tue, 23 Mar 2010 14:37:58 -0300 Subject: [PATCH 0033/1285] Install QtMultimedia header file. --- PySide/QtMultimedia/CMakeLists.txt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/PySide/QtMultimedia/CMakeLists.txt b/PySide/QtMultimedia/CMakeLists.txt index d0a8e8a..03e5934 100644 --- a/PySide/QtMultimedia/CMakeLists.txt +++ b/PySide/QtMultimedia/CMakeLists.txt @@ -41,3 +41,5 @@ add_dependencies(QtMultimedia QtGui) # install install(FILES ${CMAKE_CURRENT_BINARY_DIR}/QtMultimedia.so DESTINATION ${SITE_PACKAGE}/PySide) +install(FILES ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtMultimedia/pyside_qtmultimedia_python.h + DESTINATION include/PySide/QtMultimedia/) From 7a3f28e1bf742f689200a981e28de8f9222508b2 Mon Sep 17 00:00:00 2001 From: Hugo Parente Lima Date: Thu, 8 Apr 2010 11:11:28 -0300 Subject: [PATCH 0034/1285] Do not throw an OverflowError on QString.number(-1). --- PySide/QtCore/typesystem_core.xml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/PySide/QtCore/typesystem_core.xml b/PySide/QtCore/typesystem_core.xml index 7fa6358..993f88a 100644 --- a/PySide/QtCore/typesystem_core.xml +++ b/PySide/QtCore/typesystem_core.xml @@ -994,6 +994,12 @@ #endif + + + + + + From 1d90691a0004aa20e15f86872f44c0bf33409703 Mon Sep 17 00:00:00 2001 From: Hugo Parente Lima Date: Thu, 8 Apr 2010 11:13:35 -0300 Subject: [PATCH 0035/1285] Fix modified type of QAbstractVideoBuffer::map method. --- PySide/QtMultimedia/typesystem_multimedia.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/PySide/QtMultimedia/typesystem_multimedia.xml b/PySide/QtMultimedia/typesystem_multimedia.xml index 556f4b6..e7ff202 100644 --- a/PySide/QtMultimedia/typesystem_multimedia.xml +++ b/PySide/QtMultimedia/typesystem_multimedia.xml @@ -22,7 +22,7 @@ - + From f4c941bdadd8fd0ea4286745551af55899b76494 Mon Sep 17 00:00:00 2001 From: Hugo Parente Lima Date: Thu, 8 Apr 2010 15:26:36 -0300 Subject: [PATCH 0036/1285] Add hack to find QtMultimedia module. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Reviewer: Luciano Wolf Reviewer: Renato Araújo --- PySide/CMakeLists.txt | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/PySide/CMakeLists.txt b/PySide/CMakeLists.txt index d7f476a..550a46e 100644 --- a/PySide/CMakeLists.txt +++ b/PySide/CMakeLists.txt @@ -46,4 +46,18 @@ HAS_QT_MODULE(QT_QTSQL_FOUND QtSql) HAS_QT_MODULE(QT_QTUITOOLS_FOUND QtUiTools) HAS_QT_MODULE(QT_QTHELP_FOUND QtHelp) HAS_QT_MODULE(QT_QTXMLPATTERNS_FOUND QtXmlPatterns) + +# Try to find QtMultimedia +# TODO: Remove this hack when cmake support QtMultimedia module +if (NOT QT_MULTIMEDIA_FOUND AND ${QTVERSION} GREATER 4.5.0) + find_path(QT_MULTIMEDIA_INCLUDE_DIR QtMultimedia + PATHS ${QT_HEADERS_DIR}/QtMultimedia + ${QT_LIBRARY_DIR}/QtMultimedia.framework/Headers + NO_DEFAULT_PATH) + find_library(QT_MULTIMEDIA_LIBRARY QtMultimedia PATHS ${QT_LIBRARY_DIR} NO_DEFAULT_PATH) + if (QT_MULTIMEDIA_INCLUDE_DIR AND QT_MULTIMEDIA_LIBRARY) + set(QT_MULTIMEDIA_FOUND ON) + endif() +endif () + HAS_QT_MODULE(QT_QTMULTIMEDIA_FOUND QtMultimedia) From 27458bcd2f87e29dbdb60ba0de463261fedd3afa Mon Sep 17 00:00:00 2001 From: Hugo Parente Lima Date: Mon, 12 Apr 2010 18:35:21 -0300 Subject: [PATCH 0037/1285] Fix bug#197, among some reference leaks. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Reviewer: Renato Araújo Reviewer: Luciano Wolf --- libpyside/signalmanager.cpp | 28 ++++++++++++++++++--------- tests/signals/signal_emission_test.py | 7 ++++++- 2 files changed, 25 insertions(+), 10 deletions(-) diff --git a/libpyside/signalmanager.cpp b/libpyside/signalmanager.cpp index 7d10f77..3e5e3c0 100644 --- a/libpyside/signalmanager.cpp +++ b/libpyside/signalmanager.cpp @@ -260,28 +260,38 @@ static bool emitShortCircuitSignal(QObject* source, int signalIndex, PyObject* a static bool emitNormalSignal(QObject* source, int signalIndex, const char* signal, PyObject* args, const QStringList& argTypes) { - int argsGiven = PySequence_Size(args); + Shiboken::AutoDecRef sequence(PySequence_Fast(args, 0)); + int argsGiven = PySequence_Fast_GET_SIZE(sequence.object()); if (argsGiven > argTypes.count()) { - QString msg = QString("%1 only accepts %2 arguments, %3 given!").arg(signal).arg(argTypes.count()).arg(argsGiven); - PyErr_SetString(PyExc_TypeError, msg.toLocal8Bit().constData()); + PyErr_Format(PyExc_TypeError, "%s only accepts %d arguments, %d given!", signal, argTypes.count(), argsGiven); return false; } void** signalArgs = new void*[argsGiven+1]; signalArgs[0] = 0; - for (int i = 0; i < argsGiven; ++i) - signalArgs[i+1] = Shiboken::TypeResolver::get(qPrintable(argTypes[i]))->toCpp(PySequence_GetItem(args, i)); + int i; + for (i = 0; i < argsGiven; ++i) { + Shiboken::TypeResolver* typeResolver = Shiboken::TypeResolver::get(qPrintable(argTypes[i])); + if (typeResolver) { + signalArgs[i+1] = typeResolver->toCpp(PySequence_Fast_GET_ITEM(sequence.object(), i)); + } else { + PyErr_Format(PyExc_TypeError, "Unknown type used to emit a signal: %s", qPrintable(argTypes[i])); + break; + } + } - QMetaObject::activate(source, signalIndex, signalArgs); + bool ok = i == argsGiven; + if (ok) + QMetaObject::activate(source, signalIndex, signalArgs); // FIXME: This will cause troubles with non-direct connections. - for (int i = 0; i < argsGiven; ++i) - Shiboken::TypeResolver::get(qPrintable(argTypes[i]))->deleteObject(signalArgs[i+1]); + for (int j = 0; j < i; ++j) + Shiboken::TypeResolver::get(qPrintable(argTypes[j]))->deleteObject(signalArgs[j+1]); delete[] signalArgs; - return true; + return ok; } bool SignalManager::emitSignal(QObject* source, const char* signal, PyObject* args) diff --git a/tests/signals/signal_emission_test.py b/tests/signals/signal_emission_test.py index 5692b07..a8dd4fd 100644 --- a/tests/signals/signal_emission_test.py +++ b/tests/signals/signal_emission_test.py @@ -32,7 +32,6 @@ class Dummy(QObject): '''Dummy class''' pass - class PythonSignalToCppSlots(UsesQCoreApplication): '''Connect python signals to C++ slots''' @@ -102,5 +101,11 @@ class DynamicSignalsToFuncPartial(UsesQCoreApplication): o.emit(SIGNAL("ASignal")) self.assertTrue(called) +class EmitUnknownType(UsesQCoreApplication): + def testIt(self): + a = QObject() + a.connect(SIGNAL('foobar(Dummy)'), lambda x: 42) # Just connect with an unknown type + self.assertRaises(TypeError, a.emit, SIGNAL('foobar(Dummy)'), 22) + if __name__ == '__main__': unittest.main() From 653bb5149b0e29bbad994568954a1c937fe0b248 Mon Sep 17 00:00:00 2001 From: Renato Filho Date: Tue, 13 Apr 2010 15:13:19 -0300 Subject: [PATCH 0038/1285] Created unittest for QtXmlPatterns. Reviewer: Hugo Parente Lima , Luciano Wolf --- tests/qtxmlpatterns/import_test.py | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 tests/qtxmlpatterns/import_test.py diff --git a/tests/qtxmlpatterns/import_test.py b/tests/qtxmlpatterns/import_test.py new file mode 100644 index 0000000..5bab975 --- /dev/null +++ b/tests/qtxmlpatterns/import_test.py @@ -0,0 +1,30 @@ +#!/usr/bin/python + +import unittest +from PySide.QtCore import * +from PySide.QtXmlPatterns import QXmlSchema +from helper import UsesQCoreApplication + +class QXmlPatternsTest(UsesQCoreApplication): + + def testSchema(self): + data = QByteArray(''' + + ''') + + buf = QBuffer(data) + buf.open(QIODevice.ReadOnly) + + schema = QXmlSchema() + schema.load(buf) + self.assert_(schema.isValid()) + + +if __name__ == '__main__': + unittest.main() + From e7c5666bc3ab7d7678f319138688391395a50711 Mon Sep 17 00:00:00 2001 From: Hugo Parente Lima Date: Tue, 13 Apr 2010 14:55:06 -0300 Subject: [PATCH 0039/1285] Fix typo, QT_MULTIMEDIA* => QT_QTMULTIMEDIA* Reviewer: Luciano Wolf Reviewer: Anderson Lizardo --- PySide/CMakeLists.txt | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/PySide/CMakeLists.txt b/PySide/CMakeLists.txt index 550a46e..af3e3b8 100644 --- a/PySide/CMakeLists.txt +++ b/PySide/CMakeLists.txt @@ -49,14 +49,14 @@ HAS_QT_MODULE(QT_QTXMLPATTERNS_FOUND QtXmlPatterns) # Try to find QtMultimedia # TODO: Remove this hack when cmake support QtMultimedia module -if (NOT QT_MULTIMEDIA_FOUND AND ${QTVERSION} GREATER 4.5.0) - find_path(QT_MULTIMEDIA_INCLUDE_DIR QtMultimedia +if (NOT QT_QTMULTIMEDIA_FOUND AND ${QTVERSION} VERSION_GREATER 4.5.9) + find_path(QT_QTMULTIMEDIA_INCLUDE_DIR QtMultimedia PATHS ${QT_HEADERS_DIR}/QtMultimedia ${QT_LIBRARY_DIR}/QtMultimedia.framework/Headers NO_DEFAULT_PATH) - find_library(QT_MULTIMEDIA_LIBRARY QtMultimedia PATHS ${QT_LIBRARY_DIR} NO_DEFAULT_PATH) - if (QT_MULTIMEDIA_INCLUDE_DIR AND QT_MULTIMEDIA_LIBRARY) - set(QT_MULTIMEDIA_FOUND ON) + find_library(QT_QTMULTIMEDIA_LIBRARY QtMultimedia PATHS ${QT_LIBRARY_DIR} NO_DEFAULT_PATH) + if (QT_QTMULTIMEDIA_INCLUDE_DIR AND QT_QTMULTIMEDIA_LIBRARY) + set(QT_QTMULTIMEDIA_FOUND ON) endif() endif () From 24249a4538756ba19d1cef29b5db98680d29105e Mon Sep 17 00:00:00 2001 From: Hugo Parente Lima Date: Thu, 8 Apr 2010 19:08:53 -0300 Subject: [PATCH 0040/1285] Partially fix bug#181 "Support Qt message handling system". Reviewer: Luciano Wolf Reviewer: Anderson Lizardo --- PySide/QtCore/typesystem_core.xml | 5 ----- 1 file changed, 5 deletions(-) diff --git a/PySide/QtCore/typesystem_core.xml b/PySide/QtCore/typesystem_core.xml index 993f88a..c7a8184 100644 --- a/PySide/QtCore/typesystem_core.xml +++ b/PySide/QtCore/typesystem_core.xml @@ -85,9 +85,6 @@ - - - @@ -133,7 +130,6 @@ - @@ -268,7 +264,6 @@ - From 2de4b9385917ff3d0616cf9967295d412f89297f Mon Sep 17 00:00:00 2001 From: Renato Filho Date: Tue, 13 Apr 2010 17:55:53 -0300 Subject: [PATCH 0041/1285] Removed unecessary inject code on QtHelp typesystem. Renamed unittest to standard name with test in the end of filename to be detected by test suite. Reviewer: Hugo Parente Lima , Luciano Wolf --- PySide/QtHelp/typesystem_help.xml | 15 ++------------- tests/qthelp/{test_help.py => help_test.py} | 0 2 files changed, 2 insertions(+), 13 deletions(-) rename tests/qthelp/{test_help.py => help_test.py} (100%) diff --git a/PySide/QtHelp/typesystem_help.xml b/PySide/QtHelp/typesystem_help.xml index fecd3fb..3e1d079 100644 --- a/PySide/QtHelp/typesystem_help.xml +++ b/PySide/QtHelp/typesystem_help.xml @@ -6,24 +6,13 @@ - - - - - - + - - - - - - - + diff --git a/tests/qthelp/test_help.py b/tests/qthelp/help_test.py similarity index 100% rename from tests/qthelp/test_help.py rename to tests/qthelp/help_test.py From de4a1a10b01f54ce03bc484f04f4294ba8b4d314 Mon Sep 17 00:00:00 2001 From: Renato Filho Date: Thu, 15 Apr 2010 12:13:07 -0300 Subject: [PATCH 0042/1285] Fixed bug with refcount on PyObject args during signal/slot emission. Reviewer: Luciano Wolf Lauro Moura --- libpyside/signalmanager.cpp | 5 +-- tests/signals/pysignal_test.py | 56 +++++++++++++++++++++++++++++++--- 2 files changed, 54 insertions(+), 7 deletions(-) diff --git a/libpyside/signalmanager.cpp b/libpyside/signalmanager.cpp index 3e5e3c0..9cdcca1 100644 --- a/libpyside/signalmanager.cpp +++ b/libpyside/signalmanager.cpp @@ -59,7 +59,8 @@ struct PyObjectWrapper { PyObject* m_me; - PyObjectWrapper(PyObject* me) : m_me(me) {} + PyObjectWrapper(const PyObjectWrapper &other) : m_me(other.m_me) {} + PyObjectWrapper(PyObject* me) : m_me(me) { Py_INCREF(m_me); } PyObjectWrapper() : m_me(Py_None) {} operator PyObject*() const { return m_me; } }; @@ -310,7 +311,7 @@ bool SignalManager::emitSignal(QObject* source, const char* signal, PyObject* ar else return emitNormalSignal(source, signalIndex, signal, args, argTypes); } - qWarning() << "Signal" << signal << "not found, probably a typo or you are emitting a dynamic signal that has never been used in a connection until now."; + qDebug() << "Signal" << signal << "not found, probably a typo or you are emitting a dynamic signal that has never been used in a connection until now."; return false; } diff --git a/tests/signals/pysignal_test.py b/tests/signals/pysignal_test.py index 5d4b09f..7bb89a0 100644 --- a/tests/signals/pysignal_test.py +++ b/tests/signals/pysignal_test.py @@ -1,6 +1,6 @@ import unittest -from PySide.QtCore import QObject, SIGNAL, SLOT +from PySide.QtCore import QObject, SIGNAL, SLOT, Qt try: from PySide.QtGui import QSpinBox, QApplication, QWidget @@ -18,18 +18,64 @@ class Dummy(QObject): def callDummy(self): self.emit(SIGNAL("dummy(PyObject)"), "PyObject") + def callDummy2(self): + lst = [] + lst.append("item1") + lst.append("item2") + lst.append("item3") + self.emit(SIGNAL("dummy2(PyObject, PyObject)"), "PyObject0", lst) -class PyObjectType(unittest.TestCase): + +class PyObjectType(UsesQApplication): def mySlot(self, arg): self.assertEqual(arg, "PyObject") self.called = True + self.callCount += 1 - def testType(self): - self.called = False + def mySlot2(self, arg0, arg1): + self.assertEqual(arg0, "PyObject0") + self.assertEqual(arg1[0], "item1") + self.assertEqual(arg1[1], "item2") + self.assertEqual(arg1[2], "item3") + self.callCount += 1 + if self.running: + self.app.quit() + + def setUp(self): + super(PyObjectType, self).setUp() + self.callCount = 0 + self.running = False + + def testWithOneArg(self): o = Dummy() o.connect(SIGNAL("dummy(PyObject)"), self.mySlot) o.callDummy() - self.assert_(self.called) + self.assertEqual(self.callCount, 1) + + def testWithTwoArg(self): + o = Dummy() + o.connect(SIGNAL("dummy2(PyObject,PyObject)"), self.mySlot2) + o.callDummy2() + self.assertEqual(self.callCount, 1) + + def testAsyncSignal(self): + self.called = False + self.running = True + o = Dummy() + o.connect(SIGNAL("dummy2(PyObject,PyObject)"), self.mySlot2, Qt.QueuedConnection) + o.callDummy2() + self.app.exec_() + self.assertEqual(self.callCount, 1) + + def testTwice(self): + self.called = False + self.running = True + o = Dummy() + o.connect(SIGNAL("dummy2(PyObject,PyObject)"), self.mySlot2, Qt.QueuedConnection) + o.callDummy2() + o.callDummy2() + self.app.exec_() + self.assertEqual(self.callCount, 2) class PythonSigSlot(unittest.TestCase): def setUp(self): From 3468ba1efffc17f532ca69007602e87f19245304 Mon Sep 17 00:00:00 2001 From: renato Date: Fri, 16 Apr 2010 16:14:03 -0300 Subject: [PATCH 0043/1285] Implemented module QtMaemo5. Create unittest for module. Fixed generetion of typesystem_gui.xml based on detected system. Reviewer: Hugo Parente Lima , Luciano Wolf --- PySide/CMakeLists.txt | 42 ++++++++++++++------ PySide/QtGui/CMakeLists.txt | 18 +++++++-- PySide/QtGui/typesystem_gui.xml.in | 3 +- PySide/QtGui/typesystem_gui_maemo.xml | 7 ++++ PySide/QtMaemo5/CMakeLists.txt | 57 +++++++++++++++++++++++++++ PySide/QtMaemo5/typesystem_maemo5.xml | 14 +++++++ PySide/global.h | 1 + tests/qtmaemo5/qmaemo5import_test.py | 19 +++++++++ 8 files changed, 144 insertions(+), 17 deletions(-) create mode 100644 PySide/QtGui/typesystem_gui_maemo.xml create mode 100644 PySide/QtMaemo5/CMakeLists.txt create mode 100644 PySide/QtMaemo5/typesystem_maemo5.xml create mode 100644 tests/qtmaemo5/qmaemo5import_test.py diff --git a/PySide/CMakeLists.txt b/PySide/CMakeLists.txt index af3e3b8..32f9b7c 100644 --- a/PySide/CMakeLists.txt +++ b/PySide/CMakeLists.txt @@ -34,18 +34,6 @@ endmacro(HAS_QT_MODULE) execute_process(COMMAND ${CMAKE_COMMAND} -E create_symlink "${CMAKE_CURRENT_SOURCE_DIR}/__init__.py" "${CMAKE_BINARY_DIR}/PySide/__init__.py") -HAS_QT_MODULE(QT_QTCORE_FOUND QtCore) -HAS_QT_MODULE(QT_QTGUI_FOUND QtGui) -HAS_QT_MODULE(QT_QTNETWORK_FOUND QtNetwork) -HAS_QT_MODULE(QT_QTWEBKIT_FOUND QtWebKit) -HAS_QT_MODULE(QT_QTSVG_FOUND QtSvg) -HAS_QT_MODULE(QT_QTXML_FOUND QtXml) -HAS_QT_MODULE(QT_QTTEST_FOUND QtTest) -HAS_QT_MODULE(QT_QTOPENGL_FOUND QtOpenGL) -HAS_QT_MODULE(QT_QTSQL_FOUND QtSql) -HAS_QT_MODULE(QT_QTUITOOLS_FOUND QtUiTools) -HAS_QT_MODULE(QT_QTHELP_FOUND QtHelp) -HAS_QT_MODULE(QT_QTXMLPATTERNS_FOUND QtXmlPatterns) # Try to find QtMultimedia # TODO: Remove this hack when cmake support QtMultimedia module @@ -60,4 +48,34 @@ if (NOT QT_QTMULTIMEDIA_FOUND AND ${QTVERSION} VERSION_GREATER 4.5.9) endif() endif () +# Try to find QtMaemo5 this need be before QtGui for enable some flags on that +# TODO: Remove this hack when cmake support QtMaemo5 module +if (NOT QT_QTMAEMO5_FOUND AND ${QTVERSION} VERSION_GREATER 4.5.9) + find_path(QT_QTMAEMO5_INCLUDE_DIR QtMaemo5 + PATHS ${QT_HEADERS_DIR}/QtMaemo5 + ${QT_LIBRARY_DIR}/QtMaemo5.framework/Headers + NO_DEFAULT_PATH) + find_library(QT_QTMAEMO5_LIBRARY QtMaemo5 PATHS ${QT_LIBRARY_DIR} NO_DEFAULT_PATH) + if (QT_QTMAEMO5_INCLUDE_DIR AND QT_QTMAEMO5_LIBRARY) + set(QT_QTMAEMO5_FOUND ON) + set(Q_WS_MAEMO_5 ON) + endif() +endif () + +HAS_QT_MODULE(QT_QTCORE_FOUND QtCore) +HAS_QT_MODULE(QT_QTGUI_FOUND QtGui) +HAS_QT_MODULE(QT_QTNETWORK_FOUND QtNetwork) +HAS_QT_MODULE(QT_QTWEBKIT_FOUND QtWebKit) +HAS_QT_MODULE(QT_QTSVG_FOUND QtSvg) +HAS_QT_MODULE(QT_QTXML_FOUND QtXml) +HAS_QT_MODULE(QT_QTTEST_FOUND QtTest) +HAS_QT_MODULE(QT_QTOPENGL_FOUND QtOpenGL) +HAS_QT_MODULE(QT_QTSQL_FOUND QtSql) +HAS_QT_MODULE(QT_QTUITOOLS_FOUND QtUiTools) +HAS_QT_MODULE(QT_QTHELP_FOUND QtHelp) +HAS_QT_MODULE(QT_QTXMLPATTERNS_FOUND QtXmlPatterns) +HAS_QT_MODULE(QT_QTMAEMO5_FOUND QtMaemo5) + HAS_QT_MODULE(QT_QTMULTIMEDIA_FOUND QtMultimedia) + + diff --git a/PySide/QtGui/CMakeLists.txt b/PySide/QtGui/CMakeLists.txt index ea181ab..9701ffb 100644 --- a/PySide/QtGui/CMakeLists.txt +++ b/PySide/QtGui/CMakeLists.txt @@ -33,21 +33,33 @@ macro(CHECK_QT_GUI_MACRO macro_display_name qt_macro module_sources global_sourc endif() endmacro(CHECK_QT_GUI_MACRO) - if(Q_WS_X11) - set(MODULE_NAME gui_x11) + set(AUTO_OS "X11") + set(MODULE_NAME "x11") set(SPECIFIC_OS_FILES ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtGui/qx11info_wrapper.cpp ) + if(Q_WS_MAEMO_5) + set(AUTO_OS "MAEMO 5") + set(MODULE_NAME "maemo") + set(SPECIFIC_OS_FILES + ${SPECIFIC_OS_FILES} + ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtGui/qabstractkineticscroller_wrapper.cpp + ) + endif(Q_WS_MAEMO_5) + elseif(Q_WS_MAC) - set(MODULE_NAME gui_mac) + set(AUTO_OS "MAC") + set(MODULE_NAME "mac") set(SPECIFIC_OS_FILES ) else() message(FATAL_ERROR "OS not supported") endif(Q_WS_X11) +message(STATUS "Detected OS: ${AUTO_OS}") + if (${QT_VERSION_MAJOR} EQUAL 4 AND ${QT_VERSION_MINOR} LESS 6) set (QtGui_46_SRC ) else() diff --git a/PySide/QtGui/typesystem_gui.xml.in b/PySide/QtGui/typesystem_gui.xml.in index 8ef52b1..2dc9676 100644 --- a/PySide/QtGui/typesystem_gui.xml.in +++ b/PySide/QtGui/typesystem_gui.xml.in @@ -1,6 +1,5 @@ - - + diff --git a/PySide/QtGui/typesystem_gui_maemo.xml b/PySide/QtGui/typesystem_gui_maemo.xml new file mode 100644 index 0000000..9efac7d --- /dev/null +++ b/PySide/QtGui/typesystem_gui_maemo.xml @@ -0,0 +1,7 @@ + + + + + + + diff --git a/PySide/QtMaemo5/CMakeLists.txt b/PySide/QtMaemo5/CMakeLists.txt new file mode 100644 index 0000000..b7e997c --- /dev/null +++ b/PySide/QtMaemo5/CMakeLists.txt @@ -0,0 +1,57 @@ +project(QtMaemo5) + +set(QtMaemo5_SRC +${CMAKE_CURRENT_BINARY_DIR}/${BINDING_NAME}/QtMaemo5/qmaemo5abstractpickselector_wrapper.cpp +${CMAKE_CURRENT_BINARY_DIR}/${BINDING_NAME}/QtMaemo5/qmaemo5datepickselector_wrapper.cpp +${CMAKE_CURRENT_BINARY_DIR}/${BINDING_NAME}/QtMaemo5/qmaemo5editbar_wrapper.cpp +${CMAKE_CURRENT_BINARY_DIR}/${BINDING_NAME}/QtMaemo5/qmaemo5informationbox_wrapper.cpp +${CMAKE_CURRENT_BINARY_DIR}/${BINDING_NAME}/QtMaemo5/qmaemo5listpickselector_wrapper.cpp +${CMAKE_CURRENT_BINARY_DIR}/${BINDING_NAME}/QtMaemo5/qmaemo5timepickselector_wrapper.cpp +${CMAKE_CURRENT_BINARY_DIR}/${BINDING_NAME}/QtMaemo5/qmaemo5valuebutton_wrapper.cpp +${CMAKE_CURRENT_BINARY_DIR}/${BINDING_NAME}/QtMaemo5/qtmaemo5_module_wrapper.cpp +) + +execute_generator(maemo5 QtMaemo5_SRC + "${CMAKE_CURRENT_BINARY_DIR}:${QtCore_SOURCE_DIR}:${QtGui_BINARY_DIR}:${QtGui_SOURCE_DIR}:${QtMaemo5_SOURCE_DIR}") + +# QT_QTMAEMO5_* variables are not defined by CMake +if(NOT QT_QTMAEMO5_INCLUDE_DIR) + FIND_PATH(QT_QTMAEMO5_INCLUDE_DIR QtMaemo5 + PATHS ${QT_HEADERS_DIR}/QtMaemo5 NO_DEFAULT_PATH) +endif(NOT QT_QTMAEMO5_INCLUDE_DIR) +if(NOT QT_QTMAEMO5_LIBRARY) + FIND_LIBRARY(QT_QTMAEMO5_LIBRARY QtMaemo5 + PATHS ${QT_LIBRARY_DIR} NO_DEFAULT_PATH) +endif(NOT QT_QTMAEMO5_LIBRARY) + +include_directories(${CMAKE_CURRENT_SOURCE_DIR} + ${QT_QTCORE_INCLUDE_DIR} + ${QT_QTGUI_INCLUDE_DIR} + ${QT_QTMAEMO5_INCLUDE_DIR} + ${PYTHON_INCLUDE_PATH} + ${SHIBOKEN_INCLUDE_DIR} + ${libpyside_SOURCE_DIR} + ${QtCore_BINARY_DIR}/${BINDING_NAME}/QtCore/ + ${QtGui_BINARY_DIR}/${BINDING_NAME}/QtGui/ + ${CMAKE_CURRENT_BINARY_DIR}/${BINDING_NAME}/QtMaemo5) +add_library(QtMaemo5 MODULE ${QtMaemo5_SRC}) + +set_target_properties(QtMaemo5 PROPERTIES + PREFIX "") + +target_link_libraries(QtMaemo5 + pyside + ${PYTHON_LIBRARIES} + ${QT_QTCORE_LIBRARY} + ${QT_QTGUI_LIBRARY} + ${QT_QTMAEMO5_LIBRARY}) + +#add_dependencies(QtMaemo5) + +# install +install(FILES ${CMAKE_CURRENT_BINARY_DIR}/QtMaemo5.so + DESTINATION ${SITE_PACKAGE}/${BINDING_NAME}) + +install(FILES ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtMaemo5/pyside_qtmaemo5_python.h + DESTINATION include/${BINDING_NAME}/QtMaemo5/) + diff --git a/PySide/QtMaemo5/typesystem_maemo5.xml b/PySide/QtMaemo5/typesystem_maemo5.xml new file mode 100644 index 0000000..283f939 --- /dev/null +++ b/PySide/QtMaemo5/typesystem_maemo5.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/PySide/global.h b/PySide/global.h index 23acc79..cb94eef 100644 --- a/PySide/global.h +++ b/PySide/global.h @@ -23,6 +23,7 @@ #include #include #include +#include // QT_GUI_LIB must be defined to QSqlRelationalDelegate become visible #define QT_GUI_LIB diff --git a/tests/qtmaemo5/qmaemo5import_test.py b/tests/qtmaemo5/qmaemo5import_test.py new file mode 100644 index 0000000..a003f05 --- /dev/null +++ b/tests/qtmaemo5/qmaemo5import_test.py @@ -0,0 +1,19 @@ +#!/usr/bin/python +import unittest +from PySide.QtMaemo5 import * +from PySide import QtGui + +from helper import UsesQApplication + +class QtMamo5Test(UsesQApplication): + + def testObjectCreate(self): + bar = QMaemo5EditBar() + self.assert_(isinstance(bar, QMaemo5EditBar)) + + def testGui(self): + getattr(QtGui, 'QAbstractKineticScroller') + +if __name__ == '__main__': + unittest.main() + From 2c937c64420c414a33f76c8df8f1f72592469576 Mon Sep 17 00:00:00 2001 From: Renato Filho Date: Mon, 19 Apr 2010 17:59:53 -0300 Subject: [PATCH 0044/1285] Fixed QApplication exit order. SignalManager need be destroyed before QApplication to avoid memory leak. Reviewer: Hugo Parente Lima , Luciano Wolf --- PySide/QtGui/glue/qapplication_init.cpp | 2 ++ libpyside/globalreceiver.cpp | 8 +++++--- libpyside/signalmanager.cpp | 6 ++++++ libpyside/signalmanager.h | 3 +++ 4 files changed, 16 insertions(+), 3 deletions(-) diff --git a/PySide/QtGui/glue/qapplication_init.cpp b/PySide/QtGui/glue/qapplication_init.cpp index 20e487b..112b8e0 100644 --- a/PySide/QtGui/glue/qapplication_init.cpp +++ b/PySide/QtGui/glue/qapplication_init.cpp @@ -6,6 +6,8 @@ static char** QApplicationArgValues; void DeleteQApplicationAtExit() { if (QApplication::instance()) { + //disconnect and decref all widgets used on signals before destroy qApp + PySide::SignalManager::instance().clear(); delete QApplication::instance(); for (int i = 0; i < QApplicationArgCount; ++i) delete[] QApplicationArgValues[i]; diff --git a/libpyside/globalreceiver.cpp b/libpyside/globalreceiver.cpp index 9fd65b4..e37235d 100644 --- a/libpyside/globalreceiver.cpp +++ b/libpyside/globalreceiver.cpp @@ -247,10 +247,12 @@ int GlobalReceiver::qt_metacall(QMetaObject::Call call, int id, void** args) retval = PyObject_CallObject(callback, preparedArgs); } - if (!retval) - qWarning() << "Error calling slot" << m_metaObject.method(id).signature(); - else + if (!retval) { + qDebug() << "Error calling slot" << m_metaObject.method(id).signature(); + PyErr_Print(); + } else { Py_DECREF(retval); + } return -1; } diff --git a/libpyside/signalmanager.cpp b/libpyside/signalmanager.cpp index 9cdcca1..f1b39b9 100644 --- a/libpyside/signalmanager.cpp +++ b/libpyside/signalmanager.cpp @@ -221,6 +221,12 @@ SignalManager::SignalManager() : m_d(new SignalManagerPrivate) TypeResolver::createValueTypeResolver("ushort"); } +void SignalManager::clear() +{ + delete m_d; + m_d = new SignalManagerPrivate(); +} + SignalManager::~SignalManager() { delete m_d; diff --git a/libpyside/signalmanager.h b/libpyside/signalmanager.h index 02d760d..233adf1 100644 --- a/libpyside/signalmanager.h +++ b/libpyside/signalmanager.h @@ -69,6 +69,9 @@ public: // Used to discovery if SignalManager was connected with object "destroyed()" signal. bool hasConnectionWith(const QObject *object); + + // Disconnect all signals managed by Globalreceiver + void clear(); private: struct SignalManagerPrivate; SignalManagerPrivate* m_d; From 1ec8bf6f1e745eea07c450b24dd1e6f6fb60f7db Mon Sep 17 00:00:00 2001 From: Renato Filho Date: Mon, 19 Apr 2010 17:57:08 -0300 Subject: [PATCH 0045/1285] Fixed QLayout family return policy. Reviewer: Hugo Parente Lima , Luciano Wolf --- PySide/QtGui/glue/qlayout_help_functions.h | 51 +++++ PySide/QtGui/typesystem_gui_common.xml | 251 +++++++++++++-------- 2 files changed, 203 insertions(+), 99 deletions(-) create mode 100644 PySide/QtGui/glue/qlayout_help_functions.h diff --git a/PySide/QtGui/glue/qlayout_help_functions.h b/PySide/QtGui/glue/qlayout_help_functions.h new file mode 100644 index 0000000..186e0ec --- /dev/null +++ b/PySide/QtGui/glue/qlayout_help_functions.h @@ -0,0 +1,51 @@ +#ifndef QLAYOUT_HELP_FUNCTIONS +#define QLAYOUT_HELP_FUNCTIONS + +void addLayoutOwnership(QLayout *layout, QLayoutItem *item); + +inline void addLayoutOwnership(QLayout *layout, QWidget *widget) +{ + //transfer ownership to parent widget + QWidget *parent = layout->parentWidget(); + if (!parent) + return; + + Shiboken::AutoDecRef pyParent(Shiboken::Converter::toPython(parent)); + Shiboken::AutoDecRef pyChild(Shiboken::Converter::toPython(widget)); + Shiboken::setParent(pyParent, pyChild); +} + +inline void addLayoutOwnership(QLayout *layout, QLayout *other) +{ + //transfer all children widgetes from other to layout parent widget + QWidget *parent = layout->parentWidget(); + if (!parent) + return; + + for (int i=0, i_max=layout->count(); i < i_max; i++) { + addLayoutOwnership(layout, layout->itemAt(i)); + } + + Shiboken::AutoDecRef pyParent(Shiboken::Converter::toPython(layout)); + Shiboken::AutoDecRef pyChild(Shiboken::Converter::toPython(other)); + Shiboken::setParent(pyParent, pyChild); + +} + +inline void addLayoutOwnership(QLayout *layout, QLayoutItem *item) +{ + QWidget *w = item->widget(); + if (w) + addLayoutOwnership(layout, w); + else { + QLayout *l = item->layout(); + if (l) + addLayoutOwnership(layout, l); + } + + Shiboken::AutoDecRef pyParent(Shiboken::Converter::toPython(layout)); + Shiboken::AutoDecRef pyChild(Shiboken::Converter::toPython(item)); + Shiboken::setParent(pyParent, pyChild); +} + +#endif diff --git a/PySide/QtGui/typesystem_gui_common.xml b/PySide/QtGui/typesystem_gui_common.xml index 08efe3d..b901229 100644 --- a/PySide/QtGui/typesystem_gui_common.xml +++ b/PySide/QtGui/typesystem_gui_common.xml @@ -1180,7 +1180,27 @@ - + + + + + + + + + + + + + + + + + + + + + @@ -2262,171 +2282,204 @@ - - - - - - - - + + + + + + + + + + + addLayoutOwnership(%CPPSELF, %0); + + + + + + + + + + + addLayoutOwnership(%CPPSELF, %1); + + + - - - - + + addLayoutOwnership(%CPPSELF, %1); + - - - - + + addLayoutOwnership(%CPPSELF, %1); + - - - - - - - - - - + + addLayoutOwnership(%CPPSELF, %1); + - - - + + addLayoutOwnership(%CPPSELF, %1); + + + + + + + - - - + + addLayoutOwnership(%CPPSELF, %1); + - + + - + + + addLayoutOwnership(%CPPSELF, %0); + + - - - - + + addLayoutOwnership(%CPPSELF, %1); + - - - - - - - - - + + addLayoutOwnership(%CPPSELF, %2); + + - - - + + + + + + + + + + addLayoutOwnership(%CPPSELF, %0); + + + + + + addLayoutOwnership(%CPPSELF, %1); + - - - + + addLayoutOwnership(%CPPSELF, %1); + - - - + + addLayoutOwnership(%CPPSELF, %1); + - - - + + addLayoutOwnership(%CPPSELF, %2); + - - - + + addLayoutOwnership(%CPPSELF, %2); + - - - + + addLayoutOwnership(%CPPSELF, %2); + - - - + + addLayoutOwnership(%CPPSELF, %1); + - - - - - - - - + + addLayoutOwnership(%CPPSELF, %2); + + + + + + - - - + + addLayoutOwnership(%CPPSELF, %1); + - - - + + addLayoutOwnership(%CPPSELF, %1); + - - - + + addLayoutOwnership(%CPPSELF, %1); + - - - + + addLayoutOwnership(%CPPSELF, %1); + - - - - - - - - + + addLayoutOwnership(%CPPSELF, %1); + - - + + addLayoutOwnership(%CPPSELF, %1); + + + + + + + + + addLayoutOwnership(%CPPSELF, %0); + + From 3c68c1f03f14f233f11dc2918192078a36efd276 Mon Sep 17 00:00:00 2001 From: Renato Filho Date: Thu, 22 Apr 2010 14:39:51 -0300 Subject: [PATCH 0046/1285] Fixed QLayoutItemWidget polymorphic expression. Reviewer: Hugo Parente Lima , Luciano Wolf --- PySide/QtGui/typesystem_gui_common.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/PySide/QtGui/typesystem_gui_common.xml b/PySide/QtGui/typesystem_gui_common.xml index b901229..74798b5 100644 --- a/PySide/QtGui/typesystem_gui_common.xml +++ b/PySide/QtGui/typesystem_gui_common.xml @@ -2178,7 +2178,7 @@ - + From 59ccd4c744de0c3c41015a80798e31e8481df5b0 Mon Sep 17 00:00:00 2001 From: Renato Filho Date: Thu, 22 Apr 2010 16:18:23 -0300 Subject: [PATCH 0047/1285] For now on, the c++ ownership is mandatory on QLayout family classes. QLayouts class does not take ownership of widgets, only transfer ownership to parentWidgets. If you add a QWidget in a QLayout this widget does not have your refcount incremented until this layout get a parent QWidget. Reviewer: Hugo Parente Lima , Luciano Wolf --- tests/qtgui/qlayout_ref_test.py | 34 ++++++++++++++++++++++++--------- 1 file changed, 25 insertions(+), 9 deletions(-) diff --git a/tests/qtgui/qlayout_ref_test.py b/tests/qtgui/qlayout_ref_test.py index a8e924f..a634271 100644 --- a/tests/qtgui/qlayout_ref_test.py +++ b/tests/qtgui/qlayout_ref_test.py @@ -4,7 +4,7 @@ import unittest from sys import getrefcount -from PySide.QtGui import QHBoxLayout, QVBoxLayout, QGridLayout +from PySide.QtGui import QHBoxLayout, QVBoxLayout, QGridLayout, QWidget from PySide.QtGui import QStackedLayout, QFormLayout from PySide.QtGui import QApplication, QPushButton, QLabel @@ -42,26 +42,41 @@ class SaveReference(UsesQApplication): # Check if doesn't mess around with previous widget refcount self.assertEqual(getrefcount(self.widget1), 3) + def testMoveLayout(self): + l = QHBoxLayout() + self.assertEqual(getrefcount(self.widget1), 2) + l.addWidget(self.widget1) + self.assertEqual(getrefcount(self.widget1), 2) + + w = QWidget() + w.setLayout(l) + self.assertEqual(getrefcount(self.widget1), 3) + + def testHBoxReference(self): #QHBoxLayout.addWidget reference count - self.checkLayoutReference(QHBoxLayout()) + w = QWidget() + self.checkLayoutReference(QHBoxLayout(w)) def testVBoxReference(self): #QVBoxLayout.addWidget reference count - self.checkLayoutReference(QVBoxLayout()) + w = QWidget() + self.checkLayoutReference(QVBoxLayout(w)) def testGridReference(self): #QGridLayout.addWidget reference count - self.checkLayoutReference(QGridLayout()) + w = QWidget() + self.checkLayoutReference(QGridLayout(w)) def testFormReference(self): #QFormLayout.addWidget reference count - self.checkLayoutReference(QFormLayout()) + w = QWidget() + self.checkLayoutReference(QFormLayout(w)) def testStackedReference(self): #QStackedLayout.addWidget reference count - self.checkLayoutReference(QStackedLayout()) - + w = QWidget() + self.checkLayoutReference(QStackedLayout(w)) class MultipleAdd(UsesQApplication): '''Test case to check if refcount is incremented only once when multiple @@ -73,12 +88,14 @@ class MultipleAdd(UsesQApplication): #Acquire resources super(MultipleAdd, self).setUp() self.widget = QPushButton('click me') - self.layout = QHBoxLayout() + self.win = QWidget() + self.layout = QHBoxLayout(self.win) def tearDown(self): #Release resources del self.widget del self.layout + del self.win super(MultipleAdd, self).tearDown() def testRefCount(self): @@ -91,6 +108,5 @@ class MultipleAdd(UsesQApplication): self.layout.addWidget(self.widget) self.assertEqual(getrefcount(self.widget), 3) - if __name__ == '__main__': unittest.main() From 765dc0857887bb838e22797f9e237f2d63cb1bb5 Mon Sep 17 00:00:00 2001 From: Hugo Parente Lima Date: Tue, 13 Apr 2010 20:22:15 -0300 Subject: [PATCH 0048/1285] Function modifications of QDragMoveEvent moved to its base type, QDropEvent. --- PySide/QtGui/typesystem_gui_common.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/PySide/QtGui/typesystem_gui_common.xml b/PySide/QtGui/typesystem_gui_common.xml index 74798b5..177e62b 100644 --- a/PySide/QtGui/typesystem_gui_common.xml +++ b/PySide/QtGui/typesystem_gui_common.xml @@ -2197,7 +2197,8 @@ - + + @@ -2207,7 +2208,6 @@ - From e6cfe657ff35b10a82419b027dc056a3e560795b Mon Sep 17 00:00:00 2001 From: Hugo Parente Lima Date: Fri, 16 Apr 2010 15:44:07 -0300 Subject: [PATCH 0049/1285] Moves contents of qobjectdefs_pyside.h to global.h. This change is required to APIExtractor correct find the file where the classes declared in qobjectdefs_pyside.h were. --- PySide/global.h | 329 ++++++++++++++++++++++++++++++++++- PySide/qobjectdefs_pyside.h | 335 ------------------------------------ 2 files changed, 328 insertions(+), 336 deletions(-) delete mode 100644 PySide/qobjectdefs_pyside.h diff --git a/PySide/global.h b/PySide/global.h index cb94eef..93c3ae6 100644 --- a/PySide/global.h +++ b/PySide/global.h @@ -1,7 +1,334 @@ +/**************************************************************************** +** +** Copyright (C) 2009-2010 Nokia Corporation and/or its subsidiary(-ies). +** +** This file is part of the QtCore module of the Qt Toolkit, plus some +** modifications by PySide team. +** +** Commercial Usage +** Licensees holding valid Qt Commercial licenses may use this file in +** accordance with the Qt Commercial License Agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Nokia. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain +** additional rights. These rights are described in the Nokia Qt LGPL +** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this +** package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** If you are unsure which license is appropriate for your use, please +** contact the sales department at qt-sales@nokia.com. +** +****************************************************************************/ + #undef QT_NO_STL #undef QT_NO_STL_WCHAR -#include "qobjectdefs_pyside.h" +#include + +QT_BEGIN_HEADER + +QT_BEGIN_NAMESPACE + +QT_MODULE(Core) + +class QByteArray; + +class QString; + +#ifndef Q_MOC_OUTPUT_REVISION +#define Q_MOC_OUTPUT_REVISION 61 +#endif + +// macro for onaming members +#ifdef METHOD +#undef METHOD +#endif +#ifdef SLOT +#undef SLOT +#endif +#ifdef SIGNAL +#undef SIGNAL +#endif + +Q_CORE_EXPORT const char *qFlagLocation(const char *method); + +#define QTOSTRING_HELPER(s) #s +#define QTOSTRING(s) QTOSTRING_HELPER(s) +#ifndef QT_NO_DEBUG +# define QLOCATION "\0"__FILE__":"QTOSTRING(__LINE__) +# define METHOD(a) qFlagLocation("0"#a QLOCATION) +# define SLOT(a) qFlagLocation("1"#a QLOCATION) +# define SIGNAL(a) qFlagLocation("2"#a QLOCATION) +#else +# define METHOD(a) "0"#a +# define SLOT(a) "1"#a +# define SIGNAL(a) "2"#a +#endif + +#ifdef QT3_SUPPORT +#define METHOD_CODE 0 // member type codes +#define SLOT_CODE 1 +#define SIGNAL_CODE 2 +#endif + +#define QMETHOD_CODE 0 // member type codes +#define QSLOT_CODE 1 +#define QSIGNAL_CODE 2 + +#define Q_ARG(type, data) QArgument(#type, data) +#define Q_RETURN_ARG(type, data) QReturnArgument(#type, data) + +class QObject; +class QMetaMethod; +class QMetaEnum; +class QMetaProperty; +class QMetaClassInfo; + + +class Q_CORE_EXPORT QGenericArgument +{ +public: + inline QGenericArgument(const char *aName = 0, const void *aData = 0) + : _data(aData), _name(aName) {} + inline void *data() const { return const_cast(_data); } + inline const char *name() const { return _name; } + +private: + const void *_data; + const char *_name; +}; + +class Q_CORE_EXPORT QGenericReturnArgument: public QGenericArgument +{ +public: + inline QGenericReturnArgument(const char *aName = 0, void *aData = 0) + : QGenericArgument(aName, aData) + {} +}; + +template +class QArgument: public QGenericArgument +{ +public: + inline QArgument(const char *aName, const T &aData) + : QGenericArgument(aName, static_cast(&aData)) + {} +}; + + +template +class QReturnArgument: public QGenericReturnArgument +{ +public: + inline QReturnArgument(const char *aName, T &aData) + : QGenericReturnArgument(aName, static_cast(&aData)) + {} +}; + +struct Q_CORE_EXPORT QMetaObject +{ + const char *className() const; + const QMetaObject *superClass() const; + + QObject *cast(QObject *obj) const; + +#ifndef QT_NO_TRANSLATION + // ### Qt 4: Merge overloads + QString tr(const char *s, const char *c) const; + QString trUtf8(const char *s, const char *c) const; + QString tr(const char *s, const char *c, int n) const; + QString trUtf8(const char *s, const char *c, int n) const; +#endif // QT_NO_TRANSLATION + + int methodOffset() const; + int enumeratorOffset() const; + int propertyOffset() const; + int classInfoOffset() const; + + int constructorCount() const; + int methodCount() const; + int enumeratorCount() const; + int propertyCount() const; + int classInfoCount() const; + + int indexOfConstructor(const char *constructor) const; + int indexOfMethod(const char *method) const; + int indexOfSignal(const char *signal) const; + int indexOfSlot(const char *slot) const; + int indexOfEnumerator(const char *name) const; + int indexOfProperty(const char *name) const; + int indexOfClassInfo(const char *name) const; + + QMetaMethod constructor(int index) const; + QMetaMethod method(int index) const; + QMetaEnum enumerator(int index) const; + QMetaProperty property(int index) const; + QMetaClassInfo classInfo(int index) const; + QMetaProperty userProperty() const; + + static bool checkConnectArgs(const char *signal, const char *method); + static QByteArray normalizedSignature(const char *method); + static QByteArray normalizedType(const char *type); + + // internal index-based connect + static bool connect(const QObject *sender, int signal_index, + const QObject *receiver, int method_index, + int type = 0, int *types = 0); + // internal index-based disconnect + static bool disconnect(const QObject *sender, int signal_index, + const QObject *receiver, int method_index); + // internal slot-name based connect + static void connectSlotsByName(QObject *o); + + // internal index-based signal activation + static void activate(QObject *sender, int signal_index, void **argv); + static void activate(QObject *sender, int from_signal_index, int to_signal_index, void **argv); + static void activate(QObject *sender, const QMetaObject *, int local_signal_index, void **argv); + static void activate(QObject *sender, const QMetaObject *, int from_local_signal_index, int to_local_signal_index, void **argv); + // internal guarded pointers + static void addGuard(QObject **ptr); + static void removeGuard(QObject **ptr); + static void changeGuard(QObject **ptr, QObject *o); + + static bool invokeMethod(QObject *obj, const char *member, + Qt::ConnectionType, + QGenericReturnArgument ret, + QGenericArgument val0 = QGenericArgument(0), + QGenericArgument val1 = QGenericArgument(), + QGenericArgument val2 = QGenericArgument(), + QGenericArgument val3 = QGenericArgument(), + QGenericArgument val4 = QGenericArgument(), + QGenericArgument val5 = QGenericArgument(), + QGenericArgument val6 = QGenericArgument(), + QGenericArgument val7 = QGenericArgument(), + QGenericArgument val8 = QGenericArgument(), + QGenericArgument val9 = QGenericArgument()); + + static inline bool invokeMethod(QObject *obj, const char *member, + QGenericReturnArgument ret, + QGenericArgument val0 = QGenericArgument(0), + QGenericArgument val1 = QGenericArgument(), + QGenericArgument val2 = QGenericArgument(), + QGenericArgument val3 = QGenericArgument(), + QGenericArgument val4 = QGenericArgument(), + QGenericArgument val5 = QGenericArgument(), + QGenericArgument val6 = QGenericArgument(), + QGenericArgument val7 = QGenericArgument(), + QGenericArgument val8 = QGenericArgument(), + QGenericArgument val9 = QGenericArgument()) + { + return invokeMethod(obj, member, Qt::AutoConnection, ret, val0, val1, val2, val3, + val4, val5, val6, val7, val8, val9); + } + + static inline bool invokeMethod(QObject *obj, const char *member, + Qt::ConnectionType type, + QGenericArgument val0 = QGenericArgument(0), + QGenericArgument val1 = QGenericArgument(), + QGenericArgument val2 = QGenericArgument(), + QGenericArgument val3 = QGenericArgument(), + QGenericArgument val4 = QGenericArgument(), + QGenericArgument val5 = QGenericArgument(), + QGenericArgument val6 = QGenericArgument(), + QGenericArgument val7 = QGenericArgument(), + QGenericArgument val8 = QGenericArgument(), + QGenericArgument val9 = QGenericArgument()) + { + return invokeMethod(obj, member, type, QGenericReturnArgument(), val0, val1, val2, + val3, val4, val5, val6, val7, val8, val9); + } + + static inline bool invokeMethod(QObject *obj, const char *member, + QGenericArgument val0 = QGenericArgument(0), + QGenericArgument val1 = QGenericArgument(), + QGenericArgument val2 = QGenericArgument(), + QGenericArgument val3 = QGenericArgument(), + QGenericArgument val4 = QGenericArgument(), + QGenericArgument val5 = QGenericArgument(), + QGenericArgument val6 = QGenericArgument(), + QGenericArgument val7 = QGenericArgument(), + QGenericArgument val8 = QGenericArgument(), + QGenericArgument val9 = QGenericArgument()) + { + return invokeMethod(obj, member, Qt::AutoConnection, QGenericReturnArgument(), val0, + val1, val2, val3, val4, val5, val6, val7, val8, val9); + } + + QObject *newInstance(QGenericArgument val0 = QGenericArgument(0), + QGenericArgument val1 = QGenericArgument(), + QGenericArgument val2 = QGenericArgument(), + QGenericArgument val3 = QGenericArgument(), + QGenericArgument val4 = QGenericArgument(), + QGenericArgument val5 = QGenericArgument(), + QGenericArgument val6 = QGenericArgument(), + QGenericArgument val7 = QGenericArgument(), + QGenericArgument val8 = QGenericArgument(), + QGenericArgument val9 = QGenericArgument()) const; + + enum Call { + InvokeMetaMethod, + ReadProperty, + WriteProperty, + ResetProperty, + QueryPropertyDesignable, + QueryPropertyScriptable, + QueryPropertyStored, + QueryPropertyEditable, + QueryPropertyUser, + CreateInstance + }; + + int static_metacall(Call, int, void **) const; + +#ifdef QT3_SUPPORT + QT3_SUPPORT const char *superClassName() const; +#endif + + struct { // private data + const QMetaObject *superdata; + const char *stringdata; + const uint *data; + const void *extradata; + } d; +}; + +struct QMetaObjectExtraData +{ + const QMetaObject **objects; + int (*static_metacall)(QMetaObject::Call, int, void **); +}; + +inline const char *QMetaObject::className() const +{ return d.stringdata; } + +inline const QMetaObject *QMetaObject::superClass() const +{ return d.superdata; } + +#ifdef QT3_SUPPORT +inline const char *QMetaObject::superClassName() const +{ return d.superdata ? d.superdata->className() : 0; } +#endif + +QT_END_NAMESPACE + +QT_END_HEADER //#define Q_QDOC #define qdoc diff --git a/PySide/qobjectdefs_pyside.h b/PySide/qobjectdefs_pyside.h deleted file mode 100644 index 41015fc..0000000 --- a/PySide/qobjectdefs_pyside.h +++ /dev/null @@ -1,335 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). -** Contact: Qt Software Information (qt-info@nokia.com) -** -** This file is part of the QtCore module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL$ -** Commercial Usage -** Licensees holding valid Qt Commercial licenses may use this file in -** accordance with the Qt Commercial License Agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and Nokia. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 2.1 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 2.1 requirements -** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -** -** In addition, as a special exception, Nokia gives you certain -** additional rights. These rights are described in the Nokia Qt LGPL -** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this -** package. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 3.0 as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL included in the -** packaging of this file. Please review the following information to -** ensure the GNU General Public License version 3.0 requirements will be -** met: http://www.gnu.org/copyleft/gpl.html. -** -** If you are unsure which license is appropriate for your use, please -** contact the sales department at qt-sales@nokia.com. -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QOBJECTDEFS_PYSIDE_H -#define QOBJECTDEFS_PYSIDE_H - -#include - -QT_BEGIN_HEADER - -QT_BEGIN_NAMESPACE - -QT_MODULE(Core) - -class QByteArray; - -class QString; - -#ifndef Q_MOC_OUTPUT_REVISION -#define Q_MOC_OUTPUT_REVISION 61 -#endif - -// macro for onaming members -#ifdef METHOD -#undef METHOD -#endif -#ifdef SLOT -#undef SLOT -#endif -#ifdef SIGNAL -#undef SIGNAL -#endif - -Q_CORE_EXPORT const char *qFlagLocation(const char *method); - -#define QTOSTRING_HELPER(s) #s -#define QTOSTRING(s) QTOSTRING_HELPER(s) -#ifndef QT_NO_DEBUG -# define QLOCATION "\0"__FILE__":"QTOSTRING(__LINE__) -# define METHOD(a) qFlagLocation("0"#a QLOCATION) -# define SLOT(a) qFlagLocation("1"#a QLOCATION) -# define SIGNAL(a) qFlagLocation("2"#a QLOCATION) -#else -# define METHOD(a) "0"#a -# define SLOT(a) "1"#a -# define SIGNAL(a) "2"#a -#endif - -#ifdef QT3_SUPPORT -#define METHOD_CODE 0 // member type codes -#define SLOT_CODE 1 -#define SIGNAL_CODE 2 -#endif - -#define QMETHOD_CODE 0 // member type codes -#define QSLOT_CODE 1 -#define QSIGNAL_CODE 2 - -#define Q_ARG(type, data) QArgument(#type, data) -#define Q_RETURN_ARG(type, data) QReturnArgument(#type, data) - -class QObject; -class QMetaMethod; -class QMetaEnum; -class QMetaProperty; -class QMetaClassInfo; - - -class Q_CORE_EXPORT QGenericArgument -{ -public: - inline QGenericArgument(const char *aName = 0, const void *aData = 0) - : _data(aData), _name(aName) {} - inline void *data() const { return const_cast(_data); } - inline const char *name() const { return _name; } - -private: - const void *_data; - const char *_name; -}; - -class Q_CORE_EXPORT QGenericReturnArgument: public QGenericArgument -{ -public: - inline QGenericReturnArgument(const char *aName = 0, void *aData = 0) - : QGenericArgument(aName, aData) - {} -}; - -template -class QArgument: public QGenericArgument -{ -public: - inline QArgument(const char *aName, const T &aData) - : QGenericArgument(aName, static_cast(&aData)) - {} -}; - - -template -class QReturnArgument: public QGenericReturnArgument -{ -public: - inline QReturnArgument(const char *aName, T &aData) - : QGenericReturnArgument(aName, static_cast(&aData)) - {} -}; - -struct Q_CORE_EXPORT QMetaObject -{ - const char *className() const; - const QMetaObject *superClass() const; - - QObject *cast(QObject *obj) const; - -#ifndef QT_NO_TRANSLATION - // ### Qt 4: Merge overloads - QString tr(const char *s, const char *c) const; - QString trUtf8(const char *s, const char *c) const; - QString tr(const char *s, const char *c, int n) const; - QString trUtf8(const char *s, const char *c, int n) const; -#endif // QT_NO_TRANSLATION - - int methodOffset() const; - int enumeratorOffset() const; - int propertyOffset() const; - int classInfoOffset() const; - - int constructorCount() const; - int methodCount() const; - int enumeratorCount() const; - int propertyCount() const; - int classInfoCount() const; - - int indexOfConstructor(const char *constructor) const; - int indexOfMethod(const char *method) const; - int indexOfSignal(const char *signal) const; - int indexOfSlot(const char *slot) const; - int indexOfEnumerator(const char *name) const; - int indexOfProperty(const char *name) const; - int indexOfClassInfo(const char *name) const; - - QMetaMethod constructor(int index) const; - QMetaMethod method(int index) const; - QMetaEnum enumerator(int index) const; - QMetaProperty property(int index) const; - QMetaClassInfo classInfo(int index) const; - QMetaProperty userProperty() const; - - static bool checkConnectArgs(const char *signal, const char *method); - static QByteArray normalizedSignature(const char *method); - static QByteArray normalizedType(const char *type); - - // internal index-based connect - static bool connect(const QObject *sender, int signal_index, - const QObject *receiver, int method_index, - int type = 0, int *types = 0); - // internal index-based disconnect - static bool disconnect(const QObject *sender, int signal_index, - const QObject *receiver, int method_index); - // internal slot-name based connect - static void connectSlotsByName(QObject *o); - - // internal index-based signal activation - static void activate(QObject *sender, int signal_index, void **argv); - static void activate(QObject *sender, int from_signal_index, int to_signal_index, void **argv); - static void activate(QObject *sender, const QMetaObject *, int local_signal_index, void **argv); - static void activate(QObject *sender, const QMetaObject *, int from_local_signal_index, int to_local_signal_index, void **argv); - // internal guarded pointers - static void addGuard(QObject **ptr); - static void removeGuard(QObject **ptr); - static void changeGuard(QObject **ptr, QObject *o); - - static bool invokeMethod(QObject *obj, const char *member, - Qt::ConnectionType, - QGenericReturnArgument ret, - QGenericArgument val0 = QGenericArgument(0), - QGenericArgument val1 = QGenericArgument(), - QGenericArgument val2 = QGenericArgument(), - QGenericArgument val3 = QGenericArgument(), - QGenericArgument val4 = QGenericArgument(), - QGenericArgument val5 = QGenericArgument(), - QGenericArgument val6 = QGenericArgument(), - QGenericArgument val7 = QGenericArgument(), - QGenericArgument val8 = QGenericArgument(), - QGenericArgument val9 = QGenericArgument()); - - static inline bool invokeMethod(QObject *obj, const char *member, - QGenericReturnArgument ret, - QGenericArgument val0 = QGenericArgument(0), - QGenericArgument val1 = QGenericArgument(), - QGenericArgument val2 = QGenericArgument(), - QGenericArgument val3 = QGenericArgument(), - QGenericArgument val4 = QGenericArgument(), - QGenericArgument val5 = QGenericArgument(), - QGenericArgument val6 = QGenericArgument(), - QGenericArgument val7 = QGenericArgument(), - QGenericArgument val8 = QGenericArgument(), - QGenericArgument val9 = QGenericArgument()) - { - return invokeMethod(obj, member, Qt::AutoConnection, ret, val0, val1, val2, val3, - val4, val5, val6, val7, val8, val9); - } - - static inline bool invokeMethod(QObject *obj, const char *member, - Qt::ConnectionType type, - QGenericArgument val0 = QGenericArgument(0), - QGenericArgument val1 = QGenericArgument(), - QGenericArgument val2 = QGenericArgument(), - QGenericArgument val3 = QGenericArgument(), - QGenericArgument val4 = QGenericArgument(), - QGenericArgument val5 = QGenericArgument(), - QGenericArgument val6 = QGenericArgument(), - QGenericArgument val7 = QGenericArgument(), - QGenericArgument val8 = QGenericArgument(), - QGenericArgument val9 = QGenericArgument()) - { - return invokeMethod(obj, member, type, QGenericReturnArgument(), val0, val1, val2, - val3, val4, val5, val6, val7, val8, val9); - } - - static inline bool invokeMethod(QObject *obj, const char *member, - QGenericArgument val0 = QGenericArgument(0), - QGenericArgument val1 = QGenericArgument(), - QGenericArgument val2 = QGenericArgument(), - QGenericArgument val3 = QGenericArgument(), - QGenericArgument val4 = QGenericArgument(), - QGenericArgument val5 = QGenericArgument(), - QGenericArgument val6 = QGenericArgument(), - QGenericArgument val7 = QGenericArgument(), - QGenericArgument val8 = QGenericArgument(), - QGenericArgument val9 = QGenericArgument()) - { - return invokeMethod(obj, member, Qt::AutoConnection, QGenericReturnArgument(), val0, - val1, val2, val3, val4, val5, val6, val7, val8, val9); - } - - QObject *newInstance(QGenericArgument val0 = QGenericArgument(0), - QGenericArgument val1 = QGenericArgument(), - QGenericArgument val2 = QGenericArgument(), - QGenericArgument val3 = QGenericArgument(), - QGenericArgument val4 = QGenericArgument(), - QGenericArgument val5 = QGenericArgument(), - QGenericArgument val6 = QGenericArgument(), - QGenericArgument val7 = QGenericArgument(), - QGenericArgument val8 = QGenericArgument(), - QGenericArgument val9 = QGenericArgument()) const; - - enum Call { - InvokeMetaMethod, - ReadProperty, - WriteProperty, - ResetProperty, - QueryPropertyDesignable, - QueryPropertyScriptable, - QueryPropertyStored, - QueryPropertyEditable, - QueryPropertyUser, - CreateInstance - }; - - int static_metacall(Call, int, void **) const; - -#ifdef QT3_SUPPORT - QT3_SUPPORT const char *superClassName() const; -#endif - - struct { // private data - const QMetaObject *superdata; - const char *stringdata; - const uint *data; - const void *extradata; - } d; -}; - -struct QMetaObjectExtraData -{ - const QMetaObject **objects; - int (*static_metacall)(QMetaObject::Call, int, void **); -}; - -inline const char *QMetaObject::className() const -{ return d.stringdata; } - -inline const QMetaObject *QMetaObject::superClass() const -{ return d.superdata; } - -#ifdef QT3_SUPPORT -inline const char *QMetaObject::superClassName() const -{ return d.superdata ? d.superdata->className() : 0; } -#endif - -QT_END_NAMESPACE - -QT_END_HEADER - -#endif // QOBJECTDEFS_H From 88bae999f715fcd22ea7efe5c497d60323ddef39 Mon Sep 17 00:00:00 2001 From: Hugo Parente Lima Date: Thu, 22 Apr 2010 15:54:52 -0300 Subject: [PATCH 0050/1285] Added all Qt global functions using the brand new function tag. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Reviewer: Renato Araújo Reviewer: Luciano Wolf --- PySide/QtCore/typesystem_core.xml | 266 +++---------------------- PySide/QtGui/typesystem_gui_common.xml | 16 ++ 2 files changed, 41 insertions(+), 241 deletions(-) diff --git a/PySide/QtCore/typesystem_core.xml b/PySide/QtCore/typesystem_core.xml index c7a8184..41d5f53 100644 --- a/PySide/QtCore/typesystem_core.xml +++ b/PySide/QtCore/typesystem_core.xml @@ -1,64 +1,31 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + @@ -81,189 +48,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/PySide/QtGui/typesystem_gui_common.xml b/PySide/QtGui/typesystem_gui_common.xml index 177e62b..78335eb 100644 --- a/PySide/QtGui/typesystem_gui_common.xml +++ b/PySide/QtGui/typesystem_gui_common.xml @@ -1,5 +1,21 @@ + + + + + + + + + + + + + + + + From 0255f6ebb65850e593d34da4804d2bad2ad486bc Mon Sep 17 00:00:00 2001 From: Luciano Wolf Date: Wed, 21 Apr 2010 13:07:45 -0300 Subject: [PATCH 0051/1285] Adding support to QtScript module. --- PySide/CMakeLists.txt | 3 +- PySide/QtCore/CMakeLists.txt | 1 + PySide/QtCore/typesystem_core.xml | 2 ++ PySide/QtScript/CMakeLists.txt | 47 +++++++++++++++++++++++++++ PySide/QtScript/typesystem_script.xml | 31 ++++++++++++++++++ PySide/__init__.py | 2 +- 6 files changed, 83 insertions(+), 3 deletions(-) create mode 100644 PySide/QtScript/CMakeLists.txt create mode 100644 PySide/QtScript/typesystem_script.xml diff --git a/PySide/CMakeLists.txt b/PySide/CMakeLists.txt index 32f9b7c..3f1a8ac 100644 --- a/PySide/CMakeLists.txt +++ b/PySide/CMakeLists.txt @@ -33,8 +33,6 @@ endmacro(HAS_QT_MODULE) execute_process(COMMAND ${CMAKE_COMMAND} -E create_symlink "${CMAKE_CURRENT_SOURCE_DIR}/__init__.py" "${CMAKE_BINARY_DIR}/PySide/__init__.py") - - # Try to find QtMultimedia # TODO: Remove this hack when cmake support QtMultimedia module if (NOT QT_QTMULTIMEDIA_FOUND AND ${QTVERSION} VERSION_GREATER 4.5.9) @@ -75,6 +73,7 @@ HAS_QT_MODULE(QT_QTUITOOLS_FOUND QtUiTools) HAS_QT_MODULE(QT_QTHELP_FOUND QtHelp) HAS_QT_MODULE(QT_QTXMLPATTERNS_FOUND QtXmlPatterns) HAS_QT_MODULE(QT_QTMAEMO5_FOUND QtMaemo5) +HAS_QT_MODULE(QT_QTSCRIPT_FOUND QtScript) HAS_QT_MODULE(QT_QTMULTIMEDIA_FOUND QtMultimedia) diff --git a/PySide/QtCore/CMakeLists.txt b/PySide/QtCore/CMakeLists.txt index 3b8bef8..35fbbc0 100644 --- a/PySide/QtCore/CMakeLists.txt +++ b/PySide/QtCore/CMakeLists.txt @@ -10,6 +10,7 @@ else() ${CMAKE_CURRENT_BINARY_DIR}/${BINDING_NAME}/QtCore/qabstracttransition_wrapper.cpp ${CMAKE_CURRENT_BINARY_DIR}/${BINDING_NAME}/QtCore/qanimationgroup_wrapper.cpp ${CMAKE_CURRENT_BINARY_DIR}/${BINDING_NAME}/QtCore/qeventtransition_wrapper.cpp + ${CMAKE_CURRENT_BINARY_DIR}/${BINDING_NAME}/QtCore/qfactoryinterface_wrapper.cpp ${CMAKE_CURRENT_BINARY_DIR}/${BINDING_NAME}/QtCore/qfinalstate_wrapper.cpp ${CMAKE_CURRENT_BINARY_DIR}/${BINDING_NAME}/QtCore/qhistorystate_wrapper.cpp ${CMAKE_CURRENT_BINARY_DIR}/${BINDING_NAME}/QtCore/qmargins_wrapper.cpp diff --git a/PySide/QtCore/typesystem_core.xml b/PySide/QtCore/typesystem_core.xml index 41d5f53..4b181e3 100644 --- a/PySide/QtCore/typesystem_core.xml +++ b/PySide/QtCore/typesystem_core.xml @@ -2818,6 +2818,8 @@ + + diff --git a/PySide/QtScript/CMakeLists.txt b/PySide/QtScript/CMakeLists.txt new file mode 100644 index 0000000..fda930c --- /dev/null +++ b/PySide/QtScript/CMakeLists.txt @@ -0,0 +1,47 @@ +project(QtScript) + +set(QtScript_SRC +${CMAKE_CURRENT_BINARY_DIR}/PySide/QtScript/qscriptable_wrapper.cpp +${CMAKE_CURRENT_BINARY_DIR}/PySide/QtScript/qscriptclass_wrapper.cpp +${CMAKE_CURRENT_BINARY_DIR}/PySide/QtScript/qscriptclasspropertyiterator_wrapper.cpp +${CMAKE_CURRENT_BINARY_DIR}/PySide/QtScript/qscriptcontext_wrapper.cpp +${CMAKE_CURRENT_BINARY_DIR}/PySide/QtScript/qscriptcontextinfo_wrapper.cpp +${CMAKE_CURRENT_BINARY_DIR}/PySide/QtScript/qscriptengineagent_wrapper.cpp +${CMAKE_CURRENT_BINARY_DIR}/PySide/QtScript/qtscript_module_wrapper.cpp +${CMAKE_CURRENT_BINARY_DIR}/PySide/QtScript/qscriptengine_wrapper.cpp +${CMAKE_CURRENT_BINARY_DIR}/PySide/QtScript/qscriptextensioninterface_wrapper.cpp +${CMAKE_CURRENT_BINARY_DIR}/PySide/QtScript/qscriptextensionplugin_wrapper.cpp +${CMAKE_CURRENT_BINARY_DIR}/PySide/QtScript/qscriptprogram_wrapper.cpp +${CMAKE_CURRENT_BINARY_DIR}/PySide/QtScript/qscriptstring_wrapper.cpp +${CMAKE_CURRENT_BINARY_DIR}/PySide/QtScript/qscriptvalue_wrapper.cpp +${CMAKE_CURRENT_BINARY_DIR}/PySide/QtScript/qscriptvalueiterator_wrapper.cpp + +) + +execute_generator(script QtScript_SRC "${CMAKE_CURRENT_BINARY_DIR}:${QtCore_SOURCE_DIR}") + +include_directories(${CMAKE_CURRENT_SOURCE_DIR} + ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtScript + ${QT_INCLUDE_DIR} + ${QT_QTSCRIPT_INCLUDE_DIR} + ${SHIBOKEN_INCLUDE_DIR} + ${libpyside_SOURCE_DIR} + ${PYTHON_INCLUDE_PATH} + ${QtCore_BINARY_DIR}/PySide/QtCore + ) +add_library(QtScript MODULE ${QtScript_SRC}) +set_property(TARGET QtScript PROPERTY PREFIX "") +target_link_libraries(QtScript + pyside + ${PYTHON_LIBRARIES} + ${SHIBOKEN_LIBRARY} + ${QT_QTCORE_LIBRARY} + ${QT_QTSCRIPT_LIBRARY} + ) +add_dependencies(QtScript QtCore) + +# install +install(FILES ${CMAKE_CURRENT_BINARY_DIR}/QtScript.so DESTINATION ${SITE_PACKAGE}/PySide) +install(FILES ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtScript/pyside_qtscript_python.h + DESTINATION include/PySide/QtScript/) + diff --git a/PySide/QtScript/typesystem_script.xml b/PySide/QtScript/typesystem_script.xml new file mode 100644 index 0000000..e3603c7 --- /dev/null +++ b/PySide/QtScript/typesystem_script.xml @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/PySide/__init__.py b/PySide/__init__.py index b5cd62b..d9db08e 100644 --- a/PySide/__init__.py +++ b/PySide/__init__.py @@ -1 +1 @@ -__all__ = ['QtCore', 'QtGui', 'QtNetwork', 'QtOpenGL', 'QtSql', 'QtSvg', 'QtTest', 'QtWebKit'] \ No newline at end of file +__all__ = ['QtCore', 'QtGui', 'QtNetwork', 'QtOpenGL', 'QtSql', 'QtSvg', 'QtTest', 'QtWebKit', 'QtScript'] From 196f5ae1046aca2f9fdc6284581474d062f505fc Mon Sep 17 00:00:00 2001 From: Renato Filho Date: Fri, 23 Apr 2010 18:59:46 -0300 Subject: [PATCH 0052/1285] Created unittest for QtScript. --- tests/qtscript/base_test.py | 4 ++++ tests/qtscript/engine_test.py | 13 +++++++++++++ 2 files changed, 17 insertions(+) create mode 100644 tests/qtscript/base_test.py create mode 100644 tests/qtscript/engine_test.py diff --git a/tests/qtscript/base_test.py b/tests/qtscript/base_test.py new file mode 100644 index 0000000..6ad27e0 --- /dev/null +++ b/tests/qtscript/base_test.py @@ -0,0 +1,4 @@ +from PySide import QtScript + + +#only test if the module import works fine bug #278 diff --git a/tests/qtscript/engine_test.py b/tests/qtscript/engine_test.py new file mode 100644 index 0000000..074d3df --- /dev/null +++ b/tests/qtscript/engine_test.py @@ -0,0 +1,13 @@ +import unittest + +from PySide.QtCore import QObject +from PySide.QtScript import QScriptEngine + +class QScriptEngineTest(unittest.TestCase): + + def testQScriptEngine(self): + engine = QScriptEngine() + obj = engine.evaluate("({ unitName: 'Celsius', toKelvin: function(x) { return x + 273; } })") + toKelvin = obj.property("toKelvin") + result = toKelvin.call(obj, [100]) + self.assertEqual(result.toNumber(), 373) From 685246809debe672a0007b67fe78f7c77bad6739 Mon Sep 17 00:00:00 2001 From: Lauro Neto Date: Tue, 27 Apr 2010 16:44:54 -0300 Subject: [PATCH 0053/1285] Fixing project name Reviewer: Lauro Moura Luciano Wolf --- PySide/QtXmlPatterns/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/PySide/QtXmlPatterns/CMakeLists.txt b/PySide/QtXmlPatterns/CMakeLists.txt index ef70313..b7c7c3a 100644 --- a/PySide/QtXmlPatterns/CMakeLists.txt +++ b/PySide/QtXmlPatterns/CMakeLists.txt @@ -1,4 +1,4 @@ -project(QtXml) +project(QtXmlPatterns) if (${QT_VERSION_MAJOR} EQUAL 4 AND ${QT_VERSION_MINOR} LESS 6) set(QtXmlPatterns_46_SRC ) From aaece960d3cf1c9d19dd84fe8171769517647724 Mon Sep 17 00:00:00 2001 From: Lauro Neto Date: Tue, 27 Apr 2010 18:12:50 -0300 Subject: [PATCH 0054/1285] Adding ./doc from boost Reviewer: Lauro Moura Luciano Wolf --- CMakeLists.txt | 1 + doc/CMakeLists.txt | 82 + doc/Makefile | 89 + doc/_static/.gitignore | 0 doc/_static/basic.css | 417 +++ doc/_static/default.css | 248 ++ doc/_static/images/._background_search.jpg | Bin 0 -> 4096 bytes doc/_static/images/._bread_crumb.png | Bin 0 -> 4096 bytes doc/_static/images/._button_search.jpg | Bin 0 -> 4096 bytes doc/_static/images/._side_background.jpg | Bin 0 -> 25192 bytes doc/_static/images/._top_background.jpg | Bin 0 -> 4096 bytes doc/_static/images/background_search.jpg | Bin 0 -> 2129 bytes doc/_static/images/bg.jpg | Bin 0 -> 5749 bytes doc/_static/images/bread_crumb.png | Bin 0 -> 743 bytes doc/_static/images/button_search.png | Bin 0 -> 3259 bytes doc/_static/images/side_background.jpg | Bin 0 -> 13760 bytes doc/_static/images/top_background.jpg | Bin 0 -> 500 bytes doc/_templates/index.html | 68 + doc/_themes/pysidedocs/defindex.html | 26 + doc/_themes/pysidedocs/genindex-single.html | 46 + doc/_themes/pysidedocs/genindex-split.html | 30 + doc/_themes/pysidedocs/genindex.html | 57 + doc/_themes/pysidedocs/layout.html | 147 + doc/_themes/pysidedocs/modindex.html | 42 + doc/_themes/pysidedocs/opensearch.xml | 10 + doc/_themes/pysidedocs/page.html | 4 + doc/_themes/pysidedocs/search.html | 26 + doc/_themes/pysidedocs/static/.directory | 3 + doc/_themes/pysidedocs/static/bg_header.png | Bin 0 -> 36012 bytes doc/_themes/pysidedocs/static/bg_topo.jpg | Bin 0 -> 14237 bytes doc/_themes/pysidedocs/static/doctools.js | 232 ++ doc/_themes/pysidedocs/static/fakebar.png | Bin 0 -> 101 bytes doc/_themes/pysidedocs/static/jquery.js | 32 + doc/_themes/pysidedocs/static/logo_indt.jpg | Bin 0 -> 3138 bytes .../pysidedocs/static/logo_openbossa.png | Bin 0 -> 4702 bytes doc/_themes/pysidedocs/static/logo_python.jpg | Bin 0 -> 2660 bytes doc/_themes/pysidedocs/static/logo_qt.png | Bin 0 -> 4618 bytes doc/_themes/pysidedocs/static/pysidedocs.css | 412 +++ doc/_themes/pysidedocs/static/pysidelogo.png | Bin 0 -> 12969 bytes doc/_themes/pysidedocs/static/relbar_bg.png | Bin 0 -> 130 bytes doc/_themes/pysidedocs/static/searchtools.js | 467 +++ doc/_themes/pysidedocs/theme.conf | 7 + .../snippets/accessibilityfactorysnippet.cpp | 68 + .../snippets/accessibilitypluginsnippet.cpp | 75 + .../snippets/accessibilityslidersnippet.cpp | 262 ++ .../doc/src/snippets/alphachannel.cpp | 55 + .../doc/src/snippets/audioeffects.cpp | 42 + .../doc/src/snippets/brush/brush.cpp | 87 + .../doc/src/snippets/brush/brush.pro | 1 + .../brush/gradientcreationsnippet.cpp | 63 + .../src/snippets/brushstyles/brushstyles.pro | 12 + .../doc/src/snippets/brushstyles/main.cpp | 52 + .../doc/src/snippets/brushstyles/qt-logo.png | Bin 0 -> 1422 bytes .../src/snippets/brushstyles/renderarea.cpp | 79 + .../doc/src/snippets/brushstyles/renderarea.h | 62 + .../src/snippets/brushstyles/stylewidget.cpp | 145 + .../src/snippets/brushstyles/stylewidget.h | 99 + .../doc/src/snippets/buffer/buffer.cpp | 124 + .../doc/src/snippets/buffer/buffer.pro | 14 + .../doc/src/snippets/clipboard/clipboard.pro | 3 + .../doc/src/snippets/clipboard/clipwindow.cpp | 97 + .../doc/src/snippets/clipboard/clipwindow.h | 73 + .../doc/src/snippets/clipboard/main.cpp | 53 + .../snippets/code/doc.src.qtscripttools.qdoc | 8 + .../code/doc_src_activeqt-dumpcpp.qdoc | 25 + .../src/snippets/code/doc_src_appicon.qdoc | 23 + .../code/doc_src_assistant-manual.qdoc | 110 + .../code/doc_src_atomic-operations.qdoc | 71 + .../snippets/code/doc_src_compiler-notes.qdoc | 8 + .../src/snippets/code/doc_src_containers.qdoc | 235 ++ .../src/snippets/code/doc_src_coordsys.qdoc | 47 + .../doc/src/snippets/code/doc_src_debug.qdoc | 24 + .../src/snippets/code/doc_src_deployment.qdoc | 414 +++ .../code/doc_src_designer-manual.qdoc | 98 + .../doc/src/snippets/code/doc_src_dnd.qdoc | 34 + .../snippets/code/doc_src_emb-charinput.qdoc | 20 + .../code/doc_src_emb-crosscompiling.qdoc | 36 + .../snippets/code/doc_src_emb-envvars.qdoc | 38 + .../snippets/code/doc_src_emb-features.qdoc | 18 + .../src/snippets/code/doc_src_emb-fonts.qdoc | 3 + .../snippets/code/doc_src_emb-install.qdoc | 37 + .../code/doc_src_emb-performance.qdoc | 36 + .../snippets/code/doc_src_emb-pointer.qdoc | 68 + .../src/snippets/code/doc_src_emb-qvfb.qdoc | 70 + .../snippets/code/doc_src_emb-running.qdoc | 61 + .../src/snippets/code/doc_src_emb-vnc.qdoc | 25 + .../doc_src_examples_activeqt_comapp.qdoc | 39 + .../doc_src_examples_activeqt_dotnet.qdoc | 4 + .../code/doc_src_examples_activeqt_menus.qdoc | 6 + .../snippets/code/doc_src_examples_ahigl.qdoc | 8 + .../code/doc_src_examples_application.qdoc | 5 + .../code/doc_src_examples_arrowpad.qdoc | 19 + .../doc_src_examples_containerextension.qdoc | 4 + .../doc_src_examples_customwidgetplugin.qdoc | 4 + .../code/doc_src_examples_dropsite.qdoc | 3 + .../doc_src_examples_editabletreemodel.qdoc | 8 + .../code/doc_src_examples_hellotr.qdoc | 31 + .../snippets/code/doc_src_examples_icons.qdoc | 14 + .../code/doc_src_examples_imageviewer.qdoc | 24 + .../doc_src_examples_qtscriptcustomclass.qdoc | 35 + .../code/doc_src_examples_simpledommodel.qdoc | 20 + .../doc_src_examples_simpletreemodel.qdoc | 12 + .../code/doc_src_examples_svgalib.qdoc | 3 + .../doc_src_examples_taskmenuextension.qdoc | 4 + .../code/doc_src_examples_textfinder.qdoc | 6 + .../code/doc_src_examples_trollprint.qdoc | 35 + .../code/doc_src_examples_tutorial.qdoc | 10 + ...doc_src_examples_worldtimeclockplugin.qdoc | 4 + .../code/doc_src_exportedfunctions.qdoc | 17 + .../doc/src/snippets/code/doc_src_gpl.qdoc | 679 ++++ .../snippets/code/doc_src_graphicsview.qdoc | 77 + .../doc/src/snippets/code/doc_src_groups.qdoc | 26 + .../doc/src/snippets/code/doc_src_i18n.qdoc | 155 + .../snippets/code/doc_src_installation.qdoc | 127 + .../snippets/code/doc_src_introtodbus.qdoc | 3 + .../doc/src/snippets/code/doc_src_layout.qdoc | 126 + .../doc/src/snippets/code/doc_src_lgpl.qdoc | 507 +++ .../src/snippets/code/doc_src_licenses.qdoc | 108 + .../code/doc_src_linguist-manual.qdoc | 183 ++ .../doc/src/snippets/code/doc_src_moc.qdoc | 124 + .../code/doc_src_model-view-programming.qdoc | 36 + .../src/snippets/code/doc_src_modules.qdoc | 3 + .../snippets/code/doc_src_objecttrees.qdoc | 20 + .../src/snippets/code/doc_src_phonon-api.qdoc | 224 ++ .../doc/src/snippets/code/doc_src_phonon.qdoc | 13 + .../snippets/code/doc_src_platform-notes.qdoc | 39 + .../snippets/code/doc_src_plugins-howto.qdoc | 67 + .../snippets/code/doc_src_porting-qsa.qdoc | 187 ++ .../code/doc_src_porting4-canvas.qdoc | 116 + .../code/doc_src_porting4-designer.qdoc | 159 + .../src/snippets/code/doc_src_porting4.qdoc | 473 +++ .../src/snippets/code/doc_src_properties.qdoc | 78 + .../snippets/code/doc_src_q3asciidict.qdoc | 52 + .../doc/src/snippets/code/doc_src_q3dict.qdoc | 29 + .../src/snippets/code/doc_src_q3intdict.qdoc | 51 + .../src/snippets/code/doc_src_q3memarray.qdoc | 80 + .../src/snippets/code/doc_src_q3ptrdict.qdoc | 66 + .../src/snippets/code/doc_src_q3ptrlist.qdoc | 82 + .../snippets/code/doc_src_q3valuelist.qdoc | 95 + .../snippets/code/doc_src_q3valuestack.qdoc | 13 + .../snippets/code/doc_src_q3valuevector.qdoc | 85 + .../snippets/code/doc_src_qalgorithms.qdoc | 314 ++ .../snippets/code/doc_src_qaxcontainer.qdoc | 8 + .../src/snippets/code/doc_src_qaxserver.qdoc | 223 ++ .../doc/src/snippets/code/doc_src_qcache.qdoc | 17 + .../snippets/code/doc_src_qdbusadaptors.qdoc | 253 ++ .../src/snippets/code/doc_src_qiterator.qdoc | 380 +++ .../snippets/code/doc_src_qmake-manual.qdoc | 813 +++++ .../src/snippets/code/doc_src_qnamespace.qdoc | 24 + .../doc/src/snippets/code/doc_src_qpair.qdoc | 15 + .../src/snippets/code/doc_src_qplugin.qdoc | 24 + .../doc/src/snippets/code/doc_src_qset.qdoc | 126 + .../src/snippets/code/doc_src_qsignalspy.qdoc | 41 + .../src/snippets/code/doc_src_qt-conf.qdoc | 14 + ...doc_src_qt-embedded-displaymanagement.qdoc | 51 + .../src/snippets/code/doc_src_qt3support.qdoc | 8 + .../doc/src/snippets/code/doc_src_qt3to4.qdoc | 26 + .../code/doc_src_qt4-accessibility.qdoc | 59 + .../src/snippets/code/doc_src_qt4-arthur.qdoc | 104 + .../src/snippets/code/doc_src_qt4-intro.qdoc | 101 + .../snippets/code/doc_src_qt4-mainwindow.qdoc | 70 + .../src/snippets/code/doc_src_qt4-sql.qdoc | 19 + .../src/snippets/code/doc_src_qt4-styles.qdoc | 42 + .../src/snippets/code/doc_src_qt4-tulip.qdoc | 100 + .../doc/src/snippets/code/doc_src_qtcore.qdoc | 3 + .../doc/src/snippets/code/doc_src_qtdbus.qdoc | 8 + .../src/snippets/code/doc_src_qtdesigner.qdoc | 293 ++ .../src/snippets/code/doc_src_qtestevent.qdoc | 11 + .../src/snippets/code/doc_src_qtestlib.qdoc | 102 + .../doc/src/snippets/code/doc_src_qtgui.qdoc | 3 + .../doc/src/snippets/code/doc_src_qthelp.qdoc | 161 + .../code/doc_src_qtmac-as-native.qdoc | 3 + .../src/snippets/code/doc_src_qtnetwork.qdoc | 8 + .../src/snippets/code/doc_src_qtopengl.qdoc | 8 + .../src/snippets/code/doc_src_qtscript.qdoc | 948 ++++++ .../code/doc_src_qtscriptextensions.qdoc | 7 + .../doc/src/snippets/code/doc_src_qtsql.qdoc | 8 + .../doc/src/snippets/code/doc_src_qtsvg.qdoc | 8 + .../doc/src/snippets/code/doc_src_qttest.qdoc | 8 + .../src/snippets/code/doc_src_qtuiloader.qdoc | 8 + .../doc/src/snippets/code/doc_src_qtxml.qdoc | 77 + .../snippets/code/doc_src_qtxmlpatterns.qdoc | 349 +++ .../code/doc_src_qvarlengtharray.qdoc | 38 + .../doc/src/snippets/code/doc_src_rcc.qdoc | 3 + .../src/snippets/code/doc_src_resources.qdoc | 41 + .../src/snippets/code/doc_src_richtext.qdoc | 50 + .../src/snippets/code/doc_src_session.qdoc | 3 + .../src/snippets/code/doc_src_sql-driver.qdoc | 239 ++ .../doc/src/snippets/code/doc_src_styles.qdoc | 94 + .../src/snippets/code/doc_src_stylesheet.qdoc | 1911 ++++++++++++ .../doc/src/snippets/code/doc_src_uic.qdoc | 15 + .../src/snippets/code/doc_src_unicode.qdoc | 18 + .../code/doc_src_unix-signal-handlers.qdoc | 110 + .../code/src.gui.text.qtextdocumentwriter.cpp | 5 + .../code/src.qdbus.qdbuspendingcall.cpp | 24 + .../code/src.qdbus.qdbuspendingreply.cpp | 23 + .../src.scripttools.qscriptenginedebugger.cpp | 9 + .../code/src_activeqt_container_qaxbase.cpp | 159 + .../code/src_activeqt_container_qaxscript.cpp | 18 + .../code/src_activeqt_control_qaxbindable.cpp | 60 + .../code/src_activeqt_control_qaxfactory.cpp | 155 + .../code/src_corelib_codecs_qtextcodec.cpp | 32 + .../src_corelib_codecs_qtextcodecplugin.cpp | 12 + .../code/src_corelib_concurrent_qfuture.cpp | 24 + ...corelib_concurrent_qfuturesynchronizer.cpp | 13 + .../src_corelib_concurrent_qfuturewatcher.cpp | 10 + ...relib_concurrent_qtconcurrentexception.cpp | 35 + ..._corelib_concurrent_qtconcurrentfilter.cpp | 131 + ...src_corelib_concurrent_qtconcurrentmap.cpp | 144 + ...src_corelib_concurrent_qtconcurrentrun.cpp | 60 + .../src_corelib_concurrent_qthreadpool.cpp | 9 + .../code/src_corelib_global_qglobal.cpp | 466 +++ .../src_corelib_io_qabstractfileengine.cpp | 62 + .../code/src_corelib_io_qdatastream.cpp | 85 + .../src/snippets/code/src_corelib_io_qdir.cpp | 130 + .../code/src_corelib_io_qdiriterator.cpp | 12 + .../snippets/code/src_corelib_io_qfile.cpp | 32 + .../code/src_corelib_io_qfileinfo.cpp | 99 + .../code/src_corelib_io_qiodevice.cpp | 48 + .../snippets/code/src_corelib_io_qprocess.cpp | 82 + .../code/src_corelib_io_qsettings.cpp | 280 ++ .../code/src_corelib_io_qtemporaryfile.cpp | 12 + .../code/src_corelib_io_qtextstream.cpp | 90 + .../src/snippets/code/src_corelib_io_qurl.cpp | 46 + ...orelib_kernel_qabstracteventdispatcher.cpp | 3 + .../src_corelib_kernel_qabstractitemmodel.cpp | 28 + .../src_corelib_kernel_qcoreapplication.cpp | 86 + .../code/src_corelib_kernel_qmetaobject.cpp | 87 + .../code/src_corelib_kernel_qmetatype.cpp | 69 + .../code/src_corelib_kernel_qmimedata.cpp | 57 + .../code/src_corelib_kernel_qobject.cpp | 319 ++ .../src_corelib_kernel_qsystemsemaphore.cpp | 21 + .../code/src_corelib_kernel_qtimer.cpp | 10 + .../code/src_corelib_kernel_qvariant.cpp | 99 + .../code/src_corelib_plugin_qlibrary.cpp | 44 + .../code/src_corelib_plugin_quuid.cpp | 4 + .../code/src_corelib_thread_qatomic.cpp | 58 + .../code/src_corelib_thread_qmutex.cpp | 115 + .../code/src_corelib_thread_qmutexpool.cpp | 12 + .../src_corelib_thread_qreadwritelock.cpp | 61 + .../code/src_corelib_thread_qsemaphore.cpp | 33 + .../code/src_corelib_thread_qthread.cpp | 9 + ...src_corelib_thread_qwaitcondition_unix.cpp | 45 + .../code/src_corelib_tools_qbitarray.cpp | 189 ++ .../code/src_corelib_tools_qbytearray.cpp | 355 +++ .../code/src_corelib_tools_qdatetime.cpp | 106 + .../snippets/code/src_corelib_tools_qhash.cpp | 259 ++ .../code/src_corelib_tools_qlinkedlist.cpp | 164 + .../code/src_corelib_tools_qlistdata.cpp | 227 ++ .../code/src_corelib_tools_qlocale.cpp | 48 + .../snippets/code/src_corelib_tools_qmap.cpp | 273 ++ .../code/src_corelib_tools_qpoint.cpp | 111 + .../code/src_corelib_tools_qqueue.cpp | 8 + .../snippets/code/src_corelib_tools_qrect.cpp | 10 + .../code/src_corelib_tools_qregexp.cpp | 175 ++ .../snippets/code/src_corelib_tools_qsize.cpp | 96 + .../code/src_corelib_tools_qstring.cpp | 45 + .../code/src_corelib_tools_qtimeline.cpp | 15 + .../code/src_corelib_tools_qvector.cpp | 143 + .../code/src_corelib_xml_qxmlstream.cpp | 27 + .../code/src_gui_accessible_qaccessible.cpp | 7 + .../src_gui_dialogs_qabstractprintdialog.cpp | 5 + .../code/src_gui_dialogs_qfiledialog.cpp | 86 + .../code/src_gui_dialogs_qfontdialog.cpp | 40 + .../code/src_gui_dialogs_qmessagebox.cpp | 102 + .../snippets/code/src_gui_dialogs_qwizard.cpp | 31 + ...c_gui_graphicsview_qgraphicsgridlayout.cpp | 13 + .../src_gui_graphicsview_qgraphicsitem.cpp | 185 ++ ...gui_graphicsview_qgraphicslinearlayout.cpp | 13 + ..._gui_graphicsview_qgraphicsproxywidget.cpp | 46 + .../src_gui_graphicsview_qgraphicsscene.cpp | 75 + ...c_gui_graphicsview_qgraphicssceneevent.cpp | 5 + .../src_gui_graphicsview_qgraphicsview.cpp | 86 + .../src_gui_graphicsview_qgraphicswidget.cpp | 25 + .../snippets/code/src_gui_image_qbitmap.cpp | 4 + .../src/snippets/code/src_gui_image_qicon.cpp | 26 + .../snippets/code/src_gui_image_qimage.cpp | 36 + .../code/src_gui_image_qimagereader.cpp | 25 + .../code/src_gui_image_qimagewriter.cpp | 19 + .../snippets/code/src_gui_image_qmovie.cpp | 13 + .../snippets/code/src_gui_image_qpixmap.cpp | 12 + .../code/src_gui_image_qpixmapcache.cpp | 16 + .../code/src_gui_image_qpixmapfilter.cpp | 22 + .../src_gui_itemviews_qabstractitemview.cpp | 17 + .../src_gui_itemviews_qdatawidgetmapper.cpp | 23 + .../src_gui_itemviews_qitemeditorfactory.cpp | 23 + .../src_gui_itemviews_qitemselectionmodel.cpp | 10 + .../src_gui_itemviews_qstandarditemmodel.cpp | 37 + .../code/src_gui_itemviews_qtablewidget.cpp | 5 + .../code/src_gui_itemviews_qtreewidget.cpp | 8 + .../snippets/code/src_gui_kernel_qaction.cpp | 9 + .../code/src_gui_kernel_qapplication.cpp | 127 + .../code/src_gui_kernel_qapplication_x11.cpp | 5 + .../code/src_gui_kernel_qclipboard.cpp | 13 + .../snippets/code/src_gui_kernel_qevent.cpp | 11 + .../code/src_gui_kernel_qformlayout.cpp | 36 + .../code/src_gui_kernel_qkeysequence.cpp | 19 + .../snippets/code/src_gui_kernel_qlayout.cpp | 25 + .../code/src_gui_kernel_qlayoutitem.cpp | 8 + .../code/src_gui_kernel_qshortcut.cpp | 15 + .../code/src_gui_kernel_qshortcutmap.cpp | 3 + .../snippets/code/src_gui_kernel_qsound.cpp | 9 + .../snippets/code/src_gui_kernel_qwidget.cpp | 100 + .../snippets/code/src_gui_painting_qbrush.cpp | 11 + .../snippets/code/src_gui_painting_qcolor.cpp | 9 + .../code/src_gui_painting_qdrawutil.cpp | 58 + .../code/src_gui_painting_qmatrix.cpp | 22 + .../code/src_gui_painting_qpainter.cpp | 195 ++ .../code/src_gui_painting_qpainterpath.cpp | 110 + .../snippets/code/src_gui_painting_qpen.cpp | 35 + .../code/src_gui_painting_qregion.cpp | 13 + .../code/src_gui_painting_qregion_unix.cpp | 18 + .../code/src_gui_painting_qtransform.cpp | 38 + .../snippets/code/src_gui_styles_qstyle.cpp | 8 + .../code/src_gui_styles_qstyleoption.cpp | 7 + .../src/snippets/code/src_gui_text_qfont.cpp | 27 + .../code/src_gui_text_qfontmetrics.cpp | 14 + .../code/src_gui_text_qsyntaxhighlighter.cpp | 74 + .../code/src_gui_text_qtextcursor.cpp | 40 + .../code/src_gui_text_qtextdocument.cpp | 10 + .../code/src_gui_text_qtextlayout.cpp | 23 + .../snippets/code/src_gui_util_qcompleter.cpp | 25 + .../code/src_gui_util_qdesktopservices.cpp | 15 + .../snippets/code/src_gui_util_qundostack.cpp | 70 + .../code/src_gui_widgets_qabstractbutton.cpp | 19 + .../code/src_gui_widgets_qabstractspinbox.cpp | 8 + .../code/src_gui_widgets_qcalendarwidget.cpp | 33 + .../code/src_gui_widgets_qcheckbox.cpp | 3 + .../code/src_gui_widgets_qdatetimeedit.cpp | 39 + .../code/src_gui_widgets_qdockwidget.cpp | 7 + .../snippets/code/src_gui_widgets_qframe.cpp | 8 + .../code/src_gui_widgets_qgroupbox.cpp | 3 + .../snippets/code/src_gui_widgets_qlabel.cpp | 24 + .../code/src_gui_widgets_qlineedit.cpp | 7 + .../snippets/code/src_gui_widgets_qmenu.cpp | 37 + .../code/src_gui_widgets_qmenubar.cpp | 8 + .../code/src_gui_widgets_qplaintextedit.cpp | 14 + .../code/src_gui_widgets_qpushbutton.cpp | 3 + .../code/src_gui_widgets_qradiobutton.cpp | 3 + .../code/src_gui_widgets_qrubberband.cpp | 17 + .../code/src_gui_widgets_qscrollarea.cpp | 9 + .../code/src_gui_widgets_qspinbox.cpp | 40 + .../code/src_gui_widgets_qsplashscreen.cpp | 15 + .../code/src_gui_widgets_qsplitter.cpp | 7 + .../code/src_gui_widgets_qstatusbar.cpp | 3 + .../code/src_gui_widgets_qtextbrowser.cpp | 4 + .../code/src_gui_widgets_qtextedit.cpp | 19 + .../code/src_gui_widgets_qvalidator.cpp | 105 + .../code/src_gui_widgets_qworkspace.cpp | 7 + .../snippets/code/src_network_access_qftp.cpp | 59 + .../code/src_network_access_qhttp.cpp | 82 + ...c_network_access_qnetworkaccessmanager.cpp | 21 + .../src_network_access_qnetworkrequest.cpp | 3 + .../code/src_network_kernel_qhostaddress.cpp | 7 + .../code/src_network_kernel_qhostinfo.cpp | 42 + .../code/src_network_kernel_qnetworkproxy.cpp | 14 + .../src_network_socket_qabstractsocket.cpp | 28 + .../src_network_socket_qlocalsocket_unix.cpp | 12 + ...src_network_socket_qnativesocketengine.cpp | 21 + .../code/src_network_socket_qtcpserver.cpp | 3 + .../code/src_network_socket_qudpsocket.cpp | 17 + .../code/src_network_ssl_qsslcertificate.cpp | 4 + .../src_network_ssl_qsslconfiguration.cpp | 5 + .../code/src_network_ssl_qsslsocket.cpp | 50 + .../doc/src/snippets/code/src_opengl_qgl.cpp | 118 + .../snippets/code/src_opengl_qglcolormap.cpp | 24 + .../code/src_opengl_qglpixelbuffer.cpp | 19 + .../code/src_qdbus_qdbusabstractinterface.cpp | 20 + .../snippets/code/src_qdbus_qdbusargument.cpp | 151 + .../snippets/code/src_qdbus_qdbuscontext.cpp | 32 + .../code/src_qdbus_qdbusinterface.cpp | 11 + .../snippets/code/src_qdbus_qdbusmetatype.cpp | 3 + .../snippets/code/src_qdbus_qdbusreply.cpp | 14 + .../code/src_qt3support_canvas_q3canvas.cpp | 51 + .../src_qt3support_dialogs_q3filedialog.cpp | 229 ++ ...rc_qt3support_dialogs_q3progressdialog.cpp | 41 + .../src_qt3support_itemviews_q3iconview.cpp | 75 + .../src_qt3support_itemviews_q3listview.cpp | 73 + .../code/src_qt3support_itemviews_q3table.cpp | 57 + .../code/src_qt3support_network_q3dns.cpp | 58 + .../code/src_qt3support_network_q3ftp.cpp | 65 + .../code/src_qt3support_network_q3http.cpp | 74 + .../code/src_qt3support_network_q3localfs.cpp | 4 + ...c_qt3support_network_q3networkprotocol.cpp | 8 + .../code/src_qt3support_network_q3socket.cpp | 4 + .../src_qt3support_network_q3socketdevice.cpp | 4 + .../code/src_qt3support_network_q3url.cpp | 43 + .../src_qt3support_network_q3urloperator.cpp | 37 + .../code/src_qt3support_other_q3accel.cpp | 40 + .../src_qt3support_other_q3mimefactory.cpp | 32 + .../code/src_qt3support_other_q3process.cpp | 8 + .../src_qt3support_other_q3process_unix.cpp | 4 + ...3support_painting_q3paintdevicemetrics.cpp | 4 + .../src_qt3support_painting_q3painter.cpp | 4 + .../src_qt3support_painting_q3picture.cpp | 14 + .../code/src_qt3support_sql_q3databrowser.cpp | 8 + .../code/src_qt3support_sql_q3datatable.cpp | 8 + .../code/src_qt3support_sql_q3dataview.cpp | 4 + .../code/src_qt3support_sql_q3sqlcursor.cpp | 100 + .../code/src_qt3support_sql_q3sqlform.cpp | 26 + .../src_qt3support_sql_q3sqlmanager_p.cpp | 11 + .../src_qt3support_sql_q3sqlpropertymap.cpp | 35 + .../src_qt3support_sql_q3sqlselectcursor.cpp | 11 + .../src_qt3support_text_q3simplerichtext.cpp | 3 + .../src_qt3support_text_q3textbrowser.cpp | 3 + .../code/src_qt3support_text_q3textedit.cpp | 31 + .../code/src_qt3support_text_q3textstream.cpp | 29 + .../code/src_qt3support_tools_q3cstring.cpp | 40 + .../code/src_qt3support_tools_q3deepcopy.cpp | 58 + .../code/src_qt3support_tools_q3garray.cpp | 20 + .../code/src_qt3support_tools_q3signal.cpp | 38 + .../src_qt3support_widgets_q3combobox.cpp | 15 + .../src_qt3support_widgets_q3datetimeedit.cpp | 28 + .../src_qt3support_widgets_q3dockarea.cpp | 8 + .../src_qt3support_widgets_q3dockwindow.cpp | 4 + .../src_qt3support_widgets_q3gridview.cpp | 6 + .../code/src_qt3support_widgets_q3header.cpp | 6 + .../src_qt3support_widgets_q3mainwindow.cpp | 45 + .../src_qt3support_widgets_q3scrollview.cpp | 61 + .../src_qt3support_widgets_q3whatsthis.cpp | 3 + .../snippets/code/src_qtestlib_qtestcase.cpp | 188 ++ .../snippets/code/src_script_qscriptable.cpp | 19 + .../snippets/code/src_script_qscriptclass.cpp | 9 + .../code/src_script_qscriptcontext.cpp | 23 + .../code/src_script_qscriptengine.cpp | 270 ++ .../code/src_script_qscriptengineagent.cpp | 12 + .../snippets/code/src_script_qscriptvalue.cpp | 41 + .../code/src_script_qscriptvalueiterator.cpp | 28 + .../code/src_sql_kernel_qsqldatabase.cpp | 96 + .../code/src_sql_kernel_qsqldriver.cpp | 23 + .../code/src_sql_kernel_qsqlerror.cpp | 6 + .../code/src_sql_kernel_qsqlindex.cpp | 5 + .../code/src_sql_kernel_qsqlquery.cpp | 40 + .../code/src_sql_kernel_qsqlresult.cpp | 38 + .../code/src_sql_models_qsqlquerymodel.cpp | 12 + .../code/src_svg_qgraphicssvgitem.cpp | 11 + .../src/snippets/code/src_xml_dom_qdom.cpp | 180 ++ .../src/snippets/code/src_xml_sax_qxml.cpp | 3 + ...c_xmlpatterns_api_qabstracturiresolver.cpp | 3 + ...tterns_api_qabstractxmlforwarditerator.cpp | 3 + ..._xmlpatterns_api_qabstractxmlnodemodel.cpp | 22 + ...c_xmlpatterns_api_qabstractxmlreceiver.cpp | 7 + ...rc_xmlpatterns_api_qsimplexmlnodemodel.cpp | 19 + .../src_xmlpatterns_api_qxmlformatter.cpp | 8 + .../code/src_xmlpatterns_api_qxmlname.cpp | 8 + .../code/src_xmlpatterns_api_qxmlquery.cpp | 152 + .../src_xmlpatterns_api_qxmlresultitems.cpp | 16 + .../src_xmlpatterns_api_qxmlserializer.cpp | 7 + ..._assistant_compat_lib_qassistantclient.cpp | 25 + ...lib_extension_default_extensionfactory.cpp | 35 + ...s_designer_src_lib_extension_extension.cpp | 15 + ...er_src_lib_extension_qextensionmanager.cpp | 17 + ...esigner_src_lib_sdk_abstractformeditor.cpp | 11 + ...esigner_src_lib_sdk_abstractformwindow.cpp | 25 + ...r_src_lib_sdk_abstractformwindowcursor.cpp | 8 + ..._src_lib_sdk_abstractformwindowmanager.cpp | 11 + ...er_src_lib_sdk_abstractobjectinspector.cpp | 11 + ...ner_src_lib_sdk_abstractpropertyeditor.cpp | 23 + ...designer_src_lib_sdk_abstractwidgetbox.cpp | 30 + ...gner_src_lib_uilib_abstractformbuilder.cpp | 17 + ...ols_designer_src_lib_uilib_formbuilder.cpp | 26 + ..._patternist_qapplicationargumentparser.cpp | 5 + ...ared_qtgradienteditor_qtgradientdialog.cpp | 44 + ...ed_qtpropertybrowser_qtpropertybrowser.cpp | 47 + ...ed_qtpropertybrowser_qtvariantproperty.cpp | 16 + ...shared_qttoolbardialog_qttoolbardialog.cpp | 12 + .../src/snippets/complexpingpong-example.qdoc | 4 + .../src/snippets/console/dbus_pingpong.txt | 3 + .../doc/src/snippets/coordsys/coordsys.cpp | 77 + .../doc/src/snippets/coordsys/coordsys.pro | 1 + .../src/snippets/customstyle/customstyle.cpp | 89 + .../src/snippets/customstyle/customstyle.h | 60 + .../src/snippets/customstyle/customstyle.pro | 2 + .../doc/src/snippets/customstyle/main.cpp | 55 + .../doc/src/snippets/customviewstyle.cpp | 29 + .../src/snippets/dbus-pingpong-example.qdoc | 3 + .../autoconnection/autoconnection.pro | 5 + .../designer/autoconnection/imagedialog.cpp | 70 + .../designer/autoconnection/imagedialog.h | 60 + .../designer/autoconnection/imagedialog.ui | 389 +++ .../snippets/designer/autoconnection/main.cpp | 52 + .../doc/src/snippets/designer/designer.pro | 6 + .../designer/imagedialog/imagedialog.pro | 3 + .../designer/imagedialog/imagedialog.ui | 389 +++ .../snippets/designer/imagedialog/main.cpp | 54 + .../multipleinheritance/imagedialog.cpp | 60 + .../multipleinheritance/imagedialog.h | 55 + .../multipleinheritance/imagedialog.ui | 389 +++ .../designer/multipleinheritance/main.cpp | 52 + .../multipleinheritance.pro | 5 + .../designer/noautoconnection/imagedialog.cpp | 77 + .../designer/noautoconnection/imagedialog.h | 60 + .../designer/noautoconnection/imagedialog.ui | 389 +++ .../designer/noautoconnection/main.cpp | 52 + .../noautoconnection/noautoconnection.pro | 5 + .../singleinheritance/imagedialog.cpp | 60 + .../designer/singleinheritance/imagedialog.h | 58 + .../designer/singleinheritance/imagedialog.ui | 389 +++ .../designer/singleinheritance/main.cpp | 52 + .../singleinheritance/singleinheritance.pro | 5 + .../doc/src/snippets/dialogs/dialogs.cpp | 120 + .../doc/src/snippets/dialogs/dialogs.pro | 1 + .../dockwidgets/Resources/modules.html | 28 + .../dockwidgets/Resources/qtcore.html | 122 + .../snippets/dockwidgets/Resources/qtgui.html | 276 ++ .../dockwidgets/Resources/qtnetwork.html | 35 + .../dockwidgets/Resources/qtopengl.html | 27 + .../snippets/dockwidgets/Resources/qtsql.html | 39 + .../snippets/dockwidgets/Resources/qtxml.html | 53 + .../snippets/dockwidgets/Resources/titles.txt | 7 + .../src/snippets/dockwidgets/dockwidgets.pro | 4 + .../src/snippets/dockwidgets/dockwidgets.qrc | 12 + .../doc/src/snippets/dockwidgets/main.cpp | 53 + .../src/snippets/dockwidgets/mainwindow.cpp | 123 + .../doc/src/snippets/dockwidgets/mainwindow.h | 71 + .../src/snippets/draganddrop/draganddrop.pro | 5 + .../src/snippets/draganddrop/dragwidget.cpp | 154 + .../doc/src/snippets/draganddrop/dragwidget.h | 80 + .../doc/src/snippets/draganddrop/main.cpp | 54 + .../src/snippets/draganddrop/mainwindow.cpp | 85 + .../doc/src/snippets/draganddrop/mainwindow.h | 72 + .../doc/src/snippets/dragging/dragging.pro | 4 + .../doc/src/snippets/dragging/images.qrc | 5 + .../doc/src/snippets/dragging/images/file.png | Bin 0 -> 313 bytes .../doc/src/snippets/dragging/main.cpp | 52 + .../doc/src/snippets/dragging/mainwindow.cpp | 63 + .../doc/src/snippets/dragging/mainwindow.h | 72 + .../src/snippets/dropactions/dropactions.pro | 3 + .../doc/src/snippets/dropactions/main.cpp | 52 + .../doc/src/snippets/dropactions/window.cpp | 106 + .../doc/src/snippets/dropactions/window.h | 72 + .../doc/src/snippets/droparea.cpp | 136 + .../src/snippets/dropevents/dropevents.pro | 3 + .../doc/src/snippets/dropevents/main.cpp | 53 + .../doc/src/snippets/dropevents/window.cpp | 88 + .../doc/src/snippets/dropevents/window.h | 72 + .../snippets/droprectangle/droprectangle.pro | 3 + .../doc/src/snippets/droprectangle/main.cpp | 52 + .../doc/src/snippets/droprectangle/window.cpp | 97 + .../doc/src/snippets/droprectangle/window.h | 72 + .../snippets/eventfilters/eventfilters.pro | 3 + .../snippets/eventfilters/filterobject.cpp | 75 + .../src/snippets/eventfilters/filterobject.h | 60 + .../doc/src/snippets/eventfilters/main.cpp | 55 + .../doc/src/snippets/events/events.cpp | 98 + .../doc/src/snippets/events/events.pro | 1 + .../explicitlysharedemployee/employee.cpp | 110 + .../explicitlysharedemployee/employee.h | 75 + .../explicitlysharedemployee.pro | 3 + .../explicitlysharedemployee/main.cpp | 51 + .../doc/src/snippets/file/file.cpp | 121 + .../doc/src/snippets/file/file.pro | 14 + .../doc/src/snippets/filedialogurls.cpp | 22 + .../doc/src/snippets/fileinfo/fileinfo.pro | 11 + .../doc/src/snippets/fileinfo/main.cpp | 93 + .../snippets/graphicssceneadditemsnippet.cpp | 81 + .../i18n-non-qt-class/i18n-non-qt-class.pro | 7 + .../src/snippets/i18n-non-qt-class/main.cpp | 55 + .../snippets/i18n-non-qt-class/myclass.cpp | 48 + .../src/snippets/i18n-non-qt-class/myclass.h | 60 + .../src/snippets/i18n-non-qt-class/myclass.ts | 12 + .../snippets/i18n-non-qt-class/resources.qrc | 6 + .../translations/i18n-non-qt-class_en.ts | 12 + .../translations/i18n-non-qt-class_fr.ts | 13 + .../doc/src/snippets/image/image.cpp | 60 + .../doc/src/snippets/image/image.pro | 1 + .../src/snippets/image/supportedformat.cpp | 47 + .../src/snippets/inherited-slot/button.cpp | 54 + .../doc/src/snippets/inherited-slot/button.h | 60 + .../inherited-slot/inherited-slot.pro | 3 + .../doc/src/snippets/inherited-slot/main.cpp | 67 + .../snippets/itemselection/itemselection.pro | 3 + .../doc/src/snippets/itemselection/main.cpp | 116 + .../doc/src/snippets/itemselection/model.cpp | 239 ++ .../doc/src/snippets/itemselection/model.h | 75 + .../doc/src/snippets/javastyle.cpp | 2746 +++++++++++++++++ .../doc/src/snippets/layouts/layouts.cpp | 117 + .../doc/src/snippets/layouts/layouts.pro | 12 + .../doc/src/snippets/mainwindowsnippet.cpp | 49 + .../doc/src/snippets/matrix/matrix.cpp | 103 + .../doc/src/snippets/matrix/matrix.pro | 11 + .../doc/src/snippets/mdiareasnippets.cpp | 57 + .../doc/src/snippets/medianodesnippet.cpp | 29 + .../doc/src/snippets/moc/main.cpp | 66 + doc/codesnippets/doc/src/snippets/moc/moc.pro | 2 + .../doc/src/snippets/moc/myclass1.h | 66 + .../doc/src/snippets/moc/myclass2.h | 67 + .../doc/src/snippets/moc/myclass3.h | 60 + .../snippets/modelview-subclasses/main.cpp | 69 + .../snippets/modelview-subclasses/model.cpp | 153 + .../src/snippets/modelview-subclasses/model.h | 71 + .../snippets/modelview-subclasses/view.cpp | 315 ++ .../src/snippets/modelview-subclasses/view.h | 91 + .../snippets/modelview-subclasses/window.cpp | 113 + .../snippets/modelview-subclasses/window.h | 69 + .../doc/src/snippets/myscrollarea.cpp | 103 + .../doc/src/snippets/network/tcpwait.cpp | 63 + doc/codesnippets/doc/src/snippets/ntfsp.cpp | 11 + .../src/snippets/painterpath/painterpath.cpp | 77 + .../src/snippets/painterpath/painterpath.pro | 1 + .../src/snippets/patternist/anyHTMLElement.xq | 1 + .../snippets/patternist/anyXLinkAttribute.xq | 2 + .../src/snippets/patternist/bracesIncluded.xq | 1 + .../patternist/bracesIncludedResult.xml | 1 + .../src/snippets/patternist/bracesOmitted.xq | 1 + .../patternist/bracesOmittedResult.xml | 2 + .../patternist/computedTreeFragment.xq | 14 + .../src/snippets/patternist/copyAttribute.xq | 9 + .../doc/src/snippets/patternist/copyID.xq | 3 + .../snippets/patternist/directTreeFragment.xq | 7 + .../doc/src/snippets/patternist/doc.txt | 35 + .../src/snippets/patternist/docPlainHTML.xq | 1 + .../src/snippets/patternist/docPlainHTML2.xq | 1 + .../snippets/patternist/embedDataInXHTML.xq | 10 + .../snippets/patternist/embedDataInXHTML2.xq | 10 + .../snippets/patternist/emptyParagraphs.xq | 1 + .../snippets/patternist/escapeCurlyBraces.xq | 4 + .../patternist/escapeStringLiterals.xml | 2 + .../patternist/escapeStringLiterals.xq | 7 + .../patternist/expressionInsideAttribute.xq | 2 + .../src/snippets/patternist/filterOnPath.xq | 2 + .../src/snippets/patternist/filterOnStep.xq | 2 + .../src/snippets/patternist/firstParagraph.xq | 1 + .../patternist/fnStringOnAttribute.xq | 9 + .../doc/src/snippets/patternist/forClause.xq | 3 + .../doc/src/snippets/patternist/forClause2.xq | 3 + .../snippets/patternist/forClauseOnFeed.xq | 6 + .../doc/src/snippets/patternist/indented.xml | 5 + .../snippets/patternist/introAcneRemover.xq | 8 + .../src/snippets/patternist/introExample2.xq | 5 + .../patternist/introFileHierarchy.xml | 14 + .../snippets/patternist/introNavigateFS.xq | 12 + .../patternist/introductionExample.xq | 3 + .../snippets/patternist/invalidLetOrderBy.xq | 3 + .../doc/src/snippets/patternist/items.xq | 5 + .../doc/src/snippets/patternist/letOrderBy.xq | 4 + .../patternist/literalsAndOperators.xq | 2 + .../doc/src/snippets/patternist/mobeyDick.xml | 4 + .../snippets/patternist/nextLastParagraph.xq | 1 + .../nodeConstructorsAreExpressions.xq | 4 + .../patternist/nodeConstructorsInPaths.xq | 1 + .../patternist/nodeTestChildElement.xq | 1 + .../src/snippets/patternist/notIndented.xml | 1 + .../patternist/oneElementConstructor.xq | 1 + .../paragraphsExceptTheFiveFirst.xq | 1 + .../patternist/paragraphsWithTables.xq | 1 + .../doc/src/snippets/patternist/pathAB.xq | 1 + .../snippets/patternist/pathsAllParagraphs.xq | 1 + .../doc/src/snippets/patternist/simpleHTML.xq | 1 + .../src/snippets/patternist/simpleXHTML.xq | 2 + .../patternist/svgDocumentElement.xml | 1 + .../snippets/patternist/tablesInParagraphs.xq | 1 + .../src/snippets/patternist/twoSVGElements.xq | 5 + .../src/snippets/patternist/xmlStylesheet.xq | 1 + .../src/snippets/patternist/xsBooleanTrue.xq | 1 + .../patternist/xsvgDocumentElement.xml | 1 + .../src/snippets/persistentindexes/main.cpp | 52 + .../snippets/persistentindexes/mainwindow.cpp | 121 + .../snippets/persistentindexes/mainwindow.h | 71 + .../src/snippets/persistentindexes/model.cpp | 169 + .../src/snippets/persistentindexes/model.h | 72 + .../persistentindexes/persistentindexes.pro | 5 + doc/codesnippets/doc/src/snippets/phonon.cpp | 96 + .../snippets/phonon/samplebackend/main.cpp | 115 + .../src/snippets/phononeffectparameter.cpp | 35 + .../src/snippets/phononobjectdescription.cpp | 40 + .../doc/src/snippets/picture/picture.cpp | 112 + .../doc/src/snippets/picture/picture.pro | 12 + .../doc/src/snippets/plaintextlayout/main.cpp | 53 + .../plaintextlayout/plaintextlayout.pro | 3 + .../src/snippets/plaintextlayout/window.cpp | 109 + .../doc/src/snippets/plaintextlayout/window.h | 62 + .../doc/src/snippets/pointer/pointer.cpp | 61 + .../doc/src/snippets/polygon/polygon.cpp | 87 + .../doc/src/snippets/polygon/polygon.pro | 1 + .../src/snippets/porting4-dropevents/main.cpp | 53 + .../porting4-dropevents.pro | 3 + .../snippets/porting4-dropevents/window.cpp | 125 + .../src/snippets/porting4-dropevents/window.h | 73 + .../src/snippets/printing-qprinter/errors.cpp | 18 + .../src/snippets/printing-qprinter/main.cpp | 54 + .../src/snippets/printing-qprinter/object.cpp | 72 + .../src/snippets/printing-qprinter/object.h | 53 + .../printing-qprinter/printing-qprinter.pro | 3 + .../doc/src/snippets/process/process.cpp | 77 + .../doc/src/snippets/process/process.pro | 1 + .../src/snippets/qabstractsliderisnippet.cpp | 510 +++ .../doc/src/snippets/qcalendarwidget/main.cpp | 65 + .../qcalendarwidget/qcalendarwidget.pro | 1 + .../doc/src/snippets/qcolumnview/main.cpp | 80 + .../src/snippets/qcolumnview/qcolumnview.pro | 1 + .../qdbusextratypes/qdbusextratypes.cpp | 67 + .../qdbusextratypes/qdbusextratypes.pro | 2 + .../doc/src/snippets/qdebug/qdebug.pro | 1 + .../doc/src/snippets/qdebug/qdebugsnippet.cpp | 74 + .../doc/src/snippets/qdir-filepaths/main.cpp | 55 + .../qdir-filepaths/qdir-filepaths.pro | 1 + .../doc/src/snippets/qdir-listfiles/main.cpp | 55 + .../qdir-listfiles/qdir-listfiles.pro | 1 + .../src/snippets/qdir-namefilters/main.cpp | 66 + .../qdir-namefilters/qdir-namefilters.pro | 1 + .../doc/src/snippets/qfontdatabase/main.cpp | 65 + .../snippets/qfontdatabase/qfontdatabase.pro | 1 + .../doc/src/snippets/qgl-namespace/main.cpp | 47 + .../snippets/qgl-namespace/qgl-namespace.pro | 2 + .../doc/src/snippets/qlabel/main.cpp | 89 + .../doc/src/snippets/qlabel/qlabel.pro | 1 + .../doc/src/snippets/qlineargradient/main.cpp | 51 + .../snippets/qlineargradient/paintwidget.cpp | 68 + .../snippets/qlineargradient/paintwidget.h | 60 + .../qlineargradient/qlineargradient.pro | 3 + .../doc/src/snippets/qlistview-dnd/main.cpp | 52 + .../src/snippets/qlistview-dnd/mainwindow.cpp | 84 + .../src/snippets/qlistview-dnd/mainwindow.h | 62 + .../doc/src/snippets/qlistview-dnd/model.cpp | 168 + .../doc/src/snippets/qlistview-dnd/model.h | 74 + .../snippets/qlistview-dnd/qlistview-dnd.pro | 5 + .../doc/src/snippets/qlistview-using/main.cpp | 52 + .../snippets/qlistview-using/mainwindow.cpp | 138 + .../src/snippets/qlistview-using/mainwindow.h | 73 + .../src/snippets/qlistview-using/model.cpp | 175 ++ .../doc/src/snippets/qlistview-using/model.h | 83 + .../qlistview-using/qlistview-using.pro | 5 + .../doc/src/snippets/qlistwidget-dnd/main.cpp | 52 + .../snippets/qlistwidget-dnd/mainwindow.cpp | 88 + .../src/snippets/qlistwidget-dnd/mainwindow.h | 63 + .../qlistwidget-dnd/qlistwidget-dnd.pro | 3 + .../src/snippets/qlistwidget-using/main.cpp | 52 + .../snippets/qlistwidget-using/mainwindow.cpp | 159 + .../snippets/qlistwidget-using/mainwindow.h | 73 + .../qlistwidget-using/qlistwidget-using.pro | 3 + .../doc/src/snippets/qmacnativewidget/main.mm | 94 + .../qmacnativewidget/qmacnativewidget.pro | 8 + .../doc/src/snippets/qmake/comments.pro | 10 + .../doc/src/snippets/qmake/configscopes.pro | 23 + .../src/snippets/qmake/debug_and_release.pro | 14 + .../doc/src/snippets/qmake/delegate.h | 41 + .../doc/src/snippets/qmake/dereferencing.pro | 5 + .../doc/src/snippets/qmake/destdir.pro | 2 + .../doc/src/snippets/qmake/dirname.pro | 6 + .../doc/src/snippets/qmake/environment.pro | 9 + .../doc/src/snippets/qmake/functions.pro | 34 + .../doc/src/snippets/qmake/include.pro | 3 + .../doc/src/snippets/qmake/main.cpp | 41 + .../doc/src/snippets/qmake/model.cpp | 41 + .../doc/src/snippets/qmake/model.h | 41 + .../doc/src/snippets/qmake/other.pro | 0 .../src/snippets/qmake/paintwidget_unix.cpp | 45 + .../src/snippets/qmake/project_location.pro | 6 + .../src/snippets/qmake/qtconfiguration.pro | 19 + .../doc/src/snippets/qmake/quoting.pro | 8 + .../doc/src/snippets/qmake/replace.pro | 4 + .../src/snippets/qmake/replacefunction.pro | 46 + .../doc/src/snippets/qmake/scopes.pro | 42 + .../src/snippets/qmake/shared_or_static.pro | 8 + .../doc/src/snippets/qmake/specifications.pro | 7 + .../doc/src/snippets/qmake/testfunction.pro | 20 + .../doc/src/snippets/qmake/variables.pro | 7 + .../doc/src/snippets/qmake/view.h | 41 + .../snippets/qmetaobject-invokable/main.cpp | 53 + .../qmetaobject-invokable.pro | 3 + .../snippets/qmetaobject-invokable/window.cpp | 58 + .../snippets/qmetaobject-invokable/window.h | 59 + .../snippets/qprocess-environment/main.cpp | 61 + .../qprocess-environment.pro | 1 + .../qprocess/qprocess-simpleexecution.cpp | 67 + .../doc/src/snippets/qprocess/qprocess.pro | 11 + .../snippets/qsignalmapper/buttonwidget.cpp | 68 + .../src/snippets/qsignalmapper/buttonwidget.h | 61 + .../doc/src/snippets/qsignalmapper/main.cpp | 62 + .../src/snippets/qsignalmapper/mainwindow.h | 60 + .../snippets/qsignalmapper/qsignalmapper.pro | 10 + .../qsortfilterproxymodel-details/main.cpp | 70 + .../qsortfilterproxymodel-details.pro | 1 + .../snippets/qsortfilterproxymodel/main.cpp | 78 + .../qsortfilterproxymodel.pro | 1 + .../doc/src/snippets/qsplashscreen/main.cpp | 57 + .../src/snippets/qsplashscreen/mainwindow.cpp | 51 + .../src/snippets/qsplashscreen/mainwindow.h | 55 + .../snippets/qsplashscreen/qsplashscreen.pro | 4 + .../snippets/qsplashscreen/qsplashscreen.qrc | 5 + .../doc/src/snippets/qsplashscreen/splash.png | Bin 0 -> 27926 bytes .../doc/src/snippets/qsql-namespace/main.cpp | 47 + .../qsql-namespace/qsql-namespace.pro | 2 + .../doc/src/snippets/qstack/main.cpp | 56 + .../doc/src/snippets/qstack/qstack.pro | 11 + .../doc/src/snippets/qstackedlayout/main.cpp | 90 + .../qstackedlayout/qstackedlayout.pro | 11 + .../doc/src/snippets/qstackedwidget/main.cpp | 69 + .../qstackedwidget/qstackedwidget.pro | 11 + .../src/snippets/qstandarditemmodel/main.cpp | 72 + .../qstandarditemmodel/qstandarditemmodel.pro | 11 + .../doc/src/snippets/qstatustipevent/main.cpp | 65 + .../qstatustipevent/qstatustipevent.pro | 11 + .../doc/src/snippets/qstring/main.cpp | 917 ++++++ .../doc/src/snippets/qstring/qstring.pro | 11 + .../doc/src/snippets/qstringlist/main.cpp | 155 + .../src/snippets/qstringlist/qstringlist.pro | 11 + .../src/snippets/qstringlistmodel/main.cpp | 69 + .../qstringlistmodel/qstringlistmodel.pro | 11 + .../doc/src/snippets/qstyleoption/main.cpp | 96 + .../snippets/qstyleoption/qstyleoption.pro | 11 + .../doc/src/snippets/qstyleplugin/main.cpp | 98 + .../snippets/qstyleplugin/qstyleplugin.pro | 11 + .../doc/src/snippets/qsvgwidget/main.cpp | 60 + .../src/snippets/qsvgwidget/qsvgwidget.pro | 3 + .../src/snippets/qsvgwidget/qsvgwidget.qrc | 5 + .../doc/src/snippets/qsvgwidget/spheres.svg | 79 + .../doc/src/snippets/qsvgwidget/sunflower.svg | 188 ++ .../doc/src/snippets/qt-namespace/main.cpp | 47 + .../snippets/qt-namespace/qt-namespace.pro | 1 + .../qtablewidget-dnd/Images/cubed.png | Bin 0 -> 437 bytes .../qtablewidget-dnd/Images/squared.png | Bin 0 -> 440 bytes .../src/snippets/qtablewidget-dnd/images.qrc | 6 + .../src/snippets/qtablewidget-dnd/main.cpp | 52 + .../snippets/qtablewidget-dnd/mainwindow.cpp | 144 + .../snippets/qtablewidget-dnd/mainwindow.h | 69 + .../qtablewidget-dnd/qtablewidget-dnd.pro | 4 + .../snippets/qtablewidget-resizing/main.cpp | 52 + .../qtablewidget-resizing/mainwindow.cpp | 115 + .../qtablewidget-resizing/mainwindow.h | 68 + .../qtablewidget-resizing.pro | 3 + .../qtablewidget-using/Images/cubed.png | Bin 0 -> 437 bytes .../qtablewidget-using/Images/squared.png | Bin 0 -> 440 bytes .../snippets/qtablewidget-using/images.qrc | 6 + .../src/snippets/qtablewidget-using/main.cpp | 52 + .../qtablewidget-using/mainwindow.cpp | 150 + .../snippets/qtablewidget-using/mainwindow.h | 71 + .../qtablewidget-using/qtablewidget-using.pro | 4 + .../doc/src/snippets/qtcast/qtcast.cpp | 80 + .../doc/src/snippets/qtcast/qtcast.h | 55 + .../doc/src/snippets/qtcast/qtcast.pro | 2 + .../doc/src/snippets/qtest-namespace/main.cpp | 48 + .../qtest-namespace/qtest-namespace.pro | 2 + .../snippets/qtreeview-dnd/dragdropmodel.cpp | 147 + .../snippets/qtreeview-dnd/dragdropmodel.h | 73 + .../doc/src/snippets/qtreeview-dnd/main.cpp | 52 + .../src/snippets/qtreeview-dnd/mainwindow.cpp | 91 + .../src/snippets/qtreeview-dnd/mainwindow.h | 62 + .../snippets/qtreeview-dnd/qtreeview-dnd.pro | 9 + .../src/snippets/qtreeview-dnd/treeitem.cpp | 126 + .../doc/src/snippets/qtreeview-dnd/treeitem.h | 72 + .../src/snippets/qtreeview-dnd/treemodel.cpp | 263 ++ .../src/snippets/qtreeview-dnd/treemodel.h | 80 + .../src/snippets/qtreewidget-using/main.cpp | 52 + .../snippets/qtreewidget-using/mainwindow.cpp | 102 + .../snippets/qtreewidget-using/mainwindow.h | 78 + .../qtreewidget-using/qtreewidget-using.pro | 3 + .../qtreewidgetitemiterator-using/main.cpp | 52 + .../mainwindow.cpp | 50 + .../mainwindow.h | 78 + .../qtreewidgetitemiterator-using.pro | 3 + .../qtscript/evaluation/evaluation.pro | 2 + .../src/snippets/qtscript/evaluation/main.cpp | 51 + .../qtscript/registeringobjects/main.cpp | 57 + .../qtscript/registeringobjects/myobject.cpp | 54 + .../qtscript/registeringobjects/myobject.h | 58 + .../registeringobjects/registeringobjects.pro | 4 + .../qtscript/registeringvalues/main.cpp | 53 + .../registeringvalues/registeringvalues.pro | 2 + .../snippets/qtscript/scriptedslot/main.cpp | 73 + .../snippets/qtscript/scriptedslot/object.js | 18 + .../qtscript/scriptedslot/scriptedslot.pro | 3 + .../qtscript/scriptedslot/scriptedslot.qrc | 5 + .../doc/src/snippets/quiloader/main.cpp | 68 + .../doc/src/snippets/quiloader/myform.ui | 130 + .../doc/src/snippets/quiloader/mywidget.cpp | 59 + .../doc/src/snippets/quiloader/mywidget.h | 53 + .../doc/src/snippets/quiloader/mywidget.qrc | 5 + .../doc/src/snippets/quiloader/quiloader.pro | 4 + .../src/snippets/qx11embedcontainer/main.cpp | 68 + .../qx11embedcontainer/qx11embedcontainer.pro | 1 + .../snippets/qx11embedwidget/embedwidget.cpp | 67 + .../snippets/qx11embedwidget/embedwidget.h | 66 + .../doc/src/snippets/qx11embedwidget/main.cpp | 62 + .../qx11embedwidget/qx11embedwidget.pro | 3 + .../src/snippets/qxmlquery/bindingExample.cpp | 9 + .../src/snippets/qxmlstreamwriter/main.cpp | 77 + .../qxmlstreamwriter/qxmlstreamwriter.pro | 2 + .../src/snippets/reading-selections/main.cpp | 60 + .../src/snippets/reading-selections/model.cpp | 239 ++ .../src/snippets/reading-selections/model.h | 75 + .../reading-selections/reading-selections.pro | 2 + .../snippets/reading-selections/window.cpp | 121 + .../src/snippets/reading-selections/window.h | 68 + .../doc/src/snippets/scribe-overview/main.cpp | 72 + .../scribe-overview/scribe-overview.pro | 1 + .../doc/src/snippets/scriptdebugger.cpp | 64 + .../doc/src/snippets/seekslider.cpp | 26 + .../src/snippets/separations/finalwidget.cpp | 127 + .../src/snippets/separations/finalwidget.h | 78 + .../doc/src/snippets/separations/main.cpp | 51 + .../src/snippets/separations/screenwidget.cpp | 218 ++ .../src/snippets/separations/screenwidget.h | 87 + .../src/snippets/separations/separations.pro | 7 + .../src/snippets/separations/separations.qdoc | 55 + .../doc/src/snippets/separations/viewer.cpp | 329 ++ .../doc/src/snippets/separations/viewer.h | 90 + .../doc/src/snippets/settings/settings.cpp | 179 ++ .../doc/src/snippets/shareddirmodel/main.cpp | 80 + .../shareddirmodel/shareddirmodel.pro | 1 + .../src/snippets/sharedemployee/employee.cpp | 42 + .../src/snippets/sharedemployee/employee.h | 95 + .../doc/src/snippets/sharedemployee/main.cpp | 51 + .../sharedemployee/sharedemployee.pro | 3 + .../src/snippets/sharedtablemodel/main.cpp | 90 + .../src/snippets/sharedtablemodel/model.cpp | 237 ++ .../doc/src/snippets/sharedtablemodel/model.h | 75 + .../sharedtablemodel/sharedtablemodel.pro | 2 + .../snippets/signalmapper/accountsfile.txt | 1 + .../src/snippets/signalmapper/filereader.cpp | 59 + .../src/snippets/signalmapper/filereader.h | 28 + .../doc/src/snippets/signalmapper/main.cpp | 13 + .../src/snippets/signalmapper/reportfile.txt | 2 + .../snippets/signalmapper/signalmapper.pro | 12 + .../doc/src/snippets/signalmapper/taxfile.txt | 1 + .../snippets/signalsandslots/lcdnumber.cpp | 78 + .../src/snippets/signalsandslots/lcdnumber.h | 89 + .../signalsandslots/signalsandslots.cpp | 85 + .../signalsandslots/signalsandslots.h | 90 + .../doc/src/snippets/simplemodel-use/main.cpp | 96 + .../simplemodel-use/simplemodel-use.pro | 1 + .../doc/src/snippets/snippets.pro | 109 + .../doc/src/snippets/splitter/splitter.cpp | 67 + .../doc/src/snippets/splitter/splitter.pro | 1 + .../doc/src/snippets/splitterhandle/main.cpp | 58 + .../src/snippets/splitterhandle/splitter.cpp | 79 + .../src/snippets/splitterhandle/splitter.h | 52 + .../splitterhandle/splitterhandle.pro | 3 + .../src/snippets/sqldatabase/sqldatabase.cpp | 480 +++ .../src/snippets/sqldatabase/sqldatabase.pro | 2 + .../doc/src/snippets/streaming/main.cpp | 109 + .../doc/src/snippets/streaming/streaming.pro | 2 + .../doc/src/snippets/stringlistmodel/main.cpp | 84 + .../src/snippets/stringlistmodel/model.cpp | 182 ++ .../doc/src/snippets/stringlistmodel/model.h | 83 + .../stringlistmodel/stringlistmodel.pro | 3 + .../doc/src/snippets/styles/styles.cpp | 71 + .../snippets/stylesheet/common-mistakes.cpp | 12 + .../src/snippets/textblock-formats/main.cpp | 119 + .../textblock-formats/textblock-formats.pro | 2 + .../src/snippets/textblock-fragments/main.cpp | 53 + .../textblock-fragments/mainwindow.cpp | 149 + .../snippets/textblock-fragments/mainwindow.h | 66 + .../textblock-fragments.pro | 6 + .../textblock-fragments/xmlwriter.cpp | 119 + .../snippets/textblock-fragments/xmlwriter.h | 65 + .../src/snippets/textdocument-blocks/main.cpp | 53 + .../textdocument-blocks/mainwindow.cpp | 157 + .../snippets/textdocument-blocks/mainwindow.h | 66 + .../textdocument-blocks.pro | 6 + .../textdocument-blocks/xmlwriter.cpp | 85 + .../snippets/textdocument-blocks/xmlwriter.h | 62 + .../textdocument-charformats/main.cpp | 93 + .../textdocument-charformats.pro | 1 + .../src/snippets/textdocument-css/main.cpp | 49 + .../textdocument-css/textdocument-css.pro | 1 + .../snippets/textdocument-cursors/main.cpp | 80 + .../textdocument-cursors.pro | 1 + .../src/snippets/textdocument-find/main.cpp | 92 + .../textdocument-find/textdocument-find.pro | 1 + .../src/snippets/textdocument-frames/main.cpp | 54 + .../textdocument-frames/mainwindow.cpp | 162 + .../snippets/textdocument-frames/mainwindow.h | 65 + .../textdocument-frames.pro | 6 + .../textdocument-frames/xmlwriter.cpp | 117 + .../snippets/textdocument-frames/xmlwriter.h | 65 + .../snippets/textdocument-imagedrop/main.cpp | 53 + .../textdocument-imagedrop.pro | 2 + .../textdocument-imagedrop/textedit.cpp | 72 + .../textdocument-imagedrop/textedit.h | 57 + .../textdocument-imageformat/images.qrc | 6 + .../images/advert.png | Bin 0 -> 16291 bytes .../images/newimage.png | Bin 0 -> 5490 bytes .../textdocument-imageformat/main.cpp | 99 + .../textdocument-imageformat.pro | 2 + .../snippets/textdocument-images/images.qrc | 5 + .../textdocument-images/images/advert.png | Bin 0 -> 16291 bytes .../src/snippets/textdocument-images/main.cpp | 73 + .../textdocument-images.pro | 2 + .../snippets/textdocument-listitems/main.cpp | 53 + .../textdocument-listitems/mainwindow.cpp | 198 ++ .../textdocument-listitems/mainwindow.h | 76 + .../textdocument-listitems.pro | 3 + .../src/snippets/textdocument-lists/main.cpp | 53 + .../textdocument-lists/mainwindow.cpp | 192 ++ .../snippets/textdocument-lists/mainwindow.h | 80 + .../textdocument-lists/textdocument-lists.pro | 3 + .../snippets/textdocument-printing/main.cpp | 53 + .../textdocument-printing/mainwindow.cpp | 125 + .../textdocument-printing/mainwindow.h | 73 + .../textdocument-printing.pro | 3 + .../snippets/textdocument-selections/main.cpp | 53 + .../textdocument-selections/mainwindow.cpp | 204 ++ .../textdocument-selections/mainwindow.h | 80 + .../textdocument-selections.pro | 4 + .../src/snippets/textdocument-tables/main.cpp | 53 + .../textdocument-tables/mainwindow.cpp | 116 + .../snippets/textdocument-tables/mainwindow.h | 66 + .../textdocument-tables.pro | 6 + .../textdocument-tables/xmlwriter.cpp | 154 + .../snippets/textdocument-tables/xmlwriter.h | 65 + .../snippets/textdocument-texttable/main.cpp | 47 + .../src/snippets/textdocumentendsnippet.cpp | 59 + .../doc/src/snippets/threads/threads.cpp | 121 + .../doc/src/snippets/threads/threads.h | 52 + .../doc/src/snippets/timeline/main.cpp | 73 + .../doc/src/snippets/timeline/timeline.pro | 1 + .../doc/src/snippets/timers/timers.cpp | 79 + .../doc/src/snippets/timers/timers.pro | 1 + .../doc/src/snippets/transform/main.cpp | 101 + .../doc/src/snippets/transform/transform.pro | 1 + .../uitools/calculatorform/calculatorform.pro | 5 + .../uitools/calculatorform/calculatorform.ui | 303 ++ .../snippets/uitools/calculatorform/main.cpp | 58 + .../src/snippets/updating-selections/main.cpp | 60 + .../snippets/updating-selections/model.cpp | 237 ++ .../src/snippets/updating-selections/model.h | 75 + .../updating-selections.pro | 2 + .../snippets/updating-selections/window.cpp | 110 + .../src/snippets/updating-selections/window.h | 68 + .../doc/src/snippets/videomedia.cpp | 19 + .../doc/src/snippets/volumeslider.cpp | 29 + .../doc/src/snippets/webkit/webpage/main.cpp | 44 + .../doc/src/snippets/whatsthis/whatsthis.cpp | 48 + .../doc/src/snippets/whatsthis/whatsthis.pro | 1 + .../doc/src/snippets/widget-mask/main.cpp | 55 + .../doc/src/snippets/widget-mask/mask.qrc | 5 + .../doc/src/snippets/widget-mask/tux.png | Bin 0 -> 12191 bytes .../src/snippets/widget-mask/widget-mask.pro | 3 + .../doc/src/snippets/widgetdelegate.cpp | 23 + .../childwidget/childwidget.pro | 1 + .../widgets-tutorial/childwidget/main.cpp | 17 + .../widgets-tutorial/nestedlayouts/main.cpp | 48 + .../nestedlayouts/nestedlayouts.pro | 1 + .../widgets-tutorial/toplevel/main.cpp | 13 + .../widgets-tutorial/toplevel/toplevel.pro | 1 + .../widgets-tutorial/windowlayout/main.cpp | 19 + .../windowlayout/windowlayout.pro | 1 + .../doc/src/snippets/xml/prettyprint/main.cpp | 144 + .../snippets/xml/prettyprint/prettyprint.pro | 4 + .../src/snippets/xml/rsslisting/handler.cpp | 179 ++ .../doc/src/snippets/xml/rsslisting/handler.h | 75 + .../doc/src/snippets/xml/rsslisting/main.cpp | 64 + .../snippets/xml/rsslisting/rsslisting.cpp | 246 ++ .../src/snippets/xml/rsslisting/rsslisting.h | 87 + .../src/snippets/xml/simpleparse/handler.cpp | 139 + .../src/snippets/xml/simpleparse/handler.h | 68 + .../doc/src/snippets/xml/simpleparse/main.cpp | 88 + .../snippets/xml/simpleparse/simpleparse.pro | 4 + doc/codesnippets/doc/src/snippets/xml/xml.pro | 8 + .../dialogs/classwizard/classwizard.cpp | 250 ++ .../dialogs/classwizard/classwizard.qrc | 11 + .../dialogs/classwizard/images/background.png | Bin 0 -> 22578 bytes .../dialogs/classwizard/images/banner.png | Bin 0 -> 3947 bytes .../dialogs/classwizard/images/logo1.png | Bin 0 -> 1619 bytes .../dialogs/classwizard/images/logo2.png | Bin 0 -> 1619 bytes .../dialogs/classwizard/images/logo3.png | Bin 0 -> 1619 bytes .../dialogs/classwizard/images/watermark1.png | Bin 0 -> 14516 bytes .../dialogs/classwizard/images/watermark2.png | Bin 0 -> 14912 bytes .../examples/dialogs/classwizard/main.cpp | 64 + .../examples/dialogs/extension/finddialog.cpp | 110 + .../dialogs/licensewizard/images/logo.png | Bin 0 -> 1810 bytes .../licensewizard/images/watermark.png | Bin 0 -> 34998 bytes .../dialogs/licensewizard/licensewizard.cpp | 349 +++ .../dialogs/licensewizard/licensewizard.h | 164 + .../dialogs/licensewizard/licensewizard.pro | 10 + .../dialogs/licensewizard/licensewizard.qrc | 6 + .../examples/dialogs/licensewizard/main.cpp | 64 + .../dialogs/standarddialogs/dialog.cpp | 71 + .../dialogs/trivialwizard/trivialwizard.cpp | 134 + .../dialogs/trivialwizard/trivialwizard.pro | 7 + .../mysortfilterproxymodel.cpp | 102 + .../itemviews/pixelator/pixeldelegate.cpp | 94 + .../itemviews/simpledommodel/dommodel.cpp | 188 ++ .../examples/linguist/hellotr/main.cpp | 69 + .../mainwindows/application/mainwindow.cpp | 350 +++ .../mainwindows/dockwidgets/mainwindow.cpp | 246 ++ .../examples/mainwindows/mainwindow.cpp | 358 +++ .../examples/mainwindows/mdi/mainwindow.cpp | 372 +++ .../examples/mainwindows/menus/mainwindow.cpp | 358 +++ .../examples/painting/svggenerator/window.cpp | 98 + .../richtext/textobject/svgtextobject.h | 70 + .../sql/querymodel/editablesqlmodel.cpp | 103 + .../relationaltablemodel.cpp | 111 + .../widgets/analogclock/analogclock.cpp | 146 + .../widgets/icons/iconsizespinbox.cpp | 63 + .../examples/widgets/spinboxes/window.cpp | 240 ++ .../xml/streambookmarks/xbelreader.cpp | 201 ++ .../examples/xml/streambookmarks/xbelreader.h | 81 + .../xml/streambookmarks/xbelwriter.cpp | 91 + .../snippets/textdocument-resources/main.cpp | 84 + .../textdocument-resources.pro | 1 + doc/conf.py | 166 + doc/contents.rst | 20 + doc/dbus.rst | 30 + doc/generatingdocs.rst | 56 + doc/howto-build/cmake-primer.rst | 72 + doc/howto-build/index.rst | 19 + doc/howto-build/setup-apiextractor.rst | 49 + doc/howto-build/setup-bindings.rst | 76 + doc/howto-build/setup-boostpython.rst | 51 + doc/howto-build/setup-generator.rst | 50 + doc/inheritance_diagram.py | 369 +++ doc/issuesdiff.rst | 26 + doc/modules.rst | 19 + doc/pyhtml2devhelp.py | 225 ++ doc/pyside.qdocconf | 11 + 1108 files changed, 70655 insertions(+) create mode 100644 doc/CMakeLists.txt create mode 100644 doc/Makefile create mode 100644 doc/_static/.gitignore create mode 100644 doc/_static/basic.css create mode 100644 doc/_static/default.css create mode 100755 doc/_static/images/._background_search.jpg create mode 100755 doc/_static/images/._bread_crumb.png create mode 100755 doc/_static/images/._button_search.jpg create mode 100755 doc/_static/images/._side_background.jpg create mode 100755 doc/_static/images/._top_background.jpg create mode 100644 doc/_static/images/background_search.jpg create mode 100644 doc/_static/images/bg.jpg create mode 100644 doc/_static/images/bread_crumb.png create mode 100644 doc/_static/images/button_search.png create mode 100644 doc/_static/images/side_background.jpg create mode 100644 doc/_static/images/top_background.jpg create mode 100644 doc/_templates/index.html create mode 100644 doc/_themes/pysidedocs/defindex.html create mode 100644 doc/_themes/pysidedocs/genindex-single.html create mode 100644 doc/_themes/pysidedocs/genindex-split.html create mode 100644 doc/_themes/pysidedocs/genindex.html create mode 100644 doc/_themes/pysidedocs/layout.html create mode 100644 doc/_themes/pysidedocs/modindex.html create mode 100644 doc/_themes/pysidedocs/opensearch.xml create mode 100644 doc/_themes/pysidedocs/page.html create mode 100644 doc/_themes/pysidedocs/search.html create mode 100644 doc/_themes/pysidedocs/static/.directory create mode 100644 doc/_themes/pysidedocs/static/bg_header.png create mode 100644 doc/_themes/pysidedocs/static/bg_topo.jpg create mode 100644 doc/_themes/pysidedocs/static/doctools.js create mode 100644 doc/_themes/pysidedocs/static/fakebar.png create mode 100644 doc/_themes/pysidedocs/static/jquery.js create mode 100644 doc/_themes/pysidedocs/static/logo_indt.jpg create mode 100644 doc/_themes/pysidedocs/static/logo_openbossa.png create mode 100644 doc/_themes/pysidedocs/static/logo_python.jpg create mode 100644 doc/_themes/pysidedocs/static/logo_qt.png create mode 100644 doc/_themes/pysidedocs/static/pysidedocs.css create mode 100644 doc/_themes/pysidedocs/static/pysidelogo.png create mode 100644 doc/_themes/pysidedocs/static/relbar_bg.png create mode 100644 doc/_themes/pysidedocs/static/searchtools.js create mode 100644 doc/_themes/pysidedocs/theme.conf create mode 100644 doc/codesnippets/doc/src/snippets/accessibilityfactorysnippet.cpp create mode 100644 doc/codesnippets/doc/src/snippets/accessibilitypluginsnippet.cpp create mode 100644 doc/codesnippets/doc/src/snippets/accessibilityslidersnippet.cpp create mode 100644 doc/codesnippets/doc/src/snippets/alphachannel.cpp create mode 100644 doc/codesnippets/doc/src/snippets/audioeffects.cpp create mode 100644 doc/codesnippets/doc/src/snippets/brush/brush.cpp create mode 100644 doc/codesnippets/doc/src/snippets/brush/brush.pro create mode 100644 doc/codesnippets/doc/src/snippets/brush/gradientcreationsnippet.cpp create mode 100644 doc/codesnippets/doc/src/snippets/brushstyles/brushstyles.pro create mode 100644 doc/codesnippets/doc/src/snippets/brushstyles/main.cpp create mode 100644 doc/codesnippets/doc/src/snippets/brushstyles/qt-logo.png create mode 100644 doc/codesnippets/doc/src/snippets/brushstyles/renderarea.cpp create mode 100644 doc/codesnippets/doc/src/snippets/brushstyles/renderarea.h create mode 100644 doc/codesnippets/doc/src/snippets/brushstyles/stylewidget.cpp create mode 100644 doc/codesnippets/doc/src/snippets/brushstyles/stylewidget.h create mode 100644 doc/codesnippets/doc/src/snippets/buffer/buffer.cpp create mode 100644 doc/codesnippets/doc/src/snippets/buffer/buffer.pro create mode 100644 doc/codesnippets/doc/src/snippets/clipboard/clipboard.pro create mode 100644 doc/codesnippets/doc/src/snippets/clipboard/clipwindow.cpp create mode 100644 doc/codesnippets/doc/src/snippets/clipboard/clipwindow.h create mode 100644 doc/codesnippets/doc/src/snippets/clipboard/main.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/doc.src.qtscripttools.qdoc create mode 100644 doc/codesnippets/doc/src/snippets/code/doc_src_activeqt-dumpcpp.qdoc create mode 100644 doc/codesnippets/doc/src/snippets/code/doc_src_appicon.qdoc create mode 100644 doc/codesnippets/doc/src/snippets/code/doc_src_assistant-manual.qdoc create mode 100644 doc/codesnippets/doc/src/snippets/code/doc_src_atomic-operations.qdoc create mode 100644 doc/codesnippets/doc/src/snippets/code/doc_src_compiler-notes.qdoc create mode 100644 doc/codesnippets/doc/src/snippets/code/doc_src_containers.qdoc create mode 100644 doc/codesnippets/doc/src/snippets/code/doc_src_coordsys.qdoc create mode 100644 doc/codesnippets/doc/src/snippets/code/doc_src_debug.qdoc create mode 100644 doc/codesnippets/doc/src/snippets/code/doc_src_deployment.qdoc create mode 100644 doc/codesnippets/doc/src/snippets/code/doc_src_designer-manual.qdoc create mode 100644 doc/codesnippets/doc/src/snippets/code/doc_src_dnd.qdoc create mode 100644 doc/codesnippets/doc/src/snippets/code/doc_src_emb-charinput.qdoc create mode 100644 doc/codesnippets/doc/src/snippets/code/doc_src_emb-crosscompiling.qdoc create mode 100644 doc/codesnippets/doc/src/snippets/code/doc_src_emb-envvars.qdoc create mode 100644 doc/codesnippets/doc/src/snippets/code/doc_src_emb-features.qdoc create mode 100644 doc/codesnippets/doc/src/snippets/code/doc_src_emb-fonts.qdoc create mode 100644 doc/codesnippets/doc/src/snippets/code/doc_src_emb-install.qdoc create mode 100644 doc/codesnippets/doc/src/snippets/code/doc_src_emb-performance.qdoc create mode 100644 doc/codesnippets/doc/src/snippets/code/doc_src_emb-pointer.qdoc create mode 100644 doc/codesnippets/doc/src/snippets/code/doc_src_emb-qvfb.qdoc create mode 100644 doc/codesnippets/doc/src/snippets/code/doc_src_emb-running.qdoc create mode 100644 doc/codesnippets/doc/src/snippets/code/doc_src_emb-vnc.qdoc create mode 100644 doc/codesnippets/doc/src/snippets/code/doc_src_examples_activeqt_comapp.qdoc create mode 100644 doc/codesnippets/doc/src/snippets/code/doc_src_examples_activeqt_dotnet.qdoc create mode 100644 doc/codesnippets/doc/src/snippets/code/doc_src_examples_activeqt_menus.qdoc create mode 100644 doc/codesnippets/doc/src/snippets/code/doc_src_examples_ahigl.qdoc create mode 100644 doc/codesnippets/doc/src/snippets/code/doc_src_examples_application.qdoc create mode 100644 doc/codesnippets/doc/src/snippets/code/doc_src_examples_arrowpad.qdoc create mode 100644 doc/codesnippets/doc/src/snippets/code/doc_src_examples_containerextension.qdoc create mode 100644 doc/codesnippets/doc/src/snippets/code/doc_src_examples_customwidgetplugin.qdoc create mode 100644 doc/codesnippets/doc/src/snippets/code/doc_src_examples_dropsite.qdoc create mode 100644 doc/codesnippets/doc/src/snippets/code/doc_src_examples_editabletreemodel.qdoc create mode 100644 doc/codesnippets/doc/src/snippets/code/doc_src_examples_hellotr.qdoc create mode 100644 doc/codesnippets/doc/src/snippets/code/doc_src_examples_icons.qdoc create mode 100644 doc/codesnippets/doc/src/snippets/code/doc_src_examples_imageviewer.qdoc create mode 100644 doc/codesnippets/doc/src/snippets/code/doc_src_examples_qtscriptcustomclass.qdoc create mode 100644 doc/codesnippets/doc/src/snippets/code/doc_src_examples_simpledommodel.qdoc create mode 100644 doc/codesnippets/doc/src/snippets/code/doc_src_examples_simpletreemodel.qdoc create mode 100644 doc/codesnippets/doc/src/snippets/code/doc_src_examples_svgalib.qdoc create mode 100644 doc/codesnippets/doc/src/snippets/code/doc_src_examples_taskmenuextension.qdoc create mode 100644 doc/codesnippets/doc/src/snippets/code/doc_src_examples_textfinder.qdoc create mode 100644 doc/codesnippets/doc/src/snippets/code/doc_src_examples_trollprint.qdoc create mode 100644 doc/codesnippets/doc/src/snippets/code/doc_src_examples_tutorial.qdoc create mode 100644 doc/codesnippets/doc/src/snippets/code/doc_src_examples_worldtimeclockplugin.qdoc create mode 100644 doc/codesnippets/doc/src/snippets/code/doc_src_exportedfunctions.qdoc create mode 100644 doc/codesnippets/doc/src/snippets/code/doc_src_gpl.qdoc create mode 100644 doc/codesnippets/doc/src/snippets/code/doc_src_graphicsview.qdoc create mode 100644 doc/codesnippets/doc/src/snippets/code/doc_src_groups.qdoc create mode 100644 doc/codesnippets/doc/src/snippets/code/doc_src_i18n.qdoc create mode 100644 doc/codesnippets/doc/src/snippets/code/doc_src_installation.qdoc create mode 100644 doc/codesnippets/doc/src/snippets/code/doc_src_introtodbus.qdoc create mode 100644 doc/codesnippets/doc/src/snippets/code/doc_src_layout.qdoc create mode 100644 doc/codesnippets/doc/src/snippets/code/doc_src_lgpl.qdoc create mode 100644 doc/codesnippets/doc/src/snippets/code/doc_src_licenses.qdoc create mode 100644 doc/codesnippets/doc/src/snippets/code/doc_src_linguist-manual.qdoc create mode 100644 doc/codesnippets/doc/src/snippets/code/doc_src_moc.qdoc create mode 100644 doc/codesnippets/doc/src/snippets/code/doc_src_model-view-programming.qdoc create mode 100644 doc/codesnippets/doc/src/snippets/code/doc_src_modules.qdoc create mode 100644 doc/codesnippets/doc/src/snippets/code/doc_src_objecttrees.qdoc create mode 100644 doc/codesnippets/doc/src/snippets/code/doc_src_phonon-api.qdoc create mode 100644 doc/codesnippets/doc/src/snippets/code/doc_src_phonon.qdoc create mode 100644 doc/codesnippets/doc/src/snippets/code/doc_src_platform-notes.qdoc create mode 100644 doc/codesnippets/doc/src/snippets/code/doc_src_plugins-howto.qdoc create mode 100644 doc/codesnippets/doc/src/snippets/code/doc_src_porting-qsa.qdoc create mode 100644 doc/codesnippets/doc/src/snippets/code/doc_src_porting4-canvas.qdoc create mode 100644 doc/codesnippets/doc/src/snippets/code/doc_src_porting4-designer.qdoc create mode 100644 doc/codesnippets/doc/src/snippets/code/doc_src_porting4.qdoc create mode 100644 doc/codesnippets/doc/src/snippets/code/doc_src_properties.qdoc create mode 100644 doc/codesnippets/doc/src/snippets/code/doc_src_q3asciidict.qdoc create mode 100644 doc/codesnippets/doc/src/snippets/code/doc_src_q3dict.qdoc create mode 100644 doc/codesnippets/doc/src/snippets/code/doc_src_q3intdict.qdoc create mode 100644 doc/codesnippets/doc/src/snippets/code/doc_src_q3memarray.qdoc create mode 100644 doc/codesnippets/doc/src/snippets/code/doc_src_q3ptrdict.qdoc create mode 100644 doc/codesnippets/doc/src/snippets/code/doc_src_q3ptrlist.qdoc create mode 100644 doc/codesnippets/doc/src/snippets/code/doc_src_q3valuelist.qdoc create mode 100644 doc/codesnippets/doc/src/snippets/code/doc_src_q3valuestack.qdoc create mode 100644 doc/codesnippets/doc/src/snippets/code/doc_src_q3valuevector.qdoc create mode 100644 doc/codesnippets/doc/src/snippets/code/doc_src_qalgorithms.qdoc create mode 100644 doc/codesnippets/doc/src/snippets/code/doc_src_qaxcontainer.qdoc create mode 100644 doc/codesnippets/doc/src/snippets/code/doc_src_qaxserver.qdoc create mode 100644 doc/codesnippets/doc/src/snippets/code/doc_src_qcache.qdoc create mode 100644 doc/codesnippets/doc/src/snippets/code/doc_src_qdbusadaptors.qdoc create mode 100644 doc/codesnippets/doc/src/snippets/code/doc_src_qiterator.qdoc create mode 100644 doc/codesnippets/doc/src/snippets/code/doc_src_qmake-manual.qdoc create mode 100644 doc/codesnippets/doc/src/snippets/code/doc_src_qnamespace.qdoc create mode 100644 doc/codesnippets/doc/src/snippets/code/doc_src_qpair.qdoc create mode 100644 doc/codesnippets/doc/src/snippets/code/doc_src_qplugin.qdoc create mode 100644 doc/codesnippets/doc/src/snippets/code/doc_src_qset.qdoc create mode 100644 doc/codesnippets/doc/src/snippets/code/doc_src_qsignalspy.qdoc create mode 100644 doc/codesnippets/doc/src/snippets/code/doc_src_qt-conf.qdoc create mode 100644 doc/codesnippets/doc/src/snippets/code/doc_src_qt-embedded-displaymanagement.qdoc create mode 100644 doc/codesnippets/doc/src/snippets/code/doc_src_qt3support.qdoc create mode 100644 doc/codesnippets/doc/src/snippets/code/doc_src_qt3to4.qdoc create mode 100644 doc/codesnippets/doc/src/snippets/code/doc_src_qt4-accessibility.qdoc create mode 100644 doc/codesnippets/doc/src/snippets/code/doc_src_qt4-arthur.qdoc create mode 100644 doc/codesnippets/doc/src/snippets/code/doc_src_qt4-intro.qdoc create mode 100644 doc/codesnippets/doc/src/snippets/code/doc_src_qt4-mainwindow.qdoc create mode 100644 doc/codesnippets/doc/src/snippets/code/doc_src_qt4-sql.qdoc create mode 100644 doc/codesnippets/doc/src/snippets/code/doc_src_qt4-styles.qdoc create mode 100644 doc/codesnippets/doc/src/snippets/code/doc_src_qt4-tulip.qdoc create mode 100644 doc/codesnippets/doc/src/snippets/code/doc_src_qtcore.qdoc create mode 100644 doc/codesnippets/doc/src/snippets/code/doc_src_qtdbus.qdoc create mode 100644 doc/codesnippets/doc/src/snippets/code/doc_src_qtdesigner.qdoc create mode 100644 doc/codesnippets/doc/src/snippets/code/doc_src_qtestevent.qdoc create mode 100644 doc/codesnippets/doc/src/snippets/code/doc_src_qtestlib.qdoc create mode 100644 doc/codesnippets/doc/src/snippets/code/doc_src_qtgui.qdoc create mode 100644 doc/codesnippets/doc/src/snippets/code/doc_src_qthelp.qdoc create mode 100644 doc/codesnippets/doc/src/snippets/code/doc_src_qtmac-as-native.qdoc create mode 100644 doc/codesnippets/doc/src/snippets/code/doc_src_qtnetwork.qdoc create mode 100644 doc/codesnippets/doc/src/snippets/code/doc_src_qtopengl.qdoc create mode 100644 doc/codesnippets/doc/src/snippets/code/doc_src_qtscript.qdoc create mode 100644 doc/codesnippets/doc/src/snippets/code/doc_src_qtscriptextensions.qdoc create mode 100644 doc/codesnippets/doc/src/snippets/code/doc_src_qtsql.qdoc create mode 100644 doc/codesnippets/doc/src/snippets/code/doc_src_qtsvg.qdoc create mode 100644 doc/codesnippets/doc/src/snippets/code/doc_src_qttest.qdoc create mode 100644 doc/codesnippets/doc/src/snippets/code/doc_src_qtuiloader.qdoc create mode 100644 doc/codesnippets/doc/src/snippets/code/doc_src_qtxml.qdoc create mode 100644 doc/codesnippets/doc/src/snippets/code/doc_src_qtxmlpatterns.qdoc create mode 100644 doc/codesnippets/doc/src/snippets/code/doc_src_qvarlengtharray.qdoc create mode 100644 doc/codesnippets/doc/src/snippets/code/doc_src_rcc.qdoc create mode 100644 doc/codesnippets/doc/src/snippets/code/doc_src_resources.qdoc create mode 100644 doc/codesnippets/doc/src/snippets/code/doc_src_richtext.qdoc create mode 100644 doc/codesnippets/doc/src/snippets/code/doc_src_session.qdoc create mode 100644 doc/codesnippets/doc/src/snippets/code/doc_src_sql-driver.qdoc create mode 100644 doc/codesnippets/doc/src/snippets/code/doc_src_styles.qdoc create mode 100644 doc/codesnippets/doc/src/snippets/code/doc_src_stylesheet.qdoc create mode 100644 doc/codesnippets/doc/src/snippets/code/doc_src_uic.qdoc create mode 100644 doc/codesnippets/doc/src/snippets/code/doc_src_unicode.qdoc create mode 100644 doc/codesnippets/doc/src/snippets/code/doc_src_unix-signal-handlers.qdoc create mode 100644 doc/codesnippets/doc/src/snippets/code/src.gui.text.qtextdocumentwriter.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src.qdbus.qdbuspendingcall.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src.qdbus.qdbuspendingreply.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src.scripttools.qscriptenginedebugger.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_activeqt_container_qaxbase.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_activeqt_container_qaxscript.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_activeqt_control_qaxbindable.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_activeqt_control_qaxfactory.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_corelib_codecs_qtextcodec.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_corelib_codecs_qtextcodecplugin.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_corelib_concurrent_qfuture.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_corelib_concurrent_qfuturesynchronizer.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_corelib_concurrent_qfuturewatcher.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_corelib_concurrent_qtconcurrentexception.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_corelib_concurrent_qtconcurrentfilter.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_corelib_concurrent_qtconcurrentmap.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_corelib_concurrent_qtconcurrentrun.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_corelib_concurrent_qthreadpool.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_corelib_global_qglobal.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_corelib_io_qabstractfileengine.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_corelib_io_qdatastream.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_corelib_io_qdir.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_corelib_io_qdiriterator.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_corelib_io_qfile.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_corelib_io_qfileinfo.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_corelib_io_qiodevice.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_corelib_io_qprocess.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_corelib_io_qsettings.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_corelib_io_qtemporaryfile.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_corelib_io_qtextstream.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_corelib_io_qurl.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_corelib_kernel_qabstracteventdispatcher.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_corelib_kernel_qabstractitemmodel.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_corelib_kernel_qcoreapplication.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_corelib_kernel_qmetaobject.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_corelib_kernel_qmetatype.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_corelib_kernel_qmimedata.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_corelib_kernel_qobject.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_corelib_kernel_qsystemsemaphore.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_corelib_kernel_qtimer.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_corelib_kernel_qvariant.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_corelib_plugin_qlibrary.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_corelib_plugin_quuid.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_corelib_thread_qatomic.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_corelib_thread_qmutex.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_corelib_thread_qmutexpool.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_corelib_thread_qreadwritelock.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_corelib_thread_qsemaphore.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_corelib_thread_qthread.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_corelib_thread_qwaitcondition_unix.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_corelib_tools_qbitarray.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_corelib_tools_qbytearray.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_corelib_tools_qdatetime.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_corelib_tools_qhash.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_corelib_tools_qlinkedlist.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_corelib_tools_qlistdata.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_corelib_tools_qlocale.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_corelib_tools_qmap.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_corelib_tools_qpoint.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_corelib_tools_qqueue.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_corelib_tools_qrect.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_corelib_tools_qregexp.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_corelib_tools_qsize.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_corelib_tools_qstring.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_corelib_tools_qtimeline.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_corelib_tools_qvector.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_corelib_xml_qxmlstream.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_gui_accessible_qaccessible.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_gui_dialogs_qabstractprintdialog.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_gui_dialogs_qfiledialog.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_gui_dialogs_qfontdialog.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_gui_dialogs_qmessagebox.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_gui_dialogs_qwizard.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_gui_graphicsview_qgraphicsgridlayout.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_gui_graphicsview_qgraphicsitem.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_gui_graphicsview_qgraphicslinearlayout.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_gui_graphicsview_qgraphicsproxywidget.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_gui_graphicsview_qgraphicsscene.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_gui_graphicsview_qgraphicssceneevent.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_gui_graphicsview_qgraphicsview.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_gui_graphicsview_qgraphicswidget.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_gui_image_qbitmap.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_gui_image_qicon.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_gui_image_qimage.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_gui_image_qimagereader.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_gui_image_qimagewriter.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_gui_image_qmovie.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_gui_image_qpixmap.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_gui_image_qpixmapcache.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_gui_image_qpixmapfilter.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_gui_itemviews_qabstractitemview.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_gui_itemviews_qdatawidgetmapper.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_gui_itemviews_qitemeditorfactory.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_gui_itemviews_qitemselectionmodel.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_gui_itemviews_qstandarditemmodel.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_gui_itemviews_qtablewidget.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_gui_itemviews_qtreewidget.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_gui_kernel_qaction.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_gui_kernel_qapplication.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_gui_kernel_qapplication_x11.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_gui_kernel_qclipboard.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_gui_kernel_qevent.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_gui_kernel_qformlayout.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_gui_kernel_qkeysequence.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_gui_kernel_qlayout.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_gui_kernel_qlayoutitem.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_gui_kernel_qshortcut.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_gui_kernel_qshortcutmap.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_gui_kernel_qsound.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_gui_kernel_qwidget.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_gui_painting_qbrush.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_gui_painting_qcolor.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_gui_painting_qdrawutil.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_gui_painting_qmatrix.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_gui_painting_qpainter.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_gui_painting_qpainterpath.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_gui_painting_qpen.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_gui_painting_qregion.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_gui_painting_qregion_unix.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_gui_painting_qtransform.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_gui_styles_qstyle.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_gui_styles_qstyleoption.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_gui_text_qfont.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_gui_text_qfontmetrics.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_gui_text_qsyntaxhighlighter.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_gui_text_qtextcursor.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_gui_text_qtextdocument.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_gui_text_qtextlayout.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_gui_util_qcompleter.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_gui_util_qdesktopservices.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_gui_util_qundostack.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_gui_widgets_qabstractbutton.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_gui_widgets_qabstractspinbox.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_gui_widgets_qcalendarwidget.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_gui_widgets_qcheckbox.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_gui_widgets_qdatetimeedit.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_gui_widgets_qdockwidget.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_gui_widgets_qframe.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_gui_widgets_qgroupbox.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_gui_widgets_qlabel.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_gui_widgets_qlineedit.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_gui_widgets_qmenu.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_gui_widgets_qmenubar.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_gui_widgets_qplaintextedit.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_gui_widgets_qpushbutton.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_gui_widgets_qradiobutton.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_gui_widgets_qrubberband.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_gui_widgets_qscrollarea.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_gui_widgets_qspinbox.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_gui_widgets_qsplashscreen.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_gui_widgets_qsplitter.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_gui_widgets_qstatusbar.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_gui_widgets_qtextbrowser.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_gui_widgets_qtextedit.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_gui_widgets_qvalidator.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_gui_widgets_qworkspace.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_network_access_qftp.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_network_access_qhttp.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_network_access_qnetworkaccessmanager.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_network_access_qnetworkrequest.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_network_kernel_qhostaddress.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_network_kernel_qhostinfo.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_network_kernel_qnetworkproxy.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_network_socket_qabstractsocket.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_network_socket_qlocalsocket_unix.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_network_socket_qnativesocketengine.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_network_socket_qtcpserver.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_network_socket_qudpsocket.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_network_ssl_qsslcertificate.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_network_ssl_qsslconfiguration.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_network_ssl_qsslsocket.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_opengl_qgl.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_opengl_qglcolormap.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_opengl_qglpixelbuffer.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_qdbus_qdbusabstractinterface.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_qdbus_qdbusargument.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_qdbus_qdbuscontext.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_qdbus_qdbusinterface.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_qdbus_qdbusmetatype.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_qdbus_qdbusreply.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_qt3support_canvas_q3canvas.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_qt3support_dialogs_q3filedialog.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_qt3support_dialogs_q3progressdialog.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_qt3support_itemviews_q3iconview.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_qt3support_itemviews_q3listview.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_qt3support_itemviews_q3table.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_qt3support_network_q3dns.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_qt3support_network_q3ftp.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_qt3support_network_q3http.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_qt3support_network_q3localfs.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_qt3support_network_q3networkprotocol.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_qt3support_network_q3socket.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_qt3support_network_q3socketdevice.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_qt3support_network_q3url.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_qt3support_network_q3urloperator.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_qt3support_other_q3accel.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_qt3support_other_q3mimefactory.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_qt3support_other_q3process.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_qt3support_other_q3process_unix.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_qt3support_painting_q3paintdevicemetrics.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_qt3support_painting_q3painter.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_qt3support_painting_q3picture.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_qt3support_sql_q3databrowser.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_qt3support_sql_q3datatable.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_qt3support_sql_q3dataview.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_qt3support_sql_q3sqlcursor.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_qt3support_sql_q3sqlform.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_qt3support_sql_q3sqlmanager_p.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_qt3support_sql_q3sqlpropertymap.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_qt3support_sql_q3sqlselectcursor.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_qt3support_text_q3simplerichtext.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_qt3support_text_q3textbrowser.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_qt3support_text_q3textedit.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_qt3support_text_q3textstream.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_qt3support_tools_q3cstring.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_qt3support_tools_q3deepcopy.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_qt3support_tools_q3garray.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_qt3support_tools_q3signal.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_qt3support_widgets_q3combobox.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_qt3support_widgets_q3datetimeedit.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_qt3support_widgets_q3dockarea.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_qt3support_widgets_q3dockwindow.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_qt3support_widgets_q3gridview.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_qt3support_widgets_q3header.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_qt3support_widgets_q3mainwindow.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_qt3support_widgets_q3scrollview.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_qt3support_widgets_q3whatsthis.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_qtestlib_qtestcase.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_script_qscriptable.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_script_qscriptclass.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_script_qscriptcontext.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_script_qscriptengine.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_script_qscriptengineagent.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_script_qscriptvalue.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_script_qscriptvalueiterator.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_sql_kernel_qsqldatabase.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_sql_kernel_qsqldriver.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_sql_kernel_qsqlerror.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_sql_kernel_qsqlindex.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_sql_kernel_qsqlquery.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_sql_kernel_qsqlresult.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_sql_models_qsqlquerymodel.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_svg_qgraphicssvgitem.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_xml_dom_qdom.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_xml_sax_qxml.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_xmlpatterns_api_qabstracturiresolver.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_xmlpatterns_api_qabstractxmlforwarditerator.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_xmlpatterns_api_qabstractxmlnodemodel.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_xmlpatterns_api_qabstractxmlreceiver.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_xmlpatterns_api_qsimplexmlnodemodel.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_xmlpatterns_api_qxmlformatter.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_xmlpatterns_api_qxmlname.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_xmlpatterns_api_qxmlquery.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_xmlpatterns_api_qxmlresultitems.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/src_xmlpatterns_api_qxmlserializer.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/tools_assistant_compat_lib_qassistantclient.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/tools_designer_src_lib_extension_default_extensionfactory.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/tools_designer_src_lib_extension_extension.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/tools_designer_src_lib_extension_qextensionmanager.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/tools_designer_src_lib_sdk_abstractformeditor.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/tools_designer_src_lib_sdk_abstractformwindow.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/tools_designer_src_lib_sdk_abstractformwindowcursor.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/tools_designer_src_lib_sdk_abstractformwindowmanager.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/tools_designer_src_lib_sdk_abstractobjectinspector.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/tools_designer_src_lib_sdk_abstractpropertyeditor.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/tools_designer_src_lib_sdk_abstractwidgetbox.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/tools_designer_src_lib_uilib_abstractformbuilder.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/tools_designer_src_lib_uilib_formbuilder.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/tools_patternist_qapplicationargumentparser.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/tools_shared_qtgradienteditor_qtgradientdialog.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/tools_shared_qtpropertybrowser_qtpropertybrowser.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/tools_shared_qtpropertybrowser_qtvariantproperty.cpp create mode 100644 doc/codesnippets/doc/src/snippets/code/tools_shared_qttoolbardialog_qttoolbardialog.cpp create mode 100644 doc/codesnippets/doc/src/snippets/complexpingpong-example.qdoc create mode 100644 doc/codesnippets/doc/src/snippets/console/dbus_pingpong.txt create mode 100644 doc/codesnippets/doc/src/snippets/coordsys/coordsys.cpp create mode 100644 doc/codesnippets/doc/src/snippets/coordsys/coordsys.pro create mode 100644 doc/codesnippets/doc/src/snippets/customstyle/customstyle.cpp create mode 100644 doc/codesnippets/doc/src/snippets/customstyle/customstyle.h create mode 100644 doc/codesnippets/doc/src/snippets/customstyle/customstyle.pro create mode 100644 doc/codesnippets/doc/src/snippets/customstyle/main.cpp create mode 100644 doc/codesnippets/doc/src/snippets/customviewstyle.cpp create mode 100644 doc/codesnippets/doc/src/snippets/dbus-pingpong-example.qdoc create mode 100644 doc/codesnippets/doc/src/snippets/designer/autoconnection/autoconnection.pro create mode 100644 doc/codesnippets/doc/src/snippets/designer/autoconnection/imagedialog.cpp create mode 100644 doc/codesnippets/doc/src/snippets/designer/autoconnection/imagedialog.h create mode 100644 doc/codesnippets/doc/src/snippets/designer/autoconnection/imagedialog.ui create mode 100644 doc/codesnippets/doc/src/snippets/designer/autoconnection/main.cpp create mode 100644 doc/codesnippets/doc/src/snippets/designer/designer.pro create mode 100644 doc/codesnippets/doc/src/snippets/designer/imagedialog/imagedialog.pro create mode 100644 doc/codesnippets/doc/src/snippets/designer/imagedialog/imagedialog.ui create mode 100644 doc/codesnippets/doc/src/snippets/designer/imagedialog/main.cpp create mode 100644 doc/codesnippets/doc/src/snippets/designer/multipleinheritance/imagedialog.cpp create mode 100644 doc/codesnippets/doc/src/snippets/designer/multipleinheritance/imagedialog.h create mode 100644 doc/codesnippets/doc/src/snippets/designer/multipleinheritance/imagedialog.ui create mode 100644 doc/codesnippets/doc/src/snippets/designer/multipleinheritance/main.cpp create mode 100644 doc/codesnippets/doc/src/snippets/designer/multipleinheritance/multipleinheritance.pro create mode 100644 doc/codesnippets/doc/src/snippets/designer/noautoconnection/imagedialog.cpp create mode 100644 doc/codesnippets/doc/src/snippets/designer/noautoconnection/imagedialog.h create mode 100644 doc/codesnippets/doc/src/snippets/designer/noautoconnection/imagedialog.ui create mode 100644 doc/codesnippets/doc/src/snippets/designer/noautoconnection/main.cpp create mode 100644 doc/codesnippets/doc/src/snippets/designer/noautoconnection/noautoconnection.pro create mode 100644 doc/codesnippets/doc/src/snippets/designer/singleinheritance/imagedialog.cpp create mode 100644 doc/codesnippets/doc/src/snippets/designer/singleinheritance/imagedialog.h create mode 100644 doc/codesnippets/doc/src/snippets/designer/singleinheritance/imagedialog.ui create mode 100644 doc/codesnippets/doc/src/snippets/designer/singleinheritance/main.cpp create mode 100644 doc/codesnippets/doc/src/snippets/designer/singleinheritance/singleinheritance.pro create mode 100644 doc/codesnippets/doc/src/snippets/dialogs/dialogs.cpp create mode 100644 doc/codesnippets/doc/src/snippets/dialogs/dialogs.pro create mode 100644 doc/codesnippets/doc/src/snippets/dockwidgets/Resources/modules.html create mode 100644 doc/codesnippets/doc/src/snippets/dockwidgets/Resources/qtcore.html create mode 100644 doc/codesnippets/doc/src/snippets/dockwidgets/Resources/qtgui.html create mode 100644 doc/codesnippets/doc/src/snippets/dockwidgets/Resources/qtnetwork.html create mode 100644 doc/codesnippets/doc/src/snippets/dockwidgets/Resources/qtopengl.html create mode 100644 doc/codesnippets/doc/src/snippets/dockwidgets/Resources/qtsql.html create mode 100644 doc/codesnippets/doc/src/snippets/dockwidgets/Resources/qtxml.html create mode 100644 doc/codesnippets/doc/src/snippets/dockwidgets/Resources/titles.txt create mode 100644 doc/codesnippets/doc/src/snippets/dockwidgets/dockwidgets.pro create mode 100644 doc/codesnippets/doc/src/snippets/dockwidgets/dockwidgets.qrc create mode 100644 doc/codesnippets/doc/src/snippets/dockwidgets/main.cpp create mode 100644 doc/codesnippets/doc/src/snippets/dockwidgets/mainwindow.cpp create mode 100644 doc/codesnippets/doc/src/snippets/dockwidgets/mainwindow.h create mode 100644 doc/codesnippets/doc/src/snippets/draganddrop/draganddrop.pro create mode 100644 doc/codesnippets/doc/src/snippets/draganddrop/dragwidget.cpp create mode 100644 doc/codesnippets/doc/src/snippets/draganddrop/dragwidget.h create mode 100644 doc/codesnippets/doc/src/snippets/draganddrop/main.cpp create mode 100644 doc/codesnippets/doc/src/snippets/draganddrop/mainwindow.cpp create mode 100644 doc/codesnippets/doc/src/snippets/draganddrop/mainwindow.h create mode 100644 doc/codesnippets/doc/src/snippets/dragging/dragging.pro create mode 100644 doc/codesnippets/doc/src/snippets/dragging/images.qrc create mode 100644 doc/codesnippets/doc/src/snippets/dragging/images/file.png create mode 100644 doc/codesnippets/doc/src/snippets/dragging/main.cpp create mode 100644 doc/codesnippets/doc/src/snippets/dragging/mainwindow.cpp create mode 100644 doc/codesnippets/doc/src/snippets/dragging/mainwindow.h create mode 100644 doc/codesnippets/doc/src/snippets/dropactions/dropactions.pro create mode 100644 doc/codesnippets/doc/src/snippets/dropactions/main.cpp create mode 100644 doc/codesnippets/doc/src/snippets/dropactions/window.cpp create mode 100644 doc/codesnippets/doc/src/snippets/dropactions/window.h create mode 100644 doc/codesnippets/doc/src/snippets/droparea.cpp create mode 100644 doc/codesnippets/doc/src/snippets/dropevents/dropevents.pro create mode 100644 doc/codesnippets/doc/src/snippets/dropevents/main.cpp create mode 100644 doc/codesnippets/doc/src/snippets/dropevents/window.cpp create mode 100644 doc/codesnippets/doc/src/snippets/dropevents/window.h create mode 100644 doc/codesnippets/doc/src/snippets/droprectangle/droprectangle.pro create mode 100644 doc/codesnippets/doc/src/snippets/droprectangle/main.cpp create mode 100644 doc/codesnippets/doc/src/snippets/droprectangle/window.cpp create mode 100644 doc/codesnippets/doc/src/snippets/droprectangle/window.h create mode 100644 doc/codesnippets/doc/src/snippets/eventfilters/eventfilters.pro create mode 100644 doc/codesnippets/doc/src/snippets/eventfilters/filterobject.cpp create mode 100644 doc/codesnippets/doc/src/snippets/eventfilters/filterobject.h create mode 100644 doc/codesnippets/doc/src/snippets/eventfilters/main.cpp create mode 100644 doc/codesnippets/doc/src/snippets/events/events.cpp create mode 100644 doc/codesnippets/doc/src/snippets/events/events.pro create mode 100644 doc/codesnippets/doc/src/snippets/explicitlysharedemployee/employee.cpp create mode 100644 doc/codesnippets/doc/src/snippets/explicitlysharedemployee/employee.h create mode 100644 doc/codesnippets/doc/src/snippets/explicitlysharedemployee/explicitlysharedemployee.pro create mode 100644 doc/codesnippets/doc/src/snippets/explicitlysharedemployee/main.cpp create mode 100644 doc/codesnippets/doc/src/snippets/file/file.cpp create mode 100644 doc/codesnippets/doc/src/snippets/file/file.pro create mode 100644 doc/codesnippets/doc/src/snippets/filedialogurls.cpp create mode 100644 doc/codesnippets/doc/src/snippets/fileinfo/fileinfo.pro create mode 100644 doc/codesnippets/doc/src/snippets/fileinfo/main.cpp create mode 100644 doc/codesnippets/doc/src/snippets/graphicssceneadditemsnippet.cpp create mode 100644 doc/codesnippets/doc/src/snippets/i18n-non-qt-class/i18n-non-qt-class.pro create mode 100644 doc/codesnippets/doc/src/snippets/i18n-non-qt-class/main.cpp create mode 100644 doc/codesnippets/doc/src/snippets/i18n-non-qt-class/myclass.cpp create mode 100644 doc/codesnippets/doc/src/snippets/i18n-non-qt-class/myclass.h create mode 100644 doc/codesnippets/doc/src/snippets/i18n-non-qt-class/myclass.ts create mode 100644 doc/codesnippets/doc/src/snippets/i18n-non-qt-class/resources.qrc create mode 100644 doc/codesnippets/doc/src/snippets/i18n-non-qt-class/translations/i18n-non-qt-class_en.ts create mode 100644 doc/codesnippets/doc/src/snippets/i18n-non-qt-class/translations/i18n-non-qt-class_fr.ts create mode 100644 doc/codesnippets/doc/src/snippets/image/image.cpp create mode 100644 doc/codesnippets/doc/src/snippets/image/image.pro create mode 100644 doc/codesnippets/doc/src/snippets/image/supportedformat.cpp create mode 100644 doc/codesnippets/doc/src/snippets/inherited-slot/button.cpp create mode 100644 doc/codesnippets/doc/src/snippets/inherited-slot/button.h create mode 100644 doc/codesnippets/doc/src/snippets/inherited-slot/inherited-slot.pro create mode 100644 doc/codesnippets/doc/src/snippets/inherited-slot/main.cpp create mode 100644 doc/codesnippets/doc/src/snippets/itemselection/itemselection.pro create mode 100644 doc/codesnippets/doc/src/snippets/itemselection/main.cpp create mode 100644 doc/codesnippets/doc/src/snippets/itemselection/model.cpp create mode 100644 doc/codesnippets/doc/src/snippets/itemselection/model.h create mode 100644 doc/codesnippets/doc/src/snippets/javastyle.cpp create mode 100644 doc/codesnippets/doc/src/snippets/layouts/layouts.cpp create mode 100644 doc/codesnippets/doc/src/snippets/layouts/layouts.pro create mode 100644 doc/codesnippets/doc/src/snippets/mainwindowsnippet.cpp create mode 100644 doc/codesnippets/doc/src/snippets/matrix/matrix.cpp create mode 100644 doc/codesnippets/doc/src/snippets/matrix/matrix.pro create mode 100644 doc/codesnippets/doc/src/snippets/mdiareasnippets.cpp create mode 100644 doc/codesnippets/doc/src/snippets/medianodesnippet.cpp create mode 100644 doc/codesnippets/doc/src/snippets/moc/main.cpp create mode 100644 doc/codesnippets/doc/src/snippets/moc/moc.pro create mode 100644 doc/codesnippets/doc/src/snippets/moc/myclass1.h create mode 100644 doc/codesnippets/doc/src/snippets/moc/myclass2.h create mode 100644 doc/codesnippets/doc/src/snippets/moc/myclass3.h create mode 100644 doc/codesnippets/doc/src/snippets/modelview-subclasses/main.cpp create mode 100644 doc/codesnippets/doc/src/snippets/modelview-subclasses/model.cpp create mode 100644 doc/codesnippets/doc/src/snippets/modelview-subclasses/model.h create mode 100644 doc/codesnippets/doc/src/snippets/modelview-subclasses/view.cpp create mode 100644 doc/codesnippets/doc/src/snippets/modelview-subclasses/view.h create mode 100644 doc/codesnippets/doc/src/snippets/modelview-subclasses/window.cpp create mode 100644 doc/codesnippets/doc/src/snippets/modelview-subclasses/window.h create mode 100644 doc/codesnippets/doc/src/snippets/myscrollarea.cpp create mode 100644 doc/codesnippets/doc/src/snippets/network/tcpwait.cpp create mode 100644 doc/codesnippets/doc/src/snippets/ntfsp.cpp create mode 100644 doc/codesnippets/doc/src/snippets/painterpath/painterpath.cpp create mode 100644 doc/codesnippets/doc/src/snippets/painterpath/painterpath.pro create mode 100644 doc/codesnippets/doc/src/snippets/patternist/anyHTMLElement.xq create mode 100644 doc/codesnippets/doc/src/snippets/patternist/anyXLinkAttribute.xq create mode 100644 doc/codesnippets/doc/src/snippets/patternist/bracesIncluded.xq create mode 100644 doc/codesnippets/doc/src/snippets/patternist/bracesIncludedResult.xml create mode 100644 doc/codesnippets/doc/src/snippets/patternist/bracesOmitted.xq create mode 100644 doc/codesnippets/doc/src/snippets/patternist/bracesOmittedResult.xml create mode 100644 doc/codesnippets/doc/src/snippets/patternist/computedTreeFragment.xq create mode 100644 doc/codesnippets/doc/src/snippets/patternist/copyAttribute.xq create mode 100644 doc/codesnippets/doc/src/snippets/patternist/copyID.xq create mode 100644 doc/codesnippets/doc/src/snippets/patternist/directTreeFragment.xq create mode 100644 doc/codesnippets/doc/src/snippets/patternist/doc.txt create mode 100644 doc/codesnippets/doc/src/snippets/patternist/docPlainHTML.xq create mode 100644 doc/codesnippets/doc/src/snippets/patternist/docPlainHTML2.xq create mode 100644 doc/codesnippets/doc/src/snippets/patternist/embedDataInXHTML.xq create mode 100644 doc/codesnippets/doc/src/snippets/patternist/embedDataInXHTML2.xq create mode 100644 doc/codesnippets/doc/src/snippets/patternist/emptyParagraphs.xq create mode 100644 doc/codesnippets/doc/src/snippets/patternist/escapeCurlyBraces.xq create mode 100644 doc/codesnippets/doc/src/snippets/patternist/escapeStringLiterals.xml create mode 100644 doc/codesnippets/doc/src/snippets/patternist/escapeStringLiterals.xq create mode 100644 doc/codesnippets/doc/src/snippets/patternist/expressionInsideAttribute.xq create mode 100644 doc/codesnippets/doc/src/snippets/patternist/filterOnPath.xq create mode 100644 doc/codesnippets/doc/src/snippets/patternist/filterOnStep.xq create mode 100644 doc/codesnippets/doc/src/snippets/patternist/firstParagraph.xq create mode 100644 doc/codesnippets/doc/src/snippets/patternist/fnStringOnAttribute.xq create mode 100644 doc/codesnippets/doc/src/snippets/patternist/forClause.xq create mode 100644 doc/codesnippets/doc/src/snippets/patternist/forClause2.xq create mode 100644 doc/codesnippets/doc/src/snippets/patternist/forClauseOnFeed.xq create mode 100644 doc/codesnippets/doc/src/snippets/patternist/indented.xml create mode 100644 doc/codesnippets/doc/src/snippets/patternist/introAcneRemover.xq create mode 100644 doc/codesnippets/doc/src/snippets/patternist/introExample2.xq create mode 100644 doc/codesnippets/doc/src/snippets/patternist/introFileHierarchy.xml create mode 100644 doc/codesnippets/doc/src/snippets/patternist/introNavigateFS.xq create mode 100644 doc/codesnippets/doc/src/snippets/patternist/introductionExample.xq create mode 100644 doc/codesnippets/doc/src/snippets/patternist/invalidLetOrderBy.xq create mode 100644 doc/codesnippets/doc/src/snippets/patternist/items.xq create mode 100644 doc/codesnippets/doc/src/snippets/patternist/letOrderBy.xq create mode 100644 doc/codesnippets/doc/src/snippets/patternist/literalsAndOperators.xq create mode 100644 doc/codesnippets/doc/src/snippets/patternist/mobeyDick.xml create mode 100644 doc/codesnippets/doc/src/snippets/patternist/nextLastParagraph.xq create mode 100644 doc/codesnippets/doc/src/snippets/patternist/nodeConstructorsAreExpressions.xq create mode 100644 doc/codesnippets/doc/src/snippets/patternist/nodeConstructorsInPaths.xq create mode 100644 doc/codesnippets/doc/src/snippets/patternist/nodeTestChildElement.xq create mode 100644 doc/codesnippets/doc/src/snippets/patternist/notIndented.xml create mode 100644 doc/codesnippets/doc/src/snippets/patternist/oneElementConstructor.xq create mode 100644 doc/codesnippets/doc/src/snippets/patternist/paragraphsExceptTheFiveFirst.xq create mode 100644 doc/codesnippets/doc/src/snippets/patternist/paragraphsWithTables.xq create mode 100644 doc/codesnippets/doc/src/snippets/patternist/pathAB.xq create mode 100644 doc/codesnippets/doc/src/snippets/patternist/pathsAllParagraphs.xq create mode 100644 doc/codesnippets/doc/src/snippets/patternist/simpleHTML.xq create mode 100644 doc/codesnippets/doc/src/snippets/patternist/simpleXHTML.xq create mode 100644 doc/codesnippets/doc/src/snippets/patternist/svgDocumentElement.xml create mode 100644 doc/codesnippets/doc/src/snippets/patternist/tablesInParagraphs.xq create mode 100644 doc/codesnippets/doc/src/snippets/patternist/twoSVGElements.xq create mode 100644 doc/codesnippets/doc/src/snippets/patternist/xmlStylesheet.xq create mode 100644 doc/codesnippets/doc/src/snippets/patternist/xsBooleanTrue.xq create mode 100644 doc/codesnippets/doc/src/snippets/patternist/xsvgDocumentElement.xml create mode 100644 doc/codesnippets/doc/src/snippets/persistentindexes/main.cpp create mode 100644 doc/codesnippets/doc/src/snippets/persistentindexes/mainwindow.cpp create mode 100644 doc/codesnippets/doc/src/snippets/persistentindexes/mainwindow.h create mode 100644 doc/codesnippets/doc/src/snippets/persistentindexes/model.cpp create mode 100644 doc/codesnippets/doc/src/snippets/persistentindexes/model.h create mode 100644 doc/codesnippets/doc/src/snippets/persistentindexes/persistentindexes.pro create mode 100644 doc/codesnippets/doc/src/snippets/phonon.cpp create mode 100644 doc/codesnippets/doc/src/snippets/phonon/samplebackend/main.cpp create mode 100644 doc/codesnippets/doc/src/snippets/phononeffectparameter.cpp create mode 100644 doc/codesnippets/doc/src/snippets/phononobjectdescription.cpp create mode 100644 doc/codesnippets/doc/src/snippets/picture/picture.cpp create mode 100644 doc/codesnippets/doc/src/snippets/picture/picture.pro create mode 100644 doc/codesnippets/doc/src/snippets/plaintextlayout/main.cpp create mode 100644 doc/codesnippets/doc/src/snippets/plaintextlayout/plaintextlayout.pro create mode 100644 doc/codesnippets/doc/src/snippets/plaintextlayout/window.cpp create mode 100644 doc/codesnippets/doc/src/snippets/plaintextlayout/window.h create mode 100644 doc/codesnippets/doc/src/snippets/pointer/pointer.cpp create mode 100644 doc/codesnippets/doc/src/snippets/polygon/polygon.cpp create mode 100644 doc/codesnippets/doc/src/snippets/polygon/polygon.pro create mode 100644 doc/codesnippets/doc/src/snippets/porting4-dropevents/main.cpp create mode 100644 doc/codesnippets/doc/src/snippets/porting4-dropevents/porting4-dropevents.pro create mode 100644 doc/codesnippets/doc/src/snippets/porting4-dropevents/window.cpp create mode 100644 doc/codesnippets/doc/src/snippets/porting4-dropevents/window.h create mode 100644 doc/codesnippets/doc/src/snippets/printing-qprinter/errors.cpp create mode 100644 doc/codesnippets/doc/src/snippets/printing-qprinter/main.cpp create mode 100644 doc/codesnippets/doc/src/snippets/printing-qprinter/object.cpp create mode 100644 doc/codesnippets/doc/src/snippets/printing-qprinter/object.h create mode 100644 doc/codesnippets/doc/src/snippets/printing-qprinter/printing-qprinter.pro create mode 100644 doc/codesnippets/doc/src/snippets/process/process.cpp create mode 100644 doc/codesnippets/doc/src/snippets/process/process.pro create mode 100644 doc/codesnippets/doc/src/snippets/qabstractsliderisnippet.cpp create mode 100644 doc/codesnippets/doc/src/snippets/qcalendarwidget/main.cpp create mode 100644 doc/codesnippets/doc/src/snippets/qcalendarwidget/qcalendarwidget.pro create mode 100644 doc/codesnippets/doc/src/snippets/qcolumnview/main.cpp create mode 100644 doc/codesnippets/doc/src/snippets/qcolumnview/qcolumnview.pro create mode 100644 doc/codesnippets/doc/src/snippets/qdbusextratypes/qdbusextratypes.cpp create mode 100644 doc/codesnippets/doc/src/snippets/qdbusextratypes/qdbusextratypes.pro create mode 100644 doc/codesnippets/doc/src/snippets/qdebug/qdebug.pro create mode 100644 doc/codesnippets/doc/src/snippets/qdebug/qdebugsnippet.cpp create mode 100644 doc/codesnippets/doc/src/snippets/qdir-filepaths/main.cpp create mode 100644 doc/codesnippets/doc/src/snippets/qdir-filepaths/qdir-filepaths.pro create mode 100644 doc/codesnippets/doc/src/snippets/qdir-listfiles/main.cpp create mode 100644 doc/codesnippets/doc/src/snippets/qdir-listfiles/qdir-listfiles.pro create mode 100644 doc/codesnippets/doc/src/snippets/qdir-namefilters/main.cpp create mode 100644 doc/codesnippets/doc/src/snippets/qdir-namefilters/qdir-namefilters.pro create mode 100644 doc/codesnippets/doc/src/snippets/qfontdatabase/main.cpp create mode 100644 doc/codesnippets/doc/src/snippets/qfontdatabase/qfontdatabase.pro create mode 100644 doc/codesnippets/doc/src/snippets/qgl-namespace/main.cpp create mode 100644 doc/codesnippets/doc/src/snippets/qgl-namespace/qgl-namespace.pro create mode 100644 doc/codesnippets/doc/src/snippets/qlabel/main.cpp create mode 100644 doc/codesnippets/doc/src/snippets/qlabel/qlabel.pro create mode 100644 doc/codesnippets/doc/src/snippets/qlineargradient/main.cpp create mode 100644 doc/codesnippets/doc/src/snippets/qlineargradient/paintwidget.cpp create mode 100644 doc/codesnippets/doc/src/snippets/qlineargradient/paintwidget.h create mode 100644 doc/codesnippets/doc/src/snippets/qlineargradient/qlineargradient.pro create mode 100644 doc/codesnippets/doc/src/snippets/qlistview-dnd/main.cpp create mode 100644 doc/codesnippets/doc/src/snippets/qlistview-dnd/mainwindow.cpp create mode 100644 doc/codesnippets/doc/src/snippets/qlistview-dnd/mainwindow.h create mode 100644 doc/codesnippets/doc/src/snippets/qlistview-dnd/model.cpp create mode 100644 doc/codesnippets/doc/src/snippets/qlistview-dnd/model.h create mode 100644 doc/codesnippets/doc/src/snippets/qlistview-dnd/qlistview-dnd.pro create mode 100644 doc/codesnippets/doc/src/snippets/qlistview-using/main.cpp create mode 100644 doc/codesnippets/doc/src/snippets/qlistview-using/mainwindow.cpp create mode 100644 doc/codesnippets/doc/src/snippets/qlistview-using/mainwindow.h create mode 100644 doc/codesnippets/doc/src/snippets/qlistview-using/model.cpp create mode 100644 doc/codesnippets/doc/src/snippets/qlistview-using/model.h create mode 100644 doc/codesnippets/doc/src/snippets/qlistview-using/qlistview-using.pro create mode 100644 doc/codesnippets/doc/src/snippets/qlistwidget-dnd/main.cpp create mode 100644 doc/codesnippets/doc/src/snippets/qlistwidget-dnd/mainwindow.cpp create mode 100644 doc/codesnippets/doc/src/snippets/qlistwidget-dnd/mainwindow.h create mode 100644 doc/codesnippets/doc/src/snippets/qlistwidget-dnd/qlistwidget-dnd.pro create mode 100644 doc/codesnippets/doc/src/snippets/qlistwidget-using/main.cpp create mode 100644 doc/codesnippets/doc/src/snippets/qlistwidget-using/mainwindow.cpp create mode 100644 doc/codesnippets/doc/src/snippets/qlistwidget-using/mainwindow.h create mode 100644 doc/codesnippets/doc/src/snippets/qlistwidget-using/qlistwidget-using.pro create mode 100644 doc/codesnippets/doc/src/snippets/qmacnativewidget/main.mm create mode 100644 doc/codesnippets/doc/src/snippets/qmacnativewidget/qmacnativewidget.pro create mode 100644 doc/codesnippets/doc/src/snippets/qmake/comments.pro create mode 100644 doc/codesnippets/doc/src/snippets/qmake/configscopes.pro create mode 100644 doc/codesnippets/doc/src/snippets/qmake/debug_and_release.pro create mode 100644 doc/codesnippets/doc/src/snippets/qmake/delegate.h create mode 100644 doc/codesnippets/doc/src/snippets/qmake/dereferencing.pro create mode 100644 doc/codesnippets/doc/src/snippets/qmake/destdir.pro create mode 100644 doc/codesnippets/doc/src/snippets/qmake/dirname.pro create mode 100644 doc/codesnippets/doc/src/snippets/qmake/environment.pro create mode 100644 doc/codesnippets/doc/src/snippets/qmake/functions.pro create mode 100644 doc/codesnippets/doc/src/snippets/qmake/include.pro create mode 100644 doc/codesnippets/doc/src/snippets/qmake/main.cpp create mode 100644 doc/codesnippets/doc/src/snippets/qmake/model.cpp create mode 100644 doc/codesnippets/doc/src/snippets/qmake/model.h create mode 100644 doc/codesnippets/doc/src/snippets/qmake/other.pro create mode 100644 doc/codesnippets/doc/src/snippets/qmake/paintwidget_unix.cpp create mode 100644 doc/codesnippets/doc/src/snippets/qmake/project_location.pro create mode 100644 doc/codesnippets/doc/src/snippets/qmake/qtconfiguration.pro create mode 100644 doc/codesnippets/doc/src/snippets/qmake/quoting.pro create mode 100644 doc/codesnippets/doc/src/snippets/qmake/replace.pro create mode 100644 doc/codesnippets/doc/src/snippets/qmake/replacefunction.pro create mode 100644 doc/codesnippets/doc/src/snippets/qmake/scopes.pro create mode 100644 doc/codesnippets/doc/src/snippets/qmake/shared_or_static.pro create mode 100644 doc/codesnippets/doc/src/snippets/qmake/specifications.pro create mode 100644 doc/codesnippets/doc/src/snippets/qmake/testfunction.pro create mode 100644 doc/codesnippets/doc/src/snippets/qmake/variables.pro create mode 100644 doc/codesnippets/doc/src/snippets/qmake/view.h create mode 100644 doc/codesnippets/doc/src/snippets/qmetaobject-invokable/main.cpp create mode 100644 doc/codesnippets/doc/src/snippets/qmetaobject-invokable/qmetaobject-invokable.pro create mode 100644 doc/codesnippets/doc/src/snippets/qmetaobject-invokable/window.cpp create mode 100644 doc/codesnippets/doc/src/snippets/qmetaobject-invokable/window.h create mode 100644 doc/codesnippets/doc/src/snippets/qprocess-environment/main.cpp create mode 100644 doc/codesnippets/doc/src/snippets/qprocess-environment/qprocess-environment.pro create mode 100644 doc/codesnippets/doc/src/snippets/qprocess/qprocess-simpleexecution.cpp create mode 100644 doc/codesnippets/doc/src/snippets/qprocess/qprocess.pro create mode 100644 doc/codesnippets/doc/src/snippets/qsignalmapper/buttonwidget.cpp create mode 100644 doc/codesnippets/doc/src/snippets/qsignalmapper/buttonwidget.h create mode 100644 doc/codesnippets/doc/src/snippets/qsignalmapper/main.cpp create mode 100644 doc/codesnippets/doc/src/snippets/qsignalmapper/mainwindow.h create mode 100644 doc/codesnippets/doc/src/snippets/qsignalmapper/qsignalmapper.pro create mode 100644 doc/codesnippets/doc/src/snippets/qsortfilterproxymodel-details/main.cpp create mode 100644 doc/codesnippets/doc/src/snippets/qsortfilterproxymodel-details/qsortfilterproxymodel-details.pro create mode 100644 doc/codesnippets/doc/src/snippets/qsortfilterproxymodel/main.cpp create mode 100644 doc/codesnippets/doc/src/snippets/qsortfilterproxymodel/qsortfilterproxymodel.pro create mode 100644 doc/codesnippets/doc/src/snippets/qsplashscreen/main.cpp create mode 100644 doc/codesnippets/doc/src/snippets/qsplashscreen/mainwindow.cpp create mode 100644 doc/codesnippets/doc/src/snippets/qsplashscreen/mainwindow.h create mode 100644 doc/codesnippets/doc/src/snippets/qsplashscreen/qsplashscreen.pro create mode 100644 doc/codesnippets/doc/src/snippets/qsplashscreen/qsplashscreen.qrc create mode 100644 doc/codesnippets/doc/src/snippets/qsplashscreen/splash.png create mode 100644 doc/codesnippets/doc/src/snippets/qsql-namespace/main.cpp create mode 100644 doc/codesnippets/doc/src/snippets/qsql-namespace/qsql-namespace.pro create mode 100644 doc/codesnippets/doc/src/snippets/qstack/main.cpp create mode 100644 doc/codesnippets/doc/src/snippets/qstack/qstack.pro create mode 100644 doc/codesnippets/doc/src/snippets/qstackedlayout/main.cpp create mode 100644 doc/codesnippets/doc/src/snippets/qstackedlayout/qstackedlayout.pro create mode 100644 doc/codesnippets/doc/src/snippets/qstackedwidget/main.cpp create mode 100644 doc/codesnippets/doc/src/snippets/qstackedwidget/qstackedwidget.pro create mode 100644 doc/codesnippets/doc/src/snippets/qstandarditemmodel/main.cpp create mode 100644 doc/codesnippets/doc/src/snippets/qstandarditemmodel/qstandarditemmodel.pro create mode 100644 doc/codesnippets/doc/src/snippets/qstatustipevent/main.cpp create mode 100644 doc/codesnippets/doc/src/snippets/qstatustipevent/qstatustipevent.pro create mode 100644 doc/codesnippets/doc/src/snippets/qstring/main.cpp create mode 100644 doc/codesnippets/doc/src/snippets/qstring/qstring.pro create mode 100644 doc/codesnippets/doc/src/snippets/qstringlist/main.cpp create mode 100644 doc/codesnippets/doc/src/snippets/qstringlist/qstringlist.pro create mode 100644 doc/codesnippets/doc/src/snippets/qstringlistmodel/main.cpp create mode 100644 doc/codesnippets/doc/src/snippets/qstringlistmodel/qstringlistmodel.pro create mode 100644 doc/codesnippets/doc/src/snippets/qstyleoption/main.cpp create mode 100644 doc/codesnippets/doc/src/snippets/qstyleoption/qstyleoption.pro create mode 100644 doc/codesnippets/doc/src/snippets/qstyleplugin/main.cpp create mode 100644 doc/codesnippets/doc/src/snippets/qstyleplugin/qstyleplugin.pro create mode 100644 doc/codesnippets/doc/src/snippets/qsvgwidget/main.cpp create mode 100644 doc/codesnippets/doc/src/snippets/qsvgwidget/qsvgwidget.pro create mode 100644 doc/codesnippets/doc/src/snippets/qsvgwidget/qsvgwidget.qrc create mode 100644 doc/codesnippets/doc/src/snippets/qsvgwidget/spheres.svg create mode 100644 doc/codesnippets/doc/src/snippets/qsvgwidget/sunflower.svg create mode 100644 doc/codesnippets/doc/src/snippets/qt-namespace/main.cpp create mode 100644 doc/codesnippets/doc/src/snippets/qt-namespace/qt-namespace.pro create mode 100644 doc/codesnippets/doc/src/snippets/qtablewidget-dnd/Images/cubed.png create mode 100644 doc/codesnippets/doc/src/snippets/qtablewidget-dnd/Images/squared.png create mode 100644 doc/codesnippets/doc/src/snippets/qtablewidget-dnd/images.qrc create mode 100644 doc/codesnippets/doc/src/snippets/qtablewidget-dnd/main.cpp create mode 100644 doc/codesnippets/doc/src/snippets/qtablewidget-dnd/mainwindow.cpp create mode 100644 doc/codesnippets/doc/src/snippets/qtablewidget-dnd/mainwindow.h create mode 100644 doc/codesnippets/doc/src/snippets/qtablewidget-dnd/qtablewidget-dnd.pro create mode 100644 doc/codesnippets/doc/src/snippets/qtablewidget-resizing/main.cpp create mode 100644 doc/codesnippets/doc/src/snippets/qtablewidget-resizing/mainwindow.cpp create mode 100644 doc/codesnippets/doc/src/snippets/qtablewidget-resizing/mainwindow.h create mode 100644 doc/codesnippets/doc/src/snippets/qtablewidget-resizing/qtablewidget-resizing.pro create mode 100644 doc/codesnippets/doc/src/snippets/qtablewidget-using/Images/cubed.png create mode 100644 doc/codesnippets/doc/src/snippets/qtablewidget-using/Images/squared.png create mode 100644 doc/codesnippets/doc/src/snippets/qtablewidget-using/images.qrc create mode 100644 doc/codesnippets/doc/src/snippets/qtablewidget-using/main.cpp create mode 100644 doc/codesnippets/doc/src/snippets/qtablewidget-using/mainwindow.cpp create mode 100644 doc/codesnippets/doc/src/snippets/qtablewidget-using/mainwindow.h create mode 100644 doc/codesnippets/doc/src/snippets/qtablewidget-using/qtablewidget-using.pro create mode 100644 doc/codesnippets/doc/src/snippets/qtcast/qtcast.cpp create mode 100644 doc/codesnippets/doc/src/snippets/qtcast/qtcast.h create mode 100644 doc/codesnippets/doc/src/snippets/qtcast/qtcast.pro create mode 100644 doc/codesnippets/doc/src/snippets/qtest-namespace/main.cpp create mode 100644 doc/codesnippets/doc/src/snippets/qtest-namespace/qtest-namespace.pro create mode 100644 doc/codesnippets/doc/src/snippets/qtreeview-dnd/dragdropmodel.cpp create mode 100644 doc/codesnippets/doc/src/snippets/qtreeview-dnd/dragdropmodel.h create mode 100644 doc/codesnippets/doc/src/snippets/qtreeview-dnd/main.cpp create mode 100644 doc/codesnippets/doc/src/snippets/qtreeview-dnd/mainwindow.cpp create mode 100644 doc/codesnippets/doc/src/snippets/qtreeview-dnd/mainwindow.h create mode 100644 doc/codesnippets/doc/src/snippets/qtreeview-dnd/qtreeview-dnd.pro create mode 100644 doc/codesnippets/doc/src/snippets/qtreeview-dnd/treeitem.cpp create mode 100644 doc/codesnippets/doc/src/snippets/qtreeview-dnd/treeitem.h create mode 100644 doc/codesnippets/doc/src/snippets/qtreeview-dnd/treemodel.cpp create mode 100644 doc/codesnippets/doc/src/snippets/qtreeview-dnd/treemodel.h create mode 100644 doc/codesnippets/doc/src/snippets/qtreewidget-using/main.cpp create mode 100644 doc/codesnippets/doc/src/snippets/qtreewidget-using/mainwindow.cpp create mode 100644 doc/codesnippets/doc/src/snippets/qtreewidget-using/mainwindow.h create mode 100644 doc/codesnippets/doc/src/snippets/qtreewidget-using/qtreewidget-using.pro create mode 100644 doc/codesnippets/doc/src/snippets/qtreewidgetitemiterator-using/main.cpp create mode 100644 doc/codesnippets/doc/src/snippets/qtreewidgetitemiterator-using/mainwindow.cpp create mode 100644 doc/codesnippets/doc/src/snippets/qtreewidgetitemiterator-using/mainwindow.h create mode 100644 doc/codesnippets/doc/src/snippets/qtreewidgetitemiterator-using/qtreewidgetitemiterator-using.pro create mode 100644 doc/codesnippets/doc/src/snippets/qtscript/evaluation/evaluation.pro create mode 100644 doc/codesnippets/doc/src/snippets/qtscript/evaluation/main.cpp create mode 100644 doc/codesnippets/doc/src/snippets/qtscript/registeringobjects/main.cpp create mode 100644 doc/codesnippets/doc/src/snippets/qtscript/registeringobjects/myobject.cpp create mode 100644 doc/codesnippets/doc/src/snippets/qtscript/registeringobjects/myobject.h create mode 100644 doc/codesnippets/doc/src/snippets/qtscript/registeringobjects/registeringobjects.pro create mode 100644 doc/codesnippets/doc/src/snippets/qtscript/registeringvalues/main.cpp create mode 100644 doc/codesnippets/doc/src/snippets/qtscript/registeringvalues/registeringvalues.pro create mode 100644 doc/codesnippets/doc/src/snippets/qtscript/scriptedslot/main.cpp create mode 100644 doc/codesnippets/doc/src/snippets/qtscript/scriptedslot/object.js create mode 100644 doc/codesnippets/doc/src/snippets/qtscript/scriptedslot/scriptedslot.pro create mode 100644 doc/codesnippets/doc/src/snippets/qtscript/scriptedslot/scriptedslot.qrc create mode 100644 doc/codesnippets/doc/src/snippets/quiloader/main.cpp create mode 100644 doc/codesnippets/doc/src/snippets/quiloader/myform.ui create mode 100644 doc/codesnippets/doc/src/snippets/quiloader/mywidget.cpp create mode 100644 doc/codesnippets/doc/src/snippets/quiloader/mywidget.h create mode 100644 doc/codesnippets/doc/src/snippets/quiloader/mywidget.qrc create mode 100644 doc/codesnippets/doc/src/snippets/quiloader/quiloader.pro create mode 100644 doc/codesnippets/doc/src/snippets/qx11embedcontainer/main.cpp create mode 100644 doc/codesnippets/doc/src/snippets/qx11embedcontainer/qx11embedcontainer.pro create mode 100644 doc/codesnippets/doc/src/snippets/qx11embedwidget/embedwidget.cpp create mode 100644 doc/codesnippets/doc/src/snippets/qx11embedwidget/embedwidget.h create mode 100644 doc/codesnippets/doc/src/snippets/qx11embedwidget/main.cpp create mode 100644 doc/codesnippets/doc/src/snippets/qx11embedwidget/qx11embedwidget.pro create mode 100644 doc/codesnippets/doc/src/snippets/qxmlquery/bindingExample.cpp create mode 100644 doc/codesnippets/doc/src/snippets/qxmlstreamwriter/main.cpp create mode 100644 doc/codesnippets/doc/src/snippets/qxmlstreamwriter/qxmlstreamwriter.pro create mode 100644 doc/codesnippets/doc/src/snippets/reading-selections/main.cpp create mode 100644 doc/codesnippets/doc/src/snippets/reading-selections/model.cpp create mode 100644 doc/codesnippets/doc/src/snippets/reading-selections/model.h create mode 100644 doc/codesnippets/doc/src/snippets/reading-selections/reading-selections.pro create mode 100644 doc/codesnippets/doc/src/snippets/reading-selections/window.cpp create mode 100644 doc/codesnippets/doc/src/snippets/reading-selections/window.h create mode 100644 doc/codesnippets/doc/src/snippets/scribe-overview/main.cpp create mode 100644 doc/codesnippets/doc/src/snippets/scribe-overview/scribe-overview.pro create mode 100644 doc/codesnippets/doc/src/snippets/scriptdebugger.cpp create mode 100644 doc/codesnippets/doc/src/snippets/seekslider.cpp create mode 100644 doc/codesnippets/doc/src/snippets/separations/finalwidget.cpp create mode 100644 doc/codesnippets/doc/src/snippets/separations/finalwidget.h create mode 100644 doc/codesnippets/doc/src/snippets/separations/main.cpp create mode 100644 doc/codesnippets/doc/src/snippets/separations/screenwidget.cpp create mode 100644 doc/codesnippets/doc/src/snippets/separations/screenwidget.h create mode 100644 doc/codesnippets/doc/src/snippets/separations/separations.pro create mode 100644 doc/codesnippets/doc/src/snippets/separations/separations.qdoc create mode 100644 doc/codesnippets/doc/src/snippets/separations/viewer.cpp create mode 100644 doc/codesnippets/doc/src/snippets/separations/viewer.h create mode 100644 doc/codesnippets/doc/src/snippets/settings/settings.cpp create mode 100644 doc/codesnippets/doc/src/snippets/shareddirmodel/main.cpp create mode 100644 doc/codesnippets/doc/src/snippets/shareddirmodel/shareddirmodel.pro create mode 100644 doc/codesnippets/doc/src/snippets/sharedemployee/employee.cpp create mode 100644 doc/codesnippets/doc/src/snippets/sharedemployee/employee.h create mode 100644 doc/codesnippets/doc/src/snippets/sharedemployee/main.cpp create mode 100644 doc/codesnippets/doc/src/snippets/sharedemployee/sharedemployee.pro create mode 100644 doc/codesnippets/doc/src/snippets/sharedtablemodel/main.cpp create mode 100644 doc/codesnippets/doc/src/snippets/sharedtablemodel/model.cpp create mode 100644 doc/codesnippets/doc/src/snippets/sharedtablemodel/model.h create mode 100644 doc/codesnippets/doc/src/snippets/sharedtablemodel/sharedtablemodel.pro create mode 100644 doc/codesnippets/doc/src/snippets/signalmapper/accountsfile.txt create mode 100644 doc/codesnippets/doc/src/snippets/signalmapper/filereader.cpp create mode 100644 doc/codesnippets/doc/src/snippets/signalmapper/filereader.h create mode 100644 doc/codesnippets/doc/src/snippets/signalmapper/main.cpp create mode 100644 doc/codesnippets/doc/src/snippets/signalmapper/reportfile.txt create mode 100644 doc/codesnippets/doc/src/snippets/signalmapper/signalmapper.pro create mode 100644 doc/codesnippets/doc/src/snippets/signalmapper/taxfile.txt create mode 100644 doc/codesnippets/doc/src/snippets/signalsandslots/lcdnumber.cpp create mode 100644 doc/codesnippets/doc/src/snippets/signalsandslots/lcdnumber.h create mode 100644 doc/codesnippets/doc/src/snippets/signalsandslots/signalsandslots.cpp create mode 100644 doc/codesnippets/doc/src/snippets/signalsandslots/signalsandslots.h create mode 100644 doc/codesnippets/doc/src/snippets/simplemodel-use/main.cpp create mode 100644 doc/codesnippets/doc/src/snippets/simplemodel-use/simplemodel-use.pro create mode 100644 doc/codesnippets/doc/src/snippets/snippets.pro create mode 100644 doc/codesnippets/doc/src/snippets/splitter/splitter.cpp create mode 100644 doc/codesnippets/doc/src/snippets/splitter/splitter.pro create mode 100644 doc/codesnippets/doc/src/snippets/splitterhandle/main.cpp create mode 100644 doc/codesnippets/doc/src/snippets/splitterhandle/splitter.cpp create mode 100644 doc/codesnippets/doc/src/snippets/splitterhandle/splitter.h create mode 100644 doc/codesnippets/doc/src/snippets/splitterhandle/splitterhandle.pro create mode 100644 doc/codesnippets/doc/src/snippets/sqldatabase/sqldatabase.cpp create mode 100644 doc/codesnippets/doc/src/snippets/sqldatabase/sqldatabase.pro create mode 100644 doc/codesnippets/doc/src/snippets/streaming/main.cpp create mode 100644 doc/codesnippets/doc/src/snippets/streaming/streaming.pro create mode 100644 doc/codesnippets/doc/src/snippets/stringlistmodel/main.cpp create mode 100644 doc/codesnippets/doc/src/snippets/stringlistmodel/model.cpp create mode 100644 doc/codesnippets/doc/src/snippets/stringlistmodel/model.h create mode 100644 doc/codesnippets/doc/src/snippets/stringlistmodel/stringlistmodel.pro create mode 100644 doc/codesnippets/doc/src/snippets/styles/styles.cpp create mode 100644 doc/codesnippets/doc/src/snippets/stylesheet/common-mistakes.cpp create mode 100644 doc/codesnippets/doc/src/snippets/textblock-formats/main.cpp create mode 100644 doc/codesnippets/doc/src/snippets/textblock-formats/textblock-formats.pro create mode 100644 doc/codesnippets/doc/src/snippets/textblock-fragments/main.cpp create mode 100644 doc/codesnippets/doc/src/snippets/textblock-fragments/mainwindow.cpp create mode 100644 doc/codesnippets/doc/src/snippets/textblock-fragments/mainwindow.h create mode 100644 doc/codesnippets/doc/src/snippets/textblock-fragments/textblock-fragments.pro create mode 100644 doc/codesnippets/doc/src/snippets/textblock-fragments/xmlwriter.cpp create mode 100644 doc/codesnippets/doc/src/snippets/textblock-fragments/xmlwriter.h create mode 100644 doc/codesnippets/doc/src/snippets/textdocument-blocks/main.cpp create mode 100644 doc/codesnippets/doc/src/snippets/textdocument-blocks/mainwindow.cpp create mode 100644 doc/codesnippets/doc/src/snippets/textdocument-blocks/mainwindow.h create mode 100644 doc/codesnippets/doc/src/snippets/textdocument-blocks/textdocument-blocks.pro create mode 100644 doc/codesnippets/doc/src/snippets/textdocument-blocks/xmlwriter.cpp create mode 100644 doc/codesnippets/doc/src/snippets/textdocument-blocks/xmlwriter.h create mode 100644 doc/codesnippets/doc/src/snippets/textdocument-charformats/main.cpp create mode 100644 doc/codesnippets/doc/src/snippets/textdocument-charformats/textdocument-charformats.pro create mode 100644 doc/codesnippets/doc/src/snippets/textdocument-css/main.cpp create mode 100644 doc/codesnippets/doc/src/snippets/textdocument-css/textdocument-css.pro create mode 100644 doc/codesnippets/doc/src/snippets/textdocument-cursors/main.cpp create mode 100644 doc/codesnippets/doc/src/snippets/textdocument-cursors/textdocument-cursors.pro create mode 100644 doc/codesnippets/doc/src/snippets/textdocument-find/main.cpp create mode 100644 doc/codesnippets/doc/src/snippets/textdocument-find/textdocument-find.pro create mode 100644 doc/codesnippets/doc/src/snippets/textdocument-frames/main.cpp create mode 100644 doc/codesnippets/doc/src/snippets/textdocument-frames/mainwindow.cpp create mode 100644 doc/codesnippets/doc/src/snippets/textdocument-frames/mainwindow.h create mode 100644 doc/codesnippets/doc/src/snippets/textdocument-frames/textdocument-frames.pro create mode 100644 doc/codesnippets/doc/src/snippets/textdocument-frames/xmlwriter.cpp create mode 100644 doc/codesnippets/doc/src/snippets/textdocument-frames/xmlwriter.h create mode 100644 doc/codesnippets/doc/src/snippets/textdocument-imagedrop/main.cpp create mode 100644 doc/codesnippets/doc/src/snippets/textdocument-imagedrop/textdocument-imagedrop.pro create mode 100644 doc/codesnippets/doc/src/snippets/textdocument-imagedrop/textedit.cpp create mode 100644 doc/codesnippets/doc/src/snippets/textdocument-imagedrop/textedit.h create mode 100644 doc/codesnippets/doc/src/snippets/textdocument-imageformat/images.qrc create mode 100644 doc/codesnippets/doc/src/snippets/textdocument-imageformat/images/advert.png create mode 100644 doc/codesnippets/doc/src/snippets/textdocument-imageformat/images/newimage.png create mode 100644 doc/codesnippets/doc/src/snippets/textdocument-imageformat/main.cpp create mode 100644 doc/codesnippets/doc/src/snippets/textdocument-imageformat/textdocument-imageformat.pro create mode 100644 doc/codesnippets/doc/src/snippets/textdocument-images/images.qrc create mode 100644 doc/codesnippets/doc/src/snippets/textdocument-images/images/advert.png create mode 100644 doc/codesnippets/doc/src/snippets/textdocument-images/main.cpp create mode 100644 doc/codesnippets/doc/src/snippets/textdocument-images/textdocument-images.pro create mode 100644 doc/codesnippets/doc/src/snippets/textdocument-listitems/main.cpp create mode 100644 doc/codesnippets/doc/src/snippets/textdocument-listitems/mainwindow.cpp create mode 100644 doc/codesnippets/doc/src/snippets/textdocument-listitems/mainwindow.h create mode 100644 doc/codesnippets/doc/src/snippets/textdocument-listitems/textdocument-listitems.pro create mode 100644 doc/codesnippets/doc/src/snippets/textdocument-lists/main.cpp create mode 100644 doc/codesnippets/doc/src/snippets/textdocument-lists/mainwindow.cpp create mode 100644 doc/codesnippets/doc/src/snippets/textdocument-lists/mainwindow.h create mode 100644 doc/codesnippets/doc/src/snippets/textdocument-lists/textdocument-lists.pro create mode 100644 doc/codesnippets/doc/src/snippets/textdocument-printing/main.cpp create mode 100644 doc/codesnippets/doc/src/snippets/textdocument-printing/mainwindow.cpp create mode 100644 doc/codesnippets/doc/src/snippets/textdocument-printing/mainwindow.h create mode 100644 doc/codesnippets/doc/src/snippets/textdocument-printing/textdocument-printing.pro create mode 100644 doc/codesnippets/doc/src/snippets/textdocument-selections/main.cpp create mode 100644 doc/codesnippets/doc/src/snippets/textdocument-selections/mainwindow.cpp create mode 100644 doc/codesnippets/doc/src/snippets/textdocument-selections/mainwindow.h create mode 100644 doc/codesnippets/doc/src/snippets/textdocument-selections/textdocument-selections.pro create mode 100644 doc/codesnippets/doc/src/snippets/textdocument-tables/main.cpp create mode 100644 doc/codesnippets/doc/src/snippets/textdocument-tables/mainwindow.cpp create mode 100644 doc/codesnippets/doc/src/snippets/textdocument-tables/mainwindow.h create mode 100644 doc/codesnippets/doc/src/snippets/textdocument-tables/textdocument-tables.pro create mode 100644 doc/codesnippets/doc/src/snippets/textdocument-tables/xmlwriter.cpp create mode 100644 doc/codesnippets/doc/src/snippets/textdocument-tables/xmlwriter.h create mode 100644 doc/codesnippets/doc/src/snippets/textdocument-texttable/main.cpp create mode 100644 doc/codesnippets/doc/src/snippets/textdocumentendsnippet.cpp create mode 100644 doc/codesnippets/doc/src/snippets/threads/threads.cpp create mode 100644 doc/codesnippets/doc/src/snippets/threads/threads.h create mode 100644 doc/codesnippets/doc/src/snippets/timeline/main.cpp create mode 100644 doc/codesnippets/doc/src/snippets/timeline/timeline.pro create mode 100644 doc/codesnippets/doc/src/snippets/timers/timers.cpp create mode 100644 doc/codesnippets/doc/src/snippets/timers/timers.pro create mode 100644 doc/codesnippets/doc/src/snippets/transform/main.cpp create mode 100644 doc/codesnippets/doc/src/snippets/transform/transform.pro create mode 100644 doc/codesnippets/doc/src/snippets/uitools/calculatorform/calculatorform.pro create mode 100644 doc/codesnippets/doc/src/snippets/uitools/calculatorform/calculatorform.ui create mode 100644 doc/codesnippets/doc/src/snippets/uitools/calculatorform/main.cpp create mode 100644 doc/codesnippets/doc/src/snippets/updating-selections/main.cpp create mode 100644 doc/codesnippets/doc/src/snippets/updating-selections/model.cpp create mode 100644 doc/codesnippets/doc/src/snippets/updating-selections/model.h create mode 100644 doc/codesnippets/doc/src/snippets/updating-selections/updating-selections.pro create mode 100644 doc/codesnippets/doc/src/snippets/updating-selections/window.cpp create mode 100644 doc/codesnippets/doc/src/snippets/updating-selections/window.h create mode 100644 doc/codesnippets/doc/src/snippets/videomedia.cpp create mode 100644 doc/codesnippets/doc/src/snippets/volumeslider.cpp create mode 100644 doc/codesnippets/doc/src/snippets/webkit/webpage/main.cpp create mode 100644 doc/codesnippets/doc/src/snippets/whatsthis/whatsthis.cpp create mode 100644 doc/codesnippets/doc/src/snippets/whatsthis/whatsthis.pro create mode 100644 doc/codesnippets/doc/src/snippets/widget-mask/main.cpp create mode 100644 doc/codesnippets/doc/src/snippets/widget-mask/mask.qrc create mode 100644 doc/codesnippets/doc/src/snippets/widget-mask/tux.png create mode 100644 doc/codesnippets/doc/src/snippets/widget-mask/widget-mask.pro create mode 100644 doc/codesnippets/doc/src/snippets/widgetdelegate.cpp create mode 100644 doc/codesnippets/doc/src/snippets/widgets-tutorial/childwidget/childwidget.pro create mode 100644 doc/codesnippets/doc/src/snippets/widgets-tutorial/childwidget/main.cpp create mode 100644 doc/codesnippets/doc/src/snippets/widgets-tutorial/nestedlayouts/main.cpp create mode 100644 doc/codesnippets/doc/src/snippets/widgets-tutorial/nestedlayouts/nestedlayouts.pro create mode 100644 doc/codesnippets/doc/src/snippets/widgets-tutorial/toplevel/main.cpp create mode 100644 doc/codesnippets/doc/src/snippets/widgets-tutorial/toplevel/toplevel.pro create mode 100644 doc/codesnippets/doc/src/snippets/widgets-tutorial/windowlayout/main.cpp create mode 100644 doc/codesnippets/doc/src/snippets/widgets-tutorial/windowlayout/windowlayout.pro create mode 100644 doc/codesnippets/doc/src/snippets/xml/prettyprint/main.cpp create mode 100644 doc/codesnippets/doc/src/snippets/xml/prettyprint/prettyprint.pro create mode 100644 doc/codesnippets/doc/src/snippets/xml/rsslisting/handler.cpp create mode 100644 doc/codesnippets/doc/src/snippets/xml/rsslisting/handler.h create mode 100644 doc/codesnippets/doc/src/snippets/xml/rsslisting/main.cpp create mode 100644 doc/codesnippets/doc/src/snippets/xml/rsslisting/rsslisting.cpp create mode 100644 doc/codesnippets/doc/src/snippets/xml/rsslisting/rsslisting.h create mode 100644 doc/codesnippets/doc/src/snippets/xml/simpleparse/handler.cpp create mode 100644 doc/codesnippets/doc/src/snippets/xml/simpleparse/handler.h create mode 100644 doc/codesnippets/doc/src/snippets/xml/simpleparse/main.cpp create mode 100644 doc/codesnippets/doc/src/snippets/xml/simpleparse/simpleparse.pro create mode 100644 doc/codesnippets/doc/src/snippets/xml/xml.pro create mode 100644 doc/codesnippets/examples/dialogs/classwizard/classwizard.cpp create mode 100644 doc/codesnippets/examples/dialogs/classwizard/classwizard.qrc create mode 100644 doc/codesnippets/examples/dialogs/classwizard/images/background.png create mode 100644 doc/codesnippets/examples/dialogs/classwizard/images/banner.png create mode 100644 doc/codesnippets/examples/dialogs/classwizard/images/logo1.png create mode 100644 doc/codesnippets/examples/dialogs/classwizard/images/logo2.png create mode 100644 doc/codesnippets/examples/dialogs/classwizard/images/logo3.png create mode 100644 doc/codesnippets/examples/dialogs/classwizard/images/watermark1.png create mode 100644 doc/codesnippets/examples/dialogs/classwizard/images/watermark2.png create mode 100644 doc/codesnippets/examples/dialogs/classwizard/main.cpp create mode 100644 doc/codesnippets/examples/dialogs/extension/finddialog.cpp create mode 100644 doc/codesnippets/examples/dialogs/licensewizard/images/logo.png create mode 100644 doc/codesnippets/examples/dialogs/licensewizard/images/watermark.png create mode 100644 doc/codesnippets/examples/dialogs/licensewizard/licensewizard.cpp create mode 100644 doc/codesnippets/examples/dialogs/licensewizard/licensewizard.h create mode 100644 doc/codesnippets/examples/dialogs/licensewizard/licensewizard.pro create mode 100644 doc/codesnippets/examples/dialogs/licensewizard/licensewizard.qrc create mode 100644 doc/codesnippets/examples/dialogs/licensewizard/main.cpp create mode 100644 doc/codesnippets/examples/dialogs/standarddialogs/dialog.cpp create mode 100644 doc/codesnippets/examples/dialogs/trivialwizard/trivialwizard.cpp create mode 100644 doc/codesnippets/examples/dialogs/trivialwizard/trivialwizard.pro create mode 100644 doc/codesnippets/examples/itemviews/customsortfiltermodel/mysortfilterproxymodel.cpp create mode 100644 doc/codesnippets/examples/itemviews/pixelator/pixeldelegate.cpp create mode 100644 doc/codesnippets/examples/itemviews/simpledommodel/dommodel.cpp create mode 100644 doc/codesnippets/examples/linguist/hellotr/main.cpp create mode 100644 doc/codesnippets/examples/mainwindows/application/mainwindow.cpp create mode 100644 doc/codesnippets/examples/mainwindows/dockwidgets/mainwindow.cpp create mode 100644 doc/codesnippets/examples/mainwindows/mainwindow.cpp create mode 100644 doc/codesnippets/examples/mainwindows/mdi/mainwindow.cpp create mode 100644 doc/codesnippets/examples/mainwindows/menus/mainwindow.cpp create mode 100644 doc/codesnippets/examples/painting/svggenerator/window.cpp create mode 100644 doc/codesnippets/examples/richtext/textobject/svgtextobject.h create mode 100644 doc/codesnippets/examples/sql/querymodel/editablesqlmodel.cpp create mode 100644 doc/codesnippets/examples/sql/relationaltablemodel/relationaltablemodel.cpp create mode 100644 doc/codesnippets/examples/widgets/analogclock/analogclock.cpp create mode 100644 doc/codesnippets/examples/widgets/icons/iconsizespinbox.cpp create mode 100644 doc/codesnippets/examples/widgets/spinboxes/window.cpp create mode 100644 doc/codesnippets/examples/xml/streambookmarks/xbelreader.cpp create mode 100644 doc/codesnippets/examples/xml/streambookmarks/xbelreader.h create mode 100644 doc/codesnippets/examples/xml/streambookmarks/xbelwriter.cpp create mode 100644 doc/codesnippets/snippets/textdocument-resources/main.cpp create mode 100644 doc/codesnippets/snippets/textdocument-resources/textdocument-resources.pro create mode 100644 doc/conf.py create mode 100644 doc/contents.rst create mode 100644 doc/dbus.rst create mode 100644 doc/generatingdocs.rst create mode 100644 doc/howto-build/cmake-primer.rst create mode 100644 doc/howto-build/index.rst create mode 100644 doc/howto-build/setup-apiextractor.rst create mode 100644 doc/howto-build/setup-bindings.rst create mode 100644 doc/howto-build/setup-boostpython.rst create mode 100644 doc/howto-build/setup-generator.rst create mode 100644 doc/inheritance_diagram.py create mode 100644 doc/issuesdiff.rst create mode 100644 doc/modules.rst create mode 100644 doc/pyhtml2devhelp.py create mode 100644 doc/pyside.qdocconf diff --git a/CMakeLists.txt b/CMakeLists.txt index b2ffc58..d82967d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -82,3 +82,4 @@ add_subdirectory(libpyside) # project directories add_subdirectory(${BINDING_NAME}) add_subdirectory(tests) +add_subdirectory(doc) diff --git a/doc/CMakeLists.txt b/doc/CMakeLists.txt new file mode 100644 index 0000000..0e8851b --- /dev/null +++ b/doc/CMakeLists.txt @@ -0,0 +1,82 @@ +find_program(graphviz_exec dot) + +if (QT_SRC_DIR) + +if (NOT ${graphviz_exec} STREQUAL graphviz_exec-NOTFOUND) +add_custom_target(apidoc + #temporarily create a symlink for the generated .rst files inside ../doc + #this allows Sphinx to see them, and output goes to the correct dir + COMMAND ${CMAKE_COMMAND} -E create_symlink "${CMAKE_BINARY_DIR}/PySide" "${CMAKE_CURRENT_SOURCE_DIR}/PySide" + COMMAND make html BUILDDIR=${CMAKE_BINARY_DIR}/apidoc WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} + COMMAND ${CMAKE_COMMAND} -E remove -f "${CMAKE_CURRENT_SOURCE_DIR}/PySide") + + +# copy pyside.qdocconf to qt source dir. +configure_file("pyside.qdocconf" "${QT_SRC_DIR}/tools/qdoc3/test/pyside.qdocconf" @ONLY) +set(DOC_DATA_DIR "${CMAKE_CURRENT_BINARY_DIR}/qt4xmldoc") +set(ENV{QTDIR} ${QT_SRC_DIR} ) + +add_custom_target(qdoc3 + COMMAND QTDIR=${QT_SRC_DIR} qdoc3 pyside.qdocconf + WORKING_DIRECTORY "${QT_SRC_DIR}/tools/qdoc3/test" + COMMENT "Running qdoc3 against Qt source code..." + SOURCE "pyside.qdocconf") + +macro(create_doc module typesystem_path) +string(REGEX REPLACE "^Qt" "" module_name ${module}) +string(TOLOWER ${module_name} module_name) +add_custom_target("${module}-apidoc" +COMMAND ${GENERATOR} --generatorSet=qtdoc + ${pyside_SOURCE_DIR}/global.h + --include-paths=${QT_INCLUDE_DIR}:${QT_QTCORE_INCLUDE_DIR} + --typesystem-paths=${pyside_SOURCE_DIR}:${${module}_BINARY_DIR}:${typesystem_path} + ${pyside_SOURCE_DIR}/${module}/typesystem_${module_name}.xml + --library-source-dir=${QT_SRC_DIR} + --documentation-only + --documentation-data-dir=${DOC_DATA_DIR} + --documentation-out-dir=${CMAKE_BINARY_DIR} + --documentation-code-snippets-dir=${CMAKE_CURRENT_SOURCE_DIR}/codesnippets +WORKING_DIRECTORY ${${module}_SOURCE_DIR} + +COMMENT "Running generator to generate documentation of ${module}..." +) +add_dependencies("${module}-apidoc" qdoc3) +add_dependencies(apidoc "${module}-apidoc") +endmacro(create_doc module) + +create_doc(QtCore "") +create_doc(QtGui "${QtCore_SOURCE_DIR}") +create_doc(QtHelp "${QtCore_SOURCE_DIR}:${QtGui_BINARY_DIR}:${QtGui_SOURCE_DIR}:${QtHelp_SOURCE_DIR}") +create_doc(QtNetwork "${QtCore_SOURCE_DIR}") +create_doc(QtOpengl "${QtCore_SOURCE_DIR}:${QtGui_BINARY_DIR}:${QtGui_SOURCE_DIR}:${QtOpenGL_SOURCE_DIR}") +create_doc(QtSql "${QtCore_SOURCE_DIR}:${QtGui_BINARY_DIR}:${QtGui_SOURCE_DIR}:${QtSql_SOURCE_DIR}") +create_doc(QtSvg "${QtCore_SOURCE_DIR}:${QtGui_SOURCE_DIR}:${QtGui_BINARY_DIR}") +create_doc(QtUitools "${QtCore_SOURCE_DIR}:${QtGui_BINARY_DIR}:${QtGui_SOURCE_DIR}:${QtXml_SOURCE_DIR}:${QtUiTools_SOURCE_DIR}") +create_doc(QtXml "${QtCore_SOURCE_DIR}") +create_doc(QtWebKit "${QtCore_SOURCE_DIR}:${QtGui_SOURCE_DIR}:${QtGui_BINARY_DIR}:${QtNetwork_SOURCE_DIR}") +create_doc(QtMultimedia "${QtCore_SOURCE_DIR}:${QtGui_SOURCE_DIR}:${QtGui_BINARY_DIR}") + +#create devhelp file +add_custom_target(apidevhelp + COMMAND python;${CMAKE_CURRENT_SOURCE_DIR}/pyhtml2devhelp.py;${CMAKE_BINARY_DIR}/apidoc/html;index.html > + ${CMAKE_BINARY_DIR}/apidoc/html/PySide.devhelp;${BINDING_API_VERSION}&&; + gzip;-9v;-f;${CMAKE_BINARY_DIR}/apidoc/html/PySide.devhelp + COMMAND ${CMAKE_COMMAND} -E make_directory "${CMAKE_INSTALL_PREFIX}/share/devhelp/books" + COMMAND ${CMAKE_COMMAND} -E create_symlink "${CMAKE_INSTALL_PREFIX}/share/doc/${BINDING_NAME}/html" "${CMAKE_INSTALL_PREFIX}/share/devhelp/books/${BINDING_NAME}" +) + +#install files +add_custom_target(apidocinstall + COMMAND mkdir -p ${CMAKE_INSTALL_PREFIX}/share/doc/${BINDING_NAME} && cp -rv ${CMAKE_BINARY_DIR}/apidoc/* ${CMAKE_INSTALL_PREFIX}/share/doc/${BINDING_NAME} +) + +add_dependencies(apidocinstall apidevhelp) + +else (NOT ${graphviz_exec} STREQUAL graphviz_exec-NOTFOUND) + message(STATUS "Missing graphviz tool (dot), apidoc generation targets disabled.") +endif (NOT ${graphviz_exec} STREQUAL graphviz_exec-NOTFOUND) + +else (QT_SRC_DIR) + message(STATUS "QT_SRC_DIR variable not set, apidoc generation targets disabled.") +endif (QT_SRC_DIR) + diff --git a/doc/Makefile b/doc/Makefile new file mode 100644 index 0000000..32a7c0d --- /dev/null +++ b/doc/Makefile @@ -0,0 +1,89 @@ +# Makefile for Sphinx documentation +# + +# You can set these variables from the command line. +SPHINXOPTS = +SPHINXBUILD = sphinx-build +PAPER = +BUILDDIR = _build + +# Internal variables. +PAPEROPT_a4 = -D latex_paper_size=a4 +PAPEROPT_letter = -D latex_paper_size=letter +ALLSPHINXOPTS = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) . + +.PHONY: help clean html dirhtml pickle json htmlhelp qthelp latex changes linkcheck doctest + +help: + @echo "Please use \`make ' where is one of" + @echo " html to make standalone HTML files" + @echo " dirhtml to make HTML files named index.html in directories" + @echo " pickle to make pickle files" + @echo " json to make JSON files" + @echo " htmlhelp to make HTML files and a HTML help project" + @echo " qthelp to make HTML files and a qthelp project" + @echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter" + @echo " changes to make an overview of all changed/added/deprecated items" + @echo " linkcheck to check all external links for integrity" + @echo " doctest to run all doctests embedded in the documentation (if enabled)" + +clean: + -rm -rf $(BUILDDIR)/* + +html: + $(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html + @echo + @echo "Build finished. The HTML pages are in $(BUILDDIR)/html." + +dirhtml: + $(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml + @echo + @echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml." + +pickle: + $(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle + @echo + @echo "Build finished; now you can process the pickle files." + +json: + $(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json + @echo + @echo "Build finished; now you can process the JSON files." + +htmlhelp: + $(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp + @echo + @echo "Build finished; now you can run HTML Help Workshop with the" \ + ".hhp project file in $(BUILDDIR)/htmlhelp." + +qthelp: + $(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) $(BUILDDIR)/qthelp + @echo + @echo "Build finished; now you can run "qcollectiongenerator" with the" \ + ".qhcp project file in $(BUILDDIR)/qthelp, like this:" + @echo "# qcollectiongenerator $(BUILDDIR)/qthelp/PySide.qhcp" + @echo "To view the help file:" + @echo "# assistant -collectionFile $(BUILDDIR)/qthelp/PySide.qhc" + +latex: + $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex + @echo + @echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex." + @echo "Run \`make all-pdf' or \`make all-ps' in that directory to" \ + "run these through (pdf)latex." + +changes: + $(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes + @echo + @echo "The overview file is in $(BUILDDIR)/changes." + +linkcheck: + $(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck + @echo + @echo "Link check complete; look for any errors in the above output " \ + "or in $(BUILDDIR)/linkcheck/output.txt." + +doctest: + $(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest + @echo "Testing of doctests in the sources finished, look at the " \ + "results in $(BUILDDIR)/doctest/output.txt." diff --git a/doc/_static/.gitignore b/doc/_static/.gitignore new file mode 100644 index 0000000..e69de29 diff --git a/doc/_static/basic.css b/doc/_static/basic.css new file mode 100644 index 0000000..2509c22 --- /dev/null +++ b/doc/_static/basic.css @@ -0,0 +1,417 @@ +/** + * Sphinx stylesheet -- basic theme + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + */ + +/* -- main layout ----------------------------------------------------------- */ + +div.documentwrapper { + float: left; + width: 100%; +} + +div.bodywrapper { + margin: 0 0 0 230px; +} + +div.clearer { + clear: both; +} + +/* -- relbar ---------------------------------------------------------------- */ + +div.related { + width: 100%; + font-size: 90%; +} + +div.related h3 { + display: none; +} + +div.related ul { + margin: 0; + padding: 0 0 0 0px; + list-style: none; +} + +div.related li { + float: left; + display: inline; + padding-right:17px; + padding-left:10px; + background-image:url(images/bread_crumb.png); + background-position:right; + background-repeat:no-repeat; +} + +div.related li.right { + float: right; + margin-right: 5px; + padding: 0 0 0 0px; + background-image:none; +} + +/* -- sidebar --------------------------------------------------------------- */ + +div.sphinxsidebarwrapper { + padding: 10px 5px 0 10px; +} + +div.sphinxsidebar { + float: left; + width: 230px; + margin-left: -100%; + font-size: 90%; +} + +div.sphinxsidebar ul { + list-style: none; +} + +div.sphinxsidebar ul ul, +div.sphinxsidebar ul.want-points { + margin-left: 20px; + list-style: square; +} + +div.sphinxsidebar ul ul { + margin-top: 0; + margin-bottom: 0; +} + +div.sphinxsidebar form { + margin-top: 10px; +} + +img { + border: 0; +} + +/* -- search page ----------------------------------------------------------- */ + +ul.search { + margin: 10px 0 0 20px; + padding: 0; +} + +ul.search li { + padding: 5px 0 5px 20px; + background-image: url(file.png); + background-repeat: no-repeat; + background-position: 0 7px; +} + +ul.search li a { + font-weight: bold; +} + +ul.search li div.context { + color: #888; + margin: 2px 0 0 30px; + text-align: left; +} + +ul.keywordmatches li.goodmatch a { + font-weight: bold; +} + +/* -- index page ------------------------------------------------------------ */ + +table.contentstable { + text-align: left; + width: 90%; +} + +table.contentstable p.biglink { + line-height: 150%; +} + +a.biglink { + font-size: 1.3em; +} + +span.linkdescr { + text-align: left; + padding-top: 5px; + font-size: 90%; +} + +/* -- general index --------------------------------------------------------- */ + +table.indextable td { + text-align: left; + vertical-align: top; +} + +table.indextable dl, table.indextable dd { + margin-top: 0; + margin-bottom: 0; +} + +table.indextable tr.pcap { + height: 10px; +} + +table.indextable tr.cap { + margin-top: 10px; + background-color: #f2f2f2; +} + +img.toggler { + margin-right: 3px; + margin-top: 3px; + cursor: pointer; +} + +/* -- general body styles --------------------------------------------------- */ + +a.headerlink { + visibility: hidden; +} + +h1:hover > a.headerlink, +h2:hover > a.headerlink, +h3:hover > a.headerlink, +h4:hover > a.headerlink, +h5:hover > a.headerlink, +h6:hover > a.headerlink, +dt:hover > a.headerlink { + visibility: visible; +} + +div.body p.caption { + text-align: inherit; +} + +div.body td { + text-align: left; +} + +.field-list ul { + padding-left: 1em; +} + +.first { + margin-top: 0 !important; +} + +p.rubric { + margin-top: 30px; + font-weight: bold; +} + +/* -- sidebars -------------------------------------------------------------- */ + +div.sidebar { + margin: 0 0 0.5em 1em; + border: 1px solid #ddb; + padding: 7px 7px 0 7px; + background-color: #ffe; + width: 40%; + float: right; +} + +p.sidebar-title { + font-weight: bold; +} + +/* -- topics ---------------------------------------------------------------- */ + +div.topic { + border: 1px solid #ccc; + padding: 7px 7px 0 7px; + margin: 10px 0 10px 0; +} + +p.topic-title { + font-size: 1.1em; + font-weight: bold; + margin-top: 10px; +} + +/* -- admonitions ----------------------------------------------------------- */ + +div.admonition { + margin-top: 10px; + margin-bottom: 10px; + padding: 7px; +} + +div.admonition dt { + font-weight: bold; +} + +div.admonition dl { + margin-bottom: 0; +} + +p.admonition-title { + margin: 0px 10px 5px 0px; + font-weight: bold; +} + +div.body p.centered { + text-align: center; + margin-top: 25px; +} + +/* -- tables ---------------------------------------------------------------- */ + +table.docutils { + border: 0; + border-collapse: collapse; +} + +table.docutils td, table.docutils th { + padding: 2px 8px 2px 8px; + border-top: 0; + border-left: 0; + border-right: 0; + border-bottom: 1px solid #aaa; +} + +table.field-list td, table.field-list th { + border: 0 !important; +} + +table.footnote td, table.footnote th { + border: 0 !important; +} + +th { + text-align: left; + padding-right: 5px; +} + +/* -- other body styles ----------------------------------------------------- */ + +dl { + margin-bottom: 15px; +} + +dd p { + margin-top: 0px; +} + +dd ul, dd table { + margin-bottom: 10px; +} + +dd { + margin-top: 3px; + margin-bottom: 10px; + margin-left: 30px; +} + +dt:target, .highlight { + background-color: #fbe54e; +} + +dl.glossary dt { + font-weight: bold; + font-size: 1.1em; +} + +.field-list ul { + margin: 0; + padding-left: 1em; +} + +.field-list p { + margin: 0; +} + +.refcount { + color: #060; +} + +.optional { + font-size: 1.3em; +} + +.versionmodified { + font-style: italic; +} + +.system-message { + background-color: #fda; + padding: 5px; + border: 3px solid red; +} + +.footnote:target { + background-color: #ffa +} + +/* -- code displays --------------------------------------------------------- */ + +pre { + overflow: auto; +} + +td.linenos pre { + padding: 5px 0px; + border: 0; + background-color: transparent; + color: #aaa; +} + +table.highlighttable { + margin-left: 0.5em; +} + +table.highlighttable td { + padding: 0 0.5em 0 0.5em; +} + +tt.descname { + background-color: transparent; + font-weight: bold; + font-size: 1.2em; +} + +tt.descclassname { + background-color: transparent; +} + +tt.xref, a tt { + background-color: transparent; + font-weight: bold; +} + +h1 tt, h2 tt, h3 tt, h4 tt, h5 tt, h6 tt { + background-color: transparent; +} + +/* -- math display ---------------------------------------------------------- */ + +img.math { + vertical-align: middle; +} + +div.math p { + text-align: center; +} + +span.eqno { + float: right; +} + +/* -- printout stylesheet --------------------------------------------------- */ + +@media print { + div.document, + div.documentwrapper, + div.bodywrapper { + margin: 0; + width: 100%; + } + + div.sphinxsidebar, + div.related, + div.footer, + #top-link { + display: none; + } +} diff --git a/doc/_static/default.css b/doc/_static/default.css new file mode 100644 index 0000000..721ceb7 --- /dev/null +++ b/doc/_static/default.css @@ -0,0 +1,248 @@ +/** + * Sphinx stylesheet -- default theme + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + */ + +@import url("basic.css"); + +/* -- page layout ----------------------------------------------------------- */ + +body { + font-family: sans-serif; + font-size: 100%; + background-color: #000000; + color: #000; + margin: 0; + padding: 0; +} + +div.document { + background-image:url(images/side_background.jpg); + background-repeat:repeat-y; + background-color:#ffd800; +} + +div.body { + position:relative; + background-color:#fff; + color: #000000; + padding: 0 20px 30px 20px; +} + +div.footer { + color: #ffffff; + width: 100%; + padding: 9px 0 9px 0; + text-align: center; + font-size: 75%; +} + +div.footer a { + color: #ffffff; + text-decoration: underline; +} + +div.related { + background-image:url(images/top_background.jpg); + background-repeat:repeat-x; + background-color: #d7aa00; + line-height:33px; + height:33px; + color: #000000; +} + +div.related a { + color: #000000; +} + +div.related img { + padding-top:3px; +} + +div.sphinxsidebar { +} + +div.sphinxsidebar h3 { + font-family: Arial, Verdana, sans-serif; + color: #000000; + font-size: 1.4em; + font-weight: normal; + margin: 0; + padding: 0; +} + +div.sphinxsidebar h3 a { + color: #000000; +} + +div.sphinxsidebar h4 { + font-family: Arial, Verdana, sans-serif; + color: #000000; + font-size: 1.3em; + font-weight: normal; + margin: 5px 0 0 0; + padding: 0; +} + +div.sphinxsidebar p { + color: #ffffff; +} + +div.sphinxsidebar p.topless { + margin: 5px 10px 10px 10px; +} + +div.sphinxsidebar ul { + margin: 10px; + padding: 0; + color: #ffffff; +} + +div#searchbox p.searchtip { + color:#000000; + font-size:90%; + padding-top:50px; +} + +div#searchbox { + background-image:url(images/background_search.jpg); + background-repeat:no-repeat; + background-position:center; + border:none; +} + +div.sphinxsidebar a { + color: #009491; +} + + +/* -- body styles ----------------------------------------------------------- */ + +a { + color: #009491; + text-decoration: underline; +} + +a:hover { + text-decoration: underline; +} + +div.body p, div.body dd, div.body li { + text-align: left; + line-height: 130%; +} + +div.body h1 { + font-family: Arial, Verdana, sans-serif; + background-color: #f2f2f2; + font-weight: normal; + color: #20435c; + border-bottom: 1px solid #ccc; + margin: 20px -20px 10px -20px; + padding: 3px 0 3px 10px; +} + +div.body h2, +div.body h3, +div.body h4, +div.body h5, +div.body h6 { + font-family: Arial, Verdana, Helvetica, sans-serif; + font-size:12px; + font-weight:normal; + border-left-width: 1px; + border-right-width: 1px; + border-top-width: 1px; + border-bottom-width: 2px; + border-style: solid; + border-left-color: #b1b1b1; + border-right-color: #b1b1b1; + border-top-color: #b1b1b1; + border-bottom-color: #009491; + background-color: #e0e0e0; + padding-left:5px; +} + +div.body h1 { margin-top: 0; font-size: 200%; } +div.body h2 { font-size: 120%; } +div.body h3 { font-size: 115%; } +div.body h4 { font-size: 110%; } +div.body h5 { font-size: 105%; } +div.body h6 { font-size: 100%; } + +a.headerlink { + color: #c60f0f; + font-size: 0.8em; + padding: 0 4px 0 4px; + text-decoration: none; +} + +a.headerlink:hover { + background-color: #c60f0f; + color: white; +} + +div.body p, div.body dd, div.body li { + text-align: left; + line-height: 130%; +} + +div.admonition p.admonition-title + p { + display: inline; +} + +div.note { + background-color: #eee; + border: 1px solid #ccc; +} + +div.seealso { + background-color: #ffc; + border: 1px solid #ff6; +} + +div.topic { + background-color: #eee; +} + +div.warning { + background-color: #ffe4e4; + border: 1px solid #f66; +} + +p.admonition-title { + display: inline; +} + +p.admonition-title:after { + content: ":"; +} + +input[type=text]{ + background-color: #009491; + font: 11px verdana, arial, helvetica, sans-serif; + color:#FFFFFF; + width: 150px; + height: 18px; + border: 1px solid #009491; + margin-left:13px; + margin-top:15px; + margin-bottom:4px; + border:none; +} + +pre { + padding: 5px; + background-color: #eeffcc; + color: #333333; + line-height: 120%; + border: 1px solid #ac9; + border-left: none; + border-right: none; +} + +tt { + background-color: #ecf0f3; + padding: 0 1px 0 1px; + font-size: 0.95em; +} diff --git a/doc/_static/images/._background_search.jpg b/doc/_static/images/._background_search.jpg new file mode 100755 index 0000000000000000000000000000000000000000..d5c689c31bb9b045cfb9534f0dd71c5f63c85661 GIT binary patch literal 4096 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDJkFz{^v(m+1nBL)UWIj;a$cMB&^U!WKc z;207TWIgNTe~1o-3LMHtg-1hRGz3ONU^E0qLtr!nMnhmU1V%$(Gz3ONU^E0qLx8Fw zzz8%Aguy^ABqOs}p(wRDzqBYhRUs|EC|e;juOv0EBr`uRF(;=|AtyDhL?J0BF)tg~ U7l!H@(iE!y;a-tpko*510Px@-SpWb4 literal 0 HcmV?d00001 diff --git a/doc/_static/images/._bread_crumb.png b/doc/_static/images/._bread_crumb.png new file mode 100755 index 0000000000000000000000000000000000000000..46b8591c6c018df537faed736270c57745dd4d5d GIT binary patch literal 4096 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDJkFz{^v(m+1nBL)UWxd1=+Gz%wBU!WKc z;207TWIgNTe~1o-3LMHtg-1hRGz3ONU^E0qLtr!nMnhmU1V%$(Gz3ONU^E0qLx8Fw zzz8%Aguy^ABqOs}p(wRDzqBYhRUs|EC|e;juOv0EBr`uRF(;=|AtyDhL?J0BF)tg~ U7l!H@(iE!y;a-tpko*5106BCZegFUf literal 0 HcmV?d00001 diff --git a/doc/_static/images/._button_search.jpg b/doc/_static/images/._button_search.jpg new file mode 100755 index 0000000000000000000000000000000000000000..d5c689c31bb9b045cfb9534f0dd71c5f63c85661 GIT binary patch literal 4096 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDJkFz{^v(m+1nBL)UWIj;a$cMB&^U!WKc z;207TWIgNTe~1o-3LMHtg-1hRGz3ONU^E0qLtr!nMnhmU1V%$(Gz3ONU^E0qLx8Fw zzz8%Aguy^ABqOs}p(wRDzqBYhRUs|EC|e;juOv0EBr`uRF(;=|AtyDhL?J0BF)tg~ U7l!H@(iE!y;a-tpko*510Px@-SpWb4 literal 0 HcmV?d00001 diff --git a/doc/_static/images/._side_background.jpg b/doc/_static/images/._side_background.jpg new file mode 100755 index 0000000000000000000000000000000000000000..a79b91c97466a70bbdcf67be2df78db09871c16a GIT binary patch literal 25192 zcmeI4O>7%Q6oB9UWc^bo7&!@zgjlOYRpp`}(HtUDSt%B20y0Fg521%j)J58mG>&Kv z^yUIZLTRL`RaL1%0;C>tiCUE+iiGH)O_j7x;M@c{BF$ucEms6e=Ix=T)4dg&~ODqj5quO5c%|t zzSj?Syw)35F>zx#5RLYCUYup6BjCf0b5SZ0AOb{y2oM1xKm>>Y5g-CYfCvzQ>JpH! zxX4a`e%xTBx@G?-N^A5TI2u3lp1;qCkHwE0@lk&$vJXI;)F!R^?|?7iS($l&6*1oP zc;hB+;qsOACp7cBek*3BAN=66QRDKF_dx=;mCEy8M2&rv_&W|zdQ4C*(+hr3z-ig- zyRsi1cELD%sI9C%TF>Xr;yN?sqFFf0mYG&8utLGaG~LYSAFV9^@#~K_Z{41my)&1b zzn5BATud*eGnu7aHhVqyAXm(?49mJQn7FvGkh(WtOlmXJKYTj{asgx+=z)l((Zh!I4*8qLJp{Q|z4;^m? z2V*10dDt6z>qYFbpBz=}Bg`f`LrGu(pX_qhaeb4l+hXEA?Xp!TgR$Wb9B{YHVXJ=W zxatzHw}lP$9h(Ycmbni1|K7OaLa&A7gct4%aq;uJ1 z&YR6GppKvLa4y-kEqyN@>A=TVL$ z|CIXQK>PkscTcYX>FEybZx2-ZU#Ri;1GOH1u>v)nfACJQrt>d83qTPz{VY$sN^WUS z1c(3;AOb{y2oM1xKm>>Y5g-CYfCvx)B0vO)01+SpM1Tko0U|&Is!4#qjjF7RIr-aN z`3hgH@p)V$Q;9_T{iyHa>uq7!HaZd?!|>J8np@C)W4W|W*39S5oyG-A=c{X?a9z8V N#Pl2AS$Zag`d>4|UkLyJ literal 0 HcmV?d00001 diff --git a/doc/_static/images/._top_background.jpg b/doc/_static/images/._top_background.jpg new file mode 100755 index 0000000000000000000000000000000000000000..d5c689c31bb9b045cfb9534f0dd71c5f63c85661 GIT binary patch literal 4096 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDJkFz{^v(m+1nBL)UWIj;a$cMB&^U!WKc z;207TWIgNTe~1o-3LMHtg-1hRGz3ONU^E0qLtr!nMnhmU1V%$(Gz3ONU^E0qLx8Fw zzz8%Aguy^ABqOs}p(wRDzqBYhRUs|EC|e;juOv0EBr`uRF(;=|AtyDhL?J0BF)tg~ U7l!H@(iE!y;a-tpko*510Px@-SpWb4 literal 0 HcmV?d00001 diff --git a/doc/_static/images/background_search.jpg b/doc/_static/images/background_search.jpg new file mode 100644 index 0000000000000000000000000000000000000000..c0481c561d78056e870b3ef0c7f326f56ddc9128 GIT binary patch literal 2129 zcmex=uI=H%w(=K}(Mey}1a#RK7?>VxzCA7BvVV9;T>$jm6nz$D1XEXer(2*YNevqA0w zx)TN%**G|vm|5Am7(r6ZKoSlZ*;v_`SvZ(D1%TRExtQ2l*;%2Ij6f}Hf|psQE@KxD zPuCCx?ZR5hS(A(6nu#)(EwNy2RG3zdSJj6W0}e5fq`{}uxeGtgy%%z_N|46A>2 ze9aa%>WKTGd*gDzlLeNU+!yX$bXHN!3RRnMQZsbbl+tNV0cU5eR@C~aDC4avv@k{c z`t$zn_8ALqwU*0A8Gn|p=(wzR{YL84m#NYIl}r6*iho+NNlWW%jQ0E$amq(a9;Udw z2-_W6bI-+)H~Zy2)oYO@_qHUoteLV@BlM?#sI1))#Z3bJg*${_tZEhVXXIa4J}F#m zQ`gdb&U9rd{cba5t*;O5d{3f3KTr74(-5l`v(|ea zTas2rABsF?a$hdzSm@_NH8HE&1KKX^J}K4{s$Jo2acuVEvolWZtMKoh8t_WsmUyMo zMX(hTmuo6FONO84{8+R~)=Apwy-Ji}$l8ZGkEQba&62f#KD5&dbzb3|5&NXuO>62N z)j7$&AD^8`jki%h3U$)NjH5x@TQ>J(?z6esv-)|3weRQfH<|V*ZlZw!>KhN z=8J1ByrQ^8@006dQLlSK=L|=^Krj}bB)fi0JAx&&C-!_lJnLgu{k=WvM^8hOMlLvM z6f3@qzs6F?y)Pqg_R%V{?uAy_sggnSM7Dgq{6ZtvNOe>1e&f*4X`xf%LQeF(3cS5; z-`3yO;b8)A?N&#)8}ck#Wpv(o`=shs=YzHOdR#VAf93k-Oz8YTyP{i0KdaB^XMJ5h zFYa>YzSQ>mx#j;ECY}B&7qVGt#q5KT-QUlb|C)TQ=CgUuwMlokDsFn2acjb^vr_Bk zOyeXwOwv=AFrR|cjNvJjYVpybR z!cCXuYeTP0)c8@l;9#wBoaMSz&kg&gh2&0|{xJVuYR#LiT6OAqR-!A?&st}1tmiwb zajfJOx(x`v&EkotzI5DscU^c|+rD=j5UULAMa z*;H`H`P;o^Pfvzg1;8`=^q3dR2}4j~8D>u5S8#qb2A4c1fL|Ha`!SHJQg%3(TFHtvgQ! z$ZOnfe4{x%>U4U$UBTT2d1t;U+`P8w=EL)I%rm4n+jf|huGv;m{G9g|+ne)Ayu(nF z;O2d2QZ^r+Z;^Ka6fTeEFTQss`TNhBdDRbZJKU{&<81NQxYndtGa~fN=X$35hR-Bz zvL~xoPu73?!Sm-%`Rg|_*6;kj%Plw4#%8a)_7Cg(;(PCXsyToAR@5qMyZ9f~_2OG! Q{AY-pY|v{K>Hq&G084;`WdHyG literal 0 HcmV?d00001 diff --git a/doc/_static/images/bg.jpg b/doc/_static/images/bg.jpg new file mode 100644 index 0000000000000000000000000000000000000000..2ceb19583d43d0b5ba9d04767436b668228e9bfd GIT binary patch literal 5749 zcmb7H2Ut^Cx4lW|AP_7J4uS%TbOBKiDWepn3epomsY2+z2u4M!f`k$g1OzEkLX#?? zBPD|ab0D%F(hV%i5 zp8=?fw>82a00A@r0H~2%iva6iHm+8-fK3C*10oWD5P$|k2C1Z>qal6iX=!L^=^5zg z=;`Pfm>3vIU|?cmA%j#NIKaXJCF9U9fM{rG8R!|i4$%831r|Smj)|lkTv+ zeNKMUO|;uT*!vH{o-#FysKHT@=g;_CYg^q}0N_=}`-QCY7~R19o0045T`Ko3AouzE zmZF?00%b0G>P8ml%ba&Cbq_r1!pFFIA|ynsnMM9YbeP*2&5u5*sJ6~Jiogv zGI6**Pmt}ekFRMPbul2jdXD=;Y zKG(Q8TG{^S%G6MuB41TsCyBuJ^3}50(f)?A&RK<9i@5Kx_?~JlllAql@&A1Qc4*NEp9Qzlb zWxY+I_0pPSi=rN1>N|@G?NkEH_9Pa4f7-<7B8zbu=A*IIg?}ZI9~r8Nz*^gegtZKJ z;B67@i|G^&ZMG&6u(@a&TS z?@NE`_w`y~KXj>=p8aPM^~qq?!E3O0MN><=bNMSqBm&+*@`H7B()7DGrbAOp%@*(& z$2UHg%CT~%F`jIOrT%J(!C5m=XvItu4{UJ^d*N0FUM;reSqa~3M7cGib!SCV^NSCb zY&X-X4g6O6RpgG)Gp;MDaS=?dF!O?1#i+kaVO+h&an3HJH2?tedgy0w)xw=0m-m^A zcdS11*U*ogjhwN&h&|HHSAi3>Ny%PzBH)~hK#$o<;-8;9T`N#d-d9pX4{m#XO1X_2 zwQ4KU-ctAYpTi58ibOSO9$L?4hB~zyi=A;{i!+l!|2d$gXYiwE%tYvezE{Kk^5Tw?a8kb) z5=-!27H^h*E>p8|!!T zaMFhjagQMdksODr6(21Ft7_7rMi7IQekzQZ+-5JFlQwEQ|LXUQeVbl>?$NuE0G_Hk zHB(c9g`T0UXCAD~M9HBt8h5dlPFX>XBPHIdByR9tM?yACJU8^2bg=!RBm$qEVqNmT z>^A^dmA%yZ`s|D9CR2%ce;eUoqp9wK_wXWv+tHU^?CQtO_DkvH#+n=U7l-J7OY(Z! zG4c7oF1!71{%(N`?{N7C+GzK)*lS!Ea_kK7giloY4 z<0{Ri#6Woyl>tM-FLpaz>X+ZCXoB;jM_!{Jh?t{V*VM7;(lgh{G|)VILfj)alOAn> z>cOM6sYYBH{03e)_zaGZPnk@h0+cwJXm?WE45>Y2K!LEcBgpB1?`||H6%+8N9vD&Ee}oKiN692GFRuH`;|o9Qos9Hdsy7Iwg}giMQl#A>Yq*a?R==;iBh61VjaP*#DTM&QwxU z;>Ak|J!3YebT9b1WM0dOnVc&Yu0@jh@-{Qo$r-T2v2B^`GSkXr*B(I3k%T!L=b2P? z^MD@>QhU>RKIGKq1KHpLx9(mf^$HTcFXvQL!}mo&Jv-0QdA=sQXH3>sL9sPMmQG*Np1K|}^rLcW z#t+Zc;JXihu~8l5N|ip)wKm$3+u?I_kqJo|V?b-7x_;iyT1aU!Ei{PDRgdn)@qKma z6qwTYWCfF2AEPPy#x_JPAGlfm$HJ9D&D_pas z+Itl^5>#}#pH5RA?GNux2x+K$d z=3W!jMAegz{~Z7rxu@h5YSb}r3FF@$z#{E6(y5|sULzO89+lS$az;XoK{gwvgi`H*8i-BW5uPeRwg=SSM9ucB%kRKE|g<=6z+3;Jqsc zbS?{WCkQiZqxx*BEr-J+lt~Ijmm!iZD-uFJYn)4_+1zg*3p0}3WY8>fKKqfisZ9h9 zJQeJ2-wr=JLGpss+ob(E<*q0|mreUheoY|bxn9j9YXZn#w>s|9;&o?}S%JF49etfD zCP=cD+?c9=WR`aRADZQg26QmF_%cBRrdtGlvLqu^v6btY+472$ zd@ZEB5vN;uzPdOX0_21(s-gp?AeHP9B$~HEO#u^u2X14kqTLHy7Ee@v9Qs!0!MC^b z=(*n;6^!WQ8^tt>yTc&PPl}>2pm|XRly3vW& zG~d718FniP!?LMgGv}dOu9a2p3S;X1{3~OwZj*s^d%Tv7Al_>+xFBqE#NxK%bKbwLa@>L znv}_0_NqPmC+g2}^fM;{gB|!&%PAK*=3?BTX8^8X5#PepGTqR6(pVk4<8tC!B!$bm zX~1<0I((SBE=%R_@-5co?Beh`_yBh zJX@Z;U?hn`KUm2nB<3(#gB)@#((T`sb@jd(0fjumu|)Geb+^DTLe5c-q=Qn>RowHV zF%sTe+9Kr4UnuNu^V#wo@4}bm5dm=;Z%W|kgL9iYKgJg72EhDbJa>L*yvJJw#on-w zOecrI!Rp^#U-bL!-09VWBgvjU(6DUmSnmXV?hdHA%@;dN@j5sXfhnbJK_YNO#dE6T zj(%ljzvc2{uD#bO>OmA0pft1|O*OOfi7B@W8UCjt+N zz$f&sDRlLbI(O8aM7`jzem`$BNwJAZ>IMD&fjONH@ZYs)?HplvT(bJjr{BDFXIi4u z$wA1qbUf3r84)N7gWZLGjkw(3KE`w9>+K6c4Yo{F2F5HfF{k8{ZL~s} z*RT?UDi%o6)$s3n6^Y2c>rIvw=HvFA=@cGKEymurQ31yF(!!!!a`j-Gu13ExB|<7l zqjYaHuJO2tC+F*|%=U8rbJ(B&>)EQcfym0X0dr7~9*#K(rqw~9$eyOR- z{fYUDbw1b&{3TrF^L<6ED%3>{oLu@``K`?Dz6qX}d;3UFv5bl`00{ZbUdJWh`+hDk zt%~Uq^{xd#`bFb;B>h-QDo|O*&jPYbKFXk(2ktOJy9~wjn_pmzVaE=QuV3{E)iM@_ zOqDXj(GKczvoE8EEhVLfd;1a6Wr^Wp{aUXP13PNY9h0M?xLTCoZ6<0rf!?KuIqNHg zRTG$N#Hv_$crnS(P>utOO&`ST(y@-+VCTDV%nj8 z&B5>jn<*vTCzXW{S|}$0g^|`&YWbl)7_o`y6Zb74U0umu8byATX{TFs)bs4h#RZ7O z>8g%5nv8ShC;8(?bT#y#@*XjF z^0r9-XqPQ|1@R2A?1^zZZRRk(zW0jS-AVvTx&VYDMztWXxbyH$p3K=@*M)(BH=B?+$MWMT;z7 z-7?mMTt&5CM}7dB+k=w5h9aI1FcD-`B2UVQA>pXl!6`yj*~uJm>ph zUxiDHJbj}dJrlFse7P;n8k{ECSY|Le-}EW?8OLX)qIg@nDcPzHg!YY2#l1ApVvTbR zto*MYc&y1?d-S-kE@?#aV`j{3H=vwcPN|l{#o3ISPNPYR#q!Agrl=O%k?V#ypFuUm zx~TGfSK5xD>^}$UdzZ~)*iQ^Kh+59qNX??$zgf}vyTRAI)ucb6HpUNkEY)t~FV8#d z{K2c3oVvvU>76j$a?Dz?P)f!TtY#q5q&4=uAi_km(^Ul)*N#yj^KmA53~_97DuP``+89mEh*hjr#wmsO$O_ zX`csI0fGS2Pga8uJFj8;dz3)x;^kYS{dIX>qxNo2- z`bn?SsCH~=9kQNxEY~quHJMah``jI$3&upTHa4PYhcIoeI_#^mY;JF3ZOp^x zG3gRGdh8%M*Vn?Y!wIGWudG|CgnXK_q&f2_Uxulrn=J2Si77HSjdP{@2aBjly!G|L+14Dg|L@8W7=N< Z1^{ctoJ~SsgrNWc002ovPDHLkV1lEqWYhov literal 0 HcmV?d00001 diff --git a/doc/_static/images/button_search.png b/doc/_static/images/button_search.png new file mode 100644 index 0000000000000000000000000000000000000000..0160b81ab5034ba55a704d049534356a289216b3 GIT binary patch literal 3259 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 Zxrp9R-o}6Y&E(vJ`-(50{BLu7^IzPYJ<|XH literal 0 HcmV?d00001 diff --git a/doc/_static/images/top_background.jpg b/doc/_static/images/top_background.jpg new file mode 100644 index 0000000000000000000000000000000000000000..aafe1f72ef27bd58af06ca3ef6b6a085f6cf4ddc GIT binary patch literal 500 zcmex=T;Nd3XdtKm-mL zSy)*)*g5#QxcEi*`1s)BL^J*$U=ZYBP-Kv0W)x@ci+Wc+`GA(w#>2!O6c09F=u zpa?UnC^OKtYyv>V9Lxxn3=Bbx6Bk}&4rUR#!Y&~Q3=}4AWLZY$Kp{b(0;Zr#EFz*} z|8FtyFf#(}W)@_yXIS{uZ}ZN1f9y1m?mhQgxislomEG1IYp3&TmCil${ozOVo%d7n z)paWR$u6o_9l3WzindBlJdY#RqD5hf~+tt#8lVqkVsW@(pEl6osJ<%y}e50pJ kkfth^nWl!vqE=~ +

PySide {{ version }}

+ +

Qt is a cross-platform application framework from Qt Software (owned by Nokia). + It features a large number of libraries providing services like network abstraction and XML handling, along with a very rich + GUI package, allowing C++ developers to write their applications once and run them unmodified in different systems. + PySide aims to provide Python developers access to the Qt libraries in the most natural way.

+ +

PySide is built using the BoostPythonGenerator.

+ +

Documentation

+ + + +
+ + + + + + +
+ +

Modules

+ + + +
+ + + + + + + + + + + + + + + +
+ +{% endblock %} diff --git a/doc/_themes/pysidedocs/defindex.html b/doc/_themes/pysidedocs/defindex.html new file mode 100644 index 0000000..40f4f4c --- /dev/null +++ b/doc/_themes/pysidedocs/defindex.html @@ -0,0 +1,26 @@ +{% extends "layout.html" %} +{% set title = _('Overview') %} +{% block body %} +

{{ docstitle|e }}

+

+ Welcome! This is + {% block description %}the documentation for {{ project|e }} + {{ release|e }}{% if last_updated %}, last updated {{ last_updated|e }}{% endif %}{% endblock %}. +

+ {% block tables %} +

{{ _('Indices and tables:') }}

+ + +
+ + + + + +
+ {% endblock %} +{% endblock %} diff --git a/doc/_themes/pysidedocs/genindex-single.html b/doc/_themes/pysidedocs/genindex-single.html new file mode 100644 index 0000000..9aaaeb0 --- /dev/null +++ b/doc/_themes/pysidedocs/genindex-single.html @@ -0,0 +1,46 @@ +{% extends "layout.html" %} +{% set title = _('Index') %} +{% block body %} + +

{% trans key=key %}Index – {{ key }}{% endtrans %}

+ +
+
+{%- set breakat = count // 2 %} +{%- set numcols = 1 %} +{%- set numitems = 0 %} +{% for entryname, (links, subitems) in entries %} +
{%- if links -%}{{ entryname|e }} + {%- for link in links[1:] %}, [{{ loop.index }}]{% endfor -%} + {%- else -%} +{{ entryname|e }} + {%- endif -%}
+ {%- if subitems %} +
+ {%- for subentryname, subentrylinks in subitems %} +
{{ subentryname|e }} + {%- for link in subentrylinks[1:] %}, [{{ loop.index }}]{% endfor -%} +
+ {%- endfor %} +
+ {%- endif -%} +{%- set numitems = numitems + 1 + (subitems|length) -%} +{%- if numcols < 2 and numitems > breakat -%} +{%- set numcols = numcols+1 -%} +
+{%- endif -%} +{%- endfor %} +
+ +{% endblock %} + +{% block sidebarrel %} +

Index

+

{% for key, dummy in genindexentries -%} + {{ key }} + {% if not loop.last %}| {% endif %} + {%- endfor %}

+ +

{{ _('Full index on one page') }}

+ {{ super() }} +{% endblock %} diff --git a/doc/_themes/pysidedocs/genindex-split.html b/doc/_themes/pysidedocs/genindex-split.html new file mode 100644 index 0000000..ab099e5 --- /dev/null +++ b/doc/_themes/pysidedocs/genindex-split.html @@ -0,0 +1,30 @@ +{% extends "layout.html" %} +{% set title = _('Index') %} +{% block body %} + +

{{ _('Index') }}

+ +

{{ _('Index pages by letter') }}:

+ +

{% for key, dummy in genindexentries -%} + {{ key }} + {% if not loop.last %}| {% endif %} + {%- endfor %}

+ +

{{ _('Full index on one page') }} + ({{ _('can be huge') }})

+ +{% endblock %} + +{% block sidebarrel %} +{% if split_index %} +

Index

+

{% for key, dummy in genindexentries -%} + {{ key }} + {% if not loop.last %}| {% endif %} + {%- endfor %}

+ +

{{ _('Full index on one page') }}

+{% endif %} + {{ super() }} +{% endblock %} diff --git a/doc/_themes/pysidedocs/genindex.html b/doc/_themes/pysidedocs/genindex.html new file mode 100644 index 0000000..a19aa80 --- /dev/null +++ b/doc/_themes/pysidedocs/genindex.html @@ -0,0 +1,57 @@ +{% extends "layout.html" %} +{% set title = _('Index') %} +{% block body %} + +

{{ _('Index') }}

+ + {% for key, dummy in genindexentries -%} + {{ key }} {% if not loop.last %}| {% endif %} + {%- endfor %} + +
+ + {% for key, entries in genindexentries %} +

{{ key }}

+
+
+{%- set breakat = genindexcounts[loop.index0] // 2 %} +{%- set numcols = 1 %} +{%- set numitems = 0 %} +{% for entryname, (links, subitems) in entries %} +
{%- if links -%}{{ entryname|e }} + {%- for link in links[1:] %}, [{{ loop.index }}]{% endfor -%} + {%- else -%} +{{ entryname|e }} + {%- endif -%}
+ {%- if subitems %} +
+ {%- for subentryname, subentrylinks in subitems %} +
{{ subentryname|e }} + {%- for link in subentrylinks[1:] %}, [{{ loop.index }}]{% endfor -%} +
+ {%- endfor %} +
+ {%- endif -%} +{%- set numitems = numitems + 1 + (subitems|length) -%} +{%- if numcols < 2 and numitems > breakat -%} +{%- set numcols = numcols+1 -%} +
+{%- endif -%} +{%- endfor %} +
+{% endfor %} + +{% endblock %} + +{% block sidebarrel %} +{% if split_index %} +

{{ _('Index') }}

+

{% for key, dummy in genindexentries -%} + {{ key }} + {% if not loop.last %}| {% endif %} + {%- endfor %}

+ +

{{ _('Full index on one page') }}

+{% endif %} + {{ super() }} +{% endblock %} diff --git a/doc/_themes/pysidedocs/layout.html b/doc/_themes/pysidedocs/layout.html new file mode 100644 index 0000000..eb57431 --- /dev/null +++ b/doc/_themes/pysidedocs/layout.html @@ -0,0 +1,147 @@ +{%- block doctype -%} + +{%- endblock %} +{%- set reldelim1 = reldelim1 is not defined and ' »' or reldelim1 %} +{%- set reldelim2 = reldelim2 is not defined and ' |' or reldelim2 %} + + + + + {{ metatags }} + {{ project }} — {{ title }} + + + + {%- if not embedded %} + + {%- for scriptfile in script_files %} + + {%- endfor %} + {%- if pagename == "screenshots" %} + {%- endif %} + + + {%- if use_opensearch %} + + {%- endif %} + {%- if favicon %} + + {%- endif %} + {%- endif %} +{%- block linktags %} + {%- if hasdoc('about') %} + + {%- endif %} + {%- if hasdoc('genindex') %} + + {%- endif %} + {%- if hasdoc('search') %} + + {%- endif %} + {%- if hasdoc('copyright') %} + + {%- endif %} + + {%- if parents %} + + {%- endif %} + {%- if next %} + + {%- endif %} + {%- if prev %} + + {%- endif %} +{%- endblock %} +{%- block extrahead %} {% endblock %} + + +{%- block header %}{% endblock %} + +
+ + +
+ + + {%- block document %} + {% block body %} {% endblock %} + {%- endblock %} +
+ +{%- block footer %} + +{%- endblock %} +
+ + diff --git a/doc/_themes/pysidedocs/modindex.html b/doc/_themes/pysidedocs/modindex.html new file mode 100644 index 0000000..0392edc --- /dev/null +++ b/doc/_themes/pysidedocs/modindex.html @@ -0,0 +1,42 @@ +{% extends "layout.html" %} +{% set title = _('Global Module Index') %} +{% block extrahead %} +{{ super() }} +{% if not embedded and collapse_modindex %} + +{% endif %} +{% endblock %} +{% block body %} + +

{{ _('Global Module Index') }}

+ + {%- for letter in letters %} + {{ letter }} {% if not loop.last %}| {% endif %} + {%- endfor %} +
+ + + {%- for modname, collapse, cgroup, indent, fname, synops, pform, dep, stripped in modindexentries %} + {%- if not modname -%} + + + {%- else -%} + + + + {%- endif -%} + {% endfor %} +
 
{{ fname }}
{% if collapse -%} + + {%- endif %}{% if indent %}   {% endif %} + {% if fname %}{% endif -%} + {{ stripped|e }}{{ modname|e }} + {%- if fname %}{% endif %} + {%- if pform and pform[0] %} ({{ pform|join(', ') }}){% endif -%} + {% if dep %}{{ _('Deprecated')}}:{% endif %} + {{ synops|e }}
+ +{% endblock %} diff --git a/doc/_themes/pysidedocs/opensearch.xml b/doc/_themes/pysidedocs/opensearch.xml new file mode 100644 index 0000000..03875be --- /dev/null +++ b/doc/_themes/pysidedocs/opensearch.xml @@ -0,0 +1,10 @@ + + + {{ project|e }} + {% trans docstitle=docstitle|e %}Search {{ docstitle }}{% endtrans %} + utf-8 + + {{ docstitle|e }} +{% block extra %} {# Put e.g. an element here. #} {% endblock %} + diff --git a/doc/_themes/pysidedocs/page.html b/doc/_themes/pysidedocs/page.html new file mode 100644 index 0000000..17a9301 --- /dev/null +++ b/doc/_themes/pysidedocs/page.html @@ -0,0 +1,4 @@ +{% extends "layout.html" %} +{% block body %} + {{ body }} +{% endblock %} diff --git a/doc/_themes/pysidedocs/search.html b/doc/_themes/pysidedocs/search.html new file mode 100644 index 0000000..d745532 --- /dev/null +++ b/doc/_themes/pysidedocs/search.html @@ -0,0 +1,26 @@ +{% extends "layout.html" %} +{% set title = _('Search') %} +{% set script_files = script_files + ['_static/searchtools.js'] %} +{% block body %} +
+

Search Results

+
+ +

+ {% trans %}Please activate JavaScript to enable the search + functionality.{% endtrans %} +

+
+ {% if search_performed %} + {% if not search_results %} +

{{ _('Your search did not match any results.') }}

+ {% endif %} + {% endif %} +
+
+
+{% endblock %} +{% block footer %} + {{ super() }} + +{% endblock %} diff --git a/doc/_themes/pysidedocs/static/.directory b/doc/_themes/pysidedocs/static/.directory new file mode 100644 index 0000000..176338d --- /dev/null +++ b/doc/_themes/pysidedocs/static/.directory @@ -0,0 +1,3 @@ +[Dolphin] +ShowPreview=true +Timestamp=2009,10,13,10,27,39 diff --git a/doc/_themes/pysidedocs/static/bg_header.png b/doc/_themes/pysidedocs/static/bg_header.png new file mode 100644 index 0000000000000000000000000000000000000000..843e7e2c5a85f4ced9bc4d4f90dab4a6d82aa3f3 GIT binary patch literal 36012 zcmV)hK%>8jP)$!V}50Lk2Rp1-SuQb=f+680e=0IJ}?0wj{1mSXSg>jeZMtOfrP z@5TTmJm1s%_t*bp5IMLe5H05#(Se0W)}l8x(Me zkfXkFl8|G+@y@R`0sf8xE(ZWdiv7xjqe71Q%Cu8LX21l>#93l%2uL{FXxr7qnm!DS!c_fdWtkT0jpN19M;n?0_@y z06ri9go2HL4dOsD;DIcV3wD75Py|ZBK~N3qKqF`dZQu;(0_VYHa1Go7cflxl4ESIg zyaWs29ax4S2n&%RIwTD#Lh6t%WDKz&8^{^*g8ZRSC<2OwxKIX^3+;xApfac$s)w4P zU!Zf)W#|Sp3_XMbXTScoIygM=Y52oKqg6e1N!1JZ`{AOpxfgpbT4A5a(+ z9i@cQLs_BRP=P2mDiyUIRg9`eokVq_`cd~#lc)vM7c?0yht@?~qTSIU=vZ_Xx&U2) zZbEmUucAlM)97~?42Fr(#F%5;Frk?!O;>vj~GwfNvtHECSE5_5IlxDH|!-lnTmO${otQI9^;s+)+GIe7ks!_&M=$@kJ_~YDD#+CR2;4Ez}#- zSsIq6L35^YX!*2bv@5hJIzm^aJJQ+o-SkHKRr)jo!_Z{7GZGj@jGq}pj0Fjrgo#9u z#1@Gfi3<{ZCc@NUx-*lQCCoF-G3G}}c}aW8Xvw{jZIUCBOH#5@c2dz&g;MQOqf#HG zm86}e6Q%b{cS%2yLCNUI_{n6+9Fe&yGcU`KwUTAa7RsKHeIy6V>B#xZ<;WeA8%1>8_cr*{V6AMb@&_O4Vx6y04AVW@#sCAJ)FB1M8UT#Oc)N+|h+~ z&2-~+59DJKMe4 zeZj-rW1C06C&_c2XSL@uFC8zQSC2RB?csgEdt$BnTJG8|AK>HebHL|`ucmLR?{9t> zKVQEZzvuo&{<;1G>*(t?t!r8LF2Et6B;awNR$xY8Ul1iIJg7NnDcC8vESMi+5V9@g zR;Wy9d}wzVHY_NtDQt1Q^ZJA9r^8Ld3&O`XXl~fD;l@UpjY%6XY@%$6+;lbq9T6PS z67eb0C$b@OG0HuvHfn+G$Uek=$+6>WL))Xa_w7*Kk-uYlr|Zs>y9m1yciql2%qz=#yE}MyPriKq&itt# zTz_aS5G&vnjPJ49Q}-k4$M_$I_O9Mrwf9RQr|@QxVNpfVr($;T&7X{Zs{CnXU(CLt z60?#crI=D~>DYeT{U^()W!Ys@2fPn-mMfJPmcKo?>EMkDlZv`SghLsJ_?2Fj-BoH; zrB$D*RszQ8#Ed!j$w{v9(&#x z)HraQb-cMrrm3ju^9k+={z?Cn{mtgh%`I{*C9QC4M(f%QLRVZDzdN*h_?*YNz8N^B-^?%sxzd`1(=iqvgjtC(sjxPsE>8Je7Oe@VoZ!?R+!- zg-NH$!Ds89J)UAuz5FBXk5AM2&&kg#W)x?dXN_mi&$-OqeX;(<^vjf&%ku?)Qva-d zrS^j&=VF8ST^QsH~)_a{HFJ`8*e{y4Lo z^$Gi_^0W5mo-dwXCRUPHRzxl!asiPGh+IJA0wNa>xq!$8L@pq50g(%cTtMUkA{P+3 z!2hueeBHYd1R`9HjRO#n1Ay0U0II41(1-zm68;ZXcLNq!gFD;+001F+R9JLjb#!QN zasU8$+Vdz)&sPXYEK1EQNmcO4%uNIUHxLFU-d5%3001BWNklW)#{eiGTPmSWupPZUxs0;C4CzlLJ{%Qk;0Ry&w{AV=W zatmr%LzSvTu~o>>OuiOD{1J&R7 zm;~qnG2b@4+fDL~miLN(iUW^N=vfutBNe3Zy9j@3Z`u3pKZU0I?On?K%J46x5C+CR zo}Nn>W9(hh2qEorN@;%$tzjP%MfR6U36&^m|5L(l_Al)3j1t<=!RT0Y5Mj?y(&6nf z?D3%OVd5wmrtP)u^OxS)I^4Hpec^$-A6k*(13hTDY0jKCdyw|6S_N_-wR^u2S*s(y zqNNdu5Iy_Kg}s{gQt+jr%WwZ}=xPgkoPg2v!%W}p))+15XUTUalKwH#df(`Yy~vXW zw?;@Jtk11y>AfG&>v7L6|Mp+oPl$%8$MvW+x*zAGy4)P!+AgcMZm?h4N5m_uPpsS% zOVy!3w|yKoapV6v9gNZfKfR{Yf&vi zq!2~+3xUS&8f}BRrf;`UgtaO`oFh&c9TMt*Ad=%| z^AGUq@8cp5TywxYzi|6f>=n2LTm`NGcDx!hbfx?-doGGEMjD1Y8HT=;M!CjXy*8h6P(B-3LxAH=;u_8r%B{q0L0SGX}otZ;M@S&|&qXInESx1*ZQq#vVb zaB&a2HFio|+$W0g>>3_lma&RDAn3M_9*b}O{*U(E(5>FO)mU7hUT>#gC3&16wK{WiUm|qQ_IQ=v6FU})!%=fs*OeYZbIQxw6 zc6&I*mwy#M`;W1{{=tD)U754MWe7W-904+d<2I#{(w~_d&mx|5NdCzT)6aDni|GpU zl@#Dh8Xn-F-0($H!oMB%?WS3Z!MOJ9_{ajX^f2MrPJy(AV|!x#2&0Bjc)!ASMYwF= z=+Cd<@l_RxjvaT~M~%g|{@};|ViZMvbJM(Y5-)!nuf2{<=8X3P4_dywgq0yO24(uL z#)N$q0VVJBMQu@Q)Gghhue$whO1Nwh*M79J(YHoTf=9P5OY_ImyQ@3M+SulcYnxKWWA`qSikeX^95amO z46LJwVDwUpi-vCO^Ap7Zj-?l8JQj;UoQWelzG>+34w3f)B7bfTKle}Z)nAmu-Ur0p zn#!CZb}TGAUgM|FVNznpj_?w6DmpiJ1w4C4P%MG~HA6e?ALIElV=-$P{_%F)B~?RU zzrf8gvIxhPEhs04_#wA+y|LWfzEhSR@7K7zi@h3mD#GPR;^|d9x)Mb~c5u*bA0-yw z{=@VqKg#ZIeff%h^KE?pFLCBH&DQ%2%Ac{IyoSLd;*7B}B7$tuS;Z_B$Bdzx;JC6o zD;V}yamortMh_s(Ar9!^WD16{i0QV!$FQUjdF?_Y&}YeCL;j~F%aVm>sl2j5tW5;@ zBIXkVJ&_YD94I@{R`dPwFu`th`QPHDe~%k1HS}1rNEnVI{--_dCdDYmtqPa-i78)a zc%9N@<5e6)2QbnOAE zB7Q9)-ymNIPv}`fadNgr zbC5d-XUIr)d?ySCK<+`2EzPc2Et*wFuTY2 z@o&0%YmC2ok`JX@&-w|DOJc`^gtX%*I#f8;rnT(YzB=(&q&@_M)=`ae_IP zGQDFXC?3#WFSh@*6X=A`M~fNI&{Nx=v5GUb`*QX2|A@CHbi9n&@sQzI^FQqg3ybMF zWJ=4Jg~XP|#T$69BsIAWj94=w$H7}7gEN3Ab3_+JGDU4lj0}xx1;ggo{vrOO{~RYy z{KW5C!*G0!;dt3E<&k#Wdi>S!1{V|7@w|Tpel|0kG)z?sb3ne(e&JLyW!7$Gj}N|I zVavjCM%uAbhX%)F?P+ye@boK>aHqtTeN1ZHu5f-Ixx$w>@Y%%#9UOPtM}oyWf0liC zN3R>bw_9D=#M#&I&P#apO#+m=EmKZ$d<6@01j>Yx5h)T5fFcKEktf1cMTkszsu`XV zq;8du`J-fNEE&M0Q!T*vGj=G2R(MUrzgp$>3Wt0SrZqp_{gu7bQec{xE1J5-Ih~bJ ze2-(wt%YNm4wLeH@!G$^D<^3-kTGwaCOj)iDWzBmypEBa^&`G z8(cSd^=-WO9178_A8+&Q$9)G?B<326?&daMkjy&{?GV!H8SI+rtU?B9*!^GnWRS|DI{kmO-}%4E_TbzU3oIWOPJEDvhKzB%a_1d>lE}WDDeo&> zt#D-5G!=5CPS_0I(W60uZ&V&yD+n5I|ptDXmUVatpi3I&yJnwtobo5k3V*pu~=-` z@p2Exm+V6i^K;l*c08&P38WFOkFmK=GY<>Imqu7h@RbeRGoN=%t=kS&quBe4kKi+B zzms*@T)j|#`#C)SbzI#fGu(Z^-HTXVN8a~Kb{1iyj8s?2039j6+-JYhq$ZavZn7WN zJ}hDdgB~EgL)m%99I!eBamun`PsJ2g1borQ6f&F{z>z^GC=<~RHm@jh>NWvUJWNxg zFaBZqoqt0WABquqju-SC!?kd%=4dGosXrxm4wH(O=Ip>zCnTO;zKu(F$TiU(nEg97 zIbyf3;>EPYy?icnEGHOEya4^nKaYR>&+wUtlkCT`S{OUHondSAYJlSujUwN%gJY*N zNI9$Z5CM^$6HGJg&X)BK7?X{eY4HxPEmF6wLqyyeW4ple07n+>NONc(MZ-qeO-LJm)l78Vo;QVW3#V6mz z98N4_I7HTCXIn}*Yj=xi4vQ_e%8YT79m*x+8sTP2Af7nSoFk!;pIpnx!-r%*_nHQR zAS*&et?_ndCr3E%GuTl_rGOFZ3EB(FmZ(Nj#QnIJMmJsPo#uiWQ?QDQH!ghnpJGgcWxArk&C|3tT*>Yrly^^6kWkUv4h!o`8 z-3FEfe(7J}SAG@8PV|1%`e}0aO$rOg<_?$SE%9q$D~P=UO8Vi`k4)nI&Nhe0Q_~y# zkmmmcVe!-PYZ*jj``d)eCr!H`yL_k{gx&l$J!!#eFoWt<%`stE=0mL z)`19DEeX4JZ`hqc_GETnID3Yh^9$)Ko1G%8UA0K;Wl+L6w{WMNChQl@jPQPBr+7y3 zY@Nziln5jPIT)s+wjW8(-03nWBPZC>gzXzI9#__nKfZg_F8YB&)>`NvzN6TuJXkk`++ zU3p04gDkvZ%N4lknV^hd%+S*ckr=V?gqoJ!YWl0W^4 z$N4-&kJzz04HFX!w8V2frW1~s&fAw}UzC0P%@M9_;reY#au|Dd4z6fn5uBA18XF|> zWqUvin$88`|o(reHOF?7dp%|U7`g83Tn zTcAS_D=_s`2*18MwHQzTN^8HWX~(1+BaA8>o5#vrB1C+MaBQk}V&S+?xhV3=zP?jn z(o#v@jRN-!NIPE6`yEnr+lRfW|Ng&9K30o~3&Z5G$C5AqgXn?JH+78nuHp0!uHM3A zAF3tl3a+0fg8_p6*brE>oX4XwBsnss!!56pRV*vJ?>yk;h^dr0t92H>2F?T-)QQfn zeoqT;F;Xd_*Jx{Yq)+Ii9$1WOIB(5@y&FE2v6QV!y^^42a{~*H|=kkd_ZsGtJbjS~SjU0UCAeU#S8wU&PCQ zhCADBf4N>*kWnmuSdT#(V_1t_&OKt=GhGLs3K&LwAN?bPO(NWO_2tfb3>oUDrI&g{ z7`G6{HgVv#Vf`mnC^T*tNTW7SrI7M)Y!!A_N=ng=TO`s9V=8#D?^+&{x7`xtQH|Ap zoySSH(BJJJu8(5!;^1RDP*mESJ3D&!b$s)W@a`M5zV{$-&wW^3p-eauA`(_1oP6Op zGUr;vv0tOJ07nkxil@VhyvZb7WQ?=UO~D0tq+_yZAmxlWJG{^VRvg_UDMM4;pmVBG zMVavCjmYV{gCyFk-ugfB(jWSIxjqZ9DSO={vtu^OGtrFR){VC5BFU(8?o} z3rH#iwkmAy;KC-Z-(k;O7y@V%;ZpL*5LJ)3UfjOwtr0E7-8;Z9|7ZC5U&8U@c^a!9 zmMZRyEITGI$T1cxQnZ|`WWu7H&%-;Y9S4hrd_PT|CA|fA_H-1SuKqbMqu_MSYx~5J z?_R=UKcCsc4}%{!Wm{AlJtggEcX_1u3hXzyu#Z~>9-6~fj;gt&TgvOU4^yKkzBl;z zpXH5P<5ynR-}@F$K1V#|eu;7-){dRmtzv-bEkX|1>&9_GBA6@c2BR_8e}`2*@9kywtuyQ!a$H=vikmmEQ+q@f z@MSMf!z)8fvA;Ml^_ahAO;NsP!xI9rqx zKElZabK5j&b6N{6%nXsG@P;;r=DxlhJm+xo1xw?T8rSxS_208-Cj`B}Bcb?1P%E0E zE^3WI996o#yl?g^g5z_06kGA=BA#832Zx%W(QThHjpBd!uTwvV{21^3e)7PB>9ao@ zJ@8CzXZNSB;N9D}eT_J8Vz{2z*`!+UJo8#4`}rwaAtH23b1H|kpkNW%;<6==tqz$L zaux!Ku;Auo;^`d1MRCpo8G^S2yKL5yN0gDE`80*Wp`zVfV5XUE-HsTrOf?uboyqdDs5a z9<66*44hK*gKy)^+jb1778XsG#ed%gmsAm)HMEYm?*|OYHWD4Ac1(lZrZX&Ypsa(B z<7>)sK(!FF_1e+JI0o=cU6Zc?gkxG^& zr*0;h$6uET7qNWd(uf?++OOHTAk-7Q^p|j|y-S*Rt9dT4&3*5{V4>yANFai6(S}tl z!f++DHWoA`movn3NfzPiA6L)+Ysxk5GY~tkn**}`9O8MHoRg0tw4C0iSd5-DU=6oYd~?XadfPgGrmlAu^2&B9!WxV7!>I;{%Ux z8?R~Xl(@1>Z^!-1=x2k&42UqMp45fCn1eJbn&#?0WzTPy6j)JeJhhC^t)`huIuh4y zAG}6Uy*l>^J@qSBcAx)CeCyxi+DV#5e|8>s--G#O%DAxLOD?h81F_PZIAtOt zjMjomoXd(zU|Y6Nn$J|B62M@SXy!E%q>;JaWM#={4~Ib0{Hnf?BJ31 z=vR#-IpN%OT)d1cSIKMa49;*g)|I-j-J&gNt~~)BSjN|W9l!i5xbLpHzYmW~Y?e63 zM?AvgNrpDR(UfQ(+>9!ACqxhZwCjEqx z`nkFEvB%RVzgpe<2zDi2ejDenque6ZB4#DG;milEecjhI-^a9`pv5tTU8Fgov&EOX zWQTGa%vUk#4iLghy&rAkrW(DBqE}?jS+J3p>*Rj_1-H~(}hsMk-CN; z1)Yq951&)QW3K(DYeiJE`#6fdilTy*ZR!T2+~f>LmT~kr)>diwu@tzdXyiy*US^aW zOx)7((~N|NTVuTPGR~dENR_K=?XVaB?H4%`LoJjRH|?NJa=hT&1`~V~@<82(5VJdj zBEby>!wf8F7a`_f&fLmAqB9gj+9PCqLAH23b1p06=rBK}DvngE>)Nz~ILYF+&@`B3 zisa*~6ZQ-efv# zajo&NMJx3T%G$;87~hS}rPoI(+2CTn5)G@#brTlu;QM{da&SWBm(4%u_J+5hPE|vFcN+2D5mI#IvB>VsjHOeG@lsXf-HTHljrR zZ631N3|eF1c+00B369=xf*c`)XWwFKRzv8OC5-gGG1s@$2;TrUgd>a`=Z-$%o9pc44vd>93XBRw|*GS@gm~Oqg_x%5aH_!Oy+0N@G zd09{OkqjXFRL>Ik=wwXn(Tz}bLZS+lgHKDS*}Ty(D3eM)%?@RSqHJ+{7ZmsO1dZiXp2MhT5U&lZBH9UOp-}*@~dY3v!UEx+Bt915ljQT(yJi`g} zN_xT9vt7Ys8UK&3ieO>g^^|ruLzg^+x;}XSxZ!10JA&Ti61e3)?p;Qt4)wFDbvbSd z>LCzi+eNWCrW%kNW6BS*xcsFxe0FKRi#qPM4^E@_jqImpV2NXS_g&fNzoH)fLf!On z@;u(Vh|wKzr)lmRV!X$|@?|Ge5J7H30w>43TY$D4Ip^#P``fbhrV9ffu!(7?5MvOg z6~MyBUAhO^`ME1lh*whhHZEao$* zT$WJe)8i0Kb*>svF}wFGW12Mag#nJN;m9#8t|a;BjF~jpxsEr!jkiuWZC*ZjU;Z~pp>|F&C`3zeOh-?B zX`*+z9pHyj`S5s$%XBrI$Ss{>EE$yTRZ$GilCG68(*$I5KzepMavsyQwQ#KI6}2=l z9M)$^%1B97wv|1O?p`zNj zl{8k9r*;8e)04dVN55<}&%zxyG@@yB|LE|@6GeL&S1+>ZSaKG#E6i&+7fo^a5lhC- zu&ga;Hqk;9Xl(qlsJ4YKG%pOv(B;$K)Fv(nt{>CLG677Ii6P)Q?j;nXzY*vh;GZplX_h zw4O_|4obTHC&l95{f+#mnD|>(v$~o;_Ehruua)^RynYVvzK7x_Vszdd?VHvSQ8u0^Jl*TtPat)Sh)ZV zpstMZICA}`ov`dQ2ZN?+qcodZ001BWNkl|>0`Cl?I7aA_4S<>l^)jC_!E>a83**4_sK?Ux5}@`JklC-{v0?r-)!B~t*)ZI+kw&pwts_A{kg#2L$xPhq^n%Bk_$ zZ<=p7jx545nhCKuT6>>BlyF6LM&z`vDMg{;vNvI71}|Rd6RvR_n8dXKuqhv-Xp+^z z@n^K$X*b_tI96V)$hd4z^GcmdATq%*ra1+|KCfknqk@Y#90iU%krbT%ZcjrdybkHG zOa%?s=PuJDlN1{(xa$N~H#o_@pm3tfW%oq1VkR}N-oPJ!9dDkmR#uB68$BhxSV8NF z{epz!5v72N#CLQxQ{ym#9wGg590aC{gfEBj5(S)q4DWn%l8={tM969Ka2(UJBz0~c zBah2GJydy3N}AY|ZJDU37bUfQ69k!#?M1s@V87LCJ&{LoH`ng=A5)|Fz2D3~RWCV; zgxyU-j(t%LHL&hArpK!p%2`sDA~&Hn#7PW7 zPn8Ep<2a#>SMXAnl2fjLAa+@ib|Kxv7(^N^v~R)buRI;nvg1h|&G$B*L_8umt~i33 z>Z&!vaZ55t9EF0k&@ZE9zL_QT6lKlX%2PkD@g`s2%1BO2v}akva7>w5cFU6cL9vhTe;?oezNwPQ#+sPxaf_!c6=~snp!R%FoW=pQciNxS z`>)wsB9sV)dcwO`ys+#bTuBu?$2@L{86vy86E0WTt%%Fdr;{W))DLh(an7dDwT0te zBrO~Z;lr0L99M0Iug6sn95rRF1^d}Irlfgp2W8%j603$gq7v$co5&!u# zXIaXbpVv9_S_b7rVrhX?i}hm|_UWldBN7BGWcPE@2QFO2Uw#9xU#hdY$;N7$*-@fr zk62lDY-(o5%KL(+X+f@<<3PJ;?kPxDKzSL%xYbR`_qwtW{wK5JAY+8CdLcf;vSa)A zw@b3MEanrX4)rq}QJh;_HBB$+l}|?}iC2L0yoAp0>EAu#h94i~hhxBwMcRw-_ z=KHj|`0BfO;V*D)uNcgYkE{%$dHW%1aD&DqJD#~P{^^ha5&A>B)jVk&AUjqZRAb{@ z$Hw_9g#T4|jUil99;lWUq-fi7+nQipV?G;4>M%dX(!z10?WCpc$4RVY(Kh6Rjz~PY zHX+`;-lO}wd3U$}2tf3EpJHD8{{BMZ*hc@0U+drh)cB^t`E$5>2E`5&NwT7O`PjH# z9-JRE<;YIH@a{2I2JBzusmxhQws({Tmx^ePZzCut_%Vb`T;?EETQqW*9eE1oPIKj5 z(jNu4d5$zPLCu+3X2&Yza|$uTri9rs^)S`+bdCaR$DKnEnpcwp$5bKpLa>hPQkbX0 zZq1VS;(&@ojvd9IPuzTLQLmxc%;h=iclGV>>pqG5J;pBAV{#dT9x zZ97bQ7Iw?FwqqoTCpC!`sVdg;TuxP?ZtwQLpBMjT*H`htBAdY4djF{}r4N6;*vatf z>)5=Ab`;{|TTXFv)pvZuRorPaO)&8GSk9y;*i94B&xK{L_I^u{#|16%G5!YZGlHu@ zsG=*L&o>@#u%$1bA`Mn>y_sxDJEo_u*)^ej(Ve4*&OPRYk&;v26gMj&Ynk%iXCFnc zeK#o?oNn(c%5d_5>oq03x6j@)NU^$(BPX!3ghXSsPvIDGk3@{CH}S0>;N|O7?p3^Z1FJ`{vW%FU`iYdAD#_sRlR?0d0h9%1EmD{zn=mvv{5DRV@HlN;t>i2s zIn;_+;ImT!`_is+l;xa-L=hckoSRg#(stZ57LKK8OWh{yX}Qyo(QOb_OL;E3?^L({ zF#h7-`>jED8UDsSjpT{r{m*?lzUPU;GOriEhdWm(H_|n=YmKjG6V8~-D|@amL@+wH z@J={ai>xh3#A=wUekNi??LTO7k1{Si`Ev+fTXwwAKk`_OtLD-+L$7Lk%?<7KA?}%*-H6^Geq8w(a5Qn#JCPie~ec6=u#SD^xG0mi5 zI0l6;-z@YnZWfYEba>qDKg8NyhsA%_o+Z)!_YXez6}k3cb?G|ZeiL^taiLnmSj8wRDVun4u>N?}UNM(1 zaArk9YBl+eC2_!};Yz$<Qr{n>V zSMpM!^d>+1nAkPvx&6+?SId&o7ZBA2)D(n*|q1NjK6OUReGzqR&x%~ON0TPHLK zl^rvmAExCV&JD=Qgz-LPzX(WhtPj|?opRwy^2Q9ud0Y&V3?Bs?+wo(NS|==; z-zsstXcrQ*kY?RisoVcPEdK35cOCxTz1NE$d1UbP&zQO6_34W^bqd?p2z(_c<2ZAh z%XDu;&7O7uZM^pCDn7JVGYDgnL}hstQ{DqD$rpts%bFoZwyjQA2Wy|5G#7FCB1s|y z$C}pJ^2oDe7rX5B1m|90f*f&zT2;{VMsWx*lEGihGOpl+4XwO6#F;CIrixhrrgLAY zU~P5@aE2{whE2Z1KIYf3utM!o1UG@*7kK>+e(+sfeG3cooE$x%KW|;J-?Td199YV8 zIYBNw)5*yWf4z1gLT0~b*DNOMfaTsrM-JbJqAYhx>Nqt>CV6_OpK2u|d)Ftdo9d{%x%(xh+bfUK-~ak=VL2lgfUN36$Gf_t)n(9-dTZ zarFwraY_z{h(p5KhWn5*J2o=7#{w60eN-(Rlg6C{z;bnQ#`mdnag;LlJwT_R?47)! zl-czeks%S(!@8WMzt8uuwt}@KIxAJv0rwibc@@w7DTP{WtYLYLPNoUY3ds$kf(b-= z!QAC%3KbfC1Qd2+3MVgNX7rfGE`_XQ-ZF0McZb4yu#kS9rUX<3l zGDh2}iG9ni7Z}y$Y99BZxcd@y``@imblZ=xEiU#x_w3-aUl{im%sXdr=3NR$cFjqh zg4~*5sAzqfrE^yJ7_-)yAP8w%V|P+gr4m^d^|IKaNz^M$HqaZjIzMG%xy@Y9JBbNoCC^3VU@+Ry}jzbWd^!07pNxl75_4 zn$lG*JFZ%Cxs97*Ese9NYg*cEf2)t8!{Q&q&xG~0{?lI>-1pRee-0;4;`Avrdu*+B zD|I25!X+IGISo6KHg z)CRF3k<>M@_fo7nU`$}18>PIISCDobO_%ZlWIKx7w$7Y2E6s3ynA)l7SkC&c`gR*W zp7X#1crb_rdMOqcu)K`H5OW&w9=^MWKX?J-H<7cTG3XO;w_ali7B}B#DfGpgIgWi{ zitrW+;q1B|y=h2scZacrqct;LH{0a;l*QgCR)_iV7Ll~?Ov8Z{cB+$_T?i!J2MW_~Wm4`}(rN1Ca4|6hF z^j2}Khr1`ZTHv`&y!6Ky-Nf7imX46ND}zqr0)i+shy-I-3GKQtxjcTqjOabb0i|__ z5b{hqRPDLwWS1G%f z+yA;oG3-X9pJcON{u3vLPkt%c`0V5c_m11T=4(Kl_04smM(bDb$am4sdTu&{mo{1l zUz>Bw*~6x3l%_J4!u~EhlFw~aJ8$5|E-%)xsW#CZ+S#(O5P5zoS)-6X9geE;0VXu9m6#TAlRiIyNZvx^#ZOFa~nsNr>bsHbEOOco`5BU?GR6-_{9kxwO1g= zsXKV(C7k^MssWC!VlZGMO6!VUyx76MV(Clmgpoc4**DJ%@^LW2(J0ggbB3C-V>_d8 zLhY43`{-&ZPpB=^;nmY~NnS(6o(Lsm^rV?Hw=vkhZx& z^6=xsN1m<+OU=pmD63xI_9<@KrNTG7Pwj3dNEzfO6IEl}YL;;|XZ$bi;D-!qYW0!1 zm1Co=?-LwTF$MR^OISNDYkG`xs=54lfmtM5lo0Aw6W>p7+MYG$|^u?R9WA3MIrfKx-Iwm4aB_YzuEv>tzf=4HN*^%40D#6O1bgq;^O?? z&F|sPn6idj)+iD-sMU2?PgB#zB2y)VW9d1w!WU8>2pIC*mQO|rmNK0F5RO1ga|lUq z4!c_)2P%VkSsuu>aI&?#PX^E)b3d4DE?C0}WHg*0g0~S>M`Ya|`|bn=evFXN#&WC#z-5 zUh9IvG4f6W5jy6X;5)WZTa`h7fEO`j2nllf36*##Z?y1_kv`Ny1PbhqT({n_XF|I_ zw}|H!1D(2%T6P>`ZxO3CmabEb(ds(xS*2K?Yq#*?i}=oWsdQ!a1m*{kqCQSs5yNzx zDe=_C20v;{nY_yvg77Fz?AUPA5Ie`vZeh@3aTNN14C1|Ba;Tqn>N`l8L8U#XUXwN`?@PBiUOeB8NFP?BMH-#BYwq)3jyE2gY;NQH8`!!?_~pt# zs69s$!jXgH&6|-)F)%J0N4mD7#--)4%X#h8FU`0wx#Gj? z7(QB41S7KVFs%&Nl+ZJiFGRaTdxF~q7PGxHKGY99RY*e>O&LYeAkFO%QR^lE zr9fK0Q#4lGF0oZs3voQ3Cf%2%+dE$Tp*xX#d3@jf!)LxCmQIuxujBMdjIME~&NdY0 zxvG%huZW~)#3Wj@h8uwRS+85zYbT9K)!GwTtS47rqx9Y=;&m&{eM>=E#^ADPBRo5H zo$lOfVVV&{lJA&1>=9TR@4@gDcheN+C^QHaejRUSt}wx9EWCE?dH`zSOZZ&3J;DCv zm=AJm05OLnJLug+lS1~eoKS9kZ=S}dE2r?C{|~3nVz^cv-G~*Hc)La=(}lax8pK=k z%z=1hQYw7?jNuAF5xWcKR`gQ#eOox*FR?_X<3n8|QIb;Si@Hc;l*gIYZKIo5iI(Ab zyPPbf(OeRDUzUy+cf9z+Cr45YhuK4q3?BPp6X(sDOE`B5%?>HZt~i*$xABez%^f`e zAJN%30|vK4WrG*d<+g0)AYXqX5qBn6-bNvaY)Wn;Jxn|t3+@jhR1hnSr@gL^vjy&= zAnqK62uk-;N?(EJN|se9!1LZR>BIG%3_WeZ=YlLGW3f*};zu}RGG%o#iQei{uaMRDQReah(V8XINy2)uYC*G_v^t*v$kXjvVu?Vcwg$jYvnp?6%`VN;7!NW z$*H(_!3I zNPpUS@q9NT9n!d`Y`DD{K#XX*{rUeM&-Ib8|vI_;n+fRHD>ruecS}QcZvVHY@j4zL8D;S9Qjfd z8M=Y^d8}|4e`VGkd!eoPG=2*NOa6M1AYKX*8@?kZ&SXWVGxeV7@6r zzNDxob+Xjo_-tLAZ8tBXW)|FX*zqvtYU75pJtMLMyLQpO0~6m)GP+$(=mE|b?Cry1 z)*i`(GGwr=0?fW4XOR@sq)lMfuiBwD^?+b6;XrEQeb-t^9fdNk-x1SP#}FS zk>}jGwNH}8qQI@o`15b!^m|n!_UAUTLDrL!^$%yA6H_64)}z$-0AcNzj3-7*>J$=# zpq$nN(}?z>rIvIG#bTZc86W0bAF0T`!=-NXD2bxD){Q;C#KCciNn5Puy)07QcjQxw z48Ql=9WOp~5t;gg$_MVB|J;}3#e2rruHoz()PK5eX!jZg)48_w?Wi3Xl7j3KF5vxc zbx~)lgN@Hj_TMwtub_=drf{{_IV+I5LXuJewBY+&S9Gm>(q^2{aV$HIoJjz2G{m2ogXjegP_hF(iY38ZtXmWnwF+2uG*Ts7RnUbTp#PIovh_~s$};a z`Ly!lPOSNe_I@vU^wEV!pKha->fN_+{WPVo)itWhSF*7Sio1t|!Vs?66S^fta>7Gf zwfT{SwfpwBU&qZ`Km?r6w@@6nsD@>pq5mMXZlNnBto`7j%I%d$E zUc?J@fgMi^pQ)}yllv`FA-K|nGz^JZe>xEy#~{g~F>EqRQ4FzOQi@xY`an*VlF==S z$oDqP2#&KH#XioT!pnbw%lo6bx$)wBFNq^@powW{mB;MYix#f#PtkP3G!(@t*hj`o zdAXt!7&R1F(U12A=}_QM(;*@$o3?4Sh2u05aiJ?ERU-7bH8&=@(e+xEcYzh3&Mf(b zZbbTMx5cI26Hm|G_wa6$;qBM3b(z-j%97i27$0O&vuZ(kZ$zApZc3#5N?q;Z)-s0UlAsU=QjA^S5Z416>{N4^70yj8nSg6oYZpS` z9QY!%1)23T6+R!%|1`MSqeHE4QQ#aY-5`D0^5U3UCh2yv{M&mK}!XN5RWp{ITEG(A9tT591* z@w7z~MPzVA_3Z%-46ApL*cTO(aBNQ|W`P@Ajcq}*m!LmD)I*%plU{faFMJa>ua4!y zet&MhpT=Zda~bqpj_oWJej(D|t|ENnv>sV6m9>uv8RVL+1mdY+asM9FA?W5X;{p6Wv7askhmT`IM6s}x?saQm= zd1X)gvNzNE5ikGAFrpid2YSWV5-Wx_9B|w_caRJ^O&!& zbc^n6l<%J%u`zY0s{jBX07*naRKP7*!lpVs3!OR1$I8NK20g)hui@+8z@?qNXilj|VST&At+MDv(Q=-4+_=*yy6vMgS^z6c`LkbLxc7;@tsQgjB=&C+s*Wov zh|sMMr}tf`TV}Nc$E|6!Nus6uWIS#zpTb1bf*1i*L%uP)Rh+J=qM-S5Ll75LN!kTB z$}0=PeG!_O%3!Dvp$yqYJ-CHF$9!GLkucM)8{XNgU3mz?VxaO~x2Y4({>cQ`8)B}- z$`0LWsd1^f-Y({pB1Qa~Vuln|4B9`7OnvizkT6Jm@ z!jZYdv~INOrHl79`i8l70TqLq=6a8eS!z>oFDMSIkgQH1@JJ4@C(}h+aX~gWTcSKR z<;koOvkrbfncjE@#k9{f;Pql18ih>b?R~lhA4CPlZ4a{_W7NZPiG>1D4%TDPa$FqQ znYklL%!x(z-1-?4`54h0bb{L#@aos`%A3`m+FhAX=7%}gLz`(cJmKS%olIT1$PE4k zp?1b_JZ^Dq&pyR?sn=r<++mjFDQ!e$Ay}$BPHBvZ-lsyN zSnNimkMowL(Pti6eDq6lxH7qX8JFIr8M?(XOOWf*Yq%~9-j#$H>LJ}k^S$MJtM(GE zT}2ZSmJy_Cn(R}VU&S4uIjUH}%LsyNKrDu32|=DNX}L@#%z0ZfU1+zCCqrlJmQ4}H zFZ8(uM(Oe>LXorx^&s9Jcfem^rdZ4)!G4BvfYk{GRp?G_ybro*eSmVz8g~-$fRV5v zBtbGyr*z>oUimYees?lTcGoxhgDhjoq75Eo>BcreO;SoiTZUuKA|)(NB=#FB$xGGV zLN*98`Jt`cQr8m8juU0sanev1LX*Xo9oH6)x9iDLk`0rtY3Wb#M5WPNmb>p0%D#_{2(OJCozv0wns{7~*^cpOHcx9<6 zny0^lWPy}fmC;U`K+F*q5h=p$gi7*6Mr(i#*UPz9dlnNTKl>*EgjNWZPr7iuqFdwn ztZ`+~W)|A%tNvI)Xq8{YbB4Kw(=#5pjVI30V&iUv9gV_{1U-6uWiX+VZF+DaFln)0 zVSj|{ySTNF-4;9h7+7ap4NlcJ%Ekg;UHIl+ES-K;N7aI3`e9)5NM>v{JL`03Ut{$+O&J~7*oH9Y+_ z-1jg>BfRq#Mt2BP$_C?tED(kXtZP1PZ&WSvH7qP+_f2wcIepe*P0Y56mUU+frY;+k zm~n()1tYYw7)_41lEj2OBjy;f#Ni!vOr^D+rC3D5->E{CiWHti8#Bwcms6S?7V}(% zh{aHg_*;E4;jQeEC~WT{Gd1~3f`2&s$1{i&69ZXIqdHt zUc}-G6<&K=hzV(LA(76BGcMP{4p&Oy&IC6mm`^cC4*jdh9kLq`9NVj1aKv58&}`v& z)Lqtr*^ z_FLGh32iM<)(y91il{9UdDJq7W9fT*U|Pf+k+;m=m=uJ7aYSGda~7~GgKo4hs&?td z)27ib#m7vo7b2w5A87nB>xvzg^;{p(I>v4vd4uIKRjJs+HVp?o$3CB)qBz~NaM%U4 z8O;ch$wH^m??Wx~)wqE-U&dd)h^+}0m#8nb>j>qMH=LWCwl(3ABaevAU!P!WjOCs$ zB0sz-D#LNZSEa``@PdoW?bvDI_y=|d+m?gYbVZmoyoZo?>m72rffs=Yjyaj3;G|<`<1|FbDneMlu*aN4Y^$iSFyXi&MGJ|B zrC}-;j7Uq79D_+V5B~F%vn=cldoqI*bBn-$T*EuparQg-_IGiu#>N_!h92~N^0M*c z!PK-zGXTclYh&ydSm_b#7DmOfjQcX2|l+>ZEKM3Z{O@t$Pl;28UwBiURBYiD0Dfd#w9PHu6}^$>AS zp`@ex<7kfpT5bDqJ+c z++8r+xV_0U-8&_kNN6Gr-K5we%bz=%Pl zy9rUBT6hvFLPu&3&r_Ghw6m!6cSeF}?@o$3!O8@E%?(QQtksBQY1?&gngz_*t255&IpghL)P5j`SxVj0wiq&P3BNRJG+CWIBt9cgYGVbVlWkkcvYJZlt zaX1@IJ_N0=+V^6>0ef}?jkywiuO>O$-mvUA>eAdgEbg|C+t$l)--CGKOITUPwR1Rk zhP2}-CvcqXV?3dMCX1L`M|A^t?l9&`(ljho8P~WpqGwsnamdLKu76*}NuT}5k8>$snY{+LDw>Y0W$3~+J1p+DkKJa! zz4HS+^cWufG9{m#dlMHgGONw#D?Q%BXa~^}<}Dmw!_F>E`30{OiIyO#)l`xfr3Aaw zJwze|)`!?)MUI8CqDQL87fwu<-~_y2s|=Q*>;F+F}h!>|XF zqv%sPxV(e&Kfr%@4rj+Wwo0Jv3dGx~5t*g!l&eejYh2kUn!I@EaIAQ`FkwdAi|B>e zJ>zn7$`2|?PO*bTm*&=CakqUOHw%|*D|qY~JoF@rZJc=nx35vfut-Tk-ra^AkP~@w zo5-?T_-ZHu8ClAW^(yiU`}E&pwnl12M8&9< zlc{>ajy-!aE>th&841U^QRU7`iZ0Eq!{ToHm~Kge<9FfNuVU#qu3fsA7i#x4>OwY+hM85sXbs`V)r)Q{0qGPE^e~yzL3pu%{ibmwvLeLc!b4_ zB9#w&aOK*Wg1fZzB*$1Y9NVAU6)oji%Dj?wANdZ8yY1t;5v}Xtp-1qt?(G&K}dUb&JSxC?s+6MQc3X87B*9??DzO_#Bw_s)m|?OnO)vBX7N;t!w&o$xPYh zU?^vpi!cR}bCg2JV_l?E+d-u`TkJJf2xNwz#}i(N65RgX0d1yX|BB?nt<`-i|u{e}z2yb=p1~oyPms*WfzJOxd zZ`AQ;%_vD?g;R1v17~Xe8Po0pD75j_B09*&K8-#+sbk8Di#T@r6wJ1;hm>mt4R<7I z`PcSTwQH6-J&y3sFu|eBPOq@s+|v1y)tEdbnkf@ZV(cfxzK3I+J&PBf$E__S%UE3Y zbsv_?$BJ%SMt@_B{Ss^akHAl6pRwWIE*6ec&arE_P>|rbqmB znN{iC3sQv|3Nb?j-`zubjGp>=Q{^j7T%r(V6|pzjNew>eSR7~t!tRSZDc!#`p=uS9 zBe*Lo{l=YV#8|A^V!=y`M*8Rs*Wx-(iJ{jGA+mjzxty?!B$u4*%!QyZ`)EwD$j?2G zn`5jV!O|Sjd5gldAQ=%&zBuxgxI6VX!)P<%i` zh?r?MHD?(+>zj)wX5B+F_-gIDI(ZN8R4;~)3Q{fxGxoNDmRn!9+8ZsV-sH&M4@#>T zHW(HpK9EJaX87h%P8$s+3TzA`W$%bMPz<0QlzLd_H zB^0Z!<(RByo}9Ys=MeJXEN(talP$^G=@MoZ6=YmN9ZS`Dg1|eTLj!7I`CfAXsoKL-UTNBzU!e>v*x(4IBcw z)j7_7D@yjUG19dNh1Ao+Vi!-$NFBNOc@w(ch2%^Vl6qp!9ky_VRzv}JG03qKXVKzlwGl(U!!=A@!C>1Tw_Nla0h_LxP2 zy%uFeYh{)ypMMMAdjZ$CQ7q%G4FbDSiOYMmTsC*;renbpd|A=09#^}RoRp*(mv2@? zmRB+w)w-?2;%@uIY*~(n9>kMhMsJ;3V@&o4b7SFiiX{gkPineTvANCFYq&PguH25I z-(21Egh4P4_$z(pj?lqLA$W;Tco#4wX0+b(fP-FU;{^@MS>{4MSNh@d<{M5--tAFf z+wv~5mRx$&v6Ne!c;?Q6iC{`Dm0t|>`iTn0Wcuv;^}|U?ueX;HI!7#GSb}W&7z@I+ zl8w^wEu8)V{`6&%0*k zDh{;2gX?{#XHH}nNzt;o*mc93_T2NmqJF~iaj2Zl_kZmYh2+5m#VMkes0li9Ts=nCuXyd zb@V76eGK&vaC#H13k>34Bq>em%YsA<3aOF4N0Cp6H$m`?2@UIl{ayzgX)OXTg>MMr z4RDN=E(Jm!sET$67p@rO06;4?!=))B4i{B#Wr$lW>~KTsgp~^8qk^bwYDCmnwCwSa zvxe5<03th^vy+dDn)WoNQazF~1l3U3r^A3wdu(tgq1C@$gZ4V!dmeARi%Y=O9@U22 zJ;34H7u-^(9V+Y%d#aRc$|ZR&Kj>yjFKspL;JCx$Zu$Bl3x2C4ucU^*CKy&m~GIqCI)1jn4rqhC__BGdH!{M%wKEP<&kHf>LB*aN95~V1I zSSqP|wB|xV*BcxBhuRhLx%`UYx^p&XcT5?my`z~4_tP5{+*Tta9bEAfS=Joqw4B&d zrVwst#J&dxYXufB;+2#5cQetQ{k#@%$)&5kfy_5}X4@}i44L4Nkh7#? zNN*f=O-psC&GUw3cxZlK+dX(<>q@14>Ty_+vtV2H(Dt!haO!+UcUm~Exf@d}sM|E5 z5C_X)nynE|%(!(z;}Ks9-#%(wa7jf>q*zMd+$77mm5HUC1~(H-Qo22CaJQwO7xAsP z@xoPHYpLL3eegc5{6pOY!!e0SHLW`Kd8DjCx9#h?Q_)hMh2zx@jyo*wwol#`Vd1lg zH*xtCk{b6#m>1Z$2nDJHsY)ic@&Di6mp{pI-`Bmqrsv$*8wUXpAVG=}WF54eSa#)) za8*({DwoQsxRU&u({`LnuRd<QY#3W^Z4$oI3QD-9O-`(+`hnVYJjShYFMj{uI9AH?t@iRlZiWVXbP2Py6*EaTp6 zKI(o^^;TnXy}j$dj8$wuiOKVLZ9+8MEO08r**3Z>xE-)%MmeRY*f3>-$f1&dlR3sS zPL>Pl7<8>=PJ-~N)iX9ZuJlUWw; zczU~NawMQ1B`OAKxV+|2Lxp*4;I-+~dNB=gu!6FwG|L56M(E#Te9u82FHZ5?MZA0w zL*QhOIT8DQueIAZNGfG9d&{6w^Zsu*Y;`>d5lIEm>_|I1gEtx#hcDjVg|mWgIb6 z*YK!(Q$@A6jMMaw8iEkVl_6;`F^x$}<2hv(!_9N8B3iA3{qaJU>cs(xd=NOyHD|ae zU8y00s@GrWx?(pXuF;uM$576wp_F>D{y-hAnz4F?q!<{E+{bK%YkKCD;TZ8fw1zmg zg2pz!F~$FV4X?k>Sk7h#Yn_Mo8&gT%JR>`{>6(cK8w1T|)VY_kZm<_HLa5GjtFgG= z-dlel=s$zzK5o29J6B6^oFCxCD$cLsM1j_Z@^fb>5*8xQ6RH-7l|?BPg3nAz(5z}~ z2x(p=VHQe&v{{@*>1yGuCE2TtZp%@jTnfkDQL3_4d#%yJ3ZcUW9TfdB8Vfc7DGUas z&bLhMA|`4FYM%dR1aZgV!=uZ87VlWv&QR?G`lnOiz*d z2MMw+rmL9Qm^yR9LzFj}?s4Wc&YZw&1N`@w@%$xBCnTrqy@$n)164)SnWuItbD69= z5hpi$3mnYR4Y6Ls@z2_Swf|6S6!rF(|KDz4>q(Ta;mR#K+oZ%Yfxh3zMud|go;iiE zjjIbJ6Zlic35}*iWIrZtG?+C{*=KJu;}qVq)LgP=X}d(*8j#$rq1jMPTNqMS?eFwY z6`))mWmZ_4oO@16wp4m309qZY?yjZCx6DN^)6Sui!g8*FO;vldZ*)XZjsjt^37~aXiq?_Z%FX(au1yUy>$O->V{yH`w>Ezjn~!7q z6mXrOt|67JCc)9L=GlV0IJNDO zBnsOykg`gdfYN+?+kpvAGDelaSuR^WS!qJV+45*x-^@fI#S)F1?3~n@5R!t}A*>Za z*bq-Hh#;pBk?RC})pRfwNPAET1YRpB^%bukX21f%lm|2tMe`kqwg#BaFT^3&c%Hz zZz!eG}^K zZEc$q?lE1S4I#Bjm}PWg-ih2fGj3Az^J zGNF|LFqTQB;_2qwCG-&D2`7o1i&Up`hTn z(6rqXS1k+*CpyA14%9B+RWY8nq|LVGi$#h((PTSj45mDkfn(2GhH?_bS^U+;|NmVX^sto)6LMBDg=x zAOHX$07*naRE&wdo=D|d10USNvu8O^zkI+sd$6DrnR@ZuwFQdhFk{10A+j}=Ssz=j zq70(2FgjQ+;*}KxwJtZW3MMYAMEd&yNZs~E4F=Bj4Q*d=kqy?-tOCD4whD?KGaVpw zx`%5ZqQ`mW5I@u&DM&MlBxQ)6j}kS*ZtCr_g@o!J5~*go43vy)jPjgXIY6R${ z$Zlch3ifB{pTxNhoN41^pRoS?41ahDpL_*(?&4IJk;=Z0cUhbf2#(E2X}-49C~ul^ ztZJ*Dv|-1G3#>+1sT<|}^s)G#)iv*vh494iMaz$%6c4_ej z3O8GL_B0XMOx`aKXhI0)^t~BSHjlHC8JkUoRWi*z;ghLIYbi^z3zc6&Fe+C=RZDHl z@CqTjGrEaBA4LlZ(+4e{SZ~Vlz*9SM`cs`WtS>@i zgViEhO-}Y_3)VxoVxHb2tEvZ8$-zZ7c!tU`5HsSlZbV3@d&$D@cmsxD>!ou z$6~AnIJ<&o7gvF=+{7ne!VA}UwkO)6wBEagV?%_^NZE~8IG(7vb>v~1GhNfnT2{lF z9oHH~y}hS4uY;{K7(9oa8E4{6g}4VPv(*ilPUfshGkC;S_66zQhn~a-&Jx9T4@im) za^(x86ATuZ$r{{JLk$Bpvy|d;npIwl(pk-{1cA~8Y?k+-vyB;Y9j0vR|Gj(1$%dq8t)wfyM;2|rU~De6)x8E zm-+4njweK-c9*M92I&k*w5>V}KTQ^_cKhHK?OdHT8W@rRW04IaCo>Ao^je7CMv-#S zJT7(_L?*J^sEVBEOa(c2l)0>&aJJ;v^_H&8$ad+ku+lJC9-TDNogtS0!QgMITztDQ zSO$vLTqx;SF1JFV>}6hIZs~*(E1_7+o$W7Wg$rNOu(=lM;1R*jYRXMt?Oe5wA{28_ zq%b$D$77l+N@DWs-W=nbxOg425+^p%?+~#g*@3qjIMs*0jyD24e-*#`3U+T(@@AJ4 zeb7(zTMKm+=H3QAx@rY76&wdj;M<+!U`DB=8##5T-XG;2{LXLG15&-clWpx;M3->& zGR6W90}I&*D?PS}n~ash9=oZ!uP*lnky{}?bP|8RZ?HuE0ca+&6GJb6l7fj!b|XaEXsP zZ=%)6z>#t1?(ptQJr@4D=29Zd*7adt&A9L{Q zX)W<5nA7MgW*HY4%}4kJX1Tl~Dg)V@Q#)EWhpn~apAIjsw|aXg8YDI^VE*U0He{8D zUB@dXT*oumG#b;o5Qc7T&6Z=#71p!T#8ap63um#}$Gri$80A{=%F&GGgha)72F_Yd zx(f{68JL^Mm26FKc~z~KS31VB63<|CR>{Go@2qm3oW+wEivax*Z54)`7P3{8HZG&A z;CL>S541>FR0Ldc8CDf>eN22u!wa~Y=|F8v(~QDP7`bTXAaKilq549thIBp8Jg#;c z=6hm|FH7cBQBp~_<|a&c@SRP&|7C+-_-@4yNW+}4g0rw z-*Wky8*k5Y5h}jJz%e^ZX$dqb+-S-^QVaeHC|1;P{HU?`pVl{_-rnh7k7006;oy&P zv(iEhN`?t~tHc+B5uvSB^Q+|};i5rgKf|duE}X^L)2tJj4CptY^C6*vJe;$bVxB4@ z*&~~7DwHQnX$D9ZZb7dsoM>RxgCjv1PP-`KT*o#s*`Ve?*`6yC1ev^OLRc?TTPD@x zu^40_5SOBwsWO{>HC3h*aB8x(McZY*plXI~@H*B?;CQCeYK6KnX|v#cFt3PnQvPX+ zRtnA`a-3X4v&~q}JX0)vKrtuX$F&={G2;r}W{(1Kp?En%X*+M}^ zjgwg4!0qR;QwhiEf+Vi9iX>sXBd+7Ay4RY$pgtP(5~PHHbE~*;oQqVgHp(%h63i?< zo^vtqU_mZSjY7@}1IO&pEW_DMuH?B~Yq{hIF307r0I#yNi8$vjY`*lI{%fZBQHqtJ zrHJybsR)qEdWP5DTOn?1yIci1^tOz3o)Zjr@a?#j zLH{^LJ=`4Q>sRr6mvH+Ac7_;v=r_rx|8h7sV~jPobs~PKxu3B|CT`()G?#Ww1f-E>5a~FHZsu7$GgR7dG(Z zIRe>Wk62(3&`9R$7ZK7xo~#i+{UeC&H!i450*O{!kdf9 z8q^!N(4M0+5T6Zc*I z7uX0~G;^R>Wb=w%a3yuy*%bzh2*kdVhDjkN(r}zlkgNTmguuAh(qs<0U5p)knltF0i~} z%O$na_Minx2Ku;BBljLCWB zN)~3JT7R>doTUw;$XWk3i_sgRov1BdsN#;)89x>g;n>TB)PeGsZM2ZalDu$18A~pV zN<=QJPxO?iX->wRbE+mF2KBtc**2i1&bCKUVia;XIT&FhWYV#D+5S|=ZR*Bm^j#d@ z#;a3oba8r}dPSO2PcWyEX#_F=9p!9FZ8+?SF5(UBw=kXIm0f)D5?;B4H|}zb?1d!1 zZw2K@r#)S8%xDK1;YzY&^ZX=d-_qHF*-xDsjvoOQ|MsuflY@GD*UNZqY`h=IpW=;d zS{|*#pv~tZ~KtsM4<+Qk>ZaFy&C>hoa0?+7ZPHQRacq;bfN3 zc6_XdehXt=AQU{ryP2T4hu8LakY~2>c#mszRw3~Um!V;HbLK5GM*&W@(C=c_>)1I|xk;q1OZPA3d3^gk=Lxseu5@0=RHrPVy@jjFtDO}OU8DG|Pt+q) zy+43G+Q7yc9DD)SE8&<;KqgFyOy&%1iH+LaMMZh&-KBs%F1xHI^={lq}65mk{AA zBxuy+0^|CSK%X@zH5hJQE>!dkIxY-+`wKPxuwLe@(kpD6C^%`t+MkR3h=W_~HV;Bc zL571TvFlK6`AN>+oj^AZ@ejhXFwY;*egU*bX}0F5kh;DO3EPT%~ki zu)80k>r)PjJa=h@)d{`*(3_jX&1JChxx{U@2E{=Tph4nyNEEic|bzag{QxX zyxHd+7|tra!gB<9?>4?UU~S%GtITqvH^X3Yz&;&o4L&ft!FR)vn?4#P8iiUwwJ__D zXb%c}_Yi+{4PUx~Z{HA8_SA|gBntZyd_q;_8Dvj%5c9lwaC?q{mhyUW{b&Brc=2!k z<9bA@_Xo6l=$%FLDz06}fiQ${td2g7HbIvBH*i=LRDnLOm_is9H%LDXtMz0K%jZ-` z&mG6JPvQM1nJ#qm022fH3p6G~#={h&l#}TBj6$mQv9ZQiHn>38YQUPHtcG=^2q1fQ z*oIHQVS{$#wV~$bv0zuZ#=i92x%jyGb|D}xa+i@@6fWrADItC(9K+>T}q1(J*yTiN0 z=#PL<9*fnk1Z+`gD09bWod|7kD)cj>(JWR4c8vW6zH<+MdIMj+fs1!=XUfakYV&T} z@FR0p<`=;-5d9Ku-my8EHNRfUduY7)-~FTdF4X&j+heRg0srfGW6X8DmaT@EVx>)F znJUOF2wefO=T~UuxmBegAgeXJc%k{SfjNT$S<1-sbI0(3XK?;F*5Bh1xEJ5a9B-31P7IDUv& z{15B9Q11`)Pihq#=P>^avmbNuFoPui7^^+av&RHSKd5YNxozltlt*Kw%-NJYmt}iC z-({$u!Mm=HC%5pyC)quuX^?lwa3XT#DXYj1JJb!`B74+Lg@c9%jrDCDmI>-K9eB+R! z#}n(M!>K+rs#<6>B}1_lfnq3{K306XHBN>s-a7`q#oXSa$(|$TQuk)~+AerLhb}DGip6l&I3kDvrXZ37Awl879$ae=gMfKTSUIyn)#3w>BOPLY z$Uux(F>HqA4n5rQ$?xVPl@}{iC=*IrZM3OrxB>d1O0I2^{jhMv7 za$7220dqkG#EG>n7cLVct%5ymEyi+X4|XZfHh-$xo_fkPre-oD5vEv?OURaO&M;y_ zX$L+Pm0rvui@}KJx!&O_+}NjIn1^VI9V<+u*vEGdFw7_)Z^SMD+J?jVR@yGy@MiC! zayV!uUJpobHv()0*bE7*UJDb6N_R4R=K!C%jW1rsS8m{q0R@dD!&*zNqf35!XNGo3 zh5E-im+SoKZV{Hx4w@%@&b4QkamLZ3dUm<>;=B+Tnn*J;J~MrO%pmg9_{e#z=eTm09~2vcIYlv|gLoRTkoRy%^*L8a zMXEAuGxv|>O}3%QQ^gV)_`9tV=dB^_y7Q(&ixL9pT;1VH9U)&xa>=WTkAgCHmN{H5 z#Bgm&hF#yY1t59p((#MJ70#Iv#f%odwU^~iTPRd2-OL$SF znrDu=;;@)^ZOrQD%M+aJ;>3zhMnJrjfI^?6h_4D1&;CeJb4`gDJ)g32+an?$kK`k6 zVb&rj4|7}|;f1^S>sF`%+B@xuCe&<)_0-aAI{#w+F9h!;YLPSY+GDP(GN%oM`LQ8esEMq;c|T3(irJ* zBT|I%LbGh&&9zHmvBer&6lVbC+;RN%3;3lc*c+Q+Q+u&ZrOq) z*SXoiWsAk0IJNC^9Y_W-lsr_L9k0ii7F<#;H&=RKPI4;6wnJ)vIHJ0;(c?{H-=?X= zicrgodZT&qUmOz0Pxnbz=ecup6LwYg=gi%Dd9=(1v938!PPkI&T$1pvha}%^oz*PV zSQ_)5nxXDaf=hdNVQjTUVTBM<37xszZ$-e82Njnyqg z9nr%kwa7sAUY=dt^T`=!Ge(-37c`qhXWz=t!O^0hO(ZgJZ+FBo8^~jt0Y3X>eDy_s zt}5DG)^N7Ys827Wlh^Ra)h_*Z?U;_*FyMMx*}~}sp1nuub~mJR;GQ9{s^M-bRfBEf z6jcGm923z3A*tMdgRV)LUca}aEPnrl=sC~tmrFy-^BYs}!EOAndMDOj5m zK1^_Tiq!=k@A8E2+~bS4yXbVWpW*T$CVQ3ovtPlnx%_pkp2R190Z(nHUVQ0^E-ABk zUZrb$M}eZw5K=f>hk?Q@S2f4Mc;Pwvg2`d6yzL2m%+;~Jd2*WBis0te@ zRU2(9*&6BwG)rU;uoY;_jvl206x*B5>Hyh-Lh55(66BBnA^~@FmC9;nk3A!!qy<7V zZbOg{hV&iJ=R__F8Y%Vy&hfX#=;i2ju<0{=#}N603Cpi%Dfe9L*zB1{W}T_#qO{FY z?eh|sZ8%1jJF&YIex+J=^K|A0#}_je!URg8D?Qf>)wZBE;AqZmA!h{>*K+I+cziQ{ ztVSFUCIem7iUyq0A!9Pa*A5vyai*^_YXRjlwazBeRb!b<&@%tQbHYWac)6%_*%}Rr z6&CZ`CDwh8rc*dGwW@2h#~c`LFYt}Kj3xRn-@^;9{s-AoG{-Y<6|MG9v zccI=N`a0hF)9}BBn=|UR%?d)>3nrC^|xSq^FV-HOp}@gt|ojWc^Pqpx|MIx`uy2(=)gKwP@9p^%QjLOY%DJab|<;FJw> zIZ;GM^JuQdRB~Pu$5Uq88!DOvtYk4KV`yeqaC|uA$E|kg1~GSYG}buNtJ<5|3cV@5 zJ0w1z>2VFv=5knnh3_)*^o;reT7f87-hbUyt5-zg^=6Cp*!-~Tu^UKRi ze$1YSS%+%-jTB$s#V6mu@BaWVUB{IJ`alYeQnq|NsG<3Ojbi72)susIdlcL3BEI~e z@J&5FA*Eu|JO~Mnw6AWljYZH#U?a_9BA^Xox21XpIQI9|JtU@H;WfAb=-8cgyoK^$ z1ZZ_!@Eb8*%0tj1X6=sg<%{^zi+J%Gt_iP>HdO{I7+4sjmL;1#d~|^AeV)wbCYK!Z z00$8rU1s8Mrtp&)&2XvbLNeo!gNgwoKd5ZcRtk??Lz7a55ChZZ#aU&VCVmFw^1~^g z?61*h!f5%D=C;(wNIJ%7f@2;|^_W^W7-IL367#WD7N^{pV&{&or=tNTsfMYD<31QJQ{HI>ucnJtI`=TUNUMtx%)Yyvl>-08=olXeul8Tm>(x45zPoC#NXS zbpPcr5MV3Badme+D5)tYsYHyKxU|n8x(}`3$v&P~<>hR&u@=j;r{3W|&zpDaf7B>Z zZ;xmjei5Jj&$tLiJ024po3EQODWO4b8PDa)GOi48t)_L^#tS>>4h-d%)9J+u*(08ROPnp>SKM zH>-xIfS24kgTMV0KDencw#-G~TO*2v;LvwhoZ8aCimN#txvUUbrog#g;H%NpsKC9P zqeY?z$Q>NNuYpqIl-n7LUC~T7w zGa}q2ZoJ>axf2S_33$LjSj?`V@=oMFnJhE!GlFs^rfERg3?ZS=ITFYBDmREN{Vuf1 zM@_?XH2Gjg_Pw^oI%z|Sd9;Akdz3OeVm!gw29CGYN_C7K3Gka6Jel1DH}}+Jx+{)6 zs-%NZe0dwc_6$C@Mc6e2Ig|2kQ#-O{ZJy`U6-Zjit4<|(>DKpBnXC=$PUI4?_15DO zdnqy3T>eh#KLMyR`Z%9 zzlKy65-SMD4KDtSMr4JZ7NRB!DHWbT)3ePr;5yflJ4<%30hOgxQiFztY8nwGh zOqo&FAo4b%sx4{7=&dYX=sXuGEp!I!S5}yzL1(lwgP34k;C6y^il<{7@6h{fp!wFA zBEYG2UhmxnuIz&=q+J2x2rj`h&{eGCSI^^boMKdv8H&=vDe?|~Jy#fFbD6DVpD)#n z>iJS`>!jkyp^Vbz+q)@2d01d4tEyT&d^E;m5{^=3JekAK)h22tN5@Ew^(MmoatY1L zHP*};67g7@0*m>2ZUrZMoS>X)vqHz*ZG+A$(O(^thSy)|*Z5Fxk8%=>PI~|V0*gsR zK~&3!gYi3hW5rY7LSui-W|#L-$*1Lg$0^?Ai(_rb&(&M?qXvJg4*tLz=ybktWpong{J;CZFz`SQsbzHJ^kqM8>)5d?k_gvzIA_=mIn;vF-| zzxzN@FE|oVoPVUOKrpYaFVy8aV~8EFG~)Q0HnjB2L@YgE6^i@|Q11>g$y8r+@!`-_ zeQ>wLe(~m0>hO*J3cY@rD6vS6v2GqY!<_bVU&l^PoA?a^-sUw!3OjDLv6u8E=+oKGtxLH~*U3d~fh z=H*(|%aGlZ4&3H{!pPLM*eK06zFV~~3%=6xm^&ZF zo&jYuo4$6qxHH|a;Ov2Hensnp3Qc?*1t~94sS>uG2|E{$<( zZ=TZJ|APCW8E-klThaMPLU!dgf75&KzvtzBpYFTSt`V?eM;W6*C&ST)l59S9dNpOr0D*ylh07*qoM6N<$f{F*$e*gdg literal 0 HcmV?d00001 diff --git a/doc/_themes/pysidedocs/static/bg_topo.jpg b/doc/_themes/pysidedocs/static/bg_topo.jpg new file mode 100644 index 0000000000000000000000000000000000000000..4229ae8db5242e11c8fc52dd1122735d198a3545 GIT binary patch literal 14237 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 literal 0 HcmV?d00001 diff --git a/doc/_themes/pysidedocs/static/doctools.js b/doc/_themes/pysidedocs/static/doctools.js new file mode 100644 index 0000000..9447678 --- /dev/null +++ b/doc/_themes/pysidedocs/static/doctools.js @@ -0,0 +1,232 @@ +/// XXX: make it cross browser + +/** + * make the code below compatible with browsers without + * an installed firebug like debugger + */ +if (!window.console || !console.firebug) { + var names = ["log", "debug", "info", "warn", "error", "assert", "dir", "dirxml", + "group", "groupEnd", "time", "timeEnd", "count", "trace", "profile", "profileEnd"]; + window.console = {}; + for (var i = 0; i < names.length; ++i) + window.console[names[i]] = function() {} +} + +/** + * small helper function to urldecode strings + */ +jQuery.urldecode = function(x) { + return decodeURIComponent(x).replace(/\+/g, ' '); +} + +/** + * small helper function to urlencode strings + */ +jQuery.urlencode = encodeURIComponent; + +/** + * This function returns the parsed url parameters of the + * current request. Multiple values per key are supported, + * it will always return arrays of strings for the value parts. + */ +jQuery.getQueryParameters = function(s) { + if (typeof s == 'undefined') + s = document.location.search; + var parts = s.substr(s.indexOf('?') + 1).split('&'); + var result = {}; + for (var i = 0; i < parts.length; i++) { + var tmp = parts[i].split('=', 2); + var key = jQuery.urldecode(tmp[0]); + var value = jQuery.urldecode(tmp[1]); + if (key in result) + result[key].push(value); + else + result[key] = [value]; + } + return result; +} + +/** + * small function to check if an array contains + * a given item. + */ +jQuery.contains = function(arr, item) { + for (var i = 0; i < arr.length; i++) { + if (arr[i] == item) + return true; + } + return false; +} + +/** + * highlight a given string on a jquery object by wrapping it in + * span elements with the given class name. + */ +jQuery.fn.highlightText = function(text, className) { + function highlight(node) { + if (node.nodeType == 3) { + var val = node.nodeValue; + var pos = val.toLowerCase().indexOf(text); + if (pos >= 0 && !jQuery.className.has(node.parentNode, className)) { + var span = document.createElement("span"); + span.className = className; + span.appendChild(document.createTextNode(val.substr(pos, text.length))); + node.parentNode.insertBefore(span, node.parentNode.insertBefore( + document.createTextNode(val.substr(pos + text.length)), + node.nextSibling)); + node.nodeValue = val.substr(0, pos); + } + } + else if (!jQuery(node).is("button, select, textarea")) { + jQuery.each(node.childNodes, function() { + highlight(this) + }); + } + } + return this.each(function() { + highlight(this); + }); +} + +/** + * Small JavaScript module for the documentation. + */ +var Documentation = { + + init : function() { + this.fixFirefoxAnchorBug(); + this.highlightSearchWords(); + this.initModIndex(); + }, + + /** + * i18n support + */ + TRANSLATIONS : {}, + PLURAL_EXPR : function(n) { return n == 1 ? 0 : 1; }, + LOCALE : 'unknown', + + // gettext and ngettext don't access this so that the functions + // can savely bound to a different name (_ = Documentation.gettext) + gettext : function(string) { + var translated = Documentation.TRANSLATIONS[string]; + if (typeof translated == 'undefined') + return string; + return (typeof translated == 'string') ? translated : translated[0]; + }, + + ngettext : function(singular, plural, n) { + var translated = Documentation.TRANSLATIONS[singular]; + if (typeof translated == 'undefined') + return (n == 1) ? singular : plural; + return translated[Documentation.PLURALEXPR(n)]; + }, + + addTranslations : function(catalog) { + for (var key in catalog.messages) + this.TRANSLATIONS[key] = catalog.messages[key]; + this.PLURAL_EXPR = new Function('n', 'return +(' + catalog.plural_expr + ')'); + this.LOCALE = catalog.locale; + }, + + /** + * add context elements like header anchor links + */ + addContextElements : function() { + $('div[id] > :header:first').each(function() { + $('\u00B6'). + attr('href', '#' + this.id). + attr('title', _('Permalink to this headline')). + appendTo(this); + }); + $('dt[id]').each(function() { + $('\u00B6'). + attr('href', '#' + this.id). + attr('title', _('Permalink to this definition')). + appendTo(this); + }); + }, + + /** + * workaround a firefox stupidity + */ + fixFirefoxAnchorBug : function() { + if (document.location.hash && $.browser.mozilla) + window.setTimeout(function() { + document.location.href += ''; + }, 10); + }, + + /** + * highlight the search words provided in the url in the text + */ + highlightSearchWords : function() { + var params = $.getQueryParameters(); + var terms = (params.highlight) ? params.highlight[0].split(/\s+/) : []; + if (terms.length) { + var body = $('div.body'); + window.setTimeout(function() { + $.each(terms, function() { + body.highlightText(this.toLowerCase(), 'highlight'); + }); + }, 10); + $('') + .appendTo($('.sidebar .this-page-menu')); + } + }, + + /** + * init the modindex toggle buttons + */ + initModIndex : function() { + var togglers = $('img.toggler').click(function() { + var src = $(this).attr('src'); + var idnum = $(this).attr('id').substr(7); + console.log($('tr.cg-' + idnum).toggle()); + if (src.substr(-9) == 'minus.png') + $(this).attr('src', src.substr(0, src.length-9) + 'plus.png'); + else + $(this).attr('src', src.substr(0, src.length-8) + 'minus.png'); + }).css('display', ''); + if (DOCUMENTATION_OPTIONS.COLLAPSE_MODINDEX) { + togglers.click(); + } + }, + + /** + * helper function to hide the search marks again + */ + hideSearchWords : function() { + $('.sidebar .this-page-menu li.highlight-link').fadeOut(300); + $('span.highlight').removeClass('highlight'); + }, + + /** + * make the url absolute + */ + makeURL : function(relativeURL) { + return DOCUMENTATION_OPTIONS.URL_ROOT + '/' + relativeURL; + }, + + /** + * get the current relative url + */ + getCurrentURL : function() { + var path = document.location.pathname; + var parts = path.split(/\//); + $.each(DOCUMENTATION_OPTIONS.URL_ROOT.split(/\//), function() { + if (this == '..') + parts.pop(); + }); + var url = parts.join('/'); + return path.substring(url.lastIndexOf('/') + 1, path.length - 1); + } +}; + +// quick alias for translations +_ = Documentation.gettext; + +$(document).ready(function() { + Documentation.init(); +}); diff --git a/doc/_themes/pysidedocs/static/fakebar.png b/doc/_themes/pysidedocs/static/fakebar.png new file mode 100644 index 0000000000000000000000000000000000000000..b45830e000eb123c3efab6bfc3b17809a3a08530 GIT binary patch literal 101 zcmeAS@N?(olHy`uVBq!ia0y~yVB`m~89A7Mq`$$QwLprqz$3Dlfr0M`2s2LA=92~r xihH^^hG*5B1h}~tn49EFcPMuw|ksYXn!PC{xWt~$(69Du$7_a~U literal 0 HcmV?d00001 diff --git a/doc/_themes/pysidedocs/static/jquery.js b/doc/_themes/pysidedocs/static/jquery.js new file mode 100644 index 0000000..82b98e1 --- /dev/null +++ b/doc/_themes/pysidedocs/static/jquery.js @@ -0,0 +1,32 @@ +/* + * jQuery 1.2.6 - New Wave Javascript + * + * Copyright (c) 2008 John Resig (jquery.com) + * Dual licensed under the MIT (MIT-LICENSE.txt) + * and GPL (GPL-LICENSE.txt) licenses. + * + * $Date: 2008-05-24 14:22:17 -0400 (Sat, 24 May 2008) $ + * $Rev: 5685 $ + */ +(function(){var _jQuery=window.jQuery,_$=window.$;var jQuery=window.jQuery=window.$=function(selector,context){return new jQuery.fn.init(selector,context);};var quickExpr=/^[^<]*(<(.|\s)+>)[^>]*$|^#(\w+)$/,isSimple=/^.[^:#\[\.]*$/,undefined;jQuery.fn=jQuery.prototype={init:function(selector,context){selector=selector||document;if(selector.nodeType){this[0]=selector;this.length=1;return this;}if(typeof selector=="string"){var match=quickExpr.exec(selector);if(match&&(match[1]||!context)){if(match[1])selector=jQuery.clean([match[1]],context);else{var elem=document.getElementById(match[3]);if(elem){if(elem.id!=match[3])return jQuery().find(selector);return jQuery(elem);}selector=[];}}else +return jQuery(context).find(selector);}else if(jQuery.isFunction(selector))return jQuery(document)[jQuery.fn.ready?"ready":"load"](selector);return this.setArray(jQuery.makeArray(selector));},jquery:"1.2.6",size:function(){return this.length;},length:0,get:function(num){return num==undefined?jQuery.makeArray(this):this[num];},pushStack:function(elems){var ret=jQuery(elems);ret.prevObject=this;return ret;},setArray:function(elems){this.length=0;Array.prototype.push.apply(this,elems);return this;},each:function(callback,args){return jQuery.each(this,callback,args);},index:function(elem){var ret=-1;return jQuery.inArray(elem&&elem.jquery?elem[0]:elem,this);},attr:function(name,value,type){var options=name;if(name.constructor==String)if(value===undefined)return this[0]&&jQuery[type||"attr"](this[0],name);else{options={};options[name]=value;}return this.each(function(i){for(name in options)jQuery.attr(type?this.style:this,name,jQuery.prop(this,options[name],type,i,name));});},css:function(key,value){if((key=='width'||key=='height')&&parseFloat(value)<0)value=undefined;return this.attr(key,value,"curCSS");},text:function(text){if(typeof text!="object"&&text!=null)return this.empty().append((this[0]&&this[0].ownerDocument||document).createTextNode(text));var ret="";jQuery.each(text||this,function(){jQuery.each(this.childNodes,function(){if(this.nodeType!=8)ret+=this.nodeType!=1?this.nodeValue:jQuery.fn.text([this]);});});return ret;},wrapAll:function(html){if(this[0])jQuery(html,this[0].ownerDocument).clone().insertBefore(this[0]).map(function(){var elem=this;while(elem.firstChild)elem=elem.firstChild;return elem;}).append(this);return this;},wrapInner:function(html){return this.each(function(){jQuery(this).contents().wrapAll(html);});},wrap:function(html){return this.each(function(){jQuery(this).wrapAll(html);});},append:function(){return this.domManip(arguments,true,false,function(elem){if(this.nodeType==1)this.appendChild(elem);});},prepend:function(){return this.domManip(arguments,true,true,function(elem){if(this.nodeType==1)this.insertBefore(elem,this.firstChild);});},before:function(){return this.domManip(arguments,false,false,function(elem){this.parentNode.insertBefore(elem,this);});},after:function(){return this.domManip(arguments,false,true,function(elem){this.parentNode.insertBefore(elem,this.nextSibling);});},end:function(){return this.prevObject||jQuery([]);},find:function(selector){var elems=jQuery.map(this,function(elem){return jQuery.find(selector,elem);});return this.pushStack(/[^+>] [^+>]/.test(selector)||selector.indexOf("..")>-1?jQuery.unique(elems):elems);},clone:function(events){var ret=this.map(function(){if(jQuery.browser.msie&&!jQuery.isXMLDoc(this)){var clone=this.cloneNode(true),container=document.createElement("div");container.appendChild(clone);return jQuery.clean([container.innerHTML])[0];}else +return this.cloneNode(true);});var clone=ret.find("*").andSelf().each(function(){if(this[expando]!=undefined)this[expando]=null;});if(events===true)this.find("*").andSelf().each(function(i){if(this.nodeType==3)return;var events=jQuery.data(this,"events");for(var type in events)for(var handler in events[type])jQuery.event.add(clone[i],type,events[type][handler],events[type][handler].data);});return ret;},filter:function(selector){return this.pushStack(jQuery.isFunction(selector)&&jQuery.grep(this,function(elem,i){return selector.call(elem,i);})||jQuery.multiFilter(selector,this));},not:function(selector){if(selector.constructor==String)if(isSimple.test(selector))return this.pushStack(jQuery.multiFilter(selector,this,true));else +selector=jQuery.multiFilter(selector,this);var isArrayLike=selector.length&&selector[selector.length-1]!==undefined&&!selector.nodeType;return this.filter(function(){return isArrayLike?jQuery.inArray(this,selector)<0:this!=selector;});},add:function(selector){return this.pushStack(jQuery.unique(jQuery.merge(this.get(),typeof selector=='string'?jQuery(selector):jQuery.makeArray(selector))));},is:function(selector){return!!selector&&jQuery.multiFilter(selector,this).length>0;},hasClass:function(selector){return this.is("."+selector);},val:function(value){if(value==undefined){if(this.length){var elem=this[0];if(jQuery.nodeName(elem,"select")){var index=elem.selectedIndex,values=[],options=elem.options,one=elem.type=="select-one";if(index<0)return null;for(var i=one?index:0,max=one?index+1:options.length;i=0||jQuery.inArray(this.name,value)>=0);else if(jQuery.nodeName(this,"select")){var values=jQuery.makeArray(value);jQuery("option",this).each(function(){this.selected=(jQuery.inArray(this.value,values)>=0||jQuery.inArray(this.text,values)>=0);});if(!values.length)this.selectedIndex=-1;}else +this.value=value;});},html:function(value){return value==undefined?(this[0]?this[0].innerHTML:null):this.empty().append(value);},replaceWith:function(value){return this.after(value).remove();},eq:function(i){return this.slice(i,i+1);},slice:function(){return this.pushStack(Array.prototype.slice.apply(this,arguments));},map:function(callback){return this.pushStack(jQuery.map(this,function(elem,i){return callback.call(elem,i,elem);}));},andSelf:function(){return this.add(this.prevObject);},data:function(key,value){var parts=key.split(".");parts[1]=parts[1]?"."+parts[1]:"";if(value===undefined){var data=this.triggerHandler("getData"+parts[1]+"!",[parts[0]]);if(data===undefined&&this.length)data=jQuery.data(this[0],key);return data===undefined&&parts[1]?this.data(parts[0]):data;}else +return this.trigger("setData"+parts[1]+"!",[parts[0],value]).each(function(){jQuery.data(this,key,value);});},removeData:function(key){return this.each(function(){jQuery.removeData(this,key);});},domManip:function(args,table,reverse,callback){var clone=this.length>1,elems;return this.each(function(){if(!elems){elems=jQuery.clean(args,this.ownerDocument);if(reverse)elems.reverse();}var obj=this;if(table&&jQuery.nodeName(this,"table")&&jQuery.nodeName(elems[0],"tr"))obj=this.getElementsByTagName("tbody")[0]||this.appendChild(this.ownerDocument.createElement("tbody"));var scripts=jQuery([]);jQuery.each(elems,function(){var elem=clone?jQuery(this).clone(true)[0]:this;if(jQuery.nodeName(elem,"script"))scripts=scripts.add(elem);else{if(elem.nodeType==1)scripts=scripts.add(jQuery("script",elem).remove());callback.call(obj,elem);}});scripts.each(evalScript);});}};jQuery.fn.init.prototype=jQuery.fn;function evalScript(i,elem){if(elem.src)jQuery.ajax({url:elem.src,async:false,dataType:"script"});else +jQuery.globalEval(elem.text||elem.textContent||elem.innerHTML||"");if(elem.parentNode)elem.parentNode.removeChild(elem);}function now(){return+new Date;}jQuery.extend=jQuery.fn.extend=function(){var target=arguments[0]||{},i=1,length=arguments.length,deep=false,options;if(target.constructor==Boolean){deep=target;target=arguments[1]||{};i=2;}if(typeof target!="object"&&typeof target!="function")target={};if(length==i){target=this;--i;}for(;i-1;}},swap:function(elem,options,callback){var old={};for(var name in options){old[name]=elem.style[name];elem.style[name]=options[name];}callback.call(elem);for(var name in options)elem.style[name]=old[name];},css:function(elem,name,force){if(name=="width"||name=="height"){var val,props={position:"absolute",visibility:"hidden",display:"block"},which=name=="width"?["Left","Right"]:["Top","Bottom"];function getWH(){val=name=="width"?elem.offsetWidth:elem.offsetHeight;var padding=0,border=0;jQuery.each(which,function(){padding+=parseFloat(jQuery.curCSS(elem,"padding"+this,true))||0;border+=parseFloat(jQuery.curCSS(elem,"border"+this+"Width",true))||0;});val-=Math.round(padding+border);}if(jQuery(elem).is(":visible"))getWH();else +jQuery.swap(elem,props,getWH);return Math.max(0,val);}return jQuery.curCSS(elem,name,force);},curCSS:function(elem,name,force){var ret,style=elem.style;function color(elem){if(!jQuery.browser.safari)return false;var ret=defaultView.getComputedStyle(elem,null);return!ret||ret.getPropertyValue("color")=="";}if(name=="opacity"&&jQuery.browser.msie){ret=jQuery.attr(style,"opacity");return ret==""?"1":ret;}if(jQuery.browser.opera&&name=="display"){var save=style.outline;style.outline="0 solid black";style.outline=save;}if(name.match(/float/i))name=styleFloat;if(!force&&style&&style[name])ret=style[name];else if(defaultView.getComputedStyle){if(name.match(/float/i))name="float";name=name.replace(/([A-Z])/g,"-$1").toLowerCase();var computedStyle=defaultView.getComputedStyle(elem,null);if(computedStyle&&!color(elem))ret=computedStyle.getPropertyValue(name);else{var swap=[],stack=[],a=elem,i=0;for(;a&&color(a);a=a.parentNode)stack.unshift(a);for(;i]*?)\/>/g,function(all,front,tag){return tag.match(/^(abbr|br|col|img|input|link|meta|param|hr|area|embed)$/i)?all:front+">";});var tags=jQuery.trim(elem).toLowerCase(),div=context.createElement("div");var wrap=!tags.indexOf("",""]||!tags.indexOf("",""]||tags.match(/^<(thead|tbody|tfoot|colg|cap)/)&&[1,"","
"]||!tags.indexOf("",""]||(!tags.indexOf("",""]||!tags.indexOf("",""]||jQuery.browser.msie&&[1,"div
","
"]||[0,"",""];div.innerHTML=wrap[1]+elem+wrap[2];while(wrap[0]--)div=div.lastChild;if(jQuery.browser.msie){var tbody=!tags.indexOf(""&&tags.indexOf("=0;--j)if(jQuery.nodeName(tbody[j],"tbody")&&!tbody[j].childNodes.length)tbody[j].parentNode.removeChild(tbody[j]);if(/^\s/.test(elem))div.insertBefore(context.createTextNode(elem.match(/^\s*/)[0]),div.firstChild);}elem=jQuery.makeArray(div.childNodes);}if(elem.length===0&&(!jQuery.nodeName(elem,"form")&&!jQuery.nodeName(elem,"select")))return;if(elem[0]==undefined||jQuery.nodeName(elem,"form")||elem.options)ret.push(elem);else +ret=jQuery.merge(ret,elem);});return ret;},attr:function(elem,name,value){if(!elem||elem.nodeType==3||elem.nodeType==8)return undefined;var notxml=!jQuery.isXMLDoc(elem),set=value!==undefined,msie=jQuery.browser.msie;name=notxml&&jQuery.props[name]||name;if(elem.tagName){var special=/href|src|style/.test(name);if(name=="selected"&&jQuery.browser.safari)elem.parentNode.selectedIndex;if(name in elem&¬xml&&!special){if(set){if(name=="type"&&jQuery.nodeName(elem,"input")&&elem.parentNode)throw"type property can't be changed";elem[name]=value;}if(jQuery.nodeName(elem,"form")&&elem.getAttributeNode(name))return elem.getAttributeNode(name).nodeValue;return elem[name];}if(msie&¬xml&&name=="style")return jQuery.attr(elem.style,"cssText",value);if(set)elem.setAttribute(name,""+value);var attr=msie&¬xml&&special?elem.getAttribute(name,2):elem.getAttribute(name);return attr===null?undefined:attr;}if(msie&&name=="opacity"){if(set){elem.zoom=1;elem.filter=(elem.filter||"").replace(/alpha\([^)]*\)/,"")+(parseInt(value)+''=="NaN"?"":"alpha(opacity="+value*100+")");}return elem.filter&&elem.filter.indexOf("opacity=")>=0?(parseFloat(elem.filter.match(/opacity=([^)]*)/)[1])/100)+'':"";}name=name.replace(/-([a-z])/ig,function(all,letter){return letter.toUpperCase();});if(set)elem[name]=value;return elem[name];},trim:function(text){return(text||"").replace(/^\s+|\s+$/g,"");},makeArray:function(array){var ret=[];if(array!=null){var i=array.length;if(i==null||array.split||array.setInterval||array.call)ret[0]=array;else +while(i)ret[--i]=array[i];}return ret;},inArray:function(elem,array){for(var i=0,length=array.length;i*",this).remove();while(this.firstChild)this.removeChild(this.firstChild);}},function(name,fn){jQuery.fn[name]=function(){return this.each(fn,arguments);};});jQuery.each(["Height","Width"],function(i,name){var type=name.toLowerCase();jQuery.fn[type]=function(size){return this[0]==window?jQuery.browser.opera&&document.body["client"+name]||jQuery.browser.safari&&window["inner"+name]||document.compatMode=="CSS1Compat"&&document.documentElement["client"+name]||document.body["client"+name]:this[0]==document?Math.max(Math.max(document.body["scroll"+name],document.documentElement["scroll"+name]),Math.max(document.body["offset"+name],document.documentElement["offset"+name])):size==undefined?(this.length?jQuery.css(this[0],type):null):this.css(type,size.constructor==String?size:size+"px");};});function num(elem,prop){return elem[0]&&parseInt(jQuery.curCSS(elem[0],prop,true),10)||0;}var chars=jQuery.browser.safari&&parseInt(jQuery.browser.version)<417?"(?:[\\w*_-]|\\\\.)":"(?:[\\w\u0128-\uFFFF*_-]|\\\\.)",quickChild=new RegExp("^>\\s*("+chars+"+)"),quickID=new RegExp("^("+chars+"+)(#)("+chars+"+)"),quickClass=new RegExp("^([#.]?)("+chars+"*)");jQuery.extend({expr:{"":function(a,i,m){return m[2]=="*"||jQuery.nodeName(a,m[2]);},"#":function(a,i,m){return a.getAttribute("id")==m[2];},":":{lt:function(a,i,m){return im[3]-0;},nth:function(a,i,m){return m[3]-0==i;},eq:function(a,i,m){return m[3]-0==i;},first:function(a,i){return i==0;},last:function(a,i,m,r){return i==r.length-1;},even:function(a,i){return i%2==0;},odd:function(a,i){return i%2;},"first-child":function(a){return a.parentNode.getElementsByTagName("*")[0]==a;},"last-child":function(a){return jQuery.nth(a.parentNode.lastChild,1,"previousSibling")==a;},"only-child":function(a){return!jQuery.nth(a.parentNode.lastChild,2,"previousSibling");},parent:function(a){return a.firstChild;},empty:function(a){return!a.firstChild;},contains:function(a,i,m){return(a.textContent||a.innerText||jQuery(a).text()||"").indexOf(m[3])>=0;},visible:function(a){return"hidden"!=a.type&&jQuery.css(a,"display")!="none"&&jQuery.css(a,"visibility")!="hidden";},hidden:function(a){return"hidden"==a.type||jQuery.css(a,"display")=="none"||jQuery.css(a,"visibility")=="hidden";},enabled:function(a){return!a.disabled;},disabled:function(a){return a.disabled;},checked:function(a){return a.checked;},selected:function(a){return a.selected||jQuery.attr(a,"selected");},text:function(a){return"text"==a.type;},radio:function(a){return"radio"==a.type;},checkbox:function(a){return"checkbox"==a.type;},file:function(a){return"file"==a.type;},password:function(a){return"password"==a.type;},submit:function(a){return"submit"==a.type;},image:function(a){return"image"==a.type;},reset:function(a){return"reset"==a.type;},button:function(a){return"button"==a.type||jQuery.nodeName(a,"button");},input:function(a){return/input|select|textarea|button/i.test(a.nodeName);},has:function(a,i,m){return jQuery.find(m[3],a).length;},header:function(a){return/h\d/i.test(a.nodeName);},animated:function(a){return jQuery.grep(jQuery.timers,function(fn){return a==fn.elem;}).length;}}},parse:[/^(\[) *@?([\w-]+) *([!*$^~=]*) *('?"?)(.*?)\4 *\]/,/^(:)([\w-]+)\("?'?(.*?(\(.*?\))?[^(]*?)"?'?\)/,new RegExp("^([:.#]*)("+chars+"+)")],multiFilter:function(expr,elems,not){var old,cur=[];while(expr&&expr!=old){old=expr;var f=jQuery.filter(expr,elems,not);expr=f.t.replace(/^\s*,\s*/,"");cur=not?elems=f.r:jQuery.merge(cur,f.r);}return cur;},find:function(t,context){if(typeof t!="string")return[t];if(context&&context.nodeType!=1&&context.nodeType!=9)return[];context=context||document;var ret=[context],done=[],last,nodeName;while(t&&last!=t){var r=[];last=t;t=jQuery.trim(t);var foundToken=false,re=quickChild,m=re.exec(t);if(m){nodeName=m[1].toUpperCase();for(var i=0;ret[i];i++)for(var c=ret[i].firstChild;c;c=c.nextSibling)if(c.nodeType==1&&(nodeName=="*"||c.nodeName.toUpperCase()==nodeName))r.push(c);ret=r;t=t.replace(re,"");if(t.indexOf(" ")==0)continue;foundToken=true;}else{re=/^([>+~])\s*(\w*)/i;if((m=re.exec(t))!=null){r=[];var merge={};nodeName=m[2].toUpperCase();m=m[1];for(var j=0,rl=ret.length;j=0;if(!not&&pass||not&&!pass)tmp.push(r[i]);}return tmp;},filter:function(t,r,not){var last;while(t&&t!=last){last=t;var p=jQuery.parse,m;for(var i=0;p[i];i++){m=p[i].exec(t);if(m){t=t.substring(m[0].length);m[2]=m[2].replace(/\\/g,"");break;}}if(!m)break;if(m[1]==":"&&m[2]=="not")r=isSimple.test(m[3])?jQuery.filter(m[3],r,true).r:jQuery(r).not(m[3]);else if(m[1]==".")r=jQuery.classFilter(r,m[2],not);else if(m[1]=="["){var tmp=[],type=m[3];for(var i=0,rl=r.length;i=0)^not)tmp.push(a);}r=tmp;}else if(m[1]==":"&&m[2]=="nth-child"){var merge={},tmp=[],test=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(m[3]=="even"&&"2n"||m[3]=="odd"&&"2n+1"||!/\D/.test(m[3])&&"0n+"+m[3]||m[3]),first=(test[1]+(test[2]||1))-0,last=test[3]-0;for(var i=0,rl=r.length;i=0)add=true;if(add^not)tmp.push(node);}r=tmp;}else{var fn=jQuery.expr[m[1]];if(typeof fn=="object")fn=fn[m[2]];if(typeof fn=="string")fn=eval("false||function(a,i){return "+fn+";}");r=jQuery.grep(r,function(elem,i){return fn(elem,i,m,r);},not);}}return{r:r,t:t};},dir:function(elem,dir){var matched=[],cur=elem[dir];while(cur&&cur!=document){if(cur.nodeType==1)matched.push(cur);cur=cur[dir];}return matched;},nth:function(cur,result,dir,elem){result=result||1;var num=0;for(;cur;cur=cur[dir])if(cur.nodeType==1&&++num==result)break;return cur;},sibling:function(n,elem){var r=[];for(;n;n=n.nextSibling){if(n.nodeType==1&&n!=elem)r.push(n);}return r;}});jQuery.event={add:function(elem,types,handler,data){if(elem.nodeType==3||elem.nodeType==8)return;if(jQuery.browser.msie&&elem.setInterval)elem=window;if(!handler.guid)handler.guid=this.guid++;if(data!=undefined){var fn=handler;handler=this.proxy(fn,function(){return fn.apply(this,arguments);});handler.data=data;}var events=jQuery.data(elem,"events")||jQuery.data(elem,"events",{}),handle=jQuery.data(elem,"handle")||jQuery.data(elem,"handle",function(){if(typeof jQuery!="undefined"&&!jQuery.event.triggered)return jQuery.event.handle.apply(arguments.callee.elem,arguments);});handle.elem=elem;jQuery.each(types.split(/\s+/),function(index,type){var parts=type.split(".");type=parts[0];handler.type=parts[1];var handlers=events[type];if(!handlers){handlers=events[type]={};if(!jQuery.event.special[type]||jQuery.event.special[type].setup.call(elem)===false){if(elem.addEventListener)elem.addEventListener(type,handle,false);else if(elem.attachEvent)elem.attachEvent("on"+type,handle);}}handlers[handler.guid]=handler;jQuery.event.global[type]=true;});elem=null;},guid:1,global:{},remove:function(elem,types,handler){if(elem.nodeType==3||elem.nodeType==8)return;var events=jQuery.data(elem,"events"),ret,index;if(events){if(types==undefined||(typeof types=="string"&&types.charAt(0)=="."))for(var type in events)this.remove(elem,type+(types||""));else{if(types.type){handler=types.handler;types=types.type;}jQuery.each(types.split(/\s+/),function(index,type){var parts=type.split(".");type=parts[0];if(events[type]){if(handler)delete events[type][handler.guid];else +for(handler in events[type])if(!parts[1]||events[type][handler].type==parts[1])delete events[type][handler];for(ret in events[type])break;if(!ret){if(!jQuery.event.special[type]||jQuery.event.special[type].teardown.call(elem)===false){if(elem.removeEventListener)elem.removeEventListener(type,jQuery.data(elem,"handle"),false);else if(elem.detachEvent)elem.detachEvent("on"+type,jQuery.data(elem,"handle"));}ret=null;delete events[type];}}});}for(ret in events)break;if(!ret){var handle=jQuery.data(elem,"handle");if(handle)handle.elem=null;jQuery.removeData(elem,"events");jQuery.removeData(elem,"handle");}}},trigger:function(type,data,elem,donative,extra){data=jQuery.makeArray(data);if(type.indexOf("!")>=0){type=type.slice(0,-1);var exclusive=true;}if(!elem){if(this.global[type])jQuery("*").add([window,document]).trigger(type,data);}else{if(elem.nodeType==3||elem.nodeType==8)return undefined;var val,ret,fn=jQuery.isFunction(elem[type]||null),event=!data[0]||!data[0].preventDefault;if(event){data.unshift({type:type,target:elem,preventDefault:function(){},stopPropagation:function(){},timeStamp:now()});data[0][expando]=true;}data[0].type=type;if(exclusive)data[0].exclusive=true;var handle=jQuery.data(elem,"handle");if(handle)val=handle.apply(elem,data);if((!fn||(jQuery.nodeName(elem,'a')&&type=="click"))&&elem["on"+type]&&elem["on"+type].apply(elem,data)===false)val=false;if(event)data.shift();if(extra&&jQuery.isFunction(extra)){ret=extra.apply(elem,val==null?data:data.concat(val));if(ret!==undefined)val=ret;}if(fn&&donative!==false&&val!==false&&!(jQuery.nodeName(elem,'a')&&type=="click")){this.triggered=true;try{elem[type]();}catch(e){}}this.triggered=false;}return val;},handle:function(event){var val,ret,namespace,all,handlers;event=arguments[0]=jQuery.event.fix(event||window.event);namespace=event.type.split(".");event.type=namespace[0];namespace=namespace[1];all=!namespace&&!event.exclusive;handlers=(jQuery.data(this,"events")||{})[event.type];for(var j in handlers){var handler=handlers[j];if(all||handler.type==namespace){event.handler=handler;event.data=handler.data;ret=handler.apply(this,arguments);if(val!==false)val=ret;if(ret===false){event.preventDefault();event.stopPropagation();}}}return val;},fix:function(event){if(event[expando]==true)return event;var originalEvent=event;event={originalEvent:originalEvent};var props="altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode metaKey newValue originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target timeStamp toElement type view wheelDelta which".split(" ");for(var i=props.length;i;i--)event[props[i]]=originalEvent[props[i]];event[expando]=true;event.preventDefault=function(){if(originalEvent.preventDefault)originalEvent.preventDefault();originalEvent.returnValue=false;};event.stopPropagation=function(){if(originalEvent.stopPropagation)originalEvent.stopPropagation();originalEvent.cancelBubble=true;};event.timeStamp=event.timeStamp||now();if(!event.target)event.target=event.srcElement||document;if(event.target.nodeType==3)event.target=event.target.parentNode;if(!event.relatedTarget&&event.fromElement)event.relatedTarget=event.fromElement==event.target?event.toElement:event.fromElement;if(event.pageX==null&&event.clientX!=null){var doc=document.documentElement,body=document.body;event.pageX=event.clientX+(doc&&doc.scrollLeft||body&&body.scrollLeft||0)-(doc.clientLeft||0);event.pageY=event.clientY+(doc&&doc.scrollTop||body&&body.scrollTop||0)-(doc.clientTop||0);}if(!event.which&&((event.charCode||event.charCode===0)?event.charCode:event.keyCode))event.which=event.charCode||event.keyCode;if(!event.metaKey&&event.ctrlKey)event.metaKey=event.ctrlKey;if(!event.which&&event.button)event.which=(event.button&1?1:(event.button&2?3:(event.button&4?2:0)));return event;},proxy:function(fn,proxy){proxy.guid=fn.guid=fn.guid||proxy.guid||this.guid++;return proxy;},special:{ready:{setup:function(){bindReady();return;},teardown:function(){return;}},mouseenter:{setup:function(){if(jQuery.browser.msie)return false;jQuery(this).bind("mouseover",jQuery.event.special.mouseenter.handler);return true;},teardown:function(){if(jQuery.browser.msie)return false;jQuery(this).unbind("mouseover",jQuery.event.special.mouseenter.handler);return true;},handler:function(event){if(withinElement(event,this))return true;event.type="mouseenter";return jQuery.event.handle.apply(this,arguments);}},mouseleave:{setup:function(){if(jQuery.browser.msie)return false;jQuery(this).bind("mouseout",jQuery.event.special.mouseleave.handler);return true;},teardown:function(){if(jQuery.browser.msie)return false;jQuery(this).unbind("mouseout",jQuery.event.special.mouseleave.handler);return true;},handler:function(event){if(withinElement(event,this))return true;event.type="mouseleave";return jQuery.event.handle.apply(this,arguments);}}}};jQuery.fn.extend({bind:function(type,data,fn){return type=="unload"?this.one(type,data,fn):this.each(function(){jQuery.event.add(this,type,fn||data,fn&&data);});},one:function(type,data,fn){var one=jQuery.event.proxy(fn||data,function(event){jQuery(this).unbind(event,one);return(fn||data).apply(this,arguments);});return this.each(function(){jQuery.event.add(this,type,one,fn&&data);});},unbind:function(type,fn){return this.each(function(){jQuery.event.remove(this,type,fn);});},trigger:function(type,data,fn){return this.each(function(){jQuery.event.trigger(type,data,this,true,fn);});},triggerHandler:function(type,data,fn){return this[0]&&jQuery.event.trigger(type,data,this[0],false,fn);},toggle:function(fn){var args=arguments,i=1;while(i=0){var selector=url.slice(off,url.length);url=url.slice(0,off);}callback=callback||function(){};var type="GET";if(params)if(jQuery.isFunction(params)){callback=params;params=null;}else{params=jQuery.param(params);type="POST";}var self=this;jQuery.ajax({url:url,type:type,dataType:"html",data:params,complete:function(res,status){if(status=="success"||status=="notmodified")self.html(selector?jQuery("
").append(res.responseText.replace(//g,"")).find(selector):res.responseText);self.each(callback,[res.responseText,status,res]);}});return this;},serialize:function(){return jQuery.param(this.serializeArray());},serializeArray:function(){return this.map(function(){return jQuery.nodeName(this,"form")?jQuery.makeArray(this.elements):this;}).filter(function(){return this.name&&!this.disabled&&(this.checked||/select|textarea/i.test(this.nodeName)||/text|hidden|password/i.test(this.type));}).map(function(i,elem){var val=jQuery(this).val();return val==null?null:val.constructor==Array?jQuery.map(val,function(val,i){return{name:elem.name,value:val};}):{name:elem.name,value:val};}).get();}});jQuery.each("ajaxStart,ajaxStop,ajaxComplete,ajaxError,ajaxSuccess,ajaxSend".split(","),function(i,o){jQuery.fn[o]=function(f){return this.bind(o,f);};});var jsc=now();jQuery.extend({get:function(url,data,callback,type){if(jQuery.isFunction(data)){callback=data;data=null;}return jQuery.ajax({type:"GET",url:url,data:data,success:callback,dataType:type});},getScript:function(url,callback){return jQuery.get(url,null,callback,"script");},getJSON:function(url,data,callback){return jQuery.get(url,data,callback,"json");},post:function(url,data,callback,type){if(jQuery.isFunction(data)){callback=data;data={};}return jQuery.ajax({type:"POST",url:url,data:data,success:callback,dataType:type});},ajaxSetup:function(settings){jQuery.extend(jQuery.ajaxSettings,settings);},ajaxSettings:{url:location.href,global:true,type:"GET",timeout:0,contentType:"application/x-www-form-urlencoded",processData:true,async:true,data:null,username:null,password:null,accepts:{xml:"application/xml, text/xml",html:"text/html",script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},lastModified:{},ajax:function(s){s=jQuery.extend(true,s,jQuery.extend(true,{},jQuery.ajaxSettings,s));var jsonp,jsre=/=\?(&|$)/g,status,data,type=s.type.toUpperCase();if(s.data&&s.processData&&typeof s.data!="string")s.data=jQuery.param(s.data);if(s.dataType=="jsonp"){if(type=="GET"){if(!s.url.match(jsre))s.url+=(s.url.match(/\?/)?"&":"?")+(s.jsonp||"callback")+"=?";}else if(!s.data||!s.data.match(jsre))s.data=(s.data?s.data+"&":"")+(s.jsonp||"callback")+"=?";s.dataType="json";}if(s.dataType=="json"&&(s.data&&s.data.match(jsre)||s.url.match(jsre))){jsonp="jsonp"+jsc++;if(s.data)s.data=(s.data+"").replace(jsre,"="+jsonp+"$1");s.url=s.url.replace(jsre,"="+jsonp+"$1");s.dataType="script";window[jsonp]=function(tmp){data=tmp;success();complete();window[jsonp]=undefined;try{delete window[jsonp];}catch(e){}if(head)head.removeChild(script);};}if(s.dataType=="script"&&s.cache==null)s.cache=false;if(s.cache===false&&type=="GET"){var ts=now();var ret=s.url.replace(/(\?|&)_=.*?(&|$)/,"$1_="+ts+"$2");s.url=ret+((ret==s.url)?(s.url.match(/\?/)?"&":"?")+"_="+ts:"");}if(s.data&&type=="GET"){s.url+=(s.url.match(/\?/)?"&":"?")+s.data;s.data=null;}if(s.global&&!jQuery.active++)jQuery.event.trigger("ajaxStart");var remote=/^(?:\w+:)?\/\/([^\/?#]+)/;if(s.dataType=="script"&&type=="GET"&&remote.test(s.url)&&remote.exec(s.url)[1]!=location.host){var head=document.getElementsByTagName("head")[0];var script=document.createElement("script");script.src=s.url;if(s.scriptCharset)script.charset=s.scriptCharset;if(!jsonp){var done=false;script.onload=script.onreadystatechange=function(){if(!done&&(!this.readyState||this.readyState=="loaded"||this.readyState=="complete")){done=true;success();complete();head.removeChild(script);}};}head.appendChild(script);return undefined;}var requestDone=false;var xhr=window.ActiveXObject?new ActiveXObject("Microsoft.XMLHTTP"):new XMLHttpRequest();if(s.username)xhr.open(type,s.url,s.async,s.username,s.password);else +xhr.open(type,s.url,s.async);try{if(s.data)xhr.setRequestHeader("Content-Type",s.contentType);if(s.ifModified)xhr.setRequestHeader("If-Modified-Since",jQuery.lastModified[s.url]||"Thu, 01 Jan 1970 00:00:00 GMT");xhr.setRequestHeader("X-Requested-With","XMLHttpRequest");xhr.setRequestHeader("Accept",s.dataType&&s.accepts[s.dataType]?s.accepts[s.dataType]+", */*":s.accepts._default);}catch(e){}if(s.beforeSend&&s.beforeSend(xhr,s)===false){s.global&&jQuery.active--;xhr.abort();return false;}if(s.global)jQuery.event.trigger("ajaxSend",[xhr,s]);var onreadystatechange=function(isTimeout){if(!requestDone&&xhr&&(xhr.readyState==4||isTimeout=="timeout")){requestDone=true;if(ival){clearInterval(ival);ival=null;}status=isTimeout=="timeout"&&"timeout"||!jQuery.httpSuccess(xhr)&&"error"||s.ifModified&&jQuery.httpNotModified(xhr,s.url)&&"notmodified"||"success";if(status=="success"){try{data=jQuery.httpData(xhr,s.dataType,s.dataFilter);}catch(e){status="parsererror";}}if(status=="success"){var modRes;try{modRes=xhr.getResponseHeader("Last-Modified");}catch(e){}if(s.ifModified&&modRes)jQuery.lastModified[s.url]=modRes;if(!jsonp)success();}else +jQuery.handleError(s,xhr,status);complete();if(s.async)xhr=null;}};if(s.async){var ival=setInterval(onreadystatechange,13);if(s.timeout>0)setTimeout(function(){if(xhr){xhr.abort();if(!requestDone)onreadystatechange("timeout");}},s.timeout);}try{xhr.send(s.data);}catch(e){jQuery.handleError(s,xhr,null,e);}if(!s.async)onreadystatechange();function success(){if(s.success)s.success(data,status);if(s.global)jQuery.event.trigger("ajaxSuccess",[xhr,s]);}function complete(){if(s.complete)s.complete(xhr,status);if(s.global)jQuery.event.trigger("ajaxComplete",[xhr,s]);if(s.global&&!--jQuery.active)jQuery.event.trigger("ajaxStop");}return xhr;},handleError:function(s,xhr,status,e){if(s.error)s.error(xhr,status,e);if(s.global)jQuery.event.trigger("ajaxError",[xhr,s,e]);},active:0,httpSuccess:function(xhr){try{return!xhr.status&&location.protocol=="file:"||(xhr.status>=200&&xhr.status<300)||xhr.status==304||xhr.status==1223||jQuery.browser.safari&&xhr.status==undefined;}catch(e){}return false;},httpNotModified:function(xhr,url){try{var xhrRes=xhr.getResponseHeader("Last-Modified");return xhr.status==304||xhrRes==jQuery.lastModified[url]||jQuery.browser.safari&&xhr.status==undefined;}catch(e){}return false;},httpData:function(xhr,type,filter){var ct=xhr.getResponseHeader("content-type"),xml=type=="xml"||!type&&ct&&ct.indexOf("xml")>=0,data=xml?xhr.responseXML:xhr.responseText;if(xml&&data.documentElement.tagName=="parsererror")throw"parsererror";if(filter)data=filter(data,type);if(type=="script")jQuery.globalEval(data);if(type=="json")data=eval("("+data+")");return data;},param:function(a){var s=[];if(a.constructor==Array||a.jquery)jQuery.each(a,function(){s.push(encodeURIComponent(this.name)+"="+encodeURIComponent(this.value));});else +for(var j in a)if(a[j]&&a[j].constructor==Array)jQuery.each(a[j],function(){s.push(encodeURIComponent(j)+"="+encodeURIComponent(this));});else +s.push(encodeURIComponent(j)+"="+encodeURIComponent(jQuery.isFunction(a[j])?a[j]():a[j]));return s.join("&").replace(/%20/g,"+");}});jQuery.fn.extend({show:function(speed,callback){return speed?this.animate({height:"show",width:"show",opacity:"show"},speed,callback):this.filter(":hidden").each(function(){this.style.display=this.oldblock||"";if(jQuery.css(this,"display")=="none"){var elem=jQuery("<"+this.tagName+" />").appendTo("body");this.style.display=elem.css("display");if(this.style.display=="none")this.style.display="block";elem.remove();}}).end();},hide:function(speed,callback){return speed?this.animate({height:"hide",width:"hide",opacity:"hide"},speed,callback):this.filter(":visible").each(function(){this.oldblock=this.oldblock||jQuery.css(this,"display");this.style.display="none";}).end();},_toggle:jQuery.fn.toggle,toggle:function(fn,fn2){return jQuery.isFunction(fn)&&jQuery.isFunction(fn2)?this._toggle.apply(this,arguments):fn?this.animate({height:"toggle",width:"toggle",opacity:"toggle"},fn,fn2):this.each(function(){jQuery(this)[jQuery(this).is(":hidden")?"show":"hide"]();});},slideDown:function(speed,callback){return this.animate({height:"show"},speed,callback);},slideUp:function(speed,callback){return this.animate({height:"hide"},speed,callback);},slideToggle:function(speed,callback){return this.animate({height:"toggle"},speed,callback);},fadeIn:function(speed,callback){return this.animate({opacity:"show"},speed,callback);},fadeOut:function(speed,callback){return this.animate({opacity:"hide"},speed,callback);},fadeTo:function(speed,to,callback){return this.animate({opacity:to},speed,callback);},animate:function(prop,speed,easing,callback){var optall=jQuery.speed(speed,easing,callback);return this[optall.queue===false?"each":"queue"](function(){if(this.nodeType!=1)return false;var opt=jQuery.extend({},optall),p,hidden=jQuery(this).is(":hidden"),self=this;for(p in prop){if(prop[p]=="hide"&&hidden||prop[p]=="show"&&!hidden)return opt.complete.call(this);if(p=="height"||p=="width"){opt.display=jQuery.css(this,"display");opt.overflow=this.style.overflow;}}if(opt.overflow!=null)this.style.overflow="hidden";opt.curAnim=jQuery.extend({},prop);jQuery.each(prop,function(name,val){var e=new jQuery.fx(self,opt,name);if(/toggle|show|hide/.test(val))e[val=="toggle"?hidden?"show":"hide":val](prop);else{var parts=val.toString().match(/^([+-]=)?([\d+-.]+)(.*)$/),start=e.cur(true)||0;if(parts){var end=parseFloat(parts[2]),unit=parts[3]||"px";if(unit!="px"){self.style[name]=(end||1)+unit;start=((end||1)/e.cur(true))*start;self.style[name]=start+unit;}if(parts[1])end=((parts[1]=="-="?-1:1)*end)+start;e.custom(start,end,unit);}else +e.custom(start,val,"");}});return true;});},queue:function(type,fn){if(jQuery.isFunction(type)||(type&&type.constructor==Array)){fn=type;type="fx";}if(!type||(typeof type=="string"&&!fn))return queue(this[0],type);return this.each(function(){if(fn.constructor==Array)queue(this,type,fn);else{queue(this,type).push(fn);if(queue(this,type).length==1)fn.call(this);}});},stop:function(clearQueue,gotoEnd){var timers=jQuery.timers;if(clearQueue)this.queue([]);this.each(function(){for(var i=timers.length-1;i>=0;i--)if(timers[i].elem==this){if(gotoEnd)timers[i](true);timers.splice(i,1);}});if(!gotoEnd)this.dequeue();return this;}});var queue=function(elem,type,array){if(elem){type=type||"fx";var q=jQuery.data(elem,type+"queue");if(!q||array)q=jQuery.data(elem,type+"queue",jQuery.makeArray(array));}return q;};jQuery.fn.dequeue=function(type){type=type||"fx";return this.each(function(){var q=queue(this,type);q.shift();if(q.length)q[0].call(this);});};jQuery.extend({speed:function(speed,easing,fn){var opt=speed&&speed.constructor==Object?speed:{complete:fn||!fn&&easing||jQuery.isFunction(speed)&&speed,duration:speed,easing:fn&&easing||easing&&easing.constructor!=Function&&easing};opt.duration=(opt.duration&&opt.duration.constructor==Number?opt.duration:jQuery.fx.speeds[opt.duration])||jQuery.fx.speeds.def;opt.old=opt.complete;opt.complete=function(){if(opt.queue!==false)jQuery(this).dequeue();if(jQuery.isFunction(opt.old))opt.old.call(this);};return opt;},easing:{linear:function(p,n,firstNum,diff){return firstNum+diff*p;},swing:function(p,n,firstNum,diff){return((-Math.cos(p*Math.PI)/2)+0.5)*diff+firstNum;}},timers:[],timerId:null,fx:function(elem,options,prop){this.options=options;this.elem=elem;this.prop=prop;if(!options.orig)options.orig={};}});jQuery.fx.prototype={update:function(){if(this.options.step)this.options.step.call(this.elem,this.now,this);(jQuery.fx.step[this.prop]||jQuery.fx.step._default)(this);if(this.prop=="height"||this.prop=="width")this.elem.style.display="block";},cur:function(force){if(this.elem[this.prop]!=null&&this.elem.style[this.prop]==null)return this.elem[this.prop];var r=parseFloat(jQuery.css(this.elem,this.prop,force));return r&&r>-10000?r:parseFloat(jQuery.curCSS(this.elem,this.prop))||0;},custom:function(from,to,unit){this.startTime=now();this.start=from;this.end=to;this.unit=unit||this.unit||"px";this.now=this.start;this.pos=this.state=0;this.update();var self=this;function t(gotoEnd){return self.step(gotoEnd);}t.elem=this.elem;jQuery.timers.push(t);if(jQuery.timerId==null){jQuery.timerId=setInterval(function(){var timers=jQuery.timers;for(var i=0;ithis.options.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;var done=true;for(var i in this.options.curAnim)if(this.options.curAnim[i]!==true)done=false;if(done){if(this.options.display!=null){this.elem.style.overflow=this.options.overflow;this.elem.style.display=this.options.display;if(jQuery.css(this.elem,"display")=="none")this.elem.style.display="block";}if(this.options.hide)this.elem.style.display="none";if(this.options.hide||this.options.show)for(var p in this.options.curAnim)jQuery.attr(this.elem.style,p,this.options.orig[p]);}if(done)this.options.complete.call(this.elem);return false;}else{var n=t-this.startTime;this.state=n/this.options.duration;this.pos=jQuery.easing[this.options.easing||(jQuery.easing.swing?"swing":"linear")](this.state,n,0,1,this.options.duration);this.now=this.start+((this.end-this.start)*this.pos);this.update();}return true;}};jQuery.extend(jQuery.fx,{speeds:{slow:600,fast:200,def:400},step:{scrollLeft:function(fx){fx.elem.scrollLeft=fx.now;},scrollTop:function(fx){fx.elem.scrollTop=fx.now;},opacity:function(fx){jQuery.attr(fx.elem.style,"opacity",fx.now);},_default:function(fx){fx.elem.style[fx.prop]=fx.now+fx.unit;}}});jQuery.fn.offset=function(){var left=0,top=0,elem=this[0],results;if(elem)with(jQuery.browser){var parent=elem.parentNode,offsetChild=elem,offsetParent=elem.offsetParent,doc=elem.ownerDocument,safari2=safari&&parseInt(version)<522&&!/adobeair/i.test(userAgent),css=jQuery.curCSS,fixed=css(elem,"position")=="fixed";if(elem.getBoundingClientRect){var box=elem.getBoundingClientRect();add(box.left+Math.max(doc.documentElement.scrollLeft,doc.body.scrollLeft),box.top+Math.max(doc.documentElement.scrollTop,doc.body.scrollTop));add(-doc.documentElement.clientLeft,-doc.documentElement.clientTop);}else{add(elem.offsetLeft,elem.offsetTop);while(offsetParent){add(offsetParent.offsetLeft,offsetParent.offsetTop);if(mozilla&&!/^t(able|d|h)$/i.test(offsetParent.tagName)||safari&&!safari2)border(offsetParent);if(!fixed&&css(offsetParent,"position")=="fixed")fixed=true;offsetChild=/^body$/i.test(offsetParent.tagName)?offsetChild:offsetParent;offsetParent=offsetParent.offsetParent;}while(parent&&parent.tagName&&!/^body|html$/i.test(parent.tagName)){if(!/^inline|table.*$/i.test(css(parent,"display")))add(-parent.scrollLeft,-parent.scrollTop);if(mozilla&&css(parent,"overflow")!="visible")border(parent);parent=parent.parentNode;}if((safari2&&(fixed||css(offsetChild,"position")=="absolute"))||(mozilla&&css(offsetChild,"position")!="absolute"))add(-doc.body.offsetLeft,-doc.body.offsetTop);if(fixed)add(Math.max(doc.documentElement.scrollLeft,doc.body.scrollLeft),Math.max(doc.documentElement.scrollTop,doc.body.scrollTop));}results={top:top,left:left};}function border(elem){add(jQuery.curCSS(elem,"borderLeftWidth",true),jQuery.curCSS(elem,"borderTopWidth",true));}function add(l,t){left+=parseInt(l,10)||0;top+=parseInt(t,10)||0;}return results;};jQuery.fn.extend({position:function(){var left=0,top=0,results;if(this[0]){var offsetParent=this.offsetParent(),offset=this.offset(),parentOffset=/^body|html$/i.test(offsetParent[0].tagName)?{top:0,left:0}:offsetParent.offset();offset.top-=num(this,'marginTop');offset.left-=num(this,'marginLeft');parentOffset.top+=num(offsetParent,'borderTopWidth');parentOffset.left+=num(offsetParent,'borderLeftWidth');results={top:offset.top-parentOffset.top,left:offset.left-parentOffset.left};}return results;},offsetParent:function(){var offsetParent=this[0].offsetParent;while(offsetParent&&(!/^body|html$/i.test(offsetParent.tagName)&&jQuery.css(offsetParent,'position')=='static'))offsetParent=offsetParent.offsetParent;return jQuery(offsetParent);}});jQuery.each(['Left','Top'],function(i,name){var method='scroll'+name;jQuery.fn[method]=function(val){if(!this[0])return;return val!=undefined?this.each(function(){this==window||this==document?window.scrollTo(!i?val:jQuery(window).scrollLeft(),i?val:jQuery(window).scrollTop()):this[method]=val;}):this[0]==window||this[0]==document?self[i?'pageYOffset':'pageXOffset']||jQuery.boxModel&&document.documentElement[method]||document.body[method]:this[0][method];};});jQuery.each(["Height","Width"],function(i,name){var tl=i?"Left":"Top",br=i?"Right":"Bottom";jQuery.fn["inner"+name]=function(){return this[name.toLowerCase()]()+num(this,"padding"+tl)+num(this,"padding"+br);};jQuery.fn["outer"+name]=function(margin){return this["inner"+name]()+num(this,"border"+tl+"Width")+num(this,"border"+br+"Width")+(margin?num(this,"margin"+tl)+num(this,"margin"+br):0);};});})(); \ No newline at end of file diff --git a/doc/_themes/pysidedocs/static/logo_indt.jpg b/doc/_themes/pysidedocs/static/logo_indt.jpg new file mode 100644 index 0000000000000000000000000000000000000000..2a1fbe7a1b279936b352f5051ed77762af8ab7bb GIT binary patch literal 3138 zcma)82{7AR7ypL{MeV!dwH|`dhoZ47t-Y-!wxCr?pEQYBn_603s4cCXpo$WLw6qVg zwTMz{^-(1#4^{iVM&2EvKJFjjO#1ra~zfZcCub6!ui+k zX%xyKM8rgo>Vp0}$PQ-xcQFtPKkG>~0kE;HCobv~oA7E<^P0MyV18x)y~%SB<_N%j z#Na50A20;wi6A2=8}LksXiRFr9EVTU4-CEm3P*o=2dW6%?y?3mWC~TaooaviO zkOA)e+SpP^l}{JX^i3q_NZPFnT(8SW*g3tSw!Q=1hL$X%2kRQ9H^Q&%eiKlgZ%#70 z23u^!STQEf!f^D3uQYaSZNQLD4{_Nyu;6jq!ErlU*O2Mwe>@w@I79ZjC$H-=B32L5 z^z$BYHt(Uy9UPbKpth-Joyczawl?&mN@4nq*Rb-Ui!pE4NzWpP+(O1w6MB>u?0UZhP(H<@RT#Yk2RXRlhVf$KFc z`kOwJ%q~59nm3Ivy!+Bi9vG@(#=~jXF>{v$YxU!-$Y~!NUm9OYxJRcek4&hDWg{I8 zN@ZFrpeNw3_sk|`B)04IiLc3r#r``;60Sc&4k=SFdh2*%Z8dFXT$hfA$h~{sc4ps9 zY2ihYr5bL!l`$C4(9}&LPONEo1s4d!FaOd=e#->hmqmD`yZU$s$~O|v230g?HSh2d z!~NXHdPJUgRKFa=$yU^y#%&vnWaksRno+oCUKn^$D(i$bPPukyxa0*Kg$|hgNDif3 zd0^IZlz?__kk}T=zf#C?SxH{G)3Zd(IfVQTEt!fKl zCG^<2q+3;NBVDO|SG9RMyXO7pe6_BPFRp26j6{`_c_%PvG1R_|+gOD_V#jv`32jMt zqNv~ROk30>%67~@D$0F?Ku9EC0s!Ig0u0*$B@|pD&jf^?Ct7AvG^LkCzEYo-p;F&m zn*Meh-HW2vj=4Ww+8S>kS@(J|9ewj*Ti2+Y6~?9T1Gxa|>rB5#%7~>n?)X!B%ao*4 ziefNA_!M%9%b%Z=1Xobxjl-v?Y&{++?_`BrAGhb-z4V@!cnVz=;CHb%curw10S{h9}>w~SLm(tU2 z5%23h=$LpVdMhC{LYc0}ZLjdkmZqNP_wqyOcHA7jmLx2f0{{Jf0uf&jIubt|GR_se z;{0~MJfi&80qPfUgw5jJKp@=O??`D5J4r)O`qz0ze3(;#dLB#^FGNRT{a4WM)V5W& z;JQut;@aB4;`;;Z=Chf*OaSdtAEH(0l;kl+bx#xV?U{X5Rc~^}f6wBl z>36%dgMoRw>q5ngo^AdtRUXaTh-f)b?!#hG^$JT- zqa&?0uOG#H6|KHAgp=96>83MNnUq&%DqXtd6w7cu&A&W=N93uF-AIqwd^7r@iM~K6 zB5G2w=xMb#8Rh!jIPFU(Q{miECxR}RMUPg>+FWx(Ip&lB*@0M#*(Yf)iP5hi6Zz>_p^>99fcyI@~ z7r7KFVIyBMXuhq${u+kOkc(~cDpysROuykv7_**x=6x0KBF-i2KS|R(cQC$0JMfTF znTl^El1UKi06}Xa*Up^81o9SJp^4SYvUw$5Nll5!7S*zsTakiu3_q;x=qFL!$Rb~W=wY$hms zhB?SOT(KkXJ10*AN*4IWCH~u`imIBE@2_qYXzZ$dFB|n3Mdy-;gekd{mZ@UmCxhgy zs}{K;fSID+$T#@K`^Hw%UZHE9maYz{7@y$wU9FIOn5$XSDelNG7B_L}A!ol)r%;cc zC7jFs^<1po#6sKL_!w6?Tm_7ODWMOABovu!r_46k>ev%$1VjKtdK1qKk z54LloE|mr$zRj;m#5Z`@h1JKzIk%8$1PUv#L^F5tU<=+0(lnq4DkuL+;d-japo&|+ RADr_1A5-an&#KJfe*p-Ft{(sZ literal 0 HcmV?d00001 diff --git a/doc/_themes/pysidedocs/static/logo_openbossa.png b/doc/_themes/pysidedocs/static/logo_openbossa.png new file mode 100644 index 0000000000000000000000000000000000000000..51e868d6e6ae84544a50d5b3242ba211f6a128f2 GIT binary patch literal 4702 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 gL4(p07*qoM6N<$g2h_o0ssI2 literal 0 HcmV?d00001 diff --git a/doc/_themes/pysidedocs/static/logo_python.jpg b/doc/_themes/pysidedocs/static/logo_python.jpg new file mode 100644 index 0000000000000000000000000000000000000000..cd474efbaa633dde7998c09170e4500acc4a13ce GIT binary patch literal 2660 zcmb`IXHe5w7sme~g$OYaK&6YcMRr390r3+A|xavB_t5ih(D1=Af=?GkO)~>IXPKbWhEsg<%53%5*HWWi`XkK zEiJFO54BJ6Z{vSmh+Y9GIDiN0z#tSLh5~_6AW=I|u-mp67z6_CHu@J(m>5JH41(`! zUyXk_5GV{R1`?MBKwz*KL`+-^F7@Y`uPIOvs0{3op{)3MbzG!5y=N&o#g`K~VJ*6)Dq`KvT zk7yJ?fOo@DU=&~t2rnf4Uq}Xr&&_ps5U%Od5m+;`D@y2KU7y?K!B6dR!KI2x1LxVN zThjDpjo~?pE3=`Ze=@Jb4EMm#&Z{c%ktEbwOmjVc58a)c_v7 z^2MlLFz3o;viH}U20@|{zs+hPXm(CKkc{ah^>dxHUMB&Rz}^K5mOOeIT0MSp1h4W| z{KZjc8cj#1DX*cvzU5;{ea_mO#ks(Hwg>7&fPbG|8Lt1F^jAndImrqQ;f70!cj8Lz zf=*zz_gKE{4KUT8y|%vM)PKT{;Mp&@dekLDmofk)#)iE0fA8y%i}m0+U~I3oD$T(1 zA5XhUtWFjOtuwp1a2Ayt8a|EoZeXRPj%U;cpO7`SDT~c2j2PaDsE9ni%yz~{G1-;5 zbKH%~b6gIZdU5Mh-xOBlT*j1n4fS#I59QCk)ILI-#t+ z7_$S3!rDC|;1GE^zmZ69<;l#~X7#=_5TaCLh37`_yoV-QH9zgd+-o*z6DUQtdsYvP zkGK;RuhS0aJac)*>WJ>BEqsxY+skV1?DT$Ki$suO^i_$p<5h5tN`C=MpBmL!?erh0 z2mpADBDK&#)zhSCUh+jh!D3KP8unV&lW@rfm#B8miLFo8X$f$QMJy{M+R8|Y2I&OSoy*3L*Pf`l%ShmbEk&INIUFHoB73zAug?mpSwf~kJ&nRB0763oO#yn zm+u$RspIu*Zm4!MIxRM0^BrWpD{A)WqtG0`!XRk5H6$qg)^RTQ_xw#4M>Dl2QME_t zlzp+@Kd`^}wF#&if|5k1Q8j!&nA+1jwRCg8e@I4G>bPkPb%+omXC|gVj`yF-4b(JE zamB1jOX-H=j2p2Oga0s@%p~5-GI!`XgH-HDD(mPUr8hxrX3sX@yKQ|16``D{0c0^d zr~XHWVI;aR3yfRDS!D6>ceuX@*$USgX;`b6c~|*aDP#BwPRg4)VR5Uc9)W4fv{upo zUWJo+&(%}WKG6MOPUCTeDQ~@p+AFN8%VH8Z-x8z&Igm4g28Q1$xx$4_4t3g(0N>K__+vw>T|k23p)P0^n-=+A3i zY+H*fVf1`O%9E&$-#lDCTJxG9FfS1h-1_Cd@Lel1GbxF3e|-sn4kaf5_V0Db`*qBCX|R@#Ejf zKhjI7!&GMUh8DVM`Po^=Eh`~%sp=$S>kTjL#29|AYS43dCr-Hb!f8Mm^Q^bP(Gsd# z!WTBvI9VeqCj9AxQ@uM2Hi@c6FOqZ)B%TC>cjzYy&9Y9fcnicbJ&^Rq&P_G zrRg(kUMFj2KM0JkMi#k~O156rJV>u2RJ6>LV}7*`Pup9`TbehWH7D{;YrpZbw2#$@ zxp8Lxs#SiVCS4}EIi)Q`|9*BOMIlq+vDP>hpWo#!mrXm~&}1?ha~|Rnf!^>FXut8G znJWjSvIstupS7uj`>k%~Zh<2xZTUz_6LV=qSRI;vngJxvcdWnjN*h1HEdczWqS~ zku}LHT9*4G6hHzJ1wX#8>mK(U>Ui&EJJ@g|OQyrQ;b!L?QeQJnN8QLG+7KI29osqi zE}dBuaq(;!#lBlxZqTXl^{H*?D__4LTmK4e+J5sxWdrw}Gkp(2?G_(d%oaInxK{Z% zb2Ob})}LK8b+)k2n`OO9mT3Rj5!ZWPR(7(synXcyf$!M1G~Vrk>%Sf`#JbfG6Z30@ zY8!cnD92GAdKy_%THEI}C1vWA$7FIm&sFP({eSF&u3fno=skRc?{_0a8;-N|DqjT|?_BFWCv45f9)3Jho Lk^f!7iAMelGjO_W literal 0 HcmV?d00001 diff --git a/doc/_themes/pysidedocs/static/logo_qt.png b/doc/_themes/pysidedocs/static/logo_qt.png new file mode 100644 index 0000000000000000000000000000000000000000..37800f4542f4145e938dbbefa508e2c3d8f0c37d GIT binary patch literal 4618 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 A9{>OV literal 0 HcmV?d00001 diff --git a/doc/_themes/pysidedocs/static/pysidedocs.css b/doc/_themes/pysidedocs/static/pysidedocs.css new file mode 100644 index 0000000..2d99138 --- /dev/null +++ b/doc/_themes/pysidedocs/static/pysidedocs.css @@ -0,0 +1,412 @@ +* { + font: 100% Verdana, Arial, Helvetica, sans-serif; + font-size:12px; +} + +html { + height: 100%; +} + +body { + margin: 0; + padding: 0; + background-color: #EBEBEB; + height: 100%; + color: #333; +} + +strong { + font-weight:bold; +} + +#body { + padding-bottom: 90px; +} + +#container { + position: relative; + min-height: 100%; + background-image: url(fakebar.png); + background-repeat: repeat-y; + background-color: white; +} + +#footer { + position:absolute; + bottom: 0px; + margin-top: 50px; + text-align:center; + background-color: white; + border-top: 2px solid #e0e0e0; + white-space: nowrap; + height: 90px; + width: 100%; +} + +#footer img { + margin-left: 8px; + margin-right: 8px; +} + +#sidebar { + float: left; + width: 250px; + padding: 0px 10px 0px 10px; + text-align: left; +} + +#sidebar ul { + padding: 0px; + margin: 0px; + list-style-position: inside; +} + +#sidebar > ul { + padding: 0px; + margin: 0px; +} + +#sidebar ul li { + margin-left: 10px; + padding: 0px; +} + +#sidebar h3, #sidebar h3 a { + font-weight: bold; + color: #333; +} + +#body > div.section { + margin-left: 270px; + text-align: left; + background-color: #ffffff; + border-left: 1px solid #989898; + font-size:18px; + padding: 10px 50px 15px 50px; + height: 100%; +} + +h1 { + font-size:18px; + padding-left: 50px; + padding-bottom: 15px; + padding-top: 15px; + border-bottom: 1px solid #c2c2c2; + text-transform:uppercase; + margin-right: -100px; + position: relative; + left: -50px; + top: -10px; +} + +h2 { + font-size:12px; + font-weight:bold; + border-left-width: 1px; + border-right-width: 1px; + border-top-width: 1px; + border-bottom-width: 2px; + border-style: solid; + border-left-color: #b1b1b1; + border-right-color: #b1b1b1; + border-top-color: #b1b1b1; + border-bottom-color: #009491; + background-color: #e0e0e0; + padding:5px; + margin-top: 20px; + -moz-border-radius:5px; + -webkit-border-radius:5px; + -khtml-border-radius:5px; +} + +h3, h4 { + font-weight: bolder; +} + +pre { + border-top: 1px solid #e0e0e0; + border-bottom: 1px solid #e0e0e0; + background-color: #fafafa; + padding: 5px; + font: 100% monospace; + overflow: auto; +} + +pre * { + font: 100% monospace; +} + +.headerlink { + display: none; +} + +a, a:visited { + color: #009491; + text-decoration: none; +} + +a:hover { + text-decoration: underline; +} + +/* -- admonitions ----------------------------------------------------------- */ + +div.admonition { + margin-top: 10px; + margin-bottom: 10px; + padding: 7px; +} + +div.admonition dt { + font-weight: bold; +} + +div.admonition dl { + margin-bottom: 0; +} + +p.admonition-title { + margin: 0px 10px 5px 0px; + font-weight: bold; +} + +div.body p.centered { + text-align: center; + margin-top: 25px; +} + +div.warning { + background-color: #ffe4e4; + border: 1px solid #f66; +} + +div.seealso { + background-color: #ffffcc; + border: 1px solid #ffff66; +} + +div.note { + border: 1px solid #e3e3e3; +} + +table.docutils { + margin-left: auto; + margin-right: auto; + margin-bottom: 10px; + border: none; +} + +table.docutils td { + border: none; +} + +table.docutils th { + border: none; + font-weight: bold; + vertical-align: top; +} + +h2 em { + float: right; + font-size: 10px; + position: relative; + top: -20px; +} + +/* Table of pymaemo components */ + +#development table.docutils td { + border-bottom: 1px solid #EBEBEB; +} + +#development th { + background-color: #EBEBEB; + color: #FC7E00; + padding: 5px; +} + +#development th:first-child { + -moz-border-radius: 20px 0px 0px 0px; + -webkit-border-radius: 20px 0px 0px 0px; + -khtml-border-radius: 20px 0px 0px 0px; + padding-left: 10px; +} +#development th:last-child { + -moz-border-radius: 0px 20px 0px 0px; + -webkit-border-radius: 0px 20px 0px 0px; + -khtml-border-radius: 0px 20px 0px 0px; + padding-right: 10px; + width: 100px; +} + +hr { + border: none; + border-bottom: 1px dashed #EBEBEB; + width: 70% +} + +.oldnews { + text-align: right; +} + +/******************* TOPO *****************************/ +#header { + background-image: url(bg_topo.jpg); + background-repeat: repeat-x; + height: 147px; +} + +#header_container { + background-image: url(bg_header.png); + background-repeat: no-repeat; + background-position: 100px 0px; +} + +#logo { + background-image: url(pysidelogo.png); + background-repeat: no-repeat; +/* background-position: 0px 4px; */ + height: 112px; +} + +#search_box { + border-top: 1px solid #989898; + padding-top: 10px; + margin-left: -10px; + margin-right: -10px; + padding-left: 10px; + padding-right: 10px; +} + +#search_button { + border: 1px solid #3A393A; + background-color: #3A393A; + color: white; + cursor: pointer; + -moz-border-radius: 5px; + -webkit-border-radius: 5px; + -khtml-border-radius: 5px; + +} + +form { + margin: 0px; + padding: 0px; +} + +/* search field */ +form #q { + width: 136px; +/* height: 22px; */ + border: none; + margin: 0px; + -moz-border-radius: 5px; + -webkit-border-radius: 5px; + -khtml-border-radius: 5px; + margin-top: 2px; + padding: 4px; + line-height: 22px +} + +#search-results h2 { + display: none; +} + +#search-results h2 { + display: none; +} + +#search-results ul.search { + margin: 0px; + padding: 0px; +} + +ul.search div.context { + padding-left: 40px; +} + +#installation td { + text-align: center; + font-weight: bold; +} + +em { + color: inherit; + font-style:italic; +} + +/******** REL bar *********/ + +#relbar { + padding: 0px 10px 0px 10px; + margin: 0px; + text-align: left; + background-image: url(relbar_bg.png); +} + +#relbar li { + display: inline; + color: white; + font-weight: bold; +} + +#relbar li a { + color: inherit; + line-height: 35px; + font-weight: bold; + vertical-align: middle; +} + +#relbar li.right { + float: right; + margin-right: 5px; +} + +.align-center { + text-align: center; +} + +.contentstable { + width: 100%; +} + +.contentstable td { + padding-left: 30px; + vertical-align: top; +} + +p.biglink a { + font-size: 20px; +} + +dt:target, .highlight { + background-color: #fbe54e; +} + +img { + border: 0px; +} + +.figure .caption { + font-style:italic; +} + +table.footnote { + margin: 0px; +} + +#synopsis table, table.field-list { + margin: 0px; +} + +tt.descname { + font-weight: bold; +} + +dl.method { + border-top: 1px solid #c2c2c2; + margin-right: -100px; + position: relative; + left: -50px; + padding: 10px 50px 0px 50px; +} diff --git a/doc/_themes/pysidedocs/static/pysidelogo.png b/doc/_themes/pysidedocs/static/pysidelogo.png new file mode 100644 index 0000000000000000000000000000000000000000..076c1057c094e024bd6cb9cf08f8720c8b686ec9 GIT binary patch literal 12969 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 k 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 literal 0 HcmV?d00001 diff --git a/doc/_themes/pysidedocs/static/relbar_bg.png b/doc/_themes/pysidedocs/static/relbar_bg.png new file mode 100644 index 0000000000000000000000000000000000000000..4036733a7bad6f210ffe961dbc394fce33800be6 GIT binary patch literal 130 zcmeAS@N?(olHy`uVBq!ia0vp^{6MVC!3HF~cLcBlDNj!q#}JRsx6=-CG8k|$i|$$w zTw?G%WViDYU8g_t)58~aoe=wQ -1) + start = i; + }); + start = Math.max(start - 120, 0); + var excerpt = ((start > 0) ? '...' : '') + + $.trim(text.substr(start, 240)) + + ((start + 240 - text.length) ? '...' : ''); + var rv = $('
').text(excerpt); + $.each(hlwords, function() { + rv = rv.highlightText(this, 'highlight'); + }); + return rv; +} + +/** + * Porter Stemmer + */ +var PorterStemmer = function() { + + var step2list = { + ational: 'ate', + tional: 'tion', + enci: 'ence', + anci: 'ance', + izer: 'ize', + bli: 'ble', + alli: 'al', + entli: 'ent', + eli: 'e', + ousli: 'ous', + ization: 'ize', + ation: 'ate', + ator: 'ate', + alism: 'al', + iveness: 'ive', + fulness: 'ful', + ousness: 'ous', + aliti: 'al', + iviti: 'ive', + biliti: 'ble', + logi: 'log' + }; + + var step3list = { + icate: 'ic', + ative: '', + alize: 'al', + iciti: 'ic', + ical: 'ic', + ful: '', + ness: '' + }; + + var c = "[^aeiou]"; // consonant + var v = "[aeiouy]"; // vowel + var C = c + "[^aeiouy]*"; // consonant sequence + var V = v + "[aeiou]*"; // vowel sequence + + var mgr0 = "^(" + C + ")?" + V + C; // [C]VC... is m>0 + var meq1 = "^(" + C + ")?" + V + C + "(" + V + ")?$"; // [C]VC[V] is m=1 + var mgr1 = "^(" + C + ")?" + V + C + V + C; // [C]VCVC... is m>1 + var s_v = "^(" + C + ")?" + v; // vowel in stem + + this.stemWord = function (w) { + var stem; + var suffix; + var firstch; + var origword = w; + + if (w.length < 3) + return w; + + var re; + var re2; + var re3; + var re4; + + firstch = w.substr(0,1); + if (firstch == "y") + w = firstch.toUpperCase() + w.substr(1); + + // Step 1a + re = /^(.+?)(ss|i)es$/; + re2 = /^(.+?)([^s])s$/; + + if (re.test(w)) + w = w.replace(re,"$1$2"); + else if (re2.test(w)) + w = w.replace(re2,"$1$2"); + + // Step 1b + re = /^(.+?)eed$/; + re2 = /^(.+?)(ed|ing)$/; + if (re.test(w)) { + var fp = re.exec(w); + re = new RegExp(mgr0); + if (re.test(fp[1])) { + re = /.$/; + w = w.replace(re,""); + } + } + else if (re2.test(w)) { + var fp = re2.exec(w); + stem = fp[1]; + re2 = new RegExp(s_v); + if (re2.test(stem)) { + w = stem; + re2 = /(at|bl|iz)$/; + re3 = new RegExp("([^aeiouylsz])\\1$"); + re4 = new RegExp("^" + C + v + "[^aeiouwxy]$"); + if (re2.test(w)) + w = w + "e"; + else if (re3.test(w)) { + re = /.$/; + w = w.replace(re,""); + } + else if (re4.test(w)) + w = w + "e"; + } + } + + // Step 1c + re = /^(.+?)y$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + re = new RegExp(s_v); + if (re.test(stem)) + w = stem + "i"; + } + + // Step 2 + re = /^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + suffix = fp[2]; + re = new RegExp(mgr0); + if (re.test(stem)) + w = stem + step2list[suffix]; + } + + // Step 3 + re = /^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + suffix = fp[2]; + re = new RegExp(mgr0); + if (re.test(stem)) + w = stem + step3list[suffix]; + } + + // Step 4 + re = /^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/; + re2 = /^(.+?)(s|t)(ion)$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + re = new RegExp(mgr1); + if (re.test(stem)) + w = stem; + } + else if (re2.test(w)) { + var fp = re2.exec(w); + stem = fp[1] + fp[2]; + re2 = new RegExp(mgr1); + if (re2.test(stem)) + w = stem; + } + + // Step 5 + re = /^(.+?)e$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + re = new RegExp(mgr1); + re2 = new RegExp(meq1); + re3 = new RegExp("^" + C + v + "[^aeiouwxy]$"); + if (re.test(stem) || (re2.test(stem) && !(re3.test(stem)))) + w = stem; + } + re = /ll$/; + re2 = new RegExp(mgr1); + if (re.test(w) && re2.test(w)) { + re = /.$/; + w = w.replace(re,""); + } + + // and turn initial Y back to y + if (firstch == "y") + w = firstch.toLowerCase() + w.substr(1); + return w; + } +} + + +/** + * Search Module + */ +var Search = { + + _index : null, + _queued_query : null, + _pulse_status : -1, + + init : function() { + var params = $.getQueryParameters(); + if (params.q) { + var query = params.q[0]; + $('input[name="q"]')[0].value = query; + this.performSearch(query); + } + }, + + /** + * Sets the index + */ + setIndex : function(index) { + var q; + this._index = index; + if ((q = this._queued_query) !== null) { + this._queued_query = null; + Search.query(q); + } + }, + + hasIndex : function() { + return this._index !== null; + }, + + deferQuery : function(query) { + this._queued_query = query; + }, + + stopPulse : function() { + this._pulse_status = 0; + }, + + startPulse : function() { + if (this._pulse_status >= 0) + return; + function pulse() { + Search._pulse_status = (Search._pulse_status + 1) % 4; + var dotString = ''; + for (var i = 0; i < Search._pulse_status; i++) + dotString += '.'; + Search.dots.text(dotString); + if (Search._pulse_status > -1) + window.setTimeout(pulse, 500); + }; + pulse(); + }, + + /** + * perform a search for something + */ + performSearch : function(query) { + // create the required interface elements + this.out = $('#search-results'); + this.title = $('

' + _('Searching') + '

').appendTo(this.out); + this.dots = $('').appendTo(this.title); + this.status = $('

').appendTo(this.out); + this.output = $('