[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