diff --git a/CMakeLists.txt b/CMakeLists.txt index db01714..1503288 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,92 +1,98 @@ cmake_minimum_required(VERSION 3.5) set(KF5_VERSION "5.61.0") # handled by release scripts project(Sonnet VERSION ${KF5_VERSION}) include(FeatureSummary) find_package(ECM 5.61.0 NO_MODULE) set_package_properties(ECM PROPERTIES TYPE REQUIRED DESCRIPTION "Extra CMake Modules." URL "https://projects.kde.org/projects/kdesupport/extra-cmake-modules") feature_summary(WHAT REQUIRED_PACKAGES_NOT_FOUND FATAL_ON_MISSING_REQUIRED_PACKAGES) set(CMAKE_MODULE_PATH ${ECM_MODULE_PATH} ${CMAKE_CURRENT_SOURCE_DIR}/cmake ) include(KDEInstallDirs) include(KDEFrameworkCompilerSettings NO_POLICY_SCOPE) include(KDECMakeSettings) include(ECMQtDeclareLoggingCategory) set(REQUIRED_QT_VERSION 5.11.0) option(SONNET_USE_WIDGETS "Build components using Qt5Widgets" ON) if(SONNET_USE_WIDGETS) find_package(Qt5 ${REQUIRED_QT_VERSION} CONFIG REQUIRED Widgets) endif() find_package(Qt5 ${REQUIRED_QT_VERSION} CONFIG REQUIRED Core) include(GenerateExportHeader) include(ECMSetupVersion) include(ECMGenerateHeaders) include(ECMAddQch) include(ECMPoQmTools) ecm_setup_version(PROJECT VARIABLE_PREFIX SONNET VERSION_HEADER "${CMAKE_CURRENT_BINARY_DIR}/sonnet_version.h" PACKAGE_VERSION_FILE "${CMAKE_CURRENT_BINARY_DIR}/KF5SonnetConfigVersion.cmake" SOVERSION 5) option(BUILD_QCH "Build API documentation in QCH format (for e.g. Qt Assistant, Qt Creator & KDevelop)" OFF) add_feature_info(QCH ${BUILD_QCH} "API documentation in QCH format (for e.g. Qt Assistant, Qt Creator & KDevelop)") + +if(SONNET_USE_WIDGETS) + option(BUILD_DESIGNERPLUGIN "Build plugin for Qt Designer" ON) + add_feature_info(DESIGNERPLUGIN ${BUILD_DESIGNERPLUGIN} "Build plugin for Qt Designer") +endif() + add_definitions(-DQT_DISABLE_DEPRECATED_BEFORE=0x050d00) if (IS_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/po") ecm_install_po_files_as_qm(po) endif() add_definitions(-DQT_NO_FOREACH) add_subdirectory(src) if (BUILD_TESTING) add_subdirectory(autotests) endif() if (NOT CMAKE_CROSSCOMPILING) add_subdirectory(data) endif() if(TARGET Qt5::Widgets) add_subdirectory(examples) endif() # create a Config.cmake and a ConfigVersion.cmake file and install them set(CMAKECONFIG_INSTALL_DIR "${KDE_INSTALL_CMAKEPACKAGEDIR}/KF5Sonnet") if (BUILD_QCH) ecm_install_qch_export( TARGETS KF5SonnetCore_QCH KF5SonnetUi_QCH FILE KF5SonnetQchTargets.cmake DESTINATION "${CMAKECONFIG_INSTALL_DIR}" COMPONENT Devel ) set(PACKAGE_INCLUDE_QCHTARGETS "include(\"\${CMAKE_CURRENT_LIST_DIR}/KF5SonnetQchTargets.cmake\")") endif() include(CMakePackageConfigHelpers) configure_package_config_file("${CMAKE_CURRENT_SOURCE_DIR}/KF5SonnetConfig.cmake.in" "${CMAKE_CURRENT_BINARY_DIR}/KF5SonnetConfig.cmake" INSTALL_DESTINATION ${CMAKECONFIG_INSTALL_DIR} ) install(FILES "${CMAKE_CURRENT_BINARY_DIR}/KF5SonnetConfig.cmake" "${CMAKE_CURRENT_BINARY_DIR}/KF5SonnetConfigVersion.cmake" DESTINATION "${CMAKECONFIG_INSTALL_DIR}" COMPONENT Devel ) install(EXPORT KF5SonnetTargets DESTINATION "${CMAKECONFIG_INSTALL_DIR}" FILE KF5SonnetTargets.cmake NAMESPACE KF5:: ) install(FILES ${CMAKE_CURRENT_BINARY_DIR}/sonnet_version.h DESTINATION ${KDE_INSTALL_INCLUDEDIR_KF5} COMPONENT Devel ) # contains list of debug categories, for kdebugsettings install(FILES sonnet.categories DESTINATION ${KDE_INSTALL_LOGGINGCATEGORIESDIR}) feature_summary(WHAT ALL FATAL_ON_MISSING_REQUIRED_PACKAGES) diff --git a/src/ui/CMakeLists.txt b/src/ui/CMakeLists.txt index 6b69a3a..1279e6a 100644 --- a/src/ui/CMakeLists.txt +++ b/src/ui/CMakeLists.txt @@ -1,99 +1,103 @@ project(sonnetui) include_directories( ${QT_INCLUDES} ${CMAKE_CURRENT_BINARY_DIR} ) include_directories( ${CMAKE_CURRENT_SOURCE_DIR}/../core ${CMAKE_CURRENT_BINARY_DIR}/../core ) ecm_create_qm_loader(sonnet_QM_LOADER sonnet5_qt) set(sonnetui_SRCS configdialog.cpp configwidget.cpp dialog.cpp dictionarycombobox.cpp highlighter.cpp spellcheckdecorator.cpp ${sonnet_QM_LOADER} ) ecm_qt_declare_logging_category(sonnetui_SRCS HEADER ui_debug.h IDENTIFIER SONNET_LOG_UI CATEGORY_NAME sonnet.ui) set(sonnetui_UI configui.ui sonnetui.ui ) ecm_generate_headers(SonnetUi_CamelCase_HEADERS HEADER_NAMES Dialog Highlighter ConfigDialog ConfigWidget DictionaryComboBox SpellCheckDecorator PREFIX Sonnet REQUIRED_HEADERS SonnetUi_HEADERS ) qt5_wrap_ui(sonnetui_SRCS ${sonnetui_UI}) add_library(KF5SonnetUi ${sonnetui_SRCS}) generate_export_header(KF5SonnetUi BASE_NAME SonnetUi EXPORT_FILE_NAME sonnetui_export.h) add_library(KF5::SonnetUi ALIAS KF5SonnetUi) target_link_libraries(KF5SonnetUi PUBLIC Qt5::Widgets PRIVATE KF5::SonnetCore ) set_target_properties(KF5SonnetUi PROPERTIES VERSION ${SONNET_VERSION_STRING} SOVERSION ${SONNET_SOVERSION} EXPORT_NAME SonnetUi ) # CMAKE_CURRENT_BINARY_DIR: for camelcase headers and lowercase forwarders target_include_directories(KF5SonnetUi INTERFACE "$") target_include_directories(KF5SonnetUi PUBLIC "$") install(TARGETS KF5SonnetUi EXPORT KF5SonnetTargets ${KF5_INSTALL_TARGETS_DEFAULT_ARGS}) install(FILES ${SonnetUi_CamelCase_HEADERS} DESTINATION ${KDE_INSTALL_INCLUDEDIR_KF5}/SonnetUi/Sonnet COMPONENT Devel) install(FILES ${SonnetUi_HEADERS} ${CMAKE_CURRENT_BINARY_DIR}/sonnetui_export.h DESTINATION ${KDE_INSTALL_INCLUDEDIR_KF5}/SonnetUi/sonnet COMPONENT Devel) +if(BUILD_DESIGNERPLUGIN) + add_subdirectory(designer) +endif() + if (BUILD_QCH) ecm_add_qch( KF5SonnetUi_QCH NAME SonnetUi BASE_NAME KF5SonnetUi VERSION ${KF5_VERSION} ORG_DOMAIN org.kde SOURCES # using only public headers, to cover only public API ${SonnetUi_HEADERS} LINK_QCHS Qt5Core_QCH Qt5Gui_QCH Qt5Widgets_QCH BLANK_MACROS SONNETUI_EXPORT SONNETUI_DEPRECATED_EXPORT SONNETUI_DEPRECATED TAGFILE_INSTALL_DESTINATION ${KDE_INSTALL_QTQCHDIR} QCH_INSTALL_DESTINATION ${KDE_INSTALL_QTQCHDIR} COMPONENT Devel ) endif() include(ECMGeneratePriFile) ecm_generate_pri_file(BASE_NAME SonnetUi LIB_NAME KF5SonnetUi DEPS "widgets" FILENAME_VAR PRI_FILENAME INCLUDE_INSTALL_DIR ${KDE_INSTALL_INCLUDEDIR_KF5}/SonnetUi) install(FILES ${PRI_FILENAME} DESTINATION ${ECM_MKSPECS_INSTALL_DIR}) diff --git a/src/ui/designer/CMakeLists.txt b/src/ui/designer/CMakeLists.txt new file mode 100644 index 0000000..396f7bb --- /dev/null +++ b/src/ui/designer/CMakeLists.txt @@ -0,0 +1,18 @@ +include(ECMAddQtDesignerPlugin) + +ecm_qtdesignerplugin_widget(Sonnet::DictionaryComboBox + TOOLTIP "Dictionary Combobox" + WHATSTHIS "A combobox to select a dictionary for spellchecking" + GROUP "Sonnet (KF5)" +) + +ecm_add_qtdesignerplugin(sonnetuiwidgets + NAME SonnetUiWidgets + OUTPUT_NAME sonnetui5widgets + WIDGETS + Sonnet::DictionaryComboBox + LINK_LIBRARIES + KF5::SonnetUi + INSTALL_DESTINATION "${KDE_INSTALL_QTPLUGINDIR}/designer" + COMPONENT Devel +)