From 9df5e88dbeda76ae0048127b394a9db8110ee0a6 Mon Sep 17 00:00:00 2001 From: cneben Date: Sun, 22 Sep 2024 11:17:00 +0200 Subject: [PATCH] #248 Backport edges sample to support QuickQanava QML module. Signed-off-by: cneben --- CMakeLists.txt | 2 +- samples/edges/CMakeLists.txt | 40 ++++++++++---------- samples/edges/{curved.qml => Curved.qml} | 3 +- samples/edges/{endings.qml => Endings.qml} | 3 +- samples/edges/{ortho.qml => Ortho.qml} | 3 +- samples/edges/{edges.qml => SampleEdges.qml} | 9 ++--- samples/edges/edges.cpp | 12 +++--- samples/edges/edges.qrc | 8 ---- samples/groups/CMakeLists.txt | 14 ++----- samples/groups/groups.cpp | 19 +++------- 10 files changed, 43 insertions(+), 70 deletions(-) rename samples/edges/{curved.qml => Curved.qml} (99%) rename samples/edges/{endings.qml => Endings.qml} (98%) rename samples/edges/{ortho.qml => Ortho.qml} (97%) rename samples/edges/{edges.qml => SampleEdges.qml} (87%) delete mode 100644 samples/edges/edges.qrc diff --git a/CMakeLists.txt b/CMakeLists.txt index 833d7494..a9768f22 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -20,7 +20,7 @@ option(QUICK_QANAVA_BUILD_SAMPLES "Build QuickQanava samples" OFF) #add_subdirectory(samples/connector) #add_subdirectory(samples/cpp) #add_subdirectory(samples/dataflow) - #add_subdirectory(samples/edges) + add_subdirectory(samples/edges) add_subdirectory(samples/groups) #add_subdirectory(samples/navigable) #add_subdirectory(samples/nodes) diff --git a/samples/edges/CMakeLists.txt b/samples/edges/CMakeLists.txt index aa416046..4e9eab2f 100644 --- a/samples/edges/CMakeLists.txt +++ b/samples/edges/CMakeLists.txt @@ -2,40 +2,38 @@ cmake_minimum_required(VERSION 3.16) project(QuickQanava_sample_edges VERSION 2.5.0 LANGUAGES CXX) +# Configure Qt +find_package(Qt6 REQUIRED COMPONENTS Core Quick Qml Quick QuickControls2) +qt_standard_project_setup(REQUIRES 6.6) set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_POSITION_INDEPENDENT_CODE ON) -# Configure Qt -find_package(Qt6 REQUIRED COMPONENTS Core Quick Qml Quick QuickControls2) - set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set_property(DIRECTORY APPEND PROPERTY COMPILE_DEFINITIONS $<$:QT_QML_DEBUG>) set(CMAKE_INCLUDE_CURRENT_DIR ON) -if(NOT TARGET QuickQanava) - add_subdirectory(../../ quickqanava_build) # Use ../../src as quickqanava_build subdirectory - # see https://stackoverflow.com/questions/50408169/cmake-error-add-subdirectory-not-given-a-binary-directory/50408555 -endif() - -set(source_files - edges.cpp +qt_add_executable(sample_edges_exe edges.cpp) +qt_add_qml_module(SampleEdges + VERSION 1.0 + URI SampleEdges + QML_FILES + SampleEdges.qml + Endings.qml + Curved.qml + Ortho.qml + OUTPUT_DIRECTORY SampleEdges ) -set (header_files) - -add_executable(sample_edges ${source_files} edges.qrc) -qt6_add_resources(sample_edges "controls_conf" - PREFIX - "/" - FILES - "qtquickcontrols2.conf" -) -target_include_directories(sample_edges PUBLIC QuickQanava Qt${QT_VERSION_MAJOR}::QuickControls2) -target_link_libraries(sample_edges +include_directories(${CMAKE_CURRENT_SOURCE_DIR} "../../src") +set(QML_IMPORT_PATH ${CMAKE_SOURCE_DIR}/qml ${CMAKE_BINARY_DIR}/imports CACHE STRING "" FORCE) +target_link_libraries(sample_edges_exe PRIVATE QuickQanava + QuickQanavaplugin Qt${QT_VERSION_MAJOR}::Core Qt${QT_VERSION_MAJOR}::Gui Qt${QT_VERSION_MAJOR}::QuickControls2 ) + + diff --git a/samples/edges/curved.qml b/samples/edges/Curved.qml similarity index 99% rename from samples/edges/curved.qml rename to samples/edges/Curved.qml index cb796ce0..1a4f8638 100644 --- a/samples/edges/curved.qml +++ b/samples/edges/Curved.qml @@ -31,8 +31,7 @@ import QtQuick.Shapes import Qt.labs.platform -import QuickQanava 2.0 as Qan -import "qrc:/QuickQanava" as Qan +import QuickQanava as Qan Item { anchors.fill: parent diff --git a/samples/edges/endings.qml b/samples/edges/Endings.qml similarity index 98% rename from samples/edges/endings.qml rename to samples/edges/Endings.qml index 79a1146b..6a22ea9f 100644 --- a/samples/edges/endings.qml +++ b/samples/edges/Endings.qml @@ -29,8 +29,7 @@ import QtQuick.Controls.Material import QtQuick.Layouts import QtQuick.Shapes -import QuickQanava 2.0 as Qan -import "qrc:/QuickQanava" as Qan +import QuickQanava as Qan Qan.GraphView { id: graphView diff --git a/samples/edges/ortho.qml b/samples/edges/Ortho.qml similarity index 97% rename from samples/edges/ortho.qml rename to samples/edges/Ortho.qml index 78113634..d98c79cb 100644 --- a/samples/edges/ortho.qml +++ b/samples/edges/Ortho.qml @@ -29,8 +29,7 @@ import QtQuick.Controls.Material import QtQuick.Layouts import QtQuick.Shapes -import QuickQanava 2.0 as Qan -import "qrc:/QuickQanava" as Qan +import QuickQanava as Qan Qan.GraphView { id: graphView diff --git a/samples/edges/edges.qml b/samples/edges/SampleEdges.qml similarity index 87% rename from samples/edges/edges.qml rename to samples/edges/SampleEdges.qml index 8273c1ea..d41f7895 100644 --- a/samples/edges/edges.qml +++ b/samples/edges/SampleEdges.qml @@ -29,8 +29,7 @@ import QtQuick.Controls.Material import QtQuick.Layouts import QtQuick.Shapes -import QuickQanava 2.0 as Qan -import "qrc:/QuickQanava" as Qan +import QuickQanava as Qan ApplicationWindow { id: window @@ -52,9 +51,9 @@ ApplicationWindow { clip: true Layout.fillWidth: true; Layout.fillHeight: true currentIndex: tabBar.currentIndex - Item { Loader { anchors.fill: parent; source: "qrc:/curved.qml"} } - Item { Loader { anchors.fill: parent; source: "qrc:/endings.qml"} } - Item { Loader { anchors.fill: parent; source: "qrc:/ortho.qml"} } + Item { Loader { anchors.fill: parent; source: "Curved.qml"} } + Item { Loader { anchors.fill: parent; source: "Endings.qml"} } + Item { Loader { anchors.fill: parent; source: "Ortho.qml"} } } } } diff --git a/samples/edges/edges.cpp b/samples/edges/edges.cpp index 7bc607a2..d07b1449 100644 --- a/samples/edges/edges.cpp +++ b/samples/edges/edges.cpp @@ -27,7 +27,7 @@ //----------------------------------------------------------------------------- // This file is a part of the QuickQanava software library. // -// \file connector.cpp +// \file edges.cpp // \author benoit@destrat.io // \date 2017 03 06 //----------------------------------------------------------------------------- @@ -43,18 +43,18 @@ using namespace qan; +#include +Q_IMPORT_QML_PLUGIN(QuickQanavaPlugin) + //----------------------------------------------------------------------------- int main( int argc, char** argv ) { -#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) - QGuiApplication::setAttribute(Qt::AA_EnableHighDpiScaling); -#endif QGuiApplication app(argc, argv); // Necessary for Qt.labs ColorDialog QQuickStyle::setStyle("Material"); QQmlApplicationEngine engine; - engine.addPluginPath(QStringLiteral("../../src")); // Necessary only for development when plugin is not installed to QTDIR/qml + engine.addImportPath("../../src"); // Enable loading of ../../src/QuickQanava module QuickQanava::initialize(&engine); - engine.load(QUrl("qrc:/edges.qml")); + engine.loadFromModule("SampleEdges", "SampleEdges"); return app.exec(); } //----------------------------------------------------------------------------- diff --git a/samples/edges/edges.qrc b/samples/edges/edges.qrc deleted file mode 100644 index 988cd711..00000000 --- a/samples/edges/edges.qrc +++ /dev/null @@ -1,8 +0,0 @@ - - - edges.qml - curved.qml - endings.qml - ortho.qml - - diff --git a/samples/groups/CMakeLists.txt b/samples/groups/CMakeLists.txt index 008688f7..668dbbe9 100644 --- a/samples/groups/CMakeLists.txt +++ b/samples/groups/CMakeLists.txt @@ -4,7 +4,7 @@ project(QuickQanava_sample_groups VERSION 2.5.0 LANGUAGES CXX) # Configure Qt find_package(Qt6 REQUIRED COMPONENTS Core Quick Qml Quick QuickControls2) -qt_standard_project_setup(REQUIRES 6.5) +qt_standard_project_setup(REQUIRES 6.6) set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_POSITION_INDEPENDENT_CODE ON) @@ -18,24 +18,18 @@ set(source_files groups.cpp ) qt_add_executable(sample_groups_exe groups.cpp) -qt_add_qml_module(sample_groups +qt_add_qml_module(SampleGroups VERSION 1.0 - URI sample_groups + URI SampleGroups QML_FILES SampleGroups.qml - OUTPUT_DIRECTORY sample_groups + OUTPUT_DIRECTORY SampleGroups ) -# qt_add_library(sample_groups STATIC) include_directories(${CMAKE_CURRENT_SOURCE_DIR} "../../src") -# if(NOT TARGET QuickQanava) -#add_subdirectory(../../src QuickQanava_src) -# endif() set(QML_IMPORT_PATH ${CMAKE_SOURCE_DIR}/qml ${CMAKE_BINARY_DIR}/imports CACHE STRING "" FORCE) -# add_executable(sample_groups ${source_files} groups.qrc) -# target_include_directories(sample_groups PUBLIC QuickQanava Qt${QT_VERSION_MAJOR}::QuickControls2) target_link_libraries(sample_groups_exe PRIVATE QuickQanava QuickQanavaplugin diff --git a/samples/groups/groups.cpp b/samples/groups/groups.cpp index af960c07..899a2782 100644 --- a/samples/groups/groups.cpp +++ b/samples/groups/groups.cpp @@ -51,21 +51,14 @@ int main( int argc, char** argv ) QGuiApplication app(argc, argv); QQuickStyle::setStyle("Material"); QQmlApplicationEngine engine; - engine.addImportPath("./QuickQanava"); - engine.addImportPath("/home/b/projects/deliastrat.io/Holograph/third-party/QuickQanava/build/Desktop_Qt_6_7_2-Debug/src"); - engine.addImportPath("/home/b/projects/deliastrat.io/Holograph/third-party/QuickQanava/build/Desktop_Qt_6_7_2-Debug/src/QuickQanava"); + QString currentDir = QDir::currentPath(); + qDebug() << "Current working directory:" << currentDir; + engine.addImportPath("../../src/"); + //engine.addImportPath("/home/b/projects/deliastrat.io/Holograph/third-party/QuickQanava/build/Desktop_Qt_6_7_2-Debug/src"); + //engine.addImportPath("/home/b/projects/deliastrat.io/Holograph/third-party/QuickQanava/build/Desktop_Qt_6_7_2-Debug/src/QuickQanava"); QuickQanava::initialize(&engine); - //engine.load(QUrl("qrc:/groups.qml")); - - // FIXME #248 appears in recent QML sample, WTF ? - /*QObject::connect( - &engine, - &QQmlApplicationEngine::objectCreationFailed, - &app, - []() { QCoreApplication::exit(-1); }, - Qt::QueuedConnection);*/ - engine.loadFromModule("sample_groups", "SampleGroups"); + engine.loadFromModule("SampleGroups", "SampleGroups"); return app.exec(); }