From ac1e66913c5df97380a3cbcddefc5bc2bd3717e6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stefan=20B=C3=B6hmann?= Date: Fri, 21 Jun 2019 13:13:30 +0200 Subject: [PATCH 001/100] Initial commit --- Building.html | 70 + Developer.html | 171 ++ Download.html | 57 + Examples.html | 56 + Features.html | 123 + License.html | 59 + PythonQt.jpg | Bin 0 -> 19553 bytes PythonQtBoolResult_8h.html | 119 + PythonQtBoolResult_8h_source.html | 63 + PythonQtClassInfo_8h.html | 82 + PythonQtClassInfo_8h_source.html | 105 + PythonQtClassWrapper_8h.html | 106 + PythonQtClassWrapper_8h_source.html | 69 + PythonQtConversion_8h.html | 863 ++++++ PythonQtConversion_8h_source.html | 103 + PythonQtCppWrapperFactory_8h.html | 82 + PythonQtCppWrapperFactory_8h_source.html | 67 + PythonQtDoc_8h.html | 67 + PythonQtDoc_8h_source.html | 57 + PythonQtImportFileInterface_8h.html | 79 + PythonQtImportFileInterface_8h_source.html | 67 + PythonQtImporter_8h.html | 113 + PythonQtImporter_8h_source.html | 87 + PythonQtInstanceWrapper_8h.html | 192 ++ PythonQtInstanceWrapper_8h_source.html | 82 + PythonQtMethodInfo_8h.html | 111 + PythonQtMethodInfo_8h_source.html | 106 + PythonQtMisc_8h.html | 278 ++ PythonQtMisc_8h_source.html | 65 + PythonQtObjectPtr_8h.html | 85 + PythonQtObjectPtr_8h_source.html | 94 + PythonQtProperty_8h.html | 122 + PythonQtProperty_8h_source.html | 81 + PythonQtPythonInclude_8h.html | 175 ++ PythonQtPythonInclude_8h_source.html | 57 + PythonQtQFileImporter_8h.html | 78 + PythonQtQFileImporter_8h_source.html | 68 + PythonQtSignalReceiver_8h.html | 85 + PythonQtSignalReceiver_8h_source.html | 80 + PythonQtSignal_8h.html | 170 ++ PythonQtSignal_8h_source.html | 72 + PythonQtSlotDecorator_8h.html | 120 + PythonQtSlotDecorator_8h_source.html | 64 + PythonQtSlot_8h.html | 468 +++ PythonQtSlot_8h_source.html | 81 + PythonQtStdDecorators_8h.html | 96 + PythonQtStdDecorators_8h_source.html | 119 + PythonQtStdIn_8h.html | 129 + PythonQtStdIn_8h_source.html | 63 + PythonQtStdOut_8h.html | 129 + PythonQtStdOut_8h_source.html | 64 + PythonQtSystem_8h.html | 92 + PythonQtSystem_8h_source.html | 57 + PythonQtThreadSupport_8h.html | 171 ++ PythonQtThreadSupport_8h_source.html | 68 + PythonQtUtils_8h.html | 92 + PythonQtUtils_8h_source.html | 65 + PythonQtVariants_8h.html | 96 + PythonQtVariants_8h_source.html | 57 + PythonQt_8h.html | 404 +++ PythonQt_8h_source.html | 123 + annotated.html | 100 + bc_s.png | Bin 0 -> 676 bytes bdwn.png | Bin 0 -> 147 bytes classPythonQt-members.html | 174 ++ classPythonQt.html | 2599 +++++++++++++++++ classPythonQt.png | Bin 0 -> 382 bytes classPythonQtArgumentFrame-members.html | 62 + classPythonQtArgumentFrame.html | 234 ++ classPythonQtClassInfo-members.html | 102 + classPythonQtClassInfo.html | 1294 ++++++++ classPythonQtConv-members.html | 102 + classPythonQtConv.html | 1917 ++++++++++++ classPythonQtCppWrapperFactory-members.html | 59 + classPythonQtCppWrapperFactory.html | 174 ++ classPythonQtDebugAPI-members.html | 64 + classPythonQtDebugAPI.html | 331 +++ classPythonQtDebugAPI.png | Bin 0 -> 526 bytes ...PythonQtForeignWrapperFactory-members.html | 60 + classPythonQtForeignWrapperFactory.html | 207 ++ classPythonQtGILScope-members.html | 61 + classPythonQtGILScope.html | 191 ++ classPythonQtImport-members.html | 75 + classPythonQtImport.html | 662 +++++ classPythonQtImportFileInterface-members.html | 64 + classPythonQtImportFileInterface.html | 341 +++ classPythonQtImportFileInterface.png | Bin 0 -> 730 bytes classPythonQtMethodInfo-members.html | 84 + classPythonQtMethodInfo.html | 943 ++++++ classPythonQtMethodInfo.png | Bin 0 -> 565 bytes classPythonQtNewOwnerOfThis-members.html | 59 + classPythonQtNewOwnerOfThis.html | 175 ++ classPythonQtObjectPtr-members.html | 92 + classPythonQtObjectPtr.html | 1111 +++++++ classPythonQtPassOwnershipToCPP-members.html | 59 + classPythonQtPassOwnershipToCPP.html | 175 ++ ...PythonQtPassOwnershipToPython-members.html | 59 + classPythonQtPassOwnershipToPython.html | 175 ++ classPythonQtPrivate-members.html | 105 + classPythonQtPrivate.html | 1537 ++++++++++ classPythonQtPrivate.png | Bin 0 -> 493 bytes classPythonQtQFileImporter-members.html | 66 + classPythonQtQFileImporter.html | 299 ++ classPythonQtQFileImporter.png | Bin 0 -> 723 bytes classPythonQtSafeObjectPtr-members.html | 80 + classPythonQtSafeObjectPtr.html | 812 +++++ classPythonQtSignalReceiver-members.html | 62 + classPythonQtSignalReceiver.html | 239 ++ classPythonQtSignalReceiver.png | Bin 0 -> 1003 bytes classPythonQtSignalReceiverBase-members.html | 57 + classPythonQtSignalReceiverBase.html | 112 + classPythonQtSignalReceiverBase.png | Bin 0 -> 1012 bytes classPythonQtSignalTarget-members.html | 65 + classPythonQtSignalTarget.html | 397 +++ classPythonQtSingleShotTimer-members.html | 58 + classPythonQtSingleShotTimer.html | 137 + classPythonQtSingleShotTimer.png | Bin 0 -> 605 bytes classPythonQtSlotInfo-members.html | 109 + classPythonQtSlotInfo.html | 849 ++++++ classPythonQtSlotInfo.png | Bin 0 -> 558 bytes classPythonQtStdDecorators-members.html | 92 + classPythonQtStdDecorators.html | 1486 ++++++++++ classPythonQtStdDecorators.png | Bin 0 -> 576 bytes classPythonQtThreadStateSaver-members.html | 60 + classPythonQtThreadStateSaver.html | 197 ++ ...sPythonQtWrapper__QMetaObject-members.html | 83 + classPythonQtWrapper__QMetaObject.html | 1031 +++++++ classPythonQtWrapper__QMetaObject.png | Bin 0 -> 687 bytes classes.html | 89 + closed.png | Bin 0 -> 132 bytes dir_68267d1309a1af8e8297ef4c3efbcdba.html | 115 + doc.png | Bin 0 -> 746 bytes doxygen.css | 1764 +++++++++++ doxygen.png | Bin 0 -> 3779 bytes dynsections.js | 127 + files.html | 84 + folderclosed.png | Bin 0 -> 616 bytes folderopen.png | Bin 0 -> 597 bytes functions.html | 156 + functions_a.html | 118 + functions_b.html | 56 + functions_c.html | 235 ++ functions_d.html | 96 + functions_e.html | 93 + functions_enum.html | 76 + functions_eval.html | 287 ++ functions_f.html | 95 + functions_func.html | 109 + functions_func_b.html | 56 + functions_func_c.html | 214 ++ functions_func_d.html | 81 + functions_func_e.html | 78 + functions_func_f.html | 74 + functions_func_g.html | 150 + functions_func_h.html | 77 + functions_func_i.html | 161 + functions_func_l.html | 66 + functions_func_m.html | 93 + functions_func_n.html | 74 + functions_func_o.html | 95 + functions_func_p.html | 158 + functions_func_q.html | 86 + functions_func_r.html | 120 + functions_func_s.html | 285 ++ functions_func_t.html | 72 + functions_func_u.html | 71 + functions_func_w.html | 68 + functions_func_~.html | 95 + functions_g.html | 150 + functions_h.html | 77 + functions_i.html | 189 ++ functions_l.html | 69 + functions_m.html | 129 + functions_n.html | 90 + functions_o.html | 98 + functions_p.html | 181 ++ functions_q.html | 86 + functions_r.html | 126 + functions_rela.html | 54 + functions_s.html | 306 ++ functions_t.html | 163 ++ functions_type.html | 54 + functions_u.html | 77 + functions_v.html | 59 + functions_vars.html | 323 ++ functions_w.html | 68 + functions_~.html | 95 + globals.html | 355 +++ globals_defs.html | 172 ++ globals_enum.html | 54 + globals_eval.html | 60 + globals_func.html | 126 + globals_type.html | 96 + globals_vars.html | 78 + hierarchy.html | 102 + index.html | 67 + jquery.js | 87 + menu.js | 50 + menudata.js | 144 + namespacePythonQtUtils.html | 185 ++ namespacemembers.html | 63 + namespacemembers_func.html | 63 + namespaces.html | 58 + nav_f.png | Bin 0 -> 153 bytes nav_g.png | Bin 0 -> 95 bytes nav_h.png | Bin 0 -> 98 bytes open.png | Bin 0 -> 123 bytes pages.html | 63 + splitbar.png | Bin 0 -> 314 bytes structPythonQtBoolResultObject-members.html | 57 + structPythonQtBoolResultObject.html | 91 + ...tClassInfo_1_1ParentClassInfo-members.html | 63 + ...tPythonQtClassInfo_1_1ParentClassInfo.html | 160 + structPythonQtClassWrapper-members.html | 60 + structPythonQtClassWrapper.html | 167 ++ structPythonQtDynamicClassInfo-members.html | 60 + structPythonQtDynamicClassInfo.html | 166 ++ structPythonQtDynamicSignalInfo-members.html | 58 + structPythonQtDynamicSignalInfo.html | 105 + ...tPythonQtImport_1_1ModuleInfo-members.html | 64 + structPythonQtImport_1_1ModuleInfo.html | 173 ++ ...PythonQtInstanceWrapperStruct-members.html | 68 + structPythonQtInstanceWrapperStruct.html | 408 +++ structPythonQtMemberInfo-members.html | 74 + structPythonQtMemberInfo.html | 310 ++ ...QtMethodInfo_1_1ParameterInfo-members.html | 72 + ...ctPythonQtMethodInfo_1_1ParameterInfo.html | 293 ++ structPythonQtProperty-members.html | 57 + structPythonQtProperty.html | 87 + structPythonQtPropertyData-members.html | 73 + structPythonQtPropertyData.html | 448 +++ ...tPythonQtSignalFunctionObject-members.html | 60 + structPythonQtSignalFunctionObject.html | 145 + structPythonQtSlotDecorator-members.html | 58 + structPythonQtSlotDecorator.html | 105 + structPythonQtSlotFunctionObject-members.html | 59 + structPythonQtSlotFunctionObject.html | 127 + structPythonQtStdInRedirect-members.html | 58 + structPythonQtStdInRedirect.html | 109 + structPythonQtStdOutRedirect-members.html | 59 + structPythonQtStdOutRedirect.html | 127 + struct__PythonQtImporter-members.html | 57 + struct__PythonQtImporter.html | 91 + sync_off.png | Bin 0 -> 853 bytes sync_on.png | Bin 0 -> 845 bytes tab_a.png | Bin 0 -> 142 bytes tab_b.png | Bin 0 -> 169 bytes tab_h.png | Bin 0 -> 177 bytes tab_s.png | Bin 0 -> 184 bytes tabs.css | 1 + 250 files changed, 41023 insertions(+) create mode 100644 Building.html create mode 100644 Developer.html create mode 100644 Download.html create mode 100644 Examples.html create mode 100644 Features.html create mode 100644 License.html create mode 100644 PythonQt.jpg create mode 100644 PythonQtBoolResult_8h.html create mode 100644 PythonQtBoolResult_8h_source.html create mode 100644 PythonQtClassInfo_8h.html create mode 100644 PythonQtClassInfo_8h_source.html create mode 100644 PythonQtClassWrapper_8h.html create mode 100644 PythonQtClassWrapper_8h_source.html create mode 100644 PythonQtConversion_8h.html create mode 100644 PythonQtConversion_8h_source.html create mode 100644 PythonQtCppWrapperFactory_8h.html create mode 100644 PythonQtCppWrapperFactory_8h_source.html create mode 100644 PythonQtDoc_8h.html create mode 100644 PythonQtDoc_8h_source.html create mode 100644 PythonQtImportFileInterface_8h.html create mode 100644 PythonQtImportFileInterface_8h_source.html create mode 100644 PythonQtImporter_8h.html create mode 100644 PythonQtImporter_8h_source.html create mode 100644 PythonQtInstanceWrapper_8h.html create mode 100644 PythonQtInstanceWrapper_8h_source.html create mode 100644 PythonQtMethodInfo_8h.html create mode 100644 PythonQtMethodInfo_8h_source.html create mode 100644 PythonQtMisc_8h.html create mode 100644 PythonQtMisc_8h_source.html create mode 100644 PythonQtObjectPtr_8h.html create mode 100644 PythonQtObjectPtr_8h_source.html create mode 100644 PythonQtProperty_8h.html create mode 100644 PythonQtProperty_8h_source.html create mode 100644 PythonQtPythonInclude_8h.html create mode 100644 PythonQtPythonInclude_8h_source.html create mode 100644 PythonQtQFileImporter_8h.html create mode 100644 PythonQtQFileImporter_8h_source.html create mode 100644 PythonQtSignalReceiver_8h.html create mode 100644 PythonQtSignalReceiver_8h_source.html create mode 100644 PythonQtSignal_8h.html create mode 100644 PythonQtSignal_8h_source.html create mode 100644 PythonQtSlotDecorator_8h.html create mode 100644 PythonQtSlotDecorator_8h_source.html create mode 100644 PythonQtSlot_8h.html create mode 100644 PythonQtSlot_8h_source.html create mode 100644 PythonQtStdDecorators_8h.html create mode 100644 PythonQtStdDecorators_8h_source.html create mode 100644 PythonQtStdIn_8h.html create mode 100644 PythonQtStdIn_8h_source.html create mode 100644 PythonQtStdOut_8h.html create mode 100644 PythonQtStdOut_8h_source.html create mode 100644 PythonQtSystem_8h.html create mode 100644 PythonQtSystem_8h_source.html create mode 100644 PythonQtThreadSupport_8h.html create mode 100644 PythonQtThreadSupport_8h_source.html create mode 100644 PythonQtUtils_8h.html create mode 100644 PythonQtUtils_8h_source.html create mode 100644 PythonQtVariants_8h.html create mode 100644 PythonQtVariants_8h_source.html create mode 100644 PythonQt_8h.html create mode 100644 PythonQt_8h_source.html create mode 100644 annotated.html create mode 100644 bc_s.png create mode 100644 bdwn.png create mode 100644 classPythonQt-members.html create mode 100644 classPythonQt.html create mode 100644 classPythonQt.png create mode 100644 classPythonQtArgumentFrame-members.html create mode 100644 classPythonQtArgumentFrame.html create mode 100644 classPythonQtClassInfo-members.html create mode 100644 classPythonQtClassInfo.html create mode 100644 classPythonQtConv-members.html create mode 100644 classPythonQtConv.html create mode 100644 classPythonQtCppWrapperFactory-members.html create mode 100644 classPythonQtCppWrapperFactory.html create mode 100644 classPythonQtDebugAPI-members.html create mode 100644 classPythonQtDebugAPI.html create mode 100644 classPythonQtDebugAPI.png create mode 100644 classPythonQtForeignWrapperFactory-members.html create mode 100644 classPythonQtForeignWrapperFactory.html create mode 100644 classPythonQtGILScope-members.html create mode 100644 classPythonQtGILScope.html create mode 100644 classPythonQtImport-members.html create mode 100644 classPythonQtImport.html create mode 100644 classPythonQtImportFileInterface-members.html create mode 100644 classPythonQtImportFileInterface.html create mode 100644 classPythonQtImportFileInterface.png create mode 100644 classPythonQtMethodInfo-members.html create mode 100644 classPythonQtMethodInfo.html create mode 100644 classPythonQtMethodInfo.png create mode 100644 classPythonQtNewOwnerOfThis-members.html create mode 100644 classPythonQtNewOwnerOfThis.html create mode 100644 classPythonQtObjectPtr-members.html create mode 100644 classPythonQtObjectPtr.html create mode 100644 classPythonQtPassOwnershipToCPP-members.html create mode 100644 classPythonQtPassOwnershipToCPP.html create mode 100644 classPythonQtPassOwnershipToPython-members.html create mode 100644 classPythonQtPassOwnershipToPython.html create mode 100644 classPythonQtPrivate-members.html create mode 100644 classPythonQtPrivate.html create mode 100644 classPythonQtPrivate.png create mode 100644 classPythonQtQFileImporter-members.html create mode 100644 classPythonQtQFileImporter.html create mode 100644 classPythonQtQFileImporter.png create mode 100644 classPythonQtSafeObjectPtr-members.html create mode 100644 classPythonQtSafeObjectPtr.html create mode 100644 classPythonQtSignalReceiver-members.html create mode 100644 classPythonQtSignalReceiver.html create mode 100644 classPythonQtSignalReceiver.png create mode 100644 classPythonQtSignalReceiverBase-members.html create mode 100644 classPythonQtSignalReceiverBase.html create mode 100644 classPythonQtSignalReceiverBase.png create mode 100644 classPythonQtSignalTarget-members.html create mode 100644 classPythonQtSignalTarget.html create mode 100644 classPythonQtSingleShotTimer-members.html create mode 100644 classPythonQtSingleShotTimer.html create mode 100644 classPythonQtSingleShotTimer.png create mode 100644 classPythonQtSlotInfo-members.html create mode 100644 classPythonQtSlotInfo.html create mode 100644 classPythonQtSlotInfo.png create mode 100644 classPythonQtStdDecorators-members.html create mode 100644 classPythonQtStdDecorators.html create mode 100644 classPythonQtStdDecorators.png create mode 100644 classPythonQtThreadStateSaver-members.html create mode 100644 classPythonQtThreadStateSaver.html create mode 100644 classPythonQtWrapper__QMetaObject-members.html create mode 100644 classPythonQtWrapper__QMetaObject.html create mode 100644 classPythonQtWrapper__QMetaObject.png create mode 100644 classes.html create mode 100644 closed.png create mode 100644 dir_68267d1309a1af8e8297ef4c3efbcdba.html create mode 100644 doc.png create mode 100644 doxygen.css create mode 100644 doxygen.png create mode 100644 dynsections.js create mode 100644 files.html create mode 100644 folderclosed.png create mode 100644 folderopen.png create mode 100644 functions.html create mode 100644 functions_a.html create mode 100644 functions_b.html create mode 100644 functions_c.html create mode 100644 functions_d.html create mode 100644 functions_e.html create mode 100644 functions_enum.html create mode 100644 functions_eval.html create mode 100644 functions_f.html create mode 100644 functions_func.html create mode 100644 functions_func_b.html create mode 100644 functions_func_c.html create mode 100644 functions_func_d.html create mode 100644 functions_func_e.html create mode 100644 functions_func_f.html create mode 100644 functions_func_g.html create mode 100644 functions_func_h.html create mode 100644 functions_func_i.html create mode 100644 functions_func_l.html create mode 100644 functions_func_m.html create mode 100644 functions_func_n.html create mode 100644 functions_func_o.html create mode 100644 functions_func_p.html create mode 100644 functions_func_q.html create mode 100644 functions_func_r.html create mode 100644 functions_func_s.html create mode 100644 functions_func_t.html create mode 100644 functions_func_u.html create mode 100644 functions_func_w.html create mode 100644 functions_func_~.html create mode 100644 functions_g.html create mode 100644 functions_h.html create mode 100644 functions_i.html create mode 100644 functions_l.html create mode 100644 functions_m.html create mode 100644 functions_n.html create mode 100644 functions_o.html create mode 100644 functions_p.html create mode 100644 functions_q.html create mode 100644 functions_r.html create mode 100644 functions_rela.html create mode 100644 functions_s.html create mode 100644 functions_t.html create mode 100644 functions_type.html create mode 100644 functions_u.html create mode 100644 functions_v.html create mode 100644 functions_vars.html create mode 100644 functions_w.html create mode 100644 functions_~.html create mode 100644 globals.html create mode 100644 globals_defs.html create mode 100644 globals_enum.html create mode 100644 globals_eval.html create mode 100644 globals_func.html create mode 100644 globals_type.html create mode 100644 globals_vars.html create mode 100644 hierarchy.html create mode 100644 index.html create mode 100644 jquery.js create mode 100644 menu.js create mode 100644 menudata.js create mode 100644 namespacePythonQtUtils.html create mode 100644 namespacemembers.html create mode 100644 namespacemembers_func.html create mode 100644 namespaces.html create mode 100644 nav_f.png create mode 100644 nav_g.png create mode 100644 nav_h.png create mode 100644 open.png create mode 100644 pages.html create mode 100644 splitbar.png create mode 100644 structPythonQtBoolResultObject-members.html create mode 100644 structPythonQtBoolResultObject.html create mode 100644 structPythonQtClassInfo_1_1ParentClassInfo-members.html create mode 100644 structPythonQtClassInfo_1_1ParentClassInfo.html create mode 100644 structPythonQtClassWrapper-members.html create mode 100644 structPythonQtClassWrapper.html create mode 100644 structPythonQtDynamicClassInfo-members.html create mode 100644 structPythonQtDynamicClassInfo.html create mode 100644 structPythonQtDynamicSignalInfo-members.html create mode 100644 structPythonQtDynamicSignalInfo.html create mode 100644 structPythonQtImport_1_1ModuleInfo-members.html create mode 100644 structPythonQtImport_1_1ModuleInfo.html create mode 100644 structPythonQtInstanceWrapperStruct-members.html create mode 100644 structPythonQtInstanceWrapperStruct.html create mode 100644 structPythonQtMemberInfo-members.html create mode 100644 structPythonQtMemberInfo.html create mode 100644 structPythonQtMethodInfo_1_1ParameterInfo-members.html create mode 100644 structPythonQtMethodInfo_1_1ParameterInfo.html create mode 100644 structPythonQtProperty-members.html create mode 100644 structPythonQtProperty.html create mode 100644 structPythonQtPropertyData-members.html create mode 100644 structPythonQtPropertyData.html create mode 100644 structPythonQtSignalFunctionObject-members.html create mode 100644 structPythonQtSignalFunctionObject.html create mode 100644 structPythonQtSlotDecorator-members.html create mode 100644 structPythonQtSlotDecorator.html create mode 100644 structPythonQtSlotFunctionObject-members.html create mode 100644 structPythonQtSlotFunctionObject.html create mode 100644 structPythonQtStdInRedirect-members.html create mode 100644 structPythonQtStdInRedirect.html create mode 100644 structPythonQtStdOutRedirect-members.html create mode 100644 structPythonQtStdOutRedirect.html create mode 100644 struct__PythonQtImporter-members.html create mode 100644 struct__PythonQtImporter.html create mode 100644 sync_off.png create mode 100644 sync_on.png create mode 100644 tab_a.png create mode 100644 tab_b.png create mode 100644 tab_h.png create mode 100644 tab_s.png create mode 100644 tabs.css diff --git a/Building.html b/Building.html new file mode 100644 index 000000000..e0c102d68 --- /dev/null +++ b/Building.html @@ -0,0 +1,70 @@ + + + + + + + +PythonQt: Building + + + + + + +
+
+ + + + + + +
+
PythonQt +
+
+
+ + + + + + +
+
+
+
Building
+
+
+

PythonQt requires at least Qt 4.6.1 (for earlier Qt versions, you will need to run the pythonqt_generator, Qt 4.3 is the absolute minimum) and Python 2.6.x/2.7.x or Python 3.3 (or higher). To compile PythonQt, you will need a python developer installation which includes Python's header files and the python2x.[lib | dll | so | dynlib]. The recommended way to build PythonQt is to use the QMake-based *.pro file. The build scripts a currently set to use Python 2.6. You may need to tweak the build/python.prf file to set the correct Python includes and libs on your system.

+

On Windows, the (non-source) Python Windows installer can be used. Make sure that you use the same compiler as the one that your Python distribution is built with. If you want to use another compiler, you will need to build Python yourself, using your compiler.

+

To build PythonQt, you need to set the environment variable PYTHON_PATH to point to the root dir of the python installation and PYTHON_LIB to point to the directory where the python lib file is located.

+

When using the prebuild Python installer, this will be:

+
> set PYTHON_PATH = c:\Python26
> set PYTHON_LIB = c:\Python26\libs

When using the python sources, this will be something like:

+
> set PYTHON_PATH = c:\yourDir\Python-2.6.1\
> set PYTHON_LIB = c:\yourDir\Python-2.6.1\PCbuild8\Win32

To build all, do the following (after setting the above variables):

+
> cd PythonQtRoot
> vcvars32
> qmake
> nmake

This should build everything. If Python can not be linked or include files can not be found, you probably need to tweak build/python.prf

+

The tests and examples are located in PythonQt/lib.

+

When using a Python distribution, the debug build typically does not work because the pythonxx_d.lib/.dll are not provided. You can tweak linking of the debug build to the release Python version, but this typically requires patching pyconfig.h and removing Py_DEBUG and linker pragmas (google for it!).

+

On Linux, you need to install a Python-dev package. If Python can not be linked or include files can not be found, you probably need to tweak build/python.prf

+

To build PythonQt, just do a:

+
> cd PythonQtRoot
> qmake
> make all

The tests and examples are located in PythonQt/lib. You should add PythonQt/lib to your LD_LIBRARY_PATH so that the runtime linker can find the *.so files.

+

On Mac, Python is installed as a Framework, so you should not need to install it. To build PythonQt, just do a:

+
> cd PythonQtRoot
> qmake
> make all

+Tests

+

There is a unit test that tests most features of PythonQt, see the tests subdirectory for details.

+
+
+ + + + diff --git a/Developer.html b/Developer.html new file mode 100644 index 000000000..5e0d6c410 --- /dev/null +++ b/Developer.html @@ -0,0 +1,171 @@ + + + + + + + +PythonQt: Developer + + + + + + +
+
+ + + + + + +
+
PythonQt +
+
+
+ + + + + + +
+
+
+
Developer
+
+
+

+Interface

+

The main interface to PythonQt is the PythonQt singleton. PythonQt needs to be initialized via PythonQt::init() once. Afterwards you communicate with the singleton via PythonQt::self(). PythonQt offers a complete Qt binding, which needs to be enabled via PythonQt_QtAll::init().

+

+Datatype Mapping

+

The following table shows the mapping between Python and Qt objects:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Qt/C++Python
boolbool
doublefloat
floatfloat
char/uchar,int/uint,short,ushort,QCharinteger
longinteger
ulong,longlong,ulonglonglong
QStringunicode string
QByteArrayQByteArray wrapper
char*str
QStringListtuple of unicode strings
QVariantListtuple of objects
QVariantMapdict of objects
QVariantdepends on type, see below
QSize, QRect and all other standard Qt QVariantsvariant wrapper that supports complete API of the respective Qt classes
OwnRegisteredMetaTypeC++ wrapper, optionally with additional information/wrapping provided by registerCPPClass()
QList<AnyObject*>converts to a list of CPP wrappers
QVector<AnyObject*>converts to a list of CPP wrappers
EnumTypeEnum wrapper derived from python integer
QObject (and derived classes)QObject wrapper
C++ objectCPP wrapper, either wrapped via PythonQtCppWrapperFactory or just decorated with decorators
PyObjectPyObject
+

PyObject is passed as direct pointer, which allows to pass/return any Python object directly to/from a Qt slot that uses PyObject* as its argument/return value. QVariants are mapped recursively as given above, e.g. a dictionary can contain lists of dictionaries of doubles. All Qt QVariant types are implemented, PythonQt supports the complete Qt API for these object.

+

+QObject Wrapping

+

All classes derived from QObject are automatically wrapped with a python wrapper class when they become visible to the Python interpreter. This can happen via

    +
  • the PythonQt::addObject() method
  • +
  • when a Qt slot returns a QObject derived object to python
  • +
  • when a Qt signal contains a QObject and is connected to a python function
  • +
+

It is important that you call PythonQt::registerClass() for any QObject derived class that may become visible to Python, except when you add it via PythonQt::addObject(). This will register the complete parent hierachy of the registered class, so that when you register e.g. a QPushButton, QWidget will be registered as well (and all intermediate parents).

+

From Python, you can talk to the returned QObjects in a natural way by calling their slots and receiving the return values. You can also read/write all properties of the objects as if they where normal python properties.

+

In addition to this, the wrapped objects support

    +
  • className() - returns a string that reprents the classname of the QObject
  • +
  • help() - shows all properties, slots, enums, decorator slots and constructors of the object, in a printable form
  • +
  • delete() - deletes the object (use with care, especially if you passed the ownership to C++)
  • +
  • connect(signal, function) - connect the signal of the given object to a python function
  • +
  • connect(signal, qobject, slot) - connect the signal of the given object to a slot of another QObject
  • +
  • disconnect(signal, function) - disconnect the signal of the given object from a python function
  • +
  • disconnect(signal, qobject, slot) - disconnect the signal of the given object from a slot of another QObject
  • +
  • children() - returns the children of the object
  • +
  • setParent(QObject) - set the parent
  • +
  • QObject* parent() - get the parent
  • +
+

The below example shows how to connect signals in Python:

+
# define a signal handler function
def someFunction(flag):
print flag
# button1 is a QPushButton that has been added to Python via addObject()
# connect the clicked signal to a python function:
button1.connect("clicked(bool)", someFunction)

+CPP Wrapping

+

You can create dedicated wrapper QObjects for any C++ class. This is done by deriving from PythonQtCppWrapperFactory and adding your factory via addWrapperFactory(). Whenever PythonQt encounters a CPP pointer (e.g. on a slot or signal) and it does not known it as a QObject derived class, it will create a generic CPP wrapper. So even unknown C++ objects can be passed through Python. If the wrapper factory supports the CPP class, a QObject wrapper will be created for each instance that enters Python. An alternative to a complete wrapper via the wrapper factory are decorators, see Decorator slots

+

+Meta Object/Class access

+

For each known C++ class, PythonQt provides a Python class. These classes are visible inside of the "PythonQt" python module or in subpackages if a package is given when the class is registered.

+

A Meta class supports:

+
    +
  • access to all declared enum values
  • +
  • constructors
  • +
  • static methods
  • +
  • unbound non-static methods
  • +
  • help() and className()
  • +
+

From within Python, you can import the module "PythonQt" to access these classes and the Qt namespace.

+
from PythonQt import QtCore
# namespace access:
print QtCore.Qt.AlignLeft
# constructors
a = QtCore.QSize(12,13)
b = QtCore.QFont()
# static method
QtCore.QDate.currentDate()
# enum value
QtCore.QFont.UltraCondensed

+Decorator slots

+

PythonQt introduces a new generic approach to extend any wrapped QObject or CPP object with

+
    +
  • constructors
  • +
  • destructors (for CPP objects)
  • +
  • additional slots
  • +
  • static slots (callable on both the Meta object and the instances)
  • +
+

The idea behind decorators is that we wanted to make it as easy as possible to extend wrapped objects. Since we already have an implementation for invoking any Qt Slot from Python, it looked promising to use this approach for the extension of wrapped objects as well. This avoids that the PythonQt user needs to care about how Python arguments are mapped from/to Qt when he wants to create static methods, constructors and additional member functions.

+

The basic idea about decorators is to create a QObject derived class that implements slots which take one of the above roles (e.g. constructor, destructor etc.) via a naming convention. These slots are then assigned to other classes via the naming convention.

+
    +
  • SomeClassName* new_SomeClassName(...) - defines a constructor for "SomeClassName" that returns a new object of type SomeClassName (where SomeClassName can be any CPP class, not just QObject classes)
  • +
  • void delete_SomeClassName(SomeClassName* o) - defines a destructor, which should delete the passed in object o
  • +
  • anything static_SomeClassName_someMethodName(...) - defines a static method that is callable on instances and the meta class
  • +
  • anything someMethodName(SomeClassName* o, ...) - defines a slot that will be available on SomeClassName instances (and derived instances). When such a slot is called the first argument is the pointer to the instance and the rest of the arguments can be used to make a call on the instance.
  • +
+

The below example shows all kinds of decorators in action:

+
// an example CPP object
class YourCPPObject {
public:
YourCPPObject(int arg1, float arg2) { a = arg1; b = arg2; }
float doSomething(int arg1) { return arg1*a*b; };
private:
int a;
float b;
};
// an example decorator
class ExampleDecorator : public QObject
{
Q_OBJECT
public slots:
// add a constructor to QSize that takes a QPoint
QSize* new_QSize(const QPoint& p) { return new QSize(p.x(), p.y()); }
// add a constructor for QPushButton that takes a text and a parent widget
QPushButton* new_QPushButton(const QString& text, QWidget* parent=NULL) { return new QPushButton(text, parent); }
// add a constructor for a CPP object
YourCPPObject* new_YourCPPObject(int arg1, float arg2) { return new YourCPPObject(arg1, arg2); }
// add a destructor for a CPP object
void delete_YourCPPObject(YourCPPObject* obj) { delete obj; }
// add a static method to QWidget
QWidget* static_QWidget_mouseGrabber() { return QWidget::mouseGrabber(); }
// add an additional slot to QWidget (make move() callable, which is not declared as a slot in QWidget)
void move(QWidget* w, const QPoint& p) { w->move(p); }
// add an additional slot to QWidget, overloading the above move method
void move(QWidget* w, int x, int y) { w->move(x,y); }
// add a method to your own CPP object
int doSomething(YourCPPObject* obj, int arg1) { return obj->doSomething(arg1); }
};
...
PythonQt::self()->addDecorators(new ExampleDecorator());
PythonQt::self()->registerCPPClass("YourCPPObject");

After you have registered an instance of the above ExampleDecorator, you can do the following from Python (all these calls are mapped to the above decorator slots):

+
from PythonQt import QtCore, QtGui, YourCPPObject
# call our new constructor of QSize
size = QtCore.QSize(QPoint(1,2));
# call our new QPushButton constructor
button = QtGui.QPushButton("sometext");
# call the move slot (overload1)
button.move(QPoint(0,0))
# call the move slot (overload2)
button.move(0,0)
# call the static method
grabber = QtGui.QWidget.mouseWrapper();
# create a CPP object via constructor
yourCpp = YourCPPObject(1,11.5)
# call the wrapped method on CPP object
print yourCpp.doSomething(1);
# destructor will be called:
yourCpp = None

+Ownership management

+

In PythonQt, each wrapped C++ object is either owned by Python or C++. When an object is created via a Python constructor, it is owned by Python by default. When an object is returned from a C++ API (e.g. a slot), it is owned by C++ by default. Since the Qt API contains various APIs that pass the ownership from/to other C++ objects, PythonQt needs to keep track of such API calls. This is archieved by annotating arguments and return values in wrapper slots with magic templates:

+ +

These annotation templates work for since C++ pointer types. In addition to that, they work for QList<AnyObject*>, to pass the ownership for each object in the list.

+

Examples:

public slots:
PythonQtPassOwnershipToPython<QGraphicsItem*> createNewItemOwnedByPython();
void addItemToCPP(PythonQtPassOwnershipToPython<QList<QGraphicsItem*> > items);
void addItemParent(QGraphicsItem* wrappedObject, PythonQtNewOwnerOfThis<QGraphicsItem*> parent);
+
+ + + + diff --git a/Download.html b/Download.html new file mode 100644 index 000000000..901108aa2 --- /dev/null +++ b/Download.html @@ -0,0 +1,57 @@ + + + + + + + +PythonQt: Download + + + + + + +
+
+ + + + + + +
+
PythonQt +
+
+
+ + + + + + +
+
+
+
Download
+
+
+

PythonQt is hosted on GitHub.

+

You can download the source code or alternatively you can get the latest version from the git repository.

+
Note
We do not offer prebuilt binaries, since there are so many possible combinations of platforms (Windows/Linux/MacOs), architectures (32/64 bit) and Qt / Python versions.
+
+
+ + + + diff --git a/Examples.html b/Examples.html new file mode 100644 index 000000000..5f12ded1b --- /dev/null +++ b/Examples.html @@ -0,0 +1,56 @@ + + + + + + + +PythonQt: Examples + + + + + + +
+
+ + + + + + +
+
PythonQt +
+
+
+ + + + + + +
+
+
+
Examples
+
+
+

Examples are available in the examples directory. The PyScriptingConsole implements a simple interactive scripting console that shows how to script a simple application. The PyLauncher application can be used to run arbitrary PythonQt scripts given on the commandline.

+

The following shows a simple example on how to integrate PythonQt into your Qt application:

+
#include "PythonQt.h"
#include <QApplication>
...
int main( int argc, char **argv )
{
QApplication qapp(argc, argv);
// init PythonQt and Python itself
// get a smart pointer to the __main__ module of the Python interpreter
// add a QObject as variable of name "example" to the namespace of the __main__ module
PyExampleObject example;
context.addObject("example", &example);
// do something
context.evalScript("print example");
context.evalScript("def multiply(a,b):\n return a*b;\n");
QVariantList args;
args << 42 << 47;
QVariant result = context.call("multiply", args);
...
+
+ + + + diff --git a/Features.html b/Features.html new file mode 100644 index 000000000..247979c48 --- /dev/null +++ b/Features.html @@ -0,0 +1,123 @@ + + + + + + + +PythonQt: Features + + + + + + +
+
+ + + + + + +
+
PythonQt +
+
+
+ + + + + + +
+
+
+
Features
+
+
+

+Built-in Features

+

The following are the built-in features of the PythonQt library:

+
    +
  • Access all slots, properties, children and registered enums of any QObject derived class from Python
  • +
  • Connecting Qt Signals to Python functions (both from within Python and from C++)
  • +
  • Easy wrapping of Python objects from C++ with smart, reference-counting PythonQtObjectPtr.
  • +
  • Convenient conversions to/from QVariant for PythonQtObjectPtr.
  • +
  • Wrapping of C++ objects (which are not derived from QObject) via PythonQtCppWrapperFactory
  • +
  • Extending C++ and QObject derived classes with additional slots, static methods and constructors (see Decorators)
  • +
  • StdOut/Err redirection to Qt signals instead of cout
  • +
  • Interface for creating your own import replacement, so that Python scripts can be e.g. signed/verified before they are executed (PythonQtImportFileInterface)
  • +
  • Mapping of plain-old-datatypes and ALL QVariant types to and from Python
  • +
  • Support for wrapping of user QVariant types which are registerd via QMetaType
  • +
  • Support for Qt namespace (with all enumerators)
  • +
  • All PythonQt wrapped objects support the dir() statement, so that you can see easily which attributes a QObject, CPP object or QVariant has
  • +
  • No preprocessing/wrapping tool needs to be started, PythonQt can script any QObject without prior knowledge about it (except for the MetaObject information from the moc)
  • +
  • Multiple inheritance for C++ objects (e.g. a QWidget is derived from QObject and QPaintDevice, PythonQt will automatically cast a QWidget to a QPaintDevice when needed)
  • +
  • Polymorphic downcasting (if e.g. PythonQt sees a QEvent, it can downcast it depending on the type(), so the Python e.g. sees a QPaintEvent instead of a plain QEvent)
  • +
  • Deriving C++ objects from Python and overwriting virtual method with a Python implementation (requires usage of wrapper generator or manual work!)
  • +
  • Extensible handler for Python/C++ conversion of complex types, e.g. mapping of QVector<SomeObject> to/from a Python array
  • +
  • Setting of dynamic QObject properties via setProperty(), dynamic properties can be accessed for reading and writing like normal Python attributes (but creating a new property needs to be done with setProperty(), to distinguish from normal Python attributes)
  • +
  • Support for QtCore.Signal, QtCore.Slot and QtCore.Property, including the creation of a dynamic QMetaObject.
  • +
+

+Features with wrapper generator

+

PythonQt offers the additional PythonQt_QtAll library which wraps the complete Qt API, including all C++ classes and all non-slots on QObject derived classes. This offers the following features:

+
    +
  • Complete Qt API wrapped and accessible
  • +
  • The following modules are available as submodules of the PythonQt module:
      +
    • QtCore
    • +
    • QtGui
    • +
    • QtNetwork
    • +
    • QtOpenGL
    • +
    • QtSql
    • +
    • QtSvg
    • +
    • QtWebKit
    • +
    • QtXml
    • +
    • QtXmlPatterns
    • +
    • QtMultimedia
    • +
    • QtQml
    • +
    • QtQuick
    • +
    +
  • +
  • Any Qt class that has virtual methods can be easily derived from Python and the virtual methods can be reimplemented in Python
  • +
  • Polymorphic downcasting on QEvent, QGraphicsItem, QStyleOption, ...
  • +
  • Multiple inheritance support (e.g., QGraphicsTextItem is a QObject and a QGraphicsItem, PythonQt will handle this well)
  • +
  • QtQuick support is experimental and currently it is not possible to register new qml components from Python
  • +
+

+Supported Versions

+

PythonQt supports:

    +
  • Python 2 (>= Python 2.6)
  • +
  • Python 3 (>= Python 3.3)
  • +
  • Qt 4.x (Qt 4.7 and Qt 4.8 recommended)
  • +
  • Qt 5.x (Tested with Qt 5.0, 5.3, 5.4 and 5.6)
  • +
+

The last working Qt4 version is available at svn branches/Qt4LastWorkingVersion or you can download the PythonQt 3.0 release. The current svn trunk no longer supports Qt4, since we started to make use of some Qt5-only features.

+

+Comparison with PySide

+
    +
  • PythonQt is not as pythonic as PySide in many details (e.g. buffer protocol, pickling, translation support, ...) and it is mainly thought for embedding and intercommunication between Qt/Cpp and Python
  • +
  • PythonQt offers properties as Python attributes, while PySide offers them as setter/getter methods (e.g. QWidget.width is a property in PythonQt and a method in PySide)
  • +
  • PythonQt currently does not support instanceof checks for Qt classes, except for the exact match and derived Python classes
  • +
  • QObject.emit to emit Qt signals from Python is not yet implemented but PythonQt allows to just emit a signal by calling it like a normal slot
  • +
  • Ownership handling of objects is not as complete as in PySide and PySide, especially in situations where the ownership is not clearly passed to C++ on the C++ API.
  • +
  • QStrings are always converted to unicode Python objects, QByteArray always stays a QByteArray and can be converted using QByteArray.data()
  • +
  • Qt methods that take an extra "bool* ok" parameter can be called passing PythonQt.BoolResult as parameter. In PySide, a tuple is returned instead.
  • +
+
+
+ + + + diff --git a/License.html b/License.html new file mode 100644 index 000000000..6a30f5e3a --- /dev/null +++ b/License.html @@ -0,0 +1,59 @@ + + + + + + + +PythonQt: License + + + + + + +
+
+ + + + + + +
+
PythonQt +
+
+
+ + + + + + +
+
+
+
License
+
+
+

PythonQt is distributed under the LGPL 2.1 license. It can be used in commercial applications when following the LGPL 2.1 obligations.

+

The build system of PythonQt makes use of a modified version of the LGPL'ed QtScript generator, located in the "generator" directory.

+

See https://code.qt.io/cgit/qt-labs/qtscriptgenerator.git for details on the original project. Thanks a lot to the QtJambi guys and the QtScript Generator project for the C++ parser and Qt typesystem files!

+

The PythonQt wrappers generated by the generator located in the "generated_cpp" directory are free to be used without any licensing restrictions.

+

The generated wrappers are pre-generated and checked-in for 5.0, 5.3, 5.4 and 5.6, so you only need to build and run the generator when you want to build additional wrappers or you want to upgrade/downgrade to another Qt version. You may use the generator to generate C++ bindings for your own C++ classes (e.g., to make them inheritable in Python), but this is currently not documented and involves creating your own typesystem files.

+
+
+ + + + diff --git a/PythonQt.jpg b/PythonQt.jpg new file mode 100644 index 0000000000000000000000000000000000000000..213a3744a4806c07cb7d8c9212cffa02157b99d7 GIT binary patch literal 19553 zcma&N1yq~Q76%w8PH`(<+@ZKjC=|Eg1Szh;U5m9?ao0f6;uc(r1uYbJTHK4fEdTfR zy?tkQ&z_x}d}q!~zRAp;x%d9A%=7&7Zvd|12Zav+1VjM9;^hN)J_O*&c$nM!01yC3 z002PorRf-e4YY7FvjkXlzqBAcF9E^;uMiOtUm?DFDaikPQIKA}LP9}BMn*wKMnyyY zS3yI=z`(@7KzseKg8fgy`)@%&LPA1CLB&Et!@|dYjg3$EPtU&||NY7TcjdVofQJSs zL3n(HfCoUtLwJRU@Z1OJdYLu=72)Oa--3Yn3JDnn4gH_iSAbXl+lP#T`qGJjh6_M= zSp*`|%UV#-FwqfS$ngpZfQL+jkHSp=)Idcur6qI;=Ak1>kfzVCHA}1~{`Cjs8q&l2 z{zu)UrkjkG1p^8CiFs(!H@>jK20^@+0bb~Xf{KEI`08I%LBRWG65J>>Kn<5#{1emQ zgde{M@@aWo>j?jxN`vV5Lg*8DiF%$F0k2G zJZ&;KAxD&CPJ_;qp_sUsybjPq(6zO5xM1pMoW>ot*yxT;%T-JcZ(Vx(7ST(rCM-vO za>oF3_~oC0_6bAX!Q@>WzejY@Fa+t#jPTWu-qkv$!6ON%Mc$b+p&7}49wg15(IqEx4~50eU23bHjqYJ@g)NTOV>pNv_5Op-1m#Joe;c!O0@&#|R4%(s?u@d4?$hy6`_ZxYa zg)6aR!4>SRwJlskSf#Fq!2+yHO+6|_-2j4g-+J)Q;Ik8rxix&5P%kWEV57Iw{wSiZ zXXg4CS80i+mEp8WUlg$?APTDWV9q*H^xqY5@w1;B2zjfn@_##)SiG;Y;J=@mNK(Cl zE@e34L_3bDtEO8iMe@4RvWK!LhQz$T43aSEILXmKlV9kLY(%HF>%W%9bL3AAgp%~U z@R7{1071ra0o2 z-(V{+AEOMTbVC9T&=0C}kXQc2#`5PK4UY3A{IBege-_U{bN|KTjGbxF_#9@AExz>- z!j-nKY_7mvfA|{E?!H<4lS}fVj(Rs zQhIXEPPKq1AkKUkNSDxH)4wylOF_)$eAUegH@3_Cu4 zlQ7JEv@_`7z!w@)t@c9wT0ATw!@ze1@{NBdL;6Q8HsGrCL@MR2ap3$Q{EYBRKZS~IIQo2g& z7A`j}c;}A7u+t>G^rJSH?^%rNb6twBmEOE=(B0ZBXtZ6^ySqoWU81FnMxxJJVComV z-xb(CE@Y5pK>DPJRV9HkM@TTCr#SxSn>@QDH!MeWWl!Tl^cjG?@k{V#!Z5&}s}lEq z=&nd`^|i?k$Ldn$mhUTq{Pz39x-&yhZuIy?m0^tVZrv1QIcn3od6zzzkuC&UfB-sF zon9-eVVowIFfTe|r_g5z$e_x!6E_h;?KD>t%hAY_l%EF&s{0!5l!Y1qk#Tpt7~ zznCtZP`TuODwI2B>QpzvGTEL-L)JNKftCYRT;IH}gf-!Rp=!2m#3d|9aBJ`oAln0i z{y7qDp`SOTTA+p#f@EmN&=Q&%TG4X(*7y__mh-oU>b9=j6LY=4 z67`OM1~qIXCKqUFHG$9$>@gRoNhy-&YLn_-7i@0Er+s94Iw>Fr$-&jXqc8TsNz-eL z+A4Vg$Exdy(-eRd1pDQz3C-9IT8w;_xbIKGyQicE!yxHgT%AR9|qmco+$OXk% zlqV$lwZY4&+%Her&-WM7fbWp}35|Bu3p$if!>srL3P3o3LchLnSZ6Z+_YgvSNn&28 z7rElmL;_HV5bp#Uju>LU_o5d6&2BH+5d+IFRuoH!B~J%LxOCQ~bqtpEBG&HutzjSZ zVVbP(O@`Sasm3CwMeY1xoSbP7ei6(lfE6Ow>t=n|t*%_C+TS4|s?;8-CMB~o**V0P zumUa=wj?~(9mY||LLP1Rlo^Ec3h$6PY);ZPMB4kzPHb8$V7MRYuB%K1ILJd|7Th!v zEpMWI@D_&P@YeHlN)6|f{KkClLk(EpL*Ma>{&o3c$`m(t*Z-EKg+Nm0pZV$hcYe>DYQ9b!`HptAo!a|X!eh&G!Ic2c0rBN~rCu`oAZsm#l0-0=4itPxjbA z@(fU*K0vC>%Oz(IUw%ULGMH=906HF%kZmYAG)RGqfi#L3*yZ1YJK!r)PUtZZ90vA1 z8XBC$B77*7vSe>3>37fgsS$S#Bi~b%{KSQ)P{*<@0v|VeZQB3a_8o;Z2 zLUd1SR^6K$;_KLpXcSd{i(y4{AP?gw7c$Te$=6UL{Cj1MNF|kkOu&JZxDAaIG%g(J zU(h1tBQxC#hnk-In@}dO_?eNWFHWp8cuv+SS^Z%{J!SeGxc@p#uLyxtO#Pzn(^6gH zr*M|HiKrk4bO92mc-*I5e^JsVq8WB~YUQsEN`9m?`#m5|#@R3X(^u5DdoH zZ(b0anXm&SbXmr*K%I(>rBWTMx=LvFJgNzWpw-mg;IN_%cbn1=<6B5s?jf#a!zPO; zyFPDzh5QLj#>)%t8S~*%`qY=EjtDxaEK)*8iqA^$Gt3cDSC0$R8*|&=>VZ_Y(VWauYk=T^b?oksxBz_(us*`u7#ZgLS#7zHm;4=P=TT&(N zVk=;B4kB=j09oPkvkl^4=CM@-#V3DCF4RMS0@Oc*^lj6=UUbpXonaMD$LdsF)FBsH zs~k^3)^B-}@CrqG80m`!Wfp@{TU8dlKXmcQS`jl78HHAorBCDwQ48er4jaii&4)8k zC5+t5M(r;-j>zkd7Z{0X!|%VtIczq4epajS=8DKt9zS7K(+hS{-((`{*nzCyUSKmO z91|SFoBJLuWrd3&^-4$!WgRNN_Zthj`uh09v^mB;I*r!gbX*Ek9_&hv!K%7pkx*j9 z$45+&mN4pvoC_ZdbD2tyyyRfu{E`UMs%%TFAt2ax|ym` zs-UoEj9XapEf@5>!AdTqVI|R{UtND9eC?QFrXLohbY4xMtQt9D)O#Ym z)@W>u=lba6xAX^?_KzgTaJ8tV3>Q1=h0tkN8X;d)39b>#W$qOU>szczfX(Xq$}>)r z6JKwJ@X^^l12*Sky*MPVy*mFOc?L8w-IYHBl1wD;e1ncpC2uq1j!u;4 zc-DWi(_1VkFm?-7t#+D-m#4I)=I)i`ig!?Pr9l>>%{mpX+;4bxT^b8nFfbIRSr~tZ z8qa68YZCsOo`ggq_$nzh4GGgkh15G$1gV1uUxfPoFBPpAK6o?Nol&BRYNNI_icC)C)q5kuV@v3$@^27uTnPi&XpF$&L;9w+{G{VIONy5xZJD+le zQ2LElUo$JAD`of(%PCh_wS>@+gS)cK$x%dJR9gMh&_P$G~ zli?%-?Bh`7WNmX~p;Zhtx?-T+Brk?5Cdk$1m2cCQns;{W^iezr*(9%Di!_ff$Tkt( z&vrzL+t8lz)YbZTy>%lXHKsD`g4(8e3dEJzass4C)CFNvB|RZe?Af1#_@?EoB{A3y z{cW9S$-~22AD}A3Q&rQ!6Y6H%iHyL3tMuffnc-30T-FCTx#ka6Oxn2>hz*yKJrken z&P-Z5d{0f}BVTV38W57)%w_6<`Lrhht;Xv#_f0KSoN=rL}E%uNjN#=pB z(uza&IuFU$ENiUpp~N!6M{wiaX1J3c1kJJM&L}WV_VuUkgzf z%u2&b)B&?0#tI>chcS6RHc`vj{#M__8WCSd{7myqE=)1_ZMfK4XH`$3v-houiu}wS zOr&QWpc!#RDWIvl6B z+(JK%`qI+6-~9TvzWBM3)36TqLqk(hWw?9V@DfygQr+BiM0u_zCKogwx@{D#YoR;D zyK=U^K-V+c(qGr?`7!N&P5n?|to4`Wbo=&&!9Ef`PDGh^dU}PkjIy!{Q#5D#ZMKe? zA&h%}ur|>)cAd-scSG%6>`H__pfC>C{$PEWlgh&DR83w}!GAnSlJ?U&z-CafBEc1- z(wUE_#}!OrMX^CS)x(h93kzz$9YU}HgYa)N8qXKaD#KAgykuTc z{UZmPEhPfd5h(D)hGP>L5TndntJ*sKc}oe6JX!T<0zLnxI9Pae~N zFfOZ=PY|&$IH)d^j8@t4tTV?RuTHJASX%XxukGtDYGt*H9s16fGtTkkJ}=OS_w@!$ zC!EHy`FBTRBBxZ-5wx0-J#m}@AtkZ*Yg)I$Ex;y3yEyZ9!a?f=Gvyq-3a854nZ}BU zn-0p(j97aH{2I9h-Q(QPcku?hQG5pDsQS3BVAYlAbmf?Y(*1Pi&zLJbZf;p)D^GDi=(Tqr{F|%NI8l+HaWFsFxrZ{@X9=` zwAeIZ+Q-t?&Ttb2SV#J$jywCD6k5=;s!=7;lx7I%y3&1_#?8Qb1|;Ga2nOdJNJ754N#?6ug{?zGN#n$cPhfUD+U zdrm(fQx?jja$($o!vStTtLcVnd`MN566g{v=s9*GSr-cy@g)EZ0E{_d-}$eU$p;Y` zf72r~uIp4yTdnm2e2dLQ3#@3x$ED1LJ3h}nfq-QVY@ftGCOB!hwLSyptb!h$ba$T2 znx3vq#)A%8x?C^UE?feYBxS2p{7knpemDF{nKWE7@LIciqP)UAI#eMT`+W?@c4%}|=b;BxsZqqT#0D^A$A5`@ zpyuaT@^7G`R$=Jx#kGBZxDj$yhzGjMP223U_2^?Hzn2nhB8rS*73`!C^D$ykv z^J4TL_7F-hpUCU1Xcc)g6`8k=P3gDp+<9-CF?|ka1TF9_M3wz8Gwg*FJrf70=l^yyibQLoJbqMEou92zIA$p*bhX zwZ8f&d6_S4_$io&d^w1>p|bhFczZ>D-@qB^xG93R{Jx80Utq0^0PJV}Z8dLEI7zJ~ zU?|FHL0n>I`ZI2TZTx ztGC%tk$3P#bj$nLFDZ`X?V%?D!|IYJ5_og3nUalcJ0P%xxbEJe(@bpY#KFHFI%WB5 z!Q)D1JXL}#_1^VzDWT^Qo+mXp=4n<3;x7Bx>aOGf*BwrPA|4Zzd^K*7@Lv?_^mS}2 z-aE=1^=4lFLuF*KKuNsx%fVBY*55dC-I7%3%2@I*J{Fir_TO$Wwg33aUYy{QpOBGI z4bV#&p!uwHJosTPuBo$Wh`<^Kk?7kfjA;zC*am`s{Nu1`)R=R@A_ypa?8)v-sK{`1%Fe8ckE zzc#Ki9}$XQ7?^StQ}Y>6=eL5n-_&@>g=HD@AmiZD&>W(fKTi%Cdm?#tHKUeu@}f*@`XCKhZW;Z^XG0>zoM05hk6}k zbnN+}?rrf7uiC7*7(+URj*S$bC_ii6hXo~urBH8|4;UuI4t09VXe;!`x|$Hnk!A|P zr=2_uH?ZP|n7O;UR=(yec;nUs7CNB4L^(?vr1reE;!i0KemS3&q|Ze@ZR z9R^M0m%b43JZZeakf!-L$L>_$>ss^Y{vWrH3@ z_Kd^)*2Y|M3=0Q>1gu^9{v<6cy)goeRki zy}nw;re8Ta!R`%bSCdJ`!;>P!tL2tRv2H2x*l|P2yZ0n48_xhN%lpTa+0BQ!z_v`! z-T*$mX8=c6!EDmrPq|4+RUcxv^fQOmy<60$Z{*>uN(!1qZ}E#fScrF#4PYGijN(j_ z^%N@}9e7)Dq<=7Ax3%U&<#$bM#7kbvv;K53O|pKaqi1lPCnkO(mqp3P2CaO{SKVyh zY}7;QeyMxS{g)$DYSsgGSxcTBoesq;=l6klALe?*7hMCnhFq|$HZu%^xLDf#!$Za-XZszODJ$A|?Iw3h@TDjOP3xmI*Dzs~YtpxW|@!rNAQ0wPHlJRcn;#S`@Mg1Tb- zjC6P7n%kKKtz=kOlqrtIig^FLa(@3Qb;a>6nR8%n7f4M|e3;eP_8DzR(TF-qJg{1m zZ}lpxfpmw`-r}}E`=y26FG%zT^(Cbuawrgj*ivN5O}H8)f;bBJ8$Li*&fGe;JIIp zf`1(qYIc~9b=;V`-G-YB9edKLB-NHsf^?d2K6eLknY7Qfd9MmmB=E*jELl6id&?J3 zj>tc(#hUS0L{}e1-dxtki+f#CA$ArJs~2l}ffZ|%>~)P|X#^A#{oU_b8;jQ()19IV zo(T2`C>SiJ4-J%ORqCzZT%_l|JCJk=>{=I>|1;qlAs@#*UDi^|&cNe^^>ivr6CKyOKLS@orgjZiW4c+>NM)1$~LG3263HhFfs6j}P$>wIloY{%k0A zTobpx3J+EzPDt!~mwF~tnBhDde2&~8s7JkrU>CjWo=`ezVr|4|-YMaapCwS`epk-5 zUmtm+^%pPlLoJ5u(`|9?X(;EAtiywy}*%58M zeiD=!&rD-Ua|U8@=sg=D;&b;@J+)recj?y9v@Mn~Q6v=(xv3&RfUQY76>}*VPyloV&*VQEKBnzC1R{4U(cMi6!XgY{1S!NSy z9D97XRgqZ2AZwU5AyTq!gP+4HXY~x&Gpn;!A=t_@qPvt9_5Rw%aY~jE$LCuvSqzRt zx?V~jzMJa(*guZid`6z_I$>V?UZt|Q@P%=s#Xx4T!@S?~+Q7`EdiRb(i!X}9Q$4T`c zZ!!{Kdg4O}=$|-w1R(*!OT@dQ&uO9A33ik=yTWCMUP_38MKH$zxyVbTW?nleF1RkO zieqwBv&ytPy>6c#6I+@rsjEK|X#yLyC(H9k8#yc`T8R|ZgT1mSnX0Izu2ym`Hm2D9 z=r=cqd}>W8HHHAjza5c`8z`9s7aWCR5~e5%je(lT@Y+6Uen zYuYXUu!p11%8Z1M2&8#CZ@ifqx_W)z`0L^@O4`YC9x^dL-D%Isa``IbTiUki$9Ma8 z*@kkHPl{&zkU6{?a^SAizS<3|NeYbZbmg+HpXs|O-41iE^%}>J(=RxGY|BwzvWWhg zGLL!y)t908U#M^PC92i#+BOBgT{9Oxrf`id;#3!%!^xQr^WKRNv0LicAX1gUz-%DsCK8&%r7={sG;Q9DH#@F`pMo#VIs$M)=MVOy^|Mbs8KrGtj zPV%rH_D_Zq$(YSVPcdL!8;j_Q?oo{-#Co|tKj%aBzR{z&#KJ{}$!(I+8@?`8$?|Ut zR0-H$uj+Tr^{aUNP7@oD^r7os2u0!525YG-AJn!pXNq0D-<^_jO??wcHHb=_hamRs z8B7Lc)~t+EKSr0pUd%nug`@{!xP@Gp1jjD?1>3D*n`Fn}qwDAxILf}r$Dr88mDKsi zqP$cwn#8|?YRA=o^GH3NN>+zW`YqSTUqN8se}gwb4YD)mCOVR#JHql|2V^p-LAS2C zY7azFPN};3N#{m)#}4<5iniQO;2_y5$i}j?9Q&n-7^a!w=i&fS40k6q2#e}Oyd!e8 zfgJnZ;aAEe`AX6`9_vmIuYT)jC{OO}nV}-Rs#dX|BYVU#OKp>@5y}rKgS%j3N9QS@ zh6Dk)vJusBT1m18fn$}~-foul?_0@A-sxOqn!YTKGCT^1v7&OA-VAvfd;09c(TPz@ z)ZK3Nm3JHU=es5mru;~QYzDaMYHM=cVs_JIV&<>gI9(yW6$&eV+D<-e|Bk|#yVzVj zDqb~==7Twj_wgoJ$zfvOn0OgV9ouGPUr^ z^BFTYCK}n=N=KY@q-M=J{anDBx{`ku^Y|C30Kb0up zP>KGrs;3Ow3kEZP2BdwBLuD{hItzmLT%-H0HZcWxp7zUXY%A*p#LFvQ3A%@aOHuM~ zMUk8AIM3xk=2_<}j=76!;QiHHzxR2=-jjyhVg}Tdp`~Q5~)hno370 z)Y(?n+J|4NsnRy|zx3tjH-vqS+`H2Lq2Z9hNa~C9c@@wAo2J0ngDtLJo|!R*QUjMT}%n`FucQjvJ@Q z0au>MP`>M`qRnBP?$~%UHm$H^#X}-dNYrW!a{paT-ih{g3gktoIF%TdwoiFIj&z9R z&t-EhV2%!ciI;DzC=a%)nMU z`Giv=z`-B#-zYf-GBS%2h_=09w~$6r;pUS(w4YR%aa}gOsW-w4M)~nALgNT#=M8r%;jp?(ElUEvRZD6?hfj~nui8`2H^^zQw zg1ucB6P20%29MeWrcSO{U4w`ic{0~)fN46ol30vOWyqJl>$5{@saDb4_5g+G0lq8iB-}a&T9}6i0IL4s^01+pzIlmYIL2q<~vm`lX9IJgawe zK@Lh)vTcZEX}!sV#r*ZxbP-Kb<)yTHbzq+5lxgOYgUq$Rce}{f9gR#Dk16i8lizzd zQUO_;fiT`FT2DQPa3n}g85k0679ZWZmr>Eyqg&*yD=wHfkZlvdHyOmd=PCvZ(Q)e+Cf61nd&1`x5aLg!}B48~U@6 z&Fpdh$UI<*QTjM(w;}PSRY+ODpV5yf^g@T4EG}NFA|%&<_!F9vdQV7vh??eE@Rioj zjn=0f70aZXZv_F*fFYbFNDyp#%|DQIFV5@SpNZ;Ai**GX){}*y#5{NRG>Jl6p+E3e zMgP|1{e`p7wus~2Z9p#T9It&KEQsB?>D$iLjkxF4R!?S+bHrLIexm^T)Tnlmo-@w( zB#tpx#79c6duuk*WtV3_=JD-m>W`+)7bCFa*PquWwU2AJk?G6qLAuEffovUiev)@E zFS#&Y%C*O=`<(&fM)U4FV#!hJF_6t%T4$%y(mtF)<<7$O)r+P}(0e+MZLP@5{5#_Y zUO3ZKvfgUC=#{=Isa-Ru-+J$HCRcqMSxJ&skf|h^arF$~pIKYIkX#-HJN+Ui#7DsY zh8Y*TzcK1!M1S3z#-+lqvBJgCVV2ewJfd>fL4NP9jry@Jvn`+#bM`*5RjDJFGx)B* z|ALqJ6t%8}HMSAUp(I^j4t{4oS0T(s#vi{F;fqf@jDNmWpZ*N8*2w;5$-A!!h2nEl+=&bY-Inl!xsPN4(ry=9ADzR^FNz>25ih0HOTVK z{%e01?aR74{Vm(?vp!vs%=(Y&YSy-Ya$-T30sFav5C`umrTeWPMhdch+p6~4{`%cK zHk$ajfl2vbOLIXRuC&#;4_wM)Kr|{4I>2xvS zi*EL6rQB|2P3-3V?svI4R4hZO^Ox<#JK0T?ce&Q(&A=5?=?+y@Pq#OGUqkL}9ggFoH=b6fi~K@Qhjpiuq4VYMO#{EZznYN$X;>3E6h}%8x>9h_mmO4GW>Mf|PxKdA4B5CeY$Krl z%EHdxgg0aZrm;oJmjXyfLNg`I*$KV|zE_S|Knz0?&@xoaRsgB|OcmIJi0#rPkBvke zlyng(IB5{?|0R5c&QrIBw96r$|7FKS?zfeqj!L%Snf|X~LueIZ+KEyKE5~V`Fwfs8 z5+!~Uf5Og}x~zmiuI>H_MCj-nkWAvR0anr^H)xAUUtiX1te^nkP2YMz8$XbNLb2r2 zR-;K3G$COSgD6QfgDNMddIL;mXV=(r=Ff!@qa7?0HQ?no+^jN;=6$|Bpm#e#O!HLp zPMmZLs?4XIHit|*hrd3&!^QULFZn(VL6!OeFMh)j%4Yy^ny1?7xYv&> zr$@1yV=jg$c%L0Jm1vk>Z)dq;H#~gu7Y1h|U*&1iZW#G~=pHj(` zKKfu_h9DqOeGVO4^KVD@_nMilj}g#BO|I?eK^F6@TX{9k^Tf52<8?h9ZMZZ2t5LMWo_NU6$jChbT-fvqT#Ntpy=%vy@^=JU# zTHYCJOHF}SW2yfc|hf@=t%|31`$^ogs;5B7Ech`&qq zDa)UVW6rus(<}F9bh}a7o>NDlaDj`g>uC_v2>=`5Ea`^3+Qi_&p_(3aJP z`O6*GnpMAB9R$7hJ2=z!xO+3%2liUe^PmViIF`lstsYzkwi*tq8L0ixEX31)IDIl0DljClxpb>Lj9Z?8!kNM1L0 z{rtYsCF?%5h7G2e(xjX`i<_|pHyb7dR?9st5GgFM7k^)K3fXF3GvZ$zCxP5)?zQ^B zn;xnVI8hiR#=WTNmp>QrTGrJ=90&p0t;OpN5UbRc4=ivmu*9!@$EmHD)JtK6hs1?p zwGE0W7P!^#GL1UD3`y1$h@fBqaX1#JaG7lEGRw+{;j%==qd|pnCtBN*ZEAjh&Cz(< zyBhfi9d&}w3{6-VAK~O|0bs(21odyDp1UD@t9~S{*t`;D%#EN%!Zwzg*iF<3?9PS|eEfO(dCUco9EH-#Ud<$zA-vdyl9CoC=+ws2=^Vo^6E(lw zNA|vLpSaRWE2>!7lD^WL`C+mGA;IN9)`KV3CWm`>TNlkr?Uifv>CI}*hR2_#B;glR z;Wf35ig7#}4|5-%0iO$esuq{5AKD>`t{u}a!AR@ypWIunf@eP|xSjzKUHewnXJvo6%`H2k>wd1Q$+Hd;khh)t0zpdhhn|>^ z z$P_EF0a{4y1YUVgfD~@EPZ*nz!5*3I?z!AQMjV&9CfD@-h#C8s-6jj;=LWN21gFFl zj6R6{SPH;YjZ%=VbU7u;*}ocXweP%e_iVu8+=cm> z{O3>1p55**L(?YhhIJ!Qyk_%5`oVy`G|vqZwvN zGzx-fQX)rPaZdxf7V|q4kILEpl5rutKC9p81H}Brf#OqVV#rnZwux5IH`w zu9tQK|8jK&Up@m^;xhf%w?bU?taYJ2P3mDH$w@^M>x3^EwbW$e!lA%K-j&3Z7uUFW z`BiTf z9;MoCj6E7v{ag>cX`WuwY}Q2|;7g;iG{`;%zdg5ifTbr4FDm&(w1AF+(uxfEL`#m( zK;yj>frMI(ZPrH)mCt}EZ+|0`$Pw8=S*1f}77P+3tzjBJVC7~_OXN6`*r*IrYZ_jn zlh-r@n)+LWrc*t=hgoQ<6{X8Jh4@3*Hz6Jrcij}%;ARFIPWOY#BcLMF%qB1X%;jtO zCuEKLgue^Y%i5DUb1woZ?({cSa>&AUH^u^ituK?hGy@3C&@UN*i z2a=>Xw|7yEz_lu@^uy({D6w06QWsl4ZLmpCO?}tGa_Jm#isSgDm&V4G#WdzHX>55{ z_6#UlqcRsc^WLF0)boq&3s5d`zc=!+zO}Euy7Cm2=yiS|uH zZb_^i@?t_~#ocN0+=QWbB(9?gbhfGHVf+acb&66JUPwF;Qu^eBTJNM@J85VdQ*2$A zWRcIK-GH+{7vL&Z^*O;GBbYw% ziN}inO8=5^m9IvB%TCepX{;QwK80IOlP(cX7hxLN4645unNje`iur~Kk2&n7=$BqV zJ;SUDBvb77wsH5{`oYw9H?r{0X`G9qXCxo7Gb?APx2mY6f5N${gX~+xtM4F*8`(bG zRxl963}?aUXL0^<^uk}Fow4us>Dw#m^WqsS36W1M}T$R;!FI05gz}8t4IB{O1 zy8@59xDt;l#~Qt6l4+Pufix{N%*7tntGUlY;@tgnN4(fi38P=A$WO(4IFcY4uN1qn z60n8mwM8US-LyS*%l0cy#WI^_XQ;IEiRUQJF?VXATV#6g2yx$`I^BEDujnGr?P=*z z;*u$9LvP%4CMgK<%QHY8Es2!}td+awoGj;4SoK)ARZx#T!n0zb zEOVh0N^?(=6TJl)gRko>nz6S~(#&a>c6|BS7{uYlMDBRmO&Tg!^QT-GbNEqVvVMitL;UN-c&R|!`y!BKr7wRbU z*a|i)hmiT`%GlPz(Y$_sqd!f#hT%9qjD&5y#G;XEhFnyIB6&dbWB_!HW4s{NBiJB} z1-rZ|tGMpC-*rAwDBD^$7Cho<;G!n2I8nrKrl>j-NaW8?Ql-i%e@%WQ8t1wk2Dd)l zd_TlbI#g>6>29oi@wDM$!*GG9*B(SY51uOn6i1y0-b!)2PoLa4aVTS^%5#5W^@Now zdW((aQqwFsrEW&EJ_9@(jaIK7Ttb{+tC=ORfIx*Y;uSAhvJ%$5mW%;fI!guxpORkt z2Tqh3*U%H%a#2s4ADLX~73{tbnt6l^1Pbm!O>yt@#cBC6n$OhZ!y7Q-r#!`Fr=^I` zi1N*5);s63tn+0?ibgD_Td6{Ql?KH{14#YlDAOZxT*{c?mLVVzd1A5pjqD)FErkOA zLL7e!+tz-jNS#^huutn^UMsbeKY03>?IOd_%`J^0jaCTyzEViGNnl+bq;Oh0+p=O| zM3_eIlx0!?n=pRK&v=o_ zv>_|bH0&$NMRKE2=!=o0U00AI>W|R!7Xj|W^%sZXn2l}BV$=00vmMU4_Cw;*AE{~uW9Y^ zA@dX>c=8h7Mhe5qSH`}Fp>uwQCYxt~lXVJp^~}?YSC4nWM7H^xw=pGN{MV@Ytf%34 zZ}3lPcN=w+G#c=mm~fH()`v0@0YWkXH}3S@PQI2m-w-KcvOVh7^Au+b%dqu11ptfk zg8PAdBp@Dtmr)csCbl=YSNwBy@?V^_Or%3V@#TR}oAXNpAu@{ZeOTgaA8h2)5Q?dM z|I#!d-eJHTSs2%6iOC+Ad4ejdJTXw-lSj%7Y`?9v4cL@Z(wQ9AQ2bjt5E4oiYyQ<9 zmF+FJX99*Ijl$>2$*xg@L}~`hkr?%=q+Mm|ly5W-QV} z7&#`OQUy8fKxj1Tohu3Y{J5mJ3svkFL}^MJb{0-t_VqyHOm&m~&H6Q$t#xNBV+qmk zrl9*lOC?QfyAhRA%5G|W*#~BUa0XUl+Ks^pJ%w&FYC%sPLjOZ%hB)}Uitk7L(rP*3 zD6&}jh(q%7XN1W47{uyGK4h3dQy+~V!%Tiolj#VCsGyC@2GFFJzyDQZ$soz*)LMpY z!a}caDGs@@VbH}JmF(Y$bir+}$j;;uMhQuD8+e30L@< z6KkLm_ZTGV2JR^p(yxe^^i03;(OWJSL?!P)X7Bt<=cr}F!GX+x>AEXT$PN&wX{N?y z=2;NRP)@3^OL|*QO@%F@<$Wkt$T3IZBM6G^f#M@N@IxnC;!3!0*NQc~`wr2aC^_lf ze`YsAk!wCr%GsMm^`v|RPC;B+=UZ9CC@NbanQ)Rc<4Rwm1Crw9&xR-;V>Ln{c8?;C z7w}}VuHm%mv&4j=?z!ro^2N%KrEQoBK`Z3!z$~rbK+Fl$0scHUHPB~a_N~OSJ=m7I z2EaD%*q_dCvdi}GJkD<-QH}?s<1z>d7dGAqq_p7S zqMg=2hXfXJaS;CTe*@o4s1f!9H0}QqM%CxeupQH- z+&wzvL|v6q!~k)s{1AA#C-Z@Kv=tbkl#u{~$5)Go)PFZWKGze89wjefhMT+`o# zPKK;g(?&d8^s!4)!f}mao0jI&)Uymrz9uvS2<2 zsm1NN#!`WQ#1ZgZO}&HY$61M>vXt%;u-Zk^K}-}qUZz-2$^h#J^j=JFtfq%ds!p99 z899x(susC_iP8>1f*6E}JrIDpmGf{{*rV&D$Whox`D1nSGB^CpRb;qH zM+%SG^G$tUxtPgm089JVZ%gMpg(92tX5M_7IvVMBvI%QnKmLLSf^n&c>;d(~z#gXj3aUr$f+x^rn}3V+7wFBb6pAlzBX1+}#)YfC?b^^`g_Rl)sIhI}kw)f1 z18GhCg6m6Isu#BaL_3`~6LsMGw8UO0FlAn#p70TM9vP)*wBy}Ic4P{pg*$V3UldNF z>Xlm$m4AiY%caDH8!p%}3!ITw*%OpfxQqw9Vl+^KFuW>|4M)28*CygJGrr7$L8-FL zPFe>e0kVgL&sExd(t$LMPhx`~>%B4q6#)WKLTP7}+er4p@I!Ee{PJ6f ziJ|pr_!@s4YDo3HX+G(riyo)ps*Tw1*&({Byx;Wk;3zS~l!0`lPH*R9OdO%iz1-rh zx1$(*Pr!e33~`hxDQuWjigr*?3;`-Sx_34Z)^jr|SSJci>qexH(or%rBC~cU0veCG zN>898+kfPPBqN!n+idO3D7+CtAsaU6%W_IL>h>*6JM}$N(S8)?s&IC`gDW+&K_6m} zwqLo&=TGVZ|7CB)kdg1S1-Bb48mm=nqe z85W~vv=-1x$p2Btx&O0a?s1$F;rGkbeDyc-7rikj|o}fZh5v(pXQ6Yl5cGFaJ zb(>4j9;>D$sn`jvdvt14;}R?-qjhOV!n7_uRHrT5IhpQtPWQw43!c~O`#j(0`~E)9 z_wzv|IQq$MMe6J)AHotzUqy3CEK@w%LvxJ=+lTiQIHl;L(OEVJHA;-U8Dt1VEB_wk zPXD*F@}~`$tIKo!*uuu zF05rKzhFD1=t@!RuSfY=JLgQ1ca7y$3~d3@K}k5V`0iPZ@2nLLWXELqCn!SR#yL&P zCrgw1F-+8#aij)TwgsHL2KTAE5r%QkeJ+o0z+P*quH_sdpu_4+R!eeT9QG9{n?HQT zZjw_=r1qnYNJ3ahO*-bmO1#77}}UPVF>e znC-P4)a~z6w;aeEKzpE0xxU#;d~o@UsX`nk_~b>v1g#F~k}#N#ecD4ooO(=0CG#d3 z*M!)uG51%+!%Z{buOdD)Gg#<47Yu8@i0GXxFTtJE1?9szm z!h>DH`f8-b2|+7uCJN$!i$DsSu_8iSD8rHOhB`j?WdaI|-xb+c@FFan19SN}!sNDc z!3!L{&Q5f_OEsTMJPA!-_%P8Hj784A#_c1B}%J-R9p!AXTQuT%t&c!W0+U~3)87oQ^2y}&-xPMos%8=$v|Nhm zpq65HlKJk>$dHop9o``y!J-9Y*n{C5PsP zrS;;AwRP-0o<=#hnm~B)1(qD5j;7nOn=5O3;8P)9i$CAMeU$S) zbpt!I%0Ph?m+KGn>ml`~c<_zjpg@@*iIz#>)I+RCp3V)EnX=r@fNa%Dmh$JGDBZ3O z4dg82`;3rjb@jOZ=Cs3I3qirNoxc?2meUEK@)laJq8+Q(lMuL5)t|eqQJrjo zN#r79OLiHn3>SE33GTu9Vfo0VOhpyOf5|~UjfeKOeK;x$y>@;6dNF+Yr(W{R{$WMu z@yB{Zs8=yd-(Z#=BAP#~2i{mXW5Pb-yq?KV;#g%p?xxsiN)|DI0_vv z@a-?;n31Rif=)$tF1VmO5`rYf125h7K(XN2agUK1x2O9$D7wQ^< z#O_L&0cYSUoNE{pm4MHXFM6liQ;BRWS55&`FkUUXeWgr;r|v0ViG1Of_3c<+NCk6? zNc7q21`I%jzG*viGx;kw10<%0;y{h_ZrjR1*^?V>Dp4m?yo=rP_R4&maRvfzfo{*a z(I0CyFMoc$IcVKGarJA1*S_wSHme1P?>ZlHV^t({bp*u%R3Gor7-PV``2DWqU<6qg z&M`&GAys^nxqNh#F4Y5TFG^*#@Uz2Em9c@aeb1pcb1$EN!@heSY;_=g_o^m;9{h6T zjR!6*s%-VvCU@z_7fHBIyT(;G0zq8IcsgHFe^)LpX75@YbHDfcioP`d+Im`)C|^$8 z{6T^qA)nc(u+a^eOzBFl_wM&fGYm4$o8QLpeizP#OfQ{;{^C zF-)QO`5W$v5Me2j^I6%kpNXXpYDi`2?d*xdqbvuU8XUW>xJ=E|N>D)tq+h#g6U3?{ z7s@h#g`w0XN!Sqp9;Xg@D~=8w5T@y3Tn#qwFDG3G(tVRob#=h**iRtQGZ*-J22Pd)gF_om22sMF8Bx4%mKr`45 z>=TF8$lBV@SC;&8n!z7uw12tZJe<}!DbtI*<&AP)Lr5Gr%1vH}T3)e7rHl4vNTZ|* z58ATSOZmVpxoXa_2r&8)dVTN$Adql>edu}vlw;v$AE&_w03*2lX&#{IV8^wga9L|r=PR9b;~~h2+3D3iMVZ<(p+Vf z0xR!ctkO$JY^X@ah5yBLz?@jQ(bNC9U7m)@KmOGU!jFIOWXO;Glcr&N)bkM)GUQ47 bH^->G6vlyx?tLH0Dff6>d#}g*_tXCXvdj)+ literal 0 HcmV?d00001 diff --git a/PythonQtBoolResult_8h.html b/PythonQtBoolResult_8h.html new file mode 100644 index 000000000..5313694cc --- /dev/null +++ b/PythonQtBoolResult_8h.html @@ -0,0 +1,119 @@ + + + + + + + +PythonQt: PythonQtBoolResult.h File Reference + + + + + + +
+
+ + + + + + +
+
PythonQt +
+
+
+ + + + + + + +
+
+ +
+
PythonQtBoolResult.h File Reference
+
+
+
#include "PythonQtPythonInclude.h"
+#include "PythonQtSystem.h"
+#include "structmember.h"
+
+

Go to the source code of this file.

+ + + + + +

+Classes

struct  PythonQtBoolResultObject
 defines a python object that stores a single bool More...
 
+ + + +

+Macros

#define PythonQtBoolResult_Check(op)   (Py_TYPE(op) == &PythonQtBoolResult_Type)
 
+ + + +

+Variables

PYTHONQT_EXPORT PyTypeObject PythonQtBoolResult_Type
 
+

Macro Definition Documentation

+ +

◆ PythonQtBoolResult_Check

+ +
+
+ + + + + + + + +
#define PythonQtBoolResult_Check( op)   (Py_TYPE(op) == &PythonQtBoolResult_Type)
+
+ +

Definition at line 51 of file PythonQtBoolResult.h.

+ +
+
+

Variable Documentation

+ +

◆ PythonQtBoolResult_Type

+ +
+
+ + + + +
PYTHONQT_EXPORT PyTypeObject PythonQtBoolResult_Type
+
+ +
+
+
+ + + + diff --git a/PythonQtBoolResult_8h_source.html b/PythonQtBoolResult_8h_source.html new file mode 100644 index 000000000..007dc4cba --- /dev/null +++ b/PythonQtBoolResult_8h_source.html @@ -0,0 +1,63 @@ + + + + + + + +PythonQt: PythonQtBoolResult.h Source File + + + + + + +
+
+ + + + + + +
+
PythonQt +
+
+
+ + + + + + + +
+
+
+
PythonQtBoolResult.h
+
+
+Go to the documentation of this file.
1 #ifndef _PYTHONQTBOOLRESULT_H
2 #define _PYTHONQTBOOLRESULT_H
3 
4 /*
5  *
6  * Copyright (C) 2010 MeVis Medical Solutions AG All Rights Reserved.
7  *
8  * This library is free software; you can redistribute it and/or
9  * modify it under the terms of the GNU Lesser General Public
10  * License as published by the Free Software Foundation; either
11  * version 2.1 of the License, or (at your option) any later version.
12  *
13  * This library is distributed in the hope that it will be useful,
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16  * Lesser General Public License for more details.
17  *
18  * Further, this software is distributed without any warranty that it is
19  * free of the rightful claim of any third person regarding infringement
20  * or the like. Any license provided herein, whether implied or
21  * otherwise, applies only to this software file. Patent licenses, if
22  * any, provided herein do not apply to combinations of this program with
23  * other software, or any other product whatsoever.
24  *
25  * You should have received a copy of the GNU Lesser General Public
26  * License along with this library; if not, write to the Free Software
27  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
28  *
29  * Contact information: MeVis Medical Solutions AG, Universitaetsallee 29,
30  * 28359 Bremen, Germany or:
31  *
32  * http://www.mevis.de
33  *
34  */
35 
36 //----------------------------------------------------------------------------------
42 //----------------------------------------------------------------------------------
43 
44 #include "PythonQtPythonInclude.h"
45 
46 #include "PythonQtSystem.h"
47 #include "structmember.h"
48 
49 extern PYTHONQT_EXPORT PyTypeObject PythonQtBoolResult_Type;
50 
51 #define PythonQtBoolResult_Check(op) (Py_TYPE(op) == &PythonQtBoolResult_Type)
52 
54 typedef struct {
55  PyObject_HEAD
56  bool _value;
58 
59 
60 #endif
PYTHONQT_EXPORT PyTypeObject PythonQtBoolResult_Type
+
defines a python object that stores a single bool
+ +
#define PYTHONQT_EXPORT
+
PyObject_HEAD bool _value
+ +
+ + + + diff --git a/PythonQtClassInfo_8h.html b/PythonQtClassInfo_8h.html new file mode 100644 index 000000000..bbbd99793 --- /dev/null +++ b/PythonQtClassInfo_8h.html @@ -0,0 +1,82 @@ + + + + + + + +PythonQt: PythonQtClassInfo.h File Reference + + + + + + +
+
+ + + + + + +
+
PythonQt +
+
+
+ + + + + + + +
+
+ +
+
PythonQtClassInfo.h File Reference
+
+
+
#include "PythonQtPythonInclude.h"
+#include "PythonQt.h"
+#include <QMetaObject>
+#include <QMetaMethod>
+#include <QHash>
+#include <QByteArray>
+#include <QList>
+
+

Go to the source code of this file.

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

+Classes

struct  PythonQtDynamicClassInfo
 
struct  PythonQtMemberInfo
 
class  PythonQtClassInfo
 a class that stores all required information about a Qt object (and an optional associated C++ class name) More...
 
struct  PythonQtClassInfo::ParentClassInfo
 store information about parent classes More...
 
+
+ + + + diff --git a/PythonQtClassInfo_8h_source.html b/PythonQtClassInfo_8h_source.html new file mode 100644 index 000000000..528c6893b --- /dev/null +++ b/PythonQtClassInfo_8h_source.html @@ -0,0 +1,105 @@ + + + + + + + +PythonQt: PythonQtClassInfo.h Source File + + + + + + +
+
+ + + + + + +
+
PythonQt +
+
+
+ + + + + + + +
+
+
+
PythonQtClassInfo.h
+
+
+Go to the documentation of this file.
1 #ifndef _PYTHONQTCLASSINFO_H
2 #define _PYTHONQTCLASSINFO_H
3 
4 /*
5  *
6  * Copyright (C) 2010 MeVis Medical Solutions AG All Rights Reserved.
7  *
8  * This library is free software; you can redistribute it and/or
9  * modify it under the terms of the GNU Lesser General Public
10  * License as published by the Free Software Foundation; either
11  * version 2.1 of the License, or (at your option) any later version.
12  *
13  * This library is distributed in the hope that it will be useful,
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16  * Lesser General Public License for more details.
17  *
18  * Further, this software is distributed without any warranty that it is
19  * free of the rightful claim of any third person regarding infringement
20  * or the like. Any license provided herein, whether implied or
21  * otherwise, applies only to this software file. Patent licenses, if
22  * any, provided herein do not apply to combinations of this program with
23  * other software, or any other product whatsoever.
24  *
25  * You should have received a copy of the GNU Lesser General Public
26  * License along with this library; if not, write to the Free Software
27  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
28  *
29  * Contact information: MeVis Medical Solutions AG, Universitaetsallee 29,
30  * 28359 Bremen, Germany or:
31  *
32  * http://www.mevis.de
33  *
34  */
35 
36 #include "PythonQtPythonInclude.h"
37 #include "PythonQt.h"
38 #include <QMetaObject>
39 #include <QMetaMethod>
40 #include <QHash>
41 #include <QByteArray>
42 #include <QList>
43 
44 class PythonQtSlotInfo;
45 class PythonQtClassInfo;
46 
48 {
51 
52  const QMetaObject* _dynamicMetaObject;
54 };
55 
57  enum Type {
59  };
60 
62 
64 
65  PythonQtMemberInfo(const PythonQtObjectPtr& enumValue);
66 
67  PythonQtMemberInfo(const QMetaProperty& prop);
68 
70 
71  // TODO: this could be a union...
75  QMetaProperty _property;
76 };
77 
79 
82 
83 public:
86 
88  struct ParentClassInfo {
89  ParentClassInfo(PythonQtClassInfo* parent, int upcastingOffset=0):_parent(parent),_upcastingOffset(upcastingOffset)
90  {};
91 
92  PythonQtClassInfo* _parent;
94  };
95 
96 
98  void setupQObject(const QMetaObject* meta);
99 
101  void setupCPPObject(const QByteArray& classname);
102 
104  void setTypeSlots(int typeSlots) { _typeSlots = typeSlots; }
106  int typeSlots() const { return _typeSlots; }
107 
109  PythonQtMemberInfo member(const char* member);
110 
112  PythonQtSlotInfo* constructors();
113 
115  PythonQtSlotInfo* destructor();
116 
118  void addConstructor(PythonQtSlotInfo* info);
119 
121  void setDestructor(PythonQtSlotInfo* info);
122 
124  void addDecoratorSlot(PythonQtSlotInfo* info);
125 
127  void addNestedClass(PythonQtClassInfo* info);
128 
130  const QByteArray& className() const;
131 
133  QByteArray unscopedClassName() const;
134 
136  bool isQObject() { return _isQObject; }
137 
139  bool isCPPWrapper() { return !_isQObject; }
140 
142  const QMetaObject* metaObject() { return _meta; }
143 
145  void setMetaObject(const QMetaObject* meta);
146 
148  bool inherits(const char* classname);
149 
151  bool inherits(PythonQtClassInfo* info);
152 
156  void* castTo(void* ptr, const char* classname);
157 
159  QString help();
160 
162  QStringList propertyList();
163 
165  QStringList memberList();
166 
168  int metaTypeId() { return _metaTypeId; }
169 
171  void setDecoratorProvider(PythonQtQObjectCreatorFunctionCB* cb);
172 
174  QObject* decorator();
175 
177  void addParentClass(const ParentClassInfo& info) { _parentClasses.append(info); }
178 
180  void setPythonQtClassWrapper(PyObject* obj) { _pythonQtClassWrapper = obj; }
181 
183  PyObject* pythonQtClassWrapper() { return _pythonQtClassWrapper; }
184 
187  _shellSetInstanceWrapperCB = cb;
188  }
189 
192  return _shellSetInstanceWrapperCB;
193  }
194 
196  void addPolymorphicHandler(PythonQtPolymorphicHandlerCB* cb) { _polymorphicHandlers.append(cb); }
197 
199  void* castDownIfPossible(void* ptr, PythonQtClassInfo** resultClassInfo);
200 
202  static PyObject* findEnumWrapper(const QByteArray& name, PythonQtClassInfo* localScope, bool* isLocalEnum = NULL);
203 
205  void clearNotFoundCachedMembers();
206 
208  const QList<PythonQtClassInfo*>& nestedClasses() { return _nestedClasses; }
209 
214  PyObject* copyObject(void* cppObject);
215 
217  PythonQtSlotInfo* getCopyConstructor();
218 
220  void setReferenceCounting(PythonQtVoidPtrCB* refCB, PythonQtVoidPtrCB* unrefCB);
221 
223  PythonQtVoidPtrCB* referenceCountingRefCB();
225  PythonQtVoidPtrCB* referenceCountingUnrefCB();
226 
229  PyObject* getPythonTypeForProperty(const QString& name);
230 
232  PythonQtClassInfo* getClassInfoForProperty( const QString& name );
233 
238  bool supportsRichCompare();
239 
240 private:
241  void updateRefCountingCBs();
242 
243  void createEnumWrappers(const QObject* decoratorProvider);
244  void createEnumWrappers(const QMetaObject* meta);
245  PyObject* findEnumWrapper(const char* name);
246 
248  void clearCachedMembers();
249 
250  void* recursiveCastDownIfPossible(void* ptr, const char** resultClassName);
251 
252  PythonQtSlotInfo* findDecoratorSlotsFromDecoratorProvider(const char* memberName, PythonQtSlotInfo* inputInfo, bool &found, QHash<QByteArray, PythonQtMemberInfo>& memberCache, int upcastingOffset);
253  void listDecoratorSlotsFromDecoratorProvider(QStringList& list, bool metaOnly);
254  PythonQtSlotInfo* recursiveFindDecoratorSlotsFromDecoratorProvider(const char* memberName, PythonQtSlotInfo* inputInfo, bool &found, QHash<QByteArray, PythonQtMemberInfo>& memberCache, int upcastingOffset);
255 
256  void recursiveCollectClassInfos(QList<PythonQtClassInfo*>& classInfoObjects);
257  void recursiveCollectDecoratorObjects(QList<QObject*>& decoratorObjects);
258 
259  bool lookForPropertyAndCache(const char* memberName);
260  bool lookForMethodAndCache(const char* memberName);
261  bool lookForEnumAndCache(const QMetaObject* m, const char* memberName);
262 
263  PythonQtSlotInfo* findDecoratorSlots(const char* memberName, PythonQtSlotInfo* tail, bool &found, QHash<QByteArray, PythonQtMemberInfo>& memberCache, int upcastingOffset);
264  int findCharOffset(const char* sigStart, char someChar);
265 
266  QHash<QByteArray, PythonQtMemberInfo> _cachedMembers;
267 
268  PythonQtSlotInfo* _constructors;
269  PythonQtSlotInfo* _destructor;
270 
271  PythonQtVoidPtrCB* _refCallback;
272  PythonQtVoidPtrCB* _unrefCallback;
273 
274  QList<PythonQtSlotInfo*> _decoratorSlots;
275 
276  QList<PythonQtObjectPtr> _enumWrappers;
277 
278  const QMetaObject* _meta;
279 
280  QByteArray _wrappedClassName;
281  QList<ParentClassInfo> _parentClasses;
282 
283  QList<PythonQtPolymorphicHandlerCB*> _polymorphicHandlers;
284 
285  QList<PythonQtClassInfo*> _nestedClasses;
286 
287  QObject* _decoratorProvider;
288  PythonQtQObjectCreatorFunctionCB* _decoratorProviderCB;
289 
290  PyObject* _pythonQtClassWrapper;
291 
292  PythonQtShellSetInstanceWrapperCB* _shellSetInstanceWrapperCB;
293 
294  int _metaTypeId;
295  int _typeSlots;
296 
297  bool _isQObject;
298  bool _enumsCreated;
299  bool _richCompareDetectionDone;
300  bool _searchPolymorphicHandlerOnParent;
301  bool _searchRefCountCB;
302 
303 };
304 
305 //---------------------------------------------------------------
306 
307 
308 #endif
+
ParentClassInfo(PythonQtClassInfo *parent, int upcastingOffset=0)
+ + +
PythonQtObjectPtr _enumValue
+
void * PythonQtPolymorphicHandlerCB(const void *ptr, const char **class_name)
Definition: PythonQt.h:76
+ +
store information about parent classes
+
PyObject * pythonQtClassWrapper()
get the associated PythonQtClassWrapper (which handles instance creation of this type)
+
a class that stores all required information about a Qt object (and an optional associated C++ class ...
+ +
void setShellSetInstanceWrapperCB(PythonQtShellSetInstanceWrapperCB *cb)
set the shell set instance wrapper cb
+ +
void PythonQtVoidPtrCB(void *object)
Definition: PythonQt.h:73
+
const QList< PythonQtClassInfo * > & nestedClasses()
get nested classes
+
const QMetaObject * metaObject()
get the meta object
+ + +
bool isQObject()
returns if the QObject
+
int metaTypeId()
get the meta type id of this class (only valid for isCPPWrapper() == true)
+
int typeSlots() const
get the type capabilities
+
#define PYTHONQT_EXPORT
+
struct _object PyObject
+
void addPolymorphicHandler(PythonQtPolymorphicHandlerCB *cb)
add a handler for polymorphic downcasting
+ +
const QMetaObject * _dynamicMetaObject
+ +
QMetaProperty _property
+
bool isCPPWrapper()
returns if the class is a CPP wrapper
+
a smart pointer that stores a PyObject pointer and that handles reference counting automatically
+
void PythonQtShellSetInstanceWrapperCB(void *object, PythonQtInstanceWrapper *wrapper)
Definition: PythonQt.h:79
+ + +
QObject * PythonQtQObjectCreatorFunctionCB()
callback to create a QObject lazily
Definition: PythonQt.h:144
+ +
PythonQtSlotInfo * _slot
+ +
PythonQtShellSetInstanceWrapperCB * shellSetInstanceWrapperCB()
get the shell set instance wrapper cb
+ +
stores information about a slot, including a next pointer to overloaded slots
+ +
void setPythonQtClassWrapper(PyObject *obj)
set the associated PythonQtClassWrapper (which handles instance creation of this type)
+
void setTypeSlots(int typeSlots)
set the type capabilities
+ +
void addParentClass(const ParentClassInfo &info)
add the parent class info of a CPP object
+ + +
PythonQtClassInfo * _classInfo
+
+ + + + diff --git a/PythonQtClassWrapper_8h.html b/PythonQtClassWrapper_8h.html new file mode 100644 index 000000000..e0d65d179 --- /dev/null +++ b/PythonQtClassWrapper_8h.html @@ -0,0 +1,106 @@ + + + + + + + +PythonQt: PythonQtClassWrapper.h File Reference + + + + + + +
+
+ + + + + + +
+
PythonQt +
+
+
+ + + + + + + +
+
+ +
+
PythonQtClassWrapper.h File Reference
+
+
+
#include "PythonQtPythonInclude.h"
+#include "PythonQtSystem.h"
+#include "structmember.h"
+#include "methodobject.h"
+#include "compile.h"
+#include "eval.h"
+#include <QString>
+
+

Go to the source code of this file.

+ + + + +

+Classes

struct  PythonQtClassWrapper
 
+ + + + +

+Variables

PYTHONQT_EXPORT PyTypeObject PythonQtClassWrapper_Type
 the type of the PythonQt class wrapper objects More...
 
+

Detailed Description

+
Author
Florian Link
+
+Last changed by
+
Author
florian
+
Date
2006-05
+ +

Definition in file PythonQtClassWrapper.h.

+

Variable Documentation

+ +

◆ PythonQtClassWrapper_Type

+ +
+
+ + + + +
PYTHONQT_EXPORT PyTypeObject PythonQtClassWrapper_Type
+
+ +

the type of the PythonQt class wrapper objects

+ +
+
+
+ + + + diff --git a/PythonQtClassWrapper_8h_source.html b/PythonQtClassWrapper_8h_source.html new file mode 100644 index 000000000..dd4a923e9 --- /dev/null +++ b/PythonQtClassWrapper_8h_source.html @@ -0,0 +1,69 @@ + + + + + + + +PythonQt: PythonQtClassWrapper.h Source File + + + + + + +
+
+ + + + + + +
+
PythonQt +
+
+
+ + + + + + + +
+
+
+
PythonQtClassWrapper.h
+
+
+Go to the documentation of this file.
1 #ifndef _PYTHONQTCLASSWRAPPER_H
2 #define _PYTHONQTCLASSWRAPPER_H
3 
4 /*
5  *
6  * Copyright (C) 2010 MeVis Medical Solutions AG All Rights Reserved.
7  *
8  * This library is free software; you can redistribute it and/or
9  * modify it under the terms of the GNU Lesser General Public
10  * License as published by the Free Software Foundation; either
11  * version 2.1 of the License, or (at your option) any later version.
12  *
13  * This library is distributed in the hope that it will be useful,
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16  * Lesser General Public License for more details.
17  *
18  * Further, this software is distributed without any warranty that it is
19  * free of the rightful claim of any third person regarding infringement
20  * or the like. Any license provided herein, whether implied or
21  * otherwise, applies only to this software file. Patent licenses, if
22  * any, provided herein do not apply to combinations of this program with
23  * other software, or any other product whatsoever.
24  *
25  * You should have received a copy of the GNU Lesser General Public
26  * License along with this library; if not, write to the Free Software
27  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
28  *
29  * Contact information: MeVis Medical Solutions AG, Universitaetsallee 29,
30  * 28359 Bremen, Germany or:
31  *
32  * http://www.mevis.de
33  *
34  */
35 
36 //----------------------------------------------------------------------------------
43 //----------------------------------------------------------------------------------
44 
45 #include "PythonQtPythonInclude.h"
46 
47 #include "PythonQtSystem.h"
48 
49 #include "structmember.h"
50 #include "methodobject.h"
51 #include "compile.h"
52 #include "eval.h"
53 #include <QString>
54 
55 class PythonQtClassInfo;
56 
58 extern PYTHONQT_EXPORT PyTypeObject PythonQtClassWrapper_Type;
59 
61 
62 //---------------------------------------------------------------
66 typedef struct {
67  PyHeapTypeObject _base;
68 
71 
74 
76 
78 
79 //---------------------------------------------------------------
80 
81 #endif
a class that stores all required information about a Qt object (and an optional associated C++ class ...
+
PYTHONQT_EXPORT PyTypeObject PythonQtClassWrapper_Type
the type of the PythonQt class wrapper objects
+
PythonQtClassInfo * _classInfo
the additional class information that PythonQt stores for the CPP class
+
PythonQtClassInfo * classInfo()
get the class info
+ +
#define PYTHONQT_EXPORT
+ + +
PythonQtDynamicClassInfo * _dynamicClassInfo
+ +
PythonQtClassInfo * _classInfo
+ +
+ + + + diff --git a/PythonQtConversion_8h.html b/PythonQtConversion_8h.html new file mode 100644 index 000000000..d647d0ec7 --- /dev/null +++ b/PythonQtConversion_8h.html @@ -0,0 +1,863 @@ + + + + + + + +PythonQt: PythonQtConversion.h File Reference + + + + + + +
+
+ + + + + + +
+
PythonQt +
+
+
+ + + + + + + +
+
+ +
+
PythonQtConversion.h File Reference
+
+
+
#include "PythonQtPythonInclude.h"
+#include "PythonQt.h"
+#include "PythonQtMisc.h"
+#include "PythonQtClassInfo.h"
+#include "PythonQtMethodInfo.h"
+#include <QList>
+#include <vector>
+
+

Go to the source code of this file.

+ + + + + +

+Classes

class  PythonQtConv
 a static class that offers methods for type conversion More...
 
+ + + + + + + + + + + + + + + +

+Macros

#define PythonQtRegisterListTemplateConverter(type, innertype)
 
#define PythonQtRegisterListTemplateConverterForKnownClass(type, innertype)
 
#define PythonQtRegisterQPairConverter(type1, type2)
 
#define PythonQtRegisterIntegerMapConverter(type, innertype)
 
#define PythonQtRegisterListTemplateQPairConverter(listtype, type1, type2)
 
#define PythonQtRegisterToolClassesTemplateConverter(innertype)
 
#define PythonQtRegisterToolClassesTemplateConverterForKnownClass(innertype)
 
+ + + + + + + +

+Typedefs

typedef PyObjectPythonQtConvertMetaTypeToPythonCB(const void *inObject, int metaTypeId)
 
typedef bool PythonQtConvertPythonToMetaTypeCB(PyObject *inObject, void *outObject, int metaTypeId, bool strict)
 
typedef QVariant PythonQtConvertPythonSequenceToQVariantListCB(PyObject *inObject)
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

template<class ListType , class T >
PyObjectPythonQtConvertListOfValueTypeToPythonList (const void *inList, int metaTypeId)
 
template<class ListType , class T >
bool PythonQtConvertPythonListToListOfValueType (PyObject *obj, void *outList, int metaTypeId, bool)
 
template<class ListType , class T >
PyObjectPythonQtConvertListOfKnownClassToPythonList (const void *inList, int metaTypeId)
 
template<class ListType , class T >
bool PythonQtConvertPythonListToListOfKnownClass (PyObject *obj, void *outList, int metaTypeId, bool)
 
template<class T1 , class T2 >
PyObjectPythonQtConvertPairToPython (const void *inPair, int metaTypeId)
 
template<class T1 , class T2 >
bool PythonQtConvertPythonToPair (PyObject *obj, void *outPair, int metaTypeId, bool)
 
template<class ListType , class T1 , class T2 >
PyObjectPythonQtConvertListOfPairToPythonList (const void *inList, int metaTypeId)
 
template<class ListType , class T1 , class T2 >
bool PythonQtConvertPythonListToListOfPair (PyObject *obj, void *outList, int metaTypeId, bool)
 
template<class MapType , class T >
PyObjectPythonQtConvertIntegerMapToPython (const void *inMap, int metaTypeId)
 
template<class MapType , class T >
bool PythonQtConvertPythonToIntegerMap (PyObject *val, void *outMap, int metaTypeId, bool)
 
+

Detailed Description

+
Author
Florian Link
+
+Last changed by
+
Author
florian
+
Date
2006-05
+ +

Definition in file PythonQtConversion.h.

+

Macro Definition Documentation

+ +

◆ PythonQtRegisterIntegerMapConverter

+ +
+
+ + + + + + + + + + + + + + + + + + +
#define PythonQtRegisterIntegerMapConverter( type,
 innertype 
)
+
+Value:
{ int typeId = qRegisterMetaType<type<int, innertype > >(#type"<int, "#innertype">"); \
}
bool PythonQtConvertPythonToIntegerMap(PyObject *val, void *outMap, int metaTypeId, bool)
+
PyObject * PythonQtConvertIntegerMapToPython(const void *inMap, int metaTypeId)
+
static void registerPythonToMetaTypeConverter(int metaTypeId, PythonQtConvertPythonToMetaTypeCB *cb)
register a converter callback from python to cpp for given metatype
+
static void registerMetaTypeToPythonConverter(int metaTypeId, PythonQtConvertMetaTypeToPythonCB *cb)
register a converter callback from cpp to python for given metatype
+
+

Definition at line 76 of file PythonQtConversion.h.

+ +
+
+ +

◆ PythonQtRegisterListTemplateConverter

+ +
+
+ + + + + + + + + + + + + + + + + + +
#define PythonQtRegisterListTemplateConverter( type,
 innertype 
)
+
+Value:
{ int typeId = qRegisterMetaType<type<innertype > >(#type"<"#innertype">"); \
}
bool PythonQtConvertPythonListToListOfValueType(PyObject *obj, void *outList, int metaTypeId, bool)
+
static void registerPythonToMetaTypeConverter(int metaTypeId, PythonQtConvertPythonToMetaTypeCB *cb)
register a converter callback from python to cpp for given metatype
+
PyObject * PythonQtConvertListOfValueTypeToPythonList(const void *inList, int metaTypeId)
+
static void registerMetaTypeToPythonConverter(int metaTypeId, PythonQtConvertMetaTypeToPythonCB *cb)
register a converter callback from cpp to python for given metatype
+
+

Definition at line 58 of file PythonQtConversion.h.

+ +
+
+ +

◆ PythonQtRegisterListTemplateConverterForKnownClass

+ +
+
+ + + + + + + + + + + + + + + + + + +
#define PythonQtRegisterListTemplateConverterForKnownClass( type,
 innertype 
)
+
+Value:
{ int typeId = qRegisterMetaType<type<innertype > >(#type"<"#innertype">"); \
}
PyObject * PythonQtConvertListOfKnownClassToPythonList(const void *inList, int metaTypeId)
+
static void registerPythonToMetaTypeConverter(int metaTypeId, PythonQtConvertPythonToMetaTypeCB *cb)
register a converter callback from python to cpp for given metatype
+
static void registerMetaTypeToPythonConverter(int metaTypeId, PythonQtConvertMetaTypeToPythonCB *cb)
register a converter callback from cpp to python for given metatype
+
bool PythonQtConvertPythonListToListOfKnownClass(PyObject *obj, void *outList, int metaTypeId, bool)
+
+

Definition at line 64 of file PythonQtConversion.h.

+ +
+
+ +

◆ PythonQtRegisterListTemplateQPairConverter

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
#define PythonQtRegisterListTemplateQPairConverter( listtype,
 type1,
 type2 
)
+
+Value:
{ \
qRegisterMetaType<QPair<type1, type2> >("QPair<"#type1","#type2">"); \
int typeId = qRegisterMetaType<listtype<QPair<type1, type2> > >(#listtype"<QPair<"#type1","#type2">>"); \
PythonQtConv::registerPythonToMetaTypeConverter(typeId, PythonQtConvertPythonListToListOfPair<listtype<QPair<type1, type2> >, type1, type2>); \
PythonQtConv::registerMetaTypeToPythonConverter(typeId, PythonQtConvertListOfPairToPythonList<listtype<QPair<type1, type2> >, type1, type2>); \
}
PyObject * PythonQtConvertListOfPairToPythonList(const void *inList, int metaTypeId)
+
bool PythonQtConvertPythonListToListOfPair(PyObject *obj, void *outList, int metaTypeId, bool)
+
static void registerPythonToMetaTypeConverter(int metaTypeId, PythonQtConvertPythonToMetaTypeCB *cb)
register a converter callback from python to cpp for given metatype
+
static void registerMetaTypeToPythonConverter(int metaTypeId, PythonQtConvertMetaTypeToPythonCB *cb)
register a converter callback from cpp to python for given metatype
+
+

Definition at line 82 of file PythonQtConversion.h.

+ +
+
+ +

◆ PythonQtRegisterQPairConverter

+ +
+
+ + + + + + + + + + + + + + + + + + +
#define PythonQtRegisterQPairConverter( type1,
 type2 
)
+
+Value:
{ int typeId = qRegisterMetaType<QPair<type1, type2> >("QPair<"#type1","#type2">"); \
PythonQtConv::registerPythonToMetaTypeConverter(typeId, PythonQtConvertPythonToPair<type1, type2>); \
PythonQtConv::registerMetaTypeToPythonConverter(typeId, PythonQtConvertPairToPython<type1, type2>); \
}
static void registerPythonToMetaTypeConverter(int metaTypeId, PythonQtConvertPythonToMetaTypeCB *cb)
register a converter callback from python to cpp for given metatype
+
static void registerMetaTypeToPythonConverter(int metaTypeId, PythonQtConvertMetaTypeToPythonCB *cb)
register a converter callback from cpp to python for given metatype
+
+

Definition at line 70 of file PythonQtConversion.h.

+ +
+
+ +

◆ PythonQtRegisterToolClassesTemplateConverter

+ +
+
+ + + + + + + + +
#define PythonQtRegisterToolClassesTemplateConverter( innertype)
+
+Value:
PythonQtRegisterListTemplateConverter(QVector, innertype); \
PythonQtRegisterListTemplateConverter(std::vector, innertype);
#define PythonQtRegisterListTemplateConverter(type, innertype)
+
+

Definition at line 90 of file PythonQtConversion.h.

+ +
+
+ +

◆ PythonQtRegisterToolClassesTemplateConverterForKnownClass

+ +
+
+ + + + + + + + +
#define PythonQtRegisterToolClassesTemplateConverterForKnownClass( innertype)
+
+Value:
PythonQtRegisterListTemplateConverterForKnownClass(QVector, innertype); \
PythonQtRegisterListTemplateConverterForKnownClass(std::vector, innertype);
#define PythonQtRegisterListTemplateConverterForKnownClass(type, innertype)
+
+

Definition at line 95 of file PythonQtConversion.h.

+ +
+
+

Typedef Documentation

+ +

◆ PythonQtConvertMetaTypeToPythonCB

+ +
+
+ + + + +
typedef PyObject* PythonQtConvertMetaTypeToPythonCB(const void *inObject, int metaTypeId)
+
+ +

Definition at line 54 of file PythonQtConversion.h.

+ +
+
+ +

◆ PythonQtConvertPythonSequenceToQVariantListCB

+ +
+
+ + + + +
typedef QVariant PythonQtConvertPythonSequenceToQVariantListCB(PyObject *inObject)
+
+ +

Definition at line 56 of file PythonQtConversion.h.

+ +
+
+ +

◆ PythonQtConvertPythonToMetaTypeCB

+ +
+
+ + + + +
typedef bool PythonQtConvertPythonToMetaTypeCB(PyObject *inObject, void *outObject, int metaTypeId, bool strict)
+
+ +

Definition at line 55 of file PythonQtConversion.h.

+ +
+
+

Function Documentation

+ +

◆ PythonQtConvertIntegerMapToPython()

+ +
+
+
+template<class MapType , class T >
+ + + + + + + + + + + + + + + + + + +
PyObject* PythonQtConvertIntegerMapToPython (const void * inMap,
int metaTypeId 
)
+
+ +

Definition at line 450 of file PythonQtConversion.h.

+
451 {
452  MapType* map = (MapType*)inMap;
453  static int innerType = -1;
454  if (innerType == -1) {
455  QByteArray innerTypes = PythonQtMethodInfo::getInnerTemplateTypeName(QByteArray(QMetaType::typeName(metaTypeId)));
456  QList<QByteArray> names = innerTypes.split(',');
457  innerType = QMetaType::type(names.at(1).trimmed());
458  }
459  if (innerType == QVariant::Invalid) {
460  std::cerr << "PythonQtConvertIntegerMapToPython: unknown inner type " << QMetaType::typeName(metaTypeId) << std::endl;
461  }
462 
463  PyObject* result = PyDict_New();
464  typename MapType::const_iterator t = map->constBegin();
465  PyObject* key;
466  PyObject* val;
467  for (; t != map->constEnd(); t++) {
468  key = PyInt_FromLong(t.key());
469  val = PythonQtConv::convertQtValueToPythonInternal(innerType, &t.value());
470  PyDict_SetItem(result, key, val);
471  Py_DECREF(key);
472  Py_DECREF(val);
473  }
474  return result;
475 }
QByteArray typeName(const QMetaMethod &method)
Definition: PythonQtUtils.h:72
+
static QByteArray getInnerTemplateTypeName(const QByteArray &typeName)
returns the inner type name of a simple template of the form SomeObject<InnerType>
+
struct _object PyObject
+
static PyObject * convertQtValueToPythonInternal(int type, const void *data)
converts the Qt parameter given in data, interpreting it as a type registered qvariant/meta type,...
+
+

References PythonQtConv::convertQtValueToPythonInternal(), PythonQtMethodInfo::getInnerTemplateTypeName(), and PythonQtUtils::typeName().

+ +
+
+ +

◆ PythonQtConvertListOfKnownClassToPythonList()

+ +
+
+
+template<class ListType , class T >
+ + + + + + + + + + + + + + + + + + +
PyObject* PythonQtConvertListOfKnownClassToPythonList (const void * inList,
int metaTypeId 
)
+
+ +

Definition at line 269 of file PythonQtConversion.h.

+
270 {
271  ListType* list = (ListType*)inList;
273  if (innerType == NULL) {
274  std::cerr << "PythonQtConvertListOfKnownClassToPythonList: unknown inner type " << innerType->className().constData() << std::endl;
275  }
276  PyObject* result = PyTuple_New(list->size());
277  int i = 0;
278  Q_FOREACH(const T& value, *list) {
279  T* newObject = new T(value);
281  wrap->_ownedByPythonQt = true;
282  PyTuple_SET_ITEM(result, i, (PyObject*)wrap);
283  i++;
284  }
285  return result;
286 }
PyObject * wrapPtr(void *ptr, const QByteArray &name, bool passOwnership=false)
+
a Python wrapper object for Qt objects and C++ objects (that are themselves wrapped by wrapper QObjec...
+
a class that stores all required information about a Qt object (and an optional associated C++ class ...
+
QByteArray typeName(const QMetaMethod &method)
Definition: PythonQtUtils.h:72
+
static PythonQtPrivate * priv()
get access to internal data (should not be used on the public API, but is used by some C functions)
Definition: PythonQt.h:555
+
const QByteArray & className() const
get the classname (either of the QObject or of the wrapped CPP object)
+
bool _ownedByPythonQt
flag that stores if the object is owned by pythonQt
+
struct _object PyObject
+
static QByteArray getInnerListTypeName(const QByteArray &typeName)
returns the inner type name of a simple template or the typename without appended "List".
+
PythonQtClassInfo * getClassInfo(const QMetaObject *meta)
get the class info for a meta object (if available)
+
+

References PythonQtInstanceWrapperStruct::_ownedByPythonQt, PythonQtClassInfo::className(), PythonQtPrivate::getClassInfo(), PythonQtMethodInfo::getInnerListTypeName(), PythonQt::priv(), PythonQtUtils::typeName(), and PythonQtPrivate::wrapPtr().

+ +
+
+ +

◆ PythonQtConvertListOfPairToPythonList()

+ +
+
+
+template<class ListType , class T1 , class T2 >
+ + + + + + + + + + + + + + + + + + +
PyObject* PythonQtConvertListOfPairToPythonList (const void * inList,
int metaTypeId 
)
+
+ +

Definition at line 398 of file PythonQtConversion.h.

+
399 {
400  ListType* list = (ListType*)inList;
401  static int innerType = PythonQtMethodInfo::getInnerTemplateMetaType(QByteArray(QMetaType::typeName(metaTypeId)));
402  if (innerType == QVariant::Invalid) {
403  std::cerr << "PythonQtConvertListOfPairToPythonList: unknown inner type " << QMetaType::typeName(metaTypeId) << std::endl;
404  }
405  PyObject* result = PyTuple_New(list->size());
406  int i = 0;
407  typedef const QPair<T1, T2> Pair;
408  Q_FOREACH(Pair& value, *list) {
409  PyObject* object = PythonQtConvertPairToPython<T1, T2>(&value, innerType);
410  PyTuple_SET_ITEM(result, i, object);
411  i++;
412  }
413  return result;
414 }
QByteArray typeName(const QMetaMethod &method)
Definition: PythonQtUtils.h:72
+
static int getInnerTemplateMetaType(const QByteArray &typeName)
returns the inner type id of a simple template of the form SomeObject<InnerType>
+
struct _object PyObject
+
+

References PythonQtMethodInfo::getInnerTemplateMetaType(), and PythonQtUtils::typeName().

+ +
+
+ +

◆ PythonQtConvertListOfValueTypeToPythonList()

+ +
+
+
+template<class ListType , class T >
+ + + + + + + + + + + + + + + + + + +
PyObject* PythonQtConvertListOfValueTypeToPythonList (const void * inList,
int metaTypeId 
)
+
+ +

Definition at line 219 of file PythonQtConversion.h.

+
220 {
221  ListType* list = (ListType*)inList;
222  static const int innerType = PythonQtMethodInfo::getInnerTemplateMetaType(QByteArray(QMetaType::typeName(metaTypeId)));
223  if (innerType == QVariant::Invalid) {
224  std::cerr << "PythonQtConvertListOfValueTypeToPythonList: unknown inner type " << QMetaType::typeName(metaTypeId) << std::endl;
225  }
226  PyObject* result = PyTuple_New(list->size());
227  int i = 0;
228  Q_FOREACH (const T& value, *list) {
229  PyTuple_SET_ITEM(result, i, PythonQtConv::convertQtValueToPythonInternal(innerType, &value));
230  i++;
231  }
232  return result;
233 }
QByteArray typeName(const QMetaMethod &method)
Definition: PythonQtUtils.h:72
+
static int getInnerTemplateMetaType(const QByteArray &typeName)
returns the inner type id of a simple template of the form SomeObject<InnerType>
+
struct _object PyObject
+
static PyObject * convertQtValueToPythonInternal(int type, const void *data)
converts the Qt parameter given in data, interpreting it as a type registered qvariant/meta type,...
+
+

References PythonQtConv::convertQtValueToPythonInternal(), PythonQtMethodInfo::getInnerTemplateMetaType(), and PythonQtUtils::typeName().

+ +
+
+ +

◆ PythonQtConvertPairToPython()

+ +
+
+
+template<class T1 , class T2 >
+ + + + + + + + + + + + + + + + + + +
PyObject* PythonQtConvertPairToPython (const void * inPair,
int metaTypeId 
)
+
+ +

Definition at line 329 of file PythonQtConversion.h.

+
330 {
331  QPair<T1, T2>* pair = (QPair<T1, T2>*)inPair;
332  static int innerType1 = -1;
333  static int innerType2 = -1;
334  if (innerType1==-1) {
335  QByteArray innerTypes = PythonQtMethodInfo::getInnerTemplateTypeName(QByteArray(QMetaType::typeName(metaTypeId)));
336  QList<QByteArray> names = innerTypes.split(',');
337  innerType1 = QMetaType::type(names.at(0).trimmed());
338  innerType2 = QMetaType::type(names.at(1).trimmed());
339  }
340  if (innerType1 == QVariant::Invalid || innerType2 == QVariant::Invalid) {
341  std::cerr << "PythonQtConvertPairToPython: unknown inner type " << QMetaType::typeName(metaTypeId) << std::endl;
342  }
343  PyObject* result = PyTuple_New(2);
344  PyTuple_SET_ITEM(result, 0, PythonQtConv::convertQtValueToPythonInternal(innerType1, &pair->first));
345  PyTuple_SET_ITEM(result, 1, PythonQtConv::convertQtValueToPythonInternal(innerType2, &pair->second));
346  return result;
347 }
QByteArray typeName(const QMetaMethod &method)
Definition: PythonQtUtils.h:72
+
static QByteArray getInnerTemplateTypeName(const QByteArray &typeName)
returns the inner type name of a simple template of the form SomeObject<InnerType>
+
struct _object PyObject
+
static PyObject * convertQtValueToPythonInternal(int type, const void *data)
converts the Qt parameter given in data, interpreting it as a type registered qvariant/meta type,...
+
+

References PythonQtConv::convertQtValueToPythonInternal(), PythonQtMethodInfo::getInnerTemplateTypeName(), and PythonQtUtils::typeName().

+ +
+
+ +

◆ PythonQtConvertPythonListToListOfKnownClass()

+ +
+
+
+template<class ListType , class T >
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool PythonQtConvertPythonListToListOfKnownClass (PyObjectobj,
void * outList,
int metaTypeId,
bool  
)
+
+ +

Definition at line 289 of file PythonQtConversion.h.

+
290 {
291  ListType* list = (ListType*)outList;
293  if (innerType == NULL) {
294  std::cerr << "PythonQtConvertListOfKnownClassToPythonList: unknown inner type " << innerType->className().constData() << std::endl;
295  }
296  bool result = false;
297  if (PySequence_Check(obj)) {
298  int count = PySequence_Size(obj);
299  if (count >= 0) {
300  result = true;
301  PyObject* value;
302  for (int i = 0; i < count; i++) {
303  value = PySequence_GetItem(obj, i);
304  if (PyObject_TypeCheck(value, &PythonQtInstanceWrapper_Type)) {
306  bool ok;
307  T* object = (T*)PythonQtConv::castWrapperTo(wrap, innerType->className(), ok);
308  Py_XDECREF(value);
309  if (ok) {
310  list->push_back(*object);
311  } else {
312  result = false;
313  break;
314  }
315  } else {
316  Py_XDECREF(value);
317  result = false;
318  break;
319  }
320  }
321  }
322  }
323  return result;
324 }
a Python wrapper object for Qt objects and C++ objects (that are themselves wrapped by wrapper QObjec...
+
a class that stores all required information about a Qt object (and an optional associated C++ class ...
+
QByteArray typeName(const QMetaMethod &method)
Definition: PythonQtUtils.h:72
+
static PythonQtPrivate * priv()
get access to internal data (should not be used on the public API, but is used by some C functions)
Definition: PythonQt.h:555
+
const QByteArray & className() const
get the classname (either of the QObject or of the wrapped CPP object)
+
static void * castWrapperTo(PythonQtInstanceWrapper *wrapper, const QByteArray &className, bool &ok)
cast wrapper to given className if possible
+
struct _object PyObject
+
static QByteArray getInnerListTypeName(const QByteArray &typeName)
returns the inner type name of a simple template or the typename without appended "List".
+
PythonQtClassInfo * getClassInfo(const QMetaObject *meta)
get the class info for a meta object (if available)
+
PYTHONQT_EXPORT PyTypeObject PythonQtInstanceWrapper_Type
+
+

References PythonQtConv::castWrapperTo(), PythonQtClassInfo::className(), PythonQtPrivate::getClassInfo(), PythonQtMethodInfo::getInnerListTypeName(), PythonQt::priv(), PythonQtInstanceWrapper_Type, and PythonQtUtils::typeName().

+ +
+
+ +

◆ PythonQtConvertPythonListToListOfPair()

+ +
+
+
+template<class ListType , class T1 , class T2 >
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool PythonQtConvertPythonListToListOfPair (PyObjectobj,
void * outList,
int metaTypeId,
bool  
)
+
+ +

Definition at line 417 of file PythonQtConversion.h.

+
418 {
419  ListType* list = (ListType*)outList;
420  static int innerType = PythonQtMethodInfo::getInnerTemplateMetaType(QByteArray(QMetaType::typeName(metaTypeId)));
421  if (innerType == QVariant::Invalid) {
422  std::cerr << "PythonQtConvertPythonListToListOfPair: unknown inner type " << QMetaType::typeName(metaTypeId) << std::endl;
423  }
424  bool result = false;
425  if (PySequence_Check(obj)) {
426  int count = PySequence_Size(obj);
427  if (count >= 0) {
428  result = true;
429  PyObject* value;
430  for (int i = 0; i < count; i++) {
431  QPair<T1, T2> pair;
432  value = PySequence_GetItem(obj, i);
433  if (PythonQtConvertPythonToPair<T1,T2>(value, &pair, innerType, false)) {
434  Py_XDECREF(value);
435  list->push_back(pair);
436  } else {
437  Py_XDECREF(value);
438  result = false;
439  break;
440  }
441  }
442  }
443  }
444  return result;
445 }
QByteArray typeName(const QMetaMethod &method)
Definition: PythonQtUtils.h:72
+
static int getInnerTemplateMetaType(const QByteArray &typeName)
returns the inner type id of a simple template of the form SomeObject<InnerType>
+
struct _object PyObject
+
+

References PythonQtMethodInfo::getInnerTemplateMetaType(), and PythonQtUtils::typeName().

+ +
+
+ +

◆ PythonQtConvertPythonListToListOfValueType()

+ +
+
+
+template<class ListType , class T >
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool PythonQtConvertPythonListToListOfValueType (PyObjectobj,
void * outList,
int metaTypeId,
bool  
)
+
+ +

Definition at line 236 of file PythonQtConversion.h.

+
237 {
238  ListType* list = (ListType*)outList;
239  static const int innerType = PythonQtMethodInfo::getInnerTemplateMetaType(QByteArray(QMetaType::typeName(metaTypeId)));
240  if (innerType == QVariant::Invalid) {
241  std::cerr << "PythonQtConvertPythonListToListOfValueType: unknown inner type " << QMetaType::typeName(metaTypeId) << std::endl;
242  }
243  bool result = false;
244  if (PySequence_Check(obj)) {
245  int count = PySequence_Size(obj);
246  if (count >= 0) {
247  result = true;
248  PyObject* value;
249  for (int i = 0;i<count;i++) {
250  value = PySequence_GetItem(obj,i);
251  // this is quite some overhead, but it avoids having another large switch...
252  QVariant v = PythonQtConv::PyObjToQVariant(value, innerType);
253  Py_XDECREF(value);
254  if (v.isValid()) {
255  list->push_back(qvariant_cast<T>(v));
256  } else {
257  result = false;
258  break;
259  }
260  }
261  }
262  }
263  return result;
264 }
QByteArray typeName(const QMetaMethod &method)
Definition: PythonQtUtils.h:72
+
static int getInnerTemplateMetaType(const QByteArray &typeName)
returns the inner type id of a simple template of the form SomeObject<InnerType>
+
struct _object PyObject
+
static QVariant PyObjToQVariant(PyObject *val, int type=-1)
+
+

References PythonQtMethodInfo::getInnerTemplateMetaType(), PythonQtConv::PyObjToQVariant(), and PythonQtUtils::typeName().

+ +
+
+ +

◆ PythonQtConvertPythonToIntegerMap()

+ +
+
+
+template<class MapType , class T >
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool PythonQtConvertPythonToIntegerMap (PyObjectval,
void * outMap,
int metaTypeId,
bool  
)
+
+ +

Definition at line 478 of file PythonQtConversion.h.

+
479 {
480  MapType* map = (MapType*)outMap;
481  static int innerType = -1;
482  if (innerType == -1) {
483  QByteArray innerTypes = PythonQtMethodInfo::getInnerTemplateTypeName(QByteArray(QMetaType::typeName(metaTypeId)));
484  QList<QByteArray> names = innerTypes.split(',');
485  innerType = QMetaType::type(names.at(1).trimmed());
486  }
487  if (innerType == QVariant::Invalid) {
488  std::cerr << "PythonQtConvertPythonToIntegerMap: unknown inner type " << QMetaType::typeName(metaTypeId) << std::endl;
489  }
490  bool result = false;
491  if (PyMapping_Check(val)) {
492  result = true;
493  PyObject* items = PyMapping_Items(val);
494  if (items) {
495  int count = PyList_Size(items);
496  PyObject* value;
497  PyObject* key;
498  PyObject* tuple;
499  for (int i = 0; i < count; i++) {
500  tuple = PyList_GetItem(items, i);
501  key = PyTuple_GetItem(tuple, 0);
502  value = PyTuple_GetItem(tuple, 1);
503 
504  bool ok;
505  int intKey = PythonQtConv::PyObjGetInt(key, false, ok);
506  // this is quite some overhead, but it avoids having another large switch...
507  QVariant v = PythonQtConv::PyObjToQVariant(value, innerType);
508  if (v.isValid() && ok) {
509  map->insert(intKey, qvariant_cast<T>(v));
510  } else {
511  result = false;
512  break;
513  }
514  }
515  Py_DECREF(items);
516  }
517  }
518  return result;
519 }
QByteArray typeName(const QMetaMethod &method)
Definition: PythonQtUtils.h:72
+
static QByteArray getInnerTemplateTypeName(const QByteArray &typeName)
returns the inner type name of a simple template of the form SomeObject<InnerType>
+
struct _object PyObject
+
static int PyObjGetInt(PyObject *val, bool strict, bool &ok)
get int from py object
+
static QVariant PyObjToQVariant(PyObject *val, int type=-1)
+
+

References PythonQtMethodInfo::getInnerTemplateTypeName(), PythonQtConv::PyObjGetInt(), PythonQtConv::PyObjToQVariant(), and PythonQtUtils::typeName().

+ +
+
+ +

◆ PythonQtConvertPythonToPair()

+ +
+
+
+template<class T1 , class T2 >
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool PythonQtConvertPythonToPair (PyObjectobj,
void * outPair,
int metaTypeId,
bool  
)
+
+ +

Definition at line 350 of file PythonQtConversion.h.

+
351 {
352  QPair<T1, T2>* pair = (QPair<T1, T2>*)outPair;
353  static int innerType1 = -1;
354  static int innerType2 = -1;
355  if (innerType1 == -1) {
356  QByteArray innerTypes = PythonQtMethodInfo::getInnerTemplateTypeName(QByteArray(QMetaType::typeName(metaTypeId)));
357  QList<QByteArray> names = innerTypes.split(',');
358  innerType1 = QMetaType::type(names.at(0).trimmed());
359  innerType2 = QMetaType::type(names.at(1).trimmed());
360  }
361  if (innerType1 == QVariant::Invalid || innerType2 == QVariant::Invalid) {
362  std::cerr << "PythonQtConvertPythonToPair: unknown inner type " << QMetaType::typeName(metaTypeId) << std::endl;
363  }
364  bool result = false;
365  if (PySequence_Check(obj)) {
366  int count = PySequence_Size(obj);
367  if (count == 2) {
368  result = true;
369  PyObject* value;
370 
371  value = PySequence_GetItem(obj, 0);
372  // this is quite some overhead, but it avoids having another large switch...
373  QVariant v = PythonQtConv::PyObjToQVariant(value, innerType1);
374  Py_XDECREF(value);
375  if (v.isValid()) {
376  pair->first = qvariant_cast<T1>(v);
377  } else {
378  return false;
379  }
380 
381  value = PySequence_GetItem(obj, 1);
382  // this is quite some overhead, but it avoids having another large switch...
383  v = PythonQtConv::PyObjToQVariant(value, innerType2);
384  Py_XDECREF(value);
385  if (v.isValid()) {
386  pair->second = qvariant_cast<T2>(v);
387  } else {
388  return false;
389  }
390  }
391  }
392  return result;
393 }
QByteArray typeName(const QMetaMethod &method)
Definition: PythonQtUtils.h:72
+
static QByteArray getInnerTemplateTypeName(const QByteArray &typeName)
returns the inner type name of a simple template of the form SomeObject<InnerType>
+
struct _object PyObject
+
static QVariant PyObjToQVariant(PyObject *val, int type=-1)
+
+

References PythonQtMethodInfo::getInnerTemplateTypeName(), PythonQtConv::PyObjToQVariant(), and PythonQtUtils::typeName().

+ +
+
+
+ + + + diff --git a/PythonQtConversion_8h_source.html b/PythonQtConversion_8h_source.html new file mode 100644 index 000000000..e43cbb99f --- /dev/null +++ b/PythonQtConversion_8h_source.html @@ -0,0 +1,103 @@ + + + + + + + +PythonQt: PythonQtConversion.h Source File + + + + + + +
+
+ + + + + + +
+
PythonQt +
+
+
+ + + + + + + +
+
+
+
PythonQtConversion.h
+
+
+Go to the documentation of this file.
1 #ifndef _PYTHONQTCONVERSION_H
2 #define _PYTHONQTCONVERSION_H
3 
4 /*
5  *
6  * Copyright (C) 2010 MeVis Medical Solutions AG All Rights Reserved.
7  *
8  * This library is free software; you can redistribute it and/or
9  * modify it under the terms of the GNU Lesser General Public
10  * License as published by the Free Software Foundation; either
11  * version 2.1 of the License, or (at your option) any later version.
12  *
13  * This library is distributed in the hope that it will be useful,
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16  * Lesser General Public License for more details.
17  *
18  * Further, this software is distributed without any warranty that it is
19  * free of the rightful claim of any third person regarding infringement
20  * or the like. Any license provided herein, whether implied or
21  * otherwise, applies only to this software file. Patent licenses, if
22  * any, provided herein do not apply to combinations of this program with
23  * other software, or any other product whatsoever.
24  *
25  * You should have received a copy of the GNU Lesser General Public
26  * License along with this library; if not, write to the Free Software
27  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
28  *
29  * Contact information: MeVis Medical Solutions AG, Universitaetsallee 29,
30  * 28359 Bremen, Germany or:
31  *
32  * http://www.mevis.de
33  *
34  */
35 
36 //----------------------------------------------------------------------------------
43 //----------------------------------------------------------------------------------
44 
45 #include "PythonQtPythonInclude.h"
46 #include "PythonQt.h"
47 #include "PythonQtMisc.h"
48 #include "PythonQtClassInfo.h"
49 #include "PythonQtMethodInfo.h"
50 
51 #include <QList>
52 #include <vector>
53 
54 typedef PyObject* PythonQtConvertMetaTypeToPythonCB(const void* inObject, int metaTypeId);
55 typedef bool PythonQtConvertPythonToMetaTypeCB(PyObject* inObject, void* outObject, int metaTypeId, bool strict);
57 
58 #define PythonQtRegisterListTemplateConverter(type, innertype) \
59 { int typeId = qRegisterMetaType<type<innertype > >(#type"<"#innertype">"); \
60 PythonQtConv::registerPythonToMetaTypeConverter(typeId, PythonQtConvertPythonListToListOfValueType<type<innertype >, innertype>); \
61 PythonQtConv::registerMetaTypeToPythonConverter(typeId, PythonQtConvertListOfValueTypeToPythonList<type<innertype >, innertype>); \
62 }
63 
64 #define PythonQtRegisterListTemplateConverterForKnownClass(type, innertype) \
65 { int typeId = qRegisterMetaType<type<innertype > >(#type"<"#innertype">"); \
66  PythonQtConv::registerPythonToMetaTypeConverter(typeId, PythonQtConvertPythonListToListOfKnownClass<type<innertype >, innertype>); \
67  PythonQtConv::registerMetaTypeToPythonConverter(typeId, PythonQtConvertListOfKnownClassToPythonList<type<innertype >, innertype>); \
68 }
69 
70 #define PythonQtRegisterQPairConverter(type1, type2) \
71 { int typeId = qRegisterMetaType<QPair<type1, type2> >("QPair<"#type1","#type2">"); \
72  PythonQtConv::registerPythonToMetaTypeConverter(typeId, PythonQtConvertPythonToPair<type1, type2>); \
73  PythonQtConv::registerMetaTypeToPythonConverter(typeId, PythonQtConvertPairToPython<type1, type2>); \
74 }
75 
76 #define PythonQtRegisterIntegerMapConverter(type, innertype) \
77 { int typeId = qRegisterMetaType<type<int, innertype > >(#type"<int, "#innertype">"); \
78  PythonQtConv::registerPythonToMetaTypeConverter(typeId, PythonQtConvertPythonToIntegerMap<type<int, innertype >, innertype>); \
79  PythonQtConv::registerMetaTypeToPythonConverter(typeId, PythonQtConvertIntegerMapToPython<type<int, innertype >, innertype>); \
80 }
81 
82 #define PythonQtRegisterListTemplateQPairConverter(listtype, type1, type2) \
83 { \
84  qRegisterMetaType<QPair<type1, type2> >("QPair<"#type1","#type2">"); \
85  int typeId = qRegisterMetaType<listtype<QPair<type1, type2> > >(#listtype"<QPair<"#type1","#type2">>"); \
86  PythonQtConv::registerPythonToMetaTypeConverter(typeId, PythonQtConvertPythonListToListOfPair<listtype<QPair<type1, type2> >, type1, type2>); \
87  PythonQtConv::registerMetaTypeToPythonConverter(typeId, PythonQtConvertListOfPairToPythonList<listtype<QPair<type1, type2> >, type1, type2>); \
88 }
89 
90 #define PythonQtRegisterToolClassesTemplateConverter(innertype) \
91  PythonQtRegisterListTemplateConverter(QList, innertype); \
92  PythonQtRegisterListTemplateConverter(QVector, innertype); \
93  PythonQtRegisterListTemplateConverter(std::vector, innertype);
94 
95 #define PythonQtRegisterToolClassesTemplateConverterForKnownClass(innertype) \
96  PythonQtRegisterListTemplateConverterForKnownClass(QList, innertype); \
97  PythonQtRegisterListTemplateConverterForKnownClass(QVector, innertype); \
98  PythonQtRegisterListTemplateConverterForKnownClass(std::vector, innertype);
99 
102 
103 public:
104 
106  static PyObject* GetPyBool(bool val);
107 
109  static PyObject* ConvertQtValueToPython(const PythonQtMethodInfo::ParameterInfo& info, const void* data);
110 
112  static void* ConvertPythonToQt(const PythonQtMethodInfo::ParameterInfo& info, PyObject* obj, bool strict, PythonQtClassInfo* classInfo, void* alreadyAllocatedCPPObject, PythonQtArgumentFrame* frame = NULL);
113 
115  static void* CreateQtReturnValue(const PythonQtMethodInfo::ParameterInfo& info, PythonQtArgumentFrame* frame);
116 
118  static PyObject* QStringToPyObject(const QString& str);
119 
121  static PyObject* QStringListToPyObject(const QStringList& list);
122 
124  static PyObject* QStringListToPyList(const QStringList& list);
125 
127  static QString PyObjGetRepresentation(PyObject* val);
128 
130  static QString PyObjGetString(PyObject* val) { bool ok; QString s = PyObjGetString(val, false, ok); return s; }
132  static QString PyObjGetString(PyObject* val, bool strict, bool &ok);
134  static QByteArray PyObjGetBytes(PyObject* val, bool strict, bool &ok);
136  static int PyObjGetInt(PyObject* val, bool strict, bool &ok);
138  static qint64 PyObjGetLongLong(PyObject* val, bool strict, bool &ok);
140  static quint64 PyObjGetULongLong(PyObject* val, bool strict, bool &ok);
142  static double PyObjGetDouble(PyObject* val, bool strict, bool &ok);
144  static bool PyObjGetBool(PyObject* val, bool strict, bool &ok);
145 
147  static QStringList PyObjToStringList(PyObject* val, bool strict, bool& ok);
148 
151  static QVariant PyObjToQVariant(PyObject* val, int type = -1);
152 
154  static PyObject* QVariantToPyObject(const QVariant& v);
155 
156  static PyObject* QVariantHashToPyObject(const QVariantHash& m);
157  static PyObject* QVariantMapToPyObject(const QVariantMap& m);
158  static PyObject* QVariantListToPyObject(const QVariantList& l);
159 
161  static QString CPPObjectToString(int type, const void* data);
162 
164  static void registerPythonToMetaTypeConverter(int metaTypeId, PythonQtConvertPythonToMetaTypeCB* cb) { _pythonToMetaTypeConverters.insert(metaTypeId, cb); }
165 
167  static void registerMetaTypeToPythonConverter(int metaTypeId, PythonQtConvertMetaTypeToPythonCB* cb) { _metaTypeToPythonConverters.insert(metaTypeId, cb); }
168 
171  static void setPythonSequenceToQVariantListCallback(PythonQtConvertPythonSequenceToQVariantListCB* cb) { _pythonSequenceToQVariantListCB = cb; }
172 
174  static PyObject* convertQtValueToPythonInternal(int type, const void* data);
175 
177  static PyObject* createCopyFromMetaType( int type, const void* object );
178 
180  static void* castWrapperTo(PythonQtInstanceWrapper* wrapper, const QByteArray& className, bool& ok);
181 
182  static bool convertToPythonQtObjectPtr(PyObject* obj, void* /* PythonQtObjectPtr* */ outPtr, int /*metaTypeId*/, bool /*strict*/);
183  static PyObject* convertFromPythonQtObjectPtr(const void* /* PythonQtObjectPtr* */ inObject, int /*metaTypeId*/);
184  static bool convertToPythonQtSafeObjectPtr(PyObject* obj, void* /* PythonQtObjectPtr* */ outPtr, int /*metaTypeId*/, bool /*strict*/);
185  static PyObject* convertFromPythonQtSafeObjectPtr(const void* /* PythonQtObjectPtr* */ inObject, int /*metaTypeId*/);
186  static bool convertToQListOfPythonQtObjectPtr(PyObject* obj, void* /* QList<PythonQtObjectPtr>* */ outList, int /*metaTypeId*/, bool /*strict*/);
187  static PyObject* convertFromQListOfPythonQtObjectPtr(const void* /* QList<PythonQtObjectPtr>* */ inObject, int /*metaTypeId*/);
188  static PyObject* convertFromStringRef(const void* inObject, int /*metaTypeId*/);
189 
191  static QByteArray getCPPTypeName(PyObject* type);
192 
194  static bool isStringType(PyTypeObject* type);
195 
196 protected:
197  static QHash<int, PythonQtConvertMetaTypeToPythonCB*> _metaTypeToPythonConverters;
198  static QHash<int, PythonQtConvertPythonToMetaTypeCB*> _pythonToMetaTypeConverters;
200 
202  static void* handlePythonToQtAutoConversion(int typeId, PyObject* obj, void* alreadyAllocatedCPPObject, PythonQtArgumentFrame* frame);
203 
205  static PyObject* ConvertQListOfPointerTypeToPythonList(QList<void*>* list, const PythonQtMethodInfo::ParameterInfo& info);
207  static bool ConvertPythonListToQListOfPointerType(PyObject* obj, QList<void*>* list, const PythonQtMethodInfo::ParameterInfo& info, bool strict);
208 
210  template <typename Map>
211  static void pythonToMapVariant(PyObject* val, QVariant& result);
213  template <typename Map>
214  static PyObject* mapToPython (const Map& m);
215 
216 };
217 
218 template<class ListType, class T>
219 PyObject* PythonQtConvertListOfValueTypeToPythonList(const void* /*QList<T>* */ inList, int metaTypeId)
220 {
221  ListType* list = (ListType*)inList;
222  static const int innerType = PythonQtMethodInfo::getInnerTemplateMetaType(QByteArray(QMetaType::typeName(metaTypeId)));
223  if (innerType == QVariant::Invalid) {
224  std::cerr << "PythonQtConvertListOfValueTypeToPythonList: unknown inner type " << QMetaType::typeName(metaTypeId) << std::endl;
225  }
226  PyObject* result = PyTuple_New(list->size());
227  int i = 0;
228  Q_FOREACH (const T& value, *list) {
229  PyTuple_SET_ITEM(result, i, PythonQtConv::convertQtValueToPythonInternal(innerType, &value));
230  i++;
231  }
232  return result;
233 }
234 
235 template<class ListType, class T>
236 bool PythonQtConvertPythonListToListOfValueType(PyObject* obj, void* /*QList<T>* */ outList, int metaTypeId, bool /*strict*/)
237 {
238  ListType* list = (ListType*)outList;
239  static const int innerType = PythonQtMethodInfo::getInnerTemplateMetaType(QByteArray(QMetaType::typeName(metaTypeId)));
240  if (innerType == QVariant::Invalid) {
241  std::cerr << "PythonQtConvertPythonListToListOfValueType: unknown inner type " << QMetaType::typeName(metaTypeId) << std::endl;
242  }
243  bool result = false;
244  if (PySequence_Check(obj)) {
245  int count = PySequence_Size(obj);
246  if (count >= 0) {
247  result = true;
248  PyObject* value;
249  for (int i = 0;i<count;i++) {
250  value = PySequence_GetItem(obj,i);
251  // this is quite some overhead, but it avoids having another large switch...
252  QVariant v = PythonQtConv::PyObjToQVariant(value, innerType);
253  Py_XDECREF(value);
254  if (v.isValid()) {
255  list->push_back(qvariant_cast<T>(v));
256  } else {
257  result = false;
258  break;
259  }
260  }
261  }
262  }
263  return result;
264 }
265 
266 //--------------------------------------------------------------------------------------------------------------------
267 
268 template<class ListType, class T>
269 PyObject* PythonQtConvertListOfKnownClassToPythonList(const void* /*QList<T>* */ inList, int metaTypeId)
270 {
271  ListType* list = (ListType*)inList;
273  if (innerType == NULL) {
274  std::cerr << "PythonQtConvertListOfKnownClassToPythonList: unknown inner type " << innerType->className().constData() << std::endl;
275  }
276  PyObject* result = PyTuple_New(list->size());
277  int i = 0;
278  Q_FOREACH(const T& value, *list) {
279  T* newObject = new T(value);
281  wrap->_ownedByPythonQt = true;
282  PyTuple_SET_ITEM(result, i, (PyObject*)wrap);
283  i++;
284  }
285  return result;
286 }
287 
288 template<class ListType, class T>
289 bool PythonQtConvertPythonListToListOfKnownClass(PyObject* obj, void* /*QList<T>* */ outList, int metaTypeId, bool /*strict*/)
290 {
291  ListType* list = (ListType*)outList;
293  if (innerType == NULL) {
294  std::cerr << "PythonQtConvertListOfKnownClassToPythonList: unknown inner type " << innerType->className().constData() << std::endl;
295  }
296  bool result = false;
297  if (PySequence_Check(obj)) {
298  int count = PySequence_Size(obj);
299  if (count >= 0) {
300  result = true;
301  PyObject* value;
302  for (int i = 0; i < count; i++) {
303  value = PySequence_GetItem(obj, i);
304  if (PyObject_TypeCheck(value, &PythonQtInstanceWrapper_Type)) {
306  bool ok;
307  T* object = (T*)PythonQtConv::castWrapperTo(wrap, innerType->className(), ok);
308  Py_XDECREF(value);
309  if (ok) {
310  list->push_back(*object);
311  } else {
312  result = false;
313  break;
314  }
315  } else {
316  Py_XDECREF(value);
317  result = false;
318  break;
319  }
320  }
321  }
322  }
323  return result;
324 }
325 
326 //--------------------------------------------------------------------------------------------------------------------
327 
328 template<class T1, class T2>
329 PyObject* PythonQtConvertPairToPython(const void* /*QPair<T1,T2>* */ inPair, int metaTypeId)
330 {
331  QPair<T1, T2>* pair = (QPair<T1, T2>*)inPair;
332  static int innerType1 = -1;
333  static int innerType2 = -1;
334  if (innerType1==-1) {
335  QByteArray innerTypes = PythonQtMethodInfo::getInnerTemplateTypeName(QByteArray(QMetaType::typeName(metaTypeId)));
336  QList<QByteArray> names = innerTypes.split(',');
337  innerType1 = QMetaType::type(names.at(0).trimmed());
338  innerType2 = QMetaType::type(names.at(1).trimmed());
339  }
340  if (innerType1 == QVariant::Invalid || innerType2 == QVariant::Invalid) {
341  std::cerr << "PythonQtConvertPairToPython: unknown inner type " << QMetaType::typeName(metaTypeId) << std::endl;
342  }
343  PyObject* result = PyTuple_New(2);
344  PyTuple_SET_ITEM(result, 0, PythonQtConv::convertQtValueToPythonInternal(innerType1, &pair->first));
345  PyTuple_SET_ITEM(result, 1, PythonQtConv::convertQtValueToPythonInternal(innerType2, &pair->second));
346  return result;
347 }
348 
349 template<class T1, class T2>
350 bool PythonQtConvertPythonToPair(PyObject* obj, void* /*QPair<T1,T2>* */ outPair, int metaTypeId, bool /*strict*/)
351 {
352  QPair<T1, T2>* pair = (QPair<T1, T2>*)outPair;
353  static int innerType1 = -1;
354  static int innerType2 = -1;
355  if (innerType1 == -1) {
356  QByteArray innerTypes = PythonQtMethodInfo::getInnerTemplateTypeName(QByteArray(QMetaType::typeName(metaTypeId)));
357  QList<QByteArray> names = innerTypes.split(',');
358  innerType1 = QMetaType::type(names.at(0).trimmed());
359  innerType2 = QMetaType::type(names.at(1).trimmed());
360  }
361  if (innerType1 == QVariant::Invalid || innerType2 == QVariant::Invalid) {
362  std::cerr << "PythonQtConvertPythonToPair: unknown inner type " << QMetaType::typeName(metaTypeId) << std::endl;
363  }
364  bool result = false;
365  if (PySequence_Check(obj)) {
366  int count = PySequence_Size(obj);
367  if (count == 2) {
368  result = true;
369  PyObject* value;
370 
371  value = PySequence_GetItem(obj, 0);
372  // this is quite some overhead, but it avoids having another large switch...
373  QVariant v = PythonQtConv::PyObjToQVariant(value, innerType1);
374  Py_XDECREF(value);
375  if (v.isValid()) {
376  pair->first = qvariant_cast<T1>(v);
377  } else {
378  return false;
379  }
380 
381  value = PySequence_GetItem(obj, 1);
382  // this is quite some overhead, but it avoids having another large switch...
383  v = PythonQtConv::PyObjToQVariant(value, innerType2);
384  Py_XDECREF(value);
385  if (v.isValid()) {
386  pair->second = qvariant_cast<T2>(v);
387  } else {
388  return false;
389  }
390  }
391  }
392  return result;
393 }
394 
395 //--------------------------------------------------------------------------------------------------------------------
396 
397 template<class ListType, class T1, class T2>
398 PyObject* PythonQtConvertListOfPairToPythonList(const void* /*QList<QPair<T1,T2> >* */ inList, int metaTypeId)
399 {
400  ListType* list = (ListType*)inList;
401  static int innerType = PythonQtMethodInfo::getInnerTemplateMetaType(QByteArray(QMetaType::typeName(metaTypeId)));
402  if (innerType == QVariant::Invalid) {
403  std::cerr << "PythonQtConvertListOfPairToPythonList: unknown inner type " << QMetaType::typeName(metaTypeId) << std::endl;
404  }
405  PyObject* result = PyTuple_New(list->size());
406  int i = 0;
407  typedef const QPair<T1, T2> Pair;
408  Q_FOREACH(Pair& value, *list) {
409  PyObject* object = PythonQtConvertPairToPython<T1, T2>(&value, innerType);
410  PyTuple_SET_ITEM(result, i, object);
411  i++;
412  }
413  return result;
414 }
415 
416 template<class ListType, class T1, class T2>
417 bool PythonQtConvertPythonListToListOfPair(PyObject* obj, void* /*QList<QPair<T1,T2> >* */ outList, int metaTypeId, bool /*strict*/)
418 {
419  ListType* list = (ListType*)outList;
420  static int innerType = PythonQtMethodInfo::getInnerTemplateMetaType(QByteArray(QMetaType::typeName(metaTypeId)));
421  if (innerType == QVariant::Invalid) {
422  std::cerr << "PythonQtConvertPythonListToListOfPair: unknown inner type " << QMetaType::typeName(metaTypeId) << std::endl;
423  }
424  bool result = false;
425  if (PySequence_Check(obj)) {
426  int count = PySequence_Size(obj);
427  if (count >= 0) {
428  result = true;
429  PyObject* value;
430  for (int i = 0; i < count; i++) {
431  QPair<T1, T2> pair;
432  value = PySequence_GetItem(obj, i);
433  if (PythonQtConvertPythonToPair<T1,T2>(value, &pair, innerType, false)) {
434  Py_XDECREF(value);
435  list->push_back(pair);
436  } else {
437  Py_XDECREF(value);
438  result = false;
439  break;
440  }
441  }
442  }
443  }
444  return result;
445 }
446 
447 //--------------------------------------------------------------------------------------------------------------------
448 
449 template<class MapType, class T>
450 PyObject* PythonQtConvertIntegerMapToPython(const void* /*QMap<int, T>* */ inMap, int metaTypeId)
451 {
452  MapType* map = (MapType*)inMap;
453  static int innerType = -1;
454  if (innerType == -1) {
455  QByteArray innerTypes = PythonQtMethodInfo::getInnerTemplateTypeName(QByteArray(QMetaType::typeName(metaTypeId)));
456  QList<QByteArray> names = innerTypes.split(',');
457  innerType = QMetaType::type(names.at(1).trimmed());
458  }
459  if (innerType == QVariant::Invalid) {
460  std::cerr << "PythonQtConvertIntegerMapToPython: unknown inner type " << QMetaType::typeName(metaTypeId) << std::endl;
461  }
462 
463  PyObject* result = PyDict_New();
464  typename MapType::const_iterator t = map->constBegin();
465  PyObject* key;
466  PyObject* val;
467  for (; t != map->constEnd(); t++) {
468  key = PyInt_FromLong(t.key());
469  val = PythonQtConv::convertQtValueToPythonInternal(innerType, &t.value());
470  PyDict_SetItem(result, key, val);
471  Py_DECREF(key);
472  Py_DECREF(val);
473  }
474  return result;
475 }
476 
477 template<class MapType, class T>
478 bool PythonQtConvertPythonToIntegerMap(PyObject* val, void* /*QMap<int, T>* */ outMap, int metaTypeId, bool /*strict*/)
479 {
480  MapType* map = (MapType*)outMap;
481  static int innerType = -1;
482  if (innerType == -1) {
483  QByteArray innerTypes = PythonQtMethodInfo::getInnerTemplateTypeName(QByteArray(QMetaType::typeName(metaTypeId)));
484  QList<QByteArray> names = innerTypes.split(',');
485  innerType = QMetaType::type(names.at(1).trimmed());
486  }
487  if (innerType == QVariant::Invalid) {
488  std::cerr << "PythonQtConvertPythonToIntegerMap: unknown inner type " << QMetaType::typeName(metaTypeId) << std::endl;
489  }
490  bool result = false;
491  if (PyMapping_Check(val)) {
492  result = true;
493  PyObject* items = PyMapping_Items(val);
494  if (items) {
495  int count = PyList_Size(items);
496  PyObject* value;
497  PyObject* key;
498  PyObject* tuple;
499  for (int i = 0; i < count; i++) {
500  tuple = PyList_GetItem(items, i);
501  key = PyTuple_GetItem(tuple, 0);
502  value = PyTuple_GetItem(tuple, 1);
503 
504  bool ok;
505  int intKey = PythonQtConv::PyObjGetInt(key, false, ok);
506  // this is quite some overhead, but it avoids having another large switch...
507  QVariant v = PythonQtConv::PyObjToQVariant(value, innerType);
508  if (v.isValid() && ok) {
509  map->insert(intKey, qvariant_cast<T>(v));
510  } else {
511  result = false;
512  break;
513  }
514  }
515  Py_DECREF(items);
516  }
517  }
518  return result;
519 }
520 
521 
522 #endif
PyObject * wrapPtr(void *ptr, const QByteArray &name, bool passOwnership=false)
+
bool PythonQtConvertPythonToIntegerMap(PyObject *val, void *outMap, int metaTypeId, bool)
+
bool PythonQtConvertPythonListToListOfValueType(PyObject *obj, void *outList, int metaTypeId, bool)
+
bool PythonQtConvertPythonToMetaTypeCB(PyObject *inObject, void *outObject, int metaTypeId, bool strict)
+
a Python wrapper object for Qt objects and C++ objects (that are themselves wrapped by wrapper QObjec...
+
bool PythonQtConvertPythonToPair(PyObject *obj, void *outPair, int metaTypeId, bool)
+
PyObject * PythonQtConvertPairToPython(const void *inPair, int metaTypeId)
+
a class that stores all required information about a Qt object (and an optional associated C++ class ...
+
PyObject * PythonQtConvertListOfPairToPythonList(const void *inList, int metaTypeId)
+
QByteArray typeName(const QMetaMethod &method)
Definition: PythonQtUtils.h:72
+
PyObject * PythonQtConvertListOfKnownClassToPythonList(const void *inList, int metaTypeId)
+
static PythonQtPrivate * priv()
get access to internal data (should not be used on the public API, but is used by some C functions)
Definition: PythonQt.h:555
+
a static class that offers methods for type conversion
+
PyObject * PythonQtConvertMetaTypeToPythonCB(const void *inObject, int metaTypeId)
+
const QByteArray & className() const
get the classname (either of the QObject or of the wrapped CPP object)
+
static QByteArray getInnerTemplateTypeName(const QByteArray &typeName)
returns the inner type name of a simple template of the form SomeObject<InnerType>
+
static void * castWrapperTo(PythonQtInstanceWrapper *wrapper, const QByteArray &className, bool &ok)
cast wrapper to given className if possible
+
bool PythonQtConvertPythonListToListOfPair(PyObject *obj, void *outList, int metaTypeId, bool)
+
stores various informations about a parameter/type name
+
bool _ownedByPythonQt
flag that stores if the object is owned by pythonQt
+
static QHash< int, PythonQtConvertMetaTypeToPythonCB * > _metaTypeToPythonConverters
+
static int getInnerTemplateMetaType(const QByteArray &typeName)
returns the inner type id of a simple template of the form SomeObject<InnerType>
+
#define PYTHONQT_EXPORT
+
struct _object PyObject
+
static PythonQtConvertPythonSequenceToQVariantListCB * _pythonSequenceToQVariantListCB
+
Stores C++ arguments for a qt_metacall (which are created when converting data from Python to C++)
Definition: PythonQtMisc.h:78
+
static int PyObjGetInt(PyObject *val, bool strict, bool &ok)
get int from py object
+
PyObject * PythonQtConvertIntegerMapToPython(const void *inMap, int metaTypeId)
+
static void registerPythonToMetaTypeConverter(int metaTypeId, PythonQtConvertPythonToMetaTypeCB *cb)
register a converter callback from python to cpp for given metatype
+
static QString PyObjGetString(PyObject *val)
get string value from py object
+ +
static QVariant PyObjToQVariant(PyObject *val, int type=-1)
+
static QByteArray getInnerListTypeName(const QByteArray &typeName)
returns the inner type name of a simple template or the typename without appended "List".
+ + + +
static PyObject * convertQtValueToPythonInternal(int type, const void *data)
converts the Qt parameter given in data, interpreting it as a type registered qvariant/meta type,...
+
PyObject * PythonQtConvertListOfValueTypeToPythonList(const void *inList, int metaTypeId)
+
QVariant PythonQtConvertPythonSequenceToQVariantListCB(PyObject *inObject)
+ +
static void registerMetaTypeToPythonConverter(int metaTypeId, PythonQtConvertMetaTypeToPythonCB *cb)
register a converter callback from cpp to python for given metatype
+
PythonQtClassInfo * getClassInfo(const QMetaObject *meta)
get the class info for a meta object (if available)
+
static QHash< int, PythonQtConvertPythonToMetaTypeCB * > _pythonToMetaTypeConverters
+
PYTHONQT_EXPORT PyTypeObject PythonQtInstanceWrapper_Type
+
bool PythonQtConvertPythonListToListOfKnownClass(PyObject *obj, void *outList, int metaTypeId, bool)
+
static void setPythonSequenceToQVariantListCallback(PythonQtConvertPythonSequenceToQVariantListCB *cb)
+
+ + + + diff --git a/PythonQtCppWrapperFactory_8h.html b/PythonQtCppWrapperFactory_8h.html new file mode 100644 index 000000000..2fff85591 --- /dev/null +++ b/PythonQtCppWrapperFactory_8h.html @@ -0,0 +1,82 @@ + + + + + + + +PythonQt: PythonQtCppWrapperFactory.h File Reference + + + + + + +
+
+ + + + + + +
+
PythonQt +
+
+
+ + + + + + + +
+
+ +
+
PythonQtCppWrapperFactory.h File Reference
+
+
+
#include "PythonQtPythonInclude.h"
+#include "PythonQtSystem.h"
+#include <QObject>
+#include <QByteArray>
+
+

Go to the source code of this file.

+ + + + + + + +

+Classes

class  PythonQtCppWrapperFactory
 Factory interface for C++ classes that can be wrapped by QObject objects. More...
 
class  PythonQtForeignWrapperFactory
 
+

Detailed Description

+
Author
Florian Link
+
+Last changed by
+
Author
florian
+
Date
2006-06
+ +

Definition in file PythonQtCppWrapperFactory.h.

+
+ + + + diff --git a/PythonQtCppWrapperFactory_8h_source.html b/PythonQtCppWrapperFactory_8h_source.html new file mode 100644 index 000000000..bd0023c4c --- /dev/null +++ b/PythonQtCppWrapperFactory_8h_source.html @@ -0,0 +1,67 @@ + + + + + + + +PythonQt: PythonQtCppWrapperFactory.h Source File + + + + + + +
+
+ + + + + + +
+
PythonQt +
+
+
+ + + + + + + +
+
+
+
PythonQtCppWrapperFactory.h
+
+
+Go to the documentation of this file.
1 #ifndef _PYTHONQTCPPWRAPPERFACTORY_H
2 #define _PYTHONQTCPPWRAPPERFACTORY_H
3 
4 /*
5  *
6  * Copyright (C) 2010 MeVis Medical Solutions AG All Rights Reserved.
7  *
8  * This library is free software; you can redistribute it and/or
9  * modify it under the terms of the GNU Lesser General Public
10  * License as published by the Free Software Foundation; either
11  * version 2.1 of the License, or (at your option) any later version.
12  *
13  * This library is distributed in the hope that it will be useful,
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16  * Lesser General Public License for more details.
17  *
18  * Further, this software is distributed without any warranty that it is
19  * free of the rightful claim of any third person regarding infringement
20  * or the like. Any license provided herein, whether implied or
21  * otherwise, applies only to this software file. Patent licenses, if
22  * any, provided herein do not apply to combinations of this program with
23  * other software, or any other product whatsoever.
24  *
25  * You should have received a copy of the GNU Lesser General Public
26  * License along with this library; if not, write to the Free Software
27  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
28  *
29  * Contact information: MeVis Medical Solutions AG, Universitaetsallee 29,
30  * 28359 Bremen, Germany or:
31  *
32  * http://www.mevis.de
33  *
34  */
35 
36 //----------------------------------------------------------------------------------
43 //----------------------------------------------------------------------------------
44 
45 #include "PythonQtPythonInclude.h"
46 
47 #include "PythonQtSystem.h"
48 #include <QObject>
49 #include <QByteArray>
50 
52 
57 {
58 public:
61 
63  virtual QObject* create(const QByteArray& classname, void *ptr) = 0;
64 
65 };
66 
70 {
71 public:
74 
77  virtual PyObject* wrap(const QByteArray& classname, void *ptr) = 0;
78 
81  virtual void* unwrap(const QByteArray& classname, PyObject* object) = 0;
82 
83 };
84 
85 #endif
86 
Factory interface for C++ classes that can be wrapped by QObject objects.
+ + + +
#define PYTHONQT_EXPORT
+
struct _object PyObject
+ + + + +
+ + + + diff --git a/PythonQtDoc_8h.html b/PythonQtDoc_8h.html new file mode 100644 index 000000000..cd4165390 --- /dev/null +++ b/PythonQtDoc_8h.html @@ -0,0 +1,67 @@ + + + + + + + +PythonQt: PythonQtDoc.h File Reference + + + + + + +
+
+ + + + + + +
+
PythonQt +
+
+
+ + + + + + + +
+
+
+
PythonQtDoc.h File Reference
+
+
+ +

Go to the source code of this file.

+

Detailed Description

+
Author
Florian Link
+
+Last changed by
+
Author
florian
+
Date
2006-10
+ +

Definition in file PythonQtDoc.h.

+
+ + + + diff --git a/PythonQtDoc_8h_source.html b/PythonQtDoc_8h_source.html new file mode 100644 index 000000000..75f78f5ce --- /dev/null +++ b/PythonQtDoc_8h_source.html @@ -0,0 +1,57 @@ + + + + + + + +PythonQt: PythonQtDoc.h Source File + + + + + + +
+
+ + + + + + +
+
PythonQt +
+
+
+ + + + + + + +
+
+
+
PythonQtDoc.h
+
+
+Go to the documentation of this file.
1 #ifndef _PYTHONQTDOC_H
2 #define _PYTHONQTDOC_H
3 
4 /*
5  *
6  * Copyright (C) 2010 MeVis Medical Solutions AG All Rights Reserved.
7  *
8  * This library is free software; you can redistribute it and/or
9  * modify it under the terms of the GNU Lesser General Public
10  * License as published by the Free Software Foundation; either
11  * version 2.1 of the License, or (at your option) any later version.
12  *
13  * This library is distributed in the hope that it will be useful,
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16  * Lesser General Public License for more details.
17  *
18  * Further, this software is distributed without any warranty that it is
19  * free of the rightful claim of any third person regarding infringement
20  * or the like. Any license provided herein, whether implied or
21  * otherwise, applies only to this software file. Patent licenses, if
22  * any, provided herein do not apply to combinations of this program with
23  * other software, or any other product whatsoever.
24  *
25  * You should have received a copy of the GNU Lesser General Public
26  * License along with this library; if not, write to the Free Software
27  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
28  *
29  * Contact information: MeVis Medical Solutions AG, Universitaetsallee 29,
30  * 28359 Bremen, Germany or:
31  *
32  * http://www.mevis.de
33  *
34  */
35 
36 //----------------------------------------------------------------------------------
43 //----------------------------------------------------------------------------------
44 
436 
439 
442 
445 
+ + + + diff --git a/PythonQtImportFileInterface_8h.html b/PythonQtImportFileInterface_8h.html new file mode 100644 index 000000000..fdf5db9c6 --- /dev/null +++ b/PythonQtImportFileInterface_8h.html @@ -0,0 +1,79 @@ + + + + + + + +PythonQt: PythonQtImportFileInterface.h File Reference + + + + + + +
+
+ + + + + + +
+
PythonQt +
+
+
+ + + + + + + +
+
+ +
+
PythonQtImportFileInterface.h File Reference
+
+
+
#include "PythonQtPythonInclude.h"
+#include <QDateTime>
+#include <QString>
+#include <QByteArray>
+
+

Go to the source code of this file.

+ + + + +

+Classes

class  PythonQtImportFileInterface
 
+

Detailed Description

+
Author
Florian Link
+
+Last changed by
+
Author
florian
+
Date
2006-05
+ +

Definition in file PythonQtImportFileInterface.h.

+
+ + + + diff --git a/PythonQtImportFileInterface_8h_source.html b/PythonQtImportFileInterface_8h_source.html new file mode 100644 index 000000000..eaf846ade --- /dev/null +++ b/PythonQtImportFileInterface_8h_source.html @@ -0,0 +1,67 @@ + + + + + + + +PythonQt: PythonQtImportFileInterface.h Source File + + + + + + +
+
+ + + + + + +
+
PythonQt +
+
+
+ + + + + + + +
+
+
+
PythonQtImportFileInterface.h
+
+
+Go to the documentation of this file.
1 #ifndef _PYTHONQTIMPORTFILEINTERFACE_H
2 #define _PYTHONQTIMPORTFILEINTERFACE_H
3 
4 /*
5  *
6  * Copyright (C) 2010 MeVis Medical Solutions AG All Rights Reserved.
7  *
8  * This library is free software; you can redistribute it and/or
9  * modify it under the terms of the GNU Lesser General Public
10  * License as published by the Free Software Foundation; either
11  * version 2.1 of the License, or (at your option) any later version.
12  *
13  * This library is distributed in the hope that it will be useful,
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16  * Lesser General Public License for more details.
17  *
18  * Further, this software is distributed without any warranty that it is
19  * free of the rightful claim of any third person regarding infringement
20  * or the like. Any license provided herein, whether implied or
21  * otherwise, applies only to this software file. Patent licenses, if
22  * any, provided herein do not apply to combinations of this program with
23  * other software, or any other product whatsoever.
24  *
25  * You should have received a copy of the GNU Lesser General Public
26  * License along with this library; if not, write to the Free Software
27  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
28  *
29  * Contact information: MeVis Medical Solutions AG, Universitaetsallee 29,
30  * 28359 Bremen, Germany or:
31  *
32  * http://www.mevis.de
33  *
34  */
35 
36 //----------------------------------------------------------------------------------
43 //----------------------------------------------------------------------------------
44 
45 #include "PythonQtPythonInclude.h"
46 #include <QDateTime>
47 #include <QString>
48 #include <QByteArray>
49 
53 
54 public:
55  // get rid of warnings
57 
59  virtual QByteArray readFileAsBytes(const QString& filename) = 0;
60 
63  virtual QByteArray readSourceFile(const QString& filename, bool& ok) = 0;
64 
66  virtual bool exists(const QString& filename) = 0;
67 
70  virtual bool isEggArchive(const QString& filename) = 0;
71 
73  virtual QDateTime lastModifiedDate(const QString& filename) = 0;
74 
77  virtual bool ignoreUpdatedPythonSourceFiles() { return false; }
78 
81  virtual void importedModule(const QString& /*module*/) {};
82 
83 };
84 
85 #endif
86 
virtual bool exists(const QString &filename)=0
returns if the file exists
+ + +
virtual QDateTime lastModifiedDate(const QString &filename)=0
get the last modified data of a file
+
virtual void importedModule(const QString &)
+
virtual QByteArray readFileAsBytes(const QString &filename)=0
read the given file as byte array, without doing any linefeed translations
+ +
virtual bool isEggArchive(const QString &filename)=0
+
virtual QByteArray readSourceFile(const QString &filename, bool &ok)=0
+ +
+ + + + diff --git a/PythonQtImporter_8h.html b/PythonQtImporter_8h.html new file mode 100644 index 000000000..1c37f7e2e --- /dev/null +++ b/PythonQtImporter_8h.html @@ -0,0 +1,113 @@ + + + + + + + +PythonQt: PythonQtImporter.h File Reference + + + + + + +
+
+ + + + + + +
+
PythonQt +
+
+
+ + + + + + + +
+
+ +
+
PythonQtImporter.h File Reference
+
+
+
#include "PythonQtPythonInclude.h"
+#include "structmember.h"
+#include "osdefs.h"
+#include "marshal.h"
+#include "compile.h"
+#include <time.h>
+#include <qobject.h>
+#include <qstring.h>
+
+

Go to the source code of this file.

+ + + + + + + + + + +

+Classes

struct  _PythonQtImporter
 defines a python object that stores a Qt slot info More...
 
class  PythonQtImport
 implements importing of python files into PythonQt More...
 
struct  PythonQtImport::ModuleInfo
 
+ + + + +

+Typedefs

typedef struct _PythonQtImporter PythonQtImporter
 defines a python object that stores a Qt slot info More...
 
+

Detailed Description

+
Author
Florian Link
+
+Last changed by
+
Author
stk
+
Date
2004-06
+ +

Definition in file PythonQtImporter.h.

+

Typedef Documentation

+ +

◆ PythonQtImporter

+ +
+
+ + + + +
typedef struct _PythonQtImporter PythonQtImporter
+
+ +

defines a python object that stores a Qt slot info

+ +
+
+
+ + + + diff --git a/PythonQtImporter_8h_source.html b/PythonQtImporter_8h_source.html new file mode 100644 index 000000000..65ff765cf --- /dev/null +++ b/PythonQtImporter_8h_source.html @@ -0,0 +1,87 @@ + + + + + + + +PythonQt: PythonQtImporter.h Source File + + + + + + +
+
+ + + + + + +
+
PythonQt +
+
+
+ + + + + + + +
+
+
+
PythonQtImporter.h
+
+
+Go to the documentation of this file.
1 #ifndef _PYTHONQTIMPORTER_
2 #define _PYTHONQTIMPORTER_
3 
4 /*
5  *
6  * Copyright (C) 2010 MeVis Medical Solutions AG All Rights Reserved.
7  *
8  * This library is free software; you can redistribute it and/or
9  * modify it under the terms of the GNU Lesser General Public
10  * License as published by the Free Software Foundation; either
11  * version 2.1 of the License, or (at your option) any later version.
12  *
13  * This library is distributed in the hope that it will be useful,
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16  * Lesser General Public License for more details.
17  *
18  * Further, this software is distributed without any warranty that it is
19  * free of the rightful claim of any third person regarding infringement
20  * or the like. Any license provided herein, whether implied or
21  * otherwise, applies only to this software file. Patent licenses, if
22  * any, provided herein do not apply to combinations of this program with
23  * other software, or any other product whatsoever.
24  *
25  * You should have received a copy of the GNU Lesser General Public
26  * License along with this library; if not, write to the Free Software
27  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
28  *
29  * Contact information: MeVis Medical Solutions AG, Universitaetsallee 29,
30  * 28359 Bremen, Germany or:
31  *
32  * http://www.mevis.de
33  *
34  */
35 
36 //----------------------------------------------------------------------------------
43 //----------------------------------------------------------------------------------
44 
45 #include "PythonQtPythonInclude.h"
46 
47 #include "structmember.h"
48 #include "osdefs.h"
49 #include "marshal.h"
50 #include "compile.h"
51 #include <time.h>
52 
53 #include <qobject.h>
54 #include <qstring.h>
55 
56 
58 typedef struct _PythonQtImporter {
59  PyObject_HEAD
60  QString* _path;
62 
63 
65 
68 {
69 public:
70 
71  enum ModuleType {
76  };
77 
78  struct ModuleInfo {
81  }
82  QString fullPath;
83  QString moduleName;
85  };
86 
88  static void init();
89 
91  static void writeCompiledModule(PyCodeObject *co, const QString& filename, long mtime, long sourceSize);
92 
98  static PyObject *unmarshalCode(const QString& path, const QByteArray& data, time_t mtime);
99 
102  static PyObject *compileSource(const QString& path, const QByteArray& data);
103 
106  static PyObject *getCodeFromData(const QString& path, int isbytecode = 0, int ispackage = 0,
107  time_t mtime = 0);
108 
112  static PyObject * getModuleCode(PythonQtImporter *self,
113  const char* fullname, QString& modpath, QString& cachemodpath);
114 
115 
117  static PyObject* getCodeFromPyc(const QString& file);
118 
120  static ModuleInfo getModuleInfo(PythonQtImporter* self, const QString& fullname);
121 
123  static QString getSubName(const QString& str);
124 
128  static long getLong(unsigned char *buf);
129 
131  static time_t getMTimeOfSource(const QString& path);
132 
134  static QString replaceExtension(const QString& str, const QString& ext);
135 
137  static QString getCacheFilename(const QString& sourceFile, bool isOptimizedFilename);
138 
140  static QString getSourceFilename(const QString& cacheFile);
141 };
142 
143 #endif
144 
struct _PythonQtImporter PythonQtImporter
defines a python object that stores a Qt slot info
+ +
static void init()
initialize
+
static PyObject * getCodeFromPyc(const QString &file)
gets the compiled code for the given *.py file if there is a valid pyc file, otherwise compiles the f...
+
static time_t getMTimeOfSource(const QString &path)
get time stamp of file
+
defines a python object that stores a Qt slot info
+
static PyObject * getModuleCode(PythonQtImporter *self, const char *fullname, QString &modpath, QString &cachemodpath)
+
PyObject_HEAD QString * _path
+
static QString getSourceFilename(const QString &cacheFile)
Returns the filename of the source file for the given cache file, e.g. test.py for test....
+
static PyObject * unmarshalCode(const QString &path, const QByteArray &data, time_t mtime)
+ +
struct _object PyObject
+
static PyObject * compileSource(const QString &path, const QByteArray &data)
+ +
static QString getCacheFilename(const QString &sourceFile, bool isOptimizedFilename)
Returns the filename of the cache file for the given source file, e.g. test.pyc for test....
+
static ModuleInfo getModuleInfo(PythonQtImporter *self, const QString &fullname)
Return if module exists and is a package or a module.
+ +
static QString replaceExtension(const QString &str, const QString &ext)
replace extension of file
+
static PyObject * getCodeFromData(const QString &path, int isbytecode=0, int ispackage=0, time_t mtime=0)
+ +
QString fullPath
the full path to the found file
+
static long getLong(unsigned char *buf)
+
implements importing of python files into PythonQt
+
static void writeCompiledModule(PyCodeObject *co, const QString &filename, long mtime, long sourceSize)
writes the python code to disk, marshalling and writing the time stamp
+
static QString getSubName(const QString &str)
get the last name of a dot chain (first.second.last)
+
QString moduleName
the module name without the package prefix
+ + + + +
+ + + + diff --git a/PythonQtInstanceWrapper_8h.html b/PythonQtInstanceWrapper_8h.html new file mode 100644 index 000000000..8e42ecb12 --- /dev/null +++ b/PythonQtInstanceWrapper_8h.html @@ -0,0 +1,192 @@ + + + + + + + +PythonQt: PythonQtInstanceWrapper.h File Reference + + + + + + +
+
+ + + + + + +
+
PythonQt +
+
+
+ + + + + + + +
+
+ +
+
PythonQtInstanceWrapper.h File Reference
+
+
+
#include "PythonQtPythonInclude.h"
+#include "PythonQtSystem.h"
+#include "PythonQtClassWrapper.h"
+#include <QPointer>
+#include "structmember.h"
+#include "methodobject.h"
+#include "compile.h"
+#include "eval.h"
+
+

Go to the source code of this file.

+ + + + + +

+Classes

struct  PythonQtInstanceWrapperStruct
 a Python wrapper object for Qt objects and C++ objects (that are themselves wrapped by wrapper QObjects) More...
 
+ + + + +

+Typedefs

typedef struct PythonQtInstanceWrapperStruct PythonQtInstanceWrapper
 a Python wrapper object for Qt objects and C++ objects (that are themselves wrapped by wrapper QObjects) More...
 
+ + + + + +

+Functions

int PythonQtInstanceWrapper_init (PythonQtInstanceWrapper *self, PyObject *args, PyObject *kwds)
 
PyObjectPythonQtInstanceWrapper_delete (PythonQtInstanceWrapper *self)
 
+ + + +

+Variables

PYTHONQT_EXPORT PyTypeObject PythonQtInstanceWrapper_Type
 
+

Detailed Description

+
Author
Florian Link
+
+Last changed by
+
Author
florian
+
Date
2006-05
+ +

Definition in file PythonQtInstanceWrapper.h.

+

Typedef Documentation

+ +

◆ PythonQtInstanceWrapper

+ +
+
+ +

a Python wrapper object for Qt objects and C++ objects (that are themselves wrapped by wrapper QObjects)

+ +
+
+

Function Documentation

+ +

◆ PythonQtInstanceWrapper_delete()

+ +
+
+ + + + + + + + +
PyObject* PythonQtInstanceWrapper_delete (PythonQtInstanceWrapperself)
+
+ +
+
+ +

◆ PythonQtInstanceWrapper_init()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int PythonQtInstanceWrapper_init (PythonQtInstanceWrapperself,
PyObjectargs,
PyObjectkwds 
)
+
+ +
+
+

Variable Documentation

+ +

◆ PythonQtInstanceWrapper_Type

+ +
+
+ + + + +
PYTHONQT_EXPORT PyTypeObject PythonQtInstanceWrapper_Type
+
+
+
+ + + + diff --git a/PythonQtInstanceWrapper_8h_source.html b/PythonQtInstanceWrapper_8h_source.html new file mode 100644 index 000000000..217e2d097 --- /dev/null +++ b/PythonQtInstanceWrapper_8h_source.html @@ -0,0 +1,82 @@ + + + + + + + +PythonQt: PythonQtInstanceWrapper.h Source File + + + + + + +
+
+ + + + + + +
+
PythonQt +
+
+
+ + + + + + + +
+
+
+
PythonQtInstanceWrapper.h
+
+
+Go to the documentation of this file.
1 #ifndef _PYTHONQTINSTANCEWRAPPER_H
2 #define _PYTHONQTINSTANCEWRAPPER_H
3 
4 /*
5  *
6  * Copyright (C) 2010 MeVis Medical Solutions AG All Rights Reserved.
7  *
8  * This library is free software; you can redistribute it and/or
9  * modify it under the terms of the GNU Lesser General Public
10  * License as published by the Free Software Foundation; either
11  * version 2.1 of the License, or (at your option) any later version.
12  *
13  * This library is distributed in the hope that it will be useful,
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16  * Lesser General Public License for more details.
17  *
18  * Further, this software is distributed without any warranty that it is
19  * free of the rightful claim of any third person regarding infringement
20  * or the like. Any license provided herein, whether implied or
21  * otherwise, applies only to this software file. Patent licenses, if
22  * any, provided herein do not apply to combinations of this program with
23  * other software, or any other product whatsoever.
24  *
25  * You should have received a copy of the GNU Lesser General Public
26  * License along with this library; if not, write to the Free Software
27  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
28  *
29  * Contact information: MeVis Medical Solutions AG, Universitaetsallee 29,
30  * 28359 Bremen, Germany or:
31  *
32  * http://www.mevis.de
33  *
34  */
35 
36 //----------------------------------------------------------------------------------
43 //----------------------------------------------------------------------------------
44 
45 #include "PythonQtPythonInclude.h"
46 
47 #include "PythonQtSystem.h"
48 #include "PythonQtClassWrapper.h"
49 #include <QPointer>
50 
51 #include "structmember.h"
52 #include "methodobject.h"
53 #include "compile.h"
54 #include "eval.h"
55 
56 class PythonQtClassInfo;
57 class QObject;
58 
60 
61 //---------------------------------------------------------------
64  PyObject_HEAD
65 
68  { return ((PythonQtClassWrapper*)Py_TYPE(this))->_classInfo; }
69 
71  { return ((PythonQtClassWrapper*)Py_TYPE(this))->_dynamicClassInfo; }
72 
74  void setQObject(QObject* object) {
75  _obj = object;
76  _objPointerCopy = object;
77  }
78 
81  // we pass the ownership to C++
82  _ownedByPythonQt = false;
83  // handle shell instance
84  if (_isShellInstance) {
86  // ref count the wrapper, so that the Python part of the shell instance can not go
87  // away until the C++ object gets deleted...
88  Py_INCREF((PyObject*)this);
90  }
91  }
92  }
93 
96  _ownedByPythonQt = true;
97  // if the shell instance was owned by C++ and the ownership goes to Python,
98  // we need to remove the extra ref count that kept the Python part alive from the C++ side.
100  Py_DECREF((PyObject*)this);
102  }
103  }
104 
105 
107  QPointer<QObject> _obj;
111 
113  void* _wrappedPtr;
114 
115  // TODO xxx: put booleans into int that holds flags
116 
119 
122 
125 
128 
130 
132 
134 
135 #endif
136 
bool _isShellInstance
stores if the object is a shell instance
+
PyObject_HEAD PythonQtClassInfo * classInfo()
the class information, this is set even if the _obj or _wrappedPtr is NULL to support typed NULL poin...
+
a Python wrapper object for Qt objects and C++ objects (that are themselves wrapped by wrapper QObjec...
+
int PythonQtInstanceWrapper_init(PythonQtInstanceWrapper *self, PyObject *args, PyObject *kwds)
+
a class that stores all required information about a Qt object (and an optional associated C++ class ...
+ +
bool _useQMetaTypeDestroy
stores that the owned object should be destroyed using QMetaType::destroy()
+
void passOwnershipToPython()
Passes the ownership to Python.
+
QPointer< QObject > _obj
pointer to the wrapped Qt object or if _wrappedPtr is set, the Qt object that wraps the C++ Ptr
+
bool _ownedByPythonQt
flag that stores if the object is owned by pythonQt
+ +
#define PYTHONQT_EXPORT
+
struct _object PyObject
+
void passOwnershipToCPP()
Passes the ownership of the wrapped object to C++.
+
void setQObject(QObject *object)
set the QObject pointer
+
void * _wrappedPtr
optional C++ object Ptr that is wrapped by the above _obj
+
PythonQtDynamicClassInfo * dynamicClassInfo()
+ +
struct PythonQtInstanceWrapperStruct PythonQtInstanceWrapper
a Python wrapper object for Qt objects and C++ objects (that are themselves wrapped by wrapper QObjec...
+ + +
PYTHONQT_EXPORT PyTypeObject PythonQtInstanceWrapper_Type
+ +
PyObject * PythonQtInstanceWrapper_delete(PythonQtInstanceWrapper *self)
+
bool _shellInstanceRefCountsWrapper
stores if the shell instance (C++) owns the wrapper with its ref count
+
+ + + + diff --git a/PythonQtMethodInfo_8h.html b/PythonQtMethodInfo_8h.html new file mode 100644 index 000000000..5da6dd649 --- /dev/null +++ b/PythonQtMethodInfo_8h.html @@ -0,0 +1,111 @@ + + + + + + + +PythonQt: PythonQtMethodInfo.h File Reference + + + + + + +
+
+ + + + + + +
+
PythonQt +
+
+
+ + + + + + + +
+
+ +
+
PythonQtMethodInfo.h File Reference
+
+
+
#include "PythonQtPythonInclude.h"
+#include "PythonQtSystem.h"
+#include <QByteArray>
+#include <QHash>
+#include <QList>
+#include <QMetaMethod>
+
+

Go to the source code of this file.

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

+Classes

class  PythonQtMethodInfo
 stores information about a specific signal/slot/method More...
 
struct  PythonQtMethodInfo::ParameterInfo
 stores various informations about a parameter/type name More...
 
class  PythonQtSlotInfo
 stores information about a slot, including a next pointer to overloaded slots More...
 
+ + + +

+Typedefs

typedef struct _object PyObject
 
+

Detailed Description

+
Author
Florian Link
+
+Last changed by
+
Author
florian
+
Date
2006-05
+ +

Definition in file PythonQtMethodInfo.h.

+

Typedef Documentation

+ +

◆ PyObject

+ +
+
+ + + + +
typedef struct _object PyObject
+
+ +

Definition at line 55 of file PythonQtMethodInfo.h.

+ +
+
+
+ + + + diff --git a/PythonQtMethodInfo_8h_source.html b/PythonQtMethodInfo_8h_source.html new file mode 100644 index 000000000..83c6a1f8a --- /dev/null +++ b/PythonQtMethodInfo_8h_source.html @@ -0,0 +1,106 @@ + + + + + + + +PythonQt: PythonQtMethodInfo.h Source File + + + + + + +
+
+ + + + + + +
+
PythonQt +
+
+
+ + + + + + + +
+
+
+
PythonQtMethodInfo.h
+
+
+Go to the documentation of this file.
1 #ifndef _PYTHONQTMETHODINFO_H
2 #define _PYTHONQTMETHODINFO_H
3 
4 /*
5  *
6  * Copyright (C) 2010 MeVis Medical Solutions AG All Rights Reserved.
7  *
8  * This library is free software; you can redistribute it and/or
9  * modify it under the terms of the GNU Lesser General Public
10  * License as published by the Free Software Foundation; either
11  * version 2.1 of the License, or (at your option) any later version.
12  *
13  * This library is distributed in the hope that it will be useful,
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16  * Lesser General Public License for more details.
17  *
18  * Further, this software is distributed without any warranty that it is
19  * free of the rightful claim of any third person regarding infringement
20  * or the like. Any license provided herein, whether implied or
21  * otherwise, applies only to this software file. Patent licenses, if
22  * any, provided herein do not apply to combinations of this program with
23  * other software, or any other product whatsoever.
24  *
25  * You should have received a copy of the GNU Lesser General Public
26  * License along with this library; if not, write to the Free Software
27  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
28  *
29  * Contact information: MeVis Medical Solutions AG, Universitaetsallee 29,
30  * 28359 Bremen, Germany or:
31  *
32  * http://www.mevis.de
33  *
34  */
35 
36 //----------------------------------------------------------------------------------
43 //----------------------------------------------------------------------------------
44 
45 #include "PythonQtPythonInclude.h"
46 #include "PythonQtSystem.h"
47 
48 #include <QByteArray>
49 #include <QHash>
50 #include <QList>
51 #include <QMetaMethod>
52 
53 class PythonQtClassInfo;
54 struct _object;
55 typedef struct _object PyObject;
56 
59 {
60 public:
62  Unknown = -1,
63  Variant = -2
64  };
65 
67  struct ParameterInfo {
68  QByteArray name;
69  QByteArray innerName; // if the type is a template, this stores the inner name
70  PyObject* enumWrapper; // if it is an enum, a pointer to the enum wrapper
71  int typeId; // a mixture from QMetaType and ParameterType
72  char pointerCount; // the number of pointer indirections
73  char innerNamePointerCount; // the number of pointer indirections in the inner name
74  bool isConst;
76  bool isQList;
80  };
81 
83  _shouldAllowThreads = true;
84  };
86  PythonQtMethodInfo(const QMetaMethod& meta, PythonQtClassInfo* classInfo);
87  PythonQtMethodInfo(const QByteArray& typeName, const QList<QByteArray>& args);
89  _parameters = other._parameters;
90  _shouldAllowThreads = other._shouldAllowThreads;
91  }
92 
95  static const PythonQtMethodInfo* getCachedMethodInfo(const QMetaMethod& method, PythonQtClassInfo* classInfo);
96 
98  static const PythonQtMethodInfo* getCachedMethodInfoFromArgumentList(int numArgs, const char** args);
99 
101  static void cleanupCachedMethodInfos();
102 
104  int parameterCount() const { return _parameters.size(); };
105 
107  static int nameToType(const char* name);
108 
110  const QList<ParameterInfo>& parameters() const { return _parameters; }
111 
113  static void addParameterTypeAlias(const QByteArray& alias, const QByteArray& name);
114 
116  static void fillParameterInfo(ParameterInfo& type, const QByteArray& name, PythonQtClassInfo* classInfo = NULL);
117 
119  static const ParameterInfo& getParameterInfoForMetaType(int type);
120 
122  static int getInnerTemplateMetaType(const QByteArray& typeName);
123 
125  static QByteArray getInnerTemplateTypeName(const QByteArray& typeName);
126 
128  static QByteArray getInnerListTypeName(const QByteArray& typeName);
129 
133  bool shouldAllowThreads() const { return _shouldAllowThreads; }
134 
135 protected:
136  void setupAllowThreads();
137 
138  static QHash<QByteArray, int> _parameterTypeDict;
139  static QHash<QByteArray, QByteArray> _parameterNameAliases;
140 
142  static QHash<QByteArray, PythonQtMethodInfo*> _cachedSignatures;
143 
144  static QHash<int, ParameterInfo> _cachedParameterInfos;
145 
146  QList<ParameterInfo> _parameters;
148 
149 };
150 
153 {
154 public:
155  enum Type {
156  MemberSlot, InstanceDecorator, ClassDecorator
157  };
158 
160  _meta = info._meta;
161  _parameters = info._parameters;
162  _shouldAllowThreads = info._shouldAllowThreads;
163  _slotIndex = info._slotIndex;
164  _next = NULL;
165  _decorator = info._decorator;
166  _type = info._type;
167  _upcastingOffset = 0;
168  }
169 
170  PythonQtSlotInfo(PythonQtClassInfo* classInfo, const QMetaMethod& meta, int slotIndex, QObject* decorator = NULL, Type type = MemberSlot ):PythonQtMethodInfo()
171  {
172  const PythonQtMethodInfo* info = getCachedMethodInfo(meta, classInfo);
173  _meta = meta;
174  _parameters = info->parameters();
175  _shouldAllowThreads = info->shouldAllowThreads();
176  _slotIndex = slotIndex;
177  _next = NULL;
178  _decorator = decorator;
179  _type = type;
180  _upcastingOffset = 0;
181  }
182 
183 
184 public:
186  QList<ParameterInfo> arguments() const;
187 
188  void deleteOverloadsAndThis();
189 
190  const QMetaMethod* metaMethod() const { return &_meta; }
191 
192  void setUpcastingOffset(int upcastingOffset) { _upcastingOffset = upcastingOffset; }
193 
194  int upcastingOffset() const { return _upcastingOffset; }
195 
197  int slotIndex() const { return _slotIndex; }
198 
200  PythonQtSlotInfo* nextInfo() const { return _next; }
201 
203  void setNextInfo(PythonQtSlotInfo* next) { _next = next; }
204 
206  bool isInstanceDecorator() const { return _decorator!=NULL && _type == InstanceDecorator; }
207 
209  bool isClassDecorator() const { return _decorator!=NULL && _type == ClassDecorator; }
210 
211  QObject* decorator() const { return _decorator; }
212 
214  QString fullSignature(bool skipReturnValue = false, int optionalArgsIndex = -1) const;
215 
217  QByteArray signature() const;
218 
220  QByteArray slotName(bool removeDecorators = false) const;
221 
225  QStringList overloads(bool skipReturnValue = false) const;
226 
229  QByteArray getImplementingClassName() const;
230 
232  static void invokeQtMethod(QObject* obj, PythonQtSlotInfo* slot, void** argList);
233 
235  static void setGlobalShouldAllowThreads(bool flag);
236 
238  static bool getGlobalShouldAllowThreads();
239 
240 private:
241  int _slotIndex;
242  PythonQtSlotInfo* _next;
243  QObject* _decorator;
244  Type _type;
245  QMetaMethod _meta;
246  int _upcastingOffset;
247 
248  static bool _globalShouldAllowThreads;
249 };
250 
251 
252 #endif
+
static const PythonQtMethodInfo * getCachedMethodInfo(const QMetaMethod &method, PythonQtClassInfo *classInfo)
+ + + + +
void setNextInfo(PythonQtSlotInfo *next)
set the next overloaded slot
+ +
a class that stores all required information about a Qt object (and an optional associated C++ class ...
+
QByteArray typeName(const QMetaMethod &method)
Definition: PythonQtUtils.h:72
+
int slotIndex() const
get the index of the slot (needed for qt_metacall)
+
static QHash< QByteArray, QByteArray > _parameterNameAliases
+
bool shouldAllowThreads() const
+ +
PythonQtSlotInfo(PythonQtClassInfo *classInfo, const QMetaMethod &meta, int slotIndex, QObject *decorator=NULL, Type type=MemberSlot)
+
int parameterCount() const
returns the number of parameters including the return value
+ +
bool isInstanceDecorator() const
returns if the slot is a decorator slot
+ +
bool isClassDecorator() const
returns if the slot is a constructor slot
+
stores various informations about a parameter/type name
+
static QHash< int, ParameterInfo > _cachedParameterInfos
+ + + +
#define PYTHONQT_EXPORT
+
const QMetaMethod * metaMethod() const
+
struct _object PyObject
+
void setUpcastingOffset(int upcastingOffset)
+ + +
QByteArray signature(const QMetaMethod &method)
Definition: PythonQtUtils.h:53
+ +
QObject * decorator() const
+
static QHash< QByteArray, PythonQtMethodInfo * > _cachedSignatures
stores the cached signatures of methods to speedup mapping from Qt to Python types
+
int upcastingOffset() const
+
stores information about a specific signal/slot/method
+
PythonQtSlotInfo * nextInfo() const
get next overloaded slot (which has the same name)
+ + + +
static QHash< QByteArray, int > _parameterTypeDict
+ + +
PythonQtMethodInfo(const PythonQtMethodInfo &other)
+
stores information about a slot, including a next pointer to overloaded slots
+
const QList< ParameterInfo > & parameters() const
get the parameter infos
+
PythonQtSlotInfo(const PythonQtSlotInfo &info)
+
QList< ParameterInfo > _parameters
+
+ + + + diff --git a/PythonQtMisc_8h.html b/PythonQtMisc_8h.html new file mode 100644 index 000000000..e01f4f5b3 --- /dev/null +++ b/PythonQtMisc_8h.html @@ -0,0 +1,278 @@ + + + + + + + +PythonQt: PythonQtMisc.h File Reference + + + + + + +
+
+ + + + + + +
+
PythonQt +
+
+
+ + + + + + + +
+
+ +
+
PythonQtMisc.h File Reference
+
+
+
#include "PythonQtPythonInclude.h"
+#include <vector>
+#include <QVariant>
+
+

Go to the source code of this file.

+ + + + + +

+Classes

class  PythonQtArgumentFrame
 Stores C++ arguments for a qt_metacall (which are created when converting data from Python to C++) More...
 
+ + + + + + + + + + + +

+Macros

#define PYTHONQT_MAX_ARGS   32
 
#define PythonQtArgumentFrame_ADD_VALUE(store, type, value, ptr)
 
#define PythonQtArgumentFrame_ADD_VALUE_IF_NEEDED(alreadyAllocatedPtr, store, type, value, ptr)
 
#define PythonQtArgumentFrame_ADD_VARIANT_VALUE(store, value, ptr)
 
#define PythonQtArgumentFrame_ADD_VARIANT_VALUE_IF_NEEDED(alreadyAllocatedPtr, store, value, ptr)
 
+

Detailed Description

+
Author
Florian Link
+
+Last changed by
+
Author
florian
+
Date
2006-05
+ +

Definition in file PythonQtMisc.h.

+

Macro Definition Documentation

+ +

◆ PYTHONQT_MAX_ARGS

+ +
+
+ + + + +
#define PYTHONQT_MAX_ARGS   32
+
+ +

Definition at line 49 of file PythonQtMisc.h.

+ +
+
+ +

◆ PythonQtArgumentFrame_ADD_VALUE

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#define PythonQtArgumentFrame_ADD_VALUE( store,
 type,
 value,
 ptr 
)
+
+Value:
{ type* item = (type*)store->nextPODPtr(); \
*item = value; \
ptr = (void*)item; \
}
+

Definition at line 51 of file PythonQtMisc.h.

+ +
+
+ +

◆ PythonQtArgumentFrame_ADD_VALUE_IF_NEEDED

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#define PythonQtArgumentFrame_ADD_VALUE_IF_NEEDED( alreadyAllocatedPtr,
 store,
 type,
 value,
 ptr 
)
+
+Value:
{ \
type* item = (type*)(alreadyAllocatedPtr?alreadyAllocatedPtr:store->nextPODPtr()); \
*item = value; \
ptr = (void*)item; \
}
+

Definition at line 57 of file PythonQtMisc.h.

+ +
+
+ +

◆ PythonQtArgumentFrame_ADD_VARIANT_VALUE

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
#define PythonQtArgumentFrame_ADD_VARIANT_VALUE( store,
 value,
 ptr 
)
+
+Value:
{ QVariant* item = store->nextVariantPtr(); \
*item = value; \
ptr = (void*)item; \
}
+

Definition at line 64 of file PythonQtMisc.h.

+ +
+
+ +

◆ PythonQtArgumentFrame_ADD_VARIANT_VALUE_IF_NEEDED

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#define PythonQtArgumentFrame_ADD_VARIANT_VALUE_IF_NEEDED( alreadyAllocatedPtr,
 store,
 value,
 ptr 
)
+
+Value:
{ \
QVariant* item = (QVariant*)(alreadyAllocatedPtr?alreadyAllocatedPtr:store->nextVariantPtr()); \
*item = value; \
ptr = (void*)item; \
}
+

Definition at line 70 of file PythonQtMisc.h.

+ +
+
+
+ + + + diff --git a/PythonQtMisc_8h_source.html b/PythonQtMisc_8h_source.html new file mode 100644 index 000000000..9192a1845 --- /dev/null +++ b/PythonQtMisc_8h_source.html @@ -0,0 +1,65 @@ + + + + + + + +PythonQt: PythonQtMisc.h Source File + + + + + + +
+
+ + + + + + +
+
PythonQt +
+
+
+ + + + + + + +
+
+
+
PythonQtMisc.h
+
+
+Go to the documentation of this file.
1 #ifndef _PYTHONQTMISC_H
2 #define _PYTHONQTMISC_H
3 
4 /*
5  *
6  * Copyright (C) 2010 MeVis Medical Solutions AG All Rights Reserved.
7  *
8  * This library is free software; you can redistribute it and/or
9  * modify it under the terms of the GNU Lesser General Public
10  * License as published by the Free Software Foundation; either
11  * version 2.1 of the License, or (at your option) any later version.
12  *
13  * This library is distributed in the hope that it will be useful,
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16  * Lesser General Public License for more details.
17  *
18  * Further, this software is distributed without any warranty that it is
19  * free of the rightful claim of any third person regarding infringement
20  * or the like. Any license provided herein, whether implied or
21  * otherwise, applies only to this software file. Patent licenses, if
22  * any, provided herein do not apply to combinations of this program with
23  * other software, or any other product whatsoever.
24  *
25  * You should have received a copy of the GNU Lesser General Public
26  * License along with this library; if not, write to the Free Software
27  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
28  *
29  * Contact information: MeVis Medical Solutions AG, Universitaetsallee 29,
30  * 28359 Bremen, Germany or:
31  *
32  * http://www.mevis.de
33  *
34  */
35 
36 //----------------------------------------------------------------------------------
43 //----------------------------------------------------------------------------------
44 
45 #include "PythonQtPythonInclude.h"
46 #include <vector>
47 #include <QVariant>
48 
49 #define PYTHONQT_MAX_ARGS 32
50 
51 #define PythonQtArgumentFrame_ADD_VALUE(store, type, value, ptr) \
52 { type* item = (type*)store->nextPODPtr(); \
53  *item = value; \
54  ptr = (void*)item; \
55 }
56 
57 #define PythonQtArgumentFrame_ADD_VALUE_IF_NEEDED(alreadyAllocatedPtr,store, type, value, ptr) \
58 { \
59  type* item = (type*)(alreadyAllocatedPtr?alreadyAllocatedPtr:store->nextPODPtr()); \
60  *item = value; \
61  ptr = (void*)item; \
62 }
63 
64 #define PythonQtArgumentFrame_ADD_VARIANT_VALUE(store, value, ptr) \
65 { QVariant* item = store->nextVariantPtr(); \
66  *item = value; \
67  ptr = (void*)item; \
68 }
69 
70 #define PythonQtArgumentFrame_ADD_VARIANT_VALUE_IF_NEEDED(alreadyAllocatedPtr,store, value, ptr) \
71 { \
72  QVariant* item = (QVariant*)(alreadyAllocatedPtr?alreadyAllocatedPtr:store->nextVariantPtr()); \
73  *item = value; \
74  ptr = (void*)item; \
75 }
76 
79 
80 public:
84  static void deleteFrame(PythonQtArgumentFrame* frame);
85 
87  static void cleanupFreeList();
88 
90  void reset();
91 
93  QVariant* nextVariantPtr();
95  quint64* nextPODPtr();
96 
97 private:
100 
101  std::vector<quint64> _podArgs;
102  std::vector<QVariant> _variantArgs;
103 
104  PythonQtArgumentFrame* _freeListNext;
105 
106  static PythonQtArgumentFrame* _freeListHead;
107 };
108 
109 #endif
quint64 * nextPODPtr()
Get next pointer to a POD.
+
QVariant * nextVariantPtr()
Get next pointer to a variant.
+
static void cleanupFreeList()
Frees all PythonQtArgumentFrame frames that are stored.
+
static void deleteFrame(PythonQtArgumentFrame *frame)
Frees the frame (resetting it and putting it back to the freelist)
+
static PythonQtArgumentFrame * newFrame()
Create a new (empty) frame (which is typically reused from a freelist)
+
Stores C++ arguments for a qt_metacall (which are created when converting data from Python to C++)
Definition: PythonQtMisc.h:78
+
void reset()
Resets the pod and variant argument lists to empty lists.
+ +
+ + + + diff --git a/PythonQtObjectPtr_8h.html b/PythonQtObjectPtr_8h.html new file mode 100644 index 000000000..cda9cc6ad --- /dev/null +++ b/PythonQtObjectPtr_8h.html @@ -0,0 +1,85 @@ + + + + + + + +PythonQt: PythonQtObjectPtr.h File Reference + + + + + + +
+
+ + + + + + +
+
PythonQt +
+
+
+ + + + + + + +
+
+ +
+
PythonQtObjectPtr.h File Reference
+
+
+
#include "PythonQtPythonInclude.h"
+#include "PythonQtSystem.h"
+#include "PythonQtThreadSupport.h"
+#include <QVariant>
+#include <QVariantList>
+#include <QVariantMap>
+
+

Go to the source code of this file.

+ + + + + + + + +

+Classes

class  PythonQtObjectPtr
 a smart pointer that stores a PyObject pointer and that handles reference counting automatically More...
 
class  PythonQtSafeObjectPtr
 a smart pointer that stores a PyObject pointer and that handles reference counting automatically More...
 
+

Detailed Description

+
Author
Florian Link
+
+Last changed by
+
Author
florian
+
Date
2006-05
+ +

Definition in file PythonQtObjectPtr.h.

+
+ + + + diff --git a/PythonQtObjectPtr_8h_source.html b/PythonQtObjectPtr_8h_source.html new file mode 100644 index 000000000..331d35bf9 --- /dev/null +++ b/PythonQtObjectPtr_8h_source.html @@ -0,0 +1,94 @@ + + + + + + + +PythonQt: PythonQtObjectPtr.h Source File + + + + + + +
+
+ + + + + + +
+
PythonQt +
+
+
+ + + + + + + +
+
+
+
PythonQtObjectPtr.h
+
+
+Go to the documentation of this file.
1 #ifndef _PYTHONQTOBJECTPTR_H
2 #define _PYTHONQTOBJECTPTR_H
3 
4 /*
5  *
6  * Copyright (C) 2010 MeVis Medical Solutions AG All Rights Reserved.
7  *
8  * This library is free software; you can redistribute it and/or
9  * modify it under the terms of the GNU Lesser General Public
10  * License as published by the Free Software Foundation; either
11  * version 2.1 of the License, or (at your option) any later version.
12  *
13  * This library is distributed in the hope that it will be useful,
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16  * Lesser General Public License for more details.
17  *
18  * Further, this software is distributed without any warranty that it is
19  * free of the rightful claim of any third person regarding infringement
20  * or the like. Any license provided herein, whether implied or
21  * otherwise, applies only to this software file. Patent licenses, if
22  * any, provided herein do not apply to combinations of this program with
23  * other software, or any other product whatsoever.
24  *
25  * You should have received a copy of the GNU Lesser General Public
26  * License along with this library; if not, write to the Free Software
27  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
28  *
29  * Contact information: MeVis Medical Solutions AG, Universitaetsallee 29,
30  * 28359 Bremen, Germany or:
31  *
32  * http://www.mevis.de
33  *
34  */
35 
36 //----------------------------------------------------------------------------------
43 //----------------------------------------------------------------------------------
44 
45 #include "PythonQtPythonInclude.h"
46 
47 #include "PythonQtSystem.h"
48 #include "PythonQtThreadSupport.h"
49 #include <QVariant>
50 #include <QVariantList>
51 #include <QVariantMap>
52 
54 
57 {
58 public:
59  PythonQtObjectPtr():_object(NULL) {}
60 
62  :_object(NULL) {
63  setObject(p.object());
64  }
65 
68  :_object(p.takeObject()) {
69  }
70 
73 
75  PythonQtObjectPtr(const QVariant& variant):_object(NULL) {
76  fromVariant(variant);
77  }
78 
80 
82 
84  bool fromVariant(const QVariant& variant);
85 
87  QVariant toVariant();
88 
90  QVariant toLocalVariant();
91 
93  setObject(p.object());
94  return *this;
95  }
96 
99  if (_object) {
100  setObject(NULL);
101  }
102  _object = p.takeObject();
103  return *this;
104  }
105 
108 
110  setObject(o);
111  return *this;
112  }
113 
114 
115  PythonQtObjectPtr &operator=(const QVariant& variant) {
116  fromVariant(variant);
117  return *this;
118  }
119 
120 
121  bool operator==( const PythonQtObjectPtr &p ) const {
122  return object() == p.object();
123  }
124 
125  bool operator!= ( const PythonQtObjectPtr& p ) const {
126  return !( *this == p );
127  }
128 
129  bool operator==( PyObject* p ) const {
130  return object() == p;
131  }
132 
133  bool operator!= ( PyObject* p ) const {
134  return object() != p;
135  }
136 
137  bool isNull() const { return !object(); }
138 
139  PyObject* operator->() const { return object(); }
140 
141  PyObject& operator*() const { return *( object() ); }
142 
143  operator PyObject*() const { return object(); }
144 
146  void setNewRef(PyObject* o);
147 
148  PyObject* object() const {
149  return _object;
150  }
151 
153  QVariant evalScript(const QString& script, int start = Py_file_input);
154 
157  QVariant evalCode(PyObject* pycode);
158 
160  void evalFile(const QString& filename);
161 
163  void addObject(const QString& name, QObject* object);
164 
166  void addVariable(const QString& name, const QVariant& v);
167 
169  void removeVariable(const QString& name);
170 
172  QVariant getVariable(const QString& name);
173 
175  QVariant call(const QString& callable, const QVariantList& args = QVariantList(), const QVariantMap& kwargs = QVariantMap());
176 
178  QVariant call(const QVariantList& args = QVariantList(), const QVariantMap& kwargs = QVariantMap());
179 
183  PyObject* o = _object;
184  _object = NULL;
185  return o;
186  }
187 
188 protected:
189 
190  void setObject(PyObject* o);
191 
192 private:
193  PyObject* _object;
194 };
195 
198 {
199 public:
200  PythonQtSafeObjectPtr() :_object(NULL) {}
201 
203  :_object(NULL) {
204  setObject(p.object());
205  }
206 
208  :_object(NULL) {
209  setObject(p.object());
210  }
211 
214  :_object(p._object) {
215  p._object = NULL;
216  }
217 
220  :_object(p.takeObject()) {
221  }
222 
224 
226 
228  setObject(p.object());
229  return *this;
230  }
231 
233  setObjectUnsafe(p.object());
234  return *this;
235  }
236 
239  if (_object) {
240  setObject(NULL);
241  }
242  _object = p._object;
243  p._object = NULL;
244  return *this;
245  }
246 
249  if (_object) {
250  setObjectUnsafe(NULL);
251  }
252  _object = p.takeObject();
253  return *this;
254  }
255 
257  setObject(o);
258  return *this;
259  }
260 
261  bool operator==(const PythonQtSafeObjectPtr &p) const {
262  return object() == p.object();
263  }
264 
265  bool operator!= (const PythonQtSafeObjectPtr& p) const {
266  return !(*this == p);
267  }
268 
269  bool operator==(PyObject* p) const {
270  return object() == p;
271  }
272 
273  bool operator!= (PyObject* p) const {
274  return object() != p;
275  }
276 
277  bool isNull() const { return !object(); }
278 
279  PyObject* operator->() const { return object(); }
280 
281  PyObject& operator*() const { return *(object()); }
282 
283  operator PyObject*() const { return object(); }
284 
285  PyObject* object() const {
286  return _object;
287  }
288 
292  PyObject* o = _object;
293  _object = NULL;
294  return o;
295  }
296 
297 protected:
298  void setObject(PyObject* o);
299  void setObjectUnsafe(PyObject* o);
300 
301 private:
302  PyObject* _object;
303 };
304 
305 // We don't want QVariant to take PythonQtObjectPtr via QVariant::fromValue, because it is unsafe when using multi-threading/GIL
306 // A QVariant can still be obtained with PythonQtObjectPtr::toLocalVariant().
307 //Q_DECLARE_METATYPE(PythonQtObjectPtr)
308 
309 // register PythonQtSafeObjectPtr to the meta type system
310 Q_DECLARE_METATYPE(PythonQtSafeObjectPtr)
311 
312 #endif
313 
PyObject * object() const
+
PythonQtObjectPtr(PythonQtObjectPtr &&p)
rvalue copy constructor, does not need any incref/decref.
+
PythonQtSafeObjectPtr(PythonQtObjectPtr &&p)
rvalue copy constructor, does not need any incref/decref.
+
PythonQtSafeObjectPtr & operator=(PythonQtSafeObjectPtr &&p)
rvalue assignment operator that steals the reference from p
+
PythonQtSafeObjectPtr & operator=(const PythonQtObjectPtr &p)
+
bool operator==(PyObject *p) const
+
PyObject * operator->() const
+
PyObject * operator->() const
+
bool operator==(const PythonQtObjectPtr &p) const
+ +
PythonQtObjectPtr & operator=(const QVariant &variant)
+
PythonQtSafeObjectPtr & operator=(PythonQtObjectPtr &&p)
rvalue assignment operator that steals the reference from p
+
PythonQtSafeObjectPtr(const PythonQtSafeObjectPtr &p)
+ + +
PythonQtSafeObjectPtr & operator=(PyObject *o)
+
PythonQtObjectPtr & operator=(const PythonQtObjectPtr &p)
+
PythonQtSafeObjectPtr(PythonQtSafeObjectPtr &&p)
rvalue copy constructor, does not need any incref/decref.
+
PythonQtObjectPtr(const PythonQtObjectPtr &p)
+ + +
#define PYTHONQT_EXPORT
+
struct _object PyObject
+
a smart pointer that stores a PyObject pointer and that handles reference counting automatically
+
PythonQtSafeObjectPtr(const PythonQtObjectPtr &p)
+ +
bool operator==(PyObject *p) const
+
a smart pointer that stores a PyObject pointer and that handles reference counting automatically
+
PythonQtObjectPtr(const QVariant &variant)
If the given variant holds a PythonQtObjectPtr, extract the value from it and hold onto the reference...
+ +
PythonQtObjectPtr & operator=(PythonQtObjectPtr &&p)
rvalue assignment operator that steals the reference from p
+
bool operator==(const PythonQtSafeObjectPtr &p) const
+
PyObject * takeObject()
+
PyObject * object() const
+
PythonQtSafeObjectPtr & operator=(const PythonQtSafeObjectPtr &p)
+ +
PythonQtObjectPtr & operator=(PyObject *o)
+
+ + + + diff --git a/PythonQtProperty_8h.html b/PythonQtProperty_8h.html new file mode 100644 index 000000000..5775285c4 --- /dev/null +++ b/PythonQtProperty_8h.html @@ -0,0 +1,122 @@ + + + + + + + +PythonQt: PythonQtProperty.h File Reference + + + + + + +
+
+ + + + + + +
+
PythonQt +
+
+
+ + + + + + + +
+
+ +
+
PythonQtProperty.h File Reference
+
+
+
#include "PythonQtPythonInclude.h"
+#include "PythonQtSystem.h"
+#include <QByteArray>
+#include <QList>
+#include <structmember.h>
+
+

Go to the source code of this file.

+ + + + + + +

+Classes

struct  PythonQtPropertyData
 
struct  PythonQtProperty
 
+ + + +

+Macros

#define PythonQtProperty_Check(op)   (Py_TYPE(op) == &PythonQtProperty_Type)
 
+ + + +

+Variables

PYTHONQT_EXPORT PyTypeObject PythonQtProperty_Type
 
+

Macro Definition Documentation

+ +

◆ PythonQtProperty_Check

+ +
+
+ + + + + + + + +
#define PythonQtProperty_Check( op)   (Py_TYPE(op) == &PythonQtProperty_Type)
+
+ +

Definition at line 44 of file PythonQtProperty.h.

+ +
+
+

Variable Documentation

+ +

◆ PythonQtProperty_Type

+ +
+
+ + + + +
PYTHONQT_EXPORT PyTypeObject PythonQtProperty_Type
+
+ +
+
+
+ + + + diff --git a/PythonQtProperty_8h_source.html b/PythonQtProperty_8h_source.html new file mode 100644 index 000000000..85fa00bf8 --- /dev/null +++ b/PythonQtProperty_8h_source.html @@ -0,0 +1,81 @@ + + + + + + + +PythonQt: PythonQtProperty.h Source File + + + + + + +
+
+ + + + + + +
+
PythonQt +
+
+
+ + + + + + + +
+
+
+
PythonQtProperty.h
+
+
+Go to the documentation of this file.
1 #pragma once
2 
3 /*
4 *
5 * Copyright (C) 2010 MeVis Medical Solutions AG All Rights Reserved.
6 *
7 * This library is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU Lesser General Public
9 * License as published by the Free Software Foundation; either
10 * version 2.1 of the License, or (at your option) any later version.
11 *
12 * This library is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 * Lesser General Public License for more details.
16 *
17 * Further, this software is distributed without any warranty that it is
18 * free of the rightful claim of any third person regarding infringement
19 * or the like. Any license provided herein, whether implied or
20 * otherwise, applies only to this software file. Patent licenses, if
21 * any, provided herein do not apply to combinations of this program with
22 * other software, or any other product whatsoever.
23 *
24 * You should have received a copy of the GNU Lesser General Public
25 * License along with this library; if not, write to the Free Software
26 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
27 *
28 * Contact information: MeVis Medical Solutions AG, Universitaetsallee 29,
29 * 28359 Bremen, Germany or:
30 *
31 * http://www.mevis.de
32 *
33 */
34 
35 #include "PythonQtPythonInclude.h"
36 #include "PythonQtSystem.h"
37 #include <QByteArray>
38 #include <QList>
39 
40 #include <structmember.h>
41 
42 extern PYTHONQT_EXPORT PyTypeObject PythonQtProperty_Type;
43 
44 #define PythonQtProperty_Check(op) (Py_TYPE(op) == &PythonQtProperty_Type)
45 
47 {
49  fget = NULL;
50  fset = NULL;
51  fdel = NULL;
52  freset = NULL;
53  notify = NULL;
54  doc = NULL;
55  designable = true;
56  scriptable = true;
57  stored = true;
58  user = false;
59  constant = false;
60  final = false;
61  }
62 
65  bool callSetter(PyObject* wrapper, PyObject* newValue);
66 
69  PyObject* callGetter(PyObject* wrapper);
70 
72  bool callReset(PyObject* wrapper);
73 
74  QByteArray cppType;
75 
82 
83  bool designable;
84  bool scriptable;
85  bool stored;
86  bool user;
87  bool constant;
88  bool final;
89 };
90 
91 typedef struct {
92  PyObject_HEAD
+ + + + + + + + +
PYTHONQT_EXPORT PyTypeObject PythonQtProperty_Type
+
bool callReset(PyObject *wrapper)
Call the freset method in Python, bound to the wrapper object.
+
#define PYTHONQT_EXPORT
+
struct _object PyObject
+ +
PyObject_HEAD PythonQtPropertyData * data
+ + +
PyObject * callGetter(PyObject *wrapper)
+ + +
bool callSetter(PyObject *wrapper, PyObject *newValue)
+ + + +
+ + + + diff --git a/PythonQtPythonInclude_8h.html b/PythonQtPythonInclude_8h.html new file mode 100644 index 000000000..67a948e20 --- /dev/null +++ b/PythonQtPythonInclude_8h.html @@ -0,0 +1,175 @@ + + + + + + + +PythonQt: PythonQtPythonInclude.h File Reference + + + + + + +
+
+ + + + + + +
+
PythonQt +
+
+
+ + + + + + + +
+
+ +
+
PythonQtPythonInclude.h File Reference
+
+
+
#include <Python.h>
+
+

Go to the source code of this file.

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

+Macros

#define PyBytes_Type   PyString_Type
 
#define PyBytes_Check   PyString_Check
 
#define PyBytes_AS_STRING   PyString_AS_STRING
 
#define PyBytes_AsString   PyString_AsString
 
#define PyBytes_GET_SIZE   PyString_GET_SIZE
 
#define PyBytes_FromStringAndSize   PyString_FromStringAndSize
 
+

Macro Definition Documentation

+ +

◆ PyBytes_AS_STRING

+ +
+
+ + + + +
#define PyBytes_AS_STRING   PyString_AS_STRING
+
+ +

Definition at line 93 of file PythonQtPythonInclude.h.

+ +
+
+ +

◆ PyBytes_AsString

+ +
+
+ + + + +
#define PyBytes_AsString   PyString_AsString
+
+ +

Definition at line 94 of file PythonQtPythonInclude.h.

+ +
+
+ +

◆ PyBytes_Check

+ +
+
+ + + + +
#define PyBytes_Check   PyString_Check
+
+ +

Definition at line 92 of file PythonQtPythonInclude.h.

+ +
+
+ +

◆ PyBytes_FromStringAndSize

+ +
+
+ + + + +
#define PyBytes_FromStringAndSize   PyString_FromStringAndSize
+
+ +

Definition at line 96 of file PythonQtPythonInclude.h.

+ +
+
+ +

◆ PyBytes_GET_SIZE

+ +
+
+ + + + +
#define PyBytes_GET_SIZE   PyString_GET_SIZE
+
+ +

Definition at line 95 of file PythonQtPythonInclude.h.

+ +
+
+ +

◆ PyBytes_Type

+ +
+
+ + + + +
#define PyBytes_Type   PyString_Type
+
+ +

Definition at line 91 of file PythonQtPythonInclude.h.

+ +
+
+
+ + + + diff --git a/PythonQtPythonInclude_8h_source.html b/PythonQtPythonInclude_8h_source.html new file mode 100644 index 000000000..3dab38b0a --- /dev/null +++ b/PythonQtPythonInclude_8h_source.html @@ -0,0 +1,57 @@ + + + + + + + +PythonQt: PythonQtPythonInclude.h Source File + + + + + + +
+
+ + + + + + +
+
PythonQt +
+
+
+ + + + + + + +
+
+
+
PythonQtPythonInclude.h
+
+
+Go to the documentation of this file.
1 /*
2  *
3  * Copyright (C) 2011 MeVis Medical Solutions AG All Rights Reserved.
4  *
5  * This library is free software; you can redistribute it and/or
6  * modify it under the terms of the GNU Lesser General Public
7  * License as published by the Free Software Foundation; either
8  * version 2.1 of the License, or (at your option) any later version.
9  *
10  * This library is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13  * Lesser General Public License for more details.
14  *
15  * Further, this software is distributed without any warranty that it is
16  * free of the rightful claim of any third person regarding infringement
17  * or the like. Any license provided herein, whether implied or
18  * otherwise, applies only to this software file. Patent licenses, if
19  * any, provided herein do not apply to combinations of this program with
20  * other software, or any other product whatsoever.
21  *
22  * You should have received a copy of the GNU Lesser General Public
23  * License along with this library; if not, write to the Free Software
24  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
25  *
26  * Contact information: MeVis Medical Solutions AG, Universitaetsallee 29,
27  * 28359 Bremen, Germany or:
28  *
29  * http://www.mevis.de
30  *
31  */
32 
33 #ifndef __PythonQtPythonInclude_h
34 #define __PythonQtPythonInclude_h
35 
36 // Undefine macros that Python.h defines to avoid redefinition warning.
37 #undef _POSIX_C_SOURCE
38 #undef _POSIX_THREADS
39 #undef _XOPEN_SOURCE
40 
41 // Undefine Qt keywords that conflict with Python headers
42 #ifdef slots
43 #undef slots
44 #define PYTHONQT_RESTORE_KEYWORDS
45 #endif
46 
47 // If PYTHONQT_USE_RELEASE_PYTHON_FALLBACK is enabled, try to link
48 // release Python DLL if it is available by undefining _DEBUG while
49 // including Python.h
50 #if defined(PYTHONQT_USE_RELEASE_PYTHON_FALLBACK) && defined(_DEBUG)
51 #undef _DEBUG
52 #if defined(_MSC_VER) && _MSC_VER >= 1400
53 #define _CRT_NOFORCE_MANIFEST 1
54 #define _STL_NOFORCE_MANIFEST 1
55 #endif
56 #include <Python.h>
57 #define _DEBUG
58 #else
59 #include <Python.h>
60 #endif
61 
62 // By including Python.h on Linux truncate could have been defined (in unistd.h)
63 // which would lead to compiler errors. Therefore:
64 #ifdef truncate
65 # undef truncate
66 #endif
67 
68 // get Qt keywords back
69 #ifdef PYTHONQT_RESTORE_KEYWORDS
70 #define slots Q_SLOTS
71 #undef PYTHONQT_RESTORE_KEYWORDS
72 #endif
73 
74 #if PY_MAJOR_VERSION >= 3
75 #define PY3K
76 // Helper defines to facilitate porting
77 #define PyString_FromString PyUnicode_FromString
78 #define PyString_AS_STRING PyUnicode_AsUTF8
79 #define PyString_AsString PyUnicode_AsUTF8
80 #define PyString_FromFormat PyUnicode_FromFormat
81 #define PyString_Check PyUnicode_Check
82 
83 #define PyInt_Type PyLong_Type
84 #define PyInt_FromLong PyLong_FromLong
85 #define PyInt_AS_LONG PyLong_AS_LONG
86 #define PyInt_Check PyLong_Check
87 #define PyInt_AsLong PyLong_AsLong
88 
89 #else
90 // Defines to use Python 3 names in Python 2 code
91 #define PyBytes_Type PyString_Type
92 #define PyBytes_Check PyString_Check
93 #define PyBytes_AS_STRING PyString_AS_STRING
94 #define PyBytes_AsString PyString_AsString
95 #define PyBytes_GET_SIZE PyString_GET_SIZE
96 #define PyBytes_FromStringAndSize PyString_FromStringAndSize
97 #endif
98 
99 #endif
+ + + + diff --git a/PythonQtQFileImporter_8h.html b/PythonQtQFileImporter_8h.html new file mode 100644 index 000000000..79925eff1 --- /dev/null +++ b/PythonQtQFileImporter_8h.html @@ -0,0 +1,78 @@ + + + + + + + +PythonQt: PythonQtQFileImporter.h File Reference + + + + + + +
+
+ + + + + + +
+
PythonQt +
+
+
+ + + + + + + +
+
+ +
+
PythonQtQFileImporter.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + +

+Classes

class  PythonQtQFileImporter
 default importer implementation using QFile to load python code More...
 
+

Detailed Description

+
Author
Florian Link
+
+Last changed by
+
Author
florian
+
Date
2009-03
+ +

Definition in file PythonQtQFileImporter.h.

+
+ + + + diff --git a/PythonQtQFileImporter_8h_source.html b/PythonQtQFileImporter_8h_source.html new file mode 100644 index 000000000..f69fc122c --- /dev/null +++ b/PythonQtQFileImporter_8h_source.html @@ -0,0 +1,68 @@ + + + + + + + +PythonQt: PythonQtQFileImporter.h Source File + + + + + + +
+
+ + + + + + +
+
PythonQt +
+
+
+ + + + + + + +
+
+
+
PythonQtQFileImporter.h
+
+
+Go to the documentation of this file.
1 #ifndef _PYTHONQTQFILEIMPORTER_H
2 #define _PYTHONQTQFILEIMPORTER_H
3 
4 /*
5  *
6  * Copyright (C) 2010 MeVis Medical Solutions AG All Rights Reserved.
7  *
8  * This library is free software; you can redistribute it and/or
9  * modify it under the terms of the GNU Lesser General Public
10  * License as published by the Free Software Foundation; either
11  * version 2.1 of the License, or (at your option) any later version.
12  *
13  * This library is distributed in the hope that it will be useful,
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16  * Lesser General Public License for more details.
17  *
18  * Further, this software is distributed without any warranty that it is
19  * free of the rightful claim of any third person regarding infringement
20  * or the like. Any license provided herein, whether implied or
21  * otherwise, applies only to this software file. Patent licenses, if
22  * any, provided herein do not apply to combinations of this program with
23  * other software, or any other product whatsoever.
24  *
25  * You should have received a copy of the GNU Lesser General Public
26  * License along with this library; if not, write to the Free Software
27  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
28  *
29  * Contact information: MeVis Medical Solutions AG, Universitaetsallee 29,
30  * 28359 Bremen, Germany or:
31  *
32  * http://www.mevis.de
33  *
34  */
35 
36 //----------------------------------------------------------------------------------
43 //----------------------------------------------------------------------------------
44 
45 #include "PythonQtPythonInclude.h"
47 
50 public:
53 
54  QByteArray readFileAsBytes (const QString &filename);
55 
56  QByteArray readSourceFile (const QString &filename, bool &ok);
57 
58  bool exists (const QString &filename);
59  bool isEggArchive(const QString& filename);
60 
61  QDateTime lastModifiedDate (const QString &filename);
62 
63 };
64 
65 #endif
+ +
bool exists(const QString &filename)
returns if the file exists
+
QByteArray readFileAsBytes(const QString &filename)
read the given file as byte array, without doing any linefeed translations
+
QDateTime lastModifiedDate(const QString &filename)
get the last modified data of a file
+
bool isEggArchive(const QString &filename)
+
QByteArray readSourceFile(const QString &filename, bool &ok)
+ + +
default importer implementation using QFile to load python code
+ +
+ + + + diff --git a/PythonQtSignalReceiver_8h.html b/PythonQtSignalReceiver_8h.html new file mode 100644 index 000000000..230a8cdca --- /dev/null +++ b/PythonQtSignalReceiver_8h.html @@ -0,0 +1,85 @@ + + + + + + + +PythonQt: PythonQtSignalReceiver.h File Reference + + + + + + +
+
+ + + + + + +
+
PythonQt +
+
+
+ + + + + + + +
+
+ +
+
PythonQtSignalReceiver.h File Reference
+
+
+
#include "PythonQtPythonInclude.h"
+#include "PythonQtSystem.h"
+#include "PythonQtObjectPtr.h"
+
+

Go to the source code of this file.

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

+Classes

class  PythonQtSignalTarget
 stores information about a signal target More...
 
class  PythonQtSignalReceiverBase
 base class for signal receivers More...
 
class  PythonQtSignalReceiver
 receives all signals for one QObject More...
 
+

Detailed Description

+
Author
Florian Link
+
+Last changed by
+
Author
florian
+
Date
2006-05
+ +

Definition in file PythonQtSignalReceiver.h.

+
+ + + + diff --git a/PythonQtSignalReceiver_8h_source.html b/PythonQtSignalReceiver_8h_source.html new file mode 100644 index 000000000..666d7e37b --- /dev/null +++ b/PythonQtSignalReceiver_8h_source.html @@ -0,0 +1,80 @@ + + + + + + + +PythonQt: PythonQtSignalReceiver.h Source File + + + + + + +
+
+ + + + + + +
+
PythonQt +
+
+
+ + + + + + + +
+
+
+
PythonQtSignalReceiver.h
+
+
+Go to the documentation of this file.
1 #ifndef _PYTHONQTSIGNALRECEIVER_H
2 #define _PYTHONQTSIGNALRECEIVER_H
3 
4 /*
5  *
6  * Copyright (C) 2010 MeVis Medical Solutions AG All Rights Reserved.
7  *
8  * This library is free software; you can redistribute it and/or
9  * modify it under the terms of the GNU Lesser General Public
10  * License as published by the Free Software Foundation; either
11  * version 2.1 of the License, or (at your option) any later version.
12  *
13  * This library is distributed in the hope that it will be useful,
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16  * Lesser General Public License for more details.
17  *
18  * Further, this software is distributed without any warranty that it is
19  * free of the rightful claim of any third person regarding infringement
20  * or the like. Any license provided herein, whether implied or
21  * otherwise, applies only to this software file. Patent licenses, if
22  * any, provided herein do not apply to combinations of this program with
23  * other software, or any other product whatsoever.
24  *
25  * You should have received a copy of the GNU Lesser General Public
26  * License along with this library; if not, write to the Free Software
27  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
28  *
29  * Contact information: MeVis Medical Solutions AG, Universitaetsallee 29,
30  * 28359 Bremen, Germany or:
31  *
32  * http://www.mevis.de
33  *
34  */
35 
36 //----------------------------------------------------------------------------------
43 //----------------------------------------------------------------------------------
44 
45 #include "PythonQtPythonInclude.h"
46 
47 #include "PythonQtSystem.h"
48 #include "PythonQtObjectPtr.h"
49 
50 class PythonQtMethodInfo;
51 class PythonQtClassInfo;
52 
54 
57 public:
59  _signalId = -1;
60  _methodInfo = NULL;
61  _slotId = -1;
62  }
63 
64  PythonQtSignalTarget(int signalId,const PythonQtMethodInfo* methodInfo, int slotId, PyObject* callable)
65  {
66  _signalId = signalId;
67  _slotId = slotId;
68  _methodInfo = methodInfo;
69  _callable = callable;
70  };
71 
73  };
74 
76  int signalId() const { return _signalId; }
77 
79  int slotId() const { return _slotId; }
80 
82  const PythonQtMethodInfo* methodInfo() const { return _methodInfo; }
83 
85  void call(void **arguments) const;
86 
88  bool isSame(int signalId, PyObject* callable) const;
89 
91  static PyObject* call(PyObject* callable, const PythonQtMethodInfo* methodInfo, void **arguments, bool skipFirstArgumentOfMethodInfo = false);
92 
93 private:
94  int _signalId;
95  int _slotId;
96  const PythonQtMethodInfo* _methodInfo;
97  PythonQtObjectPtr _callable;
98 };
99 
101 
103 class PythonQtSignalReceiverBase : public QObject {
104  Q_OBJECT
105 public:
106  PythonQtSignalReceiverBase(QObject* obj):QObject(obj) {};
107 };
108 
110 
113 
114 public:
115  PythonQtSignalReceiver(QObject* obj);
117 
119  bool addSignalHandler(const char* signal, PyObject* callable);
120 
122  bool removeSignalHandler(const char* signal, PyObject* callable = NULL);
123 
125  virtual int qt_metacall(QMetaObject::Call c, int id, void **arguments);
126 
127 private:
129  int getSignalIndex(const char* signal);
130 
131  QObject* _obj;
132  PythonQtClassInfo* _objClassInfo;
133  int _slotCount;
134  int _destroyedSignalCount;
135  // linear list may get slow on multiple targets, but I think typically we have many objects and just a few signals
136  QList<PythonQtSignalTarget> _targets;
137 
138  static int _destroyedSignal1Id;
139  static int _destroyedSignal2Id;
140 };
141 
142 
143 #endif
144 
bool addSignalHandler(const char *signal, PyObject *callable)
add a signal handler
+ +
a class that stores all required information about a Qt object (and an optional associated C++ class ...
+ +
const PythonQtMethodInfo * methodInfo() const
get the signals parameter info
+ + +
int signalId() const
get the id of the original signal
+ +
receives all signals for one QObject
+
stores information about a signal target
+
virtual int qt_metacall(QMetaObject::Call c, int id, void **arguments)
we implement this method to simulate a number of slots that match the ids in _targets
+
#define PYTHONQT_EXPORT
+
struct _object PyObject
+ +
a smart pointer that stores a PyObject pointer and that handles reference counting automatically
+
int slotId() const
get the id that was assigned to this simulated slot
+
PythonQtSignalTarget(int signalId, const PythonQtMethodInfo *methodInfo, int slotId, PyObject *callable)
+
stores information about a specific signal/slot/method
+
PythonQtSignalReceiver(QObject *obj)
+ +
bool removeSignalHandler(const char *signal, PyObject *callable=NULL)
remove a signal handler for given callable (or all callables on that signal if callable is NULL)
+
base class for signal receivers
+
+ + + + diff --git a/PythonQtSignal_8h.html b/PythonQtSignal_8h.html new file mode 100644 index 000000000..de9c39725 --- /dev/null +++ b/PythonQtSignal_8h.html @@ -0,0 +1,170 @@ + + + + + + + +PythonQt: PythonQtSignal.h File Reference + + + + + + +
+
+ + + + + + +
+
PythonQt +
+
+
+ + + + + + + +
+
+ +
+
PythonQtSignal.h File Reference
+
+
+
#include "PythonQtPythonInclude.h"
+#include "PythonQtSystem.h"
+#include "structmember.h"
+
+

Go to the source code of this file.

+ + + + + + + +

+Classes

struct  PythonQtDynamicSignalInfo
 
struct  PythonQtSignalFunctionObject
 defines a python object that stores a Qt signal info More...
 
+ + + +

+Macros

#define PythonQtSignalFunction_Check(op)   (Py_TYPE(op) == &PythonQtSignalFunction_Type)
 
+ + + +

+Functions

PyObjectPythonQtSignalFunction_New (PythonQtSlotInfo *, PyObject *, PyObject *)
 
+ + + +

+Variables

PYTHONQT_EXPORT PyTypeObject PythonQtSignalFunction_Type
 
+

Detailed Description

+
Author
Florian Link
+
+Last changed by
+
Author
florian
+
Date
2006-05
+ +

Definition in file PythonQtSignal.h.

+

Macro Definition Documentation

+ +

◆ PythonQtSignalFunction_Check

+ +
+
+ + + + + + + + +
#define PythonQtSignalFunction_Check( op)   (Py_TYPE(op) == &PythonQtSignalFunction_Type)
+
+ +

Definition at line 54 of file PythonQtSignal.h.

+ +
+
+

Function Documentation

+ +

◆ PythonQtSignalFunction_New()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
PyObject* PythonQtSignalFunction_New (PythonQtSlotInfo,
PyObject,
PyObject 
)
+
+ +
+
+

Variable Documentation

+ +

◆ PythonQtSignalFunction_Type

+ +
+
+ + + + +
PYTHONQT_EXPORT PyTypeObject PythonQtSignalFunction_Type
+
+ +
+
+
+ + + + diff --git a/PythonQtSignal_8h_source.html b/PythonQtSignal_8h_source.html new file mode 100644 index 000000000..11263534f --- /dev/null +++ b/PythonQtSignal_8h_source.html @@ -0,0 +1,72 @@ + + + + + + + +PythonQt: PythonQtSignal.h Source File + + + + + + +
+
+ + + + + + +
+
PythonQt +
+
+
+ + + + + + + +
+
+
+
PythonQtSignal.h
+
+
+Go to the documentation of this file.
1 #ifndef _PythonQtSignal_H
2 #define _PythonQtSignal_H
3 
4 /*
5  *
6  * Copyright (C) 2010 MeVis Medical Solutions AG All Rights Reserved.
7  *
8  * This library is free software; you can redistribute it and/or
9  * modify it under the terms of the GNU Lesser General Public
10  * License as published by the Free Software Foundation; either
11  * version 2.1 of the License, or (at your option) any later version.
12  *
13  * This library is distributed in the hope that it will be useful,
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16  * Lesser General Public License for more details.
17  *
18  * Further, this software is distributed without any warranty that it is
19  * free of the rightful claim of any third person regarding infringement
20  * or the like. Any license provided herein, whether implied or
21  * otherwise, applies only to this software file. Patent licenses, if
22  * any, provided herein do not apply to combinations of this program with
23  * other software, or any other product whatsoever.
24  *
25  * You should have received a copy of the GNU Lesser General Public
26  * License along with this library; if not, write to the Free Software
27  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
28  *
29  * Contact information: MeVis Medical Solutions AG, Universitaetsallee 29,
30  * 28359 Bremen, Germany or:
31  *
32  * http://www.mevis.de
33  *
34  */
35 
36 //----------------------------------------------------------------------------------
43 //----------------------------------------------------------------------------------
44 
45 #include "PythonQtPythonInclude.h"
46 
47 #include "PythonQtSystem.h"
48 #include "structmember.h"
49 
50 class PythonQtSlotInfo;
51 
53 
54 #define PythonQtSignalFunction_Check(op) (Py_TYPE(op) == &PythonQtSignalFunction_Type)
55 
57  PyObject *);
58 
60 {
61  QByteArray name;
62  QList<QByteArray> signatures;
63 };
64 
66 typedef struct {
67  PyObject_HEAD
68  PythonQtSlotInfo *m_ml; /* Description of the C function to call */
69  PyObject *m_self; /* Passed as 'self' arg to the C func, can be NULL */
70  PyObject *m_module; /* The __module__ attribute, can be anything */
73 
74 
75 #endif
+
PythonQtDynamicSignalInfo * _dynamicInfo
+
PYTHONQT_EXPORT PyTypeObject PythonQtSignalFunction_Type
+ + +
defines a python object that stores a Qt signal info
+ +
PyObject_HEAD PythonQtSlotInfo * m_ml
+
#define PYTHONQT_EXPORT
+
struct _object PyObject
+
QList< QByteArray > signatures
+ +
PyObject * PythonQtSignalFunction_New(PythonQtSlotInfo *, PyObject *, PyObject *)
+ +
stores information about a slot, including a next pointer to overloaded slots
+
+ + + + diff --git a/PythonQtSlotDecorator_8h.html b/PythonQtSlotDecorator_8h.html new file mode 100644 index 000000000..31210e8f3 --- /dev/null +++ b/PythonQtSlotDecorator_8h.html @@ -0,0 +1,120 @@ + + + + + + + +PythonQt: PythonQtSlotDecorator.h File Reference + + + + + + +
+
+ + + + + + +
+
PythonQt +
+
+
+ + + + + + + +
+
+ +
+
PythonQtSlotDecorator.h File Reference
+
+
+
#include "PythonQtPythonInclude.h"
+#include "PythonQtSystem.h"
+#include <QByteArray>
+#include <QList>
+#include <structmember.h>
+
+

Go to the source code of this file.

+ + + + +

+Classes

struct  PythonQtSlotDecorator
 
+ + + +

+Macros

#define PythonQtSlotDecorator_Check(op)   (Py_TYPE(op) == &PythonQtSlotDecorator_Type)
 
+ + + +

+Variables

PYTHONQT_EXPORT PyTypeObject PythonQtSlotDecorator_Type
 
+

Macro Definition Documentation

+ +

◆ PythonQtSlotDecorator_Check

+ +
+
+ + + + + + + + +
#define PythonQtSlotDecorator_Check( op)   (Py_TYPE(op) == &PythonQtSlotDecorator_Type)
+
+ +

Definition at line 44 of file PythonQtSlotDecorator.h.

+ +
+
+

Variable Documentation

+ +

◆ PythonQtSlotDecorator_Type

+ +
+
+ + + + +
PYTHONQT_EXPORT PyTypeObject PythonQtSlotDecorator_Type
+
+ +
+
+
+ + + + diff --git a/PythonQtSlotDecorator_8h_source.html b/PythonQtSlotDecorator_8h_source.html new file mode 100644 index 000000000..05f798e72 --- /dev/null +++ b/PythonQtSlotDecorator_8h_source.html @@ -0,0 +1,64 @@ + + + + + + + +PythonQt: PythonQtSlotDecorator.h Source File + + + + + + +
+
+ + + + + + +
+
PythonQt +
+
+
+ + + + + + + +
+
+
+
PythonQtSlotDecorator.h
+
+
+Go to the documentation of this file.
1 #pragma once
2 
3 /*
4 *
5 * Copyright (C) 2010 MeVis Medical Solutions AG All Rights Reserved.
6 *
7 * This library is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU Lesser General Public
9 * License as published by the Free Software Foundation; either
10 * version 2.1 of the License, or (at your option) any later version.
11 *
12 * This library is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 * Lesser General Public License for more details.
16 *
17 * Further, this software is distributed without any warranty that it is
18 * free of the rightful claim of any third person regarding infringement
19 * or the like. Any license provided herein, whether implied or
20 * otherwise, applies only to this software file. Patent licenses, if
21 * any, provided herein do not apply to combinations of this program with
22 * other software, or any other product whatsoever.
23 *
24 * You should have received a copy of the GNU Lesser General Public
25 * License along with this library; if not, write to the Free Software
26 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
27 *
28 * Contact information: MeVis Medical Solutions AG, Universitaetsallee 29,
29 * 28359 Bremen, Germany or:
30 *
31 * http://www.mevis.de
32 *
33 */
34 
35 #include "PythonQtPythonInclude.h"
36 #include "PythonQtSystem.h"
37 #include <QByteArray>
38 #include <QList>
39 
40 #include <structmember.h>
41 
43 
44 #define PythonQtSlotDecorator_Check(op) (Py_TYPE(op) == &PythonQtSlotDecorator_Type)
45 
46 typedef struct {
47  PyObject_HEAD
48  QByteArray* args;
49  QByteArray* returnType;
+ + +
PYTHONQT_EXPORT PyTypeObject PythonQtSlotDecorator_Type
+
#define PYTHONQT_EXPORT
+ +
PyObject_HEAD QByteArray * args
+
+ + + + diff --git a/PythonQtSlot_8h.html b/PythonQtSlot_8h.html new file mode 100644 index 000000000..fd14b521a --- /dev/null +++ b/PythonQtSlot_8h.html @@ -0,0 +1,468 @@ + + + + + + + +PythonQt: PythonQtSlot.h File Reference + + + + + + +
+
+ + + + + + +
+
PythonQt +
+
+
+ + + + + + + +
+
+ +
+
PythonQtSlot.h File Reference
+
+
+
#include "PythonQtPythonInclude.h"
+#include "PythonQtSystem.h"
+#include "structmember.h"
+
+

Go to the source code of this file.

+ + + + + +

+Classes

struct  PythonQtSlotFunctionObject
 defines a python object that stores a Qt slot info More...
 
+ + + + + +

+Macros

#define PythonQtSlotFunction_Check(op)   (Py_TYPE(op) == &PythonQtSlotFunction_Type)
 
#define PythonQtSlotFunction_GET_SELF(func)   (((PythonQtSlotFunctionObject *)func) -> m_self)
 
+ + + +

+Enumerations

enum  PythonQtPassThisOwnershipType { IgnoreOwnership, +PassOwnershipToCPP, +PassOwnershipToPython + }
 
+ + + + + + + + + + + + + + + + + + + +

+Functions

PythonQtSlotInfoPythonQtSlotFunction_GetSlotInfo (PyObject *)
 
PyObjectPythonQtSlotFunction_GetSelf (PyObject *)
 
PyObjectPythonQtSlotFunction_Call (PyObject *, PyObject *, PyObject *)
 
PyObjectPythonQtSlotFunction_CallImpl (PythonQtClassInfo *classInfo, QObject *objectToCall, PythonQtSlotInfo *info, PyObject *args, PyObject *kw, void *firstArg=NULL, void **directReturnValuePointer=NULL, PythonQtPassThisOwnershipType *passThisOwnershipToCPP=NULL)
 
PyObjectPythonQtSlotFunction_New (PythonQtSlotInfo *, PyObject *, PyObject *)
 
PyObjectPythonQtMemberFunction_Call (PythonQtSlotInfo *info, PyObject *m_self, PyObject *args, PyObject *kw)
 
PyObjectPythonQtMemberFunction_parameterTypes (PythonQtSlotInfo *theInfo)
 
PyObjectPythonQtMemberFunction_parameterNames (PythonQtSlotInfo *theInfo)
 
PyObjectPythonQtMemberFunction_typeName (PythonQtSlotInfo *theInfo)
 
+ + + +

+Variables

PYTHONQT_EXPORT PyTypeObject PythonQtSlotFunction_Type
 
+

Detailed Description

+
Author
Florian Link
+
+Last changed by
+
Author
florian
+
Date
2006-05
+ +

Definition in file PythonQtSlot.h.

+

Macro Definition Documentation

+ +

◆ PythonQtSlotFunction_Check

+ +
+
+ + + + + + + + +
#define PythonQtSlotFunction_Check( op)   (Py_TYPE(op) == &PythonQtSlotFunction_Type)
+
+ +

Definition at line 61 of file PythonQtSlot.h.

+ +
+
+ +

◆ PythonQtSlotFunction_GET_SELF

+ +
+
+ + + + + + + + +
#define PythonQtSlotFunction_GET_SELF( func)   (((PythonQtSlotFunctionObject *)func) -> m_self)
+
+ +

Definition at line 68 of file PythonQtSlot.h.

+ +
+
+

Enumeration Type Documentation

+ +

◆ PythonQtPassThisOwnershipType

+ +
+
+ + + + +
Enumerator
IgnoreOwnership 
PassOwnershipToCPP 
PassOwnershipToPython 
+ +

Definition at line 52 of file PythonQtSlot.h.

+ +
+
+

Function Documentation

+ +

◆ PythonQtMemberFunction_Call()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PyObject* PythonQtMemberFunction_Call (PythonQtSlotInfoinfo,
PyObjectm_self,
PyObjectargs,
PyObjectkw 
)
+
+ +
+
+ +

◆ PythonQtMemberFunction_parameterNames()

+ +
+
+ + + + + + + + +
PyObject* PythonQtMemberFunction_parameterNames (PythonQtSlotInfotheInfo)
+
+ +
+
+ +

◆ PythonQtMemberFunction_parameterTypes()

+ +
+
+ + + + + + + + +
PyObject* PythonQtMemberFunction_parameterTypes (PythonQtSlotInfotheInfo)
+
+ +
+
+ +

◆ PythonQtMemberFunction_typeName()

+ +
+
+ + + + + + + + +
PyObject* PythonQtMemberFunction_typeName (PythonQtSlotInfotheInfo)
+
+ +
+
+ +

◆ PythonQtSlotFunction_Call()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
PyObject* PythonQtSlotFunction_Call (PyObject,
PyObject,
PyObject 
)
+
+ +
+
+ +

◆ PythonQtSlotFunction_CallImpl()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PyObject* PythonQtSlotFunction_CallImpl (PythonQtClassInfoclassInfo,
QObject * objectToCall,
PythonQtSlotInfoinfo,
PyObjectargs,
PyObjectkw,
void * firstArg = NULL,
void ** directReturnValuePointer = NULL,
PythonQtPassThisOwnershipTypepassThisOwnershipToCPP = NULL 
)
+
+ +
+
+ +

◆ PythonQtSlotFunction_GetSelf()

+ +
+
+ + + + + + + + +
PyObject* PythonQtSlotFunction_GetSelf (PyObject)
+
+ +
+
+ +

◆ PythonQtSlotFunction_GetSlotInfo()

+ +
+
+ + + + + + + + +
PythonQtSlotInfo* PythonQtSlotFunction_GetSlotInfo (PyObject)
+
+ +
+
+ +

◆ PythonQtSlotFunction_New()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
PyObject* PythonQtSlotFunction_New (PythonQtSlotInfo,
PyObject,
PyObject 
)
+
+ +
+
+

Variable Documentation

+ +

◆ PythonQtSlotFunction_Type

+ +
+
+ + + + +
PYTHONQT_EXPORT PyTypeObject PythonQtSlotFunction_Type
+
+ +
+
+
+ + + + diff --git a/PythonQtSlot_8h_source.html b/PythonQtSlot_8h_source.html new file mode 100644 index 000000000..3ca450bb3 --- /dev/null +++ b/PythonQtSlot_8h_source.html @@ -0,0 +1,81 @@ + + + + + + + +PythonQt: PythonQtSlot.h Source File + + + + + + +
+
+ + + + + + +
+
PythonQt +
+
+
+ + + + + + + +
+
+
+
PythonQtSlot.h
+
+
+Go to the documentation of this file.
1 #ifndef _PYTHONQTSLOT_H
2 #define _PYTHONQTSLOT_H
3 
4 /*
5  *
6  * Copyright (C) 2010 MeVis Medical Solutions AG All Rights Reserved.
7  *
8  * This library is free software; you can redistribute it and/or
9  * modify it under the terms of the GNU Lesser General Public
10  * License as published by the Free Software Foundation; either
11  * version 2.1 of the License, or (at your option) any later version.
12  *
13  * This library is distributed in the hope that it will be useful,
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16  * Lesser General Public License for more details.
17  *
18  * Further, this software is distributed without any warranty that it is
19  * free of the rightful claim of any third person regarding infringement
20  * or the like. Any license provided herein, whether implied or
21  * otherwise, applies only to this software file. Patent licenses, if
22  * any, provided herein do not apply to combinations of this program with
23  * other software, or any other product whatsoever.
24  *
25  * You should have received a copy of the GNU Lesser General Public
26  * License along with this library; if not, write to the Free Software
27  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
28  *
29  * Contact information: MeVis Medical Solutions AG, Universitaetsallee 29,
30  * 28359 Bremen, Germany or:
31  *
32  * http://www.mevis.de
33  *
34  */
35 
36 //----------------------------------------------------------------------------------
43 //----------------------------------------------------------------------------------
44 
45 #include "PythonQtPythonInclude.h"
46 
47 #include "PythonQtSystem.h"
48 #include "structmember.h"
49 
50 class PythonQtSlotInfo;
51 
53 {
57 };
58 
59 extern PYTHONQT_EXPORT PyTypeObject PythonQtSlotFunction_Type;
60 
61 #define PythonQtSlotFunction_Check(op) (Py_TYPE(op) == &PythonQtSlotFunction_Type)
62 
65 
66 /* Macros for direct access to these values. Type checks are *not*
67  done, so use with care. */
68 #define PythonQtSlotFunction_GET_SELF(func) \
69  (((PythonQtSlotFunctionObject *)func) -> m_self)
70 
72 
73 PyObject *PythonQtSlotFunction_CallImpl(PythonQtClassInfo* classInfo, QObject* objectToCall, PythonQtSlotInfo* info, PyObject *args, PyObject *kw, void* firstArg=NULL, void** directReturnValuePointer=NULL, PythonQtPassThisOwnershipType* passThisOwnershipToCPP = NULL);
74 
76  PyObject *);
77 
82 
84 typedef struct {
85  PyObject_HEAD
86  PythonQtSlotInfo *m_ml; /* Description of the C function to call */
87  PyObject *m_self; /* Passed as 'self' arg to the C func, can be NULL */
88  PyObject *m_module; /* The __module__ attribute, can be anything */
90 
91 
92 #endif
PyObject * PythonQtMemberFunction_parameterTypes(PythonQtSlotInfo *theInfo)
+
defines a python object that stores a Qt slot info
Definition: PythonQtSlot.h:84
+
PythonQtPassThisOwnershipType
Definition: PythonQtSlot.h:52
+
PyObject * PythonQtSlotFunction_GetSelf(PyObject *)
+
a class that stores all required information about a Qt object (and an optional associated C++ class ...
+
PyObject * PythonQtSlotFunction_Call(PyObject *, PyObject *, PyObject *)
+ +
PyObject * PythonQtMemberFunction_parameterNames(PythonQtSlotInfo *theInfo)
+
PythonQtSlotInfo * PythonQtSlotFunction_GetSlotInfo(PyObject *)
+ + + +
PyObject * PythonQtSlotFunction_New(PythonQtSlotInfo *, PyObject *, PyObject *)
+
#define PYTHONQT_EXPORT
+
struct _object PyObject
+
PyObject * PythonQtMemberFunction_typeName(PythonQtSlotInfo *theInfo)
+
PYTHONQT_EXPORT PyTypeObject PythonQtSlotFunction_Type
+
PyObject * PythonQtSlotFunction_CallImpl(PythonQtClassInfo *classInfo, QObject *objectToCall, PythonQtSlotInfo *info, PyObject *args, PyObject *kw, void *firstArg=NULL, void **directReturnValuePointer=NULL, PythonQtPassThisOwnershipType *passThisOwnershipToCPP=NULL)
+ +
PyObject * PythonQtMemberFunction_Call(PythonQtSlotInfo *info, PyObject *m_self, PyObject *args, PyObject *kw)
+ + +
stores information about a slot, including a next pointer to overloaded slots
+
PyObject_HEAD PythonQtSlotInfo * m_ml
Definition: PythonQtSlot.h:86
+
+ + + + diff --git a/PythonQtStdDecorators_8h.html b/PythonQtStdDecorators_8h.html new file mode 100644 index 000000000..d399b57bf --- /dev/null +++ b/PythonQtStdDecorators_8h.html @@ -0,0 +1,96 @@ + + + + + + + +PythonQt: PythonQtStdDecorators.h File Reference + + + + + + +
+
+ + + + + + +
+
PythonQt +
+
+
+ + + + + + + +
+
+ +
+
PythonQtStdDecorators.h File Reference
+
+
+
#include "PythonQtPythonInclude.h"
+#include "PythonQt.h"
+#include <QObject>
+#include <QVariantList>
+#include <QTextDocument>
+#include <QColor>
+#include <QDateTime>
+#include <QDate>
+#include <QTime>
+#include <QTimer>
+#include <QImage>
+#include <QMetaMethod>
+#include <QMetaEnum>
+#include <QMetaProperty>
+
+

Go to the source code of this file.

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

+Classes

class  PythonQtStdDecorators
 
class  PythonQtSingleShotTimer
 
class  PythonQtWrapper_QMetaObject
 
class  PythonQtDebugAPI
 Some helper methods that allow testing of the ownership. More...
 
+

Detailed Description

+
Author
Florian Link
+
+Last changed by
+
Author
florian
+
Date
2007-04
+ +

Definition in file PythonQtStdDecorators.h.

+
+ + + + diff --git a/PythonQtStdDecorators_8h_source.html b/PythonQtStdDecorators_8h_source.html new file mode 100644 index 000000000..8e5fd4a73 --- /dev/null +++ b/PythonQtStdDecorators_8h_source.html @@ -0,0 +1,119 @@ + + + + + + + +PythonQt: PythonQtStdDecorators.h Source File + + + + + + +
+
+ + + + + + +
+
PythonQt +
+
+
+ + + + + + + +
+
+
+
PythonQtStdDecorators.h
+
+
+Go to the documentation of this file.
1 #ifndef _PYTHONQTSTDDECORATORS_H
2 #define _PYTHONQTSTDDECORATORS_H
3 
4 /*
5  *
6  * Copyright (C) 2010 MeVis Medical Solutions AG All Rights Reserved.
7  *
8  * This library is free software; you can redistribute it and/or
9  * modify it under the terms of the GNU Lesser General Public
10  * License as published by the Free Software Foundation; either
11  * version 2.1 of the License, or (at your option) any later version.
12  *
13  * This library is distributed in the hope that it will be useful,
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16  * Lesser General Public License for more details.
17  *
18  * Further, this software is distributed without any warranty that it is
19  * free of the rightful claim of any third person regarding infringement
20  * or the like. Any license provided herein, whether implied or
21  * otherwise, applies only to this software file. Patent licenses, if
22  * any, provided herein do not apply to combinations of this program with
23  * other software, or any other product whatsoever.
24  *
25  * You should have received a copy of the GNU Lesser General Public
26  * License along with this library; if not, write to the Free Software
27  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
28  *
29  * Contact information: MeVis Medical Solutions AG, Universitaetsallee 29,
30  * 28359 Bremen, Germany or:
31  *
32  * http://www.mevis.de
33  *
34  */
35 
36 //----------------------------------------------------------------------------------
43 //----------------------------------------------------------------------------------
44 
45 #include "PythonQtPythonInclude.h"
46 
47 #include "PythonQt.h"
48 
49 #include <QObject>
50 #include <QVariantList>
51 #include <QTextDocument>
52 #include <QColor>
53 #include <QDateTime>
54 #include <QDate>
55 #include <QTime>
56 #include <QTimer>
57 #include <QImage>
58 #include <QMetaMethod>
59 #include <QMetaEnum>
60 #include <QMetaProperty>
61 
62 class PYTHONQT_EXPORT PythonQtStdDecorators : public QObject
63 {
64  Q_OBJECT
65 
66 public Q_SLOTS:
67  bool connect(QObject* sender, const QByteArray& signal, PyObject* callable);
68  bool connect(QObject* sender, const QByteArray& signal, QObject* receiver, const QByteArray& slot, Qt::ConnectionType type = Qt::AutoConnection);
69  bool connect(QObject* receiver, QObject* sender, const QByteArray& signal, const QByteArray& slot, Qt::ConnectionType type = Qt::AutoConnection) { return connect(sender, signal, receiver, slot, type); }
70  bool static_QObject_connect(QObject* sender, const QByteArray& signal, PyObject* callable) { return connect(sender, signal, callable); }
71  bool static_QObject_connect(QObject* sender, const QByteArray& signal, QObject* receiver, const QByteArray& slot, Qt::ConnectionType type = Qt::AutoConnection) { return connect(sender, signal, receiver, slot, type); }
72  bool disconnect(QObject* sender, const QByteArray& signal, PyObject* callable = NULL);
73  bool disconnect(QObject* sender, const QByteArray& signal, QObject* receiver, const QByteArray& slot);
74  bool static_QObject_disconnect(QObject* sender, const QByteArray& signal, PyObject* callable = NULL) { return disconnect(sender, signal, callable); }
75  bool static_QObject_disconnect(QObject* sender, const QByteArray& signal, QObject* receiver, const QByteArray& slot) { return disconnect(sender, signal, receiver, slot); }
76 
77  const QMetaObject* metaObject( QObject* obj );
78 
79  QObject* parent(QObject* o);
80  void setParent(QObject* o, PythonQtNewOwnerOfThis<QObject*> parent);
81 
82  const QObjectList* children(QObject* o);
83  QObject* findChild(QObject* parent, PyObject* type, const QString& name = QString());
84  QList<QObject*> findChildren(QObject* parent, PyObject* type, const QString& name= QString());
85  QList<QObject*> findChildren(QObject* parent, PyObject* type, const QRegExp& regExp);
86 
87  bool setProperty(QObject* o, const char* name, const QVariant& value);
88  QVariant property(QObject* o, const char* name);
89 
90  double static_Qt_qAbs(double a) { return qAbs(a); }
91  double static_Qt_qBound(double a,double b,double c) { return qBound(a,b,c); }
92  void static_Qt_qDebug(const QByteArray& msg) { qDebug("%s", msg.constData()); }
93  // TODO: multi arg qDebug...
94  void static_Qt_qWarning(const QByteArray& msg) { qWarning("%s", msg.constData()); }
95  // TODO: multi arg qWarning...
96  void static_Qt_qCritical(const QByteArray& msg) { qCritical("%s", msg.constData()); }
97  // TODO: multi arg qCritical...
98  void static_Qt_qFatal(const QByteArray& msg) { qFatal("%s", msg.constData()); }
99  // TODO: multi arg qFatal...
100  bool static_Qt_qFuzzyCompare(double a, double b) { return qFuzzyCompare(a, b); }
101  double static_Qt_qMax(double a, double b) { return qMax(a, b); }
102  double static_Qt_qMin(double a, double b) { return qMin(a, b); }
103  int static_Qt_qRound(double a) { return qRound(a); }
104  qint64 static_Qt_qRound64(double a) { return qRound64(a); }
105  const char* static_Qt_qVersion() { return qVersion(); }
106  int static_Qt_qrand() { return qrand(); }
107  void static_Qt_qsrand(uint a) { qsrand(a); }
108 
109  QString tr(QObject* obj, const QString& text, const QString& ambig = QString(), int n = -1);
110 
111  QString static_Qt_SIGNAL(const QString& s) { return QString("2") + s; }
112  QString static_Qt_SLOT(const QString& s) { return QString("1") + s; }
113 
114  void static_QTimer_singleShot(int msec, PyObject* callable);
115 
116 private:
117  QObject* findChild(QObject* parent, const char* typeName, const QMetaObject* meta, const QString& name);
118  int findChildren(QObject* parent, const char* typeName, const QMetaObject* meta, const QString& name, QList<QObject*>& list);
119  int findChildren(QObject* parent, const char* typeName, const QMetaObject* meta, const QRegExp& regExp, QList<QObject*>& list);
120 };
121 
122 class PythonQtSingleShotTimer : public QTimer
123 {
124  Q_OBJECT
125 public:
126  PythonQtSingleShotTimer(int msec, const PythonQtObjectPtr& callable);
127 
128 public Q_SLOTS :
129  void slotTimeout();
130 
131 private:
132  PythonQtObjectPtr _callable;
133 };
134 
135 class PythonQtWrapper_QMetaObject : public QObject
136 {
137  Q_OBJECT
138 
139 public Q_SLOTS:
140  // Python 3: PythonQt shadows className, so we need an extra getClassName method...
141  const char *getClassName(QMetaObject* obj) const { return obj->className(); }
142  const QMetaObject *superClass(QMetaObject* obj) const { return obj->superClass(); }
143 
144  int methodOffset(QMetaObject* obj) const { return obj->methodOffset(); }
145  int enumeratorOffset(QMetaObject* obj) const { return obj->enumeratorOffset(); }
146  int propertyOffset(QMetaObject* obj) const { return obj->propertyOffset(); }
147  int classInfoOffset(QMetaObject* obj) const { return obj->classInfoOffset(); }
148 
149  int constructorCount(QMetaObject* obj) const { return obj->constructorCount(); }
150  int methodCount(QMetaObject* obj) const { return obj->methodCount(); }
151  int enumeratorCount(QMetaObject* obj) const { return obj->enumeratorCount(); }
152  int propertyCount(QMetaObject* obj) const { return obj->propertyCount(); }
153  int classInfoCount(QMetaObject* obj) const { return obj->classInfoCount(); }
154 
155  int indexOfConstructor(QMetaObject* obj, const char *constructor) const { return obj->indexOfConstructor(constructor); }
156  int indexOfMethod(QMetaObject* obj, const char *method) const { return obj->indexOfMethod(method); }
157  int indexOfSignal(QMetaObject* obj, const char *signal) const { return obj->indexOfSignal(signal); }
158  int indexOfSlot(QMetaObject* obj, const char *slot) const { return obj->indexOfSlot(slot); }
159  int indexOfEnumerator(QMetaObject* obj, const char *name) const { return obj->indexOfEnumerator(name); }
160  int indexOfProperty(QMetaObject* obj, const char *name) const { return obj->indexOfProperty(name); }
161  int indexOfClassInfo(QMetaObject* obj, const char *name) const { return obj->indexOfClassInfo(name); }
162 
163  QMetaMethod constructor(QMetaObject* obj, int index) const { return obj->constructor(index); }
164  QMetaMethod method(QMetaObject* obj, int index) const { return obj->method(index); }
165  QMetaEnum enumerator(QMetaObject* obj, int index) const { return obj->enumerator(index); }
166  QMetaProperty property(QMetaObject* obj, int index) const { return obj->property(index); }
167  QMetaClassInfo classInfo(QMetaObject* obj, int index) const { return obj->classInfo(index); }
168  QMetaProperty userProperty(QMetaObject* obj) const { return obj->userProperty(); }
169 
170  bool static_QMetaObject_checkConnectArgs(const char *signal, const char *method) { return QMetaObject::checkConnectArgs(signal, method); }
171  QByteArray static_QMetaObject_normalizedSignature(const char *method) { return QMetaObject::normalizedSignature(method); }
172  QByteArray static_QMetaObject_normalizedType(const char *type) { return QMetaObject::normalizedType(type); }
173 
174 };
175 
177 class PYTHONQT_EXPORT PythonQtDebugAPI : public QObject
178 {
179  Q_OBJECT
180  public:
181  PythonQtDebugAPI(QObject* parent):QObject(parent) {};
182 
183  public slots:
185  bool isOwnedByPython(PyObject* object);
187  bool isDerivedShellInstance(PyObject* object);
189  bool hasExtraShellRefCount(PyObject* object);
190 
192  bool passOwnershipToCPP(PyObject* object);
194  bool passOwnershipToPython(PyObject* object);
195 
197  bool isPythonQtInstanceWrapper(PyObject* object);
199  bool isPythonQtClassWrapper(PyObject* object);
200 };
201 
202 #endif
QMetaEnum enumerator(QMetaObject *obj, int index) const
+
int indexOfSlot(QMetaObject *obj, const char *slot) const
+
const QMetaObject * superClass(QMetaObject *obj) const
+
int propertyCount(QMetaObject *obj) const
+
int indexOfClassInfo(QMetaObject *obj, const char *name) const
+
QMetaMethod method(QMetaObject *obj, int index) const
+
double static_Qt_qMin(double a, double b)
+
const char * getClassName(QMetaObject *obj) const
+
void static_Qt_qCritical(const QByteArray &msg)
+
int indexOfConstructor(QMetaObject *obj, const char *constructor) const
+
int methodCount(QMetaObject *obj) const
+
QByteArray typeName(const QMetaMethod &method)
Definition: PythonQtUtils.h:72
+
bool static_QObject_connect(QObject *sender, const QByteArray &signal, QObject *receiver, const QByteArray &slot, Qt::ConnectionType type=Qt::AutoConnection)
+
QString static_Qt_SLOT(const QString &s)
+
double static_Qt_qBound(double a, double b, double c)
+
void static_Qt_qFatal(const QByteArray &msg)
+
bool static_QMetaObject_checkConnectArgs(const char *signal, const char *method)
+
int constructorCount(QMetaObject *obj) const
+
Some helper methods that allow testing of the ownership.
+
bool static_Qt_qFuzzyCompare(double a, double b)
+
QMetaProperty property(QMetaObject *obj, int index) const
+
QMetaProperty userProperty(QMetaObject *obj) const
+
int enumeratorCount(QMetaObject *obj) const
+
int indexOfMethod(QMetaObject *obj, const char *method) const
+
int methodOffset(QMetaObject *obj) const
+
double static_Qt_qMax(double a, double b)
+
int classInfoCount(QMetaObject *obj) const
+
bool connect(QObject *receiver, QObject *sender, const QByteArray &signal, const QByteArray &slot, Qt::ConnectionType type=Qt::AutoConnection)
+ +
QString static_Qt_SIGNAL(const QString &s)
+
bool static_QObject_disconnect(QObject *sender, const QByteArray &signal, QObject *receiver, const QByteArray &slot)
+
QByteArray static_QMetaObject_normalizedType(const char *type)
+
double static_Qt_qAbs(double a)
+
#define PYTHONQT_EXPORT
+
int indexOfEnumerator(QMetaObject *obj, const char *name) const
+ +
int classInfoOffset(QMetaObject *obj) const
+ +
void static_Qt_qDebug(const QByteArray &msg)
+
struct _object PyObject
+
void static_Qt_qWarning(const QByteArray &msg)
+
QMetaClassInfo classInfo(QMetaObject *obj, int index) const
+ + + +
a smart pointer that stores a PyObject pointer and that handles reference counting automatically
+
bool static_QObject_connect(QObject *sender, const QByteArray &signal, PyObject *callable)
+
int propertyOffset(QMetaObject *obj) const
+
PythonQtSingleShotTimer(int msec, const PythonQtObjectPtr &callable)
+ +
bool static_QObject_disconnect(QObject *sender, const QByteArray &signal, PyObject *callable=NULL)
+ +
PythonQtDebugAPI(QObject *parent)
+ +
int enumeratorOffset(QMetaObject *obj) const
+
QByteArray static_QMetaObject_normalizedSignature(const char *method)
+
int indexOfSignal(QMetaObject *obj, const char *signal) const
+ +
qint64 static_Qt_qRound64(double a)
+ +
int indexOfProperty(QMetaObject *obj, const char *name) const
+
QMetaMethod constructor(QMetaObject *obj, int index) const
+
+ + + + diff --git a/PythonQtStdIn_8h.html b/PythonQtStdIn_8h.html new file mode 100644 index 000000000..ff5c48737 --- /dev/null +++ b/PythonQtStdIn_8h.html @@ -0,0 +1,129 @@ + + + + + + + +PythonQt: PythonQtStdIn.h File Reference + + + + + + +
+
+ + + + + + +
+
PythonQt +
+
+
+ + + + + + + +
+
+ +
+
PythonQtStdIn.h File Reference
+
+
+
#include "PythonQtPythonInclude.h"
+#include "structmember.h"
+#include <QString>
+
+

Go to the source code of this file.

+ + + + + +

+Classes

struct  PythonQtStdInRedirect
 declares the stdin redirection class More...
 
+ + + + +

+Typedefs

typedef QString PythonQtInputChangedCB(void *callData)
 declares the callback that is called from the write() function More...
 
+ + + + +

+Variables

PyTypeObject PythonQtStdInRedirectType
 declares the type of the stdout redirection class More...
 
+

Detailed Description

+
Author
Jean-Christophe Fillion-Robin
+
+Last changed by
+
Author
jcfr
+
Date
2011
+ +

Definition in file PythonQtStdIn.h.

+

Typedef Documentation

+ +

◆ PythonQtInputChangedCB

+ +
+
+ + + + +
typedef QString PythonQtInputChangedCB(void *callData)
+
+ +

declares the callback that is called from the write() function

+ +

Definition at line 54 of file PythonQtStdIn.h.

+ +
+
+

Variable Documentation

+ +

◆ PythonQtStdInRedirectType

+ +
+
+ + + + +
PyTypeObject PythonQtStdInRedirectType
+
+ +

declares the type of the stdout redirection class

+ +
+
+
+ + + + diff --git a/PythonQtStdIn_8h_source.html b/PythonQtStdIn_8h_source.html new file mode 100644 index 000000000..8d05b2f80 --- /dev/null +++ b/PythonQtStdIn_8h_source.html @@ -0,0 +1,63 @@ + + + + + + + +PythonQt: PythonQtStdIn.h Source File + + + + + + +
+
+ + + + + + +
+
PythonQt +
+
+
+ + + + + + + +
+
+
+
PythonQtStdIn.h
+
+
+Go to the documentation of this file.
1 #ifndef _PYTHONQTSTDIN_H
2 #define _PYTHONQTSTDIN_H
3 
4 /*
5  *
6  * Copyright (C) 2011 MeVis Medical Solutions AG All Rights Reserved.
7  *
8  * This library is free software; you can redistribute it and/or
9  * modify it under the terms of the GNU Lesser General Public
10  * License as published by the Free Software Foundation; either
11  * version 2.1 of the License, or (at your option) any later version.
12  *
13  * This library is distributed in the hope that it will be useful,
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16  * Lesser General Public License for more details.
17  *
18  * Further, this software is distributed without any warranty that it is
19  * free of the rightful claim of any third person regarding infringement
20  * or the like. Any license provided herein, whether implied or
21  * otherwise, applies only to this software file. Patent licenses, if
22  * any, provided herein do not apply to combinations of this program with
23  * other software, or any other product whatsoever.
24  *
25  * You should have received a copy of the GNU Lesser General Public
26  * License along with this library; if not, write to the Free Software
27  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
28  *
29  * Contact information: MeVis Medical Solutions AG, Universitaetsallee 29,
30  * 28359 Bremen, Germany or:
31  *
32  * http://www.mevis.de
33  *
34  */
35 
36 //----------------------------------------------------------------------------------
43 //----------------------------------------------------------------------------------
44 
45 
46 #include "PythonQtPythonInclude.h"
47 #include "structmember.h"
48 #include <QString>
49 
51 extern PyTypeObject PythonQtStdInRedirectType;
52 
54 typedef QString PythonQtInputChangedCB(void* callData);
55 
57 typedef struct {
58  PyObject_HEAD
60  void * _callData;
62 
63 #endif
QString PythonQtInputChangedCB(void *callData)
declares the callback that is called from the write() function
Definition: PythonQtStdIn.h:54
+
PyObject_HEAD PythonQtInputChangedCB * _cb
Definition: PythonQtStdIn.h:59
+
declares the stdin redirection class
Definition: PythonQtStdIn.h:57
+
PyTypeObject PythonQtStdInRedirectType
declares the type of the stdout redirection class
+ + +
+ + + + diff --git a/PythonQtStdOut_8h.html b/PythonQtStdOut_8h.html new file mode 100644 index 000000000..c74f9f2c1 --- /dev/null +++ b/PythonQtStdOut_8h.html @@ -0,0 +1,129 @@ + + + + + + + +PythonQt: PythonQtStdOut.h File Reference + + + + + + +
+
+ + + + + + +
+
PythonQt +
+
+
+ + + + + + + +
+
+ +
+
PythonQtStdOut.h File Reference
+
+
+
#include "PythonQtPythonInclude.h"
+#include "structmember.h"
+#include <QString>
+
+

Go to the source code of this file.

+ + + + + +

+Classes

struct  PythonQtStdOutRedirect
 declares the stdout redirection class More...
 
+ + + + +

+Typedefs

typedef void PythonQtOutputChangedCB(const QString &str)
 declares the callback that is called from the write() function More...
 
+ + + + +

+Variables

PyTypeObject PythonQtStdOutRedirectType
 declares the type of the stdout redirection class More...
 
+

Detailed Description

+
Author
Florian Link
+
+Last changed by
+
Author
florian
+
Date
2006-05
+ +

Definition in file PythonQtStdOut.h.

+

Typedef Documentation

+ +

◆ PythonQtOutputChangedCB

+ +
+
+ + + + +
typedef void PythonQtOutputChangedCB(const QString &str)
+
+ +

declares the callback that is called from the write() function

+ +

Definition at line 55 of file PythonQtStdOut.h.

+ +
+
+

Variable Documentation

+ +

◆ PythonQtStdOutRedirectType

+ +
+
+ + + + +
PyTypeObject PythonQtStdOutRedirectType
+
+ +

declares the type of the stdout redirection class

+ +
+
+
+ + + + diff --git a/PythonQtStdOut_8h_source.html b/PythonQtStdOut_8h_source.html new file mode 100644 index 000000000..173653cdd --- /dev/null +++ b/PythonQtStdOut_8h_source.html @@ -0,0 +1,64 @@ + + + + + + + +PythonQt: PythonQtStdOut.h Source File + + + + + + +
+
+ + + + + + +
+
PythonQt +
+
+
+ + + + + + + +
+
+
+
PythonQtStdOut.h
+
+
+Go to the documentation of this file.
1 #ifndef _PYTHONQTSTDOUT_H
2 #define _PYTHONQTSTDOUT_H
3 
4 /*
5  *
6  * Copyright (C) 2010 MeVis Medical Solutions AG All Rights Reserved.
7  *
8  * This library is free software; you can redistribute it and/or
9  * modify it under the terms of the GNU Lesser General Public
10  * License as published by the Free Software Foundation; either
11  * version 2.1 of the License, or (at your option) any later version.
12  *
13  * This library is distributed in the hope that it will be useful,
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16  * Lesser General Public License for more details.
17  *
18  * Further, this software is distributed without any warranty that it is
19  * free of the rightful claim of any third person regarding infringement
20  * or the like. Any license provided herein, whether implied or
21  * otherwise, applies only to this software file. Patent licenses, if
22  * any, provided herein do not apply to combinations of this program with
23  * other software, or any other product whatsoever.
24  *
25  * You should have received a copy of the GNU Lesser General Public
26  * License along with this library; if not, write to the Free Software
27  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
28  *
29  * Contact information: MeVis Medical Solutions AG, Universitaetsallee 29,
30  * 28359 Bremen, Germany or:
31  *
32  * http://www.mevis.de
33  *
34  */
35 
36 //----------------------------------------------------------------------------------
43 //----------------------------------------------------------------------------------
44 
45 
46 #include "PythonQtPythonInclude.h"
47 
48 #include "structmember.h"
49 #include <QString>
50 
52 extern PyTypeObject PythonQtStdOutRedirectType;
53 
55 typedef void PythonQtOutputChangedCB(const QString& str);
56 
58 typedef struct {
59  PyObject_HEAD
61  int softspace;
62  bool closed;
64 
65 #endif
PyObject_HEAD PythonQtOutputChangedCB * _cb
+
void PythonQtOutputChangedCB(const QString &str)
declares the callback that is called from the write() function
+ +
PyTypeObject PythonQtStdOutRedirectType
declares the type of the stdout redirection class
+ + +
declares the stdout redirection class
+
+ + + + diff --git a/PythonQtSystem_8h.html b/PythonQtSystem_8h.html new file mode 100644 index 000000000..b876a83fd --- /dev/null +++ b/PythonQtSystem_8h.html @@ -0,0 +1,92 @@ + + + + + + + +PythonQt: PythonQtSystem.h File Reference + + + + + + +
+
+ + + + + + +
+
PythonQt +
+
+
+ + + + + + + +
+
+ +
+
PythonQtSystem.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + +

+Macros

#define PYTHONQT_EXPORT
 
+

Detailed Description

+
Author
Florian Link
+
+Last changed by
+
Author
florian
+
Date
2006-05
+ +

Definition in file PythonQtSystem.h.

+

Macro Definition Documentation

+ +

◆ PYTHONQT_EXPORT

+ +
+
+ + + + +
#define PYTHONQT_EXPORT
+
+ +

Definition at line 52 of file PythonQtSystem.h.

+ +
+
+
+ + + + diff --git a/PythonQtSystem_8h_source.html b/PythonQtSystem_8h_source.html new file mode 100644 index 000000000..f951df280 --- /dev/null +++ b/PythonQtSystem_8h_source.html @@ -0,0 +1,57 @@ + + + + + + + +PythonQt: PythonQtSystem.h Source File + + + + + + +
+
+ + + + + + +
+
PythonQt +
+
+
+ + + + + + + +
+
+
+
PythonQtSystem.h
+
+
+Go to the documentation of this file.
1 #ifndef _PYTHONQTSYSTEM_
2 #define _PYTHONQTSYSTEM_
3 
4 /*
5  *
6  * Copyright (C) 2010 MeVis Medical Solutions AG All Rights Reserved.
7  *
8  * This library is free software; you can redistribute it and/or
9  * modify it under the terms of the GNU Lesser General Public
10  * License as published by the Free Software Foundation; either
11  * version 2.1 of the License, or (at your option) any later version.
12  *
13  * This library is distributed in the hope that it will be useful,
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16  * Lesser General Public License for more details.
17  *
18  * Further, this software is distributed without any warranty that it is
19  * free of the rightful claim of any third person regarding infringement
20  * or the like. Any license provided herein, whether implied or
21  * otherwise, applies only to this software file. Patent licenses, if
22  * any, provided herein do not apply to combinations of this program with
23  * other software, or any other product whatsoever.
24  *
25  * You should have received a copy of the GNU Lesser General Public
26  * License along with this library; if not, write to the Free Software
27  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
28  *
29  * Contact information: MeVis Medical Solutions AG, Universitaetsallee 29,
30  * 28359 Bremen, Germany or:
31  *
32  * http://www.mevis.de
33  *
34  */
35 
36 //----------------------------------------------------------------------------------
43 //----------------------------------------------------------------------------------
44 
45 #ifdef WIN32
46 #ifdef PYTHONQT_EXPORTS
47 #define PYTHONQT_EXPORT __declspec(dllexport)
48 #else
49 #define PYTHONQT_EXPORT __declspec(dllimport)
50 #endif
51 #else
52 #define PYTHONQT_EXPORT
53 #endif
54 
55 #endif
56 
+ + + + diff --git a/PythonQtThreadSupport_8h.html b/PythonQtThreadSupport_8h.html new file mode 100644 index 000000000..69648a072 --- /dev/null +++ b/PythonQtThreadSupport_8h.html @@ -0,0 +1,171 @@ + + + + + + + +PythonQt: PythonQtThreadSupport.h File Reference + + + + + + +
+
+ + + + + + +
+
PythonQt +
+
+
+ + + + + + + +
+
+ +
+
PythonQtThreadSupport.h File Reference
+
+
+
#include <PythonQtPythonInclude.h>
+#include <PythonQtSystem.h>
+
+

Go to the source code of this file.

+ + + + + + +

+Classes

class  PythonQtGILScope
 
class  PythonQtThreadStateSaver
 
+ + + + + + + + + + + +

+Macros

#define PYTHONQT_FULL_THREAD_SUPPORT
 
#define PYTHONQT_GIL_SUPPORT
 
#define PYTHONQT_ALLOW_THREADS_SUPPORT
 
#define PYTHONQT_GIL_SCOPE   PythonQtGILScope internal_pythonqt_gilscope;
 
#define PYTHONQT_ALLOW_THREADS_SCOPE   PythonQtThreadStateSaver internal_pythonqt_savethread;
 
+

Detailed Description

+
Author
Florian Link
+
Date
2018-08
+ +

Definition in file PythonQtThreadSupport.h.

+

Macro Definition Documentation

+ +

◆ PYTHONQT_ALLOW_THREADS_SCOPE

+ +
+
+ + + + +
#define PYTHONQT_ALLOW_THREADS_SCOPE   PythonQtThreadStateSaver internal_pythonqt_savethread;
+
+ +

Definition at line 99 of file PythonQtThreadSupport.h.

+ +
+
+ +

◆ PYTHONQT_ALLOW_THREADS_SUPPORT

+ +
+
+ + + + +
#define PYTHONQT_ALLOW_THREADS_SUPPORT
+
+ +

Definition at line 50 of file PythonQtThreadSupport.h.

+ +
+
+ +

◆ PYTHONQT_FULL_THREAD_SUPPORT

+ +
+
+ + + + +
#define PYTHONQT_FULL_THREAD_SUPPORT
+
+ +

Definition at line 46 of file PythonQtThreadSupport.h.

+ +
+
+ +

◆ PYTHONQT_GIL_SCOPE

+ +
+
+ + + + +
#define PYTHONQT_GIL_SCOPE   PythonQtGILScope internal_pythonqt_gilscope;
+
+ +

Definition at line 55 of file PythonQtThreadSupport.h.

+ +
+
+ +

◆ PYTHONQT_GIL_SUPPORT

+ +
+
+ + + + +
#define PYTHONQT_GIL_SUPPORT
+
+ +

Definition at line 49 of file PythonQtThreadSupport.h.

+ +
+
+
+ + + + diff --git a/PythonQtThreadSupport_8h_source.html b/PythonQtThreadSupport_8h_source.html new file mode 100644 index 000000000..344df025e --- /dev/null +++ b/PythonQtThreadSupport_8h_source.html @@ -0,0 +1,68 @@ + + + + + + + +PythonQt: PythonQtThreadSupport.h Source File + + + + + + +
+
+ + + + + + +
+
PythonQt +
+
+
+ + + + + + + +
+
+
+
PythonQtThreadSupport.h
+
+
+Go to the documentation of this file.
1 #pragma once
2 /*
3 *
4 * Copyright (C) 2018 MeVis Medical Solutions AG All Rights Reserved.
5 *
6 * This library is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU Lesser General Public
8 * License as published by the Free Software Foundation; either
9 * version 2.1 of the License, or (at your option) any later version.
10 *
11 * This library is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 * Lesser General Public License for more details.
15 *
16 * Further, this software is distributed without any warranty that it is
17 * free of the rightful claim of any third person regarding infringement
18 * or the like. Any license provided herein, whether implied or
19 * otherwise, applies only to this software file. Patent licenses, if
20 * any, provided herein do not apply to combinations of this program with
21 * other software, or any other product whatsoever.
22 *
23 * You should have received a copy of the GNU Lesser General Public
24 * License along with this library; if not, write to the Free Software
25 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
26 *
27 * Contact information: MeVis Medical Solutions AG, Universitaetsallee 29,
28 * 28359 Bremen, Germany or:
29 *
30 * http://www.mevis.de
31 *
32 */
33 
34 //----------------------------------------------------------------------------------
40 //----------------------------------------------------------------------------------
41 
42 
43 #include <PythonQtPythonInclude.h>
44 #include <PythonQtSystem.h>
45 
46 #define PYTHONQT_FULL_THREAD_SUPPORT
47 
48 #ifdef PYTHONQT_FULL_THREAD_SUPPORT
49 #define PYTHONQT_GIL_SUPPORT
50 #define PYTHONQT_ALLOW_THREADS_SUPPORT
51 #endif
52 
53 #ifdef PYTHONQT_GIL_SUPPORT
54 
55 #define PYTHONQT_GIL_SCOPE PythonQtGILScope internal_pythonqt_gilscope;
56 
61 {
62 public:
64 
66 
67  void release();
68 
72  static void setGILScopeEnabled(bool flag);
74  static bool isGILScopeEnabled();
75 
76 private:
77  PyGILState_STATE _state;
78  bool _ensured;
79 
80  static bool _enableGILScope;
81 };
82 
83 #else
84 
85 #define PYTHONQT_GIL_SCOPE
86 
88 class PythonQtGILScope
89 {
90 public:
91  PythonQtGILScope() {}
92  void release() {}
93 };
94 
95 #endif
96 
97 #ifdef PYTHONQT_ALLOW_THREADS_SUPPORT
98 
99 #define PYTHONQT_ALLOW_THREADS_SCOPE PythonQtThreadStateSaver internal_pythonqt_savethread;
100 
105 {
106 public:
108  save();
109  }
110 
112  restore();
113  }
114 
115  void save() {
116  _state = PyEval_SaveThread();
117  }
118 
119  void restore() {
120  if (_state) {
121  PyEval_RestoreThread(_state);
122  _state = NULL;
123  }
124  }
125 
126 private:
127  PyThreadState* _state;
128 };
129 
130 #else
131 
132 #define PYTHONQT_ALLOW_THREADS_SCOPE
133 
136 {
137 public:
139  void save() {}
140  void restore() {}
141 };
142 
143 #endif
+ + + +
#define PYTHONQT_EXPORT
+ + + + + + +
+ + + + diff --git a/PythonQtUtils_8h.html b/PythonQtUtils_8h.html new file mode 100644 index 000000000..c2655add7 --- /dev/null +++ b/PythonQtUtils_8h.html @@ -0,0 +1,92 @@ + + + + + + + +PythonQt: PythonQtUtils.h File Reference + + + + + + +
+
+ + + + + + +
+
PythonQt +
+
+
+ + + + + + + +
+
+ +
+
PythonQtUtils.h File Reference
+
+
+
#include "PythonQtPythonInclude.h"
+#include "PythonQtSystem.h"
+#include <QByteArray>
+#include <QMetaMethod>
+
+

Go to the source code of this file.

+ + + + +

+Namespaces

 PythonQtUtils
 
+ + + + + + + + + + +

+Functions

QByteArray PythonQtUtils::signature (const QMetaMethod &method)
 
QByteArray PythonQtUtils::methodName (const QMetaMethod &method)
 
QByteArray PythonQtUtils::typeName (const QMetaMethod &method)
 
bool PythonQtUtils::isPythonClassType (PyObject *obj)
 Returns of the python object is a class type. More...
 
+

Detailed Description

+
Author
Florian Link
+
+Last changed by
+
Author
florian
+
Date
2014-09
+ +

Definition in file PythonQtUtils.h.

+
+ + + + diff --git a/PythonQtUtils_8h_source.html b/PythonQtUtils_8h_source.html new file mode 100644 index 000000000..dafd525bf --- /dev/null +++ b/PythonQtUtils_8h_source.html @@ -0,0 +1,65 @@ + + + + + + + +PythonQt: PythonQtUtils.h Source File + + + + + + +
+
+ + + + + + +
+
PythonQt +
+
+
+ + + + + + + +
+
+
+
PythonQtUtils.h
+
+
+Go to the documentation of this file.
1 #ifndef _PYTHONQTUTILS_H
2 #define _PYTHONQTUTILS_H
3 
4 /*
5  *
6  * Copyright (C) 2010 MeVis Medical Solutions AG All Rights Reserved.
7  *
8  * This library is free software; you can redistribute it and/or
9  * modify it under the terms of the GNU Lesser General Public
10  * License as published by the Free Software Foundation; either
11  * version 2.1 of the License, or (at your option) any later version.
12  *
13  * This library is distributed in the hope that it will be useful,
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16  * Lesser General Public License for more details.
17  *
18  * Further, this software is distributed without any warranty that it is
19  * free of the rightful claim of any third person regarding infringement
20  * or the like. Any license provided herein, whether implied or
21  * otherwise, applies only to this software file. Patent licenses, if
22  * any, provided herein do not apply to combinations of this program with
23  * other software, or any other product whatsoever.
24  *
25  * You should have received a copy of the GNU Lesser General Public
26  * License along with this library; if not, write to the Free Software
27  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
28  *
29  * Contact information: MeVis Medical Solutions AG, Universitaetsallee 29,
30  * 28359 Bremen, Germany or:
31  *
32  * http://www.mevis.de
33  *
34  */
35 
36 //----------------------------------------------------------------------------------
43 //----------------------------------------------------------------------------------
44 
45 #include "PythonQtPythonInclude.h"
46 #include "PythonQtSystem.h"
47 
48 #include <QByteArray>
49 #include <QMetaMethod>
50 
51 namespace PythonQtUtils
52 {
53  inline QByteArray signature(const QMetaMethod& method) {
54 #if( QT_VERSION >= QT_VERSION_CHECK(5,0,0) )
55  return method.methodSignature();
56 #else
57  return QByteArray(method.signature());
58 #endif
59  }
60 
61  inline QByteArray methodName(const QMetaMethod& method) {
62 #if( QT_VERSION >= QT_VERSION_CHECK(5,0,0) )
63  return method.name();
64 #else
65  QByteArray sig(method.signature());
66  int idx = sig.indexOf('(');
67  sig = sig.left(idx);
68  return sig;
69 #endif
70  }
71 
72  inline QByteArray typeName(const QMetaMethod& method) {
73 #if( QT_VERSION >= QT_VERSION_CHECK(5,0,0) )
74  QByteArray result = method.typeName();
75  if (result == "void") {
76  return QByteArray();
77  } else {
78  return result;
79  }
80 #else
81  return method.typeName();
82 #endif
83  }
84 
86  inline bool isPythonClassType(PyObject* obj) {
87 #ifdef PY3K
88  return PyType_Check(obj);
89 #else
90  // support old-style classes and new style classes
91  return (obj->ob_type == &PyClass_Type || obj->ob_type == &PyType_Type);
92 #endif
93  }
94 }
95 
96 #endif
97 
+
QByteArray typeName(const QMetaMethod &method)
Definition: PythonQtUtils.h:72
+
QByteArray methodName(const QMetaMethod &method)
Definition: PythonQtUtils.h:61
+ +
struct _object PyObject
+
bool isPythonClassType(PyObject *obj)
Returns of the python object is a class type.
Definition: PythonQtUtils.h:86
+
QByteArray signature(const QMetaMethod &method)
Definition: PythonQtUtils.h:53
+ +
+ + + + diff --git a/PythonQtVariants_8h.html b/PythonQtVariants_8h.html new file mode 100644 index 000000000..54df29bf6 --- /dev/null +++ b/PythonQtVariants_8h.html @@ -0,0 +1,96 @@ + + + + + + + +PythonQt: PythonQtVariants.h File Reference + + + + + + +
+
+ + + + + + +
+
PythonQt +
+
+
+ + + + + + + +
+
+
+
PythonQtVariants.h File Reference
+
+
+
#include <QBitArray>
+#include <QDate>
+#include <QTime>
+#include <QDateTime>
+#include <QUrl>
+#include <QLocale>
+#include <QRect>
+#include <QRectF>
+#include <QLine>
+#include <QLineF>
+#include <QPoint>
+#include <QPointF>
+#include <QRegExp>
+#include <QFont>
+#include <QBitmap>
+#include <QBrush>
+#include <QColor>
+#include <QPalette>
+#include <QIcon>
+#include <QImage>
+#include <QPolygon>
+#include <QRegion>
+#include <QCursor>
+#include <QSizePolicy>
+#include <QKeySequence>
+#include <QPen>
+#include <QTextLength>
+#include <QTextFormat>
+#include <QMatrix>
+
+

Go to the source code of this file.

+

Detailed Description

+
Author
Florian Link
+
+Last changed by
+
Author
stk
+
Date
2006-08
+ +

Definition in file PythonQtVariants.h.

+
+ + + + diff --git a/PythonQtVariants_8h_source.html b/PythonQtVariants_8h_source.html new file mode 100644 index 000000000..0a3a1ab8e --- /dev/null +++ b/PythonQtVariants_8h_source.html @@ -0,0 +1,57 @@ + + + + + + + +PythonQt: PythonQtVariants.h Source File + + + + + + +
+
+ + + + + + +
+
PythonQt +
+
+
+ + + + + + + +
+
+
+
PythonQtVariants.h
+
+
+Go to the documentation of this file.
1 #ifndef _PYTHONQTVARIANTS_
2 #define _PYTHONQTVARIANTS_
3 
4 /*
5  *
6  * Copyright (C) 2010 MeVis Medical Solutions AG All Rights Reserved.
7  *
8  * This library is free software; you can redistribute it and/or
9  * modify it under the terms of the GNU Lesser General Public
10  * License as published by the Free Software Foundation; either
11  * version 2.1 of the License, or (at your option) any later version.
12  *
13  * This library is distributed in the hope that it will be useful,
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16  * Lesser General Public License for more details.
17  *
18  * Further, this software is distributed without any warranty that it is
19  * free of the rightful claim of any third person regarding infringement
20  * or the like. Any license provided herein, whether implied or
21  * otherwise, applies only to this software file. Patent licenses, if
22  * any, provided herein do not apply to combinations of this program with
23  * other software, or any other product whatsoever.
24  *
25  * You should have received a copy of the GNU Lesser General Public
26  * License along with this library; if not, write to the Free Software
27  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
28  *
29  * Contact information: MeVis Medical Solutions AG, Universitaetsallee 29,
30  * 28359 Bremen, Germany or:
31  *
32  * http://www.mevis.de
33  *
34  */
35 
36 //----------------------------------------------------------------------------------
43 //----------------------------------------------------------------------------------
44 
45 #include <QBitArray>
46 #include <QDate>
47 #include <QTime>
48 #include <QDateTime>
49 #include <QUrl>
50 #include <QLocale>
51 #include <QRect>
52 #include <QRectF>
53 #include <QLine>
54 #include <QLineF>
55 #include <QPoint>
56 #include <QPointF>
57 #include <QRegExp>
58 
59 #include <QFont>
60 #include <QBitmap>
61 #include <QBrush>
62 #include <QColor>
63 #include <QPalette>
64 #include <QIcon>
65 #include <QImage>
66 #include <QPolygon>
67 #include <QRegion>
68 #include <QBitmap>
69 #include <QCursor>
70 #include <QSizePolicy>
71 #include <QKeySequence>
72 #include <QPen>
73 #include <QTextLength>
74 #include <QTextFormat>
75 #include <QMatrix>
76 
77 #endif
78 
+ + + + diff --git a/PythonQt_8h.html b/PythonQt_8h.html new file mode 100644 index 000000000..3f64db000 --- /dev/null +++ b/PythonQt_8h.html @@ -0,0 +1,404 @@ + + + + + + + +PythonQt: PythonQt.h File Reference + + + + + + +
+
+ + + + + + +
+
PythonQt +
+
+
+ + + + + + + +
+
+ +
+
PythonQt.h File Reference
+
+
+
#include "PythonQtPythonInclude.h"
+#include "PythonQtUtils.h"
+#include "PythonQtSystem.h"
+#include "PythonQtInstanceWrapper.h"
+#include "PythonQtClassWrapper.h"
+#include "PythonQtSlot.h"
+#include "PythonQtObjectPtr.h"
+#include "PythonQtStdIn.h"
+#include "PythonQtThreadSupport.h"
+#include <QObject>
+#include <QVariant>
+#include <QList>
+#include <QHash>
+#include <QByteArray>
+#include <QStringList>
+#include <QtDebug>
+#include <iostream>
+
+

Go to the source code of this file.

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

+Classes

class  PythonQtPassOwnershipToCPP< T >
 
class  PythonQtPassOwnershipToPython< T >
 
class  PythonQtNewOwnerOfThis< T >
 
class  PythonQt
 The main interface to the Python Qt binding, realized as a singleton. More...
 
class  PythonQtPrivate
 internal PythonQt details More...
 
+ + + + + + + + +

+Macros

#define QStringToPythonConstCharPointer(arg)   ((arg).toLatin1().constData())
 Helper define to convert from QString to Python C-API. More...
 
#define QStringToPythonCharPointer(arg)   ((arg).toLatin1().data())
 
#define QStringToPythonEncoding(arg)   ((arg).toLatin1())
 
+ + + + + + + + + + + + + + + + +

+Typedefs

typedef void PythonQtVoidPtrCB(void *object)
 
typedef void PythonQtQObjectWrappedCB(QObject *object)
 
typedef void PythonQtQObjectNoLongerWrappedCB(QObject *object)
 
typedef void * PythonQtPolymorphicHandlerCB(const void *ptr, const char **class_name)
 
typedef QString PythonQtQObjectMissingAttributeCB(QObject *object, const QString &attribute)
 
typedef void PythonQtShellSetInstanceWrapperCB(void *object, PythonQtInstanceWrapper *wrapper)
 
typedef QObject * PythonQtQObjectCreatorFunctionCB()
 callback to create a QObject lazily More...
 
+ + + + + + + + + + + + +

+Functions

template<class T >
void PythonQtSetInstanceWrapperOnShell (void *object, PythonQtInstanceWrapper *wrapper)
 
template<class T1 , class T2 >
int PythonQtUpcastingOffset ()
 returns the offset that needs to be added to upcast an object of type T1 to T2 More...
 
template<class T >
QObject * PythonQtCreateObject ()
 helper template to create a derived QObject class More...
 
+

Detailed Description

+
Author
Florian Link
+
+Last changed by
+
Author
florian
+
Date
2006-05
+ +

Definition in file PythonQt.h.

+

Macro Definition Documentation

+ +

◆ QStringToPythonCharPointer

+ +
+
+ + + + + + + + +
#define QStringToPythonCharPointer( arg)   ((arg).toLatin1().data())
+
+ +

Definition at line 156 of file PythonQt.h.

+ +
+
+ +

◆ QStringToPythonConstCharPointer

+ +
+
+ + + + + + + + +
#define QStringToPythonConstCharPointer( arg)   ((arg).toLatin1().constData())
+
+ +

Helper define to convert from QString to Python C-API.

+ +

Definition at line 155 of file PythonQt.h.

+ +
+
+ +

◆ QStringToPythonEncoding

+ +
+
+ + + + + + + + +
#define QStringToPythonEncoding( arg)   ((arg).toLatin1())
+
+ +

Definition at line 157 of file PythonQt.h.

+ +
+
+

Typedef Documentation

+ +

◆ PythonQtPolymorphicHandlerCB

+ +
+
+ + + + +
typedef void* PythonQtPolymorphicHandlerCB(const void *ptr, const char **class_name)
+
+ +

Definition at line 76 of file PythonQt.h.

+ +
+
+ +

◆ PythonQtQObjectCreatorFunctionCB

+ +
+
+ + + + +
typedef QObject* PythonQtQObjectCreatorFunctionCB()
+
+ +

callback to create a QObject lazily

+ +

Definition at line 144 of file PythonQt.h.

+ +
+
+ +

◆ PythonQtQObjectMissingAttributeCB

+ +
+
+ + + + +
typedef QString PythonQtQObjectMissingAttributeCB(QObject *object, const QString &attribute)
+
+ +

Definition at line 77 of file PythonQt.h.

+ +
+
+ +

◆ PythonQtQObjectNoLongerWrappedCB

+ +
+
+ + + + +
typedef void PythonQtQObjectNoLongerWrappedCB(QObject *object)
+
+ +

Definition at line 75 of file PythonQt.h.

+ +
+
+ +

◆ PythonQtQObjectWrappedCB

+ +
+
+ + + + +
typedef void PythonQtQObjectWrappedCB(QObject *object)
+
+ +

Definition at line 74 of file PythonQt.h.

+ +
+
+ +

◆ PythonQtShellSetInstanceWrapperCB

+ +
+
+ + + + +
typedef void PythonQtShellSetInstanceWrapperCB(void *object, PythonQtInstanceWrapper *wrapper)
+
+ +

Definition at line 79 of file PythonQt.h.

+ +
+
+ +

◆ PythonQtVoidPtrCB

+ +
+
+ + + + +
typedef void PythonQtVoidPtrCB(void *object)
+
+ +

Definition at line 73 of file PythonQt.h.

+ +
+
+

Function Documentation

+ +

◆ PythonQtCreateObject()

+ +
+
+
+template<class T >
+ + + + + + + +
QObject* PythonQtCreateObject ()
+
+ +

helper template to create a derived QObject class

+ +

Definition at line 147 of file PythonQt.h.

+
147 { return new T(); };
+
+
+ +

◆ PythonQtSetInstanceWrapperOnShell()

+ +
+
+
+template<class T >
+ + + + + + + + + + + + + + + + + + +
void PythonQtSetInstanceWrapperOnShell (void * object,
PythonQtInstanceWrapperwrapper 
)
+
+ +

Definition at line 81 of file PythonQt.h.

+
81  {
82  (reinterpret_cast<T*>(object))->_wrapper = wrapper;
83 }
+
+
+ +

◆ PythonQtUpcastingOffset()

+ +
+
+
+template<class T1 , class T2 >
+ + + + + + + +
int PythonQtUpcastingOffset ()
+
+ +

returns the offset that needs to be added to upcast an object of type T1 to T2

+ +

Definition at line 138 of file PythonQt.h.

+
138  {
139  return ((reinterpret_cast<char*>(static_cast<T2*>(reinterpret_cast<T1*>(0x100))))
140  - (reinterpret_cast<char*>(reinterpret_cast<T1*>(0x100))));
141 }
+
+
+
+ + + + diff --git a/PythonQt_8h_source.html b/PythonQt_8h_source.html new file mode 100644 index 000000000..3d11de815 --- /dev/null +++ b/PythonQt_8h_source.html @@ -0,0 +1,123 @@ + + + + + + + +PythonQt: PythonQt.h Source File + + + + + + +
+
+ + + + + + +
+
PythonQt +
+
+
+ + + + + + + +
+
+
+
PythonQt.h
+
+
+Go to the documentation of this file.
1 #ifndef _PYTHONQT_H
2 #define _PYTHONQT_H
3 
4 /*
5  *
6  * Copyright (C) 2010 MeVis Medical Solutions AG All Rights Reserved.
7  *
8  * This library is free software; you can redistribute it and/or
9  * modify it under the terms of the GNU Lesser General Public
10  * License as published by the Free Software Foundation; either
11  * version 2.1 of the License, or (at your option) any later version.
12  *
13  * This library is distributed in the hope that it will be useful,
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16  * Lesser General Public License for more details.
17  *
18  * Further, this software is distributed without any warranty that it is
19  * free of the rightful claim of any third person regarding infringement
20  * or the like. Any license provided herein, whether implied or
21  * otherwise, applies only to this software file. Patent licenses, if
22  * any, provided herein do not apply to combinations of this program with
23  * other software, or any other product whatsoever.
24  *
25  * You should have received a copy of the GNU Lesser General Public
26  * License along with this library; if not, write to the Free Software
27  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
28  *
29  * Contact information: MeVis Medical Solutions AG, Universitaetsallee 29,
30  * 28359 Bremen, Germany or:
31  *
32  * http://www.mevis.de
33  *
34  */
35 
36 //----------------------------------------------------------------------------------
43 //----------------------------------------------------------------------------------
44 
45 #include "PythonQtPythonInclude.h"
46 #include "PythonQtUtils.h"
47 #include "PythonQtSystem.h"
49 #include "PythonQtClassWrapper.h"
50 #include "PythonQtSlot.h"
51 #include "PythonQtObjectPtr.h"
52 #include "PythonQtStdIn.h"
53 #include "PythonQtThreadSupport.h"
54 #include <QObject>
55 #include <QVariant>
56 #include <QList>
57 #include <QHash>
58 #include <QByteArray>
59 #include <QStringList>
60 #include <QtDebug>
61 #include <iostream>
62 
63 
64 class PythonQtClassInfo;
65 class PythonQtPrivate;
66 class PythonQtMethodInfo;
72 
73 typedef void PythonQtVoidPtrCB(void* object);
74 typedef void PythonQtQObjectWrappedCB(QObject* object);
75 typedef void PythonQtQObjectNoLongerWrappedCB(QObject* object);
76 typedef void* PythonQtPolymorphicHandlerCB(const void *ptr, const char **class_name);
77 typedef QString PythonQtQObjectMissingAttributeCB(QObject* object, const QString& attribute);
78 
79 typedef void PythonQtShellSetInstanceWrapperCB(void* object, PythonQtInstanceWrapper* wrapper);
80 
81 template<class T> void PythonQtSetInstanceWrapperOnShell(void* object, PythonQtInstanceWrapper* wrapper) {
82  (reinterpret_cast<T*>(object))->_wrapper = wrapper;
83 }
84 
88 template<class T>
90 {
91  public:
93  PythonQtPassOwnershipToCPP(const T& t):_t(t) {}
95  operator T() const { return _t; }
96 
99  T _t;
100 };
101 
105 template<class T>
107 {
108 public:
112  operator T() const { return _t; }
113 
116  T _t;
117 };
118 
122 template<class T>
124 {
125 public:
127  PythonQtNewOwnerOfThis(const T& t):_t(t) {}
129  operator T() const { return _t; }
130 
133  T _t;
134 };
135 
136 
138 template<class T1, class T2> int PythonQtUpcastingOffset() {
139  return ((reinterpret_cast<char*>(static_cast<T2*>(reinterpret_cast<T1*>(0x100))))
140  - (reinterpret_cast<char*>(reinterpret_cast<T1*>(0x100))));
141 }
142 
145 
147 template<class T> QObject* PythonQtCreateObject() { return new T(); };
148 
150 #ifdef PY3K
151 #define QStringToPythonConstCharPointer(arg) ((arg).toUtf8().constData())
152 #define QStringToPythonCharPointer(arg) ((arg).toUtf8().data())
153 #define QStringToPythonEncoding(arg) ((arg).toUtf8())
154 #else
155 #define QStringToPythonConstCharPointer(arg) ((arg).toLatin1().constData())
156 #define QStringToPythonCharPointer(arg) ((arg).toLatin1().data())
157 #define QStringToPythonEncoding(arg) ((arg).toLatin1())
158 #endif
159 
161 
169 class PYTHONQT_EXPORT PythonQt : public QObject {
170 
171  Q_OBJECT
172 
173 public:
174 
176  enum InitFlags {
177  RedirectStdOut = 1,
178  IgnoreSiteModule = 2,
179  ExternalHelp = 4,
180  PythonAlreadyInitialized = 8
181  };
182 
184  enum TypeSlots {
185  Type_Add = 1,
186  Type_Subtract = 1 << 1,
187  Type_Multiply = 1 << 2,
188  Type_Divide = 1 << 3,
189  Type_Mod = 1 << 4,
190  Type_And = 1 << 5,
191  Type_Or = 1 << 6,
192  Type_Xor = 1 << 7,
193  Type_LShift = 1 << 8,
194  Type_RShift = 1 << 9,
195 
196  Type_InplaceAdd = 1 << 10,
197  Type_InplaceSubtract = 1 << 11,
198  Type_InplaceMultiply = 1 << 12,
199  Type_InplaceDivide = 1 << 13,
200  Type_InplaceMod = 1 << 14,
201  Type_InplaceAnd = 1 << 15,
202  Type_InplaceOr = 1 << 16,
203  Type_InplaceXor = 1 << 17,
204  Type_InplaceLShift = 1 << 18,
205  Type_InplaceRShift = 1 << 19,
206 
207  Type_Length = 1 << 20,
208  Type_MappingSetItem = 1 << 21,
209  Type_MappingGetItem = 1 << 22,
210 
211  Type_Invert = 1 << 29,
212  Type_RichCompare = 1 << 30,
213  Type_NonZero = 1 << 31,
214 
215  };
216 
219  Enter = 1,
220  Leave = 2
221  };
222 
225  typedef void ProfilingCB(ProfilingCallbackState state, const char* className, const char* methodName, PyObject* args);
226 
227  //---------------------------------------------------------------------------
229 
230 
234  static void init(int flags = IgnoreSiteModule | RedirectStdOut, const QByteArray& pythonQtModuleName = QByteArray());
235 
237  static void cleanup();
238 
240  static PythonQt* self();
241 
243 
245  enum ObjectType {
251  CallOverloads
252  };
253 
254 
255  //---------------------------------------------------------------------------
257 
258 
261  void setRedirectStdInCallback(PythonQtInputChangedCB* callback, void * callbackData = 0);
262 
265  void setRedirectStdInCallbackEnabled(bool enabled);
266 
268 
269  //---------------------------------------------------------------------------
271 
272 
274  PythonQtObjectPtr getMainModule();
275 
278  PythonQtObjectPtr importModule(const QString& name);
279 
284  PythonQtObjectPtr createModuleFromFile(const QString& name, const QString& filename);
285 
290  PythonQtObjectPtr createModuleFromScript(const QString& name, const QString& script = QString());
291 
294  PythonQtObjectPtr createUniqueModule();
295 
297 
298  //---------------------------------------------------------------------------
300 
301 
303  void overwriteSysPath(const QStringList& paths);
304 
306  void addSysPath(const QString& path);
307 
309  void setModuleImportPath(PyObject* module, const QStringList& paths);
310 
312 
313  //---------------------------------------------------------------------------
315 
316 
318  /* Since Qt4 does not offer a way to detect if a given classname is derived from QObject and thus has a QMetaObject,
319  you MUST register all your QObject derived classes here when you want them to be detected in signal and slot calls */
320  void registerClass(const QMetaObject* metaobject, const char* package = NULL, PythonQtQObjectCreatorFunctionCB* wrapperCreator = NULL, PythonQtShellSetInstanceWrapperCB* shell = NULL);
321 
324 
330  void registerCPPClass(const char* typeName, const char* parentTypeName = NULL, const char* package = NULL, PythonQtQObjectCreatorFunctionCB* wrapperCreator = NULL, PythonQtShellSetInstanceWrapperCB* shell = NULL);
331 
334  void registerQObjectClassNames(const QStringList& names);
335 
340  bool addParentClass(const char* typeName, const char* parentTypeName, int upcastingOffset=0);
341 
343  void addPolymorphicHandler(const char* typeName, PythonQtPolymorphicHandlerCB* cb);
344 
346 
347  //---------------------------------------------------------------------------
349 
350 
352  PythonQtObjectPtr parseFile(const QString& filename);
353 
358  PythonQtObjectPtr parseFileWithPythonLoaders(const QString& filename);
359 
362  QVariant evalCode(PyObject* object, PyObject* pycode);
363 
365  QVariant evalScript(PyObject* object, const QString& script, int start = Py_file_input);
366 
368  QVariant evalScript(const QString& script, PyObject* globals, PyObject* locals, int start);
369 
371  void evalFile(PyObject* object, const QString& filename);
372 
374 
375  //---------------------------------------------------------------------------
377 
378 
380  bool addSignalHandler(QObject* obj, const char* signal, PyObject* module, const QString& objectname);
381 
383  bool removeSignalHandler(QObject* obj, const char* signal, PyObject* module, const QString& objectname);
384 
386  bool addSignalHandler(QObject* obj, const char* signal, PyObject* receiver);
387 
389  bool removeSignalHandler(QObject* obj, const char* signal, PyObject* receiver);
390 
392  void removeSignalHandlers();
393 
395 
396  //---------------------------------------------------------------------------
398 
399 
401  void addObject(PyObject* object, const QString& name, QObject* qObject);
402 
404  void addVariable(PyObject* object, const QString& name, const QVariant& v);
405 
407  void removeVariable(PyObject* module, const QString& name);
408 
410  QVariant getVariable(PyObject* object, const QString& name);
411 
413  QVariant getNativeVariable(PyObject* object, const QString& name);
414 
416  QStringList introspection(PyObject* object, const QString& objectname, ObjectType type);
418  QStringList introspectObject(PyObject* object, ObjectType type);
423  QStringList introspectType(const QString& typeName, ObjectType type);
424 
427  PythonQtObjectPtr lookupCallable(PyObject* object, const QString& name);
428 
430  QString getReturnTypeOfWrappedMethod(PyObject* module, const QString& objectname);
432  QString getReturnTypeOfWrappedMethod(const QString& typeName, const QString& methodName);
434 
435  //---------------------------------------------------------------------------
437 
438 
440  QVariant call(PyObject* object, const QString& callable, const QVariantList& args = QVariantList(), const QVariantMap& kwargs = QVariantMap());
441 
443  QVariant call(PyObject* callable, const QVariantList& args = QVariantList(), const QVariantMap& kwargs = QVariantMap());
444 
446  PyObject* callAndReturnPyObject(PyObject* callable, const QVariantList& args = QVariantList(), const QVariantMap& kwargs = QVariantMap());
447 
449 
450  //---------------------------------------------------------------------------
452 
453 
458 
479  void addInstanceDecorators(QObject* o);
480 
483 
497  void addClassDecorators(QObject* o);
498 
500  void addDecorators(QObject* o);
501 
503  void addWrapperFactory(PythonQtCppWrapperFactory* factory);
504 
506  void addWrapperFactory(PythonQtForeignWrapperFactory* factory);
507 
509  void removeWrapperFactory(PythonQtCppWrapperFactory* factory);
510 
512  void removeWrapperFactory(PythonQtForeignWrapperFactory* factory);
513 
515 
516  //---------------------------------------------------------------------------
518 
519 
529  void setImporter(PythonQtImportFileInterface* importInterface);
530 
537  void installDefaultImporter() { setImporter(NULL); }
538 
540  void setImporterIgnorePaths(const QStringList& paths);
541 
543  const QStringList& getImporterIgnorePaths();
544 
546  static PythonQtImportFileInterface* importInterface();
547 
549 
550  //---------------------------------------------------------------------------
552 
553 
555  static PythonQtPrivate* priv() { return _self->_p; }
556 
559  void clearNotFoundCachedMembers();
560 
563  bool handleError(bool printStack = true);
564 
566  bool hadError()const;
567 
570  void clearError();
571 
574  void setSystemExitExceptionHandlerEnabled(bool value);
575 
578  bool systemExitExceptionHandlerEnabled() const;
579 
581  void setQObjectWrappedCallback(PythonQtQObjectWrappedCB* cb);
583  void setQObjectNoLongerWrappedCallback(PythonQtQObjectNoLongerWrappedCB* cb);
584 
586  static void qObjectNoLongerWrappedCB(QObject* o);
587 
589  void setQObjectMissingAttributeCallback(PythonQtQObjectMissingAttributeCB* cb);
590 
592  static QString qObjectMissingAttributeCallback(QObject* o, const QString& attribute);
593 
595  PyObject* helpCalled(PythonQtClassInfo* info);
596 
599  PythonQtObjectPtr lookupObject(PyObject* module, const QString& name);
600 
602  void setProfilingCallback(ProfilingCB* cb);
603 
609  static void setEnableThreadSupport(bool flag);
610 
612 
613 Q_SIGNALS:
615  void pythonStdOut(const QString& str);
617  void pythonStdErr(const QString& str);
618 
620  void pythonHelpRequest(const QByteArray& cppClassName);
621 
625  void systemExitExceptionRaised(int exitCode);
626 
627 private:
628  void initPythonQtModule(bool redirectStdOut, const QByteArray& pythonQtModuleName);
629 
630  QString getReturnTypeOfWrappedMethodHelper(const PythonQtObjectPtr& variableObject, const QString& methodName, const QString& context);
631 
632  PyObject* getObjectByType(const QString& typeName);
633 
635  static void stdOutRedirectCB(const QString& str);
637  static void stdErrRedirectCB(const QString& str);
638 
640  PythonQtSignalReceiver* getSignalReceiver(QObject* obj);
641 
642  PythonQt(int flags, const QByteArray& pythonQtModuleName);
643  ~PythonQt();
644  static PythonQt* _self;
645  static int _uniqueModuleCount;
646 
647  PythonQtPrivate* _p;
648 
649 };
650 
651 class PythonQtDebugAPI;
652 
654 class PYTHONQT_EXPORT PythonQtPrivate : public QObject {
655 
656  Q_OBJECT
657 
658 public:
659  PythonQtPrivate();
660  ~PythonQtPrivate();
661 
663  StaticDecorator = 1,
664  ConstructorDecorator = 2,
665  DestructorDecorator = 4,
666  InstanceDecorator = 8,
667  AllDecorators = 0xffff
668  };
669 
671  const QStringList& sharedLibrarySuffixes() { return _sharedLibrarySuffixes; }
672 
674  bool isPythonQtObjectPtrMetaId(int id) { return _PythonQtObjectPtr_metaId == id; }
676  bool isPythonQtSafeObjectPtrMetaId(int id) { return _PythonQtSafeObjectPtr_metaId == id; }
678  bool isPythonQtAnyObjectPtrMetaId(int id) { return _PythonQtObjectPtr_metaId == id || _PythonQtSafeObjectPtr_metaId == id; }
679 
681  void addWrapperPointer(void* obj, PythonQtInstanceWrapper* wrapper);
683  void removeWrapperPointer(void* obj);
684 
686  void shellClassDeleted(void* shellClass);
687 
689  void* unwrapForeignWrapper(const QByteArray& classname, PyObject* obj);
690 
692  bool addParentClass(const char* typeName, const char* parentTypeName, int upcastingOffset);
693 
695  void addPolymorphicHandler(const char* typeName, PythonQtPolymorphicHandlerCB* cb);
696 
698  PythonQtClassInfo* lookupClassInfoAndCreateIfNotPresent(const char* typeName);
699 
701  void removeSignalEmitter(QObject* obj);
702 
704  PyObject* wrapQObject(QObject* obj);
705 
709  PyObject* wrapPtr(void* ptr, const QByteArray& name, bool passOwnership = false);
710 
712  static PyObject* wrapMemoryAsBuffer(const void* data, Py_ssize_t size);
713 
715  static PyObject* wrapMemoryAsBuffer(void* data, Py_ssize_t size);
716 
718  /* Since Qt4 does not offer a way to detect if a given classname is derived from QObject and thus has a QMetaObject,
719  you MUST register all your QObject derived classes here when you want them to be detected in signal and slot calls */
720  void registerClass(const QMetaObject* metaobject, const char* package = NULL, PythonQtQObjectCreatorFunctionCB* wrapperCreator = NULL, PythonQtShellSetInstanceWrapperCB* shell = NULL, PyObject* module = NULL, int typeSlots = 0);
721 
724 
730  void registerCPPClass(const char* typeName, const char* parentTypeName = NULL, const char* package = NULL, PythonQtQObjectCreatorFunctionCB* wrapperCreator = NULL, PythonQtShellSetInstanceWrapperCB* shell = NULL, PyObject* module = NULL, int typeSlots = 0);
731 
734  void registerQObjectClassNames(const QStringList& names);
735 
737  void addDecorators(QObject* o, int decoTypes);
738 
740  PythonQtClassWrapper* createNewPythonQtClassWrapper(PythonQtClassInfo* info, PyObject* module, const QByteArray& pythonClassName);
741 
743  static PyObject* createEnumValueInstance(PyObject* enumType, unsigned int enumValue);
744 
746  static PyObject* createNewPythonQtEnumWrapper(const char* enumName, PyObject* parentObject);
747 
749  PythonQtInstanceWrapper* createNewPythonQtInstanceWrapper(QObject* obj, PythonQtClassInfo* info, void* wrappedPtr = NULL);
750 
752  PythonQtClassInfo* getClassInfo(const QMetaObject* meta);
753 
755  PythonQtClassInfo* getClassInfo(const QByteArray& className);
756 
759  void registerLazyClass(const QByteArray& name, const QByteArray& moduleToImport);
760 
762  PythonQtObjectPtr createModule(const QString& name, PyObject* pycode);
763 
765  PythonQtClassInfo* currentClassInfoForClassWrapperCreation();
766 
768  static PyObject* dummyTuple();
769 
771  void handleVirtualOverloadReturnError(const char* signature, const PythonQtMethodInfo* methodInfo, PyObject* result);
772 
774  PythonQtObjectPtr pythonQtModule() const { return _pythonQtModule; }
775 
777  PythonQt::ProfilingCB* profilingCB() const { return _profilingCB; }
778 
780  QString getSignature(PyObject* object);
781 
783  bool isMethodDescriptor(PyObject* object) const;
784 
786  const QMetaObject* getDynamicMetaObject(PythonQtInstanceWrapper* wrapper, const QMetaObject* prototypeMetaObject);
787 
789  const QMetaObject* setupDynamicMetaObjectChain(PythonQtClassWrapper* type, const QMetaObject* prototypeMetaObject);
790 
792  const QMetaObject* buildDynamicMetaObject(PythonQtClassWrapper* type, const QMetaObject* prototypeMetaObject);
793 
795  int handleMetaCall(QObject* object, PythonQtInstanceWrapper* wrapper, QMetaObject::Call call, int id, void** args);
796 
798  void callMethodInPython(QMetaMethod &method, PythonQtInstanceWrapper* wrapper, void** args);
799 
800 private:
802  void setupSharedLibrarySuffixes();
803 
805  void createPythonQtClassWrapper(PythonQtClassInfo* info, const char* package, PyObject* module = NULL);
806 
808  PyObject* packageByName(const char* name);
809 
811  PythonQtInstanceWrapper* findWrapperAndRemoveUnused(void* obj);
812 
814  QHash<void* , PythonQtInstanceWrapper *> _wrappedObjects;
815 
817  QHash<QByteArray, PythonQtClassInfo *> _knownClassInfos;
818 
820  QHash<QByteArray, bool> _knownQObjectClassNames;
821 
823  QHash<QByteArray, QByteArray> _knownLazyClasses;
824 
826  QHash<QObject* , PythonQtSignalReceiver *> _signalReceivers;
827 
829  PythonQtObjectPtr _pythonQtModule;
830 
832  QByteArray _pythonQtModuleName;
833 
835  PythonQtImportFileInterface* _importInterface;
836 
838  PythonQtQFileImporter* _defaultImporter;
839 
840  PythonQtQObjectNoLongerWrappedCB* _noLongerWrappedCB;
841  PythonQtQObjectWrappedCB* _wrappedCB;
842  PythonQtQObjectMissingAttributeCB* _qObjectMissingAttribCB;
843 
844  QStringList _importIgnorePaths;
845  QStringList _sharedLibrarySuffixes;
846 
847  PythonQtObjectPtr _pySourceFileLoader;
848  PythonQtObjectPtr _pySourcelessFileLoader;
849 
851  QList<PythonQtCppWrapperFactory*> _cppWrapperFactories;
852 
853  QList<PythonQtForeignWrapperFactory*> _foreignWrapperFactories;
854 
855  QHash<QByteArray, PyObject*> _packages;
856 
857  PythonQtClassInfo* _currentClassInfoForClassWrapperCreation;
858 
859  PythonQt::ProfilingCB* _profilingCB;
860 
861  PythonQtDebugAPI* _debugAPI;
862 
863  int _initFlags;
864  int _PythonQtObjectPtr_metaId;
865  int _PythonQtSafeObjectPtr_metaId;
866 
867  bool _hadError;
868  bool _systemExitExceptionHandlerEnabled;
869 
870  friend class PythonQt;
871 };
872 
873 #endif
void installDefaultImporter()
Definition: PythonQt.h:537
+
Factory interface for C++ classes that can be wrapped by QObject objects.
+ +
InitFlags
flags that can be passed to PythonQt::init()
Definition: PythonQt.h:176
+ +
void ProfilingCB(ProfilingCallbackState state, const char *className, const char *methodName, PyObject *args)
Definition: PythonQt.h:225
+
void * PythonQtPolymorphicHandlerCB(const void *ptr, const char **class_name)
Definition: PythonQt.h:76
+
a Python wrapper object for Qt objects and C++ objects (that are themselves wrapped by wrapper QObjec...
+
a class that stores all required information about a Qt object (and an optional associated C++ class ...
+
ObjectType
defines the object types for introspection
Definition: PythonQt.h:245
+
bool isPythonQtSafeObjectPtrMetaId(int id)
returns if the id is the id for PythonQtSafeObjectPtr
Definition: PythonQt.h:676
+ + + +
QByteArray typeName(const QMetaMethod &method)
Definition: PythonQtUtils.h:72
+
QString PythonQtInputChangedCB(void *callData)
declares the callback that is called from the write() function
Definition: PythonQtStdIn.h:54
+ + +
void PythonQtQObjectWrappedCB(QObject *object)
Definition: PythonQt.h:74
+
Some helper methods that allow testing of the ownership.
+ +
static PythonQtPrivate * priv()
get access to internal data (should not be used on the public API, but is used by some C functions)
Definition: PythonQt.h:555
+
void PythonQtVoidPtrCB(void *object)
Definition: PythonQt.h:73
+
internal PythonQt details
Definition: PythonQt.h:654
+
void PythonQtQObjectNoLongerWrappedCB(QObject *object)
Definition: PythonQt.h:75
+
PythonQtNewOwnerOfThis(const T &t)
Allow conversion from T to PythonQtNewOwnerOfThis<T>
Definition: PythonQt.h:127
+
QByteArray methodName(const QMetaMethod &method)
Definition: PythonQtUtils.h:61
+ +
PythonQtObjectPtr pythonQtModule() const
get access to the PythonQt module
Definition: PythonQt.h:774
+ + +
bool isPythonQtAnyObjectPtrMetaId(int id)
returns if the id is either PythonQtObjectPtr or PythonQtSafeObjectPtr
Definition: PythonQt.h:678
+ + + +
receives all signals for one QObject
+
PythonQtPassOwnershipToPython(const T &t)
Allow conversion from T to PythonQtPassOwnershipToPython<T>
Definition: PythonQt.h:110
+
bool isPythonQtObjectPtrMetaId(int id)
returns if the id is the id for PythonQtObjectPtr
Definition: PythonQt.h:674
+
#define PYTHONQT_EXPORT
+
PythonQtPassOwnershipToCPP(const T &t)
Allow conversion from T to PythonQtPassOwnershipToCPP<T>
Definition: PythonQt.h:93
+
QString PythonQtQObjectMissingAttributeCB(QObject *object, const QString &attribute)
Definition: PythonQt.h:77
+
struct _object PyObject
+
ProfilingCallbackState
enum for profiling callback
Definition: PythonQt.h:218
+
int PythonQtUpcastingOffset()
returns the offset that needs to be added to upcast an object of type T1 to T2
Definition: PythonQt.h:138
+
QByteArray signature(const QMetaMethod &method)
Definition: PythonQtUtils.h:53
+ +
a smart pointer that stores a PyObject pointer and that handles reference counting automatically
+
void PythonQtShellSetInstanceWrapperCB(void *object, PythonQtInstanceWrapper *wrapper)
Definition: PythonQt.h:79
+
void PythonQtSetInstanceWrapperOnShell(void *object, PythonQtInstanceWrapper *wrapper)
Definition: PythonQt.h:81
+
const QStringList & sharedLibrarySuffixes()
get the suffixes that are used for shared libraries
Definition: PythonQt.h:671
+
stores information about a specific signal/slot/method
+ +
QObject * PythonQtQObjectCreatorFunctionCB()
callback to create a QObject lazily
Definition: PythonQt.h:144
+
default importer implementation using QFile to load python code
+ +
TypeSlots
flags that tell PythonQt which operators to expect on the registered type
Definition: PythonQt.h:184
+ + +
The main interface to the Python Qt binding, realized as a singleton.
Definition: PythonQt.h:169
+ + +
QObject * PythonQtCreateObject()
helper template to create a derived QObject class
Definition: PythonQt.h:147
+ + +
PythonQt::ProfilingCB * profilingCB() const
returns the profiling callback, which may be NULL
Definition: PythonQt.h:777
+ +
+ + + + diff --git a/annotated.html b/annotated.html new file mode 100644 index 000000000..a1f2ef2d7 --- /dev/null +++ b/annotated.html @@ -0,0 +1,100 @@ + + + + + + + +PythonQt: Class List + + + + + + +
+
+ + + + + + +
+
PythonQt +
+
+
+ + + + + + +
+
+
+
Class List
+
+
+
Here are the classes, structs, unions and interfaces with brief descriptions:
+
[detail level 12]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
 C_PythonQtImporterDefines a python object that stores a Qt slot info
 CPythonQtThe main interface to the Python Qt binding, realized as a singleton
 CPythonQtArgumentFrameStores C++ arguments for a qt_metacall (which are created when converting data from Python to C++)
 CPythonQtBoolResultObjectDefines a python object that stores a single bool
 CPythonQtClassInfoClass that stores all required information about a Qt object (and an optional associated C++ class name)
 CParentClassInfoStore information about parent classes
 CPythonQtClassWrapper
 CPythonQtConvStatic class that offers methods for type conversion
 CPythonQtCppWrapperFactoryFactory interface for C++ classes that can be wrapped by QObject objects
 CPythonQtDebugAPISome helper methods that allow testing of the ownership
 CPythonQtDynamicClassInfo
 CPythonQtDynamicSignalInfo
 CPythonQtForeignWrapperFactory
 CPythonQtGILScope
 CPythonQtImportImplements importing of python files into PythonQt
 CModuleInfo
 CPythonQtImportFileInterface
 CPythonQtInstanceWrapperStructPython wrapper object for Qt objects and C++ objects (that are themselves wrapped by wrapper QObjects)
 CPythonQtMemberInfo
 CPythonQtMethodInfoStores information about a specific signal/slot/method
 CParameterInfoStores various informations about a parameter/type name
 CPythonQtNewOwnerOfThis
 CPythonQtObjectPtrSmart pointer that stores a PyObject pointer and that handles reference counting automatically
 CPythonQtPassOwnershipToCPP
 CPythonQtPassOwnershipToPython
 CPythonQtPrivateInternal PythonQt details
 CPythonQtProperty
 CPythonQtPropertyData
 CPythonQtQFileImporterDefault importer implementation using QFile to load python code
 CPythonQtSafeObjectPtrSmart pointer that stores a PyObject pointer and that handles reference counting automatically
 CPythonQtSignalFunctionObjectDefines a python object that stores a Qt signal info
 CPythonQtSignalReceiverReceives all signals for one QObject
 CPythonQtSignalReceiverBaseBase class for signal receivers
 CPythonQtSignalTargetStores information about a signal target
 CPythonQtSingleShotTimer
 CPythonQtSlotDecorator
 CPythonQtSlotFunctionObjectDefines a python object that stores a Qt slot info
 CPythonQtSlotInfoStores information about a slot, including a next pointer to overloaded slots
 CPythonQtStdDecorators
 CPythonQtStdInRedirectDeclares the stdin redirection class
 CPythonQtStdOutRedirectDeclares the stdout redirection class
 CPythonQtThreadStateSaver
 CPythonQtWrapper_QMetaObject
+
+
+ + + + diff --git a/bc_s.png b/bc_s.png new file mode 100644 index 0000000000000000000000000000000000000000..224b29aa9847d5a4b3902efd602b7ddf7d33e6c2 GIT binary patch literal 676 zcmV;V0$crwP)y__>=_9%My z{n931IS})GlGUF8K#6VIbs%684A^L3@%PlP2>_sk`UWPq@f;rU*V%rPy_ekbhXT&s z(GN{DxFv}*vZp`F>S!r||M`I*nOwwKX+BC~3P5N3-)Y{65c;ywYiAh-1*hZcToLHK ztpl1xomJ+Yb}K(cfbJr2=GNOnT!UFA7Vy~fBz8?J>XHsbZoDad^8PxfSa0GDgENZS zuLCEqzb*xWX2CG*b&5IiO#NzrW*;`VC9455M`o1NBh+(k8~`XCEEoC1Ybwf;vr4K3 zg|EB<07?SOqHp9DhLpS&bzgo70I+ghB_#)K7H%AMU3v}xuyQq9&Bm~++VYhF09a+U zl7>n7Jjm$K#b*FONz~fj;I->Bf;ule1prFN9FovcDGBkpg>)O*-}eLnC{6oZHZ$o% zXKW$;0_{8hxHQ>l;_*HATI(`7t#^{$(zLe}h*mqwOc*nRY9=?Sx4OOeVIfI|0V(V2 zBrW#G7Ss9wvzr@>H*`r>zE z+e8bOBgqIgldUJlG(YUDviMB`9+DH8n-s9SXRLyJHO1!=wY^79WYZMTa(wiZ!zP66 zA~!21vmF3H2{ngD;+`6j#~6j;$*f*G_2ZD1E;9(yaw7d-QnSCpK(cR1zU3qU0000< KMNUMnLSTYoA~SLT literal 0 HcmV?d00001 diff --git a/bdwn.png b/bdwn.png new file mode 100644 index 0000000000000000000000000000000000000000..940a0b950443a0bb1b216ac03c45b8a16c955452 GIT binary patch literal 147 zcmeAS@N?(olHy`uVBq!ia0vp^>_E)H!3HEvS)PKZC{Gv1kP61Pb5HX&C2wk~_T + + + + + + +PythonQt: Member List + + + + + + +
+
+ + + + + + +
+
PythonQt +
+
+
+ + + + + + +
+
+
+
PythonQt Member List
+
+
+ +

This is the complete list of members for PythonQt, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
addClassDecorators(QObject *o)PythonQt
addDecorators(QObject *o)PythonQt
addInstanceDecorators(QObject *o)PythonQt
addObject(PyObject *object, const QString &name, QObject *qObject)PythonQt
addParentClass(const char *typeName, const char *parentTypeName, int upcastingOffset=0)PythonQt
addPolymorphicHandler(const char *typeName, PythonQtPolymorphicHandlerCB *cb)PythonQt
addSignalHandler(QObject *obj, const char *signal, PyObject *module, const QString &objectname)PythonQt
addSignalHandler(QObject *obj, const char *signal, PyObject *receiver)PythonQt
addSysPath(const QString &path)PythonQt
addVariable(PyObject *object, const QString &name, const QVariant &v)PythonQt
addWrapperFactory(PythonQtCppWrapperFactory *factory)PythonQt
addWrapperFactory(PythonQtForeignWrapperFactory *factory)PythonQt
Anything enum valuePythonQt
call(PyObject *object, const QString &callable, const QVariantList &args=QVariantList(), const QVariantMap &kwargs=QVariantMap())PythonQt
call(PyObject *callable, const QVariantList &args=QVariantList(), const QVariantMap &kwargs=QVariantMap())PythonQt
callAndReturnPyObject(PyObject *callable, const QVariantList &args=QVariantList(), const QVariantMap &kwargs=QVariantMap())PythonQt
CallOverloads enum valuePythonQt
Class enum valuePythonQt
cleanup()PythonQtstatic
clearError()PythonQt
clearNotFoundCachedMembers()PythonQt
createModuleFromFile(const QString &name, const QString &filename)PythonQt
createModuleFromScript(const QString &name, const QString &script=QString())PythonQt
createUniqueModule()PythonQt
Enter enum valuePythonQt
evalCode(PyObject *object, PyObject *pycode)PythonQt
evalFile(PyObject *object, const QString &filename)PythonQt
evalScript(PyObject *object, const QString &script, int start=Py_file_input)PythonQt
evalScript(const QString &script, PyObject *globals, PyObject *locals, int start)PythonQt
ExternalHelp enum valuePythonQt
Function enum valuePythonQt
getImporterIgnorePaths()PythonQt
getMainModule()PythonQt
getNativeVariable(PyObject *object, const QString &name)PythonQt
getReturnTypeOfWrappedMethod(PyObject *module, const QString &objectname)PythonQt
getReturnTypeOfWrappedMethod(const QString &typeName, const QString &methodName)PythonQt
getVariable(PyObject *object, const QString &name)PythonQt
hadError() constPythonQt
handleError(bool printStack=true)PythonQt
helpCalled(PythonQtClassInfo *info)PythonQt
IgnoreSiteModule enum valuePythonQt
importInterface()PythonQtstatic
importModule(const QString &name)PythonQt
init(int flags=IgnoreSiteModule|RedirectStdOut, const QByteArray &pythonQtModuleName=QByteArray())PythonQtstatic
InitFlags enum namePythonQt
installDefaultImporter()PythonQtinline
introspection(PyObject *object, const QString &objectname, ObjectType type)PythonQt
introspectObject(PyObject *object, ObjectType type)PythonQt
introspectType(const QString &typeName, ObjectType type)PythonQt
Leave enum valuePythonQt
lookupCallable(PyObject *object, const QString &name)PythonQt
lookupObject(PyObject *module, const QString &name)PythonQt
Module enum valuePythonQt
ObjectType enum namePythonQt
overwriteSysPath(const QStringList &paths)PythonQt
parseFile(const QString &filename)PythonQt
parseFileWithPythonLoaders(const QString &filename)PythonQt
priv()PythonQtinlinestatic
ProfilingCallbackState enum namePythonQt
ProfilingCB typedefPythonQt
PythonAlreadyInitialized enum valuePythonQt
pythonHelpRequest(const QByteArray &cppClassName)PythonQtsignal
pythonStdErr(const QString &str)PythonQtsignal
pythonStdOut(const QString &str)PythonQtsignal
qObjectMissingAttributeCallback(QObject *o, const QString &attribute)PythonQtstatic
qObjectNoLongerWrappedCB(QObject *o)PythonQtstatic
RedirectStdOut enum valuePythonQt
registerClass(const QMetaObject *metaobject, const char *package=NULL, PythonQtQObjectCreatorFunctionCB *wrapperCreator=NULL, PythonQtShellSetInstanceWrapperCB *shell=NULL)PythonQt
registerCPPClass(const char *typeName, const char *parentTypeName=NULL, const char *package=NULL, PythonQtQObjectCreatorFunctionCB *wrapperCreator=NULL, PythonQtShellSetInstanceWrapperCB *shell=NULL)PythonQt
registerQObjectClassNames(const QStringList &names)PythonQt
removeSignalHandler(QObject *obj, const char *signal, PyObject *module, const QString &objectname)PythonQt
removeSignalHandler(QObject *obj, const char *signal, PyObject *receiver)PythonQt
removeSignalHandlers()PythonQt
removeVariable(PyObject *module, const QString &name)PythonQt
removeWrapperFactory(PythonQtCppWrapperFactory *factory)PythonQt
removeWrapperFactory(PythonQtForeignWrapperFactory *factory)PythonQt
self()PythonQtstatic
setEnableThreadSupport(bool flag)PythonQtstatic
setImporter(PythonQtImportFileInterface *importInterface)PythonQt
setImporterIgnorePaths(const QStringList &paths)PythonQt
setModuleImportPath(PyObject *module, const QStringList &paths)PythonQt
setProfilingCallback(ProfilingCB *cb)PythonQt
setQObjectMissingAttributeCallback(PythonQtQObjectMissingAttributeCB *cb)PythonQt
setQObjectNoLongerWrappedCallback(PythonQtQObjectNoLongerWrappedCB *cb)PythonQt
setQObjectWrappedCallback(PythonQtQObjectWrappedCB *cb)PythonQt
setRedirectStdInCallback(PythonQtInputChangedCB *callback, void *callbackData=0)PythonQt
setRedirectStdInCallbackEnabled(bool enabled)PythonQt
setSystemExitExceptionHandlerEnabled(bool value)PythonQt
systemExitExceptionHandlerEnabled() constPythonQt
systemExitExceptionRaised(int exitCode)PythonQtsignal
Type_Add enum valuePythonQt
Type_And enum valuePythonQt
Type_Divide enum valuePythonQt
Type_InplaceAdd enum valuePythonQt
Type_InplaceAnd enum valuePythonQt
Type_InplaceDivide enum valuePythonQt
Type_InplaceLShift enum valuePythonQt
Type_InplaceMod enum valuePythonQt
Type_InplaceMultiply enum valuePythonQt
Type_InplaceOr enum valuePythonQt
Type_InplaceRShift enum valuePythonQt
Type_InplaceSubtract enum valuePythonQt
Type_InplaceXor enum valuePythonQt
Type_Invert enum valuePythonQt
Type_Length enum valuePythonQt
Type_LShift enum valuePythonQt
Type_MappingGetItem enum valuePythonQt
Type_MappingSetItem enum valuePythonQt
Type_Mod enum valuePythonQt
Type_Multiply enum valuePythonQt
Type_NonZero enum valuePythonQt
Type_Or enum valuePythonQt
Type_RichCompare enum valuePythonQt
Type_RShift enum valuePythonQt
Type_Subtract enum valuePythonQt
Type_Xor enum valuePythonQt
TypeSlots enum namePythonQt
Variable enum valuePythonQt
+ + + + diff --git a/classPythonQt.html b/classPythonQt.html new file mode 100644 index 000000000..38d6ba444 --- /dev/null +++ b/classPythonQt.html @@ -0,0 +1,2599 @@ + + + + + + + +PythonQt: PythonQt Class Reference + + + + + + +
+
+ + + + + + +
+
PythonQt +
+
+
+ + + + + + +
+
+ +
+
PythonQt Class Reference
+
+
+ +

The main interface to the Python Qt binding, realized as a singleton. + More...

+ +

#include <PythonQt.h>

+
+Inheritance diagram for PythonQt:
+
+
+ +
+ + + + + + + + + + + + + + + + +

+Public Types

enum  InitFlags { RedirectStdOut = 1, +IgnoreSiteModule = 2, +ExternalHelp = 4, +PythonAlreadyInitialized = 8 + }
 flags that can be passed to PythonQt::init() More...
 
enum  TypeSlots {
+  Type_Add = 1, +Type_Subtract = 1 << 1, +Type_Multiply = 1 << 2, +Type_Divide = 1 << 3, +
+  Type_Mod = 1 << 4, +Type_And = 1 << 5, +Type_Or = 1 << 6, +Type_Xor = 1 << 7, +
+  Type_LShift = 1 << 8, +Type_RShift = 1 << 9, +Type_InplaceAdd = 1 << 10, +Type_InplaceSubtract = 1 << 11, +
+  Type_InplaceMultiply = 1 << 12, +Type_InplaceDivide = 1 << 13, +Type_InplaceMod = 1 << 14, +Type_InplaceAnd = 1 << 15, +
+  Type_InplaceOr = 1 << 16, +Type_InplaceXor = 1 << 17, +Type_InplaceLShift = 1 << 18, +Type_InplaceRShift = 1 << 19, +
+  Type_Length = 1 << 20, +Type_MappingSetItem = 1 << 21, +Type_MappingGetItem = 1 << 22, +Type_Invert = 1 << 29, +
+  Type_RichCompare = 1 << 30, +Type_NonZero = 1 << 31 +
+ }
 flags that tell PythonQt which operators to expect on the registered type More...
 
enum  ProfilingCallbackState { Enter = 1, +Leave = 2 + }
 enum for profiling callback More...
 
enum  ObjectType {
+  Class, +Function, +Variable, +Module, +
+  Anything, +CallOverloads +
+ }
 defines the object types for introspection More...
 
typedef void ProfilingCB(ProfilingCallbackState state, const char *className, const char *methodName, PyObject *args)
 
+ + + + + + + + + + + + +

+Signals

void pythonStdOut (const QString &str)
 emitted when python outputs something to stdout (and redirection is turned on) More...
 
void pythonStdErr (const QString &str)
 emitted when python outputs something to stderr (and redirection is turned on) More...
 
void pythonHelpRequest (const QByteArray &cppClassName)
 emitted when help() is called on a PythonQt object and ExternalHelp is enabled More...
 
void systemExitExceptionRaised (int exitCode)
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

Standard input handling
void setRedirectStdInCallback (PythonQtInputChangedCB *callback, void *callbackData=0)
 
void setRedirectStdInCallbackEnabled (bool enabled)
 
Modules
PythonQtObjectPtr getMainModule ()
 get the main module of python More...
 
PythonQtObjectPtr importModule (const QString &name)
 
PythonQtObjectPtr createModuleFromFile (const QString &name, const QString &filename)
 
PythonQtObjectPtr createModuleFromScript (const QString &name, const QString &script=QString())
 
PythonQtObjectPtr createUniqueModule ()
 
Importing/Paths
void overwriteSysPath (const QStringList &paths)
 overwrite the python sys path (call this directly after PythonQt::init() if you want to change the std python sys path) More...
 
void addSysPath (const QString &path)
 prepend a path to sys.path to allow importing from it More...
 
void setModuleImportPath (PyObject *module, const QStringList &paths)
 sets the path list of a module to the given list (important for local imports) More...
 
Registering Classes
void registerClass (const QMetaObject *metaobject, const char *package=NULL, PythonQtQObjectCreatorFunctionCB *wrapperCreator=NULL, PythonQtShellSetInstanceWrapperCB *shell=NULL)
 registers a QObject derived class to PythonQt (this is implicitly called by addObject as well) More...
 
void registerCPPClass (const char *typeName, const char *parentTypeName=NULL, const char *package=NULL, PythonQtQObjectCreatorFunctionCB *wrapperCreator=NULL, PythonQtShellSetInstanceWrapperCB *shell=NULL)
 
void registerQObjectClassNames (const QStringList &names)
 
bool addParentClass (const char *typeName, const char *parentTypeName, int upcastingOffset=0)
 
void addPolymorphicHandler (const char *typeName, PythonQtPolymorphicHandlerCB *cb)
 add a handler for polymorphic downcasting More...
 
Script Parsing and Evaluation
PythonQtObjectPtr parseFile (const QString &filename)
 parses the given file (using PythonQt's own import mechanism) and returns the python code object, this can then be used to call evalCode() More...
 
PythonQtObjectPtr parseFileWithPythonLoaders (const QString &filename)
 
QVariant evalCode (PyObject *object, PyObject *pycode)
 
QVariant evalScript (PyObject *object, const QString &script, int start=Py_file_input)
 evaluates the given script code and returns the result value More...
 
QVariant evalScript (const QString &script, PyObject *globals, PyObject *locals, int start)
 evaluates the given script code in context of given globals and locals and returns the result value More...
 
void evalFile (PyObject *object, const QString &filename)
 evaluates the given script code from file More...
 
Signal Handlers
bool addSignalHandler (QObject *obj, const char *signal, PyObject *module, const QString &objectname)
 add a signal handler to the given signal of obj and connect it to a callable objectname in module More...
 
bool removeSignalHandler (QObject *obj, const char *signal, PyObject *module, const QString &objectname)
 remove a signal handler from the given signal of obj More...
 
bool addSignalHandler (QObject *obj, const char *signal, PyObject *receiver)
 add a signal handler to the given signal of obj and connect it to a callable receiver More...
 
bool removeSignalHandler (QObject *obj, const char *signal, PyObject *receiver)
 remove a signal handler from the given signal of obj More...
 
void removeSignalHandlers ()
 globally removes all signal handlers (connections between QObjects and Python). More...
 
Variable access
void addObject (PyObject *object, const QString &name, QObject *qObject)
 add the given qObject to the python object as a variable with name (it can be removed via clearVariable) More...
 
void addVariable (PyObject *object, const QString &name, const QVariant &v)
 add the given variable to the object More...
 
void removeVariable (PyObject *module, const QString &name)
 remove the given variable More...
 
QVariant getVariable (PyObject *object, const QString &name)
 get the variable with the name of the object, returns an invalid QVariant on error More...
 
QVariant getNativeVariable (PyObject *object, const QString &name)
 get the variable with the name of the object as QVariant of type PythonQtObjectPtr, returns an invalid QVariant on error More...
 
QStringList introspection (PyObject *object, const QString &objectname, ObjectType type)
 read vars etc. in scope of an object, optional looking inside of an object objectname More...
 
QStringList introspectObject (PyObject *object, ObjectType type)
 read vars etc. in scope of the given object More...
 
QStringList introspectType (const QString &typeName, ObjectType type)
 
PythonQtObjectPtr lookupCallable (PyObject *object, const QString &name)
 
QString getReturnTypeOfWrappedMethod (PyObject *module, const QString &objectname)
 returns the return type of the method of a wrapped c++ object referenced by objectname More...
 
QString getReturnTypeOfWrappedMethod (const QString &typeName, const QString &methodName)
 returns the return type of the method methodName of a wrapped c++ type referenced by typeName More...
 
Calling Python Objects
QVariant call (PyObject *object, const QString &callable, const QVariantList &args=QVariantList(), const QVariantMap &kwargs=QVariantMap())
 call the given python callable in the scope of object, returns the result converted to a QVariant More...
 
QVariant call (PyObject *callable, const QVariantList &args=QVariantList(), const QVariantMap &kwargs=QVariantMap())
 call the given python object, returns the result converted to a QVariant More...
 
PyObjectcallAndReturnPyObject (PyObject *callable, const QVariantList &args=QVariantList(), const QVariantMap &kwargs=QVariantMap())
 call the given python object, returns the result as new PyObject More...
 
Decorations, Constructors, Wrappers...
void addInstanceDecorators (QObject *o)
 
void addClassDecorators (QObject *o)
 
void addDecorators (QObject *o)
 this will add the object both as class and instance decorator (ownership is passed to PythonQt) More...
 
void addWrapperFactory (PythonQtCppWrapperFactory *factory)
 add the given factory to PythonQt (ownership stays with caller) More...
 
void addWrapperFactory (PythonQtForeignWrapperFactory *factory)
 add the given factory to PythonQt (ownership stays with caller) More...
 
void removeWrapperFactory (PythonQtCppWrapperFactory *factory)
 remove the wrapper factory More...
 
void removeWrapperFactory (PythonQtForeignWrapperFactory *factory)
 remove the wrapper factory More...
 
+ + + + + + + + + + +

+Static Public Member Functions

Singleton Initialization
static void init (int flags=IgnoreSiteModule|RedirectStdOut, const QByteArray &pythonQtModuleName=QByteArray())
 
static void cleanup ()
 cleanup of the singleton More...
 
static PythonQtself ()
 get the singleton instance More...
 
+ + + + + + + + + + + + + + +

+Custom Importer

static PythonQtImportFileInterfaceimportInterface ()
 get access to the file importer (if set) More...
 
void setImporter (PythonQtImportFileInterface *importInterface)
 
void installDefaultImporter ()
 
void setImporterIgnorePaths (const QStringList &paths)
 set paths that the importer should ignore More...
 
const QStringList & getImporterIgnorePaths ()
 get paths that the importer should ignore More...
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Other Stuff

static PythonQtPrivatepriv ()
 get access to internal data (should not be used on the public API, but is used by some C functions) More...
 
static void qObjectNoLongerWrappedCB (QObject *o)
 call the callback if it is set More...
 
static QString qObjectMissingAttributeCallback (QObject *o, const QString &attribute)
 call the callback if it is set More...
 
static void setEnableThreadSupport (bool flag)
 
void clearNotFoundCachedMembers ()
 
bool handleError (bool printStack=true)
 
bool hadError () const
 return true if handleError() has been called and an error occurred. More...
 
void clearError ()
 
void setSystemExitExceptionHandlerEnabled (bool value)
 
bool systemExitExceptionHandlerEnabled () const
 
void setQObjectWrappedCallback (PythonQtQObjectWrappedCB *cb)
 set a callback that is called when a QObject with parent == NULL is wrapped by PythonQt More...
 
void setQObjectNoLongerWrappedCallback (PythonQtQObjectNoLongerWrappedCB *cb)
 set a callback that is called when a QObject with parent == NULL is no longer wrapped by PythonQt More...
 
void setQObjectMissingAttributeCallback (PythonQtQObjectMissingAttributeCB *cb)
 set a callback that is called when a QObject does not have a specific attribute. More...
 
PyObjecthelpCalled (PythonQtClassInfo *info)
 called by internal help methods More...
 
PythonQtObjectPtr lookupObject (PyObject *module, const QString &name)
 
void setProfilingCallback (ProfilingCB *cb)
 sets a callback that is called before and after function calls for profiling More...
 
+

Detailed Description

+

The main interface to the Python Qt binding, realized as a singleton.

+

Use PythonQt::init() to initialize the singleton and PythonQt::self() to access it. While there can be only one PythonQt instance, you can have any number of Python context to do scripting in. One possibility is to use createModuleFromFile(), createModuleFromScript() or createUniqueModule() to get a context that is separated from the other contexts. Alternatively you can use Python dicts as contexts for script evaluation, but you will need to populate the dict with the builtins instance to have all Pythons available when running code in the scope of a dict.

+ +

Definition at line 169 of file PythonQt.h.

+

Member Typedef Documentation

+ +

◆ ProfilingCB

+ +
+
+ + + + +
typedef void PythonQt::ProfilingCB(ProfilingCallbackState state, const char *className, const char *methodName, PyObject *args)
+
+

callback for profiling. className and methodName are only passed when state == Enter, otherwise they are NULL.

+ +

Definition at line 225 of file PythonQt.h.

+ +
+
+

Member Enumeration Documentation

+ +

◆ InitFlags

+ +
+
+ + + + +
enum PythonQt::InitFlags
+
+ +

flags that can be passed to PythonQt::init()

+ + + + + +
Enumerator
RedirectStdOut 

< sets if the std out/err is redirected to pythonStdOut() and pythonStdErr() signals

+
IgnoreSiteModule 

< sets if Python should ignore the site module

+
ExternalHelp 

< sets if help() calls on PythonQt modules are forwarded to the pythonHelpRequest() signal

+
PythonAlreadyInitialized 

< sets that PythonQt should not can PyInitialize, since it is already done

+
+ +

Definition at line 176 of file PythonQt.h.

+
176  {
177  RedirectStdOut = 1,
178  IgnoreSiteModule = 2,
179  ExternalHelp = 4,
181  };
< sets if help() calls on PythonQt modules are forwarded to the pythonHelpRequest() signal
Definition: PythonQt.h:179
+
< sets if Python should ignore the site module
Definition: PythonQt.h:178
+
< sets that PythonQt should not can PyInitialize, since it is already done
Definition: PythonQt.h:180
+
< sets if the std out/err is redirected to pythonStdOut() and pythonStdErr() signals
Definition: PythonQt.h:177
+
+
+
+ +

◆ ObjectType

+ +
+
+ + + + +
enum PythonQt::ObjectType
+
+ +

defines the object types for introspection

+ + + + + + + +
Enumerator
Class 
Function 
Variable 
Module 
Anything 
CallOverloads 
+ +

Definition at line 245 of file PythonQt.h.

+ +
+
+ +

◆ ProfilingCallbackState

+ +
+
+ +

enum for profiling callback

+ + + +
Enumerator
Enter 
Leave 
+ +

Definition at line 218 of file PythonQt.h.

+
218  {
219  Enter = 1,
220  Leave = 2
221  };
+ +
+
+
+ +

◆ TypeSlots

+ +
+
+ + + + +
enum PythonQt::TypeSlots
+
+ +

flags that tell PythonQt which operators to expect on the registered type

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
Enumerator
Type_Add 
Type_Subtract 
Type_Multiply 
Type_Divide 
Type_Mod 
Type_And 
Type_Or 
Type_Xor 
Type_LShift 
Type_RShift 
Type_InplaceAdd 
Type_InplaceSubtract 
Type_InplaceMultiply 
Type_InplaceDivide 
Type_InplaceMod 
Type_InplaceAnd 
Type_InplaceOr 
Type_InplaceXor 
Type_InplaceLShift 
Type_InplaceRShift 
Type_Length 
Type_MappingSetItem 
Type_MappingGetItem 
Type_Invert 
Type_RichCompare 
Type_NonZero 
+ +

Definition at line 184 of file PythonQt.h.

+
184  {
185  Type_Add = 1,
186  Type_Subtract = 1 << 1,
187  Type_Multiply = 1 << 2,
188  Type_Divide = 1 << 3,
189  Type_Mod = 1 << 4,
190  Type_And = 1 << 5,
191  Type_Or = 1 << 6,
192  Type_Xor = 1 << 7,
193  Type_LShift = 1 << 8,
194  Type_RShift = 1 << 9,
195 
196  Type_InplaceAdd = 1 << 10,
197  Type_InplaceSubtract = 1 << 11,
198  Type_InplaceMultiply = 1 << 12,
199  Type_InplaceDivide = 1 << 13,
200  Type_InplaceMod = 1 << 14,
201  Type_InplaceAnd = 1 << 15,
202  Type_InplaceOr = 1 << 16,
203  Type_InplaceXor = 1 << 17,
204  Type_InplaceLShift = 1 << 18,
205  Type_InplaceRShift = 1 << 19,
206 
207  Type_Length = 1 << 20,
208  Type_MappingSetItem = 1 << 21,
209  Type_MappingGetItem = 1 << 22,
210 
211  Type_Invert = 1 << 29,
212  Type_RichCompare = 1 << 30,
213  Type_NonZero = 1 << 31,
214 
215  };
+ + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+

Member Function Documentation

+ +

◆ addClassDecorators()

+ +
+
+ + + + + + + + +
void PythonQt::addClassDecorators (QObject * o)
+
+

add an object whose slots will be used as decorator slots for class objects (ownership is passed to PythonQt)

+

The slots need to follow the following convention:

    +
  • SomeClass* new_SomeClass(...)
  • +
  • QVariant new_SomeClass(...)
  • +
  • void delete_SomeClass(SomeClass*)
  • +
  • ... static_SomeClass_someName(...)
  • +
+

This will add:

    +
  • a constructor
  • +
  • a constructor which generates a QVariant
  • +
  • a destructor (only useful for CPP objects)
  • +
  • a static decorator slot which will be available on the MetaObject (visible in PythonQt module)
  • +
+ +
+
+ +

◆ addDecorators()

+ +
+
+ + + + + + + + +
void PythonQt::addDecorators (QObject * o)
+
+ +

this will add the object both as class and instance decorator (ownership is passed to PythonQt)

+ +
+
+ +

◆ addInstanceDecorators()

+ +
+
+ + + + + + + + +
void PythonQt::addInstanceDecorators (QObject * o)
+
+

add an object whose slots will be used as decorator slots for other QObjects or CPP classes. The slots need to follow the convention that the first argument is a pointer to the wrapped object. (ownership is passed to PythonQt)

+

Example:

+

A slot with the signature

+
bool doSomething(QWidget* w, int a)

will extend QWidget instances (and derived classes) with a "bool doSomething(int a)" slot that will be called with the concrete instance as first argument. So in Python you can now e.g. call

+
someWidget.doSomething(12)

without QWidget really having this method. This allows to easily make normal methods of Qt classes callable by forwarding them with such decorator slots or to make CPP classes (which are not derived from QObject) callable from Python.

+ +
+
+ +

◆ addObject()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void PythonQt::addObject (PyObjectobject,
const QString & name,
QObject * qObject 
)
+
+ +

add the given qObject to the python object as a variable with name (it can be removed via clearVariable)

+ +
+
+ +

◆ addParentClass()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
bool PythonQt::addParentClass (const char * typeName,
const char * parentTypeName,
int upcastingOffset = 0 
)
+
+

add a parent class relation to the given typeName, the upcastingOffset is needed for multiple inheritance and can be calculated using PythonQtUpcastingOffset<type,parentType>(), which also verifies that type is really derived from parentType. Returns false if the typeName was not yet registered.

+ +
+
+ +

◆ addPolymorphicHandler()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void PythonQt::addPolymorphicHandler (const char * typeName,
PythonQtPolymorphicHandlerCBcb 
)
+
+ +

add a handler for polymorphic downcasting

+ +
+
+ +

◆ addSignalHandler() [1/2]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool PythonQt::addSignalHandler (QObject * obj,
const char * signal,
PyObjectmodule,
const QString & objectname 
)
+
+ +

add a signal handler to the given signal of obj and connect it to a callable objectname in module

+ +
+
+ +

◆ addSignalHandler() [2/2]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
bool PythonQt::addSignalHandler (QObject * obj,
const char * signal,
PyObjectreceiver 
)
+
+ +

add a signal handler to the given signal of obj and connect it to a callable receiver

+ +
+
+ +

◆ addSysPath()

+ +
+
+ + + + + + + + +
void PythonQt::addSysPath (const QString & path)
+
+ +

prepend a path to sys.path to allow importing from it

+ +
+
+ +

◆ addVariable()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void PythonQt::addVariable (PyObjectobject,
const QString & name,
const QVariant & v 
)
+
+ +

add the given variable to the object

+ +
+
+ +

◆ addWrapperFactory() [1/2]

+ +
+
+ + + + + + + + +
void PythonQt::addWrapperFactory (PythonQtCppWrapperFactoryfactory)
+
+ +

add the given factory to PythonQt (ownership stays with caller)

+ +
+
+ +

◆ addWrapperFactory() [2/2]

+ +
+
+ + + + + + + + +
void PythonQt::addWrapperFactory (PythonQtForeignWrapperFactoryfactory)
+
+ +

add the given factory to PythonQt (ownership stays with caller)

+ +
+
+ +

◆ call() [1/2]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
QVariant PythonQt::call (PyObjectobject,
const QString & callable,
const QVariantList & args = QVariantList(),
const QVariantMap & kwargs = QVariantMap() 
)
+
+ +

call the given python callable in the scope of object, returns the result converted to a QVariant

+ +
+
+ +

◆ call() [2/2]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
QVariant PythonQt::call (PyObjectcallable,
const QVariantList & args = QVariantList(),
const QVariantMap & kwargs = QVariantMap() 
)
+
+ +

call the given python object, returns the result converted to a QVariant

+ +
+
+ +

◆ callAndReturnPyObject()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
PyObject* PythonQt::callAndReturnPyObject (PyObjectcallable,
const QVariantList & args = QVariantList(),
const QVariantMap & kwargs = QVariantMap() 
)
+
+ +

call the given python object, returns the result as new PyObject

+ +
+
+ +

◆ cleanup()

+ +
+
+ + + + + +
+ + + + + + + +
static void PythonQt::cleanup ()
+
+static
+
+ +

cleanup of the singleton

+ +
+
+ +

◆ clearError()

+ +
+
+ + + + + + + +
void PythonQt::clearError ()
+
+

reset error flag. After calling this, hadError() will return false.

See also
hadError()
+ +
+
+ +

◆ clearNotFoundCachedMembers()

+ +
+
+ + + + + + + +
void PythonQt::clearNotFoundCachedMembers ()
+
+

clear all NotFound entries on all class infos, to ensure that newly loaded wrappers can add methods even when the object was wrapped by PythonQt before the wrapper was loaded

+ +
+
+ +

◆ createModuleFromFile()

+ +
+
+ + + + + + + + + + + + + + + + + + +
PythonQtObjectPtr PythonQt::createModuleFromFile (const QString & name,
const QString & filename 
)
+
+

creates the new module name and evaluates the given file in the context of that module If the script is empty, the module contains no initial code. You can use evalScript/evalCode to add code to a module later on. The user needs to make sure that the name is unique in the python module dictionary.

+ +
+
+ +

◆ createModuleFromScript()

+ +
+
+ + + + + + + + + + + + + + + + + + +
PythonQtObjectPtr PythonQt::createModuleFromScript (const QString & name,
const QString & script = QString() 
)
+
+

creates the new module name and evaluates the given script in the context of that module. If the script is empty, the module contains no initial code. You can use evalScript/evalCode to add code to a module later on. The user needs to make sure that the name is unique in the python module dictionary.

+ +
+
+ +

◆ createUniqueModule()

+ +
+
+ + + + + + + +
PythonQtObjectPtr PythonQt::createUniqueModule ()
+
+

create a uniquely named module, you can use evalFile or evalScript to populate the module with script code

+ +
+
+ +

◆ evalCode()

+ +
+
+ + + + + + + + + + + + + + + + + + +
QVariant PythonQt::evalCode (PyObjectobject,
PyObjectpycode 
)
+
+

evaluates the given code and returns the result value (use Py_Compile etc. to create pycode from string) If pycode is NULL, a python error is printed.

+ +
+
+ +

◆ evalFile()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void PythonQt::evalFile (PyObjectobject,
const QString & filename 
)
+
+ +

evaluates the given script code from file

+ +
+
+ +

◆ evalScript() [1/2]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
QVariant PythonQt::evalScript (PyObjectobject,
const QString & script,
int start = Py_file_input 
)
+
+ +

evaluates the given script code and returns the result value

+ +
+
+ +

◆ evalScript() [2/2]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
QVariant PythonQt::evalScript (const QString & script,
PyObjectglobals,
PyObjectlocals,
int start 
)
+
+ +

evaluates the given script code in context of given globals and locals and returns the result value

+ +
+
+ +

◆ getImporterIgnorePaths()

+ +
+
+ + + + + + + +
const QStringList& PythonQt::getImporterIgnorePaths ()
+
+ +

get paths that the importer should ignore

+ +
+
+ +

◆ getMainModule()

+ +
+
+ + + + + + + +
PythonQtObjectPtr PythonQt::getMainModule ()
+
+ +

get the main module of python

+ +
+
+ +

◆ getNativeVariable()

+ +
+
+ + + + + + + + + + + + + + + + + + +
QVariant PythonQt::getNativeVariable (PyObjectobject,
const QString & name 
)
+
+ +

get the variable with the name of the object as QVariant of type PythonQtObjectPtr, returns an invalid QVariant on error

+ +
+
+ +

◆ getReturnTypeOfWrappedMethod() [1/2]

+ +
+
+ + + + + + + + + + + + + + + + + + +
QString PythonQt::getReturnTypeOfWrappedMethod (PyObjectmodule,
const QString & objectname 
)
+
+ +

returns the return type of the method of a wrapped c++ object referenced by objectname

+ +
+
+ +

◆ getReturnTypeOfWrappedMethod() [2/2]

+ +
+
+ + + + + + + + + + + + + + + + + + +
QString PythonQt::getReturnTypeOfWrappedMethod (const QString & typeName,
const QString & methodName 
)
+
+ +

returns the return type of the method methodName of a wrapped c++ type referenced by typeName

+ +
+
+ +

◆ getVariable()

+ +
+
+ + + + + + + + + + + + + + + + + + +
QVariant PythonQt::getVariable (PyObjectobject,
const QString & name 
)
+
+ +

get the variable with the name of the object, returns an invalid QVariant on error

+ +
+
+ +

◆ hadError()

+ +
+
+ + + + + + + +
bool PythonQt::hadError () const
+
+ +

return true if handleError() has been called and an error occurred.

+ +
+
+ +

◆ handleError()

+ +
+
+ + + + + + + + +
bool PythonQt::handleError (bool printStack = true)
+
+

handle a python error, call this when a python function fails. If no error occurred, it returns false. The error is currently just output to the python stderr, future version might implement better trace printing

+ +
+
+ +

◆ helpCalled()

+ +
+
+ + + + + + + + +
PyObject* PythonQt::helpCalled (PythonQtClassInfoinfo)
+
+ +

called by internal help methods

+ +
+
+ +

◆ importInterface()

+ +
+
+ + + + + +
+ + + + + + + +
static PythonQtImportFileInterface* PythonQt::importInterface ()
+
+static
+
+ +

get access to the file importer (if set)

+ +
+
+ +

◆ importModule()

+ +
+
+ + + + + + + + +
PythonQtObjectPtr PythonQt::importModule (const QString & name)
+
+

import the given module and return a reference to it (useful to import e.g. "sys" and call something on it) If a module is already imported, this returns the already imported module.

+ +
+
+ +

◆ init()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static void PythonQt::init (int flags = IgnoreSiteModule|RedirectStdOut,
const QByteArray & pythonQtModuleName = QByteArray() 
)
+
+static
+
+

initialize the python qt binding (flags are a or combination of PythonQt::InitFlags), if pythonQtModuleName is given it defines the name of the python module that PythonQt will add, otherwise "PythonQt" is used. This can be used to e.g. pass in PySide or PyQt4 to make it more compatible.

+ +
+
+ +

◆ installDefaultImporter()

+ +
+
+ + + + + +
+ + + + + + + +
void PythonQt::installDefaultImporter ()
+
+inline
+
+

this installs the default QFile importer (which effectively does a setImporter(NULL)) (without calling setImporter or installDefaultImporter at least once, the default python import mechanism is in place) the default importer allows to import files from anywhere QFile can read from, including the Qt resource system using ":". Keep in mind that you need to extend "sys.path" with ":" to be able to import from the Qt resources.

+ +

Definition at line 537 of file PythonQt.h.

+
537 { setImporter(NULL); }
void setImporter(PythonQtImportFileInterface *importInterface)
+
+
+
+ +

◆ introspection()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
QStringList PythonQt::introspection (PyObjectobject,
const QString & objectname,
ObjectType type 
)
+
+ +

read vars etc. in scope of an object, optional looking inside of an object objectname

+ +
+
+ +

◆ introspectObject()

+ +
+
+ + + + + + + + + + + + + + + + + + +
QStringList PythonQt::introspectObject (PyObjectobject,
ObjectType type 
)
+
+ +

read vars etc. in scope of the given object

+ +
+
+ +

◆ introspectType()

+ +
+
+ + + + + + + + + + + + + + + + + + +
QStringList PythonQt::introspectType (const QString & typeName,
ObjectType type 
)
+
+

read vars etc. in scope of the type object called typename. First the typename of the form module.type is split into module and type. Then the module is looked up in sys.modules. If the module or type is not found there, then the type is looked up in the builtin module.

+ +
+
+ +

◆ lookupCallable()

+ +
+
+ + + + + + + + + + + + + + + + + + +
PythonQtObjectPtr PythonQt::lookupCallable (PyObjectobject,
const QString & name 
)
+
+

returns the found callable object or NULL

Returns
new reference
+ +
+
+ +

◆ lookupObject()

+ +
+
+ + + + + + + + + + + + + + + + + + +
PythonQtObjectPtr PythonQt::lookupObject (PyObjectmodule,
const QString & name 
)
+
+

returns the found object or NULL

Returns
new reference
+ +
+
+ +

◆ overwriteSysPath()

+ +
+
+ + + + + + + + +
void PythonQt::overwriteSysPath (const QStringList & paths)
+
+ +

overwrite the python sys path (call this directly after PythonQt::init() if you want to change the std python sys path)

+ +
+
+ +

◆ parseFile()

+ +
+
+ + + + + + + + +
PythonQtObjectPtr PythonQt::parseFile (const QString & filename)
+
+ +

parses the given file (using PythonQt's own import mechanism) and returns the python code object, this can then be used to call evalCode()

+ +
+
+ +

◆ parseFileWithPythonLoaders()

+ +
+
+ + + + + + + + +
PythonQtObjectPtr PythonQt::parseFileWithPythonLoaders (const QString & filename)
+
+

Parses the given file and returns the python code object, this can then be used to call evalCode() It uses Python's importlib machinery to load the file's code and supports source and sourceless loading and generation of cache files. This method is PY3K only!

+ +
+
+ +

◆ priv()

+ +
+
+ + + + + +
+ + + + + + + +
static PythonQtPrivate* PythonQt::priv ()
+
+inlinestatic
+
+ +

get access to internal data (should not be used on the public API, but is used by some C functions)

+ +

Definition at line 555 of file PythonQt.h.

+
555 { return _self->_p; }
+

Referenced by PythonQtConvertListOfKnownClassToPythonList(), and PythonQtConvertPythonListToListOfKnownClass().

+ +
+
+ +

◆ pythonHelpRequest

+ +
+
+ + + + + +
+ + + + + + + + +
void PythonQt::pythonHelpRequest (const QByteArray & cppClassName)
+
+signal
+
+ +

emitted when help() is called on a PythonQt object and ExternalHelp is enabled

+ +
+
+ +

◆ pythonStdErr

+ +
+
+ + + + + +
+ + + + + + + + +
void PythonQt::pythonStdErr (const QString & str)
+
+signal
+
+ +

emitted when python outputs something to stderr (and redirection is turned on)

+ +
+
+ +

◆ pythonStdOut

+ +
+
+ + + + + +
+ + + + + + + + +
void PythonQt::pythonStdOut (const QString & str)
+
+signal
+
+ +

emitted when python outputs something to stdout (and redirection is turned on)

+ +
+
+ +

◆ qObjectMissingAttributeCallback()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static QString PythonQt::qObjectMissingAttributeCallback (QObject * o,
const QString & attribute 
)
+
+static
+
+ +

call the callback if it is set

+ +
+
+ +

◆ qObjectNoLongerWrappedCB()

+ +
+
+ + + + + +
+ + + + + + + + +
static void PythonQt::qObjectNoLongerWrappedCB (QObject * o)
+
+static
+
+ +

call the callback if it is set

+ +
+
+ +

◆ registerClass()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void PythonQt::registerClass (const QMetaObject * metaobject,
const char * package = NULL,
PythonQtQObjectCreatorFunctionCBwrapperCreator = NULL,
PythonQtShellSetInstanceWrapperCBshell = NULL 
)
+
+ +

registers a QObject derived class to PythonQt (this is implicitly called by addObject as well)

+ +
+
+ +

◆ registerCPPClass()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void PythonQt::registerCPPClass (const char * typeName,
const char * parentTypeName = NULL,
const char * package = NULL,
PythonQtQObjectCreatorFunctionCBwrapperCreator = NULL,
PythonQtShellSetInstanceWrapperCBshell = NULL 
)
+
+

add a wrapper object for the given QMetaType typeName, also does an addClassDecorators() to add constructors for variants (ownership of wrapper is passed to PythonQt)

+

Make sure that you have done a qRegisterMetaType first, if typeName is a user type!

+

This will add a wrapper object that is used to make calls to the given classname typeName. All slots that take a pointer to typeName as the first argument will be callable from Python on a variant object that contains such a type.

+ +
+
+ +

◆ registerQObjectClassNames()

+ +
+
+ + + + + + + + +
void PythonQt::registerQObjectClassNames (const QStringList & names)
+
+

as an alternative to registerClass, you can tell PythonQt the names of QObject derived classes and it will register the classes when it first sees a pointer to such a derived class

+ +
+
+ +

◆ removeSignalHandler() [1/2]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool PythonQt::removeSignalHandler (QObject * obj,
const char * signal,
PyObjectmodule,
const QString & objectname 
)
+
+ +

remove a signal handler from the given signal of obj

+ +
+
+ +

◆ removeSignalHandler() [2/2]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
bool PythonQt::removeSignalHandler (QObject * obj,
const char * signal,
PyObjectreceiver 
)
+
+ +

remove a signal handler from the given signal of obj

+ +
+
+ +

◆ removeSignalHandlers()

+ +
+
+ + + + + + + +
void PythonQt::removeSignalHandlers ()
+
+ +

globally removes all signal handlers (connections between QObjects and Python).

+ +
+
+ +

◆ removeVariable()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void PythonQt::removeVariable (PyObjectmodule,
const QString & name 
)
+
+ +

remove the given variable

+ +
+
+ +

◆ removeWrapperFactory() [1/2]

+ +
+
+ + + + + + + + +
void PythonQt::removeWrapperFactory (PythonQtCppWrapperFactoryfactory)
+
+ +

remove the wrapper factory

+ +
+
+ +

◆ removeWrapperFactory() [2/2]

+ +
+
+ + + + + + + + +
void PythonQt::removeWrapperFactory (PythonQtForeignWrapperFactoryfactory)
+
+ +

remove the wrapper factory

+ +
+
+ +

◆ self()

+ +
+
+ + + + + +
+ + + + + + + +
static PythonQt* PythonQt::self ()
+
+static
+
+ +

get the singleton instance

+ +
+
+ +

◆ setEnableThreadSupport()

+ +
+
+ + + + + +
+ + + + + + + + +
static void PythonQt::setEnableThreadSupport (bool flag)
+
+static
+
+

Enable GIL and thread state handling (turned off by default). If you want to use Python threading, you have to call this with true early in your main thread, before you launch any threads in Python. It can be called before or after PythonQt::init().

+ +
+
+ +

◆ setImporter()

+ +
+
+ + + + + + + + +
void PythonQt::setImporter (PythonQtImportFileInterfaceimportInterface)
+
+

replace the internal import implementation and use the supplied interface to load files (both py and pyc files) (this method should be called directly after initialization of init() and before calling overwriteSysPath(). On the first call to this method, it will install a generic PythonQt importer in Pythons "path_hooks". This is not reversible, so even setting setImporter(NULL) afterwards will keep the custom PythonQt importer with a QFile default import interface. Subsequent python import calls will make use of the passed importInterface which forwards all import calls to the given importInterface. Passing NULL will install a default QFile importer. (importInterface ownership stays with caller)

+ +
+
+ +

◆ setImporterIgnorePaths()

+ +
+
+ + + + + + + + +
void PythonQt::setImporterIgnorePaths (const QStringList & paths)
+
+ +

set paths that the importer should ignore

+ +
+
+ +

◆ setModuleImportPath()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void PythonQt::setModuleImportPath (PyObjectmodule,
const QStringList & paths 
)
+
+ +

sets the path list of a module to the given list (important for local imports)

+ +
+
+ +

◆ setProfilingCallback()

+ +
+
+ + + + + + + + +
void PythonQt::setProfilingCallback (ProfilingCBcb)
+
+ +

sets a callback that is called before and after function calls for profiling

+ +
+
+ +

◆ setQObjectMissingAttributeCallback()

+ +
+
+ + + + + + + + +
void PythonQt::setQObjectMissingAttributeCallback (PythonQtQObjectMissingAttributeCBcb)
+
+ +

set a callback that is called when a QObject does not have a specific attribute.

+ +
+
+ +

◆ setQObjectNoLongerWrappedCallback()

+ +
+
+ + + + + + + + +
void PythonQt::setQObjectNoLongerWrappedCallback (PythonQtQObjectNoLongerWrappedCBcb)
+
+ +

set a callback that is called when a QObject with parent == NULL is no longer wrapped by PythonQt

+ +
+
+ +

◆ setQObjectWrappedCallback()

+ +
+
+ + + + + + + + +
void PythonQt::setQObjectWrappedCallback (PythonQtQObjectWrappedCBcb)
+
+ +

set a callback that is called when a QObject with parent == NULL is wrapped by PythonQt

+ +
+
+ +

◆ setRedirectStdInCallback()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void PythonQt::setRedirectStdInCallback (PythonQtInputChangedCBcallback,
void * callbackData = 0 
)
+
+

Overwrite default handling of stdin using a custom callback. It internally backup the original 'sys.stdin' into 'sys.pythonqt_original_stdin'

+ +
+
+ +

◆ setRedirectStdInCallbackEnabled()

+ +
+
+ + + + + + + + +
void PythonQt::setRedirectStdInCallbackEnabled (bool enabled)
+
+

Enable or disable stdin custom callback. It resets 'sys.stdin' using either 'sys.pythonqt_stdin' or 'sys.pythonqt_original_stdin'

+ +
+
+ +

◆ setSystemExitExceptionHandlerEnabled()

+ +
+
+ + + + + + + + +
void PythonQt::setSystemExitExceptionHandlerEnabled (bool value)
+
+

if set to true, the systemExitExceptionRaised signal will be emitted if exception SystemExit is caught

See also
handleError()
+ +
+
+ +

◆ systemExitExceptionHandlerEnabled()

+ +
+
+ + + + + + + +
bool PythonQt::systemExitExceptionHandlerEnabled () const
+
+

return true if SystemExit exception is handled by PythonQt

See also
setSystemExitExceptionHandlerEnabled()
+ +
+
+ +

◆ systemExitExceptionRaised

+ +
+
+ + + + + +
+ + + + + + + + +
void PythonQt::systemExitExceptionRaised (int exitCode)
+
+signal
+
+

emitted when both custom SystemExit exception handler is enabled and a SystemExit exception is raised.

See also
setSystemExitExceptionHandlerEnabled(bool)
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/classPythonQt.png b/classPythonQt.png new file mode 100644 index 0000000000000000000000000000000000000000..9d491ac51a62f4f276c40fcbd5345771e9407295 GIT binary patch literal 382 zcmeAS@N?(olHy`uVBq!ia0vp^4nQ2h!3-qlB{r7>DTx4|5ZC|z{{xvX-h3_XKQsZz z0^)eaG!Yvkx!ktBiLrRuxI?~LmRoA4z#{hi zM@rB08CHw@maAcRn8d|+AV{1cV+m`_^hpa?_nd#tk#)en;2;B=K?5Vthhzqz{VWYY z>lry@bsrfQo#}r5NrgSUVTw6(%iag;@0{Y_bn5t$dz=U2jXV_AuVUIQC( + + + + + + +PythonQt: Member List + + + + + + +
+
+ + + + + + +
+
PythonQt +
+
+
+ + + + + + +
+
+
+
PythonQtArgumentFrame Member List
+
+
+ +

This is the complete list of members for PythonQtArgumentFrame, including all inherited members.

+ + + + + + + +
cleanupFreeList()PythonQtArgumentFramestatic
deleteFrame(PythonQtArgumentFrame *frame)PythonQtArgumentFramestatic
newFrame()PythonQtArgumentFramestatic
nextPODPtr()PythonQtArgumentFrame
nextVariantPtr()PythonQtArgumentFrame
reset()PythonQtArgumentFrame
+ + + + diff --git a/classPythonQtArgumentFrame.html b/classPythonQtArgumentFrame.html new file mode 100644 index 000000000..3eee506dc --- /dev/null +++ b/classPythonQtArgumentFrame.html @@ -0,0 +1,234 @@ + + + + + + + +PythonQt: PythonQtArgumentFrame Class Reference + + + + + + +
+
+ + + + + + +
+
PythonQt +
+
+
+ + + + + + +
+
+ +
+
PythonQtArgumentFrame Class Reference
+
+
+ +

Stores C++ arguments for a qt_metacall (which are created when converting data from Python to C++) + More...

+ +

#include <PythonQtMisc.h>

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

+Public Member Functions

void reset ()
 Resets the pod and variant argument lists to empty lists. More...
 
QVariant * nextVariantPtr ()
 Get next pointer to a variant. More...
 
quint64 * nextPODPtr ()
 Get next pointer to a POD. More...
 
+ + + + + + + + + + +

+Static Public Member Functions

static PythonQtArgumentFramenewFrame ()
 Create a new (empty) frame (which is typically reused from a freelist) More...
 
static void deleteFrame (PythonQtArgumentFrame *frame)
 Frees the frame (resetting it and putting it back to the freelist) More...
 
static void cleanupFreeList ()
 Frees all PythonQtArgumentFrame frames that are stored. More...
 
+

Detailed Description

+

Stores C++ arguments for a qt_metacall (which are created when converting data from Python to C++)

+ +

Definition at line 78 of file PythonQtMisc.h.

+

Member Function Documentation

+ +

◆ cleanupFreeList()

+ +
+
+ + + + + +
+ + + + + + + +
static void PythonQtArgumentFrame::cleanupFreeList ()
+
+static
+
+ +

Frees all PythonQtArgumentFrame frames that are stored.

+ +
+
+ +

◆ deleteFrame()

+ +
+
+ + + + + +
+ + + + + + + + +
static void PythonQtArgumentFrame::deleteFrame (PythonQtArgumentFrameframe)
+
+static
+
+ +

Frees the frame (resetting it and putting it back to the freelist)

+ +
+
+ +

◆ newFrame()

+ +
+
+ + + + + +
+ + + + + + + +
static PythonQtArgumentFrame* PythonQtArgumentFrame::newFrame ()
+
+static
+
+ +

Create a new (empty) frame (which is typically reused from a freelist)

+ +
+
+ +

◆ nextPODPtr()

+ +
+
+ + + + + + + +
quint64* PythonQtArgumentFrame::nextPODPtr ()
+
+ +

Get next pointer to a POD.

+ +
+
+ +

◆ nextVariantPtr()

+ +
+
+ + + + + + + +
QVariant* PythonQtArgumentFrame::nextVariantPtr ()
+
+ +

Get next pointer to a variant.

+ +
+
+ +

◆ reset()

+ +
+
+ + + + + + + +
void PythonQtArgumentFrame::reset ()
+
+ +

Resets the pod and variant argument lists to empty lists.

+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/classPythonQtClassInfo-members.html b/classPythonQtClassInfo-members.html new file mode 100644 index 000000000..7df480be1 --- /dev/null +++ b/classPythonQtClassInfo-members.html @@ -0,0 +1,102 @@ + + + + + + + +PythonQt: Member List + + + + + + +
+
+ + + + + + +
+
PythonQt +
+
+
+ + + + + + +
+
+
+
PythonQtClassInfo Member List
+
+
+ +

This is the complete list of members for PythonQtClassInfo, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
addConstructor(PythonQtSlotInfo *info)PythonQtClassInfo
addDecoratorSlot(PythonQtSlotInfo *info)PythonQtClassInfo
addNestedClass(PythonQtClassInfo *info)PythonQtClassInfo
addParentClass(const ParentClassInfo &info)PythonQtClassInfoinline
addPolymorphicHandler(PythonQtPolymorphicHandlerCB *cb)PythonQtClassInfoinline
castDownIfPossible(void *ptr, PythonQtClassInfo **resultClassInfo)PythonQtClassInfo
castTo(void *ptr, const char *classname)PythonQtClassInfo
className() constPythonQtClassInfo
clearNotFoundCachedMembers()PythonQtClassInfo
constructors()PythonQtClassInfo
copyObject(void *cppObject)PythonQtClassInfo
decorator()PythonQtClassInfo
destructor()PythonQtClassInfo
findEnumWrapper(const QByteArray &name, PythonQtClassInfo *localScope, bool *isLocalEnum=NULL)PythonQtClassInfostatic
getClassInfoForProperty(const QString &name)PythonQtClassInfo
getCopyConstructor()PythonQtClassInfo
getPythonTypeForProperty(const QString &name)PythonQtClassInfo
help()PythonQtClassInfo
inherits(const char *classname)PythonQtClassInfo
inherits(PythonQtClassInfo *info)PythonQtClassInfo
isCPPWrapper()PythonQtClassInfoinline
isQObject()PythonQtClassInfoinline
member(const char *member)PythonQtClassInfo
memberList()PythonQtClassInfo
metaObject()PythonQtClassInfoinline
metaTypeId()PythonQtClassInfoinline
nestedClasses()PythonQtClassInfoinline
propertyList()PythonQtClassInfo
PythonQtClassInfo()PythonQtClassInfo
pythonQtClassWrapper()PythonQtClassInfoinline
referenceCountingRefCB()PythonQtClassInfo
referenceCountingUnrefCB()PythonQtClassInfo
setDecoratorProvider(PythonQtQObjectCreatorFunctionCB *cb)PythonQtClassInfo
setDestructor(PythonQtSlotInfo *info)PythonQtClassInfo
setMetaObject(const QMetaObject *meta)PythonQtClassInfo
setPythonQtClassWrapper(PyObject *obj)PythonQtClassInfoinline
setReferenceCounting(PythonQtVoidPtrCB *refCB, PythonQtVoidPtrCB *unrefCB)PythonQtClassInfo
setShellSetInstanceWrapperCB(PythonQtShellSetInstanceWrapperCB *cb)PythonQtClassInfoinline
setTypeSlots(int typeSlots)PythonQtClassInfoinline
setupCPPObject(const QByteArray &classname)PythonQtClassInfo
setupQObject(const QMetaObject *meta)PythonQtClassInfo
shellSetInstanceWrapperCB()PythonQtClassInfoinline
supportsRichCompare()PythonQtClassInfo
typeSlots() constPythonQtClassInfoinline
unscopedClassName() constPythonQtClassInfo
~PythonQtClassInfo()PythonQtClassInfo
+ + + + diff --git a/classPythonQtClassInfo.html b/classPythonQtClassInfo.html new file mode 100644 index 000000000..03eb6d57f --- /dev/null +++ b/classPythonQtClassInfo.html @@ -0,0 +1,1294 @@ + + + + + + + +PythonQt: PythonQtClassInfo Class Reference + + + + + + +
+
+ + + + + + +
+
PythonQt +
+
+
+ + + + + + +
+
+ +
+
PythonQtClassInfo Class Reference
+
+
+ +

a class that stores all required information about a Qt object (and an optional associated C++ class name) + More...

+ +

#include <PythonQtClassInfo.h>

+ + + + + +

+Classes

struct  ParentClassInfo
 store information about parent classes More...
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 PythonQtClassInfo ()
 
 ~PythonQtClassInfo ()
 
void setupQObject (const QMetaObject *meta)
 setup as a QObject, taking the meta object as meta information about the QObject More...
 
void setupCPPObject (const QByteArray &classname)
 setup as a CPP (non-QObject), taking the classname More...
 
void setTypeSlots (int typeSlots)
 set the type capabilities More...
 
int typeSlots () const
 get the type capabilities More...
 
PythonQtMemberInfo member (const char *member)
 get the Python method definition for a given slot name (without return type and signature) More...
 
PythonQtSlotInfoconstructors ()
 get access to the constructor slot (which may be overloaded if there are multiple constructors) More...
 
PythonQtSlotInfodestructor ()
 get access to the destructor slot More...
 
void addConstructor (PythonQtSlotInfo *info)
 add a constructor, ownership is passed to classinfo More...
 
void setDestructor (PythonQtSlotInfo *info)
 set a destructor, ownership is passed to classinfo More...
 
void addDecoratorSlot (PythonQtSlotInfo *info)
 add a decorator slot, ownership is passed to classinfo More...
 
void addNestedClass (PythonQtClassInfo *info)
 add a nested class, so that it can be shown as outer class member More...
 
const QByteArray & className () const
 get the classname (either of the QObject or of the wrapped CPP object) More...
 
QByteArray unscopedClassName () const
 get the unscoped classname (without ParentClass::) for nested classes More...
 
bool isQObject ()
 returns if the QObject More...
 
bool isCPPWrapper ()
 returns if the class is a CPP wrapper More...
 
const QMetaObject * metaObject ()
 get the meta object More...
 
void setMetaObject (const QMetaObject *meta)
 set the meta object, this will reset the caching More...
 
bool inherits (const char *classname)
 returns if this class inherits from the given classname More...
 
bool inherits (PythonQtClassInfo *info)
 returns if this class inherits from the given classinfo More...
 
void * castTo (void *ptr, const char *classname)
 
QString help ()
 get help string for the metaobject More...
 
QStringList propertyList ()
 get list of all properties (on QObjects only, otherwise the list is empty) More...
 
QStringList memberList ()
 get list of all members (excluding properties, which can be listed with propertyList()) More...
 
int metaTypeId ()
 get the meta type id of this class (only valid for isCPPWrapper() == true) More...
 
void setDecoratorProvider (PythonQtQObjectCreatorFunctionCB *cb)
 set an additional decorator provider that offers additional decorator slots for this class More...
 
QObject * decorator ()
 get the decorator qobject instance More...
 
void addParentClass (const ParentClassInfo &info)
 add the parent class info of a CPP object More...
 
void setPythonQtClassWrapper (PyObject *obj)
 set the associated PythonQtClassWrapper (which handles instance creation of this type) More...
 
PyObjectpythonQtClassWrapper ()
 get the associated PythonQtClassWrapper (which handles instance creation of this type) More...
 
void setShellSetInstanceWrapperCB (PythonQtShellSetInstanceWrapperCB *cb)
 set the shell set instance wrapper cb More...
 
PythonQtShellSetInstanceWrapperCBshellSetInstanceWrapperCB ()
 get the shell set instance wrapper cb More...
 
void addPolymorphicHandler (PythonQtPolymorphicHandlerCB *cb)
 add a handler for polymorphic downcasting More...
 
void * castDownIfPossible (void *ptr, PythonQtClassInfo **resultClassInfo)
 cast the pointer down in the class hierarchy if a polymorphic handler allows to do that More...
 
void clearNotFoundCachedMembers ()
 clear all members that where cached as "NotFound" More...
 
const QList< PythonQtClassInfo * > & nestedClasses ()
 get nested classes More...
 
PyObjectcopyObject (void *cppObject)
 
PythonQtSlotInfogetCopyConstructor ()
 Get the copy constructor for this class. More...
 
void setReferenceCounting (PythonQtVoidPtrCB *refCB, PythonQtVoidPtrCB *unrefCB)
 Sets reference counting callbacks for this class and all its subclasses. More...
 
PythonQtVoidPtrCBreferenceCountingRefCB ()
 Returns the ref counting CB, if there is any. More...
 
PythonQtVoidPtrCBreferenceCountingUnrefCB ()
 Returns the unref counting CB, if there is any. More...
 
PyObjectgetPythonTypeForProperty (const QString &name)
 
PythonQtClassInfogetClassInfoForProperty (const QString &name)
 Returns the class info for given property, if available. More...
 
bool supportsRichCompare ()
 
+ + + + +

+Static Public Member Functions

static PyObjectfindEnumWrapper (const QByteArray &name, PythonQtClassInfo *localScope, bool *isLocalEnum=NULL)
 returns if the localScope has an enum of that type name or if the enum contains a :: scope, if that class contails the enum More...
 
+

Detailed Description

+

a class that stores all required information about a Qt object (and an optional associated C++ class name)

+

for fast lookup of slots when calling the object from Python

+ +

Definition at line 81 of file PythonQtClassInfo.h.

+

Constructor & Destructor Documentation

+ +

◆ PythonQtClassInfo()

+ +
+
+ + + + + + + +
PythonQtClassInfo::PythonQtClassInfo ()
+
+ +
+
+ +

◆ ~PythonQtClassInfo()

+ +
+
+ + + + + + + +
PythonQtClassInfo::~PythonQtClassInfo ()
+
+ +
+
+

Member Function Documentation

+ +

◆ addConstructor()

+ +
+
+ + + + + + + + +
void PythonQtClassInfo::addConstructor (PythonQtSlotInfoinfo)
+
+ +

add a constructor, ownership is passed to classinfo

+ +
+
+ +

◆ addDecoratorSlot()

+ +
+
+ + + + + + + + +
void PythonQtClassInfo::addDecoratorSlot (PythonQtSlotInfoinfo)
+
+ +

add a decorator slot, ownership is passed to classinfo

+ +
+
+ +

◆ addNestedClass()

+ +
+
+ + + + + + + + +
void PythonQtClassInfo::addNestedClass (PythonQtClassInfoinfo)
+
+ +

add a nested class, so that it can be shown as outer class member

+ +
+
+ +

◆ addParentClass()

+ +
+
+ + + + + +
+ + + + + + + + +
void PythonQtClassInfo::addParentClass (const ParentClassInfoinfo)
+
+inline
+
+ +

add the parent class info of a CPP object

+ +

Definition at line 177 of file PythonQtClassInfo.h.

+
177 { _parentClasses.append(info); }
+
+
+ +

◆ addPolymorphicHandler()

+ +
+
+ + + + + +
+ + + + + + + + +
void PythonQtClassInfo::addPolymorphicHandler (PythonQtPolymorphicHandlerCBcb)
+
+inline
+
+ +

add a handler for polymorphic downcasting

+ +

Definition at line 196 of file PythonQtClassInfo.h.

+
196 { _polymorphicHandlers.append(cb); }
+
+
+ +

◆ castDownIfPossible()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void* PythonQtClassInfo::castDownIfPossible (void * ptr,
PythonQtClassInfo ** resultClassInfo 
)
+
+ +

cast the pointer down in the class hierarchy if a polymorphic handler allows to do that

+ +
+
+ +

◆ castTo()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void* PythonQtClassInfo::castTo (void * ptr,
const char * classname 
)
+
+

casts the given ptr to an object of type classname, returns the new pointer which might be different to ptr due to C++ multiple inheritance (if the cast is not possible or if ptr is NULL, NULL is returned)

+ +
+
+ +

◆ className()

+ +
+
+ + + + + + + +
const QByteArray& PythonQtClassInfo::className () const
+
+ +

get the classname (either of the QObject or of the wrapped CPP object)

+ +

Referenced by PythonQtConvertListOfKnownClassToPythonList(), and PythonQtConvertPythonListToListOfKnownClass().

+ +
+
+ +

◆ clearNotFoundCachedMembers()

+ +
+
+ + + + + + + +
void PythonQtClassInfo::clearNotFoundCachedMembers ()
+
+ +

clear all members that where cached as "NotFound"

+ +
+
+ +

◆ constructors()

+ +
+
+ + + + + + + +
PythonQtSlotInfo* PythonQtClassInfo::constructors ()
+
+ +

get access to the constructor slot (which may be overloaded if there are multiple constructors)

+ +
+
+ +

◆ copyObject()

+ +
+
+ + + + + + + + +
PyObject* PythonQtClassInfo::copyObject (void * cppObject)
+
+

Create a copy of the given C++ object (which is known to be of a derived class), wrapped by Python and owned by PythonQt. This will downcast if possible and return a copy of the down casted object. This either requires a copy constructor on the class or it needs to be registered as a meta type.

+ +
+
+ +

◆ decorator()

+ +
+
+ + + + + + + +
QObject* PythonQtClassInfo::decorator ()
+
+ +

get the decorator qobject instance

+ +
+
+ +

◆ destructor()

+ +
+
+ + + + + + + +
PythonQtSlotInfo* PythonQtClassInfo::destructor ()
+
+ +

get access to the destructor slot

+ +
+
+ +

◆ findEnumWrapper()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
static PyObject* PythonQtClassInfo::findEnumWrapper (const QByteArray & name,
PythonQtClassInfolocalScope,
bool * isLocalEnum = NULL 
)
+
+static
+
+ +

returns if the localScope has an enum of that type name or if the enum contains a :: scope, if that class contails the enum

+ +
+
+ +

◆ getClassInfoForProperty()

+ +
+
+ + + + + + + + +
PythonQtClassInfo* PythonQtClassInfo::getClassInfoForProperty (const QString & name)
+
+ +

Returns the class info for given property, if available.

+ +
+
+ +

◆ getCopyConstructor()

+ +
+
+ + + + + + + +
PythonQtSlotInfo* PythonQtClassInfo::getCopyConstructor ()
+
+ +

Get the copy constructor for this class.

+ +
+
+ +

◆ getPythonTypeForProperty()

+ +
+
+ + + + + + + + +
PyObject* PythonQtClassInfo::getPythonTypeForProperty (const QString & name)
+
+

Returns the Python type object for a given property. (the returned object does not get an extra reference count)

+ +
+
+ +

◆ help()

+ +
+
+ + + + + + + +
QString PythonQtClassInfo::help ()
+
+ +

get help string for the metaobject

+ +
+
+ +

◆ inherits() [1/2]

+ +
+
+ + + + + + + + +
bool PythonQtClassInfo::inherits (const char * classname)
+
+ +

returns if this class inherits from the given classname

+ +
+
+ +

◆ inherits() [2/2]

+ +
+
+ + + + + + + + +
bool PythonQtClassInfo::inherits (PythonQtClassInfoinfo)
+
+ +

returns if this class inherits from the given classinfo

+ +
+
+ +

◆ isCPPWrapper()

+ +
+
+ + + + + +
+ + + + + + + +
bool PythonQtClassInfo::isCPPWrapper ()
+
+inline
+
+ +

returns if the class is a CPP wrapper

+ +

Definition at line 139 of file PythonQtClassInfo.h.

+
139 { return !_isQObject; }
+
+
+ +

◆ isQObject()

+ +
+
+ + + + + +
+ + + + + + + +
bool PythonQtClassInfo::isQObject ()
+
+inline
+
+ +

returns if the QObject

+ +

Definition at line 136 of file PythonQtClassInfo.h.

+
136 { return _isQObject; }
+
+
+ +

◆ member()

+ +
+
+ + + + + + + + +
PythonQtMemberInfo PythonQtClassInfo::member (const char * member)
+
+ +

get the Python method definition for a given slot name (without return type and signature)

+ +
+
+ +

◆ memberList()

+ +
+
+ + + + + + + +
QStringList PythonQtClassInfo::memberList ()
+
+ +

get list of all members (excluding properties, which can be listed with propertyList())

+ +
+
+ +

◆ metaObject()

+ +
+
+ + + + + +
+ + + + + + + +
const QMetaObject* PythonQtClassInfo::metaObject ()
+
+inline
+
+ +

get the meta object

+ +

Definition at line 142 of file PythonQtClassInfo.h.

+
142 { return _meta; }
+
+
+ +

◆ metaTypeId()

+ +
+
+ + + + + +
+ + + + + + + +
int PythonQtClassInfo::metaTypeId ()
+
+inline
+
+ +

get the meta type id of this class (only valid for isCPPWrapper() == true)

+ +

Definition at line 168 of file PythonQtClassInfo.h.

+
168 { return _metaTypeId; }
+
+
+ +

◆ nestedClasses()

+ +
+
+ + + + + +
+ + + + + + + +
const QList<PythonQtClassInfo*>& PythonQtClassInfo::nestedClasses ()
+
+inline
+
+ +

get nested classes

+ +

Definition at line 208 of file PythonQtClassInfo.h.

+
208 { return _nestedClasses; }
+
+
+ +

◆ propertyList()

+ +
+
+ + + + + + + +
QStringList PythonQtClassInfo::propertyList ()
+
+ +

get list of all properties (on QObjects only, otherwise the list is empty)

+ +
+
+ +

◆ pythonQtClassWrapper()

+ +
+
+ + + + + +
+ + + + + + + +
PyObject* PythonQtClassInfo::pythonQtClassWrapper ()
+
+inline
+
+ +

get the associated PythonQtClassWrapper (which handles instance creation of this type)

+ +

Definition at line 183 of file PythonQtClassInfo.h.

+
183 { return _pythonQtClassWrapper; }
+
+
+ +

◆ referenceCountingRefCB()

+ +
+
+ + + + + + + +
PythonQtVoidPtrCB* PythonQtClassInfo::referenceCountingRefCB ()
+
+ +

Returns the ref counting CB, if there is any.

+ +
+
+ +

◆ referenceCountingUnrefCB()

+ +
+
+ + + + + + + +
PythonQtVoidPtrCB* PythonQtClassInfo::referenceCountingUnrefCB ()
+
+ +

Returns the unref counting CB, if there is any.

+ +
+
+ +

◆ setDecoratorProvider()

+ +
+
+ + + + + + + + +
void PythonQtClassInfo::setDecoratorProvider (PythonQtQObjectCreatorFunctionCBcb)
+
+ +

set an additional decorator provider that offers additional decorator slots for this class

+ +
+
+ +

◆ setDestructor()

+ +
+
+ + + + + + + + +
void PythonQtClassInfo::setDestructor (PythonQtSlotInfoinfo)
+
+ +

set a destructor, ownership is passed to classinfo

+ +
+
+ +

◆ setMetaObject()

+ +
+
+ + + + + + + + +
void PythonQtClassInfo::setMetaObject (const QMetaObject * meta)
+
+ +

set the meta object, this will reset the caching

+ +
+
+ +

◆ setPythonQtClassWrapper()

+ +
+
+ + + + + +
+ + + + + + + + +
void PythonQtClassInfo::setPythonQtClassWrapper (PyObjectobj)
+
+inline
+
+ +

set the associated PythonQtClassWrapper (which handles instance creation of this type)

+ +

Definition at line 180 of file PythonQtClassInfo.h.

+
180 { _pythonQtClassWrapper = obj; }
+
+
+ +

◆ setReferenceCounting()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void PythonQtClassInfo::setReferenceCounting (PythonQtVoidPtrCBrefCB,
PythonQtVoidPtrCBunrefCB 
)
+
+ +

Sets reference counting callbacks for this class and all its subclasses.

+ +
+
+ +

◆ setShellSetInstanceWrapperCB()

+ +
+
+ + + + + +
+ + + + + + + + +
void PythonQtClassInfo::setShellSetInstanceWrapperCB (PythonQtShellSetInstanceWrapperCBcb)
+
+inline
+
+ +

set the shell set instance wrapper cb

+ +

Definition at line 186 of file PythonQtClassInfo.h.

+
186  {
187  _shellSetInstanceWrapperCB = cb;
188  }
+
+
+ +

◆ setTypeSlots()

+ +
+
+ + + + + +
+ + + + + + + + +
void PythonQtClassInfo::setTypeSlots (int typeSlots)
+
+inline
+
+ +

set the type capabilities

+ +

Definition at line 104 of file PythonQtClassInfo.h.

+
104 { _typeSlots = typeSlots; }
int typeSlots() const
get the type capabilities
+
+
+
+ +

◆ setupCPPObject()

+ +
+
+ + + + + + + + +
void PythonQtClassInfo::setupCPPObject (const QByteArray & classname)
+
+ +

setup as a CPP (non-QObject), taking the classname

+ +
+
+ +

◆ setupQObject()

+ +
+
+ + + + + + + + +
void PythonQtClassInfo::setupQObject (const QMetaObject * meta)
+
+ +

setup as a QObject, taking the meta object as meta information about the QObject

+ +
+
+ +

◆ shellSetInstanceWrapperCB()

+ +
+
+ + + + + +
+ + + + + + + +
PythonQtShellSetInstanceWrapperCB* PythonQtClassInfo::shellSetInstanceWrapperCB ()
+
+inline
+
+ +

get the shell set instance wrapper cb

+ +

Definition at line 191 of file PythonQtClassInfo.h.

+
191  {
192  return _shellSetInstanceWrapperCB;
193  }
+
+
+ +

◆ supportsRichCompare()

+ +
+
+ + + + + + + +
bool PythonQtClassInfo::supportsRichCompare ()
+
+

Returns if the class supports rich compare. This tests for eq, ne, lt, le, gt, ge slots and if any of the slots is present it returns true and modifies the _typeSlots with Type_RichCompare. The result is cached internally.

+ +
+
+ +

◆ typeSlots()

+ +
+
+ + + + + +
+ + + + + + + +
int PythonQtClassInfo::typeSlots () const
+
+inline
+
+ +

get the type capabilities

+ +

Definition at line 106 of file PythonQtClassInfo.h.

+
106 { return _typeSlots; }
+
+
+ +

◆ unscopedClassName()

+ +
+
+ + + + + + + +
QByteArray PythonQtClassInfo::unscopedClassName () const
+
+ +

get the unscoped classname (without ParentClass::) for nested classes

+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/classPythonQtConv-members.html b/classPythonQtConv-members.html new file mode 100644 index 000000000..913f1ee75 --- /dev/null +++ b/classPythonQtConv-members.html @@ -0,0 +1,102 @@ + + + + + + + +PythonQt: Member List + + + + + + +
+
+ + + + + + +
+
PythonQt +
+
+
+ + + + + + +
+
+
+
PythonQtConv Member List
+
+
+ +

This is the complete list of members for PythonQtConv, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
_metaTypeToPythonConvertersPythonQtConvprotectedstatic
_pythonSequenceToQVariantListCBPythonQtConvprotectedstatic
_pythonToMetaTypeConvertersPythonQtConvprotectedstatic
castWrapperTo(PythonQtInstanceWrapper *wrapper, const QByteArray &className, bool &ok)PythonQtConvstatic
convertFromPythonQtObjectPtr(const void *inObject, int)PythonQtConvstatic
convertFromPythonQtSafeObjectPtr(const void *inObject, int)PythonQtConvstatic
convertFromQListOfPythonQtObjectPtr(const void *inObject, int)PythonQtConvstatic
convertFromStringRef(const void *inObject, int)PythonQtConvstatic
ConvertPythonListToQListOfPointerType(PyObject *obj, QList< void * > *list, const PythonQtMethodInfo::ParameterInfo &info, bool strict)PythonQtConvprotectedstatic
ConvertPythonToQt(const PythonQtMethodInfo::ParameterInfo &info, PyObject *obj, bool strict, PythonQtClassInfo *classInfo, void *alreadyAllocatedCPPObject, PythonQtArgumentFrame *frame=NULL)PythonQtConvstatic
ConvertQListOfPointerTypeToPythonList(QList< void * > *list, const PythonQtMethodInfo::ParameterInfo &info)PythonQtConvprotectedstatic
ConvertQtValueToPython(const PythonQtMethodInfo::ParameterInfo &info, const void *data)PythonQtConvstatic
convertQtValueToPythonInternal(int type, const void *data)PythonQtConvstatic
convertToPythonQtObjectPtr(PyObject *obj, void *outPtr, int, bool)PythonQtConvstatic
convertToPythonQtSafeObjectPtr(PyObject *obj, void *outPtr, int, bool)PythonQtConvstatic
convertToQListOfPythonQtObjectPtr(PyObject *obj, void *outList, int, bool)PythonQtConvstatic
CPPObjectToString(int type, const void *data)PythonQtConvstatic
createCopyFromMetaType(int type, const void *object)PythonQtConvstatic
CreateQtReturnValue(const PythonQtMethodInfo::ParameterInfo &info, PythonQtArgumentFrame *frame)PythonQtConvstatic
getCPPTypeName(PyObject *type)PythonQtConvstatic
GetPyBool(bool val)PythonQtConvstatic
handlePythonToQtAutoConversion(int typeId, PyObject *obj, void *alreadyAllocatedCPPObject, PythonQtArgumentFrame *frame)PythonQtConvprotectedstatic
isStringType(PyTypeObject *type)PythonQtConvstatic
mapToPython(const Map &m)PythonQtConvprotectedstatic
PyObjGetBool(PyObject *val, bool strict, bool &ok)PythonQtConvstatic
PyObjGetBytes(PyObject *val, bool strict, bool &ok)PythonQtConvstatic
PyObjGetDouble(PyObject *val, bool strict, bool &ok)PythonQtConvstatic
PyObjGetInt(PyObject *val, bool strict, bool &ok)PythonQtConvstatic
PyObjGetLongLong(PyObject *val, bool strict, bool &ok)PythonQtConvstatic
PyObjGetRepresentation(PyObject *val)PythonQtConvstatic
PyObjGetString(PyObject *val)PythonQtConvinlinestatic
PyObjGetString(PyObject *val, bool strict, bool &ok)PythonQtConvstatic
PyObjGetULongLong(PyObject *val, bool strict, bool &ok)PythonQtConvstatic
PyObjToQVariant(PyObject *val, int type=-1)PythonQtConvstatic
PyObjToStringList(PyObject *val, bool strict, bool &ok)PythonQtConvstatic
pythonToMapVariant(PyObject *val, QVariant &result)PythonQtConvprotectedstatic
QStringListToPyList(const QStringList &list)PythonQtConvstatic
QStringListToPyObject(const QStringList &list)PythonQtConvstatic
QStringToPyObject(const QString &str)PythonQtConvstatic
QVariantHashToPyObject(const QVariantHash &m)PythonQtConvstatic
QVariantListToPyObject(const QVariantList &l)PythonQtConvstatic
QVariantMapToPyObject(const QVariantMap &m)PythonQtConvstatic
QVariantToPyObject(const QVariant &v)PythonQtConvstatic
registerMetaTypeToPythonConverter(int metaTypeId, PythonQtConvertMetaTypeToPythonCB *cb)PythonQtConvinlinestatic
registerPythonToMetaTypeConverter(int metaTypeId, PythonQtConvertPythonToMetaTypeCB *cb)PythonQtConvinlinestatic
setPythonSequenceToQVariantListCallback(PythonQtConvertPythonSequenceToQVariantListCB *cb)PythonQtConvinlinestatic
+ + + + diff --git a/classPythonQtConv.html b/classPythonQtConv.html new file mode 100644 index 000000000..8f04e8638 --- /dev/null +++ b/classPythonQtConv.html @@ -0,0 +1,1917 @@ + + + + + + + +PythonQt: PythonQtConv Class Reference + + + + + + +
+
+ + + + + + +
+
PythonQt +
+
+
+ + + + + + +
+ +
+ +

a static class that offers methods for type conversion + More...

+ +

#include <PythonQtConversion.h>

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

+Static Public Member Functions

static PyObjectGetPyBool (bool val)
 get a ref counted True or False Python object More...
 
static PyObjectConvertQtValueToPython (const PythonQtMethodInfo::ParameterInfo &info, const void *data)
 converts the Qt parameter given in data, interpreting it as a info parameter, into a Python object, More...
 
static void * ConvertPythonToQt (const PythonQtMethodInfo::ParameterInfo &info, PyObject *obj, bool strict, PythonQtClassInfo *classInfo, void *alreadyAllocatedCPPObject, PythonQtArgumentFrame *frame=NULL)
 convert python object to Qt (according to the given parameter) and if the conversion should be strict (classInfo is currently not used anymore) More...
 
static void * CreateQtReturnValue (const PythonQtMethodInfo::ParameterInfo &info, PythonQtArgumentFrame *frame)
 creates a data storage for the passed parameter type and returns a void pointer to be set as arg[0] of qt_metacall More...
 
static PyObjectQStringToPyObject (const QString &str)
 converts QString to Python string (unicode!) More...
 
static PyObjectQStringListToPyObject (const QStringList &list)
 converts QStringList to Python tuple More...
 
static PyObjectQStringListToPyList (const QStringList &list)
 converts QStringList to Python list More...
 
static QString PyObjGetRepresentation (PyObject *val)
 get string representation of py object More...
 
static QString PyObjGetString (PyObject *val)
 get string value from py object More...
 
static QString PyObjGetString (PyObject *val, bool strict, bool &ok)
 get string value from py object More...
 
static QByteArray PyObjGetBytes (PyObject *val, bool strict, bool &ok)
 get bytes from py object More...
 
static int PyObjGetInt (PyObject *val, bool strict, bool &ok)
 get int from py object More...
 
static qint64 PyObjGetLongLong (PyObject *val, bool strict, bool &ok)
 get int64 from py object More...
 
static quint64 PyObjGetULongLong (PyObject *val, bool strict, bool &ok)
 get int64 from py object More...
 
static double PyObjGetDouble (PyObject *val, bool strict, bool &ok)
 get double from py object More...
 
static bool PyObjGetBool (PyObject *val, bool strict, bool &ok)
 get bool from py object More...
 
static QStringList PyObjToStringList (PyObject *val, bool strict, bool &ok)
 create a string list from python sequence More...
 
static QVariant PyObjToQVariant (PyObject *val, int type=-1)
 
static PyObjectQVariantToPyObject (const QVariant &v)
 convert QVariant from PyObject More...
 
static PyObjectQVariantHashToPyObject (const QVariantHash &m)
 
static PyObjectQVariantMapToPyObject (const QVariantMap &m)
 
static PyObjectQVariantListToPyObject (const QVariantList &l)
 
static QString CPPObjectToString (int type, const void *data)
 get human readable string from CPP object (when the metatype is known) More...
 
static void registerPythonToMetaTypeConverter (int metaTypeId, PythonQtConvertPythonToMetaTypeCB *cb)
 register a converter callback from python to cpp for given metatype More...
 
static void registerMetaTypeToPythonConverter (int metaTypeId, PythonQtConvertMetaTypeToPythonCB *cb)
 register a converter callback from cpp to python for given metatype More...
 
static void setPythonSequenceToQVariantListCallback (PythonQtConvertPythonSequenceToQVariantListCB *cb)
 
static PyObjectconvertQtValueToPythonInternal (int type, const void *data)
 converts the Qt parameter given in data, interpreting it as a type registered qvariant/meta type, into a Python object, More...
 
static PyObjectcreateCopyFromMetaType (int type, const void *object)
 creates a copy of given object, using the QMetaType More...
 
static void * castWrapperTo (PythonQtInstanceWrapper *wrapper, const QByteArray &className, bool &ok)
 cast wrapper to given className if possible More...
 
static bool convertToPythonQtObjectPtr (PyObject *obj, void *outPtr, int, bool)
 
static PyObjectconvertFromPythonQtObjectPtr (const void *inObject, int)
 
static bool convertToPythonQtSafeObjectPtr (PyObject *obj, void *outPtr, int, bool)
 
static PyObjectconvertFromPythonQtSafeObjectPtr (const void *inObject, int)
 
static bool convertToQListOfPythonQtObjectPtr (PyObject *obj, void *outList, int, bool)
 
static PyObjectconvertFromQListOfPythonQtObjectPtr (const void *inObject, int)
 
static PyObjectconvertFromStringRef (const void *inObject, int)
 
static QByteArray getCPPTypeName (PyObject *type)
 Returns the name of the equivalent CPP type (for signals and slots) More...
 
static bool isStringType (PyTypeObject *type)
 Returns if the given object is a string (or unicode string) More...
 
+ + + + + + + + + + + + + + + + + + +

+Static Protected Member Functions

static void * handlePythonToQtAutoConversion (int typeId, PyObject *obj, void *alreadyAllocatedCPPObject, PythonQtArgumentFrame *frame)
 handle automatic conversion of some special types (QColor, QBrush, ...) More...
 
static PyObjectConvertQListOfPointerTypeToPythonList (QList< void * > *list, const PythonQtMethodInfo::ParameterInfo &info)
 converts the list of pointers of given type to Python More...
 
static bool ConvertPythonListToQListOfPointerType (PyObject *obj, QList< void * > *list, const PythonQtMethodInfo::ParameterInfo &info, bool strict)
 tries to convert the python object to a QList of pointers to type objects, returns true on success More...
 
template<typename Map >
static void pythonToMapVariant (PyObject *val, QVariant &result)
 helper template method for conversion from Python to QVariantMap/Hash More...
 
template<typename Map >
static PyObjectmapToPython (const Map &m)
 helper template function for QVariantMapToPyObject/QVariantHashToPyObject More...
 
+ + + + + + + +

+Static Protected Attributes

static QHash< int, PythonQtConvertMetaTypeToPythonCB * > _metaTypeToPythonConverters
 
static QHash< int, PythonQtConvertPythonToMetaTypeCB * > _pythonToMetaTypeConverters
 
static PythonQtConvertPythonSequenceToQVariantListCB_pythonSequenceToQVariantListCB
 
+

Detailed Description

+

a static class that offers methods for type conversion

+ +

Definition at line 101 of file PythonQtConversion.h.

+

Member Function Documentation

+ +

◆ castWrapperTo()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
static void* PythonQtConv::castWrapperTo (PythonQtInstanceWrapperwrapper,
const QByteArray & className,
bool & ok 
)
+
+static
+
+ +

cast wrapper to given className if possible

+ +

Referenced by PythonQtConvertPythonListToListOfKnownClass().

+ +
+
+ +

◆ convertFromPythonQtObjectPtr()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static PyObject* PythonQtConv::convertFromPythonQtObjectPtr (const void * inObject,
int  
)
+
+static
+
+ +
+
+ +

◆ convertFromPythonQtSafeObjectPtr()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static PyObject* PythonQtConv::convertFromPythonQtSafeObjectPtr (const void * inObject,
int  
)
+
+static
+
+ +
+
+ +

◆ convertFromQListOfPythonQtObjectPtr()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static PyObject* PythonQtConv::convertFromQListOfPythonQtObjectPtr (const void * inObject,
int  
)
+
+static
+
+ +
+
+ +

◆ convertFromStringRef()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static PyObject* PythonQtConv::convertFromStringRef (const void * inObject,
int  
)
+
+static
+
+ +
+
+ +

◆ ConvertPythonListToQListOfPointerType()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
static bool PythonQtConv::ConvertPythonListToQListOfPointerType (PyObjectobj,
QList< void * > * list,
const PythonQtMethodInfo::ParameterInfoinfo,
bool strict 
)
+
+staticprotected
+
+ +

tries to convert the python object to a QList of pointers to type objects, returns true on success

+ +
+
+ +

◆ ConvertPythonToQt()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
static void* PythonQtConv::ConvertPythonToQt (const PythonQtMethodInfo::ParameterInfoinfo,
PyObjectobj,
bool strict,
PythonQtClassInfoclassInfo,
void * alreadyAllocatedCPPObject,
PythonQtArgumentFrameframe = NULL 
)
+
+static
+
+ +

convert python object to Qt (according to the given parameter) and if the conversion should be strict (classInfo is currently not used anymore)

+ +
+
+ +

◆ ConvertQListOfPointerTypeToPythonList()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static PyObject* PythonQtConv::ConvertQListOfPointerTypeToPythonList (QList< void * > * list,
const PythonQtMethodInfo::ParameterInfoinfo 
)
+
+staticprotected
+
+ +

converts the list of pointers of given type to Python

+ +
+
+ +

◆ ConvertQtValueToPython()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static PyObject* PythonQtConv::ConvertQtValueToPython (const PythonQtMethodInfo::ParameterInfoinfo,
const void * data 
)
+
+static
+
+ +

converts the Qt parameter given in data, interpreting it as a info parameter, into a Python object,

+ +
+
+ +

◆ convertQtValueToPythonInternal()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static PyObject* PythonQtConv::convertQtValueToPythonInternal (int type,
const void * data 
)
+
+static
+
+ +

converts the Qt parameter given in data, interpreting it as a type registered qvariant/meta type, into a Python object,

+ +

Referenced by PythonQtConvertIntegerMapToPython(), PythonQtConvertListOfValueTypeToPythonList(), and PythonQtConvertPairToPython().

+ +
+
+ +

◆ convertToPythonQtObjectPtr()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
static bool PythonQtConv::convertToPythonQtObjectPtr (PyObjectobj,
void * outPtr,
int ,
bool  
)
+
+static
+
+ +
+
+ +

◆ convertToPythonQtSafeObjectPtr()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
static bool PythonQtConv::convertToPythonQtSafeObjectPtr (PyObjectobj,
void * outPtr,
int ,
bool  
)
+
+static
+
+ +
+
+ +

◆ convertToQListOfPythonQtObjectPtr()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
static bool PythonQtConv::convertToQListOfPythonQtObjectPtr (PyObjectobj,
void * outList,
int ,
bool  
)
+
+static
+
+ +
+
+ +

◆ CPPObjectToString()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static QString PythonQtConv::CPPObjectToString (int type,
const void * data 
)
+
+static
+
+ +

get human readable string from CPP object (when the metatype is known)

+ +
+
+ +

◆ createCopyFromMetaType()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static PyObject* PythonQtConv::createCopyFromMetaType (int type,
const void * object 
)
+
+static
+
+ +

creates a copy of given object, using the QMetaType

+ +
+
+ +

◆ CreateQtReturnValue()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static void* PythonQtConv::CreateQtReturnValue (const PythonQtMethodInfo::ParameterInfoinfo,
PythonQtArgumentFrameframe 
)
+
+static
+
+ +

creates a data storage for the passed parameter type and returns a void pointer to be set as arg[0] of qt_metacall

+ +
+
+ +

◆ getCPPTypeName()

+ +
+
+ + + + + +
+ + + + + + + + +
static QByteArray PythonQtConv::getCPPTypeName (PyObjecttype)
+
+static
+
+ +

Returns the name of the equivalent CPP type (for signals and slots)

+ +
+
+ +

◆ GetPyBool()

+ +
+
+ + + + + +
+ + + + + + + + +
static PyObject* PythonQtConv::GetPyBool (bool val)
+
+static
+
+ +

get a ref counted True or False Python object

+ +
+
+ +

◆ handlePythonToQtAutoConversion()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
static void* PythonQtConv::handlePythonToQtAutoConversion (int typeId,
PyObjectobj,
void * alreadyAllocatedCPPObject,
PythonQtArgumentFrameframe 
)
+
+staticprotected
+
+ +

handle automatic conversion of some special types (QColor, QBrush, ...)

+ +
+
+ +

◆ isStringType()

+ +
+
+ + + + + +
+ + + + + + + + +
static bool PythonQtConv::isStringType (PyTypeObject * type)
+
+static
+
+ +

Returns if the given object is a string (or unicode string)

+ +
+
+ +

◆ mapToPython()

+ +
+
+
+template<typename Map >
+ + + + + +
+ + + + + + + + +
static PyObject* PythonQtConv::mapToPython (const Map & m)
+
+staticprotected
+
+ +

helper template function for QVariantMapToPyObject/QVariantHashToPyObject

+ +
+
+ +

◆ PyObjGetBool()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
static bool PythonQtConv::PyObjGetBool (PyObjectval,
bool strict,
bool & ok 
)
+
+static
+
+ +

get bool from py object

+ +
+
+ +

◆ PyObjGetBytes()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
static QByteArray PythonQtConv::PyObjGetBytes (PyObjectval,
bool strict,
bool & ok 
)
+
+static
+
+ +

get bytes from py object

+ +
+
+ +

◆ PyObjGetDouble()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
static double PythonQtConv::PyObjGetDouble (PyObjectval,
bool strict,
bool & ok 
)
+
+static
+
+ +

get double from py object

+ +
+
+ +

◆ PyObjGetInt()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
static int PythonQtConv::PyObjGetInt (PyObjectval,
bool strict,
bool & ok 
)
+
+static
+
+ +

get int from py object

+ +

Referenced by PythonQtConvertPythonToIntegerMap().

+ +
+
+ +

◆ PyObjGetLongLong()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
static qint64 PythonQtConv::PyObjGetLongLong (PyObjectval,
bool strict,
bool & ok 
)
+
+static
+
+ +

get int64 from py object

+ +
+
+ +

◆ PyObjGetRepresentation()

+ +
+
+ + + + + +
+ + + + + + + + +
static QString PythonQtConv::PyObjGetRepresentation (PyObjectval)
+
+static
+
+ +

get string representation of py object

+ +
+
+ +

◆ PyObjGetString() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + +
static QString PythonQtConv::PyObjGetString (PyObjectval)
+
+inlinestatic
+
+ +

get string value from py object

+ +

Definition at line 130 of file PythonQtConversion.h.

+
130 { bool ok; QString s = PyObjGetString(val, false, ok); return s; }
static QString PyObjGetString(PyObject *val)
get string value from py object
+
+

References PyObjGetString().

+ +

Referenced by PyObjGetString().

+ +
+
+ +

◆ PyObjGetString() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
static QString PythonQtConv::PyObjGetString (PyObjectval,
bool strict,
bool & ok 
)
+
+static
+
+ +

get string value from py object

+ +
+
+ +

◆ PyObjGetULongLong()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
static quint64 PythonQtConv::PyObjGetULongLong (PyObjectval,
bool strict,
bool & ok 
)
+
+static
+
+ +

get int64 from py object

+ +
+
+ +

◆ PyObjToQVariant()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static QVariant PythonQtConv::PyObjToQVariant (PyObjectval,
int type = -1 
)
+
+static
+
+

convert python object to qvariant, if type is given it will try to create a qvariant of that type, otherwise it will guess from the python type

+ +

Referenced by PythonQtConvertPythonListToListOfValueType(), PythonQtConvertPythonToIntegerMap(), and PythonQtConvertPythonToPair().

+ +
+
+ +

◆ PyObjToStringList()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
static QStringList PythonQtConv::PyObjToStringList (PyObjectval,
bool strict,
bool & ok 
)
+
+static
+
+ +

create a string list from python sequence

+ +
+
+ +

◆ pythonToMapVariant()

+ +
+
+
+template<typename Map >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static void PythonQtConv::pythonToMapVariant (PyObjectval,
QVariant & result 
)
+
+staticprotected
+
+ +

helper template method for conversion from Python to QVariantMap/Hash

+ +
+
+ +

◆ QStringListToPyList()

+ +
+
+ + + + + +
+ + + + + + + + +
static PyObject* PythonQtConv::QStringListToPyList (const QStringList & list)
+
+static
+
+ +

converts QStringList to Python list

+ +
+
+ +

◆ QStringListToPyObject()

+ +
+
+ + + + + +
+ + + + + + + + +
static PyObject* PythonQtConv::QStringListToPyObject (const QStringList & list)
+
+static
+
+ +

converts QStringList to Python tuple

+ +
+
+ +

◆ QStringToPyObject()

+ +
+
+ + + + + +
+ + + + + + + + +
static PyObject* PythonQtConv::QStringToPyObject (const QString & str)
+
+static
+
+ +

converts QString to Python string (unicode!)

+ +
+
+ +

◆ QVariantHashToPyObject()

+ +
+
+ + + + + +
+ + + + + + + + +
static PyObject* PythonQtConv::QVariantHashToPyObject (const QVariantHash & m)
+
+static
+
+ +
+
+ +

◆ QVariantListToPyObject()

+ +
+
+ + + + + +
+ + + + + + + + +
static PyObject* PythonQtConv::QVariantListToPyObject (const QVariantList & l)
+
+static
+
+ +
+
+ +

◆ QVariantMapToPyObject()

+ +
+
+ + + + + +
+ + + + + + + + +
static PyObject* PythonQtConv::QVariantMapToPyObject (const QVariantMap & m)
+
+static
+
+ +
+
+ +

◆ QVariantToPyObject()

+ +
+
+ + + + + +
+ + + + + + + + +
static PyObject* PythonQtConv::QVariantToPyObject (const QVariant & v)
+
+static
+
+ +

convert QVariant from PyObject

+ +
+
+ +

◆ registerMetaTypeToPythonConverter()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static void PythonQtConv::registerMetaTypeToPythonConverter (int metaTypeId,
PythonQtConvertMetaTypeToPythonCBcb 
)
+
+inlinestatic
+
+ +

register a converter callback from cpp to python for given metatype

+ +

Definition at line 167 of file PythonQtConversion.h.

+
167 { _metaTypeToPythonConverters.insert(metaTypeId, cb); }
static QHash< int, PythonQtConvertMetaTypeToPythonCB * > _metaTypeToPythonConverters
+
+
+
+ +

◆ registerPythonToMetaTypeConverter()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static void PythonQtConv::registerPythonToMetaTypeConverter (int metaTypeId,
PythonQtConvertPythonToMetaTypeCBcb 
)
+
+inlinestatic
+
+ +

register a converter callback from python to cpp for given metatype

+ +

Definition at line 164 of file PythonQtConversion.h.

+
164 { _pythonToMetaTypeConverters.insert(metaTypeId, cb); }
static QHash< int, PythonQtConvertPythonToMetaTypeCB * > _pythonToMetaTypeConverters
+
+
+
+ +

◆ setPythonSequenceToQVariantListCallback()

+ +
+
+ + + + + +
+ + + + + + + + +
static void PythonQtConv::setPythonSequenceToQVariantListCallback (PythonQtConvertPythonSequenceToQVariantListCBcb)
+
+inlinestatic
+
+

set a callback that is called when a Python sequence should be converted to a QVariantList to allow special conversion.

+ +

Definition at line 171 of file PythonQtConversion.h.

+
static PythonQtConvertPythonSequenceToQVariantListCB * _pythonSequenceToQVariantListCB
+
+
+
+

Member Data Documentation

+ +

◆ _metaTypeToPythonConverters

+ +
+
+ + + + + +
+ + + + +
QHash<int, PythonQtConvertMetaTypeToPythonCB*> PythonQtConv::_metaTypeToPythonConverters
+
+staticprotected
+
+ +

Definition at line 197 of file PythonQtConversion.h.

+ +
+
+ +

◆ _pythonSequenceToQVariantListCB

+ +
+
+ + + + + +
+ + + + +
PythonQtConvertPythonSequenceToQVariantListCB* PythonQtConv::_pythonSequenceToQVariantListCB
+
+staticprotected
+
+ +

Definition at line 199 of file PythonQtConversion.h.

+ +
+
+ +

◆ _pythonToMetaTypeConverters

+ +
+
+ + + + + +
+ + + + +
QHash<int, PythonQtConvertPythonToMetaTypeCB*> PythonQtConv::_pythonToMetaTypeConverters
+
+staticprotected
+
+ +

Definition at line 198 of file PythonQtConversion.h.

+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/classPythonQtCppWrapperFactory-members.html b/classPythonQtCppWrapperFactory-members.html new file mode 100644 index 000000000..03c2780ba --- /dev/null +++ b/classPythonQtCppWrapperFactory-members.html @@ -0,0 +1,59 @@ + + + + + + + +PythonQt: Member List + + + + + + +
+
+ + + + + + +
+
PythonQt +
+
+
+ + + + + + +
+
+
+
PythonQtCppWrapperFactory Member List
+
+
+ +

This is the complete list of members for PythonQtCppWrapperFactory, including all inherited members.

+ + + + +
create(const QByteArray &classname, void *ptr)=0PythonQtCppWrapperFactorypure virtual
PythonQtCppWrapperFactory()PythonQtCppWrapperFactoryinline
~PythonQtCppWrapperFactory()PythonQtCppWrapperFactoryinlinevirtual
+ + + + diff --git a/classPythonQtCppWrapperFactory.html b/classPythonQtCppWrapperFactory.html new file mode 100644 index 000000000..b377e37b9 --- /dev/null +++ b/classPythonQtCppWrapperFactory.html @@ -0,0 +1,174 @@ + + + + + + + +PythonQt: PythonQtCppWrapperFactory Class Reference + + + + + + +
+
+ + + + + + +
+
PythonQt +
+
+
+ + + + + + +
+
+ +
+
PythonQtCppWrapperFactory Class Referenceabstract
+
+
+ +

Factory interface for C++ classes that can be wrapped by QObject objects. + More...

+ +

#include <PythonQtCppWrapperFactory.h>

+ + + + + + + + + +

+Public Member Functions

 PythonQtCppWrapperFactory ()
 
virtual ~PythonQtCppWrapperFactory ()
 
virtual QObject * create (const QByteArray &classname, void *ptr)=0
 create a wrapper for the given object More...
 
+

Detailed Description

+

Factory interface for C++ classes that can be wrapped by QObject objects.

+

To create your own factory, derive PythonQtCppWrapperFactory and implement the create() method. A factory can be added to PythonQt by PythonQt::addCppWrapperFactory().

+ +

Definition at line 56 of file PythonQtCppWrapperFactory.h.

+

Constructor & Destructor Documentation

+ +

◆ PythonQtCppWrapperFactory()

+ +
+
+ + + + + +
+ + + + + + + +
PythonQtCppWrapperFactory::PythonQtCppWrapperFactory ()
+
+inline
+
+ +

Definition at line 59 of file PythonQtCppWrapperFactory.h.

+
59 {};
+
+
+ +

◆ ~PythonQtCppWrapperFactory()

+ +
+
+ + + + + +
+ + + + + + + +
virtual PythonQtCppWrapperFactory::~PythonQtCppWrapperFactory ()
+
+inlinevirtual
+
+ +

Definition at line 60 of file PythonQtCppWrapperFactory.h.

+
60 {};
+
+
+

Member Function Documentation

+ +

◆ create()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
virtual QObject* PythonQtCppWrapperFactory::create (const QByteArray & classname,
void * ptr 
)
+
+pure virtual
+
+ +

create a wrapper for the given object

+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/classPythonQtDebugAPI-members.html b/classPythonQtDebugAPI-members.html new file mode 100644 index 000000000..f495f1249 --- /dev/null +++ b/classPythonQtDebugAPI-members.html @@ -0,0 +1,64 @@ + + + + + + + +PythonQt: Member List + + + + + + +
+
+ + + + + + +
+
PythonQt +
+
+
+ + + + + + +
+
+
+
PythonQtDebugAPI Member List
+
+
+ +

This is the complete list of members for PythonQtDebugAPI, including all inherited members.

+ + + + + + + + + +
hasExtraShellRefCount(PyObject *object)PythonQtDebugAPIslot
isDerivedShellInstance(PyObject *object)PythonQtDebugAPIslot
isOwnedByPython(PyObject *object)PythonQtDebugAPIslot
isPythonQtClassWrapper(PyObject *object)PythonQtDebugAPIslot
isPythonQtInstanceWrapper(PyObject *object)PythonQtDebugAPIslot
passOwnershipToCPP(PyObject *object)PythonQtDebugAPIslot
passOwnershipToPython(PyObject *object)PythonQtDebugAPIslot
PythonQtDebugAPI(QObject *parent)PythonQtDebugAPIinline
+ + + + diff --git a/classPythonQtDebugAPI.html b/classPythonQtDebugAPI.html new file mode 100644 index 000000000..5f796dea7 --- /dev/null +++ b/classPythonQtDebugAPI.html @@ -0,0 +1,331 @@ + + + + + + + +PythonQt: PythonQtDebugAPI Class Reference + + + + + + +
+
+ + + + + + +
+
PythonQt +
+
+
+ + + + + + +
+
+ +
+
PythonQtDebugAPI Class Reference
+
+
+ +

Some helper methods that allow testing of the ownership. + More...

+ +

#include <PythonQtStdDecorators.h>

+
+Inheritance diagram for PythonQtDebugAPI:
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + +

+Public Slots

bool isOwnedByPython (PyObject *object)
 Returns if the C++ object is owned by PythonQt and will be deleted when the reference goes away. More...
 
bool isDerivedShellInstance (PyObject *object)
 Returns if the C++ object is an instance of a Python class that derives a C++ class. More...
 
bool hasExtraShellRefCount (PyObject *object)
 Returns if the shell instance has an extra ref count from the C++ side. More...
 
bool passOwnershipToCPP (PyObject *object)
 Pass the ownership of the given object to CPP (so that it will not be deleted by Python if the reference goes away) More...
 
bool passOwnershipToPython (PyObject *object)
 Pass the ownership of the given object to Python (so that the C++ object will be deleted when the Python reference goes away) More...
 
bool isPythonQtInstanceWrapper (PyObject *object)
 Returns if the given object is a PythonQt instance wrapper (or derived class) More...
 
bool isPythonQtClassWrapper (PyObject *object)
 Returns if the given object is a PythonQt class wrapper (or derived class) More...
 
+ + + +

+Public Member Functions

 PythonQtDebugAPI (QObject *parent)
 
+

Detailed Description

+

Some helper methods that allow testing of the ownership.

+ +

Definition at line 177 of file PythonQtStdDecorators.h.

+

Constructor & Destructor Documentation

+ +

◆ PythonQtDebugAPI()

+ +
+
+ + + + + +
+ + + + + + + + +
PythonQtDebugAPI::PythonQtDebugAPI (QObject * parent)
+
+inline
+
+ +

Definition at line 181 of file PythonQtStdDecorators.h.

+
181 :QObject(parent) {};
+
+
+

Member Function Documentation

+ +

◆ hasExtraShellRefCount

+ +
+
+ + + + + +
+ + + + + + + + +
bool PythonQtDebugAPI::hasExtraShellRefCount (PyObjectobject)
+
+slot
+
+ +

Returns if the shell instance has an extra ref count from the C++ side.

+ +
+
+ +

◆ isDerivedShellInstance

+ +
+
+ + + + + +
+ + + + + + + + +
bool PythonQtDebugAPI::isDerivedShellInstance (PyObjectobject)
+
+slot
+
+ +

Returns if the C++ object is an instance of a Python class that derives a C++ class.

+ +
+
+ +

◆ isOwnedByPython

+ +
+
+ + + + + +
+ + + + + + + + +
bool PythonQtDebugAPI::isOwnedByPython (PyObjectobject)
+
+slot
+
+ +

Returns if the C++ object is owned by PythonQt and will be deleted when the reference goes away.

+ +
+
+ +

◆ isPythonQtClassWrapper

+ +
+
+ + + + + +
+ + + + + + + + +
bool PythonQtDebugAPI::isPythonQtClassWrapper (PyObjectobject)
+
+slot
+
+ +

Returns if the given object is a PythonQt class wrapper (or derived class)

+ +
+
+ +

◆ isPythonQtInstanceWrapper

+ +
+
+ + + + + +
+ + + + + + + + +
bool PythonQtDebugAPI::isPythonQtInstanceWrapper (PyObjectobject)
+
+slot
+
+ +

Returns if the given object is a PythonQt instance wrapper (or derived class)

+ +
+
+ +

◆ passOwnershipToCPP

+ +
+
+ + + + + +
+ + + + + + + + +
bool PythonQtDebugAPI::passOwnershipToCPP (PyObjectobject)
+
+slot
+
+ +

Pass the ownership of the given object to CPP (so that it will not be deleted by Python if the reference goes away)

+ +
+
+ +

◆ passOwnershipToPython

+ +
+
+ + + + + +
+ + + + + + + + +
bool PythonQtDebugAPI::passOwnershipToPython (PyObjectobject)
+
+slot
+
+ +

Pass the ownership of the given object to Python (so that the C++ object will be deleted when the Python reference goes away)

+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/classPythonQtDebugAPI.png b/classPythonQtDebugAPI.png new file mode 100644 index 0000000000000000000000000000000000000000..2cd505c58b37c7698ed51e9c5965da55af0333b6 GIT binary patch literal 526 zcmeAS@N?(olHy`uVBq!ia0vp^l|UT8!3-q1+O=ANlth3}i0l9V|AEXGZ@!lHADRGU zf$@O@2Ut7r$OE|?B|(0{3_wL7aP?G(5d#C`Tu&FrkP61Pb8k;;R^V|hkE{CkzdwD- z>;)GtM$K5aDa`+kqA6^5*mQj(Roqus^Hb z?wLO4)$MiHZiWBU)0uul+H=)w)lIuUZ~LRzv* zCOv;DdYt%`|2MHOJU(%M(KdC-1+Wfi>FAM}7+%q+3MlkLUQdWW*d+csVg;;QR* z-?u!fWi$JG2A}Sn?5Q$;o80H=IcT2m_!)LWZ$G(F=-?HZ>2(6rGzC3_UL$CDH#nj79$1LspC#z07p_kD*M|gEge&)43yQY{v zZw@cZG~OtF^7!Vx*3UOsxqkbY#8jB~SpVJjr`C4oZ{{37yU;xM)93Gu2O>?A-k#jv zxILIPAj5s%#z%jya;41wsn2=AJKoF8SbCwn)GJTrn&z8NfRV@G>FVdQ&MBb@0QPhF AHUIzs literal 0 HcmV?d00001 diff --git a/classPythonQtForeignWrapperFactory-members.html b/classPythonQtForeignWrapperFactory-members.html new file mode 100644 index 000000000..7e80c42e2 --- /dev/null +++ b/classPythonQtForeignWrapperFactory-members.html @@ -0,0 +1,60 @@ + + + + + + + +PythonQt: Member List + + + + + + +
+
+ + + + + + +
+
PythonQt +
+
+
+ + + + + + +
+
+
+
PythonQtForeignWrapperFactory Member List
+
+
+ +

This is the complete list of members for PythonQtForeignWrapperFactory, including all inherited members.

+ + + + + +
PythonQtForeignWrapperFactory()PythonQtForeignWrapperFactoryinline
unwrap(const QByteArray &classname, PyObject *object)=0PythonQtForeignWrapperFactorypure virtual
wrap(const QByteArray &classname, void *ptr)=0PythonQtForeignWrapperFactorypure virtual
~PythonQtForeignWrapperFactory()PythonQtForeignWrapperFactoryinlinevirtual
+ + + + diff --git a/classPythonQtForeignWrapperFactory.html b/classPythonQtForeignWrapperFactory.html new file mode 100644 index 000000000..7dffe051f --- /dev/null +++ b/classPythonQtForeignWrapperFactory.html @@ -0,0 +1,207 @@ + + + + + + + +PythonQt: PythonQtForeignWrapperFactory Class Reference + + + + + + +
+
+ + + + + + +
+
PythonQt +
+
+
+ + + + + + +
+
+ +
+
PythonQtForeignWrapperFactory Class Referenceabstract
+
+
+ +

#include <PythonQtCppWrapperFactory.h>

+ + + + + + + + + + +

+Public Member Functions

 PythonQtForeignWrapperFactory ()
 
virtual ~PythonQtForeignWrapperFactory ()
 
virtual PyObjectwrap (const QByteArray &classname, void *ptr)=0
 
virtual void * unwrap (const QByteArray &classname, PyObject *object)=0
 
+

Detailed Description

+

Factory interface for C++ classes that can be mapped directly from/to Python with other means than PythonQt/QObjects.

+ +

Definition at line 69 of file PythonQtCppWrapperFactory.h.

+

Constructor & Destructor Documentation

+ +

◆ PythonQtForeignWrapperFactory()

+ +
+
+ + + + + +
+ + + + + + + +
PythonQtForeignWrapperFactory::PythonQtForeignWrapperFactory ()
+
+inline
+
+ +

Definition at line 72 of file PythonQtCppWrapperFactory.h.

+
72 {};
+
+
+ +

◆ ~PythonQtForeignWrapperFactory()

+ +
+
+ + + + + +
+ + + + + + + +
virtual PythonQtForeignWrapperFactory::~PythonQtForeignWrapperFactory ()
+
+inlinevirtual
+
+ +

Definition at line 73 of file PythonQtCppWrapperFactory.h.

+
73 {};
+
+
+

Member Function Documentation

+ +

◆ unwrap()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
virtual void* PythonQtForeignWrapperFactory::unwrap (const QByteArray & classname,
PyObjectobject 
)
+
+pure virtual
+
+

unwrap the given object to a C++ object of type classname if possible Return NULL otherwise.

+ +
+
+ +

◆ wrap()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
virtual PyObject* PythonQtForeignWrapperFactory::wrap (const QByteArray & classname,
void * ptr 
)
+
+pure virtual
+
+

create a Python object (with new reference count), wrapping the given ptr as class of type classname Return NULL (and not Py_None) if the object could not be wrapped.

+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/classPythonQtGILScope-members.html b/classPythonQtGILScope-members.html new file mode 100644 index 000000000..4b1933ab4 --- /dev/null +++ b/classPythonQtGILScope-members.html @@ -0,0 +1,61 @@ + + + + + + + +PythonQt: Member List + + + + + + +
+
+ + + + + + +
+
PythonQt +
+
+
+ + + + + + +
+
+
+
PythonQtGILScope Member List
+
+
+ +

This is the complete list of members for PythonQtGILScope, including all inherited members.

+ + + + + + +
isGILScopeEnabled()PythonQtGILScopestatic
PythonQtGILScope()PythonQtGILScope
release()PythonQtGILScope
setGILScopeEnabled(bool flag)PythonQtGILScopestatic
~PythonQtGILScope()PythonQtGILScope
+ + + + diff --git a/classPythonQtGILScope.html b/classPythonQtGILScope.html new file mode 100644 index 000000000..77c16ee00 --- /dev/null +++ b/classPythonQtGILScope.html @@ -0,0 +1,191 @@ + + + + + + + +PythonQt: PythonQtGILScope Class Reference + + + + + + +
+
+ + + + + + +
+
PythonQt +
+
+
+ + + + + + +
+
+ +
+
PythonQtGILScope Class Reference
+
+
+ +

#include <PythonQtThreadSupport.h>

+ + + + + + + + +

+Public Member Functions

 PythonQtGILScope ()
 
 ~PythonQtGILScope ()
 
void release ()
 
+ + + + + + +

+Static Public Member Functions

static void setGILScopeEnabled (bool flag)
 
static bool isGILScopeEnabled ()
 Check if GIL scopes are enabled. More...
 
+

Detailed Description

+

Ensures/releases the Python GIL An instance of this class can be used to allow access to the Python API from C++ code.

+ +

Definition at line 60 of file PythonQtThreadSupport.h.

+

Constructor & Destructor Documentation

+ +

◆ PythonQtGILScope()

+ +
+
+ + + + + + + +
PythonQtGILScope::PythonQtGILScope ()
+
+ +
+
+ +

◆ ~PythonQtGILScope()

+ +
+
+ + + + + + + +
PythonQtGILScope::~PythonQtGILScope ()
+
+ +
+
+

Member Function Documentation

+ +

◆ isGILScopeEnabled()

+ +
+
+ + + + + +
+ + + + + + + +
static bool PythonQtGILScope::isGILScopeEnabled ()
+
+static
+
+ +

Check if GIL scopes are enabled.

+ +
+
+ +

◆ release()

+ +
+
+ + + + + + + +
void PythonQtGILScope::release ()
+
+ +
+
+ +

◆ setGILScopeEnabled()

+ +
+
+ + + + + +
+ + + + + + + + +
static void PythonQtGILScope::setGILScopeEnabled (bool flag)
+
+static
+
+

This allows to globally enable/disable the GIL scopes. Make sure to only call this early in the PythonQt setup, or when you are holding the GIL.

+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/classPythonQtImport-members.html b/classPythonQtImport-members.html new file mode 100644 index 000000000..2ef268903 --- /dev/null +++ b/classPythonQtImport-members.html @@ -0,0 +1,75 @@ + + + + + + + +PythonQt: Member List + + + + + + +
+
+ + + + + + +
+
PythonQt +
+
+
+ + + + + + +
+
+
+
PythonQtImport Member List
+
+
+ +

This is the complete list of members for PythonQtImport, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + +
compileSource(const QString &path, const QByteArray &data)PythonQtImportstatic
getCacheFilename(const QString &sourceFile, bool isOptimizedFilename)PythonQtImportstatic
getCodeFromData(const QString &path, int isbytecode=0, int ispackage=0, time_t mtime=0)PythonQtImportstatic
getCodeFromPyc(const QString &file)PythonQtImportstatic
getLong(unsigned char *buf)PythonQtImportstatic
getModuleCode(PythonQtImporter *self, const char *fullname, QString &modpath, QString &cachemodpath)PythonQtImportstatic
getModuleInfo(PythonQtImporter *self, const QString &fullname)PythonQtImportstatic
getMTimeOfSource(const QString &path)PythonQtImportstatic
getSourceFilename(const QString &cacheFile)PythonQtImportstatic
getSubName(const QString &str)PythonQtImportstatic
init()PythonQtImportstatic
MI_MODULE enum valuePythonQtImport
MI_NOT_FOUND enum valuePythonQtImport
MI_PACKAGE enum valuePythonQtImport
MI_SHAREDLIBRARY enum valuePythonQtImport
ModuleType enum namePythonQtImport
replaceExtension(const QString &str, const QString &ext)PythonQtImportstatic
unmarshalCode(const QString &path, const QByteArray &data, time_t mtime)PythonQtImportstatic
writeCompiledModule(PyCodeObject *co, const QString &filename, long mtime, long sourceSize)PythonQtImportstatic
+ + + + diff --git a/classPythonQtImport.html b/classPythonQtImport.html new file mode 100644 index 000000000..9385df15b --- /dev/null +++ b/classPythonQtImport.html @@ -0,0 +1,662 @@ + + + + + + + +PythonQt: PythonQtImport Class Reference + + + + + + +
+
+ + + + + + +
+
PythonQt +
+
+
+ + + + + + +
+
+ +
+
PythonQtImport Class Reference
+
+
+ +

implements importing of python files into PythonQt + More...

+ +

#include <PythonQtImporter.h>

+ + + + +

+Classes

struct  ModuleInfo
 
+ + + +

+Public Types

enum  ModuleType { MI_NOT_FOUND, +MI_MODULE, +MI_PACKAGE, +MI_SHAREDLIBRARY + }
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Static Public Member Functions

static void init ()
 initialize More...
 
static void writeCompiledModule (PyCodeObject *co, const QString &filename, long mtime, long sourceSize)
 writes the python code to disk, marshalling and writing the time stamp More...
 
static PyObjectunmarshalCode (const QString &path, const QByteArray &data, time_t mtime)
 
static PyObjectcompileSource (const QString &path, const QByteArray &data)
 
static PyObjectgetCodeFromData (const QString &path, int isbytecode=0, int ispackage=0, time_t mtime=0)
 
static PyObjectgetModuleCode (PythonQtImporter *self, const char *fullname, QString &modpath, QString &cachemodpath)
 
static PyObjectgetCodeFromPyc (const QString &file)
 gets the compiled code for the given *.py file if there is a valid pyc file, otherwise compiles the file and writes the pyc More...
 
static ModuleInfo getModuleInfo (PythonQtImporter *self, const QString &fullname)
 Return if module exists and is a package or a module. More...
 
static QString getSubName (const QString &str)
 get the last name of a dot chain (first.second.last) More...
 
static long getLong (unsigned char *buf)
 
static time_t getMTimeOfSource (const QString &path)
 get time stamp of file More...
 
static QString replaceExtension (const QString &str, const QString &ext)
 replace extension of file More...
 
static QString getCacheFilename (const QString &sourceFile, bool isOptimizedFilename)
 Returns the filename of the cache file for the given source file, e.g. test.pyc for test.py. More...
 
static QString getSourceFilename (const QString &cacheFile)
 Returns the filename of the source file for the given cache file, e.g. test.py for test.pyc. More...
 
+

Detailed Description

+

implements importing of python files into PythonQt

+

also compiles/marshalls/unmarshalls py/pyc files and handles time stamps correctly

+ +

Definition at line 67 of file PythonQtImporter.h.

+

Member Enumeration Documentation

+ +

◆ ModuleType

+ +
+
+ + + + +
enum PythonQtImport::ModuleType
+
+ + + + + +
Enumerator
MI_NOT_FOUND 
MI_MODULE 
MI_PACKAGE 
MI_SHAREDLIBRARY 
+ +

Definition at line 71 of file PythonQtImporter.h.

+ +
+
+

Member Function Documentation

+ +

◆ compileSource()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static PyObject* PythonQtImport::compileSource (const QString & path,
const QByteArray & data 
)
+
+static
+
+

Given a string buffer containing Python source code, compile it return and return a code object as a new reference.

+ +
+
+ +

◆ getCacheFilename()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static QString PythonQtImport::getCacheFilename (const QString & sourceFile,
bool isOptimizedFilename 
)
+
+static
+
+ +

Returns the filename of the cache file for the given source file, e.g. test.pyc for test.py.

+ +
+
+ +

◆ getCodeFromData()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
static PyObject* PythonQtImport::getCodeFromData (const QString & path,
int isbytecode = 0,
int ispackage = 0,
time_t mtime = 0 
)
+
+static
+
+

Return the code object for the module named by 'fullname' from the Zip archive as a new reference.

+ +
+
+ +

◆ getCodeFromPyc()

+ +
+
+ + + + + +
+ + + + + + + + +
static PyObject* PythonQtImport::getCodeFromPyc (const QString & file)
+
+static
+
+ +

gets the compiled code for the given *.py file if there is a valid pyc file, otherwise compiles the file and writes the pyc

+ +
+
+ +

◆ getLong()

+ +
+
+ + + + + +
+ + + + + + + + +
static long PythonQtImport::getLong (unsigned char * buf)
+
+static
+
+

Given a buffer, return the long that is represented by the first 4 bytes, encoded as little endian. This partially reimplements marshal.c:r_long()

+ +
+
+ +

◆ getModuleCode()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
static PyObject* PythonQtImport::getModuleCode (PythonQtImporterself,
const char * fullname,
QString & modpath,
QString & cachemodpath 
)
+
+static
+
+

Get the code object associated with the module specified by 'fullname'. In Python3, modpath will always be the path to the *.py file and cachemodpath the path to the *.pyc file (if it exists).

+ +
+
+ +

◆ getModuleInfo()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static ModuleInfo PythonQtImport::getModuleInfo (PythonQtImporterself,
const QString & fullname 
)
+
+static
+
+ +

Return if module exists and is a package or a module.

+ +
+
+ +

◆ getMTimeOfSource()

+ +
+
+ + + + + +
+ + + + + + + + +
static time_t PythonQtImport::getMTimeOfSource (const QString & path)
+
+static
+
+ +

get time stamp of file

+ +
+
+ +

◆ getSourceFilename()

+ +
+
+ + + + + +
+ + + + + + + + +
static QString PythonQtImport::getSourceFilename (const QString & cacheFile)
+
+static
+
+ +

Returns the filename of the source file for the given cache file, e.g. test.py for test.pyc.

+ +
+
+ +

◆ getSubName()

+ +
+
+ + + + + +
+ + + + + + + + +
static QString PythonQtImport::getSubName (const QString & str)
+
+static
+
+ +

get the last name of a dot chain (first.second.last)

+ +
+
+ +

◆ init()

+ +
+
+ + + + + +
+ + + + + + + +
static void PythonQtImport::init ()
+
+static
+
+ +

initialize

+ +
+
+ +

◆ replaceExtension()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static QString PythonQtImport::replaceExtension (const QString & str,
const QString & ext 
)
+
+static
+
+ +

replace extension of file

+ +
+
+ +

◆ unmarshalCode()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
static PyObject* PythonQtImport::unmarshalCode (const QString & path,
const QByteArray & data,
time_t mtime 
)
+
+static
+
+

Given the contents of a .py[co] file in a buffer, unmarshal the data and return the code object. Return None if it the magic word doesn't match (we do this instead of raising an exception as we fall back to .py if available and we don't want to mask other errors). Returns a new reference.

+ +
+
+ +

◆ writeCompiledModule()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
static void PythonQtImport::writeCompiledModule (PyCodeObject * co,
const QString & filename,
long mtime,
long sourceSize 
)
+
+static
+
+ +

writes the python code to disk, marshalling and writing the time stamp

+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/classPythonQtImportFileInterface-members.html b/classPythonQtImportFileInterface-members.html new file mode 100644 index 000000000..7cb32d00f --- /dev/null +++ b/classPythonQtImportFileInterface-members.html @@ -0,0 +1,64 @@ + + + + + + + +PythonQt: Member List + + + + + + +
+
+ + + + + + +
+
PythonQt +
+
+
+ + + + + + +
+
+
+
PythonQtImportFileInterface Member List
+
+
+ +

This is the complete list of members for PythonQtImportFileInterface, including all inherited members.

+ + + + + + + + + +
exists(const QString &filename)=0PythonQtImportFileInterfacepure virtual
ignoreUpdatedPythonSourceFiles()PythonQtImportFileInterfaceinlinevirtual
importedModule(const QString &)PythonQtImportFileInterfaceinlinevirtual
isEggArchive(const QString &filename)=0PythonQtImportFileInterfacepure virtual
lastModifiedDate(const QString &filename)=0PythonQtImportFileInterfacepure virtual
readFileAsBytes(const QString &filename)=0PythonQtImportFileInterfacepure virtual
readSourceFile(const QString &filename, bool &ok)=0PythonQtImportFileInterfacepure virtual
~PythonQtImportFileInterface()PythonQtImportFileInterfaceinlinevirtual
+ + + + diff --git a/classPythonQtImportFileInterface.html b/classPythonQtImportFileInterface.html new file mode 100644 index 000000000..716091e90 --- /dev/null +++ b/classPythonQtImportFileInterface.html @@ -0,0 +1,341 @@ + + + + + + + +PythonQt: PythonQtImportFileInterface Class Reference + + + + + + +
+
+ + + + + + +
+
PythonQt +
+
+
+ + + + + + +
+
+ +
+
PythonQtImportFileInterface Class Referenceabstract
+
+
+ +

#include <PythonQtImportFileInterface.h>

+
+Inheritance diagram for PythonQtImportFileInterface:
+
+
+ + +PythonQtQFileImporter + +
+ + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

virtual ~PythonQtImportFileInterface ()
 
virtual QByteArray readFileAsBytes (const QString &filename)=0
 read the given file as byte array, without doing any linefeed translations More...
 
virtual QByteArray readSourceFile (const QString &filename, bool &ok)=0
 
virtual bool exists (const QString &filename)=0
 returns if the file exists More...
 
virtual bool isEggArchive (const QString &filename)=0
 
virtual QDateTime lastModifiedDate (const QString &filename)=0
 get the last modified data of a file More...
 
virtual bool ignoreUpdatedPythonSourceFiles ()
 
virtual void importedModule (const QString &)
 
+

Detailed Description

+

Defines an abstract interface to file access for the Python import statement. see PythonQt::setImporter()

+ +

Definition at line 52 of file PythonQtImportFileInterface.h.

+

Constructor & Destructor Documentation

+ +

◆ ~PythonQtImportFileInterface()

+ +
+
+ + + + + +
+ + + + + + + +
virtual PythonQtImportFileInterface::~PythonQtImportFileInterface ()
+
+inlinevirtual
+
+ +

Definition at line 56 of file PythonQtImportFileInterface.h.

+
56 {}
+
+
+

Member Function Documentation

+ +

◆ exists()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual bool PythonQtImportFileInterface::exists (const QString & filename)
+
+pure virtual
+
+ +

returns if the file exists

+ +

Implemented in PythonQtQFileImporter.

+ +
+
+ +

◆ ignoreUpdatedPythonSourceFiles()

+ +
+
+ + + + + +
+ + + + + + + +
virtual bool PythonQtImportFileInterface::ignoreUpdatedPythonSourceFiles ()
+
+inlinevirtual
+
+

indicates that *.py files which are newer than their corresponding *.pyc files are ignored

+ +

Definition at line 77 of file PythonQtImportFileInterface.h.

+
77 { return false; }
+
+
+ +

◆ importedModule()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void PythonQtImportFileInterface::importedModule (const QString & )
+
+inlinevirtual
+
+

called by PythonQt after successful import to allow recording of imports

+ +

Definition at line 81 of file PythonQtImportFileInterface.h.

+
81 {};
+
+
+ +

◆ isEggArchive()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual bool PythonQtImportFileInterface::isEggArchive (const QString & filename)
+
+pure virtual
+
+

returns true if the given file is an egg archive (e.g. zip). If the egg is a directory then false is returned.

+ +

Implemented in PythonQtQFileImporter.

+ +
+
+ +

◆ lastModifiedDate()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual QDateTime PythonQtImportFileInterface::lastModifiedDate (const QString & filename)
+
+pure virtual
+
+ +

get the last modified data of a file

+ +

Implemented in PythonQtQFileImporter.

+ +
+
+ +

◆ readFileAsBytes()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual QByteArray PythonQtImportFileInterface::readFileAsBytes (const QString & filename)
+
+pure virtual
+
+ +

read the given file as byte array, without doing any linefeed translations

+ +

Implemented in PythonQtQFileImporter.

+ +
+
+ +

◆ readSourceFile()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
virtual QByteArray PythonQtImportFileInterface::readSourceFile (const QString & filename,
bool & ok 
)
+
+pure virtual
+
+

read a source file, expects a readable Python text file with translated line feeds. If the file can not be load OR it can not be verified, ok is set to false

+ +

Implemented in PythonQtQFileImporter.

+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/classPythonQtImportFileInterface.png b/classPythonQtImportFileInterface.png new file mode 100644 index 0000000000000000000000000000000000000000..520aaa660b81287c69e9f40ffff8ef9c4309e563 GIT binary patch literal 730 zcmeAS@N?(olHy`uVBq!ia0vp^D}gwGgBeJMPFs2gNJ#|vgt-3y{~ySF@#br3|Dg#$ z78oBmaDcV*jy#adQ4-`A%m7pb0#{Fk7%?y~WqP_ehEy=Vo%?pu5(OSt{^_gg{=3iH z_|q+5x%s=ktv-cYn>}sV4*fZ5`CLv><^b~+55}CWKs?pcxjOXoW`B>m;(jZ4pW7Dw zbxZFsB#T~(?JErVw%hF%tK4L{XSXM^brjSbeY7|K;;DNd8@i|ev8iHj-?Vj7@F~GP z&O2u}B$;ow%#7HXwkYy&PL4_AwvX@bbpO{Y7Z1=6H#NSsJak*&nZA-YvHR9*JvJy8 zzmPjyF>|}$a&z{(5)-$X=H6O8Q`_g}^4FhbGv`>Y$-Fg(?^U6nm4@3>LyjD)Pw7i) z-(Q#hCiL>=tN0ts?^;f2^gbN6TDY1sMl$yObD78Y^yi1OE@8R)W#4!Gd07n3cmJ)= z^Z)fw`@h}G<@tZuO<8~RMlE632Ew=aa-PqrZeTd`m8qgd&iPlBE$dgqCHEKbJJ#~O zd{xVktsBG;O)UQVe#yP+{I%1+-;3tf_vF8zG*tzt*K^a=mMgjSQ-8`$x}yEF)!Qhk zLfFi+;N!#J z6|~%Y$@{>t&0D*Uw`@5nxNn88nUU(st0(Q&-n+C|e&Vzj(@N&#q<96bUOemE4Y%$0 zR_tGpx8C{EDw|1HUbUFKn|XNFvb)zMHpdo*U9K$tEBVs%{rT|yw`Z`ep3i?OYxnkq zjjs>q7%kg7-~IY;!F^V#dOg^g;DjK*b`tvWbkzLb6Mw<&;$Sz_*Y8+ literal 0 HcmV?d00001 diff --git a/classPythonQtMethodInfo-members.html b/classPythonQtMethodInfo-members.html new file mode 100644 index 000000000..5517434ef --- /dev/null +++ b/classPythonQtMethodInfo-members.html @@ -0,0 +1,84 @@ + + + + + + + +PythonQt: Member List + + + + + + +
+
+ + + + + + +
+
PythonQt +
+
+
+ + + + + + +
+
+
+
PythonQtMethodInfo Member List
+
+
+ +

This is the complete list of members for PythonQtMethodInfo, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
_cachedParameterInfosPythonQtMethodInfoprotectedstatic
_cachedSignaturesPythonQtMethodInfoprotectedstatic
_parameterNameAliasesPythonQtMethodInfoprotectedstatic
_parametersPythonQtMethodInfoprotected
_parameterTypeDictPythonQtMethodInfoprotectedstatic
_shouldAllowThreadsPythonQtMethodInfoprotected
addParameterTypeAlias(const QByteArray &alias, const QByteArray &name)PythonQtMethodInfostatic
cleanupCachedMethodInfos()PythonQtMethodInfostatic
fillParameterInfo(ParameterInfo &type, const QByteArray &name, PythonQtClassInfo *classInfo=NULL)PythonQtMethodInfostatic
getCachedMethodInfo(const QMetaMethod &method, PythonQtClassInfo *classInfo)PythonQtMethodInfostatic
getCachedMethodInfoFromArgumentList(int numArgs, const char **args)PythonQtMethodInfostatic
getInnerListTypeName(const QByteArray &typeName)PythonQtMethodInfostatic
getInnerTemplateMetaType(const QByteArray &typeName)PythonQtMethodInfostatic
getInnerTemplateTypeName(const QByteArray &typeName)PythonQtMethodInfostatic
getParameterInfoForMetaType(int type)PythonQtMethodInfostatic
nameToType(const char *name)PythonQtMethodInfostatic
parameterCount() constPythonQtMethodInfoinline
parameters() constPythonQtMethodInfoinline
ParameterType enum namePythonQtMethodInfo
PythonQtMethodInfo()PythonQtMethodInfoinline
PythonQtMethodInfo(const QMetaMethod &meta, PythonQtClassInfo *classInfo)PythonQtMethodInfo
PythonQtMethodInfo(const QByteArray &typeName, const QList< QByteArray > &args)PythonQtMethodInfo
PythonQtMethodInfo(const PythonQtMethodInfo &other)PythonQtMethodInfoinline
setupAllowThreads()PythonQtMethodInfoprotected
shouldAllowThreads() constPythonQtMethodInfoinline
Unknown enum valuePythonQtMethodInfo
Variant enum valuePythonQtMethodInfo
~PythonQtMethodInfo()PythonQtMethodInfoinline
+ + + + diff --git a/classPythonQtMethodInfo.html b/classPythonQtMethodInfo.html new file mode 100644 index 000000000..768439d87 --- /dev/null +++ b/classPythonQtMethodInfo.html @@ -0,0 +1,943 @@ + + + + + + + +PythonQt: PythonQtMethodInfo Class Reference + + + + + + +
+
+ + + + + + +
+
PythonQt +
+
+
+ + + + + + +
+ +
+ +

stores information about a specific signal/slot/method + More...

+ +

#include <PythonQtMethodInfo.h>

+
+Inheritance diagram for PythonQtMethodInfo:
+
+
+ + +PythonQtSlotInfo + +
+ + + + + +

+Classes

struct  ParameterInfo
 stores various informations about a parameter/type name More...
 
+ + + +

+Public Types

enum  ParameterType { Unknown = -1, +Variant = -2 + }
 
+ + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 PythonQtMethodInfo ()
 
 ~PythonQtMethodInfo ()
 
 PythonQtMethodInfo (const QMetaMethod &meta, PythonQtClassInfo *classInfo)
 
 PythonQtMethodInfo (const QByteArray &typeName, const QList< QByteArray > &args)
 
 PythonQtMethodInfo (const PythonQtMethodInfo &other)
 
int parameterCount () const
 returns the number of parameters including the return value More...
 
const QList< ParameterInfo > & parameters () const
 get the parameter infos More...
 
bool shouldAllowThreads () const
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Static Public Member Functions

static const PythonQtMethodInfogetCachedMethodInfo (const QMetaMethod &method, PythonQtClassInfo *classInfo)
 
static const PythonQtMethodInfogetCachedMethodInfoFromArgumentList (int numArgs, const char **args)
 get the cached method info using the passed in list of return value and arguments, return value needs to be passed as first arg More...
 
static void cleanupCachedMethodInfos ()
 cleanup the cache More...
 
static int nameToType (const char *name)
 returns the id for the given type (using an internal dictionary) More...
 
static void addParameterTypeAlias (const QByteArray &alias, const QByteArray &name)
 add an alias for a typename, e.g. QObjectList and QList<QObject*>. More...
 
static void fillParameterInfo (ParameterInfo &type, const QByteArray &name, PythonQtClassInfo *classInfo=NULL)
 fill the parameter info for the given type name More...
 
static const ParameterInfogetParameterInfoForMetaType (int type)
 returns a parameter info for the given metatype (and creates and caches one if it is not yet present) More...
 
static int getInnerTemplateMetaType (const QByteArray &typeName)
 returns the inner type id of a simple template of the form SomeObject<InnerType> More...
 
static QByteArray getInnerTemplateTypeName (const QByteArray &typeName)
 returns the inner type name of a simple template of the form SomeObject<InnerType> More...
 
static QByteArray getInnerListTypeName (const QByteArray &typeName)
 returns the inner type name of a simple template or the typename without appended "List". More...
 
+ + + +

+Protected Member Functions

void setupAllowThreads ()
 
+ + + + + +

+Protected Attributes

QList< ParameterInfo_parameters
 
bool _shouldAllowThreads
 
+ + + + + + + + + + +

+Static Protected Attributes

static QHash< QByteArray, int > _parameterTypeDict
 
static QHash< QByteArray, QByteArray > _parameterNameAliases
 
static QHash< QByteArray, PythonQtMethodInfo * > _cachedSignatures
 stores the cached signatures of methods to speedup mapping from Qt to Python types More...
 
static QHash< int, ParameterInfo_cachedParameterInfos
 
+

Detailed Description

+

stores information about a specific signal/slot/method

+ +

Definition at line 58 of file PythonQtMethodInfo.h.

+

Member Enumeration Documentation

+ +

◆ ParameterType

+ +
+
+ + + +
Enumerator
Unknown 
Variant 
+ +

Definition at line 61 of file PythonQtMethodInfo.h.

+ +
+
+

Constructor & Destructor Documentation

+ +

◆ PythonQtMethodInfo() [1/4]

+ +
+
+ + + + + +
+ + + + + + + +
PythonQtMethodInfo::PythonQtMethodInfo ()
+
+inline
+
+ +

Definition at line 82 of file PythonQtMethodInfo.h.

+
82  {
83  _shouldAllowThreads = true;
84  };
+
+
+
+ +

◆ ~PythonQtMethodInfo()

+ +
+
+ + + + + +
+ + + + + + + +
PythonQtMethodInfo::~PythonQtMethodInfo ()
+
+inline
+
+ +

Definition at line 85 of file PythonQtMethodInfo.h.

+
85 {};
+
+
+ +

◆ PythonQtMethodInfo() [2/4]

+ +
+
+ + + + + + + + + + + + + + + + + + +
PythonQtMethodInfo::PythonQtMethodInfo (const QMetaMethod & meta,
PythonQtClassInfoclassInfo 
)
+
+ +
+
+ +

◆ PythonQtMethodInfo() [3/4]

+ +
+
+ + + + + + + + + + + + + + + + + + +
PythonQtMethodInfo::PythonQtMethodInfo (const QByteArray & typeName,
const QList< QByteArray > & args 
)
+
+ +
+
+ +

◆ PythonQtMethodInfo() [4/4]

+ +
+
+ + + + + +
+ + + + + + + + +
PythonQtMethodInfo::PythonQtMethodInfo (const PythonQtMethodInfoother)
+
+inline
+
+ +

Definition at line 88 of file PythonQtMethodInfo.h.

+
88  {
89  _parameters = other._parameters;
91  }
+
QList< ParameterInfo > _parameters
+
+

References _parameters, and _shouldAllowThreads.

+ +
+
+

Member Function Documentation

+ +

◆ addParameterTypeAlias()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static void PythonQtMethodInfo::addParameterTypeAlias (const QByteArray & alias,
const QByteArray & name 
)
+
+static
+
+ +

add an alias for a typename, e.g. QObjectList and QList<QObject*>.

+ +
+
+ +

◆ cleanupCachedMethodInfos()

+ +
+
+ + + + + +
+ + + + + + + +
static void PythonQtMethodInfo::cleanupCachedMethodInfos ()
+
+static
+
+ +

cleanup the cache

+ +
+
+ +

◆ fillParameterInfo()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
static void PythonQtMethodInfo::fillParameterInfo (ParameterInfotype,
const QByteArray & name,
PythonQtClassInfoclassInfo = NULL 
)
+
+static
+
+ +

fill the parameter info for the given type name

+ +
+
+ +

◆ getCachedMethodInfo()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static const PythonQtMethodInfo* PythonQtMethodInfo::getCachedMethodInfo (const QMetaMethod & method,
PythonQtClassInfoclassInfo 
)
+
+static
+
+

returns the method info of the signature, uses a cache internally to speed up multiple requests for the same method, classInfo is passed to allow local enum resolution (if NULL is passed, no local enums are recognized)

+ +

Referenced by PythonQtSlotInfo::PythonQtSlotInfo().

+ +
+
+ +

◆ getCachedMethodInfoFromArgumentList()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static const PythonQtMethodInfo* PythonQtMethodInfo::getCachedMethodInfoFromArgumentList (int numArgs,
const char ** args 
)
+
+static
+
+ +

get the cached method info using the passed in list of return value and arguments, return value needs to be passed as first arg

+ +
+
+ +

◆ getInnerListTypeName()

+ +
+
+ + + + + +
+ + + + + + + + +
static QByteArray PythonQtMethodInfo::getInnerListTypeName (const QByteArray & typeName)
+
+static
+
+ +

returns the inner type name of a simple template or the typename without appended "List".

+ +

Referenced by PythonQtConvertListOfKnownClassToPythonList(), and PythonQtConvertPythonListToListOfKnownClass().

+ +
+
+ +

◆ getInnerTemplateMetaType()

+ +
+
+ + + + + +
+ + + + + + + + +
static int PythonQtMethodInfo::getInnerTemplateMetaType (const QByteArray & typeName)
+
+static
+
+ +

returns the inner type id of a simple template of the form SomeObject<InnerType>

+ +

Referenced by PythonQtConvertListOfPairToPythonList(), PythonQtConvertListOfValueTypeToPythonList(), PythonQtConvertPythonListToListOfPair(), and PythonQtConvertPythonListToListOfValueType().

+ +
+
+ +

◆ getInnerTemplateTypeName()

+ +
+
+ + + + + +
+ + + + + + + + +
static QByteArray PythonQtMethodInfo::getInnerTemplateTypeName (const QByteArray & typeName)
+
+static
+
+ +

returns the inner type name of a simple template of the form SomeObject<InnerType>

+ +

Referenced by PythonQtConvertIntegerMapToPython(), PythonQtConvertPairToPython(), PythonQtConvertPythonToIntegerMap(), and PythonQtConvertPythonToPair().

+ +
+
+ +

◆ getParameterInfoForMetaType()

+ +
+
+ + + + + +
+ + + + + + + + +
static const ParameterInfo& PythonQtMethodInfo::getParameterInfoForMetaType (int type)
+
+static
+
+ +

returns a parameter info for the given metatype (and creates and caches one if it is not yet present)

+ +
+
+ +

◆ nameToType()

+ +
+
+ + + + + +
+ + + + + + + + +
static int PythonQtMethodInfo::nameToType (const char * name)
+
+static
+
+ +

returns the id for the given type (using an internal dictionary)

+ +
+
+ +

◆ parameterCount()

+ +
+
+ + + + + +
+ + + + + + + +
int PythonQtMethodInfo::parameterCount () const
+
+inline
+
+ +

returns the number of parameters including the return value

+ +

Definition at line 104 of file PythonQtMethodInfo.h.

+
104 { return _parameters.size(); };
QList< ParameterInfo > _parameters
+
+
+
+ +

◆ parameters()

+ +
+
+ + + + + +
+ + + + + + + +
const QList<ParameterInfo>& PythonQtMethodInfo::parameters () const
+
+inline
+
+ +

get the parameter infos

+ +

Definition at line 110 of file PythonQtMethodInfo.h.

+
110 { return _parameters; }
QList< ParameterInfo > _parameters
+
+

Referenced by PythonQtSlotInfo::PythonQtSlotInfo().

+ +
+
+ +

◆ setupAllowThreads()

+ +
+
+ + + + + +
+ + + + + + + +
void PythonQtMethodInfo::setupAllowThreads ()
+
+protected
+
+ +
+
+ +

◆ shouldAllowThreads()

+ +
+
+ + + + + +
+ + + + + + + +
bool PythonQtMethodInfo::shouldAllowThreads () const
+
+inline
+
+

returns if the GIL should be released when calling this method. This is the default, but it will return false if any of the parameters is a PythonQtObjectPtr or PyObject*.

+ +

Definition at line 133 of file PythonQtMethodInfo.h.

+
133 { return _shouldAllowThreads; }
+
+

Referenced by PythonQtSlotInfo::PythonQtSlotInfo().

+ +
+
+

Member Data Documentation

+ +

◆ _cachedParameterInfos

+ +
+
+ + + + + +
+ + + + +
QHash<int, ParameterInfo> PythonQtMethodInfo::_cachedParameterInfos
+
+staticprotected
+
+ +

Definition at line 144 of file PythonQtMethodInfo.h.

+ +
+
+ +

◆ _cachedSignatures

+ +
+
+ + + + + +
+ + + + +
QHash<QByteArray, PythonQtMethodInfo*> PythonQtMethodInfo::_cachedSignatures
+
+staticprotected
+
+ +

stores the cached signatures of methods to speedup mapping from Qt to Python types

+ +

Definition at line 142 of file PythonQtMethodInfo.h.

+ +
+
+ +

◆ _parameterNameAliases

+ +
+
+ + + + + +
+ + + + +
QHash<QByteArray, QByteArray> PythonQtMethodInfo::_parameterNameAliases
+
+staticprotected
+
+ +

Definition at line 139 of file PythonQtMethodInfo.h.

+ +
+
+ +

◆ _parameters

+ +
+
+ + + + + +
+ + + + +
QList<ParameterInfo> PythonQtMethodInfo::_parameters
+
+protected
+
+ +

Definition at line 146 of file PythonQtMethodInfo.h.

+ +

Referenced by PythonQtMethodInfo(), and PythonQtSlotInfo::PythonQtSlotInfo().

+ +
+
+ +

◆ _parameterTypeDict

+ +
+
+ + + + + +
+ + + + +
QHash<QByteArray, int> PythonQtMethodInfo::_parameterTypeDict
+
+staticprotected
+
+ +

Definition at line 138 of file PythonQtMethodInfo.h.

+ +
+
+ +

◆ _shouldAllowThreads

+ +
+
+ + + + + +
+ + + + +
bool PythonQtMethodInfo::_shouldAllowThreads
+
+protected
+
+ +

Definition at line 147 of file PythonQtMethodInfo.h.

+ +

Referenced by PythonQtMethodInfo(), and PythonQtSlotInfo::PythonQtSlotInfo().

+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/classPythonQtMethodInfo.png b/classPythonQtMethodInfo.png new file mode 100644 index 0000000000000000000000000000000000000000..818b0973158ddd9140bd31b4119bfff8e342e326 GIT binary patch literal 565 zcmeAS@N?(olHy`uVBq!ia0vp^^*|iJ!3-qXXGR?YQW60^A+G=b{|7Q(y!l$%e`o@b z1;z&s9ANFdBM;MWs6Dsd?^9&V^*b{0tbfIZ=SDu#s;-~%Rf6hH zF5c16bN$c5k4N-Zp61`2XTo24b?@f(2kGlAb#%S1C9OYMbyEG$HtWO(qSafn%oB40 z$~Fqt{!_}+d7<`S#YZ}ApWT|*j#C2ez25RM{^RduX1|{+Prcmz%Kq^6zxKYR-)-}~)X>gw9u$mW^+S3mB-o&SgRWf<;VI8*=q|HmWsKZ_sSw|~yuF!fWrNsGW5 z76$(khK7YbKaVFyHyHkx&W~y^{eS=a{?CjD0?x5BSX;_7ym?Z?uwgP#zz<2FVu3_* z%>w0P67n1qJ5KnVE4LFoslCL0;~8q{uCCR`Es^=a!=VWrqjLB*^2TnoPcr6;OXk;vd$@?2>`{> B6+Qp} literal 0 HcmV?d00001 diff --git a/classPythonQtNewOwnerOfThis-members.html b/classPythonQtNewOwnerOfThis-members.html new file mode 100644 index 000000000..dfec22c06 --- /dev/null +++ b/classPythonQtNewOwnerOfThis-members.html @@ -0,0 +1,59 @@ + + + + + + + +PythonQt: Member List + + + + + + +
+
+ + + + + + +
+
PythonQt +
+
+
+ + + + + + +
+
+
+
PythonQtNewOwnerOfThis< T > Member List
+
+
+ +

This is the complete list of members for PythonQtNewOwnerOfThis< T >, including all inherited members.

+ + + + +
_tPythonQtNewOwnerOfThis< T >
operator T() constPythonQtNewOwnerOfThis< T >inline
PythonQtNewOwnerOfThis(const T &t)PythonQtNewOwnerOfThis< T >inline
+ + + + diff --git a/classPythonQtNewOwnerOfThis.html b/classPythonQtNewOwnerOfThis.html new file mode 100644 index 000000000..23af01392 --- /dev/null +++ b/classPythonQtNewOwnerOfThis.html @@ -0,0 +1,175 @@ + + + + + + + +PythonQt: PythonQtNewOwnerOfThis< T > Class Template Reference + + + + + + +
+
+ + + + + + +
+
PythonQt +
+
+
+ + + + + + +
+
+ +
+
PythonQtNewOwnerOfThis< T > Class Template Reference
+
+
+ +

#include <PythonQt.h>

+ + + + + + + + +

+Public Member Functions

 PythonQtNewOwnerOfThis (const T &t)
 Allow conversion from T to PythonQtNewOwnerOfThis<T> More...
 
 operator T () const
 Allow conversion from PythonQtNewOwnerOfThis<T> to T. More...
 
+ + + +

+Public Attributes

_t
 
+

Detailed Description

+

template<class T>
+class PythonQtNewOwnerOfThis< T >

+ +

Helper template that allows to pass the ownership of a C++ instance between C++ and Python (it is used as a slot return type or parameter type so that it can be detected by the PythonQt slot calling code).

+ +

Definition at line 123 of file PythonQt.h.

+

Constructor & Destructor Documentation

+ +

◆ PythonQtNewOwnerOfThis()

+ +
+
+
+template<class T>
+ + + + + +
+ + + + + + + + +
PythonQtNewOwnerOfThis< T >::PythonQtNewOwnerOfThis (const T & t)
+
+inline
+
+ +

Allow conversion from T to PythonQtNewOwnerOfThis<T>

+ +

Definition at line 127 of file PythonQt.h.

+
127 :_t(t) {}
+
+
+
+

Member Function Documentation

+ +

◆ operator T()

+ +
+
+
+template<class T>
+ + + + + +
+ + + + + + + +
PythonQtNewOwnerOfThis< T >::operator T () const
+
+inline
+
+ +

Allow conversion from PythonQtNewOwnerOfThis<T> to T.

+ +

Definition at line 129 of file PythonQt.h.

+
129 { return _t; }
+
+

References PythonQtNewOwnerOfThis< T >::_t.

+ +
+
+

Member Data Documentation

+ +

◆ _t

+ +
+
+
+template<class T>
+ + + + +
T PythonQtNewOwnerOfThis< T >::_t
+
+

Stored value. This is important so that it has the same memory layout as a pointer if T is a pointer type (which is the typical use case for this class).

+ +

Definition at line 133 of file PythonQt.h.

+ +

Referenced by PythonQtNewOwnerOfThis< T >::operator T().

+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/classPythonQtObjectPtr-members.html b/classPythonQtObjectPtr-members.html new file mode 100644 index 000000000..29c4853f9 --- /dev/null +++ b/classPythonQtObjectPtr-members.html @@ -0,0 +1,92 @@ + + + + + + + +PythonQt: Member List + + + + + + +
+
+ + + + + + +
+
PythonQt +
+
+
+ + + + + + +
+
+
+
PythonQtObjectPtr Member List
+
+
+ +

This is the complete list of members for PythonQtObjectPtr, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
addObject(const QString &name, QObject *object)PythonQtObjectPtr
addVariable(const QString &name, const QVariant &v)PythonQtObjectPtr
call(const QString &callable, const QVariantList &args=QVariantList(), const QVariantMap &kwargs=QVariantMap())PythonQtObjectPtr
call(const QVariantList &args=QVariantList(), const QVariantMap &kwargs=QVariantMap())PythonQtObjectPtr
evalCode(PyObject *pycode)PythonQtObjectPtr
evalFile(const QString &filename)PythonQtObjectPtr
evalScript(const QString &script, int start=Py_file_input)PythonQtObjectPtr
fromVariant(const QVariant &variant)PythonQtObjectPtr
getVariable(const QString &name)PythonQtObjectPtr
isNull() constPythonQtObjectPtrinline
object() constPythonQtObjectPtrinline
operator *() constPythonQtObjectPtrinline
operator PyObject *() constPythonQtObjectPtrinline
operator!=(const PythonQtObjectPtr &p) constPythonQtObjectPtrinline
operator!=(PyObject *p) constPythonQtObjectPtrinline
operator->() constPythonQtObjectPtrinline
operator=(const PythonQtObjectPtr &p)PythonQtObjectPtrinline
operator=(PythonQtObjectPtr &&p)PythonQtObjectPtrinline
operator=(PythonQtSafeObjectPtr &&p)PythonQtObjectPtr
operator=(PyObject *o)PythonQtObjectPtrinline
operator=(const QVariant &variant)PythonQtObjectPtrinline
operator==(const PythonQtObjectPtr &p) constPythonQtObjectPtrinline
operator==(PyObject *p) constPythonQtObjectPtrinline
PythonQtObjectPtr()PythonQtObjectPtrinline
PythonQtObjectPtr(const PythonQtObjectPtr &p)PythonQtObjectPtrinline
PythonQtObjectPtr(PythonQtObjectPtr &&p)PythonQtObjectPtrinline
PythonQtObjectPtr(PythonQtSafeObjectPtr &&p)PythonQtObjectPtr
PythonQtObjectPtr(const QVariant &variant)PythonQtObjectPtrinline
PythonQtObjectPtr(PyObject *o)PythonQtObjectPtr
removeVariable(const QString &name)PythonQtObjectPtr
setNewRef(PyObject *o)PythonQtObjectPtr
setObject(PyObject *o)PythonQtObjectPtrprotected
takeObject()PythonQtObjectPtrinline
toLocalVariant()PythonQtObjectPtr
toVariant()PythonQtObjectPtr
~PythonQtObjectPtr()PythonQtObjectPtr
+ + + + diff --git a/classPythonQtObjectPtr.html b/classPythonQtObjectPtr.html new file mode 100644 index 000000000..fbf8a430b --- /dev/null +++ b/classPythonQtObjectPtr.html @@ -0,0 +1,1111 @@ + + + + + + + +PythonQt: PythonQtObjectPtr Class Reference + + + + + + +
+
+ + + + + + +
+
PythonQt +
+
+
+ + + + + + +
+
+ +
+
PythonQtObjectPtr Class Reference
+
+
+ +

a smart pointer that stores a PyObject pointer and that handles reference counting automatically + More...

+ +

#include <PythonQtObjectPtr.h>

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

+Public Member Functions

 PythonQtObjectPtr ()
 
 PythonQtObjectPtr (const PythonQtObjectPtr &p)
 
 PythonQtObjectPtr (PythonQtObjectPtr &&p)
 rvalue copy constructor, does not need any incref/decref. More...
 
 PythonQtObjectPtr (PythonQtSafeObjectPtr &&p)
 rvalue copy constructor, does not need any incref/decref. More...
 
 PythonQtObjectPtr (const QVariant &variant)
 If the given variant holds a PythonQtObjectPtr, extract the value from it and hold onto the reference. This results in an increment of the reference count. More...
 
 PythonQtObjectPtr (PyObject *o)
 
 ~PythonQtObjectPtr ()
 
bool fromVariant (const QVariant &variant)
 If the given variant holds a PythonQtObjectPtr, extract the value from it and hold onto the reference. This results in an increment of the reference count. More...
 
QVariant toVariant ()
 Returns a PythonQtSafeObjectPtr as a QVariant. It does not return a PythonQtObjectPtr, because that would be unsafe regarding the GIL. More...
 
QVariant toLocalVariant ()
 Returns a PythonQtObjectPtr as a QVariant. Only use this when you know that the variant is only used locally and not stored outside of the current GIL scope. More...
 
PythonQtObjectPtroperator= (const PythonQtObjectPtr &p)
 
PythonQtObjectPtroperator= (PythonQtObjectPtr &&p)
 rvalue assignment operator that steals the reference from p More...
 
PythonQtObjectPtroperator= (PythonQtSafeObjectPtr &&p)
 rvalue assignment operator that steals the reference from p More...
 
PythonQtObjectPtroperator= (PyObject *o)
 
PythonQtObjectPtroperator= (const QVariant &variant)
 
bool operator== (const PythonQtObjectPtr &p) const
 
bool operator!= (const PythonQtObjectPtr &p) const
 
bool operator== (PyObject *p) const
 
bool operator!= (PyObject *p) const
 
bool isNull () const
 
PyObjectoperator-> () const
 
PyObjectoperator * () const
 
 operator PyObject * () const
 
void setNewRef (PyObject *o)
 sets the object and passes the ownership (stealing the reference, in Python slang) More...
 
PyObjectobject () const
 
QVariant evalScript (const QString &script, int start=Py_file_input)
 evaluates the given script code in the context of this object and returns the result value More...
 
QVariant evalCode (PyObject *pycode)
 
void evalFile (const QString &filename)
 evaluates the given code in the context More...
 
void addObject (const QString &name, QObject *object)
 add the given object to the module as a variable with name (it can be removed via clearVariable) More...
 
void addVariable (const QString &name, const QVariant &v)
 add the given variable to the module More...
 
void removeVariable (const QString &name)
 remove the given variable More...
 
QVariant getVariable (const QString &name)
 get the variable with the name of the module, returns an invalid QVariant on error More...
 
QVariant call (const QString &callable, const QVariantList &args=QVariantList(), const QVariantMap &kwargs=QVariantMap())
 call the given python object (in the scope of the current object), returns the result converted to a QVariant More...
 
QVariant call (const QVariantList &args=QVariantList(), const QVariantMap &kwargs=QVariantMap())
 call the contained python object directly, returns the result converted to a QVariant More...
 
PyObjecttakeObject ()
 
+ + + +

+Protected Member Functions

void setObject (PyObject *o)
 
+

Detailed Description

+

a smart pointer that stores a PyObject pointer and that handles reference counting automatically

+ +

Definition at line 56 of file PythonQtObjectPtr.h.

+

Constructor & Destructor Documentation

+ +

◆ PythonQtObjectPtr() [1/6]

+ +
+
+ + + + + +
+ + + + + + + +
PythonQtObjectPtr::PythonQtObjectPtr ()
+
+inline
+
+ +

Definition at line 59 of file PythonQtObjectPtr.h.

+
59 :_object(NULL) {}
+
+
+ +

◆ PythonQtObjectPtr() [2/6]

+ +
+
+ + + + + +
+ + + + + + + + +
PythonQtObjectPtr::PythonQtObjectPtr (const PythonQtObjectPtrp)
+
+inline
+
+ +

Definition at line 61 of file PythonQtObjectPtr.h.

+
62  :_object(NULL) {
63  setObject(p.object());
64  }
PyObject * object() const
+
void setObject(PyObject *o)
+
+

References object().

+ +
+
+ +

◆ PythonQtObjectPtr() [3/6]

+ +
+
+ + + + + +
+ + + + + + + + +
PythonQtObjectPtr::PythonQtObjectPtr (PythonQtObjectPtr && p)
+
+inline
+
+ +

rvalue copy constructor, does not need any incref/decref.

+ +

Definition at line 67 of file PythonQtObjectPtr.h.

+
68  :_object(p.takeObject()) {
69  }
PyObject * takeObject()
+
+
+
+ +

◆ PythonQtObjectPtr() [4/6]

+ +
+
+ + + + + + + + +
PythonQtObjectPtr::PythonQtObjectPtr (PythonQtSafeObjectPtr && p)
+
+ +

rvalue copy constructor, does not need any incref/decref.

+ +
+
+ +

◆ PythonQtObjectPtr() [5/6]

+ +
+
+ + + + + +
+ + + + + + + + +
PythonQtObjectPtr::PythonQtObjectPtr (const QVariant & variant)
+
+inline
+
+ +

If the given variant holds a PythonQtObjectPtr, extract the value from it and hold onto the reference. This results in an increment of the reference count.

+ +

Definition at line 75 of file PythonQtObjectPtr.h.

+
75  :_object(NULL) {
76  fromVariant(variant);
77  }
bool fromVariant(const QVariant &variant)
If the given variant holds a PythonQtObjectPtr, extract the value from it and hold onto the reference...
+
+
+
+ +

◆ PythonQtObjectPtr() [6/6]

+ +
+
+ + + + + + + + +
PythonQtObjectPtr::PythonQtObjectPtr (PyObjecto)
+
+ +
+
+ +

◆ ~PythonQtObjectPtr()

+ +
+
+ + + + + + + +
PythonQtObjectPtr::~PythonQtObjectPtr ()
+
+ +
+
+

Member Function Documentation

+ +

◆ addObject()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void PythonQtObjectPtr::addObject (const QString & name,
QObject * object 
)
+
+ +

add the given object to the module as a variable with name (it can be removed via clearVariable)

+ +
+
+ +

◆ addVariable()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void PythonQtObjectPtr::addVariable (const QString & name,
const QVariant & v 
)
+
+ +

add the given variable to the module

+ +
+
+ +

◆ call() [1/2]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
QVariant PythonQtObjectPtr::call (const QString & callable,
const QVariantList & args = QVariantList(),
const QVariantMap & kwargs = QVariantMap() 
)
+
+ +

call the given python object (in the scope of the current object), returns the result converted to a QVariant

+ +
+
+ +

◆ call() [2/2]

+ +
+
+ + + + + + + + + + + + + + + + + + +
QVariant PythonQtObjectPtr::call (const QVariantList & args = QVariantList(),
const QVariantMap & kwargs = QVariantMap() 
)
+
+ +

call the contained python object directly, returns the result converted to a QVariant

+ +
+
+ +

◆ evalCode()

+ +
+
+ + + + + + + + +
QVariant PythonQtObjectPtr::evalCode (PyObjectpycode)
+
+

evaluates the given code and returns the result value (use Py_Compile etc. to create pycode from string) If pycode is NULL, a python error is printed.

+ +
+
+ +

◆ evalFile()

+ +
+
+ + + + + + + + +
void PythonQtObjectPtr::evalFile (const QString & filename)
+
+ +

evaluates the given code in the context

+ +
+
+ +

◆ evalScript()

+ +
+
+ + + + + + + + + + + + + + + + + + +
QVariant PythonQtObjectPtr::evalScript (const QString & script,
int start = Py_file_input 
)
+
+ +

evaluates the given script code in the context of this object and returns the result value

+ +
+
+ +

◆ fromVariant()

+ +
+
+ + + + + + + + +
bool PythonQtObjectPtr::fromVariant (const QVariant & variant)
+
+ +

If the given variant holds a PythonQtObjectPtr, extract the value from it and hold onto the reference. This results in an increment of the reference count.

+ +
+
+ +

◆ getVariable()

+ +
+
+ + + + + + + + +
QVariant PythonQtObjectPtr::getVariable (const QString & name)
+
+ +

get the variable with the name of the module, returns an invalid QVariant on error

+ +
+
+ +

◆ isNull()

+ +
+
+ + + + + +
+ + + + + + + +
bool PythonQtObjectPtr::isNull () const
+
+inline
+
+ +

Definition at line 137 of file PythonQtObjectPtr.h.

+
137 { return !object(); }
PyObject * object() const
+
+
+
+ +

◆ object()

+ +
+
+ + + + + +
+ + + + + + + +
PyObject* PythonQtObjectPtr::object () const
+
+inline
+
+ +

Definition at line 148 of file PythonQtObjectPtr.h.

+
148  {
149  return _object;
150  }
+

Referenced by operator=(), PythonQtSafeObjectPtr::operator=(), operator==(), PythonQtObjectPtr(), and PythonQtSafeObjectPtr::PythonQtSafeObjectPtr().

+ +
+
+ +

◆ operator *()

+ +
+
+ + + + + +
+ + + + + + + +
PyObject& PythonQtObjectPtr::operator * () const
+
+inline
+
+ +

Definition at line 141 of file PythonQtObjectPtr.h.

+
141 { return *( object() ); }
PyObject * object() const
+
+
+
+ +

◆ operator PyObject *()

+ +
+
+ + + + + +
+ + + + + + + +
PythonQtObjectPtr::operator PyObject * () const
+
+inline
+
+ +

Definition at line 143 of file PythonQtObjectPtr.h.

+
143 { return object(); }
PyObject * object() const
+
+
+
+ +

◆ operator!=() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + +
bool PythonQtObjectPtr::operator!= (const PythonQtObjectPtrp) const
+
+inline
+
+ +

Definition at line 125 of file PythonQtObjectPtr.h.

+
125  {
126  return !( *this == p );
127  }
+
+
+ +

◆ operator!=() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + +
bool PythonQtObjectPtr::operator!= (PyObjectp) const
+
+inline
+
+ +

Definition at line 133 of file PythonQtObjectPtr.h.

+
133  {
134  return object() != p;
135  }
PyObject * object() const
+
+
+
+ +

◆ operator->()

+ +
+
+ + + + + +
+ + + + + + + +
PyObject* PythonQtObjectPtr::operator-> () const
+
+inline
+
+ +

Definition at line 139 of file PythonQtObjectPtr.h.

+
139 { return object(); }
PyObject * object() const
+
+
+
+ +

◆ operator=() [1/5]

+ +
+
+ + + + + +
+ + + + + + + + +
PythonQtObjectPtr& PythonQtObjectPtr::operator= (const PythonQtObjectPtrp)
+
+inline
+
+ +

Definition at line 92 of file PythonQtObjectPtr.h.

+
92  {
93  setObject(p.object());
94  return *this;
95  }
PyObject * object() const
+
void setObject(PyObject *o)
+
+

References object().

+ +
+
+ +

◆ operator=() [2/5]

+ +
+
+ + + + + +
+ + + + + + + + +
PythonQtObjectPtr& PythonQtObjectPtr::operator= (PythonQtObjectPtr && p)
+
+inline
+
+ +

rvalue assignment operator that steals the reference from p

+ +

Definition at line 98 of file PythonQtObjectPtr.h.

+
98  {
99  if (_object) {
100  setObject(NULL);
101  }
102  _object = p.takeObject();
103  return *this;
104  }
void setObject(PyObject *o)
+
PyObject * takeObject()
+
+
+
+ +

◆ operator=() [3/5]

+ +
+
+ + + + + + + + +
PythonQtObjectPtr& PythonQtObjectPtr::operator= (PythonQtSafeObjectPtr && p)
+
+ +

rvalue assignment operator that steals the reference from p

+ +
+
+ +

◆ operator=() [4/5]

+ +
+
+ + + + + +
+ + + + + + + + +
PythonQtObjectPtr& PythonQtObjectPtr::operator= (PyObjecto)
+
+inline
+
+ +

Definition at line 109 of file PythonQtObjectPtr.h.

+
109  {
110  setObject(o);
111  return *this;
112  }
void setObject(PyObject *o)
+
+
+
+ +

◆ operator=() [5/5]

+ +
+
+ + + + + +
+ + + + + + + + +
PythonQtObjectPtr& PythonQtObjectPtr::operator= (const QVariant & variant)
+
+inline
+
+ +

Definition at line 115 of file PythonQtObjectPtr.h.

+
115  {
116  fromVariant(variant);
117  return *this;
118  }
bool fromVariant(const QVariant &variant)
If the given variant holds a PythonQtObjectPtr, extract the value from it and hold onto the reference...
+
+
+
+ +

◆ operator==() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + +
bool PythonQtObjectPtr::operator== (const PythonQtObjectPtrp) const
+
+inline
+
+ +

Definition at line 121 of file PythonQtObjectPtr.h.

+
121  {
122  return object() == p.object();
123  }
PyObject * object() const
+
+

References object().

+ +
+
+ +

◆ operator==() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + +
bool PythonQtObjectPtr::operator== (PyObjectp) const
+
+inline
+
+ +

Definition at line 129 of file PythonQtObjectPtr.h.

+
129  {
130  return object() == p;
131  }
PyObject * object() const
+
+
+
+ +

◆ removeVariable()

+ +
+
+ + + + + + + + +
void PythonQtObjectPtr::removeVariable (const QString & name)
+
+ +

remove the given variable

+ +
+
+ +

◆ setNewRef()

+ +
+
+ + + + + + + + +
void PythonQtObjectPtr::setNewRef (PyObjecto)
+
+ +

sets the object and passes the ownership (stealing the reference, in Python slang)

+ +
+
+ +

◆ setObject()

+ +
+
+ + + + + +
+ + + + + + + + +
void PythonQtObjectPtr::setObject (PyObjecto)
+
+protected
+
+ +
+
+ +

◆ takeObject()

+ +
+
+ + + + + +
+ + + + + + + +
PyObject* PythonQtObjectPtr::takeObject ()
+
+inline
+
+

takes the object from the pointer, leaving the pointer empty. the caller has to take care about the decref of the taken object!

+ +

Definition at line 182 of file PythonQtObjectPtr.h.

+
182  {
183  PyObject* o = _object;
184  _object = NULL;
185  return o;
186  }
struct _object PyObject
+
+
+
+ +

◆ toLocalVariant()

+ +
+
+ + + + + + + +
QVariant PythonQtObjectPtr::toLocalVariant ()
+
+ +

Returns a PythonQtObjectPtr as a QVariant. Only use this when you know that the variant is only used locally and not stored outside of the current GIL scope.

+ +
+
+ +

◆ toVariant()

+ +
+
+ + + + + + + +
QVariant PythonQtObjectPtr::toVariant ()
+
+ +

Returns a PythonQtSafeObjectPtr as a QVariant. It does not return a PythonQtObjectPtr, because that would be unsafe regarding the GIL.

+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/classPythonQtPassOwnershipToCPP-members.html b/classPythonQtPassOwnershipToCPP-members.html new file mode 100644 index 000000000..6bcfbe99d --- /dev/null +++ b/classPythonQtPassOwnershipToCPP-members.html @@ -0,0 +1,59 @@ + + + + + + + +PythonQt: Member List + + + + + + +
+
+ + + + + + +
+
PythonQt +
+
+
+ + + + + + +
+
+
+
PythonQtPassOwnershipToCPP< T > Member List
+
+
+ +

This is the complete list of members for PythonQtPassOwnershipToCPP< T >, including all inherited members.

+ + + + +
_tPythonQtPassOwnershipToCPP< T >
operator T() constPythonQtPassOwnershipToCPP< T >inline
PythonQtPassOwnershipToCPP(const T &t)PythonQtPassOwnershipToCPP< T >inline
+ + + + diff --git a/classPythonQtPassOwnershipToCPP.html b/classPythonQtPassOwnershipToCPP.html new file mode 100644 index 000000000..ff6abc15b --- /dev/null +++ b/classPythonQtPassOwnershipToCPP.html @@ -0,0 +1,175 @@ + + + + + + + +PythonQt: PythonQtPassOwnershipToCPP< T > Class Template Reference + + + + + + +
+
+ + + + + + +
+
PythonQt +
+
+
+ + + + + + +
+
+ +
+
PythonQtPassOwnershipToCPP< T > Class Template Reference
+
+
+ +

#include <PythonQt.h>

+ + + + + + + + +

+Public Member Functions

 PythonQtPassOwnershipToCPP (const T &t)
 Allow conversion from T to PythonQtPassOwnershipToCPP<T> More...
 
 operator T () const
 Allow conversion from PythonQtPassOwnershipToCPP<T> to T. More...
 
+ + + +

+Public Attributes

_t
 
+

Detailed Description

+

template<class T>
+class PythonQtPassOwnershipToCPP< T >

+ +

Helper template that allows to pass the ownership of a C++ instance between C++ and Python (it is used as a slot return type or parameter type so that it can be detected by the PythonQt slot calling code).

+ +

Definition at line 89 of file PythonQt.h.

+

Constructor & Destructor Documentation

+ +

◆ PythonQtPassOwnershipToCPP()

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + + +
PythonQtPassOwnershipToCPP< T >::PythonQtPassOwnershipToCPP (const T & t)
+
+inline
+
+ +

Allow conversion from T to PythonQtPassOwnershipToCPP<T>

+ +

Definition at line 93 of file PythonQt.h.

+
93 :_t(t) {}
+
+
+
+

Member Function Documentation

+ +

◆ operator T()

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + +
PythonQtPassOwnershipToCPP< T >::operator T () const
+
+inline
+
+ +

Allow conversion from PythonQtPassOwnershipToCPP<T> to T.

+ +

Definition at line 95 of file PythonQt.h.

+
95 { return _t; }
+
+

References PythonQtPassOwnershipToCPP< T >::_t.

+ +
+
+

Member Data Documentation

+ +

◆ _t

+ +
+
+
+template<class T >
+ + + + +
T PythonQtPassOwnershipToCPP< T >::_t
+
+

Stored value. This is important so that it has the same memory layout as a pointer if T is a pointer type (which is the typical use case for this class).

+ +

Definition at line 99 of file PythonQt.h.

+ +

Referenced by PythonQtPassOwnershipToCPP< T >::operator T().

+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/classPythonQtPassOwnershipToPython-members.html b/classPythonQtPassOwnershipToPython-members.html new file mode 100644 index 000000000..3285f0d0e --- /dev/null +++ b/classPythonQtPassOwnershipToPython-members.html @@ -0,0 +1,59 @@ + + + + + + + +PythonQt: Member List + + + + + + +
+
+ + + + + + +
+
PythonQt +
+
+
+ + + + + + +
+
+
+
PythonQtPassOwnershipToPython< T > Member List
+
+
+ +

This is the complete list of members for PythonQtPassOwnershipToPython< T >, including all inherited members.

+ + + + +
_tPythonQtPassOwnershipToPython< T >
operator T() constPythonQtPassOwnershipToPython< T >inline
PythonQtPassOwnershipToPython(const T &t)PythonQtPassOwnershipToPython< T >inline
+ + + + diff --git a/classPythonQtPassOwnershipToPython.html b/classPythonQtPassOwnershipToPython.html new file mode 100644 index 000000000..9ddffdf44 --- /dev/null +++ b/classPythonQtPassOwnershipToPython.html @@ -0,0 +1,175 @@ + + + + + + + +PythonQt: PythonQtPassOwnershipToPython< T > Class Template Reference + + + + + + +
+
+ + + + + + +
+
PythonQt +
+
+
+ + + + + + +
+
+ +
+
PythonQtPassOwnershipToPython< T > Class Template Reference
+
+
+ +

#include <PythonQt.h>

+ + + + + + + + +

+Public Member Functions

 PythonQtPassOwnershipToPython (const T &t)
 Allow conversion from T to PythonQtPassOwnershipToPython<T> More...
 
 operator T () const
 Allow conversion from PythonQtPassOwnershipToPython<T> to T. More...
 
+ + + +

+Public Attributes

_t
 
+

Detailed Description

+

template<class T>
+class PythonQtPassOwnershipToPython< T >

+ +

Helper template that allows to pass the ownership of a C++ instance between C++ and Python (it is used as a slot return type or parameter type so that it can be detected by the PythonQt slot calling code).

+ +

Definition at line 106 of file PythonQt.h.

+

Constructor & Destructor Documentation

+ +

◆ PythonQtPassOwnershipToPython()

+ +
+
+
+template<class T>
+ + + + + +
+ + + + + + + + +
PythonQtPassOwnershipToPython< T >::PythonQtPassOwnershipToPython (const T & t)
+
+inline
+
+ +

Allow conversion from T to PythonQtPassOwnershipToPython<T>

+ +

Definition at line 110 of file PythonQt.h.

+ +
+
+

Member Function Documentation

+ +

◆ operator T()

+ +
+
+
+template<class T>
+ + + + + +
+ + + + + + + +
PythonQtPassOwnershipToPython< T >::operator T () const
+
+inline
+
+ +

Allow conversion from PythonQtPassOwnershipToPython<T> to T.

+ +

Definition at line 112 of file PythonQt.h.

+
112 { return _t; }
+
+

References PythonQtPassOwnershipToPython< T >::_t.

+ +
+
+

Member Data Documentation

+ +

◆ _t

+ +
+
+
+template<class T>
+ + + + +
T PythonQtPassOwnershipToPython< T >::_t
+
+

Stored value. This is important so that it has the same memory layout as a pointer if T is a pointer type (which is the typical use case for this class).

+ +

Definition at line 116 of file PythonQt.h.

+ +

Referenced by PythonQtPassOwnershipToPython< T >::operator T().

+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/classPythonQtPrivate-members.html b/classPythonQtPrivate-members.html new file mode 100644 index 000000000..ca4df658a --- /dev/null +++ b/classPythonQtPrivate-members.html @@ -0,0 +1,105 @@ + + + + + + + +PythonQt: Member List + + + + + + +
+
+ + + + + + +
+
PythonQt +
+
+
+ + + + + + +
+
+
+
PythonQtPrivate Member List
+
+
+ +

This is the complete list of members for PythonQtPrivate, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
addDecorators(QObject *o, int decoTypes)PythonQtPrivate
addParentClass(const char *typeName, const char *parentTypeName, int upcastingOffset)PythonQtPrivate
addPolymorphicHandler(const char *typeName, PythonQtPolymorphicHandlerCB *cb)PythonQtPrivate
addWrapperPointer(void *obj, PythonQtInstanceWrapper *wrapper)PythonQtPrivate
AllDecorators enum valuePythonQtPrivate
buildDynamicMetaObject(PythonQtClassWrapper *type, const QMetaObject *prototypeMetaObject)PythonQtPrivate
callMethodInPython(QMetaMethod &method, PythonQtInstanceWrapper *wrapper, void **args)PythonQtPrivate
ConstructorDecorator enum valuePythonQtPrivate
createEnumValueInstance(PyObject *enumType, unsigned int enumValue)PythonQtPrivatestatic
createModule(const QString &name, PyObject *pycode)PythonQtPrivate
createNewPythonQtClassWrapper(PythonQtClassInfo *info, PyObject *module, const QByteArray &pythonClassName)PythonQtPrivate
createNewPythonQtEnumWrapper(const char *enumName, PyObject *parentObject)PythonQtPrivatestatic
createNewPythonQtInstanceWrapper(QObject *obj, PythonQtClassInfo *info, void *wrappedPtr=NULL)PythonQtPrivate
currentClassInfoForClassWrapperCreation()PythonQtPrivate
DecoratorTypes enum namePythonQtPrivate
DestructorDecorator enum valuePythonQtPrivate
dummyTuple()PythonQtPrivatestatic
getClassInfo(const QMetaObject *meta)PythonQtPrivate
getClassInfo(const QByteArray &className)PythonQtPrivate
getDynamicMetaObject(PythonQtInstanceWrapper *wrapper, const QMetaObject *prototypeMetaObject)PythonQtPrivate
getSignature(PyObject *object)PythonQtPrivate
handleMetaCall(QObject *object, PythonQtInstanceWrapper *wrapper, QMetaObject::Call call, int id, void **args)PythonQtPrivate
handleVirtualOverloadReturnError(const char *signature, const PythonQtMethodInfo *methodInfo, PyObject *result)PythonQtPrivate
InstanceDecorator enum valuePythonQtPrivate
isMethodDescriptor(PyObject *object) constPythonQtPrivate
isPythonQtAnyObjectPtrMetaId(int id)PythonQtPrivateinline
isPythonQtObjectPtrMetaId(int id)PythonQtPrivateinline
isPythonQtSafeObjectPtrMetaId(int id)PythonQtPrivateinline
lookupClassInfoAndCreateIfNotPresent(const char *typeName)PythonQtPrivate
profilingCB() constPythonQtPrivateinline
PythonQt classPythonQtPrivatefriend
pythonQtModule() constPythonQtPrivateinline
PythonQtPrivate()PythonQtPrivate
registerClass(const QMetaObject *metaobject, const char *package=NULL, PythonQtQObjectCreatorFunctionCB *wrapperCreator=NULL, PythonQtShellSetInstanceWrapperCB *shell=NULL, PyObject *module=NULL, int typeSlots=0)PythonQtPrivate
registerCPPClass(const char *typeName, const char *parentTypeName=NULL, const char *package=NULL, PythonQtQObjectCreatorFunctionCB *wrapperCreator=NULL, PythonQtShellSetInstanceWrapperCB *shell=NULL, PyObject *module=NULL, int typeSlots=0)PythonQtPrivate
registerLazyClass(const QByteArray &name, const QByteArray &moduleToImport)PythonQtPrivate
registerQObjectClassNames(const QStringList &names)PythonQtPrivate
removeSignalEmitter(QObject *obj)PythonQtPrivate
removeWrapperPointer(void *obj)PythonQtPrivate
setupDynamicMetaObjectChain(PythonQtClassWrapper *type, const QMetaObject *prototypeMetaObject)PythonQtPrivate
sharedLibrarySuffixes()PythonQtPrivateinline
shellClassDeleted(void *shellClass)PythonQtPrivate
StaticDecorator enum valuePythonQtPrivate
unwrapForeignWrapper(const QByteArray &classname, PyObject *obj)PythonQtPrivate
wrapMemoryAsBuffer(const void *data, Py_ssize_t size)PythonQtPrivatestatic
wrapMemoryAsBuffer(void *data, Py_ssize_t size)PythonQtPrivatestatic
wrapPtr(void *ptr, const QByteArray &name, bool passOwnership=false)PythonQtPrivate
wrapQObject(QObject *obj)PythonQtPrivate
~PythonQtPrivate()PythonQtPrivate
+ + + + diff --git a/classPythonQtPrivate.html b/classPythonQtPrivate.html new file mode 100644 index 000000000..e547aad82 --- /dev/null +++ b/classPythonQtPrivate.html @@ -0,0 +1,1537 @@ + + + + + + + +PythonQt: PythonQtPrivate Class Reference + + + + + + +
+
+ + + + + + +
+
PythonQt +
+
+
+ + + + + + +
+ +
+ +

internal PythonQt details + More...

+ +

#include <PythonQt.h>

+
+Inheritance diagram for PythonQtPrivate:
+
+
+ +
+ + + + +

+Public Types

enum  DecoratorTypes {
+  StaticDecorator = 1, +ConstructorDecorator = 2, +DestructorDecorator = 4, +InstanceDecorator = 8, +
+  AllDecorators = 0xffff +
+ }
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 PythonQtPrivate ()
 
 ~PythonQtPrivate ()
 
const QStringList & sharedLibrarySuffixes ()
 get the suffixes that are used for shared libraries More...
 
bool isPythonQtObjectPtrMetaId (int id)
 returns if the id is the id for PythonQtObjectPtr More...
 
bool isPythonQtSafeObjectPtrMetaId (int id)
 returns if the id is the id for PythonQtSafeObjectPtr More...
 
bool isPythonQtAnyObjectPtrMetaId (int id)
 returns if the id is either PythonQtObjectPtr or PythonQtSafeObjectPtr More...
 
void addWrapperPointer (void *obj, PythonQtInstanceWrapper *wrapper)
 add the wrapper pointer (for reuse if the same obj appears while wrapper still exists) More...
 
void removeWrapperPointer (void *obj)
 remove the wrapper ptr again More...
 
void shellClassDeleted (void *shellClass)
 called by destructor of shells to allow invalidation of the Python wrapper More...
 
void * unwrapForeignWrapper (const QByteArray &classname, PyObject *obj)
 try to unwrap the given object to a C++ pointer using the foreign wrapper factories More...
 
bool addParentClass (const char *typeName, const char *parentTypeName, int upcastingOffset)
 add parent class relation More...
 
void addPolymorphicHandler (const char *typeName, PythonQtPolymorphicHandlerCB *cb)
 add a handler for polymorphic downcasting More...
 
PythonQtClassInfolookupClassInfoAndCreateIfNotPresent (const char *typeName)
 lookup existing classinfo and return new if not yet present More...
 
void removeSignalEmitter (QObject *obj)
 called when a signal emitting QObject is destroyed to remove the signal handler from the hash map More...
 
PyObjectwrapQObject (QObject *obj)
 wrap the given QObject into a Python object (or return existing wrapper!) More...
 
PyObjectwrapPtr (void *ptr, const QByteArray &name, bool passOwnership=false)
 
void registerClass (const QMetaObject *metaobject, const char *package=NULL, PythonQtQObjectCreatorFunctionCB *wrapperCreator=NULL, PythonQtShellSetInstanceWrapperCB *shell=NULL, PyObject *module=NULL, int typeSlots=0)
 registers a QObject derived class to PythonQt (this is implicitly called by addObject as well) More...
 
void registerCPPClass (const char *typeName, const char *parentTypeName=NULL, const char *package=NULL, PythonQtQObjectCreatorFunctionCB *wrapperCreator=NULL, PythonQtShellSetInstanceWrapperCB *shell=NULL, PyObject *module=NULL, int typeSlots=0)
 
void registerQObjectClassNames (const QStringList &names)
 
void addDecorators (QObject *o, int decoTypes)
 add a decorator object More...
 
PythonQtClassWrappercreateNewPythonQtClassWrapper (PythonQtClassInfo *info, PyObject *module, const QByteArray &pythonClassName)
 helper method that creates a PythonQtClassWrapper object (returns a new reference) More...
 
PythonQtInstanceWrappercreateNewPythonQtInstanceWrapper (QObject *obj, PythonQtClassInfo *info, void *wrappedPtr=NULL)
 helper method that creates a PythonQtInstanceWrapper object and registers it in the object map More...
 
PythonQtClassInfogetClassInfo (const QMetaObject *meta)
 get the class info for a meta object (if available) More...
 
PythonQtClassInfogetClassInfo (const QByteArray &className)
 get the class info for a meta object (if available) More...
 
void registerLazyClass (const QByteArray &name, const QByteArray &moduleToImport)
 
PythonQtObjectPtr createModule (const QString &name, PyObject *pycode)
 creates the new module from the given pycode More...
 
PythonQtClassInfocurrentClassInfoForClassWrapperCreation ()
 get the current class info (for the next PythonQtClassWrapper that is created) and reset it to NULL again More...
 
void handleVirtualOverloadReturnError (const char *signature, const PythonQtMethodInfo *methodInfo, PyObject *result)
 called by virtual overloads when a python return value can not be converted to the required Qt type More...
 
PythonQtObjectPtr pythonQtModule () const
 get access to the PythonQt module More...
 
PythonQt::ProfilingCBprofilingCB () const
 returns the profiling callback, which may be NULL More...
 
QString getSignature (PyObject *object)
 determines the signature of the given callable object (similar as pydoc) More...
 
bool isMethodDescriptor (PyObject *object) const
 returns true if the object is a method descriptor (same as inspect.ismethoddescriptor() in inspect.py) More...
 
const QMetaObject * getDynamicMetaObject (PythonQtInstanceWrapper *wrapper, const QMetaObject *prototypeMetaObject)
 get the dynamic meta object for the given wrapper. It will contain the signals/slots that have been added in Python More...
 
const QMetaObject * setupDynamicMetaObjectChain (PythonQtClassWrapper *type, const QMetaObject *prototypeMetaObject)
 recursively creates the dynamic meta object chain down to the Qt class wrapper. More...
 
const QMetaObject * buildDynamicMetaObject (PythonQtClassWrapper *type, const QMetaObject *prototypeMetaObject)
 builds and returns the dynamic meta object for the given type, derived from prototypeMetaObject. More...
 
int handleMetaCall (QObject *object, PythonQtInstanceWrapper *wrapper, QMetaObject::Call call, int id, void **args)
 redirected from shell classes, tries to call the given meta call on the Python wrapper. More...
 
void callMethodInPython (QMetaMethod &method, PythonQtInstanceWrapper *wrapper, void **args)
 calls the given method on Python function with same name. More...
 
+ + + + + + + + + + + + + + + + +

+Static Public Member Functions

static PyObjectwrapMemoryAsBuffer (const void *data, Py_ssize_t size)
 create a read-only buffer object from the given memory More...
 
static PyObjectwrapMemoryAsBuffer (void *data, Py_ssize_t size)
 create a read-write buffer object from the given memory More...
 
static PyObjectcreateEnumValueInstance (PyObject *enumType, unsigned int enumValue)
 create a new instance of the given enum type with given value (returns a new reference) More...
 
static PyObjectcreateNewPythonQtEnumWrapper (const char *enumName, PyObject *parentObject)
 helper that creates a new int derived class that represents the enum of the given name (returns a new reference) More...
 
static PyObjectdummyTuple ()
 the dummy tuple (which is empty and may be used to detected that a wrapper is called from internal wrapper creation More...
 
+ + + +

+Friends

class PythonQt
 
+

Detailed Description

+

internal PythonQt details

+ +

Definition at line 654 of file PythonQt.h.

+

Member Enumeration Documentation

+ +

◆ DecoratorTypes

+ +
+
+ + + + + + +
Enumerator
StaticDecorator 
ConstructorDecorator 
DestructorDecorator 
InstanceDecorator 
AllDecorators 
+ +

Definition at line 662 of file PythonQt.h.

+ +
+
+

Constructor & Destructor Documentation

+ +

◆ PythonQtPrivate()

+ +
+
+ + + + + + + +
PythonQtPrivate::PythonQtPrivate ()
+
+ +
+
+ +

◆ ~PythonQtPrivate()

+ +
+
+ + + + + + + +
PythonQtPrivate::~PythonQtPrivate ()
+
+ +
+
+

Member Function Documentation

+ +

◆ addDecorators()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void PythonQtPrivate::addDecorators (QObject * o,
int decoTypes 
)
+
+ +

add a decorator object

+ +
+
+ +

◆ addParentClass()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
bool PythonQtPrivate::addParentClass (const char * typeName,
const char * parentTypeName,
int upcastingOffset 
)
+
+ +

add parent class relation

+ +
+
+ +

◆ addPolymorphicHandler()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void PythonQtPrivate::addPolymorphicHandler (const char * typeName,
PythonQtPolymorphicHandlerCBcb 
)
+
+ +

add a handler for polymorphic downcasting

+ +
+
+ +

◆ addWrapperPointer()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void PythonQtPrivate::addWrapperPointer (void * obj,
PythonQtInstanceWrapperwrapper 
)
+
+ +

add the wrapper pointer (for reuse if the same obj appears while wrapper still exists)

+ +
+
+ +

◆ buildDynamicMetaObject()

+ +
+
+ + + + + + + + + + + + + + + + + + +
const QMetaObject* PythonQtPrivate::buildDynamicMetaObject (PythonQtClassWrappertype,
const QMetaObject * prototypeMetaObject 
)
+
+ +

builds and returns the dynamic meta object for the given type, derived from prototypeMetaObject.

+ +
+
+ +

◆ callMethodInPython()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void PythonQtPrivate::callMethodInPython (QMetaMethod & method,
PythonQtInstanceWrapperwrapper,
void ** args 
)
+
+ +

calls the given method on Python function with same name.

+ +
+
+ +

◆ createEnumValueInstance()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static PyObject* PythonQtPrivate::createEnumValueInstance (PyObjectenumType,
unsigned int enumValue 
)
+
+static
+
+ +

create a new instance of the given enum type with given value (returns a new reference)

+ +
+
+ +

◆ createModule()

+ +
+
+ + + + + + + + + + + + + + + + + + +
PythonQtObjectPtr PythonQtPrivate::createModule (const QString & name,
PyObjectpycode 
)
+
+ +

creates the new module from the given pycode

+ +
+
+ +

◆ createNewPythonQtClassWrapper()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
PythonQtClassWrapper* PythonQtPrivate::createNewPythonQtClassWrapper (PythonQtClassInfoinfo,
PyObjectmodule,
const QByteArray & pythonClassName 
)
+
+ +

helper method that creates a PythonQtClassWrapper object (returns a new reference)

+ +
+
+ +

◆ createNewPythonQtEnumWrapper()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static PyObject* PythonQtPrivate::createNewPythonQtEnumWrapper (const char * enumName,
PyObjectparentObject 
)
+
+static
+
+ +

helper that creates a new int derived class that represents the enum of the given name (returns a new reference)

+ +
+
+ +

◆ createNewPythonQtInstanceWrapper()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
PythonQtInstanceWrapper* PythonQtPrivate::createNewPythonQtInstanceWrapper (QObject * obj,
PythonQtClassInfoinfo,
void * wrappedPtr = NULL 
)
+
+ +

helper method that creates a PythonQtInstanceWrapper object and registers it in the object map

+ +
+
+ +

◆ currentClassInfoForClassWrapperCreation()

+ +
+
+ + + + + + + +
PythonQtClassInfo* PythonQtPrivate::currentClassInfoForClassWrapperCreation ()
+
+ +

get the current class info (for the next PythonQtClassWrapper that is created) and reset it to NULL again

+ +
+
+ +

◆ dummyTuple()

+ +
+
+ + + + + +
+ + + + + + + +
static PyObject* PythonQtPrivate::dummyTuple ()
+
+static
+
+ +

the dummy tuple (which is empty and may be used to detected that a wrapper is called from internal wrapper creation

+ +
+
+ +

◆ getClassInfo() [1/2]

+ +
+
+ + + + + + + + +
PythonQtClassInfo* PythonQtPrivate::getClassInfo (const QMetaObject * meta)
+
+ +

get the class info for a meta object (if available)

+ +

Referenced by PythonQtConvertListOfKnownClassToPythonList(), and PythonQtConvertPythonListToListOfKnownClass().

+ +
+
+ +

◆ getClassInfo() [2/2]

+ +
+
+ + + + + + + + +
PythonQtClassInfo* PythonQtPrivate::getClassInfo (const QByteArray & className)
+
+ +

get the class info for a meta object (if available)

+ +
+
+ +

◆ getDynamicMetaObject()

+ +
+
+ + + + + + + + + + + + + + + + + + +
const QMetaObject* PythonQtPrivate::getDynamicMetaObject (PythonQtInstanceWrapperwrapper,
const QMetaObject * prototypeMetaObject 
)
+
+ +

get the dynamic meta object for the given wrapper. It will contain the signals/slots that have been added in Python

+ +
+
+ +

◆ getSignature()

+ +
+
+ + + + + + + + +
QString PythonQtPrivate::getSignature (PyObjectobject)
+
+ +

determines the signature of the given callable object (similar as pydoc)

+ +
+
+ +

◆ handleMetaCall()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
int PythonQtPrivate::handleMetaCall (QObject * object,
PythonQtInstanceWrapperwrapper,
QMetaObject::Call call,
int id,
void ** args 
)
+
+ +

redirected from shell classes, tries to call the given meta call on the Python wrapper.

+ +
+
+ +

◆ handleVirtualOverloadReturnError()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void PythonQtPrivate::handleVirtualOverloadReturnError (const char * signature,
const PythonQtMethodInfomethodInfo,
PyObjectresult 
)
+
+ +

called by virtual overloads when a python return value can not be converted to the required Qt type

+ +
+
+ +

◆ isMethodDescriptor()

+ +
+
+ + + + + + + + +
bool PythonQtPrivate::isMethodDescriptor (PyObjectobject) const
+
+ +

returns true if the object is a method descriptor (same as inspect.ismethoddescriptor() in inspect.py)

+ +
+
+ +

◆ isPythonQtAnyObjectPtrMetaId()

+ +
+
+ + + + + +
+ + + + + + + + +
bool PythonQtPrivate::isPythonQtAnyObjectPtrMetaId (int id)
+
+inline
+
+ +

returns if the id is either PythonQtObjectPtr or PythonQtSafeObjectPtr

+ +

Definition at line 678 of file PythonQt.h.

+
678 { return _PythonQtObjectPtr_metaId == id || _PythonQtSafeObjectPtr_metaId == id; }
+
+
+ +

◆ isPythonQtObjectPtrMetaId()

+ +
+
+ + + + + +
+ + + + + + + + +
bool PythonQtPrivate::isPythonQtObjectPtrMetaId (int id)
+
+inline
+
+ +

returns if the id is the id for PythonQtObjectPtr

+ +

Definition at line 674 of file PythonQt.h.

+
674 { return _PythonQtObjectPtr_metaId == id; }
+
+
+ +

◆ isPythonQtSafeObjectPtrMetaId()

+ +
+
+ + + + + +
+ + + + + + + + +
bool PythonQtPrivate::isPythonQtSafeObjectPtrMetaId (int id)
+
+inline
+
+ +

returns if the id is the id for PythonQtSafeObjectPtr

+ +

Definition at line 676 of file PythonQt.h.

+
676 { return _PythonQtSafeObjectPtr_metaId == id; }
+
+
+ +

◆ lookupClassInfoAndCreateIfNotPresent()

+ +
+
+ + + + + + + + +
PythonQtClassInfo* PythonQtPrivate::lookupClassInfoAndCreateIfNotPresent (const char * typeName)
+
+ +

lookup existing classinfo and return new if not yet present

+ +
+
+ +

◆ profilingCB()

+ +
+
+ + + + + +
+ + + + + + + +
PythonQt::ProfilingCB* PythonQtPrivate::profilingCB () const
+
+inline
+
+ +

returns the profiling callback, which may be NULL

+ +

Definition at line 777 of file PythonQt.h.

+
777 { return _profilingCB; }
+
+
+ +

◆ pythonQtModule()

+ +
+
+ + + + + +
+ + + + + + + +
PythonQtObjectPtr PythonQtPrivate::pythonQtModule () const
+
+inline
+
+ +

get access to the PythonQt module

+ +

Definition at line 774 of file PythonQt.h.

+
774 { return _pythonQtModule; }
+
+
+ +

◆ registerClass()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void PythonQtPrivate::registerClass (const QMetaObject * metaobject,
const char * package = NULL,
PythonQtQObjectCreatorFunctionCBwrapperCreator = NULL,
PythonQtShellSetInstanceWrapperCBshell = NULL,
PyObjectmodule = NULL,
int typeSlots = 0 
)
+
+ +

registers a QObject derived class to PythonQt (this is implicitly called by addObject as well)

+ +
+
+ +

◆ registerCPPClass()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void PythonQtPrivate::registerCPPClass (const char * typeName,
const char * parentTypeName = NULL,
const char * package = NULL,
PythonQtQObjectCreatorFunctionCBwrapperCreator = NULL,
PythonQtShellSetInstanceWrapperCBshell = NULL,
PyObjectmodule = NULL,
int typeSlots = 0 
)
+
+

add a wrapper object for the given QMetaType typeName, also does an addClassDecorators() to add constructors for variants (ownership of wrapper is passed to PythonQt)

+

Make sure that you have done a qRegisterMetaType first, if typeName is a user type!

+

This will add a wrapper object that is used to make calls to the given classname typeName. All slots that take a pointer to typeName as the first argument will be callable from Python on a variant object that contains such a type.

+ +
+
+ +

◆ registerLazyClass()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void PythonQtPrivate::registerLazyClass (const QByteArray & name,
const QByteArray & moduleToImport 
)
+
+

register a class name that causes lazy loading of the moduleToImport when PythonQt encounters the type

+ +
+
+ +

◆ registerQObjectClassNames()

+ +
+
+ + + + + + + + +
void PythonQtPrivate::registerQObjectClassNames (const QStringList & names)
+
+

as an alternative to registerClass, you can tell PythonQt the names of QObject derived classes and it will register the classes when it first sees a pointer to such a derived class

+ +
+
+ +

◆ removeSignalEmitter()

+ +
+
+ + + + + + + + +
void PythonQtPrivate::removeSignalEmitter (QObject * obj)
+
+ +

called when a signal emitting QObject is destroyed to remove the signal handler from the hash map

+ +
+
+ +

◆ removeWrapperPointer()

+ +
+
+ + + + + + + + +
void PythonQtPrivate::removeWrapperPointer (void * obj)
+
+ +

remove the wrapper ptr again

+ +
+
+ +

◆ setupDynamicMetaObjectChain()

+ +
+
+ + + + + + + + + + + + + + + + + + +
const QMetaObject* PythonQtPrivate::setupDynamicMetaObjectChain (PythonQtClassWrappertype,
const QMetaObject * prototypeMetaObject 
)
+
+ +

recursively creates the dynamic meta object chain down to the Qt class wrapper.

+ +
+
+ +

◆ sharedLibrarySuffixes()

+ +
+
+ + + + + +
+ + + + + + + +
const QStringList& PythonQtPrivate::sharedLibrarySuffixes ()
+
+inline
+
+ +

get the suffixes that are used for shared libraries

+ +

Definition at line 671 of file PythonQt.h.

+
671 { return _sharedLibrarySuffixes; }
+
+
+ +

◆ shellClassDeleted()

+ +
+
+ + + + + + + + +
void PythonQtPrivate::shellClassDeleted (void * shellClass)
+
+ +

called by destructor of shells to allow invalidation of the Python wrapper

+ +
+
+ +

◆ unwrapForeignWrapper()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void* PythonQtPrivate::unwrapForeignWrapper (const QByteArray & classname,
PyObjectobj 
)
+
+ +

try to unwrap the given object to a C++ pointer using the foreign wrapper factories

+ +
+
+ +

◆ wrapMemoryAsBuffer() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static PyObject* PythonQtPrivate::wrapMemoryAsBuffer (const void * data,
Py_ssize_t size 
)
+
+static
+
+ +

create a read-only buffer object from the given memory

+ +
+
+ +

◆ wrapMemoryAsBuffer() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static PyObject* PythonQtPrivate::wrapMemoryAsBuffer (void * data,
Py_ssize_t size 
)
+
+static
+
+ +

create a read-write buffer object from the given memory

+ +
+
+ +

◆ wrapPtr()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
PyObject* PythonQtPrivate::wrapPtr (void * ptr,
const QByteArray & name,
bool passOwnership = false 
)
+
+

wrap the given ptr into a Python object (or return existing wrapper!) if there is a known QObject of that name or a known wrapper in the factory. If passOwnership == true, the ownership is passed to PythonQt, so the object will be deleted by PythonQt when the Python wrapper goes away.

+ +

Referenced by PythonQtConvertListOfKnownClassToPythonList().

+ +
+
+ +

◆ wrapQObject()

+ +
+
+ + + + + + + + +
PyObject* PythonQtPrivate::wrapQObject (QObject * obj)
+
+ +

wrap the given QObject into a Python object (or return existing wrapper!)

+ +
+
+

Friends And Related Function Documentation

+ +

◆ PythonQt

+ +
+
+ + + + + +
+ + + + +
friend class PythonQt
+
+friend
+
+ +

Definition at line 870 of file PythonQt.h.

+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/classPythonQtPrivate.png b/classPythonQtPrivate.png new file mode 100644 index 0000000000000000000000000000000000000000..2bd87a6d28d29ff947e96b1e10b99968dbba1c36 GIT binary patch literal 493 zcmeAS@N?(olHy`uVBq!ia0vp^89*Gs!3-o1y*>~Oq$C1-LR|m<{|{uoc=NTi|Ih>= z3ycpOIKbL@M;^%KC<*clW&kPzfvcxNj2IXgYdl>XLn;{G&b`>ztRUcee$SVG|K;Cn zDFirNj#Qo9b}X8UZ%*URTj6KUq;X7M@_ehqq$ijDGv>CftY5lr$t$b)7hF@O+wF4` z{>O6a=JfsF=DzK!zB4QN`J^kSn7Q^^gqcseGCkW}_JXYYbn#q=gYxB#+ZOedmn1oR z{`|D#U8mI16) z-Z@>FFF-bm^~sf2Ql^2q!AmB+zPiSm + + + + + + +PythonQt: Member List + + + + + + +
+
+ + + + + + +
+
PythonQt +
+
+
+ + + + + + +
+
+
+
PythonQtQFileImporter Member List
+
+
+ +

This is the complete list of members for PythonQtQFileImporter, including all inherited members.

+ + + + + + + + + + + +
exists(const QString &filename)PythonQtQFileImportervirtual
ignoreUpdatedPythonSourceFiles()PythonQtImportFileInterfaceinlinevirtual
importedModule(const QString &)PythonQtImportFileInterfaceinlinevirtual
isEggArchive(const QString &filename)PythonQtQFileImportervirtual
lastModifiedDate(const QString &filename)PythonQtQFileImportervirtual
PythonQtQFileImporter()PythonQtQFileImporter
readFileAsBytes(const QString &filename)PythonQtQFileImportervirtual
readSourceFile(const QString &filename, bool &ok)PythonQtQFileImportervirtual
~PythonQtImportFileInterface()PythonQtImportFileInterfaceinlinevirtual
~PythonQtQFileImporter()PythonQtQFileImporter
+ + + + diff --git a/classPythonQtQFileImporter.html b/classPythonQtQFileImporter.html new file mode 100644 index 000000000..66cbdcb6b --- /dev/null +++ b/classPythonQtQFileImporter.html @@ -0,0 +1,299 @@ + + + + + + + +PythonQt: PythonQtQFileImporter Class Reference + + + + + + +
+
+ + + + + + +
+
PythonQt +
+
+
+ + + + + + +
+
+ +
+
PythonQtQFileImporter Class Reference
+
+
+ +

default importer implementation using QFile to load python code + More...

+ +

#include <PythonQtQFileImporter.h>

+
+Inheritance diagram for PythonQtQFileImporter:
+
+
+ + +PythonQtImportFileInterface + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 PythonQtQFileImporter ()
 
 ~PythonQtQFileImporter ()
 
QByteArray readFileAsBytes (const QString &filename)
 read the given file as byte array, without doing any linefeed translations More...
 
QByteArray readSourceFile (const QString &filename, bool &ok)
 
bool exists (const QString &filename)
 returns if the file exists More...
 
bool isEggArchive (const QString &filename)
 
QDateTime lastModifiedDate (const QString &filename)
 get the last modified data of a file More...
 
- Public Member Functions inherited from PythonQtImportFileInterface
virtual ~PythonQtImportFileInterface ()
 
virtual bool ignoreUpdatedPythonSourceFiles ()
 
virtual void importedModule (const QString &)
 
+

Detailed Description

+

default importer implementation using QFile to load python code

+ +

Definition at line 49 of file PythonQtQFileImporter.h.

+

Constructor & Destructor Documentation

+ +

◆ PythonQtQFileImporter()

+ +
+
+ + + + + + + +
PythonQtQFileImporter::PythonQtQFileImporter ()
+
+ +
+
+ +

◆ ~PythonQtQFileImporter()

+ +
+
+ + + + + + + +
PythonQtQFileImporter::~PythonQtQFileImporter ()
+
+ +
+
+

Member Function Documentation

+ +

◆ exists()

+ +
+
+ + + + + +
+ + + + + + + + +
bool PythonQtQFileImporter::exists (const QString & filename)
+
+virtual
+
+ +

returns if the file exists

+ +

Implements PythonQtImportFileInterface.

+ +
+
+ +

◆ isEggArchive()

+ +
+
+ + + + + +
+ + + + + + + + +
bool PythonQtQFileImporter::isEggArchive (const QString & filename)
+
+virtual
+
+

returns true if the given file is an egg archive (e.g. zip). If the egg is a directory then false is returned.

+ +

Implements PythonQtImportFileInterface.

+ +
+
+ +

◆ lastModifiedDate()

+ +
+
+ + + + + +
+ + + + + + + + +
QDateTime PythonQtQFileImporter::lastModifiedDate (const QString & filename)
+
+virtual
+
+ +

get the last modified data of a file

+ +

Implements PythonQtImportFileInterface.

+ +
+
+ +

◆ readFileAsBytes()

+ +
+
+ + + + + +
+ + + + + + + + +
QByteArray PythonQtQFileImporter::readFileAsBytes (const QString & filename)
+
+virtual
+
+ +

read the given file as byte array, without doing any linefeed translations

+ +

Implements PythonQtImportFileInterface.

+ +
+
+ +

◆ readSourceFile()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
QByteArray PythonQtQFileImporter::readSourceFile (const QString & filename,
bool & ok 
)
+
+virtual
+
+

read a source file, expects a readable Python text file with translated line feeds. If the file can not be load OR it can not be verified, ok is set to false

+ +

Implements PythonQtImportFileInterface.

+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/classPythonQtQFileImporter.png b/classPythonQtQFileImporter.png new file mode 100644 index 0000000000000000000000000000000000000000..b9502b92b4b96e1fc9ceeaa5a58790484b366b7d GIT binary patch literal 723 zcmeAS@N?(olHy`uVBq!ia0vp^D}gwGgBeJMPFs2gNJ#|vgt-3y{~ySF@#br3|Dg#$ z78oBmaDcV*jy#adQ4-`A%m7pb0#{Fk7%?y~C3(6yhEy=VoqO@p90eXX{=&5T|0nL& zW8!SOk(*P$?9GR@O`bL^P1|#BZ}U|&6P(Do#lzL5W-Ex8>UsE|_T%@_S1<2RxxW2^ zVc&*hJ4&Y~b$4tD_3$^m6?gNUT;|gX-zv%XE>eo$T;BY57wX?Aq!anZ{OIxs_vZ7? zymOsouNmGww(!f@rT$Xk=XhqAo|!vW?UK~%Q+saAPYUO&+Ihtzd;Y2n-TA_qw|AZK zU%F9pchQP%zLU2^Eq|!m5wg}bt2pb_=^oK#Il)(dcAC7~^Loy*vyv_)(v!_5E!2_f zTXn2%`j&OIdlT~~_J#dFX1Dg-LY^3|u(js`y_FVjS@o^Br|j+YmzwP&4!rZT|36!) zrgZ5_d7P4xd8yjpPgCpXf4Ob`uX#>a#~&BnAVI-+FtOKjd+zNtfrj0248a*vm#$}v zUCH#gzhLr$bI!Z6hq|DeLx3cuzq_o{jih`MKe5CG6^KYKBK6y=xzu4C`K@BOtHwL~tKKaFd`%|$E zUfVtF*REOiR)|NRo zZu$}}TZS;^OOJo1`dxl!Jonx@iKkoQW9r?kR{Z_$l&Sf=d#Wzp$Pz~iBZG= literal 0 HcmV?d00001 diff --git a/classPythonQtSafeObjectPtr-members.html b/classPythonQtSafeObjectPtr-members.html new file mode 100644 index 000000000..e5725a14a --- /dev/null +++ b/classPythonQtSafeObjectPtr-members.html @@ -0,0 +1,80 @@ + + + + + + + +PythonQt: Member List + + + + + + +
+
+ + + + + + +
+
PythonQt +
+
+
+ + + + + + +
+
+
+
PythonQtSafeObjectPtr Member List
+
+
+ +

This is the complete list of members for PythonQtSafeObjectPtr, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + +
isNull() constPythonQtSafeObjectPtrinline
object() constPythonQtSafeObjectPtrinline
operator *() constPythonQtSafeObjectPtrinline
operator PyObject *() constPythonQtSafeObjectPtrinline
operator!=(const PythonQtSafeObjectPtr &p) constPythonQtSafeObjectPtrinline
operator!=(PyObject *p) constPythonQtSafeObjectPtrinline
operator->() constPythonQtSafeObjectPtrinline
operator=(const PythonQtSafeObjectPtr &p)PythonQtSafeObjectPtrinline
operator=(const PythonQtObjectPtr &p)PythonQtSafeObjectPtrinline
operator=(PythonQtSafeObjectPtr &&p)PythonQtSafeObjectPtrinline
operator=(PythonQtObjectPtr &&p)PythonQtSafeObjectPtrinline
operator=(PyObject *o)PythonQtSafeObjectPtrinline
operator==(const PythonQtSafeObjectPtr &p) constPythonQtSafeObjectPtrinline
operator==(PyObject *p) constPythonQtSafeObjectPtrinline
PythonQtSafeObjectPtr()PythonQtSafeObjectPtrinline
PythonQtSafeObjectPtr(const PythonQtSafeObjectPtr &p)PythonQtSafeObjectPtrinline
PythonQtSafeObjectPtr(const PythonQtObjectPtr &p)PythonQtSafeObjectPtrinline
PythonQtSafeObjectPtr(PythonQtSafeObjectPtr &&p)PythonQtSafeObjectPtrinline
PythonQtSafeObjectPtr(PythonQtObjectPtr &&p)PythonQtSafeObjectPtrinline
PythonQtSafeObjectPtr(PyObject *o)PythonQtSafeObjectPtr
setObject(PyObject *o)PythonQtSafeObjectPtrprotected
setObjectUnsafe(PyObject *o)PythonQtSafeObjectPtrprotected
takeObject()PythonQtSafeObjectPtrinline
~PythonQtSafeObjectPtr()PythonQtSafeObjectPtr
+ + + + diff --git a/classPythonQtSafeObjectPtr.html b/classPythonQtSafeObjectPtr.html new file mode 100644 index 000000000..e65e80a80 --- /dev/null +++ b/classPythonQtSafeObjectPtr.html @@ -0,0 +1,812 @@ + + + + + + + +PythonQt: PythonQtSafeObjectPtr Class Reference + + + + + + +
+
+ + + + + + +
+
PythonQt +
+
+
+ + + + + + +
+
+ +
+
PythonQtSafeObjectPtr Class Reference
+
+
+ +

a smart pointer that stores a PyObject pointer and that handles reference counting automatically + More...

+ +

#include <PythonQtObjectPtr.h>

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

+Public Member Functions

 PythonQtSafeObjectPtr ()
 
 PythonQtSafeObjectPtr (const PythonQtSafeObjectPtr &p)
 
 PythonQtSafeObjectPtr (const PythonQtObjectPtr &p)
 
 PythonQtSafeObjectPtr (PythonQtSafeObjectPtr &&p)
 rvalue copy constructor, does not need any incref/decref. More...
 
 PythonQtSafeObjectPtr (PythonQtObjectPtr &&p)
 rvalue copy constructor, does not need any incref/decref. More...
 
 PythonQtSafeObjectPtr (PyObject *o)
 
 ~PythonQtSafeObjectPtr ()
 
PythonQtSafeObjectPtroperator= (const PythonQtSafeObjectPtr &p)
 
PythonQtSafeObjectPtroperator= (const PythonQtObjectPtr &p)
 
PythonQtSafeObjectPtroperator= (PythonQtSafeObjectPtr &&p)
 rvalue assignment operator that steals the reference from p More...
 
PythonQtSafeObjectPtroperator= (PythonQtObjectPtr &&p)
 rvalue assignment operator that steals the reference from p More...
 
PythonQtSafeObjectPtroperator= (PyObject *o)
 
bool operator== (const PythonQtSafeObjectPtr &p) const
 
bool operator!= (const PythonQtSafeObjectPtr &p) const
 
bool operator== (PyObject *p) const
 
bool operator!= (PyObject *p) const
 
bool isNull () const
 
PyObjectoperator-> () const
 
PyObjectoperator * () const
 
 operator PyObject * () const
 
PyObjectobject () const
 
PyObjecttakeObject ()
 
+ + + + + +

+Protected Member Functions

void setObject (PyObject *o)
 
void setObjectUnsafe (PyObject *o)
 
+

Detailed Description

+

a smart pointer that stores a PyObject pointer and that handles reference counting automatically

+ +

Definition at line 197 of file PythonQtObjectPtr.h.

+

Constructor & Destructor Documentation

+ +

◆ PythonQtSafeObjectPtr() [1/6]

+ +
+
+ + + + + +
+ + + + + + + +
PythonQtSafeObjectPtr::PythonQtSafeObjectPtr ()
+
+inline
+
+ +

Definition at line 200 of file PythonQtObjectPtr.h.

+
200 :_object(NULL) {}
+
+
+ +

◆ PythonQtSafeObjectPtr() [2/6]

+ +
+
+ + + + + +
+ + + + + + + + +
PythonQtSafeObjectPtr::PythonQtSafeObjectPtr (const PythonQtSafeObjectPtrp)
+
+inline
+
+ +

Definition at line 202 of file PythonQtObjectPtr.h.

+
203  :_object(NULL) {
204  setObject(p.object());
205  }
void setObject(PyObject *o)
+
PyObject * object() const
+
+

References object().

+ +
+
+ +

◆ PythonQtSafeObjectPtr() [3/6]

+ +
+
+ + + + + +
+ + + + + + + + +
PythonQtSafeObjectPtr::PythonQtSafeObjectPtr (const PythonQtObjectPtrp)
+
+inline
+
+ +

Definition at line 207 of file PythonQtObjectPtr.h.

+
208  :_object(NULL) {
209  setObject(p.object());
210  }
PyObject * object() const
+
void setObject(PyObject *o)
+
+

References PythonQtObjectPtr::object().

+ +
+
+ +

◆ PythonQtSafeObjectPtr() [4/6]

+ +
+
+ + + + + +
+ + + + + + + + +
PythonQtSafeObjectPtr::PythonQtSafeObjectPtr (PythonQtSafeObjectPtr && p)
+
+inline
+
+ +

rvalue copy constructor, does not need any incref/decref.

+ +

Definition at line 213 of file PythonQtObjectPtr.h.

+
214  :_object(p._object) {
215  p._object = NULL;
216  }
+
+
+ +

◆ PythonQtSafeObjectPtr() [5/6]

+ +
+
+ + + + + +
+ + + + + + + + +
PythonQtSafeObjectPtr::PythonQtSafeObjectPtr (PythonQtObjectPtr && p)
+
+inline
+
+ +

rvalue copy constructor, does not need any incref/decref.

+ +

Definition at line 219 of file PythonQtObjectPtr.h.

+
220  :_object(p.takeObject()) {
221  }
PyObject * takeObject()
+
+
+
+ +

◆ PythonQtSafeObjectPtr() [6/6]

+ +
+
+ + + + + + + + +
PythonQtSafeObjectPtr::PythonQtSafeObjectPtr (PyObjecto)
+
+ +
+
+ +

◆ ~PythonQtSafeObjectPtr()

+ +
+
+ + + + + + + +
PythonQtSafeObjectPtr::~PythonQtSafeObjectPtr ()
+
+ +
+
+

Member Function Documentation

+ +

◆ isNull()

+ +
+
+ + + + + +
+ + + + + + + +
bool PythonQtSafeObjectPtr::isNull () const
+
+inline
+
+ +

Definition at line 277 of file PythonQtObjectPtr.h.

+
277 { return !object(); }
PyObject * object() const
+
+
+
+ +

◆ object()

+ +
+
+ + + + + +
+ + + + + + + +
PyObject* PythonQtSafeObjectPtr::object () const
+
+inline
+
+ +

Definition at line 285 of file PythonQtObjectPtr.h.

+
285  {
286  return _object;
287  }
+

Referenced by operator=(), operator==(), and PythonQtSafeObjectPtr().

+ +
+
+ +

◆ operator *()

+ +
+
+ + + + + +
+ + + + + + + +
PyObject& PythonQtSafeObjectPtr::operator * () const
+
+inline
+
+ +

Definition at line 281 of file PythonQtObjectPtr.h.

+
281 { return *(object()); }
PyObject * object() const
+
+
+
+ +

◆ operator PyObject *()

+ +
+
+ + + + + +
+ + + + + + + +
PythonQtSafeObjectPtr::operator PyObject * () const
+
+inline
+
+ +

Definition at line 283 of file PythonQtObjectPtr.h.

+
283 { return object(); }
PyObject * object() const
+
+
+
+ +

◆ operator!=() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + +
bool PythonQtSafeObjectPtr::operator!= (const PythonQtSafeObjectPtrp) const
+
+inline
+
+ +

Definition at line 265 of file PythonQtObjectPtr.h.

+
265  {
266  return !(*this == p);
267  }
+
+
+ +

◆ operator!=() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + +
bool PythonQtSafeObjectPtr::operator!= (PyObjectp) const
+
+inline
+
+ +

Definition at line 273 of file PythonQtObjectPtr.h.

+
273  {
274  return object() != p;
275  }
PyObject * object() const
+
+
+
+ +

◆ operator->()

+ +
+
+ + + + + +
+ + + + + + + +
PyObject* PythonQtSafeObjectPtr::operator-> () const
+
+inline
+
+ +

Definition at line 279 of file PythonQtObjectPtr.h.

+
279 { return object(); }
PyObject * object() const
+
+
+
+ +

◆ operator=() [1/5]

+ +
+
+ + + + + +
+ + + + + + + + +
PythonQtSafeObjectPtr& PythonQtSafeObjectPtr::operator= (const PythonQtSafeObjectPtrp)
+
+inline
+
+ +

Definition at line 227 of file PythonQtObjectPtr.h.

+
227  {
228  setObject(p.object());
229  return *this;
230  }
void setObject(PyObject *o)
+
PyObject * object() const
+
+

References object().

+ +
+
+ +

◆ operator=() [2/5]

+ +
+
+ + + + + +
+ + + + + + + + +
PythonQtSafeObjectPtr& PythonQtSafeObjectPtr::operator= (const PythonQtObjectPtrp)
+
+inline
+
+ +

Definition at line 232 of file PythonQtObjectPtr.h.

+
232  {
233  setObjectUnsafe(p.object());
234  return *this;
235  }
PyObject * object() const
+
void setObjectUnsafe(PyObject *o)
+
+

References PythonQtObjectPtr::object().

+ +
+
+ +

◆ operator=() [3/5]

+ +
+
+ + + + + +
+ + + + + + + + +
PythonQtSafeObjectPtr& PythonQtSafeObjectPtr::operator= (PythonQtSafeObjectPtr && p)
+
+inline
+
+ +

rvalue assignment operator that steals the reference from p

+ +

Definition at line 238 of file PythonQtObjectPtr.h.

+
238  {
239  if (_object) {
240  setObject(NULL);
241  }
242  _object = p._object;
243  p._object = NULL;
244  return *this;
245  }
void setObject(PyObject *o)
+
+
+
+ +

◆ operator=() [4/5]

+ +
+
+ + + + + +
+ + + + + + + + +
PythonQtSafeObjectPtr& PythonQtSafeObjectPtr::operator= (PythonQtObjectPtr && p)
+
+inline
+
+ +

rvalue assignment operator that steals the reference from p

+ +

Definition at line 248 of file PythonQtObjectPtr.h.

+
248  {
249  if (_object) {
250  setObjectUnsafe(NULL);
251  }
252  _object = p.takeObject();
253  return *this;
254  }
void setObjectUnsafe(PyObject *o)
+
PyObject * takeObject()
+
+
+
+ +

◆ operator=() [5/5]

+ +
+
+ + + + + +
+ + + + + + + + +
PythonQtSafeObjectPtr& PythonQtSafeObjectPtr::operator= (PyObjecto)
+
+inline
+
+ +

Definition at line 256 of file PythonQtObjectPtr.h.

+
256  {
257  setObject(o);
258  return *this;
259  }
void setObject(PyObject *o)
+
+
+
+ +

◆ operator==() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + +
bool PythonQtSafeObjectPtr::operator== (const PythonQtSafeObjectPtrp) const
+
+inline
+
+ +

Definition at line 261 of file PythonQtObjectPtr.h.

+
261  {
262  return object() == p.object();
263  }
PyObject * object() const
+
+

References object().

+ +
+
+ +

◆ operator==() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + +
bool PythonQtSafeObjectPtr::operator== (PyObjectp) const
+
+inline
+
+ +

Definition at line 269 of file PythonQtObjectPtr.h.

+
269  {
270  return object() == p;
271  }
PyObject * object() const
+
+
+
+ +

◆ setObject()

+ +
+
+ + + + + +
+ + + + + + + + +
void PythonQtSafeObjectPtr::setObject (PyObjecto)
+
+protected
+
+ +
+
+ +

◆ setObjectUnsafe()

+ +
+
+ + + + + +
+ + + + + + + + +
void PythonQtSafeObjectPtr::setObjectUnsafe (PyObjecto)
+
+protected
+
+ +
+
+ +

◆ takeObject()

+ +
+
+ + + + + +
+ + + + + + + +
PyObject* PythonQtSafeObjectPtr::takeObject ()
+
+inline
+
+

takes the object from the pointer, leaving the pointer empty. the caller has to take care about the decref of the taken object!

+ +

Definition at line 291 of file PythonQtObjectPtr.h.

+
291  {
292  PyObject* o = _object;
293  _object = NULL;
294  return o;
295  }
struct _object PyObject
+
+
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/classPythonQtSignalReceiver-members.html b/classPythonQtSignalReceiver-members.html new file mode 100644 index 000000000..ee9b2b1ef --- /dev/null +++ b/classPythonQtSignalReceiver-members.html @@ -0,0 +1,62 @@ + + + + + + + +PythonQt: Member List + + + + + + +
+
+ + + + + + +
+
PythonQt +
+
+
+ + + + + + +
+
+
+
PythonQtSignalReceiver Member List
+
+
+ +

This is the complete list of members for PythonQtSignalReceiver, including all inherited members.

+ + + + + + + +
addSignalHandler(const char *signal, PyObject *callable)PythonQtSignalReceiver
PythonQtSignalReceiver(QObject *obj)PythonQtSignalReceiver
PythonQtSignalReceiverBase(QObject *obj)PythonQtSignalReceiverBaseinline
qt_metacall(QMetaObject::Call c, int id, void **arguments)PythonQtSignalReceivervirtual
removeSignalHandler(const char *signal, PyObject *callable=NULL)PythonQtSignalReceiver
~PythonQtSignalReceiver()PythonQtSignalReceiver
+ + + + diff --git a/classPythonQtSignalReceiver.html b/classPythonQtSignalReceiver.html new file mode 100644 index 000000000..a55a721b3 --- /dev/null +++ b/classPythonQtSignalReceiver.html @@ -0,0 +1,239 @@ + + + + + + + +PythonQt: PythonQtSignalReceiver Class Reference + + + + + + +
+
+ + + + + + +
+
PythonQt +
+
+
+ + + + + + +
+
+ +
+
PythonQtSignalReceiver Class Reference
+
+
+ +

receives all signals for one QObject + More...

+ +

#include <PythonQtSignalReceiver.h>

+
+Inheritance diagram for PythonQtSignalReceiver:
+
+
+ + +PythonQtSignalReceiverBase + +
+ + + + + + + + + + + + + + + + + + +

+Public Member Functions

 PythonQtSignalReceiver (QObject *obj)
 
 ~PythonQtSignalReceiver ()
 
bool addSignalHandler (const char *signal, PyObject *callable)
 add a signal handler More...
 
bool removeSignalHandler (const char *signal, PyObject *callable=NULL)
 remove a signal handler for given callable (or all callables on that signal if callable is NULL) More...
 
virtual int qt_metacall (QMetaObject::Call c, int id, void **arguments)
 we implement this method to simulate a number of slots that match the ids in _targets More...
 
- Public Member Functions inherited from PythonQtSignalReceiverBase
 PythonQtSignalReceiverBase (QObject *obj)
 
+

Detailed Description

+

receives all signals for one QObject

+

we derive from our base but do not declare the QObject macro because we want to reimplement qt_metacall only.

+ +

Definition at line 112 of file PythonQtSignalReceiver.h.

+

Constructor & Destructor Documentation

+ +

◆ PythonQtSignalReceiver()

+ +
+
+ + + + + + + + +
PythonQtSignalReceiver::PythonQtSignalReceiver (QObject * obj)
+
+ +
+
+ +

◆ ~PythonQtSignalReceiver()

+ +
+
+ + + + + + + +
PythonQtSignalReceiver::~PythonQtSignalReceiver ()
+
+ +
+
+

Member Function Documentation

+ +

◆ addSignalHandler()

+ +
+
+ + + + + + + + + + + + + + + + + + +
bool PythonQtSignalReceiver::addSignalHandler (const char * signal,
PyObjectcallable 
)
+
+ +

add a signal handler

+ +
+
+ +

◆ qt_metacall()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
virtual int PythonQtSignalReceiver::qt_metacall (QMetaObject::Call c,
int id,
void ** arguments 
)
+
+virtual
+
+ +

we implement this method to simulate a number of slots that match the ids in _targets

+ +
+
+ +

◆ removeSignalHandler()

+ +
+
+ + + + + + + + + + + + + + + + + + +
bool PythonQtSignalReceiver::removeSignalHandler (const char * signal,
PyObjectcallable = NULL 
)
+
+ +

remove a signal handler for given callable (or all callables on that signal if callable is NULL)

+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/classPythonQtSignalReceiver.png b/classPythonQtSignalReceiver.png new file mode 100644 index 0000000000000000000000000000000000000000..86a89ba73c4eadbedb5d6d67edefd57ebf30b8cf GIT binary patch literal 1003 zcmeAS@N?(olHy`uVBq!ia0vp^n}E23gBeJcY;~Lnq$C1-LR|m<{|{uoc=NTi|Ih>= z3ycpOIKbL@M;^%KC<*clW&kPzfvcxNj2IZ0t2|vCLn;{G&i%jckOGeze{9nI|Gn#X zZ*ctH{BldDN~pa#n{Ip1u6j?+r5jy>LS;Q0*Q|QA)*&qP>$UO;&x>>3Pg}NX)_w7` z-&{qlG5^o)`NvVzn^FB;{%!r#9p|T)numnupW?OLe#*EyF!ZlOU7(%AzqLnJR9HW$ zQL5*!^t<<2qui@w)vM~F)e`&Xo?a@YUz*7IEAZ$E|IpC)r+>bE{?KMZ=+?hGf0XrY zTJ>tX=!sRU?s27rhUVK&4ED;@VEpld(O}v!=Q^9VWI6tyo;FgS8%_ioGW-!e!2ndp zkk4w=u$@WrKy)L|gS8H9AHo!vE3_vt?m>~>`P1jJNw2D!;KYd{CzOOYTaTv4Q#QkJp}^c)RcZ z1o=r<7~OZ)JX_lvRlL1(+RYBL>E+MVPt1;4_gO~qw&Qj2><#zRrRN^nsBk^ZujTBi zHxKWvNp9cs@3!9jaO$*$_3WH4@>haV}4sw)48W#9f#BdGE;H=?gke zh;Mb?XPy6FRa@zkuB=L1#|eGy39c@{@B)TQm6HEu6JAvYd0U2Kmnu&5A1^rbSkb=I zJy}k`Qj4u&KcR3&jt2AjQ-Y+tRT_XH4vDC_3eP9s?6HczX_WU*`+K_KjJXlp9X?l^ zmZihOngJNpEDwUjPs~)ien{w?&`Gler#rG{&yJp*)|%V?Hh(w&!#F3*FlNpvop?I^ z-mMj;<+C$p_GT1Urq?y`YzWpr^|wRj$a|Y8vwPgXnqs0Qm&ZyrTxI?AXtDUyN!#A8 zD;G~YoUQ-5WUkaF$xn$#4R-#I(~E95pV-~Mt7>vj>iO%J!+uY@u-@!-bKKDt>5GE- z^zYYgU%ldX^j9u$U@9DN-{k-d%jbJ}K1|dTW`3|8=2b}2{mVG{ecyvwwuwuCIg`QD L)z4*}Q$iB}uM*+) literal 0 HcmV?d00001 diff --git a/classPythonQtSignalReceiverBase-members.html b/classPythonQtSignalReceiverBase-members.html new file mode 100644 index 000000000..b325189ca --- /dev/null +++ b/classPythonQtSignalReceiverBase-members.html @@ -0,0 +1,57 @@ + + + + + + + +PythonQt: Member List + + + + + + +
+
+ + + + + + +
+
PythonQt +
+
+
+ + + + + + +
+
+
+
PythonQtSignalReceiverBase Member List
+
+
+ +

This is the complete list of members for PythonQtSignalReceiverBase, including all inherited members.

+ + +
PythonQtSignalReceiverBase(QObject *obj)PythonQtSignalReceiverBaseinline
+ + + + diff --git a/classPythonQtSignalReceiverBase.html b/classPythonQtSignalReceiverBase.html new file mode 100644 index 000000000..aea0ca78e --- /dev/null +++ b/classPythonQtSignalReceiverBase.html @@ -0,0 +1,112 @@ + + + + + + + +PythonQt: PythonQtSignalReceiverBase Class Reference + + + + + + +
+
+ + + + + + +
+
PythonQt +
+
+
+ + + + + + +
+
+ +
+
PythonQtSignalReceiverBase Class Reference
+
+
+ +

base class for signal receivers + More...

+ +

#include <PythonQtSignalReceiver.h>

+
+Inheritance diagram for PythonQtSignalReceiverBase:
+
+
+ + +PythonQtSignalReceiver + +
+ + + + +

+Public Member Functions

 PythonQtSignalReceiverBase (QObject *obj)
 
+

Detailed Description

+

base class for signal receivers

+ +

Definition at line 103 of file PythonQtSignalReceiver.h.

+

Constructor & Destructor Documentation

+ +

◆ PythonQtSignalReceiverBase()

+ +
+
+ + + + + +
+ + + + + + + + +
PythonQtSignalReceiverBase::PythonQtSignalReceiverBase (QObject * obj)
+
+inline
+
+ +

Definition at line 106 of file PythonQtSignalReceiver.h.

+
106 :QObject(obj) {};
+
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/classPythonQtSignalReceiverBase.png b/classPythonQtSignalReceiverBase.png new file mode 100644 index 0000000000000000000000000000000000000000..4e2ba27f47c54bcdce4767f2e4b62d88416d1c6a GIT binary patch literal 1012 zcmeAS@N?(olHy`uVBq!ia0vp^n}E23gBeJcY;~Lnq$C1-LR|m<{|{uoc=NTi|Ih>= z3ycpOIKbL@M;^%KC<*clW&kPzfvcxNj2IZ0n>}3|Ln;{G&V74svjR_>e%7XW|0VYq zFA8w2d3McQ`Q;uMjc@2z=AW)R8~;Ri27cf> zaa#Ik^@-w7^W1j^JB5VapB#Pk$J>~5S1Zx`C`uXjj9m1~uD*E_V zCN=bGzV-y5uqem{RZ7dJTnb?NaFIDdr?>r21+EiSeRE_N>#EhZ7fcOLTsy8=bkOz&gT&uNt^P!J<--V-j%`rIJc{A#RUeV^H8F%XSr>{LMR-`_?+;!QTy84uzVLJKIlF`olZ|2DE?Fzid zIhp_Vl05;NlVU_G8o2*1fB!=8=emcx_sMp;;C_d>6KN>W4D}fyt1>#z}`_z&~kfQakJkOudcSw=Q<{El z64%#rE-q{ICWOoH)p)*Tt^eNLhSG7>x2L_nGU5D$*`kM^{HxxXBYV%~oZYE+zDCcC z@88>Iw5_df^G&NN(Zzd&=N47`{JJ~V)n0eMl9F$%;{E6y-vvbke|m_YD8K%;X1c43 z-KEr|j*dUmm?B+{L^tXvJzA^&$;9_^z%TaKh5eN+-*lXTS(L%k)z4*}Q$iB}8Oh{w literal 0 HcmV?d00001 diff --git a/classPythonQtSignalTarget-members.html b/classPythonQtSignalTarget-members.html new file mode 100644 index 000000000..99e1e88a6 --- /dev/null +++ b/classPythonQtSignalTarget-members.html @@ -0,0 +1,65 @@ + + + + + + + +PythonQt: Member List + + + + + + +
+
+ + + + + + +
+
PythonQt +
+
+
+ + + + + + +
+
+
+
PythonQtSignalTarget Member List
+
+
+ +

This is the complete list of members for PythonQtSignalTarget, including all inherited members.

+ + + + + + + + + + +
call(void **arguments) constPythonQtSignalTarget
call(PyObject *callable, const PythonQtMethodInfo *methodInfo, void **arguments, bool skipFirstArgumentOfMethodInfo=false)PythonQtSignalTargetstatic
isSame(int signalId, PyObject *callable) constPythonQtSignalTarget
methodInfo() constPythonQtSignalTargetinline
PythonQtSignalTarget()PythonQtSignalTargetinline
PythonQtSignalTarget(int signalId, const PythonQtMethodInfo *methodInfo, int slotId, PyObject *callable)PythonQtSignalTargetinline
signalId() constPythonQtSignalTargetinline
slotId() constPythonQtSignalTargetinline
~PythonQtSignalTarget()PythonQtSignalTargetinline
+ + + + diff --git a/classPythonQtSignalTarget.html b/classPythonQtSignalTarget.html new file mode 100644 index 000000000..4df777fbe --- /dev/null +++ b/classPythonQtSignalTarget.html @@ -0,0 +1,397 @@ + + + + + + + +PythonQt: PythonQtSignalTarget Class Reference + + + + + + +
+
+ + + + + + +
+
PythonQt +
+
+
+ + + + + + +
+
+ +
+
PythonQtSignalTarget Class Reference
+
+
+ +

stores information about a signal target + More...

+ +

#include <PythonQtSignalReceiver.h>

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

+Public Member Functions

 PythonQtSignalTarget ()
 
 PythonQtSignalTarget (int signalId, const PythonQtMethodInfo *methodInfo, int slotId, PyObject *callable)
 
 ~PythonQtSignalTarget ()
 
int signalId () const
 get the id of the original signal More...
 
int slotId () const
 get the id that was assigned to this simulated slot More...
 
const PythonQtMethodInfomethodInfo () const
 get the signals parameter info More...
 
void call (void **arguments) const
 call the python callable with the given arguments (as defined in methodInfo) More...
 
bool isSame (int signalId, PyObject *callable) const
 check if it is the same signal target More...
 
+ + + + +

+Static Public Member Functions

static PyObjectcall (PyObject *callable, const PythonQtMethodInfo *methodInfo, void **arguments, bool skipFirstArgumentOfMethodInfo=false)
 call the given callable with arguments described by PythonQtMethodInfo, returns a new reference as result value (or NULL) More...
 
+

Detailed Description

+

stores information about a signal target

+

copy construction and assignment works fine with the C++ standard behavior and are thus not implemented

+ +

Definition at line 56 of file PythonQtSignalReceiver.h.

+

Constructor & Destructor Documentation

+ +

◆ PythonQtSignalTarget() [1/2]

+ +
+
+ + + + + +
+ + + + + + + +
PythonQtSignalTarget::PythonQtSignalTarget ()
+
+inline
+
+ +

Definition at line 58 of file PythonQtSignalReceiver.h.

+
58  {
59  _signalId = -1;
60  _methodInfo = NULL;
61  _slotId = -1;
62  }
+
+
+ +

◆ PythonQtSignalTarget() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PythonQtSignalTarget::PythonQtSignalTarget (int signalId,
const PythonQtMethodInfomethodInfo,
int slotId,
PyObjectcallable 
)
+
+inline
+
+ +

Definition at line 64 of file PythonQtSignalReceiver.h.

+
65  {
66  _signalId = signalId;
67  _slotId = slotId;
68  _methodInfo = methodInfo;
69  _callable = callable;
70  };
const PythonQtMethodInfo * methodInfo() const
get the signals parameter info
+
int signalId() const
get the id of the original signal
+
int slotId() const
get the id that was assigned to this simulated slot
+
+
+
+ +

◆ ~PythonQtSignalTarget()

+ +
+
+ + + + + +
+ + + + + + + +
PythonQtSignalTarget::~PythonQtSignalTarget ()
+
+inline
+
+ +

Definition at line 72 of file PythonQtSignalReceiver.h.

+
72  {
73  };
+
+
+

Member Function Documentation

+ +

◆ call() [1/2]

+ +
+
+ + + + + + + + +
void PythonQtSignalTarget::call (void ** arguments) const
+
+ +

call the python callable with the given arguments (as defined in methodInfo)

+ +
+
+ +

◆ call() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
static PyObject* PythonQtSignalTarget::call (PyObjectcallable,
const PythonQtMethodInfomethodInfo,
void ** arguments,
bool skipFirstArgumentOfMethodInfo = false 
)
+
+static
+
+ +

call the given callable with arguments described by PythonQtMethodInfo, returns a new reference as result value (or NULL)

+ +
+
+ +

◆ isSame()

+ +
+
+ + + + + + + + + + + + + + + + + + +
bool PythonQtSignalTarget::isSame (int signalId,
PyObjectcallable 
) const
+
+ +

check if it is the same signal target

+ +
+
+ +

◆ methodInfo()

+ +
+
+ + + + + +
+ + + + + + + +
const PythonQtMethodInfo* PythonQtSignalTarget::methodInfo () const
+
+inline
+
+ +

get the signals parameter info

+ +

Definition at line 82 of file PythonQtSignalReceiver.h.

+
82 { return _methodInfo; }
+
+
+ +

◆ signalId()

+ +
+
+ + + + + +
+ + + + + + + +
int PythonQtSignalTarget::signalId () const
+
+inline
+
+ +

get the id of the original signal

+ +

Definition at line 76 of file PythonQtSignalReceiver.h.

+
76 { return _signalId; }
+
+
+ +

◆ slotId()

+ +
+
+ + + + + +
+ + + + + + + +
int PythonQtSignalTarget::slotId () const
+
+inline
+
+ +

get the id that was assigned to this simulated slot

+ +

Definition at line 79 of file PythonQtSignalReceiver.h.

+
79 { return _slotId; }
+
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/classPythonQtSingleShotTimer-members.html b/classPythonQtSingleShotTimer-members.html new file mode 100644 index 000000000..ac04cb8a6 --- /dev/null +++ b/classPythonQtSingleShotTimer-members.html @@ -0,0 +1,58 @@ + + + + + + + +PythonQt: Member List + + + + + + +
+
+ + + + + + +
+
PythonQt +
+
+
+ + + + + + +
+
+
+
PythonQtSingleShotTimer Member List
+
+
+ +

This is the complete list of members for PythonQtSingleShotTimer, including all inherited members.

+ + + +
PythonQtSingleShotTimer(int msec, const PythonQtObjectPtr &callable)PythonQtSingleShotTimer
slotTimeout()PythonQtSingleShotTimerslot
+ + + + diff --git a/classPythonQtSingleShotTimer.html b/classPythonQtSingleShotTimer.html new file mode 100644 index 000000000..4f0ddf183 --- /dev/null +++ b/classPythonQtSingleShotTimer.html @@ -0,0 +1,137 @@ + + + + + + + +PythonQt: PythonQtSingleShotTimer Class Reference + + + + + + +
+
+ + + + + + +
+
PythonQt +
+
+
+ + + + + + +
+
+ +
+
PythonQtSingleShotTimer Class Reference
+
+
+ +

#include <PythonQtStdDecorators.h>

+
+Inheritance diagram for PythonQtSingleShotTimer:
+
+
+ +
+ + + + +

+Public Slots

void slotTimeout ()
 
+ + + +

+Public Member Functions

 PythonQtSingleShotTimer (int msec, const PythonQtObjectPtr &callable)
 
+

Detailed Description

+
+

Definition at line 122 of file PythonQtStdDecorators.h.

+

Constructor & Destructor Documentation

+ +

◆ PythonQtSingleShotTimer()

+ +
+
+ + + + + + + + + + + + + + + + + + +
PythonQtSingleShotTimer::PythonQtSingleShotTimer (int msec,
const PythonQtObjectPtrcallable 
)
+
+ +
+
+

Member Function Documentation

+ +

◆ slotTimeout

+ +
+
+ + + + + +
+ + + + + + + +
void PythonQtSingleShotTimer::slotTimeout ()
+
+slot
+
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/classPythonQtSingleShotTimer.png b/classPythonQtSingleShotTimer.png new file mode 100644 index 0000000000000000000000000000000000000000..d631878f3008c61e36b8a6734d3809ea41ebf743 GIT binary patch literal 605 zcmeAS@N?(olHy`uVBq!ia0vp^vw=8(gBeI#PWXNjNJ#|vgt-3y{~ySF@#br3|Dg#$ z78oBmaDcV*jy#adQ4-`A%m7pb0#{Fk7%?y~zVUQ%45?szJNM$IB?>&O*80W&{`aq6 zyg(r%_sH6(*Or|sb8A1MHtC_L@n+A1Dw$q~d?)>BnXU3uviP@I@UI_r)s?fH^Ri!v z{Wo7_|7e;L|KX=w#PWAXc<;J9LB)RkZe6|I_rL8^eJS|<`df=Km6wc*^L|U`+$oyx zaml#t^|Wij+w+=zKV{9I6(aZl)7)kMx7Xe6vzxla{m493&pMc0oaUaNHt(1@^DO6q z>KX>M)THg_)8lq_-WA)L`82Jp+m5xuX$RvEPICtPhinhj?=bvnk#3k@!2CftkD=}m z?*V^=K(JPBS<@tb$I9n*Lh@AJ%M=kmlG4-}f@-A>-Fxs+*X=k(9#mAg8h9IT$SDlT->qvg6L@lVV*xyJ5T>;B8b zyl-_|nD)2MuTriGhrc&l5}V(8J91m8cV*S$zD08{ZOeN;VbQg(LOUmC$;GAG zhyQ)C_8(95_Tc*_c`wi9-u)!KVsrV`+e?e$x9{??+nzW7o^J5++qHL#PK$VN{^lh+ zOX}U4x>uJ!{a@=5_Wh;hld5=$yBcw~GorRHymB{|=>cc&?SyApkC`PNgunU9Fj){7 g3Tov*Z%>wI`x*C#!@<=Am=+j3UHx3vIVCg!06kzNsQ>@~ literal 0 HcmV?d00001 diff --git a/classPythonQtSlotInfo-members.html b/classPythonQtSlotInfo-members.html new file mode 100644 index 000000000..02c3fd3b6 --- /dev/null +++ b/classPythonQtSlotInfo-members.html @@ -0,0 +1,109 @@ + + + + + + + +PythonQt: Member List + + + + + + +
+
+ + + + + + +
+
PythonQt +
+
+
+ + + + + + +
+
+
+
PythonQtSlotInfo Member List
+
+
+ +

This is the complete list of members for PythonQtSlotInfo, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
_cachedParameterInfosPythonQtMethodInfoprotectedstatic
_cachedSignaturesPythonQtMethodInfoprotectedstatic
_parameterNameAliasesPythonQtMethodInfoprotectedstatic
_parametersPythonQtMethodInfoprotected
_parameterTypeDictPythonQtMethodInfoprotectedstatic
_shouldAllowThreadsPythonQtMethodInfoprotected
addParameterTypeAlias(const QByteArray &alias, const QByteArray &name)PythonQtMethodInfostatic
arguments() constPythonQtSlotInfo
ClassDecorator enum valuePythonQtSlotInfo
cleanupCachedMethodInfos()PythonQtMethodInfostatic
decorator() constPythonQtSlotInfoinline
deleteOverloadsAndThis()PythonQtSlotInfo
fillParameterInfo(ParameterInfo &type, const QByteArray &name, PythonQtClassInfo *classInfo=NULL)PythonQtMethodInfostatic
fullSignature(bool skipReturnValue=false, int optionalArgsIndex=-1) constPythonQtSlotInfo
getCachedMethodInfo(const QMetaMethod &method, PythonQtClassInfo *classInfo)PythonQtMethodInfostatic
getCachedMethodInfoFromArgumentList(int numArgs, const char **args)PythonQtMethodInfostatic
getGlobalShouldAllowThreads()PythonQtSlotInfostatic
getImplementingClassName() constPythonQtSlotInfo
getInnerListTypeName(const QByteArray &typeName)PythonQtMethodInfostatic
getInnerTemplateMetaType(const QByteArray &typeName)PythonQtMethodInfostatic
getInnerTemplateTypeName(const QByteArray &typeName)PythonQtMethodInfostatic
getParameterInfoForMetaType(int type)PythonQtMethodInfostatic
InstanceDecorator enum valuePythonQtSlotInfo
invokeQtMethod(QObject *obj, PythonQtSlotInfo *slot, void **argList)PythonQtSlotInfostatic
isClassDecorator() constPythonQtSlotInfoinline
isInstanceDecorator() constPythonQtSlotInfoinline
MemberSlot enum valuePythonQtSlotInfo
metaMethod() constPythonQtSlotInfoinline
nameToType(const char *name)PythonQtMethodInfostatic
nextInfo() constPythonQtSlotInfoinline
overloads(bool skipReturnValue=false) constPythonQtSlotInfo
parameterCount() constPythonQtMethodInfoinline
parameters() constPythonQtMethodInfoinline
ParameterType enum namePythonQtMethodInfo
PythonQtMethodInfo()PythonQtMethodInfoinline
PythonQtMethodInfo(const QMetaMethod &meta, PythonQtClassInfo *classInfo)PythonQtMethodInfo
PythonQtMethodInfo(const QByteArray &typeName, const QList< QByteArray > &args)PythonQtMethodInfo
PythonQtMethodInfo(const PythonQtMethodInfo &other)PythonQtMethodInfoinline
PythonQtSlotInfo(const PythonQtSlotInfo &info)PythonQtSlotInfoinline
PythonQtSlotInfo(PythonQtClassInfo *classInfo, const QMetaMethod &meta, int slotIndex, QObject *decorator=NULL, Type type=MemberSlot)PythonQtSlotInfoinline
setGlobalShouldAllowThreads(bool flag)PythonQtSlotInfostatic
setNextInfo(PythonQtSlotInfo *next)PythonQtSlotInfoinline
setupAllowThreads()PythonQtMethodInfoprotected
setUpcastingOffset(int upcastingOffset)PythonQtSlotInfoinline
shouldAllowThreads() constPythonQtMethodInfoinline
signature() constPythonQtSlotInfo
slotIndex() constPythonQtSlotInfoinline
slotName(bool removeDecorators=false) constPythonQtSlotInfo
Type enum namePythonQtSlotInfo
Unknown enum valuePythonQtMethodInfo
upcastingOffset() constPythonQtSlotInfoinline
Variant enum valuePythonQtMethodInfo
~PythonQtMethodInfo()PythonQtMethodInfoinline
+ + + + diff --git a/classPythonQtSlotInfo.html b/classPythonQtSlotInfo.html new file mode 100644 index 000000000..65d394029 --- /dev/null +++ b/classPythonQtSlotInfo.html @@ -0,0 +1,849 @@ + + + + + + + +PythonQt: PythonQtSlotInfo Class Reference + + + + + + +
+
+ + + + + + +
+
PythonQt +
+
+
+ + + + + + +
+ +
+ +

stores information about a slot, including a next pointer to overloaded slots + More...

+ +

#include <PythonQtMethodInfo.h>

+
+Inheritance diagram for PythonQtSlotInfo:
+
+
+ + +PythonQtMethodInfo + +
+ + + + + + + +

+Public Types

enum  Type { MemberSlot, +InstanceDecorator, +ClassDecorator + }
 
- Public Types inherited from PythonQtMethodInfo
enum  ParameterType { Unknown = -1, +Variant = -2 + }
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 PythonQtSlotInfo (const PythonQtSlotInfo &info)
 
 PythonQtSlotInfo (PythonQtClassInfo *classInfo, const QMetaMethod &meta, int slotIndex, QObject *decorator=NULL, Type type=MemberSlot)
 
QList< ParameterInfoarguments () const
 get the parameter infos for the arguments, without return type and instance decorator. More...
 
void deleteOverloadsAndThis ()
 
const QMetaMethod * metaMethod () const
 
void setUpcastingOffset (int upcastingOffset)
 
int upcastingOffset () const
 
int slotIndex () const
 get the index of the slot (needed for qt_metacall) More...
 
PythonQtSlotInfonextInfo () const
 get next overloaded slot (which has the same name) More...
 
void setNextInfo (PythonQtSlotInfo *next)
 set the next overloaded slot More...
 
bool isInstanceDecorator () const
 returns if the slot is a decorator slot More...
 
bool isClassDecorator () const
 returns if the slot is a constructor slot More...
 
QObject * decorator () const
 
QString fullSignature (bool skipReturnValue=false, int optionalArgsIndex=-1) const
 get the full signature including return type More...
 
QByteArray signature () const
 get the Qt signature of the slot More...
 
QByteArray slotName (bool removeDecorators=false) const
 get the short slot name More...
 
QStringList overloads (bool skipReturnValue=false) const
 
QByteArray getImplementingClassName () const
 
- Public Member Functions inherited from PythonQtMethodInfo
 PythonQtMethodInfo ()
 
 ~PythonQtMethodInfo ()
 
 PythonQtMethodInfo (const QMetaMethod &meta, PythonQtClassInfo *classInfo)
 
 PythonQtMethodInfo (const QByteArray &typeName, const QList< QByteArray > &args)
 
 PythonQtMethodInfo (const PythonQtMethodInfo &other)
 
int parameterCount () const
 returns the number of parameters including the return value More...
 
const QList< ParameterInfo > & parameters () const
 get the parameter infos More...
 
bool shouldAllowThreads () const
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Static Public Member Functions

static void invokeQtMethod (QObject *obj, PythonQtSlotInfo *slot, void **argList)
 Invoke the given slot on obj, save/restore thread state if needed. More...
 
static void setGlobalShouldAllowThreads (bool flag)
 Sets if calling slots should release the GIL to allow other Python threads while being inside of C++. More...
 
static bool getGlobalShouldAllowThreads ()
 Returns if calling slots should release the GIL to allow Python threads while being inside of C++. More...
 
- Static Public Member Functions inherited from PythonQtMethodInfo
static const PythonQtMethodInfogetCachedMethodInfo (const QMetaMethod &method, PythonQtClassInfo *classInfo)
 
static const PythonQtMethodInfogetCachedMethodInfoFromArgumentList (int numArgs, const char **args)
 get the cached method info using the passed in list of return value and arguments, return value needs to be passed as first arg More...
 
static void cleanupCachedMethodInfos ()
 cleanup the cache More...
 
static int nameToType (const char *name)
 returns the id for the given type (using an internal dictionary) More...
 
static void addParameterTypeAlias (const QByteArray &alias, const QByteArray &name)
 add an alias for a typename, e.g. QObjectList and QList<QObject*>. More...
 
static void fillParameterInfo (ParameterInfo &type, const QByteArray &name, PythonQtClassInfo *classInfo=NULL)
 fill the parameter info for the given type name More...
 
static const ParameterInfogetParameterInfoForMetaType (int type)
 returns a parameter info for the given metatype (and creates and caches one if it is not yet present) More...
 
static int getInnerTemplateMetaType (const QByteArray &typeName)
 returns the inner type id of a simple template of the form SomeObject<InnerType> More...
 
static QByteArray getInnerTemplateTypeName (const QByteArray &typeName)
 returns the inner type name of a simple template of the form SomeObject<InnerType> More...
 
static QByteArray getInnerListTypeName (const QByteArray &typeName)
 returns the inner type name of a simple template or the typename without appended "List". More...
 
+ + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Protected Member Functions inherited from PythonQtMethodInfo
void setupAllowThreads ()
 
- Protected Attributes inherited from PythonQtMethodInfo
QList< ParameterInfo_parameters
 
bool _shouldAllowThreads
 
- Static Protected Attributes inherited from PythonQtMethodInfo
static QHash< QByteArray, int > _parameterTypeDict
 
static QHash< QByteArray, QByteArray > _parameterNameAliases
 
static QHash< QByteArray, PythonQtMethodInfo * > _cachedSignatures
 stores the cached signatures of methods to speedup mapping from Qt to Python types More...
 
static QHash< int, ParameterInfo_cachedParameterInfos
 
+

Detailed Description

+

stores information about a slot, including a next pointer to overloaded slots

+ +

Definition at line 152 of file PythonQtMethodInfo.h.

+

Member Enumeration Documentation

+ +

◆ Type

+ +
+
+ + + + +
enum PythonQtSlotInfo::Type
+
+ + + + +
Enumerator
MemberSlot 
InstanceDecorator 
ClassDecorator 
+ +

Definition at line 155 of file PythonQtMethodInfo.h.

+ +
+
+

Constructor & Destructor Documentation

+ +

◆ PythonQtSlotInfo() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + +
PythonQtSlotInfo::PythonQtSlotInfo (const PythonQtSlotInfoinfo)
+
+inline
+
+ +

Definition at line 159 of file PythonQtMethodInfo.h.

+
159  :PythonQtMethodInfo() {
160  _meta = info._meta;
161  _parameters = info._parameters;
163  _slotIndex = info._slotIndex;
164  _next = NULL;
165  _decorator = info._decorator;
166  _type = info._type;
167  _upcastingOffset = 0;
168  }
+ +
QList< ParameterInfo > _parameters
+
+

References PythonQtMethodInfo::_parameters, and PythonQtMethodInfo::_shouldAllowThreads.

+ +
+
+ +

◆ PythonQtSlotInfo() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PythonQtSlotInfo::PythonQtSlotInfo (PythonQtClassInfoclassInfo,
const QMetaMethod & meta,
int slotIndex,
QObject * decorator = NULL,
Type type = MemberSlot 
)
+
+inline
+
+ +

Definition at line 170 of file PythonQtMethodInfo.h.

+
171  {
172  const PythonQtMethodInfo* info = getCachedMethodInfo(meta, classInfo);
173  _meta = meta;
174  _parameters = info->parameters();
176  _slotIndex = slotIndex;
177  _next = NULL;
178  _decorator = decorator;
179  _type = type;
180  _upcastingOffset = 0;
181  }
static const PythonQtMethodInfo * getCachedMethodInfo(const QMetaMethod &method, PythonQtClassInfo *classInfo)
+
int slotIndex() const
get the index of the slot (needed for qt_metacall)
+
bool shouldAllowThreads() const
+ + +
QObject * decorator() const
+
stores information about a specific signal/slot/method
+
const QList< ParameterInfo > & parameters() const
get the parameter infos
+
QList< ParameterInfo > _parameters
+
+

References PythonQtMethodInfo::getCachedMethodInfo(), PythonQtMethodInfo::parameters(), and PythonQtMethodInfo::shouldAllowThreads().

+ +
+
+

Member Function Documentation

+ +

◆ arguments()

+ +
+
+ + + + + + + +
QList<ParameterInfo> PythonQtSlotInfo::arguments () const
+
+ +

get the parameter infos for the arguments, without return type and instance decorator.

+ +
+
+ +

◆ decorator()

+ +
+
+ + + + + +
+ + + + + + + +
QObject* PythonQtSlotInfo::decorator () const
+
+inline
+
+ +

Definition at line 211 of file PythonQtMethodInfo.h.

+
211 { return _decorator; }
+
+
+ +

◆ deleteOverloadsAndThis()

+ +
+
+ + + + + + + +
void PythonQtSlotInfo::deleteOverloadsAndThis ()
+
+ +
+
+ +

◆ fullSignature()

+ +
+
+ + + + + + + + + + + + + + + + + + +
QString PythonQtSlotInfo::fullSignature (bool skipReturnValue = false,
int optionalArgsIndex = -1 
) const
+
+ +

get the full signature including return type

+ +
+
+ +

◆ getGlobalShouldAllowThreads()

+ +
+
+ + + + + +
+ + + + + + + +
static bool PythonQtSlotInfo::getGlobalShouldAllowThreads ()
+
+static
+
+ +

Returns if calling slots should release the GIL to allow Python threads while being inside of C++.

+ +
+
+ +

◆ getImplementingClassName()

+ +
+
+ + + + + + + +
QByteArray PythonQtSlotInfo::getImplementingClassName () const
+
+

Returns the class name that originally implements this method, regardless where the wrapper is located/implemented.

+ +
+
+ +

◆ invokeQtMethod()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
static void PythonQtSlotInfo::invokeQtMethod (QObject * obj,
PythonQtSlotInfoslot,
void ** argList 
)
+
+static
+
+ +

Invoke the given slot on obj, save/restore thread state if needed.

+ +
+
+ +

◆ isClassDecorator()

+ +
+
+ + + + + +
+ + + + + + + +
bool PythonQtSlotInfo::isClassDecorator () const
+
+inline
+
+ +

returns if the slot is a constructor slot

+ +

Definition at line 209 of file PythonQtMethodInfo.h.

+
209 { return _decorator!=NULL && _type == ClassDecorator; }
+
+
+
+ +

◆ isInstanceDecorator()

+ +
+
+ + + + + +
+ + + + + + + +
bool PythonQtSlotInfo::isInstanceDecorator () const
+
+inline
+
+ +

returns if the slot is a decorator slot

+ +

Definition at line 206 of file PythonQtMethodInfo.h.

+
206 { return _decorator!=NULL && _type == InstanceDecorator; }
+
+
+
+ +

◆ metaMethod()

+ +
+
+ + + + + +
+ + + + + + + +
const QMetaMethod* PythonQtSlotInfo::metaMethod () const
+
+inline
+
+ +

Definition at line 190 of file PythonQtMethodInfo.h.

+
190 { return &_meta; }
+
+
+ +

◆ nextInfo()

+ +
+
+ + + + + +
+ + + + + + + +
PythonQtSlotInfo* PythonQtSlotInfo::nextInfo () const
+
+inline
+
+ +

get next overloaded slot (which has the same name)

+ +

Definition at line 200 of file PythonQtMethodInfo.h.

+
200 { return _next; }
+
+
+ +

◆ overloads()

+ +
+
+ + + + + + + + +
QStringList PythonQtSlotInfo::overloads (bool skipReturnValue = false) const
+
+

gets a list of all overload signatures. Signatures which only differ because of default values are joined using "[]" to indicate the optional arguments.

+ +
+
+ +

◆ setGlobalShouldAllowThreads()

+ +
+
+ + + + + +
+ + + + + + + + +
static void PythonQtSlotInfo::setGlobalShouldAllowThreads (bool flag)
+
+static
+
+ +

Sets if calling slots should release the GIL to allow other Python threads while being inside of C++.

+ +
+
+ +

◆ setNextInfo()

+ +
+
+ + + + + +
+ + + + + + + + +
void PythonQtSlotInfo::setNextInfo (PythonQtSlotInfonext)
+
+inline
+
+ +

set the next overloaded slot

+ +

Definition at line 203 of file PythonQtMethodInfo.h.

+
203 { _next = next; }
+
+
+ +

◆ setUpcastingOffset()

+ +
+
+ + + + + +
+ + + + + + + + +
void PythonQtSlotInfo::setUpcastingOffset (int upcastingOffset)
+
+inline
+
+ +

Definition at line 192 of file PythonQtMethodInfo.h.

+
192 { _upcastingOffset = upcastingOffset; }
int upcastingOffset() const
+
+
+
+ +

◆ signature()

+ +
+
+ + + + + + + +
QByteArray PythonQtSlotInfo::signature () const
+
+ +

get the Qt signature of the slot

+ +
+
+ +

◆ slotIndex()

+ +
+
+ + + + + +
+ + + + + + + +
int PythonQtSlotInfo::slotIndex () const
+
+inline
+
+ +

get the index of the slot (needed for qt_metacall)

+ +

Definition at line 197 of file PythonQtMethodInfo.h.

+
197 { return _slotIndex; }
+
+
+ +

◆ slotName()

+ +
+
+ + + + + + + + +
QByteArray PythonQtSlotInfo::slotName (bool removeDecorators = false) const
+
+ +

get the short slot name

+ +
+
+ +

◆ upcastingOffset()

+ +
+
+ + + + + +
+ + + + + + + +
int PythonQtSlotInfo::upcastingOffset () const
+
+inline
+
+ +

Definition at line 194 of file PythonQtMethodInfo.h.

+
194 { return _upcastingOffset; }
+
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/classPythonQtSlotInfo.png b/classPythonQtSlotInfo.png new file mode 100644 index 0000000000000000000000000000000000000000..32abb8f19430bdcf07e4e802db05ad3b64accfc6 GIT binary patch literal 558 zcmV+}0@3}6P)vTJkN^MxkN^Mxkifve1&Q1r00008bW%=J0RR90|NsC0)yh;d0005KNklXnd5Sm35!j`#l!GduQ6zgT|uIn)IAMx9yCiB-V zwZn_*Kf~|)e;6KuzsDCsE2H&)dm}AvJk)C+X8YeP;Mo7WUwF@DO>cfFrT7WpH+lg$%9;Oq`4-^Jf8$*X@aF&f{trHYqk<3Mr{DwlDfj?>3O<0J zf)C)Q-~;$6_yE69N+~&t1mLFN2OqF!ZA;^ER^sNjTx6`CeV9!M=y}9%mpNbAIz9;Lvfn!L97&TCs5E$?RkA5{YI wCz|n}_-CH*ANerE_b>PWURpn&DW&A4FAtF#@-)bU+5i9m07*qoM6N<$f>zWQl>h($ literal 0 HcmV?d00001 diff --git a/classPythonQtStdDecorators-members.html b/classPythonQtStdDecorators-members.html new file mode 100644 index 000000000..f6a480c5b --- /dev/null +++ b/classPythonQtStdDecorators-members.html @@ -0,0 +1,92 @@ + + + + + + + +PythonQt: Member List + + + + + + +
+
+ + + + + + +
+
PythonQt +
+
+
+ + + + + + +
+
+
+
PythonQtStdDecorators Member List
+
+
+ +

This is the complete list of members for PythonQtStdDecorators, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
children(QObject *o)PythonQtStdDecoratorsslot
connect(QObject *sender, const QByteArray &signal, PyObject *callable)PythonQtStdDecoratorsslot
connect(QObject *sender, const QByteArray &signal, QObject *receiver, const QByteArray &slot, Qt::ConnectionType type=Qt::AutoConnection)PythonQtStdDecoratorsslot
connect(QObject *receiver, QObject *sender, const QByteArray &signal, const QByteArray &slot, Qt::ConnectionType type=Qt::AutoConnection)PythonQtStdDecoratorsinlineslot
disconnect(QObject *sender, const QByteArray &signal, PyObject *callable=NULL)PythonQtStdDecoratorsslot
disconnect(QObject *sender, const QByteArray &signal, QObject *receiver, const QByteArray &slot)PythonQtStdDecoratorsslot
findChild(QObject *parent, PyObject *type, const QString &name=QString())PythonQtStdDecoratorsslot
findChildren(QObject *parent, PyObject *type, const QString &name=QString())PythonQtStdDecoratorsslot
findChildren(QObject *parent, PyObject *type, const QRegExp &regExp)PythonQtStdDecoratorsslot
metaObject(QObject *obj)PythonQtStdDecoratorsslot
parent(QObject *o)PythonQtStdDecoratorsslot
property(QObject *o, const char *name)PythonQtStdDecoratorsslot
setParent(QObject *o, PythonQtNewOwnerOfThis< QObject * > parent)PythonQtStdDecoratorsslot
setProperty(QObject *o, const char *name, const QVariant &value)PythonQtStdDecoratorsslot
static_QObject_connect(QObject *sender, const QByteArray &signal, PyObject *callable)PythonQtStdDecoratorsinlineslot
static_QObject_connect(QObject *sender, const QByteArray &signal, QObject *receiver, const QByteArray &slot, Qt::ConnectionType type=Qt::AutoConnection)PythonQtStdDecoratorsinlineslot
static_QObject_disconnect(QObject *sender, const QByteArray &signal, PyObject *callable=NULL)PythonQtStdDecoratorsinlineslot
static_QObject_disconnect(QObject *sender, const QByteArray &signal, QObject *receiver, const QByteArray &slot)PythonQtStdDecoratorsinlineslot
static_Qt_qAbs(double a)PythonQtStdDecoratorsinlineslot
static_Qt_qBound(double a, double b, double c)PythonQtStdDecoratorsinlineslot
static_Qt_qCritical(const QByteArray &msg)PythonQtStdDecoratorsinlineslot
static_Qt_qDebug(const QByteArray &msg)PythonQtStdDecoratorsinlineslot
static_Qt_qFatal(const QByteArray &msg)PythonQtStdDecoratorsinlineslot
static_Qt_qFuzzyCompare(double a, double b)PythonQtStdDecoratorsinlineslot
static_Qt_qMax(double a, double b)PythonQtStdDecoratorsinlineslot
static_Qt_qMin(double a, double b)PythonQtStdDecoratorsinlineslot
static_Qt_qrand()PythonQtStdDecoratorsinlineslot
static_Qt_qRound(double a)PythonQtStdDecoratorsinlineslot
static_Qt_qRound64(double a)PythonQtStdDecoratorsinlineslot
static_Qt_qsrand(uint a)PythonQtStdDecoratorsinlineslot
static_Qt_qVersion()PythonQtStdDecoratorsinlineslot
static_Qt_qWarning(const QByteArray &msg)PythonQtStdDecoratorsinlineslot
static_Qt_SIGNAL(const QString &s)PythonQtStdDecoratorsinlineslot
static_Qt_SLOT(const QString &s)PythonQtStdDecoratorsinlineslot
static_QTimer_singleShot(int msec, PyObject *callable)PythonQtStdDecoratorsslot
tr(QObject *obj, const QString &text, const QString &ambig=QString(), int n=-1)PythonQtStdDecoratorsslot
+ + + + diff --git a/classPythonQtStdDecorators.html b/classPythonQtStdDecorators.html new file mode 100644 index 000000000..2fc77206b --- /dev/null +++ b/classPythonQtStdDecorators.html @@ -0,0 +1,1486 @@ + + + + + + + +PythonQt: PythonQtStdDecorators Class Reference + + + + + + +
+
+ + + + + + +
+
PythonQt +
+
+
+ + + + + + +
+
+ +
+
PythonQtStdDecorators Class Reference
+
+
+ +

#include <PythonQtStdDecorators.h>

+
+Inheritance diagram for PythonQtStdDecorators:
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Slots

bool connect (QObject *sender, const QByteArray &signal, PyObject *callable)
 
bool connect (QObject *sender, const QByteArray &signal, QObject *receiver, const QByteArray &slot, Qt::ConnectionType type=Qt::AutoConnection)
 
bool connect (QObject *receiver, QObject *sender, const QByteArray &signal, const QByteArray &slot, Qt::ConnectionType type=Qt::AutoConnection)
 
bool static_QObject_connect (QObject *sender, const QByteArray &signal, PyObject *callable)
 
bool static_QObject_connect (QObject *sender, const QByteArray &signal, QObject *receiver, const QByteArray &slot, Qt::ConnectionType type=Qt::AutoConnection)
 
bool disconnect (QObject *sender, const QByteArray &signal, PyObject *callable=NULL)
 
bool disconnect (QObject *sender, const QByteArray &signal, QObject *receiver, const QByteArray &slot)
 
bool static_QObject_disconnect (QObject *sender, const QByteArray &signal, PyObject *callable=NULL)
 
bool static_QObject_disconnect (QObject *sender, const QByteArray &signal, QObject *receiver, const QByteArray &slot)
 
const QMetaObject * metaObject (QObject *obj)
 
QObject * parent (QObject *o)
 
void setParent (QObject *o, PythonQtNewOwnerOfThis< QObject * > parent)
 
const QObjectList * children (QObject *o)
 
QObject * findChild (QObject *parent, PyObject *type, const QString &name=QString())
 
QList< QObject * > findChildren (QObject *parent, PyObject *type, const QString &name=QString())
 
QList< QObject * > findChildren (QObject *parent, PyObject *type, const QRegExp &regExp)
 
bool setProperty (QObject *o, const char *name, const QVariant &value)
 
QVariant property (QObject *o, const char *name)
 
double static_Qt_qAbs (double a)
 
double static_Qt_qBound (double a, double b, double c)
 
void static_Qt_qDebug (const QByteArray &msg)
 
void static_Qt_qWarning (const QByteArray &msg)
 
void static_Qt_qCritical (const QByteArray &msg)
 
void static_Qt_qFatal (const QByteArray &msg)
 
bool static_Qt_qFuzzyCompare (double a, double b)
 
double static_Qt_qMax (double a, double b)
 
double static_Qt_qMin (double a, double b)
 
int static_Qt_qRound (double a)
 
qint64 static_Qt_qRound64 (double a)
 
const char * static_Qt_qVersion ()
 
int static_Qt_qrand ()
 
void static_Qt_qsrand (uint a)
 
QString tr (QObject *obj, const QString &text, const QString &ambig=QString(), int n=-1)
 
QString static_Qt_SIGNAL (const QString &s)
 
QString static_Qt_SLOT (const QString &s)
 
void static_QTimer_singleShot (int msec, PyObject *callable)
 
+

Detailed Description

+
+

Definition at line 62 of file PythonQtStdDecorators.h.

+

Member Function Documentation

+ +

◆ children

+ +
+
+ + + + + +
+ + + + + + + + +
const QObjectList* PythonQtStdDecorators::children (QObject * o)
+
+slot
+
+ +
+
+ +

◆ connect [1/3]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
bool PythonQtStdDecorators::connect (QObject * sender,
const QByteArray & signal,
PyObjectcallable 
)
+
+slot
+
+ +
+
+ +

◆ connect [2/3]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool PythonQtStdDecorators::connect (QObject * sender,
const QByteArray & signal,
QObject * receiver,
const QByteArray & slot,
Qt::ConnectionType type = Qt::AutoConnection 
)
+
+slot
+
+ +
+
+ +

◆ connect [3/3]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool PythonQtStdDecorators::connect (QObject * receiver,
QObject * sender,
const QByteArray & signal,
const QByteArray & slot,
Qt::ConnectionType type = Qt::AutoConnection 
)
+
+inlineslot
+
+ +

Definition at line 69 of file PythonQtStdDecorators.h.

+
69 { return connect(sender, signal, receiver, slot, type); }
bool connect(QObject *sender, const QByteArray &signal, PyObject *callable)
+
+

References connect().

+ +

Referenced by connect().

+ +
+
+ +

◆ disconnect [1/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
bool PythonQtStdDecorators::disconnect (QObject * sender,
const QByteArray & signal,
PyObjectcallable = NULL 
)
+
+slot
+
+ +
+
+ +

◆ disconnect [2/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool PythonQtStdDecorators::disconnect (QObject * sender,
const QByteArray & signal,
QObject * receiver,
const QByteArray & slot 
)
+
+slot
+
+ +
+
+ +

◆ findChild

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
QObject* PythonQtStdDecorators::findChild (QObject * parent,
PyObjecttype,
const QString & name = QString() 
)
+
+slot
+
+ +
+
+ +

◆ findChildren [1/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
QList<QObject*> PythonQtStdDecorators::findChildren (QObject * parent,
PyObjecttype,
const QString & name = QString() 
)
+
+slot
+
+ +
+
+ +

◆ findChildren [2/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
QList<QObject*> PythonQtStdDecorators::findChildren (QObject * parent,
PyObjecttype,
const QRegExp & regExp 
)
+
+slot
+
+ +
+
+ +

◆ metaObject

+ +
+
+ + + + + +
+ + + + + + + + +
const QMetaObject* PythonQtStdDecorators::metaObject (QObject * obj)
+
+slot
+
+ +
+
+ +

◆ parent

+ +
+
+ + + + + +
+ + + + + + + + +
QObject* PythonQtStdDecorators::parent (QObject * o)
+
+slot
+
+ +
+
+ +

◆ property

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
QVariant PythonQtStdDecorators::property (QObject * o,
const char * name 
)
+
+slot
+
+ +
+
+ +

◆ setParent

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void PythonQtStdDecorators::setParent (QObject * o,
PythonQtNewOwnerOfThis< QObject * > parent 
)
+
+slot
+
+ +
+
+ +

◆ setProperty

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
bool PythonQtStdDecorators::setProperty (QObject * o,
const char * name,
const QVariant & value 
)
+
+slot
+
+ +
+
+ +

◆ static_QObject_connect [1/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
bool PythonQtStdDecorators::static_QObject_connect (QObject * sender,
const QByteArray & signal,
PyObjectcallable 
)
+
+inlineslot
+
+ +

Definition at line 70 of file PythonQtStdDecorators.h.

+
70 { return connect(sender, signal, callable); }
bool connect(QObject *sender, const QByteArray &signal, PyObject *callable)
+
+
+
+ +

◆ static_QObject_connect [2/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool PythonQtStdDecorators::static_QObject_connect (QObject * sender,
const QByteArray & signal,
QObject * receiver,
const QByteArray & slot,
Qt::ConnectionType type = Qt::AutoConnection 
)
+
+inlineslot
+
+ +

Definition at line 71 of file PythonQtStdDecorators.h.

+
71 { return connect(sender, signal, receiver, slot, type); }
bool connect(QObject *sender, const QByteArray &signal, PyObject *callable)
+
+
+
+ +

◆ static_QObject_disconnect [1/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
bool PythonQtStdDecorators::static_QObject_disconnect (QObject * sender,
const QByteArray & signal,
PyObjectcallable = NULL 
)
+
+inlineslot
+
+ +

Definition at line 74 of file PythonQtStdDecorators.h.

+
74 { return disconnect(sender, signal, callable); }
bool disconnect(QObject *sender, const QByteArray &signal, PyObject *callable=NULL)
+
+
+
+ +

◆ static_QObject_disconnect [2/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool PythonQtStdDecorators::static_QObject_disconnect (QObject * sender,
const QByteArray & signal,
QObject * receiver,
const QByteArray & slot 
)
+
+inlineslot
+
+ +

Definition at line 75 of file PythonQtStdDecorators.h.

+
75 { return disconnect(sender, signal, receiver, slot); }
bool disconnect(QObject *sender, const QByteArray &signal, PyObject *callable=NULL)
+
+
+
+ +

◆ static_Qt_qAbs

+ +
+
+ + + + + +
+ + + + + + + + +
double PythonQtStdDecorators::static_Qt_qAbs (double a)
+
+inlineslot
+
+ +

Definition at line 90 of file PythonQtStdDecorators.h.

+
90 { return qAbs(a); }
+
+
+ +

◆ static_Qt_qBound

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
double PythonQtStdDecorators::static_Qt_qBound (double a,
double b,
double c 
)
+
+inlineslot
+
+ +

Definition at line 91 of file PythonQtStdDecorators.h.

+
91 { return qBound(a,b,c); }
+
+
+ +

◆ static_Qt_qCritical

+ +
+
+ + + + + +
+ + + + + + + + +
void PythonQtStdDecorators::static_Qt_qCritical (const QByteArray & msg)
+
+inlineslot
+
+ +

Definition at line 96 of file PythonQtStdDecorators.h.

+
96 { qCritical("%s", msg.constData()); }
+
+
+ +

◆ static_Qt_qDebug

+ +
+
+ + + + + +
+ + + + + + + + +
void PythonQtStdDecorators::static_Qt_qDebug (const QByteArray & msg)
+
+inlineslot
+
+ +

Definition at line 92 of file PythonQtStdDecorators.h.

+
92 { qDebug("%s", msg.constData()); }
+
+
+ +

◆ static_Qt_qFatal

+ +
+
+ + + + + +
+ + + + + + + + +
void PythonQtStdDecorators::static_Qt_qFatal (const QByteArray & msg)
+
+inlineslot
+
+ +

Definition at line 98 of file PythonQtStdDecorators.h.

+
98 { qFatal("%s", msg.constData()); }
+
+
+ +

◆ static_Qt_qFuzzyCompare

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool PythonQtStdDecorators::static_Qt_qFuzzyCompare (double a,
double b 
)
+
+inlineslot
+
+ +

Definition at line 100 of file PythonQtStdDecorators.h.

+
100 { return qFuzzyCompare(a, b); }
+
+
+ +

◆ static_Qt_qMax

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
double PythonQtStdDecorators::static_Qt_qMax (double a,
double b 
)
+
+inlineslot
+
+ +

Definition at line 101 of file PythonQtStdDecorators.h.

+
101 { return qMax(a, b); }
+
+
+ +

◆ static_Qt_qMin

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
double PythonQtStdDecorators::static_Qt_qMin (double a,
double b 
)
+
+inlineslot
+
+ +

Definition at line 102 of file PythonQtStdDecorators.h.

+
102 { return qMin(a, b); }
+
+
+ +

◆ static_Qt_qrand

+ +
+
+ + + + + +
+ + + + + + + +
int PythonQtStdDecorators::static_Qt_qrand ()
+
+inlineslot
+
+ +

Definition at line 106 of file PythonQtStdDecorators.h.

+
106 { return qrand(); }
+
+
+ +

◆ static_Qt_qRound

+ +
+
+ + + + + +
+ + + + + + + + +
int PythonQtStdDecorators::static_Qt_qRound (double a)
+
+inlineslot
+
+ +

Definition at line 103 of file PythonQtStdDecorators.h.

+
103 { return qRound(a); }
+
+
+ +

◆ static_Qt_qRound64

+ +
+
+ + + + + +
+ + + + + + + + +
qint64 PythonQtStdDecorators::static_Qt_qRound64 (double a)
+
+inlineslot
+
+ +

Definition at line 104 of file PythonQtStdDecorators.h.

+
104 { return qRound64(a); }
+
+
+ +

◆ static_Qt_qsrand

+ +
+
+ + + + + +
+ + + + + + + + +
void PythonQtStdDecorators::static_Qt_qsrand (uint a)
+
+inlineslot
+
+ +

Definition at line 107 of file PythonQtStdDecorators.h.

+
107 { qsrand(a); }
+
+
+ +

◆ static_Qt_qVersion

+ +
+
+ + + + + +
+ + + + + + + +
const char* PythonQtStdDecorators::static_Qt_qVersion ()
+
+inlineslot
+
+ +

Definition at line 105 of file PythonQtStdDecorators.h.

+
105 { return qVersion(); }
+
+
+ +

◆ static_Qt_qWarning

+ +
+
+ + + + + +
+ + + + + + + + +
void PythonQtStdDecorators::static_Qt_qWarning (const QByteArray & msg)
+
+inlineslot
+
+ +

Definition at line 94 of file PythonQtStdDecorators.h.

+
94 { qWarning("%s", msg.constData()); }
+
+
+ +

◆ static_Qt_SIGNAL

+ +
+
+ + + + + +
+ + + + + + + + +
QString PythonQtStdDecorators::static_Qt_SIGNAL (const QString & s)
+
+inlineslot
+
+ +

Definition at line 111 of file PythonQtStdDecorators.h.

+
111 { return QString("2") + s; }
+
+
+ +

◆ static_Qt_SLOT

+ +
+
+ + + + + +
+ + + + + + + + +
QString PythonQtStdDecorators::static_Qt_SLOT (const QString & s)
+
+inlineslot
+
+ +

Definition at line 112 of file PythonQtStdDecorators.h.

+
112 { return QString("1") + s; }
+
+
+ +

◆ static_QTimer_singleShot

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void PythonQtStdDecorators::static_QTimer_singleShot (int msec,
PyObjectcallable 
)
+
+slot
+
+ +
+
+ +

◆ tr

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
QString PythonQtStdDecorators::tr (QObject * obj,
const QString & text,
const QString & ambig = QString(),
int n = -1 
)
+
+slot
+
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/classPythonQtStdDecorators.png b/classPythonQtStdDecorators.png new file mode 100644 index 0000000000000000000000000000000000000000..95e4515ae5b5c5e08f0569e5ce4a354c5518bd63 GIT binary patch literal 576 zcmeAS@N?(olHy`uVBq!ia0vp^6M;B@gBeKbZAu4{3=#o8A+G=b{|7Q(y!l$%e`o@b z1;z&s9ANFdBM;tO8`p0*t z{b$*8S1T(pb)_)J!gEIsJ`pwEy!L=frt%?=Ni`rGXS{3rksI2}C$-)Gzj%Mj6`5Cw zqEBtzbmeQ`Ph8Dznf-m)v!F@y9vdw#nRfh`+oXBVcggtn-1~Ly)?I(M%#Hi+zSviA z&9bP=e^QLz>aG3j7VqJn+NGsA`)ZWb)FsPzR-E6baAUi4tf2P3zmuK_yG?qsdFjNN zH~ko54)G>vZ!_L?w=DS9xfkIX#!LV9EV{<g((k*jl`D5*?M(^uR{1tj6!kTcfD9l)Dxo+<)-`C}C@6N^A+i$kXQd|#GsDYfduiHjMZuFW%! zx*D~=@7V8i_s)M=tJ|9;bo-FC`d*GF*=w)8s@t++>mC28)_v=~zv0h+l)l)%KGe@m o{{NYy+vUOj-ezKCe7jR#*Dpf( + + + + + + +PythonQt: Member List + + + + + + +
+
+ + + + + + +
+
PythonQt +
+
+
+ + + + + + +
+
+
+
PythonQtThreadStateSaver Member List
+
+
+ +

This is the complete list of members for PythonQtThreadStateSaver, including all inherited members.

+ + + + + +
PythonQtThreadStateSaver()PythonQtThreadStateSaverinline
restore()PythonQtThreadStateSaverinline
save()PythonQtThreadStateSaverinline
~PythonQtThreadStateSaver()PythonQtThreadStateSaverinline
+ + + + diff --git a/classPythonQtThreadStateSaver.html b/classPythonQtThreadStateSaver.html new file mode 100644 index 000000000..ca31e369f --- /dev/null +++ b/classPythonQtThreadStateSaver.html @@ -0,0 +1,197 @@ + + + + + + + +PythonQt: PythonQtThreadStateSaver Class Reference + + + + + + +
+
+ + + + + + +
+
PythonQt +
+
+
+ + + + + + +
+
+ +
+
PythonQtThreadStateSaver Class Reference
+
+
+ +

#include <PythonQtThreadSupport.h>

+ + + + + + + + + + +

+Public Member Functions

 PythonQtThreadStateSaver ()
 
 ~PythonQtThreadStateSaver ()
 
void save ()
 
void restore ()
 
+

Detailed Description

+

This class wraps the Python save/restore thread state API. It can be used to allow other Python threads to run when entering C++ code from Python code.

+ +

Definition at line 104 of file PythonQtThreadSupport.h.

+

Constructor & Destructor Documentation

+ +

◆ PythonQtThreadStateSaver()

+ +
+
+ + + + + +
+ + + + + + + +
PythonQtThreadStateSaver::PythonQtThreadStateSaver ()
+
+inline
+
+ +

Definition at line 107 of file PythonQtThreadSupport.h.

+
107  {
108  save();
109  }
+
+

References save().

+ +
+
+ +

◆ ~PythonQtThreadStateSaver()

+ +
+
+ + + + + +
+ + + + + + + +
PythonQtThreadStateSaver::~PythonQtThreadStateSaver ()
+
+inline
+
+ +

Definition at line 111 of file PythonQtThreadSupport.h.

+
111  {
112  restore();
113  }
+
+

References restore().

+ +
+
+

Member Function Documentation

+ +

◆ restore()

+ +
+
+ + + + + +
+ + + + + + + +
void PythonQtThreadStateSaver::restore ()
+
+inline
+
+ +

Definition at line 119 of file PythonQtThreadSupport.h.

+
119  {
120  if (_state) {
121  PyEval_RestoreThread(_state);
122  _state = NULL;
123  }
124  }
+

Referenced by ~PythonQtThreadStateSaver().

+ +
+
+ +

◆ save()

+ +
+
+ + + + + +
+ + + + + + + +
void PythonQtThreadStateSaver::save ()
+
+inline
+
+ +

Definition at line 115 of file PythonQtThreadSupport.h.

+
115  {
116  _state = PyEval_SaveThread();
117  }
+

Referenced by PythonQtThreadStateSaver().

+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/classPythonQtWrapper__QMetaObject-members.html b/classPythonQtWrapper__QMetaObject-members.html new file mode 100644 index 000000000..c724cfdd1 --- /dev/null +++ b/classPythonQtWrapper__QMetaObject-members.html @@ -0,0 +1,83 @@ + + + + + + + +PythonQt: Member List + + + + + + +
+
+ + + + + + +
+
PythonQt +
+
+
+ + + + + + +
+
+
+
PythonQtWrapper_QMetaObject Member List
+
+
+ +

This is the complete list of members for PythonQtWrapper_QMetaObject, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
classInfo(QMetaObject *obj, int index) constPythonQtWrapper_QMetaObjectinlineslot
classInfoCount(QMetaObject *obj) constPythonQtWrapper_QMetaObjectinlineslot
classInfoOffset(QMetaObject *obj) constPythonQtWrapper_QMetaObjectinlineslot
constructor(QMetaObject *obj, int index) constPythonQtWrapper_QMetaObjectinlineslot
constructorCount(QMetaObject *obj) constPythonQtWrapper_QMetaObjectinlineslot
enumerator(QMetaObject *obj, int index) constPythonQtWrapper_QMetaObjectinlineslot
enumeratorCount(QMetaObject *obj) constPythonQtWrapper_QMetaObjectinlineslot
enumeratorOffset(QMetaObject *obj) constPythonQtWrapper_QMetaObjectinlineslot
getClassName(QMetaObject *obj) constPythonQtWrapper_QMetaObjectinlineslot
indexOfClassInfo(QMetaObject *obj, const char *name) constPythonQtWrapper_QMetaObjectinlineslot
indexOfConstructor(QMetaObject *obj, const char *constructor) constPythonQtWrapper_QMetaObjectinlineslot
indexOfEnumerator(QMetaObject *obj, const char *name) constPythonQtWrapper_QMetaObjectinlineslot
indexOfMethod(QMetaObject *obj, const char *method) constPythonQtWrapper_QMetaObjectinlineslot
indexOfProperty(QMetaObject *obj, const char *name) constPythonQtWrapper_QMetaObjectinlineslot
indexOfSignal(QMetaObject *obj, const char *signal) constPythonQtWrapper_QMetaObjectinlineslot
indexOfSlot(QMetaObject *obj, const char *slot) constPythonQtWrapper_QMetaObjectinlineslot
method(QMetaObject *obj, int index) constPythonQtWrapper_QMetaObjectinlineslot
methodCount(QMetaObject *obj) constPythonQtWrapper_QMetaObjectinlineslot
methodOffset(QMetaObject *obj) constPythonQtWrapper_QMetaObjectinlineslot
property(QMetaObject *obj, int index) constPythonQtWrapper_QMetaObjectinlineslot
propertyCount(QMetaObject *obj) constPythonQtWrapper_QMetaObjectinlineslot
propertyOffset(QMetaObject *obj) constPythonQtWrapper_QMetaObjectinlineslot
static_QMetaObject_checkConnectArgs(const char *signal, const char *method)PythonQtWrapper_QMetaObjectinlineslot
static_QMetaObject_normalizedSignature(const char *method)PythonQtWrapper_QMetaObjectinlineslot
static_QMetaObject_normalizedType(const char *type)PythonQtWrapper_QMetaObjectinlineslot
superClass(QMetaObject *obj) constPythonQtWrapper_QMetaObjectinlineslot
userProperty(QMetaObject *obj) constPythonQtWrapper_QMetaObjectinlineslot
+ + + + diff --git a/classPythonQtWrapper__QMetaObject.html b/classPythonQtWrapper__QMetaObject.html new file mode 100644 index 000000000..ef56e0568 --- /dev/null +++ b/classPythonQtWrapper__QMetaObject.html @@ -0,0 +1,1031 @@ + + + + + + + +PythonQt: PythonQtWrapper_QMetaObject Class Reference + + + + + + +
+
+ + + + + + +
+
PythonQt +
+
+
+ + + + + + +
+
+ +
+
PythonQtWrapper_QMetaObject Class Reference
+
+
+ +

#include <PythonQtStdDecorators.h>

+
+Inheritance diagram for PythonQtWrapper_QMetaObject:
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Slots

const char * getClassName (QMetaObject *obj) const
 
const QMetaObject * superClass (QMetaObject *obj) const
 
int methodOffset (QMetaObject *obj) const
 
int enumeratorOffset (QMetaObject *obj) const
 
int propertyOffset (QMetaObject *obj) const
 
int classInfoOffset (QMetaObject *obj) const
 
int constructorCount (QMetaObject *obj) const
 
int methodCount (QMetaObject *obj) const
 
int enumeratorCount (QMetaObject *obj) const
 
int propertyCount (QMetaObject *obj) const
 
int classInfoCount (QMetaObject *obj) const
 
int indexOfConstructor (QMetaObject *obj, const char *constructor) const
 
int indexOfMethod (QMetaObject *obj, const char *method) const
 
int indexOfSignal (QMetaObject *obj, const char *signal) const
 
int indexOfSlot (QMetaObject *obj, const char *slot) const
 
int indexOfEnumerator (QMetaObject *obj, const char *name) const
 
int indexOfProperty (QMetaObject *obj, const char *name) const
 
int indexOfClassInfo (QMetaObject *obj, const char *name) const
 
QMetaMethod constructor (QMetaObject *obj, int index) const
 
QMetaMethod method (QMetaObject *obj, int index) const
 
QMetaEnum enumerator (QMetaObject *obj, int index) const
 
QMetaProperty property (QMetaObject *obj, int index) const
 
QMetaClassInfo classInfo (QMetaObject *obj, int index) const
 
QMetaProperty userProperty (QMetaObject *obj) const
 
bool static_QMetaObject_checkConnectArgs (const char *signal, const char *method)
 
QByteArray static_QMetaObject_normalizedSignature (const char *method)
 
QByteArray static_QMetaObject_normalizedType (const char *type)
 
+

Detailed Description

+
+

Definition at line 135 of file PythonQtStdDecorators.h.

+

Member Function Documentation

+ +

◆ classInfo

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
QMetaClassInfo PythonQtWrapper_QMetaObject::classInfo (QMetaObject * obj,
int index 
) const
+
+inlineslot
+
+ +

Definition at line 167 of file PythonQtStdDecorators.h.

+
167 { return obj->classInfo(index); }
+
+
+ +

◆ classInfoCount

+ +
+
+ + + + + +
+ + + + + + + + +
int PythonQtWrapper_QMetaObject::classInfoCount (QMetaObject * obj) const
+
+inlineslot
+
+ +

Definition at line 153 of file PythonQtStdDecorators.h.

+
153 { return obj->classInfoCount(); }
+
+
+ +

◆ classInfoOffset

+ +
+
+ + + + + +
+ + + + + + + + +
int PythonQtWrapper_QMetaObject::classInfoOffset (QMetaObject * obj) const
+
+inlineslot
+
+ +

Definition at line 147 of file PythonQtStdDecorators.h.

+
147 { return obj->classInfoOffset(); }
+
+
+ +

◆ constructor

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
QMetaMethod PythonQtWrapper_QMetaObject::constructor (QMetaObject * obj,
int index 
) const
+
+inlineslot
+
+ +

Definition at line 163 of file PythonQtStdDecorators.h.

+
163 { return obj->constructor(index); }
+

Referenced by indexOfConstructor().

+ +
+
+ +

◆ constructorCount

+ +
+
+ + + + + +
+ + + + + + + + +
int PythonQtWrapper_QMetaObject::constructorCount (QMetaObject * obj) const
+
+inlineslot
+
+ +

Definition at line 149 of file PythonQtStdDecorators.h.

+
149 { return obj->constructorCount(); }
+
+
+ +

◆ enumerator

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
QMetaEnum PythonQtWrapper_QMetaObject::enumerator (QMetaObject * obj,
int index 
) const
+
+inlineslot
+
+ +

Definition at line 165 of file PythonQtStdDecorators.h.

+
165 { return obj->enumerator(index); }
+
+
+ +

◆ enumeratorCount

+ +
+
+ + + + + +
+ + + + + + + + +
int PythonQtWrapper_QMetaObject::enumeratorCount (QMetaObject * obj) const
+
+inlineslot
+
+ +

Definition at line 151 of file PythonQtStdDecorators.h.

+
151 { return obj->enumeratorCount(); }
+
+
+ +

◆ enumeratorOffset

+ +
+
+ + + + + +
+ + + + + + + + +
int PythonQtWrapper_QMetaObject::enumeratorOffset (QMetaObject * obj) const
+
+inlineslot
+
+ +

Definition at line 145 of file PythonQtStdDecorators.h.

+
145 { return obj->enumeratorOffset(); }
+
+
+ +

◆ getClassName

+ +
+
+ + + + + +
+ + + + + + + + +
const char* PythonQtWrapper_QMetaObject::getClassName (QMetaObject * obj) const
+
+inlineslot
+
+ +

Definition at line 141 of file PythonQtStdDecorators.h.

+
141 { return obj->className(); }
+
+
+ +

◆ indexOfClassInfo

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
int PythonQtWrapper_QMetaObject::indexOfClassInfo (QMetaObject * obj,
const char * name 
) const
+
+inlineslot
+
+ +

Definition at line 161 of file PythonQtStdDecorators.h.

+
161 { return obj->indexOfClassInfo(name); }
+
+
+ +

◆ indexOfConstructor

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
int PythonQtWrapper_QMetaObject::indexOfConstructor (QMetaObject * obj,
const char * constructor 
) const
+
+inlineslot
+
+ +

Definition at line 155 of file PythonQtStdDecorators.h.

+
155 { return obj->indexOfConstructor(constructor); }
QMetaMethod constructor(QMetaObject *obj, int index) const
+
+

References constructor().

+ +
+
+ +

◆ indexOfEnumerator

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
int PythonQtWrapper_QMetaObject::indexOfEnumerator (QMetaObject * obj,
const char * name 
) const
+
+inlineslot
+
+ +

Definition at line 159 of file PythonQtStdDecorators.h.

+
159 { return obj->indexOfEnumerator(name); }
+
+
+ +

◆ indexOfMethod

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
int PythonQtWrapper_QMetaObject::indexOfMethod (QMetaObject * obj,
const char * method 
) const
+
+inlineslot
+
+ +

Definition at line 156 of file PythonQtStdDecorators.h.

+
156 { return obj->indexOfMethod(method); }
QMetaMethod method(QMetaObject *obj, int index) const
+
+

References method().

+ +
+
+ +

◆ indexOfProperty

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
int PythonQtWrapper_QMetaObject::indexOfProperty (QMetaObject * obj,
const char * name 
) const
+
+inlineslot
+
+ +

Definition at line 160 of file PythonQtStdDecorators.h.

+
160 { return obj->indexOfProperty(name); }
+
+
+ +

◆ indexOfSignal

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
int PythonQtWrapper_QMetaObject::indexOfSignal (QMetaObject * obj,
const char * signal 
) const
+
+inlineslot
+
+ +

Definition at line 157 of file PythonQtStdDecorators.h.

+
157 { return obj->indexOfSignal(signal); }
+
+
+ +

◆ indexOfSlot

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
int PythonQtWrapper_QMetaObject::indexOfSlot (QMetaObject * obj,
const char * slot 
) const
+
+inlineslot
+
+ +

Definition at line 158 of file PythonQtStdDecorators.h.

+
158 { return obj->indexOfSlot(slot); }
+
+
+ +

◆ method

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
QMetaMethod PythonQtWrapper_QMetaObject::method (QMetaObject * obj,
int index 
) const
+
+inlineslot
+
+ +

Definition at line 164 of file PythonQtStdDecorators.h.

+
164 { return obj->method(index); }
+

Referenced by indexOfMethod(), static_QMetaObject_checkConnectArgs(), and static_QMetaObject_normalizedSignature().

+ +
+
+ +

◆ methodCount

+ +
+
+ + + + + +
+ + + + + + + + +
int PythonQtWrapper_QMetaObject::methodCount (QMetaObject * obj) const
+
+inlineslot
+
+ +

Definition at line 150 of file PythonQtStdDecorators.h.

+
150 { return obj->methodCount(); }
+
+
+ +

◆ methodOffset

+ +
+
+ + + + + +
+ + + + + + + + +
int PythonQtWrapper_QMetaObject::methodOffset (QMetaObject * obj) const
+
+inlineslot
+
+ +

Definition at line 144 of file PythonQtStdDecorators.h.

+
144 { return obj->methodOffset(); }
+
+
+ +

◆ property

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
QMetaProperty PythonQtWrapper_QMetaObject::property (QMetaObject * obj,
int index 
) const
+
+inlineslot
+
+ +

Definition at line 166 of file PythonQtStdDecorators.h.

+
166 { return obj->property(index); }
+
+
+ +

◆ propertyCount

+ +
+
+ + + + + +
+ + + + + + + + +
int PythonQtWrapper_QMetaObject::propertyCount (QMetaObject * obj) const
+
+inlineslot
+
+ +

Definition at line 152 of file PythonQtStdDecorators.h.

+
152 { return obj->propertyCount(); }
+
+
+ +

◆ propertyOffset

+ +
+
+ + + + + +
+ + + + + + + + +
int PythonQtWrapper_QMetaObject::propertyOffset (QMetaObject * obj) const
+
+inlineslot
+
+ +

Definition at line 146 of file PythonQtStdDecorators.h.

+
146 { return obj->propertyOffset(); }
+
+
+ +

◆ static_QMetaObject_checkConnectArgs

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool PythonQtWrapper_QMetaObject::static_QMetaObject_checkConnectArgs (const char * signal,
const char * method 
)
+
+inlineslot
+
+ +

Definition at line 170 of file PythonQtStdDecorators.h.

+
170 { return QMetaObject::checkConnectArgs(signal, method); }
QMetaMethod method(QMetaObject *obj, int index) const
+
+

References method().

+ +
+
+ +

◆ static_QMetaObject_normalizedSignature

+ +
+
+ + + + + +
+ + + + + + + + +
QByteArray PythonQtWrapper_QMetaObject::static_QMetaObject_normalizedSignature (const char * method)
+
+inlineslot
+
+ +

Definition at line 171 of file PythonQtStdDecorators.h.

+
171 { return QMetaObject::normalizedSignature(method); }
QMetaMethod method(QMetaObject *obj, int index) const
+
+

References method().

+ +
+
+ +

◆ static_QMetaObject_normalizedType

+ +
+
+ + + + + +
+ + + + + + + + +
QByteArray PythonQtWrapper_QMetaObject::static_QMetaObject_normalizedType (const char * type)
+
+inlineslot
+
+ +

Definition at line 172 of file PythonQtStdDecorators.h.

+
172 { return QMetaObject::normalizedType(type); }
+
+
+ +

◆ superClass

+ +
+
+ + + + + +
+ + + + + + + + +
const QMetaObject* PythonQtWrapper_QMetaObject::superClass (QMetaObject * obj) const
+
+inlineslot
+
+ +

Definition at line 142 of file PythonQtStdDecorators.h.

+
142 { return obj->superClass(); }
+
+
+ +

◆ userProperty

+ +
+
+ + + + + +
+ + + + + + + + +
QMetaProperty PythonQtWrapper_QMetaObject::userProperty (QMetaObject * obj) const
+
+inlineslot
+
+ +

Definition at line 168 of file PythonQtStdDecorators.h.

+
168 { return obj->userProperty(); }
+
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/classPythonQtWrapper__QMetaObject.png b/classPythonQtWrapper__QMetaObject.png new file mode 100644 index 0000000000000000000000000000000000000000..c7b80f0b0405842e0819d7b5c3abffc25f273acc GIT binary patch literal 687 zcmeAS@N?(olHy`uVBq!ia0vp^hk-bNgBeIp4mK8T=C6Up^EUFZ%^Pfvm>WdIGyPzZWIj+s z0$yJP@*Q(T)G-Ewco3eLX#e2m4-UN>mE8&r*QZ)?o;JBaNhu zSpMI1_?5+T*i7qkQl0v>-|v*_AFhwl>YL7b;mJYq`0Jt9H_m@+n=7=bo`@-5{9~ewY09Jn_OEH_3Iou6sXU7^U#q>Zj$$PCnhGDI9NeE=+%QEUTs>5_UK_k1fQe!adTbRfux mt>GsK-&)82d`@)Ke+Do1@}}mg!P|kUi^0>?&t;ucLK6U~ctqI% literal 0 HcmV?d00001 diff --git a/classes.html b/classes.html new file mode 100644 index 000000000..82c381feb --- /dev/null +++ b/classes.html @@ -0,0 +1,89 @@ + + + + + + + +PythonQt: Class Index + + + + + + +
+
+ + + + + + +
+
PythonQt +
+
+
+ + + + + + +
+
+
+
Class Index
+
+
+
_ | a | b | c | d | f | g | i | m | n | o | p | q | s | t | w
+ + + + + + + + + + + + + + + + + +
  _  
+
  d  
+
PythonQtInstanceWrapperStruct   PythonQtClassInfo::ParentClassInfo   PythonQtSignalReceiverBase   
  m  
+
PythonQt   PythonQtSignalTarget   
_PythonQtImporter   PythonQtDebugAPI   PythonQtPassOwnershipToCPP   PythonQtSingleShotTimer   
  a  
+
PythonQtDynamicClassInfo   PythonQtImport::ModuleInfo   PythonQtPassOwnershipToPython   PythonQtSlotDecorator   
PythonQtDynamicSignalInfo   PythonQtMemberInfo   PythonQtPrivate   PythonQtSlotFunctionObject   
PythonQtArgumentFrame   
  f  
+
PythonQtMethodInfo   PythonQtProperty   PythonQtSlotInfo   
  b  
+
  n  
+
PythonQtPropertyData   PythonQtStdDecorators   
PythonQtForeignWrapperFactory   
  q  
+
PythonQtStdInRedirect   
PythonQtBoolResultObject   
  g  
+
PythonQtNewOwnerOfThis   PythonQtStdOutRedirect   
  c  
+
  o  
+
PythonQtQFileImporter   
  t  
+
PythonQtGILScope   
  s  
+
PythonQtClassInfo   
  i  
+
PythonQtObjectPtr   PythonQtThreadStateSaver   
PythonQtClassWrapper   
  p  
+
PythonQtSafeObjectPtr   
  w  
+
PythonQtConv   PythonQtImport   PythonQtSignalFunctionObject   
PythonQtCppWrapperFactory   PythonQtImportFileInterface   PythonQtMethodInfo::ParameterInfo   PythonQtSignalReceiver   PythonQtWrapper_QMetaObject   
+
_ | a | b | c | d | f | g | i | m | n | o | p | q | s | t | w
+
+ + + + diff --git a/closed.png b/closed.png new file mode 100644 index 0000000000000000000000000000000000000000..98cc2c909da37a6df914fbf67780eebd99c597f5 GIT binary patch literal 132 zcmeAS@N?(olHy`uVBq!ia0vp^oFL4>1|%O$WD@{V-kvUwAr*{o@8{^CZMh(5KoB^r_<4^zF@3)Cp&&t3hdujKf f*?bjBoY!V+E))@{xMcbjXe@)LtDnm{r-UW|*e5JT literal 0 HcmV?d00001 diff --git a/dir_68267d1309a1af8e8297ef4c3efbcdba.html b/dir_68267d1309a1af8e8297ef4c3efbcdba.html new file mode 100644 index 000000000..979093d97 --- /dev/null +++ b/dir_68267d1309a1af8e8297ef4c3efbcdba.html @@ -0,0 +1,115 @@ + + + + + + + +PythonQt: src Directory Reference + + + + + + +
+
+ + + + + + +
+
PythonQt +
+
+
+ + + + + + + +
+
+
+
src Directory Reference
+
+ + + + + diff --git a/doc.png b/doc.png new file mode 100644 index 0000000000000000000000000000000000000000..17edabff95f7b8da13c9516a04efe05493c29501 GIT binary patch literal 746 zcmV7=@pnbNXRFEm&G8P!&WHG=d)>K?YZ1bzou)2{$)) zumDct!>4SyxL;zgaG>wy`^Hv*+}0kUfCrz~BCOViSb$_*&;{TGGn2^x9K*!Sf0=lV zpP=7O;GA0*Jm*tTYj$IoXvimpnV4S1Z5f$p*f$Db2iq2zrVGQUz~yq`ahn7ck(|CE z7Gz;%OP~J6)tEZWDzjhL9h2hdfoU2)Nd%T<5Kt;Y0XLt&<@6pQx!nw*5`@bq#?l*?3z{Hlzoc=Pr>oB5(9i6~_&-}A(4{Q$>c>%rV&E|a(r&;?i5cQB=} zYSDU5nXG)NS4HEs0it2AHe2>shCyr7`6@4*6{r@8fXRbTA?=IFVWAQJL&H5H{)DpM#{W(GL+Idzf^)uRV@oB8u$ z8v{MfJbTiiRg4bza<41NAzrl{=3fl_D+$t+^!xlQ8S}{UtY`e z;;&9UhyZqQRN%2pot{*Ei0*4~hSF_3AH2@fKU!$NSflS>{@tZpDT4`M2WRTTVH+D? z)GFlEGGHe?koB}i|1w45!BF}N_q&^HJ&-tyR{(afC6H7|aml|tBBbv}55C5DNP8p3 z)~jLEO4Z&2hZmP^i-e%(@d!(E|KRafiU8Q5u(wU((j8un3OR*Hvj+t literal 0 HcmV?d00001 diff --git a/doxygen.css b/doxygen.css new file mode 100644 index 000000000..e2515926c --- /dev/null +++ b/doxygen.css @@ -0,0 +1,1764 @@ +/* The standard CSS for doxygen 1.8.15 */ + +body, table, div, p, dl { + font: 400 14px/22px Roboto,sans-serif; +} + +p.reference, p.definition { + font: 400 14px/22px Roboto,sans-serif; +} + +/* @group Heading Levels */ + +h1.groupheader { + font-size: 150%; +} + +.title { + font: 400 14px/28px Roboto,sans-serif; + font-size: 150%; + font-weight: bold; + margin: 10px 2px; +} + +h2.groupheader { + border-bottom: 1px solid #879ECB; + color: #354C7B; + font-size: 150%; + font-weight: normal; + margin-top: 1.75em; + padding-top: 8px; + padding-bottom: 4px; + width: 100%; +} + +h3.groupheader { + font-size: 100%; +} + +h1, h2, h3, h4, h5, h6 { + -webkit-transition: text-shadow 0.5s linear; + -moz-transition: text-shadow 0.5s linear; + -ms-transition: text-shadow 0.5s linear; + -o-transition: text-shadow 0.5s linear; + transition: text-shadow 0.5s linear; + margin-right: 15px; +} + +h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow { + text-shadow: 0 0 15px cyan; +} + +dt { + font-weight: bold; +} + +div.multicol { + -moz-column-gap: 1em; + -webkit-column-gap: 1em; + -moz-column-count: 3; + -webkit-column-count: 3; +} + +p.startli, p.startdd { + margin-top: 2px; +} + +p.starttd { + margin-top: 0px; +} + +p.endli { + margin-bottom: 0px; +} + +p.enddd { + margin-bottom: 4px; +} + +p.endtd { + margin-bottom: 2px; +} + +p.interli { +} + +p.interdd { +} + +p.intertd { +} + +/* @end */ + +caption { + font-weight: bold; +} + +span.legend { + font-size: 70%; + text-align: center; +} + +h3.version { + font-size: 90%; + text-align: center; +} + +div.qindex, div.navtab{ + background-color: #EBEFF6; + border: 1px solid #A3B4D7; + text-align: center; +} + +div.qindex, div.navpath { + width: 100%; + line-height: 140%; +} + +div.navtab { + margin-right: 15px; +} + +/* @group Link Styling */ + +a { + color: #3D578C; + font-weight: normal; + text-decoration: none; +} + +.contents a:visited { + color: #4665A2; +} + +a:hover { + text-decoration: underline; +} + +a.qindex { + font-weight: bold; +} + +a.qindexHL { + font-weight: bold; + background-color: #9CAFD4; + color: #FFFFFF; + border: 1px double #869DCA; +} + +.contents a.qindexHL:visited { + color: #FFFFFF; +} + +a.el { + font-weight: bold; +} + +a.elRef { +} + +a.code, a.code:visited, a.line, a.line:visited { + color: #4665A2; +} + +a.codeRef, a.codeRef:visited, a.lineRef, a.lineRef:visited { + color: #4665A2; +} + +/* @end */ + +dl.el { + margin-left: -1cm; +} + +ul { + overflow: hidden; /*Fixed: list item bullets overlap floating elements*/ +} + +#side-nav ul { + overflow: visible; /* reset ul rule for scroll bar in GENERATE_TREEVIEW window */ +} + +#main-nav ul { + overflow: visible; /* reset ul rule for the navigation bar drop down lists */ +} + +.fragment { + text-align: left; + direction: ltr; + overflow-x: auto; /*Fixed: fragment lines overlap floating elements*/ + overflow-y: hidden; +} + +pre.fragment { + border: 1px solid #C4CFE5; + background-color: #FBFCFD; + padding: 4px 6px; + margin: 4px 8px 4px 2px; + overflow: auto; + word-wrap: break-word; + font-size: 9pt; + line-height: 125%; + font-family: monospace, fixed; + font-size: 105%; +} + +div.fragment { + padding: 0 0 1px 0; /*Fixed: last line underline overlap border*/ + margin: 4px 8px 4px 2px; + background-color: #FBFCFD; + border: 1px solid #C4CFE5; +} + +div.line { + font-family: monospace, fixed; + font-size: 13px; + min-height: 13px; + line-height: 1.0; + text-wrap: unrestricted; + white-space: -moz-pre-wrap; /* Moz */ + white-space: -pre-wrap; /* Opera 4-6 */ + white-space: -o-pre-wrap; /* Opera 7 */ + white-space: pre-wrap; /* CSS3 */ + word-wrap: break-word; /* IE 5.5+ */ + text-indent: -53px; + padding-left: 53px; + padding-bottom: 0px; + margin: 0px; + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +div.line:after { + content:"\000A"; + white-space: pre; +} + +div.line.glow { + background-color: cyan; + box-shadow: 0 0 10px cyan; +} + + +span.lineno { + padding-right: 4px; + text-align: right; + border-right: 2px solid #0F0; + background-color: #E8E8E8; + white-space: pre; +} +span.lineno a { + background-color: #D8D8D8; +} + +span.lineno a:hover { + background-color: #C8C8C8; +} + +.lineno { + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +div.ah, span.ah { + background-color: black; + font-weight: bold; + color: #FFFFFF; + margin-bottom: 3px; + margin-top: 3px; + padding: 0.2em; + border: solid thin #333; + border-radius: 0.5em; + -webkit-border-radius: .5em; + -moz-border-radius: .5em; + box-shadow: 2px 2px 3px #999; + -webkit-box-shadow: 2px 2px 3px #999; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; + background-image: -webkit-gradient(linear, left top, left bottom, from(#eee), to(#000),color-stop(0.3, #444)); + background-image: -moz-linear-gradient(center top, #eee 0%, #444 40%, #000 110%); +} + +div.classindex ul { + list-style: none; + padding-left: 0; +} + +div.classindex span.ai { + display: inline-block; +} + +div.groupHeader { + margin-left: 16px; + margin-top: 12px; + font-weight: bold; +} + +div.groupText { + margin-left: 16px; + font-style: italic; +} + +body { + background-color: white; + color: black; + margin: 0; +} + +div.contents { + margin-top: 10px; + margin-left: 12px; + margin-right: 8px; +} + +td.indexkey { + background-color: #EBEFF6; + font-weight: bold; + border: 1px solid #C4CFE5; + margin: 2px 0px 2px 0; + padding: 2px 10px; + white-space: nowrap; + vertical-align: top; +} + +td.indexvalue { + background-color: #EBEFF6; + border: 1px solid #C4CFE5; + padding: 2px 10px; + margin: 2px 0px; +} + +tr.memlist { + background-color: #EEF1F7; +} + +p.formulaDsp { + text-align: center; +} + +img.formulaDsp { + +} + +img.formulaInl, img.inline { + vertical-align: middle; +} + +div.center { + text-align: center; + margin-top: 0px; + margin-bottom: 0px; + padding: 0px; +} + +div.center img { + border: 0px; +} + +address.footer { + text-align: right; + padding-right: 12px; +} + +img.footer { + border: 0px; + vertical-align: middle; +} + +/* @group Code Colorization */ + +span.keyword { + color: #008000 +} + +span.keywordtype { + color: #604020 +} + +span.keywordflow { + color: #e08000 +} + +span.comment { + color: #800000 +} + +span.preprocessor { + color: #806020 +} + +span.stringliteral { + color: #002080 +} + +span.charliteral { + color: #008080 +} + +span.vhdldigit { + color: #ff00ff +} + +span.vhdlchar { + color: #000000 +} + +span.vhdlkeyword { + color: #700070 +} + +span.vhdllogic { + color: #ff0000 +} + +blockquote { + background-color: #F7F8FB; + border-left: 2px solid #9CAFD4; + margin: 0 24px 0 4px; + padding: 0 12px 0 16px; +} + +blockquote.DocNodeRTL { + border-left: 0; + border-right: 2px solid #9CAFD4; + margin: 0 4px 0 24px; + padding: 0 16px 0 12px; +} + +/* @end */ + +/* +.search { + color: #003399; + font-weight: bold; +} + +form.search { + margin-bottom: 0px; + margin-top: 0px; +} + +input.search { + font-size: 75%; + color: #000080; + font-weight: normal; + background-color: #e8eef2; +} +*/ + +td.tiny { + font-size: 75%; +} + +.dirtab { + padding: 4px; + border-collapse: collapse; + border: 1px solid #A3B4D7; +} + +th.dirtab { + background: #EBEFF6; + font-weight: bold; +} + +hr { + height: 0px; + border: none; + border-top: 1px solid #4A6AAA; +} + +hr.footer { + height: 1px; +} + +/* @group Member Descriptions */ + +table.memberdecls { + border-spacing: 0px; + padding: 0px; +} + +.memberdecls td, .fieldtable tr { + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +.memberdecls td.glow, .fieldtable tr.glow { + background-color: cyan; + box-shadow: 0 0 15px cyan; +} + +.mdescLeft, .mdescRight, +.memItemLeft, .memItemRight, +.memTemplItemLeft, .memTemplItemRight, .memTemplParams { + background-color: #F9FAFC; + border: none; + margin: 4px; + padding: 1px 0 0 8px; +} + +.mdescLeft, .mdescRight { + padding: 0px 8px 4px 8px; + color: #555; +} + +.memSeparator { + border-bottom: 1px solid #DEE4F0; + line-height: 1px; + margin: 0px; + padding: 0px; +} + +.memItemLeft, .memTemplItemLeft { + white-space: nowrap; +} + +.memItemRight { + width: 100%; +} + +.memTemplParams { + color: #4665A2; + white-space: nowrap; + font-size: 80%; +} + +/* @end */ + +/* @group Member Details */ + +/* Styles for detailed member documentation */ + +.memtitle { + padding: 8px; + border-top: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + border-top-right-radius: 4px; + border-top-left-radius: 4px; + margin-bottom: -1px; + background-image: url('nav_f.png'); + background-repeat: repeat-x; + background-color: #E2E8F2; + line-height: 1.25; + font-weight: 300; + float:left; +} + +.permalink +{ + font-size: 65%; + display: inline-block; + vertical-align: middle; +} + +.memtemplate { + font-size: 80%; + color: #4665A2; + font-weight: normal; + margin-left: 9px; +} + +.memnav { + background-color: #EBEFF6; + border: 1px solid #A3B4D7; + text-align: center; + margin: 2px; + margin-right: 15px; + padding: 2px; +} + +.mempage { + width: 100%; +} + +.memitem { + padding: 0; + margin-bottom: 10px; + margin-right: 5px; + -webkit-transition: box-shadow 0.5s linear; + -moz-transition: box-shadow 0.5s linear; + -ms-transition: box-shadow 0.5s linear; + -o-transition: box-shadow 0.5s linear; + transition: box-shadow 0.5s linear; + display: table !important; + width: 100%; +} + +.memitem.glow { + box-shadow: 0 0 15px cyan; +} + +.memname { + font-weight: 400; + margin-left: 6px; +} + +.memname td { + vertical-align: bottom; +} + +.memproto, dl.reflist dt { + border-top: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + padding: 6px 0px 6px 0px; + color: #253555; + font-weight: bold; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + background-color: #DFE5F1; + /* opera specific markup */ + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + border-top-right-radius: 4px; + /* firefox specific markup */ + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + -moz-border-radius-topright: 4px; + /* webkit specific markup */ + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + -webkit-border-top-right-radius: 4px; + +} + +.overload { + font-family: "courier new",courier,monospace; + font-size: 65%; +} + +.memdoc, dl.reflist dd { + border-bottom: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + padding: 6px 10px 2px 10px; + background-color: #FBFCFD; + border-top-width: 0; + background-image:url('nav_g.png'); + background-repeat:repeat-x; + background-color: #FFFFFF; + /* opera specific markup */ + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + /* firefox specific markup */ + -moz-border-radius-bottomleft: 4px; + -moz-border-radius-bottomright: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + /* webkit specific markup */ + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +dl.reflist dt { + padding: 5px; +} + +dl.reflist dd { + margin: 0px 0px 10px 0px; + padding: 5px; +} + +.paramkey { + text-align: right; +} + +.paramtype { + white-space: nowrap; +} + +.paramname { + color: #602020; + white-space: nowrap; +} +.paramname em { + font-style: normal; +} +.paramname code { + line-height: 14px; +} + +.params, .retval, .exception, .tparams { + margin-left: 0px; + padding-left: 0px; +} + +.params .paramname, .retval .paramname, .tparams .paramname { + font-weight: bold; + vertical-align: top; +} + +.params .paramtype, .tparams .paramtype { + font-style: italic; + vertical-align: top; +} + +.params .paramdir, .tparams .paramdir { + font-family: "courier new",courier,monospace; + vertical-align: top; +} + +table.mlabels { + border-spacing: 0px; +} + +td.mlabels-left { + width: 100%; + padding: 0px; +} + +td.mlabels-right { + vertical-align: bottom; + padding: 0px; + white-space: nowrap; +} + +span.mlabels { + margin-left: 8px; +} + +span.mlabel { + background-color: #728DC1; + border-top:1px solid #5373B4; + border-left:1px solid #5373B4; + border-right:1px solid #C4CFE5; + border-bottom:1px solid #C4CFE5; + text-shadow: none; + color: white; + margin-right: 4px; + padding: 2px 3px; + border-radius: 3px; + font-size: 7pt; + white-space: nowrap; + vertical-align: middle; +} + + + +/* @end */ + +/* these are for tree view inside a (index) page */ + +div.directory { + margin: 10px 0px; + border-top: 1px solid #9CAFD4; + border-bottom: 1px solid #9CAFD4; + width: 100%; +} + +.directory table { + border-collapse:collapse; +} + +.directory td { + margin: 0px; + padding: 0px; + vertical-align: top; +} + +.directory td.entry { + white-space: nowrap; + padding-right: 6px; + padding-top: 3px; +} + +.directory td.entry a { + outline:none; +} + +.directory td.entry a img { + border: none; +} + +.directory td.desc { + width: 100%; + padding-left: 6px; + padding-right: 6px; + padding-top: 3px; + border-left: 1px solid rgba(0,0,0,0.05); +} + +.directory tr.even { + padding-left: 6px; + background-color: #F7F8FB; +} + +.directory img { + vertical-align: -30%; +} + +.directory .levels { + white-space: nowrap; + width: 100%; + text-align: right; + font-size: 9pt; +} + +.directory .levels span { + cursor: pointer; + padding-left: 2px; + padding-right: 2px; + color: #3D578C; +} + +.arrow { + color: #9CAFD4; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + cursor: pointer; + font-size: 80%; + display: inline-block; + width: 16px; + height: 22px; +} + +.icon { + font-family: Arial, Helvetica; + font-weight: bold; + font-size: 12px; + height: 14px; + width: 16px; + display: inline-block; + background-color: #728DC1; + color: white; + text-align: center; + border-radius: 4px; + margin-left: 2px; + margin-right: 2px; +} + +.icona { + width: 24px; + height: 22px; + display: inline-block; +} + +.iconfopen { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('folderopen.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.iconfclosed { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('folderclosed.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.icondoc { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('doc.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +table.directory { + font: 400 14px Roboto,sans-serif; +} + +/* @end */ + +div.dynheader { + margin-top: 8px; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +address { + font-style: normal; + color: #2A3D61; +} + +table.doxtable caption { + caption-side: top; +} + +table.doxtable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.doxtable td, table.doxtable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +table.doxtable th { + background-color: #374F7F; + color: #FFFFFF; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +table.fieldtable { + /*width: 100%;*/ + margin-bottom: 10px; + border: 1px solid #A8B8D9; + border-spacing: 0px; + -moz-border-radius: 4px; + -webkit-border-radius: 4px; + border-radius: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; + -webkit-box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); + box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); +} + +.fieldtable td, .fieldtable th { + padding: 3px 7px 2px; +} + +.fieldtable td.fieldtype, .fieldtable td.fieldname { + white-space: nowrap; + border-right: 1px solid #A8B8D9; + border-bottom: 1px solid #A8B8D9; + vertical-align: top; +} + +.fieldtable td.fieldname { + padding-top: 3px; +} + +.fieldtable td.fielddoc { + border-bottom: 1px solid #A8B8D9; + /*width: 100%;*/ +} + +.fieldtable td.fielddoc p:first-child { + margin-top: 0px; +} + +.fieldtable td.fielddoc p:last-child { + margin-bottom: 2px; +} + +.fieldtable tr:last-child td { + border-bottom: none; +} + +.fieldtable th { + background-image:url('nav_f.png'); + background-repeat:repeat-x; + background-color: #E2E8F2; + font-size: 90%; + color: #253555; + padding-bottom: 4px; + padding-top: 5px; + text-align:left; + font-weight: 400; + -moz-border-radius-topleft: 4px; + -moz-border-radius-topright: 4px; + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + border-top-left-radius: 4px; + border-top-right-radius: 4px; + border-bottom: 1px solid #A8B8D9; +} + + +.tabsearch { + top: 0px; + left: 10px; + height: 36px; + background-image: url('tab_b.png'); + z-index: 101; + overflow: hidden; + font-size: 13px; +} + +.navpath ul +{ + font-size: 11px; + background-image:url('tab_b.png'); + background-repeat:repeat-x; + background-position: 0 -5px; + height:30px; + line-height:30px; + color:#8AA0CC; + border:solid 1px #C2CDE4; + overflow:hidden; + margin:0px; + padding:0px; +} + +.navpath li +{ + list-style-type:none; + float:left; + padding-left:10px; + padding-right:15px; + background-image:url('bc_s.png'); + background-repeat:no-repeat; + background-position:right; + color:#364D7C; +} + +.navpath li.navelem a +{ + height:32px; + display:block; + text-decoration: none; + outline: none; + color: #283A5D; + font-family: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + text-decoration: none; +} + +.navpath li.navelem a:hover +{ + color:#6884BD; +} + +.navpath li.footer +{ + list-style-type:none; + float:right; + padding-left:10px; + padding-right:15px; + background-image:none; + background-repeat:no-repeat; + background-position:right; + color:#364D7C; + font-size: 8pt; +} + + +div.summary +{ + float: right; + font-size: 8pt; + padding-right: 5px; + width: 50%; + text-align: right; +} + +div.summary a +{ + white-space: nowrap; +} + +table.classindex +{ + margin: 10px; + white-space: nowrap; + margin-left: 3%; + margin-right: 3%; + width: 94%; + border: 0; + border-spacing: 0; + padding: 0; +} + +div.ingroups +{ + font-size: 8pt; + width: 50%; + text-align: left; +} + +div.ingroups a +{ + white-space: nowrap; +} + +div.header +{ + background-image:url('nav_h.png'); + background-repeat:repeat-x; + background-color: #F9FAFC; + margin: 0px; + border-bottom: 1px solid #C4CFE5; +} + +div.headertitle +{ + padding: 5px 5px 5px 10px; +} + +.PageDocRTL-title div.headertitle { + text-align: right; + direction: rtl; +} + +dl { + padding: 0 0 0 0; +} + +/* dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug, dl.examples */ +dl.section { + margin-left: 0px; + padding-left: 0px; +} + +dl.section.DocNodeRTL { + margin-right: 0px; + padding-right: 0px; +} + +dl.note { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #D0C000; +} + +dl.note.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #D0C000; +} + +dl.warning, dl.attention { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #FF0000; +} + +dl.warning.DocNodeRTL, dl.attention.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #FF0000; +} + +dl.pre, dl.post, dl.invariant { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #00D000; +} + +dl.pre.DocNodeRTL, dl.post.DocNodeRTL, dl.invariant.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #00D000; +} + +dl.deprecated { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #505050; +} + +dl.deprecated.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #505050; +} + +dl.todo { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #00C0E0; +} + +dl.todo.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #00C0E0; +} + +dl.test { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #3030E0; +} + +dl.test.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #3030E0; +} + +dl.bug { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #C08050; +} + +dl.bug.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #C08050; +} + +dl.section dd { + margin-bottom: 6px; +} + + +#projectlogo +{ + text-align: center; + vertical-align: bottom; + border-collapse: separate; +} + +#projectlogo img +{ + border: 0px none; +} + +#projectalign +{ + vertical-align: middle; +} + +#projectname +{ + font: 300% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 2px 0px; +} + +#projectbrief +{ + font: 120% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 0px; +} + +#projectnumber +{ + font: 50% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 0px; +} + +#titlearea +{ + padding: 0px; + margin: 0px; + width: 100%; + border-bottom: 1px solid #5373B4; +} + +.image +{ + text-align: center; +} + +.dotgraph +{ + text-align: center; +} + +.mscgraph +{ + text-align: center; +} + +.plantumlgraph +{ + text-align: center; +} + +.diagraph +{ + text-align: center; +} + +.caption +{ + font-weight: bold; +} + +div.zoom +{ + border: 1px solid #90A5CE; +} + +dl.citelist { + margin-bottom:50px; +} + +dl.citelist dt { + color:#334975; + float:left; + font-weight:bold; + margin-right:10px; + padding:5px; +} + +dl.citelist dd { + margin:2px 0; + padding:5px 0; +} + +div.toc { + padding: 14px 25px; + background-color: #F4F6FA; + border: 1px solid #D8DFEE; + border-radius: 7px 7px 7px 7px; + float: right; + height: auto; + margin: 0 8px 10px 10px; + width: 200px; +} + +.PageDocRTL-title div.toc { + float: left !important; + text-align: right; +} + +div.toc li { + background: url("bdwn.png") no-repeat scroll 0 5px transparent; + font: 10px/1.2 Verdana,DejaVu Sans,Geneva,sans-serif; + margin-top: 5px; + padding-left: 10px; + padding-top: 2px; +} + +.PageDocRTL-title div.toc li { + background-position-x: right !important; + padding-left: 0 !important; + padding-right: 10px; +} + +div.toc h3 { + font: bold 12px/1.2 Arial,FreeSans,sans-serif; + color: #4665A2; + border-bottom: 0 none; + margin: 0; +} + +div.toc ul { + list-style: none outside none; + border: medium none; + padding: 0px; +} + +div.toc li.level1 { + margin-left: 0px; +} + +div.toc li.level2 { + margin-left: 15px; +} + +div.toc li.level3 { + margin-left: 30px; +} + +div.toc li.level4 { + margin-left: 45px; +} + +.PageDocRTL-title div.toc li.level1 { + margin-left: 0 !important; + margin-right: 0; +} + +.PageDocRTL-title div.toc li.level2 { + margin-left: 0 !important; + margin-right: 15px; +} + +.PageDocRTL-title div.toc li.level3 { + margin-left: 0 !important; + margin-right: 30px; +} + +.PageDocRTL-title div.toc li.level4 { + margin-left: 0 !important; + margin-right: 45px; +} + +.inherit_header { + font-weight: bold; + color: gray; + cursor: pointer; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.inherit_header td { + padding: 6px 0px 2px 5px; +} + +.inherit { + display: none; +} + +tr.heading h2 { + margin-top: 12px; + margin-bottom: 4px; +} + +/* tooltip related style info */ + +.ttc { + position: absolute; + display: none; +} + +#powerTip { + cursor: default; + white-space: nowrap; + background-color: white; + border: 1px solid gray; + border-radius: 4px 4px 4px 4px; + box-shadow: 1px 1px 7px gray; + display: none; + font-size: smaller; + max-width: 80%; + opacity: 0.9; + padding: 1ex 1em 1em; + position: absolute; + z-index: 2147483647; +} + +#powerTip div.ttdoc { + color: grey; + font-style: italic; +} + +#powerTip div.ttname a { + font-weight: bold; +} + +#powerTip div.ttname { + font-weight: bold; +} + +#powerTip div.ttdeci { + color: #006318; +} + +#powerTip div { + margin: 0px; + padding: 0px; + font: 12px/16px Roboto,sans-serif; +} + +#powerTip:before, #powerTip:after { + content: ""; + position: absolute; + margin: 0px; +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.s:after, #powerTip.s:before, +#powerTip.w:after, #powerTip.w:before, +#powerTip.e:after, #powerTip.e:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.nw:after, #powerTip.nw:before, +#powerTip.sw:after, #powerTip.sw:before { + border: solid transparent; + content: " "; + height: 0; + width: 0; + position: absolute; +} + +#powerTip.n:after, #powerTip.s:after, +#powerTip.w:after, #powerTip.e:after, +#powerTip.nw:after, #powerTip.ne:after, +#powerTip.sw:after, #powerTip.se:after { + border-color: rgba(255, 255, 255, 0); +} + +#powerTip.n:before, #powerTip.s:before, +#powerTip.w:before, #powerTip.e:before, +#powerTip.nw:before, #powerTip.ne:before, +#powerTip.sw:before, #powerTip.se:before { + border-color: rgba(128, 128, 128, 0); +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.nw:after, #powerTip.nw:before { + top: 100%; +} + +#powerTip.n:after, #powerTip.ne:after, #powerTip.nw:after { + border-top-color: #FFFFFF; + border-width: 10px; + margin: 0px -10px; +} +#powerTip.n:before { + border-top-color: #808080; + border-width: 11px; + margin: 0px -11px; +} +#powerTip.n:after, #powerTip.n:before { + left: 50%; +} + +#powerTip.nw:after, #powerTip.nw:before { + right: 14px; +} + +#powerTip.ne:after, #powerTip.ne:before { + left: 14px; +} + +#powerTip.s:after, #powerTip.s:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.sw:after, #powerTip.sw:before { + bottom: 100%; +} + +#powerTip.s:after, #powerTip.se:after, #powerTip.sw:after { + border-bottom-color: #FFFFFF; + border-width: 10px; + margin: 0px -10px; +} + +#powerTip.s:before, #powerTip.se:before, #powerTip.sw:before { + border-bottom-color: #808080; + border-width: 11px; + margin: 0px -11px; +} + +#powerTip.s:after, #powerTip.s:before { + left: 50%; +} + +#powerTip.sw:after, #powerTip.sw:before { + right: 14px; +} + +#powerTip.se:after, #powerTip.se:before { + left: 14px; +} + +#powerTip.e:after, #powerTip.e:before { + left: 100%; +} +#powerTip.e:after { + border-left-color: #FFFFFF; + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.e:before { + border-left-color: #808080; + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +#powerTip.w:after, #powerTip.w:before { + right: 100%; +} +#powerTip.w:after { + border-right-color: #FFFFFF; + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.w:before { + border-right-color: #808080; + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +@media print +{ + #top { display: none; } + #side-nav { display: none; } + #nav-path { display: none; } + body { overflow:visible; } + h1, h2, h3, h4, h5, h6 { page-break-after: avoid; } + .summary { display: none; } + .memitem { page-break-inside: avoid; } + #doc-content + { + margin-left:0 !important; + height:auto !important; + width:auto !important; + overflow:inherit; + display:inline; + } +} + +/* @group Markdown */ + +/* +table.markdownTable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.markdownTable td, table.markdownTable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +table.markdownTableHead tr { +} + +table.markdownTableBodyLeft td, table.markdownTable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +th.markdownTableHeadLeft th.markdownTableHeadRight th.markdownTableHeadCenter th.markdownTableHeadNone { + background-color: #374F7F; + color: #FFFFFF; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +th.markdownTableHeadLeft { + text-align: left +} + +th.markdownTableHeadRight { + text-align: right +} + +th.markdownTableHeadCenter { + text-align: center +} +*/ + +table.markdownTable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.markdownTable td, table.markdownTable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +table.markdownTable tr { +} + +th.markdownTableHeadLeft, th.markdownTableHeadRight, th.markdownTableHeadCenter, th.markdownTableHeadNone { + background-color: #374F7F; + color: #FFFFFF; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +th.markdownTableHeadLeft, td.markdownTableBodyLeft { + text-align: left +} + +th.markdownTableHeadRight, td.markdownTableBodyRight { + text-align: right +} + +th.markdownTableHeadCenter, td.markdownTableBodyCenter { + text-align: center +} + +.DocNodeRTL { + text-align: right; + direction: rtl; +} + +.DocNodeLTR { + text-align: left; + direction: ltr; +} + +table.DocNodeRTL { + width: auto; + margin-right: 0; + margin-left: auto; +} + +table.DocNodeLTR { + width: auto; + margin-right: auto; + margin-left: 0; +} + +tt, code, kbd, samp +{ + display: inline-block; + direction:ltr; +} +/* @end */ + +u { + text-decoration: underline; +} + diff --git a/doxygen.png b/doxygen.png new file mode 100644 index 0000000000000000000000000000000000000000..3ff17d807fd8aa003bed8bb2a69e8f0909592fd1 GIT binary patch literal 3779 zcmV;!4m|ORP)tMIv#Q0*~7*`IBSO7_x;@a8#Zk6_PeKR_s92J&)(m+);m9Iz3blw)z#Gi zP!9lj4$%+*>Hz@HCmM9L9|8c+0u=!H$O3?R0Kgx|#WP<6fKfC8fM-CQZT|_r@`>VO zX^Hgb|9cJqpdJA5$MCEK`F_2@2Y@s>^+;pF`~jdI0Pvr|vl4`=C)EH@1IFe7pdJ8F zH(qGi004~QnF)Ggga~8v08kGAs2hKTATxr7pwfNk|4#_AaT>w8P6TV+R2kbS$v==} zAjf`s0g#V8lB+b3)5oEI*q+{Yt$MZDruD2^;$+(_%Qn+%v0X-bJO=;@kiJ^ygLBnC z?1OVv_%aex1M@jKU|Z~$eI?PoF4Vj>fDzyo zAiLfpXY*a^Sj-S5D0S3@#V$sRW)g)_1e#$%8xdM>Jm7?!h zu0P2X=xoN>^!4DoPRgph2(2va07yfpXF+WH7EOg1GY%Zn z7~1A<(z7Q$ktEXhW_?GMpHp9l_UL18F3KOsxu81pqoBiNbFSGsof-W z6~eloMoz=4?OOnl2J268x5rOY`dCk0us(uS#Ud4yqOr@?=Q57a}tit|BhY>}~frH1sP`ScHS_d)oqH^lYy zZ%VP`#10MlE~P?cE(%(#(AUSv_T{+;t@$U}El}(1ig`vZo`Rm;+5&(AYzJ^Ae=h2X z@Re%vHwZU>|f0NI&%$*4eJweC5OROQrpPMA@*w|o z()A==l}(@bv^&>H1Ob3C=<^|hob?0+xJ?QQ3-ueQC}zy&JQNib!OqSO@-=>XzxlSF zAZ^U*1l6EEmg3r};_HY>&Jo_{dOPEFTWPmt=U&F#+0(O59^UIlHbNX+eF8UzyDR*T z(=5X$VF3!gm@RooS-&iiUYGG^`hMR(07zr_xP`d!^BH?uD>Phl8Rdifx3Af^Zr`Ku ztL+~HkVeL#bJ)7;`=>;{KNRvjmc}1}c58Sr#Treq=4{xo!ATy|c>iRSp4`dzMMVd@ zL8?uwXDY}Wqgh4mH`|$BTXpUIu6A1-cSq%hJw;@^Zr8TP=GMh*p(m(tN7@!^D~sl$ zz^tf4II4|};+irE$Fnm4NTc5%p{PRA`%}Zk`CE5?#h3|xcyQsS#iONZ z6H(@^i9td!$z~bZiJLTax$o>r(p}3o@< zyD7%(>ZYvy=6$U3e!F{Z`uSaYy`xQyl?b{}eg|G3&fz*`QH@mDUn)1%#5u`0m$%D} z?;tZ0u(mWeMV0QtzjgN!lT*pNRj;6510Wwx?Yi_=tYw|J#7@(Xe7ifDzXuK;JB;QO z#bg~K$cgm$@{QiL_3yr}y&~wuv=P=#O&Tj=Sr)aCUlYmZMcw?)T?c%0rUe1cS+o!qs_ zQ6Gp)-{)V!;=q}llyK3|^WeLKyjf%y;xHku;9(vM!j|~<7w1c*Mk-;P{T&yG) z@C-8E?QPynNQ<8f01D`2qexcVEIOU?y}MG)TAE6&VT5`rK8s(4PE;uQ92LTXUQ<>^ ztyQ@=@kRdh@ebUG^Z6NWWIL;_IGJ2ST>$t!$m$qvtj0Qmw8moN6GUV^!QKNK zHBXCtUH8)RY9++gH_TUV4^=-j$t}dD3qsN7GclJ^Zc&(j6&a_!$jCf}%c5ey`pm~1)@{yI3 zTdWyB+*X{JFw#z;PwRr5evb2!ueWF;v`B0HoUu4-(~aL=z;OXUUEtG`_$)Oxw6FKg zEzY`CyKaSBK3xt#8gA|r_|Kehn_HYVBMpEwbn9-fI*!u*eTA1ef8Mkl1=!jV4oYwWYM}i`A>_F4nhmlCIC6WLa zY%;4&@AlnaG11ejl61Jev21|r*m+?Kru3;1tFDl}#!OzUp6c>go4{C|^erwpG*&h6bspUPJag}oOkN2912Y3I?(eRc@U9>z#HPBHC?nps7H5!zP``90!Q1n80jo+B3TWXp!8Pe zwuKuLLI6l3Gv@+QH*Y}2wPLPQ1^EZhT#+Ed8q8Wo z1pTmIBxv14-{l&QVKxAyQF#8Q@NeJwWdKk>?cpiJLkJr+aZ!Me+Cfp!?FWSRf^j2k z73BRR{WSKaMkJ>1Nbx5dan5hg^_}O{Tj6u%iV%#QGz0Q@j{R^Ik)Z*+(YvY2ziBG)?AmJa|JV%4UT$k`hcOg5r9R?5>?o~JzK zJCrj&{i#hG>N7!B4kNX(%igb%kDj0fOQThC-8mtfap82PNRXr1D>lbgg)dYTQ(kbx z`Ee5kXG~Bh+BHQBf|kJEy6(ga%WfhvdQNDuOfQoe377l#ht&DrMGeIsI5C<&ai zWG$|hop2@@q5YDa)_-A?B02W;#fH!%k`daQLEItaJJ8Yf1L%8x;kg?)k)00P-lH+w z)5$QNV6r2$YtnV(4o=0^3{kmaXn*Dm0F*fU(@o)yVVjk|ln8ea6BMy%vZAhW9|wvA z8RoDkVoMEz1d>|5(k0Nw>22ZT){V<3$^C-cN+|~hKt2)){+l-?3m@-$c?-dlzQ)q- zZ)j%n^gerV{|+t}9m1_&&Ly!9$rtG4XX|WQ8`xYzGC~U@nYh~g(z9)bdAl#xH)xd5a=@|qql z|FzEil{P5(@gy!4ek05i$>`E^G~{;pnf6ftpLh$h#W?^#4UkPfa;;?bsIe&kz!+40 zI|6`F2n020)-r`pFaZ38F!S-lJM-o&inOw|66=GMeP@xQU5ghQH{~5Uh~TMTd;I9` z>YhVB`e^EVj*S7JF39ZgNf}A-0DwOcTT63ydN$I3b?yBQtUI*_fae~kPvzoD$zjX3 zoqBe#>12im4WzZ=f^4+u=!lA|#r%1`WB0-6*3BL#at`47#ebPpR|D1b)3BjT34nYY z%Ds%d?5$|{LgOIaRO{{oC&RK`O91$fqwM0(C_TALcozu*fWHb%%q&p-q{_8*2Zsi^ zh1ZCnr^UYa;4vQEtHk{~zi>wwMC5o{S=$P0X681y`SXwFH?Ewn{x-MOZynmc)JT5v zuHLwh;tLfxRrr%|k370}GofLl7thg>ACWWY&msqaVu&ry+`7+Ss>NL^%T1|z{IGMA zW-SKl=V-^{(f!Kf^#3(|T2W47d(%JVCI4JgRrT1pNz>+ietmFToNv^`gzC@&O-)+i zPQ~RwK8%C_vf%;%e>NyTp~dM5;!C|N0Q^6|CEb7Bw=Vz~$1#FA;Z*?mKSC)Hl-20s t8QyHj(g6VK0RYbl8UjE)0O0w=e*@m04r>stuEhWV002ovPDHLkV1hl;dM*F} literal 0 HcmV?d00001 diff --git a/dynsections.js b/dynsections.js new file mode 100644 index 000000000..9bff51b8b --- /dev/null +++ b/dynsections.js @@ -0,0 +1,127 @@ +/* + @licstart The following is the entire license notice for the + JavaScript code in this file. + + Copyright (C) 1997-2017 by Dimitri van Heesch + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + + @licend The above is the entire license notice + for the JavaScript code in this file + */ +function toggleVisibility(linkObj) +{ + var base = $(linkObj).attr('id'); + var summary = $('#'+base+'-summary'); + var content = $('#'+base+'-content'); + var trigger = $('#'+base+'-trigger'); + var src=$(trigger).attr('src'); + if (content.is(':visible')===true) { + content.hide(); + summary.show(); + $(linkObj).addClass('closed').removeClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-8)+'closed.png'); + } else { + content.show(); + summary.hide(); + $(linkObj).removeClass('closed').addClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-10)+'open.png'); + } + return false; +} + +function updateStripes() +{ + $('table.directory tr'). + removeClass('even').filter(':visible:even').addClass('even'); +} + +function toggleLevel(level) +{ + $('table.directory tr').each(function() { + var l = this.id.split('_').length-1; + var i = $('#img'+this.id.substring(3)); + var a = $('#arr'+this.id.substring(3)); + if (l + + + + + + +PythonQt: File List + + + + + + +
+
+ + + + + + +
+
PythonQt +
+
+
+ + + + + + +
+
+
+
File List
+
+ + + + + diff --git a/folderclosed.png b/folderclosed.png new file mode 100644 index 0000000000000000000000000000000000000000..bb8ab35edce8e97554e360005ee9fc5bffb36e66 GIT binary patch literal 616 zcmV-u0+;=XP)a9#ETzayK)T~Jw&MMH>OIr#&;dC}is*2Mqdf&akCc=O@`qC+4i z5Iu3w#1M@KqXCz8TIZd1wli&kkl2HVcAiZ8PUn5z_kG@-y;?yK06=cA0U%H0PH+kU zl6dp}OR(|r8-RG+YLu`zbI}5TlOU6ToR41{9=uz^?dGTNL;wIMf|V3`d1Wj3y!#6` zBLZ?xpKR~^2x}?~zA(_NUu3IaDB$tKma*XUdOZN~c=dLt_h_k!dbxm_*ibDM zlFX`g{k$X}yIe%$N)cn1LNu=q9_CS)*>A zsX_mM4L@`(cSNQKMFc$RtYbx{79#j-J7hk*>*+ZZhM4Hw?I?rsXCi#mRWJ=-0LGV5a-WR0Qgt<|Nqf)C-@80`5gIz45^_20000IqP)X=#(TiCT&PiIIVc55T}TU}EUh*{q$|`3@{d>{Tc9Bo>e= zfmF3!f>fbI9#GoEHh0f`i5)wkLpva0ztf%HpZneK?w-7AK@b4Itw{y|Zd3k!fH?q2 zlhckHd_V2M_X7+)U&_Xcfvtw60l;--DgZmLSw-Y?S>)zIqMyJ1#FwLU*%bl38ok+! zh78H87n`ZTS;uhzAR$M`zZ`bVhq=+%u9^$5jDplgxd44}9;IRqUH1YHH|@6oFe%z( zo4)_>E$F&^P-f(#)>(TrnbE>Pefs9~@iN=|)Rz|V`sGfHNrJ)0gJb8xx+SBmRf@1l zvuzt=vGfI)<-F9!o&3l?>9~0QbUDT(wFdnQPv%xdD)m*g%!20>Bc9iYmGAp<9YAa( z0QgYgTWqf1qN++Gqp z8@AYPTB3E|6s=WLG?xw0tm|U!o=&zd+H0oRYE;Dbx+Na9s^STqX|Gnq%H8s(nGDGJ j8vwW|`Ts`)fSK|Kx=IK@RG@g200000NkvXXu0mjfauFEA literal 0 HcmV?d00001 diff --git a/functions.html b/functions.html new file mode 100644 index 000000000..5e6dff1f1 --- /dev/null +++ b/functions.html @@ -0,0 +1,156 @@ + + + + + + + +PythonQt: Class Members + + + + + + +
+
+ + + + + + +
+
PythonQt +
+
+
+ + + + + + +
+
+
Here is a list of all class members with links to the classes they belong to:
+ +

- _ -

+
+ + + + diff --git a/functions_a.html b/functions_a.html new file mode 100644 index 000000000..685e157c2 --- /dev/null +++ b/functions_a.html @@ -0,0 +1,118 @@ + + + + + + + +PythonQt: Class Members + + + + + + +
+
+ + + + + + +
+
PythonQt +
+
+
+ + + + + + +
+
+
Here is a list of all class members with links to the classes they belong to:
+ +

- a -

+
+ + + + diff --git a/functions_b.html b/functions_b.html new file mode 100644 index 000000000..a69fde017 --- /dev/null +++ b/functions_b.html @@ -0,0 +1,56 @@ + + + + + + + +PythonQt: Class Members + + + + + + +
+
+ + + + + + +
+
PythonQt +
+
+
+ + + + + + +
+
+
Here is a list of all class members with links to the classes they belong to:
+ +

- b -

+
+ + + + diff --git a/functions_c.html b/functions_c.html new file mode 100644 index 000000000..208bdeecf --- /dev/null +++ b/functions_c.html @@ -0,0 +1,235 @@ + + + + + + + +PythonQt: Class Members + + + + + + +
+
+ + + + + + +
+
PythonQt +
+
+
+ + + + + + +
+
+
Here is a list of all class members with links to the classes they belong to:
+ +

- c -

+
+ + + + diff --git a/functions_d.html b/functions_d.html new file mode 100644 index 000000000..2ea8a3393 --- /dev/null +++ b/functions_d.html @@ -0,0 +1,96 @@ + + + + + + + +PythonQt: Class Members + + + + + + +
+
+ + + + + + +
+
PythonQt +
+
+
+ + + + + + +
+
+
Here is a list of all class members with links to the classes they belong to:
+ +

- d -

+
+ + + + diff --git a/functions_e.html b/functions_e.html new file mode 100644 index 000000000..167789a4b --- /dev/null +++ b/functions_e.html @@ -0,0 +1,93 @@ + + + + + + + +PythonQt: Class Members + + + + + + +
+
+ + + + + + +
+
PythonQt +
+
+
+ + + + + + +
+
+
Here is a list of all class members with links to the classes they belong to:
+ +

- e -

+
+ + + + diff --git a/functions_enum.html b/functions_enum.html new file mode 100644 index 000000000..877fba391 --- /dev/null +++ b/functions_enum.html @@ -0,0 +1,76 @@ + + + + + + + +PythonQt: Class Members - Enumerations + + + + + + +
+
+ + + + + + +
+
PythonQt +
+
+
+ + + + + + +
+
+
+ + + + diff --git a/functions_eval.html b/functions_eval.html new file mode 100644 index 000000000..d40000082 --- /dev/null +++ b/functions_eval.html @@ -0,0 +1,287 @@ + + + + + + + +PythonQt: Class Members - Enumerator + + + + + + +
+
+ + + + + + +
+
PythonQt +
+
+
+ + + + + + +
+
+  + +

- a -

+ + +

- c -

+ + +

- d -

+ + +

- e -

+ + +

- f -

+ + +

- i -

+ + +

- l -

+ + +

- m -

+ + +

- n -

+ + +

- p -

+ + +

- r -

+ + +

- s -

+ + +

- t -

+ + +

- u -

+ + +

- v -

+
+ + + + diff --git a/functions_f.html b/functions_f.html new file mode 100644 index 000000000..aa6f180aa --- /dev/null +++ b/functions_f.html @@ -0,0 +1,95 @@ + + + + + + + +PythonQt: Class Members + + + + + + +
+
+ + + + + + +
+
PythonQt +
+
+
+ + + + + + +
+
+
Here is a list of all class members with links to the classes they belong to:
+ +

- f -

+
+ + + + diff --git a/functions_func.html b/functions_func.html new file mode 100644 index 000000000..6576e80d3 --- /dev/null +++ b/functions_func.html @@ -0,0 +1,109 @@ + + + + + + + +PythonQt: Class Members - Functions + + + + + + +
+
+ + + + + + +
+
PythonQt +
+
+
+ + + + + + +
+
+  + +

- a -

+
+ + + + diff --git a/functions_func_b.html b/functions_func_b.html new file mode 100644 index 000000000..b3a8fde0e --- /dev/null +++ b/functions_func_b.html @@ -0,0 +1,56 @@ + + + + + + + +PythonQt: Class Members - Functions + + + + + + +
+
+ + + + + + +
+
PythonQt +
+
+
+ + + + + + +
+
+  + +

- b -

+
+ + + + diff --git a/functions_func_c.html b/functions_func_c.html new file mode 100644 index 000000000..8b0cc50f3 --- /dev/null +++ b/functions_func_c.html @@ -0,0 +1,214 @@ + + + + + + + +PythonQt: Class Members - Functions + + + + + + +
+
+ + + + + + +
+
PythonQt +
+
+
+ + + + + + +
+
+  + +

- c -

+
+ + + + diff --git a/functions_func_d.html b/functions_func_d.html new file mode 100644 index 000000000..7ce226807 --- /dev/null +++ b/functions_func_d.html @@ -0,0 +1,81 @@ + + + + + + + +PythonQt: Class Members - Functions + + + + + + +
+
+ + + + + + +
+
PythonQt +
+
+
+ + + + + + +
+
+  + +

- d -

+
+ + + + diff --git a/functions_func_e.html b/functions_func_e.html new file mode 100644 index 000000000..f0c4e2f18 --- /dev/null +++ b/functions_func_e.html @@ -0,0 +1,78 @@ + + + + + + + +PythonQt: Class Members - Functions + + + + + + +
+
+ + + + + + +
+
PythonQt +
+
+
+ + + + + + +
+
+  + +

- e -

+
+ + + + diff --git a/functions_func_f.html b/functions_func_f.html new file mode 100644 index 000000000..1eaf3880c --- /dev/null +++ b/functions_func_f.html @@ -0,0 +1,74 @@ + + + + + + + +PythonQt: Class Members - Functions + + + + + + +
+
+ + + + + + +
+
PythonQt +
+
+
+ + + + + + +
+
+  + +

- f -

+
+ + + + diff --git a/functions_func_g.html b/functions_func_g.html new file mode 100644 index 000000000..6c83012bb --- /dev/null +++ b/functions_func_g.html @@ -0,0 +1,150 @@ + + + + + + + +PythonQt: Class Members - Functions + + + + + + +
+
+ + + + + + +
+
PythonQt +
+
+
+ + + + + + +
+
+  + +

- g -

+
+ + + + diff --git a/functions_func_h.html b/functions_func_h.html new file mode 100644 index 000000000..410ae10b5 --- /dev/null +++ b/functions_func_h.html @@ -0,0 +1,77 @@ + + + + + + + +PythonQt: Class Members - Functions + + + + + + +
+
+ + + + + + +
+
PythonQt +
+
+
+ + + + + + +
+
+  + +

- h -

+
+ + + + diff --git a/functions_func_i.html b/functions_func_i.html new file mode 100644 index 000000000..f07917a3e --- /dev/null +++ b/functions_func_i.html @@ -0,0 +1,161 @@ + + + + + + + +PythonQt: Class Members - Functions + + + + + + +
+
+ + + + + + +
+
PythonQt +
+
+
+ + + + + + +
+
+  + +

- i -

+
+ + + + diff --git a/functions_func_l.html b/functions_func_l.html new file mode 100644 index 000000000..cf7725d4d --- /dev/null +++ b/functions_func_l.html @@ -0,0 +1,66 @@ + + + + + + + +PythonQt: Class Members - Functions + + + + + + +
+
+ + + + + + +
+
PythonQt +
+
+
+ + + + + + +
+
+  + +

- l -

+
+ + + + diff --git a/functions_func_m.html b/functions_func_m.html new file mode 100644 index 000000000..2f07ba0f6 --- /dev/null +++ b/functions_func_m.html @@ -0,0 +1,93 @@ + + + + + + + +PythonQt: Class Members - Functions + + + + + + +
+
+ + + + + + +
+
PythonQt +
+
+
+ + + + + + +
+
+  + +

- m -

+
+ + + + diff --git a/functions_func_n.html b/functions_func_n.html new file mode 100644 index 000000000..fe82e284f --- /dev/null +++ b/functions_func_n.html @@ -0,0 +1,74 @@ + + + + + + + +PythonQt: Class Members - Functions + + + + + + +
+
+ + + + + + +
+
PythonQt +
+
+
+ + + + + + +
+
+  + +

- n -

+
+ + + + diff --git a/functions_func_o.html b/functions_func_o.html new file mode 100644 index 000000000..178365c91 --- /dev/null +++ b/functions_func_o.html @@ -0,0 +1,95 @@ + + + + + + + +PythonQt: Class Members - Functions + + + + + + +
+
+ + + + + + +
+
PythonQt +
+
+
+ + + + + + +
+
+  + +

- o -

+
+ + + + diff --git a/functions_func_p.html b/functions_func_p.html new file mode 100644 index 000000000..33069bfa5 --- /dev/null +++ b/functions_func_p.html @@ -0,0 +1,158 @@ + + + + + + + +PythonQt: Class Members - Functions + + + + + + +
+
+ + + + + + +
+
PythonQt +
+
+
+ + + + + + +
+
+  + +

- p -

+
+ + + + diff --git a/functions_func_q.html b/functions_func_q.html new file mode 100644 index 000000000..74c4c8eca --- /dev/null +++ b/functions_func_q.html @@ -0,0 +1,86 @@ + + + + + + + +PythonQt: Class Members - Functions + + + + + + +
+
+ + + + + + +
+
PythonQt +
+
+
+ + + + + + +
+
+  + +

- q -

+
+ + + + diff --git a/functions_func_r.html b/functions_func_r.html new file mode 100644 index 000000000..726118efe --- /dev/null +++ b/functions_func_r.html @@ -0,0 +1,120 @@ + + + + + + + +PythonQt: Class Members - Functions + + + + + + +
+
+ + + + + + +
+
PythonQt +
+
+
+ + + + + + +
+
+  + +

- r -

+
+ + + + diff --git a/functions_func_s.html b/functions_func_s.html new file mode 100644 index 000000000..5e3c46c45 --- /dev/null +++ b/functions_func_s.html @@ -0,0 +1,285 @@ + + + + + + + +PythonQt: Class Members - Functions + + + + + + +
+
+ + + + + + +
+
PythonQt +
+
+
+ + + + + + +
+
+  + +

- s -

+
+ + + + diff --git a/functions_func_t.html b/functions_func_t.html new file mode 100644 index 000000000..720282a2f --- /dev/null +++ b/functions_func_t.html @@ -0,0 +1,72 @@ + + + + + + + +PythonQt: Class Members - Functions + + + + + + +
+
+ + + + + + +
+
PythonQt +
+
+
+ + + + + + +
+
+  + +

- t -

+
+ + + + diff --git a/functions_func_u.html b/functions_func_u.html new file mode 100644 index 000000000..b8c71ea98 --- /dev/null +++ b/functions_func_u.html @@ -0,0 +1,71 @@ + + + + + + + +PythonQt: Class Members - Functions + + + + + + +
+
+ + + + + + +
+
PythonQt +
+
+
+ + + + + + +
+
+  + +

- u -

+
+ + + + diff --git a/functions_func_w.html b/functions_func_w.html new file mode 100644 index 000000000..92cdb0254 --- /dev/null +++ b/functions_func_w.html @@ -0,0 +1,68 @@ + + + + + + + +PythonQt: Class Members - Functions + + + + + + +
+
+ + + + + + +
+
PythonQt +
+
+
+ + + + + + +
+
+  + +

- w -

+
+ + + + diff --git a/functions_func_~.html b/functions_func_~.html new file mode 100644 index 000000000..e2e5930c6 --- /dev/null +++ b/functions_func_~.html @@ -0,0 +1,95 @@ + + + + + + + +PythonQt: Class Members - Functions + + + + + + +
+
+ + + + + + +
+
PythonQt +
+
+
+ + + + + + +
+
+  + +

- ~ -

+
+ + + + diff --git a/functions_g.html b/functions_g.html new file mode 100644 index 000000000..7583dfe6d --- /dev/null +++ b/functions_g.html @@ -0,0 +1,150 @@ + + + + + + + +PythonQt: Class Members + + + + + + +
+
+ + + + + + +
+
PythonQt +
+
+
+ + + + + + +
+
+
Here is a list of all class members with links to the classes they belong to:
+ +

- g -

+
+ + + + diff --git a/functions_h.html b/functions_h.html new file mode 100644 index 000000000..c9315fae7 --- /dev/null +++ b/functions_h.html @@ -0,0 +1,77 @@ + + + + + + + +PythonQt: Class Members + + + + + + +
+
+ + + + + + +
+
PythonQt +
+
+
+ + + + + + +
+
+
Here is a list of all class members with links to the classes they belong to:
+ +

- h -

+
+ + + + diff --git a/functions_i.html b/functions_i.html new file mode 100644 index 000000000..c75d2b818 --- /dev/null +++ b/functions_i.html @@ -0,0 +1,189 @@ + + + + + + + +PythonQt: Class Members + + + + + + +
+
+ + + + + + +
+
PythonQt +
+
+
+ + + + + + +
+
+
Here is a list of all class members with links to the classes they belong to:
+ +

- i -

+
+ + + + diff --git a/functions_l.html b/functions_l.html new file mode 100644 index 000000000..021e1ba64 --- /dev/null +++ b/functions_l.html @@ -0,0 +1,69 @@ + + + + + + + +PythonQt: Class Members + + + + + + +
+
+ + + + + + +
+
PythonQt +
+
+
+ + + + + + +
+
+
Here is a list of all class members with links to the classes they belong to:
+ +

- l -

+
+ + + + diff --git a/functions_m.html b/functions_m.html new file mode 100644 index 000000000..0385e124b --- /dev/null +++ b/functions_m.html @@ -0,0 +1,129 @@ + + + + + + + +PythonQt: Class Members + + + + + + +
+
+ + + + + + +
+
PythonQt +
+
+
+ + + + + + +
+
+
Here is a list of all class members with links to the classes they belong to:
+ +

- m -

+
+ + + + diff --git a/functions_n.html b/functions_n.html new file mode 100644 index 000000000..a38983987 --- /dev/null +++ b/functions_n.html @@ -0,0 +1,90 @@ + + + + + + + +PythonQt: Class Members + + + + + + +
+
+ + + + + + +
+
PythonQt +
+
+
+ + + + + + +
+
+
Here is a list of all class members with links to the classes they belong to:
+ +

- n -

+
+ + + + diff --git a/functions_o.html b/functions_o.html new file mode 100644 index 000000000..1e42e1b64 --- /dev/null +++ b/functions_o.html @@ -0,0 +1,98 @@ + + + + + + + +PythonQt: Class Members + + + + + + +
+
+ + + + + + +
+
PythonQt +
+
+
+ + + + + + +
+
+
Here is a list of all class members with links to the classes they belong to:
+ +

- o -

+
+ + + + diff --git a/functions_p.html b/functions_p.html new file mode 100644 index 000000000..98dcf97a8 --- /dev/null +++ b/functions_p.html @@ -0,0 +1,181 @@ + + + + + + + +PythonQt: Class Members + + + + + + +
+
+ + + + + + +
+
PythonQt +
+
+
+ + + + + + +
+
+
Here is a list of all class members with links to the classes they belong to:
+ +

- p -

+
+ + + + diff --git a/functions_q.html b/functions_q.html new file mode 100644 index 000000000..2df5a68c8 --- /dev/null +++ b/functions_q.html @@ -0,0 +1,86 @@ + + + + + + + +PythonQt: Class Members + + + + + + +
+
+ + + + + + +
+
PythonQt +
+
+
+ + + + + + +
+
+
Here is a list of all class members with links to the classes they belong to:
+ +

- q -

+
+ + + + diff --git a/functions_r.html b/functions_r.html new file mode 100644 index 000000000..03e2145e3 --- /dev/null +++ b/functions_r.html @@ -0,0 +1,126 @@ + + + + + + + +PythonQt: Class Members + + + + + + +
+
+ + + + + + +
+
PythonQt +
+
+
+ + + + + + +
+
+
Here is a list of all class members with links to the classes they belong to:
+ +

- r -

+
+ + + + diff --git a/functions_rela.html b/functions_rela.html new file mode 100644 index 000000000..8836556c8 --- /dev/null +++ b/functions_rela.html @@ -0,0 +1,54 @@ + + + + + + + +PythonQt: Class Members - Related Functions + + + + + + +
+
+ + + + + + +
+
PythonQt +
+
+
+ + + + + + +
+
+
+ + + + diff --git a/functions_s.html b/functions_s.html new file mode 100644 index 000000000..f89f5a53d --- /dev/null +++ b/functions_s.html @@ -0,0 +1,306 @@ + + + + + + + +PythonQt: Class Members + + + + + + +
+
+ + + + + + +
+
PythonQt +
+
+
+ + + + + + +
+
+
Here is a list of all class members with links to the classes they belong to:
+ +

- s -

+
+ + + + diff --git a/functions_t.html b/functions_t.html new file mode 100644 index 000000000..6f1b28e70 --- /dev/null +++ b/functions_t.html @@ -0,0 +1,163 @@ + + + + + + + +PythonQt: Class Members + + + + + + +
+
+ + + + + + +
+
PythonQt +
+
+
+ + + + + + +
+
+
Here is a list of all class members with links to the classes they belong to:
+ +

- t -

+
+ + + + diff --git a/functions_type.html b/functions_type.html new file mode 100644 index 000000000..238550931 --- /dev/null +++ b/functions_type.html @@ -0,0 +1,54 @@ + + + + + + + +PythonQt: Class Members - Typedefs + + + + + + +
+
+ + + + + + +
+
PythonQt +
+
+
+ + + + + + +
+
+
+ + + + diff --git a/functions_u.html b/functions_u.html new file mode 100644 index 000000000..aae301100 --- /dev/null +++ b/functions_u.html @@ -0,0 +1,77 @@ + + + + + + + +PythonQt: Class Members + + + + + + +
+
+ + + + + + +
+
PythonQt +
+
+
+ + + + + + +
+
+
Here is a list of all class members with links to the classes they belong to:
+ +

- u -

+
+ + + + diff --git a/functions_v.html b/functions_v.html new file mode 100644 index 000000000..6681e443c --- /dev/null +++ b/functions_v.html @@ -0,0 +1,59 @@ + + + + + + + +PythonQt: Class Members + + + + + + +
+
+ + + + + + +
+
PythonQt +
+
+
+ + + + + + +
+
+
Here is a list of all class members with links to the classes they belong to:
+ +

- v -

+
+ + + + diff --git a/functions_vars.html b/functions_vars.html new file mode 100644 index 000000000..3f064cb39 --- /dev/null +++ b/functions_vars.html @@ -0,0 +1,323 @@ + + + + + + + +PythonQt: Class Members - Variables + + + + + + +
+
+ + + + + + +
+
PythonQt +
+
+
+ + + + + + +
+
+  + +

- _ -

+ + +

- a -

+ + +

- c -

+ + +

- d -

+ + +

- e -

+ + +

- f -

+ + +

- i -

+ + +

- m -

+ + +

- n -

+ + +

- p -

+ + +

- r -

+ + +

- s -

+ + +

- t -

+ + +

- u -

+
+ + + + diff --git a/functions_w.html b/functions_w.html new file mode 100644 index 000000000..cafc58c6e --- /dev/null +++ b/functions_w.html @@ -0,0 +1,68 @@ + + + + + + + +PythonQt: Class Members + + + + + + +
+
+ + + + + + +
+
PythonQt +
+
+
+ + + + + + +
+
+
Here is a list of all class members with links to the classes they belong to:
+ +

- w -

+
+ + + + diff --git a/functions_~.html b/functions_~.html new file mode 100644 index 000000000..4ab933340 --- /dev/null +++ b/functions_~.html @@ -0,0 +1,95 @@ + + + + + + + +PythonQt: Class Members + + + + + + +
+
+ + + + + + +
+
PythonQt +
+
+
+ + + + + + +
+
+
Here is a list of all class members with links to the classes they belong to:
+ +

- ~ -

+
+ + + + diff --git a/globals.html b/globals.html new file mode 100644 index 000000000..560b4d601 --- /dev/null +++ b/globals.html @@ -0,0 +1,355 @@ + + + + + + + +PythonQt: File Members + + + + + + +
+
+ + + + + + +
+
PythonQt +
+
+
+ + + + + + +
+
+
Here is a list of all file members with links to the files they belong to:
+ +

- a -

+ + +

- b -

+ + +

- c -

+ + +

- i -

+ + +

- m -

+ + +

- o -

+ + +

- p -

+ + +

- q -

+ + +

- r -

+ + +

- s -

+ + +

- u -

+ + +

- v -

+
+ + + + diff --git a/globals_defs.html b/globals_defs.html new file mode 100644 index 000000000..873a10589 --- /dev/null +++ b/globals_defs.html @@ -0,0 +1,172 @@ + + + + + + + +PythonQt: File Members + + + + + + +
+
+ + + + + + +
+
PythonQt +
+
+
+ + + + + + +
+
+  + +

- a -

+ + +

- b -

+ + +

- p -

+ + +

- q -

+ + +

- r -

+ + +

- s -

+
+ + + + diff --git a/globals_enum.html b/globals_enum.html new file mode 100644 index 000000000..af288aa0b --- /dev/null +++ b/globals_enum.html @@ -0,0 +1,54 @@ + + + + + + + +PythonQt: File Members + + + + + + +
+
+ + + + + + +
+
PythonQt +
+
+
+ + + + + + +
+
+
+ + + + diff --git a/globals_eval.html b/globals_eval.html new file mode 100644 index 000000000..96cf687db --- /dev/null +++ b/globals_eval.html @@ -0,0 +1,60 @@ + + + + + + + +PythonQt: File Members + + + + + + +
+
+ + + + + + +
+
PythonQt +
+
+
+ + + + + + +
+
+
+ + + + diff --git a/globals_func.html b/globals_func.html new file mode 100644 index 000000000..1d8494692 --- /dev/null +++ b/globals_func.html @@ -0,0 +1,126 @@ + + + + + + + +PythonQt: File Members + + + + + + +
+
+ + + + + + +
+
PythonQt +
+
+
+ + + + + + +
+
+
+ + + + diff --git a/globals_type.html b/globals_type.html new file mode 100644 index 000000000..cdbcb61b1 --- /dev/null +++ b/globals_type.html @@ -0,0 +1,96 @@ + + + + + + + +PythonQt: File Members + + + + + + +
+
+ + + + + + +
+
PythonQt +
+
+
+ + + + + + +
+
+
+ + + + diff --git a/globals_vars.html b/globals_vars.html new file mode 100644 index 000000000..00d2777ce --- /dev/null +++ b/globals_vars.html @@ -0,0 +1,78 @@ + + + + + + + +PythonQt: File Members + + + + + + +
+
+ + + + + + +
+
PythonQt +
+
+
+ + + + + + +
+
+
+ + + + diff --git a/hierarchy.html b/hierarchy.html new file mode 100644 index 000000000..97dc77fba --- /dev/null +++ b/hierarchy.html @@ -0,0 +1,102 @@ + + + + + + + +PythonQt: Class Hierarchy + + + + + + +
+
+ + + + + + +
+
PythonQt +
+
+
+ + + + + + +
+
+
+
Class Hierarchy
+
+
+
This inheritance list is sorted roughly, but not completely, alphabetically:
+
[detail level 123]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
 C_PythonQtImporterDefines a python object that stores a Qt slot info
 CPythonQtImport::ModuleInfo
 CPythonQtMethodInfo::ParameterInfoStores various informations about a parameter/type name
 CPythonQtClassInfo::ParentClassInfoStore information about parent classes
 CPythonQtArgumentFrameStores C++ arguments for a qt_metacall (which are created when converting data from Python to C++)
 CPythonQtBoolResultObjectDefines a python object that stores a single bool
 CPythonQtClassInfoClass that stores all required information about a Qt object (and an optional associated C++ class name)
 CPythonQtClassWrapper
 CPythonQtConvStatic class that offers methods for type conversion
 CPythonQtCppWrapperFactoryFactory interface for C++ classes that can be wrapped by QObject objects
 CPythonQtDynamicClassInfo
 CPythonQtDynamicSignalInfo
 CPythonQtForeignWrapperFactory
 CPythonQtGILScope
 CPythonQtImportImplements importing of python files into PythonQt
 CPythonQtImportFileInterface
 CPythonQtQFileImporterDefault importer implementation using QFile to load python code
 CPythonQtInstanceWrapperStructPython wrapper object for Qt objects and C++ objects (that are themselves wrapped by wrapper QObjects)
 CPythonQtMemberInfo
 CPythonQtMethodInfoStores information about a specific signal/slot/method
 CPythonQtSlotInfoStores information about a slot, including a next pointer to overloaded slots
 CPythonQtNewOwnerOfThis< T >
 CPythonQtObjectPtrSmart pointer that stores a PyObject pointer and that handles reference counting automatically
 CPythonQtPassOwnershipToCPP< T >
 CPythonQtPassOwnershipToPython< T >
 CPythonQtProperty
 CPythonQtPropertyData
 CPythonQtSafeObjectPtrSmart pointer that stores a PyObject pointer and that handles reference counting automatically
 CPythonQtSignalFunctionObjectDefines a python object that stores a Qt signal info
 CPythonQtSignalTargetStores information about a signal target
 CPythonQtSlotDecorator
 CPythonQtSlotFunctionObjectDefines a python object that stores a Qt slot info
 CPythonQtStdInRedirectDeclares the stdin redirection class
 CPythonQtStdOutRedirectDeclares the stdout redirection class
 CPythonQtThreadStateSaver
 CQObject
 CPythonQtThe main interface to the Python Qt binding, realized as a singleton
 CPythonQtDebugAPISome helper methods that allow testing of the ownership
 CPythonQtPrivateInternal PythonQt details
 CPythonQtSignalReceiverBaseBase class for signal receivers
 CPythonQtSignalReceiverReceives all signals for one QObject
 CPythonQtStdDecorators
 CPythonQtWrapper_QMetaObject
 CQTimer
 CPythonQtSingleShotTimer
+
+
+ + + + diff --git a/index.html b/index.html new file mode 100644 index 000000000..283b3ebee --- /dev/null +++ b/index.html @@ -0,0 +1,67 @@ + + + + + + + +PythonQt: Main Page + + + + + + +
+
+ + + + + + +
+
PythonQt +
+
+
+ + + + + + +
+
+
+PythonQt.jpg +
+

+Introduction

+

PythonQt is a dynamic Python binding for the Qt framework. It offers an easy way to embed the Python scripting language into your C++ Qt applications.

+

The focus of PythonQt is on embedding Python into an existing C++ application, not on writing the whole application completely in Python.

+

If you are looking for a simple way to embed Python objects into your C++/Qt Application and to script parts of your application via Python, PythonQt is the way to go!

+

PythonQt is a stable library that was developed to make the Image Processing and Visualization platform MeVisLab scriptable from Python.

+ +
+
+ + + + diff --git a/jquery.js b/jquery.js new file mode 100644 index 000000000..1ee895ca3 --- /dev/null +++ b/jquery.js @@ -0,0 +1,87 @@ +/*! + * jQuery JavaScript Library v1.7.2 + * http://jquery.com/ + * + * Copyright 2011, John Resig + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * Includes Sizzle.js + * http://sizzlejs.com/ + * Copyright 2011, The Dojo Foundation + * Released under the MIT, BSD, and GPL Licenses. + * + * Date: Wed Mar 21 12:46:34 2012 -0700 + */ +(function(bd,L){var av=bd.document,bu=bd.navigator,bm=bd.location;var b=(function(){var bF=function(b0,b1){return new bF.fn.init(b0,b1,bD)},bU=bd.jQuery,bH=bd.$,bD,bY=/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,bM=/\S/,bI=/^\s+/,bE=/\s+$/,bA=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,bN=/^[\],:{}\s]*$/,bW=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,bP=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,bJ=/(?:^|:|,)(?:\s*\[)+/g,by=/(webkit)[ \/]([\w.]+)/,bR=/(opera)(?:.*version)?[ \/]([\w.]+)/,bQ=/(msie) ([\w.]+)/,bS=/(mozilla)(?:.*? rv:([\w.]+))?/,bB=/-([a-z]|[0-9])/ig,bZ=/^-ms-/,bT=function(b0,b1){return(b1+"").toUpperCase()},bX=bu.userAgent,bV,bC,e,bL=Object.prototype.toString,bG=Object.prototype.hasOwnProperty,bz=Array.prototype.push,bK=Array.prototype.slice,bO=String.prototype.trim,bv=Array.prototype.indexOf,bx={};bF.fn=bF.prototype={constructor:bF,init:function(b0,b4,b3){var b2,b5,b1,b6;if(!b0){return this}if(b0.nodeType){this.context=this[0]=b0;this.length=1;return this}if(b0==="body"&&!b4&&av.body){this.context=av;this[0]=av.body;this.selector=b0;this.length=1;return this}if(typeof b0==="string"){if(b0.charAt(0)==="<"&&b0.charAt(b0.length-1)===">"&&b0.length>=3){b2=[null,b0,null]}else{b2=bY.exec(b0)}if(b2&&(b2[1]||!b4)){if(b2[1]){b4=b4 instanceof bF?b4[0]:b4;b6=(b4?b4.ownerDocument||b4:av);b1=bA.exec(b0);if(b1){if(bF.isPlainObject(b4)){b0=[av.createElement(b1[1])];bF.fn.attr.call(b0,b4,true)}else{b0=[b6.createElement(b1[1])]}}else{b1=bF.buildFragment([b2[1]],[b6]);b0=(b1.cacheable?bF.clone(b1.fragment):b1.fragment).childNodes}return bF.merge(this,b0)}else{b5=av.getElementById(b2[2]);if(b5&&b5.parentNode){if(b5.id!==b2[2]){return b3.find(b0)}this.length=1;this[0]=b5}this.context=av;this.selector=b0;return this}}else{if(!b4||b4.jquery){return(b4||b3).find(b0)}else{return this.constructor(b4).find(b0)}}}else{if(bF.isFunction(b0)){return b3.ready(b0)}}if(b0.selector!==L){this.selector=b0.selector;this.context=b0.context}return bF.makeArray(b0,this)},selector:"",jquery:"1.7.2",length:0,size:function(){return this.length},toArray:function(){return bK.call(this,0)},get:function(b0){return b0==null?this.toArray():(b0<0?this[this.length+b0]:this[b0])},pushStack:function(b1,b3,b0){var b2=this.constructor();if(bF.isArray(b1)){bz.apply(b2,b1)}else{bF.merge(b2,b1)}b2.prevObject=this;b2.context=this.context;if(b3==="find"){b2.selector=this.selector+(this.selector?" ":"")+b0}else{if(b3){b2.selector=this.selector+"."+b3+"("+b0+")"}}return b2},each:function(b1,b0){return bF.each(this,b1,b0)},ready:function(b0){bF.bindReady();bC.add(b0);return this},eq:function(b0){b0=+b0;return b0===-1?this.slice(b0):this.slice(b0,b0+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(bK.apply(this,arguments),"slice",bK.call(arguments).join(","))},map:function(b0){return this.pushStack(bF.map(this,function(b2,b1){return b0.call(b2,b1,b2)}))},end:function(){return this.prevObject||this.constructor(null)},push:bz,sort:[].sort,splice:[].splice};bF.fn.init.prototype=bF.fn;bF.extend=bF.fn.extend=function(){var b9,b2,b0,b1,b6,b7,b5=arguments[0]||{},b4=1,b3=arguments.length,b8=false;if(typeof b5==="boolean"){b8=b5;b5=arguments[1]||{};b4=2}if(typeof b5!=="object"&&!bF.isFunction(b5)){b5={}}if(b3===b4){b5=this;--b4}for(;b40){return}bC.fireWith(av,[bF]);if(bF.fn.trigger){bF(av).trigger("ready").off("ready")}}},bindReady:function(){if(bC){return}bC=bF.Callbacks("once memory");if(av.readyState==="complete"){return setTimeout(bF.ready,1)}if(av.addEventListener){av.addEventListener("DOMContentLoaded",e,false);bd.addEventListener("load",bF.ready,false)}else{if(av.attachEvent){av.attachEvent("onreadystatechange",e);bd.attachEvent("onload",bF.ready);var b0=false;try{b0=bd.frameElement==null}catch(b1){}if(av.documentElement.doScroll&&b0){bw()}}}},isFunction:function(b0){return bF.type(b0)==="function"},isArray:Array.isArray||function(b0){return bF.type(b0)==="array"},isWindow:function(b0){return b0!=null&&b0==b0.window},isNumeric:function(b0){return !isNaN(parseFloat(b0))&&isFinite(b0)},type:function(b0){return b0==null?String(b0):bx[bL.call(b0)]||"object"},isPlainObject:function(b2){if(!b2||bF.type(b2)!=="object"||b2.nodeType||bF.isWindow(b2)){return false}try{if(b2.constructor&&!bG.call(b2,"constructor")&&!bG.call(b2.constructor.prototype,"isPrototypeOf")){return false}}catch(b1){return false}var b0;for(b0 in b2){}return b0===L||bG.call(b2,b0)},isEmptyObject:function(b1){for(var b0 in b1){return false}return true},error:function(b0){throw new Error(b0)},parseJSON:function(b0){if(typeof b0!=="string"||!b0){return null}b0=bF.trim(b0);if(bd.JSON&&bd.JSON.parse){return bd.JSON.parse(b0)}if(bN.test(b0.replace(bW,"@").replace(bP,"]").replace(bJ,""))){return(new Function("return "+b0))()}bF.error("Invalid JSON: "+b0)},parseXML:function(b2){if(typeof b2!=="string"||!b2){return null}var b0,b1;try{if(bd.DOMParser){b1=new DOMParser();b0=b1.parseFromString(b2,"text/xml")}else{b0=new ActiveXObject("Microsoft.XMLDOM");b0.async="false";b0.loadXML(b2)}}catch(b3){b0=L}if(!b0||!b0.documentElement||b0.getElementsByTagName("parsererror").length){bF.error("Invalid XML: "+b2)}return b0},noop:function(){},globalEval:function(b0){if(b0&&bM.test(b0)){(bd.execScript||function(b1){bd["eval"].call(bd,b1)})(b0)}},camelCase:function(b0){return b0.replace(bZ,"ms-").replace(bB,bT)},nodeName:function(b1,b0){return b1.nodeName&&b1.nodeName.toUpperCase()===b0.toUpperCase()},each:function(b3,b6,b2){var b1,b4=0,b5=b3.length,b0=b5===L||bF.isFunction(b3);if(b2){if(b0){for(b1 in b3){if(b6.apply(b3[b1],b2)===false){break}}}else{for(;b40&&b0[0]&&b0[b1-1])||b1===0||bF.isArray(b0));if(b3){for(;b21?aK.call(arguments,0):bG;if(!(--bw)){bC.resolveWith(bC,bx)}}}function bz(bF){return function(bG){bB[bF]=arguments.length>1?aK.call(arguments,0):bG;bC.notifyWith(bE,bB)}}if(e>1){for(;bv
a";bH=bv.getElementsByTagName("*");bE=bv.getElementsByTagName("a")[0];if(!bH||!bH.length||!bE){return{}}bF=av.createElement("select");bx=bF.appendChild(av.createElement("option"));bD=bv.getElementsByTagName("input")[0];bI={leadingWhitespace:(bv.firstChild.nodeType===3),tbody:!bv.getElementsByTagName("tbody").length,htmlSerialize:!!bv.getElementsByTagName("link").length,style:/top/.test(bE.getAttribute("style")),hrefNormalized:(bE.getAttribute("href")==="/a"),opacity:/^0.55/.test(bE.style.opacity),cssFloat:!!bE.style.cssFloat,checkOn:(bD.value==="on"),optSelected:bx.selected,getSetAttribute:bv.className!=="t",enctype:!!av.createElement("form").enctype,html5Clone:av.createElement("nav").cloneNode(true).outerHTML!=="<:nav>",submitBubbles:true,changeBubbles:true,focusinBubbles:false,deleteExpando:true,noCloneEvent:true,inlineBlockNeedsLayout:false,shrinkWrapBlocks:false,reliableMarginRight:true,pixelMargin:true};b.boxModel=bI.boxModel=(av.compatMode==="CSS1Compat");bD.checked=true;bI.noCloneChecked=bD.cloneNode(true).checked;bF.disabled=true;bI.optDisabled=!bx.disabled;try{delete bv.test}catch(bB){bI.deleteExpando=false}if(!bv.addEventListener&&bv.attachEvent&&bv.fireEvent){bv.attachEvent("onclick",function(){bI.noCloneEvent=false});bv.cloneNode(true).fireEvent("onclick")}bD=av.createElement("input");bD.value="t";bD.setAttribute("type","radio");bI.radioValue=bD.value==="t";bD.setAttribute("checked","checked");bD.setAttribute("name","t");bv.appendChild(bD);bC=av.createDocumentFragment();bC.appendChild(bv.lastChild);bI.checkClone=bC.cloneNode(true).cloneNode(true).lastChild.checked;bI.appendChecked=bD.checked;bC.removeChild(bD);bC.appendChild(bv);if(bv.attachEvent){for(by in {submit:1,change:1,focusin:1}){bA="on"+by;bw=(bA in bv);if(!bw){bv.setAttribute(bA,"return;");bw=(typeof bv[bA]==="function")}bI[by+"Bubbles"]=bw}}bC.removeChild(bv);bC=bF=bx=bv=bD=null;b(function(){var bM,bV,bW,bU,bO,bP,bR,bL,bK,bQ,bN,e,bT,bS=av.getElementsByTagName("body")[0];if(!bS){return}bL=1;bT="padding:0;margin:0;border:";bN="position:absolute;top:0;left:0;width:1px;height:1px;";e=bT+"0;visibility:hidden;";bK="style='"+bN+bT+"5px solid #000;";bQ="
";bM=av.createElement("div");bM.style.cssText=e+"width:0;height:0;position:static;top:0;margin-top:"+bL+"px";bS.insertBefore(bM,bS.firstChild);bv=av.createElement("div");bM.appendChild(bv);bv.innerHTML="
t
";bz=bv.getElementsByTagName("td");bw=(bz[0].offsetHeight===0);bz[0].style.display="";bz[1].style.display="none";bI.reliableHiddenOffsets=bw&&(bz[0].offsetHeight===0);if(bd.getComputedStyle){bv.innerHTML="";bR=av.createElement("div");bR.style.width="0";bR.style.marginRight="0";bv.style.width="2px";bv.appendChild(bR);bI.reliableMarginRight=(parseInt((bd.getComputedStyle(bR,null)||{marginRight:0}).marginRight,10)||0)===0}if(typeof bv.style.zoom!=="undefined"){bv.innerHTML="";bv.style.width=bv.style.padding="1px";bv.style.border=0;bv.style.overflow="hidden";bv.style.display="inline";bv.style.zoom=1;bI.inlineBlockNeedsLayout=(bv.offsetWidth===3);bv.style.display="block";bv.style.overflow="visible";bv.innerHTML="
";bI.shrinkWrapBlocks=(bv.offsetWidth!==3)}bv.style.cssText=bN+e;bv.innerHTML=bQ;bV=bv.firstChild;bW=bV.firstChild;bO=bV.nextSibling.firstChild.firstChild;bP={doesNotAddBorder:(bW.offsetTop!==5),doesAddBorderForTableAndCells:(bO.offsetTop===5)};bW.style.position="fixed";bW.style.top="20px";bP.fixedPosition=(bW.offsetTop===20||bW.offsetTop===15);bW.style.position=bW.style.top="";bV.style.overflow="hidden";bV.style.position="relative";bP.subtractsBorderForOverflowNotVisible=(bW.offsetTop===-5);bP.doesNotIncludeMarginInBodyOffset=(bS.offsetTop!==bL);if(bd.getComputedStyle){bv.style.marginTop="1%";bI.pixelMargin=(bd.getComputedStyle(bv,null)||{marginTop:0}).marginTop!=="1%"}if(typeof bM.style.zoom!=="undefined"){bM.style.zoom=1}bS.removeChild(bM);bR=bv=bM=null;b.extend(bI,bP)});return bI})();var aT=/^(?:\{.*\}|\[.*\])$/,aA=/([A-Z])/g;b.extend({cache:{},uuid:0,expando:"jQuery"+(b.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:true,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:true},hasData:function(e){e=e.nodeType?b.cache[e[b.expando]]:e[b.expando];return !!e&&!S(e)},data:function(bx,bv,bz,by){if(!b.acceptData(bx)){return}var bG,bA,bD,bE=b.expando,bC=typeof bv==="string",bF=bx.nodeType,e=bF?b.cache:bx,bw=bF?bx[bE]:bx[bE]&&bE,bB=bv==="events";if((!bw||!e[bw]||(!bB&&!by&&!e[bw].data))&&bC&&bz===L){return}if(!bw){if(bF){bx[bE]=bw=++b.uuid}else{bw=bE}}if(!e[bw]){e[bw]={};if(!bF){e[bw].toJSON=b.noop}}if(typeof bv==="object"||typeof bv==="function"){if(by){e[bw]=b.extend(e[bw],bv)}else{e[bw].data=b.extend(e[bw].data,bv)}}bG=bA=e[bw];if(!by){if(!bA.data){bA.data={}}bA=bA.data}if(bz!==L){bA[b.camelCase(bv)]=bz}if(bB&&!bA[bv]){return bG.events}if(bC){bD=bA[bv];if(bD==null){bD=bA[b.camelCase(bv)]}}else{bD=bA}return bD},removeData:function(bx,bv,by){if(!b.acceptData(bx)){return}var bB,bA,bz,bC=b.expando,bD=bx.nodeType,e=bD?b.cache:bx,bw=bD?bx[bC]:bC;if(!e[bw]){return}if(bv){bB=by?e[bw]:e[bw].data;if(bB){if(!b.isArray(bv)){if(bv in bB){bv=[bv]}else{bv=b.camelCase(bv);if(bv in bB){bv=[bv]}else{bv=bv.split(" ")}}}for(bA=0,bz=bv.length;bA1,null,false)},removeData:function(e){return this.each(function(){b.removeData(this,e)})}});function a6(bx,bw,by){if(by===L&&bx.nodeType===1){var bv="data-"+bw.replace(aA,"-$1").toLowerCase();by=bx.getAttribute(bv);if(typeof by==="string"){try{by=by==="true"?true:by==="false"?false:by==="null"?null:b.isNumeric(by)?+by:aT.test(by)?b.parseJSON(by):by}catch(bz){}b.data(bx,bw,by)}else{by=L}}return by}function S(bv){for(var e in bv){if(e==="data"&&b.isEmptyObject(bv[e])){continue}if(e!=="toJSON"){return false}}return true}function bj(by,bx,bA){var bw=bx+"defer",bv=bx+"queue",e=bx+"mark",bz=b._data(by,bw);if(bz&&(bA==="queue"||!b._data(by,bv))&&(bA==="mark"||!b._data(by,e))){setTimeout(function(){if(!b._data(by,bv)&&!b._data(by,e)){b.removeData(by,bw,true);bz.fire()}},0)}}b.extend({_mark:function(bv,e){if(bv){e=(e||"fx")+"mark";b._data(bv,e,(b._data(bv,e)||0)+1)}},_unmark:function(by,bx,bv){if(by!==true){bv=bx;bx=by;by=false}if(bx){bv=bv||"fx";var e=bv+"mark",bw=by?0:((b._data(bx,e)||1)-1);if(bw){b._data(bx,e,bw)}else{b.removeData(bx,e,true);bj(bx,bv,"mark")}}},queue:function(bv,e,bx){var bw;if(bv){e=(e||"fx")+"queue";bw=b._data(bv,e);if(bx){if(!bw||b.isArray(bx)){bw=b._data(bv,e,b.makeArray(bx))}else{bw.push(bx)}}return bw||[]}},dequeue:function(by,bx){bx=bx||"fx";var bv=b.queue(by,bx),bw=bv.shift(),e={};if(bw==="inprogress"){bw=bv.shift()}if(bw){if(bx==="fx"){bv.unshift("inprogress")}b._data(by,bx+".run",e);bw.call(by,function(){b.dequeue(by,bx)},e)}if(!bv.length){b.removeData(by,bx+"queue "+bx+".run",true);bj(by,bx,"queue")}}});b.fn.extend({queue:function(e,bv){var bw=2;if(typeof e!=="string"){bv=e;e="fx";bw--}if(arguments.length1)},removeAttr:function(e){return this.each(function(){b.removeAttr(this,e)})},prop:function(e,bv){return b.access(this,b.prop,e,bv,arguments.length>1)},removeProp:function(e){e=b.propFix[e]||e;return this.each(function(){try{this[e]=L;delete this[e]}catch(bv){}})},addClass:function(by){var bA,bw,bv,bx,bz,bB,e;if(b.isFunction(by)){return this.each(function(bC){b(this).addClass(by.call(this,bC,this.className))})}if(by&&typeof by==="string"){bA=by.split(ag);for(bw=0,bv=this.length;bw-1){return true}}return false},val:function(bx){var e,bv,by,bw=this[0];if(!arguments.length){if(bw){e=b.valHooks[bw.type]||b.valHooks[bw.nodeName.toLowerCase()];if(e&&"get" in e&&(bv=e.get(bw,"value"))!==L){return bv}bv=bw.value;return typeof bv==="string"?bv.replace(aV,""):bv==null?"":bv}return}by=b.isFunction(bx);return this.each(function(bA){var bz=b(this),bB;if(this.nodeType!==1){return}if(by){bB=bx.call(this,bA,bz.val())}else{bB=bx}if(bB==null){bB=""}else{if(typeof bB==="number"){bB+=""}else{if(b.isArray(bB)){bB=b.map(bB,function(bC){return bC==null?"":bC+""})}}}e=b.valHooks[this.type]||b.valHooks[this.nodeName.toLowerCase()];if(!e||!("set" in e)||e.set(this,bB,"value")===L){this.value=bB}})}});b.extend({valHooks:{option:{get:function(e){var bv=e.attributes.value;return !bv||bv.specified?e.value:e.text}},select:{get:function(e){var bA,bv,bz,bx,by=e.selectedIndex,bB=[],bC=e.options,bw=e.type==="select-one";if(by<0){return null}bv=bw?by:0;bz=bw?by+1:bC.length;for(;bv=0});if(!e.length){bv.selectedIndex=-1}return e}}},attrFn:{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true},attr:function(bA,bx,bB,bz){var bw,e,by,bv=bA.nodeType;if(!bA||bv===3||bv===8||bv===2){return}if(bz&&bx in b.attrFn){return b(bA)[bx](bB)}if(typeof bA.getAttribute==="undefined"){return b.prop(bA,bx,bB)}by=bv!==1||!b.isXMLDoc(bA);if(by){bx=bx.toLowerCase();e=b.attrHooks[bx]||(ao.test(bx)?aZ:bf)}if(bB!==L){if(bB===null){b.removeAttr(bA,bx);return}else{if(e&&"set" in e&&by&&(bw=e.set(bA,bB,bx))!==L){return bw}else{bA.setAttribute(bx,""+bB);return bB}}}else{if(e&&"get" in e&&by&&(bw=e.get(bA,bx))!==null){return bw}else{bw=bA.getAttribute(bx);return bw===null?L:bw}}},removeAttr:function(by,bA){var bz,bB,bw,e,bv,bx=0;if(bA&&by.nodeType===1){bB=bA.toLowerCase().split(ag);e=bB.length;for(;bx=0)}}})});var be=/^(?:textarea|input|select)$/i,n=/^([^\.]*)?(?:\.(.+))?$/,J=/(?:^|\s)hover(\.\S+)?\b/,aP=/^key/,bg=/^(?:mouse|contextmenu)|click/,T=/^(?:focusinfocus|focusoutblur)$/,U=/^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/,Y=function(e){var bv=U.exec(e);if(bv){bv[1]=(bv[1]||"").toLowerCase();bv[3]=bv[3]&&new RegExp("(?:^|\\s)"+bv[3]+"(?:\\s|$)")}return bv},j=function(bw,e){var bv=bw.attributes||{};return((!e[1]||bw.nodeName.toLowerCase()===e[1])&&(!e[2]||(bv.id||{}).value===e[2])&&(!e[3]||e[3].test((bv["class"]||{}).value)))},bt=function(e){return b.event.special.hover?e:e.replace(J,"mouseenter$1 mouseleave$1")};b.event={add:function(bx,bC,bJ,bA,by){var bD,bB,bK,bI,bH,bF,e,bG,bv,bz,bw,bE;if(bx.nodeType===3||bx.nodeType===8||!bC||!bJ||!(bD=b._data(bx))){return}if(bJ.handler){bv=bJ;bJ=bv.handler;by=bv.selector}if(!bJ.guid){bJ.guid=b.guid++}bK=bD.events;if(!bK){bD.events=bK={}}bB=bD.handle;if(!bB){bD.handle=bB=function(bL){return typeof b!=="undefined"&&(!bL||b.event.triggered!==bL.type)?b.event.dispatch.apply(bB.elem,arguments):L};bB.elem=bx}bC=b.trim(bt(bC)).split(" ");for(bI=0;bI=0){bG=bG.slice(0,-1);bw=true}if(bG.indexOf(".")>=0){bx=bG.split(".");bG=bx.shift();bx.sort()}if((!bA||b.event.customEvent[bG])&&!b.event.global[bG]){return}bv=typeof bv==="object"?bv[b.expando]?bv:new b.Event(bG,bv):new b.Event(bG);bv.type=bG;bv.isTrigger=true;bv.exclusive=bw;bv.namespace=bx.join(".");bv.namespace_re=bv.namespace?new RegExp("(^|\\.)"+bx.join("\\.(?:.*\\.)?")+"(\\.|$)"):null;by=bG.indexOf(":")<0?"on"+bG:"";if(!bA){e=b.cache;for(bC in e){if(e[bC].events&&e[bC].events[bG]){b.event.trigger(bv,bD,e[bC].handle.elem,true)}}return}bv.result=L;if(!bv.target){bv.target=bA}bD=bD!=null?b.makeArray(bD):[];bD.unshift(bv);bF=b.event.special[bG]||{};if(bF.trigger&&bF.trigger.apply(bA,bD)===false){return}bB=[[bA,bF.bindType||bG]];if(!bJ&&!bF.noBubble&&!b.isWindow(bA)){bI=bF.delegateType||bG;bH=T.test(bI+bG)?bA:bA.parentNode;bz=null;for(;bH;bH=bH.parentNode){bB.push([bH,bI]);bz=bH}if(bz&&bz===bA.ownerDocument){bB.push([bz.defaultView||bz.parentWindow||bd,bI])}}for(bC=0;bCbC){bv.push({elem:this,matches:bD.slice(bC)})}for(bJ=0;bJ0?this.on(e,null,bx,bw):this.trigger(e)};if(b.attrFn){b.attrFn[e]=true}if(aP.test(e)){b.event.fixHooks[e]=b.event.keyHooks}if(bg.test(e)){b.event.fixHooks[e]=b.event.mouseHooks}}); +/*! + * Sizzle CSS Selector Engine + * Copyright 2011, The Dojo Foundation + * Released under the MIT, BSD, and GPL Licenses. + * More information: http://sizzlejs.com/ + */ +(function(){var bH=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,bC="sizcache"+(Math.random()+"").replace(".",""),bI=0,bL=Object.prototype.toString,bB=false,bA=true,bK=/\\/g,bO=/\r\n/g,bQ=/\W/;[0,0].sort(function(){bA=false;return 0});var by=function(bV,e,bY,bZ){bY=bY||[];e=e||av;var b1=e;if(e.nodeType!==1&&e.nodeType!==9){return[]}if(!bV||typeof bV!=="string"){return bY}var bS,b3,b6,bR,b2,b5,b4,bX,bU=true,bT=by.isXML(e),bW=[],b0=bV;do{bH.exec("");bS=bH.exec(b0);if(bS){b0=bS[3];bW.push(bS[1]);if(bS[2]){bR=bS[3];break}}}while(bS);if(bW.length>1&&bD.exec(bV)){if(bW.length===2&&bE.relative[bW[0]]){b3=bM(bW[0]+bW[1],e,bZ)}else{b3=bE.relative[bW[0]]?[e]:by(bW.shift(),e);while(bW.length){bV=bW.shift();if(bE.relative[bV]){bV+=bW.shift()}b3=bM(bV,b3,bZ)}}}else{if(!bZ&&bW.length>1&&e.nodeType===9&&!bT&&bE.match.ID.test(bW[0])&&!bE.match.ID.test(bW[bW.length-1])){b2=by.find(bW.shift(),e,bT);e=b2.expr?by.filter(b2.expr,b2.set)[0]:b2.set[0]}if(e){b2=bZ?{expr:bW.pop(),set:bF(bZ)}:by.find(bW.pop(),bW.length===1&&(bW[0]==="~"||bW[0]==="+")&&e.parentNode?e.parentNode:e,bT);b3=b2.expr?by.filter(b2.expr,b2.set):b2.set;if(bW.length>0){b6=bF(b3)}else{bU=false}while(bW.length){b5=bW.pop();b4=b5;if(!bE.relative[b5]){b5=""}else{b4=bW.pop()}if(b4==null){b4=e}bE.relative[b5](b6,b4,bT)}}else{b6=bW=[]}}if(!b6){b6=b3}if(!b6){by.error(b5||bV)}if(bL.call(b6)==="[object Array]"){if(!bU){bY.push.apply(bY,b6)}else{if(e&&e.nodeType===1){for(bX=0;b6[bX]!=null;bX++){if(b6[bX]&&(b6[bX]===true||b6[bX].nodeType===1&&by.contains(e,b6[bX]))){bY.push(b3[bX])}}}else{for(bX=0;b6[bX]!=null;bX++){if(b6[bX]&&b6[bX].nodeType===1){bY.push(b3[bX])}}}}}else{bF(b6,bY)}if(bR){by(bR,b1,bY,bZ);by.uniqueSort(bY)}return bY};by.uniqueSort=function(bR){if(bJ){bB=bA;bR.sort(bJ);if(bB){for(var e=1;e0};by.find=function(bX,e,bY){var bW,bS,bU,bT,bV,bR;if(!bX){return[]}for(bS=0,bU=bE.order.length;bS":function(bW,bR){var bV,bU=typeof bR==="string",bS=0,e=bW.length;if(bU&&!bQ.test(bR)){bR=bR.toLowerCase();for(;bS=0)){if(!bS){e.push(bV)}}else{if(bS){bR[bU]=false}}}}return false},ID:function(e){return e[1].replace(bK,"")},TAG:function(bR,e){return bR[1].replace(bK,"").toLowerCase()},CHILD:function(e){if(e[1]==="nth"){if(!e[2]){by.error(e[0])}e[2]=e[2].replace(/^\+|\s*/g,"");var bR=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(e[2]==="even"&&"2n"||e[2]==="odd"&&"2n+1"||!/\D/.test(e[2])&&"0n+"+e[2]||e[2]);e[2]=(bR[1]+(bR[2]||1))-0;e[3]=bR[3]-0}else{if(e[2]){by.error(e[0])}}e[0]=bI++;return e},ATTR:function(bU,bR,bS,e,bV,bW){var bT=bU[1]=bU[1].replace(bK,"");if(!bW&&bE.attrMap[bT]){bU[1]=bE.attrMap[bT]}bU[4]=(bU[4]||bU[5]||"").replace(bK,"");if(bU[2]==="~="){bU[4]=" "+bU[4]+" "}return bU},PSEUDO:function(bU,bR,bS,e,bV){if(bU[1]==="not"){if((bH.exec(bU[3])||"").length>1||/^\w/.test(bU[3])){bU[3]=by(bU[3],null,null,bR)}else{var bT=by.filter(bU[3],bR,bS,true^bV);if(!bS){e.push.apply(e,bT)}return false}}else{if(bE.match.POS.test(bU[0])||bE.match.CHILD.test(bU[0])){return true}}return bU},POS:function(e){e.unshift(true);return e}},filters:{enabled:function(e){return e.disabled===false&&e.type!=="hidden"},disabled:function(e){return e.disabled===true},checked:function(e){return e.checked===true},selected:function(e){if(e.parentNode){e.parentNode.selectedIndex}return e.selected===true},parent:function(e){return !!e.firstChild},empty:function(e){return !e.firstChild},has:function(bS,bR,e){return !!by(e[3],bS).length},header:function(e){return(/h\d/i).test(e.nodeName)},text:function(bS){var e=bS.getAttribute("type"),bR=bS.type;return bS.nodeName.toLowerCase()==="input"&&"text"===bR&&(e===bR||e===null)},radio:function(e){return e.nodeName.toLowerCase()==="input"&&"radio"===e.type},checkbox:function(e){return e.nodeName.toLowerCase()==="input"&&"checkbox"===e.type},file:function(e){return e.nodeName.toLowerCase()==="input"&&"file"===e.type},password:function(e){return e.nodeName.toLowerCase()==="input"&&"password"===e.type},submit:function(bR){var e=bR.nodeName.toLowerCase();return(e==="input"||e==="button")&&"submit"===bR.type},image:function(e){return e.nodeName.toLowerCase()==="input"&&"image"===e.type},reset:function(bR){var e=bR.nodeName.toLowerCase();return(e==="input"||e==="button")&&"reset"===bR.type},button:function(bR){var e=bR.nodeName.toLowerCase();return e==="input"&&"button"===bR.type||e==="button"},input:function(e){return(/input|select|textarea|button/i).test(e.nodeName)},focus:function(e){return e===e.ownerDocument.activeElement}},setFilters:{first:function(bR,e){return e===0},last:function(bS,bR,e,bT){return bR===bT.length-1},even:function(bR,e){return e%2===0},odd:function(bR,e){return e%2===1},lt:function(bS,bR,e){return bRe[3]-0},nth:function(bS,bR,e){return e[3]-0===bR},eq:function(bS,bR,e){return e[3]-0===bR}},filter:{PSEUDO:function(bS,bX,bW,bY){var e=bX[1],bR=bE.filters[e];if(bR){return bR(bS,bW,bX,bY)}else{if(e==="contains"){return(bS.textContent||bS.innerText||bw([bS])||"").indexOf(bX[3])>=0}else{if(e==="not"){var bT=bX[3];for(var bV=0,bU=bT.length;bV=0)}}},ID:function(bR,e){return bR.nodeType===1&&bR.getAttribute("id")===e},TAG:function(bR,e){return(e==="*"&&bR.nodeType===1)||!!bR.nodeName&&bR.nodeName.toLowerCase()===e},CLASS:function(bR,e){return(" "+(bR.className||bR.getAttribute("class"))+" ").indexOf(e)>-1},ATTR:function(bV,bT){var bS=bT[1],e=by.attr?by.attr(bV,bS):bE.attrHandle[bS]?bE.attrHandle[bS](bV):bV[bS]!=null?bV[bS]:bV.getAttribute(bS),bW=e+"",bU=bT[2],bR=bT[4];return e==null?bU==="!=":!bU&&by.attr?e!=null:bU==="="?bW===bR:bU==="*="?bW.indexOf(bR)>=0:bU==="~="?(" "+bW+" ").indexOf(bR)>=0:!bR?bW&&e!==false:bU==="!="?bW!==bR:bU==="^="?bW.indexOf(bR)===0:bU==="$="?bW.substr(bW.length-bR.length)===bR:bU==="|="?bW===bR||bW.substr(0,bR.length+1)===bR+"-":false},POS:function(bU,bR,bS,bV){var e=bR[2],bT=bE.setFilters[e];if(bT){return bT(bU,bS,bR,bV)}}}};var bD=bE.match.POS,bx=function(bR,e){return"\\"+(e-0+1)};for(var bz in bE.match){bE.match[bz]=new RegExp(bE.match[bz].source+(/(?![^\[]*\])(?![^\(]*\))/.source));bE.leftMatch[bz]=new RegExp(/(^(?:.|\r|\n)*?)/.source+bE.match[bz].source.replace(/\\(\d+)/g,bx))}bE.match.globalPOS=bD;var bF=function(bR,e){bR=Array.prototype.slice.call(bR,0);if(e){e.push.apply(e,bR);return e}return bR};try{Array.prototype.slice.call(av.documentElement.childNodes,0)[0].nodeType}catch(bP){bF=function(bU,bT){var bS=0,bR=bT||[];if(bL.call(bU)==="[object Array]"){Array.prototype.push.apply(bR,bU)}else{if(typeof bU.length==="number"){for(var e=bU.length;bS";e.insertBefore(bR,e.firstChild);if(av.getElementById(bS)){bE.find.ID=function(bU,bV,bW){if(typeof bV.getElementById!=="undefined"&&!bW){var bT=bV.getElementById(bU[1]);return bT?bT.id===bU[1]||typeof bT.getAttributeNode!=="undefined"&&bT.getAttributeNode("id").nodeValue===bU[1]?[bT]:L:[]}};bE.filter.ID=function(bV,bT){var bU=typeof bV.getAttributeNode!=="undefined"&&bV.getAttributeNode("id");return bV.nodeType===1&&bU&&bU.nodeValue===bT}}e.removeChild(bR);e=bR=null})();(function(){var e=av.createElement("div");e.appendChild(av.createComment(""));if(e.getElementsByTagName("*").length>0){bE.find.TAG=function(bR,bV){var bU=bV.getElementsByTagName(bR[1]);if(bR[1]==="*"){var bT=[];for(var bS=0;bU[bS];bS++){if(bU[bS].nodeType===1){bT.push(bU[bS])}}bU=bT}return bU}}e.innerHTML="";if(e.firstChild&&typeof e.firstChild.getAttribute!=="undefined"&&e.firstChild.getAttribute("href")!=="#"){bE.attrHandle.href=function(bR){return bR.getAttribute("href",2)}}e=null})();if(av.querySelectorAll){(function(){var e=by,bT=av.createElement("div"),bS="__sizzle__";bT.innerHTML="

";if(bT.querySelectorAll&&bT.querySelectorAll(".TEST").length===0){return}by=function(b4,bV,bZ,b3){bV=bV||av;if(!b3&&!by.isXML(bV)){var b2=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b4);if(b2&&(bV.nodeType===1||bV.nodeType===9)){if(b2[1]){return bF(bV.getElementsByTagName(b4),bZ)}else{if(b2[2]&&bE.find.CLASS&&bV.getElementsByClassName){return bF(bV.getElementsByClassName(b2[2]),bZ)}}}if(bV.nodeType===9){if(b4==="body"&&bV.body){return bF([bV.body],bZ)}else{if(b2&&b2[3]){var bY=bV.getElementById(b2[3]);if(bY&&bY.parentNode){if(bY.id===b2[3]){return bF([bY],bZ)}}else{return bF([],bZ)}}}try{return bF(bV.querySelectorAll(b4),bZ)}catch(b0){}}else{if(bV.nodeType===1&&bV.nodeName.toLowerCase()!=="object"){var bW=bV,bX=bV.getAttribute("id"),bU=bX||bS,b6=bV.parentNode,b5=/^\s*[+~]/.test(b4);if(!bX){bV.setAttribute("id",bU)}else{bU=bU.replace(/'/g,"\\$&")}if(b5&&b6){bV=bV.parentNode}try{if(!b5||b6){return bF(bV.querySelectorAll("[id='"+bU+"'] "+b4),bZ)}}catch(b1){}finally{if(!bX){bW.removeAttribute("id")}}}}}return e(b4,bV,bZ,b3)};for(var bR in e){by[bR]=e[bR]}bT=null})()}(function(){var e=av.documentElement,bS=e.matchesSelector||e.mozMatchesSelector||e.webkitMatchesSelector||e.msMatchesSelector;if(bS){var bU=!bS.call(av.createElement("div"),"div"),bR=false;try{bS.call(av.documentElement,"[test!='']:sizzle")}catch(bT){bR=true}by.matchesSelector=function(bW,bY){bY=bY.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!by.isXML(bW)){try{if(bR||!bE.match.PSEUDO.test(bY)&&!/!=/.test(bY)){var bV=bS.call(bW,bY);if(bV||!bU||bW.document&&bW.document.nodeType!==11){return bV}}}catch(bX){}}return by(bY,null,null,[bW]).length>0}}})();(function(){var e=av.createElement("div");e.innerHTML="
";if(!e.getElementsByClassName||e.getElementsByClassName("e").length===0){return}e.lastChild.className="e";if(e.getElementsByClassName("e").length===1){return}bE.order.splice(1,0,"CLASS");bE.find.CLASS=function(bR,bS,bT){if(typeof bS.getElementsByClassName!=="undefined"&&!bT){return bS.getElementsByClassName(bR[1])}};e=null})();function bv(bR,bW,bV,bZ,bX,bY){for(var bT=0,bS=bZ.length;bT0){bU=e;break}}}e=e[bR]}bZ[bT]=bU}}}if(av.documentElement.contains){by.contains=function(bR,e){return bR!==e&&(bR.contains?bR.contains(e):true)}}else{if(av.documentElement.compareDocumentPosition){by.contains=function(bR,e){return !!(bR.compareDocumentPosition(e)&16)}}else{by.contains=function(){return false}}}by.isXML=function(e){var bR=(e?e.ownerDocument||e:0).documentElement;return bR?bR.nodeName!=="HTML":false};var bM=function(bS,e,bW){var bV,bX=[],bU="",bY=e.nodeType?[e]:e;while((bV=bE.match.PSEUDO.exec(bS))){bU+=bV[0];bS=bS.replace(bE.match.PSEUDO,"")}bS=bE.relative[bS]?bS+"*":bS;for(var bT=0,bR=bY.length;bT0){for(bB=bA;bB=0:b.filter(e,this).length>0:this.filter(e).length>0)},closest:function(by,bx){var bv=[],bw,e,bz=this[0];if(b.isArray(by)){var bB=1;while(bz&&bz.ownerDocument&&bz!==bx){for(bw=0;bw-1:b.find.matchesSelector(bz,by)){bv.push(bz);break}else{bz=bz.parentNode;if(!bz||!bz.ownerDocument||bz===bx||bz.nodeType===11){break}}}}bv=bv.length>1?b.unique(bv):bv;return this.pushStack(bv,"closest",by)},index:function(e){if(!e){return(this[0]&&this[0].parentNode)?this.prevAll().length:-1}if(typeof e==="string"){return b.inArray(this[0],b(e))}return b.inArray(e.jquery?e[0]:e,this)},add:function(e,bv){var bx=typeof e==="string"?b(e,bv):b.makeArray(e&&e.nodeType?[e]:e),bw=b.merge(this.get(),bx);return this.pushStack(B(bx[0])||B(bw[0])?bw:b.unique(bw))},andSelf:function(){return this.add(this.prevObject)}});function B(e){return !e||!e.parentNode||e.parentNode.nodeType===11}b.each({parent:function(bv){var e=bv.parentNode;return e&&e.nodeType!==11?e:null},parents:function(e){return b.dir(e,"parentNode")},parentsUntil:function(bv,e,bw){return b.dir(bv,"parentNode",bw)},next:function(e){return b.nth(e,2,"nextSibling")},prev:function(e){return b.nth(e,2,"previousSibling")},nextAll:function(e){return b.dir(e,"nextSibling")},prevAll:function(e){return b.dir(e,"previousSibling")},nextUntil:function(bv,e,bw){return b.dir(bv,"nextSibling",bw)},prevUntil:function(bv,e,bw){return b.dir(bv,"previousSibling",bw)},siblings:function(e){return b.sibling((e.parentNode||{}).firstChild,e)},children:function(e){return b.sibling(e.firstChild)},contents:function(e){return b.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:b.makeArray(e.childNodes)}},function(e,bv){b.fn[e]=function(by,bw){var bx=b.map(this,bv,by);if(!ab.test(e)){bw=by}if(bw&&typeof bw==="string"){bx=b.filter(bw,bx)}bx=this.length>1&&!ay[e]?b.unique(bx):bx;if((this.length>1||bb.test(bw))&&aq.test(e)){bx=bx.reverse()}return this.pushStack(bx,e,P.call(arguments).join(","))}});b.extend({filter:function(bw,e,bv){if(bv){bw=":not("+bw+")"}return e.length===1?b.find.matchesSelector(e[0],bw)?[e[0]]:[]:b.find.matches(bw,e)},dir:function(bw,bv,by){var e=[],bx=bw[bv];while(bx&&bx.nodeType!==9&&(by===L||bx.nodeType!==1||!b(bx).is(by))){if(bx.nodeType===1){e.push(bx)}bx=bx[bv]}return e},nth:function(by,e,bw,bx){e=e||1;var bv=0;for(;by;by=by[bw]){if(by.nodeType===1&&++bv===e){break}}return by},sibling:function(bw,bv){var e=[];for(;bw;bw=bw.nextSibling){if(bw.nodeType===1&&bw!==bv){e.push(bw)}}return e}});function aH(bx,bw,e){bw=bw||0;if(b.isFunction(bw)){return b.grep(bx,function(bz,by){var bA=!!bw.call(bz,by,bz);return bA===e})}else{if(bw.nodeType){return b.grep(bx,function(bz,by){return(bz===bw)===e})}else{if(typeof bw==="string"){var bv=b.grep(bx,function(by){return by.nodeType===1});if(bp.test(bw)){return b.filter(bw,bv,!e)}else{bw=b.filter(bw,bv)}}}}return b.grep(bx,function(bz,by){return(b.inArray(bz,bw)>=0)===e})}function a(e){var bw=aS.split("|"),bv=e.createDocumentFragment();if(bv.createElement){while(bw.length){bv.createElement(bw.pop())}}return bv}var aS="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",ah=/ jQuery\d+="(?:\d+|null)"/g,ar=/^\s+/,R=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,d=/<([\w:]+)/,v=/]","i"),o=/checked\s*(?:[^=]|=\s*.checked.)/i,bn=/\/(java|ecma)script/i,aO=/^\s*",""],legend:[1,"
","
"],thead:[1,"","
"],tr:[2,"","
"],td:[3,"","
"],col:[2,"","
"],area:[1,"",""],_default:[0,"",""]},ac=a(av);ax.optgroup=ax.option;ax.tbody=ax.tfoot=ax.colgroup=ax.caption=ax.thead;ax.th=ax.td;if(!b.support.htmlSerialize){ax._default=[1,"div
","
"]}b.fn.extend({text:function(e){return b.access(this,function(bv){return bv===L?b.text(this):this.empty().append((this[0]&&this[0].ownerDocument||av).createTextNode(bv))},null,e,arguments.length)},wrapAll:function(e){if(b.isFunction(e)){return this.each(function(bw){b(this).wrapAll(e.call(this,bw))})}if(this[0]){var bv=b(e,this[0].ownerDocument).eq(0).clone(true);if(this[0].parentNode){bv.insertBefore(this[0])}bv.map(function(){var bw=this;while(bw.firstChild&&bw.firstChild.nodeType===1){bw=bw.firstChild}return bw}).append(this)}return this},wrapInner:function(e){if(b.isFunction(e)){return this.each(function(bv){b(this).wrapInner(e.call(this,bv))})}return this.each(function(){var bv=b(this),bw=bv.contents();if(bw.length){bw.wrapAll(e)}else{bv.append(e)}})},wrap:function(e){var bv=b.isFunction(e);return this.each(function(bw){b(this).wrapAll(bv?e.call(this,bw):e)})},unwrap:function(){return this.parent().each(function(){if(!b.nodeName(this,"body")){b(this).replaceWith(this.childNodes)}}).end()},append:function(){return this.domManip(arguments,true,function(e){if(this.nodeType===1){this.appendChild(e)}})},prepend:function(){return this.domManip(arguments,true,function(e){if(this.nodeType===1){this.insertBefore(e,this.firstChild)}})},before:function(){if(this[0]&&this[0].parentNode){return this.domManip(arguments,false,function(bv){this.parentNode.insertBefore(bv,this)})}else{if(arguments.length){var e=b.clean(arguments);e.push.apply(e,this.toArray());return this.pushStack(e,"before",arguments)}}},after:function(){if(this[0]&&this[0].parentNode){return this.domManip(arguments,false,function(bv){this.parentNode.insertBefore(bv,this.nextSibling)})}else{if(arguments.length){var e=this.pushStack(this,"after",arguments);e.push.apply(e,b.clean(arguments));return e}}},remove:function(e,bx){for(var bv=0,bw;(bw=this[bv])!=null;bv++){if(!e||b.filter(e,[bw]).length){if(!bx&&bw.nodeType===1){b.cleanData(bw.getElementsByTagName("*"));b.cleanData([bw])}if(bw.parentNode){bw.parentNode.removeChild(bw)}}}return this},empty:function(){for(var e=0,bv;(bv=this[e])!=null;e++){if(bv.nodeType===1){b.cleanData(bv.getElementsByTagName("*"))}while(bv.firstChild){bv.removeChild(bv.firstChild)}}return this},clone:function(bv,e){bv=bv==null?false:bv;e=e==null?bv:e;return this.map(function(){return b.clone(this,bv,e)})},html:function(e){return b.access(this,function(by){var bx=this[0]||{},bw=0,bv=this.length;if(by===L){return bx.nodeType===1?bx.innerHTML.replace(ah,""):null}if(typeof by==="string"&&!ae.test(by)&&(b.support.leadingWhitespace||!ar.test(by))&&!ax[(d.exec(by)||["",""])[1].toLowerCase()]){by=by.replace(R,"<$1>");try{for(;bw1&&bw0?this.clone(true):this).get();b(bC[bA])[bv](by);bz=bz.concat(by)}return this.pushStack(bz,e,bC.selector)}}});function bh(e){if(typeof e.getElementsByTagName!=="undefined"){return e.getElementsByTagName("*")}else{if(typeof e.querySelectorAll!=="undefined"){return e.querySelectorAll("*")}else{return[]}}}function az(e){if(e.type==="checkbox"||e.type==="radio"){e.defaultChecked=e.checked}}function D(e){var bv=(e.nodeName||"").toLowerCase();if(bv==="input"){az(e)}else{if(bv!=="script"&&typeof e.getElementsByTagName!=="undefined"){b.grep(e.getElementsByTagName("input"),az)}}}function am(e){var bv=av.createElement("div");ac.appendChild(bv);bv.innerHTML=e.outerHTML;return bv.firstChild}b.extend({clone:function(by,bA,bw){var e,bv,bx,bz=b.support.html5Clone||b.isXMLDoc(by)||!ai.test("<"+by.nodeName+">")?by.cloneNode(true):am(by);if((!b.support.noCloneEvent||!b.support.noCloneChecked)&&(by.nodeType===1||by.nodeType===11)&&!b.isXMLDoc(by)){aj(by,bz);e=bh(by);bv=bh(bz);for(bx=0;e[bx];++bx){if(bv[bx]){aj(e[bx],bv[bx])}}}if(bA){s(by,bz);if(bw){e=bh(by);bv=bh(bz);for(bx=0;e[bx];++bx){s(e[bx],bv[bx])}}}e=bv=null;return bz},clean:function(bI,bw,bv,bx){var bA,bH,bD,bJ=[];bw=bw||av;if(typeof bw.createElement==="undefined"){bw=bw.ownerDocument||bw[0]&&bw[0].ownerDocument||av}for(var bE=0,bG;(bG=bI[bE])!=null;bE++){if(typeof bG==="number"){bG+=""}if(!bG){continue}if(typeof bG==="string"){if(!W.test(bG)){bG=bw.createTextNode(bG)}else{bG=bG.replace(R,"<$1>");var bN=(d.exec(bG)||["",""])[1].toLowerCase(),bz=ax[bN]||ax._default,bK=bz[0],bB=bw.createElement("div"),bL=ac.childNodes,bM;if(bw===av){ac.appendChild(bB)}else{a(bw).appendChild(bB)}bB.innerHTML=bz[1]+bG+bz[2];while(bK--){bB=bB.lastChild}if(!b.support.tbody){var by=v.test(bG),e=bN==="table"&&!by?bB.firstChild&&bB.firstChild.childNodes:bz[1]===""&&!by?bB.childNodes:[];for(bD=e.length-1;bD>=0;--bD){if(b.nodeName(e[bD],"tbody")&&!e[bD].childNodes.length){e[bD].parentNode.removeChild(e[bD])}}}if(!b.support.leadingWhitespace&&ar.test(bG)){bB.insertBefore(bw.createTextNode(ar.exec(bG)[0]),bB.firstChild)}bG=bB.childNodes;if(bB){bB.parentNode.removeChild(bB);if(bL.length>0){bM=bL[bL.length-1];if(bM&&bM.parentNode){bM.parentNode.removeChild(bM)}}}}}var bF;if(!b.support.appendChecked){if(bG[0]&&typeof(bF=bG.length)==="number"){for(bD=0;bD1)};b.extend({cssHooks:{opacity:{get:function(bw,bv){if(bv){var e=Z(bw,"opacity");return e===""?"1":e}else{return bw.style.opacity}}}},cssNumber:{fillOpacity:true,fontWeight:true,lineHeight:true,opacity:true,orphans:true,widows:true,zIndex:true,zoom:true},cssProps:{"float":b.support.cssFloat?"cssFloat":"styleFloat"},style:function(bx,bw,bD,by){if(!bx||bx.nodeType===3||bx.nodeType===8||!bx.style){return}var bB,bC,bz=b.camelCase(bw),bv=bx.style,bE=b.cssHooks[bz];bw=b.cssProps[bz]||bz;if(bD!==L){bC=typeof bD;if(bC==="string"&&(bB=I.exec(bD))){bD=(+(bB[1]+1)*+bB[2])+parseFloat(b.css(bx,bw));bC="number"}if(bD==null||bC==="number"&&isNaN(bD)){return}if(bC==="number"&&!b.cssNumber[bz]){bD+="px"}if(!bE||!("set" in bE)||(bD=bE.set(bx,bD))!==L){try{bv[bw]=bD}catch(bA){}}}else{if(bE&&"get" in bE&&(bB=bE.get(bx,false,by))!==L){return bB}return bv[bw]}},css:function(by,bx,bv){var bw,e;bx=b.camelCase(bx);e=b.cssHooks[bx];bx=b.cssProps[bx]||bx;if(bx==="cssFloat"){bx="float"}if(e&&"get" in e&&(bw=e.get(by,true,bv))!==L){return bw}else{if(Z){return Z(by,bx)}}},swap:function(by,bx,bz){var e={},bw,bv;for(bv in bx){e[bv]=by.style[bv];by.style[bv]=bx[bv]}bw=bz.call(by);for(bv in bx){by.style[bv]=e[bv]}return bw}});b.curCSS=b.css;if(av.defaultView&&av.defaultView.getComputedStyle){aJ=function(bA,bw){var bv,bz,e,by,bx=bA.style;bw=bw.replace(y,"-$1").toLowerCase();if((bz=bA.ownerDocument.defaultView)&&(e=bz.getComputedStyle(bA,null))){bv=e.getPropertyValue(bw);if(bv===""&&!b.contains(bA.ownerDocument.documentElement,bA)){bv=b.style(bA,bw)}}if(!b.support.pixelMargin&&e&&aE.test(bw)&&a1.test(bv)){by=bx.width;bx.width=bv;bv=e.width;bx.width=by}return bv}}if(av.documentElement.currentStyle){aY=function(bz,bw){var bA,e,by,bv=bz.currentStyle&&bz.currentStyle[bw],bx=bz.style;if(bv==null&&bx&&(by=bx[bw])){bv=by}if(a1.test(bv)){bA=bx.left;e=bz.runtimeStyle&&bz.runtimeStyle.left;if(e){bz.runtimeStyle.left=bz.currentStyle.left}bx.left=bw==="fontSize"?"1em":bv;bv=bx.pixelLeft+"px";bx.left=bA;if(e){bz.runtimeStyle.left=e}}return bv===""?"auto":bv}}Z=aJ||aY;function af(by,bw,bv){var bz=bw==="width"?by.offsetWidth:by.offsetHeight,bx=bw==="width"?1:0,e=4;if(bz>0){if(bv!=="border"){for(;bx=1&&b.trim(bw.replace(al,""))===""){bx.removeAttribute("filter");if(bv&&!bv.filter){return}}bx.filter=al.test(bw)?bw.replace(al,e):bw+" "+e}}}b(function(){if(!b.support.reliableMarginRight){b.cssHooks.marginRight={get:function(bv,e){return b.swap(bv,{display:"inline-block"},function(){if(e){return Z(bv,"margin-right")}else{return bv.style.marginRight}})}}}});if(b.expr&&b.expr.filters){b.expr.filters.hidden=function(bw){var bv=bw.offsetWidth,e=bw.offsetHeight;return(bv===0&&e===0)||(!b.support.reliableHiddenOffsets&&((bw.style&&bw.style.display)||b.css(bw,"display"))==="none")};b.expr.filters.visible=function(e){return !b.expr.filters.hidden(e)}}b.each({margin:"",padding:"",border:"Width"},function(e,bv){b.cssHooks[e+bv]={expand:function(by){var bx,bz=typeof by==="string"?by.split(" "):[by],bw={};for(bx=0;bx<4;bx++){bw[e+G[bx]+bv]=bz[bx]||bz[bx-2]||bz[0]}return bw}}});var k=/%20/g,ap=/\[\]$/,bs=/\r?\n/g,bq=/#.*$/,aD=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,a0=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,aN=/^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,aR=/^(?:GET|HEAD)$/,c=/^\/\//,M=/\?/,a7=/)<[^<]*)*<\/script>/gi,p=/^(?:select|textarea)/i,h=/\s+/,br=/([?&])_=[^&]*/,K=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,z=b.fn.load,aa={},q={},aF,r,aW=["*/"]+["*"];try{aF=bm.href}catch(aw){aF=av.createElement("a");aF.href="";aF=aF.href}r=K.exec(aF.toLowerCase())||[];function f(e){return function(by,bA){if(typeof by!=="string"){bA=by;by="*"}if(b.isFunction(bA)){var bx=by.toLowerCase().split(h),bw=0,bz=bx.length,bv,bB,bC;for(;bw=0){var e=bw.slice(by,bw.length);bw=bw.slice(0,by)}var bx="GET";if(bz){if(b.isFunction(bz)){bA=bz;bz=L}else{if(typeof bz==="object"){bz=b.param(bz,b.ajaxSettings.traditional);bx="POST"}}}var bv=this;b.ajax({url:bw,type:bx,dataType:"html",data:bz,complete:function(bC,bB,bD){bD=bC.responseText;if(bC.isResolved()){bC.done(function(bE){bD=bE});bv.html(e?b("
").append(bD.replace(a7,"")).find(e):bD)}if(bA){bv.each(bA,[bD,bB,bC])}}});return this},serialize:function(){return b.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?b.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||p.test(this.nodeName)||a0.test(this.type))}).map(function(e,bv){var bw=b(this).val();return bw==null?null:b.isArray(bw)?b.map(bw,function(by,bx){return{name:bv.name,value:by.replace(bs,"\r\n")}}):{name:bv.name,value:bw.replace(bs,"\r\n")}}).get()}});b.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(e,bv){b.fn[bv]=function(bw){return this.on(bv,bw)}});b.each(["get","post"],function(e,bv){b[bv]=function(bw,by,bz,bx){if(b.isFunction(by)){bx=bx||bz;bz=by;by=L}return b.ajax({type:bv,url:bw,data:by,success:bz,dataType:bx})}});b.extend({getScript:function(e,bv){return b.get(e,L,bv,"script")},getJSON:function(e,bv,bw){return b.get(e,bv,bw,"json")},ajaxSetup:function(bv,e){if(e){an(bv,b.ajaxSettings)}else{e=bv;bv=b.ajaxSettings}an(bv,e);return bv},ajaxSettings:{url:aF,isLocal:aN.test(r[1]),global:true,type:"GET",contentType:"application/x-www-form-urlencoded; charset=UTF-8",processData:true,async:true,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":aW},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":bd.String,"text html":true,"text json":b.parseJSON,"text xml":b.parseXML},flatOptions:{context:true,url:true}},ajaxPrefilter:f(aa),ajaxTransport:f(q),ajax:function(bz,bx){if(typeof bz==="object"){bx=bz;bz=L}bx=bx||{};var bD=b.ajaxSetup({},bx),bS=bD.context||bD,bG=bS!==bD&&(bS.nodeType||bS instanceof b)?b(bS):b.event,bR=b.Deferred(),bN=b.Callbacks("once memory"),bB=bD.statusCode||{},bC,bH={},bO={},bQ,by,bL,bE,bI,bA=0,bw,bK,bJ={readyState:0,setRequestHeader:function(bT,bU){if(!bA){var e=bT.toLowerCase();bT=bO[e]=bO[e]||bT;bH[bT]=bU}return this},getAllResponseHeaders:function(){return bA===2?bQ:null},getResponseHeader:function(bT){var e;if(bA===2){if(!by){by={};while((e=aD.exec(bQ))){by[e[1].toLowerCase()]=e[2]}}e=by[bT.toLowerCase()]}return e===L?null:e},overrideMimeType:function(e){if(!bA){bD.mimeType=e}return this},abort:function(e){e=e||"abort";if(bL){bL.abort(e)}bF(0,e);return this}};function bF(bZ,bU,b0,bW){if(bA===2){return}bA=2;if(bE){clearTimeout(bE)}bL=L;bQ=bW||"";bJ.readyState=bZ>0?4:0;var bT,b4,b3,bX=bU,bY=b0?bk(bD,bJ,b0):L,bV,b2;if(bZ>=200&&bZ<300||bZ===304){if(bD.ifModified){if((bV=bJ.getResponseHeader("Last-Modified"))){b.lastModified[bC]=bV}if((b2=bJ.getResponseHeader("Etag"))){b.etag[bC]=b2}}if(bZ===304){bX="notmodified";bT=true}else{try{b4=F(bD,bY);bX="success";bT=true}catch(b1){bX="parsererror";b3=b1}}}else{b3=bX;if(!bX||bZ){bX="error";if(bZ<0){bZ=0}}}bJ.status=bZ;bJ.statusText=""+(bU||bX);if(bT){bR.resolveWith(bS,[b4,bX,bJ])}else{bR.rejectWith(bS,[bJ,bX,b3])}bJ.statusCode(bB);bB=L;if(bw){bG.trigger("ajax"+(bT?"Success":"Error"),[bJ,bD,bT?b4:b3])}bN.fireWith(bS,[bJ,bX]);if(bw){bG.trigger("ajaxComplete",[bJ,bD]);if(!(--b.active)){b.event.trigger("ajaxStop")}}}bR.promise(bJ);bJ.success=bJ.done;bJ.error=bJ.fail;bJ.complete=bN.add;bJ.statusCode=function(bT){if(bT){var e;if(bA<2){for(e in bT){bB[e]=[bB[e],bT[e]]}}else{e=bT[bJ.status];bJ.then(e,e)}}return this};bD.url=((bz||bD.url)+"").replace(bq,"").replace(c,r[1]+"//");bD.dataTypes=b.trim(bD.dataType||"*").toLowerCase().split(h);if(bD.crossDomain==null){bI=K.exec(bD.url.toLowerCase());bD.crossDomain=!!(bI&&(bI[1]!=r[1]||bI[2]!=r[2]||(bI[3]||(bI[1]==="http:"?80:443))!=(r[3]||(r[1]==="http:"?80:443))))}if(bD.data&&bD.processData&&typeof bD.data!=="string"){bD.data=b.param(bD.data,bD.traditional)}aX(aa,bD,bx,bJ);if(bA===2){return false}bw=bD.global;bD.type=bD.type.toUpperCase();bD.hasContent=!aR.test(bD.type);if(bw&&b.active++===0){b.event.trigger("ajaxStart")}if(!bD.hasContent){if(bD.data){bD.url+=(M.test(bD.url)?"&":"?")+bD.data;delete bD.data}bC=bD.url;if(bD.cache===false){var bv=b.now(),bP=bD.url.replace(br,"$1_="+bv);bD.url=bP+((bP===bD.url)?(M.test(bD.url)?"&":"?")+"_="+bv:"")}}if(bD.data&&bD.hasContent&&bD.contentType!==false||bx.contentType){bJ.setRequestHeader("Content-Type",bD.contentType)}if(bD.ifModified){bC=bC||bD.url;if(b.lastModified[bC]){bJ.setRequestHeader("If-Modified-Since",b.lastModified[bC])}if(b.etag[bC]){bJ.setRequestHeader("If-None-Match",b.etag[bC])}}bJ.setRequestHeader("Accept",bD.dataTypes[0]&&bD.accepts[bD.dataTypes[0]]?bD.accepts[bD.dataTypes[0]]+(bD.dataTypes[0]!=="*"?", "+aW+"; q=0.01":""):bD.accepts["*"]);for(bK in bD.headers){bJ.setRequestHeader(bK,bD.headers[bK])}if(bD.beforeSend&&(bD.beforeSend.call(bS,bJ,bD)===false||bA===2)){bJ.abort();return false}for(bK in {success:1,error:1,complete:1}){bJ[bK](bD[bK])}bL=aX(q,bD,bx,bJ);if(!bL){bF(-1,"No Transport")}else{bJ.readyState=1;if(bw){bG.trigger("ajaxSend",[bJ,bD])}if(bD.async&&bD.timeout>0){bE=setTimeout(function(){bJ.abort("timeout")},bD.timeout)}try{bA=1;bL.send(bH,bF)}catch(bM){if(bA<2){bF(-1,bM)}else{throw bM}}}return bJ},param:function(e,bw){var bv=[],by=function(bz,bA){bA=b.isFunction(bA)?bA():bA;bv[bv.length]=encodeURIComponent(bz)+"="+encodeURIComponent(bA)};if(bw===L){bw=b.ajaxSettings.traditional}if(b.isArray(e)||(e.jquery&&!b.isPlainObject(e))){b.each(e,function(){by(this.name,this.value)})}else{for(var bx in e){u(bx,e[bx],bw,by)}}return bv.join("&").replace(k,"+")}});function u(bw,by,bv,bx){if(b.isArray(by)){b.each(by,function(bA,bz){if(bv||ap.test(bw)){bx(bw,bz)}else{u(bw+"["+(typeof bz==="object"?bA:"")+"]",bz,bv,bx)}})}else{if(!bv&&b.type(by)==="object"){for(var e in by){u(bw+"["+e+"]",by[e],bv,bx)}}else{bx(bw,by)}}}b.extend({active:0,lastModified:{},etag:{}});function bk(bD,bC,bz){var bv=bD.contents,bB=bD.dataTypes,bw=bD.responseFields,by,bA,bx,e;for(bA in bw){if(bA in bz){bC[bw[bA]]=bz[bA]}}while(bB[0]==="*"){bB.shift();if(by===L){by=bD.mimeType||bC.getResponseHeader("content-type")}}if(by){for(bA in bv){if(bv[bA]&&bv[bA].test(by)){bB.unshift(bA);break}}}if(bB[0] in bz){bx=bB[0]}else{for(bA in bz){if(!bB[0]||bD.converters[bA+" "+bB[0]]){bx=bA;break}if(!e){e=bA}}bx=bx||e}if(bx){if(bx!==bB[0]){bB.unshift(bx)}return bz[bx]}}function F(bH,bz){if(bH.dataFilter){bz=bH.dataFilter(bz,bH.dataType)}var bD=bH.dataTypes,bG={},bA,bE,bw=bD.length,bB,bC=bD[0],bx,by,bF,bv,e;for(bA=1;bA=bw.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();bw.animatedProperties[this.prop]=true;for(bA in bw.animatedProperties){if(bw.animatedProperties[bA]!==true){e=false}}if(e){if(bw.overflow!=null&&!b.support.shrinkWrapBlocks){b.each(["","X","Y"],function(bC,bD){bz.style["overflow"+bD]=bw.overflow[bC]})}if(bw.hide){b(bz).hide()}if(bw.hide||bw.show){for(bA in bw.animatedProperties){b.style(bz,bA,bw.orig[bA]);b.removeData(bz,"fxshow"+bA,true);b.removeData(bz,"toggle"+bA,true)}}bv=bw.complete;if(bv){bw.complete=false;bv.call(bz)}}return false}else{if(bw.duration==Infinity){this.now=bx}else{bB=bx-this.startTime;this.state=bB/bw.duration;this.pos=b.easing[bw.animatedProperties[this.prop]](this.state,bB,0,1,bw.duration);this.now=this.start+((this.end-this.start)*this.pos)}this.update()}return true}};b.extend(b.fx,{tick:function(){var bw,bv=b.timers,e=0;for(;e").appendTo(e),bw=bv.css("display");bv.remove();if(bw==="none"||bw===""){if(!ba){ba=av.createElement("iframe");ba.frameBorder=ba.width=ba.height=0}e.appendChild(ba);if(!m||!ba.createElement){m=(ba.contentWindow||ba.contentDocument).document;m.write((b.support.boxModel?"":"")+"");m.close()}bv=m.createElement(bx);m.body.appendChild(bv);bw=b.css(bv,"display");e.removeChild(ba)}Q[bx]=bw}return Q[bx]}var a8,V=/^t(?:able|d|h)$/i,ad=/^(?:body|html)$/i;if("getBoundingClientRect" in av.documentElement){a8=function(by,bH,bw,bB){try{bB=by.getBoundingClientRect()}catch(bF){}if(!bB||!b.contains(bw,by)){return bB?{top:bB.top,left:bB.left}:{top:0,left:0}}var bC=bH.body,bD=aL(bH),bA=bw.clientTop||bC.clientTop||0,bE=bw.clientLeft||bC.clientLeft||0,bv=bD.pageYOffset||b.support.boxModel&&bw.scrollTop||bC.scrollTop,bz=bD.pageXOffset||b.support.boxModel&&bw.scrollLeft||bC.scrollLeft,bG=bB.top+bv-bA,bx=bB.left+bz-bE;return{top:bG,left:bx}}}else{a8=function(bz,bE,bx){var bC,bw=bz.offsetParent,bv=bz,bA=bE.body,bB=bE.defaultView,e=bB?bB.getComputedStyle(bz,null):bz.currentStyle,bD=bz.offsetTop,by=bz.offsetLeft;while((bz=bz.parentNode)&&bz!==bA&&bz!==bx){if(b.support.fixedPosition&&e.position==="fixed"){break}bC=bB?bB.getComputedStyle(bz,null):bz.currentStyle;bD-=bz.scrollTop;by-=bz.scrollLeft;if(bz===bw){bD+=bz.offsetTop;by+=bz.offsetLeft;if(b.support.doesNotAddBorder&&!(b.support.doesAddBorderForTableAndCells&&V.test(bz.nodeName))){bD+=parseFloat(bC.borderTopWidth)||0;by+=parseFloat(bC.borderLeftWidth)||0}bv=bw;bw=bz.offsetParent}if(b.support.subtractsBorderForOverflowNotVisible&&bC.overflow!=="visible"){bD+=parseFloat(bC.borderTopWidth)||0;by+=parseFloat(bC.borderLeftWidth)||0}e=bC}if(e.position==="relative"||e.position==="static"){bD+=bA.offsetTop;by+=bA.offsetLeft}if(b.support.fixedPosition&&e.position==="fixed"){bD+=Math.max(bx.scrollTop,bA.scrollTop);by+=Math.max(bx.scrollLeft,bA.scrollLeft)}return{top:bD,left:by}}}b.fn.offset=function(e){if(arguments.length){return e===L?this:this.each(function(bx){b.offset.setOffset(this,e,bx)})}var bv=this[0],bw=bv&&bv.ownerDocument;if(!bw){return null}if(bv===bw.body){return b.offset.bodyOffset(bv)}return a8(bv,bw,bw.documentElement)};b.offset={bodyOffset:function(e){var bw=e.offsetTop,bv=e.offsetLeft;if(b.support.doesNotIncludeMarginInBodyOffset){bw+=parseFloat(b.css(e,"marginTop"))||0;bv+=parseFloat(b.css(e,"marginLeft"))||0}return{top:bw,left:bv}},setOffset:function(bx,bG,bA){var bB=b.css(bx,"position");if(bB==="static"){bx.style.position="relative"}var bz=b(bx),bv=bz.offset(),e=b.css(bx,"top"),bE=b.css(bx,"left"),bF=(bB==="absolute"||bB==="fixed")&&b.inArray("auto",[e,bE])>-1,bD={},bC={},bw,by;if(bF){bC=bz.position();bw=bC.top;by=bC.left}else{bw=parseFloat(e)||0;by=parseFloat(bE)||0}if(b.isFunction(bG)){bG=bG.call(bx,bA,bv)}if(bG.top!=null){bD.top=(bG.top-bv.top)+bw}if(bG.left!=null){bD.left=(bG.left-bv.left)+by}if("using" in bG){bG.using.call(bx,bD)}else{bz.css(bD)}}};b.fn.extend({position:function(){if(!this[0]){return null}var bw=this[0],bv=this.offsetParent(),bx=this.offset(),e=ad.test(bv[0].nodeName)?{top:0,left:0}:bv.offset();bx.top-=parseFloat(b.css(bw,"marginTop"))||0;bx.left-=parseFloat(b.css(bw,"marginLeft"))||0;e.top+=parseFloat(b.css(bv[0],"borderTopWidth"))||0;e.left+=parseFloat(b.css(bv[0],"borderLeftWidth"))||0;return{top:bx.top-e.top,left:bx.left-e.left}},offsetParent:function(){return this.map(function(){var e=this.offsetParent||av.body;while(e&&(!ad.test(e.nodeName)&&b.css(e,"position")==="static")){e=e.offsetParent}return e})}});b.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(bw,bv){var e=/Y/.test(bv);b.fn[bw]=function(bx){return b.access(this,function(by,bB,bA){var bz=aL(by);if(bA===L){return bz?(bv in bz)?bz[bv]:b.support.boxModel&&bz.document.documentElement[bB]||bz.document.body[bB]:by[bB]}if(bz){bz.scrollTo(!e?bA:b(bz).scrollLeft(),e?bA:b(bz).scrollTop())}else{by[bB]=bA}},bw,bx,arguments.length,null)}});function aL(e){return b.isWindow(e)?e:e.nodeType===9?e.defaultView||e.parentWindow:false}b.each({Height:"height",Width:"width"},function(bw,bx){var bv="client"+bw,e="scroll"+bw,by="offset"+bw;b.fn["inner"+bw]=function(){var bz=this[0];return bz?bz.style?parseFloat(b.css(bz,bx,"padding")):this[bx]():null};b.fn["outer"+bw]=function(bA){var bz=this[0];return bz?bz.style?parseFloat(b.css(bz,bx,bA?"margin":"border")):this[bx]():null};b.fn[bx]=function(bz){return b.access(this,function(bC,bB,bD){var bF,bE,bG,bA;if(b.isWindow(bC)){bF=bC.document;bE=bF.documentElement[bv];return b.support.boxModel&&bE||bF.body&&bF.body[bv]||bE}if(bC.nodeType===9){bF=bC.documentElement;if(bF[bv]>=bF[e]){return bF[bv]}return Math.max(bC.body[e],bF[e],bC.body[by],bF[by])}if(bD===L){bG=b.css(bC,bB);bA=parseFloat(bG);return b.isNumeric(bA)?bA:bG}b(bC).css(bB,bD)},bx,bz,arguments.length,null)}});bd.jQuery=bd.$=b;if(typeof define==="function"&&define.amd&&define.amd.jQuery){define("jquery",[],function(){return b})}})(window);/*! + * jQuery UI 1.8.18 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI + */ +(function(a,d){a.ui=a.ui||{};if(a.ui.version){return}a.extend(a.ui,{version:"1.8.18",keyCode:{ALT:18,BACKSPACE:8,CAPS_LOCK:20,COMMA:188,COMMAND:91,COMMAND_LEFT:91,COMMAND_RIGHT:93,CONTROL:17,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,INSERT:45,LEFT:37,MENU:93,NUMPAD_ADD:107,NUMPAD_DECIMAL:110,NUMPAD_DIVIDE:111,NUMPAD_ENTER:108,NUMPAD_MULTIPLY:106,NUMPAD_SUBTRACT:109,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SHIFT:16,SPACE:32,TAB:9,UP:38,WINDOWS:91}});a.fn.extend({propAttr:a.fn.prop||a.fn.attr,_focus:a.fn.focus,focus:function(e,f){return typeof e==="number"?this.each(function(){var g=this;setTimeout(function(){a(g).focus();if(f){f.call(g)}},e)}):this._focus.apply(this,arguments)},scrollParent:function(){var e;if((a.browser.msie&&(/(static|relative)/).test(this.css("position")))||(/absolute/).test(this.css("position"))){e=this.parents().filter(function(){return(/(relative|absolute|fixed)/).test(a.curCSS(this,"position",1))&&(/(auto|scroll)/).test(a.curCSS(this,"overflow",1)+a.curCSS(this,"overflow-y",1)+a.curCSS(this,"overflow-x",1))}).eq(0)}else{e=this.parents().filter(function(){return(/(auto|scroll)/).test(a.curCSS(this,"overflow",1)+a.curCSS(this,"overflow-y",1)+a.curCSS(this,"overflow-x",1))}).eq(0)}return(/fixed/).test(this.css("position"))||!e.length?a(document):e},zIndex:function(h){if(h!==d){return this.css("zIndex",h)}if(this.length){var f=a(this[0]),e,g;while(f.length&&f[0]!==document){e=f.css("position");if(e==="absolute"||e==="relative"||e==="fixed"){g=parseInt(f.css("zIndex"),10);if(!isNaN(g)&&g!==0){return g}}f=f.parent()}}return 0},disableSelection:function(){return this.bind((a.support.selectstart?"selectstart":"mousedown")+".ui-disableSelection",function(e){e.preventDefault()})},enableSelection:function(){return this.unbind(".ui-disableSelection")}});a.each(["Width","Height"],function(g,e){var f=e==="Width"?["Left","Right"]:["Top","Bottom"],h=e.toLowerCase(),k={innerWidth:a.fn.innerWidth,innerHeight:a.fn.innerHeight,outerWidth:a.fn.outerWidth,outerHeight:a.fn.outerHeight};function j(m,l,i,n){a.each(f,function(){l-=parseFloat(a.curCSS(m,"padding"+this,true))||0;if(i){l-=parseFloat(a.curCSS(m,"border"+this+"Width",true))||0}if(n){l-=parseFloat(a.curCSS(m,"margin"+this,true))||0}});return l}a.fn["inner"+e]=function(i){if(i===d){return k["inner"+e].call(this)}return this.each(function(){a(this).css(h,j(this,i)+"px")})};a.fn["outer"+e]=function(i,l){if(typeof i!=="number"){return k["outer"+e].call(this,i)}return this.each(function(){a(this).css(h,j(this,i,true,l)+"px")})}});function c(g,e){var j=g.nodeName.toLowerCase();if("area"===j){var i=g.parentNode,h=i.name,f;if(!g.href||!h||i.nodeName.toLowerCase()!=="map"){return false}f=a("img[usemap=#"+h+"]")[0];return !!f&&b(f)}return(/input|select|textarea|button|object/.test(j)?!g.disabled:"a"==j?g.href||e:e)&&b(g)}function b(e){return !a(e).parents().andSelf().filter(function(){return a.curCSS(this,"visibility")==="hidden"||a.expr.filters.hidden(this)}).length}a.extend(a.expr[":"],{data:function(g,f,e){return !!a.data(g,e[3])},focusable:function(e){return c(e,!isNaN(a.attr(e,"tabindex")))},tabbable:function(g){var e=a.attr(g,"tabindex"),f=isNaN(e);return(f||e>=0)&&c(g,!f)}});a(function(){var e=document.body,f=e.appendChild(f=document.createElement("div"));f.offsetHeight;a.extend(f.style,{minHeight:"100px",height:"auto",padding:0,borderWidth:0});a.support.minHeight=f.offsetHeight===100;a.support.selectstart="onselectstart" in f;e.removeChild(f).style.display="none"});a.extend(a.ui,{plugin:{add:function(f,g,j){var h=a.ui[f].prototype;for(var e in j){h.plugins[e]=h.plugins[e]||[];h.plugins[e].push([g,j[e]])}},call:function(e,g,f){var j=e.plugins[g];if(!j||!e.element[0].parentNode){return}for(var h=0;h0){return true}h[e]=1;g=(h[e]>0);h[e]=0;return g},isOverAxis:function(f,e,g){return(f>e)&&(f<(e+g))},isOver:function(j,f,i,h,e,g){return a.ui.isOverAxis(j,i,e)&&a.ui.isOverAxis(f,h,g)}})})(jQuery);/*! + * jQuery UI Widget 1.8.18 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Widget + */ +(function(b,d){if(b.cleanData){var c=b.cleanData;b.cleanData=function(f){for(var g=0,h;(h=f[g])!=null;g++){try{b(h).triggerHandler("remove")}catch(j){}}c(f)}}else{var a=b.fn.remove;b.fn.remove=function(e,f){return this.each(function(){if(!f){if(!e||b.filter(e,[this]).length){b("*",this).add([this]).each(function(){try{b(this).triggerHandler("remove")}catch(g){}})}}return a.call(b(this),e,f)})}}b.widget=function(f,h,e){var g=f.split(".")[0],j;f=f.split(".")[1];j=g+"-"+f;if(!e){e=h;h=b.Widget}b.expr[":"][j]=function(k){return !!b.data(k,f)};b[g]=b[g]||{};b[g][f]=function(k,l){if(arguments.length){this._createWidget(k,l)}};var i=new h();i.options=b.extend(true,{},i.options);b[g][f].prototype=b.extend(true,i,{namespace:g,widgetName:f,widgetEventPrefix:b[g][f].prototype.widgetEventPrefix||f,widgetBaseClass:j},e);b.widget.bridge(f,b[g][f])};b.widget.bridge=function(f,e){b.fn[f]=function(i){var g=typeof i==="string",h=Array.prototype.slice.call(arguments,1),j=this;i=!g&&h.length?b.extend.apply(null,[true,i].concat(h)):i;if(g&&i.charAt(0)==="_"){return j}if(g){this.each(function(){var k=b.data(this,f),l=k&&b.isFunction(k[i])?k[i].apply(k,h):k;if(l!==k&&l!==d){j=l;return false}})}else{this.each(function(){var k=b.data(this,f);if(k){k.option(i||{})._init()}else{b.data(this,f,new e(i,this))}})}return j}};b.Widget=function(e,f){if(arguments.length){this._createWidget(e,f)}};b.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",options:{disabled:false},_createWidget:function(f,g){b.data(g,this.widgetName,this);this.element=b(g);this.options=b.extend(true,{},this.options,this._getCreateOptions(),f);var e=this;this.element.bind("remove."+this.widgetName,function(){e.destroy()});this._create();this._trigger("create");this._init()},_getCreateOptions:function(){return b.metadata&&b.metadata.get(this.element[0])[this.widgetName]},_create:function(){},_init:function(){},destroy:function(){this.element.unbind("."+this.widgetName).removeData(this.widgetName);this.widget().unbind("."+this.widgetName).removeAttr("aria-disabled").removeClass(this.widgetBaseClass+"-disabled ui-state-disabled")},widget:function(){return this.element},option:function(f,g){var e=f;if(arguments.length===0){return b.extend({},this.options)}if(typeof f==="string"){if(g===d){return this.options[f]}e={};e[f]=g}this._setOptions(e);return this},_setOptions:function(f){var e=this;b.each(f,function(g,h){e._setOption(g,h)});return this},_setOption:function(e,f){this.options[e]=f;if(e==="disabled"){this.widget()[f?"addClass":"removeClass"](this.widgetBaseClass+"-disabled ui-state-disabled").attr("aria-disabled",f)}return this},enable:function(){return this._setOption("disabled",false)},disable:function(){return this._setOption("disabled",true)},_trigger:function(e,f,g){var j,i,h=this.options[e];g=g||{};f=b.Event(f);f.type=(e===this.widgetEventPrefix?e:this.widgetEventPrefix+e).toLowerCase();f.target=this.element[0];i=f.originalEvent;if(i){for(j in i){if(!(j in f)){f[j]=i[j]}}}this.element.trigger(f,g);return !(b.isFunction(h)&&h.call(this.element[0],f,g)===false||f.isDefaultPrevented())}}})(jQuery);/*! + * jQuery UI Mouse 1.8.18 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Mouse + * + * Depends: + * jquery.ui.widget.js + */ +(function(b,c){var a=false;b(document).mouseup(function(d){a=false});b.widget("ui.mouse",{options:{cancel:":input,option",distance:1,delay:0},_mouseInit:function(){var d=this;this.element.bind("mousedown."+this.widgetName,function(e){return d._mouseDown(e)}).bind("click."+this.widgetName,function(e){if(true===b.data(e.target,d.widgetName+".preventClickEvent")){b.removeData(e.target,d.widgetName+".preventClickEvent");e.stopImmediatePropagation();return false}});this.started=false},_mouseDestroy:function(){this.element.unbind("."+this.widgetName)},_mouseDown:function(f){if(a){return}(this._mouseStarted&&this._mouseUp(f));this._mouseDownEvent=f;var e=this,g=(f.which==1),d=(typeof this.options.cancel=="string"&&f.target.nodeName?b(f.target).closest(this.options.cancel).length:false);if(!g||d||!this._mouseCapture(f)){return true}this.mouseDelayMet=!this.options.delay;if(!this.mouseDelayMet){this._mouseDelayTimer=setTimeout(function(){e.mouseDelayMet=true},this.options.delay)}if(this._mouseDistanceMet(f)&&this._mouseDelayMet(f)){this._mouseStarted=(this._mouseStart(f)!==false);if(!this._mouseStarted){f.preventDefault();return true}}if(true===b.data(f.target,this.widgetName+".preventClickEvent")){b.removeData(f.target,this.widgetName+".preventClickEvent")}this._mouseMoveDelegate=function(h){return e._mouseMove(h)};this._mouseUpDelegate=function(h){return e._mouseUp(h)};b(document).bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate);f.preventDefault();a=true;return true},_mouseMove:function(d){if(b.browser.msie&&!(document.documentMode>=9)&&!d.button){return this._mouseUp(d)}if(this._mouseStarted){this._mouseDrag(d);return d.preventDefault()}if(this._mouseDistanceMet(d)&&this._mouseDelayMet(d)){this._mouseStarted=(this._mouseStart(this._mouseDownEvent,d)!==false);(this._mouseStarted?this._mouseDrag(d):this._mouseUp(d))}return !this._mouseStarted},_mouseUp:function(d){b(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate);if(this._mouseStarted){this._mouseStarted=false;if(d.target==this._mouseDownEvent.target){b.data(d.target,this.widgetName+".preventClickEvent",true)}this._mouseStop(d)}return false},_mouseDistanceMet:function(d){return(Math.max(Math.abs(this._mouseDownEvent.pageX-d.pageX),Math.abs(this._mouseDownEvent.pageY-d.pageY))>=this.options.distance)},_mouseDelayMet:function(d){return this.mouseDelayMet},_mouseStart:function(d){},_mouseDrag:function(d){},_mouseStop:function(d){},_mouseCapture:function(d){return true}})})(jQuery);(function(c,d){c.widget("ui.resizable",c.ui.mouse,{widgetEventPrefix:"resize",options:{alsoResize:false,animate:false,animateDuration:"slow",animateEasing:"swing",aspectRatio:false,autoHide:false,containment:false,ghost:false,grid:false,handles:"e,s,se",helper:false,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:1000},_create:function(){var f=this,k=this.options;this.element.addClass("ui-resizable");c.extend(this,{_aspectRatio:!!(k.aspectRatio),aspectRatio:k.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:k.helper||k.ghost||k.animate?k.helper||"ui-resizable-helper":null});if(this.element[0].nodeName.match(/canvas|textarea|input|select|button|img/i)){this.element.wrap(c('
').css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")}));this.element=this.element.parent().data("resizable",this.element.data("resizable"));this.elementIsWrapper=true;this.element.css({marginLeft:this.originalElement.css("marginLeft"),marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom")});this.originalElement.css({marginLeft:0,marginTop:0,marginRight:0,marginBottom:0});this.originalResizeStyle=this.originalElement.css("resize");this.originalElement.css("resize","none");this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"}));this.originalElement.css({margin:this.originalElement.css("margin")});this._proportionallyResize()}this.handles=k.handles||(!c(".ui-resizable-handle",this.element).length?"e,s,se":{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"});if(this.handles.constructor==String){if(this.handles=="all"){this.handles="n,e,s,w,se,sw,ne,nw"}var l=this.handles.split(",");this.handles={};for(var g=0;g
');if(/sw|se|ne|nw/.test(j)){h.css({zIndex:++k.zIndex})}if("se"==j){h.addClass("ui-icon ui-icon-gripsmall-diagonal-se")}this.handles[j]=".ui-resizable-"+j;this.element.append(h)}}this._renderAxis=function(q){q=q||this.element;for(var n in this.handles){if(this.handles[n].constructor==String){this.handles[n]=c(this.handles[n],this.element).show()}if(this.elementIsWrapper&&this.originalElement[0].nodeName.match(/textarea|input|select|button/i)){var o=c(this.handles[n],this.element),p=0;p=/sw|ne|nw|se|n|s/.test(n)?o.outerHeight():o.outerWidth();var m=["padding",/ne|nw|n/.test(n)?"Top":/se|sw|s/.test(n)?"Bottom":/^e$/.test(n)?"Right":"Left"].join("");q.css(m,p);this._proportionallyResize()}if(!c(this.handles[n]).length){continue}}};this._renderAxis(this.element);this._handles=c(".ui-resizable-handle",this.element).disableSelection();this._handles.mouseover(function(){if(!f.resizing){if(this.className){var i=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)}f.axis=i&&i[1]?i[1]:"se"}});if(k.autoHide){this._handles.hide();c(this.element).addClass("ui-resizable-autohide").hover(function(){if(k.disabled){return}c(this).removeClass("ui-resizable-autohide");f._handles.show()},function(){if(k.disabled){return}if(!f.resizing){c(this).addClass("ui-resizable-autohide");f._handles.hide()}})}this._mouseInit()},destroy:function(){this._mouseDestroy();var e=function(g){c(g).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing").removeData("resizable").unbind(".resizable").find(".ui-resizable-handle").remove()};if(this.elementIsWrapper){e(this.element);var f=this.element;f.after(this.originalElement.css({position:f.css("position"),width:f.outerWidth(),height:f.outerHeight(),top:f.css("top"),left:f.css("left")})).remove()}this.originalElement.css("resize",this.originalResizeStyle);e(this.originalElement);return this},_mouseCapture:function(f){var g=false;for(var e in this.handles){if(c(this.handles[e])[0]==f.target){g=true}}return !this.options.disabled&&g},_mouseStart:function(g){var j=this.options,f=this.element.position(),e=this.element;this.resizing=true;this.documentScroll={top:c(document).scrollTop(),left:c(document).scrollLeft()};if(e.is(".ui-draggable")||(/absolute/).test(e.css("position"))){e.css({position:"absolute",top:f.top,left:f.left})}this._renderProxy();var k=b(this.helper.css("left")),h=b(this.helper.css("top"));if(j.containment){k+=c(j.containment).scrollLeft()||0;h+=c(j.containment).scrollTop()||0}this.offset=this.helper.offset();this.position={left:k,top:h};this.size=this._helper?{width:e.outerWidth(),height:e.outerHeight()}:{width:e.width(),height:e.height()};this.originalSize=this._helper?{width:e.outerWidth(),height:e.outerHeight()}:{width:e.width(),height:e.height()};this.originalPosition={left:k,top:h};this.sizeDiff={width:e.outerWidth()-e.width(),height:e.outerHeight()-e.height()};this.originalMousePosition={left:g.pageX,top:g.pageY};this.aspectRatio=(typeof j.aspectRatio=="number")?j.aspectRatio:((this.originalSize.width/this.originalSize.height)||1);var i=c(".ui-resizable-"+this.axis).css("cursor");c("body").css("cursor",i=="auto"?this.axis+"-resize":i);e.addClass("ui-resizable-resizing");this._propagate("start",g);return true},_mouseDrag:function(e){var h=this.helper,g=this.options,m={},q=this,j=this.originalMousePosition,n=this.axis;var r=(e.pageX-j.left)||0,p=(e.pageY-j.top)||0;var i=this._change[n];if(!i){return false}var l=i.apply(this,[e,r,p]),k=c.browser.msie&&c.browser.version<7,f=this.sizeDiff;this._updateVirtualBoundaries(e.shiftKey);if(this._aspectRatio||e.shiftKey){l=this._updateRatio(l,e)}l=this._respectSize(l,e);this._propagate("resize",e);h.css({top:this.position.top+"px",left:this.position.left+"px",width:this.size.width+"px",height:this.size.height+"px"});if(!this._helper&&this._proportionallyResizeElements.length){this._proportionallyResize()}this._updateCache(l);this._trigger("resize",e,this.ui());return false},_mouseStop:function(h){this.resizing=false;var i=this.options,m=this;if(this._helper){var g=this._proportionallyResizeElements,e=g.length&&(/textarea/i).test(g[0].nodeName),f=e&&c.ui.hasScroll(g[0],"left")?0:m.sizeDiff.height,k=e?0:m.sizeDiff.width;var n={width:(m.helper.width()-k),height:(m.helper.height()-f)},j=(parseInt(m.element.css("left"),10)+(m.position.left-m.originalPosition.left))||null,l=(parseInt(m.element.css("top"),10)+(m.position.top-m.originalPosition.top))||null;if(!i.animate){this.element.css(c.extend(n,{top:l,left:j}))}m.helper.height(m.size.height);m.helper.width(m.size.width);if(this._helper&&!i.animate){this._proportionallyResize()}}c("body").css("cursor","auto");this.element.removeClass("ui-resizable-resizing");this._propagate("stop",h);if(this._helper){this.helper.remove()}return false},_updateVirtualBoundaries:function(g){var j=this.options,i,h,f,k,e;e={minWidth:a(j.minWidth)?j.minWidth:0,maxWidth:a(j.maxWidth)?j.maxWidth:Infinity,minHeight:a(j.minHeight)?j.minHeight:0,maxHeight:a(j.maxHeight)?j.maxHeight:Infinity};if(this._aspectRatio||g){i=e.minHeight*this.aspectRatio;f=e.minWidth/this.aspectRatio;h=e.maxHeight*this.aspectRatio;k=e.maxWidth/this.aspectRatio;if(i>e.minWidth){e.minWidth=i}if(f>e.minHeight){e.minHeight=f}if(hl.width),s=a(l.height)&&i.minHeight&&(i.minHeight>l.height);if(h){l.width=i.minWidth}if(s){l.height=i.minHeight}if(t){l.width=i.maxWidth}if(m){l.height=i.maxHeight}var f=this.originalPosition.left+this.originalSize.width,p=this.position.top+this.size.height;var k=/sw|nw|w/.test(q),e=/nw|ne|n/.test(q);if(h&&k){l.left=f-i.minWidth}if(t&&k){l.left=f-i.maxWidth}if(s&&e){l.top=p-i.minHeight}if(m&&e){l.top=p-i.maxHeight}var n=!l.width&&!l.height;if(n&&!l.left&&l.top){l.top=null}else{if(n&&!l.top&&l.left){l.left=null}}return l},_proportionallyResize:function(){var k=this.options;if(!this._proportionallyResizeElements.length){return}var g=this.helper||this.element;for(var f=0;f');var e=c.browser.msie&&c.browser.version<7,g=(e?1:0),h=(e?2:-1);this.helper.addClass(this._helper).css({width:this.element.outerWidth()+h,height:this.element.outerHeight()+h,position:"absolute",left:this.elementOffset.left-g+"px",top:this.elementOffset.top-g+"px",zIndex:++i.zIndex});this.helper.appendTo("body").disableSelection()}else{this.helper=this.element}},_change:{e:function(g,f,e){return{width:this.originalSize.width+f}},w:function(h,f,e){var j=this.options,g=this.originalSize,i=this.originalPosition;return{left:i.left+f,width:g.width-f}},n:function(h,f,e){var j=this.options,g=this.originalSize,i=this.originalPosition;return{top:i.top+e,height:g.height-e}},s:function(g,f,e){return{height:this.originalSize.height+e}},se:function(g,f,e){return c.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[g,f,e]))},sw:function(g,f,e){return c.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[g,f,e]))},ne:function(g,f,e){return c.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[g,f,e]))},nw:function(g,f,e){return c.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[g,f,e]))}},_propagate:function(f,e){c.ui.plugin.call(this,f,[e,this.ui()]);(f!="resize"&&this._trigger(f,e,this.ui()))},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}});c.extend(c.ui.resizable,{version:"1.8.18"});c.ui.plugin.add("resizable","alsoResize",{start:function(f,g){var e=c(this).data("resizable"),i=e.options;var h=function(j){c(j).each(function(){var k=c(this);k.data("resizable-alsoresize",{width:parseInt(k.width(),10),height:parseInt(k.height(),10),left:parseInt(k.css("left"),10),top:parseInt(k.css("top"),10)})})};if(typeof(i.alsoResize)=="object"&&!i.alsoResize.parentNode){if(i.alsoResize.length){i.alsoResize=i.alsoResize[0];h(i.alsoResize)}else{c.each(i.alsoResize,function(j){h(j)})}}else{h(i.alsoResize)}},resize:function(g,i){var f=c(this).data("resizable"),j=f.options,h=f.originalSize,l=f.originalPosition;var k={height:(f.size.height-h.height)||0,width:(f.size.width-h.width)||0,top:(f.position.top-l.top)||0,left:(f.position.left-l.left)||0},e=function(m,n){c(m).each(function(){var q=c(this),r=c(this).data("resizable-alsoresize"),p={},o=n&&n.length?n:q.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];c.each(o,function(s,u){var t=(r[u]||0)+(k[u]||0);if(t&&t>=0){p[u]=t||null}});q.css(p)})};if(typeof(j.alsoResize)=="object"&&!j.alsoResize.nodeType){c.each(j.alsoResize,function(m,n){e(m,n)})}else{e(j.alsoResize)}},stop:function(e,f){c(this).removeData("resizable-alsoresize")}});c.ui.plugin.add("resizable","animate",{stop:function(i,n){var p=c(this).data("resizable"),j=p.options;var h=p._proportionallyResizeElements,e=h.length&&(/textarea/i).test(h[0].nodeName),f=e&&c.ui.hasScroll(h[0],"left")?0:p.sizeDiff.height,l=e?0:p.sizeDiff.width;var g={width:(p.size.width-l),height:(p.size.height-f)},k=(parseInt(p.element.css("left"),10)+(p.position.left-p.originalPosition.left))||null,m=(parseInt(p.element.css("top"),10)+(p.position.top-p.originalPosition.top))||null;p.element.animate(c.extend(g,m&&k?{top:m,left:k}:{}),{duration:j.animateDuration,easing:j.animateEasing,step:function(){var o={width:parseInt(p.element.css("width"),10),height:parseInt(p.element.css("height"),10),top:parseInt(p.element.css("top"),10),left:parseInt(p.element.css("left"),10)};if(h&&h.length){c(h[0]).css({width:o.width,height:o.height})}p._updateCache(o);p._propagate("resize",i)}})}});c.ui.plugin.add("resizable","containment",{start:function(f,r){var t=c(this).data("resizable"),j=t.options,l=t.element;var g=j.containment,k=(g instanceof c)?g.get(0):(/parent/.test(g))?l.parent().get(0):g;if(!k){return}t.containerElement=c(k);if(/document/.test(g)||g==document){t.containerOffset={left:0,top:0};t.containerPosition={left:0,top:0};t.parentData={element:c(document),left:0,top:0,width:c(document).width(),height:c(document).height()||document.body.parentNode.scrollHeight}}else{var n=c(k),i=[];c(["Top","Right","Left","Bottom"]).each(function(p,o){i[p]=b(n.css("padding"+o))});t.containerOffset=n.offset();t.containerPosition=n.position();t.containerSize={height:(n.innerHeight()-i[3]),width:(n.innerWidth()-i[1])};var q=t.containerOffset,e=t.containerSize.height,m=t.containerSize.width,h=(c.ui.hasScroll(k,"left")?k.scrollWidth:m),s=(c.ui.hasScroll(k)?k.scrollHeight:e);t.parentData={element:k,left:q.left,top:q.top,width:h,height:s}}},resize:function(g,q){var t=c(this).data("resizable"),i=t.options,f=t.containerSize,p=t.containerOffset,m=t.size,n=t.position,r=t._aspectRatio||g.shiftKey,e={top:0,left:0},h=t.containerElement;if(h[0]!=document&&(/static/).test(h.css("position"))){e=p}if(n.left<(t._helper?p.left:0)){t.size.width=t.size.width+(t._helper?(t.position.left-p.left):(t.position.left-e.left));if(r){t.size.height=t.size.width/i.aspectRatio}t.position.left=i.helper?p.left:0}if(n.top<(t._helper?p.top:0)){t.size.height=t.size.height+(t._helper?(t.position.top-p.top):t.position.top);if(r){t.size.width=t.size.height*i.aspectRatio}t.position.top=t._helper?p.top:0}t.offset.left=t.parentData.left+t.position.left;t.offset.top=t.parentData.top+t.position.top;var l=Math.abs((t._helper?t.offset.left-e.left:(t.offset.left-e.left))+t.sizeDiff.width),s=Math.abs((t._helper?t.offset.top-e.top:(t.offset.top-p.top))+t.sizeDiff.height);var k=t.containerElement.get(0)==t.element.parent().get(0),j=/relative|absolute/.test(t.containerElement.css("position"));if(k&&j){l-=t.parentData.left}if(l+t.size.width>=t.parentData.width){t.size.width=t.parentData.width-l;if(r){t.size.height=t.size.width/t.aspectRatio}}if(s+t.size.height>=t.parentData.height){t.size.height=t.parentData.height-s;if(r){t.size.width=t.size.height*t.aspectRatio}}},stop:function(f,n){var q=c(this).data("resizable"),g=q.options,l=q.position,m=q.containerOffset,e=q.containerPosition,i=q.containerElement;var j=c(q.helper),r=j.offset(),p=j.outerWidth()-q.sizeDiff.width,k=j.outerHeight()-q.sizeDiff.height;if(q._helper&&!g.animate&&(/relative/).test(i.css("position"))){c(this).css({left:r.left-e.left-m.left,width:p,height:k})}if(q._helper&&!g.animate&&(/static/).test(i.css("position"))){c(this).css({left:r.left-e.left-m.left,width:p,height:k})}}});c.ui.plugin.add("resizable","ghost",{start:function(g,h){var e=c(this).data("resizable"),i=e.options,f=e.size;e.ghost=e.originalElement.clone();e.ghost.css({opacity:0.25,display:"block",position:"relative",height:f.height,width:f.width,margin:0,left:0,top:0}).addClass("ui-resizable-ghost").addClass(typeof i.ghost=="string"?i.ghost:"");e.ghost.appendTo(e.helper)},resize:function(f,g){var e=c(this).data("resizable"),h=e.options;if(e.ghost){e.ghost.css({position:"relative",height:e.size.height,width:e.size.width})}},stop:function(f,g){var e=c(this).data("resizable"),h=e.options;if(e.ghost&&e.helper){e.helper.get(0).removeChild(e.ghost.get(0))}}});c.ui.plugin.add("resizable","grid",{resize:function(e,m){var p=c(this).data("resizable"),h=p.options,k=p.size,i=p.originalSize,j=p.originalPosition,n=p.axis,l=h._aspectRatio||e.shiftKey;h.grid=typeof h.grid=="number"?[h.grid,h.grid]:h.grid;var g=Math.round((k.width-i.width)/(h.grid[0]||1))*(h.grid[0]||1),f=Math.round((k.height-i.height)/(h.grid[1]||1))*(h.grid[1]||1);if(/^(se|s|e)$/.test(n)){p.size.width=i.width+g;p.size.height=i.height+f}else{if(/^(ne)$/.test(n)){p.size.width=i.width+g;p.size.height=i.height+f;p.position.top=j.top-f}else{if(/^(sw)$/.test(n)){p.size.width=i.width+g;p.size.height=i.height+f;p.position.left=j.left-g}else{p.size.width=i.width+g;p.size.height=i.height+f;p.position.top=j.top-f;p.position.left=j.left-g}}}}});var b=function(e){return parseInt(e,10)||0};var a=function(e){return !isNaN(parseInt(e,10))}})(jQuery);/*! + * jQuery hashchange event - v1.3 - 7/21/2010 + * http://benalman.com/projects/jquery-hashchange-plugin/ + * + * Copyright (c) 2010 "Cowboy" Ben Alman + * Dual licensed under the MIT and GPL licenses. + * http://benalman.com/about/license/ + */ +(function($,e,b){var c="hashchange",h=document,f,g=$.event.special,i=h.documentMode,d="on"+c in e&&(i===b||i>7);function a(j){j=j||location.href;return"#"+j.replace(/^[^#]*#?(.*)$/,"$1")}$.fn[c]=function(j){return j?this.bind(c,j):this.trigger(c)};$.fn[c].delay=50;g[c]=$.extend(g[c],{setup:function(){if(d){return false}$(f.start)},teardown:function(){if(d){return false}$(f.stop)}});f=(function(){var j={},p,m=a(),k=function(q){return q},l=k,o=k;j.start=function(){p||n()};j.stop=function(){p&&clearTimeout(p);p=b};function n(){var r=a(),q=o(m);if(r!==m){l(m=r,q);$(e).trigger(c)}else{if(q!==m){location.href=location.href.replace(/#.*/,"")+q}}p=setTimeout(n,$.fn[c].delay)}$.browser.msie&&!d&&(function(){var q,r;j.start=function(){if(!q){r=$.fn[c].src;r=r&&r+a();q=$('