Compare commits

...

15 Commits

Author SHA1 Message Date
joshua
4e695de914 chore : Add message box for advise use hpdi round factor is unsafe
Add a message box to advise user that use a hdpi round factor can cause
strange render according to :
1 - the selected value
2 - the dpi of the screen
3 - Edit the project on another computer and/or screen who don't have
the same parameters as point 1 and 2.
2025-11-14 21:23:29 +01:00
plc-user
3803834d6d re-add deleted paragraph and sort language entries alphabetically 2025-11-04 21:17:23 +01:00
Laurent Trinques
78a26f9175 Update Catalan Translation, thanks Antoni 2025-11-04 15:06:07 +01:00
Laurent Trinques
a990daaf9e Update Catalan translation, thanks Antoni 2025-10-31 10:04:18 +01:00
plc-user
3b7a8a17e4 update "osifont.ttf" from upstream 2025-10-30 18:26:03 +01:00
Laurent Trinques
9e78dc56a8 git submodule update --remote elements 2025-10-28 13:25:44 +01:00
joshua
3cf9095899 refactor[diagram editor] close bug.
Close bug report #324
https://qelectrotech.org/bugtracker/view.php?id=324

See commit #1b671990ee8435616725afdffba438fdfcd18069
2025-10-20 23:31:48 +02:00
joshua
3a1398d752 refactor[diagram editor]: remove unused include 2025-10-20 23:09:03 +02:00
joshua
67a7d277f4 refactor(diagram editor) : remove unused code 2025-10-20 23:02:52 +02:00
joshua
e26f7fdaaa refactor[deiagram editor]: mutualize code.
The features used to jump to linked element and xref now use the same
function.
2025-10-20 22:58:12 +02:00
joshua
f74fed9f3f refactor(diagram editor): remove unused checkbox
Remove the checkbox "export terminal in nomenclature" in the general
configuration page because it's a dead code.
2025-10-20 22:10:39 +02:00
plc-user
410c9293d1 adjust variable-names and comments; minor change in length-compare of conductor-segments 2025-10-19 15:48:03 +02:00
plc-user
07c34d7358 add and correct English comments 2025-10-19 15:37:07 +02:00
plc-user
6d7d1ea23b NamesList: Set empty string for name, when no name is set
This should fix an issue with empty fields in titleblocks.
2025-10-19 15:09:24 +02:00
Laurent Trinques
58339f9016 Fix copyright years 2025-10-17 09:58:39 +02:00
39 changed files with 2658 additions and 2546 deletions

30
CREDIT
View File

@@ -1,3 +1,33 @@
[ca]
Gràcies a Qt Software per la biblioteca Qt ( http://www.qtsoftware.com/ ), amb llicència GNU/GPL.
Gràcies al projecte KDE ( http://www.kde.org/ ).
Gràcies a Loic per les seves explicacions d'ordre matemàtic.
Gràcies a Remi Collet pels paquets Fedora.
Gràcies a Laurent Trinques pels paquets Debian.
Gràcies a `trem' pels paquets Mandriva.
Gràcies a TuxFamily ( http://tuxfamily.org/ ) per a l'allotjament del projecte.
Gràcies a `Nishiki' pels seus elements i el seu suport suport.
Gràcies a qtcentre.org per la seva classe SingleApplication.
Gràcies a Alfredo Carreto per les seves traduccions i correccions al castellà ( http://electronicosmx.net )
Gràcies a 'Dr.Slump' et Sivio pour leurs traductions a l'italià
Gràcies a Jose Carlos Martins per les seves traduccions al portuguès
Gràcies a Pavel Fric per les seves traduccions al txec
Gràcies a Pawel Smiech per les seves traduccions al polonès
Gràcies a Yuriy Litkevich per les seves traduccions al rus
Gràcies a Youssef Ouamalkran i Antoni Mirabete per les seves traduccions al català
Gràcies a Gabi Mandoc per les seves traduccions al romanès
Gràcies a Markus Budde i Jonas Stein et Noah Braden per les seves traduccions a l'alemany
Gràcies a Mohamed Souabni per les seves traduccions a l'àrab
Gràcies a Uroš Platiše per les seves traduccions a l'eslovè
Gràcies a Antun Marakovic per les seves traduccions al croat
Gràcies a Nikos Papadopoylos && Yannis Gyftomitros per les seves traduccions al grec
Gràcies a Markos Chandras pels paquets Gentoo
Gràcies a David pels paquets Slackware
Gràcies a Chipsterjulien pels paquets Archlinux AUR
Gràcies a Elbert de NL pels paquets OS/2
Gràcies a Zloidemon pels paquets (port GCC)
Gràcies a Mrbit per ebuild els paquets Gentoo
[en]
Thanks to Qt Software for their Qt library ( http://www.qtsoftware.com/ ), licensed under GNU/GPL.
Thanks to the KDE project ( http://www.kde.org/ ).

View File

@@ -163,6 +163,7 @@ http://creativecommons.org/licenses/by/3.0/ ή στείλτε μια επιστ
Commons, 171 Second Street, Suite 300, San Francisco, California, 94105, USA.
[nl]
De elementen collectie voorzien, samen met QElectroTech wordt geleverd als en
zonder enige garantie van geschiktheid voor uw doel of werk.
Het gebruik, de wijziging en de integratie van de elementen in elektrische
@@ -177,7 +178,8 @@ http://creativecommons.org/licenses/by/3.0/ of stuur een brief naar Creative
Commons, 171 Second Street, Suite 300, San Francisco, California, 94105, USA.
[be]
De elementen collectie welke samen met QElectroTech wordt geleverd zonder enige garantie
De elementen collectie welke samen met QElectroTech wordt geleverd zonder enige garantie
of deze geschikt zijn voor uw doel of de werking.
Het gebruik, wijzigen en integratie van de elementen in uw elektrische
schema's wordt toegestaan zonder enige voorwaarden, ongeacht wat de uiteindelijke

22
INSTALL
View File

@@ -1,3 +1,14 @@
[ca]
Dependències:
libQt5 (paquets libqt5*)
cupsys-bsd per imprimir
Com compilar:
$ qmake (qmake-qt5 pels sistemes basats en Debian)
$ make
# umask 0022
# make install
[en]
Requirements :
libQt5 (see packages libqt5*)
@@ -64,17 +75,6 @@ $ make
# umask 0022
# make install
[ca]
Dependències:
libQt5 (paquets libqt5*)
cupsys-bsd per imprimir
Com compilar:
$ qmake (qmake-qt5 pels sistemes basats en Debian)
$ make
# umask 0022
# make install
[cs]
Požadavky :
libQt5 (viz balíček libqt5*)

4
README
View File

@@ -1,3 +1,7 @@
[ca]
QElectroTech és una aplicació Qt5 per crear esquemes elèctrics.
QET utilitza el format XML per als seus elements i esquemes i inclou un editor d'esquemes, un editor d'elements i un editor de caixetins.
[en]
QElectroTech is a Qt5 application to design electric diagrams.
It uses XML files for elements and diagrams, and includes both a diagram editor, a element editor, and an titleblock editor.

View File

@@ -1,3 +1,6 @@
[ca]
Col·lecció d'elements per a QElectroTech.
[fr]
Collection d'éléments pour QElectroTech.
@@ -10,6 +13,7 @@ Bauteilsammlung für QElectroTech.
[es]
Collección de elementos para QElectroTech.
[pt]
Colecção de elementos para QElectroTech.

Binary file not shown.

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.

View File

@@ -12,7 +12,7 @@ Keywords=Graphics;Science;Electricity;Engineering;
Comment=Edit electrical diagrams.
Comment[ar]=تحرير مخططات كهربائية
Comment[be]=Bewerken elektrisch schema.
Comment[ca]=Editar esquemes elèctrics.
Comment[ca]=Edita esquemes elèctrics.
Comment[cs]=Editor výkresů elektrických obvodů
Comment[da]=Rediger elektriske diagrammer.
Comment[de]=Elektroschaltpläne erstellen und bearbeiten.
@@ -30,6 +30,7 @@ Comment[sk]=Úprava elektrických schém.
GenericName=Electrical diagram editor
GenericName[ar]=مُحرّر مخططات كهربائية
GenericName[be]=Elektrische schema editor
GenericName[ca]=Editor d'esquemes elèctrics
GenericName[cs]=Editor výkresů elektrických obvodů
GenericName[da]=Elektrisk diagram redigering
GenericName[de]=Schaltplaneditor

View File

@@ -7,20 +7,21 @@
<name>QElectroTech</name>
<summary>Electrical diagram editor</summary>
<summary xml:lang="ar">مُحرّر مخططات كهربائية</summary>
<summary xml:lang="be">Elektrische schema editor</summary>
<summary xml:lang="ca">Editor d'esquemes elèctrics</summary>
<summary xml:lang="cs">Editor výkresů elektrických obvodů</summary>
<summary xml:lang="da">Elektrisk diagram redigering</summary>
<summary xml:lang="de">Zeichenprogramm für Schaltpläne</summary>
<summary xml:lang="el">Επεξεργαστής ηλεκτρικών διαγραμμάτων</summary>
<summary xml:lang="ex">Editor de esquemas eléctricos</summary>
<summary xml:lang="fr">Éditeur de schémas électriques</summary>
<summary xml:lang="hr">Editor elektro sheme</summary>
<summary xml:lang="it">Programma per disegnare schemi elettrici</summary>
<summary xml:lang="ja">電気回路図エディタ</summary>
<summary xml:lang="nl">Elektrische schema bewerker</summary>
<summary xml:lang="pl">Edytor schematów elektrycznych</summary>
<summary xml:lang="pt">Editor de esquemas eléctricos</summary>
<summary xml:lang="ru">Редактор электрических схем</summary>
<summary xml:lang="nl">Elektrische schema bewerker</summary>
<summary xml:lang="be">Elektrische schema editor</summary>
<summary xml:lang="da">Elektrisk diagram redigering</summary>
<summary xml:lang="ja">電気回路図エディタ</summary>
<content_rating type="oars-1.1"/>
<releases>
<release version="0.9-dev" date="2021-02-21"/>
@@ -30,10 +31,22 @@
QElectroTech is a Qt5 application to design electric diagrams.
It uses XML files for elements and diagrams, and includes both a diagram editor, an element editor, and a titleblock editor.
</p>
<p xml:lang="be">
QElectroTech is een Qt5 applicatie om elektrische schema's te ontwerpen.
Het maakt gebruik van XML-bestanden voor elementen en diagrammen, en omvat zowel een diagram bewerker, een element bewerker, en ook een tielbloksjabloon bewerker.
</p>
<p xml:lang="ca">
QElectroTech és una aplicació Qt5 per crear esquemes elèctrics.
QET utilitza el format XML per als seus elements i esquemes i inclou un editor d'esquemes, un editor d'elements i un editor de caixetins.
</p>
<p xml:lang="cs">
QElectroTech je aplikací Qt5 určenou pro návrh nákresů elektrických obvodů.
Pro prvky a nákresy používá soubory XML, a zahrnuje v sobě jak editor nákresů, tak editor prvků.
</p>
<p xml:lang="da">
QElectroTech er et Qt5 program til at redigere elektriske diagrammer.
Det bruger XML filer for symboler og diagrammer og inkluderer diagram, symbol og titelblok redigering.
</p>
<p xml:lang="de">
QElectroTech ist eine Qt5-Anwendung zum Entwerfen von Schaltplänen.
Die Anwendung verwendet XML-Dateien zum Speichern von Projekten und Elementbibliotheken. Neben dem Schaltplaneditor enthält die Anwendung auch Elementeditoren und einen Blattvorlageneditor.
@@ -54,9 +67,13 @@
QElectroTech è una applicazione fatta in Qt5 per disegnare schemi elettrici.
QET usa il formato XML per i suoi elementi e schemi, includendo anche un editor per gli stessi.
</p>
<p xml:lang="ru">
QElectroTech - приложение написанное на Qt5 и предназначено для разработки электрических схем.
Приложение использует для хранения проектов и библиотек элементов файлы в XML формате. Приложение помимо редактора электричесих схем, содержит также редакторы элементов и редактор шаблонов листов.
<p xml:lang="ja">
QElectroTech は電気回路図を作成する Qt5 アプリケーションです。
QET は要素と回路図に XML 形式を利用し、回路図エディタ、要素エディタ、表題欄エディタを含みます。
</p>
<p xml:lang="nl">
QElectroTech is een Qt5 applicatie om elektrische schema's te ontwerpen.
Het maakt gebruik van XML-bestanden voor elementen en diagrammen, en omvat zowel een diagram bewerker, een element bewerker, en een bloksjabloon bewerker.
</p>
<p xml:lang="pl">
QElectroTech to aplikacja napisana w Qt5, przeznaczona do tworzenia schematów elektrycznych.
@@ -66,22 +83,10 @@
QElectroTech é uma aplicação baseada em Qt5 para desenhar esquemas eléctricos.
QET utiliza ficheiros XML para os elementos e para os esquemas e inclui um editor de esquemas e um editor de elementos.
</p>
<p xml:lang="nl">
QElectroTech is een Qt5 applicatie om elektrische schema's te ontwerpen.
Het maakt gebruik van XML-bestanden voor elementen en diagrammen, en omvat zowel een diagram bewerker, een element bewerker, en een bloksjabloon bewerker.
</p>
<p xml:lang="be">
QElectroTech is een Qt5 applicatie om elektrische schema's te ontwerpen.
Het maakt gebruik van XML-bestanden voor elementen en diagrammen, en omvat zowel een diagram bewerker, een element bewerker, en ook een tielbloksjabloon bewerker.
</p>
<p xml:lang="da">
QElectroTech er et Qt5 program til at redigere elektriske diagrammer.
Det bruger XML filer for symboler og diagrammer og inkluderer diagram, symbol og titelblok redigering.
</p>
<p xml:lang="ja">
QElectroTech は電気回路図を作成する Qt5 アプリケーションです。
QET は要素と回路図に XML 形式を利用し、回路図エディタ、要素エディタ、表題欄エディタを含みます。
</p>
<p xml:lang="ru">
QElectroTech - приложение написанное на Qt5 и предназначено для разработки электрических схем.
Приложение использует для хранения проектов и библиотек элементов файлы в XML формате. Приложение помимо редактора электричесих схем, содержит также редакторы элементов и редактор шаблонов листов.
</p>
</description>
<url type="homepage">http://qelectrotech.org</url>
<screenshots>

View File

@@ -1,63 +1,63 @@
<?xml version="1.0" encoding="UTF-8"?>
<mime-info xmlns="http://www.freedesktop.org/standards/shared-mime-info">
<mime-type type="application/x-qet-project">
<sub-class-of type="text/xml"/>
<comment>QElectroTech project file</comment>
<comment xml:lang="de">QElectroTech Projektdatei</comment>
<comment xml:lang="fr">Fichier projet QElectroTech</comment>
<comment xml:lang="ar">QElectrotech ملف مشروع</comment>
<comment xml:lang="es">Fichero proyecto QElectroTech</comment>
<comment xml:lang="ca">Fitxer projecte QElectroTech</comment>
<comment xml:lang="ru">Файл проекта QElectroTech</comment>
<comment xml:lang="pt">Ficheiro de projecto QElectroTech</comment>
<comment xml:lang="cs">Soubor s projektem pro QElectroTech</comment>
<comment xml:lang="pl">Plik projektu QElectrotech</comment>
<comment xml:lang="it">File del progetto QElectroTech</comment>
<comment xml:lang="el">Αρχείο έργου του QElectroTech</comment>
<comment xml:lang="nl">QElectroTech project bestand</comment>
<comment xml:lang="be">QElectroTech project bestand</comment>
<comment xml:lang="da">QElectroTech projekt fil</comment>
<comment xml:lang="ja">QElectroTech プロジェクト・ファイル</comment>
<glob pattern="*.qet" />
</mime-type>
<mime-type type="application/x-qet-element">
<sub-class-of type="text/xml"/>
<comment>QElectroTech element file</comment>
<comment xml:lang="de">QElectroTech Bauteildatei</comment>
<comment xml:lang="fr">Fichier élément QElectroTech</comment>
<comment xml:lang="ar">QElectrotech ملف مشروع</comment>
<comment xml:lang="ru">Файл элемента QElectroTech</comment>
<comment xml:lang="es">Fichero elemento QElectroTech</comment>
<comment xml:lang="ca">Fitxer símbol QElectroTech</comment>
<comment xml:lang="pt">Ficheiro de projecto QElectroTech</comment>
<comment xml:lang="cs">Soubor s prvkem pro QElectroTech</comment>
<comment xml:lang="pl">Plik elementu QElectroTech</comment>
<comment xml:lang="it">File del progetto QElectroTech</comment>
<comment xml:lang="el">Αρχείο στοιχείου του QElectroTech</comment>
<comment xml:lang="nl">QElectroTech element bestand</comment>
<comment xml:lang="be">QElectroTech element bestand</comment>
<comment xml:lang="da">QElectroTech symbol fil</comment>
<comment xml:lang="ja">QElectroTech 要素ファイル</comment>
<glob pattern="*.elmt" />
</mime-type>
<mime-type type="application/x-qet-titleblock">
<sub-class-of type="text/xml"/>
<comment>QElectroTech title block template file</comment>
<comment xml:lang="de">QElectroTech Schriftfeld Vorlagedatei</comment>
<comment xml:lang="fr">Modèle de cartouche QElectroTech</comment>
<comment xml:lang="ar">QElectrotech نموذج إطار تعريف</comment>
<comment xml:lang="ru">Файл шаблона основной надписи листа QElectroTech</comment>
<comment xml:lang="pl">Szablon tabliczki rysunkowej QElectroTech</comment>
<comment xml:lang="es">Modelo de cartucho QElectroTech</comment>
<comment xml:lang="ca">Model de bloc de títol QElectroTech</comment>
<comment xml:lang="cs">Vzor záhlaví výkresu pro QElectroTech</comment>
<comment xml:lang="pt">Modelo de moldura QElectroTech</comment>
<comment xml:lang="it">Modello di cartiglio per QElectroTech</comment>
<comment xml:lang="el">Πρότυπο πινακίδας του QElectroTech</comment>
<comment xml:lang="nl">QElectroTech titel bloksjabloon</comment>
<comment xml:lang="be">QElectroTech titel bloksjabloon</comment>
<comment xml:lang="da">QElectroTech titelblok skabelon</comment>
<comment xml:lang="ja">QElectroTech 表題欄テンプレート</comment>
<glob pattern="*.titleblock" />
</mime-type>
</mime-info>
<?xml version="1.0" encoding="UTF-8"?>
<mime-info xmlns="http://www.freedesktop.org/standards/shared-mime-info">
<mime-type type="application/x-qet-project">
<sub-class-of type="text/xml"/>
<comment>QElectroTech project file</comment>
<comment xml:lang="ar">QElectrotech ملف مشروع</comment>
<comment xml:lang="be">QElectroTech project bestand</comment>
<comment xml:lang="ca">Fitxer de projecte QElectroTech</comment>
<comment xml:lang="cs">Soubor s projektem pro QElectroTech</comment>
<comment xml:lang="da">QElectroTech projekt fil</comment>
<comment xml:lang="de">QElectroTech Projektdatei</comment>
<comment xml:lang="el">Αρχείο έργου του QElectroTech</comment>
<comment xml:lang="es">Fichero proyecto QElectroTech</comment>
<comment xml:lang="fr">Fichier projet QElectroTech</comment>
<comment xml:lang="it">File del progetto QElectroTech</comment>
<comment xml:lang="ja">QElectroTech プロジェクト・ファイル</comment>
<comment xml:lang="nl">QElectroTech project bestand</comment>
<comment xml:lang="pl">Plik projektu QElectrotech</comment>
<comment xml:lang="pt">Ficheiro de projecto QElectroTech</comment>
<comment xml:lang="ru">Файл проекта QElectroTech</comment>
<glob pattern="*.qet" />
</mime-type>
<mime-type type="application/x-qet-element">
<sub-class-of type="text/xml"/>
<comment>QElectroTech element file</comment>
<comment xml:lang="ar">QElectrotech ملف مشروع</comment>
<comment xml:lang="be">QElectroTech element bestand</comment>
<comment xml:lang="ca">Fitxer d'element QElectroTech</comment>
<comment xml:lang="cs">Soubor s prvkem pro QElectroTech</comment>
<comment xml:lang="da">QElectroTech symbol fil</comment>
<comment xml:lang="de">QElectroTech Bauteildatei</comment>
<comment xml:lang="el">Αρχείο στοιχείου του QElectroTech</comment>
<comment xml:lang="es">Fichero elemento QElectroTech</comment>
<comment xml:lang="fr">Fichier élément QElectroTech</comment>
<comment xml:lang="it">File del progetto QElectroTech</comment>
<comment xml:lang="ja">QElectroTech 要素ファイル</comment>
<comment xml:lang="nl">QElectroTech element bestand</comment>
<comment xml:lang="pl">Plik elementu QElectroTech</comment>
<comment xml:lang="pt">Ficheiro de projecto QElectroTech</comment>
<comment xml:lang="ru">Файл элемента QElectroTech</comment>
<glob pattern="*.elmt" />
</mime-type>
<mime-type type="application/x-qet-titleblock">
<sub-class-of type="text/xml"/>
<comment>QElectroTech title block template file</comment>
<comment xml:lang="ar">QElectrotech نموذج إطار تعريف</comment>
<comment xml:lang="be">QElectroTech titel bloksjabloon</comment>
<comment xml:lang="ca">Model de caixetí QElectroTech</comment>
<comment xml:lang="cs">Vzor záhlaví výkresu pro QElectroTech</comment>
<comment xml:lang="da">QElectroTech titelblok skabelon</comment>
<comment xml:lang="de">QElectroTech Schriftfeld Vorlagedatei</comment>
<comment xml:lang="el">Πρότυπο πινακίδας του QElectroTech</comment>
<comment xml:lang="es">Modelo de cartucho QElectroTech</comment>
<comment xml:lang="fr">Modèle de cartouche QElectroTech</comment>
<comment xml:lang="it">Modello di cartiglio per QElectroTech</comment>
<comment xml:lang="ja">QElectroTech 表題欄テンプレート</comment>
<comment xml:lang="nl">QElectroTech titel bloksjabloon</comment>
<comment xml:lang="pl">Szablon tabliczki rysunkowej QElectroTech</comment>
<comment xml:lang="pt">Modelo de moldura QElectroTech</comment>
<comment xml:lang="ru">Файл шаблона основной надписи листа QElectroTech</comment>
<glob pattern="*.titleblock" />
</mime-type>
</mime-info>

View File

@@ -174,11 +174,9 @@ void NamesList::fromXml(const pugi::xml_node &xml_element, const QHash<QString,
/**
Exports the list of names to an XML element.
Make sure that the list of names is not empty before exporting.
If list is empty, set name to "en" / "NoName"
French:
Exporte la liste des noms vers un element XML. Veillez a verifier que la
liste de noms n'est pas vide avant de l'exporter.
Si la liste est vide, le nom sera "en" / "NoName".
@param xml_document Le document XML dans lequel l'element XML sera insere
@param xml_options A set of options related to XML parsing.
@return L'element XML correspondant a la section "names"
@@ -192,7 +190,7 @@ QDomElement NamesList::toXml(QDomDocument &xml_document, const QHash<QString, QS
qInfo() << " NamesList of element is empty - add default: [" << "en" << "] = " << "NoName" << "";
QDomElement name_elmt = xml_document.createElement(xml_opt["TagName"]);
name_elmt.setAttribute(xml_opt["LanguageAttribute"], "en");
name_elmt.appendChild(xml_document.createTextNode("NoName"));
name_elmt.appendChild(xml_document.createTextNode(" "));
names_elmt.appendChild(name_elmt);
} else {
QMapIterator<QString, QString> names_iterator(map_names);

View File

@@ -1,5 +1,5 @@
/*
Copyright 2006-2022 The QElectroTech Team
Copyright 2006-2025 The QElectroTech Team
This file is part of QElectroTech.
QElectroTech is free software: you can redistribute it and/or modify

View File

@@ -1,5 +1,5 @@
/*
Copyright 2006-2022 The QElectroTech Team
Copyright 2006-2025 The QElectroTech Team
This file is part of QElectroTech.
QElectroTech is free software: you can redistribute it and/or modify

View File

@@ -1,5 +1,5 @@
/*
Copyright 2006-2022 The QElectroTech Team
Copyright 2006-2025 The QElectroTech Team
This file is part of QElectroTech.
QElectroTech is free software: you can redistribute it and/or modify

View File

@@ -1,5 +1,5 @@
/*
Copyright 2006-2022 The QElectroTech Team
Copyright 2006-2025 The QElectroTech Team
This file is part of QElectroTech.
QElectroTech is free software: you can redistribute it and/or modify

View File

@@ -1,5 +1,5 @@
/*
Copyright 2006-2022 The QElectroTech Team
Copyright 2006-2025 The QElectroTech Team
This file is part of QElectroTech.
QElectroTech is free software: you can redistribute it and/or modify

View File

@@ -1,5 +1,5 @@
/*
Copyright 2006-2022 The QElectroTech Team
Copyright 2006-2025 The QElectroTech Team
This file is part of QElectroTech.
QElectroTech is free software: you can redistribute it and/or modify

View File

@@ -57,21 +57,9 @@ TerminalStripEditor::TerminalStripEditor(QETProject *project, QWidget *parent) :
{
if (m_model->columnTypeForIndex(index) == TerminalStripModel::XRef)
{
auto mrtd = m_model->modelRealTerminalDataForIndex(index);
if (mrtd.element_)
{
auto elmt = mrtd.element_;
auto diagram = elmt->diagram();
if (diagram)
{
diagram->showMe();
if (diagram->views().size())
{
auto fit_view = elmt->sceneBoundingRect();
fit_view.adjust(-200,-200,200,200);
diagram->views().at(0)->fitInView(fit_view, Qt::KeepAspectRatioByExpanding);
}
}
const auto mrtd = m_model->modelRealTerminalDataForIndex(index);
if (mrtd.element_) {
QetGraphicsItem::showItem(mrtd.element_);
}
}
});

View File

@@ -1,5 +1,5 @@
/*
Copyright 2006-2021 QElectroTech Team
Copyright 2006-2025 QElectroTech Team
This file is part of QElectroTech.
QElectroTech is free software: you can redistribute it and/or modify

View File

@@ -1,5 +1,5 @@
/*
Copyright 2006-2021 QElectroTech Team
Copyright 2006-2025 QElectroTech Team
This file is part of QElectroTech.
QElectroTech is free software: you can redistribute it and/or modify

View File

@@ -1,5 +1,5 @@
/*
Copyright 2006-2021 QElectroTech Team
Copyright 2006-2025 QElectroTech Team
This file is part of QElectroTech.
QElectroTech is free software: you can redistribute it and/or modify

View File

@@ -1,5 +1,5 @@
/*
Copyright 2006-2021 QElectroTech Team
Copyright 2006-2025 QElectroTech Team
This file is part of QElectroTech.
QElectroTech is free software: you can redistribute it and/or modify

View File

@@ -229,43 +229,53 @@ void Conductor::updateConductorPath(const QPointF &p1, Qet::Orientation o1, cons
Q_ASSERT_X(!conductor_profile.isNull(), "Conductor::priv_modifieConductor", "pas de profil utilisable");
// recupere les coordonnees fournies des bornes
// retrieve the coordinates provided for the terminals
QPointF new_p1 = mapFromScene(p1);
QPointF new_p2 = mapFromScene(p2);
QRectF new_rect = QRectF(new_p1, new_p2);
// recupere la largeur et la hauteur du profil
// retrieve the width and height of the profile
qreal profile_width = conductor_profile.width();
qreal profile_height = conductor_profile.height();
// calcule les differences verticales et horizontales a appliquer
// calculates the vertical and horizontal differences to be applied
qreal h_diff = (qAbs(new_rect.width()) - qAbs(profile_width) ) * getSign(profile_width);
qreal v_diff = (qAbs(new_rect.height()) - qAbs(profile_height)) * getSign(profile_height);
// applique les differences aux segments
// apply the differences to the segments
QMultiHash<ConductorSegmentProfile *, qreal> segments_lengths;
segments_lengths.unite(shareOffsetBetweenSegments(h_diff, conductor_profile.horizontalSegments()));
segments_lengths.unite(shareOffsetBetweenSegments(v_diff, conductor_profile.verticalSegments()));
// en deduit egalement les coefficients d'inversion (-1 pour une inversion, +1 pour conserver le meme sens)
// also deduce the inversion coefficients (-1 for inversion, +1 to keep the same direction)
int horiz_coeff = getCoeff(new_rect.width(), profile_width);
int verti_coeff = getCoeff(new_rect.height(), profile_height);
// genere les nouveaux points
// generate the new points
QList<QPointF> points;
points << new_p1;
int limit = conductor_profile.segments.count() - 1;
for (int i = 0 ; i < limit ; ++ i) {
// dernier point
// last point
QPointF previous_point = points.last();
// profil de segment de conducteur en cours
// current conductor segment profile
ConductorSegmentProfile *csp = conductor_profile.segments.at(i);
// coefficient et offset a utiliser pour ce point
// coefficient and offset to be used for this point
qreal coeff = csp -> isHorizontal ? horiz_coeff : verti_coeff;
qreal offset_applied = segments_lengths.value(csp);
// applique l'offset et le coeff au point
// apply coefficient and offset to point
if (csp -> isHorizontal) {
points << QPointF (
previous_point.x() + (coeff * offset_applied),
@@ -989,16 +999,16 @@ void Conductor::pointsToSegments(const QList<QPointF>& points_list) {
/**
@brief Conductor::fromXml
Load the conductor and her information from xml element
Load the conductor and its information from xml element
@param dom_element
@return true is loading success else return false
@return true if loading succeeded else return false
*/
bool Conductor::fromXml(QDomElement &dom_element)
{
setPos(dom_element.attribute("x", nullptr).toDouble(),
dom_element.attribute("y", nullptr).toDouble());
bool return_ = pathFromXml(dom_element);
bool retval = pathFromXml(dom_element);
m_text_item -> fromXml(dom_element);
ConductorProperties pr;
@@ -1010,11 +1020,11 @@ bool Conductor::fromXml(QDomElement &dom_element)
else
m_autoNum_seq.fromXml(dom_element.firstChildElement("sequentialNumbers"));
m_freeze_label = dom_element.attribute("freezeLabel") == "true"? true : false;
m_freeze_label = dom_element.attribute("freezeLabel") == "true" ? true : false;
setProperties(pr);
return return_;
return retval;
}
/**
@@ -1134,13 +1144,14 @@ bool Conductor::pathFromXml(const QDomElement &e) {
}
}
//If there isn't segment we generate automatic path and return true
// If there is no segment, we generate an automatic path and return true
if (!segments_x.size()) {
generateConductorPath(terminal1 -> dockConductor(), terminal1 -> orientation(), terminal2 -> dockConductor(), terminal2 -> orientation());
return(true);
}
// les longueurs recueillies doivent etre coherentes avec les positions des bornes
// The collected lengths must be consistent with the positions of the terminals
qreal width = 0.0, height = 0.0;
foreach (qreal t, segments_x) width += t;
foreach (qreal t, segments_y) height += t;
@@ -1256,65 +1267,57 @@ ConductorSegment *Conductor::middleSegment()
*/
QPointF Conductor::posForText(Qt::Orientations &flag)
{
ConductorSegment *segment = segments;
bool all_segment_is_vertical = true;
bool all_segment_is_horizontal = true;
ConductorSegment *segment = segments;
bool all_segments_are_vertical = true;
bool all_segments_are_horizontal = true;
//Go to first segment
while (!segment->isFirstSegment()) {
segment = segment->previousSegment();
}
QPointF p1 = segment -> firstPoint(); //<First point of conductor
ConductorSegment *biggest_segment = segment; //<biggest segment: contain the longest segment of conductor.
ConductorSegment *longest_segment = segment; //<the longest segment of conductor.
// check if all segments are horizontal or vertical ... first segment:
if (segment -> firstPoint().x() != segment -> secondPoint().x())
all_segment_is_vertical = false;
all_segments_are_vertical = false;
if (segment -> firstPoint().y() != segment -> secondPoint().y())
all_segment_is_horizontal = false;
all_segments_are_horizontal = false;
// find longest segment
while (segment -> hasNextSegment())
{
segment = segment -> nextSegment();
if (segment -> firstPoint().x() != segment -> secondPoint().x())
all_segment_is_vertical = false;
all_segments_are_vertical = false;
if (segment -> firstPoint().y() != segment -> secondPoint().y())
all_segment_is_horizontal = false;
all_segments_are_horizontal = false;
//We must compare length segment, but they can be negative
//so we multiply by -1 to make it positive.
int saved = biggest_segment -> length();
if (saved < 0) saved *= -1;
int curent = segment->length();
if (curent < 0) curent *= -1;
if (curent > saved) biggest_segment = segment;
if (qAbs(segment->length()) > qAbs(longest_segment -> length()))
longest_segment = segment;
}
QPointF p2 = segment -> secondPoint();//<Last point of conductor
QPointF p2 = segment -> secondPoint(); //<Last point of conductor
//If the conductor is horizontal or vertical
//Return the point at the middle of conductor
if (all_segment_is_vertical) { //<Vertical
if (all_segments_are_vertical) { //<Vertical
flag = Qt::Vertical;
if (p1.y() > p2.y()) {
p1.setY(p1.y() - (length()/2));
} else {
p1.setY(p1.y() + (length()/2));
}
} else if (all_segment_is_horizontal) { //<Horizontal
} else if (all_segments_are_horizontal) { //<Horizontal
flag = Qt::Horizontal;
if (p1.x() > p2.x()) {
p1.setX(p1.x() - (length()/2));
} else {
p1.setX(p1.x() + (length()/2));
}
} else { //Return the point at the middle of biggest segment.
p1 = biggest_segment->middle();
flag = (biggest_segment->isHorizontal())? Qt::Horizontal : Qt::Vertical;
} else { //Return the point at the middle of longest segment.
p1 = longest_segment->middle();
flag = (longest_segment->isHorizontal())? Qt::Horizontal : Qt::Vertical;
}
return p1;
}
@@ -1420,7 +1423,7 @@ void Conductor::calculateTextItemPosition()
/**
Sauvegarde le profil courant du conducteur pour l'utiliser ulterieurement
dans priv_modifieConductor.
Save the current conductors profile for later use in priv_modifiedConductor.
Save the current conductors profile for later use in priv_modifieConductor.
*/
void Conductor::saveProfile(bool undo) {
Qt::Corner current_path_type = currentPathType();
@@ -1487,7 +1490,7 @@ ConductorProfile Conductor::profile(Qt::Corner path_type) const
/**
@brief Conductor::refreshText
Refresh the text of this conductor.
recalcule and set the text according to the formula.
recalculate and set the text according to the formula.
*/
void Conductor::refreshText()
{

View File

@@ -320,24 +320,7 @@ void CrossRefItem::paint(
void CrossRefItem::mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event)
{
event->accept();
if (m_hovered_contact && m_hovered_contact->scene())
{
//Show and select the linked slave element
if (scene() != m_hovered_contact->scene())
{
m_hovered_contact->diagram()->showMe();
}
m_hovered_contact->setSelected(true);
//Zoom to the linked slave element
foreach(QGraphicsView *view,
m_hovered_contact->diagram()->views())
{
QRectF fit = m_hovered_contact->sceneBoundingRect();
fit.adjust(-200, -200, 200, 200);
view->fitInView(fit, Qt::KeepAspectRatioByExpanding);
}
}
QetGraphicsItem::showItem(m_hovered_contact);
}
/**

View File

@@ -1,5 +1,5 @@
/*
Copyright 2006-2021 QElectroTech Team
Copyright 2006-2025 QElectroTech Team
This file is part of QElectroTech.
QElectroTech is free software: you can redistribute it and/or modify

View File

@@ -1277,18 +1277,8 @@ void DynamicElementTextItem::zoomToLinkedElement()
//move when linked element is in the same scene of this.
setSelected(false);
ungrabMouse();
if(scene() != zoomed_element->scene())
zoomed_element->diagram()->showMe();
zoomed_element->setSelected(true);
//Zoom to the element
for(QGraphicsView *view : zoomed_element->scene()->views())
{
QRectF fit = zoomed_element->sceneBoundingRect();
fit.adjust(-200, -200, 200, 200);
view->fitInView(fit, Qt::KeepAspectRatioByExpanding);
}
QetGraphicsItem::showItem(zoomed_element);
}
}

View File

@@ -18,8 +18,6 @@
#include "slaveelement.h"
#include "../diagram.h"
#include "../diagramposition.h"
#include "../qetapp.h"
#include "dynamicelementtextitem.h"
/**
@@ -33,9 +31,7 @@ SlaveElement::SlaveElement(const ElementsLocation &location,
QGraphicsItem *qgi,
int *state) :
Element(location, qgi, state, Element::Slave)
{
m_xref_item = nullptr;
}
{}
/**
@brief SlaveElement::~SlaveElement

View File

@@ -18,7 +18,6 @@
#ifndef SLAVEELEMENT_H
#define SLAVEELEMENT_H
#include "../properties/xrefproperties.h"
#include "element.h"
class SlaveElement : public Element
@@ -33,9 +32,6 @@ class SlaveElement : public Element
void linkToElement(Element *elmt) override;
void unlinkAllElements() override;
void unlinkElement(Element *elmt) override;
private:
QGraphicsTextItem *m_xref_item;
};
#endif // SLAVEELEMENT_H

View File

@@ -21,6 +21,7 @@
#include "../../qeticons.h"
#include "ui_generalconfigurationpage.h"
#include "../../utils/qetsettings.h"
#include "../../qetmessagebox.h"
#include <QFileDialog>
#include <QFontDialog>
@@ -83,7 +84,6 @@ GeneralConfigurationPage::GeneralConfigurationPage(QWidget *parent) :
ui->m_use_gesture_trackpad->setChecked(settings.value("diagramview/gestures", false).toBool());
ui->m_save_label_paste->setChecked(settings.value("diagramcommands/erase-label-on-copy", true).toBool());
ui->m_use_folio_label->setChecked(settings.value("genericpanel/folio", true).toBool());
ui->m_export_terminal->setChecked(settings.value("nomenclature-exportlist", true).toBool());
ui->m_border_0->setChecked(settings.value("border-columns_0", false).toBool());
ui->m_autosave_sb->setValue(settings.value("diagrameditor/autosave-interval", 0).toInt());
@@ -224,9 +224,6 @@ void GeneralConfigurationPage::applyConf()
//GENERIC PANEL
settings.setValue("genericpanel/folio",ui->m_use_folio_label->isChecked());
//NOMENCLATURE
settings.setValue("nomenclature/terminal-exportlist",ui->m_export_terminal->isChecked());
//DIAGRAM EDITOR
QString view_mode = ui->m_use_tab_mode_rb->isChecked() ? "tabbed" : "windowed";
@@ -564,3 +561,29 @@ void GeneralConfigurationPage::on_ElementEditor_Grid_PointSize_min_sb_valueChang
{
ui->ElementEditor_Grid_PointSize_max_sb->setMinimum(std::max(1, value));
}
void GeneralConfigurationPage::on_m_hdpi_round_cb_clicked(bool checked)
{
if (checked) {
if (QMessageBox::Cancel == QET::QetMessageBox::warning(
this,
tr("Fonctionnalité expérimental"),
tr("AVERTISSEMENT :\n"
"Toutes valeurs autre que Pas darrondi peut causer des erreurs de rendu "
"du projet en fonction de :\n\n"
"1 - la valeur sélectionnée \n"
"2 - du dpi de l'écran \n"
"3 - Modifier le projet sur un autre ordinateur et/ou écran n'ayant pas les mêmes paramètres des points 1 et 2."),
QMessageBox::StandardButton::Cancel|QMessageBox::StandardButton::Ok,
QMessageBox::StandardButton::Cancel
)) {
ui->m_hdpi_round_cb->blockSignals(true);
ui->m_hdpi_round_cb->setChecked(false);
ui->m_hdpi_round_cb->blockSignals(false);
return;
}
}
ui->m_hdpi_round_label->setEnabled(checked);
ui->m_hdpi_round_policy_cb->setEnabled(checked);
}

View File

@@ -51,6 +51,8 @@ class GeneralConfigurationPage : public ConfigPage
void on_DiagramEditor_Grid_PointSize_min_sb_valueChanged(int value);
void on_ElementEditor_Grid_PointSize_min_sb_valueChanged(int value);
void on_m_hdpi_round_cb_clicked(bool checked);
private:
void fillLang();

View File

@@ -6,7 +6,7 @@
<rect>
<x>0</x>
<y>0</y>
<width>872</width>
<width>955</width>
<height>556</height>
</rect>
</property>
@@ -17,7 +17,7 @@
<item>
<widget class="QTabWidget" name="tabWidget">
<property name="currentIndex">
<number>1</number>
<number>0</number>
</property>
<widget class="QWidget" name="tab_3">
<attribute name="title">
@@ -82,7 +82,7 @@
</item>
<item>
<widget class="QWidget" name="m_hdpi_round_policy_widget" native="true">
<layout class="QHBoxLayout" name="horizontalLayout">
<layout class="QHBoxLayout" name="horizontalLayout" stretch="0,0,1">
<property name="leftMargin">
<number>0</number>
</property>
@@ -96,14 +96,28 @@
<number>0</number>
</property>
<item>
<widget class="QLabel" name="label_2">
<widget class="QCheckBox" name="m_hdpi_round_cb">
<property name="text">
<string/>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="m_hdpi_round_label">
<property name="enabled">
<bool>false</bool>
</property>
<property name="text">
<string>Méthode de mise à l'echelle des écrans à haute densité de pixels (hdpi) (appliqué au prochain lancement de QElectroTech) :</string>
</property>
</widget>
</item>
<item>
<widget class="QComboBox" name="m_hdpi_round_policy_cb"/>
<widget class="QComboBox" name="m_hdpi_round_policy_cb">
<property name="enabled">
<bool>false</bool>
</property>
</widget>
</item>
</layout>
</widget>
@@ -128,41 +142,21 @@
<string>Projets</string>
</attribute>
<layout class="QGridLayout" name="gridLayout_2">
<item row="4" column="1">
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
<item row="1" column="0">
<widget class="QCheckBox" name="m_use_folio_label">
<property name="text">
<string>Utiliser les numéros de folio à la place de leur position dans le projet</string>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</widget>
</item>
<item row="4" column="0">
<item row="3" column="0">
<widget class="QLabel" name="label">
<property name="text">
<string>Sauvegarde automatique des projets (appliqué au prochain lancement de QElectroTech)</string>
</property>
</widget>
</item>
<item row="0" column="0">
<widget class="QCheckBox" name="m_save_label_paste">
<property name="text">
<string>Ne pas conserver les labels des éléments lors des copier coller</string>
</property>
</widget>
</item>
<item row="3" column="0">
<widget class="QCheckBox" name="m_border_0">
<property name="text">
<string extracomment="Choix de l'increment de depart 1 ou 0">Numéroter les colonnes de cartouche à partir de 0 (1 sinon)</string>
</property>
</widget>
</item>
<item row="4" column="2">
<item row="3" column="2">
<widget class="QSpinBox" name="m_autosave_sb">
<property name="frame">
<bool>true</bool>
@@ -184,14 +178,14 @@
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QCheckBox" name="m_use_folio_label">
<item row="0" column="0">
<widget class="QCheckBox" name="m_save_label_paste">
<property name="text">
<string>Utiliser les numéros de folio à la place de leur position dans le projet</string>
<string>Ne pas conserver les labels des éléments lors des copier coller</string>
</property>
</widget>
</item>
<item row="5" column="0">
<item row="4" column="0">
<spacer name="verticalSpacer_2">
<property name="orientation">
<enum>Qt::Vertical</enum>
@@ -204,10 +198,23 @@
</property>
</spacer>
</item>
<item row="3" column="1">
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item row="2" column="0">
<widget class="QCheckBox" name="m_export_terminal">
<widget class="QCheckBox" name="m_border_0">
<property name="text">
<string>Exporter les bornes dans la nomenclature</string>
<string extracomment="Choix de l'increment de depart 1 ou 0">Numéroter les colonnes de cartouche à partir de 0 (1 sinon)</string>
</property>
</widget>
</item>
@@ -1090,7 +1097,6 @@ Vous pouvez spécifier ici la valeur par défaut de ce champ pour les éléments
<tabstop>m_use_tab_mode_rb</tabstop>
<tabstop>m_save_label_paste</tabstop>
<tabstop>m_use_folio_label</tabstop>
<tabstop>m_export_terminal</tabstop>
<tabstop>m_border_0</tabstop>
<tabstop>m_autosave_sb</tabstop>
<tabstop>m_common_elmt_path_cb</tabstop>

View File

@@ -146,7 +146,6 @@ void DynamicElementTextItemEditor::setCurrentText(DynamicElementTextItem *text)
return;
ui->m_tree_view->expand(index);
// ui->m_tree_view->expand(index.QModelIndex::model()->index(0,0)); // commented by plc-user: leads to crash, when other textitem was selected before
ui->m_tree_view->setCurrentIndex(index);
ui->m_remove_selection->setEnabled(true);
}

View File

@@ -1,5 +1,5 @@
/*
Copyright 2006-2022 The QElectroTech Team
Copyright 2006-2025 The QElectroTech Team
This file is part of QElectroTech.
QElectroTech is free software: you can redistribute it and/or modify

View File

@@ -1,5 +1,5 @@
/*
Copyright 2006-2022 The QElectroTech Team
Copyright 2006-2025 The QElectroTech Team
This file is part of QElectroTech.
QElectroTech is free software: you can redistribute it and/or modify

View File

@@ -1,5 +1,5 @@
/*
Copyright 2006-2022 The QElectroTech Team
Copyright 2006-2025 The QElectroTech Team
This file is part of QElectroTech.
QElectroTech is free software: you can redistribute it and/or modify

View File

@@ -1,5 +1,5 @@
/*
Copyright 2006-2022 The QElectroTech Team
Copyright 2006-2025 The QElectroTech Team
This file is part of QElectroTech.
QElectroTech is free software: you can redistribute it and/or modify