diff --git a/CMakeLists.txt b/CMakeLists.txt index ef56b11c..e3c68d01 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -37,6 +37,7 @@ option(FRAMELESSHELPER_BUILD_STATIC "Build FramelessHelper as a static library." option(FRAMELESSHELPER_BUILD_WIDGETS "Build FramelessHelper's Widgets module." ON) option(FRAMELESSHELPER_BUILD_QUICK "Build FramelessHelper's Quick module." ON) option(FRAMELESSHELPER_BUILD_EXAMPLES "Build FramelessHelper demo applications." OFF) +option(FRAMELESSHELPER_BUILD_DOCUMENTATIONS "Build FramelessHelper documentations." OFF) option(FRAMELESSHELPER_EXAMPLES_DEPLOYQT "Deploy the Qt framework after building the demo projects." OFF) option(FRAMELESSHELPER_NO_DEBUG_OUTPUT "Suppress the debug messages from FramelessHelper." ON) option(FRAMELESSHELPER_NO_BUNDLE_RESOURCE "Do not bundle any resources within FramelessHelper." OFF) @@ -61,7 +62,6 @@ option(FRAMELESSHELPER_NO_TRANSLATION "Don't bundle the I18N translations into t option(FRAMELESSHELPER_NO_MICA_MATERIAL "Disable the cross-platform homemade Mica Material." OFF) option(FRAMELESSHELPER_NO_BORDER_PAINTER "Disable the cross-platform window frame border painter." OFF) option(FRAMELESSHELPER_NO_SYSTEM_BUTTON "Disable the pre-defined StandardSystemButton control." OFF) -option(FRAMELESSHELPER_BUILD_DOCUMENTATIONS "Build FramelessHelper documentations." ON) if(FRAMELESSHELPER_NO_WINDOW AND FRAMELESSHELPER_BUILD_EXAMPLES) message(WARNING "You can't build the examples when the FramelessWindow class is disabled at the same time!") diff --git a/doxygen/doxygen.cmake b/doxygen/doxygen.cmake index ead9b46e..e4191622 100644 --- a/doxygen/doxygen.cmake +++ b/doxygen/doxygen.cmake @@ -16,14 +16,15 @@ Add Doxygen target. [COMPILE_DEFINITIONS ...] [TARGETS ...] [ENVIRONMENT_EXPORTS ...] - [NO_EXPAND_MACROS ...] + [NO_EXPAND_MACROS ...] + [DEPENDS ...] ) ]] # function(setup_doxygen_command _target) set(options) - set(oneValueArgs NAME VERSION DESCRIPTION LOGO MDFILE OUTPUT_DIR GENERATE_TAGFILE) + set(oneValueArgs NAME VERSION DESCRIPTION LOGO MDFILE OUTPUT_DIR INSTALL_DIR GENERATE_TAGFILE) set(multiValueArgs INPUT TAGFILES INCLUDE_DIRECTORIES COMPILE_DEFINITIONS TARGETS ENVIRONMENT_EXPORTS - NO_EXPAND_MACROS + NO_EXPAND_MACROS DEPENDS ) cmake_parse_arguments(FUNC "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) @@ -132,7 +133,6 @@ function(setup_doxygen_command _target) list(APPEND _env "DOXY_FILE_DIR=${DOXYGEN_FILE_DIR}") list(APPEND _env "DOXY_INCLUDE_FILE=${_doxy_includes}") - list(APPEND _env "DOXY_OUTPUT_DIR=${_doxy_output_dir}") list(APPEND _env "DOXY_PROJECT_NAME=${_name}") list(APPEND _env "DOXY_PROJECT_VERSION=${_version}") @@ -141,12 +141,43 @@ function(setup_doxygen_command _target) list(APPEND _env "DOXY_MAINPAGE_MD_FILE=${_mdfile}") list(APPEND _env "DOXY_GENERATE_TAGFILE=${_tagfile}") - set(_build_command "${CMAKE_COMMAND}" "-E" "env" ${_env} "${DOXYGEN_EXECUTABLE}") + set(_build_command "${CMAKE_COMMAND}" "-E" "env" + ${_env} "DOXY_OUTPUT_DIR=${_doxy_output_dir}" + "${DOXYGEN_EXECUTABLE}" "${DOXYGEN_FILE_DIR}/Doxyfile" + ) + + if(FUNC_DEPENDS) + set(_dependencies DEPENDS ${FUNC_DEPENDS}) + endif() add_custom_target(${_target} - ${_build_command} "${DOXYGEN_FILE_DIR}/Doxyfile" + ${_build_command} COMMENT "Build HTML documentation" WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" VERBATIM + ${_dependencies} ) + + if(FUNC_INSTALL_DIR AND CMAKE_INSTALL_PREFIX) + get_filename_component(_install_dir ${FUNC_INSTALL_DIR} ABSOLUTE BASE_DIR ${CMAKE_INSTALL_PREFIX}) + set(_install_command "${CMAKE_COMMAND}" "-E" "env" + ${_env} "DOXY_OUTPUT_DIR=${_install_dir}" + "${DOXYGEN_EXECUTABLE}" "${DOXYGEN_FILE_DIR}/Doxyfile" + ) + + set(_install_command_quoted) + + foreach(_item ${_install_command}) + set(_install_command_quoted "${_install_command_quoted}\"${_item}\" ") + endforeach() + + install(CODE " + message(STATUS \"Install HTML documentation\") + file(MAKE_DIRECTORY \"${_install_dir}\") + execute_process( + COMMAND ${_install_command_quoted} + WORKING_DIRECTORY \"${CMAKE_CURRENT_SOURCE_DIR}\" + ) + ") + endif() endfunction() diff --git a/doxygen/extra-stylesheet.css b/doxygen/extra-stylesheet.css index f1825132..71dd7f4d 100644 --- a/doxygen/extra-stylesheet.css +++ b/doxygen/extra-stylesheet.css @@ -1,3 +1,11 @@ table.memname tr { float: left; +} + +.memname td { + padding: 0; +} + +.memname tr:last-child:not(:first-child) { + margin-left: 0.75em } \ No newline at end of file diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index da14bb4b..f69185a7 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -23,20 +23,24 @@ ]] set(_targets) +set(_doc_input_dirs) if(TARGET Qt${QT_VERSION_MAJOR}::Core AND TARGET Qt${QT_VERSION_MAJOR}::Gui) add_subdirectory(core) list(APPEND _targets ${PROJECT_NAME}::Core) + list(APPEND _doc_input_dirs core ../include/FramelessHelper/Core) endif() if(FRAMELESSHELPER_BUILD_WIDGETS AND TARGET Qt${QT_VERSION_MAJOR}::Widgets) add_subdirectory(widgets) list(APPEND _targets ${PROJECT_NAME}::Widgets) + list(APPEND _doc_input_dirs widgets ../include/FramelessHelper/Widgets) endif() if(FRAMELESSHELPER_BUILD_QUICK AND TARGET Qt${QT_VERSION_MAJOR}::Quick) add_subdirectory(quick) list(APPEND _targets ${PROJECT_NAME}::Quick) + list(APPEND _doc_input_dirs quick ../include/FramelessHelper/Quick) endif() if(FRAMELESSHELPER_BUILD_DOCUMENTATIONS) @@ -50,13 +54,22 @@ if(FRAMELESSHELPER_BUILD_DOCUMENTATIONS) endif() include(../doxygen/doxygen.cmake) + + set(_install_options) + + if(NOT FRAMELESSHELPER_NO_INSTALL) + set(_install_options INSTALL_DIR share/doc/FramelessHelper) + endif() + setup_doxygen_command(FramelessHelper_RunDoxygen DESCRIPTION "Qt Window Customization Framework" MDFILE ../doc/doxygen_mainpage.md - OUTPUT_DIR ${CMAKE_BINARY_DIR}/html - INPUT . ../include + OUTPUT_DIR ${CMAKE_BINARY_DIR} + INPUT ${_doc_input_dirs} TARGETS ${_targets} + DEPENDS ${_targets} NO_EXPAND_MACROS Q_OBJECT Q_GADGET Q_DECLARE_TR_FUNCTIONS - COMPILE_DEFINITIONS Q_SIGNALS=signals + COMPILE_DEFINITIONS Q_SIGNALS=Q_SIGNALS Q_SLOTS=Q_SLOTS + ${_install_options} ) endif() \ No newline at end of file diff --git a/src/core/framelessmanager.cpp b/src/core/framelessmanager.cpp index 47f52b06..a19bc922 100644 --- a/src/core/framelessmanager.cpp +++ b/src/core/framelessmanager.cpp @@ -289,6 +289,11 @@ void FramelessManagerPrivate::initialize() /*! \class FramelessManager \brief FramelessHelper global manager, managing all frameless related resources. + + \property FramelessManager::systemTheme + \property FramelessManager::systemAccentColor + \property FramelessManager::wallpaper + \property FramelessManager::wallpaperAspectStyle */ FramelessManager::FramelessManager(QObject *parent) : @@ -420,14 +425,14 @@ void FramelessManager::removeWindow(const WId windowId) /*! \fn void FramelessManager::systemThemeChanged() - \brief This signal is emitted when the system theme changes externally. + This signal is emitted when the system theme changes externally. \sa systemTheme() */ /*! \fn void FramelessManager::wallpaperChanged() - \brief This signal is emitted when the system wallpaper changes externally. + This signal is emitted when the system wallpaper changes externally. \sa wallpaper() */