diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 00000000..8d46ce21 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,55 @@ +cmake_minimum_required(VERSION 3.20) + +project(qskinny) + +set_property(GLOBAL PROPERTY USE_FOLDERS ON) + +set(CMAKE_CXX_STANDARD 11) +set(CMAKE_CXX_STANDARD_REQUIRED ON) +set(CMAKE_CXX_EXTENSIONS OFF) + +set(Qt5Core_FIND_COMPONENTS Private CACHE STRING "force include private headers" FORCE) +set(Qt5Gui_FIND_COMPONENTS Private CACHE STRING "force include private headers" FORCE) +set(Qt5OpenGL_FIND_COMPONENTS Private CACHE STRING "force include private headers" FORCE) +set(Qt5Quick_FIND_COMPONENTS Private CACHE STRING "force include private headers" FORCE) +set(Qt5QuickWidgets_FIND_COMPONENTS Private CACHE STRING "force include private headers" FORCE) +set(Qt5Svg_FIND_COMPONENTS Private CACHE STRING "force include private headers" FORCE) +set(Qt5WebEngine_FIND_COMPONENTS Private CACHE STRING "force include private headers" FORCE) +set(Qt5WebEngineCore_FIND_COMPONENTS Private CACHE STRING "force include private headers" FORCE) +set(Qt5Widgets_FIND_COMPONENTS Private CACHE STRING "force include private headers" FORCE) + +set(Qt5_DIR "C:/.conan/ea20b9/1/lib/cmake/Qt5") # TODO +find_package(Qt5 REQUIRED COMPONENTS Core Gui Opengl Quick Quickwidgets Svg Webengine WebengineCore Widgets) + +message(STATUS "Qt5_VERSION : ${Qt5_VERSION}") +message(STATUS "Qt5_VERSION_MAJOR: ${Qt5_VERSION_MAJOR}") +message(STATUS "Qt5_VERSION_MINOR: ${Qt5_VERSION_MINOR}") +message(STATUS "Qt5_VERSION_PATCH: ${Qt5_VERSION_PATCH}") + +add_subdirectory(src) +add_subdirectory(skins) +#TODO +#add_subdirectory(inputcontext) +add_subdirectory(qmlexport) +add_subdirectory(tools) +add_subdirectory(support) +add_subdirectory(examples) +#add_subdirectory(playground) + +#TODO +#OTHER_FILES = +#doc / Doxyfile +#doc/*.dox +# doc/*.metadox +# doc/classes/*.dox +# doc/classes/*.metadox +# TODO + +# TODO +# qmlexport.depends = src +# inputcontext.depends = src +# skins.depends = src +# tools.depends = src +# support.depends = src skins +# examples.depends = tools support skins qmlexport +# playground.depends = tools support skins qmlexport diff --git a/examples/CMakeLists.txt b/examples/CMakeLists.txt new file mode 100644 index 00000000..054308d7 --- /dev/null +++ b/examples/CMakeLists.txt @@ -0,0 +1,20 @@ +#c++ +#add_subdirectory(desktop) +#add_subdirectory(gallery) +#add_subdirectory(layouts) +#add_subdirectory(listbox) +#add_subdirectory(messagebox) +#add_subdirectory(mycontrols) +#add_subdirectory(qvgviewer) +#add_subdirectory(thumbnails) +#add_subdirectory(tabview) +add_subdirectory(iotdashboard) + +#qml +#add_subdirectory(boxes) +#add_subdirectory(buttons) +#add_subdirectory(frames) +#add_subdirectory(glabels) +#add_subdirectory(messageboxQml) + +# TODO \ No newline at end of file diff --git a/examples/boxes/CMakeLists.txt b/examples/boxes/CMakeLists.txt new file mode 100644 index 00000000..a76dd06a --- /dev/null +++ b/examples/boxes/CMakeLists.txt @@ -0,0 +1,8 @@ +CONFIG += qskexample + +list(APPEND TARGET_HEADERS + Box.h + +list(APPEND TARGET_SOURCES + Box.cpp + main.cpp diff --git a/examples/buttons/CMakeLists.txt b/examples/buttons/CMakeLists.txt new file mode 100644 index 00000000..6903a5ff --- /dev/null +++ b/examples/buttons/CMakeLists.txt @@ -0,0 +1,5 @@ +CONFIG += qskexample qskqmlexport + +list(APPEND TARGET_RESSOURCES buttons.qrc) + + list(APPEND TARGET_SOURCES main.cpp) diff --git a/examples/desktop/CMakeLists.txt b/examples/desktop/CMakeLists.txt new file mode 100644 index 00000000..8b2cd0e3 --- /dev/null +++ b/examples/desktop/CMakeLists.txt @@ -0,0 +1,4 @@ +CONFIG += qskexample + +list(APPEND TARGET_SOURCES + main.cpp diff --git a/examples/frames/CMakeLists.txt b/examples/frames/CMakeLists.txt new file mode 100644 index 00000000..42a8aefa --- /dev/null +++ b/examples/frames/CMakeLists.txt @@ -0,0 +1,7 @@ +CONFIG += qskexample qskqmlexport + +list(APPEND TARGET_RESSOURCES frames.qrc) + + list(APPEND TARGET_HEADERS Frame.h) + + list(APPEND TARGET_SOURCES Frame.cpp main.cpp) diff --git a/examples/gallery/CMakeLists.txt b/examples/gallery/CMakeLists.txt new file mode 100644 index 00000000..4177e9e1 --- /dev/null +++ b/examples/gallery/CMakeLists.txt @@ -0,0 +1,50 @@ +CONFIG += qskexample + +list(APPEND TARGET_HEADERS + label/LabelPage.h + +list(APPEND TARGET_SOURCES + label/LabelPage.cpp + +list(APPEND TARGET_HEADERS + slider/SliderPage.h + +list(APPEND TARGET_SOURCES + slider/SliderPage.cpp + +list(APPEND TARGET_HEADERS + progressbar/ProgressBarPage.h + +list(APPEND TARGET_SOURCES + progressbar/ProgressBarPage.cpp + +list(APPEND TARGET_HEADERS + button/ButtonPage.h + +list(APPEND TARGET_SOURCES + button/ButtonPage.cpp + +list(APPEND TARGET_HEADERS + textinput/TextInputPage.h + +list(APPEND TARGET_SOURCES + textinput/TextInputPage.cpp + +list(APPEND TARGET_HEADERS + selector/SelectorPage.h + +list(APPEND TARGET_SOURCES + selector/SelectorPage.cpp + +list(APPEND TARGET_HEADERS + dialog/DialogPage.h + +list(APPEND TARGET_SOURCES + dialog/DialogPage.cpp + +list(APPEND TARGET_HEADERS + Page.h + +list(APPEND TARGET_SOURCES + Page.cpp + main.cpp diff --git a/examples/glabels/CMakeLists.txt b/examples/glabels/CMakeLists.txt new file mode 100644 index 00000000..778a252e --- /dev/null +++ b/examples/glabels/CMakeLists.txt @@ -0,0 +1,5 @@ +CONFIG += qskexample qskqmlexport + +list(APPEND TARGET_RESSOURCES glabels.qrc) + + list(APPEND TARGET_SOURCES main.cpp) diff --git a/examples/iotdashboard/CMakeLists.txt b/examples/iotdashboard/CMakeLists.txt new file mode 100644 index 00000000..017335ef --- /dev/null +++ b/examples/iotdashboard/CMakeLists.txt @@ -0,0 +1,87 @@ +list(APPEND TARGET_SOURCES + Box.cpp + BoxWithButtons.cpp + CircularProgressBar.cpp + CircularProgressBarSkinlet.cpp + DashboardPage.cpp + Diagram.cpp + DiagramSkinlet.cpp + GraphicProvider.cpp + GridBox.cpp + LightDisplaySkinlet.cpp + LightDisplay.cpp + MainItem.cpp + MenuBar.cpp + MyDevices.cpp + PieChart.cpp + PieChartPainted.cpp + PieChartSkinlet.cpp + RoomsPage.cpp + RoundedIcon.cpp + Skin.cpp + TopBar.cpp + RoundButton.cpp + UsageBox.cpp + UsageDiagram.cpp + MainWindow.cpp + main.cpp) + +list(APPEND TARGET_SOURCES + nodes/DiagramDataNode.cpp + nodes/DiagramSegmentsNode.cpp + nodes/RadialTickmarksNode.cpp) + +list(APPEND TARGET_HEADERS + Box.h + BoxWithButtons.h + CircularProgressBar.h + CircularProgressBarSkinlet.h + Diagram.h + DiagramSkinlet.h + GraphicProvider.h + GridBox.h + LightDisplaySkinlet.h + LightDisplay.h + DashboardPage.h + MainItem.h + MainWindow.h + MenuBar.h + MyDevices.h + PieChart.h + PieChartPainted.h + PieChartSkinlet.h + RoomsPage.h + RoundedIcon.h + Skin.h + TopBar.h + RoundButton.h + UsageBox.h + UsageDiagram.h) + +list(APPEND TARGET_HEADERS + nodes/DiagramDataNode.h + nodes/DiagramSegmentsNode.h + nodes/RadialTickmarksNode.h) + +list(APPEND TARGET_RESSOURCES + images.qrc + fonts.qrc) + +set(TARGET_NAME iotdashboard) + +add_executable(${TARGET_NAME} ${TARGET_SOURCES} ${TARGET_HEADERS} ${TARGET_RESSOURCES}) + +set_target_properties(${TARGET_NAME} PROPERTIES + AUTOMOC ON + AUTORCC ON) + +target_link_libraries(${TARGET_NAME} + PRIVATE + qskinny + qsktestsupport + Qt5::Svg) + +# TODO: examples should not use private headers +target_link_libraries(${TARGET_NAME} + PRIVATE + Qt5::QuickPrivate) # TODO why not transive by qskinny target \ No newline at end of file diff --git a/examples/layouts/CMakeLists.txt b/examples/layouts/CMakeLists.txt new file mode 100644 index 00000000..1a57b07a --- /dev/null +++ b/examples/layouts/CMakeLists.txt @@ -0,0 +1,23 @@ +CONFIG += qskexample qskqmlexport + +list(APPEND TARGET_RESSOURCES + layouts.qrc + +list(APPEND TARGET_HEADERS + TestRectangle.h + ButtonBox.h + FlowLayoutPage.h + GridLayoutPage.h + LinearLayoutPage.h + DynamicConstraintsPage.h + StackLayoutPage.h + +list(APPEND TARGET_SOURCES + TestRectangle.cpp + ButtonBox.cpp + FlowLayoutPage.cpp + GridLayoutPage.cpp + LinearLayoutPage.cpp + DynamicConstraintsPage.cpp + StackLayoutPage.cpp + main.cpp diff --git a/examples/listbox/CMakeLists.txt b/examples/listbox/CMakeLists.txt new file mode 100644 index 00000000..8b2cd0e3 --- /dev/null +++ b/examples/listbox/CMakeLists.txt @@ -0,0 +1,4 @@ +CONFIG += qskexample + +list(APPEND TARGET_SOURCES + main.cpp diff --git a/examples/messagebox/CMakeLists.txt b/examples/messagebox/CMakeLists.txt new file mode 100644 index 00000000..8b2cd0e3 --- /dev/null +++ b/examples/messagebox/CMakeLists.txt @@ -0,0 +1,4 @@ +CONFIG += qskexample + +list(APPEND TARGET_SOURCES + main.cpp diff --git a/examples/messageboxQml/CMakeLists.txt b/examples/messageboxQml/CMakeLists.txt new file mode 100644 index 00000000..b8d1d692 --- /dev/null +++ b/examples/messageboxQml/CMakeLists.txt @@ -0,0 +1,8 @@ +CONFIG += qskexample +CONFIG += qskqmlexport + +list(APPEND TARGET_RESSOURCES + messagebox.qrc + +list(APPEND TARGET_SOURCES + main.cpp diff --git a/examples/mycontrols/CMakeLists.txt b/examples/mycontrols/CMakeLists.txt new file mode 100644 index 00000000..e8931b22 --- /dev/null +++ b/examples/mycontrols/CMakeLists.txt @@ -0,0 +1,12 @@ +CONFIG += qskexample + +list(APPEND TARGET_SOURCES + MySkin.cpp + MyToggleButton.cpp + MyToggleButtonSkinlet.cpp + main.cpp + +list(APPEND TARGET_HEADERS + MyToggleButton.h + MyToggleButtonSkinlet.h + MySkin.h diff --git a/examples/qvgviewer/CMakeLists.txt b/examples/qvgviewer/CMakeLists.txt new file mode 100644 index 00000000..54aea663 --- /dev/null +++ b/examples/qvgviewer/CMakeLists.txt @@ -0,0 +1,32 @@ +CONFIG += qskexample + +list(APPEND TARGET_HEADERS + MainWindow.h + +list(APPEND TARGET_SOURCES + MainWindow.cpp + main.cpp + +#CONFIG += autoqvg + +autoqvg { + CONFIG += qskqvg + + QVGlist(APPEND TARGET_RESSOURCES + qvgviewer.qrc + + SVGSOURCES = + svg/01.01.10.svg + svg/01.03.04q.svg + svg/01.08.05q.svg + svg/01.25.18.svg + +} else { + +#When cross compiling we need to have the svg2qvg tool being +#compiled for the build environment - not for the one of the target. +#So we better have precompiled qvg files in the repository to +#make the build process much easier + list(APPEND TARGET_RESSOURCES + qvgviewer.qrc +} diff --git a/examples/tabview/CMakeLists.txt b/examples/tabview/CMakeLists.txt new file mode 100644 index 00000000..eb86cab2 --- /dev/null +++ b/examples/tabview/CMakeLists.txt @@ -0,0 +1,12 @@ +CONFIG += qskexample + +list(APPEND TARGET_HEADERS + CustomSlider.h + CustomSliderSkinlet.h + OtherSlider.h + +list(APPEND TARGET_SOURCES + CustomSlider.cpp + CustomSliderSkinlet.cpp + OtherSlider.cpp + main.cpp diff --git a/examples/thumbnails/CMakeLists.txt b/examples/thumbnails/CMakeLists.txt new file mode 100644 index 00000000..8b2cd0e3 --- /dev/null +++ b/examples/thumbnails/CMakeLists.txt @@ -0,0 +1,4 @@ +CONFIG += qskexample + +list(APPEND TARGET_SOURCES + main.cpp diff --git a/features/qskconfig.cmake b/features/qskconfig.cmake new file mode 100644 index 00000000..6d438310 --- /dev/null +++ b/features/qskconfig.cmake @@ -0,0 +1,185 @@ +############################################################################ +# QSkinny - Copyright (C) 2016 Uwe Rathmann +# This file may be used under the terms of the QSkinny License, Version 1.0 +############################################################################ + +set(QSK_VER_MAJ 0) +set(QSK_VER_MIN 0) +set(QSK_VER_PAT 0) +set(QSK_VERSION ${QSK_VER_MAJ}.${QSK_VER_MIN}.${QSK_VER_PAT}) + +# trying the PREFIX environment variable first +set(QSK_INSTALL_PREFIX = $ENV{PREFIX}) # TODO still required? + +if("${QSK_INSTALL_PREFIX}" STREQUAL "") + set(QSK_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}") # TODO where does QT_INSTALL_PREFIX come from? + + if (UNIX) + set(QSK_INSTALL_PREFIX /usr/local/qskinny-${QSK_VERSION}) + endif() + + if (MSVC) + set(QSK_INSTALL_PREFIX C:/Qskinny-${QSK_VERSION}) + endif() +endif() + +set(QSK_INSTALL_DOCS doc) +set(QSK_INSTALL_HEADERS include) +set(QSK_INSTALL_LIBS lib) +set(QSK_INSTALL_BINS bin) +set(QSK_INSTALL_PLUGINS plugins) +set(QSK_INSTALL_EXAMPLES examples) + +# TODO find compiler flag equivalent +list(APPEND CONFIG no_private_qt_headers_warning) +list(APPEND CONFIG warn_on) +list(APPEND CONFIG no_keywords) +list(APPEND CONFIG silent) +#list(APPEND CONFIG -= depend_includepath) # TODO was -= +list(APPEND CONFIG strict_c++) +list(APPEND CONFIG c++11) +list(APPEND CONFIG pedantic) +list(APPEND CONFIG hide_symbols) +#list(APPEND CONFIG += debug) +#list(APPEND CONFIG += sanitize) + +# TODO +# use_no_rpath { +# CONFIG -= use_local_rpath use_install_rpath +# } else { +# cross_compile { +# CONFIG *= use_install_rpath +# QMAKE_RPATHLINKDIR *= $${QSK_PLUGIN_DIR}/skins +# } else { +# !use_install_rpath: CONFIG *= use_local_rpath +# } +# } + +set(MOC_DIR moc) +set(OBJECTS_DIR obj) +set(RCC_DIR rcc) + +list(APPEND QSK_CONFIG QskDll) + +option(QskDll "build qskinny as shared library" ON) + +if(UNIX AND NOT APPLE) + set(LINUX TRUE) +endif() + +if(LINUX) + + if ("pedantic" IN_LIST CONFIG) + + add_compile_definitions(QT_STRICT_ITERATORS) + + # Qt headers do not stand pedantic checks, so it's better + # to exclude them by declaring them as system includes + + list(APPEND CONFIG qtassysteminclude) + endif() + + if ("qtassysteminclude" IN_LIST CONFIG) + + # As most distros set QT_INSTALL_HEADERS to /usr/include we + # would run into gcc compiler errors and better drop it + # from the list below. Should be no problem as we don't + # add the Qt module to our includes and therefore don't + # need this path. + + # TODO + # QMAKE_CXXFLAGS += \ + # -isystem $$[QT_INSTALL_HEADERS]/QtCore \ + # -isystem $$[QT_INSTALL_HEADERS]/QtCore/$$[QT_VERSION]/QtCore \ + # -isystem $$[QT_INSTALL_HEADERS]/QtGui \ + # -isystem $$[QT_INSTALL_HEADERS]/QtGui/$$[QT_VERSION]/QtGui \ + # -isystem $$[QT_INSTALL_HEADERS]/QtQuick \ + # -isystem $$[QT_INSTALL_HEADERS]/QtQuick/$$[QT_VERSION]/QtQuick \ + # -isystem $$[QT_INSTALL_HEADERS]/QtQml \ + # -isystem $$[QT_INSTALL_HEADERS]/QtQml/$$[QT_VERSION]/QtQml \ + endif() +endif() + +if ("${CMAKE_CXX_COMPILER}" MATCHES ".*linux-g\\+\\+" OR "${CMAKE_CXX_COMPILER}" MATCHES ".*linux-g\\+\\+-64") + # --- optional optimzations + if (CMAKE_BUILD_TYPE EQUAL "Debug") + set(CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS} -O0) # TODO check if still required + else() + set(CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS} -O3 -ffast-math) # TODO check if still required + endif() +endif() + +if ("pedantic" IN_LIST CONFIG) + if ("${CMAKE_CXX_COMPILER}" MATCHES ".*linux-g\\+\\+" OR "${CMAKE_CXX_COMPILER}" MATCHES ".*linux-g\\+\\+-64") + set(CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS} -pedantic-errors) + set(CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS} -Wextra) + set(CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS} -Werror=format-security) + #QMAKE_CXXFLAGS *= -Wlogical-op + + # QMAKE_CXXFLAGS *= -Wconversion + # QMAKE_CXXFLAGS *= -Wfloat-equal + # QMAKE_CXXFLAGS *= -Wshadow + + set(CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS} -Wsuggest-override) + # QMAKE_CXXFLAGS *= -Wsuggest-final-types + # QMAKE_CXXFLAGS *= -Wsuggest-final-methods + + # QMAKE_CXXFLAGS *= -fanalyzer + endif() + + if ("${CMAKE_CXX_COMPILER}" MATCHES ".*linux-clang") + + #QMAKE_CXXFLAGS *= -pedantic-errors + + #QMAKE_CXXFLAGS *= -Weverything + #QMAKE_CXXFLAGS *= -Wno-c++98-compat-pedantic + #QMAKE_CXXFLAGS *= -Wno-global-constructors + #QMAKE_CXXFLAGS *= -Wno-exit-time-destructors + #QMAKE_CXXFLAGS *= -Wno-padded + #QMAKE_CXXFLAGS *= -Wno-float-equal + #QMAKE_CXXFLAGS *= -Wno-undefined-reinterpret-cast + #QMAKE_CXXFLAGS *= -Wno-deprecated + #QMAKE_CXXFLAGS *= -Wno-switch-enum + #QMAKE_CXXFLAGS *= -Wno-keyword-macro + #QMAKE_CXXFLAGS *= -Wno-old-style-cast + #QMAKE_CXXFLAGS *= -Wno-used-but-marked-unused + #QMAKE_CXXFLAGS *= -Wno-weak-vtables + #QMAKE_CXXFLAGS *= -Wno-shadow + #QMAKE_CXXFLAGS *= -Wno-double-promotion + #QMAKE_CXXFLAGS *= -Wno-conversion + #QMAKE_CXXFLAGS *= -Wno-documentation-unknown-command + #QMAKE_CXXFLAGS *= -Wno-unused-macros + endif() +endif() + +if ("sanitize" IN_LIST CONFIG) + + list(APPEND CONFIG sanitizer) + list(APPEND CONFIG sanitize_address) + # CONFIG *= sanitize_undefined + + if ("${CMAKE_CXX_COMPILER}" MATCHES ".*linux-g\\+\\+" OR "${CMAKE_CXX_COMPILER}" MATCHES ".*linux-g\\+\\+-64") + #QMAKE_CXXFLAGS *= -fsanitize-address-use-after-scope + #QMAKE_LFLAGS *= -fsanitize-address-use-after-scope + endif() +endif() + +if (CMAKE_BUILD_TYPE EQUAL "Debug") + add_compile_definitions(ITEM_STATISTICS=1) +endif() + +# DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x000000 + +set(LOCAL_PRI $ENV{QSK_LOCAL_PRI}) + +if (${LOCAL_PRI}) # TODO not empty check + + if(EXISTS ${LOCAL_PRI}) + + # When not working with the Qt/Creator it is often more convenient + # to include the specific options of your local build, than passing + # them all on the command line + + include(${LOCAL_PRI}) + endif() +endif() \ No newline at end of file diff --git a/inputcontext/CMakeLists.txt b/inputcontext/CMakeLists.txt new file mode 100644 index 00000000..a694dffa --- /dev/null +++ b/inputcontext/CMakeLists.txt @@ -0,0 +1,48 @@ +set(TARGET_NAME qskinputcontext) + +target_link_libraries(${TARGET_NAME} PRIVATE gui-private) + +# TODO +# CONFIG += plugin +# CONFIG += qskinny + +if(QskDll) + target_compile_definitions(${TARGET_NAME} PRIVATE QSK_INPUTCONTEXT_MAKEDLL) +endif() + +list(APPEND TARGET_HEADERS + QskInputContextGlobal.h) + +list(APPEND TARGET_SOURCES + QskInputContextPlugin.cpp) + +list(APPEND TARGET_OTHER_FILES + metadata.json) + +# TODO +# pinyin { +# unix +# { +# CONFIG += link_pkgconfig PKGCONFIG += pinyin +# +# HEADERS += QskPinyinTextPredictor.h +# +# SOURCES += QskPinyinTextPredictor.cpp +# } +# } +# +# hunspell { +# unix +# { +# CONFIG += link_pkgconfig PKGCONFIG += hunspell +# +# HEADERS += QskHunspellTextPredictor.h +# +# SOURCES += QskHunspellTextPredictor.cpp +# } +# +# } + +add_library(${TARGET_NAME} SHARED ${TARGET_SOURCES} ${TARGET_HEADERS} ${TARGET_OTHER_FILES}) + +install(TARGETS ${TARGET_NAME} DESTINATION ${QSK_INSTALL_PLUGINS}/platforminputcontexts) \ No newline at end of file diff --git a/playground/CMakeLists.txt b/playground/CMakeLists.txt new file mode 100644 index 00000000..71b0dc26 --- /dev/null +++ b/playground/CMakeLists.txt @@ -0,0 +1,16 @@ +TEMPLATE = subdirs + + SUBDIRS += anchors dials dialogbuttons invoker inputpanel images + + SUBDIRS += + shadows + + qtHaveModule(webengine){ + + SUBDIRS += webview + } + +qtHaveModule(quickwidgets) +{ + SUBDIRS += grids +} diff --git a/playground/anchors/CMakeLists.txt b/playground/anchors/CMakeLists.txt new file mode 100644 index 00000000..10af3778 --- /dev/null +++ b/playground/anchors/CMakeLists.txt @@ -0,0 +1,21 @@ +CONFIG += qskexample + +list(APPEND TARGET_HEADERS + kiwi/Constraint.h + kiwi/Expression.h + kiwi/Solver.h + kiwi/Strength.h + kiwi/Term.h + kiwi/Variable.h + +list(APPEND TARGET_SOURCES + kiwi/Expression.cpp + kiwi/Constraint.cpp + kiwi/Solver.cpp + +list(APPEND TARGET_HEADERS + AnchorBox.h + +list(APPEND TARGET_SOURCES + AnchorBox.cpp + main.cpp diff --git a/playground/dialogbuttons/CMakeLists.txt b/playground/dialogbuttons/CMakeLists.txt new file mode 100644 index 00000000..7b96337a --- /dev/null +++ b/playground/dialogbuttons/CMakeLists.txt @@ -0,0 +1,8 @@ +CONFIG += qskexample + +list(APPEND TARGET_HEADERS + Window.h + +list(APPEND TARGET_SOURCES + Window.cpp + main.cpp diff --git a/playground/dials/CMakeLists.txt b/playground/dials/CMakeLists.txt new file mode 100644 index 00000000..be7505a2 --- /dev/null +++ b/playground/dials/CMakeLists.txt @@ -0,0 +1,17 @@ +CONFIG += qskexample + +list(APPEND TARGET_HEADERS + SkinFactory.h + Dial.h + DialSkinlet.h + Dashboard.h + +list(APPEND TARGET_SOURCES + SkinFactory.cpp + Dial.cpp + DialSkinlet.cpp + Dashboard.cpp + main.cpp + +list(APPEND TARGET_RESSOURCES + images.qrc diff --git a/playground/grids/CMakeLists.txt b/playground/grids/CMakeLists.txt new file mode 100644 index 00000000..52dcff88 --- /dev/null +++ b/playground/grids/CMakeLists.txt @@ -0,0 +1,27 @@ +CONFIG += qskexample +target_link_libraries(${TARGET_NAME} PRIVATE widgets quickwidgets) + +list(APPEND TARGET_HEADERS + GridAccessor.h + GridSkinny.h + GridWidgets.h + GridGraphics.h + GridQuick.h + TestBox.h + +list(APPEND TARGET_SOURCES + GridAccessor.cpp + GridSkinny.cpp + GridWidgets.cpp + GridGraphics.cpp + GridQuick.cpp + TestBox.cpp + main.cpp + +linux { + pedantic + { + QMAKE_CXXFLAGS += -isystem $$[ QT_INSTALL_HEADERS ] / QtQuickWidgets QMAKE_CXXFLAGS += + -isystem $$[ QT_INSTALL_HEADERS ] / QtWidgets + } +} diff --git a/playground/images/CMakeLists.txt b/playground/images/CMakeLists.txt new file mode 100644 index 00000000..771aff5c --- /dev/null +++ b/playground/images/CMakeLists.txt @@ -0,0 +1,15 @@ +CONFIG += qskexample qskqmlexport + +target_link_libraries(${TARGET_NAME} + PRIVATE + Qt5::QuickPrivate) + +list(APPEND TARGET_RESSOURCES + images.qrc + +list(APPEND TARGET_HEADERS + Image.h + +list(APPEND TARGET_SOURCES + Image.cpp + main.cpp diff --git a/playground/inputpanel/CMakeLists.txt b/playground/inputpanel/CMakeLists.txt new file mode 100644 index 00000000..8b2cd0e3 --- /dev/null +++ b/playground/inputpanel/CMakeLists.txt @@ -0,0 +1,4 @@ +CONFIG += qskexample + +list(APPEND TARGET_SOURCES + main.cpp diff --git a/playground/invoker/CMakeLists.txt b/playground/invoker/CMakeLists.txt new file mode 100644 index 00000000..cc6566c3 --- /dev/null +++ b/playground/invoker/CMakeLists.txt @@ -0,0 +1,12 @@ +CONFIG += qskexample + +QMAKE_MOC_OPTIONS += -nw # disable warning about missing READ + +list(APPEND TARGET_HEADERS + Callback.h + Invoker.h + +list(APPEND TARGET_SOURCES + Callback.cpp + Invoker.cpp + main.cpp diff --git a/playground/shadows/CMakeLists.txt b/playground/shadows/CMakeLists.txt new file mode 100644 index 00000000..00b2b539 --- /dev/null +++ b/playground/shadows/CMakeLists.txt @@ -0,0 +1,8 @@ +CONFIG += qskexample + +list(APPEND TARGET_HEADERS + ShadowedBox.h + +list(APPEND TARGET_SOURCES + ShadowedBox.cpp + main.cpp diff --git a/playground/webview/CMakeLists.txt b/playground/webview/CMakeLists.txt new file mode 100644 index 00000000..b14cbb64 --- /dev/null +++ b/playground/webview/CMakeLists.txt @@ -0,0 +1,5 @@ +CONFIG += qskexample +target_link_libraries(${TARGET_NAME} PRIVATE webengine webengine-private webenginecore-private core-private) + +list(APPEND TARGET_SOURCES + main.cpp diff --git a/qmlexport/CMakeLists.txt b/qmlexport/CMakeLists.txt new file mode 100644 index 00000000..6e2a2768 --- /dev/null +++ b/qmlexport/CMakeLists.txt @@ -0,0 +1,31 @@ +set(TARGET_NAME qskqmlexport) + +list(APPEND TARGET_HEADERS + QskQmlGlobal.h + QskShortcutQml.h + QskLayoutQml.h + QskMainQml.h + QskQml.h) + +list(APPEND TARGET_SOURCES + QskShortcutQml.cpp + QskLayoutQml.cpp + QskMainQml.cpp + QskQml.cpp) + +add_library(${TARGET_NAME} SHARED ${TARGET_SOURCES} ${TARGET_HEADERS}) + +set_target_properties(${TARGET_NAME} PROPERTIES + AUTOMOC ON) + +target_link_libraries(${TARGET_NAME} + PRIVATE + qskinny) + +if(QskDll) + target_compile_definitions(${TARGET_NAME} + PRIVATE + QSK_QML_MAKEDLL) +endif() + +install(TARGETS ${TARGET_NAME} DESTINATION qmlexport) \ No newline at end of file diff --git a/skins/CMakeLists.txt b/skins/CMakeLists.txt new file mode 100644 index 00000000..37ca7925 --- /dev/null +++ b/skins/CMakeLists.txt @@ -0,0 +1,2 @@ +add_subdirectory(squiek) +add_subdirectory(material3) \ No newline at end of file diff --git a/skins/material3/CMakeLists.txt b/skins/material3/CMakeLists.txt new file mode 100644 index 00000000..3ce28bc9 --- /dev/null +++ b/skins/material3/CMakeLists.txt @@ -0,0 +1,30 @@ +set(QSK_PLUGIN_SUBDIR skins) + +set(TARGET_NAME material3skin) + +list(APPEND TARGET_HEADERS + QskMaterial3Global.h + QskMaterial3Skin.h + QskMaterial3SkinFactory.h) + +list(APPEND TARGET_SOURCES + QskMaterial3Skin.cpp + QskMaterial3SkinFactory.cpp) + +list(APPEND TARGET_OTHER_FILES + metadata.json) + +add_library(${TARGET_NAME} SHARED ${TARGET_HEADERS} ${TARGET_SOURCES} ${TARGET_OTHER_FILES}) + +target_link_libraries(${TARGET_NAME} PRIVATE qskinny) + +if(QskDll) + target_compile_definitions(${TARGET_NAME} + PRIVATE + QSK_MATERIAL3_MAKEDLL) +endif() + +set_target_properties(${TARGET_NAME} PROPERTIES + AUTOMOC ON) + +install(TARGETS ${TARGET_NAME} DESTINATION ${QSK_INSTALL_PLUGINS}/${QSK_PLUGIN_SUBDIR}) diff --git a/skins/squiek/CMakeLists.txt b/skins/squiek/CMakeLists.txt new file mode 100644 index 00000000..17457c7a --- /dev/null +++ b/skins/squiek/CMakeLists.txt @@ -0,0 +1,32 @@ +set(QSK_PLUGIN_SUBDIR skins) + +set(TARGET_NAME squiekskin) + +list(APPEND TARGET_HEADERS + QskSquiekGlobal.h + QskSquiekSkin.h + QskSquiekSkinFactory.h) + +list(APPEND TARGET_SOURCES + QskSquiekSkin.cpp + QskSquiekSkinFactory.cpp) + +list(APPEND TARGET_OTHER_FILES + metadata.json) + +add_library(${TARGET_NAME} SHARED ${TARGET_HEADERS} ${TARGET_SOURCES} ${TARGET_OTHER_FILES}) + +target_link_libraries(${TARGET_NAME} + PRIVATE + qskinny) + +if(QskDll) + target_compile_definitions(${TARGET_NAME} + PRIVATE + QSK_SQUIEK_MAKEDLL) +endif() + +set_target_properties(${TARGET_NAME} PROPERTIES + AUTOMOC ON) + +install(TARGETS ${TARGET_NAME} DESTINATION ${QSK_INSTALL_PLUGINS}/${QSK_PLUGIN_SUBDIR}) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt new file mode 100644 index 00000000..06aa6c7a --- /dev/null +++ b/src/CMakeLists.txt @@ -0,0 +1,447 @@ +include(${CMAKE_SOURCE_DIR}/features/qskconfig.cmake) + +#TODO +#QSK_SUBDIRS = common graphic nodes controls layouts dialogs inputpanel +#INCLUDEPATH *= $${QSK_SUBDIRS} +#DEPENDPATH *= $${QSK_SUBDIRS} + +#CONFIG += pinyin +#CONFIG += hunspell + +list(APPEND TARGET_HEADERS + common/QskArcMetrics.h + common/QskAspect.h + common/QskBoxBorderColors.h + common/QskBoxBorderMetrics.h + common/QskBoxShapeMetrics.h + common/QskBoxHints.h + common/QskFunctions.h + common/QskGlobal.h + common/QskGradient.h + common/QskGradientStop.h + common/QskHctColor.h + common/QskIntervalF.h + common/QskMargins.h + common/QskMetaFunction.h + common/QskMetaFunction.hpp + common/QskMetaInvokable.h + common/QskNamespace.h + common/QskObjectCounter.h + common/QskPlacementPolicy.h + common/QskPlatform.h + common/QskRgbValue.h + common/QskScaleEngine.h + common/QskScaleTickmarks.h + common/QskShadowMetrics.h + common/QskSizePolicy.h + common/QskStateCombination.h + common/QskTextColors.h + common/QskTextOptions.h) + +list(APPEND TARGET_SOURCES + common/QskArcMetrics.cpp + common/QskAspect.cpp + common/QskBoxBorderColors.cpp + common/QskBoxBorderMetrics.cpp + common/QskBoxShapeMetrics.cpp + common/QskBoxHints.cpp + common/QskFunctions.cpp + common/QskGradient.cpp + common/QskGradientStop.cpp + common/QskHctColor.cpp + common/QskIntervalF.cpp + common/QskMargins.cpp + common/QskMetaFunction.cpp + common/QskMetaInvokable.cpp + common/QskObjectCounter.cpp + common/QskPlatform.cpp + common/QskPlacementPolicy.cpp + common/QskRgbValue.cpp + common/QskScaleEngine.cpp + common/QskScaleTickmarks.cpp + common/QskShadowMetrics.cpp + common/QskSizePolicy.cpp + common/QskTextColors.cpp + common/QskTextOptions.cpp) + +list(APPEND TARGET_HEADERS #TODO why separate + graphic/QskColorFilter.h + graphic/QskGraphic.h + graphic/QskGraphicImageProvider.h + graphic/QskGraphicIO.h + graphic/QskGraphicPaintEngine.h + graphic/QskGraphicProvider.h + graphic/QskGraphicProviderMap.h + graphic/QskGraphicTextureFactory.h + graphic/QskPainterCommand.h + graphic/QskStandardSymbol.h) + +list(APPEND TARGET_SOURCES + graphic/QskColorFilter.cpp + graphic/QskGraphic.cpp + graphic/QskGraphicImageProvider.cpp + graphic/QskGraphicIO.cpp + graphic/QskGraphicPaintEngine.cpp + graphic/QskGraphicProvider.cpp + graphic/QskGraphicProviderMap.cpp + graphic/QskGraphicTextureFactory.cpp + graphic/QskPainterCommand.cpp + graphic/QskStandardSymbol.cpp) + +list(APPEND TARGET_HEADERS + nodes/QskArcNode.h + nodes/QskArcRenderer.h + nodes/QskBoxNode.h + nodes/QskBoxClipNode.h + nodes/QskBoxRenderer.h + nodes/QskBoxRendererColorMap.h + nodes/QskBoxShadowNode.h + nodes/QskGraphicNode.h + nodes/QskPaintedNode.h + nodes/QskPlainTextRenderer.h + nodes/QskRichTextRenderer.h + nodes/QskScaleRenderer.h + nodes/QskSGNode.h + nodes/QskShadedBoxNode.h + nodes/QskTextNode.h + nodes/QskTextRenderer.h + nodes/QskTextureRenderer.h + nodes/QskTickmarksNode.h + nodes/QskVertex.h) + +list(APPEND TARGET_SOURCES + nodes/QskArcNode.cpp + nodes/QskArcRenderer.cpp + nodes/QskBoxNode.cpp + nodes/QskBoxClipNode.cpp + nodes/QskBoxRendererRect.cpp + nodes/QskBoxRendererEllipse.cpp + nodes/QskBoxRendererDEllipse.cpp + nodes/QskBoxShadowNode.cpp + nodes/QskGraphicNode.cpp + nodes/QskPaintedNode.cpp + nodes/QskPlainTextRenderer.cpp + nodes/QskRichTextRenderer.cpp + nodes/QskScaleRenderer.cpp + nodes/QskSGNode.cpp + nodes/QskShadedBoxNode.cpp + nodes/QskTextNode.cpp + nodes/QskTextRenderer.cpp + nodes/QskTextureRenderer.cpp + nodes/QskTickmarksNode.cpp + nodes/QskVertex.cpp) + +list(APPEND TARGET_RESSOURCES + nodes/shaders.qrc) + +list(APPEND TARGET_HEADERS + controls/QskAbstractButton.h + controls/QskAnimationHint.h + controls/QskAnimator.h + controls/QskApplicationView.h + controls/QskBoundedControl.h + controls/QskBoundedInput.h + controls/QskBoundedRangeInput.h + controls/QskBoundedValueInput.h + controls/QskBox.h + controls/QskBoxSkinlet.h + controls/QskCheckBox.h + controls/QskCheckBoxSkinlet.h + controls/QskControl.h + controls/QskControlPrivate.h + controls/QskDirtyItemFilter.h + controls/QskEvent.h + controls/QskFlickAnimator.h + controls/QskFocusIndicator.h + controls/QskFocusIndicatorSkinlet.h + controls/QskGesture.h + controls/QskGestureRecognizer.h + controls/QskGraphicLabel.h + controls/QskGraphicLabelSkinlet.h + controls/QskHintAnimator.h + controls/QskInputGrabber.h + controls/QskListView.h + controls/QskListViewSkinlet.h + controls/QskMenu.h + controls/QskMenuSkinlet.h + controls/QskObjectTree.h + controls/QskPageIndicator.h + controls/QskPageIndicatorSkinlet.h + controls/QskPanGestureRecognizer.h + controls/QskPopup.h + controls/QskPopupSkinlet.h + controls/QskPushButton.h + controls/QskPushButtonSkinlet.h + controls/QskProgressBar.h + controls/QskProgressBarSkinlet.h + controls/QskQuick.h + controls/QskQuickItem.h + controls/QskQuickItemPrivate.h + controls/QskScrollArea.h + controls/QskScrollBox.h + controls/QskScrollView.h + controls/QskScrollViewSkinlet.h + controls/QskSegmentedBar.h + controls/QskSegmentedBarSkinlet.h + controls/QskSeparator.h + controls/QskSeparatorSkinlet.h + controls/QskSetup.h + controls/QskShortcutMap.h + controls/QskSimpleListBox.h + controls/QskSkin.h + controls/QskSkinFactory.h + controls/QskSkinHintTable.h + controls/QskSkinHintTableEditor.h + controls/QskSkinManager.h + controls/QskSkinStateChanger.h + controls/QskSkinTransition.h + controls/QskSkinlet.h + controls/QskSkinnable.h + controls/QskSlider.h + controls/QskSliderSkinlet.h + controls/QskStatusIndicator.h + controls/QskStatusIndicatorSkinlet.h + controls/QskSubWindowArea.h + controls/QskSubWindowAreaSkinlet.h + controls/QskSubWindow.h + controls/QskSubWindowSkinlet.h + controls/QskSwitchButton.h + controls/QskSwitchButtonSkinlet.h + controls/QskTabBar.h + controls/QskTabButton.h + controls/QskTabButtonSkinlet.h + controls/QskTabView.h + controls/QskTabViewSkinlet.h + controls/QskTextInput.h + controls/QskTextInputSkinlet.h + controls/QskTextLabel.h + controls/QskTextLabelSkinlet.h + controls/QskVariantAnimator.h + controls/QskWindow.h) + +list(APPEND TARGET_SOURCES + controls/QskAbstractButton.cpp + controls/QskAnimator.cpp + controls/QskAnimationHint.cpp + controls/QskApplicationView.cpp + controls/QskBoundedControl.cpp + controls/QskBoundedInput.cpp + controls/QskBoundedRangeInput.cpp + controls/QskBoundedValueInput.cpp + controls/QskBox.cpp + controls/QskBoxSkinlet.cpp + controls/QskCheckBox.cpp + controls/QskCheckBoxSkinlet.cpp + controls/QskControl.cpp + controls/QskControlPrivate.cpp + controls/QskDirtyItemFilter.cpp + controls/QskEvent.cpp + controls/QskFlickAnimator.cpp + controls/QskFocusIndicator.cpp + controls/QskFocusIndicatorSkinlet.cpp + controls/QskGesture.cpp + controls/QskGestureRecognizer.cpp + controls/QskGraphicLabel.cpp + controls/QskGraphicLabelSkinlet.cpp + controls/QskHintAnimator.cpp + controls/QskInputGrabber.cpp + controls/QskListView.cpp + controls/QskListViewSkinlet.cpp + controls/QskMenuSkinlet.cpp + controls/QskMenu.cpp + controls/QskObjectTree.cpp + controls/QskPageIndicator.cpp + controls/QskPageIndicatorSkinlet.cpp + controls/QskPanGestureRecognizer.cpp + controls/QskPopup.cpp + controls/QskPopupSkinlet.cpp + controls/QskPushButton.cpp + controls/QskPushButtonSkinlet.cpp + controls/QskProgressBar.cpp + controls/QskProgressBarSkinlet.cpp + controls/QskQuick.cpp + controls/QskQuickItem.cpp + controls/QskQuickItemPrivate.cpp + controls/QskScrollArea.cpp + controls/QskScrollBox.cpp + controls/QskScrollView.cpp + controls/QskScrollViewSkinlet.cpp + controls/QskSegmentedBar.cpp + controls/QskSegmentedBarSkinlet.cpp + controls/QskSeparator.cpp + controls/QskSeparatorSkinlet.cpp + controls/QskSetup.cpp + controls/QskShortcutMap.cpp + controls/QskSimpleListBox.cpp + controls/QskSkin.cpp + controls/QskSkinHintTable.cpp + controls/QskSkinHintTableEditor.cpp + controls/QskSkinFactory.cpp + controls/QskSkinManager.cpp + controls/QskSkinTransition.cpp + controls/QskSkinlet.cpp + controls/QskSkinnable.cpp + controls/QskSlider.cpp + controls/QskSliderSkinlet.cpp + controls/QskStatusIndicator.cpp + controls/QskStatusIndicatorSkinlet.cpp + controls/QskSubWindowArea.cpp + controls/QskSubWindowAreaSkinlet.cpp + controls/QskSubWindow.cpp + controls/QskSubWindowSkinlet.cpp + controls/QskSwitchButton.cpp + controls/QskSwitchButtonSkinlet.cpp + controls/QskTabBar.cpp + controls/QskTabButton.cpp + controls/QskTabButtonSkinlet.cpp + controls/QskTabView.cpp + controls/QskTabViewSkinlet.cpp + controls/QskTextInput.cpp + controls/QskTextInputSkinlet.cpp + controls/QskTextLabel.cpp + controls/QskTextLabelSkinlet.cpp + controls/QskVariantAnimator.cpp + controls/QskWindow.cpp) + +list(APPEND TARGET_HEADERS + layouts/QskGridBox.h + layouts/QskGridLayoutEngine.h + layouts/QskIndexedLayoutBox.h + layouts/QskLayoutChain.h + layouts/QskLayoutEngine2D.h + layouts/QskLayoutElement.h + layouts/QskLayoutMetrics.h + layouts/QskLinearBox.h + layouts/QskLinearLayoutEngine.h + layouts/QskStackBoxAnimator.h + layouts/QskStackBox.h + layouts/QskSubcontrolLayoutEngine.h) + +list(APPEND TARGET_SOURCES + layouts/QskGridBox.cpp + layouts/QskGridLayoutEngine.cpp + layouts/QskIndexedLayoutBox.cpp + layouts/QskLayoutChain.cpp + layouts/QskLayoutEngine2D.cpp + layouts/QskLayoutElement.cpp + layouts/QskLayoutMetrics.cpp + layouts/QskLinearBox.cpp + layouts/QskLinearLayoutEngine.cpp + layouts/QskStackBoxAnimator.cpp + layouts/QskStackBox.cpp + layouts/QskSubcontrolLayoutEngine.cpp) + +list(APPEND TARGET_HEADERS + dialogs/QskDialog.h + dialogs/QskDialogButton.h + dialogs/QskDialogButtonBox.h + dialogs/QskDialogSubWindow.h + dialogs/QskDialogWindow.h + dialogs/QskMessageSubWindow.h + dialogs/QskMessageWindow.h + dialogs/QskSelectionSubWindow.h + dialogs/QskSelectionWindow.h) + +list(APPEND TARGET_SOURCES + dialogs/QskDialogButton.cpp + dialogs/QskDialogButtonBox.cpp + dialogs/QskDialog.cpp + dialogs/QskDialogSubWindow.cpp + dialogs/QskDialogWindow.cpp + dialogs/QskMessageSubWindow.cpp + dialogs/QskMessageWindow.cpp + dialogs/QskSelectionSubWindow.cpp + dialogs/QskSelectionWindow.cpp) + +list(APPEND TARGET_HEADERS + inputpanel/QskTextPredictor.h + inputpanel/QskInputContext.h + inputpanel/QskInputPanel.h + inputpanel/QskInputPanelBox.h + inputpanel/QskInputPredictionBar.h + inputpanel/QskVirtualKeyboard.h) + +list(APPEND TARGET_SOURCES + inputpanel/QskTextPredictor.cpp + inputpanel/QskInputContext.cpp + inputpanel/QskInputPanel.cpp + inputpanel/QskInputPanelBox.cpp + inputpanel/QskInputPredictionBar.cpp + inputpanel/QskVirtualKeyboard.cpp) + +#TODO +#pinyin { +# +#unix { +# +#target_compile_definitions(${TARGET_NAME} PRIVATE PINYIN) +# +#CONFIG += link_pkgconfig +#PKGCONFIG += pinyin +# +#HEADERS += +#inputpanel/QskPinyinTextPredictor.h +# +#SOURCES += +#inputpanel/QskPinyinTextPredictor.cpp +#} +#} + +#TODO +#hunspell { +# +#unix { +# +#target_compile_definitions(${TARGET_NAME} PRIVATE HUNSPELL) +# +#CONFIG += link_pkgconfig +#PKGCONFIG += hunspell +# +#HEADERS += +#inputpanel/QskHunspellTextPredictor.h +# +#SOURCES += +#inputpanel/QskHunspellTextPredictor.cpp +#} +#} + +set(TARGET_NAME qskinny) + +add_library(${TARGET_NAME} SHARED ${TARGET_SOURCES} ${TARGET_HEADERS} ${TARGET_RESSOURCES}) + +if (Qt5_VERSION_MAJOR VERSION_GREATER "5") + target_link_libraries(${TARGET_NAME} PRIVATE Qt5::Opengl) +endif() + +if(QskDll) + target_compile_definitions(${TARGET_NAME} + PUBLIC + QSK_DLL + PRIVATE + QSK_MAKEDLL) +endif() + +target_include_directories(${TARGET_NAME} + PUBLIC + common + graphic + nodes + controls + layouts + dialogs + inputpanel) + +target_link_libraries(${TARGET_NAME} + PUBLIC + Qt5::Core + Qt5::CorePrivate + Qt5::Quick + Qt5::QuickPrivate) + +set_target_properties(${TARGET_NAME} + PROPERTIES + AUTOMOC ON + AUTORCC ON) + +install(TARGETS ${TARGET_NAME} DESTINATION ${QSK_INSTALL_LIBS}) +install(FILES ${TARGET_HEADERS} DESTINATION ${QSK_INSTALL_HEADERS}) \ No newline at end of file diff --git a/support/CMakeLists.txt b/support/CMakeLists.txt new file mode 100644 index 00000000..39bf365a --- /dev/null +++ b/support/CMakeLists.txt @@ -0,0 +1,84 @@ +# TODO +# CONFIG += ensure_skins +# CONFIG += fontconfig +# CONFIG += qskinny + +list(APPEND TARGET_HEADERS + SkinnyGlobal.h + SkinnyNamespace.h + SkinnyShapeFactory.h + SkinnyShapeProvider.h + SkinnyShortcut.h) + +list(APPEND TARGET_SOURCES + SkinnyNamespace.cpp + SkinnyShapeFactory.cpp + SkinnyShapeProvider.cpp + SkinnyShortcut.cpp) + +# TODO +# ensure_skins{ +# +# #Enabling fall back code, that inserts some skin factories manually +# #when not finding skin factories as plugins +# +# INCLUDEPATH *= $${QSK_ROOT} / skins DEPENDPATH *= +# $${QSK_ROOT} / +# skins +# +# target_include_directories(${TARGET_NAME} PRIVATE ${CMAKE_SOURCE_DIR} / skins) +# +# target_compile_definitions(${TARGET_NAME} PRIVATE ENSURE_SKINS) +# +# use_install_rpath : QMAKE_RPATHDIR *= +# $${QSK_INSTALL_PLUGINS} / skins use_local_rpath : QMAKE_RPATHDIR *= +# $${QSK_PLUGIN_DIR} / skins +# +# qskAddLibrary($${QSK_PLUGIN_DIR} / skins, squiekskin) +# qskAddLibrary($${QSK_PLUGIN_DIR} / skins, material3skin) +# } + +# TODO +#fontconfig{ +# +# QSK_FONTDIR = $${PWD} / fonts QSK_FONTCACHEDIR = +# $${OUT_PWD} / fontconfig QSK_FONTCONF_FILE = +# $${QSK_FONTCACHEDIR} / fonts.conf +# +# QSK_FONTCONF_DATA = +# "$$cat($${PWD}/fonts.conf.in, false)" QSK_FONTCONF_DATA = $$replace( +# QSK_FONTCONF_DATA, FONTCACHEDIR, $${QSK_FONTCACHEDIR}) +# QSK_FONTCONF_DATA = $$replace( +# QSK_FONTCONF_DATA, FONTDIR, $${QSK_FONTDIR}) +# write_file($${QSK_FONTCONF_FILE}, QSK_FONTCONF_DATA) +# +# DEFINES += +# FONTCONFIG_FILE = $$clean_path($$QSK_FONTCONF_FILE) +#} + +set(TARGET_NAME qsktestsupport) + +add_library(${TARGET_NAME} SHARED ${TARGET_SOURCES} ${TARGET_HEADERS}) + +set_target_properties(${TARGET_NAME} PROPERTIES + AUTOMOC ON) + +target_link_libraries(${TARGET_NAME} + PRIVATE + qskinny) + +if (QskDll) + target_compile_definitions(${TARGET_NAME} + PRIVATE + SKINNY_MAKEDLL) +endif() + +target_compile_definitions(${TARGET_NAME} + PRIVATE + PLUGIN_PATH=${CMAKE_INSTALL_PREFIX}/skins) + +target_include_directories(${TARGET_NAME} + PUBLIC + ${CMAKE_CURRENT_LIST_DIR}) + +install(TARGETS ${TARGET_NAME} DESTINATION lib) # TODO unify lib install directory \ No newline at end of file diff --git a/tools/CMakeLists.txt b/tools/CMakeLists.txt new file mode 100644 index 00000000..fbf09b88 --- /dev/null +++ b/tools/CMakeLists.txt @@ -0,0 +1,3 @@ +if(TARGET Qt5::Svg) + add_subdirectory(svg2qvg) +endif() \ No newline at end of file diff --git a/tools/svg2qvg/CMakeLists.txt b/tools/svg2qvg/CMakeLists.txt new file mode 100644 index 00000000..9058c223 --- /dev/null +++ b/tools/svg2qvg/CMakeLists.txt @@ -0,0 +1,44 @@ +set(TARGET_NAME svg2qvg) +set(TARGET_INSTALL_SUFFIX bin/tools) +set(TARGET_SOURCES main.cpp) + +#TODO should this be configurable globally ? +option(${TARGET_NAME}_STANDALONE "If 'ON' application won't be linked against qskinny library" ON) + +add_executable(${TARGET_NAME} ${TARGET_SOURCES}) + +if(${TARGET_NAME}_STANDALONE) + + get_target_property(qskinny_AUTOGEN_DIR qskinny AUTOGEN_BUILD_DIR) + if (EXISTS ${qskinny_AUTOGEN_DIR}) + else() + set(qskinny_AUTOGEN_DIR ${CMAKE_BINARY_DIR}/src/qskinny_autogen/include_$) # TODO + endif() + + target_include_directories(${TARGET_NAME} + PRIVATE + ${CMAKE_SOURCE_DIR}/src/common + ${CMAKE_SOURCE_DIR}/src/graphic + ${qskinny_AUTOGEN_DIR}) + + target_compile_definitions(${TARGET_NAME} + PRIVATE + QSK_STANDALONE) + + target_link_libraries(${TARGET_NAME} + PRIVATE + Qt5::Gui + Qt5::GuiPrivate + Qt5::Svg) +else() + target_compile_definitions(${TARGET_NAME} + PRIVATE + QskDll) + + target_link_libraries(${TARGET_NAME} + PRIVATE + qskinny + Qt5::Svg) +endif() + +install(TARGETS ${TARGET_NAME} DESTINATION ${TARGET_INSTALL_SUFFIX})