Add python bindings

Use the new facilities in ECM to generate them from KItemModels headers.
wilder
Stephen Kelly 10 years ago
parent 3d58c77552
commit 0827ca77fe
  1. 7
      autotests/CMakeLists.txt
  2. 33
      autotests/pythontest.py
  3. 23
      src/CMakeLists.txt

@ -34,3 +34,10 @@ ecm_add_test(kselectionproxymodel_smoketest.cpp ${proxyModelSmokeTestSources}
LINK_LIBRARIES KF5::ItemModels Qt5::Test Qt5::Widgets proxymodeltestsuite 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()

@ -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()

@ -41,6 +41,29 @@ ecm_generate_headers(KItemModels_HEADERS
REQUIRED_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(TARGETS KF5ItemModels EXPORT KF5ItemModelsTargets ${KF5_INSTALL_TARGETS_DEFAULT_ARGS})
install(FILES install(FILES

Loading…
Cancel
Save