diff --git a/autotests/CMakeLists.txt b/autotests/CMakeLists.txt index d4edcac..704d261 100644 --- a/autotests/CMakeLists.txt +++ b/autotests/CMakeLists.txt @@ -1,12 +1,20 @@ find_package(Qt5 ${REQUIRED_QT_VERSION} CONFIG REQUIRED Test) remove_definitions(-DQT_NO_CAST_FROM_ASCII) include(ECMAddTests) ecm_add_tests( kwordwraptest.cpp kcolorutilstest.cpp kiconutilstest.cpp LINK_LIBRARIES KF5::GuiAddons Qt5::Test ) + +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 100644 index 0000000..c93e753 --- /dev/null +++ b/autotests/pythontest.py @@ -0,0 +1,24 @@ +#!/usr/bin/env python +#-*- coding: utf-8 -*- + +import sys + +sys.path.append(sys.argv[1]) + +from PyQt5 import QtCore +from PyQt5 import QtGui + +from PyKF5 import KGuiAddons + +def main(): + app = QtGui.QGuiApplication(sys.argv) + + colorCollection = KGuiAddons.KColorCollection() + + colorCollection.addColor(QtCore.Qt.blue) + colorCollection.addColor(QtCore.Qt.red) + + assert(colorCollection.count() == 2) + +if __name__ == '__main__': + main() diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 671b081..63e7598 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -1,101 +1,123 @@ set(kguiaddons_LIB_SRCS colors/kcolorspaces.cpp colors/kcolorutils.cpp colors/kcolorcollection.cpp colors/kcolormimedata.cpp text/kdatevalidator.cpp text/kwordwrap.cpp fonts/kfontutils.cpp util/kiconutils.cpp util/klocalimagecacheimpl.cpp util/kmodifierkeyinfo.cpp util/kmodifierkeyinfoprovider.cpp util/urlhandler.cpp ) set (kmodifierkeyinfoprovider_impl "dummy") if (NOT APPLE AND X11_FOUND AND X11_Xkb_FOUND AND XCB_XCB_FOUND) find_package(Qt5X11Extras ${REQUIRED_QT_VERSION} NO_MODULE) if (Qt5X11Extras_FOUND) include_directories ( ${X11_Xkb_INCLUDE_PATH} ${X11_Xlib_INCLUDE_PATH} ${XCB_XCB_INCLUDE_DIR} ) set (kmodifierkeyinfoprovider_impl "x11") endif() endif () set (kguiaddons_LIB_SRCS ${kguiaddons_LIB_SRCS} util/kmodifierkeyinfoprovider_${kmodifierkeyinfoprovider_impl}.cpp) add_library(KF5GuiAddons ${kguiaddons_LIB_SRCS}) generate_export_header(KF5GuiAddons BASE_NAME KGuiAddons) add_library(KF5::GuiAddons ALIAS KF5GuiAddons) set(kguiaddons_INCLUDES ${CMAKE_CURRENT_SOURCE_DIR}/colors ${CMAKE_CURRENT_SOURCE_DIR}/fonts ${CMAKE_CURRENT_SOURCE_DIR}/text ${CMAKE_CURRENT_SOURCE_DIR}/util ) target_include_directories(KF5GuiAddons PUBLIC "$") target_include_directories(KF5GuiAddons INTERFACE "$" ) target_compile_definitions(KF5GuiAddons INTERFACE "$") target_link_libraries(KF5GuiAddons PUBLIC Qt5::Gui) if (kmodifierkeyinfoprovider_impl STREQUAL "x11") target_link_libraries(KF5GuiAddons LINK_PRIVATE ${X11_LIBRARIES} ${XCB_XCB_LIBRARY} Qt5::X11Extras) endif() set_target_properties(KF5GuiAddons PROPERTIES VERSION ${KGUIADDONS_VERSION_STRING} SOVERSION ${KGUIADDONS_SOVERSION} EXPORT_NAME GuiAddons ) ecm_generate_headers(KGuiAddons_HEADERS HEADER_NAMES KColorUtils KColorCollection KColorMimeData RELATIVE colors REQUIRED_HEADERS KGuiAddons_HEADERS ) ecm_generate_headers(KGuiAddons_HEADERS HEADER_NAMES KDateValidator KWordWrap RELATIVE text REQUIRED_HEADERS KGuiAddons_HEADERS ) ecm_generate_headers(KGuiAddons_HEADERS HEADER_NAMES KFontUtils RELATIVE fonts REQUIRED_HEADERS KGuiAddons_HEADERS ) ecm_generate_headers(KGuiAddons_HEADERS HEADER_NAMES KIconUtils KImageCache KModifierKeyInfo RELATIVE util REQUIRED_HEADERS KGuiAddons_HEADERS ) +find_package(PythonModuleGeneration) + +if (PythonModuleGeneration_FOUND) + ecm_generate_python_binding( + TARGET KF5::GuiAddons + PYTHONNAMESPACE PyKF5 + MODULENAME KGuiAddons + SIP_DEPENDS + QtGui/QtGuimod.sip + HEADERS + colors/kcolorutils.h + colors/kcolorcollection.h + colors/kcolormimedata.h + text/kdatevalidator.h + text/kwordwrap.h + fonts/kfontutils.h + util/kiconutils.h + util/kimagecache.h + util/kmodifierkeyinfo.h + ) +endif() + install(TARGETS KF5GuiAddons EXPORT KF5GuiAddonsTargets ${KF5_INSTALL_TARGETS_DEFAULT_ARGS}) install(FILES ${CMAKE_CURRENT_BINARY_DIR}/kguiaddons_export.h util/klocalimagecacheimpl.h # implementation detail, no forwarding header ${KGuiAddons_HEADERS} DESTINATION ${KDE_INSTALL_INCLUDEDIR_KF5}/KGuiAddons COMPONENT Devel ) include(ECMGeneratePriFile) ecm_generate_pri_file(BASE_NAME KGuiAddons LIB_NAME KF5GuiAddons DEPS "gui" FILENAME_VAR PRI_FILENAME INCLUDE_INSTALL_DIR ${KDE_INSTALL_INCLUDEDIR_KF5}/KGuiAddons) install(FILES ${PRI_FILENAME} DESTINATION ${ECM_MKSPECS_INSTALL_DIR})