Compare commits
40 Commits
pre-commit
...
59a81fbe62
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
59a81fbe62 | ||
|
|
0fe194769d | ||
|
|
5861607df1 | ||
|
|
e7c9a20752 | ||
|
|
dba4d649ed | ||
|
|
ede69197ed | ||
|
|
70fd6f0770 | ||
|
|
c91c28748e | ||
|
|
1275327163 | ||
|
|
c3751142c0 | ||
|
|
c603593552 | ||
|
|
ac6ed8e929 | ||
|
|
4f7175c446 | ||
|
|
832736c1e5 | ||
|
|
c5cbe4064a | ||
|
|
68b7c0b1a9 | ||
|
|
285574205c | ||
|
|
dbf96091f8 | ||
|
|
9c03da23a6 | ||
|
|
ea08429b23 | ||
|
|
ad1a2df8af | ||
|
|
af3fd6b296 | ||
|
|
ae461f947f | ||
|
|
f24a04252b | ||
|
|
dd9837c3f1 | ||
|
|
b6beb3d244 | ||
|
|
1a46823b03 | ||
|
|
4d50376ccf | ||
|
|
59f7280d59 | ||
|
|
683dd68754 | ||
|
|
1b33da8b44 | ||
|
|
f6d9ac5606 | ||
|
|
f08d39ecc8 | ||
|
|
ee5e004ed2 | ||
|
|
c744291d33 | ||
|
|
a6e0de9db9 | ||
|
|
0ad83ea1b4 | ||
|
|
fdcdaae1f1 | ||
|
|
af455bb37e | ||
|
|
57aded2a67 |
@@ -1,9 +1,13 @@
|
|||||||
# See https://pre-commit.com for more information
|
# See https://pre-commit.com for more information
|
||||||
# See https://pre-commit.com/hooks.html for more hooks
|
# See https://pre-commit.com/hooks.html for more hooks
|
||||||
|
ci:
|
||||||
|
skip: [pylint]
|
||||||
|
autoupdate_schedule: monthly
|
||||||
|
|
||||||
exclude: ^(cmake/ECM|cmake/KDAB/)
|
exclude: ^(cmake/ECM|cmake/KDAB/)
|
||||||
repos:
|
repos:
|
||||||
- repo: https://github.com/pre-commit/pre-commit-hooks
|
- repo: https://github.com/pre-commit/pre-commit-hooks
|
||||||
rev: v4.3.0
|
rev: v4.4.0
|
||||||
hooks:
|
hooks:
|
||||||
- id: trailing-whitespace
|
- id: trailing-whitespace
|
||||||
- id: end-of-file-fixer
|
- id: end-of-file-fixer
|
||||||
@@ -18,17 +22,17 @@ repos:
|
|||||||
- id: clang-format
|
- id: clang-format
|
||||||
exclude: (.json)
|
exclude: (.json)
|
||||||
- repo: https://github.com/PyCQA/pylint
|
- repo: https://github.com/PyCQA/pylint
|
||||||
rev: v2.15.5
|
rev: v2.17.1
|
||||||
hooks:
|
hooks:
|
||||||
- id: pylint
|
- id: pylint
|
||||||
exclude: ^(.cmake-format.py|conan/conanfile.py)
|
exclude: ^(.cmake-format.py|conan/conanfile.py)
|
||||||
additional_dependencies: ["PySide2", "PySide6"]
|
additional_dependencies: ["PySide2", "PySide6"]
|
||||||
- repo: https://github.com/pre-commit/mirrors-autopep8
|
- repo: https://github.com/pre-commit/mirrors-autopep8
|
||||||
rev: v1.7.0
|
rev: v2.0.2
|
||||||
hooks:
|
hooks:
|
||||||
- id: autopep8
|
- id: autopep8
|
||||||
- repo: https://github.com/codespell-project/codespell
|
- repo: https://github.com/codespell-project/codespell
|
||||||
rev: v2.2.2
|
rev: v2.2.4
|
||||||
hooks:
|
hooks:
|
||||||
- id: codespell
|
- id: codespell
|
||||||
- repo: https://github.com/cheshirekow/cmake-format-precommit
|
- repo: https://github.com/cheshirekow/cmake-format-precommit
|
||||||
@@ -46,6 +50,6 @@ repos:
|
|||||||
language: ruby
|
language: ruby
|
||||||
files: \.(md|mdown|markdown)$
|
files: \.(md|mdown|markdown)$
|
||||||
- repo: https://github.com/fsfe/reuse-tool
|
- repo: https://github.com/fsfe/reuse-tool
|
||||||
rev: v1.0.0
|
rev: v1.1.2
|
||||||
hooks:
|
hooks:
|
||||||
- id: reuse
|
- id: reuse
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ Copyright: 2019-2023 Klarälvdalens Datakonsult AB, a KDAB Group company <info@k
|
|||||||
License: GPL-2.0-only OR GPL-3.0-only
|
License: GPL-2.0-only OR GPL-3.0-only
|
||||||
|
|
||||||
#misc config files
|
#misc config files
|
||||||
Files: .pre-commit-config.yaml .codespellrc .krazy .cmake-format .clang-format .clazy .gitignore .mdlrc .mdlrc.rb .pep8 .pylintrc appveyor.yml code.dev-*.code-workspace docs/api/Doxyfile.cmake distro/*
|
Files: .pre-commit-config.yaml .codespellrc .krazy .cmake-format .clang-format .clazy .gitignore .mdlrc .mdlrc.rb .pep8 .pylintrc appveyor.yml code.dev-*.code-workspace vscode.code-workspace docs/api/Doxyfile.cmake distro/*
|
||||||
Copyright: 2019-2023 Klarälvdalens Datakonsult AB, a KDAB Group company <info@kdab.com>
|
Copyright: 2019-2023 Klarälvdalens Datakonsult AB, a KDAB Group company <info@kdab.com>
|
||||||
License: BSD-3-Clause
|
License: BSD-3-Clause
|
||||||
|
|
||||||
|
|||||||
@@ -63,11 +63,6 @@
|
|||||||
# Build the layout linter.
|
# Build the layout linter.
|
||||||
# Ignored unless KDDockWidgets_DEVELOPER_MODE=True
|
# Ignored unless KDDockWidgets_DEVELOPER_MODE=True
|
||||||
# Default=true
|
# Default=true
|
||||||
#
|
|
||||||
# -DKDDockWidgets_FUZZER=[true|false]
|
|
||||||
# Build the fuzzer.
|
|
||||||
# Ignored unless KDDockWidgets_DEVELOPER_MODE=True
|
|
||||||
# Default=true
|
|
||||||
|
|
||||||
cmake_minimum_required(VERSION 3.12)
|
cmake_minimum_required(VERSION 3.12)
|
||||||
|
|
||||||
@@ -93,8 +88,8 @@ project(
|
|||||||
)
|
)
|
||||||
|
|
||||||
set(${PROJECT_NAME}_VERSION_MAJOR 1)
|
set(${PROJECT_NAME}_VERSION_MAJOR 1)
|
||||||
set(${PROJECT_NAME}_VERSION_MINOR 6)
|
set(${PROJECT_NAME}_VERSION_MINOR 7)
|
||||||
set(${PROJECT_NAME}_VERSION_PATCH 95)
|
set(${PROJECT_NAME}_VERSION_PATCH 1)
|
||||||
set(${PROJECT_NAME}_VERSION
|
set(${PROJECT_NAME}_VERSION
|
||||||
${${PROJECT_NAME}_VERSION_MAJOR}.${${PROJECT_NAME}_VERSION_MINOR}.${${PROJECT_NAME}_VERSION_PATCH}
|
${${PROJECT_NAME}_VERSION_MAJOR}.${${PROJECT_NAME}_VERSION_MINOR}.${${PROJECT_NAME}_VERSION_PATCH}
|
||||||
)
|
)
|
||||||
@@ -353,29 +348,7 @@ if(${PROJECT_NAME}_TESTS)
|
|||||||
if(${PROJECT_NAME}_DEVELOPER_MODE)
|
if(${PROJECT_NAME}_DEVELOPER_MODE)
|
||||||
add_subdirectory(tests)
|
add_subdirectory(tests)
|
||||||
|
|
||||||
# tst_docks.exe is pretty big (160 tests), so split it in more runs so we can use threads.
|
add_test(NAME tst_docks COMMAND tst_docks)
|
||||||
add_test(NAME tst_docks0 COMMAND tests_launcher 0 5)
|
|
||||||
add_test(NAME tst_docks1 COMMAND tests_launcher 1 5)
|
|
||||||
add_test(NAME tst_docks2 COMMAND tests_launcher 2 5)
|
|
||||||
add_test(NAME tst_docks3 COMMAND tests_launcher 3 5)
|
|
||||||
add_test(NAME tst_docks4 COMMAND tests_launcher 4 5)
|
|
||||||
add_test(NAME tst_docks5 COMMAND tests_launcher 5 5)
|
|
||||||
add_test(NAME tst_docks6 COMMAND tests_launcher 6 5)
|
|
||||||
add_test(NAME tst_docks7 COMMAND tests_launcher 7 5)
|
|
||||||
add_test(NAME tst_docks8 COMMAND tests_launcher 8 5)
|
|
||||||
add_test(NAME tst_docks9 COMMAND tests_launcher 9 5)
|
|
||||||
add_test(NAME tst_docks10 COMMAND tests_launcher 10 5)
|
|
||||||
add_test(NAME tst_docks11 COMMAND tests_launcher 10 5)
|
|
||||||
add_test(NAME tst_docks12 COMMAND tests_launcher 11 5)
|
|
||||||
add_test(NAME tst_docks13 COMMAND tests_launcher 12 5)
|
|
||||||
add_test(NAME tst_docks14 COMMAND tests_launcher 13 5)
|
|
||||||
add_test(NAME tst_docks15 COMMAND tests_launcher 14 5)
|
|
||||||
add_test(NAME tst_docks16 COMMAND tests_launcher 15 5)
|
|
||||||
add_test(NAME tst_docks17 COMMAND tests_launcher 16 5)
|
|
||||||
add_test(NAME tst_docks18 COMMAND tests_launcher 17 5)
|
|
||||||
add_test(NAME tst_docks19 COMMAND tests_launcher 18 5)
|
|
||||||
add_test(NAME tst_docks20 COMMAND tests_launcher 19 5)
|
|
||||||
add_test(NAME tst_docks21 COMMAND tests_launcher 20 5) # one more for rounding leftovers
|
|
||||||
|
|
||||||
if(NOT ${PROJECT_NAME}_QTQUICK)
|
if(NOT ${PROJECT_NAME}_QTQUICK)
|
||||||
# tst_multisplitter depends on QWidget
|
# tst_multisplitter depends on QWidget
|
||||||
|
|||||||
@@ -9,11 +9,10 @@
|
|||||||
"cacheVariables": {
|
"cacheVariables": {
|
||||||
"CMAKE_BUILD_TYPE": "Debug",
|
"CMAKE_BUILD_TYPE": "Debug",
|
||||||
"KDDockWidgets_DEVELOPER_MODE": "ON",
|
"KDDockWidgets_DEVELOPER_MODE": "ON",
|
||||||
"CMAKE_EXPORT_COMPILE_COMMANDS" : "ON",
|
"CMAKE_EXPORT_COMPILE_COMMANDS": "ON"
|
||||||
"KDDockWidgets_FUZZER" : "OFF"
|
|
||||||
},
|
},
|
||||||
"warnings" : {
|
"warnings": {
|
||||||
"uninitialized" : true
|
"uninitialized": true
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -25,12 +24,11 @@
|
|||||||
"cacheVariables": {
|
"cacheVariables": {
|
||||||
"CMAKE_BUILD_TYPE": "Debug",
|
"CMAKE_BUILD_TYPE": "Debug",
|
||||||
"KDDockWidgets_DEVELOPER_MODE": "ON",
|
"KDDockWidgets_DEVELOPER_MODE": "ON",
|
||||||
"CMAKE_EXPORT_COMPILE_COMMANDS" : "ON",
|
"CMAKE_EXPORT_COMPILE_COMMANDS": "ON",
|
||||||
"KDDockWidgets_FUZZER" : "OFF",
|
"ECM_ENABLE_SANITIZERS": "'address;undefined'"
|
||||||
"ECM_ENABLE_SANITIZERS" : "'address;undefined'"
|
|
||||||
},
|
},
|
||||||
"warnings" : {
|
"warnings": {
|
||||||
"uninitialized" : true
|
"uninitialized": true
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -41,11 +39,11 @@
|
|||||||
"cacheVariables": {
|
"cacheVariables": {
|
||||||
"CMAKE_BUILD_TYPE": "Debug",
|
"CMAKE_BUILD_TYPE": "Debug",
|
||||||
"KDDockWidgets_WERROR": "ON",
|
"KDDockWidgets_WERROR": "ON",
|
||||||
"KDDockWidgets_EXAMPLES" : "OFF"
|
"KDDockWidgets_EXAMPLES": "OFF"
|
||||||
},
|
},
|
||||||
"environment": {
|
"environment": {
|
||||||
"CXX": "clazy",
|
"CXX": "clazy",
|
||||||
"CCACHE_DISABLE" : "ON"
|
"CCACHE_DISABLE": "ON"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -55,13 +53,13 @@
|
|||||||
"binaryDir": "${sourceDir}/build-clazy-qtquick",
|
"binaryDir": "${sourceDir}/build-clazy-qtquick",
|
||||||
"cacheVariables": {
|
"cacheVariables": {
|
||||||
"CMAKE_BUILD_TYPE": "Debug",
|
"CMAKE_BUILD_TYPE": "Debug",
|
||||||
"KDDockWidgets_EXAMPLES" : "OFF",
|
"KDDockWidgets_EXAMPLES": "OFF",
|
||||||
"KDDockWidgets_WERROR": "ON",
|
"KDDockWidgets_WERROR": "ON",
|
||||||
"KDDockWidgets_QTQUICK": "ON"
|
"KDDockWidgets_QTQUICK": "ON"
|
||||||
},
|
},
|
||||||
"environment": {
|
"environment": {
|
||||||
"CXX": "clazy",
|
"CXX": "clazy",
|
||||||
"CCACHE_DISABLE" : "ON"
|
"CCACHE_DISABLE": "ON"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -80,7 +78,7 @@
|
|||||||
"binaryDir": "${sourceDir}/build-release-no-x11extras",
|
"binaryDir": "${sourceDir}/build-release-no-x11extras",
|
||||||
"cacheVariables": {
|
"cacheVariables": {
|
||||||
"CMAKE_BUILD_TYPE": "Release",
|
"CMAKE_BUILD_TYPE": "Release",
|
||||||
"KDDockWidgets_X11EXTRAS" : "OFF"
|
"KDDockWidgets_X11EXTRAS": "OFF"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -102,9 +100,8 @@
|
|||||||
"CMAKE_BUILD_TYPE": "Debug",
|
"CMAKE_BUILD_TYPE": "Debug",
|
||||||
"KDDockWidgets_QTQUICK": "ON",
|
"KDDockWidgets_QTQUICK": "ON",
|
||||||
"KDDockWidgets_DEVELOPER_MODE": "ON",
|
"KDDockWidgets_DEVELOPER_MODE": "ON",
|
||||||
"ECM_ENABLE_SANITIZERS" : "'address;undefined'",
|
"ECM_ENABLE_SANITIZERS": "'address;undefined'",
|
||||||
"CMAKE_EXPORT_COMPILE_COMMANDS" : "ON",
|
"CMAKE_EXPORT_COMPILE_COMMANDS": "ON"
|
||||||
"KDDockWidgets_FUZZER" : "OFF"
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -157,7 +154,7 @@
|
|||||||
"cacheVariables": {
|
"cacheVariables": {
|
||||||
"CMAKE_BUILD_TYPE": "Release",
|
"CMAKE_BUILD_TYPE": "Release",
|
||||||
"KDDockWidgets_QT6": "ON",
|
"KDDockWidgets_QT6": "ON",
|
||||||
"CMAKE_PREFIX_PATH" : "$env{QT6_DIR}"
|
"CMAKE_PREFIX_PATH": "$env{QT6_DIR}"
|
||||||
},
|
},
|
||||||
"environment": {
|
"environment": {
|
||||||
"PATH": "$env{QT6_DIR}/bin:$penv{PATH}"
|
"PATH": "$env{QT6_DIR}/bin:$penv{PATH}"
|
||||||
@@ -172,9 +169,8 @@
|
|||||||
"CMAKE_BUILD_TYPE": "Debug",
|
"CMAKE_BUILD_TYPE": "Debug",
|
||||||
"KDDockWidgets_QT6": "ON",
|
"KDDockWidgets_QT6": "ON",
|
||||||
"KDDockWidgets_DEVELOPER_MODE": "ON",
|
"KDDockWidgets_DEVELOPER_MODE": "ON",
|
||||||
"CMAKE_EXPORT_COMPILE_COMMANDS" : "ON",
|
"CMAKE_EXPORT_COMPILE_COMMANDS": "ON",
|
||||||
"KDDockWidgets_FUZZER" : "OFF",
|
"CMAKE_PREFIX_PATH": "$env{QT6_DIR}"
|
||||||
"CMAKE_PREFIX_PATH" : "$env{QT6_DIR}"
|
|
||||||
},
|
},
|
||||||
"environment": {
|
"environment": {
|
||||||
"PATH": "$env{QT6_DIR}/bin:$penv{PATH}"
|
"PATH": "$env{QT6_DIR}/bin:$penv{PATH}"
|
||||||
@@ -189,10 +185,9 @@
|
|||||||
"CMAKE_BUILD_TYPE": "Debug",
|
"CMAKE_BUILD_TYPE": "Debug",
|
||||||
"KDDockWidgets_QT6": "ON",
|
"KDDockWidgets_QT6": "ON",
|
||||||
"KDDockWidgets_DEVELOPER_MODE": "ON",
|
"KDDockWidgets_DEVELOPER_MODE": "ON",
|
||||||
"CMAKE_EXPORT_COMPILE_COMMANDS" : "ON",
|
"CMAKE_EXPORT_COMPILE_COMMANDS": "ON",
|
||||||
"ECM_ENABLE_SANITIZERS" : "'address;undefined'",
|
"ECM_ENABLE_SANITIZERS": "'address;undefined'",
|
||||||
"KDDockWidgets_FUZZER" : "OFF",
|
"CMAKE_PREFIX_PATH": "$env{QT6_DIR}"
|
||||||
"CMAKE_PREFIX_PATH" : "$env{QT6_DIR}"
|
|
||||||
},
|
},
|
||||||
"environment": {
|
"environment": {
|
||||||
"PATH": "$env{QT6_DIR}/bin:$penv{PATH}"
|
"PATH": "$env{QT6_DIR}/bin:$penv{PATH}"
|
||||||
@@ -206,8 +201,8 @@
|
|||||||
"cacheVariables": {
|
"cacheVariables": {
|
||||||
"CMAKE_BUILD_TYPE": "Release",
|
"CMAKE_BUILD_TYPE": "Release",
|
||||||
"KDDockWidgets_QTQUICK": "ON",
|
"KDDockWidgets_QTQUICK": "ON",
|
||||||
"KDDockWidgets_QT6": "ON",
|
"KDDockWidgets_QT6": "ON",
|
||||||
"CMAKE_PREFIX_PATH" : "$env{QT6_DIR}"
|
"CMAKE_PREFIX_PATH": "$env{QT6_DIR}"
|
||||||
},
|
},
|
||||||
"environment": {
|
"environment": {
|
||||||
"PATH": "$env{QT6_DIR}/bin:$penv{PATH}"
|
"PATH": "$env{QT6_DIR}/bin:$penv{PATH}"
|
||||||
@@ -221,16 +216,16 @@
|
|||||||
"cacheVariables": {
|
"cacheVariables": {
|
||||||
"CMAKE_BUILD_TYPE": "Debug",
|
"CMAKE_BUILD_TYPE": "Debug",
|
||||||
"KDDockWidgets_QTQUICK": "ON",
|
"KDDockWidgets_QTQUICK": "ON",
|
||||||
"CMAKE_EXPORT_COMPILE_COMMANDS" : "ON",
|
"CMAKE_EXPORT_COMPILE_COMMANDS": "ON",
|
||||||
"KDDockWidgets_DEVELOPER_MODE": "ON",
|
"KDDockWidgets_DEVELOPER_MODE": "ON",
|
||||||
"ECM_ENABLE_SANITIZERS" : "'address;undefined'",
|
"ECM_ENABLE_SANITIZERS": "'address;undefined'",
|
||||||
"KDDockWidgets_QT6": "ON",
|
"KDDockWidgets_QT6": "ON",
|
||||||
"CMAKE_PREFIX_PATH" : "$env{QT6_DIR}"
|
"CMAKE_PREFIX_PATH": "$env{QT6_DIR}"
|
||||||
},
|
},
|
||||||
"environment": {
|
"environment": {
|
||||||
"PATH": "$env{QT6_DIR}/bin:$penv{PATH}",
|
"PATH": "$env{QT6_DIR}/bin:$penv{PATH}",
|
||||||
"QML2_IMPORT_PATH" : "$env{QT6_DIR}/imports:$env{QT6_DIR}/qml",
|
"QML2_IMPORT_PATH": "$env{QT6_DIR}/imports:$env{QT6_DIR}/qml",
|
||||||
"LD_LIBRARY_PATH" : "$env{QT6_DIR}/lib"
|
"LD_LIBRARY_PATH": "$env{QT6_DIR}/lib"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -241,11 +236,10 @@
|
|||||||
"cacheVariables": {
|
"cacheVariables": {
|
||||||
"CMAKE_BUILD_TYPE": "Debug",
|
"CMAKE_BUILD_TYPE": "Debug",
|
||||||
"KDDockWidgets_DEVELOPER_MODE": "ON",
|
"KDDockWidgets_DEVELOPER_MODE": "ON",
|
||||||
"CMAKE_EXPORT_COMPILE_COMMANDS" : "ON",
|
"CMAKE_EXPORT_COMPILE_COMMANDS": "ON"
|
||||||
"KDDockWidgets_FUZZER" : "ON"
|
|
||||||
},
|
},
|
||||||
"warnings" : {
|
"warnings": {
|
||||||
"uninitialized" : true
|
"uninitialized": true
|
||||||
},
|
},
|
||||||
"environment": {
|
"environment": {
|
||||||
"CC": "clang-cl",
|
"CC": "clang-cl",
|
||||||
@@ -260,11 +254,10 @@
|
|||||||
"cacheVariables": {
|
"cacheVariables": {
|
||||||
"CMAKE_BUILD_TYPE": "Debug",
|
"CMAKE_BUILD_TYPE": "Debug",
|
||||||
"KDDockWidgets_DEVELOPER_MODE": "ON",
|
"KDDockWidgets_DEVELOPER_MODE": "ON",
|
||||||
"KDDockWidgets_FUZZER" : "OFF",
|
|
||||||
"KDDockWidgets_QTQUICK": "ON"
|
"KDDockWidgets_QTQUICK": "ON"
|
||||||
},
|
},
|
||||||
"warnings" : {
|
"warnings": {
|
||||||
"uninitialized" : true
|
"uninitialized": true
|
||||||
},
|
},
|
||||||
"environment": {
|
"environment": {
|
||||||
"CC": "clang-cl",
|
"CC": "clang-cl",
|
||||||
@@ -279,12 +272,11 @@
|
|||||||
"cacheVariables": {
|
"cacheVariables": {
|
||||||
"CMAKE_BUILD_TYPE": "Debug",
|
"CMAKE_BUILD_TYPE": "Debug",
|
||||||
"KDDockWidgets_DEVELOPER_MODE": "ON",
|
"KDDockWidgets_DEVELOPER_MODE": "ON",
|
||||||
"KDDockWidgets_FUZZER" : "ON",
|
|
||||||
"KDDockWidgets_QT6": "ON",
|
"KDDockWidgets_QT6": "ON",
|
||||||
"CMAKE_PREFIX_PATH" : "$env{QT6_DIR}"
|
"CMAKE_PREFIX_PATH": "$env{QT6_DIR}"
|
||||||
},
|
},
|
||||||
"warnings" : {
|
"warnings": {
|
||||||
"uninitialized" : true
|
"uninitialized": true
|
||||||
},
|
},
|
||||||
"environment": {
|
"environment": {
|
||||||
"CC": "clang-cl",
|
"CC": "clang-cl",
|
||||||
@@ -300,20 +292,19 @@
|
|||||||
"cacheVariables": {
|
"cacheVariables": {
|
||||||
"CMAKE_BUILD_TYPE": "Debug",
|
"CMAKE_BUILD_TYPE": "Debug",
|
||||||
"KDDockWidgets_DEVELOPER_MODE": "ON",
|
"KDDockWidgets_DEVELOPER_MODE": "ON",
|
||||||
"KDDockWidgets_FUZZER" : "OFF",
|
|
||||||
"KDDockWidgets_QTQUICK": "ON",
|
"KDDockWidgets_QTQUICK": "ON",
|
||||||
"KDDockWidgets_QT6": "ON",
|
"KDDockWidgets_QT6": "ON",
|
||||||
"CMAKE_PREFIX_PATH" : "$env{QT6_DIR}"
|
"CMAKE_PREFIX_PATH": "$env{QT6_DIR}"
|
||||||
},
|
},
|
||||||
"warnings" : {
|
"warnings": {
|
||||||
"uninitialized" : true
|
"uninitialized": true
|
||||||
},
|
},
|
||||||
"environment": {
|
"environment": {
|
||||||
"CC": "clang-cl",
|
"CC": "clang-cl",
|
||||||
"CXX": "clang-cl",
|
"CXX": "clang-cl",
|
||||||
"PATH": "$env{QT6_DIR}/bin:$penv{PATH}",
|
"PATH": "$env{QT6_DIR}/bin:$penv{PATH}",
|
||||||
"QML2_IMPORT_PATH" : "$env{QT6_DIR}/imports:$env{QT6_DIR}/qml",
|
"QML2_IMPORT_PATH": "$env{QT6_DIR}/imports:$env{QT6_DIR}/qml",
|
||||||
"LD_LIBRARY_PATH" : "$env{QT6_DIR}/lib"
|
"LD_LIBRARY_PATH": "$env{QT6_DIR}/lib"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -324,18 +315,17 @@
|
|||||||
"cacheVariables": {
|
"cacheVariables": {
|
||||||
"CMAKE_BUILD_TYPE": "Debug",
|
"CMAKE_BUILD_TYPE": "Debug",
|
||||||
"KDDockWidgets_DEVELOPER_MODE": "ON",
|
"KDDockWidgets_DEVELOPER_MODE": "ON",
|
||||||
"CMAKE_EXPORT_COMPILE_COMMANDS" : "ON",
|
"CMAKE_EXPORT_COMPILE_COMMANDS": "ON",
|
||||||
"KDDockWidgets_FUZZER" : "OFF",
|
"CMAKE_C_FLAGS_INIT": "-ftime-trace",
|
||||||
"CMAKE_C_FLAGS_INIT" : "-ftime-trace",
|
|
||||||
"CMAKE_CXX_FLAGS_INIT": "-ftime-trace"
|
"CMAKE_CXX_FLAGS_INIT": "-ftime-trace"
|
||||||
},
|
},
|
||||||
"warnings" : {
|
"warnings": {
|
||||||
"uninitialized" : true
|
"uninitialized": true
|
||||||
},
|
},
|
||||||
"environment": {
|
"environment": {
|
||||||
"CC": "clang",
|
"CC": "clang",
|
||||||
"CXX": "clang++",
|
"CXX": "clang++",
|
||||||
"CCACHE_DISABLE" : "ON"
|
"CCACHE_DISABLE": "ON"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -346,19 +336,18 @@
|
|||||||
"cacheVariables": {
|
"cacheVariables": {
|
||||||
"CMAKE_BUILD_TYPE": "Debug",
|
"CMAKE_BUILD_TYPE": "Debug",
|
||||||
"KDDockWidgets_DEVELOPER_MODE": "ON",
|
"KDDockWidgets_DEVELOPER_MODE": "ON",
|
||||||
"CMAKE_EXPORT_COMPILE_COMMANDS" : "ON",
|
"CMAKE_EXPORT_COMPILE_COMMANDS": "ON",
|
||||||
"KDDockWidgets_FUZZER" : "OFF",
|
"KDDockWidgets_QT6": "ON",
|
||||||
"KDDockWidgets_QT6" : "ON",
|
"CMAKE_C_FLAGS_INIT": "-ftime-trace",
|
||||||
"CMAKE_C_FLAGS_INIT" : "-ftime-trace",
|
|
||||||
"CMAKE_CXX_FLAGS_INIT": "-ftime-trace"
|
"CMAKE_CXX_FLAGS_INIT": "-ftime-trace"
|
||||||
},
|
},
|
||||||
"warnings" : {
|
"warnings": {
|
||||||
"uninitialized" : true
|
"uninitialized": true
|
||||||
},
|
},
|
||||||
"environment": {
|
"environment": {
|
||||||
"CC": "clang",
|
"CC": "clang",
|
||||||
"CXX": "clang++",
|
"CXX": "clang++",
|
||||||
"CCACHE_DISABLE" : "ON"
|
"CCACHE_DISABLE": "ON"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -459,17 +448,23 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "ci-static",
|
"name": "ci-static",
|
||||||
"inherits":["static"],
|
"inherits": [
|
||||||
|
"static"
|
||||||
|
],
|
||||||
"binaryDir": "${sourceDir}/build-ci-static"
|
"binaryDir": "${sourceDir}/build-ci-static"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "ci-static-qtquick",
|
"name": "ci-static-qtquick",
|
||||||
"inherits":["static-qtquick"],
|
"inherits": [
|
||||||
|
"static-qtquick"
|
||||||
|
],
|
||||||
"binaryDir": "${sourceDir}/build-ci-static-qtquick"
|
"binaryDir": "${sourceDir}/build-ci-static-qtquick"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "ci-python",
|
"name": "ci-python",
|
||||||
"inherits":["python"],
|
"inherits": [
|
||||||
|
"python"
|
||||||
|
],
|
||||||
"binaryDir": "${sourceDir}/build-python"
|
"binaryDir": "${sourceDir}/build-python"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
@@ -478,16 +473,16 @@
|
|||||||
"name": "clazy",
|
"name": "clazy",
|
||||||
"configurePreset": "clazy",
|
"configurePreset": "clazy",
|
||||||
"environment": {
|
"environment": {
|
||||||
"CLAZY_CHECKS" : "level2,detaching-member,heap-allocated-small-trivial-type,isempty-vs-count,qstring-varargs,qvariant-template-instantiation,raw-environment-function,reserve-candidates,signal-with-return-value,thread-with-slots,no-ctor-missing-parent-argument,no-missing-typeinfo",
|
"CLAZY_CHECKS": "level2,detaching-member,heap-allocated-small-trivial-type,isempty-vs-count,qstring-varargs,qvariant-template-instantiation,raw-environment-function,reserve-candidates,signal-with-return-value,thread-with-slots,no-ctor-missing-parent-argument,no-missing-typeinfo",
|
||||||
"CCACHE_DISABLE" : "ON"
|
"CCACHE_DISABLE": "ON"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "clazy-qtquick",
|
"name": "clazy-qtquick",
|
||||||
"configurePreset": "clazy-qtquick",
|
"configurePreset": "clazy-qtquick",
|
||||||
"environment": {
|
"environment": {
|
||||||
"CLAZY_CHECKS" : "level2,detaching-member,heap-allocated-small-trivial-type,isempty-vs-count,qstring-varargs,qvariant-template-instantiation,raw-environment-function,reserve-candidates,signal-with-return-value,thread-with-slots,no-ctor-missing-parent-argument,no-missing-typeinfo",
|
"CLAZY_CHECKS": "level2,detaching-member,heap-allocated-small-trivial-type,isempty-vs-count,qstring-varargs,qvariant-template-instantiation,raw-environment-function,reserve-candidates,signal-with-return-value,thread-with-slots,no-ctor-missing-parent-argument,no-missing-typeinfo",
|
||||||
"CCACHE_DISABLE" : "ON"
|
"CCACHE_DISABLE": "ON"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|||||||
16
Changelog
16
Changelog
@@ -1,7 +1,21 @@
|
|||||||
* v1.7.0 (unreleased)
|
* v1.7.1 (unreleased)
|
||||||
|
- Fixed pin button appearing by mistake when using Flag_TitleBarNoFloatButton (#359)
|
||||||
|
|
||||||
|
* v1.7.0 (03 May 2023)
|
||||||
- Introduce DockWidget::setFloatingWindowFlags(flags). Allows for different
|
- Introduce DockWidget::setFloatingWindowFlags(flags). Allows for different
|
||||||
FloatingWindows to have different window flags. For example, some having
|
FloatingWindows to have different window flags. For example, some having
|
||||||
Qt::Tool while others having Qt::Window (#314).
|
Qt::Tool while others having Qt::Window (#314).
|
||||||
|
- Fixed fixed-sized windows being able to be resized on Windows (#345)
|
||||||
|
- Allow restoring layouts without touching floating dock widgets
|
||||||
|
- Fix setDropIndicatorsInhibited(false) not showing drop indicators (#334, #337)
|
||||||
|
- Fix relayouting when dock widget is deleted directly (#336)
|
||||||
|
- Minor performance improvement: Cache TitleBar icons
|
||||||
|
- Save side bar overlay geometry when frame is resized
|
||||||
|
- Fixed case of corrupt layout when using setDockWidgetFactoryFunc()
|
||||||
|
- Fix layout scaling factor when main window is native
|
||||||
|
- Fix moving floating windows to negative positions (#321)
|
||||||
|
- Fixed using normal geometry of platform window if fractional scaling is enabled
|
||||||
|
- Allow to specify Qt::Tool or Qt::Window per floating window
|
||||||
|
|
||||||
* v1.6.0 (14 September 2022)
|
* v1.6.0 (14 September 2022)
|
||||||
- Minimum Qt6 version is now 6.2.0
|
- Minimum Qt6 version is now 6.2.0
|
||||||
|
|||||||
@@ -1,19 +1,3 @@
|
|||||||
# KDDockWidgets and QtQuick
|
# KDDockWidgets and QtQuick
|
||||||
|
|
||||||
## Supported Qt versions and toolchains
|
Please use branch 2.0 for QtQuick support.
|
||||||
|
|
||||||
KDDockWidgets for QtQuick requires a C++17 capable compiler and Qt >= 6.2.1.
|
|
||||||
|
|
||||||
Qt 5.15.2 will probably also work, but it's not built and tested by KDAB CI, we
|
|
||||||
advise users to move to Qt6 as soon as possible.
|
|
||||||
|
|
||||||
## Troubleshooting
|
|
||||||
|
|
||||||
- QtGraphicalEffects is not supported, as it's buggy when moving between different QWindows.
|
|
||||||
See for example QTBUG-94943, KDDockWidgets issue #213. Also search the Qt bug tracker
|
|
||||||
for "QQuickItem: Cannot use same item on different windows at the same time"
|
|
||||||
|
|
||||||
- Very rarely, in some Nvidia/X11 setups, floating/docking has noticeable lag (like 1 second)
|
|
||||||
This could be solved by going to Nvidia's settings and making sure all monitors have
|
|
||||||
the same refresh rate and disabling "Allow Flipping". It's not known why this solves it. Might also
|
|
||||||
be a bug in Qt.
|
|
||||||
|
|||||||
@@ -29,7 +29,7 @@ As this time, you cannot get shiboken2-generator because the wheels are not on P
|
|||||||
To use the wheels do this:
|
To use the wheels do this:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
% pip3 install \
|
% python3 -m pip install \
|
||||||
--index-url=http://download.qt.io/official_releases/QtForPython/ \
|
--index-url=http://download.qt.io/official_releases/QtForPython/ \
|
||||||
--trusted-host download.qt.io \
|
--trusted-host download.qt.io \
|
||||||
shiboken2 pyside2 shiboken2_generator
|
shiboken2 pyside2 shiboken2_generator
|
||||||
@@ -40,7 +40,7 @@ For more info visit <https://doc.qt.io/qtforpython/shiboken2/gettingstarted.html
|
|||||||
afterwards run:
|
afterwards run:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
pip3 list | grep PySide
|
python3 -m pip list | grep PySide
|
||||||
```
|
```
|
||||||
|
|
||||||
Note the version *must* match the same Qt you intend to use when building KDDockWidgets.
|
Note the version *must* match the same Qt you intend to use when building KDDockWidgets.
|
||||||
@@ -48,7 +48,7 @@ Note the version *must* match the same Qt you intend to use when building KDDock
|
|||||||
## Install PySide6 for Qt6
|
## Install PySide6 for Qt6
|
||||||
|
|
||||||
Follow the same instructions as [the previous section](#Install PySide2 for Qt5),
|
Follow the same instructions as [the previous section](#Install PySide2 for Qt5),
|
||||||
except installing `shiboken6 pyside6 shiboken6_generator` with pip3.
|
except installing `shiboken6 pyside6 shiboken6_generator` with pip.
|
||||||
|
|
||||||
## Building KDDockWidgets Python Bindings
|
## Building KDDockWidgets Python Bindings
|
||||||
|
|
||||||
@@ -79,6 +79,14 @@ To run the KDDW python example
|
|||||||
|
|
||||||
### Build Issues
|
### Build Issues
|
||||||
|
|
||||||
|
- You can override the default Python3 version found by CMake (usually the
|
||||||
|
newest version available) by passing the Python3_EXECUTABLE value to CMake,
|
||||||
|
i.e.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cmake -DPython3_EXECUTABLE=/usr/bin/python3.10 ....
|
||||||
|
```
|
||||||
|
|
||||||
- If you see errors like "Unable to locate Clang's built-in include directory"
|
- If you see errors like "Unable to locate Clang's built-in include directory"
|
||||||
then first mROUBLESHOOTINGake sure you have llvm installed. If you still have problems try
|
then first mROUBLESHOOTINGake sure you have llvm installed. If you still have problems try
|
||||||
setting the environment variable `LLVM_INSTALL_DIR` to point to your llvm installation.
|
setting the environment variable `LLVM_INSTALL_DIR` to point to your llvm installation.
|
||||||
|
|||||||
@@ -62,7 +62,6 @@ creative with their requests, so it was clear we needed a better docking framewo
|
|||||||
- Clean codebase
|
- Clean codebase
|
||||||
- Not mixing GUI with state with logic with animations
|
- Not mixing GUI with state with logic with animations
|
||||||
- Great test coverage, even the GUI and DnD operations are tested. 200 tests currently.
|
- Great test coverage, even the GUI and DnD operations are tested. 200 tests currently.
|
||||||
- Fuzzer for doing random testing and finding bugs
|
|
||||||
- Lazy separator resize
|
- Lazy separator resize
|
||||||
- Reordering tabs with mouse
|
- Reordering tabs with mouse
|
||||||
- Partial layout save/restore, affecting only a chosen sub-set
|
- Partial layout save/restore, affecting only a chosen sub-set
|
||||||
|
|||||||
@@ -23,18 +23,9 @@ set(PYSIDE2_FOUND FALSE)
|
|||||||
if(PYSIDE2_PRIV_FOUND)
|
if(PYSIDE2_PRIV_FOUND)
|
||||||
set(PYSIDE2_FOUND TRUE)
|
set(PYSIDE2_FOUND TRUE)
|
||||||
message(STATUS "Using PySide2 found in the system!")
|
message(STATUS "Using PySide2 found in the system!")
|
||||||
pkg_get_variable(SHIBOKEN_BINARY
|
pkg_get_variable(SHIBOKEN_BINARY pyside2 generator_location)
|
||||||
pyside2
|
pkg_get_variable(PYSIDE2_BASEDIR pyside2 typesystemdir)
|
||||||
generator_location
|
pkg_get_variable(PYSIDE_INCLUDE_DIR pyside2 includedir)
|
||||||
)
|
|
||||||
pkg_get_variable(PYSIDE2_BASEDIR
|
|
||||||
pyside2
|
|
||||||
typesystemdir
|
|
||||||
)
|
|
||||||
pkg_get_variable(PYSIDE_INCLUDE_DIR
|
|
||||||
pyside2
|
|
||||||
includedir
|
|
||||||
)
|
|
||||||
set(PYSIDE_TYPESYSTEMS ${PYSIDE2_BASEDIR})
|
set(PYSIDE_TYPESYSTEMS ${PYSIDE2_BASEDIR})
|
||||||
set(PYSIDE2_SO_VERSION ${PYSIDE2_PRIV_VERSION})
|
set(PYSIDE2_SO_VERSION ${PYSIDE2_PRIV_VERSION})
|
||||||
set(PYSIDE_LIBRARY ${PYSIDE2_PRIV_LINK_LIBRARIES})
|
set(PYSIDE_LIBRARY ${PYSIDE2_PRIV_LINK_LIBRARIES})
|
||||||
@@ -45,7 +36,8 @@ else()
|
|||||||
get_filename_component(PYTHON_LIBRARY_FILENAME ${PYTHON_LIBRARY_FILENAME} NAME)
|
get_filename_component(PYTHON_LIBRARY_FILENAME ${PYTHON_LIBRARY_FILENAME} NAME)
|
||||||
|
|
||||||
execute_process(
|
execute_process(
|
||||||
COMMAND ${Python3_EXECUTABLE} -c "if True:
|
COMMAND
|
||||||
|
${Python3_EXECUTABLE} -c "if True:
|
||||||
import os, sys
|
import os, sys
|
||||||
try:
|
try:
|
||||||
import PySide2.QtCore as QtCore
|
import PySide2.QtCore as QtCore
|
||||||
@@ -58,16 +50,18 @@ else()
|
|||||||
OUTPUT_STRIP_TRAILING_WHITESPACE
|
OUTPUT_STRIP_TRAILING_WHITESPACE
|
||||||
)
|
)
|
||||||
if(NOT PYSIDE2_BASEDIR)
|
if(NOT PYSIDE2_BASEDIR)
|
||||||
message(
|
message(FATAL_ERROR "The PySide2 module could not be imported. Make sure you have it installed "
|
||||||
FATAL_ERROR
|
"by checking the output of \"pip${Python3_VERSION_MAJOR}.${Python3_VERSION_MINOR} list\""
|
||||||
"The PySide2 module could not be imported. Make sure you have it installed "
|
|
||||||
"by checking the output of \"pip${Python3_VERSION_MAJOR}.${Python3_VERSION_MINOR} list\""
|
|
||||||
)
|
)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
set(PYSIDE_BASEDIR ${PYSIDE2_BASEDIR} CACHE PATH "Top level install of PySide2" FORCE)
|
set(PYSIDE_BASEDIR
|
||||||
|
${PYSIDE2_BASEDIR}
|
||||||
|
CACHE PATH "Top level install of PySide2" FORCE
|
||||||
|
)
|
||||||
execute_process(
|
execute_process(
|
||||||
COMMAND ${Python3_EXECUTABLE} -c "if True:
|
COMMAND
|
||||||
|
${Python3_EXECUTABLE} -c "if True:
|
||||||
import os
|
import os
|
||||||
import PySide2.QtCore as QtCore
|
import PySide2.QtCore as QtCore
|
||||||
print(os.path.basename(QtCore.__file__).split('.', 1)[1])
|
print(os.path.basename(QtCore.__file__).split('.', 1)[1])
|
||||||
@@ -77,7 +71,8 @@ else()
|
|||||||
)
|
)
|
||||||
|
|
||||||
execute_process(
|
execute_process(
|
||||||
COMMAND ${Python3_EXECUTABLE} -c "if True:
|
COMMAND
|
||||||
|
${Python3_EXECUTABLE} -c "if True:
|
||||||
import os
|
import os
|
||||||
import PySide2.QtCore as QtCore
|
import PySide2.QtCore as QtCore
|
||||||
print(';'.join(map(str, QtCore.__version_info__)))
|
print(';'.join(map(str, QtCore.__version_info__)))
|
||||||
@@ -103,10 +98,17 @@ else()
|
|||||||
|
|
||||||
#PySide
|
#PySide
|
||||||
#===============================================================================
|
#===============================================================================
|
||||||
find_path(PYSIDE_INCLUDE_DIR
|
if(PYSIDE_CUSTOM_PREFIX STREQUAL "")
|
||||||
pyside.h
|
set(PYSIDE_CUSTOM_PREFIX ${PYSIDE2_BASEDIR})
|
||||||
|
endif()
|
||||||
|
|
||||||
|
find_path(
|
||||||
|
PYSIDE_INCLUDE_DIR pyside.h
|
||||||
PATHS ${PYSIDE2_BASEDIR}/include ${PYSIDE_CUSTOM_PREFIX}/include/PySide2
|
PATHS ${PYSIDE2_BASEDIR}/include ${PYSIDE_CUSTOM_PREFIX}/include/PySide2
|
||||||
NO_DEFAULT_PATH)
|
NO_DEFAULT_PATH
|
||||||
|
NO_CACHE
|
||||||
|
NO_SYSTEM_ENVIRONMENT_PATH
|
||||||
|
)
|
||||||
|
|
||||||
# Platform specific library names
|
# Platform specific library names
|
||||||
if(MSVC)
|
if(MSVC)
|
||||||
@@ -119,15 +121,17 @@ else()
|
|||||||
set(PYSIDE_LIBRARY_BASENAMES "libpyside2.${PYSIDE2_SUFFIX}")
|
set(PYSIDE_LIBRARY_BASENAMES "libpyside2.${PYSIDE2_SUFFIX}")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
find_file(PYSIDE_LIBRARY
|
find_file(
|
||||||
${PYSIDE_LIBRARY_BASENAMES}
|
PYSIDE_LIBRARY ${PYSIDE_LIBRARY_BASENAMES}
|
||||||
PATHS ${PYSIDE2_BASEDIR} ${PYSIDE_CUSTOM_PREFIX}/lib
|
PATHS ${PYSIDE2_BASEDIR} ${PYSIDE_CUSTOM_PREFIX}/lib
|
||||||
NO_DEFAULT_PATH)
|
NO_DEFAULT_PATH
|
||||||
|
)
|
||||||
|
|
||||||
find_path(PYSIDE_TYPESYSTEMS
|
find_path(
|
||||||
typesystem_core.xml
|
PYSIDE_TYPESYSTEMS typesystem_core.xml
|
||||||
PATHS ${PYSIDE2_BASEDIR}/typesystems ${PYSIDE_CUSTOM_PREFIX}/share/PySide2/typesystems
|
PATHS ${PYSIDE2_BASEDIR}/typesystems ${PYSIDE_CUSTOM_PREFIX}/share/PySide2/typesystems
|
||||||
NO_DEFAULT_PATH)
|
NO_DEFAULT_PATH
|
||||||
|
)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(PYSIDE2_FOUND)
|
if(PYSIDE2_FOUND)
|
||||||
@@ -142,17 +146,20 @@ if(PYSIDE2_FOUND)
|
|||||||
set_property(TARGET PySide2::pyside2 PROPERTY IMPORTED_IMPLIB ${PYSIDE_LIBRARY})
|
set_property(TARGET PySide2::pyside2 PROPERTY IMPORTED_IMPLIB ${PYSIDE_LIBRARY})
|
||||||
endif()
|
endif()
|
||||||
set_property(TARGET PySide2::pyside2 PROPERTY IMPORTED_LOCATION ${PYSIDE_LIBRARY})
|
set_property(TARGET PySide2::pyside2 PROPERTY IMPORTED_LOCATION ${PYSIDE_LIBRARY})
|
||||||
set_property(TARGET PySide2::pyside2 APPEND PROPERTY
|
set_property(
|
||||||
INTERFACE_INCLUDE_DIRECTORIES
|
TARGET PySide2::pyside2
|
||||||
${PYSIDE_INCLUDE_DIR}
|
APPEND
|
||||||
${PYSIDE_INCLUDE_DIR}/QtCore/
|
PROPERTY INTERFACE_INCLUDE_DIRECTORIES
|
||||||
${PYSIDE_INCLUDE_DIR}/QtGui/
|
${PYSIDE_INCLUDE_DIR}
|
||||||
${PYSIDE_INCLUDE_DIR}/QtWidgets/
|
${PYSIDE_INCLUDE_DIR}/QtCore/
|
||||||
${Python3_INCLUDE_DIRS}
|
${PYSIDE_INCLUDE_DIR}/QtGui/
|
||||||
|
${PYSIDE_INCLUDE_DIR}/QtWidgets/
|
||||||
|
${Python3_INCLUDE_DIRS}
|
||||||
)
|
)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
find_package_handle_standard_args(PySide2
|
find_package_handle_standard_args(
|
||||||
|
PySide2
|
||||||
REQUIRED_VARS PYSIDE2_BASEDIR PYSIDE_INCLUDE_DIR PYSIDE_LIBRARY PYSIDE_TYPESYSTEMS
|
REQUIRED_VARS PYSIDE2_BASEDIR PYSIDE_INCLUDE_DIR PYSIDE_LIBRARY PYSIDE_TYPESYSTEMS
|
||||||
VERSION_VAR PYSIDE2_SO_VERSION
|
VERSION_VAR PYSIDE2_SO_VERSION
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -20,7 +20,8 @@ list(GET Python3_LIBRARIES 0 PYTHON_LIBRARY_FILENAME)
|
|||||||
get_filename_component(PYTHON_LIBRARY_FILENAME ${PYTHON_LIBRARY_FILENAME} NAME)
|
get_filename_component(PYTHON_LIBRARY_FILENAME ${PYTHON_LIBRARY_FILENAME} NAME)
|
||||||
|
|
||||||
execute_process(
|
execute_process(
|
||||||
COMMAND ${Python3_EXECUTABLE} -c "if True:
|
COMMAND
|
||||||
|
${Python3_EXECUTABLE} -c "if True:
|
||||||
import os, sys
|
import os, sys
|
||||||
try:
|
try:
|
||||||
import PySide6.QtCore as QtCore
|
import PySide6.QtCore as QtCore
|
||||||
@@ -33,17 +34,19 @@ execute_process(
|
|||||||
OUTPUT_STRIP_TRAILING_WHITESPACE
|
OUTPUT_STRIP_TRAILING_WHITESPACE
|
||||||
)
|
)
|
||||||
if(NOT PYSIDE6_BASEDIR)
|
if(NOT PYSIDE6_BASEDIR)
|
||||||
message(
|
message(FATAL_ERROR "The PySide6 module could not be imported. Make sure you have it installed "
|
||||||
FATAL_ERROR
|
"by checking the output of \"pip${Python3_VERSION_MAJOR}.${Python3_VERSION_MINOR} list\""
|
||||||
"The PySide6 module could not be imported. Make sure you have it installed "
|
|
||||||
"by checking the output of \"pip${Python3_VERSION_MAJOR}.${Python3_VERSION_MINOR} list\""
|
|
||||||
)
|
)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(PYSIDE6_BASEDIR)
|
if(PYSIDE6_BASEDIR)
|
||||||
set(PYSIDE_BASEDIR ${PYSIDE6_BASEDIR} CACHE PATH "Top level install of PySide6" FORCE)
|
set(PYSIDE_BASEDIR
|
||||||
|
${PYSIDE6_BASEDIR}
|
||||||
|
CACHE PATH "Top level install of PySide6" FORCE
|
||||||
|
)
|
||||||
execute_process(
|
execute_process(
|
||||||
COMMAND ${Python3_EXECUTABLE} -c "if True:
|
COMMAND
|
||||||
|
${Python3_EXECUTABLE} -c "if True:
|
||||||
import os
|
import os
|
||||||
import PySide6.QtCore as QtCore
|
import PySide6.QtCore as QtCore
|
||||||
print(os.path.basename(QtCore.__file__).split('.', 1)[1])
|
print(os.path.basename(QtCore.__file__).split('.', 1)[1])
|
||||||
@@ -53,7 +56,8 @@ if(PYSIDE6_BASEDIR)
|
|||||||
)
|
)
|
||||||
|
|
||||||
execute_process(
|
execute_process(
|
||||||
COMMAND ${Python3_EXECUTABLE} -c "if True:
|
COMMAND
|
||||||
|
${Python3_EXECUTABLE} -c "if True:
|
||||||
import os
|
import os
|
||||||
import PySide6.QtCore as QtCore
|
import PySide6.QtCore as QtCore
|
||||||
print(';'.join(map(str, QtCore.__version_info__)))
|
print(';'.join(map(str, QtCore.__version_info__)))
|
||||||
@@ -81,10 +85,11 @@ endif()
|
|||||||
if(PYSIDE6_FOUND)
|
if(PYSIDE6_FOUND)
|
||||||
#PySide
|
#PySide
|
||||||
#===============================================================================
|
#===============================================================================
|
||||||
find_path(PYSIDE_INCLUDE_DIR
|
find_path(
|
||||||
pyside.h
|
PYSIDE_INCLUDE_DIR pyside.h
|
||||||
PATHS ${PYSIDE6_BASEDIR}/include ${PYSIDE_CUSTOM_PREFIX}/include/PySide6
|
PATHS ${PYSIDE6_BASEDIR}/include ${PYSIDE_CUSTOM_PREFIX}/include/PySide6
|
||||||
NO_DEFAULT_PATH)
|
NO_DEFAULT_PATH
|
||||||
|
)
|
||||||
|
|
||||||
# Platform specific library names
|
# Platform specific library names
|
||||||
if(MSVC)
|
if(MSVC)
|
||||||
@@ -97,15 +102,17 @@ if(PYSIDE6_FOUND)
|
|||||||
set(PYSIDE_LIBRARY_BASENAMES "libpyside6.${PYSIDE6_SUFFIX}")
|
set(PYSIDE_LIBRARY_BASENAMES "libpyside6.${PYSIDE6_SUFFIX}")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
find_file(PYSIDE_LIBRARY
|
find_file(
|
||||||
${PYSIDE_LIBRARY_BASENAMES}
|
PYSIDE_LIBRARY ${PYSIDE_LIBRARY_BASENAMES}
|
||||||
PATHS ${PYSIDE6_BASEDIR} ${PYSIDE_CUSTOM_PREFIX}/lib
|
PATHS ${PYSIDE6_BASEDIR} ${PYSIDE_CUSTOM_PREFIX}/lib
|
||||||
NO_DEFAULT_PATH)
|
NO_DEFAULT_PATH
|
||||||
|
)
|
||||||
|
|
||||||
find_path(PYSIDE_TYPESYSTEMS
|
find_path(
|
||||||
typesystem_core.xml
|
PYSIDE_TYPESYSTEMS typesystem_core.xml
|
||||||
PATHS ${PYSIDE6_BASEDIR}/typesystems ${PYSIDE_CUSTOM_PREFIX}/share/PySide6/typesystems
|
PATHS ${PYSIDE6_BASEDIR}/typesystems ${PYSIDE_CUSTOM_PREFIX}/share/PySide6/typesystems
|
||||||
NO_DEFAULT_PATH)
|
NO_DEFAULT_PATH
|
||||||
|
)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(PYSIDE6_FOUND)
|
if(PYSIDE6_FOUND)
|
||||||
@@ -120,17 +127,20 @@ if(PYSIDE6_FOUND)
|
|||||||
set_property(TARGET PySide6::pyside6 PROPERTY IMPORTED_IMPLIB ${PYSIDE_LIBRARY})
|
set_property(TARGET PySide6::pyside6 PROPERTY IMPORTED_IMPLIB ${PYSIDE_LIBRARY})
|
||||||
endif()
|
endif()
|
||||||
set_property(TARGET PySide6::pyside6 PROPERTY IMPORTED_LOCATION ${PYSIDE_LIBRARY})
|
set_property(TARGET PySide6::pyside6 PROPERTY IMPORTED_LOCATION ${PYSIDE_LIBRARY})
|
||||||
set_property(TARGET PySide6::pyside6 APPEND PROPERTY
|
set_property(
|
||||||
INTERFACE_INCLUDE_DIRECTORIES
|
TARGET PySide6::pyside6
|
||||||
${PYSIDE_INCLUDE_DIR}
|
APPEND
|
||||||
${PYSIDE_INCLUDE_DIR}/QtCore/
|
PROPERTY INTERFACE_INCLUDE_DIRECTORIES
|
||||||
${PYSIDE_INCLUDE_DIR}/QtGui/
|
${PYSIDE_INCLUDE_DIR}
|
||||||
${PYSIDE_INCLUDE_DIR}/QtWidgets/
|
${PYSIDE_INCLUDE_DIR}/QtCore/
|
||||||
${Python3_INCLUDE_DIRS}
|
${PYSIDE_INCLUDE_DIR}/QtGui/
|
||||||
|
${PYSIDE_INCLUDE_DIR}/QtWidgets/
|
||||||
|
${Python3_INCLUDE_DIRS}
|
||||||
)
|
)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
find_package_handle_standard_args(PySide6
|
find_package_handle_standard_args(
|
||||||
|
PySide6
|
||||||
REQUIRED_VARS PYSIDE6_BASEDIR PYSIDE_INCLUDE_DIR PYSIDE_LIBRARY PYSIDE_TYPESYSTEMS
|
REQUIRED_VARS PYSIDE6_BASEDIR PYSIDE_INCLUDE_DIR PYSIDE_LIBRARY PYSIDE_TYPESYSTEMS
|
||||||
VERSION_VAR PYSIDE6_SO_VERSION
|
VERSION_VAR PYSIDE6_SO_VERSION
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -24,23 +24,15 @@ set(SHIBOKEN_FOUND FALSE)
|
|||||||
if(SHIBOKEN2_PRIV_FOUND)
|
if(SHIBOKEN2_PRIV_FOUND)
|
||||||
set(SHIBOKEN_FOUND TRUE)
|
set(SHIBOKEN_FOUND TRUE)
|
||||||
message(STATUS "Using shiboken found in the system!")
|
message(STATUS "Using shiboken found in the system!")
|
||||||
pkg_get_variable(SHIBOKEN_BINARY
|
pkg_get_variable(SHIBOKEN_BINARY shiboken2 generator_location)
|
||||||
shiboken2
|
pkg_get_variable(SHIBOKEN_BASEDIR shiboken2 libdir)
|
||||||
generator_location
|
pkg_get_variable(SHIBOKEN_INCLUDE_DIR shiboken2 includedir)
|
||||||
)
|
|
||||||
pkg_get_variable(SHIBOKEN_BASEDIR
|
|
||||||
shiboken2
|
|
||||||
libdir
|
|
||||||
)
|
|
||||||
pkg_get_variable(SHIBOKEN_INCLUDE_DIR
|
|
||||||
shiboken2
|
|
||||||
includedir
|
|
||||||
)
|
|
||||||
set(SHIBOKEN_VERSION ${SHIBOKEN2_PRIV_VERSION})
|
set(SHIBOKEN_VERSION ${SHIBOKEN2_PRIV_VERSION})
|
||||||
set(SHIBOKEN_LIBRARY ${SHIBOKEN2_PRIV_LINK_LIBRARIES})
|
set(SHIBOKEN_LIBRARY ${SHIBOKEN2_PRIV_LINK_LIBRARIES})
|
||||||
else()
|
else()
|
||||||
execute_process(
|
execute_process(
|
||||||
COMMAND ${Python3_EXECUTABLE} -c "if True:
|
COMMAND
|
||||||
|
${Python3_EXECUTABLE} -c "if True:
|
||||||
import os
|
import os
|
||||||
try:
|
try:
|
||||||
import shiboken2_generator
|
import shiboken2_generator
|
||||||
@@ -52,14 +44,13 @@ else()
|
|||||||
OUTPUT_STRIP_TRAILING_WHITESPACE
|
OUTPUT_STRIP_TRAILING_WHITESPACE
|
||||||
)
|
)
|
||||||
if(NOT SHIBOKEN_GENERATOR_BASEDIR)
|
if(NOT SHIBOKEN_GENERATOR_BASEDIR)
|
||||||
message(
|
message(FATAL_ERROR "The shiboken2_generator module could not be imported. Make sure you have it installed "
|
||||||
FATAL_ERROR
|
"by checking the output of \"pip${Python3_VERSION_MAJOR}.${Python3_VERSION_MINOR} list\""
|
||||||
"The shiboken2_generator module could not be imported. Make sure you have it installed "
|
|
||||||
"by checking the output of \"pip${Python3_VERSION_MAJOR}.${Python3_VERSION_MINOR} list\""
|
|
||||||
)
|
)
|
||||||
endif()
|
endif()
|
||||||
execute_process(
|
execute_process(
|
||||||
COMMAND ${Python3_EXECUTABLE} -c "if True:
|
COMMAND
|
||||||
|
${Python3_EXECUTABLE} -c "if True:
|
||||||
import os
|
import os
|
||||||
try:
|
try:
|
||||||
import shiboken2
|
import shiboken2
|
||||||
@@ -71,14 +62,13 @@ else()
|
|||||||
OUTPUT_STRIP_TRAILING_WHITESPACE
|
OUTPUT_STRIP_TRAILING_WHITESPACE
|
||||||
)
|
)
|
||||||
if(NOT SHIBOKEN_BASEDIR)
|
if(NOT SHIBOKEN_BASEDIR)
|
||||||
message(
|
message(FATAL_ERROR "The shiboken2 module could not be imported. Make sure you have it installed "
|
||||||
FATAL_ERROR
|
"by checking the output of \"pip${Python3_VERSION_MAJOR}.${Python3_VERSION_MINOR} list\""
|
||||||
"The shiboken2 module could not be imported. Make sure you have it installed "
|
|
||||||
"by checking the output of \"pip${Python3_VERSION_MAJOR}.${Python3_VERSION_MINOR} list\""
|
|
||||||
)
|
)
|
||||||
endif()
|
endif()
|
||||||
execute_process(
|
execute_process(
|
||||||
COMMAND ${Python3_EXECUTABLE} -c "if True:
|
COMMAND
|
||||||
|
${Python3_EXECUTABLE} -c "if True:
|
||||||
import os
|
import os
|
||||||
import shiboken2
|
import shiboken2
|
||||||
print(';'.join(filter(None, map(str, shiboken2.__version_info__))))
|
print(';'.join(filter(None, map(str, shiboken2.__version_info__))))
|
||||||
@@ -91,15 +81,21 @@ else()
|
|||||||
list(GET SHIBOKEN_VERSION 2 SHIBOKEN_MINOR_VERSION)
|
list(GET SHIBOKEN_VERSION 2 SHIBOKEN_MINOR_VERSION)
|
||||||
string(REPLACE ";" "." SHIBOKEN_VERSION "${SHIBOKEN_VERSION}")
|
string(REPLACE ";" "." SHIBOKEN_VERSION "${SHIBOKEN_VERSION}")
|
||||||
|
|
||||||
|
if(SHIBOKEN_CUSTOM_PREFIX STREQUAL "")
|
||||||
|
set(SHIBOKEN_CUSTOM_PREFIX ${SHIBOKEN_GENERATOR_BASEDIR})
|
||||||
|
endif()
|
||||||
|
|
||||||
message(STATUS "ShibokenGenerator base dir: ${SHIBOKEN_GENERATOR_BASEDIR}")
|
message(STATUS "ShibokenGenerator base dir: ${SHIBOKEN_GENERATOR_BASEDIR}")
|
||||||
message(STATUS "Shiboken base dir: ${SHIBOKEN_BASEDIR}")
|
message(STATUS "Shiboken base dir: ${SHIBOKEN_BASEDIR}")
|
||||||
message(STATUS "Shiboken custom path: ${SHIBOKEN_CUSTOM_PREFIX}")
|
message(STATUS "Shiboken custom path: [${SHIBOKEN_CUSTOM_PREFIX}]")
|
||||||
|
|
||||||
if(SHIBOKEN_BASEDIR)
|
if(SHIBOKEN_BASEDIR)
|
||||||
find_path(SHIBOKEN_INCLUDE_DIR
|
find_path(
|
||||||
shiboken.h
|
SHIBOKEN_INCLUDE_DIR shiboken.h
|
||||||
PATHS ${SHIBOKEN_CUSTOM_PREFIX} ${SHIBOKEN_GENERATOR_BASEDIR}/include
|
PATHS ${SHIBOKEN_CUSTOM_PREFIX} ${SHIBOKEN_GENERATOR_BASEDIR}/include
|
||||||
NO_DEFAULT_PATH
|
NO_DEFAULT_PATH
|
||||||
|
NO_CACHE
|
||||||
|
NO_SYSTEM_ENVIRONMENT_PATH
|
||||||
)
|
)
|
||||||
if(MSVC)
|
if(MSVC)
|
||||||
set(SHIBOKEN_LIBRARY_BASENAMES "shiboken2.abi3.lib")
|
set(SHIBOKEN_LIBRARY_BASENAMES "shiboken2.abi3.lib")
|
||||||
@@ -109,15 +105,13 @@ else()
|
|||||||
set(SHIBOKEN_LIBRARY_BASENAMES "libshiboken2.${PYSIDE2_SUFFIX}")
|
set(SHIBOKEN_LIBRARY_BASENAMES "libshiboken2.${PYSIDE2_SUFFIX}")
|
||||||
elseif(APPLE)
|
elseif(APPLE)
|
||||||
set(SHIBOKEN_LIBRARY_BASENAMES
|
set(SHIBOKEN_LIBRARY_BASENAMES
|
||||||
libshiboken2.abi3.dylib
|
libshiboken2.abi3.dylib libshiboken2.abi3.${SHIBOKEN_MACRO_VERSION}.dylib
|
||||||
libshiboken2.abi3.${SHIBOKEN_MACRO_VERSION}.dylib
|
|
||||||
libshiboken2.abi3.${SHIBOKEN_MACRO_VERSION}.${SHIBOKEN_MICRO_VERSION}.dylib
|
libshiboken2.abi3.${SHIBOKEN_MACRO_VERSION}.${SHIBOKEN_MICRO_VERSION}.dylib
|
||||||
libshiboken2.abi3.${SHIBOKEN_VERSION}.dylib
|
libshiboken2.abi3.${SHIBOKEN_VERSION}.dylib
|
||||||
)
|
)
|
||||||
else()
|
else()
|
||||||
set(SHIBOKEN_LIBRARY_BASENAMES
|
set(SHIBOKEN_LIBRARY_BASENAMES
|
||||||
libshiboken2.abi3.so
|
libshiboken2.abi3.so libshiboken2.abi3.so.${SHIBOKEN_MACRO_VERSION}
|
||||||
libshiboken2.abi3.so.${SHIBOKEN_MACRO_VERSION}
|
|
||||||
libshiboken2.abi3.so.${SHIBOKEN_MACRO_VERSION}.${SHIBOKEN_MICRO_VERSION}
|
libshiboken2.abi3.so.${SHIBOKEN_MACRO_VERSION}.${SHIBOKEN_MICRO_VERSION}
|
||||||
libshiboken2.abi3.so.${SHIBOKEN_VERSION}
|
libshiboken2.abi3.so.${SHIBOKEN_VERSION}
|
||||||
)
|
)
|
||||||
@@ -129,29 +123,35 @@ else()
|
|||||||
set(SHIBOKEN_SEARCH_PATHS ${SHIBOKEN_CUSTOM_PREFIX})
|
set(SHIBOKEN_SEARCH_PATHS ${SHIBOKEN_CUSTOM_PREFIX})
|
||||||
list(APPEND SHIBOKEN_SEARCH_PATHS ${SHIBOKEN_BASEDIR})
|
list(APPEND SHIBOKEN_SEARCH_PATHS ${SHIBOKEN_BASEDIR})
|
||||||
list(APPEND SHIBOKEN_SEARCH_PATHS ${SHIBOKEN_GENERATOR_BASEDIR})
|
list(APPEND SHIBOKEN_SEARCH_PATHS ${SHIBOKEN_GENERATOR_BASEDIR})
|
||||||
find_file(SHIBOKEN_LIBRARY
|
find_file(
|
||||||
${SHIBOKEN_LIBRARY_BASENAMES}
|
SHIBOKEN_LIBRARY ${SHIBOKEN_LIBRARY_BASENAMES}
|
||||||
PATHS ${SHIBOKEN_SEARCH_PATHS}
|
PATHS ${SHIBOKEN_SEARCH_PATHS}
|
||||||
NO_DEFAULT_PATH)
|
NO_DEFAULT_PATH
|
||||||
|
)
|
||||||
|
|
||||||
find_program(SHIBOKEN_BINARY
|
find_program(
|
||||||
shiboken2
|
SHIBOKEN_BINARY shiboken2
|
||||||
PATHS ${SHIBOKEN_SEARCH_PATHS}
|
PATHS ${SHIBOKEN_SEARCH_PATHS}
|
||||||
NO_DEFAULT_PATH
|
NO_DEFAULT_PATH
|
||||||
)
|
)
|
||||||
endif()
|
endif()
|
||||||
if(SHIBOKEN_INCLUDE_DIR AND SHIBOKEN_LIBRARY AND SHIBOKEN_BINARY)
|
if(SHIBOKEN_INCLUDE_DIR
|
||||||
|
AND SHIBOKEN_LIBRARY
|
||||||
|
AND SHIBOKEN_BINARY
|
||||||
|
)
|
||||||
set(SHIBOKEN_FOUND TRUE)
|
set(SHIBOKEN_FOUND TRUE)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(SHIBOKEN_FOUND)
|
if(SHIBOKEN_FOUND)
|
||||||
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(MSVC)
|
if(MSVC)
|
||||||
# On Windows we must link to python3.dll that is a small library that links against python3x.dll
|
# On Windows we must link to python3.dll that is a small library that links against python3x.dll
|
||||||
# that allow us to choose any python3x.dll at runtime
|
# that allow us to choose any python3x.dll at runtime
|
||||||
execute_process(
|
execute_process(
|
||||||
COMMAND ${Python3_EXECUTABLE} -c "if True:
|
COMMAND
|
||||||
|
${Python3_EXECUTABLE} -c "if True:
|
||||||
for lib in '${Python3_LIBRARIES}'.split(';'):
|
for lib in '${Python3_LIBRARIES}'.split(';'):
|
||||||
if '/' in lib:
|
if '/' in lib:
|
||||||
prefix, py = lib.rsplit('/', 1)
|
prefix, py = lib.rsplit('/', 1)
|
||||||
@@ -177,15 +177,18 @@ if(SHIBOKEN_FOUND)
|
|||||||
# Create shiboke2 target
|
# Create shiboke2 target
|
||||||
add_library(Shiboken2::libshiboken SHARED IMPORTED GLOBAL)
|
add_library(Shiboken2::libshiboken SHARED IMPORTED GLOBAL)
|
||||||
if(MSVC)
|
if(MSVC)
|
||||||
set_property(TARGET Shiboken2::libshiboken PROPERTY
|
set_property(TARGET Shiboken2::libshiboken PROPERTY IMPORTED_IMPLIB ${SHIBOKEN_LIBRARY})
|
||||||
IMPORTED_IMPLIB ${SHIBOKEN_LIBRARY})
|
|
||||||
endif()
|
endif()
|
||||||
set_property(TARGET Shiboken2::libshiboken PROPERTY IMPORTED_LOCATION ${SHIBOKEN_LIBRARY})
|
set_property(TARGET Shiboken2::libshiboken PROPERTY IMPORTED_LOCATION ${SHIBOKEN_LIBRARY})
|
||||||
set_property(TARGET Shiboken2::libshiboken APPEND PROPERTY
|
set_property(
|
||||||
INTERFACE_INCLUDE_DIRECTORIES ${SHIBOKEN_INCLUDE_DIR} ${Python3_INCLUDE_DIRS}
|
TARGET Shiboken2::libshiboken
|
||||||
|
APPEND
|
||||||
|
PROPERTY INTERFACE_INCLUDE_DIRECTORIES ${SHIBOKEN_INCLUDE_DIR} ${Python3_INCLUDE_DIRS}
|
||||||
)
|
)
|
||||||
set_property(TARGET Shiboken2::libshiboken APPEND PROPERTY
|
set_property(
|
||||||
INTERFACE_LINK_LIBRARIES ${PYTHON_LIMITED_LIBRARIES}
|
TARGET Shiboken2::libshiboken
|
||||||
|
APPEND
|
||||||
|
PROPERTY INTERFACE_LINK_LIBRARIES ${PYTHON_LIMITED_LIBRARIES}
|
||||||
)
|
)
|
||||||
|
|
||||||
# Generator target
|
# Generator target
|
||||||
@@ -193,8 +196,8 @@ if(SHIBOKEN_FOUND)
|
|||||||
set_property(TARGET Shiboken2::shiboken PROPERTY IMPORTED_LOCATION ${SHIBOKEN_BINARY})
|
set_property(TARGET Shiboken2::shiboken PROPERTY IMPORTED_LOCATION ${SHIBOKEN_BINARY})
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
find_package_handle_standard_args(Shiboken2
|
find_package_handle_standard_args(
|
||||||
|
Shiboken2
|
||||||
REQUIRED_VARS SHIBOKEN_BASEDIR SHIBOKEN_INCLUDE_DIR SHIBOKEN_LIBRARY SHIBOKEN_BINARY
|
REQUIRED_VARS SHIBOKEN_BASEDIR SHIBOKEN_INCLUDE_DIR SHIBOKEN_LIBRARY SHIBOKEN_BINARY
|
||||||
VERSION_VAR SHIBOKEN_VERSION
|
VERSION_VAR SHIBOKEN_VERSION
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
@@ -17,7 +17,8 @@
|
|||||||
set(SHIBOKEN_FOUND FALSE)
|
set(SHIBOKEN_FOUND FALSE)
|
||||||
|
|
||||||
execute_process(
|
execute_process(
|
||||||
COMMAND ${Python3_EXECUTABLE} -c "if True:
|
COMMAND
|
||||||
|
${Python3_EXECUTABLE} -c "if True:
|
||||||
import os
|
import os
|
||||||
try:
|
try:
|
||||||
import shiboken6_generator
|
import shiboken6_generator
|
||||||
@@ -29,14 +30,13 @@ execute_process(
|
|||||||
OUTPUT_STRIP_TRAILING_WHITESPACE
|
OUTPUT_STRIP_TRAILING_WHITESPACE
|
||||||
)
|
)
|
||||||
if(NOT SHIBOKEN_GENERATOR_BASEDIR)
|
if(NOT SHIBOKEN_GENERATOR_BASEDIR)
|
||||||
message(
|
message(FATAL_ERROR "The shiboken6_generator module could not be imported. Make sure you have it installed "
|
||||||
FATAL_ERROR
|
"by checking the output of \"pip${Python3_VERSION_MAJOR}.${Python3_VERSION_MINOR} list\""
|
||||||
"The shiboken6_generator module could not be imported. Make sure you have it installed "
|
|
||||||
"by checking the output of \"pip${Python3_VERSION_MAJOR}.${Python3_VERSION_MINOR} list\""
|
|
||||||
)
|
)
|
||||||
endif()
|
endif()
|
||||||
execute_process(
|
execute_process(
|
||||||
COMMAND ${Python3_EXECUTABLE} -c "if True:
|
COMMAND
|
||||||
|
${Python3_EXECUTABLE} -c "if True:
|
||||||
import os
|
import os
|
||||||
try:
|
try:
|
||||||
import shiboken6
|
import shiboken6
|
||||||
@@ -48,14 +48,13 @@ execute_process(
|
|||||||
OUTPUT_STRIP_TRAILING_WHITESPACE
|
OUTPUT_STRIP_TRAILING_WHITESPACE
|
||||||
)
|
)
|
||||||
if(NOT SHIBOKEN_BASEDIR)
|
if(NOT SHIBOKEN_BASEDIR)
|
||||||
message(
|
message(FATAL_ERROR "The shiboken6 module could not be imported. Make sure you have it installed "
|
||||||
FATAL_ERROR
|
"by checking the output of \"pip${Python3_VERSION_MAJOR}.${Python3_VERSION_MINOR} list\""
|
||||||
"The shiboken6 module could not be imported. Make sure you have it installed "
|
|
||||||
"by checking the output of \"pip${Python3_VERSION_MAJOR}.${Python3_VERSION_MINOR} list\""
|
|
||||||
)
|
)
|
||||||
endif()
|
endif()
|
||||||
execute_process(
|
execute_process(
|
||||||
COMMAND ${Python3_EXECUTABLE} -c "if True:
|
COMMAND
|
||||||
|
${Python3_EXECUTABLE} -c "if True:
|
||||||
import os
|
import os
|
||||||
import shiboken6
|
import shiboken6
|
||||||
print(';'.join(filter(None, map(str, shiboken6.__version_info__))))
|
print(';'.join(filter(None, map(str, shiboken6.__version_info__))))
|
||||||
@@ -73,8 +72,8 @@ message(STATUS "Shiboken base dir: ${SHIBOKEN_BASEDIR}")
|
|||||||
message(STATUS "Shiboken custom path: ${SHIBOKEN_CUSTOM_PREFIX}")
|
message(STATUS "Shiboken custom path: ${SHIBOKEN_CUSTOM_PREFIX}")
|
||||||
|
|
||||||
if(SHIBOKEN_BASEDIR)
|
if(SHIBOKEN_BASEDIR)
|
||||||
find_path(SHIBOKEN_INCLUDE_DIR
|
find_path(
|
||||||
shiboken.h
|
SHIBOKEN_INCLUDE_DIR shiboken.h
|
||||||
PATHS ${SHIBOKEN_CUSTOM_PREFIX} ${SHIBOKEN_GENERATOR_BASEDIR}/include
|
PATHS ${SHIBOKEN_CUSTOM_PREFIX} ${SHIBOKEN_GENERATOR_BASEDIR}/include
|
||||||
NO_DEFAULT_PATH
|
NO_DEFAULT_PATH
|
||||||
)
|
)
|
||||||
@@ -86,15 +85,13 @@ if(SHIBOKEN_BASEDIR)
|
|||||||
set(SHIBOKEN_LIBRARY_BASENAMES "libshiboken6.${PYSIDE2_SUFFIX}")
|
set(SHIBOKEN_LIBRARY_BASENAMES "libshiboken6.${PYSIDE2_SUFFIX}")
|
||||||
elseif(APPLE)
|
elseif(APPLE)
|
||||||
set(SHIBOKEN_LIBRARY_BASENAMES
|
set(SHIBOKEN_LIBRARY_BASENAMES
|
||||||
libshiboken6.abi3.dylib
|
libshiboken6.abi3.dylib libshiboken6.abi3.${SHIBOKEN_MACRO_VERSION}.dylib
|
||||||
libshiboken6.abi3.${SHIBOKEN_MACRO_VERSION}.dylib
|
|
||||||
libshiboken6.abi3.${SHIBOKEN_MACRO_VERSION}.${SHIBOKEN_MICRO_VERSION}.dylib
|
libshiboken6.abi3.${SHIBOKEN_MACRO_VERSION}.${SHIBOKEN_MICRO_VERSION}.dylib
|
||||||
libshiboken6.abi3.${SHIBOKEN_VERSION}.dylib
|
libshiboken6.abi3.${SHIBOKEN_VERSION}.dylib
|
||||||
)
|
)
|
||||||
else()
|
else()
|
||||||
set(SHIBOKEN_LIBRARY_BASENAMES
|
set(SHIBOKEN_LIBRARY_BASENAMES
|
||||||
libshiboken6.abi3.so
|
libshiboken6.abi3.so libshiboken6.abi3.so.${SHIBOKEN_MACRO_VERSION}
|
||||||
libshiboken6.abi3.so.${SHIBOKEN_MACRO_VERSION}
|
|
||||||
libshiboken6.abi3.so.${SHIBOKEN_MACRO_VERSION}.${SHIBOKEN_MICRO_VERSION}
|
libshiboken6.abi3.so.${SHIBOKEN_MACRO_VERSION}.${SHIBOKEN_MICRO_VERSION}
|
||||||
libshiboken6.abi3.so.${SHIBOKEN_VERSION}
|
libshiboken6.abi3.so.${SHIBOKEN_VERSION}
|
||||||
)
|
)
|
||||||
@@ -106,29 +103,35 @@ if(SHIBOKEN_BASEDIR)
|
|||||||
set(SHIBOKEN_SEARCH_PATHS ${SHIBOKEN_CUSTOM_PREFIX})
|
set(SHIBOKEN_SEARCH_PATHS ${SHIBOKEN_CUSTOM_PREFIX})
|
||||||
list(APPEND SHIBOKEN_SEARCH_PATHS ${SHIBOKEN_BASEDIR})
|
list(APPEND SHIBOKEN_SEARCH_PATHS ${SHIBOKEN_BASEDIR})
|
||||||
list(APPEND SHIBOKEN_SEARCH_PATHS ${SHIBOKEN_GENERATOR_BASEDIR})
|
list(APPEND SHIBOKEN_SEARCH_PATHS ${SHIBOKEN_GENERATOR_BASEDIR})
|
||||||
find_file(SHIBOKEN_LIBRARY
|
find_file(
|
||||||
${SHIBOKEN_LIBRARY_BASENAMES}
|
SHIBOKEN_LIBRARY ${SHIBOKEN_LIBRARY_BASENAMES}
|
||||||
PATHS ${SHIBOKEN_SEARCH_PATHS}
|
PATHS ${SHIBOKEN_SEARCH_PATHS}
|
||||||
NO_DEFAULT_PATH)
|
NO_DEFAULT_PATH
|
||||||
|
)
|
||||||
|
|
||||||
find_program(SHIBOKEN_BINARY
|
find_program(
|
||||||
shiboken6
|
SHIBOKEN_BINARY shiboken6
|
||||||
PATHS ${SHIBOKEN_SEARCH_PATHS}
|
PATHS ${SHIBOKEN_SEARCH_PATHS}
|
||||||
NO_DEFAULT_PATH
|
NO_DEFAULT_PATH
|
||||||
)
|
)
|
||||||
endif()
|
endif()
|
||||||
if(SHIBOKEN_INCLUDE_DIR AND SHIBOKEN_LIBRARY AND SHIBOKEN_BINARY)
|
if(SHIBOKEN_INCLUDE_DIR
|
||||||
|
AND SHIBOKEN_LIBRARY
|
||||||
|
AND SHIBOKEN_BINARY
|
||||||
|
)
|
||||||
set(SHIBOKEN_FOUND TRUE)
|
set(SHIBOKEN_FOUND TRUE)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(SHIBOKEN_FOUND)
|
if(SHIBOKEN_FOUND)
|
||||||
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(MSVC)
|
if(MSVC)
|
||||||
# On Windows we must link to python3.dll that is a small library that links against python3x.dll
|
# On Windows we must link to python3.dll that is a small library that links against python3x.dll
|
||||||
# that allow us to choose any python3x.dll at runtime
|
# that allow us to choose any python3x.dll at runtime
|
||||||
execute_process(
|
execute_process(
|
||||||
COMMAND ${Python3_EXECUTABLE} -c "if True:
|
COMMAND
|
||||||
|
${Python3_EXECUTABLE} -c "if True:
|
||||||
for lib in '${Python3_LIBRARIES}'.split(';'):
|
for lib in '${Python3_LIBRARIES}'.split(';'):
|
||||||
if '/' in lib:
|
if '/' in lib:
|
||||||
prefix, py = lib.rsplit('/', 1)
|
prefix, py = lib.rsplit('/', 1)
|
||||||
@@ -154,15 +157,18 @@ if(SHIBOKEN_FOUND)
|
|||||||
# Create shiboken2 target
|
# Create shiboken2 target
|
||||||
add_library(Shiboken6::libshiboken SHARED IMPORTED GLOBAL)
|
add_library(Shiboken6::libshiboken SHARED IMPORTED GLOBAL)
|
||||||
if(MSVC)
|
if(MSVC)
|
||||||
set_property(TARGET Shiboken6::libshiboken PROPERTY
|
set_property(TARGET Shiboken6::libshiboken PROPERTY IMPORTED_IMPLIB ${SHIBOKEN_LIBRARY})
|
||||||
IMPORTED_IMPLIB ${SHIBOKEN_LIBRARY})
|
|
||||||
endif()
|
endif()
|
||||||
set_property(TARGET Shiboken6::libshiboken PROPERTY IMPORTED_LOCATION ${SHIBOKEN_LIBRARY})
|
set_property(TARGET Shiboken6::libshiboken PROPERTY IMPORTED_LOCATION ${SHIBOKEN_LIBRARY})
|
||||||
set_property(TARGET Shiboken6::libshiboken APPEND PROPERTY
|
set_property(
|
||||||
INTERFACE_INCLUDE_DIRECTORIES ${SHIBOKEN_INCLUDE_DIR} ${Python3_INCLUDE_DIRS}
|
TARGET Shiboken6::libshiboken
|
||||||
|
APPEND
|
||||||
|
PROPERTY INTERFACE_INCLUDE_DIRECTORIES ${SHIBOKEN_INCLUDE_DIR} ${Python3_INCLUDE_DIRS}
|
||||||
)
|
)
|
||||||
set_property(TARGET Shiboken6::libshiboken APPEND PROPERTY
|
set_property(
|
||||||
INTERFACE_LINK_LIBRARIES ${PYTHON_LIMITED_LIBRARIES}
|
TARGET Shiboken6::libshiboken
|
||||||
|
APPEND
|
||||||
|
PROPERTY INTERFACE_LINK_LIBRARIES ${PYTHON_LIMITED_LIBRARIES}
|
||||||
)
|
)
|
||||||
|
|
||||||
# Generator target
|
# Generator target
|
||||||
@@ -175,4 +181,3 @@ find_package_handle_standard_args(
|
|||||||
REQUIRED_VARS SHIBOKEN_BASEDIR SHIBOKEN_INCLUDE_DIR SHIBOKEN_LIBRARY SHIBOKEN_BINARY
|
REQUIRED_VARS SHIBOKEN_BASEDIR SHIBOKEN_INCLUDE_DIR SHIBOKEN_LIBRARY SHIBOKEN_BINARY
|
||||||
VERSION_VAR SHIBOKEN_VERSION
|
VERSION_VAR SHIBOKEN_VERSION
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
@@ -7,7 +7,8 @@
|
|||||||
|
|
||||||
if(NOT ${PROJECT_NAME}_PYTHON_BINDINGS_INSTALL_PREFIX)
|
if(NOT ${PROJECT_NAME}_PYTHON_BINDINGS_INSTALL_PREFIX)
|
||||||
# cmake-lint: disable=C0103
|
# cmake-lint: disable=C0103
|
||||||
set(${PROJECT_NAME}_PYTHON_BINDINGS_INSTALL_PREFIX ${CMAKE_INSTALL_PREFIX}
|
set(${PROJECT_NAME}_PYTHON_BINDINGS_INSTALL_PREFIX
|
||||||
|
${CMAKE_INSTALL_PREFIX}
|
||||||
CACHE FILEPATH "Custom path to install python bindings."
|
CACHE FILEPATH "Custom path to install python bindings."
|
||||||
)
|
)
|
||||||
endif()
|
endif()
|
||||||
@@ -91,7 +92,8 @@ endmacro()
|
|||||||
# dependsArg - This var will be passed to add_custom_command(DEPENDS) so a new generation will be
|
# dependsArg - This var will be passed to add_custom_command(DEPENDS) so a new generation will be
|
||||||
# trigger if one of these files changes
|
# trigger if one of these files changes
|
||||||
# moduleOutputDir - Where the library file should be stored
|
# moduleOutputDir - Where the library file should be stored
|
||||||
macro(create_python_bindings
|
macro(
|
||||||
|
create_python_bindings
|
||||||
libraryName
|
libraryName
|
||||||
typesystemPaths
|
typesystemPaths
|
||||||
includePaths
|
includePaths
|
||||||
@@ -101,12 +103,17 @@ macro(create_python_bindings
|
|||||||
globalInclude
|
globalInclude
|
||||||
typesystemXML
|
typesystemXML
|
||||||
dependsArg
|
dependsArg
|
||||||
moduleOutputDir)
|
moduleOutputDir
|
||||||
|
)
|
||||||
|
|
||||||
# Transform the path separators into something shiboken understands.
|
# Transform the path separators into something shiboken understands.
|
||||||
make_path(shiboken_include_dirs ${includePaths})
|
make_path(shiboken_include_dirs ${includePaths})
|
||||||
make_path(shiboken_typesystem_dirs ${typesystemPaths})
|
make_path(shiboken_typesystem_dirs ${typesystemPaths})
|
||||||
get_property(raw_python_dir_include_dirs DIRECTORY PROPERTY INCLUDE_DIRECTORIES)
|
get_property(
|
||||||
|
raw_python_dir_include_dirs
|
||||||
|
DIRECTORY
|
||||||
|
PROPERTY INCLUDE_DIRECTORIES
|
||||||
|
)
|
||||||
make_path(python_dir_include_dirs ${raw_python_dir_include_dirs})
|
make_path(python_dir_include_dirs ${raw_python_dir_include_dirs})
|
||||||
set(shiboken_include_dirs "${shiboken_include_dirs}${PATH_SEP}${python_dir_include_dirs}")
|
set(shiboken_include_dirs "${shiboken_include_dirs}${PATH_SEP}${python_dir_include_dirs}")
|
||||||
|
|
||||||
@@ -119,13 +126,10 @@ macro(create_python_bindings
|
|||||||
set_property(SOURCE ${outputSource} PROPERTY SKIP_AUTOGEN ON)
|
set_property(SOURCE ${outputSource} PROPERTY SKIP_AUTOGEN ON)
|
||||||
add_custom_command(
|
add_custom_command(
|
||||||
OUTPUT ${outputSource}
|
OUTPUT ${outputSource}
|
||||||
COMMAND $<TARGET_PROPERTY:Shiboken2::shiboken,LOCATION> ${GENERATOR_EXTRA_FLAGS}
|
COMMAND
|
||||||
${globalInclude}
|
$<TARGET_PROPERTY:Shiboken2::shiboken,LOCATION> ${GENERATOR_EXTRA_FLAGS} ${globalInclude}
|
||||||
--include-paths=${shiboken_include_dirs}
|
--include-paths=${shiboken_include_dirs} --typesystem-paths=${shiboken_typesystem_dirs}
|
||||||
--typesystem-paths=${shiboken_typesystem_dirs}
|
${shiboken_framework_include_dirs_option} --output-directory=${CMAKE_CURRENT_BINARY_DIR} ${typesystemXML}
|
||||||
${shiboken_framework_include_dirs_option}
|
|
||||||
--output-directory=${CMAKE_CURRENT_BINARY_DIR}
|
|
||||||
${typesystemXML}
|
|
||||||
DEPENDS ${typesystemXML} ${dependsArg}
|
DEPENDS ${typesystemXML} ${dependsArg}
|
||||||
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
|
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
|
||||||
COMMENT "Running generator for ${libraryName} binding..."
|
COMMENT "Running generator for ${libraryName} binding..."
|
||||||
@@ -136,10 +140,10 @@ macro(create_python_bindings
|
|||||||
add_library(${TARGET_NAME} MODULE ${outputSource})
|
add_library(${TARGET_NAME} MODULE ${outputSource})
|
||||||
|
|
||||||
set_target_properties(
|
set_target_properties(
|
||||||
${TARGET_NAME} PROPERTIES
|
${TARGET_NAME}
|
||||||
PREFIX ""
|
PROPERTIES PREFIX ""
|
||||||
OUTPUT_NAME ${MODULE_NAME}
|
OUTPUT_NAME ${MODULE_NAME}
|
||||||
LIBRARY_OUTPUT_DIRECTORY ${moduleOutputDir}
|
LIBRARY_OUTPUT_DIRECTORY ${moduleOutputDir}
|
||||||
)
|
)
|
||||||
if(APPLE)
|
if(APPLE)
|
||||||
set_target_properties(${TARGET_NAME} PROPERTIES INSTALL_RPATH "@loader_path")
|
set_target_properties(${TARGET_NAME} PROPERTIES INSTALL_RPATH "@loader_path")
|
||||||
@@ -153,18 +157,14 @@ macro(create_python_bindings
|
|||||||
|
|
||||||
target_include_directories(${TARGET_NAME} PUBLIC ${targetIncludeDirs})
|
target_include_directories(${TARGET_NAME} PUBLIC ${targetIncludeDirs})
|
||||||
|
|
||||||
target_link_libraries(
|
target_link_libraries(${TARGET_NAME} ${targetLinkLibraries} PySide2::pyside2 Shiboken2::libshiboken)
|
||||||
${TARGET_NAME}
|
|
||||||
${targetLinkLibraries}
|
|
||||||
PySide2::pyside2
|
|
||||||
Shiboken2::libshiboken
|
|
||||||
)
|
|
||||||
target_compile_definitions(${TARGET_NAME} PRIVATE Py_LIMITED_API=0x03050000)
|
target_compile_definitions(${TARGET_NAME} PRIVATE Py_LIMITED_API=0x03050000)
|
||||||
if(APPLE)
|
if(APPLE)
|
||||||
set_property(TARGET ${TARGET_NAME} APPEND PROPERTY LINK_FLAGS "-undefined dynamic_lookup")
|
set_property(
|
||||||
|
TARGET ${TARGET_NAME}
|
||||||
|
APPEND
|
||||||
|
PROPERTY LINK_FLAGS "-undefined dynamic_lookup"
|
||||||
|
)
|
||||||
endif()
|
endif()
|
||||||
install(
|
install(TARGETS ${TARGET_NAME} LIBRARY DESTINATION ${${PROJECT_NAME}_PYTHON_BINDINGS_INSTALL_PREFIX})
|
||||||
TARGETS ${TARGET_NAME}
|
|
||||||
LIBRARY DESTINATION ${${PROJECT_NAME}_PYTHON_BINDINGS_INSTALL_PREFIX}
|
|
||||||
)
|
|
||||||
endmacro()
|
endmacro()
|
||||||
|
|||||||
@@ -7,7 +7,8 @@
|
|||||||
|
|
||||||
if(NOT ${PROJECT_NAME}_PYTHON_BINDINGS_INSTALL_PREFIX)
|
if(NOT ${PROJECT_NAME}_PYTHON_BINDINGS_INSTALL_PREFIX)
|
||||||
# cmake-lint: disable=C0103
|
# cmake-lint: disable=C0103
|
||||||
set(${PROJECT_NAME}_PYTHON_BINDINGS_INSTALL_PREFIX ${CMAKE_INSTALL_PREFIX}
|
set(${PROJECT_NAME}_PYTHON_BINDINGS_INSTALL_PREFIX
|
||||||
|
${CMAKE_INSTALL_PREFIX}
|
||||||
CACHE FILEPATH "Custom path to install python bindings."
|
CACHE FILEPATH "Custom path to install python bindings."
|
||||||
)
|
)
|
||||||
endif()
|
endif()
|
||||||
@@ -91,7 +92,8 @@ endmacro()
|
|||||||
# dependsArg - This var will be passed to add_custom_command(DEPENDS) so a new generation will be
|
# dependsArg - This var will be passed to add_custom_command(DEPENDS) so a new generation will be
|
||||||
# trigger if one of these files changes
|
# trigger if one of these files changes
|
||||||
# moduleOutputDir - Where the library file should be stored
|
# moduleOutputDir - Where the library file should be stored
|
||||||
macro(create_python_bindings
|
macro(
|
||||||
|
create_python_bindings
|
||||||
libraryName
|
libraryName
|
||||||
typesystemPaths
|
typesystemPaths
|
||||||
includePaths
|
includePaths
|
||||||
@@ -101,12 +103,17 @@ macro(create_python_bindings
|
|||||||
globalInclude
|
globalInclude
|
||||||
typesystemXML
|
typesystemXML
|
||||||
dependsArg
|
dependsArg
|
||||||
moduleOutputDir)
|
moduleOutputDir
|
||||||
|
)
|
||||||
|
|
||||||
# Transform the path separators into something shiboken understands.
|
# Transform the path separators into something shiboken understands.
|
||||||
make_path(shiboken_include_dirs ${includePaths})
|
make_path(shiboken_include_dirs ${includePaths})
|
||||||
make_path(shiboken_typesystem_dirs ${typesystemPaths})
|
make_path(shiboken_typesystem_dirs ${typesystemPaths})
|
||||||
get_property(raw_python_dir_include_dirs DIRECTORY PROPERTY INCLUDE_DIRECTORIES)
|
get_property(
|
||||||
|
raw_python_dir_include_dirs
|
||||||
|
DIRECTORY
|
||||||
|
PROPERTY INCLUDE_DIRECTORIES
|
||||||
|
)
|
||||||
make_path(python_dir_include_dirs ${raw_python_dir_include_dirs})
|
make_path(python_dir_include_dirs ${raw_python_dir_include_dirs})
|
||||||
set(shiboken_include_dirs "${shiboken_include_dirs}${PATH_SEP}${python_dir_include_dirs}")
|
set(shiboken_include_dirs "${shiboken_include_dirs}${PATH_SEP}${python_dir_include_dirs}")
|
||||||
|
|
||||||
@@ -119,13 +126,10 @@ macro(create_python_bindings
|
|||||||
set_property(SOURCE ${outputSource} PROPERTY SKIP_AUTOGEN ON)
|
set_property(SOURCE ${outputSource} PROPERTY SKIP_AUTOGEN ON)
|
||||||
add_custom_command(
|
add_custom_command(
|
||||||
OUTPUT ${outputSource}
|
OUTPUT ${outputSource}
|
||||||
COMMAND $<TARGET_PROPERTY:Shiboken6::shiboken,LOCATION> ${GENERATOR_EXTRA_FLAGS}
|
COMMAND
|
||||||
${globalInclude}
|
$<TARGET_PROPERTY:Shiboken6::shiboken,LOCATION> ${GENERATOR_EXTRA_FLAGS} ${globalInclude}
|
||||||
--include-paths=${shiboken_include_dirs}
|
--include-paths=${shiboken_include_dirs} --typesystem-paths=${shiboken_typesystem_dirs}
|
||||||
--typesystem-paths=${shiboken_typesystem_dirs}
|
${shiboken_framework_include_dirs_option} --output-directory=${CMAKE_CURRENT_BINARY_DIR} ${typesystemXML}
|
||||||
${shiboken_framework_include_dirs_option}
|
|
||||||
--output-directory=${CMAKE_CURRENT_BINARY_DIR}
|
|
||||||
${typesystemXML}
|
|
||||||
DEPENDS ${typesystemXML} ${dependsArg}
|
DEPENDS ${typesystemXML} ${dependsArg}
|
||||||
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
|
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
|
||||||
COMMENT "Running generator for ${libraryName} binding..."
|
COMMENT "Running generator for ${libraryName} binding..."
|
||||||
@@ -136,10 +140,10 @@ macro(create_python_bindings
|
|||||||
add_library(${TARGET_NAME} MODULE ${outputSource})
|
add_library(${TARGET_NAME} MODULE ${outputSource})
|
||||||
|
|
||||||
set_target_properties(
|
set_target_properties(
|
||||||
${TARGET_NAME} PROPERTIES
|
${TARGET_NAME}
|
||||||
PREFIX ""
|
PROPERTIES PREFIX ""
|
||||||
OUTPUT_NAME ${MODULE_NAME}
|
OUTPUT_NAME ${MODULE_NAME}
|
||||||
LIBRARY_OUTPUT_DIRECTORY ${moduleOutputDir}
|
LIBRARY_OUTPUT_DIRECTORY ${moduleOutputDir}
|
||||||
)
|
)
|
||||||
if(APPLE)
|
if(APPLE)
|
||||||
set_target_properties(${TARGET_NAME} PROPERTIES INSTALL_RPATH "@loader_path")
|
set_target_properties(${TARGET_NAME} PROPERTIES INSTALL_RPATH "@loader_path")
|
||||||
@@ -153,18 +157,14 @@ macro(create_python_bindings
|
|||||||
|
|
||||||
target_include_directories(${TARGET_NAME} PUBLIC ${targetIncludeDirs})
|
target_include_directories(${TARGET_NAME} PUBLIC ${targetIncludeDirs})
|
||||||
|
|
||||||
target_link_libraries(
|
target_link_libraries(${TARGET_NAME} ${targetLinkLibraries} PySide6::pyside6 Shiboken6::libshiboken)
|
||||||
${TARGET_NAME}
|
|
||||||
${targetLinkLibraries}
|
|
||||||
PySide6::pyside6
|
|
||||||
Shiboken6::libshiboken
|
|
||||||
)
|
|
||||||
target_compile_definitions(${TARGET_NAME} PRIVATE Py_LIMITED_API=0x03050000)
|
target_compile_definitions(${TARGET_NAME} PRIVATE Py_LIMITED_API=0x03050000)
|
||||||
if(APPLE)
|
if(APPLE)
|
||||||
set_property(TARGET ${TARGET_NAME} APPEND PROPERTY LINK_FLAGS "-undefined dynamic_lookup")
|
set_property(
|
||||||
|
TARGET ${TARGET_NAME}
|
||||||
|
APPEND
|
||||||
|
PROPERTY LINK_FLAGS "-undefined dynamic_lookup"
|
||||||
|
)
|
||||||
endif()
|
endif()
|
||||||
install(
|
install(TARGETS ${TARGET_NAME} LIBRARY DESTINATION ${${PROJECT_NAME}_PYTHON_BINDINGS_INSTALL_PREFIX})
|
||||||
TARGETS ${TARGET_NAME}
|
|
||||||
LIBRARY DESTINATION ${${PROJECT_NAME}_PYTHON_BINDINGS_INSTALL_PREFIX}
|
|
||||||
)
|
|
||||||
endmacro()
|
endmacro()
|
||||||
|
|||||||
@@ -46,7 +46,10 @@ foreach(qval ${VARS_LIST})
|
|||||||
list(GET QVAL_LIST 1 path)
|
list(GET QVAL_LIST 1 path)
|
||||||
endif()
|
endif()
|
||||||
if(NOT ${var}) #if set already on the command line for example
|
if(NOT ${var}) #if set already on the command line for example
|
||||||
set(${var} ${path} CACHE PATH "Qt install path for ${var}")
|
set(${var}
|
||||||
|
${path}
|
||||||
|
CACHE PATH "Qt install path for ${var}"
|
||||||
|
)
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
endforeach()
|
endforeach()
|
||||||
|
|||||||
@@ -1,145 +0,0 @@
|
|||||||
{
|
|
||||||
"folders": [
|
|
||||||
{
|
|
||||||
"path": "."
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"settings": {
|
|
||||||
"files.trimTrailingWhitespace": true,
|
|
||||||
"editor.formatOnType": true,
|
|
||||||
"cmake.copyCompileCommands": "${workspaceFolder}/compile_commands.json"
|
|
||||||
},
|
|
||||||
"launch": {
|
|
||||||
"version": "0.2.0",
|
|
||||||
"configurations": [
|
|
||||||
{
|
|
||||||
"name": "gdb-kddockwidgets_customtitlebar_quick",
|
|
||||||
"type": "cppdbg",
|
|
||||||
"request": "launch",
|
|
||||||
"program": "${workspaceFolder}/build-dev-qtquick/bin/kddockwidgets_customtitlebar_quick",
|
|
||||||
"args": [],
|
|
||||||
"cwd": "${workspaceFolder}",
|
|
||||||
"MIMode": "gdb",
|
|
||||||
"stopAtEntry": false,
|
|
||||||
"externalConsole": false
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "gdb-kddockwidgets_example_mdi_quick",
|
|
||||||
"type": "cppdbg",
|
|
||||||
"request": "launch",
|
|
||||||
"program": "${workspaceFolder}/build-dev-qtquick/bin/kddockwidgets_example_mdi_quick",
|
|
||||||
"args": [],
|
|
||||||
"cwd": "${workspaceFolder}",
|
|
||||||
"MIMode": "gdb",
|
|
||||||
"stopAtEntry": false,
|
|
||||||
"externalConsole": false
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "gdb-kddockwidgets_example_quick",
|
|
||||||
"type": "cppdbg",
|
|
||||||
"request": "launch",
|
|
||||||
"program": "${workspaceFolder}/build-dev-qtquick/bin/kddockwidgets_example_quick",
|
|
||||||
"args": [],
|
|
||||||
"cwd": "${workspaceFolder}",
|
|
||||||
"MIMode": "gdb",
|
|
||||||
"stopAtEntry": false,
|
|
||||||
"externalConsole": false
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "gdb-tst_docks",
|
|
||||||
"type": "cppdbg",
|
|
||||||
"request": "launch",
|
|
||||||
"program": "${workspaceFolder}/build-dev-qtquick/bin/tst_docks",
|
|
||||||
"args": [],
|
|
||||||
"cwd": "${workspaceFolder}",
|
|
||||||
"MIMode": "gdb",
|
|
||||||
"stopAtEntry": false,
|
|
||||||
"externalConsole": false
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "lldb-kddockwidgets_customtitlebar_quick",
|
|
||||||
"type": "cppdbg",
|
|
||||||
"request": "launch",
|
|
||||||
"program": "${workspaceFolder}/build-dev-qtquick/bin/kddockwidgets_customtitlebar_quick",
|
|
||||||
"args": [],
|
|
||||||
"cwd": "${workspaceFolder}",
|
|
||||||
"MIMode": "lldb",
|
|
||||||
"stopAtEntry": false,
|
|
||||||
"externalConsole": false
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "lldb-kddockwidgets_example_mdi_quick",
|
|
||||||
"type": "cppdbg",
|
|
||||||
"request": "launch",
|
|
||||||
"program": "${workspaceFolder}/build-dev-qtquick/bin/kddockwidgets_example_mdi_quick",
|
|
||||||
"args": [],
|
|
||||||
"cwd": "${workspaceFolder}",
|
|
||||||
"MIMode": "lldb",
|
|
||||||
"stopAtEntry": false,
|
|
||||||
"externalConsole": false
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "lldb-kddockwidgets_example_quick",
|
|
||||||
"type": "cppdbg",
|
|
||||||
"request": "launch",
|
|
||||||
"program": "${workspaceFolder}/build-dev-qtquick/bin/kddockwidgets_example_quick",
|
|
||||||
"args": [],
|
|
||||||
"cwd": "${workspaceFolder}",
|
|
||||||
"MIMode": "lldb",
|
|
||||||
"stopAtEntry": false,
|
|
||||||
"externalConsole": false
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "lldb-tst_docks",
|
|
||||||
"type": "cppdbg",
|
|
||||||
"request": "launch",
|
|
||||||
"program": "${workspaceFolder}/build-dev-qtquick/bin/tst_docks",
|
|
||||||
"args": [],
|
|
||||||
"cwd": "${workspaceFolder}",
|
|
||||||
"MIMode": "lldb",
|
|
||||||
"stopAtEntry": false,
|
|
||||||
"externalConsole": false
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "msvc-kddockwidgets_customtitlebar_quick",
|
|
||||||
"type": "cppvsdbg",
|
|
||||||
"request": "launch",
|
|
||||||
"program": "${workspaceFolder}/build-dev-qtquick/bin/kddockwidgets_customtitlebar_quick",
|
|
||||||
"args": [],
|
|
||||||
"cwd": "${workspaceFolder}",
|
|
||||||
"stopAtEntry": false,
|
|
||||||
"externalConsole": false
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "msvc-kddockwidgets_example_mdi_quick",
|
|
||||||
"type": "cppvsdbg",
|
|
||||||
"request": "launch",
|
|
||||||
"program": "${workspaceFolder}/build-dev-qtquick/bin/kddockwidgets_example_mdi_quick",
|
|
||||||
"args": [],
|
|
||||||
"cwd": "${workspaceFolder}",
|
|
||||||
"stopAtEntry": false,
|
|
||||||
"externalConsole": false
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "msvc-kddockwidgets_example_quick",
|
|
||||||
"type": "cppvsdbg",
|
|
||||||
"request": "launch",
|
|
||||||
"program": "${workspaceFolder}/build-dev-qtquick/bin/kddockwidgets_example_quick",
|
|
||||||
"args": [],
|
|
||||||
"cwd": "${workspaceFolder}",
|
|
||||||
"stopAtEntry": false,
|
|
||||||
"externalConsole": false
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "msvc-tst_docks",
|
|
||||||
"type": "cppvsdbg",
|
|
||||||
"request": "launch",
|
|
||||||
"program": "${workspaceFolder}/build-dev-qtquick/bin/tst_docks",
|
|
||||||
"args": [],
|
|
||||||
"cwd": "${workspaceFolder}",
|
|
||||||
"stopAtEntry": false,
|
|
||||||
"externalConsole": false
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,97 +0,0 @@
|
|||||||
{
|
|
||||||
"folders": [
|
|
||||||
{
|
|
||||||
"path": "."
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"settings": {
|
|
||||||
"files.trimTrailingWhitespace": true,
|
|
||||||
"editor.formatOnType": true,
|
|
||||||
"cmake.copyCompileCommands": "${workspaceFolder}/compile_commands.json"
|
|
||||||
},
|
|
||||||
"launch": {
|
|
||||||
"version": "0.2.0",
|
|
||||||
"configurations": [
|
|
||||||
{
|
|
||||||
"name": "kddockwidgets_example",
|
|
||||||
"type": "lldb",
|
|
||||||
"request": "launch",
|
|
||||||
"program": "${workspaceFolder}/build-dev/bin/kddockwidgets_example",
|
|
||||||
"args": [],
|
|
||||||
"cwd": "${workspaceFolder}"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "kddockwidgets_minimal_example",
|
|
||||||
"type": "lldb",
|
|
||||||
"request": "launch",
|
|
||||||
"program": "${workspaceFolder}/build-dev/bin/kddockwidgets_minimal_example",
|
|
||||||
"args": [],
|
|
||||||
"cwd": "${workspaceFolder}"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "kddockwidgets_minimal_mdi_example",
|
|
||||||
"type": "lldb",
|
|
||||||
"request": "launch",
|
|
||||||
"program": "${workspaceFolder}/build-dev/bin/kddockwidgets_minimal_mdi_example",
|
|
||||||
"args": [],
|
|
||||||
"cwd": "${workspaceFolder}"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "kddockwidgets_mdi_with_docking_example",
|
|
||||||
"type": "lldb",
|
|
||||||
"request": "launch",
|
|
||||||
"program": "${workspaceFolder}/build-dev/bin/kddockwidgets_mdi_with_docking_example",
|
|
||||||
"args": [],
|
|
||||||
"cwd": "${workspaceFolder}"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "tst_docks",
|
|
||||||
"type": "lldb",
|
|
||||||
"request": "launch",
|
|
||||||
"program": "${workspaceFolder}/build-dev/bin/tst_docks",
|
|
||||||
"args": [],
|
|
||||||
"cwd": "${workspaceFolder}"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "msvc-kddockwidgets_example",
|
|
||||||
"type": "cppvsdbg",
|
|
||||||
"request": "launch",
|
|
||||||
"program": "${workspaceFolder}/build-dev/bin/kddockwidgets_example",
|
|
||||||
"args": [],
|
|
||||||
"cwd": "${workspaceFolder}",
|
|
||||||
"stopAtEntry": false,
|
|
||||||
"externalConsole": false
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "msvc-kddockwidgets_minimal_example",
|
|
||||||
"type": "cppvsdbg",
|
|
||||||
"request": "launch",
|
|
||||||
"program": "${workspaceFolder}/build-dev/bin/kddockwidgets_minimal_example",
|
|
||||||
"args": [],
|
|
||||||
"cwd": "${workspaceFolder}",
|
|
||||||
"stopAtEntry": false,
|
|
||||||
"externalConsole": false
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "msvc-kddockwidgets_minimal_mdi_example",
|
|
||||||
"type": "cppvsdbg",
|
|
||||||
"request": "launch",
|
|
||||||
"program": "${workspaceFolder}/build-dev/bin/kddockwidgets_minimal_mdi_example",
|
|
||||||
"args": [],
|
|
||||||
"cwd": "${workspaceFolder}",
|
|
||||||
"stopAtEntry": false,
|
|
||||||
"externalConsole": false
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "msvc-tst_docks",
|
|
||||||
"type": "cppvsdbg",
|
|
||||||
"request": "launch",
|
|
||||||
"program": "${workspaceFolder}/build-dev/bin/tst_docks",
|
|
||||||
"args": [],
|
|
||||||
"cwd": "${workspaceFolder}",
|
|
||||||
"stopAtEntry": false,
|
|
||||||
"externalConsole": false
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,145 +0,0 @@
|
|||||||
{
|
|
||||||
"folders": [
|
|
||||||
{
|
|
||||||
"path": "."
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"settings": {
|
|
||||||
"files.trimTrailingWhitespace": true,
|
|
||||||
"editor.formatOnType": true,
|
|
||||||
"cmake.copyCompileCommands": "${workspaceFolder}/compile_commands.json"
|
|
||||||
},
|
|
||||||
"launch": {
|
|
||||||
"version": "0.2.0",
|
|
||||||
"configurations": [
|
|
||||||
{
|
|
||||||
"name": "gdb-kddockwidgets_example",
|
|
||||||
"type": "cppdbg",
|
|
||||||
"request": "launch",
|
|
||||||
"program": "${workspaceFolder}/build-dev6/bin/kddockwidgets_example",
|
|
||||||
"args": [],
|
|
||||||
"cwd": "${workspaceFolder}",
|
|
||||||
"MIMode": "gdb",
|
|
||||||
"stopAtEntry": false,
|
|
||||||
"externalConsole": false
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "gdb-kddockwidgets_minimal_example",
|
|
||||||
"type": "cppdbg",
|
|
||||||
"request": "launch",
|
|
||||||
"program": "${workspaceFolder}/build-dev6/bin/kddockwidgets_minimal_example",
|
|
||||||
"args": [],
|
|
||||||
"cwd": "${workspaceFolder}",
|
|
||||||
"MIMode": "gdb",
|
|
||||||
"stopAtEntry": false,
|
|
||||||
"externalConsole": false
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "gdb-kddockwidgets_minimal_mdi_example",
|
|
||||||
"type": "cppdbg",
|
|
||||||
"request": "launch",
|
|
||||||
"program": "${workspaceFolder}/build-dev6/bin/kddockwidgets_minimal_mdi_example",
|
|
||||||
"args": [],
|
|
||||||
"cwd": "${workspaceFolder}",
|
|
||||||
"MIMode": "gdb",
|
|
||||||
"stopAtEntry": false,
|
|
||||||
"externalConsole": false
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "gdb-tst_docks",
|
|
||||||
"type": "cppdbg",
|
|
||||||
"request": "launch",
|
|
||||||
"program": "${workspaceFolder}/build-dev6/bin/tst_docks",
|
|
||||||
"args": [],
|
|
||||||
"cwd": "${workspaceFolder}",
|
|
||||||
"MIMode": "gdb",
|
|
||||||
"stopAtEntry": false,
|
|
||||||
"externalConsole": false
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "lldb-kddockwidgets_example",
|
|
||||||
"type": "cppdbg",
|
|
||||||
"request": "launch",
|
|
||||||
"program": "${workspaceFolder}/build-dev6/bin/kddockwidgets_example",
|
|
||||||
"args": [],
|
|
||||||
"cwd": "${workspaceFolder}",
|
|
||||||
"MIMode": "lldb",
|
|
||||||
"stopAtEntry": false,
|
|
||||||
"externalConsole": false
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "lldb-kddockwidgets_minimal_example",
|
|
||||||
"type": "cppdbg",
|
|
||||||
"request": "launch",
|
|
||||||
"program": "${workspaceFolder}/build-dev6/bin/kddockwidgets_minimal_example",
|
|
||||||
"args": [],
|
|
||||||
"cwd": "${workspaceFolder}",
|
|
||||||
"MIMode": "lldb",
|
|
||||||
"stopAtEntry": false,
|
|
||||||
"externalConsole": false
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "lldb-kddockwidgets_minimal_mdi_example",
|
|
||||||
"type": "cppdbg",
|
|
||||||
"request": "launch",
|
|
||||||
"program": "${workspaceFolder}/build-dev6/bin/kddockwidgets_minimal_mdi_example",
|
|
||||||
"args": [],
|
|
||||||
"cwd": "${workspaceFolder}",
|
|
||||||
"MIMode": "lldb",
|
|
||||||
"stopAtEntry": false,
|
|
||||||
"externalConsole": false
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "lldb-tst_docks",
|
|
||||||
"type": "cppdbg",
|
|
||||||
"request": "launch",
|
|
||||||
"program": "${workspaceFolder}/build-dev6/bin/tst_docks",
|
|
||||||
"args": [],
|
|
||||||
"cwd": "${workspaceFolder}",
|
|
||||||
"MIMode": "lldb",
|
|
||||||
"stopAtEntry": false,
|
|
||||||
"externalConsole": false
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "msvc-kddockwidgets_example",
|
|
||||||
"type": "cppvsdbg",
|
|
||||||
"request": "launch",
|
|
||||||
"program": "${workspaceFolder}/build-dev6/bin/kddockwidgets_example",
|
|
||||||
"args": [],
|
|
||||||
"cwd": "${workspaceFolder}",
|
|
||||||
"stopAtEntry": false,
|
|
||||||
"externalConsole": false
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "msvc-kddockwidgets_minimal_example",
|
|
||||||
"type": "cppvsdbg",
|
|
||||||
"request": "launch",
|
|
||||||
"program": "${workspaceFolder}/build-dev6/bin/kddockwidgets_minimal_example",
|
|
||||||
"args": [],
|
|
||||||
"cwd": "${workspaceFolder}",
|
|
||||||
"stopAtEntry": false,
|
|
||||||
"externalConsole": false
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "msvc-kddockwidgets_minimal_mdi_example",
|
|
||||||
"type": "cppvsdbg",
|
|
||||||
"request": "launch",
|
|
||||||
"program": "${workspaceFolder}/build-dev6/bin/kddockwidgets_minimal_mdi_example",
|
|
||||||
"args": [],
|
|
||||||
"cwd": "${workspaceFolder}",
|
|
||||||
"stopAtEntry": false,
|
|
||||||
"externalConsole": false
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "msvc-tst_docks",
|
|
||||||
"type": "cppvsdbg",
|
|
||||||
"request": "launch",
|
|
||||||
"program": "${workspaceFolder}/build-dev6/bin/tst_docks",
|
|
||||||
"args": [],
|
|
||||||
"cwd": "${workspaceFolder}",
|
|
||||||
"stopAtEntry": false,
|
|
||||||
"externalConsole": false
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -12,7 +12,7 @@ from conans import ConanFile, CMake, tools
|
|||||||
|
|
||||||
class KDDockWidgetsConan(ConanFile):
|
class KDDockWidgetsConan(ConanFile):
|
||||||
name = "kddockwidgets"
|
name = "kddockwidgets"
|
||||||
version = "1.6.95"
|
version = "1.7.0"
|
||||||
default_user = "kdab"
|
default_user = "kdab"
|
||||||
default_channel = "stable"
|
default_channel = "stable"
|
||||||
license = ("https://raw.githubusercontent.com/KDAB/KDDockWidgets/master/LICENSES/GPL-2.0-only.txt",
|
license = ("https://raw.githubusercontent.com/KDAB/KDDockWidgets/master/LICENSES/GPL-2.0-only.txt",
|
||||||
|
|||||||
@@ -1,3 +1,9 @@
|
|||||||
|
kddockwidgets (1.7.0) release candidate; urgency=high
|
||||||
|
|
||||||
|
* 1.7.0 final
|
||||||
|
|
||||||
|
-- Allen Winter <allen.winter@kdab.com> Wed, 03 May 2023 15:00:00 -0500
|
||||||
|
|
||||||
kddockwidgets (1.6.0) release candidate; urgency=high
|
kddockwidgets (1.6.0) release candidate; urgency=high
|
||||||
|
|
||||||
* 1.6.0 final
|
* 1.6.0 final
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
Format: 1.0
|
Format: 1.0
|
||||||
Source: kddockwidgets
|
Source: kddockwidgets
|
||||||
Version: 1.6.0-1
|
Version: 1.7.0-1
|
||||||
Binary: kddockwidgets
|
Binary: kddockwidgets
|
||||||
Maintainer: Allen Winter <allen.winter@kdab.com>
|
Maintainer: Allen Winter <allen.winter@kdab.com>
|
||||||
Architecture: any
|
Architecture: any
|
||||||
Build-Depends: debhelper (>=9), cdbs, cmake, qtbase5-dev, qtbase5-private-dev, libqt5x11extras5-dev, libfontconfig-dev, libfreetype-dev
|
Build-Depends: debhelper (>=9), cdbs, cmake, qtbase5-dev, qtbase5-private-dev, libqt5x11extras5-dev, libfontconfig-dev, libfreetype-dev
|
||||||
|
|
||||||
Files:
|
Files:
|
||||||
00000000000000000000000000000000 00000 qt5-kddockwidgets-1.6.0.tar.gz
|
00000000000000000000000000000000 00000 qt5-kddockwidgets-1.7.0.tar.gz
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
Name: qt5-kddockwidgets
|
Name: qt5-kddockwidgets
|
||||||
Version: 1.6.0
|
Version: 1.7.0
|
||||||
Release: 1
|
Release: 1
|
||||||
Summary: KDAB's Dock Widget Framework for Qt5
|
Summary: KDAB's Dock Widget Framework for Qt5
|
||||||
Source0: %{name}-%{version}.tar.gz
|
Source0: %{name}-%{version}.tar.gz
|
||||||
@@ -98,6 +98,8 @@ cmake . -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=Release
|
|||||||
%{_libdir}/libkddockwidgets.so
|
%{_libdir}/libkddockwidgets.so
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Wed May 03 2023 Allen Winter <allen.winter@kdab.com> 1.7.0
|
||||||
|
1.7.0 final
|
||||||
* Wed Sep 14 2022 Allen Winter <allen.winter@kdab.com> 1.6.0
|
* Wed Sep 14 2022 Allen Winter <allen.winter@kdab.com> 1.6.0
|
||||||
1.6.0 final
|
1.6.0 final
|
||||||
* Mon Nov 24 2021 Allen Winter <allen.winter@kdab.com> 1.5.0
|
* Mon Nov 24 2021 Allen Winter <allen.winter@kdab.com> 1.5.0
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
Format: 1.0
|
Format: 1.0
|
||||||
Source: kddockwidgets
|
Source: kddockwidgets
|
||||||
Version: 1.6.0-1
|
Version: 1.7.0-1
|
||||||
Binary: kddockwidgets
|
Binary: kddockwidgets
|
||||||
Maintainer: Allen Winter <allen.winter@kdab.com>
|
Maintainer: Allen Winter <allen.winter@kdab.com>
|
||||||
Architecture: any
|
Architecture: any
|
||||||
Build-Depends: debhelper (>=9), cdbs, cmake, qt6-base-dev, qt6-base-private-dev, libgl1-mesa-dev, libfontconfig-dev, libfreetype-dev
|
Build-Depends: debhelper (>=9), cdbs, cmake, qt6-base-dev, qt6-base-private-dev, libgl1-mesa-dev, libfontconfig-dev, libfreetype-dev
|
||||||
|
|
||||||
Files:
|
Files:
|
||||||
00000000000000000000000000000000 00000 qt6-kddockwidgets-1.6.0.tar.gz
|
00000000000000000000000000000000 00000 qt6-kddockwidgets-1.7.0.tar.gz
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
Name: qt6-kddockwidgets
|
Name: qt6-kddockwidgets
|
||||||
Version: 1.6.0
|
Version: 1.7.0
|
||||||
Release: 1
|
Release: 1
|
||||||
Summary: KDAB's Dock Widget Framework for Qt6
|
Summary: KDAB's Dock Widget Framework for Qt6
|
||||||
Source0: %{name}-%{version}.tar.gz
|
Source0: %{name}-%{version}.tar.gz
|
||||||
@@ -92,6 +92,8 @@ cmake . -DCMAKE_INSTALL_PREFIX=/usr -DKDDockWidgets_QT6=True -DCMAKE_BUILD_TYPE=
|
|||||||
%{_libdir}/libkddockwidgets-qt6.so
|
%{_libdir}/libkddockwidgets-qt6.so
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Wed May 03 2023 Allen Winter <allen.winter@kdab.com> 1.7.0
|
||||||
|
1.7.0 final
|
||||||
* Wed Sep 14 2022 Allen Winter <allen.winter@kdab.com> 1.6.0
|
* Wed Sep 14 2022 Allen Winter <allen.winter@kdab.com> 1.6.0
|
||||||
1.6.0 final
|
1.6.0 final
|
||||||
* Mon Nov 24 2021 Allen Winter <allen.winter@kdab.com> 1.5.0
|
* Mon Nov 24 2021 Allen Winter <allen.winter@kdab.com> 1.5.0
|
||||||
|
|||||||
@@ -121,6 +121,9 @@ MyMainWindow::MyMainWindow(const QString &uniqueName, KDDockWidgets::MainWindowO
|
|||||||
if (options & KDDockWidgets::MainWindowOption_HasCentralWidget) {
|
if (options & KDDockWidgets::MainWindowOption_HasCentralWidget) {
|
||||||
setPersistentCentralWidget(new MyWidget1());
|
setPersistentCentralWidget(new MyWidget1());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// optional, just for demo purposes regarding pressing Ctrl key to hide drop indicators
|
||||||
|
qApp->installEventFilter(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
MyMainWindow::~MyMainWindow()
|
MyMainWindow::~MyMainWindow()
|
||||||
@@ -210,3 +213,26 @@ KDDockWidgets::DockWidgetBase *MyMainWindow::newDockWidget()
|
|||||||
count++;
|
count++;
|
||||||
return dock;
|
return dock;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool MyMainWindow::eventFilter(QObject *obj, QEvent *ev)
|
||||||
|
{
|
||||||
|
// This event filter is just for examplify how to use the KDDW API to hide
|
||||||
|
// the drag indicators when ctrl is pressed
|
||||||
|
|
||||||
|
switch (ev->type()) {
|
||||||
|
case QEvent::KeyPress:
|
||||||
|
case QEvent::KeyRelease: {
|
||||||
|
auto kev = static_cast<QKeyEvent *>(ev);
|
||||||
|
if (kev->key() == Qt::Key_Control && qobject_cast<QWindow *>(obj)) {
|
||||||
|
const bool hideIndicators = ev->type() == QEvent::KeyPress;
|
||||||
|
KDDockWidgets::Config::self().setDropIndicatorsInhibited(hideIndicators);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
return KDDockWidgets::MainWindow::eventFilter(obj, ev);
|
||||||
|
}
|
||||||
|
|||||||
@@ -27,6 +27,7 @@ public:
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
void createDockWidgets();
|
void createDockWidgets();
|
||||||
|
bool eventFilter(QObject *obj, QEvent *ev) override;
|
||||||
KDDockWidgets::DockWidgetBase *newDockWidget();
|
KDDockWidgets::DockWidgetBase *newDockWidget();
|
||||||
QMenu *m_toggleMenu = nullptr;
|
QMenu *m_toggleMenu = nullptr;
|
||||||
const bool m_dockWidget0IsNonClosable;
|
const bool m_dockWidget0IsNonClosable;
|
||||||
|
|||||||
@@ -32,11 +32,21 @@ find_package(Shiboken${PYSIDE_MAJOR_VERSION} REQUIRED)
|
|||||||
find_package(PySide${PYSIDE_MAJOR_VERSION} ${QtWidgets_VERSION} EXACT REQUIRED)
|
find_package(PySide${PYSIDE_MAJOR_VERSION} ${QtWidgets_VERSION} EXACT REQUIRED)
|
||||||
|
|
||||||
if(NOT ${PROJECT_NAME}_PYTHON_BINDINGS_INSTALL_PREFIX)
|
if(NOT ${PROJECT_NAME}_PYTHON_BINDINGS_INSTALL_PREFIX)
|
||||||
set(${PROJECT_NAME}_PYTHON_BINDINGS_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}")
|
# cmake-lint: disable=C0103
|
||||||
|
set(${PROJECT_NAME}_PYTHON_BINDINGS_INSTALL_PREFIX
|
||||||
|
${INSTALL_LIBRARY_DIR}
|
||||||
|
CACHE FILEPATH "Custom path to install python bindings."
|
||||||
|
)
|
||||||
|
if(NOT WIN32)
|
||||||
|
set(Python3_VERSION_MAJORMINOR "${Python3_VERSION_MAJOR}.${Python3_VERSION_MINOR}")
|
||||||
|
set(BINDINGS_DIR "python${Python3_VERSION_MAJORMINOR}/site-packages/${PYTHON_BINDING_NAMESPACE}")
|
||||||
|
else()
|
||||||
|
set(BINDINGS_DIR "site-packages/${PYTHON_BINDING_NAMESPACE}")
|
||||||
|
endif()
|
||||||
|
set(${PROJECT_NAME}_PYTHON_BINDINGS_INSTALL_PREFIX
|
||||||
|
"${${PROJECT_NAME}_PYTHON_BINDINGS_INSTALL_PREFIX}/${BINDINGS_DIR}"
|
||||||
|
)
|
||||||
endif()
|
endif()
|
||||||
set(Python3_VERSION_MAJORMINOR "${Python3_VERSION_MAJOR}.${Python3_VERSION_MINOR}")
|
|
||||||
set(BINDINGS_DIR "${INSTALL_LIBRARY_DIR}/python${Python3_VERSION_MAJORMINOR}/site-packages/${PYTHON_BINDING_NAMESPACE}")
|
|
||||||
set(${PROJECT_NAME}_PYTHON_BINDINGS_INSTALL_PREFIX "${${PROJECT_NAME}_PYTHON_BINDINGS_INSTALL_PREFIX}/${BINDINGS_DIR}")
|
|
||||||
|
|
||||||
include(KDPySide${PYSIDE_MAJOR_VERSION}ModuleBuild)
|
include(KDPySide${PYSIDE_MAJOR_VERSION}ModuleBuild)
|
||||||
add_subdirectory(PyKDDockWidgets)
|
add_subdirectory(PyKDDockWidgets)
|
||||||
|
|||||||
@@ -88,17 +88,17 @@ class MyMainWindow(KDDockWidgets.MainWindow):
|
|||||||
|
|
||||||
# pylint: disable=no-self-use
|
# pylint: disable=no-self-use
|
||||||
def _saveLayout(self):
|
def _saveLayout(self):
|
||||||
#saver = KDDockWidgets.LayoutSaver()
|
# saver = KDDockWidgets.LayoutSaver()
|
||||||
#result = saver.saveToFile("mylayout.json")
|
# result = saver.saveToFile("mylayout.json")
|
||||||
#print("Saving layout to disk. Result=", result)
|
# print("Saving layout to disk. Result=", result)
|
||||||
print("Not available")
|
print("Not available")
|
||||||
|
|
||||||
# pylint: disable=no-self-use
|
# pylint: disable=no-self-use
|
||||||
def _restoreLayout(self):
|
def _restoreLayout(self):
|
||||||
#options = KDDockWidgets.RestoreOption_None
|
# options = KDDockWidgets.RestoreOption_None
|
||||||
# if self.restoreIsRelative:
|
# if self.restoreIsRelative:
|
||||||
# options |= KDDockWidgets.RestoreOption_RelativeToMainWindow
|
# options |= KDDockWidgets.RestoreOption_RelativeToMainWindow
|
||||||
#saver = KDDockWidgets.LayoutSaver(options)
|
# saver = KDDockWidgets.LayoutSaver(options)
|
||||||
# saver.restoreFromFile("mylayout.json")
|
# saver.restoreFromFile("mylayout.json")
|
||||||
print("Not available")
|
print("Not available")
|
||||||
|
|
||||||
|
|||||||
@@ -88,17 +88,17 @@ class MyMainWindow(KDDockWidgets.MainWindow):
|
|||||||
|
|
||||||
# pylint: disable=no-self-use
|
# pylint: disable=no-self-use
|
||||||
def _saveLayout(self):
|
def _saveLayout(self):
|
||||||
#saver = KDDockWidgets.LayoutSaver()
|
# saver = KDDockWidgets.LayoutSaver()
|
||||||
#result = saver.saveToFile("mylayout.json")
|
# result = saver.saveToFile("mylayout.json")
|
||||||
#print("Saving layout to disk. Result=", result)
|
# print("Saving layout to disk. Result=", result)
|
||||||
print("Not available")
|
print("Not available")
|
||||||
|
|
||||||
# pylint: disable=no-self-use
|
# pylint: disable=no-self-use
|
||||||
def _restoreLayout(self):
|
def _restoreLayout(self):
|
||||||
#options = KDDockWidgets.RestoreOption_None
|
# options = KDDockWidgets.RestoreOption_None
|
||||||
# if self.restoreIsRelative:
|
# if self.restoreIsRelative:
|
||||||
# options |= KDDockWidgets.RestoreOption_RelativeToMainWindow
|
# options |= KDDockWidgets.RestoreOption_RelativeToMainWindow
|
||||||
#saver = KDDockWidgets.LayoutSaver(options)
|
# saver = KDDockWidgets.LayoutSaver(options)
|
||||||
# saver.restoreFromFile("mylayout.json")
|
# saver.restoreFromFile("mylayout.json")
|
||||||
print("Not available")
|
print("Not available")
|
||||||
|
|
||||||
|
|||||||
@@ -318,7 +318,7 @@ elseif(
|
|||||||
AND NOT ${PROJECT_NAME}_QT6
|
AND NOT ${PROJECT_NAME}_QT6
|
||||||
AND ${PROJECT_NAME}_X11EXTRAS
|
AND ${PROJECT_NAME}_X11EXTRAS
|
||||||
)
|
)
|
||||||
find_package(Qt${Qt_VERSION_MAJOR}X11Extras)
|
find_package(Qt${Qt_VERSION_MAJOR}X11Extras CONFIG)
|
||||||
target_link_libraries(kddockwidgets PUBLIC Qt${Qt_VERSION_MAJOR}::X11Extras)
|
target_link_libraries(kddockwidgets PUBLIC Qt${Qt_VERSION_MAJOR}::X11Extras)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
|||||||
@@ -356,4 +356,9 @@ bool Config::dropIndicatorsInhibited() const
|
|||||||
return d->m_dropIndicatorsInhibited;
|
return d->m_dropIndicatorsInhibited;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Config::printDebug()
|
||||||
|
{
|
||||||
|
qDebug() << "Flags: " << d->m_flags << d->m_internalFlags;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -317,6 +317,9 @@ public:
|
|||||||
void setMDIPopupThreshold(int);
|
void setMDIPopupThreshold(int);
|
||||||
int mdiPopupThreshold() const;
|
int mdiPopupThreshold() const;
|
||||||
|
|
||||||
|
/// Prints some debug information
|
||||||
|
void printDebug();
|
||||||
|
|
||||||
#ifdef KDDOCKWIDGETS_QTQUICK
|
#ifdef KDDOCKWIDGETS_QTQUICK
|
||||||
///@brief Sets the QQmlEngine to use. Applicable only when using QtQuick.
|
///@brief Sets the QQmlEngine to use. Applicable only when using QtQuick.
|
||||||
void setQmlEngine(QQmlEngine *);
|
void setQmlEngine(QQmlEngine *);
|
||||||
|
|||||||
@@ -370,7 +370,7 @@ public:
|
|||||||
* @brief Returns whether this dock widget is docked into a main window (as opposed to floating)
|
* @brief Returns whether this dock widget is docked into a main window (as opposed to floating)
|
||||||
*
|
*
|
||||||
* Note that isFloating() returning false might either mean the dock widget is docked into a
|
* Note that isFloating() returning false might either mean the dock widget is docked into a
|
||||||
* main window or into a floating window (groupped/nested with other dock widgets. Use this function
|
* main window or into a floating window (grouped/nested with other dock widgets. Use this function
|
||||||
* then if you need to disambiguate
|
* then if you need to disambiguate
|
||||||
*/
|
*/
|
||||||
bool isInMainWindow() const;
|
bool isInMainWindow() const;
|
||||||
|
|||||||
@@ -21,8 +21,6 @@
|
|||||||
#include "private/Utils_p.h"
|
#include "private/Utils_p.h"
|
||||||
#include "private/TabWidget_p.h"
|
#include "private/TabWidget_p.h"
|
||||||
|
|
||||||
#include <QScopeGuard>
|
|
||||||
|
|
||||||
#ifdef KDDOCKWIDGETS_QTWIDGETS
|
#ifdef KDDOCKWIDGETS_QTWIDGETS
|
||||||
#include "private/widgets/FrameWidget_p.h"
|
#include "private/widgets/FrameWidget_p.h"
|
||||||
#include "private/widgets/TitleBarWidget_p.h"
|
#include "private/widgets/TitleBarWidget_p.h"
|
||||||
@@ -242,8 +240,8 @@ QUrl DefaultWidgetFactory::floatingWindowFilename() const
|
|||||||
QIcon DefaultWidgetFactory::iconForButtonType(TitleBarButtonType type, qreal dpr) const
|
QIcon DefaultWidgetFactory::iconForButtonType(TitleBarButtonType type, qreal dpr) const
|
||||||
{
|
{
|
||||||
auto key = std::make_pair(type, dpr);
|
auto key = std::make_pair(type, dpr);
|
||||||
auto it = m_cachedIcons.find(key);
|
auto it = m_cachedIcons.constFind(key);
|
||||||
if (it != m_cachedIcons.end())
|
if (it != m_cachedIcons.cend())
|
||||||
return *it;
|
return *it;
|
||||||
|
|
||||||
QString iconName;
|
QString iconName;
|
||||||
@@ -277,12 +275,11 @@ QIcon DefaultWidgetFactory::iconForButtonType(TitleBarButtonType type, qreal dpr
|
|||||||
|
|
||||||
QIcon icon(QStringLiteral(":/img/%1.png").arg(iconName));
|
QIcon icon(QStringLiteral(":/img/%1.png").arg(iconName));
|
||||||
|
|
||||||
auto atScopeEnd = qScopeGuard([&icon, this, key] {
|
|
||||||
m_cachedIcons.insert(key, icon);
|
|
||||||
});
|
|
||||||
|
|
||||||
if (!scalingFactorIsSupported(dpr))
|
if (!scalingFactorIsSupported(dpr)) {
|
||||||
|
m_cachedIcons.insert(key, icon);
|
||||||
return icon;
|
return icon;
|
||||||
|
}
|
||||||
|
|
||||||
// Not using Qt's sugar syntax, which doesn't support 1.5x anyway when we need it.
|
// Not using Qt's sugar syntax, which doesn't support 1.5x anyway when we need it.
|
||||||
// Simply add the high-res files and Qt will pick them when needed
|
// Simply add the high-res files and Qt will pick them when needed
|
||||||
@@ -291,6 +288,7 @@ QIcon DefaultWidgetFactory::iconForButtonType(TitleBarButtonType type, qreal dpr
|
|||||||
icon.addFile(QStringLiteral(":/img/%1-1.5x.png").arg(iconName));
|
icon.addFile(QStringLiteral(":/img/%1-1.5x.png").arg(iconName));
|
||||||
|
|
||||||
icon.addFile(QStringLiteral(":/img/%1-2x.png").arg(iconName));
|
icon.addFile(QStringLiteral(":/img/%1-2x.png").arg(iconName));
|
||||||
|
m_cachedIcons.insert(key, icon);
|
||||||
|
|
||||||
return icon;
|
return icon;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -182,8 +182,9 @@ private:
|
|||||||
|
|
||||||
enum RestoreOption {
|
enum RestoreOption {
|
||||||
RestoreOption_None = 0,
|
RestoreOption_None = 0,
|
||||||
RestoreOption_RelativeToMainWindow = 1, ///< Skips restoring the main window geometry and the restored dock widgets will use relative sizing.
|
RestoreOption_RelativeToMainWindow = 1 << 0, ///< Skips restoring the main window geometry and the restored dock widgets will use relative sizing.
|
||||||
///< Loading layouts won't change the main window geometry and just use whatever the user has at the moment.
|
///< Loading layouts won't change the main window geometry and just use whatever the user has at the moment.
|
||||||
|
RestoreOption_AbsoluteFloatingDockWindows = 1 << 1, ///< Skips scaling of floating dock windows relative to the main window.
|
||||||
};
|
};
|
||||||
Q_DECLARE_FLAGS(RestoreOptions, RestoreOption)
|
Q_DECLARE_FLAGS(RestoreOptions, RestoreOption)
|
||||||
Q_ENUM_NS(RestoreOptions)
|
Q_ENUM_NS(RestoreOptions)
|
||||||
|
|||||||
@@ -66,15 +66,22 @@ LayoutSaver::Layout *LayoutSaver::Layout::s_currentLayoutBeingRestored = nullptr
|
|||||||
|
|
||||||
inline InternalRestoreOptions internalRestoreOptions(RestoreOptions options)
|
inline InternalRestoreOptions internalRestoreOptions(RestoreOptions options)
|
||||||
{
|
{
|
||||||
if (options == RestoreOption_None) {
|
InternalRestoreOptions ret = {};
|
||||||
return InternalRestoreOption::None;
|
if (options.testFlag(RestoreOption_RelativeToMainWindow)) {
|
||||||
} else if (options == RestoreOption_RelativeToMainWindow) {
|
ret.setFlag(InternalRestoreOption::SkipMainWindowGeometry);
|
||||||
return InternalRestoreOptions(InternalRestoreOption::SkipMainWindowGeometry)
|
ret.setFlag(InternalRestoreOption::RelativeFloatingWindowGeometry);
|
||||||
| InternalRestoreOption::RelativeFloatingWindowGeometry;
|
options.setFlag(RestoreOption_RelativeToMainWindow, false);
|
||||||
} else {
|
|
||||||
qWarning() << Q_FUNC_INFO << "Unknown options" << options;
|
|
||||||
return {};
|
|
||||||
}
|
}
|
||||||
|
if (options.testFlag(RestoreOption_AbsoluteFloatingDockWindows)) {
|
||||||
|
ret.setFlag(InternalRestoreOption::RelativeFloatingWindowGeometry, false);
|
||||||
|
options.setFlag(RestoreOption_AbsoluteFloatingDockWindows, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (options != RestoreOption_None) {
|
||||||
|
qWarning() << Q_FUNC_INFO << "Unknown options" << options;
|
||||||
|
}
|
||||||
|
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool LayoutSaver::Private::s_restoreInProgress = false;
|
bool LayoutSaver::Private::s_restoreInProgress = false;
|
||||||
@@ -831,7 +838,7 @@ void LayoutSaver::FloatingWindow::fromVariantMap(const QVariantMap &map)
|
|||||||
geometry = Layouting::mapToRect(map.value(QStringLiteral("geometry")).toMap());
|
geometry = Layouting::mapToRect(map.value(QStringLiteral("geometry")).toMap());
|
||||||
normalGeometry = Layouting::mapToRect(map.value(QStringLiteral("normalGeometry")).toMap());
|
normalGeometry = Layouting::mapToRect(map.value(QStringLiteral("normalGeometry")).toMap());
|
||||||
screenIndex = map.value(QStringLiteral("screenIndex")).toInt();
|
screenIndex = map.value(QStringLiteral("screenIndex")).toInt();
|
||||||
flags = map.value(QStringLiteral("flags")).toInt();
|
flags = map.value(QStringLiteral("flags"), int(FloatingWindowFlag::FromGlobalConfig)).toInt();
|
||||||
screenSize = Layouting::mapToSize(map.value(QStringLiteral("screenSize")).toMap());
|
screenSize = Layouting::mapToSize(map.value(QStringLiteral("screenSize")).toMap());
|
||||||
isVisible = map.value(QStringLiteral("isVisible")).toBool();
|
isVisible = map.value(QStringLiteral("isVisible")).toBool();
|
||||||
affinities = variantToStringList(map.value(QStringLiteral("affinities")).toList());
|
affinities = variantToStringList(map.value(QStringLiteral("affinities")).toList());
|
||||||
|
|||||||
@@ -553,8 +553,8 @@ void MainWindowBase::overlayOnSideBar(DockWidgetBase *dw)
|
|||||||
d->m_overlayedDockWidget = dw;
|
d->m_overlayedDockWidget = dw;
|
||||||
frame->addWidget(dw);
|
frame->addWidget(dw);
|
||||||
d->updateOverlayGeometry(dw->d->lastPosition()->lastOverlayedGeometry(sb->location()).size());
|
d->updateOverlayGeometry(dw->d->lastPosition()->lastOverlayedGeometry(sb->location()).size());
|
||||||
connect(frame, &QWidgetAdapter::widgetGeometryChanged, this, [dw, loc = sb->location(), frame] {
|
connect(frame, &QWidgetAdapter::widgetGeometryChanged, this, [dw, sb, frame] {
|
||||||
dw->d->lastPosition()->setLastOverlayedGeometry(loc, frame->QWidgetAdapter::geometry());
|
dw->d->lastPosition()->setLastOverlayedGeometry(sb->location(), frame->QWidgetAdapter::geometry());
|
||||||
});
|
});
|
||||||
|
|
||||||
frame->setAllowedResizeSides(d->allowedResizeSides(sb->location()));
|
frame->setAllowedResizeSides(d->allowedResizeSides(sb->location()));
|
||||||
|
|||||||
@@ -476,7 +476,7 @@ bool DockRegistry::isSane() const
|
|||||||
names.insert(name);
|
names.insert(name);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!mainwindow->multiSplitter()->checkSanity())
|
if (!mainwindow->layoutWidget()->checkSanity())
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -684,7 +684,7 @@ void DockRegistry::clear(const DockWidgetBase::List &dockWidgets,
|
|||||||
|
|
||||||
for (auto mw : qAsConst(mainWindows)) {
|
for (auto mw : qAsConst(mainWindows)) {
|
||||||
if (affinities.isEmpty() || affinitiesMatch(affinities, mw->affinities())) {
|
if (affinities.isEmpty() || affinitiesMatch(affinities, mw->affinities())) {
|
||||||
mw->multiSplitter()->clearLayout();
|
mw->layoutWidget()->clearLayout();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -173,7 +173,7 @@ public:
|
|||||||
*
|
*
|
||||||
* @param dumpDebug If true then each layout is dumped too
|
* @param dumpDebug If true then each layout is dumped too
|
||||||
*
|
*
|
||||||
* This is called by the unit-tests or the fuzzer. If during this the framework spits a
|
* This is called by the unit-tests. If during this the framework spits a
|
||||||
* qWarning() then the app will qFatal()
|
* qWarning() then the app will qFatal()
|
||||||
*/
|
*/
|
||||||
void checkSanityAll(bool dumpDebug = false);
|
void checkSanityAll(bool dumpDebug = false);
|
||||||
|
|||||||
@@ -106,6 +106,9 @@ public:
|
|||||||
/// Experimental, internal, not for general use.
|
/// Experimental, internal, not for general use.
|
||||||
void enableFallbackMouseGrabber();
|
void enableFallbackMouseGrabber();
|
||||||
|
|
||||||
|
// Returns the active state
|
||||||
|
StateBase *activeState() const;
|
||||||
|
|
||||||
Q_SIGNALS:
|
Q_SIGNALS:
|
||||||
void mousePressed();
|
void mousePressed();
|
||||||
void manhattanLengthMove();
|
void manhattanLengthMove();
|
||||||
@@ -128,7 +131,6 @@ private:
|
|||||||
friend class StateDraggingWayland;
|
friend class StateDraggingWayland;
|
||||||
|
|
||||||
DragController(QObject * = nullptr);
|
DragController(QObject * = nullptr);
|
||||||
StateBase *activeState() const;
|
|
||||||
WidgetType *qtTopLevelUnderCursor() const;
|
WidgetType *qtTopLevelUnderCursor() const;
|
||||||
Draggable *draggableForQObject(QObject *o) const;
|
Draggable *draggableForQObject(QObject *o) const;
|
||||||
QPoint m_pressPos;
|
QPoint m_pressPos;
|
||||||
|
|||||||
@@ -31,10 +31,14 @@ DropIndicatorOverlayInterface::DropIndicatorOverlayInterface(DropArea *dropArea)
|
|||||||
|
|
||||||
connect(DockRegistry::self(), &DockRegistry::dropIndicatorsInhibitedChanged, this,
|
connect(DockRegistry::self(), &DockRegistry::dropIndicatorsInhibitedChanged, this,
|
||||||
[this](bool inhibited) {
|
[this](bool inhibited) {
|
||||||
if (inhibited)
|
if (inhibited) {
|
||||||
removeHover();
|
removeHover();
|
||||||
|
} else {
|
||||||
// if false then simply moving the mouse will make the drop indicators appear again
|
// Re-add hover. Fastest way is simply faking a mouse move
|
||||||
|
if (auto state = qobject_cast<StateDragging *>(DragController::instance()->activeState())) {
|
||||||
|
state->handleMouseMove(QCursor::pos());
|
||||||
|
}
|
||||||
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -807,3 +807,8 @@ bool FloatingWindow::isUtilityWindow() const
|
|||||||
const bool dontUse = (m_flags & FloatingWindowFlag::DontUseParentForFloatingWindows) && (m_flags & FloatingWindowFlag::UseQtWindow);
|
const bool dontUse = (m_flags & FloatingWindowFlag::DontUseParentForFloatingWindows) && (m_flags & FloatingWindowFlag::UseQtWindow);
|
||||||
return !dontUse;
|
return !dontUse;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
FloatingWindowFlags FloatingWindow::floatingWindowFlags() const
|
||||||
|
{
|
||||||
|
return m_flags;
|
||||||
|
}
|
||||||
|
|||||||
@@ -233,6 +233,9 @@ public:
|
|||||||
/// @brief Returns whether this floating window supports showing a maximize button
|
/// @brief Returns whether this floating window supports showing a maximize button
|
||||||
bool supportsMaximizeButton() const;
|
bool supportsMaximizeButton() const;
|
||||||
|
|
||||||
|
/// Returns the per-floating window flags
|
||||||
|
FloatingWindowFlags floatingWindowFlags() const;
|
||||||
|
|
||||||
Q_SIGNALS:
|
Q_SIGNALS:
|
||||||
void activatedChanged();
|
void activatedChanged();
|
||||||
void numFramesChanged();
|
void numFramesChanged();
|
||||||
|
|||||||
@@ -173,10 +173,11 @@ LayoutSaver::Position Position::serialize() const
|
|||||||
|
|
||||||
Layouting::Item *item = itemRef->item;
|
Layouting::Item *item = itemRef->item;
|
||||||
LayoutWidget *layout = DockRegistry::self()->layoutForItem(item);
|
LayoutWidget *layout = DockRegistry::self()->layoutForItem(item);
|
||||||
|
Q_ASSERT(layout);
|
||||||
const auto itemIndex = layout->items().indexOf(item);
|
const auto itemIndex = layout->items().indexOf(item);
|
||||||
|
|
||||||
auto fw = layout->floatingWindow();
|
auto fw = layout->floatingWindow();
|
||||||
auto mainWindow = layout->mainWindow();
|
auto mainWindow = layout->mainWindow(/*honourNesting=*/true);
|
||||||
Q_ASSERT(mainWindow || fw);
|
Q_ASSERT(mainWindow || fw);
|
||||||
p.isFloatingWindow = fw;
|
p.isFloatingWindow = fw;
|
||||||
|
|
||||||
|
|||||||
@@ -33,7 +33,7 @@ TitleBar::TitleBar(Frame *parent)
|
|||||||
, m_frame(parent)
|
, m_frame(parent)
|
||||||
, m_floatingWindow(nullptr)
|
, m_floatingWindow(nullptr)
|
||||||
, m_genericWidget(nullptr)
|
, m_genericWidget(nullptr)
|
||||||
, m_supportsAutoHide(Config::self().flags() & Config::Flag_AutoHideSupport)
|
, m_supportsAutoHide((Config::self().flags() & Config::Flag_AutoHideSupport) == Config::Flag_AutoHideSupport)
|
||||||
{
|
{
|
||||||
connect(m_frame, &Frame::numDockWidgetsChanged, this, &TitleBar::updateCloseButton);
|
connect(m_frame, &Frame::numDockWidgetsChanged, this, &TitleBar::updateCloseButton);
|
||||||
connect(m_frame, &Frame::isFocusedChanged, this, &TitleBar::isFocusedChanged);
|
connect(m_frame, &Frame::isFocusedChanged, this, &TitleBar::isFocusedChanged);
|
||||||
@@ -51,7 +51,7 @@ TitleBar::TitleBar(FloatingWindow *parent)
|
|||||||
, m_frame(nullptr)
|
, m_frame(nullptr)
|
||||||
, m_floatingWindow(parent)
|
, m_floatingWindow(parent)
|
||||||
, m_genericWidget(nullptr)
|
, m_genericWidget(nullptr)
|
||||||
, m_supportsAutoHide(Config::self().flags() & Config::Flag_AutoHideSupport)
|
, m_supportsAutoHide((Config::self().flags() & Config::Flag_AutoHideSupport) == Config::Flag_AutoHideSupport)
|
||||||
{
|
{
|
||||||
connect(m_floatingWindow, &FloatingWindow::numFramesChanged, this, &TitleBar::updateButtons);
|
connect(m_floatingWindow, &FloatingWindow::numFramesChanged, this, &TitleBar::updateButtons);
|
||||||
connect(m_floatingWindow, &FloatingWindow::windowStateChanged, this, &TitleBar::updateMaximizeButton);
|
connect(m_floatingWindow, &FloatingWindow::windowStateChanged, this, &TitleBar::updateMaximizeButton);
|
||||||
|
|||||||
@@ -369,6 +369,7 @@ bool WidgetResizeHandler::handleWindowsNativeEvent(QWindow *w, MSG *msg,
|
|||||||
const int borderWidth = 8;
|
const int borderWidth = 8;
|
||||||
const bool hasFixedWidth = w->minimumWidth() == w->maximumWidth();
|
const bool hasFixedWidth = w->minimumWidth() == w->maximumWidth();
|
||||||
const bool hasFixedHeight = w->minimumHeight() == w->maximumHeight();
|
const bool hasFixedHeight = w->minimumHeight() == w->maximumHeight();
|
||||||
|
const bool hasFixedWidthOrHeight = hasFixedWidth || hasFixedHeight;
|
||||||
|
|
||||||
*result = 0;
|
*result = 0;
|
||||||
const int xPos = GET_X_LPARAM(msg->lParam);
|
const int xPos = GET_X_LPARAM(msg->lParam);
|
||||||
@@ -376,13 +377,13 @@ bool WidgetResizeHandler::handleWindowsNativeEvent(QWindow *w, MSG *msg,
|
|||||||
RECT rect;
|
RECT rect;
|
||||||
GetWindowRect(reinterpret_cast<HWND>(w->winId()), &rect);
|
GetWindowRect(reinterpret_cast<HWND>(w->winId()), &rect);
|
||||||
|
|
||||||
if (xPos >= rect.left && xPos <= rect.left + borderWidth && yPos <= rect.bottom && yPos >= rect.bottom - borderWidth && features.hasResize()) {
|
if (!hasFixedWidthOrHeight && xPos >= rect.left && xPos <= rect.left + borderWidth && yPos <= rect.bottom && yPos >= rect.bottom - borderWidth && features.hasResize()) {
|
||||||
*result = HTBOTTOMLEFT;
|
*result = HTBOTTOMLEFT;
|
||||||
} else if (xPos < rect.right && xPos >= rect.right - borderWidth && yPos <= rect.bottom && yPos >= rect.bottom - borderWidth && features.hasResize()) {
|
} else if (!hasFixedWidthOrHeight && xPos < rect.right && xPos >= rect.right - borderWidth && yPos <= rect.bottom && yPos >= rect.bottom - borderWidth && features.hasResize()) {
|
||||||
*result = HTBOTTOMRIGHT;
|
*result = HTBOTTOMRIGHT;
|
||||||
} else if (xPos >= rect.left && xPos <= rect.left + borderWidth && yPos >= rect.top && yPos <= rect.top + borderWidth && features.hasResize()) {
|
} else if (!hasFixedWidthOrHeight && xPos >= rect.left && xPos <= rect.left + borderWidth && yPos >= rect.top && yPos <= rect.top + borderWidth && features.hasResize()) {
|
||||||
*result = HTTOPLEFT;
|
*result = HTTOPLEFT;
|
||||||
} else if (xPos <= rect.right && xPos >= rect.right - borderWidth && yPos >= rect.top && yPos < rect.top + borderWidth && features.hasResize()) {
|
} else if (!hasFixedWidthOrHeight && xPos <= rect.right && xPos >= rect.right - borderWidth && yPos >= rect.top && yPos < rect.top + borderWidth && features.hasResize()) {
|
||||||
*result = HTTOPRIGHT;
|
*result = HTTOPRIGHT;
|
||||||
} else if (!hasFixedWidth && xPos >= rect.left && xPos <= rect.left + borderWidth && features.hasResize()) {
|
} else if (!hasFixedWidth && xPos >= rect.left && xPos <= rect.left + borderWidth && features.hasResize()) {
|
||||||
*result = HTLEFT;
|
*result = HTLEFT;
|
||||||
|
|||||||
@@ -96,7 +96,7 @@ WindowBeingDragged::~WindowBeingDragged()
|
|||||||
{
|
{
|
||||||
grabMouse(false);
|
grabMouse(false);
|
||||||
|
|
||||||
if (!isWayland()) { // Wayland doesn't support setting opacity
|
if (!isWayland() && m_floatingWindow) { // Wayland doesn't support setting opacity
|
||||||
// Restore opacity to fully opaque if needed
|
// Restore opacity to fully opaque if needed
|
||||||
const qreal opacity = Config::self().draggedWindowOpacity();
|
const qreal opacity = Config::self().draggedWindowOpacity();
|
||||||
if (!qIsNaN(opacity) && !qFuzzyCompare(1.0, opacity))
|
if (!qIsNaN(opacity) && !qFuzzyCompare(1.0, opacity))
|
||||||
|
|||||||
@@ -9,10 +9,6 @@
|
|||||||
# Contact KDAB at <info@kdab.com> for commercial licensing options.
|
# Contact KDAB at <info@kdab.com> for commercial licensing options.
|
||||||
#
|
#
|
||||||
|
|
||||||
# Tests:
|
|
||||||
# 1. tst_docks - The KDDockWidge tests. Compatible with QtWidgets and QtQuick.
|
|
||||||
# 2. tests_launcher - helper executable to paralelize the execution of tests
|
|
||||||
|
|
||||||
if(POLICY CMP0043)
|
if(POLICY CMP0043)
|
||||||
cmake_policy(SET CMP0043 NEW)
|
cmake_policy(SET CMP0043 NEW)
|
||||||
endif()
|
endif()
|
||||||
@@ -29,8 +25,6 @@ add_definitions(-DQT_NO_KEYWORDS)
|
|||||||
|
|
||||||
set(TESTING_SRCS utils.cpp Testing.cpp)
|
set(TESTING_SRCS utils.cpp Testing.cpp)
|
||||||
|
|
||||||
option(KDDockWidgets_FUZZER "Builds the fuzzer" ON)
|
|
||||||
|
|
||||||
# tst_docks
|
# tst_docks
|
||||||
set(TESTING_RESOURCES ${CMAKE_CURRENT_SOURCE_DIR}/test_resources.qrc)
|
set(TESTING_RESOURCES ${CMAKE_CURRENT_SOURCE_DIR}/test_resources.qrc)
|
||||||
add_executable(
|
add_executable(
|
||||||
@@ -46,16 +40,4 @@ if(NOT ${PROJECT_NAME}_QTQUICK)
|
|||||||
add_executable(tst_multisplitter tst_multisplitter.cpp)
|
add_executable(tst_multisplitter tst_multisplitter.cpp)
|
||||||
target_link_libraries(tst_multisplitter kddockwidgets Qt${Qt_VERSION_MAJOR}::Test)
|
target_link_libraries(tst_multisplitter kddockwidgets Qt${Qt_VERSION_MAJOR}::Test)
|
||||||
set_compiler_flags(tst_multisplitter)
|
set_compiler_flags(tst_multisplitter)
|
||||||
if(KDDockWidgets_FUZZER)
|
|
||||||
add_subdirectory(fuzzer)
|
|
||||||
endif()
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# tests_launcher
|
|
||||||
add_executable(
|
|
||||||
tests_launcher
|
|
||||||
tests_launcher.cpp
|
|
||||||
)
|
|
||||||
target_link_libraries(
|
|
||||||
tests_launcher Qt${Qt_VERSION_MAJOR}::Core
|
|
||||||
)
|
|
||||||
|
|||||||
1016
tests/fuzzer/9.json
1016
tests/fuzzer/9.json
File diff suppressed because it is too large
Load Diff
@@ -1,21 +0,0 @@
|
|||||||
#
|
|
||||||
# This file is part of KDDockWidgets.
|
|
||||||
#
|
|
||||||
# SPDX-FileCopyrightText: 2019-2023 Klarälvdalens Datakonsult AB, a KDAB Group company <info@kdab.com>
|
|
||||||
# Author: Sergio Martins <sergio.martins@kdab.com>
|
|
||||||
#
|
|
||||||
# SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only
|
|
||||||
#
|
|
||||||
# Contact KDAB at <info@kdab.com> for commercial licensing options.
|
|
||||||
#
|
|
||||||
|
|
||||||
add_executable(
|
|
||||||
fuzzer
|
|
||||||
../Testing.cpp Fuzzer.cpp main.cpp Operations.cpp
|
|
||||||
)
|
|
||||||
|
|
||||||
set_property(TARGET fuzzer PROPERTY CXX_STANDARD 17)
|
|
||||||
target_link_libraries(
|
|
||||||
fuzzer kddockwidgets Qt${Qt_VERSION_MAJOR}::Widgets Qt${Qt_VERSION_MAJOR}::Test
|
|
||||||
)
|
|
||||||
set_compiler_flags(fuzzer)
|
|
||||||
@@ -1,404 +0,0 @@
|
|||||||
/*
|
|
||||||
This file is part of KDDockWidgets.
|
|
||||||
|
|
||||||
SPDX-FileCopyrightText: 2019-2023 Klarälvdalens Datakonsult AB, a KDAB Group company <info@kdab.com>
|
|
||||||
Author: Sérgio Martins <sergio.martins@kdab.com>
|
|
||||||
|
|
||||||
SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only
|
|
||||||
|
|
||||||
Contact KDAB at <info@kdab.com> for commercial licensing options.
|
|
||||||
*/
|
|
||||||
|
|
||||||
// We don't care about performance related checks in the tests
|
|
||||||
// clazy:excludeall=ctor-missing-parent-argument,missing-qobject-macro,range-loop,missing-typeinfo,detaching-member,function-args-by-ref,non-pod-global-static,reserve-candidates,qstring-allocations
|
|
||||||
|
|
||||||
#include "Fuzzer.h"
|
|
||||||
#include "DockRegistry_p.h"
|
|
||||||
#include "DockWidget.h"
|
|
||||||
#include "MainWindow.h"
|
|
||||||
#include "FloatingWindow_p.h"
|
|
||||||
|
|
||||||
#include <QJsonDocument>
|
|
||||||
|
|
||||||
#include <QString>
|
|
||||||
#include <QTest>
|
|
||||||
|
|
||||||
using namespace KDDockWidgets;
|
|
||||||
using namespace KDDockWidgets::Testing;
|
|
||||||
using namespace KDDockWidgets::Testing::Operations;
|
|
||||||
|
|
||||||
#define OPERATIONS_PER_TEST 200
|
|
||||||
|
|
||||||
static MainWindow *createMainWindow(const Fuzzer::MainWindowDescriptor &mwd)
|
|
||||||
{
|
|
||||||
auto mainWindow = new MainWindow(mwd.name, mwd.mainWindowOption);
|
|
||||||
|
|
||||||
mainWindow->setGeometry(mwd.geometry);
|
|
||||||
|
|
||||||
mainWindow->show();
|
|
||||||
return mainWindow;
|
|
||||||
}
|
|
||||||
|
|
||||||
static DockWidget *createDockWidget(const Fuzzer::DockWidgetDescriptor &dwd)
|
|
||||||
{
|
|
||||||
auto dockWidget = new DockWidget(dwd.name);
|
|
||||||
|
|
||||||
dockWidget->setWidget(new Testing::HostedWidget(dwd.minSize));
|
|
||||||
|
|
||||||
if (dwd.isFloating)
|
|
||||||
dockWidget->setGeometry(dwd.geometry);
|
|
||||||
|
|
||||||
if (dwd.isVisible)
|
|
||||||
dockWidget->show();
|
|
||||||
|
|
||||||
return dockWidget;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void createLayout(const Fuzzer::Layout &layout)
|
|
||||||
{
|
|
||||||
for (const Fuzzer::MainWindowDescriptor &mwd : layout.mainWindows) {
|
|
||||||
createMainWindow(mwd);
|
|
||||||
}
|
|
||||||
|
|
||||||
for (const Fuzzer::DockWidgetDescriptor &dwd : layout.dockWidgets) {
|
|
||||||
createDockWidget(dwd);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void Fuzzer::runTest(const Test &test)
|
|
||||||
{
|
|
||||||
m_lastSavedLayout.clear();
|
|
||||||
m_currentTest = test;
|
|
||||||
|
|
||||||
if (!DockRegistry::self()->isEmpty())
|
|
||||||
qFatal("There's dock widgets and the start runTest");
|
|
||||||
|
|
||||||
const bool skipsLast = m_options & Option_SkipLast;
|
|
||||||
createLayout(test.initialLayout);
|
|
||||||
int index = 0;
|
|
||||||
|
|
||||||
auto operations = test.operations;
|
|
||||||
auto last = operations.last();
|
|
||||||
if (skipsLast)
|
|
||||||
operations.removeLast();
|
|
||||||
|
|
||||||
for (const auto &op : operations) {
|
|
||||||
index++;
|
|
||||||
|
|
||||||
#if 0
|
|
||||||
// Uncomment to set a breakpoint! Check the last good index printed in the terminal
|
|
||||||
if (index == 82) {
|
|
||||||
qDebug() << "About to run the bad guy. Layout:";
|
|
||||||
DockRegistry::self()->checkSanityAll(/*dumpDebug=*/true);
|
|
||||||
qDebug() << "Running the bad guy:";
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
op->execute();
|
|
||||||
if (op->hasParams())
|
|
||||||
qDebug() << "Ran" << op->description() << index;
|
|
||||||
QTest::qWait(m_operationDelayMS);
|
|
||||||
DockRegistry::self()->checkSanityAll();
|
|
||||||
}
|
|
||||||
|
|
||||||
if (skipsLast)
|
|
||||||
qDebug() << "Skipped" << last->toString() << "\n";
|
|
||||||
|
|
||||||
const bool willQuit = !(m_options & Option_NoQuit);
|
|
||||||
if (willQuit) {
|
|
||||||
for (MainWindowBase *mw : DockRegistry::self()->mainwindows())
|
|
||||||
delete mw;
|
|
||||||
|
|
||||||
for (FloatingWindow *fw : DockRegistry::self()->floatingWindows())
|
|
||||||
delete fw;
|
|
||||||
|
|
||||||
for (DockWidgetBase *dw : DockRegistry::self()->dockwidgets())
|
|
||||||
delete dw;
|
|
||||||
|
|
||||||
if (!DockRegistry::self()->isEmpty())
|
|
||||||
qFatal("There's still dock widgets and the end of runTest");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Fuzzer::Fuzzer(bool dumpJsonOnFailure, Options options, QObject *parent)
|
|
||||||
: QObject(parent)
|
|
||||||
, m_randomEngine(m_randomDevice())
|
|
||||||
, m_dumpJsonOnFailure(dumpJsonOnFailure)
|
|
||||||
, m_options(options)
|
|
||||||
{
|
|
||||||
Testing::installFatalMessageHandler();
|
|
||||||
Testing::setWarningObserver(this);
|
|
||||||
}
|
|
||||||
|
|
||||||
Fuzzer::Layout Fuzzer::generateRandomLayout()
|
|
||||||
{
|
|
||||||
// for now we only support 1 main window
|
|
||||||
Fuzzer::Layout layout;
|
|
||||||
Fuzzer::MainWindowDescriptor mainWindow;
|
|
||||||
|
|
||||||
static int count = 0;
|
|
||||||
count++;
|
|
||||||
mainWindow.name = QStringLiteral("MainWindow-%1").arg(count);
|
|
||||||
|
|
||||||
mainWindow.geometry = randomGeometry();
|
|
||||||
mainWindow.mainWindowOption = MainWindowOption_None; // TODO: Maybe test other options
|
|
||||||
layout.mainWindows << mainWindow;
|
|
||||||
|
|
||||||
std::uniform_int_distribution<> numDocksDistrib(1, 10); // TODO: Increase
|
|
||||||
const int numDockWidgets = numDocksDistrib(m_randomEngine);
|
|
||||||
for (int i = 0; i < numDockWidgets; ++i) {
|
|
||||||
layout.dockWidgets << generateRandomDockWidget();
|
|
||||||
}
|
|
||||||
|
|
||||||
return layout;
|
|
||||||
}
|
|
||||||
|
|
||||||
Fuzzer::DockWidgetDescriptor Fuzzer::generateRandomDockWidget()
|
|
||||||
{
|
|
||||||
Fuzzer::DockWidgetDescriptor dwd;
|
|
||||||
|
|
||||||
static int count = 0;
|
|
||||||
count++;
|
|
||||||
dwd.name = QStringLiteral("DockWidget-%1").arg(count);
|
|
||||||
dwd.isFloating = getRandomBool(35);
|
|
||||||
dwd.isVisible = getRandomBool(70);
|
|
||||||
|
|
||||||
std::uniform_int_distribution<> minSizeDistriv(150, 600);
|
|
||||||
|
|
||||||
dwd.minSize.setWidth(minSizeDistriv(m_randomEngine));
|
|
||||||
dwd.minSize.setHeight(minSizeDistriv(m_randomEngine));
|
|
||||||
|
|
||||||
const bool hasMaxSize = getRandomBool(25); // 25% of all dock widgets have a max-size
|
|
||||||
if (hasMaxSize) {
|
|
||||||
std::uniform_int_distribution<> maxSizeDistriv(200, 600);
|
|
||||||
dwd.maxSize.setWidth(dwd.minSize.width() + minSizeDistriv(m_randomEngine));
|
|
||||||
dwd.maxSize.setHeight(dwd.minSize.height() + minSizeDistriv(m_randomEngine));
|
|
||||||
}
|
|
||||||
|
|
||||||
QPoint pos = getRandomPos();
|
|
||||||
std::uniform_int_distribution<> widthDistrib(dwd.minSize.width(), hasMaxSize ? dwd.maxSize.width() : dwd.minSize.width() + 600);
|
|
||||||
std::uniform_int_distribution<> heightDistrib(dwd.minSize.height(), hasMaxSize ? dwd.maxSize.height() : dwd.minSize.height() + 600);
|
|
||||||
dwd.geometry = QRect(pos, QSize(widthDistrib(m_randomEngine), heightDistrib(m_randomEngine)));
|
|
||||||
|
|
||||||
return dwd;
|
|
||||||
}
|
|
||||||
|
|
||||||
Fuzzer::DockWidgetDescriptor::List Fuzzer::generateRandomDockWidgets(int num)
|
|
||||||
{
|
|
||||||
Fuzzer::DockWidgetDescriptor::List dockWidgets;
|
|
||||||
for (int i = 0; i < num; ++i) {
|
|
||||||
dockWidgets << generateRandomDockWidget();
|
|
||||||
}
|
|
||||||
return dockWidgets;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool Fuzzer::getRandomBool(int truePercentage)
|
|
||||||
{
|
|
||||||
std::uniform_int_distribution<> distrib(1, 100);
|
|
||||||
return distrib(m_randomEngine) < truePercentage;
|
|
||||||
}
|
|
||||||
|
|
||||||
Testing::AddDockWidgetParams Fuzzer::getRandomAddDockWidgetParams()
|
|
||||||
{
|
|
||||||
AddDockWidgetParams params;
|
|
||||||
|
|
||||||
if (auto dw = getRandomDockWidget()) {
|
|
||||||
params.dockWidgetName = dw->uniqueName();
|
|
||||||
} else {
|
|
||||||
qWarning() << Q_FUNC_INFO << "No dock widgets exist yet!";
|
|
||||||
return {};
|
|
||||||
}
|
|
||||||
|
|
||||||
if (auto mw = getRandomMainWindow()) {
|
|
||||||
params.mainWindowName = mw->uniqueName();
|
|
||||||
} else {
|
|
||||||
qWarning() << Q_FUNC_INFO << "No main widgets exist yet!";
|
|
||||||
return {};
|
|
||||||
}
|
|
||||||
|
|
||||||
if (getRandomBool()) {
|
|
||||||
if (auto rt = getRandomRelativeTo(params.mainWindow(), params.dockWidget())) {
|
|
||||||
params.relativeToName = rt->uniqueName();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
params.location = getRandomLocation();
|
|
||||||
params.addingOption = InitialVisibilityOption::StartVisible; // TODO: Test the other ones
|
|
||||||
|
|
||||||
return params;
|
|
||||||
}
|
|
||||||
|
|
||||||
MainWindowBase *Fuzzer::getRandomMainWindow()
|
|
||||||
{
|
|
||||||
auto windows = DockRegistry::self()->mainwindows();
|
|
||||||
if (windows.isEmpty()) {
|
|
||||||
qWarning() << Q_FUNC_INFO << "No MainWindows exist yet!";
|
|
||||||
return nullptr;
|
|
||||||
}
|
|
||||||
|
|
||||||
return windows.first();
|
|
||||||
}
|
|
||||||
|
|
||||||
DockWidgetBase *Fuzzer::getRandomDockWidget(const DockWidgetBase::List &excluding)
|
|
||||||
{
|
|
||||||
auto docks = DockRegistry::self()->dockwidgets();
|
|
||||||
for (auto dw : excluding)
|
|
||||||
docks.removeOne(dw);
|
|
||||||
|
|
||||||
if (docks.isEmpty())
|
|
||||||
return nullptr;
|
|
||||||
|
|
||||||
std::uniform_int_distribution<> locationDistrib(0, docks.size() - 1);
|
|
||||||
return docks[locationDistrib(m_randomEngine)];
|
|
||||||
}
|
|
||||||
|
|
||||||
DockWidgetBase *Fuzzer::getRandomRelativeTo(MainWindowBase *mainWindow, DockWidgetBase *excluding)
|
|
||||||
{
|
|
||||||
auto docks = DockRegistry::self()->dockwidgets();
|
|
||||||
|
|
||||||
DockWidgetBase::List candidates;
|
|
||||||
|
|
||||||
for (DockWidgetBase *dw : docks) {
|
|
||||||
if (dw != excluding && dw->window() == mainWindow)
|
|
||||||
candidates << dw;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (candidates.isEmpty())
|
|
||||||
return nullptr;
|
|
||||||
|
|
||||||
std::uniform_int_distribution<> locationDistrib(0, candidates.size() - 1);
|
|
||||||
return candidates[locationDistrib(m_randomEngine)];
|
|
||||||
}
|
|
||||||
|
|
||||||
Location Fuzzer::getRandomLocation()
|
|
||||||
{
|
|
||||||
std::uniform_int_distribution<> locationDistrib(1, 4);
|
|
||||||
return Location(locationDistrib(m_randomEngine));
|
|
||||||
}
|
|
||||||
|
|
||||||
QPoint Fuzzer::getRandomPos()
|
|
||||||
{
|
|
||||||
std::uniform_int_distribution<> posDistrib(0, 500);
|
|
||||||
const int x = posDistrib(m_randomEngine);
|
|
||||||
const int y = posDistrib(m_randomEngine);
|
|
||||||
return { x, y };
|
|
||||||
}
|
|
||||||
|
|
||||||
OperationBase::Ptr Fuzzer::getRandomOperation()
|
|
||||||
{
|
|
||||||
std::uniform_int_distribution<> operationDistrib(OperationType_None + 1, OperationType_Count - 1);
|
|
||||||
auto operationType = OperationType(operationDistrib(m_randomEngine));
|
|
||||||
|
|
||||||
return OperationBase::newOperation(this, operationType);
|
|
||||||
}
|
|
||||||
|
|
||||||
Fuzzer::Test Fuzzer::generateRandomTest()
|
|
||||||
{
|
|
||||||
Fuzzer::Test test;
|
|
||||||
test.initialLayout = generateRandomLayout();
|
|
||||||
|
|
||||||
const int numOperationsPerTest = OPERATIONS_PER_TEST;
|
|
||||||
test.operations.reserve(numOperationsPerTest);
|
|
||||||
for (int i = 0; i < numOperationsPerTest; ++i)
|
|
||||||
test.operations << getRandomOperation();
|
|
||||||
|
|
||||||
return test;
|
|
||||||
}
|
|
||||||
|
|
||||||
Fuzzer::Test::List Fuzzer::generateRandomTests(int num)
|
|
||||||
{
|
|
||||||
Fuzzer::Test::List tests;
|
|
||||||
|
|
||||||
for (int i = 0; i < num; ++i) {
|
|
||||||
tests << generateRandomTest();
|
|
||||||
}
|
|
||||||
|
|
||||||
return tests;
|
|
||||||
}
|
|
||||||
|
|
||||||
void Fuzzer::fuzz(FuzzerConfig config)
|
|
||||||
{
|
|
||||||
const Fuzzer::Test::List tests = generateRandomTests(config.numTests);
|
|
||||||
qDebug().noquote() << "Running" << QString("%1 tests...").arg(tests.size());
|
|
||||||
|
|
||||||
for (const auto &test : tests) {
|
|
||||||
runTest(test);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void Fuzzer::fuzz(const QStringList &jsonFiles)
|
|
||||||
{
|
|
||||||
if (jsonFiles.size() > 1 && (m_options & Option_SkipLast)) {
|
|
||||||
qFatal("Use -d only when passing a single json file");
|
|
||||||
}
|
|
||||||
|
|
||||||
for (const QString &jsonFile : jsonFiles)
|
|
||||||
fuzz(jsonFile);
|
|
||||||
}
|
|
||||||
|
|
||||||
void Fuzzer::fuzz(const QString &jsonFile)
|
|
||||||
{
|
|
||||||
m_currentJsonFile = jsonFile;
|
|
||||||
qDebug() << "\n"
|
|
||||||
<< Q_FUNC_INFO << jsonFile;
|
|
||||||
QFile file(jsonFile);
|
|
||||||
if (file.open(QIODevice::ReadOnly)) {
|
|
||||||
QJsonDocument doc = QJsonDocument::fromJson(file.readAll());
|
|
||||||
const QVariantMap map = doc.toVariant().toMap();
|
|
||||||
Test test = Test::fromVariantMap(this, map);
|
|
||||||
runTest(test);
|
|
||||||
} else {
|
|
||||||
qWarning() << Q_FUNC_INFO << "Failed to open file" << jsonFile;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
QRect Fuzzer::randomGeometry()
|
|
||||||
{
|
|
||||||
std::uniform_int_distribution<> posDistrib(0, 500);
|
|
||||||
std::uniform_int_distribution<> sizeDistrib(700, 1500);
|
|
||||||
const int width = posDistrib(m_randomEngine);
|
|
||||||
const int height = sizeDistrib(m_randomEngine);
|
|
||||||
|
|
||||||
QPoint pos = getRandomPos();
|
|
||||||
|
|
||||||
return QRect(pos, QSize(width, height));
|
|
||||||
}
|
|
||||||
|
|
||||||
void Fuzzer::onFatal()
|
|
||||||
{
|
|
||||||
if (m_dumpJsonOnFailure) {
|
|
||||||
// Tests failed! Let's dump
|
|
||||||
m_currentTest.dumpToJsonFile("fuzzer_dump.json");
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!m_currentJsonFile.isEmpty()) {
|
|
||||||
qDebug() << "failed json: " << m_currentJsonFile;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void Fuzzer::setDelayBetweenOperations(int delay)
|
|
||||||
{
|
|
||||||
m_operationDelayMS = delay;
|
|
||||||
}
|
|
||||||
|
|
||||||
QByteArray Fuzzer::lastSavedLayout() const
|
|
||||||
{
|
|
||||||
return m_lastSavedLayout;
|
|
||||||
}
|
|
||||||
|
|
||||||
void Fuzzer::setLastSavedLayout(const QByteArray &serialized)
|
|
||||||
{
|
|
||||||
m_lastSavedLayout = serialized;
|
|
||||||
}
|
|
||||||
|
|
||||||
void Fuzzer::Test::dumpToJsonFile(const QString &filename) const
|
|
||||||
{
|
|
||||||
const QVariantMap map = toVariantMap();
|
|
||||||
QJsonDocument jsonDoc = QJsonDocument::fromVariant(map);
|
|
||||||
QFile file(filename);
|
|
||||||
if (file.open(QIODevice::WriteOnly)) {
|
|
||||||
file.write(jsonDoc.toJson());
|
|
||||||
} else {
|
|
||||||
qDebug() << Q_FUNC_INFO << "Error opening file";
|
|
||||||
}
|
|
||||||
file.close();
|
|
||||||
}
|
|
||||||
@@ -1,283 +0,0 @@
|
|||||||
/*
|
|
||||||
This file is part of KDDockWidgets.
|
|
||||||
|
|
||||||
SPDX-FileCopyrightText: 2019-2023 Klarälvdalens Datakonsult AB, a KDAB Group company <info@kdab.com>
|
|
||||||
Author: Sérgio Martins <sergio.martins@kdab.com>
|
|
||||||
|
|
||||||
SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only
|
|
||||||
|
|
||||||
Contact KDAB at <info@kdab.com> for commercial licensing options.
|
|
||||||
*/
|
|
||||||
|
|
||||||
// We don't care about performance related checks in the tests
|
|
||||||
// clazy:excludeall=ctor-missing-parent-argument,missing-qobject-macro,range-loop,missing-typeinfo,detaching-member,function-args-by-ref,non-pod-global-static,reserve-candidates,qstring-allocations
|
|
||||||
|
|
||||||
#ifndef KDDOCKWIDGETS_FUZZER_H
|
|
||||||
#define KDDOCKWIDGETS_FUZZER_H
|
|
||||||
|
|
||||||
#include "../Testing.h"
|
|
||||||
#include "MainWindowBase.h"
|
|
||||||
#include "Operations.h"
|
|
||||||
|
|
||||||
#include <QJsonDocument>
|
|
||||||
#include <QVector>
|
|
||||||
|
|
||||||
#include <random>
|
|
||||||
|
|
||||||
namespace KDDockWidgets {
|
|
||||||
namespace Testing {
|
|
||||||
|
|
||||||
static QVariantMap sizeToVariantMap(QSize sz)
|
|
||||||
{
|
|
||||||
QVariantMap map;
|
|
||||||
map["width"] = sz.width();
|
|
||||||
map["height"] = sz.height();
|
|
||||||
return map;
|
|
||||||
}
|
|
||||||
|
|
||||||
static QVariantMap rectToVariantMap(QRect r)
|
|
||||||
{
|
|
||||||
QVariantMap map;
|
|
||||||
map["size"] = sizeToVariantMap(r.size());
|
|
||||||
map["x"] = r.x();
|
|
||||||
map["y"] = r.y();
|
|
||||||
return map;
|
|
||||||
}
|
|
||||||
|
|
||||||
static QSize sizeFromVariantMap(const QVariantMap &map)
|
|
||||||
{
|
|
||||||
return { map["width"].toInt(), map["height"].toInt() };
|
|
||||||
}
|
|
||||||
|
|
||||||
static QRect rectFromVariantMap(const QVariantMap &map)
|
|
||||||
{
|
|
||||||
const QSize sz = sizeFromVariantMap(map["size"].toMap());
|
|
||||||
return { map["x"].toInt(), map["y"].toInt(), sz.width(), sz.height() };
|
|
||||||
}
|
|
||||||
|
|
||||||
class Fuzzer : public QObject, WarningObserver
|
|
||||||
{
|
|
||||||
Q_OBJECT
|
|
||||||
public:
|
|
||||||
enum Option {
|
|
||||||
Option_None = 0,
|
|
||||||
Option_NoQuit = 1, ///< Don't quit when the tests finish. So we can debug in gammaray
|
|
||||||
Option_SkipLast = 2 ///< Don't execute the last test. Useful when the last one is the failing one and we want to inspect the state prior to crash
|
|
||||||
};
|
|
||||||
Q_DECLARE_FLAGS(Options, Option)
|
|
||||||
|
|
||||||
struct FuzzerConfig
|
|
||||||
{
|
|
||||||
int numTests;
|
|
||||||
int numOperationsPerTest;
|
|
||||||
bool singleMainWindow;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct DockWidgetDescriptor
|
|
||||||
{
|
|
||||||
typedef QVector<DockWidgetDescriptor> List;
|
|
||||||
QString name;
|
|
||||||
QSize minSize; // the minSize of the hosted widget
|
|
||||||
QSize maxSize;
|
|
||||||
QRect geometry;
|
|
||||||
bool isFloating;
|
|
||||||
bool isVisible;
|
|
||||||
|
|
||||||
QVariantMap toVariantMap() const
|
|
||||||
{
|
|
||||||
QVariantMap map;
|
|
||||||
map[QStringLiteral("name")] = name;
|
|
||||||
map[QStringLiteral("minSize")] = sizeToVariantMap(minSize);
|
|
||||||
map[QStringLiteral("maxSize")] = sizeToVariantMap(maxSize);
|
|
||||||
map[QStringLiteral("geometry")] = rectToVariantMap(geometry);
|
|
||||||
map[QStringLiteral("isFloating")] = isFloating;
|
|
||||||
map[QStringLiteral("isVisible")] = isVisible;
|
|
||||||
|
|
||||||
return map;
|
|
||||||
}
|
|
||||||
|
|
||||||
static DockWidgetDescriptor fromVariantMap(const QVariantMap &map)
|
|
||||||
{
|
|
||||||
DockWidgetDescriptor dock;
|
|
||||||
|
|
||||||
dock.name = map["name"].toString();
|
|
||||||
dock.minSize = sizeFromVariantMap(map["minSize"].toMap());
|
|
||||||
dock.maxSize = sizeFromVariantMap(map["maxSize"].toMap());
|
|
||||||
dock.geometry = rectFromVariantMap(map["geometry"].toMap());
|
|
||||||
dock.isFloating = map["isFloating"].toBool();
|
|
||||||
dock.isVisible = map["isVisible"].toBool();
|
|
||||||
|
|
||||||
return dock;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
struct MainWindowDescriptor
|
|
||||||
{
|
|
||||||
typedef QVector<MainWindowDescriptor> List;
|
|
||||||
QString name;
|
|
||||||
QRect geometry;
|
|
||||||
MainWindowOption mainWindowOption;
|
|
||||||
|
|
||||||
QVariantMap toVariantMap() const
|
|
||||||
{
|
|
||||||
QVariantMap map;
|
|
||||||
map[QStringLiteral("name")] = name;
|
|
||||||
map[QStringLiteral("geometry")] = rectToVariantMap(geometry);
|
|
||||||
map[QStringLiteral("mainWindowOption")] = mainWindowOption;
|
|
||||||
return map;
|
|
||||||
}
|
|
||||||
|
|
||||||
static MainWindowDescriptor fromVariantMap(const QVariantMap &map)
|
|
||||||
{
|
|
||||||
MainWindowDescriptor mainWindow;
|
|
||||||
|
|
||||||
mainWindow.name = map["name"].toString();
|
|
||||||
mainWindow.mainWindowOption = MainWindowOption(map["mainWindowOption"].toInt());
|
|
||||||
mainWindow.geometry = rectFromVariantMap(map["geometry"].toMap());
|
|
||||||
|
|
||||||
return mainWindow;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
struct Layout
|
|
||||||
{
|
|
||||||
typedef QVector<Layout> List;
|
|
||||||
MainWindowDescriptor::List mainWindows;
|
|
||||||
DockWidgetDescriptor::List dockWidgets;
|
|
||||||
|
|
||||||
QVariantMap toVariantMap() const
|
|
||||||
{
|
|
||||||
QVariantList mainWindowsVariant;
|
|
||||||
mainWindowsVariant.reserve(mainWindows.size());
|
|
||||||
for (const auto &mw : mainWindows) {
|
|
||||||
mainWindowsVariant << mw.toVariantMap();
|
|
||||||
}
|
|
||||||
|
|
||||||
QVariantList dockWidgetsVariant;
|
|
||||||
dockWidgetsVariant.reserve(dockWidgets.size());
|
|
||||||
for (const auto &dw : dockWidgets) {
|
|
||||||
dockWidgetsVariant << dw.toVariantMap();
|
|
||||||
}
|
|
||||||
|
|
||||||
QVariantMap map;
|
|
||||||
map[QStringLiteral("mainWindows")] = mainWindowsVariant;
|
|
||||||
map[QStringLiteral("dockWidgets")] = dockWidgetsVariant;
|
|
||||||
return map;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
static Layout fromVariantMap(const QVariantMap &map)
|
|
||||||
{
|
|
||||||
Layout l;
|
|
||||||
|
|
||||||
const QVariantList mainWindows = map["mainWindows"].toList();
|
|
||||||
const QVariantList dockWidgets = map["dockWidgets"].toList();
|
|
||||||
|
|
||||||
l.mainWindows.reserve(mainWindows.size());
|
|
||||||
for (const QVariant &mainwindow : mainWindows)
|
|
||||||
l.mainWindows.push_back(MainWindowDescriptor::fromVariantMap(mainwindow.toMap()));
|
|
||||||
|
|
||||||
l.dockWidgets.reserve(dockWidgets.size());
|
|
||||||
for (const QVariant &dockWidget : dockWidgets)
|
|
||||||
l.dockWidgets.push_back(DockWidgetDescriptor::fromVariantMap(dockWidget.toMap()));
|
|
||||||
|
|
||||||
return l;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
struct Test
|
|
||||||
{
|
|
||||||
typedef QVector<Test> List;
|
|
||||||
Layout initialLayout;
|
|
||||||
Operations::OperationBase::List operations;
|
|
||||||
|
|
||||||
void dumpToJsonFile(const QString &filename) const;
|
|
||||||
|
|
||||||
QVariantMap toVariantMap() const
|
|
||||||
{
|
|
||||||
QVariantMap map;
|
|
||||||
map[QStringLiteral("initialLayout")] = initialLayout.toVariantMap();
|
|
||||||
|
|
||||||
QVariantList operationsVariant;
|
|
||||||
operationsVariant.reserve(operations.size());
|
|
||||||
for (const auto &o : operations) {
|
|
||||||
QVariantMap operationVariant = o->toVariantMap();
|
|
||||||
if (operationVariant.isEmpty())
|
|
||||||
continue;
|
|
||||||
|
|
||||||
operationsVariant << operationVariant;
|
|
||||||
}
|
|
||||||
|
|
||||||
map[QStringLiteral("operations")] = operationsVariant;
|
|
||||||
return map;
|
|
||||||
}
|
|
||||||
|
|
||||||
static Test fromVariantMap(Fuzzer *fuzzer, const QVariantMap &map)
|
|
||||||
{
|
|
||||||
Test t;
|
|
||||||
t.initialLayout = Layout::fromVariantMap(map["initialLayout"].toMap());
|
|
||||||
|
|
||||||
const QVariantList operations = map["operations"].toList();
|
|
||||||
t.operations.reserve(operations.size());
|
|
||||||
for (const QVariant &operation : operations)
|
|
||||||
t.operations.push_back(Operations::OperationBase::fromVariantMap(fuzzer, operation.toMap()));
|
|
||||||
|
|
||||||
return t;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
void runTest(const Test &);
|
|
||||||
|
|
||||||
explicit Fuzzer(bool dumpJsonOnFailure, Options, QObject *parent = nullptr);
|
|
||||||
|
|
||||||
Fuzzer::Layout generateRandomLayout();
|
|
||||||
|
|
||||||
Fuzzer::DockWidgetDescriptor generateRandomDockWidget();
|
|
||||||
|
|
||||||
Fuzzer::DockWidgetDescriptor::List generateRandomDockWidgets(int num);
|
|
||||||
|
|
||||||
bool getRandomBool(int truePercentage = 50);
|
|
||||||
|
|
||||||
Testing::AddDockWidgetParams getRandomAddDockWidgetParams();
|
|
||||||
|
|
||||||
KDDockWidgets::MainWindowBase *getRandomMainWindow();
|
|
||||||
KDDockWidgets::DockWidgetBase *getRandomDockWidget(const DockWidgetBase::List &excluding = {});
|
|
||||||
KDDockWidgets::DockWidgetBase *getRandomRelativeTo(MainWindowBase *mainWindow,
|
|
||||||
DockWidgetBase *excluding);
|
|
||||||
|
|
||||||
KDDockWidgets::Location getRandomLocation();
|
|
||||||
|
|
||||||
QPoint getRandomPos();
|
|
||||||
|
|
||||||
Operations::OperationBase::Ptr getRandomOperation();
|
|
||||||
|
|
||||||
Fuzzer::Test generateRandomTest();
|
|
||||||
Fuzzer::Test::List generateRandomTests(int num);
|
|
||||||
|
|
||||||
void fuzz(FuzzerConfig config);
|
|
||||||
void fuzz(const QStringList &jsonFiles);
|
|
||||||
void fuzz(const QString &json);
|
|
||||||
|
|
||||||
QRect randomGeometry();
|
|
||||||
|
|
||||||
void onFatal() override;
|
|
||||||
void setDelayBetweenOperations(int delay);
|
|
||||||
|
|
||||||
QByteArray lastSavedLayout() const;
|
|
||||||
void setLastSavedLayout(const QByteArray &serialized);
|
|
||||||
|
|
||||||
private:
|
|
||||||
std::random_device m_randomDevice;
|
|
||||||
std::mt19937 m_randomEngine;
|
|
||||||
Fuzzer::Test m_currentTest;
|
|
||||||
QString m_currentJsonFile;
|
|
||||||
const bool m_dumpJsonOnFailure;
|
|
||||||
int m_operationDelayMS = 50;
|
|
||||||
const Options m_options;
|
|
||||||
QByteArray m_lastSavedLayout;
|
|
||||||
};
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif
|
|
||||||
@@ -1,483 +0,0 @@
|
|||||||
/*
|
|
||||||
This file is part of KDDockWidgets.
|
|
||||||
|
|
||||||
SPDX-FileCopyrightText: 2019-2023 Klarälvdalens Datakonsult AB, a KDAB Group company <info@kdab.com>
|
|
||||||
Author: Sérgio Martins <sergio.martins@kdab.com>
|
|
||||||
|
|
||||||
SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only
|
|
||||||
|
|
||||||
Contact KDAB at <info@kdab.com> for commercial licensing options.
|
|
||||||
*/
|
|
||||||
|
|
||||||
// We don't care about performance related checks in the tests
|
|
||||||
// clazy:excludeall=ctor-missing-parent-argument,missing-qobject-macro,range-loop,missing-typeinfo,detaching-member,function-args-by-ref,non-pod-global-static,reserve-candidates,qstring-allocations
|
|
||||||
|
|
||||||
#include "Operations.h"
|
|
||||||
#include "../Testing.h"
|
|
||||||
#include "DockRegistry_p.h"
|
|
||||||
#include "DockWidgetBase.h"
|
|
||||||
#include "DockWidgetBase_p.h"
|
|
||||||
#include "FloatingWindow_p.h"
|
|
||||||
#include "Frame_p.h"
|
|
||||||
#include "Fuzzer.h"
|
|
||||||
|
|
||||||
#include <QTest>
|
|
||||||
|
|
||||||
using namespace KDDockWidgets;
|
|
||||||
using namespace KDDockWidgets::Testing;
|
|
||||||
using namespace KDDockWidgets::Testing::Operations;
|
|
||||||
|
|
||||||
static QString operationTypeStr(OperationType optype)
|
|
||||||
{
|
|
||||||
return QMetaEnum::fromType<OperationType>().valueToKey(optype);
|
|
||||||
}
|
|
||||||
|
|
||||||
OperationBase::OperationBase(KDDockWidgets::Testing::Operations::OperationType type, Fuzzer *fuzzer)
|
|
||||||
: m_operationType(type)
|
|
||||||
, m_fuzzer(fuzzer)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
OperationBase::~OperationBase()
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
void OperationBase::execute()
|
|
||||||
{
|
|
||||||
if (!hasParams())
|
|
||||||
generateRandomParams();
|
|
||||||
|
|
||||||
if (hasParams()) { // Check again, as generateRandomParams() is not guaranteed
|
|
||||||
updateDescription();
|
|
||||||
execute_impl();
|
|
||||||
|
|
||||||
if (m_sleepMS > 0)
|
|
||||||
QTest::qWait(m_sleepMS);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
QVariantMap OperationBase::toVariantMap() const
|
|
||||||
{
|
|
||||||
const QVariantMap params = paramsToVariantMap();
|
|
||||||
if (!hasParams())
|
|
||||||
return {};
|
|
||||||
|
|
||||||
QVariantMap map;
|
|
||||||
map["type"] = m_operationType;
|
|
||||||
map["params"] = params;
|
|
||||||
map["comment"] = description();
|
|
||||||
|
|
||||||
return map;
|
|
||||||
}
|
|
||||||
|
|
||||||
OperationBase::Ptr OperationBase::fromVariantMap(Fuzzer *fuzzer, const QVariantMap &map)
|
|
||||||
{
|
|
||||||
if (!map.contains("type") || !map.contains("params")) {
|
|
||||||
qDebug() << Q_FUNC_INFO << "Invalid map";
|
|
||||||
return {};
|
|
||||||
}
|
|
||||||
|
|
||||||
auto operationType = OperationType(map["type"].toInt());
|
|
||||||
|
|
||||||
OperationBase::Ptr ptr = OperationBase::newOperation(fuzzer, operationType);
|
|
||||||
if (ptr) {
|
|
||||||
const QVariantMap params = map["params"].toMap();
|
|
||||||
if (params.isEmpty()) {
|
|
||||||
qDebug() << Q_FUNC_INFO << "Invalid params";
|
|
||||||
} else {
|
|
||||||
ptr->fillParamsFromVariantMap(params);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (map.contains("pause"))
|
|
||||||
ptr->m_sleepMS = map["pause"].toInt();
|
|
||||||
} else {
|
|
||||||
qDebug() << Q_FUNC_INFO << "Failed to fill params";
|
|
||||||
}
|
|
||||||
|
|
||||||
return ptr;
|
|
||||||
}
|
|
||||||
|
|
||||||
OperationBase::Ptr OperationBase::newOperation(Fuzzer *fuzzer, OperationType type)
|
|
||||||
{
|
|
||||||
OperationBase::Ptr ptr;
|
|
||||||
|
|
||||||
switch (type) {
|
|
||||||
case OperationType_Count:
|
|
||||||
case OperationType_None:
|
|
||||||
qDebug() << Q_FUNC_INFO << "Invalid type";
|
|
||||||
break;
|
|
||||||
case OperationType_CloseViaDockWidgetAPI:
|
|
||||||
ptr = OperationBase::Ptr(new CloseViaDockWidgetAPI(fuzzer));
|
|
||||||
break;
|
|
||||||
case OperationType_HideViaDockWidgetAPI:
|
|
||||||
ptr = OperationBase::Ptr(new HideViaDockWidgetAPI(fuzzer));
|
|
||||||
break;
|
|
||||||
case OperationType_ShowViaDockWidgetAPI:
|
|
||||||
ptr = OperationBase::Ptr(new ShowViaDockWidgetAPI(fuzzer));
|
|
||||||
break;
|
|
||||||
case OperationType_AddDockWidget:
|
|
||||||
ptr = OperationBase::Ptr(new AddDockWidget(fuzzer));
|
|
||||||
break;
|
|
||||||
case OperationType_AddDockWidgetAsTab:
|
|
||||||
ptr = OperationBase::Ptr(new AddDockWidgetAsTab(fuzzer));
|
|
||||||
break;
|
|
||||||
case OperationType_SaveLayout:
|
|
||||||
ptr = OperationBase::Ptr(new SaveLayout(fuzzer));
|
|
||||||
break;
|
|
||||||
case OperationType_RestoreLayout:
|
|
||||||
ptr = OperationBase::Ptr(new RestoreLayout(fuzzer));
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
return ptr;
|
|
||||||
}
|
|
||||||
|
|
||||||
QString OperationBase::toString()
|
|
||||||
{
|
|
||||||
if (m_description.isEmpty())
|
|
||||||
updateDescription();
|
|
||||||
|
|
||||||
return QStringLiteral("type=%1;description=%2").arg(operationTypeStr(m_operationType), m_description);
|
|
||||||
}
|
|
||||||
|
|
||||||
DockWidgetBase *OperationBase::dockByName(const QString &name) const
|
|
||||||
{
|
|
||||||
return DockRegistry::self()->dockByName(name);
|
|
||||||
}
|
|
||||||
|
|
||||||
MainWindowBase *OperationBase::mainWindowByName(const QString &name) const
|
|
||||||
{
|
|
||||||
return DockRegistry::self()->mainWindowByName(name);
|
|
||||||
}
|
|
||||||
|
|
||||||
QString OperationBase::dockStr(const QString &name) const
|
|
||||||
{
|
|
||||||
if (auto dw = dockByName(name)) {
|
|
||||||
if (dw->isVisible())
|
|
||||||
return name;
|
|
||||||
return QStringLiteral("%1-[hidden]").arg(name);
|
|
||||||
} else {
|
|
||||||
return QStringLiteral("null");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
CloseViaDockWidgetAPI::CloseViaDockWidgetAPI(Fuzzer *fuzzer)
|
|
||||||
: OperationBase(OperationType_CloseViaDockWidgetAPI, fuzzer)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
void CloseViaDockWidgetAPI::generateRandomParams()
|
|
||||||
{
|
|
||||||
if (DockWidgetBase *dw = m_fuzzer->getRandomDockWidget())
|
|
||||||
if (dw->isVisible())
|
|
||||||
m_dockWidgetName = dw->uniqueName();
|
|
||||||
}
|
|
||||||
|
|
||||||
bool CloseViaDockWidgetAPI::hasParams() const
|
|
||||||
{
|
|
||||||
return !m_dockWidgetName.isEmpty();
|
|
||||||
}
|
|
||||||
|
|
||||||
void CloseViaDockWidgetAPI::updateDescription()
|
|
||||||
{
|
|
||||||
m_description = QStringLiteral("Closing %1").arg(dockStr(m_dockWidgetName));
|
|
||||||
}
|
|
||||||
|
|
||||||
void CloseViaDockWidgetAPI::execute_impl()
|
|
||||||
{
|
|
||||||
DockWidgetBase *dw = dockByName(m_dockWidgetName);
|
|
||||||
auto fw = dw->floatingWindow();
|
|
||||||
dw->close();
|
|
||||||
if (fw && fw->beingDeleted())
|
|
||||||
Testing::waitForDeleted(fw);
|
|
||||||
}
|
|
||||||
|
|
||||||
QVariantMap CloseViaDockWidgetAPI::paramsToVariantMap() const
|
|
||||||
{
|
|
||||||
QVariantMap map;
|
|
||||||
if (!m_dockWidgetName.isEmpty())
|
|
||||||
map["dockWidgetName"] = m_dockWidgetName;
|
|
||||||
return map;
|
|
||||||
}
|
|
||||||
|
|
||||||
void CloseViaDockWidgetAPI::fillParamsFromVariantMap(const QVariantMap &map)
|
|
||||||
{
|
|
||||||
m_dockWidgetName = map["dockWidgetName"].toString();
|
|
||||||
}
|
|
||||||
|
|
||||||
HideViaDockWidgetAPI::HideViaDockWidgetAPI(Fuzzer *fuzzer)
|
|
||||||
: OperationBase(OperationType_HideViaDockWidgetAPI, fuzzer)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
void HideViaDockWidgetAPI::generateRandomParams()
|
|
||||||
{
|
|
||||||
if (DockWidgetBase *dw = m_fuzzer->getRandomDockWidget())
|
|
||||||
if (dw->isVisible())
|
|
||||||
m_dockWidgetName = dw->uniqueName();
|
|
||||||
}
|
|
||||||
|
|
||||||
bool HideViaDockWidgetAPI::hasParams() const
|
|
||||||
{
|
|
||||||
return !m_dockWidgetName.isEmpty();
|
|
||||||
}
|
|
||||||
|
|
||||||
void HideViaDockWidgetAPI::updateDescription()
|
|
||||||
{
|
|
||||||
m_description = QStringLiteral("Hiding %1").arg(dockStr(m_dockWidgetName));
|
|
||||||
}
|
|
||||||
|
|
||||||
void HideViaDockWidgetAPI::execute_impl()
|
|
||||||
{
|
|
||||||
DockWidgetBase *dw = dockByName(m_dockWidgetName);
|
|
||||||
if (!dw) {
|
|
||||||
qDebug() << Q_FUNC_INFO << "not found" << m_dockWidgetName;
|
|
||||||
Q_ASSERT(false);
|
|
||||||
}
|
|
||||||
|
|
||||||
auto fw = dw->floatingWindow();
|
|
||||||
dw->close();
|
|
||||||
if (fw && fw->beingDeleted())
|
|
||||||
Testing::waitForDeleted(fw);
|
|
||||||
}
|
|
||||||
|
|
||||||
QVariantMap HideViaDockWidgetAPI::paramsToVariantMap() const
|
|
||||||
{
|
|
||||||
QVariantMap map;
|
|
||||||
if (!m_dockWidgetName.isEmpty())
|
|
||||||
map["dockWidgetName"] = m_dockWidgetName;
|
|
||||||
return map;
|
|
||||||
}
|
|
||||||
|
|
||||||
void HideViaDockWidgetAPI::fillParamsFromVariantMap(const QVariantMap &map)
|
|
||||||
{
|
|
||||||
m_dockWidgetName = map["dockWidgetName"].toString();
|
|
||||||
}
|
|
||||||
|
|
||||||
ShowViaDockWidgetAPI::ShowViaDockWidgetAPI(Fuzzer *fuzzer)
|
|
||||||
: OperationBase(OperationType_ShowViaDockWidgetAPI, fuzzer)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
void ShowViaDockWidgetAPI::generateRandomParams()
|
|
||||||
{
|
|
||||||
if (DockWidgetBase *dw = m_fuzzer->getRandomDockWidget())
|
|
||||||
if (!dw->isVisible())
|
|
||||||
m_dockWidgetName = dw->uniqueName();
|
|
||||||
}
|
|
||||||
|
|
||||||
bool ShowViaDockWidgetAPI::hasParams() const
|
|
||||||
{
|
|
||||||
return !m_dockWidgetName.isEmpty();
|
|
||||||
}
|
|
||||||
|
|
||||||
void ShowViaDockWidgetAPI::updateDescription()
|
|
||||||
{
|
|
||||||
m_description = QStringLiteral("Showing %1").arg(dockStr(m_dockWidgetName));
|
|
||||||
}
|
|
||||||
|
|
||||||
void ShowViaDockWidgetAPI::execute_impl()
|
|
||||||
{
|
|
||||||
DockWidgetBase *dw = dockByName(m_dockWidgetName);
|
|
||||||
dw->show();
|
|
||||||
}
|
|
||||||
|
|
||||||
QVariantMap ShowViaDockWidgetAPI::paramsToVariantMap() const
|
|
||||||
{
|
|
||||||
QVariantMap map;
|
|
||||||
if (!m_dockWidgetName.isEmpty())
|
|
||||||
map["dockWidgetName"] = m_dockWidgetName;
|
|
||||||
return map;
|
|
||||||
}
|
|
||||||
|
|
||||||
void ShowViaDockWidgetAPI::fillParamsFromVariantMap(const QVariantMap &map)
|
|
||||||
{
|
|
||||||
m_dockWidgetName = map["dockWidgetName"].toString();
|
|
||||||
}
|
|
||||||
|
|
||||||
AddDockWidget::AddDockWidget(Fuzzer *fuzzer)
|
|
||||||
: OperationBase(OperationType_AddDockWidget, fuzzer)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
void AddDockWidget::generateRandomParams()
|
|
||||||
{
|
|
||||||
m_params = m_fuzzer->getRandomAddDockWidgetParams();
|
|
||||||
}
|
|
||||||
|
|
||||||
bool AddDockWidget::hasParams() const
|
|
||||||
{
|
|
||||||
return !m_params.isNull();
|
|
||||||
}
|
|
||||||
|
|
||||||
void AddDockWidget::updateDescription()
|
|
||||||
{
|
|
||||||
if (m_params.relativeToName.isEmpty())
|
|
||||||
m_description = QStringLiteral("AddDockWidget %1 to %2").arg(dockStr(m_params.dockWidgetName), KDDockWidgets::locationStr(m_params.location));
|
|
||||||
else
|
|
||||||
m_description = QStringLiteral("AddDockWidget %1 to %2, relative to %3").arg(dockStr(m_params.dockWidgetName), KDDockWidgets::locationStr(m_params.location), dockStr(m_params.relativeToName));
|
|
||||||
}
|
|
||||||
|
|
||||||
void AddDockWidget::execute_impl()
|
|
||||||
{
|
|
||||||
auto fw = m_params.dockWidget()->floatingWindow();
|
|
||||||
m_params.mainWindow()->addDockWidget(m_params.dockWidget(), m_params.location,
|
|
||||||
m_params.relativeTo(), m_params.addingOption);
|
|
||||||
if (fw && fw->beingDeleted())
|
|
||||||
Testing::waitForDeleted(fw);
|
|
||||||
}
|
|
||||||
|
|
||||||
QVariantMap AddDockWidget::paramsToVariantMap() const
|
|
||||||
{
|
|
||||||
return m_params.isNull() ? QVariantMap()
|
|
||||||
: m_params.toVariantMap();
|
|
||||||
}
|
|
||||||
|
|
||||||
void AddDockWidget::fillParamsFromVariantMap(const QVariantMap &map)
|
|
||||||
{
|
|
||||||
m_params = AddDockWidgetParams::fillFromVariantMap(map);
|
|
||||||
}
|
|
||||||
|
|
||||||
AddDockWidgetAsTab::AddDockWidgetAsTab(Fuzzer *fuzzer)
|
|
||||||
: OperationBase(OperationType_AddDockWidgetAsTab, fuzzer)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
void AddDockWidgetAsTab::generateRandomParams()
|
|
||||||
{
|
|
||||||
DockWidgetBase *dw = m_fuzzer->getRandomDockWidget();
|
|
||||||
if (!dw)
|
|
||||||
return;
|
|
||||||
|
|
||||||
DockWidgetBase *dw2 = nullptr;
|
|
||||||
|
|
||||||
if (auto frame = dw->d->frame()) {
|
|
||||||
auto toExclude = frame->dockWidgets();
|
|
||||||
for (auto dockWidget : DockRegistry::self()->dockwidgets()) {
|
|
||||||
if (dockWidget->window() == dw->window())
|
|
||||||
toExclude.push_back(dockWidget);
|
|
||||||
}
|
|
||||||
|
|
||||||
dw2 = m_fuzzer->getRandomDockWidget(toExclude);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!dw2)
|
|
||||||
return;
|
|
||||||
m_dockWidgetName = dw->uniqueName();
|
|
||||||
m_dockWidgetToAddName = dw2->uniqueName();
|
|
||||||
}
|
|
||||||
|
|
||||||
bool AddDockWidgetAsTab::hasParams() const
|
|
||||||
{
|
|
||||||
return !m_dockWidgetName.isEmpty() && !m_dockWidgetToAddName.isEmpty();
|
|
||||||
}
|
|
||||||
|
|
||||||
void AddDockWidgetAsTab::updateDescription()
|
|
||||||
{
|
|
||||||
m_description = QStringLiteral("AddDockWidgetAsTab %1 onto %2").arg(dockStr(m_dockWidgetToAddName), dockStr(m_dockWidgetName));
|
|
||||||
}
|
|
||||||
|
|
||||||
void AddDockWidgetAsTab::execute_impl()
|
|
||||||
{
|
|
||||||
DockWidgetBase *dw = dockByName(m_dockWidgetName);
|
|
||||||
DockWidgetBase *dw2 = dockByName(m_dockWidgetToAddName);
|
|
||||||
|
|
||||||
auto fw = dw2->floatingWindow();
|
|
||||||
dw->addDockWidgetAsTab(dw2);
|
|
||||||
if (fw && fw->beingDeleted())
|
|
||||||
Testing::waitForDeleted(fw);
|
|
||||||
}
|
|
||||||
|
|
||||||
QVariantMap AddDockWidgetAsTab::paramsToVariantMap() const
|
|
||||||
{
|
|
||||||
QVariantMap map;
|
|
||||||
|
|
||||||
if (hasParams()) {
|
|
||||||
map["dockWidgetName"] = m_dockWidgetName;
|
|
||||||
map["dockWidgetToAddName"] = m_dockWidgetToAddName;
|
|
||||||
}
|
|
||||||
|
|
||||||
return map;
|
|
||||||
}
|
|
||||||
|
|
||||||
void AddDockWidgetAsTab::fillParamsFromVariantMap(const QVariantMap &map)
|
|
||||||
{
|
|
||||||
m_dockWidgetName = map["dockWidgetName"].toString();
|
|
||||||
m_dockWidgetToAddName = map["dockWidgetToAddName"].toString();
|
|
||||||
}
|
|
||||||
|
|
||||||
SaveLayout::SaveLayout(Fuzzer *fuzzer)
|
|
||||||
: OperationBase(OperationType_SaveLayout, fuzzer)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
bool SaveLayout::hasParams() const
|
|
||||||
{
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
void SaveLayout::updateDescription()
|
|
||||||
{
|
|
||||||
m_description = QStringLiteral("SaveLayout");
|
|
||||||
}
|
|
||||||
|
|
||||||
void SaveLayout::execute_impl()
|
|
||||||
{
|
|
||||||
LayoutSaver saver;
|
|
||||||
m_fuzzer->setLastSavedLayout(saver.serializeLayout());
|
|
||||||
|
|
||||||
qDebug() << m_fuzzer << m_fuzzer->lastSavedLayout().isEmpty();
|
|
||||||
}
|
|
||||||
|
|
||||||
void SaveLayout::generateRandomParams()
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
QVariantMap SaveLayout::paramsToVariantMap() const
|
|
||||||
{
|
|
||||||
return {};
|
|
||||||
}
|
|
||||||
|
|
||||||
void SaveLayout::fillParamsFromVariantMap(const QVariantMap &)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
RestoreLayout::RestoreLayout(Fuzzer *fuzzer)
|
|
||||||
: OperationBase(OperationType_RestoreLayout, fuzzer)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
bool RestoreLayout::hasParams() const
|
|
||||||
{
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
void RestoreLayout::updateDescription()
|
|
||||||
{
|
|
||||||
m_description = QStringLiteral("RestoreLayout");
|
|
||||||
}
|
|
||||||
|
|
||||||
void RestoreLayout::execute_impl()
|
|
||||||
{
|
|
||||||
QByteArray serialized = m_fuzzer->lastSavedLayout();
|
|
||||||
if (serialized.isEmpty()) {
|
|
||||||
qDebug() << "Skipping, nothing to restore";
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
LayoutSaver saver;
|
|
||||||
saver.restoreLayout(serialized);
|
|
||||||
}
|
|
||||||
|
|
||||||
void RestoreLayout::generateRandomParams()
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
QVariantMap RestoreLayout::paramsToVariantMap() const
|
|
||||||
{
|
|
||||||
return {};
|
|
||||||
}
|
|
||||||
|
|
||||||
void RestoreLayout::fillParamsFromVariantMap(const QVariantMap &)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
@@ -1,217 +0,0 @@
|
|||||||
/*
|
|
||||||
This file is part of KDDockWidgets.
|
|
||||||
|
|
||||||
SPDX-FileCopyrightText: 2019-2023 Klarälvdalens Datakonsult AB, a KDAB Group company <info@kdab.com>
|
|
||||||
Author: Sérgio Martins <sergio.martins@kdab.com>
|
|
||||||
|
|
||||||
SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only
|
|
||||||
|
|
||||||
Contact KDAB at <info@kdab.com> for commercial licensing options.
|
|
||||||
*/
|
|
||||||
|
|
||||||
// We don't care about performance related checks in the tests
|
|
||||||
// clazy:excludeall=ctor-missing-parent-argument,missing-qobject-macro,range-loop,missing-typeinfo,detaching-member,function-args-by-ref,non-pod-global-static,reserve-candidates,qstring-allocations
|
|
||||||
|
|
||||||
#ifndef KDDOCKWIDGETS_TESTING_OPERATIONS_H
|
|
||||||
#define KDDOCKWIDGETS_TESTING_OPERATIONS_H
|
|
||||||
|
|
||||||
#include "KDDockWidgets.h"
|
|
||||||
#include "../Testing.h"
|
|
||||||
|
|
||||||
#include <QObject>
|
|
||||||
#include <QVector>
|
|
||||||
#include <QMetaEnum>
|
|
||||||
|
|
||||||
#include <memory>
|
|
||||||
|
|
||||||
namespace KDDockWidgets {
|
|
||||||
|
|
||||||
class DockWidgetBase;
|
|
||||||
class MainWindowBase;
|
|
||||||
|
|
||||||
namespace Testing {
|
|
||||||
|
|
||||||
class Fuzzer;
|
|
||||||
|
|
||||||
namespace Operations {
|
|
||||||
Q_NAMESPACE
|
|
||||||
enum OperationType {
|
|
||||||
OperationType_None = 0,
|
|
||||||
OperationType_CloseViaDockWidgetAPI, ///< Closing programmatically via DockWidget::close()
|
|
||||||
OperationType_HideViaDockWidgetAPI, ///< Hiding programmatically via DockWidget::hide()
|
|
||||||
OperationType_ShowViaDockWidgetAPI, ///< Hiding programmatically via DockWidget::show()
|
|
||||||
OperationType_AddDockWidget, ///< MainWindow::addDockWidget()
|
|
||||||
OperationType_AddDockWidgetAsTab, ///< DockWidget::addDockWidgetAsTab()
|
|
||||||
OperationType_SaveLayout, ///< LayoutSaver::saveLayout()
|
|
||||||
OperationType_RestoreLayout, ///< LayoutSaver::restoreLayout()
|
|
||||||
OperationType_Count /// Keep at end
|
|
||||||
};
|
|
||||||
Q_ENUM_NS(OperationType)
|
|
||||||
|
|
||||||
|
|
||||||
///@brief Describes a testable action.
|
|
||||||
class OperationBase
|
|
||||||
{
|
|
||||||
Q_DISABLE_COPY(OperationBase)
|
|
||||||
public:
|
|
||||||
typedef std::shared_ptr<OperationBase> Ptr;
|
|
||||||
typedef QVector<OperationBase::Ptr> List;
|
|
||||||
explicit OperationBase(OperationType, Fuzzer *);
|
|
||||||
virtual ~OperationBase();
|
|
||||||
|
|
||||||
void execute();
|
|
||||||
|
|
||||||
QVariantMap toVariantMap() const;
|
|
||||||
static OperationBase::Ptr fromVariantMap(Fuzzer *fuzzer, const QVariantMap &);
|
|
||||||
static OperationBase::Ptr newOperation(Fuzzer *fuzzer, OperationType);
|
|
||||||
|
|
||||||
OperationType type() const
|
|
||||||
{
|
|
||||||
return m_operationType;
|
|
||||||
}
|
|
||||||
QString description() const
|
|
||||||
{
|
|
||||||
return m_description;
|
|
||||||
}
|
|
||||||
|
|
||||||
virtual void updateDescription() = 0;
|
|
||||||
virtual bool hasParams() const = 0;
|
|
||||||
QString toString();
|
|
||||||
|
|
||||||
protected:
|
|
||||||
virtual void execute_impl() = 0;
|
|
||||||
virtual void generateRandomParams() = 0;
|
|
||||||
virtual QVariantMap paramsToVariantMap() const = 0;
|
|
||||||
virtual void fillParamsFromVariantMap(const QVariantMap &) = 0;
|
|
||||||
DockWidgetBase *dockByName(const QString &) const;
|
|
||||||
MainWindowBase *mainWindowByName(const QString &) const;
|
|
||||||
QString dockStr(const QString &name) const;
|
|
||||||
|
|
||||||
const OperationType m_operationType;
|
|
||||||
Fuzzer *const m_fuzzer;
|
|
||||||
int m_sleepMS = 0;
|
|
||||||
QString m_description;
|
|
||||||
};
|
|
||||||
|
|
||||||
class CloseViaDockWidgetAPI : public OperationBase
|
|
||||||
{
|
|
||||||
Q_DISABLE_COPY(CloseViaDockWidgetAPI)
|
|
||||||
public:
|
|
||||||
explicit CloseViaDockWidgetAPI(Fuzzer *);
|
|
||||||
|
|
||||||
protected:
|
|
||||||
void updateDescription() override;
|
|
||||||
void generateRandomParams() override;
|
|
||||||
bool hasParams() const override;
|
|
||||||
void execute_impl() override;
|
|
||||||
QVariantMap paramsToVariantMap() const override;
|
|
||||||
void fillParamsFromVariantMap(const QVariantMap &) override;
|
|
||||||
QString m_dockWidgetName;
|
|
||||||
};
|
|
||||||
|
|
||||||
class HideViaDockWidgetAPI : public OperationBase
|
|
||||||
{
|
|
||||||
Q_DISABLE_COPY(HideViaDockWidgetAPI)
|
|
||||||
public:
|
|
||||||
explicit HideViaDockWidgetAPI(Fuzzer *);
|
|
||||||
|
|
||||||
protected:
|
|
||||||
void generateRandomParams() override;
|
|
||||||
bool hasParams() const override;
|
|
||||||
void updateDescription() override;
|
|
||||||
void execute_impl() override;
|
|
||||||
QVariantMap paramsToVariantMap() const override;
|
|
||||||
void fillParamsFromVariantMap(const QVariantMap &) override;
|
|
||||||
QString m_dockWidgetName;
|
|
||||||
};
|
|
||||||
|
|
||||||
class ShowViaDockWidgetAPI : public OperationBase
|
|
||||||
{
|
|
||||||
Q_DISABLE_COPY(ShowViaDockWidgetAPI)
|
|
||||||
public:
|
|
||||||
explicit ShowViaDockWidgetAPI(Fuzzer *);
|
|
||||||
|
|
||||||
protected:
|
|
||||||
void generateRandomParams() override;
|
|
||||||
bool hasParams() const override;
|
|
||||||
void updateDescription() override;
|
|
||||||
void execute_impl() override;
|
|
||||||
QVariantMap paramsToVariantMap() const override;
|
|
||||||
void fillParamsFromVariantMap(const QVariantMap &) override;
|
|
||||||
QString m_dockWidgetName;
|
|
||||||
};
|
|
||||||
|
|
||||||
class AddDockWidget : public OperationBase
|
|
||||||
{
|
|
||||||
Q_DISABLE_COPY(AddDockWidget)
|
|
||||||
public:
|
|
||||||
explicit AddDockWidget(Fuzzer *);
|
|
||||||
|
|
||||||
protected:
|
|
||||||
void generateRandomParams() override;
|
|
||||||
bool hasParams() const override;
|
|
||||||
void updateDescription() override;
|
|
||||||
void execute_impl() override;
|
|
||||||
QVariantMap paramsToVariantMap() const override;
|
|
||||||
void fillParamsFromVariantMap(const QVariantMap &) override;
|
|
||||||
|
|
||||||
private:
|
|
||||||
Testing::AddDockWidgetParams m_params;
|
|
||||||
};
|
|
||||||
|
|
||||||
class AddDockWidgetAsTab : public OperationBase
|
|
||||||
{
|
|
||||||
Q_DISABLE_COPY(AddDockWidgetAsTab)
|
|
||||||
public:
|
|
||||||
explicit AddDockWidgetAsTab(Fuzzer *);
|
|
||||||
|
|
||||||
protected:
|
|
||||||
void generateRandomParams() override;
|
|
||||||
bool hasParams() const override;
|
|
||||||
void updateDescription() override;
|
|
||||||
void execute_impl() override;
|
|
||||||
QVariantMap paramsToVariantMap() const override;
|
|
||||||
void fillParamsFromVariantMap(const QVariantMap &) override;
|
|
||||||
|
|
||||||
private:
|
|
||||||
QString m_dockWidgetName;
|
|
||||||
QString m_dockWidgetToAddName;
|
|
||||||
};
|
|
||||||
|
|
||||||
class SaveLayout : public OperationBase
|
|
||||||
{
|
|
||||||
Q_DISABLE_COPY(SaveLayout)
|
|
||||||
public:
|
|
||||||
explicit SaveLayout(Fuzzer *);
|
|
||||||
|
|
||||||
protected:
|
|
||||||
bool hasParams() const override;
|
|
||||||
void updateDescription() override;
|
|
||||||
void execute_impl() override;
|
|
||||||
|
|
||||||
void generateRandomParams() override;
|
|
||||||
QVariantMap paramsToVariantMap() const override;
|
|
||||||
void fillParamsFromVariantMap(const QVariantMap &) override;
|
|
||||||
};
|
|
||||||
|
|
||||||
class RestoreLayout : public OperationBase
|
|
||||||
{
|
|
||||||
Q_DISABLE_COPY(RestoreLayout)
|
|
||||||
public:
|
|
||||||
explicit RestoreLayout(Fuzzer *);
|
|
||||||
|
|
||||||
protected:
|
|
||||||
bool hasParams() const override;
|
|
||||||
void updateDescription() override;
|
|
||||||
void execute_impl() override;
|
|
||||||
|
|
||||||
void generateRandomParams() override;
|
|
||||||
QVariantMap paramsToVariantMap() const override;
|
|
||||||
void fillParamsFromVariantMap(const QVariantMap &) override;
|
|
||||||
};
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif
|
|
||||||
@@ -1,104 +0,0 @@
|
|||||||
/*
|
|
||||||
This file is part of KDDockWidgets.
|
|
||||||
|
|
||||||
SPDX-FileCopyrightText: 2019-2023 Klarälvdalens Datakonsult AB, a KDAB Group company <info@kdab.com>
|
|
||||||
Author: Sérgio Martins <sergio.martins@kdab.com>
|
|
||||||
|
|
||||||
SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only
|
|
||||||
|
|
||||||
Contact KDAB at <info@kdab.com> for commercial licensing options.
|
|
||||||
*/
|
|
||||||
|
|
||||||
// We don't care about performance related checks in the tests
|
|
||||||
// clazy:excludeall=ctor-missing-parent-argument,missing-qobject-macro,range-loop,missing-typeinfo,detaching-member,function-args-by-ref,non-pod-global-static,reserve-candidates,qstring-allocations
|
|
||||||
|
|
||||||
#include "Fuzzer.h"
|
|
||||||
#include "DockRegistry_p.h"
|
|
||||||
#include "../utils.h"
|
|
||||||
|
|
||||||
#include <QCommandLineParser>
|
|
||||||
#include <QApplication>
|
|
||||||
#include <QTimer>
|
|
||||||
#include <QDebug>
|
|
||||||
#include <QFile>
|
|
||||||
#include <iostream>
|
|
||||||
|
|
||||||
using namespace KDDockWidgets;
|
|
||||||
using namespace KDDockWidgets::Testing;
|
|
||||||
|
|
||||||
int main(int argc, char **argv)
|
|
||||||
{
|
|
||||||
if (!qpaPassedAsArgument(argc, argv)) {
|
|
||||||
// Use offscreen by default as it's less annoying, doesn't create visible windows
|
|
||||||
qputenv("QT_QPA_PLATFORM", "offscreen");
|
|
||||||
}
|
|
||||||
|
|
||||||
QApplication app(argc, argv);
|
|
||||||
|
|
||||||
QCommandLineParser parser;
|
|
||||||
parser.setApplicationDescription("Fuzzer Help");
|
|
||||||
parser.addPositionalArgument("json", QCoreApplication::translate("main", "json file to load"));
|
|
||||||
|
|
||||||
QCommandLineOption slowDownOption("s", QCoreApplication::translate("main", "Slowdown tests. Adds a 1 second delay between operations"));
|
|
||||||
parser.addOption(slowDownOption);
|
|
||||||
|
|
||||||
QCommandLineOption forceDumpJsonOption("f", QCoreApplication::translate("main", "Dump json of the test even if we're already loading a test."));
|
|
||||||
parser.addOption(forceDumpJsonOption);
|
|
||||||
|
|
||||||
QCommandLineOption loopOption("l", QCoreApplication::translate("main", "Loops until it crashes"));
|
|
||||||
parser.addOption(loopOption);
|
|
||||||
|
|
||||||
QCommandLineOption skipLastOption("a", QCoreApplication::translate("main", "Skips the last test (presumably failing)"));
|
|
||||||
parser.addOption(skipLastOption);
|
|
||||||
|
|
||||||
QCommandLineOption noQuitOption("n", QCoreApplication::translate("main", "Don't quit at the end, keep event loop running for debugging"));
|
|
||||||
parser.addOption(noQuitOption);
|
|
||||||
|
|
||||||
parser.addHelpOption();
|
|
||||||
parser.process(app);
|
|
||||||
|
|
||||||
const bool slowDown = parser.isSet(slowDownOption);
|
|
||||||
const bool forceDumpJson = parser.isSet(forceDumpJsonOption);
|
|
||||||
|
|
||||||
const QStringList filesToLoad = parser.positionalArguments();
|
|
||||||
const bool dumpToJsonOnFatal = forceDumpJson || filesToLoad.isEmpty();
|
|
||||||
|
|
||||||
|
|
||||||
Fuzzer::Options options = Fuzzer::Option_None;
|
|
||||||
if (parser.isSet(skipLastOption))
|
|
||||||
options |= Fuzzer::Option_SkipLast;
|
|
||||||
|
|
||||||
if (parser.isSet(noQuitOption))
|
|
||||||
options |= Fuzzer::Option_NoQuit;
|
|
||||||
|
|
||||||
const bool loops = parser.isSet(loopOption);
|
|
||||||
|
|
||||||
Fuzzer fuzzer(dumpToJsonOnFatal, options);
|
|
||||||
if (slowDown)
|
|
||||||
fuzzer.setDelayBetweenOperations(1000);
|
|
||||||
|
|
||||||
for (const QString &file : filesToLoad) {
|
|
||||||
if (!QFile::exists(file)) {
|
|
||||||
std::cerr << "\nFile doesn't exist: " << file.toStdString() << "\n";
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
QTimer::singleShot(0, &fuzzer, [&app, &fuzzer, filesToLoad, loops, options] {
|
|
||||||
if (filesToLoad.isEmpty()) {
|
|
||||||
do {
|
|
||||||
fuzzer.fuzz({ 1, 10, true });
|
|
||||||
} while (loops);
|
|
||||||
} else {
|
|
||||||
fuzzer.fuzz(filesToLoad);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!(options & Fuzzer::Option_NoQuit)) {
|
|
||||||
// if noQuit is true we keep the app running so it can be debugged
|
|
||||||
app.quit();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
app.setQuitOnLastWindowClosed(false);
|
|
||||||
return app.exec();
|
|
||||||
}
|
|
||||||
@@ -1,138 +0,0 @@
|
|||||||
{
|
|
||||||
"initialLayout": {
|
|
||||||
"dockWidgets": [
|
|
||||||
{
|
|
||||||
"geometry": {
|
|
||||||
"size": {
|
|
||||||
"height": 593,
|
|
||||||
"width": 861
|
|
||||||
},
|
|
||||||
"x": 55,
|
|
||||||
"y": 296
|
|
||||||
},
|
|
||||||
"isFloating": false,
|
|
||||||
"isVisible": true,
|
|
||||||
"minSize": {
|
|
||||||
"height": 373,
|
|
||||||
"width": 344
|
|
||||||
},
|
|
||||||
"name": "DockWidget-1"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"geometry": {
|
|
||||||
"size": {
|
|
||||||
"height": 564,
|
|
||||||
"width": 1097
|
|
||||||
},
|
|
||||||
"x": 88,
|
|
||||||
"y": 430
|
|
||||||
},
|
|
||||||
"isFloating": true,
|
|
||||||
"isVisible": true,
|
|
||||||
"minSize": {
|
|
||||||
"height": 170,
|
|
||||||
"width": 600
|
|
||||||
},
|
|
||||||
"name": "DockWidget-2"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"geometry": {
|
|
||||||
"size": {
|
|
||||||
"height": 350,
|
|
||||||
"width": 1108
|
|
||||||
},
|
|
||||||
"x": 384,
|
|
||||||
"y": 279
|
|
||||||
},
|
|
||||||
"isFloating": true,
|
|
||||||
"isVisible": true,
|
|
||||||
"minSize": {
|
|
||||||
"height": 295,
|
|
||||||
"width": 554
|
|
||||||
},
|
|
||||||
"name": "DockWidget-3"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"geometry": {
|
|
||||||
"size": {
|
|
||||||
"height": 1040,
|
|
||||||
"width": 960
|
|
||||||
},
|
|
||||||
"x": 325,
|
|
||||||
"y": 313
|
|
||||||
},
|
|
||||||
"isFloating": true,
|
|
||||||
"isVisible": true,
|
|
||||||
"minSize": {
|
|
||||||
"height": 480,
|
|
||||||
"width": 565
|
|
||||||
},
|
|
||||||
"name": "DockWidget-4"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"mainWindows": [
|
|
||||||
{
|
|
||||||
"geometry": {
|
|
||||||
"size": {
|
|
||||||
"height": 961,
|
|
||||||
"width": 472
|
|
||||||
},
|
|
||||||
"x": 232,
|
|
||||||
"y": 79
|
|
||||||
},
|
|
||||||
"mainWindowOption": 0,
|
|
||||||
"name": "MainWindow-1"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"operations": [
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidget DockWidget-2 to right",
|
|
||||||
"params": {
|
|
||||||
"addingOption": 0,
|
|
||||||
"dockWidgetName": "DockWidget-2",
|
|
||||||
"location": 3,
|
|
||||||
"mainWindowName": "MainWindow-1"
|
|
||||||
},
|
|
||||||
"type": 4
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidget DockWidget-4-[hidden] to top",
|
|
||||||
"params": {
|
|
||||||
"addingOption": 0,
|
|
||||||
"dockWidgetName": "DockWidget-4",
|
|
||||||
"location": 2,
|
|
||||||
"mainWindowName": "MainWindow-1"
|
|
||||||
},
|
|
||||||
"type": 4
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidget DockWidget-3 to left, relative to DockWidget-2",
|
|
||||||
"params": {
|
|
||||||
"addingOption": 0,
|
|
||||||
"dockWidgetName": "DockWidget-3",
|
|
||||||
"location": 1,
|
|
||||||
"mainWindowName": "MainWindow-1",
|
|
||||||
"relativeToName": "DockWidget-2"
|
|
||||||
},
|
|
||||||
"type": 4
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "Hiding DockWidget-4-[hidden]",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-4"
|
|
||||||
},
|
|
||||||
"type": 2
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidget DockWidget-1 to top",
|
|
||||||
"params": {
|
|
||||||
"addingOption": 0,
|
|
||||||
"dockWidgetName": "DockWidget-1",
|
|
||||||
"location": 2,
|
|
||||||
"mainWindowName": "MainWindow-1"
|
|
||||||
},
|
|
||||||
"type": 4
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
@@ -1,761 +0,0 @@
|
|||||||
{
|
|
||||||
"initialLayout": {
|
|
||||||
"dockWidgets": [
|
|
||||||
{
|
|
||||||
"geometry": {
|
|
||||||
"size": {
|
|
||||||
"height": 773,
|
|
||||||
"width": 974
|
|
||||||
},
|
|
||||||
"x": 199,
|
|
||||||
"y": 406
|
|
||||||
},
|
|
||||||
"isFloating": false,
|
|
||||||
"isVisible": true,
|
|
||||||
"minSize": {
|
|
||||||
"height": 578,
|
|
||||||
"width": 440
|
|
||||||
},
|
|
||||||
"name": "DockWidget-1"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"geometry": {
|
|
||||||
"size": {
|
|
||||||
"height": 596,
|
|
||||||
"width": 981
|
|
||||||
},
|
|
||||||
"x": 37,
|
|
||||||
"y": 38
|
|
||||||
},
|
|
||||||
"isFloating": false,
|
|
||||||
"isVisible": false,
|
|
||||||
"minSize": {
|
|
||||||
"height": 359,
|
|
||||||
"width": 436
|
|
||||||
},
|
|
||||||
"name": "DockWidget-2"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"geometry": {
|
|
||||||
"size": {
|
|
||||||
"height": 414,
|
|
||||||
"width": 539
|
|
||||||
},
|
|
||||||
"x": 54,
|
|
||||||
"y": 343
|
|
||||||
},
|
|
||||||
"isFloating": false,
|
|
||||||
"isVisible": true,
|
|
||||||
"minSize": {
|
|
||||||
"height": 216,
|
|
||||||
"width": 480
|
|
||||||
},
|
|
||||||
"name": "DockWidget-3"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"geometry": {
|
|
||||||
"size": {
|
|
||||||
"height": 693,
|
|
||||||
"width": 878
|
|
||||||
},
|
|
||||||
"x": 392,
|
|
||||||
"y": 369
|
|
||||||
},
|
|
||||||
"isFloating": false,
|
|
||||||
"isVisible": false,
|
|
||||||
"minSize": {
|
|
||||||
"height": 283,
|
|
||||||
"width": 367
|
|
||||||
},
|
|
||||||
"name": "DockWidget-4"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"mainWindows": [
|
|
||||||
{
|
|
||||||
"geometry": {
|
|
||||||
"size": {
|
|
||||||
"height": 1275,
|
|
||||||
"width": 119
|
|
||||||
},
|
|
||||||
"x": 323,
|
|
||||||
"y": 257
|
|
||||||
},
|
|
||||||
"mainWindowOption": 0,
|
|
||||||
"name": "MainWindow-1"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"operations": [
|
|
||||||
{
|
|
||||||
"comment": "Hiding DockWidget-1",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-1"
|
|
||||||
},
|
|
||||||
"type": 2
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidget DockWidget-4-[hidden] to right",
|
|
||||||
"params": {
|
|
||||||
"addingOption": 0,
|
|
||||||
"dockWidgetName": "DockWidget-4",
|
|
||||||
"location": 3,
|
|
||||||
"mainWindowName": "MainWindow-1"
|
|
||||||
},
|
|
||||||
"type": 4
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidget DockWidget-1-[hidden] to top, relative to DockWidget-4",
|
|
||||||
"params": {
|
|
||||||
"addingOption": 0,
|
|
||||||
"dockWidgetName": "DockWidget-1",
|
|
||||||
"location": 2,
|
|
||||||
"mainWindowName": "MainWindow-1",
|
|
||||||
"relativeToName": "DockWidget-4"
|
|
||||||
},
|
|
||||||
"type": 4
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidget DockWidget-2-[hidden] to bottom",
|
|
||||||
"params": {
|
|
||||||
"addingOption": 0,
|
|
||||||
"dockWidgetName": "DockWidget-2",
|
|
||||||
"location": 4,
|
|
||||||
"mainWindowName": "MainWindow-1"
|
|
||||||
},
|
|
||||||
"type": 4
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidgetAsTab DockWidget-3 onto DockWidget-1",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-1",
|
|
||||||
"dockWidgetToAddName": "DockWidget-3"
|
|
||||||
},
|
|
||||||
"type": 5
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "Closing DockWidget-2",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-2"
|
|
||||||
},
|
|
||||||
"type": 1
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidget DockWidget-2-[hidden] to top, relative to DockWidget-1-[hidden]",
|
|
||||||
"params": {
|
|
||||||
"addingOption": 0,
|
|
||||||
"dockWidgetName": "DockWidget-2",
|
|
||||||
"location": 2,
|
|
||||||
"mainWindowName": "MainWindow-1",
|
|
||||||
"relativeToName": "DockWidget-1"
|
|
||||||
},
|
|
||||||
"type": 4
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "Hiding DockWidget-4",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-4"
|
|
||||||
},
|
|
||||||
"type": 2
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "Showing DockWidget-4-[hidden]",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-4"
|
|
||||||
},
|
|
||||||
"type": 3
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidget DockWidget-4 to right, relative to DockWidget-1-[hidden]",
|
|
||||||
"params": {
|
|
||||||
"addingOption": 0,
|
|
||||||
"dockWidgetName": "DockWidget-4",
|
|
||||||
"location": 3,
|
|
||||||
"mainWindowName": "MainWindow-1",
|
|
||||||
"relativeToName": "DockWidget-1"
|
|
||||||
},
|
|
||||||
"type": 4
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "Hiding DockWidget-3",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-3"
|
|
||||||
},
|
|
||||||
"type": 2
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "Closing DockWidget-2",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-2"
|
|
||||||
},
|
|
||||||
"type": 1
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "Hiding DockWidget-4",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-4"
|
|
||||||
},
|
|
||||||
"type": 2
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "Showing DockWidget-3-[hidden]",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-3"
|
|
||||||
},
|
|
||||||
"type": 3
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidget DockWidget-3 to left, relative to DockWidget-1-[hidden]",
|
|
||||||
"params": {
|
|
||||||
"addingOption": 0,
|
|
||||||
"dockWidgetName": "DockWidget-3",
|
|
||||||
"location": 1,
|
|
||||||
"mainWindowName": "MainWindow-1",
|
|
||||||
"relativeToName": "DockWidget-1"
|
|
||||||
},
|
|
||||||
"type": 4
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidget DockWidget-4-[hidden] to top, relative to DockWidget-1",
|
|
||||||
"params": {
|
|
||||||
"addingOption": 0,
|
|
||||||
"dockWidgetName": "DockWidget-4",
|
|
||||||
"location": 2,
|
|
||||||
"mainWindowName": "MainWindow-1",
|
|
||||||
"relativeToName": "DockWidget-1"
|
|
||||||
},
|
|
||||||
"type": 4
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "Closing DockWidget-4",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-4"
|
|
||||||
},
|
|
||||||
"type": 1
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "Hiding DockWidget-3",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-3"
|
|
||||||
},
|
|
||||||
"type": 2
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "Closing DockWidget-1",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-1"
|
|
||||||
},
|
|
||||||
"type": 1
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidget DockWidget-4-[hidden] to left",
|
|
||||||
"params": {
|
|
||||||
"addingOption": 0,
|
|
||||||
"dockWidgetName": "DockWidget-4",
|
|
||||||
"location": 1,
|
|
||||||
"mainWindowName": "MainWindow-1"
|
|
||||||
},
|
|
||||||
"type": 4
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "Hiding DockWidget-4",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-4"
|
|
||||||
},
|
|
||||||
"type": 2
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "Showing DockWidget-4-[hidden]",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-4"
|
|
||||||
},
|
|
||||||
"type": 3
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidget DockWidget-1-[hidden] to left",
|
|
||||||
"params": {
|
|
||||||
"addingOption": 0,
|
|
||||||
"dockWidgetName": "DockWidget-1",
|
|
||||||
"location": 1,
|
|
||||||
"mainWindowName": "MainWindow-1"
|
|
||||||
},
|
|
||||||
"type": 4
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "Showing DockWidget-3-[hidden]",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-3"
|
|
||||||
},
|
|
||||||
"type": 3
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "Hiding DockWidget-3",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-3"
|
|
||||||
},
|
|
||||||
"type": 2
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "Showing DockWidget-2-[hidden]",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-2"
|
|
||||||
},
|
|
||||||
"type": 3
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "Closing DockWidget-2",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-2"
|
|
||||||
},
|
|
||||||
"type": 1
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "Hiding DockWidget-1",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-1"
|
|
||||||
},
|
|
||||||
"type": 2
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidget DockWidget-3-[hidden] to right, relative to DockWidget-4",
|
|
||||||
"params": {
|
|
||||||
"addingOption": 0,
|
|
||||||
"dockWidgetName": "DockWidget-3",
|
|
||||||
"location": 3,
|
|
||||||
"mainWindowName": "MainWindow-1",
|
|
||||||
"relativeToName": "DockWidget-4"
|
|
||||||
},
|
|
||||||
"type": 4
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "Showing DockWidget-1-[hidden]",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-1"
|
|
||||||
},
|
|
||||||
"type": 3
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidget DockWidget-1 to bottom, relative to DockWidget-4",
|
|
||||||
"params": {
|
|
||||||
"addingOption": 0,
|
|
||||||
"dockWidgetName": "DockWidget-1",
|
|
||||||
"location": 4,
|
|
||||||
"mainWindowName": "MainWindow-1",
|
|
||||||
"relativeToName": "DockWidget-4"
|
|
||||||
},
|
|
||||||
"type": 4
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidgetAsTab DockWidget-2-[hidden] onto DockWidget-3",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-3",
|
|
||||||
"dockWidgetToAddName": "DockWidget-2"
|
|
||||||
},
|
|
||||||
"type": 5
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidget DockWidget-3-[hidden] to right, relative to DockWidget-1",
|
|
||||||
"params": {
|
|
||||||
"addingOption": 0,
|
|
||||||
"dockWidgetName": "DockWidget-3",
|
|
||||||
"location": 3,
|
|
||||||
"mainWindowName": "MainWindow-1",
|
|
||||||
"relativeToName": "DockWidget-1"
|
|
||||||
},
|
|
||||||
"type": 4
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidget DockWidget-2 to bottom",
|
|
||||||
"params": {
|
|
||||||
"addingOption": 0,
|
|
||||||
"dockWidgetName": "DockWidget-2",
|
|
||||||
"location": 4,
|
|
||||||
"mainWindowName": "MainWindow-1"
|
|
||||||
},
|
|
||||||
"type": 4
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "Hiding DockWidget-4",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-4"
|
|
||||||
},
|
|
||||||
"type": 2
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "Closing DockWidget-3",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-3"
|
|
||||||
},
|
|
||||||
"type": 1
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "Closing DockWidget-1",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-1"
|
|
||||||
},
|
|
||||||
"type": 1
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "Closing DockWidget-2",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-2"
|
|
||||||
},
|
|
||||||
"type": 1
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidget DockWidget-2-[hidden] to right",
|
|
||||||
"params": {
|
|
||||||
"addingOption": 0,
|
|
||||||
"dockWidgetName": "DockWidget-2",
|
|
||||||
"location": 3,
|
|
||||||
"mainWindowName": "MainWindow-1"
|
|
||||||
},
|
|
||||||
"type": 4
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidget DockWidget-1-[hidden] to bottom",
|
|
||||||
"params": {
|
|
||||||
"addingOption": 0,
|
|
||||||
"dockWidgetName": "DockWidget-1",
|
|
||||||
"location": 4,
|
|
||||||
"mainWindowName": "MainWindow-1"
|
|
||||||
},
|
|
||||||
"type": 4
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "Showing DockWidget-3-[hidden]",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-3"
|
|
||||||
},
|
|
||||||
"type": 3
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidget DockWidget-1 to bottom, relative to DockWidget-2",
|
|
||||||
"params": {
|
|
||||||
"addingOption": 0,
|
|
||||||
"dockWidgetName": "DockWidget-1",
|
|
||||||
"location": 4,
|
|
||||||
"mainWindowName": "MainWindow-1",
|
|
||||||
"relativeToName": "DockWidget-2"
|
|
||||||
},
|
|
||||||
"type": 4
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidget DockWidget-1 to bottom",
|
|
||||||
"params": {
|
|
||||||
"addingOption": 0,
|
|
||||||
"dockWidgetName": "DockWidget-1",
|
|
||||||
"location": 4,
|
|
||||||
"mainWindowName": "MainWindow-1"
|
|
||||||
},
|
|
||||||
"type": 4
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidgetAsTab DockWidget-4-[hidden] onto DockWidget-3",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-3",
|
|
||||||
"dockWidgetToAddName": "DockWidget-4"
|
|
||||||
},
|
|
||||||
"type": 5
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidget DockWidget-4 to top, relative to DockWidget-3-[hidden]",
|
|
||||||
"params": {
|
|
||||||
"addingOption": 0,
|
|
||||||
"dockWidgetName": "DockWidget-4",
|
|
||||||
"location": 2,
|
|
||||||
"mainWindowName": "MainWindow-1",
|
|
||||||
"relativeToName": "DockWidget-3"
|
|
||||||
},
|
|
||||||
"type": 4
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "Closing DockWidget-3",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-3"
|
|
||||||
},
|
|
||||||
"type": 1
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "Closing DockWidget-2",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-2"
|
|
||||||
},
|
|
||||||
"type": 1
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "Closing DockWidget-4",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-4"
|
|
||||||
},
|
|
||||||
"type": 1
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidgetAsTab DockWidget-3-[hidden] onto DockWidget-1",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-1",
|
|
||||||
"dockWidgetToAddName": "DockWidget-3"
|
|
||||||
},
|
|
||||||
"type": 5
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "Hiding DockWidget-3",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-3"
|
|
||||||
},
|
|
||||||
"type": 2
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidgetAsTab DockWidget-4-[hidden] onto DockWidget-1",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-1",
|
|
||||||
"dockWidgetToAddName": "DockWidget-4"
|
|
||||||
},
|
|
||||||
"type": 5
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "Showing DockWidget-2-[hidden]",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-2"
|
|
||||||
},
|
|
||||||
"type": 3
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "Closing DockWidget-4",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-4"
|
|
||||||
},
|
|
||||||
"type": 1
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidget DockWidget-3-[hidden] to top, relative to DockWidget-1",
|
|
||||||
"params": {
|
|
||||||
"addingOption": 0,
|
|
||||||
"dockWidgetName": "DockWidget-3",
|
|
||||||
"location": 2,
|
|
||||||
"mainWindowName": "MainWindow-1",
|
|
||||||
"relativeToName": "DockWidget-1"
|
|
||||||
},
|
|
||||||
"type": 4
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "Closing DockWidget-1",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-1"
|
|
||||||
},
|
|
||||||
"type": 1
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "Closing DockWidget-3",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-3"
|
|
||||||
},
|
|
||||||
"type": 1
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "Showing DockWidget-3-[hidden]",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-3"
|
|
||||||
},
|
|
||||||
"type": 3
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidget DockWidget-3 to left, relative to DockWidget-2",
|
|
||||||
"params": {
|
|
||||||
"addingOption": 0,
|
|
||||||
"dockWidgetName": "DockWidget-3",
|
|
||||||
"location": 1,
|
|
||||||
"mainWindowName": "MainWindow-1",
|
|
||||||
"relativeToName": "DockWidget-2"
|
|
||||||
},
|
|
||||||
"type": 4
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidget DockWidget-4-[hidden] to bottom",
|
|
||||||
"params": {
|
|
||||||
"addingOption": 0,
|
|
||||||
"dockWidgetName": "DockWidget-4",
|
|
||||||
"location": 4,
|
|
||||||
"mainWindowName": "MainWindow-1"
|
|
||||||
},
|
|
||||||
"type": 4
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidget DockWidget-1-[hidden] to bottom",
|
|
||||||
"params": {
|
|
||||||
"addingOption": 0,
|
|
||||||
"dockWidgetName": "DockWidget-1",
|
|
||||||
"location": 4,
|
|
||||||
"mainWindowName": "MainWindow-1"
|
|
||||||
},
|
|
||||||
"type": 4
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "Hiding DockWidget-2",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-2"
|
|
||||||
},
|
|
||||||
"type": 2
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidget DockWidget-2-[hidden] to bottom, relative to DockWidget-1",
|
|
||||||
"params": {
|
|
||||||
"addingOption": 0,
|
|
||||||
"dockWidgetName": "DockWidget-2",
|
|
||||||
"location": 4,
|
|
||||||
"mainWindowName": "MainWindow-1",
|
|
||||||
"relativeToName": "DockWidget-1"
|
|
||||||
},
|
|
||||||
"type": 4
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "Hiding DockWidget-2",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-2"
|
|
||||||
},
|
|
||||||
"type": 2
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "Hiding DockWidget-3",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-3"
|
|
||||||
},
|
|
||||||
"type": 2
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "Hiding DockWidget-1",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-1"
|
|
||||||
},
|
|
||||||
"type": 2
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidget DockWidget-2-[hidden] to top",
|
|
||||||
"params": {
|
|
||||||
"addingOption": 0,
|
|
||||||
"dockWidgetName": "DockWidget-2",
|
|
||||||
"location": 2,
|
|
||||||
"mainWindowName": "MainWindow-1"
|
|
||||||
},
|
|
||||||
"type": 4
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "Hiding DockWidget-4",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-4"
|
|
||||||
},
|
|
||||||
"type": 2
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidget DockWidget-3-[hidden] to right, relative to DockWidget-2",
|
|
||||||
"params": {
|
|
||||||
"addingOption": 0,
|
|
||||||
"dockWidgetName": "DockWidget-3",
|
|
||||||
"location": 3,
|
|
||||||
"mainWindowName": "MainWindow-1",
|
|
||||||
"relativeToName": "DockWidget-2"
|
|
||||||
},
|
|
||||||
"type": 4
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "Closing DockWidget-2",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-2"
|
|
||||||
},
|
|
||||||
"type": 1
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "Closing DockWidget-3",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-3"
|
|
||||||
},
|
|
||||||
"type": 1
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "Showing DockWidget-1-[hidden]",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-1"
|
|
||||||
},
|
|
||||||
"type": 3
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidgetAsTab DockWidget-4-[hidden] onto DockWidget-1",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-1",
|
|
||||||
"dockWidgetToAddName": "DockWidget-4"
|
|
||||||
},
|
|
||||||
"type": 5
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "Showing DockWidget-2-[hidden]",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-2"
|
|
||||||
},
|
|
||||||
"type": 3
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidgetAsTab DockWidget-3-[hidden] onto DockWidget-4",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-4",
|
|
||||||
"dockWidgetToAddName": "DockWidget-3"
|
|
||||||
},
|
|
||||||
"type": 5
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "Closing DockWidget-2",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-2"
|
|
||||||
},
|
|
||||||
"type": 1
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "Showing DockWidget-2-[hidden]",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-2"
|
|
||||||
},
|
|
||||||
"type": 3
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "Closing DockWidget-2",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-2"
|
|
||||||
},
|
|
||||||
"type": 1
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "Hiding DockWidget-3",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-3"
|
|
||||||
},
|
|
||||||
"type": 2
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidget DockWidget-1-[hidden] to top, relative to DockWidget-4",
|
|
||||||
"params": {
|
|
||||||
"addingOption": 0,
|
|
||||||
"dockWidgetName": "DockWidget-1",
|
|
||||||
"location": 2,
|
|
||||||
"mainWindowName": "MainWindow-1",
|
|
||||||
"relativeToName": "DockWidget-4"
|
|
||||||
},
|
|
||||||
"type": 4
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidget DockWidget-3-[hidden] to top",
|
|
||||||
"params": {
|
|
||||||
"addingOption": 0,
|
|
||||||
"dockWidgetName": "DockWidget-3",
|
|
||||||
"location": 2,
|
|
||||||
"mainWindowName": "MainWindow-1"
|
|
||||||
},
|
|
||||||
"type": 4
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidgetAsTab DockWidget-2-[hidden] onto DockWidget-1",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-1",
|
|
||||||
"dockWidgetToAddName": "DockWidget-2"
|
|
||||||
},
|
|
||||||
"type": 5
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
File diff suppressed because it is too large
Load Diff
@@ -1,312 +0,0 @@
|
|||||||
{
|
|
||||||
"initialLayout": {
|
|
||||||
"dockWidgets": [
|
|
||||||
{
|
|
||||||
"geometry": {
|
|
||||||
"size": {
|
|
||||||
"height": 1070,
|
|
||||||
"width": 853
|
|
||||||
},
|
|
||||||
"x": 190,
|
|
||||||
"y": 86
|
|
||||||
},
|
|
||||||
"isFloating": true,
|
|
||||||
"isVisible": true,
|
|
||||||
"minSize": {
|
|
||||||
"height": 490,
|
|
||||||
"width": 346
|
|
||||||
},
|
|
||||||
"name": "DockWidget-1"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"geometry": {
|
|
||||||
"size": {
|
|
||||||
"height": 642,
|
|
||||||
"width": 724
|
|
||||||
},
|
|
||||||
"x": 24,
|
|
||||||
"y": 397
|
|
||||||
},
|
|
||||||
"isFloating": false,
|
|
||||||
"isVisible": true,
|
|
||||||
"minSize": {
|
|
||||||
"height": 371,
|
|
||||||
"width": 373
|
|
||||||
},
|
|
||||||
"name": "DockWidget-2"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"geometry": {
|
|
||||||
"size": {
|
|
||||||
"height": 615,
|
|
||||||
"width": 990
|
|
||||||
},
|
|
||||||
"x": 82,
|
|
||||||
"y": 295
|
|
||||||
},
|
|
||||||
"isFloating": false,
|
|
||||||
"isVisible": true,
|
|
||||||
"minSize": {
|
|
||||||
"height": 436,
|
|
||||||
"width": 533
|
|
||||||
},
|
|
||||||
"name": "DockWidget-3"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"geometry": {
|
|
||||||
"size": {
|
|
||||||
"height": 302,
|
|
||||||
"width": 937
|
|
||||||
},
|
|
||||||
"x": 276,
|
|
||||||
"y": 437
|
|
||||||
},
|
|
||||||
"isFloating": false,
|
|
||||||
"isVisible": true,
|
|
||||||
"minSize": {
|
|
||||||
"height": 211,
|
|
||||||
"width": 363
|
|
||||||
},
|
|
||||||
"name": "DockWidget-4"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"geometry": {
|
|
||||||
"size": {
|
|
||||||
"height": 867,
|
|
||||||
"width": 1159
|
|
||||||
},
|
|
||||||
"x": 66,
|
|
||||||
"y": 339
|
|
||||||
},
|
|
||||||
"isFloating": true,
|
|
||||||
"isVisible": true,
|
|
||||||
"minSize": {
|
|
||||||
"height": 587,
|
|
||||||
"width": 570
|
|
||||||
},
|
|
||||||
"name": "DockWidget-5"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"geometry": {
|
|
||||||
"size": {
|
|
||||||
"height": 552,
|
|
||||||
"width": 604
|
|
||||||
},
|
|
||||||
"x": 9,
|
|
||||||
"y": 442
|
|
||||||
},
|
|
||||||
"isFloating": false,
|
|
||||||
"isVisible": false,
|
|
||||||
"minSize": {
|
|
||||||
"height": 427,
|
|
||||||
"width": 152
|
|
||||||
},
|
|
||||||
"name": "DockWidget-6"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"geometry": {
|
|
||||||
"size": {
|
|
||||||
"height": 706,
|
|
||||||
"width": 561
|
|
||||||
},
|
|
||||||
"x": 397,
|
|
||||||
"y": 194
|
|
||||||
},
|
|
||||||
"isFloating": false,
|
|
||||||
"isVisible": true,
|
|
||||||
"minSize": {
|
|
||||||
"height": 486,
|
|
||||||
"width": 388
|
|
||||||
},
|
|
||||||
"name": "DockWidget-7"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"geometry": {
|
|
||||||
"size": {
|
|
||||||
"height": 612,
|
|
||||||
"width": 807
|
|
||||||
},
|
|
||||||
"x": 180,
|
|
||||||
"y": 243
|
|
||||||
},
|
|
||||||
"isFloating": false,
|
|
||||||
"isVisible": false,
|
|
||||||
"minSize": {
|
|
||||||
"height": 164,
|
|
||||||
"width": 502
|
|
||||||
},
|
|
||||||
"name": "DockWidget-8"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"geometry": {
|
|
||||||
"size": {
|
|
||||||
"height": 286,
|
|
||||||
"width": 549
|
|
||||||
},
|
|
||||||
"x": 448,
|
|
||||||
"y": 180
|
|
||||||
},
|
|
||||||
"isFloating": true,
|
|
||||||
"isVisible": true,
|
|
||||||
"minSize": {
|
|
||||||
"height": 217,
|
|
||||||
"width": 408
|
|
||||||
},
|
|
||||||
"name": "DockWidget-9"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"mainWindows": [
|
|
||||||
{
|
|
||||||
"geometry": {
|
|
||||||
"size": {
|
|
||||||
"height": 1047,
|
|
||||||
"width": 315
|
|
||||||
},
|
|
||||||
"x": 372,
|
|
||||||
"y": 487
|
|
||||||
},
|
|
||||||
"mainWindowOption": 0,
|
|
||||||
"name": "MainWindow-1"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"operations": [
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidget DockWidget-6 to left",
|
|
||||||
"params": {
|
|
||||||
"addingOption": 0,
|
|
||||||
"dockWidgetName": "DockWidget-6",
|
|
||||||
"location": 1,
|
|
||||||
"mainWindowName": "MainWindow-1"
|
|
||||||
},
|
|
||||||
"type": 4
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidget DockWidget-4-[hidden] to top",
|
|
||||||
"params": {
|
|
||||||
"addingOption": 0,
|
|
||||||
"dockWidgetName": "DockWidget-4",
|
|
||||||
"location": 2,
|
|
||||||
"mainWindowName": "MainWindow-1"
|
|
||||||
},
|
|
||||||
"type": 4
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidget DockWidget-3 to bottom, relative to DockWidget-4",
|
|
||||||
"params": {
|
|
||||||
"addingOption": 0,
|
|
||||||
"dockWidgetName": "DockWidget-3",
|
|
||||||
"location": 4,
|
|
||||||
"mainWindowName": "MainWindow-1",
|
|
||||||
"relativeToName": "DockWidget-4"
|
|
||||||
},
|
|
||||||
"type": 4
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "Showing DockWidget-8-[hidden]",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-8"
|
|
||||||
},
|
|
||||||
"type": 3
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidget DockWidget-1 to right",
|
|
||||||
"params": {
|
|
||||||
"addingOption": 0,
|
|
||||||
"dockWidgetName": "DockWidget-1",
|
|
||||||
"location": 3,
|
|
||||||
"mainWindowName": "MainWindow-1"
|
|
||||||
},
|
|
||||||
"type": 4
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidgetAsTab DockWidget-5 onto DockWidget-6",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-6",
|
|
||||||
"dockWidgetToAddName": "DockWidget-5"
|
|
||||||
},
|
|
||||||
"type": 5
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidget DockWidget-8-[hidden] to bottom, relative to DockWidget-1",
|
|
||||||
"params": {
|
|
||||||
"addingOption": 0,
|
|
||||||
"dockWidgetName": "DockWidget-8",
|
|
||||||
"location": 4,
|
|
||||||
"mainWindowName": "MainWindow-1",
|
|
||||||
"relativeToName": "DockWidget-1"
|
|
||||||
},
|
|
||||||
"type": 4
|
|
||||||
},
|
|
||||||
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidget DockWidget-2-[hidden] to top",
|
|
||||||
"params": {
|
|
||||||
"addingOption": 0,
|
|
||||||
"dockWidgetName": "DockWidget-2",
|
|
||||||
"location": 2,
|
|
||||||
"mainWindowName": "MainWindow-1"
|
|
||||||
},
|
|
||||||
"type": 4
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "Closing DockWidget-3",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-3"
|
|
||||||
},
|
|
||||||
"type": 1
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidget DockWidget-6-[hidden] to right",
|
|
||||||
"params": {
|
|
||||||
"addingOption": 0,
|
|
||||||
"dockWidgetName": "DockWidget-6",
|
|
||||||
"location": 3,
|
|
||||||
"mainWindowName": "MainWindow-1"
|
|
||||||
},
|
|
||||||
"type": 4
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "Closing DockWidget-6",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-6"
|
|
||||||
},
|
|
||||||
"type": 1
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidget DockWidget-1 to right",
|
|
||||||
"params": {
|
|
||||||
"addingOption": 0,
|
|
||||||
"dockWidgetName": "DockWidget-1",
|
|
||||||
"location": 3,
|
|
||||||
"mainWindowName": "MainWindow-1"
|
|
||||||
},
|
|
||||||
"type": 4
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "Hiding DockWidget-5",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-5"
|
|
||||||
},
|
|
||||||
"type": 2
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidget DockWidget-4-[hidden] to left, relative to DockWidget-1",
|
|
||||||
"params": {
|
|
||||||
"addingOption": 0,
|
|
||||||
"dockWidgetName": "DockWidget-4",
|
|
||||||
"location": 1,
|
|
||||||
"mainWindowName": "MainWindow-1",
|
|
||||||
"relativeToName": "DockWidget-1"
|
|
||||||
},
|
|
||||||
"type": 4
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "Closing DockWidget-8",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-8"
|
|
||||||
},
|
|
||||||
"type": 1
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
File diff suppressed because it is too large
Load Diff
@@ -1,599 +0,0 @@
|
|||||||
{
|
|
||||||
"initialLayout": {
|
|
||||||
"dockWidgets": [
|
|
||||||
{
|
|
||||||
"geometry": {
|
|
||||||
"size": {
|
|
||||||
"height": 732,
|
|
||||||
"width": 504
|
|
||||||
},
|
|
||||||
"x": 386,
|
|
||||||
"y": 208
|
|
||||||
},
|
|
||||||
"isFloating": true,
|
|
||||||
"isVisible": true,
|
|
||||||
"minSize": {
|
|
||||||
"height": 539,
|
|
||||||
"width": 267
|
|
||||||
},
|
|
||||||
"name": "DockWidget-1"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"geometry": {
|
|
||||||
"size": {
|
|
||||||
"height": 986,
|
|
||||||
"width": 633
|
|
||||||
},
|
|
||||||
"x": 334,
|
|
||||||
"y": 215
|
|
||||||
},
|
|
||||||
"isFloating": false,
|
|
||||||
"isVisible": true,
|
|
||||||
"minSize": {
|
|
||||||
"height": 414,
|
|
||||||
"width": 352
|
|
||||||
},
|
|
||||||
"name": "DockWidget-2"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"geometry": {
|
|
||||||
"size": {
|
|
||||||
"height": 447,
|
|
||||||
"width": 474
|
|
||||||
},
|
|
||||||
"x": 387,
|
|
||||||
"y": 414
|
|
||||||
},
|
|
||||||
"isFloating": false,
|
|
||||||
"isVisible": true,
|
|
||||||
"minSize": {
|
|
||||||
"height": 182,
|
|
||||||
"width": 394
|
|
||||||
},
|
|
||||||
"name": "DockWidget-3"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"geometry": {
|
|
||||||
"size": {
|
|
||||||
"height": 403,
|
|
||||||
"width": 579
|
|
||||||
},
|
|
||||||
"x": 468,
|
|
||||||
"y": 374
|
|
||||||
},
|
|
||||||
"isFloating": true,
|
|
||||||
"isVisible": true,
|
|
||||||
"minSize": {
|
|
||||||
"height": 165,
|
|
||||||
"width": 168
|
|
||||||
},
|
|
||||||
"name": "DockWidget-4"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"geometry": {
|
|
||||||
"size": {
|
|
||||||
"height": 689,
|
|
||||||
"width": 784
|
|
||||||
},
|
|
||||||
"x": 252,
|
|
||||||
"y": 482
|
|
||||||
},
|
|
||||||
"isFloating": true,
|
|
||||||
"isVisible": false,
|
|
||||||
"minSize": {
|
|
||||||
"height": 178,
|
|
||||||
"width": 500
|
|
||||||
},
|
|
||||||
"name": "DockWidget-5"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"geometry": {
|
|
||||||
"size": {
|
|
||||||
"height": 724,
|
|
||||||
"width": 701
|
|
||||||
},
|
|
||||||
"x": 368,
|
|
||||||
"y": 225
|
|
||||||
},
|
|
||||||
"isFloating": false,
|
|
||||||
"isVisible": false,
|
|
||||||
"minSize": {
|
|
||||||
"height": 155,
|
|
||||||
"width": 276
|
|
||||||
},
|
|
||||||
"name": "DockWidget-6"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"geometry": {
|
|
||||||
"size": {
|
|
||||||
"height": 410,
|
|
||||||
"width": 627
|
|
||||||
},
|
|
||||||
"x": 223,
|
|
||||||
"y": 121
|
|
||||||
},
|
|
||||||
"isFloating": false,
|
|
||||||
"isVisible": true,
|
|
||||||
"minSize": {
|
|
||||||
"height": 335,
|
|
||||||
"width": 524
|
|
||||||
},
|
|
||||||
"name": "DockWidget-7"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"geometry": {
|
|
||||||
"size": {
|
|
||||||
"height": 734,
|
|
||||||
"width": 984
|
|
||||||
},
|
|
||||||
"x": 17,
|
|
||||||
"y": 390
|
|
||||||
},
|
|
||||||
"isFloating": true,
|
|
||||||
"isVisible": true,
|
|
||||||
"minSize": {
|
|
||||||
"height": 196,
|
|
||||||
"width": 480
|
|
||||||
},
|
|
||||||
"name": "DockWidget-8"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"geometry": {
|
|
||||||
"size": {
|
|
||||||
"height": 455,
|
|
||||||
"width": 589
|
|
||||||
},
|
|
||||||
"x": 47,
|
|
||||||
"y": 134
|
|
||||||
},
|
|
||||||
"isFloating": false,
|
|
||||||
"isVisible": true,
|
|
||||||
"minSize": {
|
|
||||||
"height": 225,
|
|
||||||
"width": 290
|
|
||||||
},
|
|
||||||
"name": "DockWidget-9"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"geometry": {
|
|
||||||
"size": {
|
|
||||||
"height": 847,
|
|
||||||
"width": 739
|
|
||||||
},
|
|
||||||
"x": 155,
|
|
||||||
"y": 331
|
|
||||||
},
|
|
||||||
"isFloating": false,
|
|
||||||
"isVisible": true,
|
|
||||||
"minSize": {
|
|
||||||
"height": 504,
|
|
||||||
"width": 184
|
|
||||||
},
|
|
||||||
"name": "DockWidget-10"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"mainWindows": [
|
|
||||||
{
|
|
||||||
"geometry": {
|
|
||||||
"size": {
|
|
||||||
"height": 1350,
|
|
||||||
"width": 288
|
|
||||||
},
|
|
||||||
"x": 336,
|
|
||||||
"y": 411
|
|
||||||
},
|
|
||||||
"mainWindowOption": 0,
|
|
||||||
"name": "MainWindow-1"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"operations": [
|
|
||||||
{
|
|
||||||
"comment": "Closing DockWidget-3",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-3"
|
|
||||||
},
|
|
||||||
"type": 1
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidget DockWidget-6-[hidden] to left",
|
|
||||||
"params": {
|
|
||||||
"addingOption": 0,
|
|
||||||
"dockWidgetName": "DockWidget-6",
|
|
||||||
"location": 1,
|
|
||||||
"mainWindowName": "MainWindow-1"
|
|
||||||
},
|
|
||||||
"type": 4
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "Hiding DockWidget-4",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-4"
|
|
||||||
},
|
|
||||||
"type": 2
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidgetAsTab DockWidget-3-[hidden] onto DockWidget-8",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-8",
|
|
||||||
"dockWidgetToAddName": "DockWidget-3"
|
|
||||||
},
|
|
||||||
"type": 5
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidget DockWidget-8-[hidden] to right",
|
|
||||||
"params": {
|
|
||||||
"addingOption": 0,
|
|
||||||
"dockWidgetName": "DockWidget-8",
|
|
||||||
"location": 3,
|
|
||||||
"mainWindowName": "MainWindow-1"
|
|
||||||
},
|
|
||||||
"type": 4
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidget DockWidget-5-[hidden] to top, relative to DockWidget-6",
|
|
||||||
"params": {
|
|
||||||
"addingOption": 0,
|
|
||||||
"dockWidgetName": "DockWidget-5",
|
|
||||||
"location": 2,
|
|
||||||
"mainWindowName": "MainWindow-1",
|
|
||||||
"relativeToName": "DockWidget-6"
|
|
||||||
},
|
|
||||||
"type": 4
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidget DockWidget-2 to top",
|
|
||||||
"params": {
|
|
||||||
"addingOption": 0,
|
|
||||||
"dockWidgetName": "DockWidget-2",
|
|
||||||
"location": 2,
|
|
||||||
"mainWindowName": "MainWindow-1"
|
|
||||||
},
|
|
||||||
"type": 4
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "Hiding DockWidget-3",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-3"
|
|
||||||
},
|
|
||||||
"type": 2
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "Closing DockWidget-7",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-7"
|
|
||||||
},
|
|
||||||
"type": 1
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidgetAsTab DockWidget-1 onto DockWidget-10",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-10",
|
|
||||||
"dockWidgetToAddName": "DockWidget-1"
|
|
||||||
},
|
|
||||||
"type": 5
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "Closing DockWidget-9",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-9"
|
|
||||||
},
|
|
||||||
"type": 1
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidget DockWidget-9-[hidden] to left",
|
|
||||||
"params": {
|
|
||||||
"addingOption": 0,
|
|
||||||
"dockWidgetName": "DockWidget-9",
|
|
||||||
"location": 1,
|
|
||||||
"mainWindowName": "MainWindow-1"
|
|
||||||
},
|
|
||||||
"type": 4
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidget DockWidget-7-[hidden] to left, relative to DockWidget-8",
|
|
||||||
"params": {
|
|
||||||
"addingOption": 0,
|
|
||||||
"dockWidgetName": "DockWidget-7",
|
|
||||||
"location": 1,
|
|
||||||
"mainWindowName": "MainWindow-1",
|
|
||||||
"relativeToName": "DockWidget-8"
|
|
||||||
},
|
|
||||||
"type": 4
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "Closing DockWidget-9",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-9"
|
|
||||||
},
|
|
||||||
"type": 1
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "Hiding DockWidget-1",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-1"
|
|
||||||
},
|
|
||||||
"type": 2
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "Closing DockWidget-6",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-6"
|
|
||||||
},
|
|
||||||
"type": 1
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "Hiding DockWidget-8",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-8"
|
|
||||||
},
|
|
||||||
"type": 2
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "Showing DockWidget-1-[hidden]",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-1"
|
|
||||||
},
|
|
||||||
"type": 3
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "Hiding DockWidget-2",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-2"
|
|
||||||
},
|
|
||||||
"type": 2
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidget DockWidget-5 to right",
|
|
||||||
"params": {
|
|
||||||
"addingOption": 0,
|
|
||||||
"dockWidgetName": "DockWidget-5",
|
|
||||||
"location": 3,
|
|
||||||
"mainWindowName": "MainWindow-1"
|
|
||||||
},
|
|
||||||
"type": 4
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidgetAsTab DockWidget-5 onto DockWidget-1",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-1",
|
|
||||||
"dockWidgetToAddName": "DockWidget-5"
|
|
||||||
},
|
|
||||||
"type": 5
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidgetAsTab DockWidget-7 onto DockWidget-1-[hidden]",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-1",
|
|
||||||
"dockWidgetToAddName": "DockWidget-7"
|
|
||||||
},
|
|
||||||
"type": 5
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "Showing DockWidget-3-[hidden]",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-3"
|
|
||||||
},
|
|
||||||
"type": 3
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidget DockWidget-2-[hidden] to right",
|
|
||||||
"params": {
|
|
||||||
"addingOption": 0,
|
|
||||||
"dockWidgetName": "DockWidget-2",
|
|
||||||
"location": 3,
|
|
||||||
"mainWindowName": "MainWindow-1"
|
|
||||||
},
|
|
||||||
"type": 4
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidget DockWidget-4-[hidden] to right, relative to DockWidget-2",
|
|
||||||
"params": {
|
|
||||||
"addingOption": 0,
|
|
||||||
"dockWidgetName": "DockWidget-4",
|
|
||||||
"location": 3,
|
|
||||||
"mainWindowName": "MainWindow-1",
|
|
||||||
"relativeToName": "DockWidget-2"
|
|
||||||
},
|
|
||||||
"type": 4
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "Showing DockWidget-6-[hidden]",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-6"
|
|
||||||
},
|
|
||||||
"type": 3
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidgetAsTab DockWidget-3 onto DockWidget-7",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-7",
|
|
||||||
"dockWidgetToAddName": "DockWidget-3"
|
|
||||||
},
|
|
||||||
"type": 5
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "Closing DockWidget-10",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-10"
|
|
||||||
},
|
|
||||||
"type": 1
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidget DockWidget-8-[hidden] to top, relative to DockWidget-2",
|
|
||||||
"params": {
|
|
||||||
"addingOption": 0,
|
|
||||||
"dockWidgetName": "DockWidget-8",
|
|
||||||
"location": 2,
|
|
||||||
"mainWindowName": "MainWindow-1",
|
|
||||||
"relativeToName": "DockWidget-2"
|
|
||||||
},
|
|
||||||
"type": 4
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidgetAsTab DockWidget-7-[hidden] onto DockWidget-8",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-8",
|
|
||||||
"dockWidgetToAddName": "DockWidget-7"
|
|
||||||
},
|
|
||||||
"type": 5
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidget DockWidget-9-[hidden] to top",
|
|
||||||
"params": {
|
|
||||||
"addingOption": 0,
|
|
||||||
"dockWidgetName": "DockWidget-9",
|
|
||||||
"location": 2,
|
|
||||||
"mainWindowName": "MainWindow-1"
|
|
||||||
},
|
|
||||||
"type": 4
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidgetAsTab DockWidget-3 onto DockWidget-2",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-2",
|
|
||||||
"dockWidgetToAddName": "DockWidget-3"
|
|
||||||
},
|
|
||||||
"type": 5
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidget DockWidget-6 to left, relative to DockWidget-8-[hidden]",
|
|
||||||
"params": {
|
|
||||||
"addingOption": 0,
|
|
||||||
"dockWidgetName": "DockWidget-6",
|
|
||||||
"location": 1,
|
|
||||||
"mainWindowName": "MainWindow-1",
|
|
||||||
"relativeToName": "DockWidget-8"
|
|
||||||
},
|
|
||||||
"type": 4
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidget DockWidget-8-[hidden] to top",
|
|
||||||
"params": {
|
|
||||||
"addingOption": 0,
|
|
||||||
"dockWidgetName": "DockWidget-8",
|
|
||||||
"location": 2,
|
|
||||||
"mainWindowName": "MainWindow-1"
|
|
||||||
},
|
|
||||||
"type": 4
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidgetAsTab DockWidget-8 onto DockWidget-5",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-5",
|
|
||||||
"dockWidgetToAddName": "DockWidget-8"
|
|
||||||
},
|
|
||||||
"type": 5
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidgetAsTab DockWidget-8 onto DockWidget-2-[hidden]",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-2",
|
|
||||||
"dockWidgetToAddName": "DockWidget-8"
|
|
||||||
},
|
|
||||||
"type": 5
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidgetAsTab DockWidget-5 onto DockWidget-9",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-9",
|
|
||||||
"dockWidgetToAddName": "DockWidget-5"
|
|
||||||
},
|
|
||||||
"type": 5
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "Closing DockWidget-1",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-1"
|
|
||||||
},
|
|
||||||
"type": 1
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "Hiding DockWidget-7",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-7"
|
|
||||||
},
|
|
||||||
"type": 2
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidgetAsTab DockWidget-1-[hidden] onto DockWidget-4",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-4",
|
|
||||||
"dockWidgetToAddName": "DockWidget-1"
|
|
||||||
},
|
|
||||||
"type": 5
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "Showing DockWidget-3-[hidden]",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-3"
|
|
||||||
},
|
|
||||||
"type": 3
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "Closing DockWidget-3",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-3"
|
|
||||||
},
|
|
||||||
"type": 1
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidgetAsTab DockWidget-10-[hidden] onto DockWidget-5",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-5",
|
|
||||||
"dockWidgetToAddName": "DockWidget-10"
|
|
||||||
},
|
|
||||||
"type": 5
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidget DockWidget-5-[hidden] to right, relative to DockWidget-9-[hidden]",
|
|
||||||
"params": {
|
|
||||||
"addingOption": 0,
|
|
||||||
"dockWidgetName": "DockWidget-5",
|
|
||||||
"location": 3,
|
|
||||||
"mainWindowName": "MainWindow-1",
|
|
||||||
"relativeToName": "DockWidget-9"
|
|
||||||
},
|
|
||||||
"type": 4
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidget DockWidget-5 to right, relative to DockWidget-6",
|
|
||||||
"params": {
|
|
||||||
"addingOption": 0,
|
|
||||||
"dockWidgetName": "DockWidget-5",
|
|
||||||
"location": 3,
|
|
||||||
"mainWindowName": "MainWindow-1",
|
|
||||||
"relativeToName": "DockWidget-6"
|
|
||||||
},
|
|
||||||
"type": 4
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "Closing DockWidget-10",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-10"
|
|
||||||
},
|
|
||||||
"type": 1
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "Showing DockWidget-2-[hidden]",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-2"
|
|
||||||
},
|
|
||||||
"type": 3
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "Hiding DockWidget-2",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-2"
|
|
||||||
},
|
|
||||||
"type": 2
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "Showing DockWidget-7-[hidden]",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-7"
|
|
||||||
},
|
|
||||||
"type": 3
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
@@ -1,364 +0,0 @@
|
|||||||
{
|
|
||||||
"initialLayout": {
|
|
||||||
"dockWidgets": [
|
|
||||||
{
|
|
||||||
"geometry": {
|
|
||||||
"size": {
|
|
||||||
"height": 1050,
|
|
||||||
"width": 873
|
|
||||||
},
|
|
||||||
"x": 389,
|
|
||||||
"y": 359
|
|
||||||
},
|
|
||||||
"isFloating": false,
|
|
||||||
"isVisible": true,
|
|
||||||
"minSize": {
|
|
||||||
"height": 539,
|
|
||||||
"width": 599
|
|
||||||
},
|
|
||||||
"name": "DockWidget-47"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"geometry": {
|
|
||||||
"size": {
|
|
||||||
"height": 767,
|
|
||||||
"width": 1008
|
|
||||||
},
|
|
||||||
"x": 483,
|
|
||||||
"y": 478
|
|
||||||
},
|
|
||||||
"isFloating": true,
|
|
||||||
"isVisible": true,
|
|
||||||
"minSize": {
|
|
||||||
"height": 415,
|
|
||||||
"width": 502
|
|
||||||
},
|
|
||||||
"name": "DockWidget-48"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"geometry": {
|
|
||||||
"size": {
|
|
||||||
"height": 347,
|
|
||||||
"width": 802
|
|
||||||
},
|
|
||||||
"x": 168,
|
|
||||||
"y": 291
|
|
||||||
},
|
|
||||||
"isFloating": true,
|
|
||||||
"isVisible": false,
|
|
||||||
"minSize": {
|
|
||||||
"height": 252,
|
|
||||||
"width": 248
|
|
||||||
},
|
|
||||||
"name": "DockWidget-49"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"geometry": {
|
|
||||||
"size": {
|
|
||||||
"height": 514,
|
|
||||||
"width": 750
|
|
||||||
},
|
|
||||||
"x": 77,
|
|
||||||
"y": 43
|
|
||||||
},
|
|
||||||
"isFloating": false,
|
|
||||||
"isVisible": false,
|
|
||||||
"minSize": {
|
|
||||||
"height": 165,
|
|
||||||
"width": 580
|
|
||||||
},
|
|
||||||
"name": "DockWidget-50"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"geometry": {
|
|
||||||
"size": {
|
|
||||||
"height": 777,
|
|
||||||
"width": 635
|
|
||||||
},
|
|
||||||
"x": 392,
|
|
||||||
"y": 37
|
|
||||||
},
|
|
||||||
"isFloating": true,
|
|
||||||
"isVisible": true,
|
|
||||||
"minSize": {
|
|
||||||
"height": 548,
|
|
||||||
"width": 558
|
|
||||||
},
|
|
||||||
"name": "DockWidget-51"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"geometry": {
|
|
||||||
"size": {
|
|
||||||
"height": 803,
|
|
||||||
"width": 526
|
|
||||||
},
|
|
||||||
"x": 409,
|
|
||||||
"y": 109
|
|
||||||
},
|
|
||||||
"isFloating": true,
|
|
||||||
"isVisible": false,
|
|
||||||
"minSize": {
|
|
||||||
"height": 288,
|
|
||||||
"width": 205
|
|
||||||
},
|
|
||||||
"name": "DockWidget-52"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"geometry": {
|
|
||||||
"size": {
|
|
||||||
"height": 925,
|
|
||||||
"width": 1044
|
|
||||||
},
|
|
||||||
"x": 175,
|
|
||||||
"y": 159
|
|
||||||
},
|
|
||||||
"isFloating": true,
|
|
||||||
"isVisible": true,
|
|
||||||
"minSize": {
|
|
||||||
"height": 531,
|
|
||||||
"width": 508
|
|
||||||
},
|
|
||||||
"name": "DockWidget-53"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"geometry": {
|
|
||||||
"size": {
|
|
||||||
"height": 1003,
|
|
||||||
"width": 688
|
|
||||||
},
|
|
||||||
"x": 384,
|
|
||||||
"y": 293
|
|
||||||
},
|
|
||||||
"isFloating": true,
|
|
||||||
"isVisible": true,
|
|
||||||
"minSize": {
|
|
||||||
"height": 564,
|
|
||||||
"width": 170
|
|
||||||
},
|
|
||||||
"name": "DockWidget-54"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"mainWindows": [
|
|
||||||
{
|
|
||||||
"geometry": {
|
|
||||||
"size": {
|
|
||||||
"height": 965,
|
|
||||||
"width": 337
|
|
||||||
},
|
|
||||||
"x": 445,
|
|
||||||
"y": 485
|
|
||||||
},
|
|
||||||
"mainWindowOption": 0,
|
|
||||||
"name": "MainWindow-9"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"operations": [
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidget DockWidget-49-[hidden] to top",
|
|
||||||
"params": {
|
|
||||||
"addingOption": 0,
|
|
||||||
"dockWidgetName": "DockWidget-49",
|
|
||||||
"location": 2,
|
|
||||||
"mainWindowName": "MainWindow-9"
|
|
||||||
},
|
|
||||||
"type": 4
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidgetAsTab DockWidget-51-[hidden] onto DockWidget-53-[hidden]",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-53",
|
|
||||||
"dockWidgetToAddName": "DockWidget-51"
|
|
||||||
},
|
|
||||||
"type": 5
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "Showing DockWidget-49-[hidden]",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-49"
|
|
||||||
},
|
|
||||||
"type": 3
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "Closing DockWidget-49",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-49"
|
|
||||||
},
|
|
||||||
"type": 1
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidget DockWidget-48-[hidden] to bottom",
|
|
||||||
"params": {
|
|
||||||
"addingOption": 0,
|
|
||||||
"dockWidgetName": "DockWidget-48",
|
|
||||||
"location": 4,
|
|
||||||
"mainWindowName": "MainWindow-9"
|
|
||||||
},
|
|
||||||
"type": 4
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidget DockWidget-53-[hidden] to bottom",
|
|
||||||
"params": {
|
|
||||||
"addingOption": 0,
|
|
||||||
"dockWidgetName": "DockWidget-53",
|
|
||||||
"location": 4,
|
|
||||||
"mainWindowName": "MainWindow-9"
|
|
||||||
},
|
|
||||||
"type": 4
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "Closing DockWidget-51",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-51"
|
|
||||||
},
|
|
||||||
"type": 1
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "Showing DockWidget-49-[hidden]",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-49"
|
|
||||||
},
|
|
||||||
"type": 3
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "Closing DockWidget-49",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-49"
|
|
||||||
},
|
|
||||||
"type": 1
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "Showing DockWidget-52-[hidden]",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-52"
|
|
||||||
},
|
|
||||||
"type": 3
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidget DockWidget-54-[hidden] to bottom, relative to DockWidget-48",
|
|
||||||
"params": {
|
|
||||||
"addingOption": 0,
|
|
||||||
"dockWidgetName": "DockWidget-54",
|
|
||||||
"location": 4,
|
|
||||||
"mainWindowName": "MainWindow-9",
|
|
||||||
"relativeToName": "DockWidget-48"
|
|
||||||
},
|
|
||||||
"type": 4
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidget DockWidget-50-[hidden] to bottom",
|
|
||||||
"params": {
|
|
||||||
"addingOption": 0,
|
|
||||||
"dockWidgetName": "DockWidget-50",
|
|
||||||
"location": 4,
|
|
||||||
"mainWindowName": "MainWindow-9"
|
|
||||||
},
|
|
||||||
"type": 4
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "Closing DockWidget-50",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-50"
|
|
||||||
},
|
|
||||||
"type": 1
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidgetAsTab DockWidget-48 onto DockWidget-52",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-52",
|
|
||||||
"dockWidgetToAddName": "DockWidget-48"
|
|
||||||
},
|
|
||||||
"type": 5
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidget DockWidget-52-[hidden] to left, relative to DockWidget-53",
|
|
||||||
"params": {
|
|
||||||
"addingOption": 0,
|
|
||||||
"dockWidgetName": "DockWidget-52",
|
|
||||||
"location": 1,
|
|
||||||
"mainWindowName": "MainWindow-9",
|
|
||||||
"relativeToName": "DockWidget-53"
|
|
||||||
},
|
|
||||||
"type": 4
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "Showing DockWidget-50-[hidden]",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-50"
|
|
||||||
},
|
|
||||||
"type": 3
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidget DockWidget-53-[hidden] to left, relative to DockWidget-52",
|
|
||||||
"params": {
|
|
||||||
"addingOption": 0,
|
|
||||||
"dockWidgetName": "DockWidget-53",
|
|
||||||
"location": 1,
|
|
||||||
"mainWindowName": "MainWindow-9",
|
|
||||||
"relativeToName": "DockWidget-52"
|
|
||||||
},
|
|
||||||
"type": 4
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "Closing DockWidget-53",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-53"
|
|
||||||
},
|
|
||||||
"type": 1
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "Closing DockWidget-52",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-52"
|
|
||||||
},
|
|
||||||
"type": 1
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidget DockWidget-47-[hidden] to left, relative to DockWidget-50",
|
|
||||||
"params": {
|
|
||||||
"addingOption": 0,
|
|
||||||
"dockWidgetName": "DockWidget-47",
|
|
||||||
"location": 1,
|
|
||||||
"mainWindowName": "MainWindow-9",
|
|
||||||
"relativeToName": "DockWidget-50"
|
|
||||||
},
|
|
||||||
"type": 4
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "Closing DockWidget-47",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-47"
|
|
||||||
},
|
|
||||||
"type": 1
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "Showing DockWidget-48-[hidden]",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-48"
|
|
||||||
},
|
|
||||||
"type": 3
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "Showing DockWidget-49-[hidden]",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-49"
|
|
||||||
},
|
|
||||||
"type": 3
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "Showing DockWidget-52-[hidden]",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-52"
|
|
||||||
},
|
|
||||||
"type": 3
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidgetAsTab DockWidget-47-[hidden] onto DockWidget-49",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-49",
|
|
||||||
"dockWidgetToAddName": "DockWidget-47"
|
|
||||||
},
|
|
||||||
"type": 5
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
@@ -1,212 +0,0 @@
|
|||||||
{
|
|
||||||
"initialLayout": {
|
|
||||||
"dockWidgets": [
|
|
||||||
{
|
|
||||||
"geometry": {
|
|
||||||
"size": {
|
|
||||||
"height": 757,
|
|
||||||
"width": 748
|
|
||||||
},
|
|
||||||
"x": 352,
|
|
||||||
"y": 17
|
|
||||||
},
|
|
||||||
"isFloating": false,
|
|
||||||
"isVisible": true,
|
|
||||||
"minSize": {
|
|
||||||
"height": 302,
|
|
||||||
"width": 541
|
|
||||||
},
|
|
||||||
"name": "DockWidget-1"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"geometry": {
|
|
||||||
"size": {
|
|
||||||
"height": 930,
|
|
||||||
"width": 1083
|
|
||||||
},
|
|
||||||
"x": 64,
|
|
||||||
"y": 35
|
|
||||||
},
|
|
||||||
"isFloating": true,
|
|
||||||
"isVisible": true,
|
|
||||||
"minSize": {
|
|
||||||
"height": 462,
|
|
||||||
"width": 553
|
|
||||||
},
|
|
||||||
"name": "DockWidget-2"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"geometry": {
|
|
||||||
"size": {
|
|
||||||
"height": 665,
|
|
||||||
"width": 1031
|
|
||||||
},
|
|
||||||
"x": 207,
|
|
||||||
"y": 178
|
|
||||||
},
|
|
||||||
"isFloating": true,
|
|
||||||
"isVisible": true,
|
|
||||||
"minSize": {
|
|
||||||
"height": 402,
|
|
||||||
"width": 523
|
|
||||||
},
|
|
||||||
"name": "DockWidget-3"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"geometry": {
|
|
||||||
"size": {
|
|
||||||
"height": 525,
|
|
||||||
"width": 962
|
|
||||||
},
|
|
||||||
"x": 118,
|
|
||||||
"y": 157
|
|
||||||
},
|
|
||||||
"isFloating": false,
|
|
||||||
"isVisible": true,
|
|
||||||
"minSize": {
|
|
||||||
"height": 322,
|
|
||||||
"width": 460
|
|
||||||
},
|
|
||||||
"name": "DockWidget-4"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"geometry": {
|
|
||||||
"size": {
|
|
||||||
"height": 920,
|
|
||||||
"width": 618
|
|
||||||
},
|
|
||||||
"x": 199,
|
|
||||||
"y": 154
|
|
||||||
},
|
|
||||||
"isFloating": true,
|
|
||||||
"isVisible": false,
|
|
||||||
"minSize": {
|
|
||||||
"height": 425,
|
|
||||||
"width": 249
|
|
||||||
},
|
|
||||||
"name": "DockWidget-5"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"geometry": {
|
|
||||||
"size": {
|
|
||||||
"height": 770,
|
|
||||||
"width": 538
|
|
||||||
},
|
|
||||||
"x": 323,
|
|
||||||
"y": 203
|
|
||||||
},
|
|
||||||
"isFloating": true,
|
|
||||||
"isVisible": true,
|
|
||||||
"minSize": {
|
|
||||||
"height": 523,
|
|
||||||
"width": 451
|
|
||||||
},
|
|
||||||
"name": "DockWidget-6"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"mainWindows": [
|
|
||||||
{
|
|
||||||
"geometry": {
|
|
||||||
"size": {
|
|
||||||
"height": 1487,
|
|
||||||
"width": 307
|
|
||||||
},
|
|
||||||
"x": 42,
|
|
||||||
"y": 118
|
|
||||||
},
|
|
||||||
"mainWindowOption": 0,
|
|
||||||
"name": "MainWindow-17"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"operations": [
|
|
||||||
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidget DockWidget-4-[hidden] to top",
|
|
||||||
"params": {
|
|
||||||
"addingOption": 0,
|
|
||||||
"dockWidgetName": "DockWidget-4",
|
|
||||||
"location": 2,
|
|
||||||
"mainWindowName": "MainWindow-17"
|
|
||||||
},
|
|
||||||
"type": 4
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidget DockWidget-1 to left",
|
|
||||||
"params": {
|
|
||||||
"addingOption": 0,
|
|
||||||
"dockWidgetName": "DockWidget-1",
|
|
||||||
"location": 1,
|
|
||||||
"mainWindowName": "MainWindow-17"
|
|
||||||
},
|
|
||||||
"type": 4
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidgetAsTab DockWidget-6-[hidden] onto DockWidget-1",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-1",
|
|
||||||
"dockWidgetToAddName": "DockWidget-6"
|
|
||||||
},
|
|
||||||
"type": 5
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidget DockWidget-1-[hidden] to right, relative to DockWidget-4",
|
|
||||||
"params": {
|
|
||||||
"addingOption": 0,
|
|
||||||
"dockWidgetName": "DockWidget-1",
|
|
||||||
"location": 3,
|
|
||||||
"mainWindowName": "MainWindow-17",
|
|
||||||
"relativeToName": "DockWidget-4"
|
|
||||||
},
|
|
||||||
"type": 4
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "Closing DockWidget-6",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-6"
|
|
||||||
},
|
|
||||||
"type": 1
|
|
||||||
},
|
|
||||||
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidget DockWidget-5 to left",
|
|
||||||
"params": {
|
|
||||||
"addingOption": 0,
|
|
||||||
"dockWidgetName": "DockWidget-5",
|
|
||||||
"location": 1,
|
|
||||||
"mainWindowName": "MainWindow-17"
|
|
||||||
},
|
|
||||||
"type": 4
|
|
||||||
},
|
|
||||||
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidgetAsTab DockWidget-4-[hidden] onto DockWidget-3",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-3",
|
|
||||||
"dockWidgetToAddName": "DockWidget-4"
|
|
||||||
},
|
|
||||||
"type": 5
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidget DockWidget-2 to left",
|
|
||||||
"params": {
|
|
||||||
"addingOption": 0,
|
|
||||||
"dockWidgetName": "DockWidget-2",
|
|
||||||
"location": 1,
|
|
||||||
"mainWindowName": "MainWindow-17"
|
|
||||||
},
|
|
||||||
"type": 4
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidget DockWidget-4 to right, relative to DockWidget-5",
|
|
||||||
"params": {
|
|
||||||
"addingOption": 0,
|
|
||||||
"dockWidgetName": "DockWidget-4",
|
|
||||||
"location": 3,
|
|
||||||
"mainWindowName": "MainWindow-17",
|
|
||||||
"relativeToName": "DockWidget-5"
|
|
||||||
},
|
|
||||||
"type": 4
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
@@ -1,159 +0,0 @@
|
|||||||
{
|
|
||||||
"initialLayout": {
|
|
||||||
"dockWidgets": [
|
|
||||||
{
|
|
||||||
"geometry": {
|
|
||||||
"size": {
|
|
||||||
"height": 976,
|
|
||||||
"width": 1087
|
|
||||||
},
|
|
||||||
"x": 298,
|
|
||||||
"y": 13
|
|
||||||
},
|
|
||||||
"isFloating": false,
|
|
||||||
"isVisible": false,
|
|
||||||
"minSize": {
|
|
||||||
"height": 447,
|
|
||||||
"width": 498
|
|
||||||
},
|
|
||||||
"name": "DockWidget-1"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"geometry": {
|
|
||||||
"size": {
|
|
||||||
"height": 793,
|
|
||||||
"width": 897
|
|
||||||
},
|
|
||||||
"x": 322,
|
|
||||||
"y": 491
|
|
||||||
},
|
|
||||||
"isFloating": false,
|
|
||||||
"isVisible": false,
|
|
||||||
"minSize": {
|
|
||||||
"height": 565,
|
|
||||||
"width": 544
|
|
||||||
},
|
|
||||||
"name": "DockWidget-2"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"geometry": {
|
|
||||||
"size": {
|
|
||||||
"height": 426,
|
|
||||||
"width": 972
|
|
||||||
},
|
|
||||||
"x": 54,
|
|
||||||
"y": 88
|
|
||||||
},
|
|
||||||
"isFloating": true,
|
|
||||||
"isVisible": true,
|
|
||||||
"minSize": {
|
|
||||||
"height": 284,
|
|
||||||
"width": 596
|
|
||||||
},
|
|
||||||
"name": "DockWidget-3"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"mainWindows": [
|
|
||||||
{
|
|
||||||
"geometry": {
|
|
||||||
"size": {
|
|
||||||
"height": 1425,
|
|
||||||
"width": 145
|
|
||||||
},
|
|
||||||
"x": 20,
|
|
||||||
"y": 2
|
|
||||||
},
|
|
||||||
"mainWindowOption": 0,
|
|
||||||
"name": "MainWindow-1"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"operations": [
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidget DockWidget-2-[hidden] to top",
|
|
||||||
"params": {
|
|
||||||
"addingOption": 0,
|
|
||||||
"dockWidgetName": "DockWidget-2",
|
|
||||||
"location": 2,
|
|
||||||
"mainWindowName": "MainWindow-1"
|
|
||||||
},
|
|
||||||
"type": 4
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "Closing DockWidget-2",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-2"
|
|
||||||
},
|
|
||||||
"type": 1
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidget DockWidget-3 to left",
|
|
||||||
"params": {
|
|
||||||
"addingOption": 0,
|
|
||||||
"dockWidgetName": "DockWidget-3",
|
|
||||||
"location": 1,
|
|
||||||
"mainWindowName": "MainWindow-1"
|
|
||||||
},
|
|
||||||
"type": 4
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidget DockWidget-3 to right",
|
|
||||||
"params": {
|
|
||||||
"addingOption": 0,
|
|
||||||
"dockWidgetName": "DockWidget-3",
|
|
||||||
"location": 3,
|
|
||||||
"mainWindowName": "MainWindow-1"
|
|
||||||
},
|
|
||||||
"type": 4
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "Closing DockWidget-3",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-3"
|
|
||||||
},
|
|
||||||
"type": 1
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidget DockWidget-3-[hidden] to left",
|
|
||||||
"params": {
|
|
||||||
"addingOption": 0,
|
|
||||||
"dockWidgetName": "DockWidget-3",
|
|
||||||
"location": 1,
|
|
||||||
"mainWindowName": "MainWindow-1"
|
|
||||||
},
|
|
||||||
"type": 4
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidget DockWidget-1-[hidden] to top, relative to DockWidget-3",
|
|
||||||
"params": {
|
|
||||||
"addingOption": 0,
|
|
||||||
"dockWidgetName": "DockWidget-1",
|
|
||||||
"location": 2,
|
|
||||||
"mainWindowName": "MainWindow-1",
|
|
||||||
"relativeToName": "DockWidget-3"
|
|
||||||
},
|
|
||||||
"type": 4
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "Hiding DockWidget-3",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-3"
|
|
||||||
},
|
|
||||||
"type": 2
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "Closing DockWidget-1",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-1"
|
|
||||||
},
|
|
||||||
"type": 1
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "Showing DockWidget-3-[hidden]",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-3"
|
|
||||||
},
|
|
||||||
"type": 3
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
@@ -1,905 +0,0 @@
|
|||||||
{
|
|
||||||
"initialLayout": {
|
|
||||||
"dockWidgets": [
|
|
||||||
{
|
|
||||||
"geometry": {
|
|
||||||
"size": {
|
|
||||||
"height": 496,
|
|
||||||
"width": 260
|
|
||||||
},
|
|
||||||
"x": 213,
|
|
||||||
"y": 149
|
|
||||||
},
|
|
||||||
"isFloating": false,
|
|
||||||
"isVisible": false,
|
|
||||||
"minSize": {
|
|
||||||
"height": 324,
|
|
||||||
"width": 183
|
|
||||||
},
|
|
||||||
"name": "DockWidget-1"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"geometry": {
|
|
||||||
"size": {
|
|
||||||
"height": 784,
|
|
||||||
"width": 342
|
|
||||||
},
|
|
||||||
"x": 42,
|
|
||||||
"y": 428
|
|
||||||
},
|
|
||||||
"isFloating": false,
|
|
||||||
"isVisible": false,
|
|
||||||
"minSize": {
|
|
||||||
"height": 247,
|
|
||||||
"width": 247
|
|
||||||
},
|
|
||||||
"name": "DockWidget-2"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"geometry": {
|
|
||||||
"size": {
|
|
||||||
"height": 789,
|
|
||||||
"width": 566
|
|
||||||
},
|
|
||||||
"x": 294,
|
|
||||||
"y": 396
|
|
||||||
},
|
|
||||||
"isFloating": true,
|
|
||||||
"isVisible": false,
|
|
||||||
"minSize": {
|
|
||||||
"height": 502,
|
|
||||||
"width": 345
|
|
||||||
},
|
|
||||||
"name": "DockWidget-3"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"geometry": {
|
|
||||||
"size": {
|
|
||||||
"height": 948,
|
|
||||||
"width": 440
|
|
||||||
},
|
|
||||||
"x": 461,
|
|
||||||
"y": 56
|
|
||||||
},
|
|
||||||
"isFloating": false,
|
|
||||||
"isVisible": true,
|
|
||||||
"minSize": {
|
|
||||||
"height": 568,
|
|
||||||
"width": 246
|
|
||||||
},
|
|
||||||
"name": "DockWidget-4"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"geometry": {
|
|
||||||
"size": {
|
|
||||||
"height": 642,
|
|
||||||
"width": 529
|
|
||||||
},
|
|
||||||
"x": 172,
|
|
||||||
"y": 192
|
|
||||||
},
|
|
||||||
"isFloating": true,
|
|
||||||
"isVisible": false,
|
|
||||||
"minSize": {
|
|
||||||
"height": 213,
|
|
||||||
"width": 268
|
|
||||||
},
|
|
||||||
"name": "DockWidget-5"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"geometry": {
|
|
||||||
"size": {
|
|
||||||
"height": 1089,
|
|
||||||
"width": 305
|
|
||||||
},
|
|
||||||
"x": 212,
|
|
||||||
"y": 8
|
|
||||||
},
|
|
||||||
"isFloating": true,
|
|
||||||
"isVisible": true,
|
|
||||||
"minSize": {
|
|
||||||
"height": 567,
|
|
||||||
"width": 165
|
|
||||||
},
|
|
||||||
"name": "DockWidget-6"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"geometry": {
|
|
||||||
"size": {
|
|
||||||
"height": 632,
|
|
||||||
"width": 892
|
|
||||||
},
|
|
||||||
"x": 477,
|
|
||||||
"y": 51
|
|
||||||
},
|
|
||||||
"isFloating": false,
|
|
||||||
"isVisible": false,
|
|
||||||
"minSize": {
|
|
||||||
"height": 329,
|
|
||||||
"width": 407
|
|
||||||
},
|
|
||||||
"name": "DockWidget-7"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"geometry": {
|
|
||||||
"size": {
|
|
||||||
"height": 653,
|
|
||||||
"width": 665
|
|
||||||
},
|
|
||||||
"x": 228,
|
|
||||||
"y": 458
|
|
||||||
},
|
|
||||||
"isFloating": false,
|
|
||||||
"isVisible": true,
|
|
||||||
"minSize": {
|
|
||||||
"height": 440,
|
|
||||||
"width": 371
|
|
||||||
},
|
|
||||||
"name": "DockWidget-8"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"geometry": {
|
|
||||||
"size": {
|
|
||||||
"height": 612,
|
|
||||||
"width": 560
|
|
||||||
},
|
|
||||||
"x": 371,
|
|
||||||
"y": 63
|
|
||||||
},
|
|
||||||
"isFloating": false,
|
|
||||||
"isVisible": false,
|
|
||||||
"minSize": {
|
|
||||||
"height": 534,
|
|
||||||
"width": 300
|
|
||||||
},
|
|
||||||
"name": "DockWidget-9"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"mainWindows": [
|
|
||||||
{
|
|
||||||
"geometry": {
|
|
||||||
"size": {
|
|
||||||
"height": 1199,
|
|
||||||
"width": 305
|
|
||||||
},
|
|
||||||
"x": 180,
|
|
||||||
"y": 209
|
|
||||||
},
|
|
||||||
"mainWindowOption": 0,
|
|
||||||
"name": "MainWindow-1"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"operations": [
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidget DockWidget-5-[hidden] to top",
|
|
||||||
"params": {
|
|
||||||
"addingOption": 0,
|
|
||||||
"dockWidgetName": "DockWidget-5",
|
|
||||||
"location": 2,
|
|
||||||
"mainWindowName": "MainWindow-1"
|
|
||||||
},
|
|
||||||
"type": 4
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidget DockWidget-4 to right",
|
|
||||||
"params": {
|
|
||||||
"addingOption": 0,
|
|
||||||
"dockWidgetName": "DockWidget-4",
|
|
||||||
"location": 3,
|
|
||||||
"mainWindowName": "MainWindow-1"
|
|
||||||
},
|
|
||||||
"type": 4
|
|
||||||
},
|
|
||||||
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidgetAsTab DockWidget-5 onto DockWidget-8",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-8",
|
|
||||||
"dockWidgetToAddName": "DockWidget-5"
|
|
||||||
},
|
|
||||||
"type": 5
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidget DockWidget-6 to top, relative to DockWidget-4",
|
|
||||||
"params": {
|
|
||||||
"addingOption": 0,
|
|
||||||
"dockWidgetName": "DockWidget-6",
|
|
||||||
"location": 2,
|
|
||||||
"mainWindowName": "MainWindow-1",
|
|
||||||
"relativeToName": "DockWidget-4"
|
|
||||||
},
|
|
||||||
"type": 4
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidgetAsTab DockWidget-1-[hidden] onto DockWidget-7",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-7",
|
|
||||||
"dockWidgetToAddName": "DockWidget-1"
|
|
||||||
},
|
|
||||||
"type": 5
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "Hiding DockWidget-4",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-4"
|
|
||||||
},
|
|
||||||
"type": 2
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidget DockWidget-2-[hidden] to left, relative to DockWidget-6",
|
|
||||||
"params": {
|
|
||||||
"addingOption": 0,
|
|
||||||
"dockWidgetName": "DockWidget-2",
|
|
||||||
"location": 1,
|
|
||||||
"mainWindowName": "MainWindow-1",
|
|
||||||
"relativeToName": "DockWidget-6"
|
|
||||||
},
|
|
||||||
"type": 4
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "Closing DockWidget-6",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-6"
|
|
||||||
},
|
|
||||||
"type": 1
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "Closing DockWidget-2",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-2"
|
|
||||||
},
|
|
||||||
"type": 1
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "Showing DockWidget-4-[hidden]",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-4"
|
|
||||||
},
|
|
||||||
"type": 3
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidget DockWidget-7-[hidden] to right, relative to DockWidget-4",
|
|
||||||
"params": {
|
|
||||||
"addingOption": 0,
|
|
||||||
"dockWidgetName": "DockWidget-7",
|
|
||||||
"location": 3,
|
|
||||||
"mainWindowName": "MainWindow-1",
|
|
||||||
"relativeToName": "DockWidget-4"
|
|
||||||
},
|
|
||||||
"type": 4
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "Closing DockWidget-1",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-1"
|
|
||||||
},
|
|
||||||
"type": 1
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidget DockWidget-6-[hidden] to right",
|
|
||||||
"params": {
|
|
||||||
"addingOption": 0,
|
|
||||||
"dockWidgetName": "DockWidget-6",
|
|
||||||
"location": 3,
|
|
||||||
"mainWindowName": "MainWindow-1"
|
|
||||||
},
|
|
||||||
"type": 4
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidget DockWidget-2 to top",
|
|
||||||
"params": {
|
|
||||||
"addingOption": 0,
|
|
||||||
"dockWidgetName": "DockWidget-2",
|
|
||||||
"location": 2,
|
|
||||||
"mainWindowName": "MainWindow-1"
|
|
||||||
},
|
|
||||||
"type": 4
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "Hiding DockWidget-5",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-5"
|
|
||||||
},
|
|
||||||
"type": 2
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "Hiding DockWidget-7",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-7"
|
|
||||||
},
|
|
||||||
"type": 2
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "Closing DockWidget-8",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-8"
|
|
||||||
},
|
|
||||||
"type": 1
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "Closing DockWidget-4",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-4"
|
|
||||||
},
|
|
||||||
"type": 1
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidgetAsTab DockWidget-7-[hidden] onto DockWidget-2",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-2",
|
|
||||||
"dockWidgetToAddName": "DockWidget-7"
|
|
||||||
},
|
|
||||||
"type": 5
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidget DockWidget-3-[hidden] to left",
|
|
||||||
"params": {
|
|
||||||
"addingOption": 0,
|
|
||||||
"dockWidgetName": "DockWidget-3",
|
|
||||||
"location": 1,
|
|
||||||
"mainWindowName": "MainWindow-1"
|
|
||||||
},
|
|
||||||
"type": 4
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "Closing DockWidget-3",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-3"
|
|
||||||
},
|
|
||||||
"type": 1
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "Showing DockWidget-4-[hidden]",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-4"
|
|
||||||
},
|
|
||||||
"type": 3
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidget DockWidget-9-[hidden] to left, relative to DockWidget-6",
|
|
||||||
"params": {
|
|
||||||
"addingOption": 0,
|
|
||||||
"dockWidgetName": "DockWidget-9",
|
|
||||||
"location": 1,
|
|
||||||
"mainWindowName": "MainWindow-1",
|
|
||||||
"relativeToName": "DockWidget-6"
|
|
||||||
},
|
|
||||||
"type": 4
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "Hiding DockWidget-9",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-9"
|
|
||||||
},
|
|
||||||
"type": 2
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidgetAsTab DockWidget-5-[hidden] onto DockWidget-6",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-6",
|
|
||||||
"dockWidgetToAddName": "DockWidget-5"
|
|
||||||
},
|
|
||||||
"type": 5
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidget DockWidget-5 to right, relative to DockWidget-6-[hidden]",
|
|
||||||
"params": {
|
|
||||||
"addingOption": 0,
|
|
||||||
"dockWidgetName": "DockWidget-5",
|
|
||||||
"location": 3,
|
|
||||||
"mainWindowName": "MainWindow-1",
|
|
||||||
"relativeToName": "DockWidget-6"
|
|
||||||
},
|
|
||||||
"type": 4
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "Showing DockWidget-1-[hidden]",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-1"
|
|
||||||
},
|
|
||||||
"type": 3
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "Showing DockWidget-2-[hidden]",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-2"
|
|
||||||
},
|
|
||||||
"type": 3
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "Closing DockWidget-4",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-4"
|
|
||||||
},
|
|
||||||
"type": 1
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "Showing DockWidget-9-[hidden]",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-9"
|
|
||||||
},
|
|
||||||
"type": 3
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidget DockWidget-4-[hidden] to right, relative to DockWidget-2",
|
|
||||||
"params": {
|
|
||||||
"addingOption": 0,
|
|
||||||
"dockWidgetName": "DockWidget-4",
|
|
||||||
"location": 3,
|
|
||||||
"mainWindowName": "MainWindow-1",
|
|
||||||
"relativeToName": "DockWidget-2"
|
|
||||||
},
|
|
||||||
"type": 4
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "Showing DockWidget-3-[hidden]",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-3"
|
|
||||||
},
|
|
||||||
"type": 3
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidgetAsTab DockWidget-1 onto DockWidget-5",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-5",
|
|
||||||
"dockWidgetToAddName": "DockWidget-1"
|
|
||||||
},
|
|
||||||
"type": 5
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "Showing DockWidget-5-[hidden]",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-5"
|
|
||||||
},
|
|
||||||
"type": 3
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "Hiding DockWidget-2",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-2"
|
|
||||||
},
|
|
||||||
"type": 2
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "Hiding DockWidget-5",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-5"
|
|
||||||
},
|
|
||||||
"type": 2
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "Hiding DockWidget-7",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-7"
|
|
||||||
},
|
|
||||||
"type": 2
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidget DockWidget-9 to left",
|
|
||||||
"params": {
|
|
||||||
"addingOption": 0,
|
|
||||||
"dockWidgetName": "DockWidget-9",
|
|
||||||
"location": 1,
|
|
||||||
"mainWindowName": "MainWindow-1"
|
|
||||||
},
|
|
||||||
"type": 4
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidget DockWidget-6 to top, relative to DockWidget-4",
|
|
||||||
"params": {
|
|
||||||
"addingOption": 0,
|
|
||||||
"dockWidgetName": "DockWidget-6",
|
|
||||||
"location": 2,
|
|
||||||
"mainWindowName": "MainWindow-1",
|
|
||||||
"relativeToName": "DockWidget-4"
|
|
||||||
},
|
|
||||||
"type": 4
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "Closing DockWidget-3",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-3"
|
|
||||||
},
|
|
||||||
"type": 1
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidget DockWidget-3-[hidden] to left, relative to DockWidget-6",
|
|
||||||
"params": {
|
|
||||||
"addingOption": 0,
|
|
||||||
"dockWidgetName": "DockWidget-3",
|
|
||||||
"location": 1,
|
|
||||||
"mainWindowName": "MainWindow-1",
|
|
||||||
"relativeToName": "DockWidget-6"
|
|
||||||
},
|
|
||||||
"type": 4
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "Showing DockWidget-5-[hidden]",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-5"
|
|
||||||
},
|
|
||||||
"type": 3
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidget DockWidget-2-[hidden] to bottom",
|
|
||||||
"params": {
|
|
||||||
"addingOption": 0,
|
|
||||||
"dockWidgetName": "DockWidget-2",
|
|
||||||
"location": 4,
|
|
||||||
"mainWindowName": "MainWindow-1"
|
|
||||||
},
|
|
||||||
"type": 4
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidget DockWidget-6 to bottom",
|
|
||||||
"params": {
|
|
||||||
"addingOption": 0,
|
|
||||||
"dockWidgetName": "DockWidget-6",
|
|
||||||
"location": 4,
|
|
||||||
"mainWindowName": "MainWindow-1"
|
|
||||||
},
|
|
||||||
"type": 4
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidgetAsTab DockWidget-7-[hidden] onto DockWidget-2",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-2",
|
|
||||||
"dockWidgetToAddName": "DockWidget-7"
|
|
||||||
},
|
|
||||||
"type": 5
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidgetAsTab DockWidget-8-[hidden] onto DockWidget-3",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-3",
|
|
||||||
"dockWidgetToAddName": "DockWidget-8"
|
|
||||||
},
|
|
||||||
"type": 5
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "Hiding DockWidget-9",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-9"
|
|
||||||
},
|
|
||||||
"type": 2
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "Closing DockWidget-7",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-7"
|
|
||||||
},
|
|
||||||
"type": 1
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "Closing DockWidget-4",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-4"
|
|
||||||
},
|
|
||||||
"type": 1
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidget DockWidget-1-[hidden] to top",
|
|
||||||
"params": {
|
|
||||||
"addingOption": 0,
|
|
||||||
"dockWidgetName": "DockWidget-1",
|
|
||||||
"location": 2,
|
|
||||||
"mainWindowName": "MainWindow-1"
|
|
||||||
},
|
|
||||||
"type": 4
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "Hiding DockWidget-6",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-6"
|
|
||||||
},
|
|
||||||
"type": 2
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidgetAsTab DockWidget-6-[hidden] onto DockWidget-8",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-8",
|
|
||||||
"dockWidgetToAddName": "DockWidget-6"
|
|
||||||
},
|
|
||||||
"type": 5
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidget DockWidget-2 to bottom",
|
|
||||||
"params": {
|
|
||||||
"addingOption": 0,
|
|
||||||
"dockWidgetName": "DockWidget-2",
|
|
||||||
"location": 4,
|
|
||||||
"mainWindowName": "MainWindow-1"
|
|
||||||
},
|
|
||||||
"type": 4
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidget DockWidget-6 to bottom",
|
|
||||||
"params": {
|
|
||||||
"addingOption": 0,
|
|
||||||
"dockWidgetName": "DockWidget-6",
|
|
||||||
"location": 4,
|
|
||||||
"mainWindowName": "MainWindow-1"
|
|
||||||
},
|
|
||||||
"type": 4
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidget DockWidget-5 to left",
|
|
||||||
"params": {
|
|
||||||
"addingOption": 0,
|
|
||||||
"dockWidgetName": "DockWidget-5",
|
|
||||||
"location": 1,
|
|
||||||
"mainWindowName": "MainWindow-1"
|
|
||||||
},
|
|
||||||
"type": 4
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidget DockWidget-3-[hidden] to bottom, relative to DockWidget-6",
|
|
||||||
"params": {
|
|
||||||
"addingOption": 0,
|
|
||||||
"dockWidgetName": "DockWidget-3",
|
|
||||||
"location": 4,
|
|
||||||
"mainWindowName": "MainWindow-1",
|
|
||||||
"relativeToName": "DockWidget-6"
|
|
||||||
},
|
|
||||||
"type": 4
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidget DockWidget-3 to right",
|
|
||||||
"params": {
|
|
||||||
"addingOption": 0,
|
|
||||||
"dockWidgetName": "DockWidget-3",
|
|
||||||
"location": 3,
|
|
||||||
"mainWindowName": "MainWindow-1"
|
|
||||||
},
|
|
||||||
"type": 4
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "Showing DockWidget-7-[hidden]",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-7"
|
|
||||||
},
|
|
||||||
"type": 3
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "Closing DockWidget-1",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-1"
|
|
||||||
},
|
|
||||||
"type": 1
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "Hiding DockWidget-8",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-8"
|
|
||||||
},
|
|
||||||
"type": 2
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "Hiding DockWidget-2",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-2"
|
|
||||||
},
|
|
||||||
"type": 2
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidget DockWidget-9-[hidden] to left",
|
|
||||||
"params": {
|
|
||||||
"addingOption": 0,
|
|
||||||
"dockWidgetName": "DockWidget-9",
|
|
||||||
"location": 1,
|
|
||||||
"mainWindowName": "MainWindow-1"
|
|
||||||
},
|
|
||||||
"type": 4
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidget DockWidget-6 to right, relative to DockWidget-5",
|
|
||||||
"params": {
|
|
||||||
"addingOption": 0,
|
|
||||||
"dockWidgetName": "DockWidget-6",
|
|
||||||
"location": 3,
|
|
||||||
"mainWindowName": "MainWindow-1",
|
|
||||||
"relativeToName": "DockWidget-5"
|
|
||||||
},
|
|
||||||
"type": 4
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidgetAsTab DockWidget-1-[hidden] onto DockWidget-3",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-3",
|
|
||||||
"dockWidgetToAddName": "DockWidget-1"
|
|
||||||
},
|
|
||||||
"type": 5
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidget DockWidget-9 to left, relative to DockWidget-3-[hidden]",
|
|
||||||
"params": {
|
|
||||||
"addingOption": 0,
|
|
||||||
"dockWidgetName": "DockWidget-9",
|
|
||||||
"location": 1,
|
|
||||||
"mainWindowName": "MainWindow-1",
|
|
||||||
"relativeToName": "DockWidget-3"
|
|
||||||
},
|
|
||||||
"type": 4
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidget DockWidget-7 to bottom",
|
|
||||||
"params": {
|
|
||||||
"addingOption": 0,
|
|
||||||
"dockWidgetName": "DockWidget-7",
|
|
||||||
"location": 4,
|
|
||||||
"mainWindowName": "MainWindow-1"
|
|
||||||
},
|
|
||||||
"type": 4
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "Closing DockWidget-6",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-6"
|
|
||||||
},
|
|
||||||
"type": 1
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidget DockWidget-9 to top",
|
|
||||||
"params": {
|
|
||||||
"addingOption": 0,
|
|
||||||
"dockWidgetName": "DockWidget-9",
|
|
||||||
"location": 2,
|
|
||||||
"mainWindowName": "MainWindow-1"
|
|
||||||
},
|
|
||||||
"type": 4
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidget DockWidget-1 to bottom",
|
|
||||||
"params": {
|
|
||||||
"addingOption": 0,
|
|
||||||
"dockWidgetName": "DockWidget-1",
|
|
||||||
"location": 4,
|
|
||||||
"mainWindowName": "MainWindow-1"
|
|
||||||
},
|
|
||||||
"type": 4
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidget DockWidget-6-[hidden] to right",
|
|
||||||
"params": {
|
|
||||||
"addingOption": 0,
|
|
||||||
"dockWidgetName": "DockWidget-6",
|
|
||||||
"location": 3,
|
|
||||||
"mainWindowName": "MainWindow-1"
|
|
||||||
},
|
|
||||||
"type": 4
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "Hiding DockWidget-6",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-6"
|
|
||||||
},
|
|
||||||
"type": 2
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "Closing DockWidget-5",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-5"
|
|
||||||
},
|
|
||||||
"type": 1
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "Showing DockWidget-8-[hidden]",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-8"
|
|
||||||
},
|
|
||||||
"type": 3
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "Closing DockWidget-3",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-3"
|
|
||||||
},
|
|
||||||
"type": 1
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "Hiding DockWidget-1",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-1"
|
|
||||||
},
|
|
||||||
"type": 2
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidget DockWidget-8 to bottom",
|
|
||||||
"params": {
|
|
||||||
"addingOption": 0,
|
|
||||||
"dockWidgetName": "DockWidget-8",
|
|
||||||
"location": 4,
|
|
||||||
"mainWindowName": "MainWindow-1"
|
|
||||||
},
|
|
||||||
"type": 4
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "Closing DockWidget-9",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-9"
|
|
||||||
},
|
|
||||||
"type": 1
|
|
||||||
},
|
|
||||||
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidget DockWidget-8-[hidden] to top, relative to DockWidget-7",
|
|
||||||
"params": {
|
|
||||||
"addingOption": 0,
|
|
||||||
"dockWidgetName": "DockWidget-8",
|
|
||||||
"location": 2,
|
|
||||||
"mainWindowName": "MainWindow-1",
|
|
||||||
"relativeToName": "DockWidget-7"
|
|
||||||
},
|
|
||||||
"type": 4
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "Showing DockWidget-6-[hidden]",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-6"
|
|
||||||
},
|
|
||||||
"type": 3
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "Closing DockWidget-8",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-8"
|
|
||||||
},
|
|
||||||
"type": 1
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "Hiding DockWidget-7",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-7"
|
|
||||||
},
|
|
||||||
"type": 2
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "Showing DockWidget-9-[hidden]",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-9"
|
|
||||||
},
|
|
||||||
"type": 3
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidget DockWidget-9 to top",
|
|
||||||
"params": {
|
|
||||||
"addingOption": 0,
|
|
||||||
"dockWidgetName": "DockWidget-9",
|
|
||||||
"location": 2,
|
|
||||||
"mainWindowName": "MainWindow-1"
|
|
||||||
},
|
|
||||||
"type": 4
|
|
||||||
},
|
|
||||||
|
|
||||||
{
|
|
||||||
"comment": "Hiding DockWidget-9",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-9"
|
|
||||||
},
|
|
||||||
"type": 2
|
|
||||||
},
|
|
||||||
|
|
||||||
{
|
|
||||||
"comment": "Showing DockWidget-7-[hidden]",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-7"
|
|
||||||
},
|
|
||||||
"type": 3
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "Showing DockWidget-4-[hidden]",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-4"
|
|
||||||
},
|
|
||||||
"type": 3
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "Showing DockWidget-9-[hidden]",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-9"
|
|
||||||
},
|
|
||||||
"type": 3
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
@@ -1,378 +0,0 @@
|
|||||||
{
|
|
||||||
"initialLayout": {
|
|
||||||
"dockWidgets": [
|
|
||||||
{
|
|
||||||
"geometry": {
|
|
||||||
"size": {
|
|
||||||
"height": 774,
|
|
||||||
"width": 1127
|
|
||||||
},
|
|
||||||
"x": 176,
|
|
||||||
"y": 165
|
|
||||||
},
|
|
||||||
"isFloating": true,
|
|
||||||
"isVisible": false,
|
|
||||||
"minSize": {
|
|
||||||
"height": 476,
|
|
||||||
"width": 564
|
|
||||||
},
|
|
||||||
"name": "DockWidget-1"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"geometry": {
|
|
||||||
"size": {
|
|
||||||
"height": 518,
|
|
||||||
"width": 755
|
|
||||||
},
|
|
||||||
"x": 319,
|
|
||||||
"y": 447
|
|
||||||
},
|
|
||||||
"isFloating": false,
|
|
||||||
"isVisible": true,
|
|
||||||
"minSize": {
|
|
||||||
"height": 178,
|
|
||||||
"width": 459
|
|
||||||
},
|
|
||||||
"name": "DockWidget-2"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"geometry": {
|
|
||||||
"size": {
|
|
||||||
"height": 828,
|
|
||||||
"width": 838
|
|
||||||
},
|
|
||||||
"x": 260,
|
|
||||||
"y": 237
|
|
||||||
},
|
|
||||||
"isFloating": false,
|
|
||||||
"isVisible": true,
|
|
||||||
"minSize": {
|
|
||||||
"height": 266,
|
|
||||||
"width": 485
|
|
||||||
},
|
|
||||||
"name": "DockWidget-3"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"geometry": {
|
|
||||||
"size": {
|
|
||||||
"height": 808,
|
|
||||||
"width": 509
|
|
||||||
},
|
|
||||||
"x": 243,
|
|
||||||
"y": 415
|
|
||||||
},
|
|
||||||
"isFloating": false,
|
|
||||||
"isVisible": false,
|
|
||||||
"minSize": {
|
|
||||||
"height": 578,
|
|
||||||
"width": 351
|
|
||||||
},
|
|
||||||
"name": "DockWidget-4"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"geometry": {
|
|
||||||
"size": {
|
|
||||||
"height": 773,
|
|
||||||
"width": 754
|
|
||||||
},
|
|
||||||
"x": 494,
|
|
||||||
"y": 428
|
|
||||||
},
|
|
||||||
"isFloating": true,
|
|
||||||
"isVisible": true,
|
|
||||||
"minSize": {
|
|
||||||
"height": 369,
|
|
||||||
"width": 327
|
|
||||||
},
|
|
||||||
"name": "DockWidget-5"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"geometry": {
|
|
||||||
"size": {
|
|
||||||
"height": 672,
|
|
||||||
"width": 471
|
|
||||||
},
|
|
||||||
"x": 433,
|
|
||||||
"y": 245
|
|
||||||
},
|
|
||||||
"isFloating": true,
|
|
||||||
"isVisible": true,
|
|
||||||
"minSize": {
|
|
||||||
"height": 463,
|
|
||||||
"width": 191
|
|
||||||
},
|
|
||||||
"name": "DockWidget-6"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"geometry": {
|
|
||||||
"size": {
|
|
||||||
"height": 701,
|
|
||||||
"width": 525
|
|
||||||
},
|
|
||||||
"x": 30,
|
|
||||||
"y": 367
|
|
||||||
},
|
|
||||||
"isFloating": false,
|
|
||||||
"isVisible": true,
|
|
||||||
"minSize": {
|
|
||||||
"height": 596,
|
|
||||||
"width": 156
|
|
||||||
},
|
|
||||||
"name": "DockWidget-7"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"geometry": {
|
|
||||||
"size": {
|
|
||||||
"height": 723,
|
|
||||||
"width": 599
|
|
||||||
},
|
|
||||||
"x": 254,
|
|
||||||
"y": 203
|
|
||||||
},
|
|
||||||
"isFloating": false,
|
|
||||||
"isVisible": true,
|
|
||||||
"minSize": {
|
|
||||||
"height": 251,
|
|
||||||
"width": 447
|
|
||||||
},
|
|
||||||
"name": "DockWidget-8"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"mainWindows": [
|
|
||||||
{
|
|
||||||
"geometry": {
|
|
||||||
"size": {
|
|
||||||
"height": 808,
|
|
||||||
"width": 126
|
|
||||||
},
|
|
||||||
"x": 173,
|
|
||||||
"y": 460
|
|
||||||
},
|
|
||||||
"mainWindowOption": 0,
|
|
||||||
"name": "MainWindow-1"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"operations": [
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidget DockWidget-4-[hidden] to left",
|
|
||||||
"params": {
|
|
||||||
"addingOption": 0,
|
|
||||||
"dockWidgetName": "DockWidget-4",
|
|
||||||
"location": 1,
|
|
||||||
"mainWindowName": "MainWindow-1"
|
|
||||||
},
|
|
||||||
"type": 4
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "",
|
|
||||||
"params": {
|
|
||||||
},
|
|
||||||
"type": 3
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidget DockWidget-2 to right, relative to DockWidget-4",
|
|
||||||
"params": {
|
|
||||||
"addingOption": 0,
|
|
||||||
"dockWidgetName": "DockWidget-2",
|
|
||||||
"location": 3,
|
|
||||||
"mainWindowName": "MainWindow-1",
|
|
||||||
"relativeToName": "DockWidget-4"
|
|
||||||
},
|
|
||||||
"type": 4
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidgetAsTab DockWidget-4 onto DockWidget-3",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-3",
|
|
||||||
"dockWidgetToAddName": "DockWidget-4"
|
|
||||||
},
|
|
||||||
"type": 5
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "",
|
|
||||||
"params": {
|
|
||||||
},
|
|
||||||
"type": 3
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "",
|
|
||||||
"params": {
|
|
||||||
},
|
|
||||||
"type": 5
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "",
|
|
||||||
"params": {
|
|
||||||
},
|
|
||||||
"type": 3
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidget DockWidget-2 to bottom",
|
|
||||||
"params": {
|
|
||||||
"addingOption": 0,
|
|
||||||
"dockWidgetName": "DockWidget-2",
|
|
||||||
"location": 4,
|
|
||||||
"mainWindowName": "MainWindow-1"
|
|
||||||
},
|
|
||||||
"type": 4
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "SaveLayout",
|
|
||||||
"params": {
|
|
||||||
},
|
|
||||||
"type": 6
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "SaveLayout",
|
|
||||||
"params": {
|
|
||||||
},
|
|
||||||
"type": 6
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidgetAsTab DockWidget-4 onto DockWidget-6",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-6",
|
|
||||||
"dockWidgetToAddName": "DockWidget-4"
|
|
||||||
},
|
|
||||||
"type": 5
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "",
|
|
||||||
"params": {
|
|
||||||
},
|
|
||||||
"type": 2
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidget DockWidget-2 to bottom",
|
|
||||||
"params": {
|
|
||||||
"addingOption": 0,
|
|
||||||
"dockWidgetName": "DockWidget-2",
|
|
||||||
"location": 4,
|
|
||||||
"mainWindowName": "MainWindow-1"
|
|
||||||
},
|
|
||||||
"type": 4
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "SaveLayout",
|
|
||||||
"params": {
|
|
||||||
},
|
|
||||||
"type": 6
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "Closing DockWidget-4",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-4"
|
|
||||||
},
|
|
||||||
"type": 1
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "Hiding DockWidget-2",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-2"
|
|
||||||
},
|
|
||||||
"type": 2
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "SaveLayout",
|
|
||||||
"params": {
|
|
||||||
},
|
|
||||||
"type": 6
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "RestoreLayout",
|
|
||||||
"params": {
|
|
||||||
},
|
|
||||||
"type": 7
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidget DockWidget-2-[hidden] to right",
|
|
||||||
"params": {
|
|
||||||
"addingOption": 0,
|
|
||||||
"dockWidgetName": "DockWidget-2",
|
|
||||||
"location": 3,
|
|
||||||
"mainWindowName": "MainWindow-1"
|
|
||||||
},
|
|
||||||
"type": 4
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidget DockWidget-4-[hidden] to left, relative to DockWidget-2",
|
|
||||||
"params": {
|
|
||||||
"addingOption": 0,
|
|
||||||
"dockWidgetName": "DockWidget-4",
|
|
||||||
"location": 1,
|
|
||||||
"mainWindowName": "MainWindow-1",
|
|
||||||
"relativeToName": "DockWidget-2"
|
|
||||||
},
|
|
||||||
"type": 4
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidgetAsTab DockWidget-5 onto DockWidget-3",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-3",
|
|
||||||
"dockWidgetToAddName": "DockWidget-5"
|
|
||||||
},
|
|
||||||
"type": 5
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidget DockWidget-5 to left",
|
|
||||||
"params": {
|
|
||||||
"addingOption": 0,
|
|
||||||
"dockWidgetName": "DockWidget-5",
|
|
||||||
"location": 1,
|
|
||||||
"mainWindowName": "MainWindow-1"
|
|
||||||
},
|
|
||||||
"type": 4
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidget DockWidget-5 to left",
|
|
||||||
"params": {
|
|
||||||
"addingOption": 0,
|
|
||||||
"dockWidgetName": "DockWidget-5",
|
|
||||||
"location": 1,
|
|
||||||
"mainWindowName": "MainWindow-1"
|
|
||||||
},
|
|
||||||
"type": 4
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "",
|
|
||||||
"params": {
|
|
||||||
},
|
|
||||||
"type": 3
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidget DockWidget-7 to right, relative to DockWidget-5",
|
|
||||||
"params": {
|
|
||||||
"addingOption": 0,
|
|
||||||
"dockWidgetName": "DockWidget-7",
|
|
||||||
"location": 3,
|
|
||||||
"mainWindowName": "MainWindow-1",
|
|
||||||
"relativeToName": "DockWidget-5"
|
|
||||||
},
|
|
||||||
"type": 4
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidgetAsTab DockWidget-1-[hidden] onto DockWidget-4",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-4",
|
|
||||||
"dockWidgetToAddName": "DockWidget-1"
|
|
||||||
},
|
|
||||||
"type": 5
|
|
||||||
},
|
|
||||||
|
|
||||||
{
|
|
||||||
"comment": "",
|
|
||||||
"params": {
|
|
||||||
},
|
|
||||||
"type": 3
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidgetAsTab DockWidget-1 onto DockWidget-8",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-8",
|
|
||||||
"dockWidgetToAddName": "DockWidget-1"
|
|
||||||
},
|
|
||||||
"type": 5
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
@@ -1,212 +0,0 @@
|
|||||||
{
|
|
||||||
"initialLayout": {
|
|
||||||
"dockWidgets": [
|
|
||||||
{
|
|
||||||
"geometry": {
|
|
||||||
"size": {
|
|
||||||
"height": 410,
|
|
||||||
"width": 531
|
|
||||||
},
|
|
||||||
"x": 359,
|
|
||||||
"y": 134
|
|
||||||
},
|
|
||||||
"isFloating": false,
|
|
||||||
"isVisible": true,
|
|
||||||
"minSize": {
|
|
||||||
"height": 258,
|
|
||||||
"width": 175
|
|
||||||
},
|
|
||||||
"name": "DockWidget-1"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"geometry": {
|
|
||||||
"size": {
|
|
||||||
"height": 588,
|
|
||||||
"width": 651
|
|
||||||
},
|
|
||||||
"x": 369,
|
|
||||||
"y": 7
|
|
||||||
},
|
|
||||||
"isFloating": true,
|
|
||||||
"isVisible": true,
|
|
||||||
"minSize": {
|
|
||||||
"height": 438,
|
|
||||||
"width": 373
|
|
||||||
},
|
|
||||||
"name": "DockWidget-2"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"geometry": {
|
|
||||||
"size": {
|
|
||||||
"height": 969,
|
|
||||||
"width": 279
|
|
||||||
},
|
|
||||||
"x": 302,
|
|
||||||
"y": 60
|
|
||||||
},
|
|
||||||
"isFloating": false,
|
|
||||||
"isVisible": true,
|
|
||||||
"minSize": {
|
|
||||||
"height": 392,
|
|
||||||
"width": 172
|
|
||||||
},
|
|
||||||
"name": "DockWidget-3"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"geometry": {
|
|
||||||
"size": {
|
|
||||||
"height": 645,
|
|
||||||
"width": 562
|
|
||||||
},
|
|
||||||
"x": 115,
|
|
||||||
"y": 448
|
|
||||||
},
|
|
||||||
"isFloating": false,
|
|
||||||
"isVisible": true,
|
|
||||||
"minSize": {
|
|
||||||
"height": 584,
|
|
||||||
"width": 346
|
|
||||||
},
|
|
||||||
"name": "DockWidget-4"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"geometry": {
|
|
||||||
"size": {
|
|
||||||
"height": 586,
|
|
||||||
"width": 270
|
|
||||||
},
|
|
||||||
"x": 217,
|
|
||||||
"y": 397
|
|
||||||
},
|
|
||||||
"isFloating": false,
|
|
||||||
"isVisible": true,
|
|
||||||
"minSize": {
|
|
||||||
"height": 458,
|
|
||||||
"width": 152
|
|
||||||
},
|
|
||||||
"name": "DockWidget-5"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"geometry": {
|
|
||||||
"size": {
|
|
||||||
"height": 762,
|
|
||||||
"width": 460
|
|
||||||
},
|
|
||||||
"x": 40,
|
|
||||||
"y": 90
|
|
||||||
},
|
|
||||||
"isFloating": true,
|
|
||||||
"isVisible": true,
|
|
||||||
"minSize": {
|
|
||||||
"height": 476,
|
|
||||||
"width": 268
|
|
||||||
},
|
|
||||||
"name": "DockWidget-6"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"geometry": {
|
|
||||||
"size": {
|
|
||||||
"height": 873,
|
|
||||||
"width": 644
|
|
||||||
},
|
|
||||||
"x": 3,
|
|
||||||
"y": 26
|
|
||||||
},
|
|
||||||
"isFloating": true,
|
|
||||||
"isVisible": true,
|
|
||||||
"minSize": {
|
|
||||||
"height": 533,
|
|
||||||
"width": 246
|
|
||||||
},
|
|
||||||
"name": "DockWidget-7"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"mainWindows": [
|
|
||||||
{
|
|
||||||
"geometry": {
|
|
||||||
"size": {
|
|
||||||
"height": 1163,
|
|
||||||
"width": 36
|
|
||||||
},
|
|
||||||
"x": 95,
|
|
||||||
"y": 56
|
|
||||||
},
|
|
||||||
"mainWindowOption": 0,
|
|
||||||
"name": "MainWindow-1"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"operations": [
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidget DockWidget-2 to right",
|
|
||||||
"params": {
|
|
||||||
"addingOption": 0,
|
|
||||||
"dockWidgetName": "DockWidget-2",
|
|
||||||
"location": 3,
|
|
||||||
"mainWindowName": "MainWindow-1"
|
|
||||||
},
|
|
||||||
"type": 4
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidgetAsTab DockWidget-7 onto DockWidget-2",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-2",
|
|
||||||
"dockWidgetToAddName": "DockWidget-7"
|
|
||||||
},
|
|
||||||
"type": 5
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidgetAsTab DockWidget-2-[hidden] onto DockWidget-4",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-4",
|
|
||||||
"dockWidgetToAddName": "DockWidget-2"
|
|
||||||
},
|
|
||||||
"type": 5
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidget DockWidget-4-[hidden] to bottom, relative to DockWidget-7",
|
|
||||||
"params": {
|
|
||||||
"addingOption": 0,
|
|
||||||
"dockWidgetName": "DockWidget-4",
|
|
||||||
"location": 4,
|
|
||||||
"mainWindowName": "MainWindow-1",
|
|
||||||
"relativeToName": "DockWidget-7"
|
|
||||||
},
|
|
||||||
"type": 4
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "Hiding DockWidget-7",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-7"
|
|
||||||
},
|
|
||||||
"type": 2
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidget DockWidget-3 to bottom",
|
|
||||||
"params": {
|
|
||||||
"addingOption": 0,
|
|
||||||
"dockWidgetName": "DockWidget-3",
|
|
||||||
"location": 4,
|
|
||||||
"mainWindowName": "MainWindow-1"
|
|
||||||
},
|
|
||||||
"type": 4
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidget DockWidget-5 to top",
|
|
||||||
"params": {
|
|
||||||
"addingOption": 0,
|
|
||||||
"dockWidgetName": "DockWidget-5",
|
|
||||||
"location": 2,
|
|
||||||
"mainWindowName": "MainWindow-1"
|
|
||||||
},
|
|
||||||
"type": 4
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "Showing DockWidget-7-[hidden]",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-7"
|
|
||||||
},
|
|
||||||
"type": 3
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
@@ -1,833 +0,0 @@
|
|||||||
{
|
|
||||||
"initialLayout": {
|
|
||||||
"dockWidgets": [
|
|
||||||
{
|
|
||||||
"geometry": {
|
|
||||||
"size": {
|
|
||||||
"height": 793,
|
|
||||||
"width": 728
|
|
||||||
},
|
|
||||||
"x": 143,
|
|
||||||
"y": 290
|
|
||||||
},
|
|
||||||
"isFloating": false,
|
|
||||||
"isVisible": true,
|
|
||||||
"minSize": {
|
|
||||||
"height": 445,
|
|
||||||
"width": 576
|
|
||||||
},
|
|
||||||
"name": "DockWidget-70"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"geometry": {
|
|
||||||
"size": {
|
|
||||||
"height": 749,
|
|
||||||
"width": 1001
|
|
||||||
},
|
|
||||||
"x": 358,
|
|
||||||
"y": 224
|
|
||||||
},
|
|
||||||
"isFloating": false,
|
|
||||||
"isVisible": true,
|
|
||||||
"minSize": {
|
|
||||||
"height": 406,
|
|
||||||
"width": 579
|
|
||||||
},
|
|
||||||
"name": "DockWidget-71"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"geometry": {
|
|
||||||
"size": {
|
|
||||||
"height": 243,
|
|
||||||
"width": 480
|
|
||||||
},
|
|
||||||
"x": 498,
|
|
||||||
"y": 284
|
|
||||||
},
|
|
||||||
"isFloating": false,
|
|
||||||
"isVisible": true,
|
|
||||||
"minSize": {
|
|
||||||
"height": 184,
|
|
||||||
"width": 191
|
|
||||||
},
|
|
||||||
"name": "DockWidget-72"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"mainWindows": [
|
|
||||||
{
|
|
||||||
"geometry": {
|
|
||||||
"size": {
|
|
||||||
"height": 1409,
|
|
||||||
"width": 109
|
|
||||||
},
|
|
||||||
"x": 243,
|
|
||||||
"y": 241
|
|
||||||
},
|
|
||||||
"mainWindowOption": 0,
|
|
||||||
"name": "MainWindow-14"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"operations": [
|
|
||||||
{
|
|
||||||
"comment": "Closing DockWidget-72",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-72"
|
|
||||||
},
|
|
||||||
"type": 1
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "RestoreLayout",
|
|
||||||
"params": {
|
|
||||||
},
|
|
||||||
"type": 7
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "Closing DockWidget-70",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-70"
|
|
||||||
},
|
|
||||||
"type": 1
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "Closing DockWidget-71",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-71"
|
|
||||||
},
|
|
||||||
"type": 1
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "SaveLayout",
|
|
||||||
"params": {
|
|
||||||
},
|
|
||||||
"type": 6
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "SaveLayout",
|
|
||||||
"params": {
|
|
||||||
},
|
|
||||||
"type": 6
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "Showing DockWidget-70-[hidden]",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-70"
|
|
||||||
},
|
|
||||||
"type": 3
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "SaveLayout",
|
|
||||||
"params": {
|
|
||||||
},
|
|
||||||
"type": 6
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "SaveLayout",
|
|
||||||
"params": {
|
|
||||||
},
|
|
||||||
"type": 6
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "Hiding DockWidget-70",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-70"
|
|
||||||
},
|
|
||||||
"type": 2
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "Showing DockWidget-71-[hidden]",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-71"
|
|
||||||
},
|
|
||||||
"type": 3
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidgetAsTab DockWidget-72-[hidden] onto DockWidget-71",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-71",
|
|
||||||
"dockWidgetToAddName": "DockWidget-72"
|
|
||||||
},
|
|
||||||
"type": 5
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidget DockWidget-70-[hidden] to left",
|
|
||||||
"params": {
|
|
||||||
"addingOption": 0,
|
|
||||||
"dockWidgetName": "DockWidget-70",
|
|
||||||
"location": 1,
|
|
||||||
"mainWindowName": "MainWindow-14"
|
|
||||||
},
|
|
||||||
"type": 4
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "SaveLayout",
|
|
||||||
"params": {
|
|
||||||
},
|
|
||||||
"type": 6
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "Hiding DockWidget-72",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-72"
|
|
||||||
},
|
|
||||||
"type": 2
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "SaveLayout",
|
|
||||||
"params": {
|
|
||||||
},
|
|
||||||
"type": 6
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidgetAsTab DockWidget-72-[hidden] onto DockWidget-71",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-71",
|
|
||||||
"dockWidgetToAddName": "DockWidget-72"
|
|
||||||
},
|
|
||||||
"type": 5
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "Showing DockWidget-71-[hidden]",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-71"
|
|
||||||
},
|
|
||||||
"type": 3
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "Hiding DockWidget-72",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-72"
|
|
||||||
},
|
|
||||||
"type": 2
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "Showing DockWidget-72-[hidden]",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-72"
|
|
||||||
},
|
|
||||||
"type": 3
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "Hiding DockWidget-71",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-71"
|
|
||||||
},
|
|
||||||
"type": 2
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidgetAsTab DockWidget-71-[hidden] onto DockWidget-70",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-70",
|
|
||||||
"dockWidgetToAddName": "DockWidget-71"
|
|
||||||
},
|
|
||||||
"type": 5
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "RestoreLayout",
|
|
||||||
"params": {
|
|
||||||
},
|
|
||||||
"type": 7
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "Closing DockWidget-70",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-70"
|
|
||||||
},
|
|
||||||
"type": 1
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "Hiding DockWidget-71",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-71"
|
|
||||||
},
|
|
||||||
"type": 2
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "Showing DockWidget-72-[hidden]",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-72"
|
|
||||||
},
|
|
||||||
"type": 3
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "RestoreLayout",
|
|
||||||
"params": {
|
|
||||||
},
|
|
||||||
"type": 7
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "Hiding DockWidget-71",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-71"
|
|
||||||
},
|
|
||||||
"type": 2
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidgetAsTab DockWidget-71-[hidden] onto DockWidget-70",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-70",
|
|
||||||
"dockWidgetToAddName": "DockWidget-71"
|
|
||||||
},
|
|
||||||
"type": 5
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidget DockWidget-71 to left",
|
|
||||||
"params": {
|
|
||||||
"addingOption": 0,
|
|
||||||
"dockWidgetName": "DockWidget-71",
|
|
||||||
"location": 1,
|
|
||||||
"mainWindowName": "MainWindow-14"
|
|
||||||
},
|
|
||||||
"type": 4
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "RestoreLayout",
|
|
||||||
"params": {
|
|
||||||
},
|
|
||||||
"type": 7
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "RestoreLayout",
|
|
||||||
"params": {
|
|
||||||
},
|
|
||||||
"type": 7
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "RestoreLayout",
|
|
||||||
"params": {
|
|
||||||
},
|
|
||||||
"type": 7
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "Closing DockWidget-70",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-70"
|
|
||||||
},
|
|
||||||
"type": 1
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidgetAsTab DockWidget-72-[hidden] onto DockWidget-71",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-71",
|
|
||||||
"dockWidgetToAddName": "DockWidget-72"
|
|
||||||
},
|
|
||||||
"type": 5
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidgetAsTab DockWidget-70-[hidden] onto DockWidget-71-[hidden]",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-71",
|
|
||||||
"dockWidgetToAddName": "DockWidget-70"
|
|
||||||
},
|
|
||||||
"type": 5
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "SaveLayout",
|
|
||||||
"params": {
|
|
||||||
},
|
|
||||||
"type": 6
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidget DockWidget-72-[hidden] to left",
|
|
||||||
"params": {
|
|
||||||
"addingOption": 0,
|
|
||||||
"dockWidgetName": "DockWidget-72",
|
|
||||||
"location": 1,
|
|
||||||
"mainWindowName": "MainWindow-14"
|
|
||||||
},
|
|
||||||
"type": 4
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "SaveLayout",
|
|
||||||
"params": {
|
|
||||||
},
|
|
||||||
"type": 6
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidget DockWidget-72 to top",
|
|
||||||
"params": {
|
|
||||||
"addingOption": 0,
|
|
||||||
"dockWidgetName": "DockWidget-72",
|
|
||||||
"location": 2,
|
|
||||||
"mainWindowName": "MainWindow-14"
|
|
||||||
},
|
|
||||||
"type": 4
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "Closing DockWidget-70",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-70"
|
|
||||||
},
|
|
||||||
"type": 1
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "Hiding DockWidget-71",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-71"
|
|
||||||
},
|
|
||||||
"type": 2
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidgetAsTab DockWidget-70-[hidden] onto DockWidget-72",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-72",
|
|
||||||
"dockWidgetToAddName": "DockWidget-70"
|
|
||||||
},
|
|
||||||
"type": 5
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "Showing DockWidget-72-[hidden]",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-72"
|
|
||||||
},
|
|
||||||
"type": 3
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "Hiding DockWidget-72",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-72"
|
|
||||||
},
|
|
||||||
"type": 2
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "SaveLayout",
|
|
||||||
"params": {
|
|
||||||
},
|
|
||||||
"type": 6
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "RestoreLayout",
|
|
||||||
"params": {
|
|
||||||
},
|
|
||||||
"type": 7
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "SaveLayout",
|
|
||||||
"params": {
|
|
||||||
},
|
|
||||||
"type": 6
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "Showing DockWidget-71-[hidden]",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-71"
|
|
||||||
},
|
|
||||||
"type": 3
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "RestoreLayout",
|
|
||||||
"params": {
|
|
||||||
},
|
|
||||||
"type": 7
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "RestoreLayout",
|
|
||||||
"params": {
|
|
||||||
},
|
|
||||||
"type": 7
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "RestoreLayout",
|
|
||||||
"params": {
|
|
||||||
},
|
|
||||||
"type": 7
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidget DockWidget-70 to left",
|
|
||||||
"params": {
|
|
||||||
"addingOption": 0,
|
|
||||||
"dockWidgetName": "DockWidget-70",
|
|
||||||
"location": 1,
|
|
||||||
"mainWindowName": "MainWindow-14"
|
|
||||||
},
|
|
||||||
"type": 4
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "SaveLayout",
|
|
||||||
"params": {
|
|
||||||
},
|
|
||||||
"type": 6
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "RestoreLayout",
|
|
||||||
"params": {
|
|
||||||
},
|
|
||||||
"type": 7
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "Showing DockWidget-72-[hidden]",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-72"
|
|
||||||
},
|
|
||||||
"type": 3
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "Closing DockWidget-72",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-72"
|
|
||||||
},
|
|
||||||
"type": 1
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "SaveLayout",
|
|
||||||
"params": {
|
|
||||||
},
|
|
||||||
"type": 6
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidget DockWidget-70 to right",
|
|
||||||
"params": {
|
|
||||||
"addingOption": 0,
|
|
||||||
"dockWidgetName": "DockWidget-70",
|
|
||||||
"location": 3,
|
|
||||||
"mainWindowName": "MainWindow-14"
|
|
||||||
},
|
|
||||||
"type": 4
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "RestoreLayout",
|
|
||||||
"params": {
|
|
||||||
},
|
|
||||||
"type": 7
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "RestoreLayout",
|
|
||||||
"params": {
|
|
||||||
},
|
|
||||||
"type": 7
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidget DockWidget-70 to top",
|
|
||||||
"params": {
|
|
||||||
"addingOption": 0,
|
|
||||||
"dockWidgetName": "DockWidget-70",
|
|
||||||
"location": 2,
|
|
||||||
"mainWindowName": "MainWindow-14"
|
|
||||||
},
|
|
||||||
"type": 4
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidget DockWidget-71-[hidden] to bottom, relative to DockWidget-70",
|
|
||||||
"params": {
|
|
||||||
"addingOption": 0,
|
|
||||||
"dockWidgetName": "DockWidget-71",
|
|
||||||
"location": 4,
|
|
||||||
"mainWindowName": "MainWindow-14",
|
|
||||||
"relativeToName": "DockWidget-70"
|
|
||||||
},
|
|
||||||
"type": 4
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "SaveLayout",
|
|
||||||
"params": {
|
|
||||||
},
|
|
||||||
"type": 6
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidget DockWidget-72-[hidden] to right",
|
|
||||||
"params": {
|
|
||||||
"addingOption": 0,
|
|
||||||
"dockWidgetName": "DockWidget-72",
|
|
||||||
"location": 3,
|
|
||||||
"mainWindowName": "MainWindow-14"
|
|
||||||
},
|
|
||||||
"type": 4
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "Hiding DockWidget-72",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-72"
|
|
||||||
},
|
|
||||||
"type": 2
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidget DockWidget-72-[hidden] to right, relative to DockWidget-70",
|
|
||||||
"params": {
|
|
||||||
"addingOption": 0,
|
|
||||||
"dockWidgetName": "DockWidget-72",
|
|
||||||
"location": 3,
|
|
||||||
"mainWindowName": "MainWindow-14",
|
|
||||||
"relativeToName": "DockWidget-70"
|
|
||||||
},
|
|
||||||
"type": 4
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "Closing DockWidget-71",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-71"
|
|
||||||
},
|
|
||||||
"type": 1
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "Showing DockWidget-71-[hidden]",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-71"
|
|
||||||
},
|
|
||||||
"type": 3
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "Hiding DockWidget-71",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-71"
|
|
||||||
},
|
|
||||||
"type": 2
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidget DockWidget-70 to left",
|
|
||||||
"params": {
|
|
||||||
"addingOption": 0,
|
|
||||||
"dockWidgetName": "DockWidget-70",
|
|
||||||
"location": 1,
|
|
||||||
"mainWindowName": "MainWindow-14"
|
|
||||||
},
|
|
||||||
"type": 4
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "Closing DockWidget-70",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-70"
|
|
||||||
},
|
|
||||||
"type": 1
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "Hiding DockWidget-72",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-72"
|
|
||||||
},
|
|
||||||
"type": 2
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "Showing DockWidget-70-[hidden]",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-70"
|
|
||||||
},
|
|
||||||
"type": 3
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidget DockWidget-72-[hidden] to top",
|
|
||||||
"params": {
|
|
||||||
"addingOption": 0,
|
|
||||||
"dockWidgetName": "DockWidget-72",
|
|
||||||
"location": 2,
|
|
||||||
"mainWindowName": "MainWindow-14"
|
|
||||||
},
|
|
||||||
"type": 4
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidgetAsTab DockWidget-71-[hidden] onto DockWidget-70",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-70",
|
|
||||||
"dockWidgetToAddName": "DockWidget-71"
|
|
||||||
},
|
|
||||||
"type": 5
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "Showing DockWidget-70-[hidden]",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-70"
|
|
||||||
},
|
|
||||||
"type": 3
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidget DockWidget-70 to top",
|
|
||||||
"params": {
|
|
||||||
"addingOption": 0,
|
|
||||||
"dockWidgetName": "DockWidget-70",
|
|
||||||
"location": 2,
|
|
||||||
"mainWindowName": "MainWindow-14"
|
|
||||||
},
|
|
||||||
"type": 4
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "RestoreLayout",
|
|
||||||
"params": {
|
|
||||||
},
|
|
||||||
"type": 7
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "SaveLayout",
|
|
||||||
"params": {
|
|
||||||
},
|
|
||||||
"type": 6
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidget DockWidget-70 to bottom",
|
|
||||||
"params": {
|
|
||||||
"addingOption": 0,
|
|
||||||
"dockWidgetName": "DockWidget-70",
|
|
||||||
"location": 4,
|
|
||||||
"mainWindowName": "MainWindow-14"
|
|
||||||
},
|
|
||||||
"type": 4
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "Showing DockWidget-72-[hidden]",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-72"
|
|
||||||
},
|
|
||||||
"type": 3
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "",
|
|
||||||
"params": {
|
|
||||||
},
|
|
||||||
"type": 6
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "",
|
|
||||||
"params": {
|
|
||||||
},
|
|
||||||
"type": 6
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "",
|
|
||||||
"params": {
|
|
||||||
},
|
|
||||||
"type": 6
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "",
|
|
||||||
"params": {
|
|
||||||
},
|
|
||||||
"type": 7
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "",
|
|
||||||
"params": {
|
|
||||||
},
|
|
||||||
"type": 7
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "",
|
|
||||||
"params": {
|
|
||||||
},
|
|
||||||
"type": 6
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "",
|
|
||||||
"params": {
|
|
||||||
},
|
|
||||||
"type": 7
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "",
|
|
||||||
"params": {
|
|
||||||
},
|
|
||||||
"type": 6
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "",
|
|
||||||
"params": {
|
|
||||||
},
|
|
||||||
"type": 7
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "",
|
|
||||||
"params": {
|
|
||||||
},
|
|
||||||
"type": 7
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "",
|
|
||||||
"params": {
|
|
||||||
},
|
|
||||||
"type": 6
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "",
|
|
||||||
"params": {
|
|
||||||
},
|
|
||||||
"type": 7
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "",
|
|
||||||
"params": {
|
|
||||||
},
|
|
||||||
"type": 6
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "",
|
|
||||||
"params": {
|
|
||||||
},
|
|
||||||
"type": 7
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "",
|
|
||||||
"params": {
|
|
||||||
},
|
|
||||||
"type": 6
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "",
|
|
||||||
"params": {
|
|
||||||
},
|
|
||||||
"type": 7
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "",
|
|
||||||
"params": {
|
|
||||||
},
|
|
||||||
"type": 6
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "",
|
|
||||||
"params": {
|
|
||||||
},
|
|
||||||
"type": 6
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "",
|
|
||||||
"params": {
|
|
||||||
},
|
|
||||||
"type": 6
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "",
|
|
||||||
"params": {
|
|
||||||
},
|
|
||||||
"type": 7
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "",
|
|
||||||
"params": {
|
|
||||||
},
|
|
||||||
"type": 6
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "",
|
|
||||||
"params": {
|
|
||||||
},
|
|
||||||
"type": 6
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "",
|
|
||||||
"params": {
|
|
||||||
},
|
|
||||||
"type": 6
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "",
|
|
||||||
"params": {
|
|
||||||
},
|
|
||||||
"type": 6
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "",
|
|
||||||
"params": {
|
|
||||||
},
|
|
||||||
"type": 6
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "",
|
|
||||||
"params": {
|
|
||||||
},
|
|
||||||
"type": 7
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "",
|
|
||||||
"params": {
|
|
||||||
},
|
|
||||||
"type": 6
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
@@ -1,645 +0,0 @@
|
|||||||
{
|
|
||||||
"initialLayout": {
|
|
||||||
"dockWidgets": [
|
|
||||||
{
|
|
||||||
"geometry": {
|
|
||||||
"size": {
|
|
||||||
"height": 807,
|
|
||||||
"width": 1022
|
|
||||||
},
|
|
||||||
"x": 481,
|
|
||||||
"y": 53
|
|
||||||
},
|
|
||||||
"isFloating": false,
|
|
||||||
"isVisible": true,
|
|
||||||
"minSize": {
|
|
||||||
"height": 242,
|
|
||||||
"width": 459
|
|
||||||
},
|
|
||||||
"name": "DockWidget-1"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"geometry": {
|
|
||||||
"size": {
|
|
||||||
"height": 991,
|
|
||||||
"width": 1097
|
|
||||||
},
|
|
||||||
"x": 500,
|
|
||||||
"y": 373
|
|
||||||
},
|
|
||||||
"isFloating": false,
|
|
||||||
"isVisible": true,
|
|
||||||
"minSize": {
|
|
||||||
"height": 537,
|
|
||||||
"width": 519
|
|
||||||
},
|
|
||||||
"name": "DockWidget-2"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"geometry": {
|
|
||||||
"size": {
|
|
||||||
"height": 550,
|
|
||||||
"width": 856
|
|
||||||
},
|
|
||||||
"x": 286,
|
|
||||||
"y": 486
|
|
||||||
},
|
|
||||||
"isFloating": true,
|
|
||||||
"isVisible": true,
|
|
||||||
"minSize": {
|
|
||||||
"height": 319,
|
|
||||||
"width": 536
|
|
||||||
},
|
|
||||||
"name": "DockWidget-3"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"geometry": {
|
|
||||||
"size": {
|
|
||||||
"height": 565,
|
|
||||||
"width": 840
|
|
||||||
},
|
|
||||||
"x": 55,
|
|
||||||
"y": 69
|
|
||||||
},
|
|
||||||
"isFloating": false,
|
|
||||||
"isVisible": false,
|
|
||||||
"minSize": {
|
|
||||||
"height": 179,
|
|
||||||
"width": 312
|
|
||||||
},
|
|
||||||
"name": "DockWidget-4"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"geometry": {
|
|
||||||
"size": {
|
|
||||||
"height": 707,
|
|
||||||
"width": 1045
|
|
||||||
},
|
|
||||||
"x": 195,
|
|
||||||
"y": 183
|
|
||||||
},
|
|
||||||
"isFloating": false,
|
|
||||||
"isVisible": false,
|
|
||||||
"minSize": {
|
|
||||||
"height": 539,
|
|
||||||
"width": 589
|
|
||||||
},
|
|
||||||
"name": "DockWidget-5"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"geometry": {
|
|
||||||
"size": {
|
|
||||||
"height": 555,
|
|
||||||
"width": 987
|
|
||||||
},
|
|
||||||
"x": 406,
|
|
||||||
"y": 351
|
|
||||||
},
|
|
||||||
"isFloating": true,
|
|
||||||
"isVisible": true,
|
|
||||||
"minSize": {
|
|
||||||
"height": 375,
|
|
||||||
"width": 594
|
|
||||||
},
|
|
||||||
"name": "DockWidget-6"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"mainWindows": [
|
|
||||||
{
|
|
||||||
"geometry": {
|
|
||||||
"size": {
|
|
||||||
"height": 895,
|
|
||||||
"width": 126
|
|
||||||
},
|
|
||||||
"x": 320,
|
|
||||||
"y": 109
|
|
||||||
},
|
|
||||||
"mainWindowOption": 0,
|
|
||||||
"name": "MainWindow-1"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"operations": [
|
|
||||||
{
|
|
||||||
"comment": "RestoreLayout",
|
|
||||||
"params": {
|
|
||||||
},
|
|
||||||
"type": 7
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidgetAsTab DockWidget-2 onto DockWidget-6",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-6",
|
|
||||||
"dockWidgetToAddName": "DockWidget-2"
|
|
||||||
},
|
|
||||||
"type": 5
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "Showing DockWidget-6-[hidden]",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-6"
|
|
||||||
},
|
|
||||||
"type": 3
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "Hiding DockWidget-2",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-2"
|
|
||||||
},
|
|
||||||
"type": 2
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidget DockWidget-5-[hidden] to right",
|
|
||||||
"params": {
|
|
||||||
"addingOption": 0,
|
|
||||||
"dockWidgetName": "DockWidget-5",
|
|
||||||
"location": 3,
|
|
||||||
"mainWindowName": "MainWindow-1"
|
|
||||||
},
|
|
||||||
"type": 4
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "SaveLayout",
|
|
||||||
"params": {
|
|
||||||
},
|
|
||||||
"type": 6
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "Showing DockWidget-2-[hidden]",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-2"
|
|
||||||
},
|
|
||||||
"type": 3
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidgetAsTab DockWidget-4-[hidden] onto DockWidget-3",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-3",
|
|
||||||
"dockWidgetToAddName": "DockWidget-4"
|
|
||||||
},
|
|
||||||
"type": 5
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "Hiding DockWidget-6",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-6"
|
|
||||||
},
|
|
||||||
"type": 2
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidget DockWidget-6-[hidden] to bottom",
|
|
||||||
"params": {
|
|
||||||
"addingOption": 0,
|
|
||||||
"dockWidgetName": "DockWidget-6",
|
|
||||||
"location": 4,
|
|
||||||
"mainWindowName": "MainWindow-1"
|
|
||||||
},
|
|
||||||
"type": 4
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidget DockWidget-4 to right",
|
|
||||||
"params": {
|
|
||||||
"addingOption": 0,
|
|
||||||
"dockWidgetName": "DockWidget-4",
|
|
||||||
"location": 3,
|
|
||||||
"mainWindowName": "MainWindow-1"
|
|
||||||
},
|
|
||||||
"type": 4
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidgetAsTab DockWidget-6 onto DockWidget-2",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-2",
|
|
||||||
"dockWidgetToAddName": "DockWidget-6"
|
|
||||||
},
|
|
||||||
"type": 5
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidgetAsTab DockWidget-6 onto DockWidget-5",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-5",
|
|
||||||
"dockWidgetToAddName": "DockWidget-6"
|
|
||||||
},
|
|
||||||
"type": 5
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "SaveLayout",
|
|
||||||
"params": {
|
|
||||||
},
|
|
||||||
"type": 6
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "Closing DockWidget-3",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-3"
|
|
||||||
},
|
|
||||||
"type": 1
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "Closing DockWidget-2",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-2"
|
|
||||||
},
|
|
||||||
"type": 1
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "Closing DockWidget-4",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-4"
|
|
||||||
},
|
|
||||||
"type": 1
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "RestoreLayout",
|
|
||||||
"params": {
|
|
||||||
},
|
|
||||||
"type": 7
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "Closing DockWidget-1",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-1"
|
|
||||||
},
|
|
||||||
"type": 1
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidgetAsTab DockWidget-1-[hidden] onto DockWidget-2",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-2",
|
|
||||||
"dockWidgetToAddName": "DockWidget-1"
|
|
||||||
},
|
|
||||||
"type": 5
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "Closing DockWidget-1",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-1"
|
|
||||||
},
|
|
||||||
"type": 1
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "Showing DockWidget-1-[hidden]",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-1"
|
|
||||||
},
|
|
||||||
"type": 3
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "Showing DockWidget-5-[hidden]",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-5"
|
|
||||||
},
|
|
||||||
"type": 3
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidgetAsTab DockWidget-3 onto DockWidget-4",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-4",
|
|
||||||
"dockWidgetToAddName": "DockWidget-3"
|
|
||||||
},
|
|
||||||
"type": 5
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidget DockWidget-3 to bottom",
|
|
||||||
"params": {
|
|
||||||
"addingOption": 0,
|
|
||||||
"dockWidgetName": "DockWidget-3",
|
|
||||||
"location": 4,
|
|
||||||
"mainWindowName": "MainWindow-1"
|
|
||||||
},
|
|
||||||
"type": 4
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "Closing DockWidget-6",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-6"
|
|
||||||
},
|
|
||||||
"type": 1
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidget DockWidget-5 to bottom",
|
|
||||||
"params": {
|
|
||||||
"addingOption": 0,
|
|
||||||
"dockWidgetName": "DockWidget-5",
|
|
||||||
"location": 4,
|
|
||||||
"mainWindowName": "MainWindow-1"
|
|
||||||
},
|
|
||||||
"type": 4
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidget DockWidget-6-[hidden] to bottom",
|
|
||||||
"params": {
|
|
||||||
"addingOption": 0,
|
|
||||||
"dockWidgetName": "DockWidget-6",
|
|
||||||
"location": 4,
|
|
||||||
"mainWindowName": "MainWindow-1"
|
|
||||||
},
|
|
||||||
"type": 4
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidget DockWidget-6 to right",
|
|
||||||
"params": {
|
|
||||||
"addingOption": 0,
|
|
||||||
"dockWidgetName": "DockWidget-6",
|
|
||||||
"location": 3,
|
|
||||||
"mainWindowName": "MainWindow-1"
|
|
||||||
},
|
|
||||||
"type": 4
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidget DockWidget-4 to right",
|
|
||||||
"params": {
|
|
||||||
"addingOption": 0,
|
|
||||||
"dockWidgetName": "DockWidget-4",
|
|
||||||
"location": 3,
|
|
||||||
"mainWindowName": "MainWindow-1"
|
|
||||||
},
|
|
||||||
"type": 4
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "RestoreLayout",
|
|
||||||
"params": {
|
|
||||||
},
|
|
||||||
"type": 7
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "SaveLayout",
|
|
||||||
"params": {
|
|
||||||
},
|
|
||||||
"type": 6
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "SaveLayout",
|
|
||||||
"params": {
|
|
||||||
},
|
|
||||||
"type": 6
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidgetAsTab DockWidget-2 onto DockWidget-1",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-1",
|
|
||||||
"dockWidgetToAddName": "DockWidget-2"
|
|
||||||
},
|
|
||||||
"type": 5
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "SaveLayout",
|
|
||||||
"params": {
|
|
||||||
},
|
|
||||||
"type": 6
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "Closing DockWidget-2",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-2"
|
|
||||||
},
|
|
||||||
"type": 1
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "RestoreLayout",
|
|
||||||
"params": {
|
|
||||||
},
|
|
||||||
"type": 7
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "",
|
|
||||||
"params": {
|
|
||||||
},
|
|
||||||
"type": 6
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "",
|
|
||||||
"params": {
|
|
||||||
},
|
|
||||||
"type": 7
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "",
|
|
||||||
"params": {
|
|
||||||
},
|
|
||||||
"type": 6
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "",
|
|
||||||
"params": {
|
|
||||||
},
|
|
||||||
"type": 7
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "",
|
|
||||||
"params": {
|
|
||||||
},
|
|
||||||
"type": 6
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "",
|
|
||||||
"params": {
|
|
||||||
},
|
|
||||||
"type": 7
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "",
|
|
||||||
"params": {
|
|
||||||
},
|
|
||||||
"type": 7
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "",
|
|
||||||
"params": {
|
|
||||||
},
|
|
||||||
"type": 7
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "",
|
|
||||||
"params": {
|
|
||||||
},
|
|
||||||
"type": 6
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "",
|
|
||||||
"params": {
|
|
||||||
},
|
|
||||||
"type": 7
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "",
|
|
||||||
"params": {
|
|
||||||
},
|
|
||||||
"type": 7
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "",
|
|
||||||
"params": {
|
|
||||||
},
|
|
||||||
"type": 7
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "",
|
|
||||||
"params": {
|
|
||||||
},
|
|
||||||
"type": 6
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "",
|
|
||||||
"params": {
|
|
||||||
},
|
|
||||||
"type": 6
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "",
|
|
||||||
"params": {
|
|
||||||
},
|
|
||||||
"type": 7
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "",
|
|
||||||
"params": {
|
|
||||||
},
|
|
||||||
"type": 6
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "",
|
|
||||||
"params": {
|
|
||||||
},
|
|
||||||
"type": 7
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "",
|
|
||||||
"params": {
|
|
||||||
},
|
|
||||||
"type": 6
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "",
|
|
||||||
"params": {
|
|
||||||
},
|
|
||||||
"type": 6
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "",
|
|
||||||
"params": {
|
|
||||||
},
|
|
||||||
"type": 7
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "",
|
|
||||||
"params": {
|
|
||||||
},
|
|
||||||
"type": 7
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "",
|
|
||||||
"params": {
|
|
||||||
},
|
|
||||||
"type": 6
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "",
|
|
||||||
"params": {
|
|
||||||
},
|
|
||||||
"type": 6
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "",
|
|
||||||
"params": {
|
|
||||||
},
|
|
||||||
"type": 6
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "",
|
|
||||||
"params": {
|
|
||||||
},
|
|
||||||
"type": 6
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "",
|
|
||||||
"params": {
|
|
||||||
},
|
|
||||||
"type": 7
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "",
|
|
||||||
"params": {
|
|
||||||
},
|
|
||||||
"type": 6
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "",
|
|
||||||
"params": {
|
|
||||||
},
|
|
||||||
"type": 6
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "",
|
|
||||||
"params": {
|
|
||||||
},
|
|
||||||
"type": 6
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "",
|
|
||||||
"params": {
|
|
||||||
},
|
|
||||||
"type": 7
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "",
|
|
||||||
"params": {
|
|
||||||
},
|
|
||||||
"type": 6
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "",
|
|
||||||
"params": {
|
|
||||||
},
|
|
||||||
"type": 6
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "",
|
|
||||||
"params": {
|
|
||||||
},
|
|
||||||
"type": 6
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "",
|
|
||||||
"params": {
|
|
||||||
},
|
|
||||||
"type": 7
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "",
|
|
||||||
"params": {
|
|
||||||
},
|
|
||||||
"type": 6
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "",
|
|
||||||
"params": {
|
|
||||||
},
|
|
||||||
"type": 6
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "",
|
|
||||||
"params": {
|
|
||||||
},
|
|
||||||
"type": 7
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "",
|
|
||||||
"params": {
|
|
||||||
},
|
|
||||||
"type": 7
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "",
|
|
||||||
"params": {
|
|
||||||
},
|
|
||||||
"type": 6
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "",
|
|
||||||
"params": {
|
|
||||||
},
|
|
||||||
"type": 7
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
@@ -1,142 +0,0 @@
|
|||||||
{
|
|
||||||
"initialLayout": {
|
|
||||||
"dockWidgets": [
|
|
||||||
{
|
|
||||||
"geometry": {
|
|
||||||
"size": {
|
|
||||||
"height": 903,
|
|
||||||
"width": 596
|
|
||||||
},
|
|
||||||
"x": 212,
|
|
||||||
"y": 195
|
|
||||||
},
|
|
||||||
"isFloating": true,
|
|
||||||
"isVisible": true,
|
|
||||||
"minSize": {
|
|
||||||
"height": 579,
|
|
||||||
"width": 519
|
|
||||||
},
|
|
||||||
"name": "DockWidget-1"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"geometry": {
|
|
||||||
"size": {
|
|
||||||
"height": 696,
|
|
||||||
"width": 530
|
|
||||||
},
|
|
||||||
"x": 103,
|
|
||||||
"y": 264
|
|
||||||
},
|
|
||||||
"isFloating": true,
|
|
||||||
"isVisible": true,
|
|
||||||
"minSize": {
|
|
||||||
"height": 497,
|
|
||||||
"width": 213
|
|
||||||
},
|
|
||||||
"name": "DockWidget-2"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"geometry": {
|
|
||||||
"size": {
|
|
||||||
"height": 745,
|
|
||||||
"width": 732
|
|
||||||
},
|
|
||||||
"x": 403,
|
|
||||||
"y": 397
|
|
||||||
},
|
|
||||||
"isFloating": false,
|
|
||||||
"isVisible": true,
|
|
||||||
"minSize": {
|
|
||||||
"height": 388,
|
|
||||||
"width": 322
|
|
||||||
},
|
|
||||||
"name": "DockWidget-3"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"geometry": {
|
|
||||||
"size": {
|
|
||||||
"height": 609,
|
|
||||||
"width": 734
|
|
||||||
},
|
|
||||||
"x": 311,
|
|
||||||
"y": 337
|
|
||||||
},
|
|
||||||
"isFloating": true,
|
|
||||||
"isVisible": true,
|
|
||||||
"minSize": {
|
|
||||||
"height": 201,
|
|
||||||
"width": 436
|
|
||||||
},
|
|
||||||
"name": "DockWidget-4"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"mainWindows": [
|
|
||||||
{
|
|
||||||
"geometry": {
|
|
||||||
"size": {
|
|
||||||
"height": 723,
|
|
||||||
"width": 297
|
|
||||||
},
|
|
||||||
"x": 179,
|
|
||||||
"y": 93
|
|
||||||
},
|
|
||||||
"mainWindowOption": 0,
|
|
||||||
"name": "MainWindow-1"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"operations": [
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidget DockWidget-1 to left",
|
|
||||||
"params": {
|
|
||||||
"addingOption": 0,
|
|
||||||
"dockWidgetName": "DockWidget-1",
|
|
||||||
"location": 1,
|
|
||||||
"mainWindowName": "MainWindow-1"
|
|
||||||
},
|
|
||||||
"type": 4
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidgetAsTab DockWidget-2 onto DockWidget-1",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-1",
|
|
||||||
"dockWidgetToAddName": "DockWidget-2"
|
|
||||||
},
|
|
||||||
"type": 5
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidget DockWidget-1-[hidden] to left",
|
|
||||||
"params": {
|
|
||||||
"addingOption": 0,
|
|
||||||
"dockWidgetName": "DockWidget-1",
|
|
||||||
"location": 1,
|
|
||||||
"mainWindowName": "MainWindow-1"
|
|
||||||
},
|
|
||||||
"type": 4
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidgetAsTab DockWidget-4 onto DockWidget-2",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-2",
|
|
||||||
"dockWidgetToAddName": "DockWidget-4"
|
|
||||||
},
|
|
||||||
"type": 5
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidgetAsTab DockWidget-3 onto DockWidget-4",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-4",
|
|
||||||
"dockWidgetToAddName": "DockWidget-3"
|
|
||||||
},
|
|
||||||
"type": 5
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidgetAsTab DockWidget-1 onto DockWidget-3",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-3",
|
|
||||||
"dockWidgetToAddName": "DockWidget-1"
|
|
||||||
},
|
|
||||||
"type": 5
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
@@ -1,135 +0,0 @@
|
|||||||
{
|
|
||||||
"initialLayout": {
|
|
||||||
"dockWidgets": [
|
|
||||||
{
|
|
||||||
"geometry": {
|
|
||||||
"size": {
|
|
||||||
"height": 886,
|
|
||||||
"width": 305
|
|
||||||
},
|
|
||||||
"x": 265,
|
|
||||||
"y": 179
|
|
||||||
},
|
|
||||||
"isFloating": true,
|
|
||||||
"isVisible": true,
|
|
||||||
"minSize": {
|
|
||||||
"height": 583,
|
|
||||||
"width": 160
|
|
||||||
},
|
|
||||||
"name": "DockWidget-1"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"geometry": {
|
|
||||||
"size": {
|
|
||||||
"height": 1004,
|
|
||||||
"width": 744
|
|
||||||
},
|
|
||||||
"x": 119,
|
|
||||||
"y": 271
|
|
||||||
},
|
|
||||||
"isFloating": false,
|
|
||||||
"isVisible": true,
|
|
||||||
"minSize": {
|
|
||||||
"height": 507,
|
|
||||||
"width": 378
|
|
||||||
},
|
|
||||||
"name": "DockWidget-2"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"geometry": {
|
|
||||||
"size": {
|
|
||||||
"height": 735,
|
|
||||||
"width": 530
|
|
||||||
},
|
|
||||||
"x": 107,
|
|
||||||
"y": 112
|
|
||||||
},
|
|
||||||
"isFloating": false,
|
|
||||||
"isVisible": true,
|
|
||||||
"minSize": {
|
|
||||||
"height": 351,
|
|
||||||
"width": 480
|
|
||||||
},
|
|
||||||
"name": "DockWidget-3"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"geometry": {
|
|
||||||
"size": {
|
|
||||||
"height": 493,
|
|
||||||
"width": 515
|
|
||||||
},
|
|
||||||
"x": 126,
|
|
||||||
"y": 80
|
|
||||||
},
|
|
||||||
"isFloating": false,
|
|
||||||
"isVisible": true,
|
|
||||||
"minSize": {
|
|
||||||
"height": 197,
|
|
||||||
"width": 437
|
|
||||||
},
|
|
||||||
"name": "DockWidget-4"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"mainWindows": [
|
|
||||||
{
|
|
||||||
"geometry": {
|
|
||||||
"size": {
|
|
||||||
"height": 1050,
|
|
||||||
"width": 462
|
|
||||||
},
|
|
||||||
"x": 130,
|
|
||||||
"y": 421
|
|
||||||
},
|
|
||||||
"mainWindowOption": 0,
|
|
||||||
"name": "MainWindow-1"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"operations": [
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidget DockWidget-3 to bottom",
|
|
||||||
"params": {
|
|
||||||
"addingOption": 0,
|
|
||||||
"dockWidgetName": "DockWidget-3",
|
|
||||||
"location": 4,
|
|
||||||
"mainWindowName": "MainWindow-1"
|
|
||||||
},
|
|
||||||
"type": 4
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "Hiding DockWidget-3",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-3"
|
|
||||||
},
|
|
||||||
"type": 2
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidget DockWidget-1 to right",
|
|
||||||
"params": {
|
|
||||||
"addingOption": 0,
|
|
||||||
"dockWidgetName": "DockWidget-1",
|
|
||||||
"location": 3,
|
|
||||||
"mainWindowName": "MainWindow-1"
|
|
||||||
},
|
|
||||||
"type": 4
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidget DockWidget-4 to bottom",
|
|
||||||
"params": {
|
|
||||||
"addingOption": 0,
|
|
||||||
"dockWidgetName": "DockWidget-4",
|
|
||||||
"location": 4,
|
|
||||||
"mainWindowName": "MainWindow-1"
|
|
||||||
},
|
|
||||||
"type": 4
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidgetAsTab DockWidget-2 onto DockWidget-1",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-1",
|
|
||||||
"dockWidgetToAddName": "DockWidget-2"
|
|
||||||
},
|
|
||||||
"type": 5
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
@@ -1,76 +0,0 @@
|
|||||||
{
|
|
||||||
"initialLayout": {
|
|
||||||
"dockWidgets": [
|
|
||||||
{
|
|
||||||
"geometry": {
|
|
||||||
"size": {
|
|
||||||
"height": 818,
|
|
||||||
"width": 425
|
|
||||||
},
|
|
||||||
"x": 146,
|
|
||||||
"y": 436
|
|
||||||
},
|
|
||||||
"isFloating": true,
|
|
||||||
"isVisible": true,
|
|
||||||
"minSize": {
|
|
||||||
"height": 425,
|
|
||||||
"width": 259
|
|
||||||
},
|
|
||||||
"name": "DockWidget-1"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"geometry": {
|
|
||||||
"size": {
|
|
||||||
"height": 698,
|
|
||||||
"width": 614
|
|
||||||
},
|
|
||||||
"x": 438,
|
|
||||||
"y": 291
|
|
||||||
},
|
|
||||||
"isFloating": false,
|
|
||||||
"isVisible": true,
|
|
||||||
"minSize": {
|
|
||||||
"height": 410,
|
|
||||||
"width": 363
|
|
||||||
},
|
|
||||||
"name": "DockWidget-2"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"mainWindows": [
|
|
||||||
{
|
|
||||||
"geometry": {
|
|
||||||
"size": {
|
|
||||||
"height": 1400,
|
|
||||||
"width": 457
|
|
||||||
},
|
|
||||||
"x": 91,
|
|
||||||
"y": 388
|
|
||||||
},
|
|
||||||
"mainWindowOption": 0,
|
|
||||||
"name": "MainWindow-1"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"operations": [
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidget DockWidget-2 to top",
|
|
||||||
"params": {
|
|
||||||
"addingOption": 0,
|
|
||||||
"dockWidgetName": "DockWidget-2",
|
|
||||||
"location": 2,
|
|
||||||
"mainWindowName": "MainWindow-1"
|
|
||||||
},
|
|
||||||
"type": 4
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidget DockWidget-1 to top",
|
|
||||||
"params": {
|
|
||||||
"addingOption": 0,
|
|
||||||
"dockWidgetName": "DockWidget-1",
|
|
||||||
"location": 2,
|
|
||||||
"mainWindowName": "MainWindow-1"
|
|
||||||
},
|
|
||||||
"type": 4
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
@@ -1,122 +0,0 @@
|
|||||||
{
|
|
||||||
"initialLayout": {
|
|
||||||
"dockWidgets": [
|
|
||||||
{
|
|
||||||
"geometry": {
|
|
||||||
"size": {
|
|
||||||
"height": 1053,
|
|
||||||
"width": 1025
|
|
||||||
},
|
|
||||||
"x": 66,
|
|
||||||
"y": 252
|
|
||||||
},
|
|
||||||
"isFloating": false,
|
|
||||||
"isVisible": true,
|
|
||||||
"minSize": {
|
|
||||||
"height": 503,
|
|
||||||
"width": 490
|
|
||||||
},
|
|
||||||
"name": "DockWidget-1"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"geometry": {
|
|
||||||
"size": {
|
|
||||||
"height": 912,
|
|
||||||
"width": 835
|
|
||||||
},
|
|
||||||
"x": 94,
|
|
||||||
"y": 437
|
|
||||||
},
|
|
||||||
"isFloating": true,
|
|
||||||
"isVisible": true,
|
|
||||||
"minSize": {
|
|
||||||
"height": 506,
|
|
||||||
"width": 532
|
|
||||||
},
|
|
||||||
"name": "DockWidget-2"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"geometry": {
|
|
||||||
"size": {
|
|
||||||
"height": 774,
|
|
||||||
"width": 925
|
|
||||||
},
|
|
||||||
"x": 222,
|
|
||||||
"y": 299
|
|
||||||
},
|
|
||||||
"isFloating": false,
|
|
||||||
"isVisible": true,
|
|
||||||
"minSize": {
|
|
||||||
"height": 596,
|
|
||||||
"width": 418
|
|
||||||
},
|
|
||||||
"name": "DockWidget-3"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"mainWindows": [
|
|
||||||
{
|
|
||||||
"geometry": {
|
|
||||||
"size": {
|
|
||||||
"height": 1054,
|
|
||||||
"width": 171
|
|
||||||
},
|
|
||||||
"x": 321,
|
|
||||||
"y": 131
|
|
||||||
},
|
|
||||||
"mainWindowOption": 0,
|
|
||||||
"name": "MainWindow-1"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"operations": [
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidget DockWidget-1 to top",
|
|
||||||
"params": {
|
|
||||||
"addingOption": 0,
|
|
||||||
"dockWidgetName": "DockWidget-1",
|
|
||||||
"location": 2,
|
|
||||||
"mainWindowName": "MainWindow-1"
|
|
||||||
},
|
|
||||||
"type": 4
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidget DockWidget-3 to left",
|
|
||||||
"params": {
|
|
||||||
"addingOption": 0,
|
|
||||||
"dockWidgetName": "DockWidget-3",
|
|
||||||
"location": 1,
|
|
||||||
"mainWindowName": "MainWindow-1"
|
|
||||||
},
|
|
||||||
"type": 4
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "Hiding DockWidget-1",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-1"
|
|
||||||
},
|
|
||||||
"type": 2
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "Hiding DockWidget-3",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-3"
|
|
||||||
},
|
|
||||||
"type": 2
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "Showing DockWidget-1-[hidden]",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-1"
|
|
||||||
},
|
|
||||||
"type": 3
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidgetAsTab DockWidget-2 onto DockWidget-1",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-1",
|
|
||||||
"dockWidgetToAddName": "DockWidget-2"
|
|
||||||
},
|
|
||||||
"type": 5
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
@@ -1,245 +0,0 @@
|
|||||||
{
|
|
||||||
"initialLayout": {
|
|
||||||
"dockWidgets": [
|
|
||||||
{
|
|
||||||
"geometry": {
|
|
||||||
"size": {
|
|
||||||
"height": 428,
|
|
||||||
"width": 800
|
|
||||||
},
|
|
||||||
"x": 212,
|
|
||||||
"y": 102
|
|
||||||
},
|
|
||||||
"isFloating": true,
|
|
||||||
"isVisible": true,
|
|
||||||
"minSize": {
|
|
||||||
"height": 361,
|
|
||||||
"width": 599
|
|
||||||
},
|
|
||||||
"name": "DockWidget-1"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"geometry": {
|
|
||||||
"size": {
|
|
||||||
"height": 744,
|
|
||||||
"width": 568
|
|
||||||
},
|
|
||||||
"x": 437,
|
|
||||||
"y": 127
|
|
||||||
},
|
|
||||||
"isFloating": true,
|
|
||||||
"isVisible": false,
|
|
||||||
"minSize": {
|
|
||||||
"height": 422,
|
|
||||||
"width": 261
|
|
||||||
},
|
|
||||||
"name": "DockWidget-2"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"geometry": {
|
|
||||||
"size": {
|
|
||||||
"height": 1055,
|
|
||||||
"width": 768
|
|
||||||
},
|
|
||||||
"x": 452,
|
|
||||||
"y": 224
|
|
||||||
},
|
|
||||||
"isFloating": false,
|
|
||||||
"isVisible": true,
|
|
||||||
"minSize": {
|
|
||||||
"height": 512,
|
|
||||||
"width": 386
|
|
||||||
},
|
|
||||||
"name": "DockWidget-3"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"geometry": {
|
|
||||||
"size": {
|
|
||||||
"height": 647,
|
|
||||||
"width": 677
|
|
||||||
},
|
|
||||||
"x": 458,
|
|
||||||
"y": 188
|
|
||||||
},
|
|
||||||
"isFloating": true,
|
|
||||||
"isVisible": true,
|
|
||||||
"minSize": {
|
|
||||||
"height": 358,
|
|
||||||
"width": 224
|
|
||||||
},
|
|
||||||
"name": "DockWidget-4"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"geometry": {
|
|
||||||
"size": {
|
|
||||||
"height": 333,
|
|
||||||
"width": 739
|
|
||||||
},
|
|
||||||
"x": 408,
|
|
||||||
"y": 100
|
|
||||||
},
|
|
||||||
"isFloating": false,
|
|
||||||
"isVisible": false,
|
|
||||||
"minSize": {
|
|
||||||
"height": 252,
|
|
||||||
"width": 267
|
|
||||||
},
|
|
||||||
"name": "DockWidget-5"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"geometry": {
|
|
||||||
"size": {
|
|
||||||
"height": 1042,
|
|
||||||
"width": 468
|
|
||||||
},
|
|
||||||
"x": 343,
|
|
||||||
"y": 320
|
|
||||||
},
|
|
||||||
"isFloating": true,
|
|
||||||
"isVisible": true,
|
|
||||||
"minSize": {
|
|
||||||
"height": 526,
|
|
||||||
"width": 234
|
|
||||||
},
|
|
||||||
"name": "DockWidget-6"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"mainWindows": [
|
|
||||||
{
|
|
||||||
"geometry": {
|
|
||||||
"size": {
|
|
||||||
"height": 1039,
|
|
||||||
"width": 94
|
|
||||||
},
|
|
||||||
"x": 364,
|
|
||||||
"y": 197
|
|
||||||
},
|
|
||||||
"mainWindowOption": 0,
|
|
||||||
"name": "MainWindow-1"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"operations": [
|
|
||||||
{
|
|
||||||
"comment": "Closing DockWidget-3",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-3"
|
|
||||||
},
|
|
||||||
"type": 1
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "Closing DockWidget-6",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-6"
|
|
||||||
},
|
|
||||||
"type": 1
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidget DockWidget-4 to bottom",
|
|
||||||
"params": {
|
|
||||||
"addingOption": 0,
|
|
||||||
"dockWidgetName": "DockWidget-4",
|
|
||||||
"location": 4,
|
|
||||||
"mainWindowName": "MainWindow-1"
|
|
||||||
},
|
|
||||||
"type": 4
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidget DockWidget-2-[hidden] to bottom",
|
|
||||||
"params": {
|
|
||||||
"addingOption": 0,
|
|
||||||
"dockWidgetName": "DockWidget-2",
|
|
||||||
"location": 4,
|
|
||||||
"mainWindowName": "MainWindow-1"
|
|
||||||
},
|
|
||||||
"type": 4
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidget DockWidget-2 to top",
|
|
||||||
"params": {
|
|
||||||
"addingOption": 0,
|
|
||||||
"dockWidgetName": "DockWidget-2",
|
|
||||||
"location": 2,
|
|
||||||
"mainWindowName": "MainWindow-1"
|
|
||||||
},
|
|
||||||
"type": 4
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "Closing DockWidget-1",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-1"
|
|
||||||
},
|
|
||||||
"type": 1
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "Closing DockWidget-2",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-2"
|
|
||||||
},
|
|
||||||
"type": 1
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "Showing DockWidget-2-[hidden]",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-2"
|
|
||||||
},
|
|
||||||
"type": 3
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "Showing DockWidget-3-[hidden]",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-3"
|
|
||||||
},
|
|
||||||
"type": 3
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "Showing DockWidget-1-[hidden]",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-1"
|
|
||||||
},
|
|
||||||
"type": 3
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidgetAsTab DockWidget-4 onto DockWidget-1",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-1",
|
|
||||||
"dockWidgetToAddName": "DockWidget-4"
|
|
||||||
},
|
|
||||||
"type": 5
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "Closing DockWidget-2",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-2"
|
|
||||||
},
|
|
||||||
"type": 1
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidget DockWidget-3 to right",
|
|
||||||
"params": {
|
|
||||||
"addingOption": 0,
|
|
||||||
"dockWidgetName": "DockWidget-3",
|
|
||||||
"location": 3,
|
|
||||||
"mainWindowName": "MainWindow-1"
|
|
||||||
},
|
|
||||||
"type": 4
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidget DockWidget-1-[hidden] to left",
|
|
||||||
"params": {
|
|
||||||
"addingOption": 0,
|
|
||||||
"dockWidgetName": "DockWidget-1",
|
|
||||||
"location": 1,
|
|
||||||
"mainWindowName": "MainWindow-1"
|
|
||||||
},
|
|
||||||
"type": 4
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "Showing DockWidget-2-[hidden]",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-2"
|
|
||||||
},
|
|
||||||
"type": 3
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
@@ -1,205 +0,0 @@
|
|||||||
{
|
|
||||||
"initialLayout": {
|
|
||||||
"dockWidgets": [
|
|
||||||
{
|
|
||||||
"geometry": {
|
|
||||||
"size": {
|
|
||||||
"height": 292,
|
|
||||||
"width": 1062
|
|
||||||
},
|
|
||||||
"x": 163,
|
|
||||||
"y": 468
|
|
||||||
},
|
|
||||||
"isFloating": true,
|
|
||||||
"isVisible": true,
|
|
||||||
"minSize": {
|
|
||||||
"height": 183,
|
|
||||||
"width": 485
|
|
||||||
},
|
|
||||||
"name": "DockWidget-1"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"geometry": {
|
|
||||||
"size": {
|
|
||||||
"height": 858,
|
|
||||||
"width": 559
|
|
||||||
},
|
|
||||||
"x": 39,
|
|
||||||
"y": 491
|
|
||||||
},
|
|
||||||
"isFloating": false,
|
|
||||||
"isVisible": true,
|
|
||||||
"minSize": {
|
|
||||||
"height": 584,
|
|
||||||
"width": 388
|
|
||||||
},
|
|
||||||
"name": "DockWidget-2"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"geometry": {
|
|
||||||
"size": {
|
|
||||||
"height": 625,
|
|
||||||
"width": 693
|
|
||||||
},
|
|
||||||
"x": 390,
|
|
||||||
"y": 121
|
|
||||||
},
|
|
||||||
"isFloating": false,
|
|
||||||
"isVisible": true,
|
|
||||||
"minSize": {
|
|
||||||
"height": 460,
|
|
||||||
"width": 386
|
|
||||||
},
|
|
||||||
"name": "DockWidget-3"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"geometry": {
|
|
||||||
"size": {
|
|
||||||
"height": 684,
|
|
||||||
"width": 740
|
|
||||||
},
|
|
||||||
"x": 243,
|
|
||||||
"y": 117
|
|
||||||
},
|
|
||||||
"isFloating": false,
|
|
||||||
"isVisible": true,
|
|
||||||
"minSize": {
|
|
||||||
"height": 332,
|
|
||||||
"width": 414
|
|
||||||
},
|
|
||||||
"name": "DockWidget-5"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"geometry": {
|
|
||||||
"size": {
|
|
||||||
"height": 690,
|
|
||||||
"width": 676
|
|
||||||
},
|
|
||||||
"x": 288,
|
|
||||||
"y": 108
|
|
||||||
},
|
|
||||||
"isFloating": false,
|
|
||||||
"isVisible": true,
|
|
||||||
"minSize": {
|
|
||||||
"height": 494,
|
|
||||||
"width": 506
|
|
||||||
},
|
|
||||||
"name": "DockWidget-6"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"geometry": {
|
|
||||||
"size": {
|
|
||||||
"height": 1011,
|
|
||||||
"width": 412
|
|
||||||
},
|
|
||||||
"x": 136,
|
|
||||||
"y": 197
|
|
||||||
},
|
|
||||||
"isFloating": true,
|
|
||||||
"isVisible": true,
|
|
||||||
"minSize": {
|
|
||||||
"height": 590,
|
|
||||||
"width": 209
|
|
||||||
},
|
|
||||||
"name": "DockWidget-8"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"geometry": {
|
|
||||||
"size": {
|
|
||||||
"height": 792,
|
|
||||||
"width": 754
|
|
||||||
},
|
|
||||||
"x": 64,
|
|
||||||
"y": 69
|
|
||||||
},
|
|
||||||
"isFloating": false,
|
|
||||||
"isVisible": true,
|
|
||||||
"minSize": {
|
|
||||||
"height": 560,
|
|
||||||
"width": 534
|
|
||||||
},
|
|
||||||
"name": "DockWidget-9"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"mainWindows": [
|
|
||||||
{
|
|
||||||
"geometry": {
|
|
||||||
"size": {
|
|
||||||
"height": 1346,
|
|
||||||
"width": 219
|
|
||||||
},
|
|
||||||
"x": 209,
|
|
||||||
"y": 85
|
|
||||||
},
|
|
||||||
"mainWindowOption": 0,
|
|
||||||
"name": "MainWindow-1"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"operations": [
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidget DockWidget-8 to left",
|
|
||||||
"params": {
|
|
||||||
"addingOption": 0,
|
|
||||||
"dockWidgetName": "DockWidget-8",
|
|
||||||
"location": 1,
|
|
||||||
"mainWindowName": "MainWindow-1"
|
|
||||||
},
|
|
||||||
"type": 4
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidgetAsTab DockWidget-8 onto DockWidget-9",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-9",
|
|
||||||
"dockWidgetToAddName": "DockWidget-8"
|
|
||||||
},
|
|
||||||
"type": 5
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidget DockWidget-2 to left",
|
|
||||||
"params": {
|
|
||||||
"addingOption": 0,
|
|
||||||
"dockWidgetName": "DockWidget-2",
|
|
||||||
"location": 1,
|
|
||||||
"mainWindowName": "MainWindow-1"
|
|
||||||
},
|
|
||||||
"type": 4
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidget DockWidget-1 to top",
|
|
||||||
"params": {
|
|
||||||
"addingOption": 0,
|
|
||||||
"dockWidgetName": "DockWidget-1",
|
|
||||||
"location": 2,
|
|
||||||
"mainWindowName": "MainWindow-1"
|
|
||||||
},
|
|
||||||
"type": 4
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidget DockWidget-6 to right",
|
|
||||||
"params": {
|
|
||||||
"addingOption": 0,
|
|
||||||
"dockWidgetName": "DockWidget-6",
|
|
||||||
"location": 3,
|
|
||||||
"mainWindowName": "MainWindow-1"
|
|
||||||
},
|
|
||||||
"type": 4
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidgetAsTab DockWidget-5 onto DockWidget-3",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-3",
|
|
||||||
"dockWidgetToAddName": "DockWidget-5"
|
|
||||||
},
|
|
||||||
"type": 5
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "AddDockWidgetAsTab DockWidget-9-[hidden] onto DockWidget-2",
|
|
||||||
"params": {
|
|
||||||
"dockWidgetName": "DockWidget-2",
|
|
||||||
"dockWidgetToAddName": "DockWidget-9"
|
|
||||||
},
|
|
||||||
"type": 5
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
133
tests/layouts/1.6layoutWithoutFloatingWindowFlags.json
Normal file
133
tests/layouts/1.6layoutWithoutFloatingWindowFlags.json
Normal file
@@ -0,0 +1,133 @@
|
|||||||
|
{
|
||||||
|
"allDockWidgets": [
|
||||||
|
{
|
||||||
|
"lastPosition": {
|
||||||
|
"lastFloatingGeometry": {
|
||||||
|
"height": 0,
|
||||||
|
"width": 0,
|
||||||
|
"x": 0,
|
||||||
|
"y": 0
|
||||||
|
},
|
||||||
|
"placeholders": [
|
||||||
|
{
|
||||||
|
"indexOfFloatingWindow": 0,
|
||||||
|
"isFloatingWindow": true,
|
||||||
|
"itemIndex": 0
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"tabIndex": -1,
|
||||||
|
"wasFloating": false
|
||||||
|
},
|
||||||
|
"uniqueName": "1"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"closedDockWidgets": [
|
||||||
|
],
|
||||||
|
"floatingWindows": [
|
||||||
|
{
|
||||||
|
"geometry": {
|
||||||
|
"height": 129,
|
||||||
|
"width": 400,
|
||||||
|
"x": 0,
|
||||||
|
"y": 0
|
||||||
|
},
|
||||||
|
"isVisible": true,
|
||||||
|
"multiSplitterLayout": {
|
||||||
|
"frames": {
|
||||||
|
"1": {
|
||||||
|
"currentTabIndex": 0,
|
||||||
|
"dockWidgets": [
|
||||||
|
"1"
|
||||||
|
],
|
||||||
|
"geometry": {
|
||||||
|
"height": 90,
|
||||||
|
"width": 392,
|
||||||
|
"x": 0,
|
||||||
|
"y": 0
|
||||||
|
},
|
||||||
|
"id": "1",
|
||||||
|
"isNull": false,
|
||||||
|
"mainWindowUniqueName": "",
|
||||||
|
"objectName": "1",
|
||||||
|
"options": 0
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"layout": {
|
||||||
|
"children": [
|
||||||
|
{
|
||||||
|
"guestId": "1",
|
||||||
|
"isContainer": false,
|
||||||
|
"isVisible": true,
|
||||||
|
"objectName": "1",
|
||||||
|
"sizingInfo": {
|
||||||
|
"geometry": {
|
||||||
|
"height": 90,
|
||||||
|
"width": 392,
|
||||||
|
"x": 0,
|
||||||
|
"y": 0
|
||||||
|
},
|
||||||
|
"maxSize": {
|
||||||
|
"height": 90,
|
||||||
|
"width": 524291
|
||||||
|
},
|
||||||
|
"minSize": {
|
||||||
|
"height": 90,
|
||||||
|
"width": 84
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"isContainer": true,
|
||||||
|
"isVisible": false,
|
||||||
|
"objectName": "",
|
||||||
|
"orientation": 2,
|
||||||
|
"sizingInfo": {
|
||||||
|
"geometry": {
|
||||||
|
"height": 90,
|
||||||
|
"width": 392,
|
||||||
|
"x": 0,
|
||||||
|
"y": 0
|
||||||
|
},
|
||||||
|
"maxSize": {
|
||||||
|
"height": 16777215,
|
||||||
|
"width": 16777215
|
||||||
|
},
|
||||||
|
"minSize": {
|
||||||
|
"height": 90,
|
||||||
|
"width": 80
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"normalGeometry": {
|
||||||
|
"height": 129,
|
||||||
|
"width": 400,
|
||||||
|
"x": 0,
|
||||||
|
"y": 0
|
||||||
|
},
|
||||||
|
"parentIndex": -1,
|
||||||
|
"screenIndex": 0,
|
||||||
|
"screenSize": {
|
||||||
|
"height": 600,
|
||||||
|
"width": 800
|
||||||
|
},
|
||||||
|
"windowState": 0
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"mainWindows": [
|
||||||
|
],
|
||||||
|
"screenInfo": [
|
||||||
|
{
|
||||||
|
"devicePixelRatio": 1,
|
||||||
|
"geometry": {
|
||||||
|
"height": 600,
|
||||||
|
"width": 800,
|
||||||
|
"x": 0,
|
||||||
|
"y": 0
|
||||||
|
},
|
||||||
|
"index": 0,
|
||||||
|
"name": ""
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"serializationVersion": 3
|
||||||
|
}
|
||||||
@@ -6,6 +6,7 @@
|
|||||||
<file>layouts/stuck-separator.json</file>
|
<file>layouts/stuck-separator.json</file>
|
||||||
<file>layouts/layoutEquallyCrash.json</file>
|
<file>layouts/layoutEquallyCrash.json</file>
|
||||||
<file>layouts/restoreWithIncompleteFactory.json</file>
|
<file>layouts/restoreWithIncompleteFactory.json</file>
|
||||||
|
<file>layouts/1.6layoutWithoutFloatingWindowFlags.json</file>
|
||||||
<file>main.qml</file>
|
<file>main.qml</file>
|
||||||
<file>main2.qml</file>
|
<file>main2.qml</file>
|
||||||
</qresource>
|
</qresource>
|
||||||
|
|||||||
@@ -5078,6 +5078,13 @@ void TestDocks::tst_mdi_mixed_with_docking()
|
|||||||
mdiArea->addDockWidget(mdiWidget1, QPoint(10, 10));
|
mdiArea->addDockWidget(mdiWidget1, QPoint(10, 10));
|
||||||
mdiArea->addDockWidget(mdiWidget2, QPoint(50, 50));
|
mdiArea->addDockWidget(mdiWidget2, QPoint(50, 50));
|
||||||
|
|
||||||
|
|
||||||
|
// We don't support LayoutSaver with mdi yet, but it shouldn't crash
|
||||||
|
// so test it as well
|
||||||
|
LayoutSaver saver;
|
||||||
|
|
||||||
|
saver.serializeLayout();
|
||||||
|
|
||||||
Frame *frameMDI1 = mdiWidget1->d->frame();
|
Frame *frameMDI1 = mdiWidget1->d->frame();
|
||||||
Frame *frame1 = dock1->d->frame();
|
Frame *frame1 = dock1->d->frame();
|
||||||
QVERIFY(!frame1->isMDI());
|
QVERIFY(!frame1->isMDI());
|
||||||
@@ -7797,6 +7804,11 @@ void TestDocks::tst_addMDIDockWidget()
|
|||||||
auto m = createMainWindow(QSize(800, 500), MainWindowOption_MDI);
|
auto m = createMainWindow(QSize(800, 500), MainWindowOption_MDI);
|
||||||
auto dock0 = createDockWidget("dock0", new MyWidget2(QSize(400, 400)));
|
auto dock0 = createDockWidget("dock0", new MyWidget2(QSize(400, 400)));
|
||||||
qobject_cast<MDILayoutWidget *>(m->layoutWidget())->addDockWidget(dock0, QPoint(0, 0), {});
|
qobject_cast<MDILayoutWidget *>(m->layoutWidget())->addDockWidget(dock0, QPoint(0, 0), {});
|
||||||
|
|
||||||
|
// MDI doesn't support LayoutSaver yet, but it was crashing, so add a test
|
||||||
|
// to catch further crashes
|
||||||
|
LayoutSaver saver;
|
||||||
|
const QByteArray saved = saver.serializeLayout();
|
||||||
}
|
}
|
||||||
|
|
||||||
void TestDocks::tst_redockToMDIRestoresPosition()
|
void TestDocks::tst_redockToMDIRestoresPosition()
|
||||||
@@ -7986,3 +7998,19 @@ void TestDocks::tst_crash326()
|
|||||||
QEXPECT_FAIL("", "Bug #326, to be fixed", Continue);
|
QEXPECT_FAIL("", "Bug #326, to be fixed", Continue);
|
||||||
QVERIFY(originalFrame != dock1->d->frame());
|
QVERIFY(originalFrame != dock1->d->frame());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void TestDocks::tst_restoreFlagsFromVersion16()
|
||||||
|
{
|
||||||
|
EnsureTopLevelsDeleted e;
|
||||||
|
KDDockWidgets::Config::self().setFlags(KDDockWidgets::Config::Flag_HideTitleBarWhenTabsVisible);
|
||||||
|
|
||||||
|
// Save a layout with a floating window:
|
||||||
|
auto dock1 = createDockWidget("1", new QPushButton("1"));
|
||||||
|
|
||||||
|
LayoutSaver saver;
|
||||||
|
saver.restoreFromFile(":/layouts/1.6layoutWithoutFloatingWindowFlags.json");
|
||||||
|
|
||||||
|
auto floatingWindow = dock1->floatingWindow();
|
||||||
|
QVERIFY(floatingWindow);
|
||||||
|
QCOMPARE(floatingWindow->floatingWindowFlags(), FloatingWindowFlag::HideTitleBarWhenTabsVisible);
|
||||||
|
}
|
||||||
|
|||||||
@@ -248,6 +248,7 @@ private Q_SLOTS:
|
|||||||
void tst_persistentCentralWidget();
|
void tst_persistentCentralWidget();
|
||||||
void tst_setFloatingWindowFlags();
|
void tst_setFloatingWindowFlags();
|
||||||
void tst_crash326();
|
void tst_crash326();
|
||||||
|
void tst_restoreFlagsFromVersion16();
|
||||||
|
|
||||||
#ifdef KDDOCKWIDGETS_QTWIDGETS
|
#ifdef KDDOCKWIDGETS_QTWIDGETS
|
||||||
// TODO: Port these to QtQuick
|
// TODO: Port these to QtQuick
|
||||||
|
|||||||
27
vscode.code-workspace
Normal file
27
vscode.code-workspace
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
{
|
||||||
|
"folders": [
|
||||||
|
{
|
||||||
|
"path": "."
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"settings": {
|
||||||
|
"files.trimTrailingWhitespace": true,
|
||||||
|
"editor.formatOnType": true,
|
||||||
|
"cmake.copyCompileCommands": "${workspaceFolder}/compile_commands.json"
|
||||||
|
},
|
||||||
|
"launch": {
|
||||||
|
"version": "0.2.0",
|
||||||
|
"configurations": [
|
||||||
|
{
|
||||||
|
"name": "Current Target (LLDB)",
|
||||||
|
"type": "lldb",
|
||||||
|
"request": "launch",
|
||||||
|
"program": "${command:cmake.launchTargetPath}",
|
||||||
|
"args": [
|
||||||
|
""
|
||||||
|
],
|
||||||
|
"cwd": "${command:cmake.buildDirectory}"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user