[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: [kitemmodels] /: Add python bindings
From: Stephen Kelly <steveire () gmail ! com>
Date: 2016-10-31 15:41:15
Message-ID: E1c1Ei3-0007AK-KQ () code ! kde ! org
[Download RAW message or body]
Git commit 0827ca77fe1a178c88bf51c81d45fa8e041eaf22 by Stephen Kelly.
Committed on 31/10/2016 at 15:40.
Pushed by skelly into branch 'master'.
Add python bindings
Use the new facilities in ECM to generate them from KItemModels headers.
M +7 -0 autotests/CMakeLists.txt
A +33 -0 autotests/pythontest.py
M +23 -0 src/CMakeLists.txt
http://commits.kde.org/kitemmodels/0827ca77fe1a178c88bf51c81d45fa8e041eaf22
diff --git a/autotests/CMakeLists.txt b/autotests/CMakeLists.txt
index 2a4429c..fe4d7c4 100644
--- a/autotests/CMakeLists.txt
+++ b/autotests/CMakeLists.txt
@@ -34,3 +34,10 @@ ecm_add_test(kselectionproxymodel_smoketest.cpp \
${proxyModelSmokeTestSources} LINK_LIBRARIES KF5::ItemModels Qt5::Test Qt5::Widgets \
proxymodeltestsuite )
+if (PythonModuleGeneration_FOUND AND EXISTS \
${CMAKE_BINARY_DIR}/prefix/lib/python2.7/dist-packages) + add_test(NAME Py2${name} \
COMMAND python2 ${pythontest} ${CMAKE_BINARY_DIR}/prefix/lib/python2.7/dist-packages) \
+endif() +
+if (PythonModuleGeneration_FOUND AND EXISTS \
${CMAKE_BINARY_DIR}/prefix/lib/python3.5/dist-packages) + add_test(NAME Py3${name} \
COMMAND python3 ${pythontest} ${CMAKE_BINARY_DIR}/prefix/lib/python3.5/dist-packages) \
+endif()
diff --git a/autotests/pythontest.py b/autotests/pythontest.py
new file mode 100755
index 0000000..b98ec95
--- /dev/null
+++ b/autotests/pythontest.py
@@ -0,0 +1,33 @@
+#!/usr/bin/env python
+#-*- coding: utf-8 -*-
+
+import sys
+
+sys.path.append(sys.argv[1])
+
+from PyQt5 import QtCore
+from PyQt5 import QtWidgets
+
+from PyKF5 import KItemModels
+
+def main():
+ app = QtWidgets.QApplication(sys.argv)
+
+ stringListModel = QtCore.QStringListModel(["Monday", "Tuesday", "Wednesday",
+ "Thursday", "Friday", "Saturday", "Sunday"]);
+
+ selectionModel = QtCore.QItemSelectionModel()
+ selectionModel.setModel(stringListModel)
+
+ selectionProxy = KItemModels.KSelectionProxyModel()
+ selectionProxy.setSelectionModel(selectionModel)
+ selectionProxy.setSourceModel(stringListModel)
+
+ assert(selectionProxy.rowCount() == 0)
+
+ selectionModel.select(stringListModel.index(0, 0), \
QtCore.QItemSelectionModel.Select) +
+ assert(selectionProxy.rowCount() == 1)
+
+if __name__ == '__main__':
+ main()
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index f8d76db..17e61e3 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -41,6 +41,29 @@ ecm_generate_headers(KItemModels_HEADERS
REQUIRED_HEADERS KItemModels_HEADERS
)
+find_package(PythonModuleGeneration)
+
+if (PythonModuleGeneration_FOUND)
+ ecm_generate_python_binding(
+ TARGET KF5::ItemModels
+ PYTHONNAMESPACE PyKF5
+ MODULENAME KItemModels
+ SIP_DEPENDS
+ QtCore/QtCoremod.sip
+ HEADERS
+ kbreadcrumbselectionmodel.h
+ kconcatenaterowsproxymodel.h
+ kcheckableproxymodel.h
+ kextracolumnsproxymodel.h
+ klinkitemselectionmodel.h
+ krearrangecolumnsproxymodel.h
+ krecursivefilterproxymodel.h
+ kdescendantsproxymodel.h
+ kmodelindexproxymapper.h
+ kselectionproxymodel.h
+ )
+endif()
+
install(TARGETS KF5ItemModels EXPORT KF5ItemModelsTargets \
${KF5_INSTALL_TARGETS_DEFAULT_ARGS})
install(FILES
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic