diff --git a/autotests/CMakeLists.txt b/autotests/CMakeLists.txt index 029c4ec..17ef9e7 100644 --- a/autotests/CMakeLists.txt +++ b/autotests/CMakeLists.txt @@ -1,13 +1,20 @@ remove_definitions(-DQT_NO_CAST_FROM_ASCII) find_package(Qt5Test ${REQUIRED_QT_VERSION} REQUIRED NO_MODULE) include(ECMAddTests) ecm_add_tests( kdbusinterprocesslocktest.cpp kdbusservicetest.cpp LINK_LIBRARIES Qt5::Test KF5::DBusAddons ) +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..1c9fda4 --- /dev/null +++ b/autotests/pythontest.py @@ -0,0 +1,24 @@ +#!/usr/bin/env python +#-*- coding: utf-8 -*- + +from __future__ import print_function + +import sys + +sys.path.append(sys.argv[1]) + +from PyQt5 import QtCore +from PyQt5 import QtWidgets + +from PyKF5 import KDBusAddons + +def main(): + app = QtWidgets.QApplication(sys.argv) + + kdm = KDBusAddons.KDEDModule() + kdm.setModuleName("MyService") + + assert(kdm.moduleName() == "MyService") + +if __name__ == '__main__': + sys.exit(main()) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index db1a543..fc6369d 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -1,69 +1,87 @@ add_subdirectory(tools/kquitapp) ecm_create_qm_loader(libkdbusaddons_QM_LOADER kdbusaddons5_qt) set(libkdbusaddons_SRCS kdbusconnectionpool.cpp kdbusinterprocesslock.cpp kdbusservice.cpp kdedmodule.cpp kdeinitinterface.cpp ${libkdbusaddons_QM_LOADER} ) qt5_add_dbus_interface(libkdbusaddons_SRCS org.freedesktop.Application.xml FreeDesktopApplpicationIface) qt5_add_dbus_interface(libkdbusaddons_SRCS org.kde.KDBusService.xml KDBusServiceIface) qt5_add_dbus_adaptor(libkdbusaddons_SRCS org.freedesktop.Application.xml kdbusservice.h KDBusService kdbusservice_adaptor KDBusServiceAdaptor) qt5_add_dbus_adaptor(libkdbusaddons_SRCS org.kde.KDBusService.xml kdbusservice.h KDBusService kdbusserviceextensions_adaptor KDBusServiceExtensionsAdaptor) add_library(KF5DBusAddons ${libkdbusaddons_SRCS}) generate_export_header(KF5DBusAddons BASE_NAME KDBusAddons) add_library(KF5::DBusAddons ALIAS KF5DBusAddons) target_link_libraries(KF5DBusAddons PUBLIC Qt5::DBus PRIVATE ${qtx11extras}) target_include_directories(KF5DBusAddons INTERFACE "$") set_target_properties(KF5DBusAddons PROPERTIES VERSION ${KDBUSADDONS_VERSION_STRING} SOVERSION ${KDBUSADDONS_SOVERSION} EXPORT_NAME DBusAddons ) configure_file(config-kdbusaddons.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config-kdbusaddons.h ) ecm_generate_headers(KDBusAddons_HEADERS HEADER_NAMES KDBusConnectionPool KDBusInterProcessLock KDBusService KDEDModule KDEInitInterface REQUIRED_HEADERS KDBusAddons_HEADERS ) +find_package(PythonModuleGeneration) + +if (PythonModuleGeneration_FOUND) + ecm_generate_python_binding( + TARGET KF5::DBusAddons + PYTHONNAMESPACE PyKF5 + MODULENAME KDBusAddons + SIP_DEPENDS + QtDBus/QtDBusmod.sip + HEADERS + kdbusconnectionpool.h + kdbusinterprocesslock.h + kdbusservice.h + kdedmodule.h + kdeinitinterface.h + ) +endif() + install(TARGETS KF5DBusAddons EXPORT KF5DBusAddonsTargets ${KF5_INSTALL_TARGETS_DEFAULT_ARGS}) install(FILES ${KDBusAddons_HEADERS} ${CMAKE_CURRENT_BINARY_DIR}/kdbusaddons_export.h DESTINATION ${KDE_INSTALL_INCLUDEDIR_KF5}/KDBusAddons COMPONENT Devel ) include(ECMGeneratePriFile) ecm_generate_pri_file(BASE_NAME KDBusAddons LIB_NAME KF5DBusAddons DEPS "dbus" FILENAME_VAR PRI_FILENAME INCLUDE_INSTALL_DIR ${KDE_INSTALL_INCLUDEDIR_KF5}/KDBusAddons) install(FILES ${PRI_FILENAME} DESTINATION ${ECM_MKSPECS_INSTALL_DIR})