Skip to content

Commit 56bdf78

Browse files
authored
Merge pull request #252 from cneben/develop
2.5.0
2 parents 6009c79 + 1c8576b commit 56bdf78

File tree

243 files changed

+3481
-2815
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

243 files changed

+3481
-2815
lines changed

.github/workflows/build-linux-qt5.yml

-37
This file was deleted.

.github/workflows/build-win64-qt5.yml

-49
This file was deleted.

.github/workflows/build-win64-qt6.yml

+2-2
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ jobs:
1717
- name: Install Qt
1818
uses: jurplel/install-qt-action@v3
1919
with:
20-
version: '6.4.*'
20+
version: '6.6.*'
2121
host: 'windows'
2222
target: 'desktop'
2323
arch: 'win64_msvc2019_64'
@@ -35,7 +35,7 @@ jobs:
3535

3636
- name: Install dependencies and generate project files
3737
run: |
38-
cmake -S '${{ github.workspace }}/' -B '${{ github.workspace }}/Build' -DCMAKE_GENERATOR:STRING=Ninja -DCMAKE_BUILD_TYPE:STRING=Release
38+
cmake -S '${{ github.workspace }}/' -B '${{ github.workspace }}/Build' -DCMAKE_GENERATOR:STRING=Ninja -DCMAKE_BUILD_TYPE:STRING=Release -DQUICK_QANAVA_CI=ON
3939
4040
- name: Compiling QuickQanava
4141
shell: cmd

.gitignore

+2
Original file line numberDiff line numberDiff line change
@@ -14,3 +14,5 @@ samples/build*
1414
.idea
1515
.DS_Store
1616
build-tests-*
17+
18+
build

CHANGELOG.md

+14
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,19 @@
11
# CHANGELOG
22

3+
## 20240922 2.5.0:
4+
- #248: Add full support for cmake qt_add_qml_module(), QuickQanava must now be used
5+
as a static QML module (qml compiler is automatically applied, it look like it is a lot faster...).
6+
- #244: Add scrollbar support to qan::Navigable, better graph view area support.
7+
- #238: Change group layout, add header support in group delegate.
8+
- #228: Add preliminary support for auto tree layouts.
9+
10+
## 20240812 2.4.2:
11+
- Merge #230 by @emmenlau, enhance node/group factory methods template signature.
12+
- Merge #236 by @emmenlau, fix a memory leak.
13+
- Merge #233 by @emmenlau, fix a compilation issue in graph.h.
14+
- Change group dragging default behaviour: group are now only draggable by their
15+
header. Old policy can be restored with qan::GroupItem::DragPolicy.
16+
317
## 20231116 2.4.0:
418
- Rewrite the Qt5/6 CMake configuration.
519
- Remove all QUICKQANAVA_QT_MAJOR_VERSION and all compilation options, compilation is now always "static".

CMakeLists.qt5.txt

-7
This file was deleted.

CMakeLists.qt6.txt

-9
This file was deleted.

CMakeLists.txt

+27-10
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,38 @@
1-
cmake_minimum_required(VERSION 3.5.0)
1+
cmake_minimum_required(VERSION 3.16)
22

3-
project(QuickQanava VERSION 2.4.0 LANGUAGES CXX)
3+
project(QuickQanava VERSION 2.5.0 LANGUAGES CXX)
44
set_property(GLOBAL PROPERTY USE_FOLDERS ON)
55

6-
set(CMAKE_CXX_STANDARD 14)
6+
set(CMAKE_CXX_STANDARD 17)
77
set(CMAKE_CXX_STANDARD_REQUIRED ON)
88

9-
find_package(QT NAMES Qt6 Qt5 REQUIRED COMPONENTS Core Quick Qml Quick QuickControls2)
9+
find_package(Qt6 REQUIRED COMPONENTS Core Quick Qml Quick QuickControls2)
1010

1111
message("Building QuickQanava for Qt${QT_VERSION_MAJOR}")
1212

13-
option(QUICK_QANAVA_BUILD_SAMPLES "Build the samples" FALSE)
13+
add_compile_definitions(QT_DISABLE_DEPRECATED_BEFORE=0x050F00)
1414

15-
if (${QT_VERSION_MAJOR} EQUAL 5)
16-
include(CMakeLists.qt5.txt)
17-
else()
18-
include(CMakeLists.qt6.txt)
15+
add_subdirectory(src)
16+
17+
option(QUICK_QANAVA_BUILD_SAMPLES "Build QuickQanava samples" OFF)
18+
if (${QUICK_QANAVA_CI})
19+
add_subdirectory(samples/groups) # Used to test CI
1920
endif()
2021

21-
add_subdirectory(src)
22+
if (${QUICK_QANAVA_BUILD_SAMPLES})
23+
add_subdirectory(samples/advanced)
24+
add_subdirectory(samples/connector)
25+
add_subdirectory(samples/cpp)
26+
27+
add_subdirectory(samples/dataflow)
28+
add_subdirectory(samples/edges)
29+
add_subdirectory(samples/navigable)
30+
31+
add_subdirectory(samples/groups)
32+
add_subdirectory(samples/nodes)
33+
add_subdirectory(samples/layouts)
34+
add_subdirectory(samples/selection)
35+
36+
add_subdirectory(samples/style)
37+
add_subdirectory(samples/topology)
38+
endif()

README.md

+6-6
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,21 @@
11
# QuickQanava
22

3-
![Linux Qt5 g++ qmake](https://github.com/cneben/QuickQanava/actions/workflows/build-linux-qt5.yml/badge.svg)
4-
![Win64 Qt5 msvc qmake](https://github.com/cneben/QuickQanava/actions/workflows/build-win64-qt5.yml/badge.svg)
53
![Win64 Qt6 msvc CMake](https://github.com/cneben/QuickQanava/actions/workflows/build-win64-qt6.yml/badge.svg)
64

75
[![Documentation](https://img.shields.io/badge/docs-mkdocs-blue.svg)](http://cneben.github.io/QuickQanava/)
86
[![License](https://img.shields.io/badge/License-BSD%203--Clause-blue.svg)](https://opensource.org/licenses/BSD-3-Clause)
9-
![](https://img.shields.io/badge/version-2.1.0-blue.svg)
7+
![](https://img.shields.io/badge/version-2.5.0-blue.svg)
108
[![Twitter URL](https://img.shields.io/twitter/url/https/twitter.com/fold_left.svg?style=social&label=Follow%20%40QuickQanava)](https://twitter.com/QuickQanava)
119

1210
![](https://github.com/cneben/QuickQanava/blob/master/doc/web/docs/images/home.png)
1311

14-
`QuickQanava` is a C++14 library designed to display graphs and relational content in a Qt/QML application. QuickQanava provide QML components and C++ classes to visualize medium-sized directed graphs in a C++/QML application. QuickQanava focus on displaying relational content into a dynamic user interface with DnD support, resizable content and visual creation of topology. QuickQanava focus on writing topology delegates in pure QML.
12+
`QuickQanava` is a C++17 library developed for rendering graphs and relational content within a Qt/QML application. It offers QML components and C++ classes designed for visualizing medium-sized directed graphs in a C++/QML application. QuickQanava emphasizes the presentation of relational content in a dynamic user interface, featuring Drag-and-Drop support, resizable content, and visual creation of topology. `QuickQanava` focus authoring of topology delegates in pure QML.
1513

1614
QuickQanava main repository is hosted on GitHub: http://cneben.github.io/QuickQanava/index.html
1715

18-
QuickQanava is primarily developed for Linux with Qt 5.15 with MSVC2019 and g++9 (minimal required Qt version is **Qt 5.10**, recommended is **Qt 5.15.5**).
16+
QuickQanava is primarily developed with Qt 6.6.1 with MSVC2019 and g++11 (minimal required Qt version is **Qt 6.5.0**, recommended is **Qt 6.6.1**).
17+
18+
If you are interested in **Qt5.15** support, last release supporting Qt5 is [2.4.0](https://github.com/cneben/QuickQanava/releases/tag/2.4.0)
1919

2020
- [CHANGELOG.md](CHANGELOG.md)
2121
- Project homepage: http://cneben.github.io/QuickQanava/index.html
@@ -68,5 +68,5 @@ QuickQanava include `bezier` library distributed with MIT licence on https://git
6868

6969
[![License](https://img.shields.io/badge/License-BSD%203--Clause-blue.svg)](https://opensource.org/licenses/BSD-3-Clause)
7070

71-
Copyright (c) 2017-2022 BA
71+
Copyright (c) 2017-2024 BA
7272

VERSION.txt

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
2.5.0

conanfile.py

-29
This file was deleted.

doc/BUILDING.md

+9-38
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
## Dependencies
44

5-
- **Qt > 5.12** _is mandatory_ for Qt Quick Shapes support.
5+
- **Qt > 6.5.0** _is mandatory_ for MultiEffect support.
66
- **Google Test** is optional only to build and run tests ![Google Test GitHub](https://github.com/google/googletest).
77

88

@@ -22,27 +22,11 @@ $ git submodule add https://github.com/cneben/QuickQanava
2222
$ git submodule update
2323
```
2424

25-
QuickQanava could be used with either _qmake_ or _CMake_ build configuration system.
26-
27-
| qmake (Qt5) | CMake (Qt6) |
28-
| :---: | :---: |
29-
| Static build, no QML module, all resources are linked statically trough QRC | Installable or embedable, QuickQanava is loaded using a QML module that need to be installed, resources can be linked statically trough QRC |
30-
31-
32-
Using qmake (**preferred and supported way of integrating QuickQanava**):
33-
34-
1. Open _quickqanava.pro_ in QtCreator.
35-
36-
2. Select a kit, build and launch samples.
37-
38-
39-
:warning: CMake support is "community maintained"
40-
41-
or with (CMake >= 3.5) and Qt Creator:
25+
QuickQanava is configured with CMake >= 3.5.0.
4226

4327
1. Open _CMakeLists.txt_ in QtCreator.
4428

45-
2. In 'Projects' panel, set DQUICK_QANAVA_BUILD_SAMPLES option to true in CMake configuration panel.
29+
2. In 'Projects' panel, set `QUICK_QANAVA_BUILD_SAMPLES` option to `ON` in CMake configuration panel.
4630

4731
3. Select a kit, build and launch samples.
4832

@@ -53,30 +37,17 @@ $ cd QuickQanava
5337
$ mkdir build
5438
$ cd build
5539

56-
# IF QT_DIR IS CONFIGURED AND QMAKE IN PATH
57-
$ cmake -DCMAKE_BUILD_TYPE=Release -DQUICK_QANAVA_BUILD_SAMPLES=TRUE -DBUILD_STATIC_QRC=TRUE ..
40+
# IF QT_DIR IS CONFIGURED
41+
$ cmake -DCMAKE_BUILD_TYPE=Release -DQUICK_QANAVA_BUILD_SAMPLES=OFF ..
5842

5943
# IF QT DIR IS NOT CONFIGURED, CONFIGURE KIT MANUALLY
60-
$ cmake -DCMAKE_PREFIX_PATH="/home/b/Qt/5.11.0/gcc_64" -DQT_QMAKE_EXECUTABLE="/home/b/Qt/5.11.0/gcc_64/bin/qmake" -DQUICK_QANAVA_BUILD_SAMPLES=TRUE -DBUILD_STATIC_QRC=TRUE ../QuickQanava/
44+
$ cmake -DCMAKE_PREFIX_PATH="/home/xxx/Qt/6.6.1/gcc_64" -DQUICK_QANAVA_BUILD_SAMPLES=OFF -DBUILD_STATIC_QRC=TRUE ../QuickQanava/
6145

6246
$ cmake --build .
63-
# Then run the samples in ./samples
6447

65-
# Eventually make install
66-
```
48+
# Then run the samples in ./samples (with QUICK_QANAVA_BUILD_SAMPLES=ON)
6749

68-
Detailed instructions: [Installation](http://cneben.github.io/QuickQanava/installation/index.html)
69-
70-
Note that a previously installed "QML plugin" version of QuickQanava might interfere with a fully static build using direct .pri inclusion. Typical error message looks like:
71-
72-
```
73-
QQmlApplicationEngine failed to load component
74-
qrc:/nodes.qml:33 module "QuickQanava" plugin "quickqanavaplugin" not found
50+
# DO NOT make install, QuickQanava is not designed for system installation, only for submodule inclusion
7551
```
7652

77-
QuickQanava and QuickContainers plugins directories could be removed manually from `$QTDIR\..\qml` to fix the problem (ex: rm -rf '~/Qt/5.11.1/gcc_64/qml/QuickQanava').
78-
79-
On Ubuntu system, the following dependencies must be isntalled:
80-
```
81-
$ sudo apt install libopengl0 -y
82-
```
53+
Detailed instructions: [Installation](http://cneben.github.io/QuickQanava/installation/index.html)

doc/web/docs/index.md

+4-2
Original file line numberDiff line numberDiff line change
@@ -22,11 +22,13 @@ weight: 0
2222

2323
## Introduction
2424

25-
`QuickQanava` is a C++14 library designed to display graphs and relational content in a QtQuick application. QuickQanava provide QML components and C++ classes to visualize medium-sized directed graphs in a C++/QML application. QuickQanava does not provide advanced layout algorithms, but rather focus on displaying relational content in advanced dynamic user interfaces (with DnD support, resizable content, visual connection of nodes).
25+
`QuickQanava` is a C++17 library developed for rendering graphs and relational content within a Qt/QML application. It offers QML components and C++ classes designed for visualizing medium-sized directed graphs in a C++/QML application. QuickQanava emphasizes the presentation of relational content in a dynamic user interface, featuring Drag-and-Drop support, resizable content, and visual creation of topology. `QuickQanava` focus authoring of topology delegates in pure QML.
2626

2727
QuickQanava main repository is hosted on GitHub: https://github.com/cneben/quickqanava
2828

29-
QuickQanava is primarily developed on Linux and Qt 5.15. minimal required Qt version is **Qt 5.10**.
29+
QuickQanava is primarily developed with Qt 6.6.1 with MSVC2019 and g++11 (minimal required Qt version is **Qt 6.5.0**, recommended is **Qt 6.6.1**).
30+
31+
If you are interested in **Qt5.15** support, last release supporting Qt5 is [2.4.0](https://github.com/cneben/QuickQanava/releases/tag/2.4.0)
3032

3133
+ Project homepage: [http://cneben.github.io/QuickQanava/index.html](http://cneben.github.io/QuickQanava/index.html)
3234

0 commit comments

Comments
 (0)