Compare commits

..

61 Commits

Author SHA1 Message Date
plc-user 411fb3c4dc Fix signal for ComboBox 2025-03-28 18:57:40 +01:00
plc-user 07a07a5719 Fix signal for ColorButton 2025-03-28 18:54:57 +01:00
Laurent Trinques 3913836137 Merge pull request #385 from plc-user/qt6-cmake
FIX broken signals in export-dialog
2025-03-13 11:06:54 +01:00
plc-user 242a601984 use "%" for string-concatenation
Qt-Docs says it's less memory-usage...
2025-03-12 16:55:47 +01:00
plc-user 635bb15faf remove unneeded Qt-version-checks 2025-03-12 16:48:52 +01:00
plc-user 2deb37d351 remove unneeded Qt-version-checks 2025-03-12 16:45:16 +01:00
plc-user 1124a567aa remove unneeded comments 2025-03-12 00:43:23 +01:00
plc-user 8e7120e923 fixed broken signals
and added some English comments
2025-03-12 00:40:35 +01:00
Laurent Trinques 0a9f62126b Merge pull request #380 from plc-user/qt6-cmake
added code for Qt6 to qetelementeditor.cpp
2025-03-06 13:09:03 +01:00
plc-user c0864eced3 added code for Qt6 to qetelementeditor.cpp
and removed qDebug() - Output.
Seems to work for me but should be tested by someone else, too.
2025-03-06 09:55:21 +01:00
Laurent Trinques e01e3d7838 Merge pull request #378 from elevatormind/no-kwidgetsaddons
No kwidgetsaddons
2025-03-04 14:23:42 +01:00
Magnus Hellströmer 0e85314a84 Removed kwidgetaddons from CMake 2025-03-03 23:25:34 +01:00
Magnus Hellströmer 80e404048c Added padding variables for ColorButton and ColorComboBoxDelegate 2025-03-03 23:24:28 +01:00
Magnus Hellströmer 0e5f37503c Small fixes
- Better call of QColorDialog::getColor in ColorButton (reflects new ColorComboBox class)
  - no CamelCase for variable
  - Typo
2025-03-03 23:19:23 +01:00
Magnus Hellströmer f14f6c6a8d Replacement for KColorCombo 2025-03-03 23:11:51 +01:00
Magnus Hellströmer b815244494 Replacement for KColorButton 2025-03-03 20:45:16 +01:00
elevatormind 01d018f8cf Merge branch 'qelectrotech:qt6-cmake' into qt6-cmake 2025-03-03 19:48:57 +01:00
Laurent Trinques d7a15d6cb6 bordertitleblock: use same code for Qt5 & Qt6 for "numbering" rows 2025-03-02 10:35:16 +01:00
Laurent Trinques a53a799da5 Fix crossXref with Qt6 thanks plc-user,
see:https://qelectrotech.org/forum/viewtopic.php?pid=21168#p21168
2025-03-01 15:48:42 +01:00
Laurent Trinques d4972dc588 Merge pull request #371 from qelectrotech/master
Merge last commits on mastert to branch qt6-cmake
2025-02-28 13:46:46 +01:00
Laurent Trinques d1ce42a148 Fixed deprecated use of QAbstractPrintDialog::setEnabledOptions 2025-02-27 12:36:58 +01:00
Laurent Trinques 6b9837b244 Fix menclature tables are growing in width, when you reload them the
width increases.
2025-02-27 11:29:29 +01:00
Laurent Trinques adbbeca905 Typo 2025-02-21 16:17:57 +01:00
Laurent Trinques f8b9edd938 Fix Symbol library panel, the texts don't show until you hover over them with the mouse.
Improve launch time
2025-02-21 15:47:18 +01:00
Laurent Trinques 99dfe6a50c Merge pull request #366 from elevatormind/qt6-cmake
Qt6 cmake
2025-02-21 15:36:54 +01:00
Magnus Hellströmer 49ce6bc4b3 Update qet_be.ts to qet_nl_BE.ts 2025-02-19 21:32:21 +01:00
Magnus Hellströmer 572d78912c Fix compiler warning 2025-02-19 21:32:21 +01:00
Magnus Hellströmer aa36bb35e1 Fix compiler warning 2025-02-19 21:32:21 +01:00
Magnus Hellströmer 4e030943bc Fix compile warning 2025-02-19 21:32:21 +01:00
Magnus Hellströmer 1c2d83d586 Fix compile error 2025-02-19 21:32:21 +01:00
Magnus Hellströmer 1a24452e8b Bump ECM / KF6 versions 2025-02-19 21:32:21 +01:00
Magnus Hellströmer 3f7192dc68 Rearraned and updated cmake-files 2025-02-19 21:32:21 +01:00
Magnus Hellströmer 4ce8fcb0d4 Bump cmake minimum version 2025-02-19 21:32:21 +01:00
Magnus Hellströmer 9fefc7aa2a Force Qt6 in cmake 2025-02-19 21:32:21 +01:00
Magnus Hellströmer c77eb98a15 Fixed broken mapped signal for RecentFiles 2025-02-19 21:32:21 +01:00
Magnus Hellströmer 5973db00f7 Fixed deprecated use of QColor:setNamedColor() 2025-02-19 21:32:21 +01:00
Magnus Hellströmer ee06a71e6f Fixed missing include 2025-02-19 21:32:21 +01:00
Magnus Hellströmer 25f9f14b04 Fixed deprecated qAsConst() to std::as_const() 2025-02-19 21:32:21 +01:00
Magnus Hellströmer 4827b23116 Changed QtConcurrent::run() to QThreadPool::start() to fix compile warning 2025-02-19 21:32:21 +01:00
Magnus Hellströmer e332d3bf31 Fixed compile warnings about QVariant::canConvert() 2025-02-19 21:32:21 +01:00
Magnus Hellströmer 3c4a0ed2b4 Fixed narrowing warning qsizetype -> int 2025-02-19 21:32:21 +01:00
Magnus Hellströmer e8f8304b60 Fixed deprecated uses of QVariant 2025-02-19 21:32:21 +01:00
Magnus Hellströmer 07118d7a11 Updated deprecated QString::count() -> length() 2025-02-19 21:32:21 +01:00
Magnus Hellströmer 373fcfb4ea Support for loading language .qm files as Qt resource 2025-02-19 21:32:21 +01:00
Magnus Hellströmer 05dfd10952 Show full Qt version in cmake 2025-02-19 21:32:21 +01:00
Magnus Hellströmer a88d485051 Replaced BUILD_WITHOUT_KF5 to BUILD_WITHOUT_KF6 2025-02-19 21:32:21 +01:00
Magnus Hellströmer 40abc3892c Fixed export project db (added SQLite3 in cmake) 2025-02-19 21:32:21 +01:00
Magnus Hellströmer 27899c48a3 Fixed crash with db export disabled 2025-02-19 21:32:21 +01:00
Magnus Hellströmer 4fe9687aca Added missing include 2025-02-19 21:32:21 +01:00
Magnus Hellströmer cfdad56d0e Added qsizetype cast fixing compile error 2025-02-19 21:32:21 +01:00
Magnus Hellströmer 8ba96ac6e2 Added bool cast fixing compile error 2025-02-19 21:32:21 +01:00
Magnus Hellströmer dd521f13aa Added missing includes 2025-02-19 21:32:21 +01:00
Magnus Hellströmer 6c5ff66067 Include correct header file for catch 2025-02-19 21:32:21 +01:00
Magnus Hellströmer 0dc45f056e Fixed deprecated regex exactMatch() 2025-02-19 21:32:21 +01:00
Magnus Hellströmer 0b307abf34 Corrected overloaded qHash() from earlier commit 21fcf688ec3b8b82e89d1be5424b0aa4d356e1ab 2025-02-19 21:32:21 +01:00
Magnus Hellströmer 9127937bee Added bool cast fixing compiler crash 2025-02-19 21:32:21 +01:00
Magnus Hellströmer d3f206a387 Removed obsolete QGIManager::manage/release(QVector) 2025-02-19 21:32:21 +01:00
Magnus Hellströmer 8a4d7c6cf2 Fixed compiler warning for overloaded qHash() 2025-02-19 21:32:21 +01:00
Magnus Hellströmer bae85624a0 Bumped git-versions in cmake for catch and googletest 2025-02-19 21:32:21 +01:00
Magnus Hellströmer 540a248d72 Bumped git-versions in cmake for pugixml and singleapplication 2025-02-19 21:32:21 +01:00
Magnus Hellströmer d07214ab92 Migrated from Qt5(Kf5 to Qt6/Kf6 in cmake-files 2025-02-19 21:32:21 +01:00
140 changed files with 5769 additions and 6719 deletions
+23 -29
View File
@@ -16,7 +16,7 @@
include(cmake/hoto_update_cmake_message.cmake) include(cmake/hoto_update_cmake_message.cmake)
cmake_minimum_required(VERSION 3.14...3.19 FATAL_ERROR) cmake_minimum_required(VERSION 3.21.1 FATAL_ERROR)
project(qelectrotech project(qelectrotech
VERSION 0.9.0 VERSION 0.9.0
@@ -27,6 +27,13 @@ project(qelectrotech
include(cmake/copyright_message.cmake) include(cmake/copyright_message.cmake)
set(QET_DIR ${PROJECT_SOURCE_DIR}) set(QET_DIR ${PROJECT_SOURCE_DIR})
include(cmake/qet_compilation_vars.cmake)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
find_package(Qt6 REQUIRED COMPONENTS ${QET_COMPONENTS})
qt_standard_project_setup()
# Add sub directories # Add sub directories
option(PACKAGE_TESTS "Build the tests" ON) option(PACKAGE_TESTS "Build the tests" ON)
@@ -43,42 +50,17 @@ include(cmake/git_last_commit_sha.cmake)
include(cmake/fetch_kdeaddons.cmake) include(cmake/fetch_kdeaddons.cmake)
include(cmake/fetch_singleapplication.cmake) include(cmake/fetch_singleapplication.cmake)
include(cmake/fetch_pugixml.cmake) include(cmake/fetch_pugixml.cmake)
include(cmake/qet_compilation_vars.cmake)
set(CMAKE_INCLUDE_CURRENT_DIR ON) set(CMAKE_INCLUDE_CURRENT_DIR ON)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON) set(CMAKE_AUTORCC ON)
set(CMAKE_AUTOUIC ON)
SET(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
find_package(
QT
NAMES
Qt6
Qt5
COMPONENTS
${QET_COMPONENTS}
REQUIRED
)
find_package(
Qt${QT_VERSION_MAJOR}
COMPONENTS
${QET_COMPONENTS}
REQUIRED)
set(CMAKE_AUTOUIC_SEARCH_PATHS ${QET_DIR}/sources/ui) set(CMAKE_AUTOUIC_SEARCH_PATHS ${QET_DIR}/sources/ui)
qt5_create_translation(QM_FILES ${CMAKE_SOURCE_DIR} ${TS_FILES})
set_source_files_properties(${TS_FILES} PROPERTIES OUTPUT_LOCATION "${QET_DIR}/lang")
qt5_add_translation(QM_FILES ${TS_FILES})
# als laatse # als laatse
include(cmake/define_definitions.cmake) include(cmake/define_definitions.cmake)
add_executable( qt_add_executable(
${PROJECT_NAME} ${PROJECT_NAME}
${QET_RES_FILES} ${QET_RES_FILES}
${QET_SRC_FILES} ${QET_SRC_FILES}
@@ -86,13 +68,24 @@ add_executable(
${QET_DIR}/qelectrotech.qrc ${QET_DIR}/qelectrotech.qrc
) )
if(QMFILES_AS_RESOURCE)
qt_add_translations(${PROJECT_NAME} TS_FILES ${TS_FILES} RESOURCE_PREFIX "/lang")
else()
qt_create_translation(QM_FILES ${CMAKE_SOURCE_DIR} ${TS_FILES})
set_source_files_properties(${TS_FILES} PROPERTIES OUTPUT_LOCATION "${QET_DIR}/lang")
qt_add_translation(QM_FILES ${TS_FILES})
endif()
find_package(SQLite3 REQUIRED)
target_link_libraries( target_link_libraries(
${PROJECT_NAME} ${PROJECT_NAME}
PUBLIC PUBLIC
PRIVATE PRIVATE
pugixml::pugixml pugixml::pugixml
SingleApplication::SingleApplication SingleApplication::SingleApplication
${KF5_PRIVATE_LIBRARIES} SQLite::SQLite3
${KF6_PRIVATE_LIBRARIES}
${QET_PRIVATE_LIBRARIES} ${QET_PRIVATE_LIBRARIES}
) )
@@ -149,6 +142,7 @@ install(FILES LICENSE ELEMENTS.LICENSE CREDIT README ChangeLog DESTINATION share
install(FILES misc/org.qelectrotech.qelectrotech.desktop DESTINATION share/applications) install(FILES misc/org.qelectrotech.qelectrotech.desktop DESTINATION share/applications)
install(FILES misc/qelectrotech.xml DESTINATION share/mime/packages) install(FILES misc/qelectrotech.xml DESTINATION share/mime/packages)
install(FILES misc/qelectrotech.appdata.xml DESTINATION ${QET_APPDATA_PATH}) install(FILES misc/qelectrotech.appdata.xml DESTINATION ${QET_APPDATA_PATH})
if(NOT QMFILES_AS_RESOURCE)
install(FILES ${QM_FILES} DESTINATION ${QET_LANG_PATH}) install(FILES ${QM_FILES} DESTINATION ${QET_LANG_PATH})
endif()
endif() endif()
+10 -5
View File
@@ -62,10 +62,15 @@ message("PROJECT_SOURCE_DIR :" ${PROJECT_SOURCE_DIR})
message("QET_DIR :" ${QET_DIR}) message("QET_DIR :" ${QET_DIR})
message("GIT_COMMIT_SHA :" ${GIT_COMMIT_SHA}) message("GIT_COMMIT_SHA :" ${GIT_COMMIT_SHA})
if(BUILD_WITH_KF5) if(BUILD_WITH_KF6 AND BUILD_KF6)
message("KF5_GIT_TAG :" ${KF5_GIT_TAG}) message("KF6_GIT_TAG :" ${KF6_GIT_TAG})
else() endif()
add_definitions(-DBUILD_WITHOUT_KF5) if(NOT BUILD_WITH_KF6)
add_definitions(-DBUILD_WITHOUT_KF6)
endif() endif()
message("QET_COMPONENTS :" ${QET_COMPONENTS}) message("QET_COMPONENTS :" ${QET_COMPONENTS})
message("QT_VERSION_MAJOR :" ${QT_VERSION_MAJOR}) message("Qt version :" ${Qt6_VERSION})
if(QMFILES_AS_RESOURCE)
add_definitions(-DQMFILES_AS_RESOURCE)
endif()
+5 -2
View File
@@ -31,5 +31,8 @@ add_definitions(-DQT_MESSAGELOGCONTEXT)
# In order to do so, uncomment the following line. # In order to do so, uncomment the following line.
#add_definitions(-DTODO_LIST) #add_definitions(-DTODO_LIST)
# Build with KF5 # Build with KF6
option(BUILD_WITH_KF5 "Build with KF5" ON) option(BUILD_WITH_KF6 "Build with KF6" ON)
# Use translations as a Qt resource
option(QMFILES_AS_RESOURCE "Use .qm files as Qt resource" ON)
+29 -36
View File
@@ -14,54 +14,47 @@
# You should have received a copy of the GNU General Public License # You should have received a copy of the GNU General Public License
# along with QElectroTech. If not, see <http://www.gnu.org/licenses/>. # along with QElectroTech. If not, see <http://www.gnu.org/licenses/>.
message(" - fetch_kdeaddons") message(STATUS "fetch_kdeaddons")
if(DEFINED BUILD_WITH_KF5) if(BUILD_WITH_KF6)
option(BUILD_KF6 "Build KF6 libraries, use system ones otherwise" OFF)
block(PROPAGATE KF6_GIT_TAG)
set(BUILD_TESTING OFF)
set(KDE_SKIP_TEST_SETTINGS ON)
set(BUILD_DESIGNERPLUGIN OFF)
set(KCOREADDONS_USE_QML OFF)
set(BUILD_QCH OFF)
set(BUILD_SHARED_LIBS OFF)
find_package(ECM 6.8.0 REQUIRED NO_MODULE)
list(APPEND CMAKE_MODULE_PATH ${ECM_MODULE_PATH})
if(BUILD_KF6)
Include(FetchContent) Include(FetchContent)
option(BUILD_KF5 "Build KF5 libraries, use system ones otherwise" YES) if(NOT DEFINED KF6_GIT_TAG)
set(KF6_GIT_TAG v6.8.0)
if(BUILD_KF5)
if(NOT DEFINED KF5_GIT_TAG)
#https://qelectrotech.org/forum/viewtopic.php?pid=13924#p13924
set(KF5_GIT_TAG v5.77.0)
endif() endif()
# Fix stop the run autotests of kcoreaddons
# see
# https://invent.kde.org/frameworks/kcoreaddons/-/blob/master/CMakeLists.txt#L98
# issue:
# CMake Error at /usr/share/ECM/modules/ECMAddTests.cmake:89 (add_executable):
# Cannot find source file:
# see
# https://qelectrotech.org/forum/viewtopic.php?pid=13929#p13929
set(KDE_SKIP_TEST_SETTINGS "TRUE")
set(BUILD_TESTING "0")
FetchContent_Declare(
ecm
GIT_REPOSITORY https://invent.kde.org/frameworks/extra-cmake-modules.git
GIT_TAG ${KF5_GIT_TAG})
FetchContent_MakeAvailable(ecm)
FetchContent_Declare( FetchContent_Declare(
kcoreaddons kcoreaddons
GIT_REPOSITORY https://invent.kde.org/frameworks/kcoreaddons.git GIT_REPOSITORY https://invent.kde.org/frameworks/kcoreaddons.git
GIT_TAG ${KF5_GIT_TAG}) GIT_TAG ${KF6_GIT_TAG})
FetchContent_MakeAvailable(kcoreaddons) FetchContent_MakeAvailable(kcoreaddons)
get_target_property(kca_version KF6::CoreAddons VERSION)
FetchContent_Declare(
kwidgetsaddons
GIT_REPOSITORY https://invent.kde.org/frameworks/kwidgetsaddons.git
GIT_TAG ${KF5_GIT_TAG})
FetchContent_MakeAvailable(kwidgetsaddons)
else() else()
find_package(KF5CoreAddons REQUIRED) find_package(KF6CoreAddons REQUIRED)
find_package(KF5WidgetsAddons REQUIRED) set(kca_version ${KF6CoreAddons_VERSION})
endif() endif()
set(KF5_PRIVATE_LIBRARIES get_target_property(kwa_type KF6::CoreAddons TYPE)
KF5::WidgetsAddons
KF5::CoreAddons message(NOTICE "ecm version : " ${ECM_VERSION})
message(NOTICE "kcoreaddons library : " ${kca_type})
message(NOTICE "kcoreaddons version : " ${kca_version})
endblock()
set(KF6_PRIVATE_LIBRARIES
KF6::CoreAddons
) )
endif() endif()
+1 -1
View File
@@ -25,7 +25,7 @@ if(BUILD_PUGIXML)
FetchContent_Declare( FetchContent_Declare(
pugixml pugixml
GIT_REPOSITORY https://github.com/zeux/pugixml.git GIT_REPOSITORY https://github.com/zeux/pugixml.git
GIT_TAG v1.11.4) GIT_TAG v1.14)
FetchContent_MakeAvailable(pugixml) FetchContent_MakeAvailable(pugixml)
else() else()
+1 -1
View File
@@ -26,6 +26,6 @@ Include(FetchContent)
FetchContent_Declare( FetchContent_Declare(
SingleApplication SingleApplication
GIT_REPOSITORY https://github.com/itay-grudev/SingleApplication.git GIT_REPOSITORY https://github.com/itay-grudev/SingleApplication.git
GIT_TAG v3.2.0) GIT_TAG v3.5.1)
FetchContent_MakeAvailable(SingleApplication) FetchContent_MakeAvailable(SingleApplication)
+9 -1
View File
@@ -17,6 +17,8 @@
message(" - qet_compilation_vars") message(" - qet_compilation_vars")
set(QET_COMPONENTS set(QET_COMPONENTS
Core
Gui
LinguistTools LinguistTools
PrintSupport PrintSupport
Xml Xml
@@ -109,6 +111,12 @@ set(QET_SRC_FILES
${QET_DIR}/sources/borderproperties.h ${QET_DIR}/sources/borderproperties.h
${QET_DIR}/sources/bordertitleblock.cpp ${QET_DIR}/sources/bordertitleblock.cpp
${QET_DIR}/sources/bordertitleblock.h ${QET_DIR}/sources/bordertitleblock.h
${QET_DIR}/sources/colorbutton.cpp
${QET_DIR}/sources/colorbutton.h
${QET_DIR}/sources/colorcombobox.cpp
${QET_DIR}/sources/colorcombobox.h
${QET_DIR}/sources/colorcomboboxdelegate.cpp
${QET_DIR}/sources/colorcomboboxdelegate.h
${QET_DIR}/sources/conductorautonumerotation.cpp ${QET_DIR}/sources/conductorautonumerotation.cpp
${QET_DIR}/sources/conductorautonumerotation.h ${QET_DIR}/sources/conductorautonumerotation.h
${QET_DIR}/sources/conductornumexport.cpp ${QET_DIR}/sources/conductornumexport.cpp
@@ -710,7 +718,6 @@ set(QET_SRC_FILES
set(TS_FILES set(TS_FILES
${QET_DIR}/lang/qet_ar.ts ${QET_DIR}/lang/qet_ar.ts
${QET_DIR}/lang/qet_be.ts
${QET_DIR}/lang/qet_ca.ts ${QET_DIR}/lang/qet_ca.ts
${QET_DIR}/lang/qet_cs.ts ${QET_DIR}/lang/qet_cs.ts
${QET_DIR}/lang/qet_da.ts ${QET_DIR}/lang/qet_da.ts
@@ -727,6 +734,7 @@ set(TS_FILES
${QET_DIR}/lang/qet_mn.ts ${QET_DIR}/lang/qet_mn.ts
${QET_DIR}/lang/qet_nb.ts ${QET_DIR}/lang/qet_nb.ts
${QET_DIR}/lang/qet_nl.ts ${QET_DIR}/lang/qet_nl.ts
${QET_DIR}/lang/qet_nl_BE.ts
${QET_DIR}/lang/qet_no.ts ${QET_DIR}/lang/qet_no.ts
${QET_DIR}/lang/qet_pl.ts ${QET_DIR}/lang/qet_pl.ts
${QET_DIR}/lang/qet_pt.ts ${QET_DIR}/lang/qet_pt.ts
+1 -1
View File
@@ -29,4 +29,4 @@ add_definitions(-DQET_ALLOW_OVERRIDE_CD_OPTION)
add_definitions(-DQET_ALLOW_OVERRIDE_DD_OPTION) add_definitions(-DQET_ALLOW_OVERRIDE_DD_OPTION)
#comment the line below to disable the project database export #comment the line below to disable the project database export
#add_definitions(-DQET_EXPORT_PROJECT_DB) #error Todo add_definitions(-DQET_EXPORT_PROJECT_DB)
+158 -196
View File
File diff suppressed because it is too large Load Diff
+158 -196
View File
File diff suppressed because it is too large Load Diff
+158 -196
View File
File diff suppressed because it is too large Load Diff
+158 -196
View File
File diff suppressed because it is too large Load Diff
BIN
View File
Binary file not shown.
+159 -197
View File
File diff suppressed because it is too large Load Diff
+158 -196
View File
File diff suppressed because it is too large Load Diff
BIN
View File
Binary file not shown.
+158 -196
View File
File diff suppressed because it is too large Load Diff
+158 -196
View File
File diff suppressed because it is too large Load Diff
BIN
View File
Binary file not shown.
+163 -201
View File
File diff suppressed because it is too large Load Diff
+158 -196
View File
File diff suppressed because it is too large Load Diff
+158 -196
View File
File diff suppressed because it is too large Load Diff
+158 -196
View File
File diff suppressed because it is too large Load Diff
+158 -196
View File
File diff suppressed because it is too large Load Diff
+158 -196
View File
File diff suppressed because it is too large Load Diff
+158 -196
View File
File diff suppressed because it is too large Load Diff
BIN
View File
Binary file not shown.
+159 -198
View File
File diff suppressed because it is too large Load Diff
BIN
View File
Binary file not shown.
+158 -196
View File
File diff suppressed because it is too large Load Diff
BIN
View File
Binary file not shown.
+158 -196
View File
File diff suppressed because it is too large Load Diff
+158 -196
View File
File diff suppressed because it is too large Load Diff
+158 -196
View File
File diff suppressed because it is too large Load Diff
+158 -196
View File
File diff suppressed because it is too large Load Diff
+158 -196
View File
File diff suppressed because it is too large Load Diff
+158 -196
View File
File diff suppressed because it is too large Load Diff
+158 -196
View File
File diff suppressed because it is too large Load Diff
+158 -196
View File
File diff suppressed because it is too large Load Diff
+158 -196
View File
File diff suppressed because it is too large Load Diff
+158 -196
View File
File diff suppressed because it is too large Load Diff
+158 -196
View File
File diff suppressed because it is too large Load Diff
+25 -25
View File
@@ -10,37 +10,37 @@ MimeType=application/x-qet-project;application/x-qet-element;application/x-qet-t
Categories=Graphics;Qt;VectorGraphics;Science;Electricity;Engineering; Categories=Graphics;Qt;VectorGraphics;Science;Electricity;Engineering;
Keywords=Graphics;Science;Electricity;Engineering; Keywords=Graphics;Science;Electricity;Engineering;
Comment=Edit electrical diagrams. Comment=Edit electrical diagrams.
Comment[ar]=تحرير مخططات كهربائية
Comment[be]=Bewerken elektrisch schema.
Comment[ca]=Editar esquemes elèctrics.
Comment[cs]=Editor výkresů elektrických obvodů
Comment[da]=Rediger elektriske diagrammer.
Comment[de]=Elektroschaltpläne erstellen und bearbeiten. Comment[de]=Elektroschaltpläne erstellen und bearbeiten.
Comment[el]=Επεξεργασία ηλεκτρικών διαγραμμάτων
Comment[es]=Editar esquemas eléctricos
Comment[fr]=Éditer des schémas électriques. Comment[fr]=Éditer des schémas électriques.
Comment[hr]=Uredi elektro sheme Comment[ar]=تحرير مخططات كهربائية
Comment[it]=Disegnare schemi elettrici Comment[es]=Editar esquemas eléctricos
Comment[ja]=電気回路図の編集。
Comment[nl]=Bewerken bedradingsdiagrammen.
Comment[pl]=Edycja schematów elektrycznych
Comment[pt]=Criar esquemas eléctricos.
Comment[ru]=Создание и редактирование электрических схем. Comment[ru]=Создание и редактирование электрических схем.
Comment[ca]=Editar esquemes elèctrics.
Comment[pt]=Criar esquemas eléctricos.
Comment[cs]=Editor výkresů elektrických obvodů
Comment[pl]=Edycja schematów elektrycznych
Comment[it]=Disegnare schemi elettrici
Comment[hr]=Uredi elektro sheme
Comment[el]=Επεξεργασία ηλεκτρικών διαγραμμάτων
Comment[nl]=Bewerken bedradingsdiagrammen.
Comment[be]=Bewerken elektrisch schema.
Comment[da]=Rediger elektriske diagrammer.
Comment[ja]=電気回路図の編集。
Comment[sk]=Úprava elektrických schém. Comment[sk]=Úprava elektrických schém.
GenericName=Electrical diagram editor GenericName=Electrical diagram editor
GenericName[ar]=مُحرّر مخططات كهربائية
GenericName[be]=Elektrische schema editor
GenericName[cs]=Editor výkresů elektrických obvodů
GenericName[da]=Elektrisk diagram redigering
GenericName[de]=Schaltplaneditor GenericName[de]=Schaltplaneditor
GenericName[el]=Επεξεργαστής ηλεκτρικών διαγραμμάτων
GenericName[es]=Editor de esquemas eléctricos
GenericName[fr]=Éditeur de schémas électriques GenericName[fr]=Éditeur de schémas électriques
GenericName[hr]=Editor elektro sheme GenericName[ar]=مُحرّر مخططات كهربائية
GenericName[it]=Programma per disegnare schemi elettrici GenericName[es]=Editor de esquemas eléctricos
GenericName[ja]=電気回路図エディタ
GenericName[nl]=Elektrische schema editor
GenericName[pl]=Edytor schematów elektrycznych
GenericName[pt]=Editor de esquemas eléctricos.
GenericName[ru]=Редактор электрических схем GenericName[ru]=Редактор электрических схем
GenericName[pt]=Editor de esquemas eléctricos.
GenericName[cs]=Editor výkresů elektrických obvodů
GenericName[pl]=Edytor schematów elektrycznych
GenericName[it]=Programma per disegnare schemi elettrici
GenericName[hr]=Editor elektro sheme
GenericName[el]=Επεξεργαστής ηλεκτρικών διαγραμμάτων
GenericName[nl]=Elektrische schema editor
GenericName[be]=Elektrische schema editor
GenericName[da]=Elektrisk diagram redigering
GenericName[ja]=電気回路図エディタ
GenericName[sk]=Editor elektrických schém GenericName[sk]=Editor elektrických schém
@@ -26,11 +26,8 @@
#include "xmlprojectelementcollectionitem.h" #include "xmlprojectelementcollectionitem.h"
#include <QFutureWatcher> #include <QFutureWatcher>
#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) // ### Qt 6: remove
#include <QtConcurrentMap> #include <QtConcurrentMap>
#else
#include <QtConcurrentRun>
#endif
/** /**
@brief ElementsCollectionModel::ElementsCollectionModel @brief ElementsCollectionModel::ElementsCollectionModel
@@ -296,15 +293,9 @@ void ElementsCollectionModel::loadCollections(bool common_collection,
&QFutureWatcher<void>::finished, &QFutureWatcher<void>::finished,
watcher, watcher,
&QFutureWatcher<void>::deleteLater); &QFutureWatcher<void>::deleteLater);
#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) // ### Qt 6: remove
m_future = QtConcurrent::map(m_items_list_to_setUp, setUpData); m_future = QtConcurrent::map(m_items_list_to_setUp, setUpData);
#else
# if TODO_LIST
# pragma message("@TODO remove code for QT 6 or later")
# endif
qDebug() << "Help code for QT 6 or later"
<< "QtConcurrent::run its backwards now...function, object, args";
#endif
watcher->setFuture(m_future); watcher->setFuture(m_future);
} }
@@ -765,7 +765,7 @@ void ElementsCollectionWidget::search()
} }
//start the search when text have at least 3 letters. //start the search when text have at least 3 letters.
if (text.count() < 3) { if (text.length() < 3) {
return; return;
} }
@@ -805,15 +805,15 @@ bool ElementsLocation::setXml(const QDomDocument &xml_document) const
qDebug() << "Help code for QT 6 or later"; qDebug() << "Help code for QT 6 or later";
QString path_ = collectionPath(false); QString path_ = collectionPath(false);
QRegularExpression rx("^(.*)/(.*\\.elmt)$"); QRegularExpression rx(QRegularExpression::anchoredPattern("(.*)/(.*\\.elmt)"));
QRegularExpressionMatch match = rx.match(path_);
if (rx.exactMatch(path_)) if (match.hasMatch())
{ {
return project() return project()
->embeddedElementCollection() ->embeddedElementCollection()
->addElementDefinition( ->addElementDefinition(
rx.cap(1), match.captured(1),
rx.cap(2), match.captured(2),
xml_document.documentElement()); xml_document.documentElement());
} }
else else
@@ -46,64 +46,125 @@ XmlElementCollection::XmlElementCollection(QETProject *project) :
collection.appendChild(import); collection.appendChild(import);
NamesList names; NamesList names;
const QChar chinese_data[4] ={ #if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) // ### Qt 6: remove
QChar(0x5BFC), QChar(0x5165), QChar(0x5143), QChar(0x4EF6)};
const QChar greek_data[18] = {
QChar(0x0395), QChar(0x03b9), QChar(0x03c3), QChar(0x03b7),
QChar(0x03b3), QChar(0x03bc), QChar(0x03ad), QChar(0x03bd),
QChar(0x03b1), QChar(0x0020), QChar(0x03c3), QChar(0x03c4),
QChar(0x03bf), QChar(0x03b9), QChar(0x03c7), QChar(0x03b5),
QChar(0x03af), QChar(0x03b1)};
const QChar japanese_data[10] = {
QChar(0x30A4), QChar(0x30F3), QChar(0x30D0), QChar(0x30FC),
QChar(0x30C8), QChar(0x3055), QChar(0x308C), QChar(0x305F),
QChar(0x8981), QChar(0x7D20)};
const QChar russian_data[24] = { const QChar russian_data[24] = {
QChar(0x0418), QChar(0x043C), QChar(0x043F), QChar(0x043E), 0x0418, 0x043C, 0x043F, 0x043E, 0x0440, 0x0442, 0x0438, 0x0440,
QChar(0x0440), QChar(0x0442), QChar(0x0438), QChar(0x0440), 0x043E, 0x0432, 0x0430, 0x043D, 0x043D, 0x044B, 0x0435, 0x0020,
QChar(0x043E), QChar(0x0432), QChar(0x0430), QChar(0x043D), 0x044D, 0x043B, 0x0435, 0x043C, 0x0435, 0x043D, 0x0442, 0x044B};
QChar(0x043D), QChar(0x044B), QChar(0x0435), QChar(0x0020), const QChar greek_data[18] = {
QChar(0x044D), QChar(0x043B), QChar(0x0435), QChar(0x043C), 0x0395,
QChar(0x0435), QChar(0x043D), QChar(0x0442), QChar(0x044B)}; 0x03b9,
0x03c3,
0x03b7,
0x03b3,
0x03bc,
0x03ad,
0x03bd,
0x03b1,
0x0020,
0x03c3,
0x03c4,
0x03bf,
0x03b9,
0x03c7,
0x03b5,
0x03af,
0x03b1};
const QChar turkish_data[12] = { const QChar turkish_data[12] = {
QChar(0x0130), QChar(0x0074), QChar(0x0068), QChar(0x0061), 0x0130,
QChar(0x006C), QChar(0x0020), QChar(0x00F6), QChar(0x011F), 0x0074,
QChar(0x0065), QChar(0x006C), QChar(0x0065), QChar(0x0072)}; 0x0068,
0x0061,
0x006C,
0x0020,
0x00F6,
0x011F,
0x0065,
0x006C,
0x0065,
0x0072};
const QChar ukrainian_data[20] = { const QChar ukrainian_data[20] = {
QChar(0x0406), QChar(0x043c), QChar(0x043f), QChar(0x043e), 0x0406,
QChar(0x0440), QChar(0x0442), QChar(0x043e), QChar(0x0432), 0x043c,
QChar(0x0430), QChar(0x043d), QChar(0x0456), QChar(0x0020), 0x043f,
QChar(0x0435), QChar(0x043b), QChar(0x0435), QChar(0x043c), 0x043e,
QChar(0x0435), QChar(0x043d), QChar(0x0442), QChar(0x0438)}; 0x0440,
0x0442,
0x043e,
0x0432,
0x0430,
0x043d,
0x0456,
0x0020,
0x0435,
0x043b,
0x0435,
0x043c,
0x0435,
0x043d,
0x0442,
0x0438};
const QChar japanese_data[10] = {
0x30A4,
0x30F3,
0x30D0,
0x30FC,
0x30C8,
0x3055,
0x308C,
0x305F,
0x8981,
0x7D20};
names.addName("ca", "Elements importats"); names.addName("ca", "Elements importats");
names.addName("cs", "Zavedené prvky"); names.addName("cs", "Zavedené prvky");
names.addName("da", "Importerede elementer"); names.addName("da", "Importerede elementer");
names.addName("de", "Importierte Elemente"); names.addName("de", "Importierte elemente");
names.addName("el", QString(greek_data, 18)); names.addName("el", QString(greek_data, 18));
//names.addName("el", "Εισηγμένα στοιχεία);
names.addName("en", "Imported elements"); names.addName("en", "Imported elements");
names.addName("es", "Elementos importados"); names.addName("es", "Elementos importados");
names.addName("fr", "Éléments importés"); names.addName("fr", "Éléments importés");
names.addName("hr", "Uvezeni elementi"); names.addName("hr", "Uvezeni elementi");
names.addName("it", "Elementi importati"); names.addName("it", "Elementi importati");
names.addName("ja", QString(japanese_data, 10)); names.addName("ja", QString(japanese_data, 10));
//names.addName("ja", "インバートされた要素");
names.addName("nl", "Elementen geïmporteerd");
names.addName("nl_BE", "Elementen geïmporteerd"); names.addName("nl_BE", "Elementen geïmporteerd");
names.addName("nl", "Elementen geïmporteerd");
names.addName("pl", "Elementy importowane"); names.addName("pl", "Elementy importowane");
names.addName("pt", "Elementos importados"); names.addName("pt_BR", "elementos importados");
names.addName("pt_BR", "Elementos importados"); names.addName("pt", "elementos importados");
names.addName("ro", "Elemente importate"); names.addName("ro", "Elemente importate");
names.addName("ru", QString(russian_data, 24)); names.addName("ru", QString(russian_data, 24));
//names.addName("ru", "Импортированные элементы");
names.addName("sl", "Uvoženi elementi"); names.addName("sl", "Uvoženi elementi");
names.addName("sv", "Importerade element");
names.addName("tr", QString(turkish_data, 12)); names.addName("tr", QString(turkish_data, 12));
//names.addName("tr", "İthal öğeler");
names.addName("uk", QString(ukrainian_data, 20)); names.addName("uk", QString(ukrainian_data, 20));
//names.addName("uk", "Імпортовані елементи"); #else
names.addName("zh", QString(chinese_data, 4)); # if TODO_LIST
//names.addName("zh", "导入元件"); # pragma message("@TODO remove code for QT 6 or later")
# endif
qDebug() << "Help code for QT 6 or later";
names.addName("ca", "Elements importats");
names.addName("cs", "Zavedené prvky");
names.addName("da", "Importerede elementer");
names.addName("de", "Importierte elemente");
names.addName("el", "Εισηγμένα στοιχεία");
names.addName("en", "Imported elements");
names.addName("es", "Elementos importados");
names.addName("fr", "Éléments importés");
names.addName("hr", "Uvezeni elementi");
names.addName("it", "Elementi importati");
names.addName("ja", "インバートされた要素");
names.addName("nl_BE", "Elementen geïmporteerd");
names.addName("nl", "Elementen geïmporteerd");
names.addName("pl", "Elementy importowane");
names.addName("pt_BR", "elementos importados");
names.addName("pt", "elementos importados");
names.addName("ro", "Elemente importate");
names.addName("ru", "Импортированные элементы");
names.addName("sl", "Uvoženi elementi");
names.addName("tr", "İthal öğeler");
names.addName("uk", "Імпортовані елементи");
#endif
import.appendChild(names.toXml(m_dom_document)); import.appendChild(names.toXml(m_dom_document));
} }
@@ -17,6 +17,7 @@
*/ */
#include "terminalstripdrawer.h" #include "terminalstripdrawer.h"
#include <QPainter> #include <QPainter>
#include <QHash>
namespace TerminalStripDrawer { namespace TerminalStripDrawer {
@@ -202,7 +203,7 @@ void TerminalStripDrawer::paint(QPainter *painter)
painter->restore(); painter->restore();
//Draw the bridges //Draw the bridges
for (const auto &points_ : qAsConst(bridges_anchor_points)) for (const auto &points_ : std::as_const(bridges_anchor_points))
{ {
painter->save(); painter->save();
auto pen_{painter->pen()}; auto pen_{painter->pen()};
@@ -126,7 +126,7 @@ void RemoveTerminalFromStripCommand::redo()
if (m_strip) if (m_strip)
{ {
QVector<QSharedPointer<RealTerminal>> real_t; QVector<QSharedPointer<RealTerminal>> real_t;
for (const auto &real_t_vector : qAsConst(m_terminals)) { for (const auto &real_t_vector : std::as_const(m_terminals)) {
real_t.append(real_t_vector); real_t.append(real_t_vector);
} }
@@ -68,7 +68,7 @@ void UnGroupTerminalsCommand::undo()
m_terminal_strip->groupTerminals(key, m_physical_real_H.value(key)); m_terminal_strip->groupTerminals(key, m_physical_real_H.value(key));
} }
//Second, set level. //Second, set level.
for (const auto &pair : qAsConst(m_real_t_level)) { for (const auto &pair : std::as_const(m_real_t_level)) {
m_terminal_strip->setLevel(pair.first, pair.second); m_terminal_strip->setLevel(pair.first, pair.second);
} }
} }
@@ -78,7 +78,7 @@ void UnGroupTerminalsCommand::redo()
{ {
if (m_terminal_strip) if (m_terminal_strip)
{ {
for (const auto &value : qAsConst(m_physical_real_H)) { for (const auto &value : std::as_const(m_physical_real_H)) {
m_terminal_strip->unGroupTerminals(value); m_terminal_strip->unGroupTerminals(value);
} }
} }
+1 -1
View File
@@ -131,7 +131,7 @@ bool PhysicalTerminal::setLevelOf(const QSharedPointer<RealTerminal> &terminal,
if (i >= 0) if (i >= 0)
{ {
#if QT_VERSION >= QT_VERSION_CHECK(5,14,0) #if QT_VERSION >= QT_VERSION_CHECK(5,14,0)
m_real_terminal.swapItemsAt(i, std::min(level, m_real_terminal.size()-1)); m_real_terminal.swapItemsAt(i, std::min((qsizetype)level, m_real_terminal.size()-1));
#else #else
auto j = std::min(level, m_real_terminal.size()-1); auto j = std::min(level, m_real_terminal.size()-1);
std::swap(m_real_terminal.begin()[i], m_real_terminal.begin()[j]); std::swap(m_real_terminal.begin()[i], m_real_terminal.begin()[j]);
+5 -5
View File
@@ -466,7 +466,7 @@ QSharedPointer<RealTerminal> TerminalStrip::realTerminalForUuid(const QUuid &uui
QVector<QSharedPointer<RealTerminal>> TerminalStrip::realTerminals() const QVector<QSharedPointer<RealTerminal>> TerminalStrip::realTerminals() const
{ {
QVector<QSharedPointer<RealTerminal>> vector_; QVector<QSharedPointer<RealTerminal>> vector_;
for (const auto &phy : qAsConst(m_physical_terminals)) { for (const auto &phy : std::as_const(m_physical_terminals)) {
vector_.append(phy->realTerminals()); vector_.append(phy->realTerminals());
} }
return vector_; return vector_;
@@ -639,7 +639,7 @@ bool TerminalStrip::isBridgeable(const QVector<QSharedPointer<RealTerminal>> &re
// Get the physical terminal and pos // Get the physical terminal and pos
auto first_physical_terminal = first_real_terminal->physicalTerminal(); auto first_physical_terminal = first_real_terminal->physicalTerminal();
QVector<shared_physical_terminal> physical_vector{first_physical_terminal}; QVector<shared_physical_terminal> physical_vector{first_physical_terminal};
QVector<int> pos_vector{m_physical_terminals.indexOf(first_physical_terminal)}; QVector<qsizetype> pos_vector{m_physical_terminals.indexOf(first_physical_terminal)};
auto bridge_ = isBridged(first_real_terminal); auto bridge_ = isBridged(first_real_terminal);
//bool to know at the end of this function if at least one terminal is not bridged //bool to know at the end of this function if at least one terminal is not bridged
@@ -856,7 +856,7 @@ QSharedPointer<TerminalStripBridge> TerminalStrip::isBridged(const QSharedPointe
{ {
if (real_terminal) if (real_terminal)
{ {
for (const auto &bridge_ : qAsConst(m_bridge)) { for (const auto &bridge_ : std::as_const(m_bridge)) {
if (bridge_->realTerminals().contains(real_terminal)) if (bridge_->realTerminals().contains(real_terminal))
return bridge_; return bridge_;
} }
@@ -983,7 +983,7 @@ QDomElement TerminalStrip::toXml(QDomDocument &parent_document)
} }
root_elmt.appendChild(xml_layout); root_elmt.appendChild(xml_layout);
for (const auto &bridge_ : qAsConst(m_bridge)) { for (const auto &bridge_ : std::as_const(m_bridge)) {
root_elmt.appendChild(bridge_->toXml(parent_document)); root_elmt.appendChild(bridge_->toXml(parent_document));
} }
@@ -1024,7 +1024,7 @@ bool TerminalStrip::fromXml(QDomElement &xml_element)
for (auto &xml_real : QETXML::findInDomElement(xml_physical, RealTerminal::xmlTagName())) for (auto &xml_real : QETXML::findInDomElement(xml_physical, RealTerminal::xmlTagName()))
{ {
const auto uuid_ = QUuid(xml_real.attribute(QStringLiteral("element_uuid"))); const auto uuid_ = QUuid(xml_real.attribute(QStringLiteral("element_uuid")));
for (auto terminal_elmt : qAsConst(free_terminals)) for (auto terminal_elmt : std::as_const(free_terminals))
{ {
if (terminal_elmt->uuid() == uuid_) if (terminal_elmt->uuid() == uuid_)
{ {
@@ -85,7 +85,7 @@ QDomElement TerminalStripBridge::toXml(QDomDocument &parent_document) const
root_elmt.setAttribute(QStringLiteral("color"), m_color.name()); root_elmt.setAttribute(QStringLiteral("color"), m_color.name());
auto terminals_elmt = parent_document.createElement(QStringLiteral("real_terminals")); auto terminals_elmt = parent_document.createElement(QStringLiteral("real_terminals"));
for (const auto &real_t : qAsConst(m_real_terminals)) for (const auto &real_t : std::as_const(m_real_terminals))
{ {
if (real_t) if (real_t)
{ {
@@ -106,7 +106,7 @@ void TerminalStripBridge::fromXml(const QDomElement &dom_element)
} }
m_uuid = QUuid(dom_element.attribute(QStringLiteral("uuid"), m_uuid.toString())); m_uuid = QUuid(dom_element.attribute(QStringLiteral("uuid"), m_uuid.toString()));
m_color.setNamedColor(dom_element.attribute(QStringLiteral("color"))); m_color = QColor::fromString(dom_element.attribute(QStringLiteral("color")));
const auto real_t_vector = QETXML::subChild(dom_element, const auto real_t_vector = QETXML::subChild(dom_element,
QStringLiteral("real_terminals"), QStringLiteral("real_terminals"),
@@ -69,7 +69,7 @@
</widget> </widget>
</item> </item>
<item row="12" column="1" colspan="2"> <item row="12" column="1" colspan="2">
<widget class="KColorCombo" name="m_bridge_color_cb"/> <widget class="ColorComboBox" name="m_bridge_color_cb"/>
</item> </item>
<item row="5" column="0"> <item row="5" column="0">
<widget class="QLabel" name="label_6"> <widget class="QLabel" name="label_6">
@@ -323,9 +323,9 @@
</widget> </widget>
<customwidgets> <customwidgets>
<customwidget> <customwidget>
<class>KColorCombo</class> <class>ColorComboBox</class>
<extends>QComboBox</extends> <extends>QComboBox</extends>
<header>kcolorcombo.h</header> <header>../../colorcombobox.h</header>
</customwidget> </customwidget>
</customwidgets> </customwidgets>
<resources> <resources>
@@ -535,7 +535,7 @@ modelRealTerminalData TerminalStripModel::dataAtRow(int row) const
else else
{ {
auto current_row = 0; auto current_row = 0;
for (const auto &physical_data : qAsConst(m_physical_data)) for (const auto &physical_data : std::as_const(m_physical_data))
{ {
for (const auto &real_data : physical_data.real_data) for (const auto &real_data : physical_data.real_data)
{ {
@@ -567,7 +567,7 @@ void TerminalStripModel::replaceDataAtRow(modelRealTerminalData data, int row)
auto current_row = 0; auto current_row = 0;
auto current_physical = 0; auto current_physical = 0;
for (const auto &physical_data : qAsConst(m_physical_data)) for (const auto &physical_data : std::as_const(m_physical_data))
{ {
auto current_real = 0; auto current_real = 0;
for (int i=0 ; i<physical_data.real_data.count() ; ++i) for (int i=0 ; i<physical_data.real_data.count() ; ++i)
@@ -606,7 +606,7 @@ modelPhysicalTerminalData TerminalStripModel::physicalDataAtIndex(int index) con
int current_phy = -1; int current_phy = -1;
bool match_ = false; bool match_ = false;
for (const auto &ptd_ : qAsConst(m_physical_data)) for (const auto &ptd_ : std::as_const(m_physical_data))
{ {
current_checked_index += ptd_.real_data.size(); current_checked_index += ptd_.real_data.size();
++current_phy; ++current_phy;
@@ -637,9 +637,9 @@ modelRealTerminalData TerminalStripModel::realDataAtIndex(int index) const
int current_checked_index = -1; int current_checked_index = -1;
for (const auto & ptd_ : qAsConst(m_physical_data)) for (const auto & ptd_ : std::as_const(m_physical_data))
{ {
for (const auto & rtd_ : qAsConst(ptd_.real_data)) { for (const auto & rtd_ : std::as_const(ptd_.real_data)) {
++current_checked_index; ++current_checked_index;
if (current_checked_index == index) { if (current_checked_index == index) {
return rtd_; return rtd_;
@@ -29,12 +29,12 @@
#include "modelTerminalData.h" #include "modelTerminalData.h"
//Code to use QColor as key for QHash //Code to use QColor as key for QHash
inline uint qHash(const QColor &key, uint seed) { inline size_t qHash(const QColor &key, size_t seed) {
return qHash(key.name(), seed); return qHash(key.name(), seed);
} }
//needed to use QPointer<Element> as key of QHash //needed to use QPointer<Element> as key of QHash
inline uint qHash(const QPointer<Element> &key, uint seed) { inline size_t qHash(const QPointer<Element> &key, size_t seed) {
if (key) if (key)
return qHash(key->uuid(), seed); return qHash(key->uuid(), seed);
else else
@@ -60,7 +60,7 @@ void TerminalStripTreeDockWidget::reload()
m_uuid_terminal_H.clear(); m_uuid_terminal_H.clear();
m_uuid_strip_H.clear(); m_uuid_strip_H.clear();
for (const auto &connection_ : qAsConst(m_strip_changed_connection)) { for (const auto &connection_ : std::as_const(m_strip_changed_connection)) {
disconnect(connection_); disconnect(connection_);
} }
m_strip_changed_connection.clear(); m_strip_changed_connection.clear();
@@ -222,7 +222,7 @@ void TerminalStripTreeDockWidget::buildTree()
return a->name() < b->name(); return a->name() < b->name();
}); });
for (const auto &ts : qAsConst(ts_vector)) { for (const auto &ts : std::as_const(ts_vector)) {
addTerminalStrip(ts); addTerminalStrip(ts);
} }
addFreeTerminal(); addFreeTerminal();
@@ -324,7 +324,7 @@ void TerminalStripTreeDockWidget::addFreeTerminal()
auto free_terminal_item = ui->m_tree_view->topLevelItem(1); auto free_terminal_item = ui->m_tree_view->topLevelItem(1);
for (const auto terminal : qAsConst(vector_)) for (const auto terminal : std::as_const(vector_))
{ {
QUuid uuid_ = terminal->uuid(); QUuid uuid_ = terminal->uuid();
QStringList strl{terminal->actualLabel()}; QStringList strl{terminal->actualLabel()};
+2 -2
View File
@@ -57,9 +57,9 @@ bool NumerotationContext::addValue(const QString &type,
const QVariant &value, const QVariant &value,
const int increase, const int increase,
const int initialvalue) { const int initialvalue) {
if (!keyIsAcceptable(type) && !value.canConvert(QVariant::String)) if (!keyIsAcceptable(type) && !value.canConvert<QString>())
return false; return false;
if (keyIsNumber(type) && !value.canConvert(QVariant::Int)) if (keyIsNumber(type) && !value.canConvert<int>())
return false; return false;
QString valuestr = value.toString(); QString valuestr = value.toString();
+3 -5
View File
@@ -55,11 +55,8 @@ BorderTitleBlock::BorderTitleBlock(QObject *parent) :
m_titleblock_template_renderer = new TitleBlockTemplateRenderer(this); m_titleblock_template_renderer = new TitleBlockTemplateRenderer(this);
m_titleblock_template_renderer -> setTitleBlockTemplate(QETApp::defaultTitleBlockTemplate()); m_titleblock_template_renderer -> setTitleBlockTemplate(QETApp::defaultTitleBlockTemplate());
// disable the QPicture-based cache from Qt 4.8 to avoid rendering errors and crashes // disable the QPicture-based cache to avoid rendering errors and crashes
#if QT_VERSION < QT_VERSION_CHECK(4, 8, 0) // ### Qt 6: remove
#else
m_titleblock_template_renderer -> setUseCache(false); m_titleblock_template_renderer -> setUseCache(false);
#endif
// dimensions par defaut du schema // dimensions par defaut du schema
importBorder(BorderProperties()); importBorder(BorderProperties());
@@ -239,6 +236,7 @@ void BorderTitleBlock::borderToXml(QDomElement &xml_elmt) {
xml_elmt.setAttribute("displayrows", rowsAreDisplayed() ? "true" : "false"); xml_elmt.setAttribute("displayrows", rowsAreDisplayed() ? "true" : "false");
// attribut datant de la version 0.1 - laisse pour retrocompatibilite // attribut datant de la version 0.1 - laisse pour retrocompatibilite
// attribute from version 0.1 - leave for backwards-compatibility
xml_elmt.setAttribute("height", QString("%1").arg(diagramHeight())); xml_elmt.setAttribute("height", QString("%1").arg(diagramHeight()));
} }
@@ -949,7 +947,7 @@ QString BorderTitleBlock::incrementLetters(const QString &string) {
last_digit = (char)(string[string.length()-1].unicode()) + 1; last_digit = (char)(string[string.length()-1].unicode()) + 1;
return(first_digits + QString(last_digit)); return(first_digits + QString(last_digit));
} else { } else {
return(incrementLetters(first_digits) + "A"); return(incrementLetters(first_digits) % "A");
} }
} }
} }
+90
View File
@@ -0,0 +1,90 @@
/*
Copyright 2006-2025 The QElectroTech Team
This file is part of QElectroTech.
QElectroTech is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 2 of the License, or
(at your option) any later version.
QElectroTech is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with QElectroTech. If not, see <http://www.gnu.org/licenses/>.
*/
#include "colorbutton.h"
#include <QColorDialog>
#include <QPainter>
/**
@brief ColorButton::ColorButton
Simple constructor
@param parent QObject parent of the ColorButton
*/
ColorButton::ColorButton(QWidget *parent) : QPushButton(parent)
{
connect(this, &QPushButton::clicked, this, &ColorButton::clicked);
}
/**
@brief Getter for current color
@return The current selected color
*/
const QColor ColorButton::color()
{
return m_color;
}
/**
@brief Setter for current color
*/
void ColorButton::setColor(const QColor &color)
{
m_color = color;
update();
}
/**
@brief ColorButton::clicked
Opens a color selection dialog and lets the user select a color.
@param checked Not used
*/
void ColorButton::clicked(bool checked)
{
// Open color selection dialog
auto new_color = QColorDialog::getColor(m_color, this, tr("Select color"), QColorDialog::DontUseNativeDialog);
// Validate user input
if (new_color.isValid()) {
m_color = new_color;
emit changed(new_color);
update();
}
}
/**
@brief ColorButton::paintEvent
Paints a filled rectangle with the current selected color on the button surface.
@param e Paint event context
*/
void ColorButton::paintEvent(QPaintEvent *e) {
QPushButton::paintEvent(e);
// Padding for the color indicator
const int padding_x = 5;
const int padding_y = 5;
QPainter painter(this);
// Get dimensions of the button paint surface
auto r_width = painter.device()->width();
auto r_height = painter.device()->height();
// Paint a rectangle with a margin of 5
auto color_indicator = QRect(padding_x, padding_y, r_width - padding_x * 2, r_height - padding_y * 2);
painter.fillRect(color_indicator, m_color);
}
+53
View File
@@ -0,0 +1,53 @@
/*
Copyright 2006-2025 The QElectroTech Team
This file is part of QElectroTech.
QElectroTech is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 2 of the License, or
(at your option) any later version.
QElectroTech is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with QElectroTech. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef COLORBUTTON_H
#define COLORBUTTON_H
#include <QColor>
#include <QObject>
#include <QPushButton>
#include <Qt>
/**
@brief The ColorButton class
*/
class ColorButton : public QPushButton
{
Q_OBJECT
public:
ColorButton(QWidget * = nullptr);
const QColor color();
void setColor(const QColor &);
public slots:
void clicked(bool = false);
protected:
void paintEvent(QPaintEvent *) override;
signals:
void changed(const QColor &);
private:
/// @brief Current selected color
QColor m_color = Qt::black;
};
#endif
+98
View File
@@ -0,0 +1,98 @@
/*
Copyright 2006-2025 The QElectroTech Team
This file is part of QElectroTech.
QElectroTech is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 2 of the License, or
(at your option) any later version.
QElectroTech is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with QElectroTech. If not, see <http://www.gnu.org/licenses/>.
*/
#include "colorcombobox.h"
#include "colorcomboboxdelegate.h"
#include <QColorDialog>
#include <QPainter>
#include <QStylePainter>
#include <Qt>
/**
@brief ColorComboBox::ColorComboBox
Simple constructor
@param parent QObject parent of the ColorComboBox
*/
ColorComboBox::ColorComboBox(QWidget *parent) : QComboBox(parent)
{
connect(this, &QComboBox::activated, this, &ColorComboBox::colorSelected);
setItemDelegate(new ColorComboBoxDelegate());
}
/**
@brief ColorComboBox::setColors
Sets the colors of the combo box. An item at the top will be added to allow selection
of a custom color.
@param colors Vector of colors to add to the combo box
*/
void ColorComboBox::setColors(const QVector<QColor> &colors)
{
addItem(tr("[Custom color...]"), QColor(Qt::black));
for(auto &color : colors) {
addItem(color.name(), color);
}
}
/**
@brief ColorComboBox::colorSelected
Opens a color selection dialog and lets the user select a color.
@param checked Not used
*/
void ColorComboBox::colorSelected(int index)
{
if (index == 0) {
// Open color selection dialog if custom color is selected
auto new_color = QColorDialog::getColor(itemData(index).value<QColor>(), this, tr("Select color"), QColorDialog::DontUseNativeDialog);
// Validate and emit user input color
if (new_color.isValid()) {
setItemData(index, new_color);
emit activated(new_color);
}
} else {
// Emit color from selected combo box row
emit activated(itemData(index).value<QColor>());
}
}
/**
@brief ColorComboBox::paintEvent
Paints a filled rectangle with the current selected color on the combo box surface.
@param e Paint event context
*/
void ColorComboBox::paintEvent(QPaintEvent *e) {
// Padding for the color indicator
const int padding_x = 5;
const int padding_y = 5;
// Create painter and draw a vanilla combobox
QStylePainter painter(this);
QStyleOptionComboBox opt;
initStyleOption(&opt);
painter.drawComplexControl(QStyle::CC_ComboBox, opt);
// Get dimensions of the combo box paint surface
auto r_width = painter.device()->width();
auto r_height = painter.device()->height();
// Paint a rectangle with a margin
auto color_indicator = QRect(padding_x, padding_y, r_width - padding_x * 2, r_height - padding_y * 2);
painter.fillRect(color_indicator, itemData(currentIndex()).value<QColor>());
}
+49
View File
@@ -0,0 +1,49 @@
/*
Copyright 2006-2025 The QElectroTech Team
This file is part of QElectroTech.
QElectroTech is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 2 of the License, or
(at your option) any later version.
QElectroTech is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with QElectroTech. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef COLORCOMBOBOX_H
#define COLORCOMBOBOX_H
#include <QColor>
#include <QObject>
#include <QComboBox>
#include <QVector>
#include <Qt>
/**
@brief The ColorComboBox class
*/
class ColorComboBox : public QComboBox
{
Q_OBJECT
public:
ColorComboBox(QWidget * = nullptr);
void setColors(const QVector<QColor> &);
public slots:
void colorSelected(int);
protected:
void paintEvent(QPaintEvent *) override;
signals:
void activated(const QColor &);
};
#endif
+62
View File
@@ -0,0 +1,62 @@
/*
Copyright 2006-2025 The QElectroTech Team
This file is part of QElectroTech.
QElectroTech is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 2 of the License, or
(at your option) any later version.
QElectroTech is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with QElectroTech. If not, see <http://www.gnu.org/licenses/>.
*/
#include "colorcomboboxdelegate.h"
#include <QColor>
#include <QPainter>
#include <QPalette>
#include <QtDebug>
/**
@brief ColorComboBoxDelegate::paint
Paints a filled rectangle on the drop down item with the items color.
@param painter Painter context
@param option Style options
@param index Index of the item to paint
*/
void ColorComboBoxDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const
{
// Padding for the color indicator
const int padding_x = 5;
const int padding_y = 2;
painter->save();
if (index.row() > 0)
{
auto rect = option.rect;
// Draw mouseover background
if (option.state & QStyle::State_MouseOver)
{
auto pal = option.widget->palette();
painter->fillRect(rect, pal.color(QPalette::Highlight));
}
// Draw color indicator rectangle
auto color = qvariant_cast<QColor>(index.data());
rect.adjust(padding_x, padding_y, -padding_x, -padding_y);
painter->fillRect(rect, color);
} else {
// Draw a normal drop down item for custom color
QStyledItemDelegate::paint(painter, option, index);
}
painter->restore();
}
+35
View File
@@ -0,0 +1,35 @@
/*
Copyright 2006-2025 The QElectroTech Team
This file is part of QElectroTech.
QElectroTech is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 2 of the License, or
(at your option) any later version.
QElectroTech is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with QElectroTech. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef COLORCOMBOBOXDELEGATE_H
#define COLORCOMBOBOXDELEGATE_H
#include <QStyledItemDelegate>
/**
@brief The ColorComboBoxDelegate class
Handles drawing of items in the drop down list of ColorComboBox.
*/
class ColorComboBoxDelegate : public QStyledItemDelegate
{
Q_OBJECT
public:
void paint(QPainter *, const QStyleOptionViewItem &, const QModelIndex &) const override;
};
#endif
-7
View File
@@ -72,14 +72,7 @@ bool ConductorNumExport::toCsv()
if (file.open(QIODevice::WriteOnly | QIODevice::Text)) if (file.open(QIODevice::WriteOnly | QIODevice::Text))
{ {
QTextStream stream(&file); QTextStream stream(&file);
#if QT_VERSION < QT_VERSION_CHECK(5, 15, 0) // ### Qt 6: remove
stream << wiresNum() << endl;
#else
#if TODO_LIST
#pragma message("@TODO remove code for QT 5.15 or later")
#endif
stream << wiresNum() << &Qt::endl(stream); stream << wiresNum() << &Qt::endl(stream);
#endif
} }
else { else {
return false; return false;
+52 -59
View File
@@ -376,31 +376,31 @@ void ConductorProperties::fromXml(QDomElement &e)
*/ */
void ConductorProperties::toSettings(QSettings &settings, const QString &prefix) const void ConductorProperties::toSettings(QSettings &settings, const QString &prefix) const
{ {
settings.setValue(prefix + "color", color.name()); settings.setValue(prefix % "color", color.name());
settings.setValue(prefix + "bicolor", m_bicolor); settings.setValue(prefix % "bicolor", m_bicolor);
settings.setValue(prefix + "color2", m_color_2.name()); settings.setValue(prefix % "color2", m_color_2.name());
settings.setValue(prefix + "dash-size", m_dash_size); settings.setValue(prefix % "dash-size", m_dash_size);
settings.setValue(prefix + "style", writeStyle()); settings.setValue(prefix % "style", writeStyle());
settings.setValue(prefix + "type", typeToString(type)); settings.setValue(prefix % "type", typeToString(type));
settings.setValue(prefix + "text", text); settings.setValue(prefix % "text", text);
settings.setValue(prefix + "text_color", text_color.name()); settings.setValue(prefix % "text_color", text_color.name());
settings.setValue(prefix + "formula", m_formula); settings.setValue(prefix % "formula", m_formula);
settings.setValue(prefix + "cable", m_cable); settings.setValue(prefix % "cable", m_cable);
settings.setValue(prefix + "bus", m_bus); settings.setValue(prefix % "bus", m_bus);
settings.setValue(prefix + "function", m_function); settings.setValue(prefix % "function", m_function);
settings.setValue(prefix + "tension_protocol", m_tension_protocol); settings.setValue(prefix % "tension_protocol", m_tension_protocol);
settings.setValue(prefix + "conductor_color", m_wire_color); settings.setValue(prefix % "conductor_color", m_wire_color);
settings.setValue(prefix + "conductor_section", m_wire_section); settings.setValue(prefix % "conductor_section", m_wire_section);
settings.setValue(prefix + "textsize", QString::number(text_size)); settings.setValue(prefix % "textsize", QString::number(text_size));
settings.setValue(prefix + "size", QString::number(cond_size)); settings.setValue(prefix % "size", QString::number(cond_size));
settings.setValue(prefix + "displaytext", m_show_text); settings.setValue(prefix % "displaytext", m_show_text);
settings.setValue(prefix + "onetextperfolio", m_one_text_per_folio); settings.setValue(prefix % "onetextperfolio", m_one_text_per_folio);
settings.setValue(prefix + "vertirotatetext", QString::number(verti_rotate_text)); settings.setValue(prefix % "vertirotatetext", QString::number(verti_rotate_text));
settings.setValue(prefix + "horizrotatetext", QString::number(horiz_rotate_text)); settings.setValue(prefix % "horizrotatetext", QString::number(horiz_rotate_text));
QMetaEnum me = QMetaEnum::fromType<Qt::Alignment>(); QMetaEnum me = QMetaEnum::fromType<Qt::Alignment>();
settings.setValue(prefix + "horizontal-alignment", me.valueToKey(m_horizontal_alignment)); settings.setValue(prefix % "horizontal-alignment", me.valueToKey(m_horizontal_alignment));
settings.setValue(prefix + "vertical-alignment", me.valueToKey(m_vertical_alignment)); settings.setValue(prefix % "vertical-alignment", me.valueToKey(m_vertical_alignment));
singleLineProperties.toSettings(settings, prefix); singleLineProperties.toSettings(settings, prefix);
} }
@@ -417,36 +417,36 @@ void ConductorProperties::fromSettings(QSettings &settings, const QString &prefi
QColor settings_color_2 = QColor(settings.value(prefix + "color2").toString()); QColor settings_color_2 = QColor(settings.value(prefix + "color2").toString());
m_color_2 = (settings_color_2.isValid()? settings_color_2 : QColor(Qt::black)); m_color_2 = (settings_color_2.isValid()? settings_color_2 : QColor(Qt::black));
m_bicolor = settings.value(prefix + "bicolor", false).toBool(); m_bicolor = settings.value(prefix % "bicolor", false).toBool();
m_dash_size = settings.value(prefix + "dash-size", 1).toInt(); m_dash_size = settings.value(prefix % "dash-size", 1).toInt();
QString setting_type = settings.value(prefix + "type", typeToString(Multi)).toString(); QString setting_type = settings.value(prefix % "type", typeToString(Multi)).toString();
type = (setting_type == typeToString(Single)? Single : Multi); type = (setting_type == typeToString(Single)? Single : Multi);
singleLineProperties.fromSettings(settings, prefix); singleLineProperties.fromSettings(settings, prefix);
text = settings.value(prefix + "text", "_").toString(); text = settings.value(prefix % "text", "_").toString();
QColor settings_text_color = QColor(settings.value(prefix + "text_color").toString()); QColor settings_text_color = QColor(settings.value(prefix % "text_color").toString());
text_color = (settings_text_color.isValid()? settings_text_color : QColor(Qt::black)); text_color = (settings_text_color.isValid()? settings_text_color : QColor(Qt::black));
m_formula = settings.value(prefix + "formula", "").toString(); m_formula = settings.value(prefix % "formula", "").toString();
m_cable = settings.value(prefix + "cable", "").toString(); m_cable = settings.value(prefix % "cable", "").toString();
m_bus = settings.value(prefix + "bus", "").toString(); m_bus = settings.value(prefix % "bus", "").toString();
m_function = settings.value(prefix + "function", "").toString(); m_function = settings.value(prefix % "function", "").toString();
m_tension_protocol = settings.value(prefix + "tension_protocol", "").toString(); m_tension_protocol = settings.value(prefix % "tension_protocol", "").toString();
m_wire_color = settings.value(prefix + "conductor_color", "").toString(); m_wire_color = settings.value(prefix % "conductor_color", "").toString();
m_wire_section = settings.value(prefix + "conductor_section", "").toString(); m_wire_section = settings.value(prefix % "conductor_section", "").toString();
text_size = settings.value(prefix + "textsize", "7").toInt(); text_size = settings.value(prefix % "textsize", "7").toInt();
cond_size = settings.value(prefix + "size", "1").toInt(); cond_size = settings.value(prefix % "size", "1").toInt();
m_show_text = settings.value(prefix + "displaytext", true).toBool(); m_show_text = settings.value(prefix % "displaytext", true).toBool();
m_one_text_per_folio = settings.value(prefix + "onetextperfolio", false).toBool(); m_one_text_per_folio = settings.value(prefix % "onetextperfolio", false).toBool();
verti_rotate_text = settings.value((prefix + "vertirotatetext"), "270").toDouble(); verti_rotate_text = settings.value((prefix % "vertirotatetext"), "270").toDouble();
horiz_rotate_text = settings.value((prefix + "horizrotatetext"), "0").toDouble(); horiz_rotate_text = settings.value((prefix % "horizrotatetext"), "0").toDouble();
QMetaEnum me = QMetaEnum::fromType<Qt::Alignment>(); QMetaEnum me = QMetaEnum::fromType<Qt::Alignment>();
m_horizontal_alignment = Qt::Alignment(me.keyToValue(settings.value(prefix + "horizontal-alignment", "AlignBottom").toString().toStdString().data())); m_horizontal_alignment = Qt::Alignment(me.keyToValue(settings.value(prefix % "horizontal-alignment", "AlignBottom").toString().toStdString().data()));
m_vertical_alignment = Qt::Alignment(me.keyToValue(settings.value(prefix + "vertical-alignment", "AlignRight").toString().toStdString().data())); m_vertical_alignment = Qt::Alignment(me.keyToValue(settings.value(prefix % "vertical-alignment", "AlignRight").toString().toStdString().data()));
readStyle(settings.value(prefix + "style").toString()); readStyle(settings.value(prefix % "style").toString());
} }
/** /**
@@ -811,14 +811,7 @@ void ConductorProperties::readStyle(const QString &style_string) {
if (style_string.isEmpty()) return; if (style_string.isEmpty()) return;
// recupere la liste des couples style / valeur // recupere la liste des couples style / valeur
#if QT_VERSION < QT_VERSION_CHECK(5, 14, 0) // ### Qt 6: remove
QStringList styles = style_string.split(";", QString::SkipEmptyParts);
#else
#if TODO_LIST
#pragma message("@TODO remove code QString::SkipEmptyParts for QT 5.14 or later")
#endif
QStringList styles = style_string.split(";", Qt::SkipEmptyParts); QStringList styles = style_string.split(";", Qt::SkipEmptyParts);
#endif
QRegularExpression Rx("^(?<name>[a-z-]+): (?<value>[a-z-]+)$"); QRegularExpression Rx("^(?<name>[a-z-]+): (?<value>[a-z-]+)$");
if (!Rx.isValid()) if (!Rx.isValid())
@@ -896,10 +889,10 @@ int SingleLineProperties::operator!=(const SingleLineProperties &other) const
void SingleLineProperties::toSettings(QSettings &settings, void SingleLineProperties::toSettings(QSettings &settings,
const QString &prefix) const const QString &prefix) const
{ {
settings.setValue(prefix + "hasGround", hasGround); settings.setValue(prefix % "hasGround", hasGround);
settings.setValue(prefix + "hasNeutral", hasNeutral); settings.setValue(prefix % "hasNeutral", hasNeutral);
settings.setValue(prefix + "phases", phases); settings.setValue(prefix % "phases", phases);
settings.setValue(prefix + "pen", is_pen); settings.setValue(prefix % "pen", is_pen);
} }
/** /**
@@ -908,8 +901,8 @@ void SingleLineProperties::toSettings(QSettings &settings,
*/ */
void SingleLineProperties::fromSettings(QSettings &settings, void SingleLineProperties::fromSettings(QSettings &settings,
const QString &prefix) { const QString &prefix) {
hasGround = settings.value(prefix + "hasGround", true).toBool(); hasGround = settings.value(prefix % "hasGround", true).toBool();
hasNeutral = settings.value(prefix + "hasNeutral", true).toBool(); hasNeutral = settings.value(prefix % "hasNeutral", true).toBool();
phases = settings.value(prefix + "phases", 1).toInt(); phases = settings.value(prefix % "phases", 1).toInt();
is_pen = settings.value(prefix + "pen", false).toBool(); is_pen = settings.value(prefix % "pen", false).toBool();
} }
+5 -3
View File
@@ -253,9 +253,11 @@ bool projectDataBase::createDataBase()
return false; return false;
} }
m_data_base.exec("PRAGMA temp_store = MEMORY"); QSqlQuery *temp_query = new QSqlQuery(m_data_base);
m_data_base.exec("PRAGMA journal_mode = MEMORY"); temp_query->exec("PRAGMA temp_store = MEMORY");
m_data_base.exec("PRAGMA synchronous = OFF"); temp_query->exec("PRAGMA journal_mode = MEMORY");
temp_query->exec("PRAGMA synchronous = OFF");
delete temp_query;
QSqlQuery query_(m_data_base); QSqlQuery query_(m_data_base);
bool first_ = true; bool first_ = true;
+16 -46
View File
@@ -151,7 +151,7 @@ Diagram::~Diagram()
continue; continue;
deletable_items.append(qgi); deletable_items.append(qgi);
} }
for (const auto &item : qAsConst(deletable_items)) for (const auto &item : std::as_const(deletable_items))
{ {
removeItem(item); removeItem(item);
delete item; delete item;
@@ -186,7 +186,7 @@ void Diagram::drawBackground(QPainter *p, const QRectF &r) {
p -> drawRect(r); p -> drawRect(r);
if (draw_grid_) { if (draw_grid_) {
/* Draw the points of the grid /* Draw the point of the grid
* if background color is black, * if background color is black,
* then grid spots shall be white, * then grid spots shall be white,
* else they shall be black in color. * else they shall be black in color.
@@ -227,27 +227,6 @@ void Diagram::drawBackground(QPainter *p, const QRectF &r) {
points << QPoint(gx, gy); points << QPoint(gx, gy);
} }
} }
qreal zoom_factor = p->transform().m11();
int minWidthPen = settings.value(QStringLiteral("diagrameditor/grid_pointsize_min"), 1).toInt();
int maxWidthPen = settings.value(QStringLiteral("diagrameditor/grid_pointsize_max"), 1).toInt();
pen.setWidth(minWidthPen);
if (minWidthPen != maxWidthPen) {
qreal stepPen = (maxWidthPen - minWidthPen) / (qreal)maxWidthPen;
qreal stepZoom = (5.0 - 1.0) / maxWidthPen;
for (int n=0; n<maxWidthPen; n++) {
if ((zoom_factor > (1.0 + n * stepZoom)) && (zoom_factor <= (1.0 + (n+1) * stepZoom))) {
int widthPen = minWidthPen + qRound(n * stepPen);
pen.setWidth(widthPen);
}
}
if (zoom_factor <= 1.0)
pen.setWidth(minWidthPen);
else if (zoom_factor > (1.0 + stepZoom * maxWidthPen))
pen.setWidth(maxWidthPen);
}
p -> setPen(pen);
if (zoom_factor > 0.5) // no grid below ... !
p -> drawPoints(points); p -> drawPoints(points);
} }
@@ -1160,8 +1139,8 @@ Terminal* findTerminal(int conductor_index,
assert(conductor_index == 1 || conductor_index == 2); assert(conductor_index == 1 || conductor_index == 2);
auto str_index = QString::number(conductor_index); auto str_index = QString::number(conductor_index);
QString element_index = QStringLiteral("element") + str_index; QString element_index = QStringLiteral("element") % str_index;
QString terminal_index = QStringLiteral("terminal") + str_index; QString terminal_index = QStringLiteral("terminal") % str_index;
if (f.hasAttribute(element_index)) { if (f.hasAttribute(element_index)) {
QUuid element_uuid = QUuid(f.attribute(element_index)); QUuid element_uuid = QUuid(f.attribute(element_index));
@@ -1474,13 +1453,13 @@ bool Diagram::fromXml(QDomElement &document,
if (position != QPointF()) if (position != QPointF())
{ {
QVector <QGraphicsItem *> added_items; QVector <QGraphicsItem *> added_items;
for (auto element : qAsConst(added_elements )) added_items << element; for (auto element : std::as_const(added_elements )) added_items << element;
for (auto cond : qAsConst(added_conductors )) added_items << cond; for (auto cond : std::as_const(added_conductors )) added_items << cond;
for (auto shape : qAsConst(added_shapes )) added_items << shape; for (auto shape : std::as_const(added_shapes )) added_items << shape;
for (auto text : qAsConst(added_texts )) added_items << text; for (auto text : std::as_const(added_texts )) added_items << text;
for (auto image : qAsConst(added_images )) added_items << image; for (auto image : std::as_const(added_images )) added_items << image;
for (auto table : qAsConst(added_tables )) added_items << table; for (auto table : std::as_const(added_tables )) added_items << table;
for (const auto &strip : qAsConst(added_strips)) added_items << strip; for (const auto &strip : std::as_const(added_strips)) added_items << strip;
//Get the top left corner of the rectangle that contain all added items //Get the top left corner of the rectangle that contain all added items
QRectF items_rect; QRectF items_rect;
@@ -1504,14 +1483,6 @@ bool Diagram::fromXml(QDomElement &document,
if (content_ptr) { if (content_ptr) {
content_ptr -> m_elements = added_elements; content_ptr -> m_elements = added_elements;
content_ptr -> m_conductors_to_move = added_conductors; content_ptr -> m_conductors_to_move = added_conductors;
#if QT_VERSION < QT_VERSION_CHECK(5, 14, 0) // ### Qt 6: remove
content_ptr -> m_text_fields = added_texts.toSet();
content_ptr -> m_images = added_images.toSet();
content_ptr -> m_shapes = added_shapes.toSet();
#else
#if TODO_LIST
#pragma message("@TODO remove code for QT 5.14 or later")
#endif
content_ptr -> m_text_fields = QSet<IndependentTextItem *>( content_ptr -> m_text_fields = QSet<IndependentTextItem *>(
added_texts.begin(), added_texts.begin(),
added_texts.end()); added_texts.end());
@@ -1522,7 +1493,6 @@ bool Diagram::fromXml(QDomElement &document,
added_shapes.begin(), added_shapes.begin(),
added_shapes.end()); added_shapes.end());
content_ptr->m_terminal_strip.swap(added_strips); content_ptr->m_terminal_strip.swap(added_strips);
#endif
content_ptr->m_tables.swap(added_tables); content_ptr->m_tables.swap(added_tables);
} }
@@ -1557,9 +1527,9 @@ void Diagram::folioSequentialsFromXml(const QDomElement &root,
QStringList list; QStringList list;
int i = 1; int i = 1;
while (folioseq.hasAttribute(seq while (folioseq.hasAttribute(seq
+ QString::number(i))) { % QString::number(i))) {
list << folioseq.attribute( list << folioseq.attribute(
seq + QString::number(i)); seq % QString::number(i));
i++; i++;
} }
hash->insert(title,list); hash->insert(title,list);
@@ -1589,11 +1559,11 @@ void Diagram::refreshContents()
conductor->refreshText(); conductor->refreshText();
} }
for (auto &table : qAsConst(dc_.m_tables)) { for (auto &table : std::as_const(dc_.m_tables)) {
table->initLink(); table->initLink();
} }
for (auto &strip :qAsConst(dc_.m_terminal_strip)) { for (auto &strip :std::as_const(dc_.m_terminal_strip)) {
strip->refreshPending(); strip->refreshPending();
} }
} }
@@ -1778,7 +1748,7 @@ void Diagram::invertSelection()
item_list << item; item_list << item;
} }
} }
for (auto item : qAsConst(item_list)) { for (auto item : std::as_const(item_list)) {
item -> setSelected(!item -> isSelected()); item -> setSelected(!item -> isSelected());
} }
+4 -4
View File
@@ -55,7 +55,7 @@ DiagramContent::DiagramContent(Diagram *diagram, bool selected) :
item_list = diagram->items(); item_list = diagram->items();
} }
for (const auto &item : qAsConst(item_list)) for (const auto &item : std::as_const(item_list))
{ {
switch (item->type()) switch (item->type())
{ {
@@ -391,10 +391,10 @@ QList<QGraphicsItem *> DiagramContent::items(int filter) const
if (filter & ElementTextFields) for(auto qgi : m_element_texts) items_list << qgi; if (filter & ElementTextFields) for(auto qgi : m_element_texts) items_list << qgi;
if (filter & TextGroup) for(auto qgi : m_texts_groups) items_list << qgi; if (filter & TextGroup) for(auto qgi : m_texts_groups) items_list << qgi;
if (filter & Tables) for(auto qgi : m_tables) items_list << qgi; if (filter & Tables) for(auto qgi : m_tables) items_list << qgi;
if (filter & TerminalStrip) for(const auto qgi : qAsConst(m_terminal_strip)) items_list << qgi; if (filter & TerminalStrip) for(const auto qgi : std::as_const(m_terminal_strip)) items_list << qgi;
if (filter & SelectedOnly) { if (filter & SelectedOnly) {
for(const auto &qgi : qAsConst(items_list)) { for(const auto &qgi : std::as_const(items_list)) {
if (!qgi -> isSelected()) items_list.removeOne(qgi); if (!qgi -> isSelected()) items_list.removeOne(qgi);
} }
} }
@@ -420,7 +420,7 @@ int DiagramContent::count(int filter) const
if (filter & ElementTextFields) for(auto deti : m_element_texts) { if (deti -> isSelected()) ++ count; } if (filter & ElementTextFields) for(auto deti : m_element_texts) { if (deti -> isSelected()) ++ count; }
if (filter & TextGroup) for(auto etig : m_texts_groups) { if (etig -> isSelected()) ++ count; } if (filter & TextGroup) for(auto etig : m_texts_groups) { if (etig -> isSelected()) ++ count; }
if (filter & Tables) for(auto table : m_tables) { if (table -> isSelected()) ++ count; } if (filter & Tables) for(auto table : m_tables) { if (table -> isSelected()) ++ count; }
if (filter & TerminalStrip) for(const auto &strip : qAsConst(m_terminal_strip)) {if (strip->isSelected()) ++ count;} if (filter & TerminalStrip) for(const auto &strip : std::as_const(m_terminal_strip)) {if (strip->isSelected()) ++ count;}
} }
else { else {
if (filter & Elements) count += m_elements.count(); if (filter & Elements) count += m_elements.count();
+5 -49
View File
@@ -93,7 +93,10 @@ DiagramView::DiagramView(Diagram *diagram, QWidget *parent) :
connect(m_diagram, SIGNAL(showDiagram(Diagram*)), this, SIGNAL(showDiagram(Diagram*))); connect(m_diagram, SIGNAL(showDiagram(Diagram*)), this, SIGNAL(showDiagram(Diagram*)));
connect(m_diagram, SIGNAL(sceneRectChanged(QRectF)), this, SLOT(adjustSceneRect())); connect(m_diagram, SIGNAL(sceneRectChanged(QRectF)), this, SLOT(adjustSceneRect()));
connect(&(m_diagram -> border_and_titleblock), SIGNAL(diagramTitleChanged(const QString &)), this, SLOT(updateWindowTitle())); // TODO: review the following line. Old line commented out, been broken since commit
// "27dcd5ef007a282d1a5a7f2f3dcaefc62669d668".
// connect(&(m_diagram -> border_and_titleblock), SIGNAL(diagramTitleChanged(const QString &)), this, SLOT(updateWindowTitle()));
connect(&(m_diagram->border_and_titleblock), &BorderTitleBlock::informationChanged, this, &DiagramView::updateWindowTitle);
connect(diagram, SIGNAL(findElementRequired(ElementsLocation)), this, SIGNAL(findElementRequired(ElementsLocation))); connect(diagram, SIGNAL(findElementRequired(ElementsLocation)), this, SIGNAL(findElementRequired(ElementsLocation)));
QShortcut *edit_conductor_color_shortcut = new QShortcut(QKeySequence(Qt::Key_F2), this); QShortcut *edit_conductor_color_shortcut = new QShortcut(QKeySequence(Qt::Key_F2), this);
@@ -203,18 +206,9 @@ void DiagramView::handleElementDrop(QDropEvent *event)
return; return;
} }
#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) // ### Qt 6: remove
diagram()->setEventInterface(
new DiagramEventAddElement(
location, diagram(), mapToScene(event->pos())));
#else
#if TODO_LIST
#pragma message("@TODO remove code for QT 6 or later")
#endif
diagram()->setEventInterface( diagram()->setEventInterface(
new DiagramEventAddElement( new DiagramEventAddElement(
location, diagram(), event->position())); location, diagram(), event->position()));
#endif
//Set focus to the view to get event //Set focus to the view to get event
this->setFocus(); this->setFocus();
@@ -283,17 +277,8 @@ void DiagramView::handleTextDrop(QDropEvent *e) {
iti -> setHtml (e -> mimeData() -> text()); iti -> setHtml (e -> mimeData() -> text());
} }
#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) // ### Qt 6: remove
m_diagram->undoStack().push(new AddGraphicsObjectCommand(
iti, m_diagram, mapToScene(e->pos())));
#else
#if TODO_LIST
#pragma message("@TODO remove code for QT 6 or later")
#endif
m_diagram->undoStack().push(new AddGraphicsObjectCommand( m_diagram->undoStack().push(new AddGraphicsObjectCommand(
iti, m_diagram, e->position())); iti, m_diagram, e->position()));
#endif
} }
/** /**
@@ -447,15 +432,7 @@ void DiagramView::mousePressEvent(QMouseEvent *e)
if (m_event_interface && m_event_interface->mousePressEvent(e)) return; if (m_event_interface && m_event_interface->mousePressEvent(e)) return;
//Start drag view when hold the middle button
#if QT_VERSION < QT_VERSION_CHECK(5, 15, 1) // ### Qt 6: remove
if (e->button() == Qt::MidButton)
#else
#if TODO_LIST
#pragma message("@TODO remove code for QT 6 or later")
#endif
if (e->button() == Qt::MiddleButton) if (e->button() == Qt::MiddleButton)
#endif
{ {
m_drag_last_pos = e->pos(); m_drag_last_pos = e->pos();
viewport()->setCursor(Qt::ClosedHandCursor); viewport()->setCursor(Qt::ClosedHandCursor);
@@ -505,14 +482,7 @@ void DiagramView::mouseMoveEvent(QMouseEvent *e)
if (m_event_interface && m_event_interface->mouseMoveEvent(e)) return; if (m_event_interface && m_event_interface->mouseMoveEvent(e)) return;
// Drag the view // Drag the view
#if QT_VERSION < QT_VERSION_CHECK(5, 15, 1) // ### Qt 6: remove
if (e->buttons() == Qt::MidButton)
#else
#if TODO_LIST
#pragma message("@TODO remove code for QT 6 or later")
#endif
if (e->buttons() == Qt::MiddleButton) if (e->buttons() == Qt::MiddleButton)
#endif
{ {
QScrollBar *h = horizontalScrollBar(); QScrollBar *h = horizontalScrollBar();
QScrollBar *v = verticalScrollBar(); QScrollBar *v = verticalScrollBar();
@@ -573,14 +543,7 @@ void DiagramView::mouseReleaseEvent(QMouseEvent *e)
if (m_event_interface && m_event_interface->mouseReleaseEvent(e)) return; if (m_event_interface && m_event_interface->mouseReleaseEvent(e)) return;
// Stop drag view // Stop drag view
#if QT_VERSION < QT_VERSION_CHECK(5, 15, 1) // ### Qt 6: remove
if (e->button() == Qt::MidButton)
#else
#if TODO_LIST
#pragma message("@TODO remove code for QT 6 or later")
#endif
if (e->button() == Qt::MiddleButton) if (e->button() == Qt::MiddleButton)
#endif
{ {
viewport()->setCursor(Qt::ArrowCursor); viewport()->setCursor(Qt::ArrowCursor);
} }
@@ -614,14 +577,7 @@ void DiagramView::mouseReleaseEvent(QMouseEvent *e)
QMenu *menu = new QMenu(this); QMenu *menu = new QMenu(this);
menu->addAction(act); menu->addAction(act);
#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) // ### Qt 6: remove
menu->popup(e->globalPos());
#else
#if TODO_LIST
#pragma message("@TODO remove code for QT 6 or later")
#endif
menu->popup(e->pos()); menu->popup(e->pos());
#endif
} }
m_free_rubberbanding = false; m_free_rubberbanding = false;
@@ -1153,7 +1109,7 @@ void DiagramView::editSelection()
QGraphicsItem *item = m_diagram->selectedItems().first(); QGraphicsItem *item = m_diagram->selectedItems().first();
//We use dynamic_cast instead of qgraphicsitem_cast for QetGraphicsItem //We use dynamic_cast instead of qgraphicsitem_cast for QetGraphicsItem
//because they haven't got their own type(). //because they haven't got they own type().
//Use qgraphicsitem_cast will have weird behavior for this class. //Use qgraphicsitem_cast will have weird behavior for this class.
if (IndependentTextItem *iti = qgraphicsitem_cast<IndependentTextItem *>(item)) if (IndependentTextItem *iti = qgraphicsitem_cast<IndependentTextItem *>(item))
iti -> edit(); iti -> edit();
@@ -63,9 +63,9 @@ void OpenElmtCommand::redo()
m_scene->addItems(m_graphics_item.toVector()); m_scene->addItems(m_graphics_item.toVector());
} }
#pragma message("@TODO uncomment slot_select when fixed, see itemChange function for each primitive") #pragma message("@TODO uncommante slot_select when fixed, see itemChange function for each primitive")
//Commented because it takes a lot of time //Commented because take a lot of time
//when a lot of primitives are loaded! //when a lot of primitive are loaded
//needs work //need work
//m_scene->slot_select(m_graphics_item); //m_scene->slot_select(m_graphics_item);
} }
+2 -4
View File
@@ -478,12 +478,10 @@ const QDomDocument ElementScene::toXml(bool all_parts)
root.appendChild(element_info); root.appendChild(element_info);
} }
//complementary information about the element, when available //complementary information about the element
if (!(m_element_data.m_drawing_information.trimmed().isEmpty())) {
QDomElement informations_element = xml_document.createElement("informations"); QDomElement informations_element = xml_document.createElement("informations");
root.appendChild(informations_element); root.appendChild(informations_element);
informations_element.appendChild(xml_document.createTextNode(m_element_data.m_drawing_information.trimmed())); informations_element.appendChild(xml_document.createTextNode(m_element_data.m_drawing_information.trimmed()));
}
QDomElement description = xml_document.createElement("description"); QDomElement description = xml_document.createElement("description");
@@ -748,7 +746,7 @@ void ElementScene::addItems(QVector<QGraphicsItem *> items)
*/ */
void ElementScene::removeItems(QVector<QGraphicsItem *> items) void ElementScene::removeItems(QVector<QGraphicsItem *> items)
{ {
const int previous_selected_count{selectedItems().size()}; const qsizetype previous_selected_count{selectedItems().size()};
//block signal to avoid multiple emit of selection changed, //block signal to avoid multiple emit of selection changed,
//we emit this signal only once at the end of this function. //we emit this signal only once at the end of this function.
+8 -31
View File
@@ -480,7 +480,6 @@ bool ElementView::event(QEvent *e) {
/** /**
Utilise le pincement du trackpad pour zoomer Utilise le pincement du trackpad pour zoomer
Use trackpad pinch to zoom
@brief ElementView::gestureEvent @brief ElementView::gestureEvent
@param event @param event
@return @return
@@ -503,7 +502,6 @@ bool ElementView::gestureEvent(QGestureEvent *event){
/** /**
Dessine l'arriere-plan de l'editeur, cad la grille. Dessine l'arriere-plan de l'editeur, cad la grille.
Draws the editor background, i.e. the grid.
@param p Le QPainter a utiliser pour dessiner @param p Le QPainter a utiliser pour dessiner
@param r Le rectangle de la zone a dessiner @param r Le rectangle de la zone a dessiner
*/ */
@@ -516,23 +514,20 @@ void ElementView::drawBackground(QPainter *p, const QRectF &r) {
p -> setRenderHint(QPainter::SmoothPixmapTransform, false); p -> setRenderHint(QPainter::SmoothPixmapTransform, false);
// dessine un fond blanc // dessine un fond blanc
// draw a white background
p -> setPen(Qt::NoPen); p -> setPen(Qt::NoPen);
p -> setBrush(Qt::white); p -> setBrush(Qt::white);
p -> drawRect(r); p -> drawRect(r);
// determine le zoom en cours // determine le zoom en cours
// determine the zoom-level
qreal zoom_factor = transform().m11(); qreal zoom_factor = transform().m11();
// choisit la granularite de la grille en fonction du zoom en cours // choisit la granularite de la grille en fonction du zoom en cours
// selects the grid granularity according to the current zoom level
int drawn_x_grid = 1;//scene_ -> xGrid(); int drawn_x_grid = 1;//scene_ -> xGrid();
int drawn_y_grid = 1;//scene_ -> yGrid(); int drawn_y_grid = 1;//scene_ -> yGrid();
bool draw_grid = true; bool draw_grid = true;
bool draw_cross = false; bool draw_cross = false;
if (zoom_factor < 1.0) { //< no grid if (zoom_factor < (4.0/3.0)) { //< no grid
draw_grid = false; draw_grid = false;
} else if (zoom_factor < 4.0) { //< grid 10*10 } else if (zoom_factor < 4.0) { //< grid 10*10
drawn_x_grid *= 10; drawn_x_grid *= 10;
@@ -552,43 +547,25 @@ void ElementView::drawBackground(QPainter *p, const QRectF &r) {
m_scene->setGrid(drawn_x_grid, drawn_y_grid); m_scene->setGrid(drawn_x_grid, drawn_y_grid);
if (draw_grid) { if (draw_grid) {
// draw the dots of the grid // draw the dot of the grid
QPen pen(Qt::black); QPen pen(Qt::black);
pen.setCosmetic(true); pen.setCosmetic(true);
QSettings settings;
int minWidthPen = settings.value(QStringLiteral("elementeditor/grid_pointsize_min"), 1).toInt();
int maxWidthPen = settings.value(QStringLiteral("elementeditor/grid_pointsize_max"), 1).toInt();
pen.setWidth(minWidthPen);
if (minWidthPen != maxWidthPen) {
qreal stepPen = (maxWidthPen - minWidthPen) / (qreal)maxWidthPen;
qreal stepZoom = (25.0 - 1.0) / maxWidthPen;
for (int n=0; n<maxWidthPen; n++) {
if ((zoom_factor > (1.0 + n * stepZoom)) && (zoom_factor <= (1.0 + (n+1) * stepZoom))) {
int widthPen = minWidthPen + qRound(n * stepPen);
pen.setWidth(widthPen);
}
}
if (zoom_factor <= 1.0)
pen.setWidth(minWidthPen);
else if (zoom_factor > (1.0 + stepZoom * maxWidthPen))
pen.setWidth(maxWidthPen);
}
p -> setPen(pen); p -> setPen(pen);
p -> setBrush(Qt::NoBrush); p -> setBrush(Qt::NoBrush);
qreal limit_x = r.x() + r.width(); qreal limite_x = r.x() + r.width();
qreal limit_y = r.y() + r.height(); qreal limite_y = r.y() + r.height();
int g_x = (int)ceil(r.x()); int g_x = (int)ceil(r.x());
while (g_x % drawn_x_grid) ++ g_x; while (g_x % drawn_x_grid) ++ g_x;
int g_y = (int)ceil(r.y()); int g_y = (int)ceil(r.y());
while (g_y % drawn_y_grid) ++ g_y; while (g_y % drawn_y_grid) ++ g_y;
for (int gx = g_x ; gx < limit_x ; gx += drawn_x_grid) { for (int gx = g_x ; gx < limite_x ; gx += drawn_x_grid) {
for (int gy = g_y ; gy < limit_y ; gy += drawn_y_grid) { for (int gy = g_y ; gy < limite_y ; gy += drawn_y_grid) {
if (draw_cross) { if (draw_cross) {
if (!(gx % 10) && !(gy % 10)) { if (!(gx % 10) && !(gy % 10)) {
p -> drawLine(QLineF(gx - (pen.width()/4.0), gy, gx + (pen.width()/4.0), gy)); p -> drawLine(QLineF(gx - 0.25, gy, gx + 0.25, gy));
p -> drawLine(QLineF(gx, gy - (pen.width()/4.0), gx, gy + (pen.width()/4.0))); p -> drawLine(QLineF(gx, gy - 0.25, gx, gy + 0.25));
} else { } else {
p -> drawPoint(gx, gy); p -> drawPoint(gx, gy);
} }
+21 -18
View File
@@ -61,7 +61,14 @@ void PartArc::paint(QPainter *painter, const QStyleOptionGraphicsItem *options,
//Always remove the brush //Always remove the brush
painter -> setBrush(Qt::NoBrush); painter -> setBrush(Qt::NoBrush);
QPen t = painter -> pen(); QPen t = painter -> pen();
#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) // ### Qt 6: remove
t.setCosmetic(options && options -> levelOfDetail < 1.0);
#else
#if TODO_LIST
#pragma message("@TODO remove code for QT 6 or later")
#endif
t.setCosmetic(options && options -> levelOfDetailFromTransform(painter->worldTransform()) < 1.0); t.setCosmetic(options && options -> levelOfDetailFromTransform(painter->worldTransform()) < 1.0);
#endif
painter -> setPen(t); painter -> setPen(t);
if (isSelected()) if (isSelected())
@@ -168,25 +175,25 @@ void PartArc::setRotation(qreal angle) {
qreal diffAngle = qRound((angle - rotation()) * 100.0) / 100.0; qreal diffAngle = qRound((angle - rotation()) * 100.0) / 100.0;
m_rot = QET::correctAngle(angle, true); m_rot = QET::correctAngle(angle, true);
// idea taken from QET_ElementScaler: // idea taken from QET_ElementScaler:
auto p1 = mapToScene(m_rect.x(),m_rect.y());
qreal width = m_rect.height();
qreal height = m_rect.width();
qreal x; qreal y;
if (diffAngle > 0) { if (diffAngle > 0) {
m_start_angle += 270.0 * 16; m_start_angle += 270.0 * 16;
while (m_start_angle < 0) { m_start_angle += (360*16); } while (m_start_angle < 0) { m_start_angle += (360*16); }
while (m_start_angle >= (360*16)) { m_start_angle -= (360*16); } while (m_start_angle >= (360*16)) { m_start_angle -= (360*16); }
x = (p1.y() + m_rect.height()) * (-1); qreal width = m_rect.height();
y = p1.x(); qreal height = m_rect.width();
qreal x = (m_rect.y() + m_rect.height()) * (-1);
qreal y = m_rect.x();
m_rect = QRectF(x, y, width, height);
} else { } else {
m_start_angle -= 270.0 * 16; m_start_angle -= 270.0 * 16;
while (m_start_angle < 0) { m_start_angle += (360*16); } while (m_start_angle < 0) { m_start_angle += (360*16); }
while (m_start_angle >= (360*16)) { m_start_angle -= (360*16); } while (m_start_angle >= (360*16)) { m_start_angle -= (360*16); }
x = p1.y(); qreal width = m_rect.height();
y = (p1.x() + m_rect.width()) * (-1); qreal height = m_rect.width();
qreal x = m_rect.y();
qreal y = (m_rect.x() + m_rect.width()) * (-1);
m_rect = QRectF(x, y, width, height);
} }
p1 = mapFromScene(x, y);
m_rect = QRectF(p1.x(), p1.y(), width, height);
prepareGeometryChange(); prepareGeometryChange();
adjustHandlerPos(); adjustHandlerPos();
@@ -202,10 +209,8 @@ void PartArc::flip() {
m_span_angle = (-1) * m_span_angle; m_span_angle = (-1) * m_span_angle;
while (m_start_angle < 0) { m_start_angle += (360*16); } while (m_start_angle < 0) { m_start_angle += (360*16); }
while (m_start_angle >= (360*16)) { m_start_angle -= (360*16); } while (m_start_angle >= (360*16)) { m_start_angle -= (360*16); }
auto p1 = mapToScene(m_rect.x(),m_rect.y()); qreal y = ((-1.0) * m_rect.y()) - m_rect.height();
p1.setY(((-1.0) * p1.y()) - m_rect.height()); m_rect = QRectF(m_rect.x(), y, m_rect.width(), m_rect.height());
p1 = mapFromScene(p1.x(),p1.y());
m_rect = QRectF(m_rect.x(), p1.y(), m_rect.width(), m_rect.height());
prepareGeometryChange(); prepareGeometryChange();
adjustHandlerPos(); adjustHandlerPos();
emit rectChanged(); emit rectChanged();
@@ -216,10 +221,8 @@ void PartArc::mirror() {
m_span_angle = (-1) * m_span_angle; m_span_angle = (-1) * m_span_angle;
while (m_start_angle < 0) { m_start_angle += (360*16); } while (m_start_angle < 0) { m_start_angle += (360*16); }
while (m_start_angle >= (360*16)) { m_start_angle -= (360*16); } while (m_start_angle >= (360*16)) { m_start_angle -= (360*16); }
auto p1 = mapToScene(m_rect.x(),m_rect.y()); qreal x = ((-1.0) * m_rect.x()) - m_rect.width();
p1.setX(((-1.0) * p1.x()) - m_rect.width()); m_rect = QRectF(x, m_rect.y(), m_rect.width(), m_rect.height());
p1 = mapFromScene(p1.x(), p1.y());
m_rect = QRectF(p1.x(), m_rect.y(), m_rect.width(), m_rect.height());
prepareGeometryChange(); prepareGeometryChange();
adjustHandlerPos(); adjustHandlerPos();
emit rectChanged(); emit rectChanged();
+20 -17
View File
@@ -57,7 +57,14 @@ void PartEllipse::paint(QPainter *painter, const QStyleOptionGraphicsItem *optio
QPen t = painter -> pen(); QPen t = painter -> pen();
#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) // ### Qt 6: remove
t.setCosmetic(options && options -> levelOfDetail < 1.0);
#else
#if TODO_LIST
#pragma message("@TODO remove code for QT 6 or later")
#endif
t.setCosmetic(options && options -> levelOfDetailFromTransform(painter->worldTransform()) < 1.0); t.setCosmetic(options && options -> levelOfDetailFromTransform(painter->worldTransform()) < 1.0);
#endif
if (isSelected()) if (isSelected())
t.setColor(Qt::red); t.setColor(Qt::red);
@@ -234,19 +241,19 @@ void PartEllipse::setRotation(qreal angle) {
qreal diffAngle = qRound((angle - rotation()) * 100.0) / 100.0; qreal diffAngle = qRound((angle - rotation()) * 100.0) / 100.0;
m_rot = QET::correctAngle(angle, true); m_rot = QET::correctAngle(angle, true);
// idea taken from QET_ElementScaler: // idea taken from QET_ElementScaler:
auto p1 = mapToScene(m_rect.x(), m_rect.y()); if (diffAngle > 0) {
qreal width = m_rect.height(); qreal width = m_rect.height();
qreal height = m_rect.width(); qreal height = m_rect.width();
qreal x; qreal y; qreal x = (m_rect.y() + m_rect.height()) * (-1);
if (diffAngle > 0) { qreal y = m_rect.x();
x = (p1.y() + m_rect.height()) * (-1); m_rect = QRectF(x, y, width, height);
y = p1.x();
} else { } else {
x = m_rect.y(); qreal width = m_rect.height();
y = (m_rect.x() + m_rect.width()) * (-1); qreal height = m_rect.width();
qreal x = m_rect.y();
qreal y = (m_rect.x() + m_rect.width()) * (-1);
m_rect = QRectF(x, y, width, height);
} }
p1 = mapFromScene(x, y);
m_rect = QRectF(p1.x(), p1.y(), width, height);
prepareGeometryChange(); prepareGeometryChange();
adjustHandlerPos(); adjustHandlerPos();
emit rectChanged(); emit rectChanged();
@@ -257,20 +264,16 @@ qreal PartEllipse::rotation() const {
} }
void PartEllipse::flip() { void PartEllipse::flip() {
auto p1 = mapToScene(m_rect.x(), m_rect.y()); qreal y = ((-1.0) * m_rect.y()) - m_rect.height();
p1.setY(((-1.0) * p1.y()) - m_rect.height()); m_rect = QRectF(m_rect.x(), y, m_rect.width(), m_rect.height());
p1 = mapFromScene(p1.x(), p1.y());
m_rect = QRectF(p1.x(), p1.y(), m_rect.width(), m_rect.height());
prepareGeometryChange(); prepareGeometryChange();
adjustHandlerPos(); adjustHandlerPos();
emit rectChanged(); emit rectChanged();
} }
void PartEllipse::mirror() { void PartEllipse::mirror() {
auto p1 = mapToScene(m_rect.x(), m_rect.y()); qreal x = ((-1.0) * m_rect.x()) - m_rect.width();
p1.setX(((-1.0) * p1.x()) - m_rect.width()); m_rect = QRectF(x, m_rect.y(), m_rect.width(), m_rect.height());
p1 = mapFromScene(p1.x(), p1.y());
m_rect = QRectF(p1.x(), p1.y(), m_rect.width(), m_rect.height());
prepareGeometryChange(); prepareGeometryChange();
adjustHandlerPos(); adjustHandlerPos();
emit rectChanged(); emit rectChanged();
+13 -18
View File
@@ -81,7 +81,14 @@ void PartLine::paint(QPainter *painter, const QStyleOptionGraphicsItem *options,
QPen t = painter -> pen(); QPen t = painter -> pen();
t.setJoinStyle(Qt::MiterJoin); t.setJoinStyle(Qt::MiterJoin);
#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) // ### Qt 6: remove
t.setCosmetic(options && options -> levelOfDetail < 1.0);
#else
#if TODO_LIST
#pragma message("@TODO remove code for QT 6 or later")
#endif
t.setCosmetic(options && options -> levelOfDetailFromTransform(painter->worldTransform()) < 1.0); t.setCosmetic(options && options -> levelOfDetailFromTransform(painter->worldTransform()) < 1.0);
#endif
if (isSelected()) t.setColor(Qt::red); if (isSelected()) t.setColor(Qt::red);
painter -> setPen(t); painter -> setPen(t);
@@ -574,12 +581,8 @@ void PartLine::setSecondEndLength(const qreal &l)
void PartLine::setRotation(qreal angle) { void PartLine::setRotation(qreal angle) {
qreal diffAngle = qRound((angle - rotation()) * 100.0) / 100.0; qreal diffAngle = qRound((angle - rotation()) * 100.0) / 100.0;
m_rot = QET::correctAngle(angle, true); m_rot = QET::correctAngle(angle, true);
auto p1 = mapToScene(m_line.p1()); m_line.setP1(QTransform().rotate(diffAngle).map(m_line.p1()));
auto p2 = mapToScene(m_line.p2()); m_line.setP2(QTransform().rotate(diffAngle).map(m_line.p2()));
p1 = QTransform().rotate(diffAngle).map(p1);
p2 = QTransform().rotate(diffAngle).map(p2);
m_line.setP1(mapFromScene(p1));
m_line.setP2(mapFromScene(p2));
prepareGeometryChange(); prepareGeometryChange();
setLine(m_line); setLine(m_line);
adjustHandlerPos(); adjustHandlerPos();
@@ -591,12 +594,8 @@ qreal PartLine::rotation() const {
} }
void PartLine::flip() { void PartLine::flip() {
auto p1 = mapToScene(m_line.p1()); m_line.setP1(QPointF(m_line.p1().x(), (-1) * m_line.p1().y()));
auto p2 = mapToScene(m_line.p2()); m_line.setP2(QPointF(m_line.p2().x(), (-1) * m_line.p2().y()));
p1 = QPointF(p1.x(), (-1) * p1.y());
p2 = QPointF(p2.x(), (-1) * p2.y());
m_line.setP1(mapFromScene(p1));
m_line.setP2(mapFromScene(p2));
setLine(m_line); setLine(m_line);
prepareGeometryChange(); prepareGeometryChange();
adjustHandlerPos(); adjustHandlerPos();
@@ -604,12 +603,8 @@ void PartLine::flip() {
} }
void PartLine::mirror() { void PartLine::mirror() {
auto p1 = mapToScene(m_line.p1()); m_line.setP1(QPointF((-1) * m_line.p1().x(), m_line.p1().y()));
auto p2 = mapToScene(m_line.p2()); m_line.setP2(QPointF((-1) * m_line.p2().x(), m_line.p2().y()));
p1 = QPointF((-1) * p1.x(), p1.y());
p2 = QPointF((-1) * p2.x(), p2.y());
m_line.setP1(mapFromScene(p1));
m_line.setP2(mapFromScene(p2));
setLine(m_line); setLine(m_line);
prepareGeometryChange(); prepareGeometryChange();
adjustHandlerPos(); adjustHandlerPos();
+9 -10
View File
@@ -66,7 +66,14 @@ void PartPolygon::paint(QPainter *painter, const QStyleOptionGraphicsItem *optio
applyStylesToQPainter(*painter); applyStylesToQPainter(*painter);
QPen t = painter -> pen(); QPen t = painter -> pen();
#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) // ### Qt 6: remove
t.setCosmetic(options && options -> levelOfDetail < 1.0);
#else
#if TODO_LIST
#pragma message("@TODO remove code for QT 6 or later")
#endif
t.setCosmetic(options && options -> levelOfDetailFromTransform(painter->worldTransform()) < 1.0); t.setCosmetic(options && options -> levelOfDetailFromTransform(painter->worldTransform()) < 1.0);
#endif
if (isSelected()) t.setColor(Qt::red); if (isSelected()) t.setColor(Qt::red);
painter -> setPen(t); painter -> setPen(t);
@@ -292,12 +299,8 @@ void PartPolygon::resetAllHandlerColor()
void PartPolygon::setRotation(qreal angle) { void PartPolygon::setRotation(qreal angle) {
qreal diffAngle = qRound((angle - rotation()) * 100.0) / 100.0; qreal diffAngle = qRound((angle - rotation()) * 100.0) / 100.0;
m_rot = QET::correctAngle(angle, true); m_rot = QET::correctAngle(angle, true);
for (auto &pt : m_polygon) { QTransform rotation = QTransform().rotate(diffAngle);
pt = mapToScene(pt.x(), pt.y()); setPolygon(rotation.map(m_polygon));
pt = QTransform().rotate(diffAngle).map(pt);
pt = mapFromScene(pt.x(), pt.y());
}
setPolygon(m_polygon);
prepareGeometryChange(); prepareGeometryChange();
adjustHandlerPos(); adjustHandlerPos();
emit polygonChanged(); emit polygonChanged();
@@ -309,9 +312,7 @@ qreal PartPolygon::rotation() const {
void PartPolygon::flip() { void PartPolygon::flip() {
for (auto &pt : m_polygon) { for (auto &pt : m_polygon) {
pt = mapToScene(pt.x(), pt.y());
pt = QPointF(pt.x(), (-1) * pt.y()); pt = QPointF(pt.x(), (-1) * pt.y());
pt = mapFromScene(pt.x(), pt.y());
} }
setPolygon(m_polygon); setPolygon(m_polygon);
prepareGeometryChange(); prepareGeometryChange();
@@ -321,9 +322,7 @@ void PartPolygon::flip() {
void PartPolygon::mirror() { void PartPolygon::mirror() {
for (auto &pt : m_polygon) { for (auto &pt : m_polygon) {
pt = mapToScene(pt.x(), pt.y());
pt = QPointF((-1) * pt.x(), pt.y()); pt = QPointF((-1) * pt.x(), pt.y());
pt = mapFromScene(pt.x(), pt.y());
} }
setPolygon(m_polygon); setPolygon(m_polygon);
prepareGeometryChange(); prepareGeometryChange();
+31 -21
View File
@@ -54,7 +54,14 @@ void PartRectangle::paint(QPainter *painter, const QStyleOptionGraphicsItem *opt
Q_UNUSED(widget); Q_UNUSED(widget);
applyStylesToQPainter(*painter); applyStylesToQPainter(*painter);
QPen t = painter -> pen(); QPen t = painter -> pen();
#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) // ### Qt 6: remove
t.setCosmetic(options && options -> levelOfDetail < 1.0);
#else
#if TODO_LIST
#pragma message("@TODO remove code for QT 6 or later")
#endif
t.setCosmetic(options && options -> levelOfDetailFromTransform(painter->worldTransform()) < 1.0); t.setCosmetic(options && options -> levelOfDetailFromTransform(painter->worldTransform()) < 1.0);
#endif
if (isSelected()) if (isSelected())
t.setColor(Qt::red); t.setColor(Qt::red);
@@ -163,19 +170,22 @@ void PartRectangle::setYRadius(qreal Y)
void PartRectangle::setRotation(qreal angle) { void PartRectangle::setRotation(qreal angle) {
qreal diffAngle = qRound((angle - rotation()) * 100.0) / 100.0; qreal diffAngle = qRound((angle - rotation()) * 100.0) / 100.0;
m_rot = QET::correctAngle(angle, true); m_rot = QET::correctAngle(angle, true);
auto p1 = mapToScene(m_rect.x(),m_rect.y()); // for whatever reason: with "rect" we need to use scene-positions...
auto pos = mapToScene(m_rect.x(),m_rect.y());
qreal width = m_rect.height(); qreal width = m_rect.height();
qreal height = m_rect.width(); qreal height = m_rect.width();
qreal x; qreal y; qreal x; qreal y;
if (diffAngle > 0) { if (diffAngle > 0) {
x = (p1.y() + m_rect.height()) * (-1); x = (pos.y() + m_rect.height()) * (-1);
y = p1.x(); y = pos.x();
} else { } else {
x = p1.y(); x = pos.y();
y = (p1.x() + m_rect.width()) * (-1); y = (pos.x() + m_rect.width()) * (-1);
} }
p1 = mapFromScene(x, y);
m_rect = QRectF(p1.x(), p1.y(), width, height); pos = mapFromScene(x, y);
m_rect.setX(pos.x()); m_rect.setY(pos.y());
m_rect.setWidth(width); m_rect.setHeight(height);
std::swap (m_xRadius, m_yRadius); std::swap (m_xRadius, m_yRadius);
prepareGeometryChange(); prepareGeometryChange();
@@ -188,13 +198,13 @@ qreal PartRectangle::rotation() const {
} }
void PartRectangle::flip() { void PartRectangle::flip() {
auto height = m_rect.height(); // for whatever reason: with "rect" we need to use scene-positions...
auto p1 = mapToScene(m_rect.x(),m_rect.y()); qreal height = m_rect.height();
qreal x = p1.x(); auto pos = mapToScene(m_rect.x(),m_rect.y());
qreal y = ((-1.0) * p1.y()) - height; qreal x = pos.x();
p1 = mapFromScene(x, y); qreal y = ((-1.0) * pos.y()) - height;
m_rect.setX(p1.x()); pos = mapFromScene(x, y);
m_rect.setY(p1.y()); m_rect.setX(pos.x()); m_rect.setY(pos.y());
m_rect.setHeight(height); m_rect.setHeight(height);
prepareGeometryChange(); prepareGeometryChange();
adjustHandlerPos(); adjustHandlerPos();
@@ -202,13 +212,13 @@ void PartRectangle::flip() {
} }
void PartRectangle::mirror() { void PartRectangle::mirror() {
auto width = m_rect.width(); // for whatever reason: with "rect" we need to use scene-positions...
auto p1 = mapToScene(m_rect.x(),m_rect.y()); qreal width = m_rect.width();
qreal x = ((-1.0) * p1.x()) - width; auto pos = mapToScene(m_rect.x(),m_rect.y());
qreal y = p1.y(); qreal x = ((-1.0) * pos.x()) - width;
p1 = mapFromScene(x, y); qreal y = pos.y();
m_rect.setX(p1.x()); pos = mapFromScene(x, y);
m_rect.setY(p1.y()); m_rect.setX(pos.x()); m_rect.setY(pos.y());
m_rect.setWidth(width); m_rect.setWidth(width);
prepareGeometryChange(); prepareGeometryChange();
adjustHandlerPos(); adjustHandlerPos();
+26 -22
View File
@@ -84,8 +84,18 @@ void PartTerminal::paint(
QPen t; QPen t;
t.setWidthF(1.0); t.setWidthF(1.0);
t.setCosmetic(options && options -> levelOfDetailFromTransform(painter->worldTransform()) < 1.0); #if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) // ### Qt 6: remove
t.setCosmetic(options && options -> levelOfDetail < 1.0);
#else
#if TODO_LIST
#pragma message("@TODO remove code for QT 6 or later")
#endif
t.setCosmetic(
options
&& options->levelOfDetailFromTransform(
painter->worldTransform())
< 1.0);
#endif
// dessin de la borne en rouge // dessin de la borne en rouge
t.setColor(isSelected() ? Terminal::neutralColor : Qt::red); t.setColor(isSelected() ? Terminal::neutralColor : Qt::red);
painter -> setPen(t); painter -> setPen(t);
@@ -158,20 +168,23 @@ void PartTerminal::setRotation(qreal angle) {
else new_ori = Qet::West; else new_ori = Qet::West;
qreal diffAngle = qRound((angle - rotation()) * 100.0) / 100.0; qreal diffAngle = qRound((angle - rotation()) * 100.0) / 100.0;
double tmp, y, x;
if (diffAngle > 0) {
tmp = d->m_pos.y();
y = d->m_pos.x();
x = (-1) * tmp;
} else {
tmp = d->m_pos.x();
x = d->m_pos.y();
y = (-1) * tmp;
}
d->m_pos.setX(x); d->m_pos.setY(y);
auto p1 = QTransform().rotate(diffAngle).map(pos());
d->m_pos.setX(p1.x()); d->m_pos.setY(p1.y());
setPos(d->m_pos); setPos(d->m_pos);
setOrientation(new_ori); setOrientation(new_ori);
updateSecondPoint();
prepareGeometryChange();
emit orientationChanged(); // all terminal-signals call "updateForm" emit orientationChanged(); // all terminal-signals call "updateForm"
} }
/**
@brief PartTerminal::rotation
@return current rotation-angle in degrees
*/
qreal PartTerminal::rotation() const { qreal PartTerminal::rotation() const {
switch (d->m_orientation) { switch (d->m_orientation) {
case Qet::North : return 0; case Qet::North : return 0;
@@ -182,13 +195,9 @@ qreal PartTerminal::rotation() const {
return 0; return 0;
} }
/**
@brief PartTerminal::flip
turn part upside down
*/
void PartTerminal::flip() { void PartTerminal::flip() {
d->m_pos.setX( pos().x()); d->m_pos.setY((-1.0) * d->m_pos.y());
d->m_pos.setY((-1.0) * pos().y());
switch (d->m_orientation) { switch (d->m_orientation) {
case Qet::North : setOrientation(Qet::South); case Qet::North : setOrientation(Qet::South);
break; break;
@@ -203,13 +212,8 @@ void PartTerminal::flip() {
emit yChanged(); // all terminal-signals call "updateForm" emit yChanged(); // all terminal-signals call "updateForm"
} }
/**
@brief PartTerminal::mirror
turn part from left to right
*/
void PartTerminal::mirror() { void PartTerminal::mirror() {
d->m_pos.setX((-1.0) * pos().x()); d->m_pos.setX((-1.0) * d->m_pos.x());
d->m_pos.setY( pos().y());
switch (d->m_orientation) { switch (d->m_orientation) {
case Qet::North : break; case Qet::North : break;
case Qet::East : setOrientation(Qet::West); case Qet::East : setOrientation(Qet::West);
+6 -12
View File
@@ -140,10 +140,7 @@ void DynamicTextFieldEditor::updateForm()
ui -> m_user_text_le -> setText(m_text_field.data() -> text()); ui -> m_user_text_le -> setText(m_text_field.data() -> text());
ui -> m_size_sb -> setValue(m_text_field.data() -> font().pointSize()); ui -> m_size_sb -> setValue(m_text_field.data() -> font().pointSize());
ui->m_keep_visual_rotation_cb->setChecked(m_text_field.data()->keepVisualRotation()); ui->m_keep_visual_rotation_cb->setChecked(m_text_field.data()->keepVisualRotation());
#ifdef BUILD_WITHOUT_KF5
#else
m_color_kpb -> setColor(m_text_field.data() -> color()); m_color_kpb -> setColor(m_text_field.data() -> color());
#endif
ui -> m_width_sb -> setValue(m_text_field.data() -> textWidth()); ui -> m_width_sb -> setValue(m_text_field.data() -> textWidth());
ui -> m_font_pb -> setText(m_text_field -> font().family()); ui -> m_font_pb -> setText(m_text_field -> font().family());
@@ -169,16 +166,13 @@ void DynamicTextFieldEditor::updateForm()
void DynamicTextFieldEditor::setupWidget() void DynamicTextFieldEditor::setupWidget()
{ {
#ifdef BUILD_WITHOUT_KF5 m_color_kpb = new ColorButton(this);
#else
m_color_kpb = new KColorButton(this);
m_color_kpb->setObjectName(QString::fromUtf8("m_color_kpb")); m_color_kpb->setObjectName(QString::fromUtf8("m_color_kpb"));
connect(m_color_kpb, &KColorButton::changed, connect(m_color_kpb, &ColorButton::changed,
this, &DynamicTextFieldEditor::on_m_color_kpb_changed); this, &DynamicTextFieldEditor::m_color_kpb_changed);
ui->m_main_grid_layout->addWidget(m_color_kpb, 6, 1, 1, 2); ui->m_main_grid_layout->addWidget(m_color_kpb, 6, 1, 1, 2);
#endif
} }
void DynamicTextFieldEditor::setUpConnections() void DynamicTextFieldEditor::setUpConnections()
@@ -312,8 +306,8 @@ void DynamicTextFieldEditor::on_m_width_sb_editingFinished()
} }
} }
void DynamicTextFieldEditor::on_m_elmt_info_cb_activated(const QString &arg1) { void DynamicTextFieldEditor::on_m_elmt_info_cb_activated(int index) {
Q_UNUSED(arg1) Q_UNUSED(index)
QString info = ui -> m_elmt_info_cb -> currentData().toString(); QString info = ui -> m_elmt_info_cb -> currentData().toString();
for (int i = 0; i < m_parts.length(); i++) { for (int i = 0; i < m_parts.length(); i++) {
@@ -414,7 +408,7 @@ void DynamicTextFieldEditor::on_m_font_pb_clicked()
} }
} }
void DynamicTextFieldEditor::on_m_color_kpb_changed(const QColor &newColor) { void DynamicTextFieldEditor::m_color_kpb_changed(QColor newColor) {
if (!newColor.isValid()) { if (!newColor.isValid()) {
return; return;
} }
+4 -10
View File
@@ -21,10 +21,7 @@
#include "../elementitemeditor.h" #include "../elementitemeditor.h"
#include "../graphicspart/partdynamictextfield.h" #include "../graphicspart/partdynamictextfield.h"
#ifdef BUILD_WITHOUT_KF5 #include "../../colorbutton.h"
#else
# include <KColorButton>
#endif
namespace Ui { namespace Ui {
class DynamicTextFieldEditor; class DynamicTextFieldEditor;
@@ -61,13 +58,13 @@ class DynamicTextFieldEditor : public ElementItemEditor {
void on_m_size_sb_editingFinished(); void on_m_size_sb_editingFinished();
void on_m_frame_cb_clicked(); void on_m_frame_cb_clicked();
void on_m_width_sb_editingFinished(); void on_m_width_sb_editingFinished();
void on_m_elmt_info_cb_activated(const QString &arg1); void on_m_elmt_info_cb_activated(int index);
void on_m_text_from_cb_activated(int index); void on_m_text_from_cb_activated(int index);
void on_m_composite_text_pb_clicked(); void on_m_composite_text_pb_clicked();
void on_m_alignment_pb_clicked(); void on_m_alignment_pb_clicked();
void on_m_font_pb_clicked(); void on_m_font_pb_clicked();
void on_m_color_kpb_changed(const QColor &newColor); void m_color_kpb_changed(QColor newColor);
void on_m_keep_visual_rotation_cb_clicked(); void on_m_keep_visual_rotation_cb_clicked();
@@ -77,10 +74,7 @@ class DynamicTextFieldEditor : public ElementItemEditor {
QList<PartDynamicTextField*> m_parts; QList<PartDynamicTextField*> m_parts;
QList<QMetaObject::Connection> m_connection_list; QList<QMetaObject::Connection> m_connection_list;
#ifdef BUILD_WITHOUT_KF5 ColorButton* m_color_kpb = nullptr;
#else
KColorButton* m_color_kpb = nullptr;
#endif
}; };
#endif // DYNAMICTEXTFIELDEDITOR_H #endif // DYNAMICTEXTFIELDEDITOR_H
+3 -3
View File
@@ -487,7 +487,7 @@ void QETElementEditor::fillPartsList()
#if TODO_LIST #if TODO_LIST
#pragma message("@TODO remove code for QT 6 or later") #pragma message("@TODO remove code for QT 6 or later")
#endif #endif
qDebug()<<"Help code for QT 6 or later"; v.setValue(qgi);
#endif #endif
qlwi -> setData(42, v); qlwi -> setData(42, v);
m_parts_list -> addItem(qlwi); m_parts_list -> addItem(qlwi);
@@ -1069,7 +1069,7 @@ void QETElementEditor::updateAction()
<< ui->m_revert_selection_action << ui->m_revert_selection_action
<< ui->m_paste_from_file_action << ui->m_paste_from_file_action
<< ui->m_paste_from_element_action; << ui->m_paste_from_element_action;
for (auto action : qAsConst(ro_list)) { for (auto action : std::as_const(ro_list)) {
action->setDisabled(m_read_only); action->setDisabled(m_read_only);
} }
@@ -1084,7 +1084,7 @@ void QETElementEditor::updateAction()
<< ui->m_flip_action << ui->m_flip_action
<< ui->m_mirror_action; << ui->m_mirror_action;
auto items_selected = !m_read_only && m_elmt_scene->selectedItems().count(); auto items_selected = !m_read_only && m_elmt_scene->selectedItems().count();
for (auto action : qAsConst(select_list)) { for (auto action : std::as_const(select_list)) {
action->setEnabled(items_selected); action->setEnabled(items_selected);
} }
+1 -1
View File
@@ -229,7 +229,7 @@ void TerminalEditor::activeConnections(bool active)
m_editor_connections << connect(ui->m_type_cb, QOverload<int>::of(&QComboBox::activated), m_editor_connections << connect(ui->m_type_cb, QOverload<int>::of(&QComboBox::activated),
this, &TerminalEditor::typeEdited); this, &TerminalEditor::typeEdited);
} else { } else {
for (auto const & con : qAsConst(m_editor_connections)) { for (auto const & con : std::as_const(m_editor_connections)) {
QObject::disconnect(con); QObject::disconnect(con);
} }
m_editor_connections.clear(); m_editor_connections.clear();
+3 -9
View File
@@ -62,10 +62,7 @@ void TextEditor::updateForm()
m_rotation_sb -> setValue(m_text -> rotation()); m_rotation_sb -> setValue(m_text -> rotation());
m_size_sb -> setValue(m_text -> font().pointSize()); m_size_sb -> setValue(m_text -> font().pointSize());
m_font_pb -> setText(m_text -> font().family()); m_font_pb -> setText(m_text -> font().family());
#ifdef BUILD_WITHOUT_KF5
#else
m_color_pb -> setColor(m_text -> defaultTextColor()); m_color_pb -> setColor(m_text -> defaultTextColor());
#endif
setUpEditConnection(); setUpEditConnection();
} }
@@ -84,7 +81,7 @@ void TextEditor::setUpChangeConnection(QPointer<PartText> part)
void TextEditor::disconnectChangeConnection() void TextEditor::disconnectChangeConnection()
{ {
for (const auto &connection : qAsConst(m_change_connection)) { for (const auto &connection : std::as_const(m_change_connection)) {
disconnect(connection); disconnect(connection);
} }
m_change_connection.clear(); m_change_connection.clear();
@@ -344,19 +341,16 @@ void TextEditor::setUpWidget(QWidget *parent)
m_line_edit->setPlaceholderText(tr("Entrer votre texte ici")); m_line_edit->setPlaceholderText(tr("Entrer votre texte ici"));
gridLayout->addWidget(m_line_edit, 0, 0, 1, 6); gridLayout->addWidget(m_line_edit, 0, 0, 1, 6);
#ifdef BUILD_WITHOUT_KF5 m_color_pb = new ColorButton(parent);
#else
m_color_pb = new KColorButton(parent);
m_color_pb->setObjectName(QString::fromUtf8("m_color_pb")); m_color_pb->setObjectName(QString::fromUtf8("m_color_pb"));
connect( connect(
m_color_pb, m_color_pb,
&KColorButton::changed, &ColorButton::changed,
this, this,
&TextEditor::on_m_color_pb_changed); &TextEditor::on_m_color_pb_changed);
gridLayout->addWidget(m_color_pb, 2, 5, 1, 1); gridLayout->addWidget(m_color_pb, 2, 5, 1, 1);
#endif
QLabel *label_5 = new QLabel(parent); QLabel *label_5 = new QLabel(parent);
label_5->setObjectName(QString::fromUtf8("label_5")); label_5->setObjectName(QString::fromUtf8("label_5"));
+2 -8
View File
@@ -25,10 +25,7 @@
#include <QSpinBox> #include <QSpinBox>
#include <QLineEdit> #include <QLineEdit>
#include <QPushButton> #include <QPushButton>
#ifdef BUILD_WITHOUT_KF5 #include "../../colorbutton.h"
#else
#include <KColorButton>
#endif
class PartText; class PartText;
class TextEditor : public ElementItemEditor { class TextEditor : public ElementItemEditor {
@@ -65,10 +62,7 @@ class TextEditor : public ElementItemEditor {
QSpinBox *m_size_sb; QSpinBox *m_size_sb;
QLineEdit *m_line_edit; QLineEdit *m_line_edit;
QPushButton *m_font_pb; QPushButton *m_font_pb;
#ifdef BUILD_WITHOUT_KF5 ColorButton *m_color_pb;
#else
KColorButton *m_color_pb;
#endif
}; };
#endif // TEXTEDITOR_H #endif // TEXTEDITOR_H
+4 -4
View File
@@ -59,11 +59,11 @@ QVector <QPointer<Element>> ElementProvider::freeElement(ElementData::Types filt
QList<Element *> elmt_list; QList<Element *> elmt_list;
//search in all diagram //search in all diagram
for (const auto &diagram_ : qAsConst(m_diagram_list)) for (const auto &diagram_ : std::as_const(m_diagram_list))
{ {
//get all element in diagram d //get all element in diagram d
elmt_list = diagram_->elements(); elmt_list = diagram_->elements();
for (const auto &elmt_ : qAsConst(elmt_list)) for (const auto &elmt_ : std::as_const(elmt_list))
{ {
if (filter & elmt_->elementData().m_type && if (filter & elmt_->elementData().m_type &&
elmt_->isFree()) elmt_->isFree())
@@ -106,7 +106,7 @@ QList <Element *> ElementProvider::fromUuids(QList<QUuid> uuid_list) const
QVector<QPointer<Element>> ElementProvider::find(ElementData::Types elmt_type) const QVector<QPointer<Element>> ElementProvider::find(ElementData::Types elmt_type) const
{ {
QVector<QPointer<Element>> returned_vector; QVector<QPointer<Element>> returned_vector;
for (const auto &diagram_ : qAsConst(m_diagram_list)) for (const auto &diagram_ : std::as_const(m_diagram_list))
{ {
const auto elmt_list = diagram_->elements(); const auto elmt_list = diagram_->elements();
for (const auto &elmt_ : elmt_list) for (const auto &elmt_ : elmt_list)
@@ -198,7 +198,7 @@ QVector<TerminalElement *> ElementProvider::freeTerminal() const
{ {
QVector<TerminalElement *> vector_; QVector<TerminalElement *> vector_;
for (const auto &diagram : qAsConst(m_diagram_list)) for (const auto &diagram : std::as_const(m_diagram_list))
{ {
const auto elmt_list{diagram->elements()}; const auto elmt_list{diagram->elements()};
+10 -8
View File
@@ -45,18 +45,19 @@ ElementsCollectionCache::ElementsCollectionCache(const QString &database_path, Q
qDebug() << "Unable to open the SQLite database " << database_path << " as " << connection_name << ": " << cache_db_.lastError(); qDebug() << "Unable to open the SQLite database " << database_path << " as " << connection_name << ": " << cache_db_.lastError();
else else
{ {
cache_db_.exec("PRAGMA temp_store = MEMORY"); QSqlQuery *temp_query = new QSqlQuery(cache_db_);
cache_db_.exec("PRAGMA journal_mode = MEMORY"); temp_query->exec("PRAGMA temp_store = MEMORY");
cache_db_.exec("PRAGMA page_size = 4096"); temp_query->exec("PRAGMA journal_mode = MEMORY");
cache_db_.exec("PRAGMA cache_size = 16384"); temp_query->exec("PRAGMA page_size = 4096");
cache_db_.exec("PRAGMA locking_mode = EXCLUSIVE"); temp_query->exec("PRAGMA cache_size = 16384");
cache_db_.exec("PRAGMA synchronous = OFF"); temp_query->exec("PRAGMA locking_mode = EXCLUSIVE");
temp_query->exec("PRAGMA synchronous = OFF");
#if TODO_LIST #if TODO_LIST
#pragma message("@TODO the tables could already exist, handle that case.") #pragma message("@TODO the tables could already exist, handle that case.")
#endif #endif
//@TODO the tables could already exist, handle that case. //@TODO the tables could already exist, handle that case.
cache_db_.exec("CREATE TABLE names" temp_query->exec("CREATE TABLE names"
"(" "("
"path VARCHAR(512) NOT NULL," "path VARCHAR(512) NOT NULL,"
"locale VARCHAR(2) NOT NULL," "locale VARCHAR(2) NOT NULL,"
@@ -65,12 +66,13 @@ ElementsCollectionCache::ElementsCollectionCache(const QString &database_path, Q
"PRIMARY KEY(path, locale)" "PRIMARY KEY(path, locale)"
");"); ");");
cache_db_.exec("CREATE TABLE pixmaps" temp_query->exec("CREATE TABLE pixmaps"
"(" "("
"path VARCHAR(512) NOT NULL UNIQUE," "path VARCHAR(512) NOT NULL UNIQUE,"
"uuid VARCHAR(512) NOT NULL," "uuid VARCHAR(512) NOT NULL,"
"pixmap BLOB, PRIMARY KEY(path)," "pixmap BLOB, PRIMARY KEY(path),"
"FOREIGN KEY(path) REFERENCES names (path) ON DELETE CASCADE);"); "FOREIGN KEY(path) REFERENCES names (path) ON DELETE CASCADE);");
delete temp_query;
// prepare queries // prepare queries
select_name_ = new QSqlQuery(cache_db_); select_name_ = new QSqlQuery(cache_db_);
+3 -3
View File
@@ -59,7 +59,7 @@ ExportElementTextPattern::ExportElementTextPattern(Element *elmt) :
return; return;
//Check if a conf with the same name already exist //Check if a conf with the same name already exist
if (QFileInfo::exists(dir.absoluteFilePath(m_name + ".xml"))) if (QFileInfo::exists(dir.absoluteFilePath(m_name % ".xml")))
{ {
bool r = QMessageBox::question(parentWidget(), bool r = QMessageBox::question(parentWidget(),
QObject::tr("Configuration de textes"), QObject::tr("Configuration de textes"),
@@ -71,7 +71,7 @@ ExportElementTextPattern::ExportElementTextPattern(Element *elmt) :
} }
QDomDocument doc = xmlConf(); QDomDocument doc = xmlConf();
QET::writeXmlFile(doc, dir.absoluteFilePath(m_name + ".xml")); QET::writeXmlFile(doc, dir.absoluteFilePath(m_name % ".xml"));
} }
/** /**
@@ -202,7 +202,7 @@ void ImportElementTextPattern::apply(QString name, bool erase) const
if(!name.endsWith(".xml")) if(!name.endsWith(".xml"))
name.append(".xml"); name.append(".xml");
QFile conf_file(QETApp::configDir() + "/element_texts_pattern/" + name); QFile conf_file(QETApp::configDir() % "/element_texts_pattern/" % name);
if(!conf_file.open(QIODevice::ReadOnly | QIODevice::Text)) if(!conf_file.open(QIODevice::ReadOnly | QIODevice::Text))
return; return;
+33 -13
View File
@@ -128,7 +128,9 @@ int ExportDialog::diagramsToExportCount() const
/** /**
Met en place la liste des schemas Met en place la liste des schemas
Set up the schematics list
@return Le widget representant la liste des schemas @return Le widget representant la liste des schemas
The widget representing the list of schematics
*/ */
QWidget *ExportDialog::initDiagramsListPart() QWidget *ExportDialog::initDiagramsListPart()
{ {
@@ -139,12 +141,12 @@ QWidget *ExportDialog::initDiagramsListPart()
reset_mapper_ = new QSignalMapper(this); reset_mapper_ = new QSignalMapper(this);
clipboard_mapper_ = new QSignalMapper(this); clipboard_mapper_ = new QSignalMapper(this);
connect(preview_mapper_, SIGNAL(mapped(int)), this, SLOT(slot_previewDiagram(int))); connect(preview_mapper_, SIGNAL(mappedInt(int)), this, SLOT(slot_previewDiagram(int)));
connect(width_mapper_, SIGNAL(mapped(int)), this, SLOT(slot_correctHeight(int))); connect(width_mapper_, SIGNAL(mappedInt(int)), this, SLOT(slot_correctHeight(int)));
connect(height_mapper_, SIGNAL(mapped(int)), this, SLOT(slot_correctWidth(int))); connect(height_mapper_, SIGNAL(mappedInt(int)), this, SLOT(slot_correctWidth(int)));
connect(ratio_mapper_, SIGNAL(mapped(int)), this, SLOT(slot_keepRatioChanged(int))); connect(ratio_mapper_, SIGNAL(mappedInt(int)), this, SLOT(slot_keepRatioChanged(int)));
connect(reset_mapper_, SIGNAL(mapped(int)), this, SLOT(slot_resetSize(int))); connect(reset_mapper_, SIGNAL(mappedInt(int)), this, SLOT(slot_resetSize(int)));
connect(clipboard_mapper_, SIGNAL(mapped(int)), this, SLOT(slot_exportToClipBoard(int))); connect(clipboard_mapper_, SIGNAL(mappedInt(int)), this, SLOT(slot_exportToClipBoard(int)));
diagrams_list_layout_ = new QGridLayout(); diagrams_list_layout_ = new QGridLayout();
@@ -245,21 +247,28 @@ QSize ExportDialog::diagramSize(Diagram *diagram)
Cette methode ajuste la largeur d'un des schemas a exporter en fonction de Cette methode ajuste la largeur d'un des schemas a exporter en fonction de
sa hauteur si et seulement si l'option "Conserver les proportions" est sa hauteur si et seulement si l'option "Conserver les proportions" est
activee pour ce schema. activee pour ce schema.
@param diagram_id numero du schema concerne This method adjusts the width of one of the layouts to be exported
according to its height if, and only if, the Keep proportions option
is enabled for this layout.
@param diagram_id numero du schema concerne / number of drawing concerned
*/ */
void ExportDialog::slot_correctWidth(int diagram_id) void ExportDialog::slot_correctWidth(int diagram_id)
{ {
// recupere l'ExportDiagramLine concernee // recupere l'ExportDiagramLine concernee
// retrieve the ExportDiagramLine concerned
ExportDialog::ExportDiagramLine *current_diagram = diagram_lines_[diagram_id]; ExportDialog::ExportDiagramLine *current_diagram = diagram_lines_[diagram_id];
if (!current_diagram) return; if (!current_diagram) return;
// ne fait rien si l'option "Conserver les proportions" n'est pas activee // ne fait rien si l'option "Conserver les proportions" n'est pas activee
// do nothing if the Keep proportions option is not active
if (!(current_diagram -> keep_ratio -> isChecked())) return; if (!(current_diagram -> keep_ratio -> isChecked())) return;
// recupere les proportions du schema // recupere les proportions du schema
// retrieve the proportions of the diagram
qreal diagram_ratio = diagramRatio(current_diagram -> diagram); qreal diagram_ratio = diagramRatio(current_diagram -> diagram);
// ajuste la largeur // ajuste la largeur
// adjust the width
current_diagram -> width -> blockSignals(true); current_diagram -> width -> blockSignals(true);
current_diagram -> width -> setValue(qRound(current_diagram -> height -> value() * diagram_ratio)); current_diagram -> width -> setValue(qRound(current_diagram -> height -> value() * diagram_ratio));
current_diagram -> width -> blockSignals(false); current_diagram -> width -> blockSignals(false);
@@ -269,21 +278,28 @@ void ExportDialog::slot_correctWidth(int diagram_id)
Cette methode ajuste la hauteur d'un des schemas a exporter en fonction de Cette methode ajuste la hauteur d'un des schemas a exporter en fonction de
sa largeur si et seulement si l'option "Conserver les proportions" est sa largeur si et seulement si l'option "Conserver les proportions" est
activee pour ce schema. activee pour ce schema.
@param diagram_id numero du schema concerne This method adjusts the height of one of the layouts to be exported
according to its width if, and only if, the Keep proportions option
is enabled for this layout.
@param diagram_id numero du schema concerne / number of drawing concerned
*/ */
void ExportDialog::slot_correctHeight(int diagram_id) void ExportDialog::slot_correctHeight(int diagram_id)
{ {
// recupere l'ExportDiagramLine concernee // recupere l'ExportDiagramLine concernee
// retrieve the ExportDiagramLine concerned
ExportDialog::ExportDiagramLine *current_diagram = diagram_lines_[diagram_id]; ExportDialog::ExportDiagramLine *current_diagram = diagram_lines_[diagram_id];
if (!current_diagram) return; if (!current_diagram) return;
// ne fait rien si l'option "Conserver les proportions" n'est pas activee // ne fait rien si l'option "Conserver les proportions" n'est pas activee
// do nothing if the Keep proportions option is not active
if (!(current_diagram -> keep_ratio -> isChecked())) return; if (!(current_diagram -> keep_ratio -> isChecked())) return;
// recupere les proportions du schema // recupere les proportions du schema
// retrieve the proportions of the diagram
qreal diagram_ratio = diagramRatio(current_diagram -> diagram); qreal diagram_ratio = diagramRatio(current_diagram -> diagram);
// ajuste la hauteur // ajuste la hauteur
// adjust the height
current_diagram -> height -> blockSignals(true); current_diagram -> height -> blockSignals(true);
current_diagram -> height -> setValue(qRound(current_diagram -> width -> value() / diagram_ratio)); current_diagram -> height -> setValue(qRound(current_diagram -> width -> value() / diagram_ratio));
current_diagram -> height -> blockSignals(false); current_diagram -> height -> blockSignals(false);
@@ -297,10 +313,12 @@ void ExportDialog::slot_correctHeight(int diagram_id)
void ExportDialog::slot_keepRatioChanged(int diagram_id) void ExportDialog::slot_keepRatioChanged(int diagram_id)
{ {
// recupere l'ExportDiagramLine concernee // recupere l'ExportDiagramLine concernee
// retrieve the ExportDiagramLine concerned
ExportDialog::ExportDiagramLine *current_diagram = diagram_lines_[diagram_id]; ExportDialog::ExportDiagramLine *current_diagram = diagram_lines_[diagram_id];
if (!current_diagram) return; if (!current_diagram) return;
// gere l'icone du bouton "Conserver les proportions" // gere l'icone du bouton "Conserver les proportions"
// manages the Keep proportions button icon
if (current_diagram -> keep_ratio -> isChecked()) { if (current_diagram -> keep_ratio -> isChecked()) {
current_diagram -> keep_ratio -> setIcon(QET::Icons::ObjectLocked); current_diagram -> keep_ratio -> setIcon(QET::Icons::ObjectLocked);
} else { } else {
@@ -308,9 +326,11 @@ void ExportDialog::slot_keepRatioChanged(int diagram_id)
} }
// ne fait rien si l'option "Conserver les proportions" n'est pas activee // ne fait rien si l'option "Conserver les proportions" n'est pas activee
// do nothing if the Keep proportions option is not active
if (!(current_diagram -> keep_ratio -> isChecked())) return; if (!(current_diagram -> keep_ratio -> isChecked())) return;
// au contraire, si elle est activee, ajuste la hauteur en fonction de la largeur // au contraire, si elle est activee, ajuste la hauteur en fonction de la largeur
// on the other hand, if it is active, adjusts the height according to the width
slot_correctHeight(diagram_id); slot_correctHeight(diagram_id);
} }
@@ -770,7 +790,7 @@ void ExportDialog::exportDiagram(ExportDiagramLine *diagram_line) {
// recupere le format a utiliser (acronyme et extension) // recupere le format a utiliser (acronyme et extension)
QString format_acronym = export_properties.format; QString format_acronym = export_properties.format;
QString format_extension = "." + format_acronym.toLower(); QString format_extension = "." % format_acronym.toLower();
// determine le nom de fichier a utiliser // determine le nom de fichier a utiliser
QString diagram_path = diagram_line -> file_name -> text(); QString diagram_path = diagram_line -> file_name -> text();
@@ -867,7 +887,7 @@ void ExportDialog::slot_checkDiagramsCount()
void ExportDialog::slot_changeFilesExtension(bool force_extension) { void ExportDialog::slot_changeFilesExtension(bool force_extension) {
// recupere le format a utiliser (acronyme et extension) // recupere le format a utiliser (acronyme et extension)
QString format_acronym = epw -> exportProperties().format; QString format_acronym = epw -> exportProperties().format;
QString format_extension = "." + format_acronym.toLower(); QString format_extension = "." % format_acronym.toLower();
// set maximum width / height according limitations in QPainter // set maximum width / height according limitations in QPainter
if ((format_extension == ".bmp") || if ((format_extension == ".bmp") ||
@@ -897,11 +917,11 @@ void ExportDialog::slot_changeFilesExtension(bool force_extension) {
// cas 2 : l'extension est absente // cas 2 : l'extension est absente
if (diagram_filename_info.suffix().isEmpty()) { if (diagram_filename_info.suffix().isEmpty()) {
if (force_extension) { if (force_extension) {
diagram_filename = diagram_filename_info.completeBaseName() + format_extension; diagram_filename = diagram_filename_info.completeBaseName() % format_extension;
} }
} else { } else {
// cas 3 : l'extension est presente mais erronee // cas 3 : l'extension est presente mais erronee
diagram_filename = diagram_filename_info.completeBaseName() + format_extension; diagram_filename = diagram_filename_info.completeBaseName() % format_extension;
} }
diagram_line -> file_name -> setText(diagram_filename); diagram_line -> file_name -> setText(diagram_filename);
@@ -1014,7 +1034,7 @@ ExportDialog::ExportDiagramLine::ExportDiagramLine(Diagram *dia, QSize diagram_s
if (diagram_title.isEmpty()) diagram_title = QObject::tr("Folio sans titre"); if (diagram_title.isEmpty()) diagram_title = QObject::tr("Folio sans titre");
QString diagram_filename = diagram -> title(); QString diagram_filename = diagram -> title();
if (diagram_filename.isEmpty()) diagram_filename = QObject::tr("schema"); if (diagram_filename.isEmpty()) diagram_filename = QObject::tr("schema");
diagram_filename = QET::stringToFileName(diagram_index + "_" + diagram_filename); diagram_filename = QET::stringToFileName(diagram_index % "_" % diagram_filename);
title_label = new QLabel(diagram_title); title_label = new QLabel(diagram_title);
+18 -18
View File
@@ -54,24 +54,24 @@ ExportProperties::~ExportProperties()
void ExportProperties::toSettings(QSettings &settings, void ExportProperties::toSettings(QSettings &settings,
const QString &prefix) const const QString &prefix) const
{ {
settings.setValue(prefix + "path", settings.setValue(prefix % "path",
QDir::toNativeSeparators( QDir::toNativeSeparators(
destination_directory.absolutePath())); destination_directory.absolutePath()));
settings.setValue(prefix + "format", settings.setValue(prefix % "format",
format); format);
settings.setValue(prefix + "drawgrid", settings.setValue(prefix % "drawgrid",
draw_grid); draw_grid);
settings.setValue(prefix + "drawborder", settings.setValue(prefix % "drawborder",
draw_border); draw_border);
settings.setValue(prefix + "drawtitleblock", settings.setValue(prefix % "drawtitleblock",
draw_titleblock); draw_titleblock);
settings.setValue(prefix + "drawterminals", settings.setValue(prefix % "drawterminals",
draw_terminals); draw_terminals);
settings.setValue(prefix + "drawbgtransparent", settings.setValue(prefix % "drawbgtransparent",
draw_bg_transparent); draw_bg_transparent);
settings.setValue(prefix + "drawcoloredconductors", settings.setValue(prefix % "drawcoloredconductors",
draw_colored_conductors); draw_colored_conductors);
settings.setValue(prefix + "area", settings.setValue(prefix % "area",
QET::diagramAreaToString(exported_area)); QET::diagramAreaToString(exported_area));
} }
@@ -85,30 +85,30 @@ void ExportProperties::fromSettings(QSettings &settings,
QString export_path = QETApp::documentDir(); QString export_path = QETApp::documentDir();
destination_directory.setPath( destination_directory.setPath(
settings.value( settings.value(
prefix + "path", prefix % "path",
export_path).toString()); export_path).toString());
if (!destination_directory.exists()) if (!destination_directory.exists())
destination_directory.setPath(export_path); destination_directory.setPath(export_path);
format = settings.value(prefix + "format").toString(); format = settings.value(prefix % "format").toString();
draw_grid = settings.value(prefix + "drawgrid", draw_grid = settings.value(prefix % "drawgrid",
false).toBool(); false).toBool();
draw_border = settings.value(prefix + "drawborder", draw_border = settings.value(prefix % "drawborder",
true ).toBool(); true ).toBool();
draw_titleblock = settings.value(prefix + "drawtitleblock", draw_titleblock = settings.value(prefix % "drawtitleblock",
true ).toBool(); true ).toBool();
draw_terminals = settings.value(prefix + "drawterminals", draw_terminals = settings.value(prefix % "drawterminals",
false).toBool(); false).toBool();
draw_bg_transparent = settings.value(prefix + "drawbgtransparent", draw_bg_transparent = settings.value(prefix % "drawbgtransparent",
false).toBool(); false).toBool();
draw_colored_conductors = settings.value( draw_colored_conductors = settings.value(
prefix + "drawcoloredconductors", prefix % "drawcoloredconductors",
true ).toBool(); true ).toBool();
exported_area = QET::diagramAreaFromString( exported_area = QET::diagramAreaFromString(
settings.value( settings.value(
prefix + "area", prefix % "area",
"border").toString()); "border").toString());
} }
+39 -77
View File
@@ -55,43 +55,6 @@ void MachineInfo::send_info_to_debug()
<< QLibraryInfo::isDebugBuild(); << QLibraryInfo::isDebugBuild();
qInfo()<< "Qt library version:" qInfo()<< "Qt library version:"
<< QLibraryInfo::version(); << QLibraryInfo::version();
#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) // ### Qt 6: remove
qInfo()<< "Qt library location default prefix:"
<< QLibraryInfo::location(QLibraryInfo::PrefixPath);
qInfo()<< "Qt library location documentation:"
<< QLibraryInfo::location(QLibraryInfo::DocumentationPath);
qInfo()<< "Qt library location headers:"
<< QLibraryInfo::location(QLibraryInfo::HeadersPath);
qInfo()<< "Qt library location libraries:"
<< QLibraryInfo::location(QLibraryInfo::LibrariesPath);
qInfo()<< "Qt library location executables:"
<< QLibraryInfo::location(QLibraryInfo::LibraryExecutablesPath);
qInfo()<< "Qt library location Qt binaries:"
<< QLibraryInfo::location(QLibraryInfo::BinariesPath);
qInfo()<< "Qt library location Qt plugins:"
<< QLibraryInfo::location(QLibraryInfo::PluginsPath);
qInfo()<< "Qt library location installed QML extensions:"
<< QLibraryInfo::location(QLibraryInfo::ImportsPath);
qInfo()<< "Qt library location installed QML extensions:"
<< QLibraryInfo::location(QLibraryInfo::Qml2ImportsPath);
qInfo()<< "Qt library location dependent Qt data:"
<< QLibraryInfo::location(QLibraryInfo::ArchDataPath);
qInfo()<< "Qt library location independent Qt data:"
<< QLibraryInfo::location(QLibraryInfo::DataPath);
qInfo()<< "Qt library location translation:"
<< QLibraryInfo::location(QLibraryInfo::TranslationsPath);
qInfo()<< "Qt library location examples:"
<< QLibraryInfo::location(QLibraryInfo::ExamplesPath);
qInfo()<< "Qt library location Qt testcases:"
<< QLibraryInfo::location(QLibraryInfo::TestsPath);
#ifndef Q_OS_WIN
qInfo()<< "Qt library location Qt settings:"
<< QLibraryInfo::location(QLibraryInfo::SettingsPath);
#endif
#else
#if TODO_LIST
#pragma message("@TODO remove code for QT 6 or later")
#endif
qInfo()<< "Qt library path default prefix:" qInfo()<< "Qt library path default prefix:"
<< QLibraryInfo::path(QLibraryInfo::PrefixPath); << QLibraryInfo::path(QLibraryInfo::PrefixPath);
qInfo()<< "Qt library path documentation:" qInfo()<< "Qt library path documentation:"
@@ -123,34 +86,33 @@ void MachineInfo::send_info_to_debug()
#ifndef Q_OS_WIN #ifndef Q_OS_WIN
qInfo()<< "Qt library path Qt settings:" qInfo()<< "Qt library path Qt settings:"
<< QLibraryInfo::path(QLibraryInfo::SettingsPath); << QLibraryInfo::path(QLibraryInfo::SettingsPath);
#endif
#endif #endif
if (strlen(GIT_COMMIT_SHA)) { if (strlen(GIT_COMMIT_SHA)) {
qInfo() << "GitRevision " + QString(GIT_COMMIT_SHA); qInfo() << "GitRevision " % QString(GIT_COMMIT_SHA);
} }
qInfo()<< "QElectroTech V " + QetVersion::displayedVersion(); qInfo()<< "QElectroTech V " % QetVersion::displayedVersion();
qInfo()<< QObject::tr("Compilation : ") + pc.built.version; qInfo()<< QObject::tr("Compilation : ") % pc.built.version;
qInfo()<< "Built with Qt " + pc.built.QT qInfo()<< "Built with Qt " % pc.built.QT
+ " - " + pc.built.arch % " - " % pc.built.arch
+ " - Date : " + pc.built.date % " - Date : " % pc.built.date
+ " : " + pc.built.time; % " : " % pc.built.time;
qInfo()<< "Run with Qt "+ QString(qVersion()) qInfo()<< "Run with Qt " % QString(qVersion())
+ " using" % " using"
+ QString(" %1 thread(s)").arg(pc.cpu.ThreadCount); % QString(" %1 thread(s)").arg(pc.cpu.ThreadCount);
qInfo()<< "CPU : " + pc.cpu.info; qInfo()<< "CPU : " % pc.cpu.info;
qInfo()<< pc.ram.Total; qInfo()<< pc.ram.Total;
qInfo()<< pc.ram.Available; qInfo()<< pc.ram.Available;
qInfo()<< "GPU : " + pc.gpu.info; qInfo()<< "GPU : " % pc.gpu.info;
qInfo()<< "GPU RAM : " + pc.gpu.RAM; qInfo()<< "GPU RAM : " % pc.gpu.RAM;
qInfo()<< "OS : " + pc.os.type qInfo()<< "OS : " % pc.os.type
+ " - " + pc.cpu.Architecture % " - " % pc.cpu.Architecture
+ " - Version : "+pc.os.name % " - Version : " % pc.os.name
+ " - Kernel : "+pc.os.kernel; % " - Kernel : " % pc.os.kernel;
qInfo()<< ""; qInfo()<< "";
qInfo()<< " OS System language:"<< QLocale::system().name(); qInfo()<< " OS System language:"<< QLocale::system().name();
qInfo()<< " OS System Native Country Name:"<< QLocale::system().nativeCountryName(); qInfo()<< " OS System Native Country Name:"<< QLocale::system().nativeTerritoryName();
qInfo()<< " OS System Native Language Name:"<< QLocale::system().nativeLanguageName(); qInfo()<< " OS System Native Language Name:"<< QLocale::system().nativeLanguageName();
qInfo()<< ""; qInfo()<< "";
qInfo()<< " System language defined in QET configuration:"<< QString(QETApp::langFromSetting().toLatin1()); qInfo()<< " System language defined in QET configuration:"<< QString(QETApp::langFromSetting().toLatin1());
@@ -171,8 +133,8 @@ void MachineInfo::send_info_to_debug()
qInfo()<< " App Config Location:"<< QETApp::configDir(); qInfo()<< " App Config Location:"<< QETApp::configDir();
qInfo()<< " For data-files (user-/company-collections, titleblocks, etc.):"; qInfo()<< " For data-files (user-/company-collections, titleblocks, etc.):";
qInfo()<< " App Data Location:"<< QETApp::dataDir(); qInfo()<< " App Data Location:"<< QETApp::dataDir();
qInfo()<< " Directory for project stalefiles:"; qInfo()<< " Directory for project's autosave files (stalefiles):";
qInfo()<< " Generic Data Location:"<< QStandardPaths::writableLocation(QStandardPaths::GenericDataLocation) + "/stalefiles/QElectroTech/"; qInfo()<< " Autosave:"<< QETApp::autosaveDir() % "/autosave";
// qInfo()<< " App Local DataLocation:"<< QStandardPaths::writableLocation(QStandardPaths::ApplicationsLocation); // qInfo()<< " App Local DataLocation:"<< QStandardPaths::writableLocation(QStandardPaths::ApplicationsLocation);
// qInfo()<< " Home Location:"<< QStandardPaths::writableLocation(QStandardPaths::HomeLocation); // qInfo()<< " Home Location:"<< QStandardPaths::writableLocation(QStandardPaths::HomeLocation);
// qInfo()<< " Runtime Location:"<< QStandardPaths::writableLocation(QStandardPaths::RuntimeLocation); // qInfo()<< " Runtime Location:"<< QStandardPaths::writableLocation(QStandardPaths::RuntimeLocation);
@@ -188,7 +150,7 @@ void MachineInfo::send_info_to_debug()
QDirIterator it1(QETApp::commonElementsDir().toLatin1(),nameFilters, QDir::Files, QDirIterator::Subdirectories); QDirIterator it1(QETApp::commonElementsDir().toLatin1(),nameFilters, QDir::Files, QDirIterator::Subdirectories);
while (it1.hasNext()) while (it1.hasNext())
{ {
if(it1.next() > 0 ) if(it1.next() != "")
{ {
commomElementsDir ++; commomElementsDir ++;
} }
@@ -200,7 +162,7 @@ void MachineInfo::send_info_to_debug()
QDirIterator it2(QETApp::customElementsDir().toLatin1(), nameFilters, QDir::Files, QDirIterator::Subdirectories); QDirIterator it2(QETApp::customElementsDir().toLatin1(), nameFilters, QDir::Files, QDirIterator::Subdirectories);
while (it2.hasNext()) while (it2.hasNext())
{ {
if(it2.next() > 0 ) if(it2.next() != "")
{ {
customElementsDir ++; customElementsDir ++;
} }
@@ -211,7 +173,7 @@ void MachineInfo::send_info_to_debug()
QDirIterator it3(QETApp::companyElementsDir().toLatin1(), nameFilters, QDir::Files, QDirIterator::Subdirectories); QDirIterator it3(QETApp::companyElementsDir().toLatin1(), nameFilters, QDir::Files, QDirIterator::Subdirectories);
while (it3.hasNext()) while (it3.hasNext())
{ {
if(it3.next() > 0 ) if(it3.next() != "")
{ {
companyElementsDir ++; companyElementsDir ++;
} }
@@ -452,29 +414,29 @@ int32_t MachineInfo::i_max_screen_height() {
*/ */
QString MachineInfo::compilation_info() QString MachineInfo::compilation_info()
{ {
QString compilation_info = "<br />" + QObject::tr("Compilation : "); QString compilation_info = "<br />" % QObject::tr("Compilation : ");
compilation_info +=pc.built.version; compilation_info +=pc.built.version;
compilation_info += "<br>Built with Qt " + pc.built.QT; compilation_info += "<br>Built with Qt " % pc.built.QT;
compilation_info += " - " + pc.built.arch; compilation_info += " - " % pc.built.arch;
compilation_info += " - Date : " + pc.built.date; compilation_info += " - Date : " % pc.built.date;
compilation_info += " : " + pc.built.time; compilation_info += " : " % pc.built.time;
if (strlen(GIT_COMMIT_SHA)) { if (strlen(GIT_COMMIT_SHA)) {
compilation_info += "<br> Git Revision : " + QString(GIT_COMMIT_SHA); compilation_info += "<br> Git Revision : " % QString(GIT_COMMIT_SHA);
} }
compilation_info += " <br>Run with Qt " + QString(qVersion()); compilation_info += " <br>Run with Qt " % QString(qVersion());
compilation_info += " using" compilation_info += " using"
+ QString(" %1 thread(s)").arg(pc.cpu.ThreadCount); + QString(" %1 thread(s)").arg(pc.cpu.ThreadCount);
compilation_info += "<br> CPU : " + pc.cpu.info; compilation_info += "<br> CPU : " % pc.cpu.info;
compilation_info += "<br>" + pc.ram.Total; compilation_info += "<br>" % pc.ram.Total;
compilation_info += "<br>" + pc.ram.Available; compilation_info += "<br>" % pc.ram.Available;
compilation_info += "<br>GPU : " + pc.gpu.info; compilation_info += "<br>GPU : " % pc.gpu.info;
compilation_info += "<br>GPU RAM : " + pc.gpu.RAM; compilation_info += "<br>GPU RAM : " % pc.gpu.RAM;
compilation_info += "<br> OS : " + pc.os.type; compilation_info += "<br> OS : " % pc.os.type;
compilation_info += " - " + pc.cpu.Architecture; compilation_info += " - " % pc.cpu.Architecture;
compilation_info += " - Version : "+pc.os.name; compilation_info += " - Version : " % pc.os.name;
compilation_info += "</br> - Kernel : "+pc.os.kernel; compilation_info += "</br> - Kernel : " % pc.os.kernel;
compilation_info += "<br> *** Qt screens *** </br>"; compilation_info += "<br> *** Qt screens *** </br>";
for (int ii = 0; ii < pc.screen.count; ++ii) { for (int ii = 0; ii < pc.screen.count; ++ii) {
+3 -3
View File
@@ -84,12 +84,12 @@ class MachineInfo
QString version= QString version=
#ifdef __GNUC__ #ifdef __GNUC__
#ifdef __APPLE_CC__ #ifdef __APPLE_CC__
"CLANG " + QString(__clang_version__); "CLANG " % QString(__clang_version__);
#else #else
"GCC " + QString(__VERSION__); "GCC " % QString(__VERSION__);
#endif #endif
#elif defined(Q_CC_MSVC) #elif defined(Q_CC_MSVC)
"MSVC " + QString(QT_STRINGIFY(_MSC_FULL_VER)); "MSVC " % QString(QT_STRINGIFY(_MSC_FULL_VER));
#endif #endif
QString QT=QString(QT_VERSION_STR); QString QT=QString(QT_VERSION_STR);
QString date=QString(__DATE__); QString date=QString(__DATE__);
+2 -2
View File
@@ -23,7 +23,7 @@
#include "utils/qetsettings.h" #include "utils/qetsettings.h"
#include <QStyleFactory> #include <QStyleFactory>
#include <QtConcurrentRun> #include <QThreadPool>
/** /**
@brief myMessageOutput @brief myMessageOutput
@@ -216,7 +216,7 @@ QGuiApplication::setHighDpiScaleFactorRoundingPolicy(QetSettings::hdpiScaleFacto
QObject::connect(&app, &SingleApplication::receivedMessage, QObject::connect(&app, &SingleApplication::receivedMessage,
&qetapp, &QETApp::receiveMessage); &qetapp, &QETApp::receiveMessage);
QtConcurrent::run([=]() QThreadPool::globalInstance()->start([=]()
{ {
// for debugging // for debugging
qInstallMessageHandler(myMessageOutput); qInstallMessageHandler(myMessageOutput);
+7 -126
View File
@@ -24,13 +24,6 @@
#include "ui_projectprintwindow.h" #include "ui_projectprintwindow.h"
#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) // ### Qt 6: remove
# include <QDesktopWidget>
#else
# if TODO_LIST
# pragma message("@TODO remove code for QT 6 or later")
# endif
#endif
#include <QMarginsF> #include <QMarginsF>
#include <QPageSetupDialog> #include <QPageSetupDialog>
#include <QPainter> #include <QPainter>
@@ -50,14 +43,7 @@ void ProjectPrintWindow::launchDialog(QETProject *project, QPrinter::OutputForma
auto printer_ = new QPrinter(); auto printer_ = new QPrinter();
QPrinter printer(QPrinter::HighResolution); QPrinter printer(QPrinter::HighResolution);
printer_->setDocName(ProjectPrintWindow::docName(project)); printer_->setDocName(ProjectPrintWindow::docName(project));
#if QT_VERSION < QT_VERSION_CHECK(5, 15, 1) // ### Qt 6: remove
printer_->setOrientation(QPrinter::Landscape);
#else
#if TODO_LIST
#pragma message("@TODO remove code for QT 6 or later")
# endif
printer_->setPageOrientation(QPageLayout::Landscape); printer_->setPageOrientation(QPageLayout::Landscape);
#endif
if (format == QPrinter::NativeFormat) //To physical printer if (format == QPrinter::NativeFormat) //To physical printer
{ {
@@ -66,14 +52,7 @@ void ProjectPrintWindow::launchDialog(QETProject *project, QPrinter::OutputForma
print_dialog.setWindowFlags(Qt::Sheet); print_dialog.setWindowFlags(Qt::Sheet);
#endif #endif
print_dialog.setWindowTitle(tr("Options d'impression", "window title")); print_dialog.setWindowTitle(tr("Options d'impression", "window title"));
#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) // ### Qt 6: remove print_dialog.setOptions(QAbstractPrintDialog::PrintShowPageSize);
print_dialog.setEnabledOptions(QAbstractPrintDialog::PrintShowPageSize);
#else
#if TODO_LIST
#pragma message("@TODO remove code for QT 6 or later")
#endif
qDebug()<<"Help code for QT 6 or later";
#endif
if (print_dialog.exec() == QDialog::Rejected) { if (print_dialog.exec() == QDialog::Rejected) {
delete printer_; delete printer_;
return; return;
@@ -82,7 +61,7 @@ void ProjectPrintWindow::launchDialog(QETProject *project, QPrinter::OutputForma
else //To pdf file else //To pdf file
{ {
auto dir_path = project->currentDir(); auto dir_path = project->currentDir();
QString file_name = QDir::toNativeSeparators(QDir::cleanPath(dir_path + "/" + printer_->docName())); QString file_name = QDir::toNativeSeparators(QDir::cleanPath(dir_path % "/" % printer_->docName()));
if (!file_name.endsWith(".pdf")) { if (!file_name.endsWith(".pdf")) {
file_name.append(".pdf"); file_name.append(".pdf");
} }
@@ -190,7 +169,6 @@ ProjectPrintWindow::~ProjectPrintWindow()
*/ */
void ProjectPrintWindow::requestPaint() void ProjectPrintWindow::requestPaint()
{ {
#if QT_VERSION >= QT_VERSION_CHECK(5, 6, 0)
#ifdef Q_OS_WIN #ifdef Q_OS_WIN
#ifdef QT_DEBUG #ifdef QT_DEBUG
qDebug() << "--"; qDebug() << "--";
@@ -208,7 +186,6 @@ void ProjectPrintWindow::requestPaint()
qDebug() << "--"; qDebug() << "--";
#endif #endif
#endif #endif
#endif
if (!m_project->diagrams().count()) { if (!m_project->diagrams().count()) {
return; return;
@@ -259,15 +236,8 @@ void ProjectPrintWindow::printDiagram(Diagram *diagram, bool fit_page, QPainter
diagram->render(painter, QRectF(), diagram_rect, Qt::KeepAspectRatio); diagram->render(painter, QRectF(), diagram_rect, Qt::KeepAspectRatio);
} else { } else {
// Print on one or several pages // Print on one or several pages
#if QT_VERSION < QT_VERSION_CHECK(5, 15, 1) // ### Qt 6: remove auto printed_rect = full_page ? printer->paperRect(QPrinter::Millimeter)
auto printed_rect = full_page ? printer->paperRect() : printer->pageRect(); : printer->pageRect(QPrinter::Millimeter);
#else
#if TODO_LIST
#pragma message("@TODO remove code for QT 6 or later")
#endif
qDebug()<<"Help code for QT 6 or later";
auto printed_rect = full_page ? printer->paperRect(QPrinter::Millimeter) : printer->pageRect(QPrinter::Millimeter);
#endif
auto used_width = printed_rect.width(); auto used_width = printed_rect.width();
auto used_height = printed_rect.height(); auto used_height = printed_rect.height();
auto h_pages_count = horizontalPagesCount(diagram, option, full_page); auto h_pages_count = horizontalPagesCount(diagram, option, full_page);
@@ -276,24 +246,17 @@ void ProjectPrintWindow::printDiagram(Diagram *diagram, bool fit_page, QPainter
QVector<QVector<QRect>> page_grid; QVector<QVector<QRect>> page_grid;
//The diagram is printed on a matrix of sheet //The diagram is printed on a matrix of sheet
//scrolls through the rows of the matrix //scrolls through the rows of the matrix
auto y_offset = 0; qreal y_offset = 0;
for (auto i=0 ; i<v_pages_count ; ++i) for (auto i=0 ; i<v_pages_count ; ++i)
{ {
page_grid << QVector<QRect>(); page_grid << QVector<QRect>();
//scrolls through the lines of sheet //scrolls through the lines of sheet
auto x_offset = 0; qreal x_offset = 0;
for (auto j=0 ; j<h_pages_count ; ++j) for (auto j=0 ; j<h_pages_count ; ++j)
{ {
#if QT_VERSION < QT_VERSION_CHECK(5, 15, 1) // ### Qt 6: remove
page_grid.last() << QRect(QPoint(x_offset, y_offset), page_grid.last() << QRect(QPoint(x_offset, y_offset),
QSize(qMin(used_width, diagram_rect.width() - x_offset), QSize(qMin(used_width, diagram_rect.width() - x_offset),
qMin(used_height, diagram_rect.height() - y_offset))); qMin(used_height, diagram_rect.height() - y_offset)));
#else
#if TODO_LIST
#pragma message("@TODO remove code for QT 6 or later")
#endif
qDebug()<<"Help code for QT 6 or later";
#endif
x_offset += used_width; x_offset += used_width;
} }
y_offset += used_height; y_offset += used_height;
@@ -358,17 +321,10 @@ int ProjectPrintWindow::horizontalPagesCount(
Diagram *diagram, const ExportProperties &option, bool full_page) const Diagram *diagram, const ExportProperties &option, bool full_page) const
{ {
QRect printable_area; QRect printable_area;
#if QT_VERSION < QT_VERSION_CHECK(5, 15, 1) // ### Qt 6: remove
printable_area = full_page ? m_printer->paperRect() : m_printer->pageRect();
#else
#if TODO_LIST
#pragma message("@TODO remove code for QT 6 or later")
# endif
printable_area = printable_area =
full_page ? full_page ?
m_printer->pageLayout().fullRectPixels(m_printer->resolution()) : m_printer->pageLayout().fullRectPixels(m_printer->resolution()) :
m_printer->pageLayout().paintRectPixels(m_printer->resolution()); m_printer->pageLayout().paintRectPixels(m_printer->resolution());
#endif
QRect diagram_rect = diagramRect(diagram, option); QRect diagram_rect = diagramRect(diagram, option);
int h_pages_count = int(ceil(qreal(diagram_rect.width()) / qreal(printable_area.width()))); int h_pages_count = int(ceil(qreal(diagram_rect.width()) / qreal(printable_area.width())));
@@ -387,17 +343,10 @@ int ProjectPrintWindow::verticalPagesCount(
Diagram *diagram, const ExportProperties &option, bool full_page) const Diagram *diagram, const ExportProperties &option, bool full_page) const
{ {
QRect printable_area; QRect printable_area;
#if QT_VERSION < QT_VERSION_CHECK(5, 15, 1) // ### Qt 6: remove
printable_area = full_page ? m_printer->paperRect() : m_printer->pageRect();
#else
#if TODO_LIST
#pragma message("@TODO remove code for QT 6 or later")
# endif
printable_area = printable_area =
full_page ? full_page ?
m_printer->pageLayout().fullRectPixels(m_printer->resolution()) : m_printer->pageLayout().fullRectPixels(m_printer->resolution()) :
m_printer->pageLayout().paintRectPixels(m_printer->resolution()); m_printer->pageLayout().paintRectPixels(m_printer->resolution());
#endif
QRect diagram_rect = diagramRect(diagram, option); QRect diagram_rect = diagramRect(diagram, option);
int v_pages_count = int(ceil(qreal(diagram_rect.height()) / qreal(printable_area.height()))); int v_pages_count = int(ceil(qreal(diagram_rect.height()) / qreal(printable_area.height())));
@@ -468,43 +417,6 @@ void ProjectPrintWindow::loadPageSetupForCurrentPrinter()
} }
settings.beginGroup(printer_section); settings.beginGroup(printer_section);
#if QT_VERSION < QT_VERSION_CHECK(5, 15, 1) // ### Qt 6: remove
if (settings.contains("orientation")) {
QString value = settings.value("orientation", "landscape").toString();
m_printer -> setOrientation(value == "landscape" ? QPrinter::Landscape : QPrinter::Portrait);
}
if (settings.contains("papersize")) {
int value = settings.value("papersize", QPrinter::A4).toInt();
if (value == QPrinter::Custom) {
bool w_ok, h_ok;
int w = settings.value("customwidthmm", -1).toInt(&w_ok);
int h = settings.value("customheightmm", -1).toInt(&h_ok);
if (w_ok && h_ok && w != -1 && h != -1) {
m_printer -> setPaperSize(QSizeF(w, h), QPrinter::Millimeter);
}
} else if (value < QPrinter::Custom) {
m_printer -> setPaperSize(static_cast<QPrinter::PaperSize>(value));
}
}
qreal margins[4];
m_printer -> getPageMargins(&margins[0], &margins[1], &margins[2], &margins[3], QPrinter::Millimeter);
QStringList margins_names(QStringList() << "left" << "top" << "right" << "bottom");
for (int i = 0 ; i < 4 ; ++ i) {
bool conv_ok;
qreal value = settings.value("margin" + margins_names.at(i), -1.0).toReal(&conv_ok);
if (conv_ok && value != -1.0) margins[i] = value;
}
m_printer->setPageMargins(
margins[0],
margins[1],
margins[2],
margins[3],
QPrinter::Millimeter);
#else
#if TODO_LIST
#pragma message("@TODO remove code for QT 6 or later")
# endif
if (settings.contains("orientation")) if (settings.contains("orientation"))
{ {
QString value = settings.value("orientation", "landscape").toString(); QString value = settings.value("orientation", "landscape").toString();
@@ -550,14 +462,13 @@ void ProjectPrintWindow::loadPageSetupForCurrentPrinter()
for (int i = 0; i < 4; ++i) for (int i = 0; i < 4; ++i)
{ {
bool conv_ok; bool conv_ok;
qreal value = settings.value("margin" + margins_names.at(i), -1.0) qreal value = settings.value("margin" % margins_names.at(i), -1.0)
.toReal(&conv_ok); .toReal(&conv_ok);
if (conv_ok && value != -1.0) margins[i] = value; if (conv_ok && value != -1.0) margins[i] = value;
} }
m_printer->setPageMargins( m_printer->setPageMargins(
QMarginsF(margins[0], margins[1], margins[2], margins[3]), QMarginsF(margins[0], margins[1], margins[2], margins[3]),
QPageLayout::Millimeter); QPageLayout::Millimeter);
#endif
m_printer->setFullPage( m_printer->setFullPage(
settings.value("fullpage", "false").toString() == "true"); settings.value("fullpage", "false").toString() == "true");
@@ -574,35 +485,6 @@ void ProjectPrintWindow::savePageSetupForCurrentPrinter()
settings.beginGroup("printers"); settings.beginGroup("printers");
settings.beginGroup(printer_section); settings.beginGroup(printer_section);
#if QT_VERSION < QT_VERSION_CHECK(5, 15, 1) // ### Qt 6: remove
settings.setValue("orientation", m_printer -> orientation() == QPrinter::Portrait ? "portrait" : "landscape");
settings.setValue("papersize", int(m_printer -> paperSize()));
if (m_printer -> paperSize() == QPrinter::Custom) {
QSizeF size = m_printer -> paperSize(QPrinter::Millimeter);
settings.setValue("customwidthmm", size.width());
settings.setValue("customheightmm", size.height());
} else {
settings.remove("customwidthmm");
settings.remove("customheightmm");
}
qreal left, top, right, bottom;
m_printer
->getPageMargins(&left, &top, &right, &bottom, QPrinter::Millimeter);
settings.setValue("marginleft", left);
settings.setValue("margintop", top);
settings.setValue("marginright", right);
settings.setValue("marginbottom", bottom);
settings.setValue("fullpage", m_printer->fullPage() ? "true" : "false");
settings.endGroup();
settings.endGroup();
settings.sync();
#else
# if TODO_LIST
# pragma message("@TODO remove code for QT 6 or later")
# endif
qDebug() << "Help code for QT 6 or later";
settings.setValue( settings.setValue(
"orientation", "orientation",
m_printer->pageLayout().orientation() == QPageLayout::Portrait ? m_printer->pageLayout().orientation() == QPageLayout::Portrait ?
@@ -633,7 +515,6 @@ void ProjectPrintWindow::savePageSetupForCurrentPrinter()
settings.endGroup(); settings.endGroup();
settings.endGroup(); settings.endGroup();
settings.sync(); settings.sync();
#endif
} }
/** /**
+6 -6
View File
@@ -44,17 +44,17 @@ QDomElement UserProperties::toXml(QDomDocument &xml_document) const
for (auto i = m_properties.begin(); i != m_properties.end(); ++i) for (auto i = m_properties.begin(); i != m_properties.end(); ++i)
{ {
auto type = i.value().type(); auto type = i.value().typeId();
switch(type) { switch(type) {
case QVariant::Type::String: case QMetaType::QString:
up.appendChild(QETXML::createXmlProperty(i.key(), i.value().toString())); break; up.appendChild(QETXML::createXmlProperty(i.key(), i.value().toString())); break;
case QVariant::Type::Int: case QMetaType::Int:
up.appendChild(QETXML::createXmlProperty(i.key(), i.value().toInt())); break; up.appendChild(QETXML::createXmlProperty(i.key(), i.value().toInt())); break;
case QVariant::Type::Double: case QMetaType::Double:
up.appendChild(QETXML::createXmlProperty(i.key(), i.value().toDouble())); break; up.appendChild(QETXML::createXmlProperty(i.key(), i.value().toDouble())); break;
case QVariant::Type::Bool: case QMetaType::Bool:
up.appendChild(QETXML::createXmlProperty(i.key(), i.value().toBool())); break; up.appendChild(QETXML::createXmlProperty(i.key(), i.value().toBool())); break;
case QVariant::Type::Color: case QMetaType::QColor:
up.appendChild(QETXML::createXmlProperty(i.key(), QColor(i.value().value<QColor>()))); break; up.appendChild(QETXML::createXmlProperty(i.key(), QColor(i.value().value<QColor>()))); break;
default: default:
break; break;
-5
View File
@@ -32,10 +32,6 @@
en orientation. Si la chaine fait plusieurs caracteres, seul le en orientation. Si la chaine fait plusieurs caracteres, seul le
premier est pris en compte. En cas d'incoherence, Qet::North est premier est pris en compte. En cas d'incoherence, Qet::North est
retourne. retourne.
Used to convert a string of characters (n, s, e or w)
into orientation. If the string is made up of several characters,
only the only the first is taken into account. In the event of an
inconsistency, Qet::North is returned.
@param s Chaine de caractere cense representer une orientation @param s Chaine de caractere cense representer une orientation
@return l'orientation designee par la chaine de caractere @return l'orientation designee par la chaine de caractere
*/ */
@@ -64,7 +60,6 @@ QString Qet::orientationToString(Qet::Orientation o) {
/** /**
Indique si deux orientations de Borne sont sur le meme axe (Vertical / Horizontal). Indique si deux orientations de Borne sont sur le meme axe (Vertical / Horizontal).
Indicates whether two terminal orientations are on the same axis (Vertical / Horizontal).
@param a La premiere orientation de Borne @param a La premiere orientation de Borne
@param b La seconde orientation de Borne @param b La seconde orientation de Borne
@return Un booleen a true si les deux orientations de bornes sont sur le meme axe @return Un booleen a true si les deux orientations de bornes sont sur le meme axe
+26 -13
View File
@@ -45,7 +45,7 @@
#define STRINGIFY(x) #x #define STRINGIFY(x) #x
#include <QProcessEnvironment> #include <QProcessEnvironment>
#include <QRegularExpression> #include <QRegularExpression>
#ifdef BUILD_WITHOUT_KF5 #ifdef BUILD_WITHOUT_KF6
#else #else
# include <KAutoSaveFile> # include <KAutoSaveFile>
#endif #endif
@@ -222,6 +222,23 @@ void QETApp::setLanguage(const QString &desired_language) {
// load translations for the QET application // load translations for the QET application
// charge les traductions pour l'application QET // charge les traductions pour l'application QET
#ifdef QMFILES_AS_RESOURCE
if (!qetTranslator.load(QLocale(desired_language), "qet" "_", ":/lang")) {
/* in case of failure,
* we fall back on the native channels for French
* en cas d'echec,
* on retombe sur les chaines natives pour le francais
*/
if (desired_language != "fr") {
// use of the English version by default
// utilisation de la version anglaise par defaut
if(!qetTranslator.load(QLocale(desired_language), "qet", "_", ":/lang"))
qWarning() << "failed to load"
<< ":/lang/qet_en.qm" << "(" << __FILE__
<< __LINE__ << __FUNCTION__ << ")";
}
}
#else
if (!qetTranslator.load("qet_" + desired_language, languages_path)) { if (!qetTranslator.load("qet_" + desired_language, languages_path)) {
/* in case of failure, /* in case of failure,
* we fall back on the native channels for French * we fall back on the native channels for French
@@ -237,6 +254,8 @@ void QETApp::setLanguage(const QString &desired_language) {
<< __LINE__ << __FUNCTION__ << ")"; << __LINE__ << __FUNCTION__ << ")";
} }
} }
#endif
qInfo() << "Loaded language file:" << qetTranslator.filePath();
qApp->installTranslator(&qetTranslator); qApp->installTranslator(&qetTranslator);
QString ltr_special_string = tr( QString ltr_special_string = tr(
@@ -1234,7 +1253,7 @@ bool QETApp::closeEveryEditor()
/** /**
@brief QETApp::diagramTextsFont @brief QETApp::diagramTextsFont
The font to use The font to use
By default the font is "Sans Serif" and size 9. By default the font is "sans Serif" and size 9.
@param size : the size of font @param size : the size of font
@return the font to use @return the font to use
*/ */
@@ -1243,22 +1262,16 @@ QFont QETApp::diagramTextsFont(qreal size)
QSettings settings; QSettings settings;
//Font to use //Font to use
QString diagram_texts_family = settings.value("diagramitemfont", QString diagram_texts_family = settings.value("diagramfont",
"Sans Serif").toString(); "Sans Serif").toString();
qreal diagram_texts_size = settings.value("diagramitemsize", qreal diagram_texts_size = settings.value("diagramsize",
9.0).toDouble(); 9.0).toDouble();
auto diagram_texts_item_weight =
static_cast<QFont::Weight>(
settings.value("diagramitemweight", QFont::Normal).toInt());
QString diagram_texts_item_style = settings.value("diagramitemstyle").toString();
if (size != -1.0) { if (size != -1.0) {
diagram_texts_size = size; diagram_texts_size = size;
} }
QFont diagram_texts_font = QFont(diagram_texts_family); QFont diagram_texts_font = QFont(diagram_texts_family);
diagram_texts_font.setPointSizeF(diagram_texts_size); diagram_texts_font.setPointSizeF(diagram_texts_size);
diagram_texts_font.setWeight(diagram_texts_item_weight);
diagram_texts_font.setStyleName(diagram_texts_item_style);
if (diagram_texts_size <= 4.0) { if (diagram_texts_size <= 4.0) {
diagram_texts_font.setWeight(QFont::Light); diagram_texts_font.setWeight(QFont::Light);
} }
@@ -1266,7 +1279,7 @@ QFont QETApp::diagramTextsFont(qreal size)
} }
/** /**
@brief QETApp::diagramTextsItemFont @brief QETApp::diagramTextsItemFont
the font to use in independent text items the font for to use in independent text item
@param size of font @param size of font
@return @return
*/ */
@@ -1281,7 +1294,7 @@ QFont QETApp::diagramTextsItemFont(qreal size)
9.0).toDouble(); 9.0).toDouble();
auto diagram_texts_item_weight = auto diagram_texts_item_weight =
static_cast<QFont::Weight>( static_cast<QFont::Weight>(
settings.value("diagramitemweight", QFont::Normal).toInt()); settings.value("diagramitemweight").toInt());
QString diagram_texts_item_style = settings.value("diagramitemstyle", QString diagram_texts_item_style = settings.value("diagramitemstyle",
"normal").toString(); "normal").toString();
@@ -2374,7 +2387,7 @@ void QETApp::buildSystemTrayMenu()
*/ */
void QETApp::checkBackupFiles() void QETApp::checkBackupFiles()
{ {
#ifdef BUILD_WITHOUT_KF5 #ifdef BUILD_WITHOUT_KF6
return; return;
#else #else
QList<KAutoSaveFile *> stale_files = KAutoSaveFile::allStaleFiles(); QList<KAutoSaveFile *> stale_files = KAutoSaveFile::allStaleFiles();
+4 -4
View File
@@ -46,7 +46,7 @@
#include "ui/diagrameditorhandlersizewidget.h" #include "ui/diagrameditorhandlersizewidget.h"
#include "TerminalStrip/ui/addterminalstripitemdialog.h" #include "TerminalStrip/ui/addterminalstripitemdialog.h"
#ifdef BUILD_WITHOUT_KF5 #ifdef BUILD_WITHOUT_KF6
#else #else
# include <KAutoSaveFile> # include <KAutoSaveFile>
#endif #endif
@@ -1597,7 +1597,7 @@ void QETDiagramEditor::slot_updateUndoStack()
/** /**
@brief QETDiagramEditor::slot_updateComplexActions @brief QETDiagramEditor::slot_updateComplexActions
Manage the actions that need some conditions to be enabled or not. Manage the actions who need some conditions to be enable or not.
This method does nothing if there is no project opened This method does nothing if there is no project opened
*/ */
void QETDiagramEditor::slot_updateComplexActions() void QETDiagramEditor::slot_updateComplexActions()
@@ -1633,7 +1633,7 @@ void QETDiagramEditor::slot_updateComplexActions()
int selected_elements_count = dc.count(DiagramContent::Elements); int selected_elements_count = dc.count(DiagramContent::Elements);
m_find_element->setEnabled(selected_elements_count == 1); m_find_element->setEnabled(selected_elements_count == 1);
//Actions that need items (elements, conductors, texts...) selected, to be enabled //Action that need items (elements, conductors, texts...) selected, to be enabled
bool copiable_items = dc.hasCopiableItems(); bool copiable_items = dc.hasCopiableItems();
bool deletable_items = dc.hasDeletableItems(); bool deletable_items = dc.hasDeletableItems();
m_cut -> setEnabled(!ro && copiable_items); m_cut -> setEnabled(!ro && copiable_items);
@@ -1892,7 +1892,7 @@ bool QETDiagramEditor::drawGrid() const
return m_draw_grid->isChecked(); return m_draw_grid->isChecked();
} }
#ifdef BUILD_WITHOUT_KF5 #ifdef BUILD_WITHOUT_KF6
#else #else
/** /**
@brief QETDiagramEditor::openBackupFiles @brief QETDiagramEditor::openBackupFiles
+4 -2
View File
@@ -43,7 +43,7 @@ class DiagramPropertiesEditorDockWidget;
class ElementsCollectionWidget; class ElementsCollectionWidget;
class AutoNumberingDockWidget; class AutoNumberingDockWidget;
#ifdef BUILD_WITHOUT_KF5 #ifdef BUILD_WITHOUT_KF6
#else #else
class KAutoSaveFile; class KAutoSaveFile;
#endif #endif
@@ -69,7 +69,7 @@ class QETDiagramEditor : public QETMainWindow
ProjectView *currentProjectView() const; ProjectView *currentProjectView() const;
QETProject *currentProject() const; QETProject *currentProject() const;
bool drawGrid() const; bool drawGrid() const;
#ifdef BUILD_WITHOUT_KF5 #ifdef BUILD_WITHOUT_KF6
#else #else
void openBackupFiles (QList<KAutoSaveFile *> backup_files); void openBackupFiles (QList<KAutoSaveFile *> backup_files);
#endif #endif
@@ -195,7 +195,9 @@ class QETDiagramEditor : public QETMainWindow
*m_terminal_strip_dialog = nullptr, ///<Launch terminal strip dialog *m_terminal_strip_dialog = nullptr, ///<Launch terminal strip dialog
*m_project_terminalBloc, ///< generate terminal block *m_project_terminalBloc, ///< generate terminal block
*m_project_export_conductor_num,///<Export the wire num to csv *m_project_export_conductor_num,///<Export the wire num to csv
#ifdef QET_EXPORT_PROJECT_DB
*m_export_project_db, ///Export to file the internal database of the current project *m_export_project_db, ///Export to file the internal database of the current project
#endif
*m_tile_window, ///< Show MDI subwindows as tile *m_tile_window, ///< Show MDI subwindows as tile
*m_cascade_window, ///< Show MDI subwindows as cascade *m_cascade_window, ///< Show MDI subwindows as cascade
*m_previous_window, ///< Switch to the previous document *m_previous_window, ///< Switch to the previous document

Some files were not shown because too many files have changed in this diff Show More