Compare commits

...

362 Commits

Author SHA1 Message Date
Martin Marmsoler f2b911da14 do not save conductorproperties in own child, but as part of conductor 2021-03-14 13:37:08 +01:00
Martin Marmsoler 539de96455 Fix problem when really old elements are added to a new project. These elements do not have an uuid for each terminal. So when exporting, save an unique ID into the terminal. So the conductors know to which terminal they must be connected 2021-03-14 11:49:01 +01:00
Martin Marmsoler 2a4416469a set tagname for PartText 2021-03-14 10:48:28 +01:00
Martin Marmsoler 0fbadc727d store terminalData in the terminal tag. Fixes the drag problem from the collection into the diagram. The problem was that some tags missed and therefore the creation of the element for dragging was unsuccessful 2021-03-14 08:29:26 +01:00
Martin Marmsoler d805fb9ced read terminal uuid in Terminal and do not write terminal uuid from TerminalData, because Terminal just reads it, only PartTerminal writes the uuid 2021-03-13 18:57:01 +01:00
Martin Marmsoler ba0faa7122 uuid gets already stored in the terminalData, so no need to store it again in the terminal it self 2021-03-13 18:25:12 +01:00
Martin Marmsoler 87d810744f use failed instead of no success, so the traces can be filtered more easily 2021-03-13 18:10:40 +01:00
Martin Marmsoler 1dabe930f2 fix terminal data problems 2021-03-13 18:10:06 +01:00
Martin Marmsoler c3c13d5102 store also terminal data when storing terminal. Was accidentaly removed in 5d3710c4b2 2021-03-13 18:09:52 +01:00
Martin Marmsoler f6c1a47d62 do not store invalid uuid, better to not store and use legacy approach 2021-03-13 17:27:12 +01:00
joshua 001e93bc6f Forgoten revert ToXml() 2021-03-09 18:43:03 +01:00
Martin Marmsoler 6e17996d37 fix problem that default conductor is not found 2021-03-08 20:48:23 +01:00
Martin Marmsoler 755bcf640d fix conductor properties xml load 2021-03-07 14:07:47 +01:00
Martin Marmsoler 5d3710c4b2 copy all toXML() from master commit 4b82c3a0c4 into the current branch, because the new concept will be used only for user properties 2021-03-07 10:09:45 +01:00
Martin Marmsoler 058824f29a move all static xml functions to qetxml 2021-03-06 20:01:31 +01:00
Martin Marmsoler ea793125a5 move m_change_connections to ElementItemEditor, so it must not be defined by every editor it self 2021-03-05 20:59:36 +01:00
Martin bc88f2ec2e reimplement Priv function, so the ElementEditor gets called automatically 2021-03-05 17:38:51 +01:00
Martin 6887c543da add possibilities to fill the userProperties 2021-03-05 07:56:35 +01:00
Martin Marmsoler 51ed21f9ef Merge commit 'b021ac3e1fb98a56810773c7c701e3329efb3148'
Conflicts:
	sources/qetgraphicsitem/element.h
2021-03-04 21:31:55 +01:00
Martin Marmsoler 221773ea8a fix some issues 2021-03-04 21:25:04 +01:00
Martin Marmsoler 9d4b90da1a Add userProperties 2021-03-04 19:18:28 +01:00
Thomas Gravekamp b021ac3e1f Add Williams EM symbols 2021-03-03 21:53:25 +01:00
joshua faf4235bed Terminal element info
Provide only useful information for terminal
2021-03-03 21:28:22 +01:00
Laurent Trinques 0a51e22b7d Update org.kde.Platform" to "runtime-version": "5.15" 2021-03-03 18:38:13 +01:00
Laurent Trinques 632fba5366 Add binary hungarian lang file 2021-03-03 14:28:01 +01:00
artgg7300 0ca883f114 translated hungarian lang file 2021-03-03 14:10:24 +01:00
Simon De Backer 170d856007 Fix Cmake
did not compile
2021-03-02 22:15:44 +01:00
joshua 0424eb9fba Mark deprecated method 2021-03-01 22:17:58 +01:00
Lars Biskupek 8210f06919 Update of German Language File qet_de 2021-03-01 20:41:40 +01:00
Ole Carlsen 468618adda Danish translation updated 2021-03-01 20:28:58 +01:00
pavelfric 8141a75738 Updated Czech translations of elements. 2021-03-01 10:40:11 +01:00
dlee99 8f201a6e5d modified: lang/qet_nl.qm
modified:   lang/qet_nl.ts
2021-02-28 22:18:33 +01:00
Lars Biskupek b8745c0a6b Update of German language file qet_de 2021-02-28 21:23:50 +01:00
Laurent Trinques 7c3bde9118 Update SingleApplication to upstream master 2021-02-28 18:05:18 +01:00
Martin Marmsoler ed8c1dea9d Merge commit '28cd389695248b56a99a417bc10640bb3e99c298' 2021-02-28 17:33:43 +01:00
Laurent Trinques 28cd389695 Upgrade pugixml XML parser to 1.11 release
https://pugixml.org/docs/manual.html#v1.11
2021-02-28 17:12:53 +01:00
Laurent Trinques 56bb2a399b Refresh splash size 2021-02-28 05:56:59 +01:00
Laurent Trinques dc726792d3 Update *TS files 2021-02-28 05:53:40 +01:00
joshua d8707a4ef2 Add dialog to inform user when open a non compatible project 2021-02-27 14:01:33 +01:00
Martin Marmsoler 01d6cdb920 Merge commit '77710e1cc5e597d06196d2ee163198176032987a'
Conflicts:
	sources/conductorproperties.cpp
	sources/qetgraphicsitem/element.cpp
	sources/qetgraphicsitem/qetshapeitem.cpp
2021-02-27 07:49:24 +01:00
joshua 77710e1cc5 Remove compatibility of QetShapItem from version prior to svn 4075
Befor svn 4075 QetShapItem was saved as int in xml, after as a string.
Remove retro-compatibility (int to string) svn 4075 is older than 5
years.
2021-02-25 20:47:43 +01:00
joshua 1d2c00819d Element collection cache remove old code
Remove old code use to drop table when qet was using mtime instead of
uuid for check if an element was changed.
2021-02-25 20:31:14 +01:00
joshua eee0469bd7 Remove retro compatibility of conductor text prior to qet 0.4
The property hide/show compatibility of conductor text is not maintained
for project made before qet 0.4
2021-02-25 20:21:18 +01:00
joshua 5118037cb5 Remove retro compatibility of element label prior to qet 0.5
Compatibility is not maintained anymore with the old project which
contain variable in the element information "label"
2021-02-25 19:42:14 +01:00
joshua 1f53c39290 Remove retro compatibility of element text item prior to qet 0.7
Compatibility is not maintained anymore with the old project which
contain old element text item.
2021-02-25 19:35:04 +01:00
Martin f499507b2d fix load issue 2021-02-25 16:55:13 +01:00
joshua b71aec9548 Fix wrong element type 2021-02-24 20:49:10 +01:00
joshua c7798e1a80 Fix wrong element type 2021-02-24 20:41:47 +01:00
Martin 5430692359 remove not needed declaration, because the definition was already deleted. And so a linker error occured 2021-02-24 19:04:14 +01:00
Martin 02b7ead041 fix compile issues 2021-02-24 18:48:59 +01:00
Martin ea364f9c4e merge 2021-02-23 17:35:55 +01:00
Laurent Trinques f97edad75a DiagramView::mouseMoveEvent remove "DEV" in toolTip message mouse
postion
2021-02-23 00:51:50 +01:00
Laurent Trinques 454b2c8a0f Update splash to 0.9 version 2021-02-22 16:22:08 +01:00
Lars Biskupek b2782bc460 Tab-stop definitions inserted where appropriate
Tab stop definitions inserted in some dialogs, so that the order of tab-stops-moves corresponds as closely as possible to the fields' position in the window.
2021-02-22 13:47:39 +01:00
Lars Biskupek 059f0eb1b6 Modifications to SaveFile-Dialog for "Save As PDF"
Fixed a typo that prevented existing PDF files from being displayed in SaveFileDialog for PDFs.

The way the file name for the PDF is generated has changed. If the project has already been saved, the PDF has the same file name (with .pdf of course); If not, the file name is generated from the project title (= same behavior as Save as - dialog for a .qet project file).
2021-02-22 13:47:39 +01:00
joshua ce318ac667 Element : start use ElementData
Element now use ElementData for namelist and element information
2021-02-21 19:40:33 +01:00
joshua be2067148e Element editor : add terminal properties editable 2021-02-21 19:40:33 +01:00
joshua 444f62a1f8 element data : add terminal type enum and terminal function enum 2021-02-21 19:40:33 +01:00
joshua 8f85cacb06 QetElementEditor : Use elementData class 2021-02-21 19:40:33 +01:00
joshua ffe3d98279 Add element data class 2021-02-21 19:40:33 +01:00
joshua dea926e4b4 Remove unnecessary method 2021-02-21 19:40:33 +01:00
joshua a1779d1a7a Rewrite terminaleditor with ui file.
Write terminal editor with ui file.
The terminalData::type of a terminal can be edited with the terminal
editor.
2021-02-21 19:40:33 +01:00
joshua 252106178b Add enum Type to terminalData class 2021-02-21 19:40:32 +01:00
joshua a00404bc9f clean terminal and terminaldata class 2021-02-21 19:40:32 +01:00
joshua e2ebb445a8 Terminal : remove unused code 2021-02-21 19:40:32 +01:00
joshua 24ec94d73e QetElementEditor : rewrite gui with ui file 2021-02-21 19:40:32 +01:00
joshua edb42caa16 Fix typo
Fixed a typo that resulted in existing PDF files not being displayed in
the dialog box "Save As PDF".
Thanks Bisku
2021-02-21 19:38:53 +01:00
Pawel Śmiech c110acc0ac Polish translation updated
Signed-off-by: Pawel Śmiech <pawel@localhost.localdomain>
2021-02-21 13:46:41 +01:00
Laurent Trinques 3467c09c1e Change displayedVersion = "0.90-DEV" 2021-02-21 11:00:42 +01:00
Laurent Trinques 664537c178 Change displayedVersion 2021-02-21 10:15:38 +01:00
joshua 5f908fcd88 ElementCollectionWidgetWidget : Set search start when text to search have at least 3 letters.
The goal is to avoid gui freeze when search for 1 or 2 letters (in this
case qet search for every item and take a lot of time).
2021-02-21 09:44:38 +01:00
Laurent Trinques ef58f34c14 Update Copyright date 2021-02-20 12:13:46 +01:00
artgg7300 34eb14a97e translated hungarian element names 2021-02-15 20:26:47 +01:00
joshua 30858f9a4d Minor fix :
Combobox "information of element" don't display the real information set
to the dynamic text field
2021-02-15 18:53:22 +01:00
Lars Biskupek 108513ef97 Update German Language file qet_de 2021-02-15 12:14:47 +01:00
Simon De Backer 81e6f217b4 Fix Cmake will not build
missing files in Cmake
From: 0c4f87bd76
2021-02-14 06:52:05 +01:00
joshua c592b7a7fd Fix crash
When use the function "invert selection" qet crash when a selected
conductor is being deselected.
2021-02-09 21:05:32 +01:00
Laurent Trinques e3fab9508f Update pl translation, thanks Pawel 2021-02-08 05:45:18 +01:00
joshua c13af5ace0 Clean some include 2021-02-07 20:44:17 +01:00
joshua 0c4f87bd76 Replace AddItemCommand class by AddGraphicsObjectCommand
The class is the same except the name and the use of QPointer to avoid
segfault with deleted QGraphicsObject.
2021-02-07 16:20:55 +01:00
joshua ac23010559 Fix crash 2021-02-07 13:25:21 +01:00
joshua b335a4af4f Fix bug 225
https://qelectrotech.org/bugtracker/view.php?id=225
2021-02-06 19:41:22 +01:00
joshua 2513961cd6 Revert "Update Copyright date"
This reverts commit d04bccc384.
2021-02-06 19:00:48 +01:00
Laurent Trinques d04bccc384 Update Copyright date 2021-02-06 18:33:42 +01:00
Ole Carlsen 47ea5a3da9 Updated Danish Translation 2021-02-01 20:43:18 +01:00
joshua e1b98ce5b5 Revert "QetElementEditor : rewrite gui with ui file"
This reverts commit e3db2bc898.
2021-02-01 19:52:15 +01:00
pavelfric 70947ac5b9 Updated Czech translations of elements. 2021-02-01 18:35:26 +01:00
pavelfric b58898b6c8 Updated Czech translations of elements. 2021-02-01 18:10:47 +01:00
plc-user 6da28a1845 added MDT-elements (by a.funke) and some cleanup of elements 2021-02-01 02:51:35 +01:00
Lars Biskupek 4ade6f3227 MantisBT Issue #219 solved
Translation for "Formater en tant que liste de materiel" added.
2021-01-31 14:42:59 +01:00
Lars Biskupek 507841208d Updated German language file qet_de.qm 2021-01-31 07:53:15 +01:00
dlee99 762a9e3718 modified: lang/qet_nl.qm
modified:   lang/qet_nl.ts
2021-01-31 00:25:56 +01:00
joshua b1a7f2e26c Minor : Text of folio report is now set as "label" 2021-01-30 19:44:18 +01:00
joshua e3db2bc898 QetElementEditor : rewrite gui with ui file 2021-01-30 19:34:21 +01:00
artgg7300 85fa9245a4 translated hungarian element names 2021-01-30 18:33:13 +01:00
artgg7300 4df313cbeb translated hungarian lang files 2021-01-30 16:49:50 +01:00
Laurent Trinques f62feaef94 Update *ts files 2021-01-30 15:20:57 +01:00
Laurent Trinques ad340cf95a Minor 2021-01-30 15:16:43 +01:00
Laurent Trinques 692bf0ed72 Replace the flag of the Arab country 2021-01-30 15:05:56 +01:00
pavelfric 3aceb436be Updated Czech translations of elements. 2021-01-30 11:43:02 +01:00
pavelfric 330299e9df Updated Czech translations of elements. 2021-01-30 11:17:13 +01:00
Lars Biskupek eefa4de8f8 Updated German translation qet_de.ts
Translation for 'Mongol' and 'Modifier les informations de plusieurs éléments' added.
2021-01-30 07:14:58 +01:00
pavelfric 1d28f29c07 Updated Czech translations of elements. 2021-01-29 20:15:31 +01:00
artgg7300 5abf93dd8d translated hungarian lang files 2021-01-29 19:48:49 +01:00
Laurent Trinques 07a6dd887e Update translations_stat.pl files 2021-01-29 18:27:18 +01:00
Laurent Trinques 4a63aca8cd Update translation en fr 2021-01-29 17:40:54 +01:00
Laurent Trinques 3c278bbbfb Update *ts files 2021-01-29 17:36:40 +01:00
Laurent Trinques d333b6a188 Prepare to add new country Mongolian switch 2021-01-29 17:12:44 +01:00
Laurent Trinques f235022c44 Update Mongolian translation, thanks Nathalie 2021-01-29 16:22:55 +01:00
artgg7300 750f60f571 Merge branch 'master' of ssh://git.tuxfamily.org/gitroot/qet/qet 2021-01-28 20:10:21 +01:00
artgg7300 1558d0c00a translated hungarian element names 2021-01-28 20:07:22 +01:00
joshua aa66eabe7c Fix bug 221
https://qelectrotech.org/bugtracker/view.php?id=221
2021-01-28 19:25:42 +01:00
joshua 20cd0366eb Update typo 2021-01-28 19:14:26 +01:00
pavelfric ec63d7a1cb Updated Czech translations of elements. 2021-01-28 17:37:51 +01:00
plc-user fdd617f9a5 added german translations for elements 2021-01-24 20:33:39 +01:00
plc-user 3e9c17030c added german translations for elements 2021-01-24 20:33:39 +01:00
artgg7300 8c07daaf8e translated hungarian element names 2021-01-24 07:31:06 +01:00
artgg7300 3cf178d056 translated hungarian element names 2021-01-24 06:58:26 +01:00
plc-user 842fa28390 corrected filenames and added german translations 2021-01-24 04:26:57 +01:00
plc-user 5041fa9ccc some german translations for elements 2021-01-24 04:26:57 +01:00
plc-user 2ce0205d94 some german translations in "qet_directory" 2021-01-24 04:26:57 +01:00
Simon De Backer b64086fbcd Fix add project_title on save
see
https://qelectrotech.org/forum/viewtopic.php?pid=14160
2021-01-23 21:57:56 +01:00
artgg7300 4c075ed551 Translated hungarian element names 2021-01-23 06:42:22 +01:00
artgg7300 51087551c9 little modif for elements directory 2021-01-22 06:01:05 +01:00
joshua bb82a616de Minor fix : widget lose focus each time user tip
Each time a QUndoCommand is pushed to a QUndoStack, the current focused
widget lose focus.
So each time user change a value in a widget (for exemple a QSpinBox)
the widget lose focus and user will have to click again in the widget to
gain focus and continue to edit.
The workaround is to call the method focus of the current widget each
time we push a undo command
2021-01-21 19:35:38 +01:00
pavelfric da1fda6b03 Updated Czech translations of elements. 2021-01-20 22:40:13 +01:00
pavelfric 7d9926ccfc Updated Czech translations of elements. 2021-01-20 22:37:11 +01:00
pavelfric dd4c016b46 Updated Czech translations of elements. 2021-01-20 22:25:53 +01:00
plc-user c954f204ac some bugfixing and some new elements 2021-01-19 16:12:46 +01:00
artgg7300 743557b604 translated hungarian files little mod 2021-01-18 21:00:02 +01:00
pavelfric 4fc7c1abd9 Updated Czech translations of elements. 2021-01-18 19:38:02 +01:00
plc-user 48fa67fc3d renamed element-directories 2021-01-18 05:33:35 +01:00
artgg7300 7fe26b5d1c translated hungarian element names 2021-01-17 19:33:39 +01:00
pavelfric f726397038 Updated Czech translations of elements. 2021-01-17 18:06:28 +01:00
pavelfric c78685e95f Updated Czech translations of elements. 2021-01-17 18:01:21 +01:00
pavelfric ef5b17be6e Updated Czech translations of elements. 2021-01-17 09:32:54 +01:00
pavelfric 47d5862ab0 Updated Czech translations of elements. 2021-01-17 08:57:18 +01:00
pavelfric 30b733febe Updated Czech translations of elements. 2021-01-16 23:37:21 +01:00
pavelfric 61d7eb966c Merge branch 'master' of ssh://git.tuxfamily.org/gitroot/qet/qet 2021-01-16 22:17:35 +01:00
pavelfric 838003a25c Updated Czech translations of elements. 2021-01-16 22:16:51 +01:00
gleissonjoaquim3 753de5445b Added PT_BR translations of qet_directory 2021-01-16 21:57:22 +01:00
pavelfric 37fed57470 Updated Czech translations of elements. 2021-01-16 10:29:05 +01:00
pavelfric bc2e91a271 Updated Czech translations of elements. 2021-01-16 10:16:26 +01:00
pavelfric 46b262243f Updated Czech translations of elements. 2021-01-15 18:57:08 +01:00
pavelfric 9281230ed7 Updated Czech translations of elements. 2021-01-15 18:45:19 +01:00
artgg7300 8111508090 translated hungarian element names 2021-01-14 20:40:34 +01:00
artgg7300 0deb58a3ff translated hungarian element names 2021-01-14 18:01:16 +01:00
pavelfric 4c356cd67a Updated Czech translations of elements. 2021-01-14 10:03:26 +01:00
pavelfric c6af279b36 Updated Czech translations of group name. 2021-01-13 21:55:56 +01:00
pavelfric e0353d0657 Update of Czech translation.Merge branch 'master' of ssh://git.tuxfamily.org/gitroot/qet/qet 2021-01-13 21:33:55 +01:00
pavelfric 6fcb0fec08 Updated Czech translations of elements. 2021-01-13 21:25:24 +01:00
artgg7300 3c26b1dfdb updated hungarian element names 2021-01-13 20:36:44 +01:00
pavelfric d783ec66f5 Updated Czech translations of elements. 2021-01-13 20:11:20 +01:00
artgg7300 02b51ee4fa second attempt to commit translated hungarian element names 2021-01-13 06:10:39 +01:00
pavelfric cf4d0dd2eb Updated Czech translations of elements. 2021-01-12 19:23:21 +01:00
Laurent Trinques e8c2c29617 Revert "translated element names on hungarian lang"
This reverts commit 5f7f00f7ae.
2021-01-12 10:31:14 +01:00
artgg7300 ee7004a7d1 Merge branch 'master' of ssh://git.tuxfamily.org/gitroot/qet/qet 2021-01-11 21:45:34 +01:00
pavelfric 2c046975f3 Updated Czech translations of elements. 2021-01-11 21:39:27 +01:00
artgg7300 5f7f00f7ae translated element names on hungarian lang 2021-01-11 21:37:38 +01:00
pavelfric 577a7564dc Updated Czech translations of elements. 2021-01-10 20:21:45 +01:00
pavelfric f54cd3ef7f Updated Czech translations of elements. 2021-01-10 18:24:57 +01:00
pavelfric d7fdf188bf Updated Czech translations of elements. 2021-01-10 14:28:45 +01:00
Laurent Trinques 147137b24b Add new symbols, thanks gabor 2021-01-10 11:36:58 +01:00
joshua 4f455a5328 General configuration page : set 'appearance' as default tab 2021-01-08 18:26:55 +01:00
gleissonjoaquim3 a0b5feba08 Minor fixes in PT_BR translation 2021-01-08 05:55:34 +01:00
pavelfric 8c729b4732 Updated Czech translations of elements. 2021-01-07 21:29:20 +01:00
joshua 0a616088ea Dynamic text field editor : move kcolorbutton from ui file to cpp file
Kcolorbutton is not available in Qt6 for now.
We move it from the ui file to the cpp file for choose at compilation if
qet must use kcolorbutton or not.
2021-01-07 18:56:25 +01:00
pavelfric 58b7097748 Updated Czech translations of elements. 2021-01-06 20:35:44 +01:00
pavelfric 966a08f50f Updated Czech translations of elements. 2021-01-05 22:14:49 +01:00
Simon De Backer 2000b6cd2b Update Cmake and disable fail to compile if it uses deprecated APIs. 2021-01-04 20:38:57 +01:00
Simon De Backer d3093f495b Revert "Mod DynamicTextFieldEditor"
This reverts commit f6d777e2f7.

it is preferable to keep the gui in the ui file
QT6 will have to wait.
2021-01-04 20:37:17 +01:00
pavelfric 55dfec41c3 Updated Czech translations of elements. 2021-01-04 18:25:24 +01:00
joshua 34baceb8da Fix bug 175
When use a "dark" Qt theme, some part of element are drawn white/gray
instead of black.
2021-01-03 23:30:48 +01:00
pavelfric ade79b467a Updated Czech translations of elements. 2021-01-03 22:52:18 +01:00
plc-user 948915a47e further bug-fixing 2021-01-03 21:38:59 +01:00
plc-user ba693420f3 some new elements 2021-01-03 15:22:54 +01:00
plc-user 63b43421a7 some bugfixing and optimizing of elements 2021-01-03 15:22:54 +01:00
joshua 0a8376c189 Fix bug 220
see https://qelectrotech.org/bugtracker/view.php?id=220
2021-01-02 20:11:47 +01:00
Simon De Backer bf9123f9b5 Fix xml in Element (Catch from QElectroTech_Element_Updater)
I don't know how this could have happened, but it happened.
2021-01-01 15:28:41 +01:00
Laurent Trinques 20f9475a6e Update symbols 2021-01-01 14:42:46 +01:00
pavelfric 1badeceed4 Updated Czech translations of elements. 2021-01-01 13:41:50 +01:00
Laurent Trinques 344d898461 Add symbols 2021-01-01 13:13:44 +01:00
pavelfric 5730559ed0 Updated Czech elements translations. 2020-12-31 14:19:52 +01:00
plc-user 74342cb00d added manufacturer- and designation-info also to front-views 2020-12-22 09:53:32 +01:00
plc-user c5fd14794f re-organized directory, added manufacturer- and designation-info and added some new elements 2020-12-22 09:53:32 +01:00
sdeffaux 401a5010be reorganized folder 2020-12-21 11:23:16 +01:00
sdeffaux c8adffb696 Add symbols 2020-12-21 11:23:16 +01:00
Simon De Backer 0cc3099908 Mod TextEditor
the ui file is written in the TextEditor class
    Add switch for KF5 (QT6)
2020-12-18 17:39:00 +01:00
Simon De Backer 2e543dd1f7 Add create translation .ts file on Cmake 2020-12-18 17:05:41 +01:00
joshua af3772b95a Element view : fix drag view 2020-12-17 23:39:35 +01:00
joshua 546db38683 Fix fail to build 2020-12-17 23:39:04 +01:00
Simon De Backer 404ae4fffc Add Cmake ui files in sdk 2020-12-17 21:43:23 +01:00
Simon De Backer f6d777e2f7 Mod DynamicTextFieldEditor
the ui file is written in the Dynamic Text Field Editor class
Add switch for KF5 (QT6)
2020-12-17 21:42:18 +01:00
Simon De Backer cb37c1c2fe Add switch for KF5 (QT6) and Mod Cmake
if we want to test QET on QT6, KF5 must be removed from the code,
this switch is for that,

this is for testing only
2020-12-16 23:06:08 +01:00
Simon De Backer 13db08ad56 Mod hoto_update_cmake_message 2020-12-15 21:30:25 +01:00
Simon De Backer 7fc9d06eef Fix Cmake translation files dir 2020-12-14 21:30:40 +01:00
Simon De Backer 842b39d68b Fix som Cmake PATH 2020-12-13 20:57:10 +01:00
Simon De Backer 8fb1cd0fa7 Add __FILE__ __LINE__ __FUNCTION__ to failed to load desired_language
qInstallMessageHandler(myMessageOutput);// for debugging
is only called later,so we have to get the info manually
2020-12-13 16:26:33 +01:00
Simon De Backer 2fc7f594cc Add Cmake files 2020-12-13 15:44:01 +01:00
Simon De Backer c46caaf6e4 Fix Cmake dubbe
see cmake/define_definitions.cmake
2020-12-13 00:47:09 +01:00
Simon De Backer c88d1ef6bb Refactoring Cmake
cleaning up the Cmake code
2020-12-13 00:40:43 +01:00
Simon De Backer d2fb0d8ad1 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
2020-12-11 23:57:17 +01:00
Simon De Backer 0207390ced Revert "Remove all qm files"
This reverts commit c2acbc88ed.

i will have to find another way for cmake
2020-12-11 23:43:15 +01:00
Simon De Backer ce5cc25186 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
2020-12-11 22:41:30 +01:00
Simon De Backer 74b112a4bb Mod KF5 v5.76.0 => v5.70.0
see https://qelectrotech.org/forum/viewtopic.php?pid=13924#p13924
2020-12-11 18:05:21 +01:00
Simon De Backer c2acbc88ed Remove all qm files
why:
they are created at compile time,
but the existing ones in src dir prevent the ones created in the buid dir
=> no qm files are shipped
2020-12-11 17:41:10 +01:00
Simon De Backer 6ec9a04fda Fix translation in Cmake 2020-12-11 17:29:05 +01:00
Simon De Backer 35ad994471 Mod more Cmake 2020-12-11 16:17:15 +01:00
Simon De Backer 83d802adf7 Mod Cmake first working build 2020-12-11 14:55:11 +01:00
Simon De Backer aacbe57d51 Mod Pro file to close the gap with Cmake 2020-12-11 08:08:12 +01:00
Simon De Backer 62b71c0ba5 Fix more Cmake + Mod pragma message 2020-12-11 00:45:43 +01:00
Simon De Backer eb49977c75 Fix som Cmake (add_definitions)
add_definitions(-DGIT_COMMIT_SHA=${GIT_COMMIT_SHA})
-DGIT_COMMIT_SHA=GIT_COMMIT_SHA
2020-12-11 00:16:49 +01:00
Simon De Backer 6da9c58458 Wip Fix preprocessor on Cmake 2020-12-10 21:19:45 +01:00
Simon De Backer 234f468f15 Fix GIT_COMMIT_SHA in Cmake 2020-12-10 21:18:42 +01:00
Simon De Backer ed938c82cd Mod Cmake 2020-12-10 19:03:36 +01:00
Simon De Backer 6aa30d5f57 Add QPointF code did not build 2020-12-10 18:52:20 +01:00
Simon De Backer d15443cf93 Wip Fix preprocessor on Cmake 2020-12-10 18:49:35 +01:00
Simon De Backer 3fe0adc66e QT6 QChar and int build error remove code for QT 6 or later!
this will have to be restored later.
2020-12-10 16:12:04 +01:00
Simon De Backer d0c129478e Mod Cmake en preprocessor 2020-12-10 00:08:26 +01:00
Simon De Backer 4de9c1d922 Add Test google mock
for imitating QET on tests (a file, a netwerk link, ...)
2020-12-09 10:48:38 +01:00
Simon De Backer d89d1088a3 Cmake for UI files auto link
this is one of the errors:
the ui files must be linked and changed to h files
so the h files found in the code by preprocessor
2020-12-09 10:40:12 +01:00
Simon De Backer 6556fbaf38 Add QT test to tests 2020-12-08 21:00:43 +01:00
Simon De Backer c83388c1d5 Add Test files 2020-12-08 20:44:50 +01:00
Simon De Backer 10c4c3d528 Wip Fix preprocessor on Cmake 2020-12-08 19:57:35 +01:00
Simon De Backer 1871b7ad12 Add more Cmake 2020-12-08 15:20:48 +01:00
Simon De Backer 6cd6efaca9 Add Catch2 and Google Test on Cmake
ToDo:
- Add compiling QElectroTech on Cmake (help needed)
- more Tests?
   - Qt Test
   - Boost Test

to test
run qtcreator
File >  open => CMakeLists.txt
2020-12-08 12:18:20 +01:00
plc-user b70775bc84 added elements to WAGO and corrected typo 2020-12-07 10:15:17 +01:00
Simon De Backer cffec76018 Fix warning: implicit conversion from 'int' to 'float'
changes value from 2147483647 to 2147483648
/* The largest number rand will return (same as INT_MAX).  */
#define	RAND_MAX	2147483647

(static_cast<float>(quint32) / int * 8)
why cast an int to a float to then divide by an int?

just divide the int by an int.
2020-12-05 08:24:35 +01:00
Lars Biskupek ebe22f1131 Update qet_de.ts
Translation string for "Tension / Protocole" set from unfinished to translated.
2020-12-05 03:56:55 +01:00
Lars Biskupek f3888be8a6 Updated somne elements I created earlier 2020-12-05 03:56:55 +01:00
Simon De Backer 53aaa03967 fix QT DEPRECATED VERSION 5.15.2 and QT6
-QPrinter
2020-12-04 22:46:11 +01:00
Claveau Joshua b22741732b Minor fix : folio-report information 'tension_protocol' isn't displayed
When a folio report have a text item witch must display the information
'tension protocol' the text is empty.
Replace the string 'tension/protocol' by 'tension_protocol' in
QETInformation namespace.
Move the static QStrings of the namespace QETInformation from
qetinformation.cpp to qetinformation.h to be use everywhere in the code.
2020-12-04 21:07:42 +01:00
Simon De Backer 77e6248ac9 fix QT DEPRECATED VERSION 5.15.2 and QT6
-QPrinter
2020-12-04 18:15:37 +01:00
Simon De Backer ccd76f902d fix QT DEPRECATED VERSION 5.15.2
-Qt::MidButton
2020-12-04 18:13:48 +01:00
Lars Biskupek 945b690430 Update of German Language File 2020-12-03 18:02:15 +01:00
Claveau Joshua 0f86685ebe Remove duplicated elements 2020-12-02 20:04:01 +01:00
Claveau Joshua 862f311f5a Remove duplicated elements 2020-12-02 19:07:58 +01:00
Claveau Joshua abc6b35d4c Remove duplicated elements 2020-12-02 18:57:08 +01:00
Claveau Joshua ada563719b Minor fix 2020-12-02 18:47:28 +01:00
Laurent Trinques ed455609d5 Add new symbols, thanks Mario 2020-12-02 14:27:27 +01:00
Laurent Trinques 2f004c271f Update displayed version to release candidate 2020-12-01 15:45:48 +01:00
gleissonjoaquim3 bafe7a39db Fixed spelling error on Translation PT_BR 2020-12-01 07:44:47 +01:00
gleissonjoaquim3 0b1e012a32 Updated translation PT_BR 2020-12-01 07:44:47 +01:00
Claveau Joshua e0a03e7353 Remove duplicated elements 2020-11-29 12:49:04 +01:00
Claveau Joshua 68215d099c Remove duplicated elements 2020-11-29 12:37:56 +01:00
Claveau Joshua 3b472591b6 Remove duplicated elements 2020-11-29 11:59:20 +01:00
Claveau Joshua d3cb7ef08c Remove duplicated elements 2020-11-29 11:51:16 +01:00
Claveau Joshua 049848737b Remove duplicated elements 2020-11-29 11:44:02 +01:00
Claveau Joshua d3348e25be Remove duplicated elements 2020-11-29 11:06:06 +01:00
Claveau Joshua 764cdfea53 Remove duplicated elements 2020-11-29 11:00:04 +01:00
Claveau Joshua b149e3e6ca Remove duplicated element 2020-11-29 10:55:36 +01:00
Claveau Joshua 7313cdfa9e Remove duplicated elements (hager)
All elements are duplicated and standardised
2020-11-29 10:47:58 +01:00
Claveau Joshua fd92c1ce92 Remove duplicated elements. 2020-11-28 17:20:33 +01:00
Ole Carlsen 0ac96eecfc Danish update color scheme 2020-11-22 14:29:20 +01:00
Lars Biskupek d02b88488a German translation updated
Two new strings in qet_de.ts translated.
qet_de.qm generated.
2020-11-22 13:39:49 +01:00
Ole Carlsen 87956d8d42 Merge branch 'master' of ssh://git.tuxfamily.org/gitroot/qet/qet 2020-11-22 12:22:52 +01:00
Ole Carlsen ab1027eb5d Danish translation 2020-11-22 12:20:58 +01:00
Claveau Joshua aa858ba32d project database : minor 2020-11-22 12:16:17 +01:00
Claveau Joshua a303a38d0d ProjectDatabase improvement
Use transaction / commit when several elements was changed instead of
update one by one each element.
2020-11-22 11:31:43 +01:00
artgg7300 51bae7cdf1 translated hungarian files 2020-11-22 07:58:18 +01:00
dlee99 05dad2c8d8 modified: lang/qet_nl.qm
modified:   lang/qet_nl.ts
2020-11-21 20:08:57 +01:00
Laurent Trinques b457b98b22 Update *TS file 2020-11-21 11:35:08 +01:00
Claveau Joshua 8fec6dabef Dynamic element text item new feature
Add feature keep visual rotation.
When parent is rotated, the text rotation is changed to keep the same
visual rotation.
2020-11-20 20:52:19 +01:00
plc-user f7e12e5e87 modified / added german translations and added some Elements 2020-11-20 14:56:00 +01:00
plc-user 689799ea24 modified / added german translations and added some Elements 2020-11-20 14:56:00 +01:00
Claveau Joshua 380de0b4c3 Search and replace widget : minor improvement
Fix 1 : when widget is reloaded the categories is not checked, but the
child items is. Now  all category is checked when reloaded.
Fix 2 : the folio number displayed in the widget is wrong (start at 0
instead of 1)
2020-11-17 22:25:01 +01:00
plc-user 3633123d17 changed/added some translations in qet_directory - files and elements 2020-11-17 21:43:10 +01:00
Lars Biskupek 66d45cc835 German language files updated
Translation of new items added
2020-11-17 21:41:31 +01:00
dlee99 56710ef25c modified: lang/qet_nl.qm
modified:   lang/qet_nl.ts
2020-11-17 21:19:15 +01:00
aitolos 77479dc949 Greek lang update 2020-11-17 17:43:34 +02:00
artgg7300 529c6a721a updated hungarian files 2020-11-17 05:32:27 +01:00
Laurent Trinques fd3d2dfb90 Update *TS files 2020-11-16 21:59:28 +01:00
Lars Biskupek d1aba1118b Update of language files DE, EN, IT
Update of german language file and some minor changes on the english language file.
Update of italian language to solve issue #0000193 on Bugtracker, issued by rpaolo538.
2020-11-16 10:10:27 +01:00
Simon De Backer c4fe1fe3da Merge branch 'master' of ssh://debacker@git.tuxfamily.org/gitroot/qet/qet.git 2020-11-15 20:47:09 +01:00
Simon De Backer c167015b22 Add Todo for qet_tb_generator 2020-11-15 20:46:37 +01:00
plc-user 48e597663e adjusting/correcting some item-numbers and adding some elements 2020-11-15 20:15:28 +01:00
plc-user bd26e4bb9c adjusting/correcting some item-numbers and adding some elements 2020-11-15 20:15:28 +01:00
Simon De Backer f7a445c0a7 Add Todo for DXF to GET-2020 2020-11-15 18:29:19 +01:00
Claveau Joshua bb32c30004 Search and replace widget improvement
Add a popup menu to select the elements, conductors and texts of the
current selected diagram in the tree widget.
2020-11-15 17:19:42 +01:00
Claveau Joshua 79fa9c8ec5 improve qetinformation file 2020-11-15 12:19:37 +01:00
Claveau Joshua a73d50d7d0 Fix wrong text 2020-11-15 11:49:24 +01:00
Claveau Joshua af7d1df5ab Replace function by another one.
Replace function QETApp::elementInfoKeys() and
QETApp::elementInfoToVar(const QString &info) by function provided by
QETInformation.
2020-11-14 19:09:40 +01:00
Simon De Backer c87fe8df2f Merge branch 'dev_submodule'
this sets the stage for submodules
submodules are not used at this time
2020-11-13 18:59:36 +01:00
Simon De Backer f613f7fcdc Mod git pull
this works for git pull since Git 2.15
2020-11-13 18:51:30 +01:00
Laurent Trinques 20911f215b Update de translations, thanks Lars 2020-11-13 08:30:27 +01:00
Laurent Trinques b557aa0e98 Add and refresh Wago WAGO_Kontakttechnik directory, thanks Plc-user 2020-11-12 19:06:22 +01:00
Laurent Trinques 6b89349240 Minor: move lt4301tadac.elmt to pro-face directory 2020-11-12 13:29:04 +01:00
Laurent Trinques 6b54e45e3a Add Pro face element, thanks Fury 2020-11-12 09:33:13 +01:00
Laurent Trinques fec3c70739 Add new Legrand Optimum & Netatmo element, thanks Arnaud 2020-11-11 10:12:14 +01:00
Ole Carlsen a028724773 Danish update 2020-11-09 20:51:43 +01:00
Claveau Joshua 49b2e4ad0a Replace function by another one
Replace QETApp::diagramInfoKeys() by QETInformation::diagramInfoKeys()
and QETApp::diagramTranslatedInfoKey(str) by
QETInformation::translatedInfoKey(str)
2020-11-08 20:23:16 +01:00
Claveau Joshua 81efc5181b Minor replace function by another one
Replace QETApp::conductorInfoKeys() and
QETApp::conductorTranslatedInfoKey(const QString &key) by
QETInformation::conductorInfoKeys() and
QETInformation::translatedInfoKey
2020-11-08 19:44:21 +01:00
Claveau Joshua 6f60156e00 Change function QETApp::elementTranslatedInfoKey
Use the function QETInformation::translatedInfoKey(const QString &info)
instead of QETApp::elementTranslatedInfoKey(const QString &info).

The final goal is to remove all information from the QETApp and use
instea QETInformation who is dedicated to this
2020-11-08 19:16:02 +01:00
Claveau Joshua 7882c5734a Minor : fix little regression about folio report and displayed information 2020-11-08 19:05:11 +01:00
Simon De Backer 0bfbc37bc9 Add git submodule instruction 2020-11-07 22:38:28 +01:00
Simon De Backer e3b98001f3 Fix indentation restored 2020-11-07 22:19:54 +01:00
Simon De Backer d1c969b723 Purge old comment 2020-11-07 22:18:53 +01:00
Simon De Backer acf9c17969 Add packaging script's
info of packaging_script Debian, Ubuntu, Windows
https://qelectrotech.org/wiki_new/doc/packaging_debian#packaging_script_debian_ubuntu_windows

Laurent,
can you check the scripts if they work now,
I'll then change them to scripts that can handle git Submodules
2020-11-07 18:38:35 +01:00
artgg7300 862dbede24 updated hungarian files 2020-11-07 09:56:33 +01:00
dlee99 be3421f8c9 modified: lang/qet_nl.qm
modified:   lang/qet_nl.ts
2020-11-06 20:08:46 +01:00
Laurent Trinques 4ad4e75132 Update TS files and update it translation, thanks Marco 2020-11-06 08:01:14 +01:00
pavelfric d2c4bf4ec7 Updated Czech translation. 2020-11-02 22:05:38 +01:00
pavelfric a97ee8ddba Merge branch 'master' of ssh://git.tuxfamily.org/gitroot/qet/qet 2020-11-02 22:04:40 +01:00
Claveau Joshua ca0dcc9b7b Fix crash 2020-11-02 19:31:52 +01:00
Claveau Joshua 62333506f1 Improve update of the project database 2020-11-02 19:13:56 +01:00
Ole Carlsen 98de247a4d Minor danish translation update 2020-11-02 18:47:53 +01:00
Claveau Joshua a0efad18ab Merge branch 'master' of ssh://git.tuxfamily.org/gitroot/qet/qet into master 2020-11-01 21:28:06 +01:00
Claveau Joshua b514c39883 Improve update of the project database 2020-11-01 21:27:40 +01:00
Simon De Backer 859bf7f645 Mod clazy checks range-loop
you're using C++11 range-loops with non-const Qt containers
(potential detach).

adding missing &
2020-11-01 19:10:30 +01:00
Simon De Backer 1b10fe3b7f Mod container-anti-pattern
Finds when temporary containers are being created needlessly.
These cases are usually easy to fix by using iterators,
avoiding memory allocations.

And mod to return on first true

can we test if the Elements collection reload faster or not?
2020-11-01 18:44:14 +01:00
Simon De Backer 41c7cde8ca Mod overlapping comparisons
warning: overlapping comparisons always evaluate to true

valid for a project made before 0.7
probably it will be better to delete the code completely.
2020-11-01 18:11:55 +01:00
Simon De Backer 69adb10bcc Add clang-format file (WIP) 2020-11-01 16:57:19 +01:00
pavelfric 239a7daf7f Updated Czech translation. 2020-11-01 15:20:39 +01:00
pavelfric f73f71c0aa Merge branch 'master' of ssh://git.tuxfamily.org/gitroot/qet/qet 2020-11-01 15:16:13 +01:00
Laurent Trinques 23764c0e11 Update be-nl translations, thanks Ronny 2020-11-01 11:40:17 +01:00
Laurent Trinques beec556a55 Update qet_en.qm 2020-11-01 07:10:46 +01:00
M. Buijs 3a0da97878 Update qet_en.ts
The first letter of the word needs to be in upper case to align with the rest of the menu.
2020-11-01 07:09:11 +01:00
pavelfric 2afac1e56d Updated Czech translation. 2020-10-31 22:20:13 +01:00
Claveau Joshua 72271cfc69 Improve format of save date
3 formats : local, eu (dd mm yyyy) and us (yyyy mm dd)
2020-10-31 14:22:06 +01:00
Simon De Backer 24c930d727 Mod raw Pointer to QScopedPointer
Clang-Tidy and Clazy said
"drag" leaks memory
2020-10-30 21:07:12 +01:00
Simon De Backer 87845ef0ee Add failed to load message of languages on log file
compiler complained about non return value of
bool QTranslator::load
2020-10-29 20:41:24 +01:00
Ole Carlsen 8c51725c71 Danish translation update 2020-10-29 17:19:29 +01:00
Laurent Trinques dbf4315deb Update de translation, thanks Lars 2020-10-29 02:10:05 +01:00
Laurent Trinques 099dc614bd Update en qm 2020-10-28 10:57:12 +01:00
M. Buijs 96450ce19f Update qet_en.ts
Small language updates
2020-10-27 23:56:20 +01:00
dlee99 1d606c574b modified: lang/qet_nl.qm
modified:   lang/qet_nl.ts
2020-10-27 21:46:54 +01:00
Claveau Joshua 8ba982f6cc improve code readability 2020-10-27 21:05:29 +01:00
Claveau Joshua 329ceb4594 Bug fix : directory of embedded element collection is not translated
Bug introduced at commit 995066916b
2020-10-27 20:49:16 +01:00
Laurent Trinques 50de125787 Update en translations 2020-10-27 12:07:44 +01:00
M. Buijs 2839a4009c Update qet_en.ts
Added missing translation
2020-10-27 12:07:01 +01:00
Simon De Backer 6bfb2b95d2 QT6: QStringref replaced to QStringView in QT6
as a result this additional instruction is required
2020-10-26 23:01:45 +01:00
sdeffaux 0dba97ef6a Add symbols and fix bux 193 2020-10-26 21:23:33 +01:00
Simon De Backer c5c3dfb07b Mod Maximum Size of configureQET widget 2020-10-25 12:24:43 +01:00
sdeffaux 1c91a6300a Add symbols 2020-10-24 20:31:45 +02:00
Claveau Joshua b1eb59f3ea Improve previous comit 2020-10-22 21:07:41 +02:00
Laurent Trinques cb29a4d383 Fix date on summary pages 2020-10-22 18:28:52 +02:00
artgg7300 077c4f578a translated hungarian files 2020-10-21 18:24:05 +02:00
Martin Marmsoler b32a295b0c fix issue when creating xml document 2020-10-20 12:01:55 +02:00
Martin Marmsoler 6251862f7a default color was wrong 2020-10-20 08:54:56 +02:00
Martin Marmsoler 793770a72a initialize TerminalData with nullpoint to not having an invalid value 2020-10-20 08:54:56 +02:00
Martin Marmsoler aba16dc936 remove not needed variable 2020-10-20 08:54:56 +02:00
Martin Marmsoler e5b8ba7e22 fix problems in partrectangle 2020-10-20 08:54:56 +02:00
Simon De Backer dad32d5897 Add destructor to Machine_info class to fix segfault 2020-10-20 08:54:56 +02:00
Martin Marmsoler 9658a88c18 fix compile issues 2020-10-20 08:54:56 +02:00
Martin Marmsoler 12e301b887 replace 4 spaces by a tab 2020-10-20 08:54:56 +02:00
Martin Marmsoler f3097fc537 rebase XMLProperties_New (c0d9bf9) to master 2020-10-20 08:54:14 +02:00
Martin Marmsoler 73b394527d replace tabs by 4 spaces 2020-10-20 08:53:43 +02:00
aitolos 752f31513c Update Greek Lang 2020-10-19 18:29:29 +03:00
aitolos 756fc845a5 Merge branch 'master' of ssh://git.tuxfamily.org/gitroot/qet/qet 2020-10-19 18:14:08 +03:00
aitolos 9d89719c21 Merge branch 'master' of ssh://git.tuxfamily.org/gitroot/qet/qet 2020-10-19 18:12:26 +03:00
aitolos 785c5884e8 Update Greek Lang 2020-10-19 18:11:32 +03:00
Laurent Trinques 87425d70ce Update * TS files 2020-10-19 14:21:02 +02:00
Laurent Trinques 9c267d673d Fix %{saveddate} titleblock variable and
add new %{saveddate-eu} variable dd-MM-yyyy date format
2020-10-19 14:09:26 +02:00
Claveau Joshua 69f775aa0f Minor fix : can't move diagram to top from element panel widget 2020-10-18 11:50:04 +02:00
Ole Carlsen 2619d96998 Danish translation updated 2020-10-18 11:03:34 +02:00
Claveau Joshua 74ee2fd82c minor 2020-10-18 10:49:45 +02:00
Claveau Joshua ec0b92ec1d Fix : Filling color is not apply to polyline. 2020-10-18 10:45:05 +02:00
artgg7300 a65675b53e translated hungarian files 2020-10-15 20:17:03 +02:00
Laurent Trinques c39ef0a999 Update en fr translation 2020-10-15 18:54:08 +02:00
dlee99 ff84a71d97 modified: lang/qet_nl.qm
modified:   lang/qet_nl.ts
2020-10-14 23:15:59 +02:00
Laurent Trinques 434c3dfbfb Update TS files 2020-10-14 21:00:33 +02:00
Laurent Trinques 096f8f58e1 Updatre de translation, thanks Lars 2020-10-14 20:58:35 +02:00
7488 changed files with 207029 additions and 198805 deletions
+67
View File
@@ -0,0 +1,67 @@
---
BasedOnStyle: LLVM
AlignAfterOpenBracket: AlwaysBreak
AlignConsecutiveMacros: 'true'
AlignConsecutiveAssignments: 'true'
AlignConsecutiveDeclarations: 'true'
AlignEscapedNewlines: Right
AlignOperands: 'true'
AlignTrailingComments: 'true'
AllowAllArgumentsOnNextLine: 'false'
AllowAllConstructorInitializersOnNextLine: 'true'
AllowAllParametersOfDeclarationOnNextLine: 'true'
AllowShortBlocksOnASingleLine: 'true'
AllowShortCaseLabelsOnASingleLine: 'true'
AllowShortFunctionsOnASingleLine: All
AllowShortIfStatementsOnASingleLine: Always
AllowShortLambdasOnASingleLine: All
AllowShortLoopsOnASingleLine: 'true'
AlwaysBreakAfterReturnType: None
AlwaysBreakBeforeMultilineStrings: 'true'
AlwaysBreakTemplateDeclarations: 'Yes'
BinPackArguments: 'false'
BinPackParameters: 'false'
BreakAfterJavaFieldAnnotations: 'true'
BreakBeforeBinaryOperators: NonAssignment
BreakBeforeBraces: Allman
BreakBeforeTernaryOperators: 'false'
BreakConstructorInitializers: AfterColon
BreakInheritanceList: AfterColon
BreakStringLiterals: 'true'
ColumnLimit: '80'
CompactNamespaces: 'false'
ConstructorInitializerAllOnOneLineOrOnePerLine: 'true'
Cpp11BracedListStyle: 'true'
FixNamespaceComments: 'true'
IncludeBlocks: Regroup
IndentCaseLabels: 'false'
IndentPPDirectives: AfterHash
IndentWidth: '4'
JavaScriptWrapImports: 'true'
Language: Cpp
MaxEmptyLinesToKeep: '1'
NamespaceIndentation: All
PointerAlignment: Left
ReflowComments: 'true'
SortIncludes: 'true'
SortUsingDeclarations: 'true'
SpaceAfterCStyleCast: 'true'
SpaceAfterLogicalNot: 'true'
SpaceAfterTemplateKeyword: 'true'
SpaceBeforeAssignmentOperators: 'true'
SpaceBeforeCpp11BracedList: 'true'
SpaceBeforeCtorInitializerColon: 'true'
SpaceBeforeInheritanceColon: 'true'
SpaceBeforeParens: ControlStatements
SpaceBeforeRangeBasedForLoopColon: 'true'
SpaceInEmptyParentheses: 'false'
SpacesInAngles: 'false'
SpacesInCStyleCastParentheses: 'false'
SpacesInContainerLiterals: 'false'
SpacesInParentheses: 'false'
SpacesInSquareBrackets: 'false'
Standard: Cpp11
TabWidth: '4'
UseTab: Always
...
+133
View File
@@ -0,0 +1,133 @@
# Copyright 2006 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(cmake/hoto_update_cmake_message.cmake)
cmake_minimum_required(VERSION 3.14...3.19 FATAL_ERROR)
project(qelectrotech
VERSION 0.9.0
DESCRIPTION "QET is a CAD/CAE editor focusing on schematics drawing features."
HOMEPAGE_URL "https://qelectrotech.org/"
LANGUAGES CXX)
include(cmake/copyright_message.cmake)
set(QET_DIR ${PROJECT_SOURCE_DIR})
# Add sub directories
option(PACKAGE_TESTS "Build the tests" ON)
if(PACKAGE_TESTS)
message("Add sub directorie tests")
add_subdirectory(tests)
endif()
include(cmake/paths_compilation_installation.cmake)
include(cmake/start_options.cmake)
include(cmake/developer_options.cmake)
include(cmake/git_update_submodules.cmake)
include(cmake/git_last_commit_sha.cmake)
include(cmake/fetch_kdeaddons.cmake)
include(cmake/fetch_singleapplication.cmake)
include(cmake/fetch_pugixml.cmake)
include(cmake/qet_compilation_vars.cmake)
set(CMAKE_INCLUDE_CURRENT_DIR ON)
set(CMAKE_AUTOMOC 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)
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
include(cmake/define_definitions.cmake)
add_executable(
${PROJECT_NAME}
${QET_RES_FILES}
${QET_SRC_FILES}
${QM_FILES}
${QET_DIR}/qelectrotech.qrc
)
target_link_libraries(
${PROJECT_NAME}
PUBLIC
PRIVATE
pugixml::pugixml
SingleApplication::SingleApplication
${KF5_PRIVATE_LIBRARIES}
${QET_PRIVATE_LIBRARIES}
)
target_include_directories(
${PROJECT_NAME}
PRIVATE
${QET_DIR}/sources/titleblock
${QET_DIR}/sources/ui
${QET_DIR}/sources/qetgraphicsitem
${QET_DIR}/sources/qetgraphicsitem/ViewItem
${QET_DIR}/sources/qetgraphicsitem/ViewItem/ui
${QET_DIR}/sources/richtext
${QET_DIR}/sources/factory
${QET_DIR}/sources/properties
${QET_DIR}/sources/dvevent
${QET_DIR}/sources/editor
${QET_DIR}/sources/editor/esevent
${QET_DIR}/sources/editor/graphicspart
${QET_DIR}/sources/editor/ui
${QET_DIR}/sources/editor/UndoCommand
${QET_DIR}/sources/undocommand
${QET_DIR}/sources/diagramevent
${QET_DIR}/sources/ElementsCollection
${QET_DIR}/sources/ElementsCollection/ui
${QET_DIR}/sources/autoNum
${QET_DIR}/sources/autoNum/ui
${QET_DIR}/sources/ui/configpage
${QET_DIR}/sources/SearchAndReplace
${QET_DIR}/sources/SearchAndReplace/ui
${QET_DIR}/sources/NameList
${QET_DIR}/sources/NameList/ui
${QET_DIR}/sources/utils
${QET_DIR}/sources/pugixml
${QET_DIR}/sources/dataBase
${QET_DIR}/sources/dataBase/ui
${QET_DIR}/sources/factory/ui
${QET_DIR}/sources/print
)
+67
View File
@@ -1,6 +1,73 @@
Changelog Changelog
========= =========
If by accident I have forgotten to credit someone in the CHANGELOG, email me and I will fix it.
__3.2.0__
---------
* Added support for Qt 6 - _Jonas Kvinge_
* Fixed warning in `Qt 5.9` with `min`/`max` functions on Windows - _Nick Korotysh_
* Fix return value of connectToPrimary() when connect is successful - _Jonas Kvinge_
* Fix build issue with MinGW GCC pedantic mode - _Iakov Kirilenko_
* Fixed conversion from `int` to `quint32` and Clang Tidy warnings - _Hennadii Chernyshchyk_
__3.1.5__
---------
* Improved library stability in edge cases and very rapid process initialisation
* Fixed Bug where the shared memory block may have been modified without a lock
* Fixed Bug causing `instanceStarted()` to not get emitted when a second instance
has been started before the primary has initiated it's `QLocalServer`.
__3.1.4__
---------
* Officially supporting and build-testing against Qt 5.15
* Fixed an MSVC C4996 warning that suggests using `strncpy_s`.
_Hennadii Chernyshchyk_
__3.1.3.1__
---------
* CMake build system improvements
* Fixed Clang Tidy warnings
_Hennadii Chernyshchyk_
__3.1.3__
---------
* Improved `CMakeLists.txt`
_Hennadii Chernyshchyk_
__3.1.2__
---------
* Fix a crash when exiting an application on Android and iOS
_Emeric Grange_
__3.1.1a__
----------
* Added currentUser() method that returns the user the current instance is running as.
_Leander Schulten_
__3.1.0a__
----------
* Added primaryUser() method that returns the user the primary instance is running as.
__3.0.19__
----------
* Fixed code warning for depricated functions in Qt 5.10 related to `QTime` and `qrand()`.
_Hennadii Chernyshchyk_
_Anton Filimonov_
_Jonas Kvinge_
__3.0.18__ __3.0.18__
---------- ----------
+20 -23
View File
@@ -1,43 +1,40 @@
cmake_minimum_required(VERSION 3.1.0) cmake_minimum_required(VERSION 3.7.0)
project(SingleApplication) project(SingleApplication LANGUAGES CXX)
set(CMAKE_INCLUDE_CURRENT_DIR ON)
set(CMAKE_AUTOMOC ON) set(CMAKE_AUTOMOC ON)
# SingleApplication base class
set(QAPPLICATION_CLASS QCoreApplication CACHE STRING "Inheritance class for SingleApplication")
set_property(CACHE QAPPLICATION_CLASS PROPERTY STRINGS QApplication QGuiApplication QCoreApplication)
# Libary target
add_library(${PROJECT_NAME} STATIC add_library(${PROJECT_NAME} STATIC
singleapplication.cpp singleapplication.cpp
singleapplication_p.cpp singleapplication_p.cpp
) )
add_library(${PROJECT_NAME}::${PROJECT_NAME} ALIAS ${PROJECT_NAME})
if(NOT QT_DEFAULT_MAJOR_VERSION)
set(QT_DEFAULT_MAJOR_VERSION 5 CACHE STRING "Qt version to use (5 or 6), defaults to 5")
endif()
# Find dependencies # Find dependencies
find_package(Qt5Network) set(QT_COMPONENTS Core Network)
if(QAPPLICATION_CLASS STREQUAL QApplication) set(QT_LIBRARIES Qt${QT_DEFAULT_MAJOR_VERSION}::Core Qt${QT_DEFAULT_MAJOR_VERSION}::Network)
find_package(Qt5 COMPONENTS Widgets REQUIRED)
elseif(QAPPLICATION_CLASS STREQUAL QGuiApplication)
find_package(Qt5 COMPONENTS Gui REQUIRED)
else()
find_package(Qt5 COMPONENTS Core REQUIRED)
endif()
add_compile_definitions(QAPPLICATION_CLASS=${QAPPLICATION_CLASS})
# Link dependencies
target_link_libraries(${PROJECT_NAME} PRIVATE Qt5::Network)
if(QAPPLICATION_CLASS STREQUAL QApplication) if(QAPPLICATION_CLASS STREQUAL QApplication)
target_link_libraries(${PROJECT_NAME} PRIVATE Qt5::Widgets) list(APPEND QT_COMPONENTS Widgets)
list(APPEND QT_LIBRARIES Qt${QT_DEFAULT_MAJOR_VERSION}::Widgets)
elseif(QAPPLICATION_CLASS STREQUAL QGuiApplication) elseif(QAPPLICATION_CLASS STREQUAL QGuiApplication)
target_link_libraries(${PROJECT_NAME} PRIVATE Qt5::Gui) list(APPEND QT_COMPONENTS Gui)
list(APPEND QT_LIBRARIES Qt${QT_DEFAULT_MAJOR_VERSION}::Gui)
else() else()
target_link_libraries(${PROJECT_NAME} PRIVATE Qt5::Core) set(QAPPLICATION_CLASS QCoreApplication)
endif() endif()
find_package(Qt${QT_DEFAULT_MAJOR_VERSION} COMPONENTS ${QT_COMPONENTS} REQUIRED)
target_link_libraries(${PROJECT_NAME} PUBLIC ${QT_LIBRARIES})
if(WIN32) if(WIN32)
target_link_libraries(${PROJECT_NAME} PRIVATE advapi32) target_link_libraries(${PROJECT_NAME} PRIVATE advapi32)
endif() endif()
target_compile_definitions(${PROJECT_NAME} PUBLIC QAPPLICATION_CLASS=${QAPPLICATION_CLASS})
target_include_directories(${PROJECT_NAME} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}) target_include_directories(${PROJECT_NAME} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})
+1 -1
View File
@@ -1,6 +1,6 @@
The MIT License (MIT) The MIT License (MIT)
Copyright (c) Itay Grudev 2015 - 2016 Copyright (c) Itay Grudev 2015 - 2020
Permission is hereby granted, free of charge, to any person obtaining a copy Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal of this software and associated documentation files (the "Software"), to deal
+45 -18
View File
@@ -1,7 +1,8 @@
SingleApplication SingleApplication
================= =================
[![CI](https://github.com/itay-grudev/SingleApplication/workflows/CI:%20Build%20Test/badge.svg)](https://github.com/itay-grudev/SingleApplication/actions)
This is a replacement of the QtSingleApplication for `Qt5`. This is a replacement of the QtSingleApplication for `Qt5` and `Qt6`.
Keeps the Primary Instance of your Application and kills each subsequent Keeps the Primary Instance of your Application and kills each subsequent
instances. It can (if enabled) spawn secondary (non-related to the primary) instances. It can (if enabled) spawn secondary (non-related to the primary)
@@ -15,18 +16,6 @@ class you specify via the `QAPPLICATION_CLASS` macro (`QCoreApplication` is the
default). Further usage is similar to the use of the `Q[Core|Gui]Application` default). Further usage is similar to the use of the `Q[Core|Gui]Application`
classes. classes.
The library sets up a `QLocalServer` and a `QSharedMemory` block. The first
instance of your Application is your Primary Instance. It would check if the
shared memory block exists and if not it will start a `QLocalServer` and listen
for connections. Each subsequent instance of your application would check if the
shared memory block exists and if it does, it will connect to the QLocalServer
to notify the primary instance that a new instance had been started, after which
it would terminate with status code `0`. In the Primary Instance
`SingleApplication` would emit the `instanceStarted()` signal upon detecting
that a new instance had been started.
The library uses `stdlib` to terminate the program with the `exit()` function.
You can use the library as if you use any other `QCoreApplication` derived You can use the library as if you use any other `QCoreApplication` derived
class: class:
@@ -43,8 +32,7 @@ int main( int argc, char* argv[] )
``` ```
To include the library files I would recommend that you add it as a git To include the library files I would recommend that you add it as a git
submodule to your project and include it's contents with a `.pri` file. Here is submodule to your project. Here is how:
how:
```bash ```bash
git submodule add git@github.com:itay-grudev/SingleApplication.git singleapplication git submodule add git@github.com:itay-grudev/SingleApplication.git singleapplication
@@ -66,13 +54,27 @@ Then include the subdirectory in your `CMakeLists.txt` project file.
```cmake ```cmake
set(QAPPLICATION_CLASS QApplication CACHE STRING "Inheritance class for SingleApplication") set(QAPPLICATION_CLASS QApplication CACHE STRING "Inheritance class for SingleApplication")
add_subdirectory(src/third-party/singleapplication) add_subdirectory(src/third-party/singleapplication)
target_link_libraries(${PROJECT_NAME} SingleApplication::SingleApplication)
``` ```
The library sets up a `QLocalServer` and a `QSharedMemory` block. The first
instance of your Application is your Primary Instance. It would check if the
shared memory block exists and if not it will start a `QLocalServer` and listen
for connections. Each subsequent instance of your application would check if the
shared memory block exists and if it does, it will connect to the QLocalServer
to notify the primary instance that a new instance had been started, after which
it would terminate with status code `0`. In the Primary Instance
`SingleApplication` would emit the `instanceStarted()` signal upon detecting
that a new instance had been started.
The library uses `stdlib` to terminate the program with the `exit()` function.
Also don't forget to specify which `QCoreApplication` class your app is using if it Also don't forget to specify which `QCoreApplication` class your app is using if it
is not `QCoreApplication` as in examples above. is not `QCoreApplication` as in examples above.
The `Instance Started` signal The `Instance Started` signal
------------------------ -----------------------------
The SingleApplication class implements a `instanceStarted()` signal. You can The SingleApplication class implements a `instanceStarted()` signal. You can
bind to that signal to raise your application's window when a new instance had bind to that signal to raise your application's window when a new instance had
@@ -137,13 +139,22 @@ app.isSecondary();
*__Note:__ If your Primary Instance is terminated a newly launched instance *__Note:__ If your Primary Instance is terminated a newly launched instance
will replace the Primary one even if the Secondary flag has been set.* will replace the Primary one even if the Secondary flag has been set.*
Examples
--------
There are three examples provided in this repository:
* Basic example that prevents a secondary instance from starting [`examples/basic`](https://github.com/itay-grudev/SingleApplication/tree/master/examples/basic)
* An example of a graphical application raising it's parent window [`examples/calculator`](https://github.com/itay-grudev/SingleApplication/tree/master/examples/calculator)
* A console application sending the primary instance it's command line parameters [`examples/sending_arguments`](https://github.com/itay-grudev/SingleApplication/tree/master/examples/sending_arguments)
API API
--- ---
### Members ### Members
```cpp ```cpp
SingleApplication::SingleApplication( int &argc, char *argv[], bool allowSecondary = false, Options options = Mode::User, int timeout = 100 ) SingleApplication::SingleApplication( int &argc, char *argv[], bool allowSecondary = false, Options options = Mode::User, int timeout = 100, QString userData = QString() )
``` ```
Depending on whether `allowSecondary` is set, this constructor may terminate Depending on whether `allowSecondary` is set, this constructor may terminate
@@ -152,7 +163,7 @@ can be specified to set whether the SingleApplication block should work
user-wide or system-wide. Additionally the `Mode::SecondaryNotification` may be user-wide or system-wide. Additionally the `Mode::SecondaryNotification` may be
used to notify the primary instance whenever a secondary instance had been used to notify the primary instance whenever a secondary instance had been
started (disabled by default). `timeout` specifies the maximum time in started (disabled by default). `timeout` specifies the maximum time in
milliseconds to wait for blocking operations. milliseconds to wait for blocking operations. Setting `userData` provides additional data that will isolate this instance from other instances that do not have the same (or any) user data set.
*__Note:__ `argc` and `argv` may be changed as Qt removes arguments that it *__Note:__ `argc` and `argv` may be changed as Qt removes arguments that it
recognizes.* recognizes.*
@@ -204,6 +215,22 @@ qint64 SingleApplication::primaryPid()
Returns the process ID (PID) of the primary instance. Returns the process ID (PID) of the primary instance.
---
```cpp
QString SingleApplication::primaryUser()
```
Returns the username the primary instance is running as.
---
```cpp
QString SingleApplication::currentUser()
```
Returns the username the current instance is running as.
### Signals ### Signals
```cpp ```cpp
+1
View File
@@ -0,0 +1 @@
#include "singleapplication.h"
@@ -0,0 +1,12 @@
cmake_minimum_required(VERSION 3.7.0)
project(basic LANGUAGES CXX)
# SingleApplication base class
set(QAPPLICATION_CLASS QCoreApplication)
add_subdirectory(../.. SingleApplication)
add_executable(basic main.cpp)
target_link_libraries(${PROJECT_NAME} SingleApplication::SingleApplication)
View File
+2
View File
@@ -5,5 +5,7 @@ int main(int argc, char *argv[])
// Allow secondary instances // Allow secondary instances
SingleApplication app( argc, argv ); SingleApplication app( argc, argv );
qWarning() << "Started a new instance";
return app.exec(); return app.exec();
} }
@@ -0,0 +1,21 @@
cmake_minimum_required(VERSION 3.7.0)
project(calculator LANGUAGES CXX)
set(CMAKE_AUTOMOC ON)
# SingleApplication base class
set(QAPPLICATION_CLASS QApplication)
add_subdirectory(../.. SingleApplication)
find_package(Qt${QT_DEFAULT_MAJOR_VERSION} COMPONENTS Core REQUIRED)
add_executable(${PROJECT_NAME}
button.h
calculator.h
button.cpp
calculator.cpp
main.cpp
)
target_link_libraries(${PROJECT_NAME} SingleApplication::SingleApplication)
@@ -82,27 +82,27 @@ Calculator::Calculator(QWidget *parent)
digitButtons[i] = createButton(QString::number(i), SLOT(digitClicked())); digitButtons[i] = createButton(QString::number(i), SLOT(digitClicked()));
} }
Button *pointButton = createButton(tr("."), SLOT(pointClicked())); Button *pointButton = createButton(".", SLOT(pointClicked()));
Button *changeSignButton = createButton(tr("\302\261"), SLOT(changeSignClicked())); Button *changeSignButton = createButton("\302\261", SLOT(changeSignClicked()));
Button *backspaceButton = createButton(tr("Backspace"), SLOT(backspaceClicked())); Button *backspaceButton = createButton("Backspace", SLOT(backspaceClicked()));
Button *clearButton = createButton(tr("Clear"), SLOT(clear())); Button *clearButton = createButton("Clear", SLOT(clear()));
Button *clearAllButton = createButton(tr("Clear All"), SLOT(clearAll())); Button *clearAllButton = createButton("Clear All", SLOT(clearAll()));
Button *clearMemoryButton = createButton(tr("MC"), SLOT(clearMemory())); Button *clearMemoryButton = createButton("MC", SLOT(clearMemory()));
Button *readMemoryButton = createButton(tr("MR"), SLOT(readMemory())); Button *readMemoryButton = createButton("MR", SLOT(readMemory()));
Button *setMemoryButton = createButton(tr("MS"), SLOT(setMemory())); Button *setMemoryButton = createButton("MS", SLOT(setMemory()));
Button *addToMemoryButton = createButton(tr("M+"), SLOT(addToMemory())); Button *addToMemoryButton = createButton("M+", SLOT(addToMemory()));
Button *divisionButton = createButton(tr("\303\267"), SLOT(multiplicativeOperatorClicked())); Button *divisionButton = createButton("\303\267", SLOT(multiplicativeOperatorClicked()));
Button *timesButton = createButton(tr("\303\227"), SLOT(multiplicativeOperatorClicked())); Button *timesButton = createButton("\303\227", SLOT(multiplicativeOperatorClicked()));
Button *minusButton = createButton(tr("-"), SLOT(additiveOperatorClicked())); Button *minusButton = createButton("-", SLOT(additiveOperatorClicked()));
Button *plusButton = createButton(tr("+"), SLOT(additiveOperatorClicked())); Button *plusButton = createButton("+", SLOT(additiveOperatorClicked()));
Button *squareRootButton = createButton(tr("Sqrt"), SLOT(unaryOperatorClicked())); Button *squareRootButton = createButton("Sqrt", SLOT(unaryOperatorClicked()));
Button *powerButton = createButton(tr("x\302\262"), SLOT(unaryOperatorClicked())); Button *powerButton = createButton("x\302\262", SLOT(unaryOperatorClicked()));
Button *reciprocalButton = createButton(tr("1/x"), SLOT(unaryOperatorClicked())); Button *reciprocalButton = createButton("1/x", SLOT(unaryOperatorClicked()));
Button *equalButton = createButton(tr("="), SLOT(equalClicked())); Button *equalButton = createButton("=", SLOT(equalClicked()));
//! [4] //! [4]
//! [5] //! [5]
@@ -140,7 +140,7 @@ Calculator::Calculator(QWidget *parent)
mainLayout->addWidget(equalButton, 5, 5); mainLayout->addWidget(equalButton, 5, 5);
setLayout(mainLayout); setLayout(mainLayout);
setWindowTitle(tr("Calculator")); setWindowTitle("Calculator");
} }
//! [6] //! [6]
@@ -169,15 +169,15 @@ void Calculator::unaryOperatorClicked()
double operand = display->text().toDouble(); double operand = display->text().toDouble();
double result = 0.0; double result = 0.0;
if (clickedOperator == tr("Sqrt")) { if (clickedOperator == "Sqrt") {
if (operand < 0.0) { if (operand < 0.0) {
abortOperation(); abortOperation();
return; return;
} }
result = std::sqrt(operand); result = std::sqrt(operand);
} else if (clickedOperator == tr("x\302\262")) { } else if (clickedOperator == "x\302\262") {
result = std::pow(operand, 2.0); result = std::pow(operand, 2.0);
} else if (clickedOperator == tr("1/x")) { } else if (clickedOperator == "1/x") {
if (operand == 0.0) { if (operand == 0.0) {
abortOperation(); abortOperation();
return; return;
@@ -287,7 +287,7 @@ void Calculator::pointClicked()
if (waitingForOperand) if (waitingForOperand)
display->setText("0"); display->setText("0");
if (!display->text().contains('.')) if (!display->text().contains('.'))
display->setText(display->text() + tr(".")); display->setText(display->text() + ".");
waitingForOperand = false; waitingForOperand = false;
} }
//! [22] //! [22]
@@ -299,7 +299,7 @@ void Calculator::changeSignClicked()
double value = text.toDouble(); double value = text.toDouble();
if (value > 0.0) { if (value > 0.0) {
text.prepend(tr("-")); text.prepend("-");
} else if (value < 0.0) { } else if (value < 0.0) {
text.remove(0, 1); text.remove(0, 1);
} }
@@ -383,20 +383,20 @@ Button *Calculator::createButton(const QString &text, const char *member)
void Calculator::abortOperation() void Calculator::abortOperation()
{ {
clearAll(); clearAll();
display->setText(tr("####")); display->setText("####");
} }
//! [36] //! [36]
//! [38] //! [38]
bool Calculator::calculate(double rightOperand, const QString &pendingOperator) bool Calculator::calculate(double rightOperand, const QString &pendingOperator)
{ {
if (pendingOperator == tr("+")) { if (pendingOperator == "+") {
sumSoFar += rightOperand; sumSoFar += rightOperand;
} else if (pendingOperator == tr("-")) { } else if (pendingOperator == "-") {
sumSoFar -= rightOperand; sumSoFar -= rightOperand;
} else if (pendingOperator == tr("\303\227")) { } else if (pendingOperator == "\303\227") {
factorSoFar *= rightOperand; factorSoFar *= rightOperand;
} else if (pendingOperator == tr("\303\267")) { } else if (pendingOperator == "\303\267") {
if (rightOperand == 0.0) if (rightOperand == 0.0)
return false; return false;
factorSoFar /= rightOperand; factorSoFar /= rightOperand;
@@ -0,0 +1,20 @@
cmake_minimum_required(VERSION 3.7.0)
project(sending_arguments LANGUAGES CXX)
set(CMAKE_AUTOMOC ON)
# SingleApplication base class
set(QAPPLICATION_CLASS QCoreApplication)
add_subdirectory(../.. SingleApplication)
find_package(Qt${QT_DEFAULT_MAJOR_VERSION} COMPONENTS Core REQUIRED)
add_executable(${PROJECT_NAME}
main.cpp
messagereceiver.cpp
messagereceiver.h
main.cpp
)
target_link_libraries(${PROJECT_NAME} SingleApplication::SingleApplication)
+3
View File
@@ -11,6 +11,9 @@ int main(int argc, char *argv[])
// If this is a secondary instance // If this is a secondary instance
if( app.isSecondary() ) { if( app.isSecondary() ) {
app.sendMessage( app.arguments().join(' ').toUtf8() ); app.sendMessage( app.arguments().join(' ').toUtf8() );
qDebug() << "App already running.";
qDebug() << "Primary instance PID: " << app.primaryPid();
qDebug() << "Primary instance user: " << app.primaryUser();
return 0; return 0;
} else { } else {
QObject::connect( QObject::connect(
View File
+147 -68
View File
@@ -1,6 +1,6 @@
// The MIT License (MIT) // The MIT License (MIT)
// //
// Copyright (c) Itay Grudev 2015 - 2018 // Copyright (c) Itay Grudev 2015 - 2020
// //
// Permission is hereby granted, free of charge, to any person obtaining a copy // Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to deal // of this software and associated documentation files (the "Software"), to deal
@@ -20,32 +20,26 @@
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
// THE SOFTWARE. // THE SOFTWARE.
#include <QtCore/QTime> #include <QtCore/QElapsedTimer>
#include <QtCore/QThread>
#include <QtCore/QDateTime>
#include <QtCore/QByteArray> #include <QtCore/QByteArray>
#include <QtCore/QSharedMemory> #include <QtCore/QSharedMemory>
#if QT_VERSION < QT_VERSION_CHECK(5, 10, 0) // ### Qt 6: remove
#else
#if TODO_LIST
#pragma message("@TODO remove code for QT 5.10 or later")
#endif
#include <QRandomGenerator>
#endif
#include "singleapplication.h" #include "singleapplication.h"
#include "singleapplication_p.h" #include "singleapplication_p.h"
/** /**
@brief Constructor. Checks and fires up LocalServer or closes the program * @brief Constructor. Checks and fires up LocalServer or closes the program
if another instance already exists * if another instance already exists
@param argc * @param argc
@param argv * @param argv
@param {bool} allowSecondaryInstances * @param allowSecondary Whether to enable secondary instance support
*/ * @param options Optional flags to toggle specific behaviour
SingleApplication::SingleApplication( int &argc, char *argv[], bool allowSecondary, Options options, int timeout ) * @param timeout Maximum time blocking functions are allowed during app load
*/
SingleApplication::SingleApplication( int &argc, char *argv[], bool allowSecondary, Options options, int timeout, const QString &userData )
: app_t( argc, argv ), d_ptr( new SingleApplicationPrivate( this ) ) : app_t( argc, argv ), d_ptr( new SingleApplicationPrivate( this ) )
{ {
Q_D(SingleApplication); Q_D( SingleApplication );
#if defined(Q_OS_ANDROID) || defined(Q_OS_IOS) #if defined(Q_OS_ANDROID) || defined(Q_OS_IOS)
// On Android and iOS since the library is not supported fallback to // On Android and iOS since the library is not supported fallback to
@@ -57,10 +51,18 @@ SingleApplication::SingleApplication( int &argc, char *argv[], bool allowSeconda
// Store the current mode of the program // Store the current mode of the program
d->options = options; d->options = options;
// Add any unique user data
if ( ! userData.isEmpty() )
d->addAppData( userData );
// Generating an application ID used for identifying the shared memory // Generating an application ID used for identifying the shared memory
// block and QLocalServer // block and QLocalServer
d->genBlockServerName(); d->genBlockServerName();
// To mitigate QSharedMemory issues with large amount of processes
// attempting to attach at the same time
SingleApplicationPrivate::randomSleep();
#ifdef Q_OS_UNIX #ifdef Q_OS_UNIX
// By explicitly attaching it and then deleting it we make sure that the // By explicitly attaching it and then deleting it we make sure that the
// memory is deleted even after the process has crashed on Unix. // memory is deleted even after the process has crashed on Unix.
@@ -72,71 +74,86 @@ SingleApplication::SingleApplication( int &argc, char *argv[], bool allowSeconda
d->memory = new QSharedMemory( d->blockServerName ); d->memory = new QSharedMemory( d->blockServerName );
// Create a shared memory block // Create a shared memory block
if( d->memory->create( sizeof( InstancesInfo ) ) ) { if( d->memory->create( sizeof( InstancesInfo ) )){
// Initialize the shared memory block // Initialize the shared memory block
d->memory->lock(); if( ! d->memory->lock() ){
qCritical() << "SingleApplication: Unable to lock memory block after create.";
abortSafely();
}
d->initializeMemoryBlock(); d->initializeMemoryBlock();
d->memory->unlock();
} else { } else {
if( d->memory->error() == QSharedMemory::AlreadyExists ){
// Attempt to attach to the memory segment // Attempt to attach to the memory segment
if( ! d->memory->attach() ) { if( ! d->memory->attach() ){
qCritical() << "SingleApplication: Unable to attach to shared memory block."; qCritical() << "SingleApplication: Unable to attach to shared memory block.";
qCritical() << d->memory->errorString(); abortSafely();
delete d; }
::exit( EXIT_FAILURE ); if( ! d->memory->lock() ){
qCritical() << "SingleApplication: Unable to lock memory block after attach.";
abortSafely();
}
} else {
qCritical() << "SingleApplication: Unable to create block.";
abortSafely();
} }
} }
InstancesInfo* inst = static_cast<InstancesInfo*>( d->memory->data() ); auto *inst = static_cast<InstancesInfo*>( d->memory->data() );
QElapsedTimer time; QElapsedTimer time;
time.start(); time.start();
// Make sure the shared memory block is initialised and in consistent state // Make sure the shared memory block is initialised and in consistent state
while( true ) { while( true ){
d->memory->lock(); // If the shared memory block's checksum is valid continue
if( d->blockChecksum() == inst->checksum ) break; if( d->blockChecksum() == inst->checksum ) break;
if( time.elapsed() > 5000 ) { // If more than 5s have elapsed, assume the primary instance crashed and
// assume it's position
if( time.elapsed() > 5000 ){
qWarning() << "SingleApplication: Shared memory block has been in an inconsistent state from more than 5s. Assuming primary instance failure."; qWarning() << "SingleApplication: Shared memory block has been in an inconsistent state from more than 5s. Assuming primary instance failure.";
d->initializeMemoryBlock(); d->initializeMemoryBlock();
} }
d->memory->unlock(); // Otherwise wait for a random period and try again. The random sleep here
// limits the probability of a collision between two racing apps and
// Random sleep here limits the probability of a collision between two racing apps // allows the app to initialise faster
#if QT_VERSION < QT_VERSION_CHECK(5, 10, 0) // ### Qt 6: remove if( ! d->memory->unlock() ){
qsrand( QDateTime::currentMSecsSinceEpoch() % std::numeric_limits<uint>::max() ); qDebug() << "SingleApplication: Unable to unlock memory for random wait.";
QThread::sleep( 8 + static_cast <unsigned long>( static_cast <float>( qrand() ) / RAND_MAX * 10 ) ); qDebug() << d->memory->errorString();
#else }
#if TODO_LIST SingleApplicationPrivate::randomSleep();
#pragma message("@TODO remove code for QT 5.10 or later") if( ! d->memory->lock() ){
#endif qCritical() << "SingleApplication: Unable to lock memory after random wait.";
quint32 value = QRandomGenerator::global()->generate(); abortSafely();
QThread::sleep( 8 + static_cast <unsigned long>( static_cast <float>( value ) / RAND_MAX * 10 ) ); }
#endif
} }
if( inst->primary == false) { if( inst->primary == false ){
d->startPrimary(); d->startPrimary();
d->memory->unlock(); if( ! d->memory->unlock() ){
qDebug() << "SingleApplication: Unable to unlock memory after primary start.";
qDebug() << d->memory->errorString();
}
return; return;
} }
// Check if another instance can be started // Check if another instance can be started
if( allowSecondary ) { if( allowSecondary ){
inst->secondary += 1;
inst->checksum = d->blockChecksum();
d->instanceNumber = inst->secondary;
d->startSecondary(); d->startSecondary();
if( d->options & Mode::SecondaryNotification ) { if( d->options & Mode::SecondaryNotification ){
d->connectToPrimary( timeout, SingleApplicationPrivate::SecondaryInstance ); d->connectToPrimary( timeout, SingleApplicationPrivate::SecondaryInstance );
} }
d->memory->unlock(); if( ! d->memory->unlock() ){
qDebug() << "SingleApplication: Unable to unlock memory after secondary start.";
qDebug() << d->memory->errorString();
}
return; return;
} }
d->memory->unlock(); if( ! d->memory->unlock() ){
qDebug() << "SingleApplication: Unable to unlock memory at end of execution.";
qDebug() << d->memory->errorString();
}
d->connectToPrimary( timeout, SingleApplicationPrivate::NewInstance ); d->connectToPrimary( timeout, SingleApplicationPrivate::NewInstance );
@@ -145,51 +162,113 @@ SingleApplication::SingleApplication( int &argc, char *argv[], bool allowSeconda
::exit( EXIT_SUCCESS ); ::exit( EXIT_SUCCESS );
} }
/**
@brief Destructor
*/
SingleApplication::~SingleApplication() SingleApplication::~SingleApplication()
{ {
Q_D(SingleApplication); Q_D( SingleApplication );
delete d; delete d;
} }
bool SingleApplication::isPrimary() /**
* Checks if the current application instance is primary.
* @return Returns true if the instance is primary, false otherwise.
*/
bool SingleApplication::isPrimary() const
{ {
Q_D(SingleApplication); Q_D( const SingleApplication );
return d->server != nullptr; return d->server != nullptr;
} }
bool SingleApplication::isSecondary() /**
* Checks if the current application instance is secondary.
* @return Returns true if the instance is secondary, false otherwise.
*/
bool SingleApplication::isSecondary() const
{ {
Q_D(SingleApplication); Q_D( const SingleApplication );
return d->server == nullptr; return d->server == nullptr;
} }
quint32 SingleApplication::instanceId() /**
* Allows you to identify an instance by returning unique consecutive instance
* ids. It is reset when the first (primary) instance of your app starts and
* only incremented afterwards.
* @return Returns a unique instance id.
*/
quint32 SingleApplication::instanceId() const
{ {
Q_D(SingleApplication); Q_D( const SingleApplication );
return d->instanceNumber; return d->instanceNumber;
} }
qint64 SingleApplication::primaryPid() /**
* Returns the OS PID (Process Identifier) of the process running the primary
* instance. Especially useful when SingleApplication is coupled with OS.
* specific APIs.
* @return Returns the primary instance PID.
*/
qint64 SingleApplication::primaryPid() const
{ {
Q_D(SingleApplication); Q_D( const SingleApplication );
return d->primaryPid(); return d->primaryPid();
} }
bool SingleApplication::sendMessage( QByteArray message, int timeout ) /**
* Returns the username the primary instance is running as.
* @return Returns the username the primary instance is running as.
*/
QString SingleApplication::primaryUser() const
{ {
Q_D(SingleApplication); Q_D( const SingleApplication );
return d->primaryUser();
}
/**
* Returns the username the current instance is running as.
* @return Returns the username the current instance is running as.
*/
QString SingleApplication::currentUser() const
{
return SingleApplicationPrivate::getUsername();
}
/**
* Sends message to the Primary Instance.
* @param message The message to send.
* @param timeout the maximum timeout in milliseconds for blocking functions.
* @return true if the message was sent successfuly, false otherwise.
*/
bool SingleApplication::sendMessage( const QByteArray &message, int timeout )
{
Q_D( SingleApplication );
// Nobody to connect to // Nobody to connect to
if( isPrimary() ) return false; if( isPrimary() ) return false;
// Make sure the socket is connected // Make sure the socket is connected
d->connectToPrimary( timeout, SingleApplicationPrivate::Reconnect ); if( ! d->connectToPrimary( timeout, SingleApplicationPrivate::Reconnect ) )
return false;
d->socket->write( message ); d->socket->write( message );
bool dataWritten = d->socket->waitForBytesWritten( timeout ); bool dataWritten = d->socket->waitForBytesWritten( timeout );
d->socket->flush(); d->socket->flush();
return dataWritten; return dataWritten;
} }
/**
* Cleans up the shared memory block and exits with a failure.
* This function halts program execution.
*/
void SingleApplication::abortSafely()
{
Q_D( SingleApplication );
qCritical() << "SingleApplication: " << d->memory->error() << d->memory->errorString();
delete d;
::exit( EXIT_FAILURE );
}
QStringList SingleApplication::userData() const
{
Q_D( const SingleApplication );
return d->appData();
}
+73 -55
View File
@@ -25,7 +25,6 @@
#include <QtCore/QtGlobal> #include <QtCore/QtGlobal>
#include <QtNetwork/QLocalSocket> #include <QtNetwork/QLocalSocket>
#include <QElapsedTimer>
#ifndef QAPPLICATION_CLASS #ifndef QAPPLICATION_CLASS
#define QAPPLICATION_CLASS QCoreApplication #define QAPPLICATION_CLASS QCoreApplication
@@ -36,26 +35,26 @@
class SingleApplicationPrivate; class SingleApplicationPrivate;
/** /**
@brief The SingleApplication class handles multiple instances of the same * @brief The SingleApplication class handles multiple instances of the same
Application * Application
@see QCoreApplication * @see QCoreApplication
*/ */
class SingleApplication : public QAPPLICATION_CLASS class SingleApplication : public QAPPLICATION_CLASS
{ {
Q_OBJECT Q_OBJECT
typedef QAPPLICATION_CLASS app_t; using app_t = QAPPLICATION_CLASS;
public: public:
/** /**
@brief Mode of operation of SingleApplication. * @brief Mode of operation of SingleApplication.
Whether the block should be user-wide or system-wide and whether the * Whether the block should be user-wide or system-wide and whether the
primary instance should be notified when a secondary instance had been * primary instance should be notified when a secondary instance had been
started. * started.
@note Operating system can restrict the shared memory blocks to the same * @note Operating system can restrict the shared memory blocks to the same
user, in which case the User/System modes will have no effect and the * user, in which case the User/System modes will have no effect and the
block will be user wide. * block will be user wide.
@enum * @enum
*/ */
enum Mode { enum Mode {
User = 1 << 0, User = 1 << 0,
@@ -67,68 +66,87 @@ class SingleApplication : public QAPPLICATION_CLASS
Q_DECLARE_FLAGS(Options, Mode) Q_DECLARE_FLAGS(Options, Mode)
/** /**
@brief Intitializes a SingleApplication instance with argc command line * @brief Intitializes a SingleApplication instance with argc command line
arguments in argv * arguments in argv
@arg {int &} argc - Number of arguments in argv * @arg {int &} argc - Number of arguments in argv
@arg {const char *[]} argv - Supplied command line arguments * @arg {const char *[]} argv - Supplied command line arguments
@arg {bool} allowSecondary - Whether to start the instance as secondary * @arg {bool} allowSecondary - Whether to start the instance as secondary
if there is already a primary instance. * if there is already a primary instance.
@arg {Mode} mode - Whether for the SingleApplication block to be applied * @arg {Mode} mode - Whether for the SingleApplication block to be applied
User wide or System wide. * User wide or System wide.
@arg {int} timeout - Timeout to wait in milliseconds. * @arg {int} timeout - Timeout to wait in milliseconds.
@note argc and argv may be changed as Qt removes arguments that it * @note argc and argv may be changed as Qt removes arguments that it
recognizes * recognizes
@note Mode::SecondaryNotification only works if set on both the primary * @note Mode::SecondaryNotification only works if set on both the primary
instance and the secondary instance. * instance and the secondary instance.
@note The timeout is just a hint for the maximum time of blocking * @note The timeout is just a hint for the maximum time of blocking
operations. It does not guarantee that the SingleApplication * operations. It does not guarantee that the SingleApplication
initialisation will be completed in given time, though is a good hint. * initialisation will be completed in given time, though is a good hint.
Usually 4*timeout would be the worst case (fail) scenario. * Usually 4*timeout would be the worst case (fail) scenario.
@see See the corresponding QAPPLICATION_CLASS constructor for reference * @see See the corresponding QAPPLICATION_CLASS constructor for reference
*/ */
explicit SingleApplication( int &argc, char *argv[], bool allowSecondary = false, Options options = Mode::User, int timeout = 1000 ); explicit SingleApplication( int &argc, char *argv[], bool allowSecondary = false, Options options = Mode::User, int timeout = 1000, const QString &userData = {} );
~SingleApplication(); ~SingleApplication() override;
/** /**
@brief Returns if the instance is the primary instance * @brief Returns if the instance is the primary instance
@returns {bool} * @returns {bool}
*/ */
bool isPrimary(); bool isPrimary() const;
/** /**
@brief Returns if the instance is a secondary instance * @brief Returns if the instance is a secondary instance
@returns {bool} * @returns {bool}
*/ */
bool isSecondary(); bool isSecondary() const;
/** /**
@brief Returns a unique identifier for the current instance * @brief Returns a unique identifier for the current instance
@returns {qint32} * @returns {qint32}
*/ */
quint32 instanceId(); quint32 instanceId() const;
/** /**
@brief Returns the process ID (PID) of the primary instance * @brief Returns the process ID (PID) of the primary instance
@returns {qint64} * @returns {qint64}
*/ */
qint64 primaryPid(); qint64 primaryPid() const;
/** /**
@brief Sends a message to the primary instance. Returns true on success. * @brief Returns the username of the user running the primary instance
@param {int} timeout - Timeout for connecting * @returns {QString}
@returns {bool}
@note sendMessage() will return false if invoked from the primary
instance.
*/ */
bool sendMessage( QByteArray message, int timeout = 100 ); QString primaryUser() const;
Q_SIGNALS: /**
* @brief Returns the username of the current user
* @returns {QString}
*/
QString currentUser() const;
/**
* @brief Sends a message to the primary instance. Returns true on success.
* @param {int} timeout - Timeout for connecting
* @returns {bool}
* @note sendMessage() will return false if invoked from the primary
* instance.
*/
bool sendMessage( const QByteArray &message, int timeout = 100 );
/**
* @brief Get the set user data.
* @returns {QStringList}
*/
QStringList userData() const;
Q_SIGNALS:
void instanceStarted(); void instanceStarted();
void receivedMessage( quint32 instanceId, QByteArray message ); void receivedMessage( quint32 instanceId, QByteArray message );
private: private:
SingleApplicationPrivate *d_ptr; SingleApplicationPrivate *d_ptr;
Q_DECLARE_PRIVATE(SingleApplication) Q_DECLARE_PRIVATE(SingleApplication)
void abortSafely();
}; };
Q_DECLARE_OPERATORS_FOR_FLAGS(SingleApplication::Options) Q_DECLARE_OPERATORS_FOR_FLAGS(SingleApplication::Options)
+3 -2
View File
@@ -1,7 +1,8 @@
QT += core network QT += core network
CONFIG += c++17 CONFIG += c++11
HEADERS += $$PWD/singleapplication.h \ HEADERS += $$PWD/SingleApplication \
$$PWD/singleapplication.h \
$$PWD/singleapplication_p.h $$PWD/singleapplication_p.h
SOURCES += $$PWD/singleapplication.cpp \ SOURCES += $$PWD/singleapplication.cpp \
$$PWD/singleapplication_p.cpp $$PWD/singleapplication_p.cpp
+159 -117
View File
@@ -1,6 +1,6 @@
// The MIT License (MIT) // The MIT License (MIT)
// //
// Copyright (c) Itay Grudev 2015 - 2018 // Copyright (c) Itay Grudev 2015 - 2020
// //
// Permission is hereby granted, free of charge, to any person obtaining a copy // Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to deal // of this software and associated documentation files (the "Software"), to deal
@@ -33,12 +33,20 @@
#include <cstddef> #include <cstddef>
#include <QtCore/QDir> #include <QtCore/QDir>
#include <QtCore/QThread>
#include <QtCore/QByteArray> #include <QtCore/QByteArray>
#include <QtCore/QDataStream> #include <QtCore/QDataStream>
#include <QtCore/QElapsedTimer>
#include <QtCore/QCryptographicHash> #include <QtCore/QCryptographicHash>
#include <QtNetwork/QLocalServer> #include <QtNetwork/QLocalServer>
#include <QtNetwork/QLocalSocket> #include <QtNetwork/QLocalSocket>
#if QT_VERSION >= QT_VERSION_CHECK(5, 10, 0)
#include <QtCore/QRandomGenerator>
#else
#include <QtCore/QDateTime>
#endif
#include "singleapplication.h" #include "singleapplication.h"
#include "singleapplication_p.h" #include "singleapplication_p.h"
@@ -49,8 +57,11 @@
#endif #endif
#ifdef Q_OS_WIN #ifdef Q_OS_WIN
#include <windows.h> #ifndef NOMINMAX
#include <lmcons.h> #define NOMINMAX 1
#endif
#include <windows.h>
#include <lmcons.h>
#endif #endif
SingleApplicationPrivate::SingleApplicationPrivate( SingleApplication *q_ptr ) SingleApplicationPrivate::SingleApplicationPrivate( SingleApplication *q_ptr )
@@ -59,28 +70,62 @@ SingleApplicationPrivate::SingleApplicationPrivate( SingleApplication *q_ptr )
server = nullptr; server = nullptr;
socket = nullptr; socket = nullptr;
memory = nullptr; memory = nullptr;
instanceNumber = -1; instanceNumber = 0;
} }
SingleApplicationPrivate::~SingleApplicationPrivate() SingleApplicationPrivate::~SingleApplicationPrivate()
{ {
if( socket != nullptr ) { if( socket != nullptr ){
socket->close(); socket->close();
delete socket; delete socket;
} }
if( memory != nullptr ){
memory->lock(); memory->lock();
InstancesInfo* inst = static_cast<InstancesInfo*>(memory->data()); auto *inst = static_cast<InstancesInfo*>(memory->data());
if( server != nullptr ) { if( server != nullptr ){
server->close(); server->close();
delete server; delete server;
inst->primary = false; inst->primary = false;
inst->primaryPid = -1; inst->primaryPid = -1;
inst->primaryUser[0] = '\0';
inst->checksum = blockChecksum(); inst->checksum = blockChecksum();
} }
memory->unlock(); memory->unlock();
delete memory; delete memory;
}
}
QString SingleApplicationPrivate::getUsername()
{
#ifdef Q_OS_WIN
wchar_t username[UNLEN + 1];
// Specifies size of the buffer on input
DWORD usernameLength = UNLEN + 1;
if( GetUserNameW( username, &usernameLength ) )
return QString::fromWCharArray( username );
#if QT_VERSION < QT_VERSION_CHECK(5, 10, 0)
return QString::fromLocal8Bit( qgetenv( "USERNAME" ) );
#else
return qEnvironmentVariable( "USERNAME" );
#endif
#endif
#ifdef Q_OS_UNIX
QString username;
uid_t uid = geteuid();
struct passwd *pw = getpwuid( uid );
if( pw )
username = QString::fromLocal8Bit( pw->pw_name );
if ( username.isEmpty() ){
#if QT_VERSION < QT_VERSION_CHECK(5, 10, 0)
username = QString::fromLocal8Bit( qgetenv( "USER" ) );
#else
username = qEnvironmentVariable( "USER" );
#endif
}
return username;
#endif
} }
void SingleApplicationPrivate::genBlockServerName() void SingleApplicationPrivate::genBlockServerName()
@@ -91,11 +136,14 @@ void SingleApplicationPrivate::genBlockServerName()
appData.addData( SingleApplication::app_t::organizationName().toUtf8() ); appData.addData( SingleApplication::app_t::organizationName().toUtf8() );
appData.addData( SingleApplication::app_t::organizationDomain().toUtf8() ); appData.addData( SingleApplication::app_t::organizationDomain().toUtf8() );
if( ! (options & SingleApplication::Mode::ExcludeAppVersion) ) { if ( ! appDataList.isEmpty() )
appData.addData( appDataList.join( "" ).toUtf8() );
if( ! (options & SingleApplication::Mode::ExcludeAppVersion) ){
appData.addData( SingleApplication::app_t::applicationVersion().toUtf8() ); appData.addData( SingleApplication::app_t::applicationVersion().toUtf8() );
} }
if( ! (options & SingleApplication::Mode::ExcludeAppPath) ) { if( ! (options & SingleApplication::Mode::ExcludeAppPath) ){
#ifdef Q_OS_WIN #ifdef Q_OS_WIN
appData.addData( SingleApplication::app_t::applicationFilePath().toLower().toUtf8() ); appData.addData( SingleApplication::app_t::applicationFilePath().toLower().toUtf8() );
#else #else
@@ -104,29 +152,8 @@ void SingleApplicationPrivate::genBlockServerName()
} }
// User level block requires a user specific data in the hash // User level block requires a user specific data in the hash
if( options & SingleApplication::Mode::User ) { if( options & SingleApplication::Mode::User ){
#ifdef Q_OS_WIN appData.addData( getUsername().toUtf8() );
wchar_t username [ UNLEN + 1 ];
// Specifies size of the buffer on input
DWORD usernameLength = UNLEN + 1;
if( GetUserNameW( username, &usernameLength ) ) {
appData.addData( QString::fromWCharArray(username).toUtf8() );
} else {
appData.addData( qgetenv("USERNAME") );
}
#endif
#ifdef Q_OS_UNIX
QByteArray username;
uid_t uid = geteuid();
struct passwd *pw = getpwuid(uid);
if( pw ) {
username = pw->pw_name;
}
if( username.isEmpty() ) {
username = qgetenv("USER");
}
appData.addData(username);
#endif
} }
// Replace the backslash in RFC 2045 Base64 [a-zA-Z0-9+/=] to comply with // Replace the backslash in RFC 2045 Base64 [a-zA-Z0-9+/=] to comply with
@@ -134,19 +161,26 @@ void SingleApplicationPrivate::genBlockServerName()
blockServerName = appData.result().toBase64().replace("/", "_"); blockServerName = appData.result().toBase64().replace("/", "_");
} }
void SingleApplicationPrivate::initializeMemoryBlock() void SingleApplicationPrivate::initializeMemoryBlock() const
{ {
InstancesInfo* inst = static_cast<InstancesInfo*>( memory->data() ); auto *inst = static_cast<InstancesInfo*>( memory->data() );
inst->primary = false; inst->primary = false;
inst->secondary = 0; inst->secondary = 0;
inst->primaryPid = -1; inst->primaryPid = -1;
inst->primaryUser[0] = '\0';
inst->checksum = blockChecksum(); inst->checksum = blockChecksum();
} }
void SingleApplicationPrivate::startPrimary() void SingleApplicationPrivate::startPrimary()
{ {
Q_Q(SingleApplication); // Reset the number of connections
auto *inst = static_cast <InstancesInfo*>( memory->data() );
inst->primary = true;
inst->primaryPid = QCoreApplication::applicationPid();
qstrncpy( inst->primaryUser, getUsername().toUtf8().data(), sizeof(inst->primaryUser) );
inst->checksum = blockChecksum();
instanceNumber = 0;
// Successful creation means that no main process exists // Successful creation means that no main process exists
// So we start a QLocalServer to listen for connections // So we start a QLocalServer to listen for connections
QLocalServer::removeServer( blockServerName ); QLocalServer::removeServer( blockServerName );
@@ -154,7 +188,7 @@ void SingleApplicationPrivate::startPrimary()
// Restrict access to the socket according to the // Restrict access to the socket according to the
// SingleApplication::Mode::User flag on User level or no restrictions // SingleApplication::Mode::User flag on User level or no restrictions
if( options & SingleApplication::Mode::User ) { if( options & SingleApplication::Mode::User ){
server->setSocketOptions( QLocalServer::UserAccessOption ); server->setSocketOptions( QLocalServer::UserAccessOption );
} else { } else {
server->setSocketOptions( QLocalServer::WorldAccessOption ); server->setSocketOptions( QLocalServer::WorldAccessOption );
@@ -167,47 +201,51 @@ void SingleApplicationPrivate::startPrimary()
this, this,
&SingleApplicationPrivate::slotConnectionEstablished &SingleApplicationPrivate::slotConnectionEstablished
); );
// Reset the number of connections
InstancesInfo* inst = static_cast <InstancesInfo*>( memory->data() );
inst->primary = true;
inst->primaryPid = q->applicationPid();
inst->checksum = blockChecksum();
instanceNumber = 0;
} }
void SingleApplicationPrivate::startSecondary() void SingleApplicationPrivate::startSecondary()
{ {
auto *inst = static_cast <InstancesInfo*>( memory->data() );
inst->secondary += 1;
inst->checksum = blockChecksum();
instanceNumber = inst->secondary;
} }
void SingleApplicationPrivate::connectToPrimary( int msecs, ConnectionType connectionType ) bool SingleApplicationPrivate::connectToPrimary( int msecs, ConnectionType connectionType )
{ {
QElapsedTimer time;
time.start();
// Connect to the Local Server of the Primary Instance if not already // Connect to the Local Server of the Primary Instance if not already
// connected. // connected.
if( socket == nullptr ) { if( socket == nullptr ){
socket = new QLocalSocket(); socket = new QLocalSocket();
} }
// If already connected - we are done; if( socket->state() == QLocalSocket::ConnectedState ) return true;
if( socket->state() == QLocalSocket::ConnectedState )
return;
// If not connect if( socket->state() != QLocalSocket::ConnectedState ){
if( socket->state() == QLocalSocket::UnconnectedState ||
socket->state() == QLocalSocket::ClosingState ) { while( true ){
randomSleep();
if( socket->state() != QLocalSocket::ConnectingState )
socket->connectToServer( blockServerName ); socket->connectToServer( blockServerName );
if( socket->state() == QLocalSocket::ConnectingState ){
socket->waitForConnected( static_cast<int>(msecs - time.elapsed()) );
} }
// Wait for being connected // If connected break out of the loop
if( socket->state() == QLocalSocket::ConnectingState ) { if( socket->state() == QLocalSocket::ConnectedState ) break;
socket->waitForConnected( msecs );
// If elapsed time since start is longer than the method timeout return
if( time.elapsed() >= msecs ) return false;
}
} }
// Initialisation message according to the SingleApplication protocol // Initialisation message according to the SingleApplication protocol
if( socket->state() == QLocalSocket::ConnectedState ) {
// Notify the parent that a new instance had been started;
QByteArray initMsg; QByteArray initMsg;
QDataStream writeStream(&initMsg, QIODevice::WriteOnly); QDataStream writeStream(&initMsg, QIODevice::WriteOnly);
@@ -218,21 +256,10 @@ void SingleApplicationPrivate::connectToPrimary( int msecs, ConnectionType conne
writeStream << blockServerName.toLatin1(); writeStream << blockServerName.toLatin1();
writeStream << static_cast<quint8>(connectionType); writeStream << static_cast<quint8>(connectionType);
writeStream << instanceNumber; writeStream << instanceNumber;
#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) // ### Qt 6: remove quint16 checksum = qChecksum(QByteArray(initMsg, static_cast<quint32>(initMsg.length())));
quint16 checksum =
qChecksum(
initMsg.constData(),
static_cast<quint32>(initMsg.length()));
#else #else
#if TODO_LIST quint16 checksum = qChecksum(initMsg.constData(), static_cast<quint32>(initMsg.length()));
#pragma message("@TODO remove code for QT 6 or later")
#endif
quint16 checksum =
qChecksum(
QByteArrayView(
initMsg.constData(),
static_cast<quint32>(initMsg.length())));
#endif #endif
writeStream << checksum; writeStream << checksum;
@@ -247,68 +274,72 @@ void SingleApplicationPrivate::connectToPrimary( int msecs, ConnectionType conne
socket->write( header ); socket->write( header );
socket->write( initMsg ); socket->write( initMsg );
bool result = socket->waitForBytesWritten( static_cast<int>(msecs - time.elapsed()) );
socket->flush(); socket->flush();
socket->waitForBytesWritten( msecs ); return result;
}
} }
quint16 SingleApplicationPrivate::blockChecksum() quint16 SingleApplicationPrivate::blockChecksum() const
{ {
#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) // ### Qt 6: remove #if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
return qChecksum( quint16 checksum = qChecksum(QByteArray(static_cast<const char*>(memory->constData()), offsetof(InstancesInfo, checksum)));
static_cast <const char *>( memory->data() ),
offsetof( InstancesInfo, checksum )
);
#else #else
#if TODO_LIST quint16 checksum = qChecksum(static_cast<const char*>(memory->constData()), offsetof(InstancesInfo, checksum));
#pragma message("@TODO remove code for QT 6 or later")
#endif
return qChecksum(
QByteArrayView(
static_cast <const char *>( memory->data() ),
offsetof( InstancesInfo, checksum )));
#endif #endif
return checksum;
} }
qint64 SingleApplicationPrivate::primaryPid() qint64 SingleApplicationPrivate::primaryPid() const
{ {
qint64 pid; qint64 pid;
memory->lock(); memory->lock();
InstancesInfo* inst = static_cast<InstancesInfo*>( memory->data() ); auto *inst = static_cast<InstancesInfo*>( memory->data() );
pid = inst->primaryPid; pid = inst->primaryPid;
memory->unlock(); memory->unlock();
return pid; return pid;
} }
QString SingleApplicationPrivate::primaryUser() const
{
QByteArray username;
memory->lock();
auto *inst = static_cast<InstancesInfo*>( memory->data() );
username = inst->primaryUser;
memory->unlock();
return QString::fromUtf8( username );
}
/** /**
@brief Executed when a connection has been made to the LocalServer * @brief Executed when a connection has been made to the LocalServer
*/ */
void SingleApplicationPrivate::slotConnectionEstablished() void SingleApplicationPrivate::slotConnectionEstablished()
{ {
QLocalSocket *nextConnSocket = server->nextPendingConnection(); QLocalSocket *nextConnSocket = server->nextPendingConnection();
connectionMap.insert(nextConnSocket, ConnectionInfo()); connectionMap.insert(nextConnSocket, ConnectionInfo());
QObject::connect(nextConnSocket, &QLocalSocket::aboutToClose, QObject::connect(nextConnSocket, &QLocalSocket::aboutToClose,
[nextConnSocket, this]() { [nextConnSocket, this](){
auto &info = connectionMap[nextConnSocket]; auto &info = connectionMap[nextConnSocket];
Q_EMIT this->slotClientConnectionClosed( nextConnSocket, info.instanceId ); Q_EMIT this->slotClientConnectionClosed( nextConnSocket, info.instanceId );
} }
); );
QObject::connect(nextConnSocket, &QLocalSocket::disconnected, QObject::connect(nextConnSocket, &QLocalSocket::disconnected, nextConnSocket, &QLocalSocket::deleteLater);
QObject::connect(nextConnSocket, &QLocalSocket::destroyed,
[nextConnSocket, this](){ [nextConnSocket, this](){
connectionMap.remove(nextConnSocket); connectionMap.remove(nextConnSocket);
nextConnSocket->deleteLater();
} }
); );
QObject::connect(nextConnSocket, &QLocalSocket::readyRead, QObject::connect(nextConnSocket, &QLocalSocket::readyRead,
[nextConnSocket, this]() { [nextConnSocket, this](){
auto &info = connectionMap[nextConnSocket]; auto &info = connectionMap[nextConnSocket];
switch(info.stage) { switch(info.stage){
case StageHeader: case StageHeader:
readInitMessageHeader(nextConnSocket); readInitMessageHeader(nextConnSocket);
break; break;
@@ -327,11 +358,11 @@ void SingleApplicationPrivate::slotConnectionEstablished()
void SingleApplicationPrivate::readInitMessageHeader( QLocalSocket *sock ) void SingleApplicationPrivate::readInitMessageHeader( QLocalSocket *sock )
{ {
if (!connectionMap.contains( sock )) { if (!connectionMap.contains( sock )){
return; return;
} }
if( sock->bytesAvailable() < ( qint64 )sizeof( quint64 ) ) { if( sock->bytesAvailable() < ( qint64 )sizeof( quint64 ) ){
return; return;
} }
@@ -348,7 +379,7 @@ void SingleApplicationPrivate::readInitMessageHeader( QLocalSocket *sock )
info.stage = StageBody; info.stage = StageBody;
info.msgLen = msgLen; info.msgLen = msgLen;
if ( sock->bytesAvailable() >= (qint64) msgLen ) { if ( sock->bytesAvailable() >= (qint64) msgLen ){
readInitMessageBody( sock ); readInitMessageBody( sock );
} }
} }
@@ -357,12 +388,12 @@ void SingleApplicationPrivate::readInitMessageBody( QLocalSocket *sock )
{ {
Q_Q(SingleApplication); Q_Q(SingleApplication);
if (!connectionMap.contains( sock )) { if (!connectionMap.contains( sock )){
return; return;
} }
ConnectionInfo &info = connectionMap[sock]; ConnectionInfo &info = connectionMap[sock];
if( sock->bytesAvailable() < ( qint64 )info.msgLen ) { if( sock->bytesAvailable() < ( qint64 )info.msgLen ){
return; return;
} }
@@ -392,26 +423,17 @@ void SingleApplicationPrivate::readInitMessageBody( QLocalSocket *sock )
quint16 msgChecksum = 0; quint16 msgChecksum = 0;
readStream >> msgChecksum; readStream >> msgChecksum;
#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) // ### Qt 6: remove #if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
const quint16 actualChecksum = const quint16 actualChecksum = qChecksum(QByteArray(msgBytes, static_cast<quint32>(msgBytes.length() - sizeof(quint16))));
qChecksum(
msgBytes.constData(),
static_cast<quint32>( msgBytes.length() - sizeof( quint16 ) ) );
#else #else
#if TODO_LIST const quint16 actualChecksum = qChecksum(msgBytes.constData(), static_cast<quint32>(msgBytes.length() - sizeof(quint16)));
#pragma message("@TODO remove code for QT 6 or later")
#endif
const quint16 actualChecksum =
qChecksum(
QByteArrayView(
msgBytes.constData(),
static_cast<quint32>(msgBytes.length() - sizeof(quint16))));
#endif #endif
bool isValid = readStream.status() == QDataStream::Ok && bool isValid = readStream.status() == QDataStream::Ok &&
QLatin1String(latin1Name) == blockServerName && QLatin1String(latin1Name) == blockServerName &&
msgChecksum == actualChecksum; msgChecksum == actualChecksum;
if( !isValid ) { if( !isValid ){
sock->close(); sock->close();
return; return;
} }
@@ -426,7 +448,7 @@ void SingleApplicationPrivate::readInitMessageBody( QLocalSocket *sock )
Q_EMIT q->instanceStarted(); Q_EMIT q->instanceStarted();
} }
if (sock->bytesAvailable() > 0) { if (sock->bytesAvailable() > 0){
Q_EMIT this->slotDataAvailable( sock, instanceId ); Q_EMIT this->slotDataAvailable( sock, instanceId );
} }
} }
@@ -442,3 +464,23 @@ void SingleApplicationPrivate::slotClientConnectionClosed( QLocalSocket *closedS
if( closedSocket->bytesAvailable() > 0 ) if( closedSocket->bytesAvailable() > 0 )
Q_EMIT slotDataAvailable( closedSocket, instanceId ); Q_EMIT slotDataAvailable( closedSocket, instanceId );
} }
void SingleApplicationPrivate::randomSleep()
{
#if QT_VERSION >= QT_VERSION_CHECK( 5, 10, 0 )
QThread::msleep( QRandomGenerator::global()->bounded( 8u, 18u ));
#else
qsrand( QDateTime::currentMSecsSinceEpoch() % std::numeric_limits<uint>::max() );
QThread::msleep( 8 + static_cast <unsigned long>( static_cast <float>( qrand() ) / RAND_MAX * 10 ));
#endif
}
void SingleApplicationPrivate::addAppData(const QString &data)
{
appDataList.push_back(data);
}
QStringList SingleApplicationPrivate::appData() const
{
return appDataList;
}
+20 -15
View File
@@ -1,6 +1,6 @@
// The MIT License (MIT) // The MIT License (MIT)
// //
// Copyright (c) Itay Grudev 2015 - 2016 // Copyright (c) Itay Grudev 2015 - 2020
// //
// Permission is hereby granted, free of charge, to any person obtaining a copy // Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to deal // of this software and associated documentation files (the "Software"), to deal
@@ -41,20 +41,19 @@ struct InstancesInfo {
bool primary; bool primary;
quint32 secondary; quint32 secondary;
qint64 primaryPid; qint64 primaryPid;
quint16 checksum; char primaryUser[128];
quint16 checksum; // Must be the last field
}; };
struct ConnectionInfo { struct ConnectionInfo {
explicit ConnectionInfo() : qint64 msgLen = 0;
msgLen(0), instanceId(0), stage(0) {} quint32 instanceId = 0;
qint64 msgLen; quint8 stage = 0;
quint32 instanceId;
quint8 stage;
}; };
class SingleApplicationPrivate : public QObject { class SingleApplicationPrivate : public QObject {
Q_OBJECT Q_OBJECT
public: public:
enum ConnectionType : quint8 { enum ConnectionType : quint8 {
InvalidConnection = 0, InvalidConnection = 0,
NewInstance = 1, NewInstance = 1,
@@ -69,17 +68,22 @@ class SingleApplicationPrivate : public QObject {
Q_DECLARE_PUBLIC(SingleApplication) Q_DECLARE_PUBLIC(SingleApplication)
SingleApplicationPrivate( SingleApplication *q_ptr ); SingleApplicationPrivate( SingleApplication *q_ptr );
~SingleApplicationPrivate(); ~SingleApplicationPrivate() override;
static QString getUsername();
void genBlockServerName(); void genBlockServerName();
void initializeMemoryBlock(); void initializeMemoryBlock() const;
void startPrimary(); void startPrimary();
void startSecondary(); void startSecondary();
void connectToPrimary(int msecs, ConnectionType connectionType ); bool connectToPrimary( int msecs, ConnectionType connectionType );
quint16 blockChecksum(); quint16 blockChecksum() const;
qint64 primaryPid(); qint64 primaryPid() const;
QString primaryUser() const;
void readInitMessageHeader(QLocalSocket *socket); void readInitMessageHeader(QLocalSocket *socket);
void readInitMessageBody(QLocalSocket *socket); void readInitMessageBody(QLocalSocket *socket);
static void randomSleep();
void addAppData(const QString &data);
QStringList appData() const;
SingleApplication *q_ptr; SingleApplication *q_ptr;
QSharedMemory *memory; QSharedMemory *memory;
@@ -89,8 +93,9 @@ class SingleApplicationPrivate : public QObject {
QString blockServerName; QString blockServerName;
SingleApplication::Options options; SingleApplication::Options options;
QMap<QLocalSocket*, ConnectionInfo> connectionMap; QMap<QLocalSocket*, ConnectionInfo> connectionMap;
QStringList appDataList;
public Q_SLOTS: public Q_SLOTS:
void slotConnectionEstablished(); void slotConnectionEstablished();
void slotDataAvailable( QLocalSocket*, quint32 ); void slotDataAvailable( QLocalSocket*, quint32 );
void slotClientConnectionClosed( QLocalSocket*, quint32 ); void slotClientConnectionClosed( QLocalSocket*, quint32 );
@@ -1,7 +1,7 @@
{ {
"id": "org.qelectrotech.QElectroTech", "id": "org.qelectrotech.QElectroTech",
"runtime": "org.kde.Platform", "runtime": "org.kde.Platform",
"runtime-version": "5.14", "runtime-version": "5.15",
"sdk": "org.kde.Sdk", "sdk": "org.kde.Sdk",
"command": "qelectrotech", "command": "qelectrotech",
"rename-desktop-file": "qelectrotech.desktop", "rename-desktop-file": "qelectrotech.desktop",
+34
View File
@@ -0,0 +1,34 @@
# Copyright 2006 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/>.
message(
"_____________________________________________________________________"
"\nCopyright 2006 The QElectroTech Team"
"\nThis file is part of QElectroTech."
"\n\nQElectroTech is free software: you can redistribute it and/or modify"
"\nit under the terms of the GNU General Public License as published by"
"\nthe Free Software Foundation, either version 2 of the License, or"
"\n(at your option) any later version."
"\nQElectroTech is distributed in the hope that it will be useful,"
"\nbut WITHOUT ANY WARRANTY; without even the implied warranty of"
"\nMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the"
"\nGNU General Public License for more details."
"\n\nYou should have received a copy of the GNU General Public License"
"\nalong with QElectroTech. If not, see <http://www.gnu.org/licenses/>.\n"
"_____________________________________________________________________")
+71
View File
@@ -0,0 +1,71 @@
# Copyright 2006 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/>.
# Paths used for compilation and installation of QET
message(" - define_definitions")
message("Paths used for compilation and installation of QET")
message("--------------------------------------------------")
message("COMPIL_PREFIX " ${COMPIL_PREFIX})
message("INSTALL_PREFIX " ${INSTALL_PREFIX})
message("QET_BINARY_PATH " ${QET_BINARY_PATH})
if(${QET_COMMON_COLLECTION_PATH} STRGREATER "")
message("QET_COMMON_COLLECTION_PATH " ${INSTALL_PREFIX}${QET_COMMON_COLLECTION_PATH})
add_definitions(-DQET_COMMON_COLLECTION_PATH=${INSTALL_PREFIX}${QET_COMMON_COLLECTION_PATH})
endif()
if(${QET_COMMON_TBT_PATH} STRGREATER "")
message("QET_COMMON_TBT_PATH " ${INSTALL_PREFIX}${QET_COMMON_TBT_PATH})
add_definitions(-DQET_COMMON_TBT_PATH=${INSTALL_PREFIX}${QET_COMMON_TBT_PATH})
endif()
if(${QET_LANG_PATH_RELATIVE_TO_BINARY_PATH})
add_definitions(-DQET_LANG_PATH_RELATIVE_TO_BINARY_PATH)
endif()
if(${QET_LANG_PATH} STRGREATER "")
message("QET_LANG_PATH " ${INSTALL_PREFIX}${QET_LANG_PATH})
add_definitions(-DQET_LANG_PATH=${INSTALL_PREFIX}${QET_LANG_PATH})
endif()
if(${QET_EXAMPLES_PATH} STRGREATER "")
message("QET_EXAMPLES_PATH " ${INSTALL_PREFIX}${QET_EXAMPLES_PATH})
add_definitions(-DQET_EXAMPLES_PATH=${INSTALL_PREFIX}${QET_EXAMPLES_PATH})
endif()
message("QET_LICENSE_PATH " ${QET_LICENSE_PATH})
message("QET_MIME_XML_PATH " ${QET_MIME_XML_PATH})
message("QET_MIME_DESKTOP_PATH " ${QET_MIME_DESKTOP_PATH})
message("QET_MIME_PACKAGE_PATH " ${QET_MIME_PACKAGE_PATH})
message("QET_DESKTOP_PATH " ${QET_DESKTOP_PATH})
message("QET_ICONS_PATH " ${QET_ICONS_PATH})
message("QET_MAN_PATH " ${QET_MAN_PATH})
message("QET_APPDATA_PATH " ${QET_APPDATA_PATH})
message("ICON " ${ICON})
message("--------------------------------------------------")
message("PROJECT_NAME :" ${PROJECT_NAME})
message("PROJECT_VERSION :" ${PROJECT_VERSION})
message("PROJECT_DESCRIPTION :" ${PROJECT_DESCRIPTION})
message("PROJECT_HOMEPAGE_URL :" ${PROJECT_HOMEPAGE_URL})
message("PROJECT_SOURCE_DIR :" ${PROJECT_SOURCE_DIR})
message("QET_DIR :" ${QET_DIR})
message("GIT_COMMIT_SHA :" ${GIT_COMMIT_SHA})
if(BUILD_WITH_KF5)
message("KF5_GIT_TAG :" ${KF5_GIT_TAG})
else()
add_definitions(-DBUILD_WITHOUT_KF5)
endif()
message("QET_COMPONENTS :" ${QET_COMPONENTS})
message("QT_VERSION_MAJOR :" ${QT_VERSION_MAJOR})
+35
View File
@@ -0,0 +1,35 @@
# Copyright 2006 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/>.
message(" - developer_options")
# warn on *any* usage of deprecated APIs
add_definitions(-DQT_DEPRECATED_WARNINGS)
# You can make your code fail to compile if it uses deprecated APIs.
# In order to do so, uncomment the following line.
# disables all the APIs deprecated before Qt 6.0.0
#add_definitions(-DQT_DISABLE_DEPRECATED_BEFORE=0x060000)
# to enable function names and line numbers even for release builds
add_definitions(-DQT_MESSAGELOGCONTEXT)
# You can make your code warn on compile time for the TODO's
# In order to do so, uncomment the following line.
#add_definitions(-DTODO_LIST)
# Build with KF5
option(BUILD_WITH_KF5 "Build with KF5" ON)
+67
View File
@@ -0,0 +1,67 @@
# Copyright 2006 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/>.
message(" - fetch_kdeaddons")
if(DEFINED BUILD_WITH_KF5)
Include(FetchContent)
set(BUILD_KF5_YES "YES")
if(DEFINED BUILD_KF5_YES)
if(NOT DEFINED KF5_GIT_TAG)
#https://qelectrotech.org/forum/viewtopic.php?pid=13924#p13924
set(KF5_GIT_TAG v5.77.0)
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(
kcoreaddons
GIT_REPOSITORY https://invent.kde.org/frameworks/kcoreaddons.git
GIT_TAG ${KF5_GIT_TAG})
FetchContent_MakeAvailable(kcoreaddons)
FetchContent_Declare(
kwidgetsaddons
GIT_REPOSITORY https://invent.kde.org/frameworks/kwidgetsaddons.git
GIT_TAG ${KF5_GIT_TAG})
FetchContent_MakeAvailable(kwidgetsaddons)
else()
find_package(KF5CoreAddons REQUIRED)
find_package(KF5WidgetsAddons REQUIRED)
endif()
set(KF5_PRIVATE_LIBRARIES
KF5::WidgetsAddons
KF5::CoreAddons
)
endif()
+26
View File
@@ -0,0 +1,26 @@
# Copyright 2006 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/>.
message(" - fetch_pugixml")
Include(FetchContent)
FetchContent_Declare(
pugixml
GIT_REPOSITORY https://github.com/zeux/pugixml.git
GIT_TAG v1.11.4)
FetchContent_MakeAvailable(pugixml)
+31
View File
@@ -0,0 +1,31 @@
# Copyright 2006 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/>.
message(" - fetch_singleapplication")
# https://github.com/itay-grudev/SingleApplication/issues/18
#qmake
#DEFINES += QAPPLICATION_CLASS=QGuiApplication
set(QAPPLICATION_CLASS QApplication)
Include(FetchContent)
FetchContent_Declare(
SingleApplication
GIT_REPOSITORY https://github.com/itay-grudev/SingleApplication.git
GIT_TAG v3.2.0)
FetchContent_MakeAvailable(SingleApplication)
+41
View File
@@ -0,0 +1,41 @@
# Copyright 2006 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/>.
message(" - git_last_commit_sha")
find_package(Git QUIET)
if(GIT_FOUND AND EXISTS "${PROJECT_SOURCE_DIR}/.git")
#get GIT COMMIT SHA
execute_process(
COMMAND ${GIT_EXECUTABLE} -C ${QET_DIR} rev-parse --verify HEAD
OUTPUT_VARIABLE GIT_COMMIT_SHA
RESULT_VARIABLE GIT_COMMIT_RESULT)
# This strips terminating newline in the variable
string(REGEX REPLACE "\n$" "" GIT_COMMIT_SHA "${GIT_COMMIT_SHA}")
# This adds to definitions => .cpp
add_definitions(-DGIT_COMMIT_SHA="${GIT_COMMIT_SHA}")
if(NOT GIT_COMMIT_RESULT EQUAL "0")
message(
FATAL_ERROR
"git rev-parse --verify HEAD failed with "
${GIT_COMMIT_RESULT}
", please check")
endif()
endif()
+35
View File
@@ -0,0 +1,35 @@
# Copyright 2006 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/>.
message(" - git_update_submodules")
find_package(Git QUIET)
if(GIT_FOUND AND EXISTS "${PROJECT_SOURCE_DIR}/.git")
# updates all git submodules
execute_process(
COMMAND ${GIT_EXECUTABLE} submodule update --init --recursive
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
RESULT_VARIABLE GIT_SUBMOD_RESULT)
if(NOT GIT_SUBMOD_RESULT EQUAL "0")
message(
FATAL_ERROR
"git submodule update --init failed with "
${GIT_SUBMOD_RESULT}
", please checkout submodules")
endif()
endif()
+25
View File
@@ -0,0 +1,25 @@
# Copyright 2006 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/>.
if(${CMAKE_VERSION} VERSION_LESS 3.14)
message(
"_____________________________________________________________________")
message("to update Cmake on linux:")
message("https://github.com/Kitware/CMake/")
message("linux => cmake-3.19.1-Linux-x86_64.sh")
message(" sudo ./cmake.sh --prefix=/usr/local/ --exclude-subdir")
message("windows good luck :)")
endif()
@@ -0,0 +1,69 @@
# Copyright 2006 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/>.
# Paths used for compilation and installation of QET
message(" - paths_compilation_installation")
if(UNIX AND NOT APPLE)
# for Linux, BSD, Solaris, Minix
set(COMPIL_PREFIX "/usr/local/")
set(INSTALL_PREFIX "/usr/local/")
set(QET_BINARY_PATH "bin/")
set(QET_COMMON_COLLECTION_PATH "share/qelectrotech/elements/")
set(QET_COMMON_TBT_PATH "share/qelectrotech/titleblocks/")
set(QET_LANG_PATH "share/qelectrotech/lang/")
set(QET_EXAMPLES_PATH "share/qelectrotech/examples/")
set(QET_LICENSE_PATH "doc/qelectrotech/")
set(QET_MIME_XML_PATH "../share/mime/application/")
set(QET_MIME_DESKTOP_PATH "../share/mimelnk/application/")
set(QET_MIME_PACKAGE_PATH "../share/mime/packages/")
set(QET_DESKTOP_PATH "share/applications/")
set(QET_ICONS_PATH "share/icons/hicolor/")
set(QET_MAN_PATH "man/")
set(QET_APPDATA_PATH "share/appdata")
endif()
if(APPLE)
# for MacOS X or iOS, watchOS, tvOS (since 3.10.3)
set(COMPIL_PREFIX "./")
set(INSTALL_PREFIX "/usr/local/")
set(QET_BINARY_PATH "bin/")
set(QET_COMMON_COLLECTION_PATH "../Resources/elements/")
set(QET_COMMON_TBT_PATH "../Resources/titleblocks/")
set(QET_LANG_PATH "../Resources/lang/")
set(QET_EXAMPLES_PATH "share/qelectrotech/examples/")
set(QET_LICENSE_PATH "doc/qelectrotech/")
set(QET_MIME_XML_PATH "../share/mime/application/")
set(QET_MIME_DESKTOP_PATH "../share/mimelnk/application/")
set(QET_DESKTOP_PATH "share/applications/")
set(QET_ICONS_PATH "share/icons/hicolor/")
set(QET_MAN_PATH "man/")
set(ICON "ico/mac_icon/qelectrotech.icns")
endif()
if(WIN32)
# for Windows operating system in general
set(COMPIL_PREFIX "./")
set(INSTALL_PREFIX "./")
set(QET_BINARY_PATH "./")
set(QET_COMMON_COLLECTION_PATH "elements/")
set(QET_COMMON_TBT_PATH "titleblocks/")
set(QET_LANG_PATH "l10n/")
set(QET_LICENSE_PATH "./")
# Liste des ressources Windows
#RC_FILE = qelectrotech.rc
endif()
+643
View File
@@ -0,0 +1,643 @@
# Copyright 2006 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/>.
message(" - qet_compilation_vars")
set(QET_COMPONENTS
LinguistTools
PrintSupport
Xml
Svg
Sql
Network
Widgets
Concurrent)
set(QET_PRIVATE_LIBRARIES
Qt::PrintSupport
Qt::Gui
Qt::Xml
Qt::Svg
Qt::Sql
Qt::Network
Qt::Widgets
Qt::Concurrent
)
set(QET_RES_FILES
${QET_DIR}/sources/autoNum/ui/autonumberingdockwidget.ui
${QET_DIR}/sources/autoNum/ui/autonumberingmanagementw.ui
${QET_DIR}/sources/autoNum/ui/folioautonumbering.ui
${QET_DIR}/sources/autoNum/ui/formulaautonumberingw.ui
${QET_DIR}/sources/autoNum/ui/numparteditorw.ui
${QET_DIR}/sources/autoNum/ui/selectautonumw.ui
${QET_DIR}/sources/dataBase/ui/elementquerywidget.ui
${QET_DIR}/sources/dataBase/ui/summaryquerywidget.ui
${QET_DIR}/sources/editor/ui/dynamictextfieldeditor.ui
${QET_DIR}/sources/editor/ui/elementpropertieseditorwidget.ui
${QET_DIR}/sources/editor/ui/ellipseeditor.ui
${QET_DIR}/sources/editor/ui/lineeditor.ui
${QET_DIR}/sources/editor/ui/polygoneditor.ui
${QET_DIR}/sources/editor/ui/rectangleeditor.ui
${QET_DIR}/sources/editor/ui/qetelementeditor.ui
${QET_DIR}/sources/editor/ui/terminaleditor.ui
${QET_DIR}/sources/ElementsCollection/ui/renamedialog.ui
${QET_DIR}/sources/factory/ui/addtabledialog.ui
${QET_DIR}/sources/NameList/ui/namelistdialog.ui
${QET_DIR}/sources/NameList/ui/namelistwidget.ui
${QET_DIR}/sources/print/projectprintwindow.ui
${QET_DIR}/sources/PropertiesEditor/propertieseditordockwidget.ui
${QET_DIR}/sources/richtext/addlinkdialog.ui
${QET_DIR}/sources/SearchAndReplace/ui/replaceadvanceddialog.ui
${QET_DIR}/sources/SearchAndReplace/ui/replaceconductordialog.ui
${QET_DIR}/sources/SearchAndReplace/ui/replaceelementdialog.ui
${QET_DIR}/sources/SearchAndReplace/ui/replacefoliowidget.ui
${QET_DIR}/sources/SearchAndReplace/ui/searchandreplacewidget.ui
${QET_DIR}/sources/ui/aboutqetdialog.ui
${QET_DIR}/sources/ui/alignmenttextdialog.ui
${QET_DIR}/sources/ui/bomexportdialog.ui
${QET_DIR}/sources/ui/borderpropertieswidget.ui
${QET_DIR}/sources/ui/compositetexteditdialog.ui
${QET_DIR}/sources/ui/conductorpropertiesdialog.ui
${QET_DIR}/sources/ui/conductorpropertieswidget.ui
${QET_DIR}/sources/ui/configsaveloaderwidget.ui
${QET_DIR}/sources/ui/diagramcontextwidget.ui
${QET_DIR}/sources/ui/diagramselection.ui
${QET_DIR}/sources/ui/dialogwaiting.ui
${QET_DIR}/sources/ui/dynamicelementtextitemeditor.ui
${QET_DIR}/sources/ui/elementinfopartwidget.ui
${QET_DIR}/sources/ui/elementinfowidget.ui
${QET_DIR}/sources/ui/formulaassistantdialog.ui
${QET_DIR}/sources/ui/imagepropertieswidget.ui
${QET_DIR}/sources/ui/importelementdialog.ui
${QET_DIR}/sources/ui/importelementtextpatterndialog.ui
${QET_DIR}/sources/ui/linksingleelementwidget.ui
${QET_DIR}/sources/ui/marginseditdialog.ui
${QET_DIR}/sources/ui/masterpropertieswidget.ui
${QET_DIR}/sources/ui/multipastedialog.ui
${QET_DIR}/sources/ui/potentialselectordialog.ui
${QET_DIR}/sources/ui/reportpropertiewidget.ui
${QET_DIR}/sources/ui/shapegraphicsitempropertieswidget.ui
${QET_DIR}/sources/ui/titleblockpropertieswidget.ui
${QET_DIR}/sources/ui/xrefpropertieswidget.ui
${QET_DIR}/sources/ui/configpage/generalconfigurationpage.ui
)
set(QET_SRC_FILES
${QET_DIR}/sources/borderproperties.cpp
${QET_DIR}/sources/borderproperties.h
${QET_DIR}/sources/bordertitleblock.cpp
${QET_DIR}/sources/bordertitleblock.h
${QET_DIR}/sources/conductorautonumerotation.cpp
${QET_DIR}/sources/conductorautonumerotation.h
${QET_DIR}/sources/conductornumexport.cpp
${QET_DIR}/sources/conductornumexport.h
${QET_DIR}/sources/conductorprofile.cpp
${QET_DIR}/sources/conductorprofile.h
${QET_DIR}/sources/conductorproperties.cpp
${QET_DIR}/sources/conductorproperties.h
${QET_DIR}/sources/conductorsegment.cpp
${QET_DIR}/sources/conductorsegment.h
${QET_DIR}/sources/conductorsegmentprofile.h
${QET_DIR}/sources/configdialog.cpp
${QET_DIR}/sources/configdialog.h
${QET_DIR}/sources/configpage.h
${QET_DIR}/sources/configpages.cpp
${QET_DIR}/sources/configpages.h
${QET_DIR}/sources/createdxf.cpp
${QET_DIR}/sources/createdxf.h
${QET_DIR}/sources/diagramcommands.cpp
${QET_DIR}/sources/diagramcommands.h
${QET_DIR}/sources/diagramcontent.cpp
${QET_DIR}/sources/diagramcontent.h
${QET_DIR}/sources/diagramcontext.cpp
${QET_DIR}/sources/diagramcontext.h
${QET_DIR}/sources/diagram.cpp
${QET_DIR}/sources/diagram.h
${QET_DIR}/sources/diagramposition.cpp
${QET_DIR}/sources/diagramposition.h
${QET_DIR}/sources/diagramview.cpp
${QET_DIR}/sources/diagramview.h
${QET_DIR}/sources/elementdialog.cpp
${QET_DIR}/sources/elementdialog.h
${QET_DIR}/sources/elementprovider.cpp
${QET_DIR}/sources/elementprovider.h
${QET_DIR}/sources/elementscategoryeditor.cpp
${QET_DIR}/sources/elementscategoryeditor.h
${QET_DIR}/sources/elementscollectioncache.cpp
${QET_DIR}/sources/elementscollectioncache.h
${QET_DIR}/sources/elementsmover.cpp
${QET_DIR}/sources/elementsmover.h
${QET_DIR}/sources/elementspanel.cpp
${QET_DIR}/sources/elementspanel.h
${QET_DIR}/sources/elementspanelwidget.cpp
${QET_DIR}/sources/elementspanelwidget.h
${QET_DIR}/sources/elementtextpattern.cpp
${QET_DIR}/sources/elementtextpattern.h
${QET_DIR}/sources/elementtextsmover.cpp
${QET_DIR}/sources/elementtextsmover.h
${QET_DIR}/sources/exportdialog.cpp
${QET_DIR}/sources/exportdialog.h
${QET_DIR}/sources/exportproperties.cpp
${QET_DIR}/sources/exportproperties.h
${QET_DIR}/sources/exportpropertieswidget.cpp
${QET_DIR}/sources/exportpropertieswidget.h
${QET_DIR}/sources/genericpanel.cpp
${QET_DIR}/sources/genericpanel.h
${QET_DIR}/sources/machine_info.cpp
${QET_DIR}/sources/machine_info.h
${QET_DIR}/sources/main.cpp
${QET_DIR}/sources/newelementwizard.cpp
${QET_DIR}/sources/newelementwizard.h
${QET_DIR}/sources/projectconfigpages.cpp
${QET_DIR}/sources/projectconfigpages.h
${QET_DIR}/sources/projectview.cpp
${QET_DIR}/sources/projectview.h
${QET_DIR}/sources/qetapp.cpp
${QET_DIR}/sources/qetapp.h
${QET_DIR}/sources/qetarguments.cpp
${QET_DIR}/sources/qetarguments.h
${QET_DIR}/sources/qet.cpp
${QET_DIR}/sources/qetdiagrameditor.cpp
${QET_DIR}/sources/qetdiagrameditor.h
${QET_DIR}/sources/qet.h
${QET_DIR}/sources/qeticons.cpp
${QET_DIR}/sources/qeticons.h
${QET_DIR}/sources/qetinformation.cpp
${QET_DIR}/sources/qetinformation.h
${QET_DIR}/sources/qetmainwindow.cpp
${QET_DIR}/sources/qetmainwindow.h
${QET_DIR}/sources/qetmessagebox.cpp
${QET_DIR}/sources/qetmessagebox.h
${QET_DIR}/sources/qetproject.cpp
${QET_DIR}/sources/qetproject.h
${QET_DIR}/sources/qetregexpvalidator.cpp
${QET_DIR}/sources/qetregexpvalidator.h
${QET_DIR}/sources/qetresult.cpp
${QET_DIR}/sources/qetresult.h
${QET_DIR}/sources/qetxml.cpp
${QET_DIR}/sources/qetxml.h
${QET_DIR}/sources/qfilenameedit.cpp
${QET_DIR}/sources/qfilenameedit.h
${QET_DIR}/sources/qgimanager.cpp
${QET_DIR}/sources/qgimanager.h
${QET_DIR}/sources/qtextorientationspinboxwidget.cpp
${QET_DIR}/sources/qtextorientationspinboxwidget.h
${QET_DIR}/sources/qtextorientationwidget.cpp
${QET_DIR}/sources/qtextorientationwidget.h
${QET_DIR}/sources/recentfiles.cpp
${QET_DIR}/sources/recentfiles.h
${QET_DIR}/sources/titleblockcell.cpp
${QET_DIR}/sources/titleblockcell.h
${QET_DIR}/sources/titleblockproperties.cpp
${QET_DIR}/sources/titleblockproperties.h
${QET_DIR}/sources/titleblocktemplate.cpp
${QET_DIR}/sources/titleblocktemplate.h
${QET_DIR}/sources/titleblocktemplaterenderer.cpp
${QET_DIR}/sources/titleblocktemplaterenderer.h
${QET_DIR}/sources/autoNum/assignvariables.cpp
${QET_DIR}/sources/autoNum/assignvariables.h
${QET_DIR}/sources/autoNum/numerotationcontextcommands.cpp
${QET_DIR}/sources/autoNum/numerotationcontextcommands.h
${QET_DIR}/sources/autoNum/numerotationcontext.cpp
${QET_DIR}/sources/autoNum/numerotationcontext.h
${QET_DIR}/sources/autoNum/ui/autonumberingdockwidget.cpp
${QET_DIR}/sources/autoNum/ui/autonumberingdockwidget.h
${QET_DIR}/sources/autoNum/ui/autonumberingmanagementw.cpp
${QET_DIR}/sources/autoNum/ui/autonumberingmanagementw.h
${QET_DIR}/sources/autoNum/ui/folioautonumbering.cpp
${QET_DIR}/sources/autoNum/ui/folioautonumbering.h
${QET_DIR}/sources/autoNum/ui/formulaautonumberingw.cpp
${QET_DIR}/sources/autoNum/ui/formulaautonumberingw.h
${QET_DIR}/sources/autoNum/ui/numparteditorw.cpp
${QET_DIR}/sources/autoNum/ui/numparteditorw.h
${QET_DIR}/sources/autoNum/ui/selectautonumw.cpp
${QET_DIR}/sources/autoNum/ui/selectautonumw.h
${QET_DIR}/sources/dataBase/projectdatabase.cpp
${QET_DIR}/sources/dataBase/projectdatabase.h
${QET_DIR}/sources/dataBase/ui/elementquerywidget.cpp
${QET_DIR}/sources/dataBase/ui/elementquerywidget.h
${QET_DIR}/sources/dataBase/ui/summaryquerywidget.cpp
${QET_DIR}/sources/dataBase/ui/summaryquerywidget.h
${QET_DIR}/sources/diagramevent/diagrameventaddelement.cpp
${QET_DIR}/sources/diagramevent/diagrameventaddelement.h
${QET_DIR}/sources/diagramevent/diagrameventaddimage.cpp
${QET_DIR}/sources/diagramevent/diagrameventaddimage.h
${QET_DIR}/sources/diagramevent/diagrameventaddshape.cpp
${QET_DIR}/sources/diagramevent/diagrameventaddshape.h
${QET_DIR}/sources/diagramevent/diagrameventaddtext.cpp
${QET_DIR}/sources/diagramevent/diagrameventaddtext.h
${QET_DIR}/sources/diagramevent/diagrameventinterface.cpp
${QET_DIR}/sources/diagramevent/diagrameventinterface.h
${QET_DIR}/sources/dvevent/dveventinterface.cpp
${QET_DIR}/sources/dvevent/dveventinterface.h
${QET_DIR}/sources/editor/arceditor.cpp
${QET_DIR}/sources/editor/arceditor.h
${QET_DIR}/sources/editor/editorcommands.cpp
${QET_DIR}/sources/editor/editorcommands.h
${QET_DIR}/sources/editor/elementcontent.h
${QET_DIR}/sources/editor/elementitemeditor.cpp
${QET_DIR}/sources/editor/elementitemeditor.h
${QET_DIR}/sources/editor/elementprimitivedecorator.cpp
${QET_DIR}/sources/editor/elementprimitivedecorator.h
${QET_DIR}/sources/editor/elementscene.cpp
${QET_DIR}/sources/editor/elementscene.h
${QET_DIR}/sources/editor/elementview.cpp
${QET_DIR}/sources/editor/elementview.h
${QET_DIR}/sources/editor/styleeditor.cpp
${QET_DIR}/sources/editor/styleeditor.h
${QET_DIR}/sources/editor/esevent/eseventaddarc.cpp
${QET_DIR}/sources/editor/esevent/eseventaddarc.h
${QET_DIR}/sources/editor/esevent/eseventadddynamictextfield.cpp
${QET_DIR}/sources/editor/esevent/eseventadddynamictextfield.h
${QET_DIR}/sources/editor/esevent/eseventaddellipse.cpp
${QET_DIR}/sources/editor/esevent/eseventaddellipse.h
${QET_DIR}/sources/editor/esevent/eseventaddline.cpp
${QET_DIR}/sources/editor/esevent/eseventaddline.h
${QET_DIR}/sources/editor/esevent/eseventaddpolygon.cpp
${QET_DIR}/sources/editor/esevent/eseventaddpolygon.h
${QET_DIR}/sources/editor/esevent/eseventaddrect.cpp
${QET_DIR}/sources/editor/esevent/eseventaddrect.h
${QET_DIR}/sources/editor/esevent/eseventaddterminal.cpp
${QET_DIR}/sources/editor/esevent/eseventaddterminal.h
${QET_DIR}/sources/editor/esevent/eseventaddtext.cpp
${QET_DIR}/sources/editor/esevent/eseventaddtext.h
${QET_DIR}/sources/editor/esevent/eseventinterface.cpp
${QET_DIR}/sources/editor/esevent/eseventinterface.h
${QET_DIR}/sources/editor/graphicspart/abstractpartellipse.cpp
${QET_DIR}/sources/editor/graphicspart/abstractpartellipse.h
${QET_DIR}/sources/editor/graphicspart/customelementgraphicpart.cpp
${QET_DIR}/sources/editor/graphicspart/customelementgraphicpart.h
${QET_DIR}/sources/editor/graphicspart/customelementpart.cpp
${QET_DIR}/sources/editor/graphicspart/customelementpart.h
${QET_DIR}/sources/editor/graphicspart/partarc.cpp
${QET_DIR}/sources/editor/graphicspart/partarc.h
${QET_DIR}/sources/editor/graphicspart/partdynamictextfield.cpp
${QET_DIR}/sources/editor/graphicspart/partdynamictextfield.h
${QET_DIR}/sources/editor/graphicspart/partellipse.cpp
${QET_DIR}/sources/editor/graphicspart/partellipse.h
${QET_DIR}/sources/editor/graphicspart/partline.cpp
${QET_DIR}/sources/editor/graphicspart/partline.h
${QET_DIR}/sources/editor/graphicspart/partpolygon.cpp
${QET_DIR}/sources/editor/graphicspart/partpolygon.h
${QET_DIR}/sources/editor/graphicspart/partrectangle.cpp
${QET_DIR}/sources/editor/graphicspart/partrectangle.h
${QET_DIR}/sources/editor/graphicspart/partterminal.cpp
${QET_DIR}/sources/editor/graphicspart/partterminal.h
${QET_DIR}/sources/editor/graphicspart/parttext.cpp
${QET_DIR}/sources/editor/graphicspart/parttext.h
${QET_DIR}/sources/editor/ui/dynamictextfieldeditor.cpp
${QET_DIR}/sources/editor/ui/dynamictextfieldeditor.h
${QET_DIR}/sources/editor/ui/elementpropertieseditorwidget.cpp
${QET_DIR}/sources/editor/ui/elementpropertieseditorwidget.h
${QET_DIR}/sources/editor/ui/ellipseeditor.cpp
${QET_DIR}/sources/editor/ui/ellipseeditor.h
${QET_DIR}/sources/editor/ui/lineeditor.cpp
${QET_DIR}/sources/editor/ui/lineeditor.h
${QET_DIR}/sources/editor/ui/polygoneditor.cpp
${QET_DIR}/sources/editor/ui/polygoneditor.h
${QET_DIR}/sources/editor/ui/rectangleeditor.cpp
${QET_DIR}/sources/editor/ui/rectangleeditor.h
${QET_DIR}/sources/editor/ui/terminaleditor.cpp
${QET_DIR}/sources/editor/ui/terminaleditor.h
${QET_DIR}/sources/editor/ui/texteditor.cpp
${QET_DIR}/sources/editor/ui/texteditor.h
${QET_DIR}/sources/editor/ui/qetelementeditor.h
${QET_DIR}/sources/editor/ui/qetelementeditor.cpp
${QET_DIR}/sources/editor/UndoCommand/pastepartscommand.cpp
${QET_DIR}/sources/editor/UndoCommand/pastepartscommand.h
${QET_DIR}/sources/ElementsCollection/elementcollectionhandler.cpp
${QET_DIR}/sources/ElementsCollection/elementcollectionhandler.h
${QET_DIR}/sources/ElementsCollection/elementcollectionitem.cpp
${QET_DIR}/sources/ElementsCollection/elementcollectionitem.h
${QET_DIR}/sources/ElementsCollection/elementscollectionmodel.cpp
${QET_DIR}/sources/ElementsCollection/elementscollectionmodel.h
${QET_DIR}/sources/ElementsCollection/elementscollectionwidget.cpp
${QET_DIR}/sources/ElementsCollection/elementscollectionwidget.h
${QET_DIR}/sources/ElementsCollection/elementslocation.cpp
${QET_DIR}/sources/ElementsCollection/elementslocation.h
${QET_DIR}/sources/ElementsCollection/elementstreeview.cpp
${QET_DIR}/sources/ElementsCollection/elementstreeview.h
${QET_DIR}/sources/ElementsCollection/fileelementcollectionitem.cpp
${QET_DIR}/sources/ElementsCollection/fileelementcollectionitem.h
${QET_DIR}/sources/ElementsCollection/xmlelementcollection.cpp
${QET_DIR}/sources/ElementsCollection/xmlelementcollection.h
${QET_DIR}/sources/ElementsCollection/xmlprojectelementcollectionitem.cpp
${QET_DIR}/sources/ElementsCollection/xmlprojectelementcollectionitem.h
${QET_DIR}/sources/ElementsCollection/ui/renamedialog.cpp
${QET_DIR}/sources/ElementsCollection/ui/renamedialog.h
${QET_DIR}/sources/factory/elementfactory.cpp
${QET_DIR}/sources/factory/elementfactory.h
${QET_DIR}/sources/factory/elementpicturefactory.cpp
${QET_DIR}/sources/factory/elementpicturefactory.h
${QET_DIR}/sources/factory/propertieseditorfactory.cpp
${QET_DIR}/sources/factory/propertieseditorfactory.h
${QET_DIR}/sources/factory/qetgraphicstablefactory.cpp
${QET_DIR}/sources/factory/qetgraphicstablefactory.h
${QET_DIR}/sources/factory/ui/addtabledialog.cpp
${QET_DIR}/sources/factory/ui/addtabledialog.h
${QET_DIR}/sources/NameList/nameslist.cpp
${QET_DIR}/sources/NameList/nameslist.h
${QET_DIR}/sources/NameList/ui/namelistdialog.cpp
${QET_DIR}/sources/NameList/ui/namelistdialog.h
${QET_DIR}/sources/NameList/ui/namelistwidget.cpp
${QET_DIR}/sources/NameList/ui/namelistwidget.h
${QET_DIR}/sources/print/projectprintwindow.cpp
${QET_DIR}/sources/print/projectprintwindow.h
${QET_DIR}/sources/properties/elementdata.cpp
${QET_DIR}/sources/properties/elementdata.h
${QET_DIR}/sources/properties/propertiesinterface.cpp
${QET_DIR}/sources/properties/propertiesinterface.h
${QET_DIR}/sources/properties/reportproperties.cpp
${QET_DIR}/sources/properties/reportproperties.h
${QET_DIR}/sources/properties/terminaldata.cpp
${QET_DIR}/sources/properties/terminaldata.h
${QET_DIR}/sources/properties/xrefproperties.cpp
${QET_DIR}/sources/properties/xrefproperties.h
${QET_DIR}/sources/PropertiesEditor/propertieseditordialog.h
${QET_DIR}/sources/PropertiesEditor/propertieseditordockwidget.cpp
${QET_DIR}/sources/PropertiesEditor/propertieseditordockwidget.h
${QET_DIR}/sources/PropertiesEditor/propertieseditorwidget.cpp
${QET_DIR}/sources/PropertiesEditor/propertieseditorwidget.h
${QET_DIR}/sources/pugixml/pugiconfig.hpp
${QET_DIR}/sources/pugixml/pugixml.cpp
${QET_DIR}/sources/pugixml/pugixml.hpp
${QET_DIR}/sources/qetgraphicsitem/conductor.cpp
${QET_DIR}/sources/qetgraphicsitem/conductor.h
${QET_DIR}/sources/qetgraphicsitem/conductortextitem.cpp
${QET_DIR}/sources/qetgraphicsitem/conductortextitem.h
${QET_DIR}/sources/qetgraphicsitem/crossrefitem.cpp
${QET_DIR}/sources/qetgraphicsitem/crossrefitem.h
${QET_DIR}/sources/qetgraphicsitem/diagramimageitem.cpp
${QET_DIR}/sources/qetgraphicsitem/diagramimageitem.h
${QET_DIR}/sources/qetgraphicsitem/diagramtextitem.cpp
${QET_DIR}/sources/qetgraphicsitem/diagramtextitem.h
${QET_DIR}/sources/qetgraphicsitem/dynamicelementtextitem.cpp
${QET_DIR}/sources/qetgraphicsitem/dynamicelementtextitem.h
${QET_DIR}/sources/qetgraphicsitem/element.cpp
${QET_DIR}/sources/qetgraphicsitem/element.h
${QET_DIR}/sources/qetgraphicsitem/elementtextitemgroup.cpp
${QET_DIR}/sources/qetgraphicsitem/elementtextitemgroup.h
${QET_DIR}/sources/qetgraphicsitem/independenttextitem.cpp
${QET_DIR}/sources/qetgraphicsitem/independenttextitem.h
${QET_DIR}/sources/qetgraphicsitem/masterelement.cpp
${QET_DIR}/sources/qetgraphicsitem/masterelement.h
${QET_DIR}/sources/qetgraphicsitem/qetgraphicsitem.cpp
${QET_DIR}/sources/qetgraphicsitem/qetgraphicsitem.h
${QET_DIR}/sources/qetgraphicsitem/qetshapeitem.cpp
${QET_DIR}/sources/qetgraphicsitem/qetshapeitem.h
${QET_DIR}/sources/qetgraphicsitem/qgraphicsitemutility.cpp
${QET_DIR}/sources/qetgraphicsitem/qgraphicsitemutility.h
${QET_DIR}/sources/qetgraphicsitem/reportelement.cpp
${QET_DIR}/sources/qetgraphicsitem/reportelement.h
${QET_DIR}/sources/qetgraphicsitem/simpleelement.cpp
${QET_DIR}/sources/qetgraphicsitem/simpleelement.h
${QET_DIR}/sources/qetgraphicsitem/slaveelement.cpp
${QET_DIR}/sources/qetgraphicsitem/slaveelement.h
${QET_DIR}/sources/qetgraphicsitem/terminal.cpp
${QET_DIR}/sources/qetgraphicsitem/terminalelement.cpp
${QET_DIR}/sources/qetgraphicsitem/terminalelement.h
${QET_DIR}/sources/qetgraphicsitem/terminal.h
${QET_DIR}/sources/qetgraphicsitem/ViewItem/projectdbmodel.cpp
${QET_DIR}/sources/qetgraphicsitem/ViewItem/projectdbmodel.h
${QET_DIR}/sources/qetgraphicsitem/ViewItem/qetgraphicsheaderitem.cpp
${QET_DIR}/sources/qetgraphicsitem/ViewItem/qetgraphicsheaderitem.h
${QET_DIR}/sources/qetgraphicsitem/ViewItem/qetgraphicstableitem.cpp
${QET_DIR}/sources/qetgraphicsitem/ViewItem/qetgraphicstableitem.h
${QET_DIR}/sources/qetgraphicsitem/ViewItem/ui/graphicstablepropertieseditor.cpp
${QET_DIR}/sources/qetgraphicsitem/ViewItem/ui/graphicstablepropertieseditor.h
${QET_DIR}/sources/qetgraphicsitem/ViewItem/ui/projectdbmodelpropertieswidget.cpp
${QET_DIR}/sources/qetgraphicsitem/ViewItem/ui/projectdbmodelpropertieswidget.h
${QET_DIR}/sources/QetGraphicsItemModeler/qetgraphicshandleritem.cpp
${QET_DIR}/sources/QetGraphicsItemModeler/qetgraphicshandleritem.h
${QET_DIR}/sources/QetGraphicsItemModeler/qetgraphicshandlerutility.cpp
${QET_DIR}/sources/QetGraphicsItemModeler/qetgraphicshandlerutility.h
${QET_DIR}/sources/QPropertyUndoCommand/qpropertyundocommand.cpp
${QET_DIR}/sources/QPropertyUndoCommand/qpropertyundocommand.h
${QET_DIR}/sources/QWidgetAnimation/qwidgetanimation.cpp
${QET_DIR}/sources/QWidgetAnimation/qwidgetanimation.h
${QET_DIR}/sources/richtext/richtexteditor.cpp
${QET_DIR}/sources/richtext/richtexteditor_p.h
${QET_DIR}/sources/richtext/ui_addlinkdialog.h
${QET_DIR}/sources/SearchAndReplace/searchandreplaceworker.cpp
${QET_DIR}/sources/SearchAndReplace/searchandreplaceworker.h
${QET_DIR}/sources/SearchAndReplace/ui/replaceadvanceddialog.cpp
${QET_DIR}/sources/SearchAndReplace/ui/replaceadvanceddialog.h
${QET_DIR}/sources/SearchAndReplace/ui/replaceconductordialog.cpp
${QET_DIR}/sources/SearchAndReplace/ui/replaceconductordialog.h
${QET_DIR}/sources/SearchAndReplace/ui/replaceelementdialog.cpp
${QET_DIR}/sources/SearchAndReplace/ui/replaceelementdialog.h
${QET_DIR}/sources/SearchAndReplace/ui/replacefoliowidget.cpp
${QET_DIR}/sources/SearchAndReplace/ui/replacefoliowidget.h
${QET_DIR}/sources/SearchAndReplace/ui/searchandreplacewidget.cpp
${QET_DIR}/sources/SearchAndReplace/ui/searchandreplacewidget.h
${QET_DIR}/sources/titleblock/dimension.cpp
${QET_DIR}/sources/titleblock/dimension.h
${QET_DIR}/sources/titleblock/dimensionwidget.cpp
${QET_DIR}/sources/titleblock/dimensionwidget.h
${QET_DIR}/sources/titleblock/gridlayoutanimation.cpp
${QET_DIR}/sources/titleblock/gridlayoutanimation.h
${QET_DIR}/sources/titleblock/helpercell.cpp
${QET_DIR}/sources/titleblock/helpercell.h
${QET_DIR}/sources/titleblock/integrationmovetemplateshandler.cpp
${QET_DIR}/sources/titleblock/integrationmovetemplateshandler.h
${QET_DIR}/sources/titleblock/movetemplateshandler.h
${QET_DIR}/sources/titleblock/qettemplateeditor.cpp
${QET_DIR}/sources/titleblock/qettemplateeditor.h
${QET_DIR}/sources/titleblock/splittedhelpercell.cpp
${QET_DIR}/sources/titleblock/splittedhelpercell.h
${QET_DIR}/sources/titleblock/templatecellsset.cpp
${QET_DIR}/sources/titleblock/templatecellsset.h
${QET_DIR}/sources/titleblock/templatecellwidget.cpp
${QET_DIR}/sources/titleblock/templatecellwidget.h
${QET_DIR}/sources/titleblock/templatecommands.cpp
${QET_DIR}/sources/titleblock/templatecommands.h
${QET_DIR}/sources/titleblock/templatedeleter.cpp
${QET_DIR}/sources/titleblock/templatedeleter.h
${QET_DIR}/sources/titleblock/templatelocationchooser.cpp
${QET_DIR}/sources/titleblock/templatelocationchooser.h
${QET_DIR}/sources/titleblock/templatelocation.cpp
${QET_DIR}/sources/titleblock/templatelocation.h
${QET_DIR}/sources/titleblock/templatelocationsaver.cpp
${QET_DIR}/sources/titleblock/templatelocationsaver.h
${QET_DIR}/sources/titleblock/templatelogomanager.cpp
${QET_DIR}/sources/titleblock/templatelogomanager.h
${QET_DIR}/sources/titleblock/templatescollection.cpp
${QET_DIR}/sources/titleblock/templatescollection.h
${QET_DIR}/sources/titleblock/templateview.cpp
${QET_DIR}/sources/titleblock/templateview.h
${QET_DIR}/sources/titleblock/templatevisualcell.cpp
${QET_DIR}/sources/titleblock/templatevisualcell.h
${QET_DIR}/sources/ui/aboutqetdialog.cpp
${QET_DIR}/sources/ui/aboutqetdialog.h
${QET_DIR}/sources/ui/abstractelementpropertieseditorwidget.cpp
${QET_DIR}/sources/ui/abstractelementpropertieseditorwidget.h
${QET_DIR}/sources/ui/alignmenttextdialog.cpp
${QET_DIR}/sources/ui/alignmenttextdialog.h
${QET_DIR}/sources/ui/bomexportdialog.cpp
${QET_DIR}/sources/ui/bomexportdialog.h
${QET_DIR}/sources/ui/borderpropertieswidget.cpp
${QET_DIR}/sources/ui/borderpropertieswidget.h
${QET_DIR}/sources/ui/compositetexteditdialog.cpp
${QET_DIR}/sources/ui/compositetexteditdialog.h
${QET_DIR}/sources/ui/conductorpropertiesdialog.cpp
${QET_DIR}/sources/ui/conductorpropertiesdialog.h
${QET_DIR}/sources/ui/conductorpropertieswidget.cpp
${QET_DIR}/sources/ui/conductorpropertieswidget.h
${QET_DIR}/sources/ui/configsaveloaderwidget.cpp
${QET_DIR}/sources/ui/configsaveloaderwidget.h
${QET_DIR}/sources/ui/diagramcontextwidget.cpp
${QET_DIR}/sources/ui/diagramcontextwidget.h
${QET_DIR}/sources/ui/diagrampropertiesdialog.cpp
${QET_DIR}/sources/ui/diagrampropertiesdialog.h
${QET_DIR}/sources/ui/diagrampropertieseditordockwidget.cpp
${QET_DIR}/sources/ui/diagrampropertieseditordockwidget.h
${QET_DIR}/sources/ui/diagramselection.cpp
${QET_DIR}/sources/ui/diagramselection.h
${QET_DIR}/sources/ui/dialogwaiting.cpp
${QET_DIR}/sources/ui/dialogwaiting.h
${QET_DIR}/sources/ui/dynamicelementtextitemeditor.cpp
${QET_DIR}/sources/ui/dynamicelementtextitemeditor.h
${QET_DIR}/sources/ui/dynamicelementtextmodel.cpp
${QET_DIR}/sources/ui/dynamicelementtextmodel.h
${QET_DIR}/sources/ui/elementinfopartwidget.cpp
${QET_DIR}/sources/ui/elementinfopartwidget.h
${QET_DIR}/sources/ui/elementinfowidget.cpp
${QET_DIR}/sources/ui/elementinfowidget.h
${QET_DIR}/sources/ui/elementpropertieswidget.cpp
${QET_DIR}/sources/ui/elementpropertieswidget.h
${QET_DIR}/sources/ui/formulaassistantdialog.cpp
${QET_DIR}/sources/ui/formulaassistantdialog.h
${QET_DIR}/sources/ui/imagepropertieswidget.cpp
${QET_DIR}/sources/ui/imagepropertieswidget.h
${QET_DIR}/sources/ui/importelementdialog.cpp
${QET_DIR}/sources/ui/importelementdialog.h
${QET_DIR}/sources/ui/importelementtextpatterndialog.cpp
${QET_DIR}/sources/ui/importelementtextpatterndialog.h
${QET_DIR}/sources/ui/inditextpropertieswidget.cpp
${QET_DIR}/sources/ui/inditextpropertieswidget.h
${QET_DIR}/sources/ui/linksingleelementwidget.cpp
${QET_DIR}/sources/ui/linksingleelementwidget.h
${QET_DIR}/sources/ui/marginseditdialog.cpp
${QET_DIR}/sources/ui/marginseditdialog.h
${QET_DIR}/sources/ui/masterpropertieswidget.cpp
${QET_DIR}/sources/ui/masterpropertieswidget.h
${QET_DIR}/sources/ui/multipastedialog.cpp
${QET_DIR}/sources/ui/multipastedialog.h
${QET_DIR}/sources/ui/potentialselectordialog.cpp
${QET_DIR}/sources/ui/potentialselectordialog.h
${QET_DIR}/sources/ui/projectpropertiesdialog.cpp
${QET_DIR}/sources/ui/projectpropertiesdialog.h
${QET_DIR}/sources/ui/reportpropertiewidget.cpp
${QET_DIR}/sources/ui/reportpropertiewidget.h
${QET_DIR}/sources/ui/shapegraphicsitempropertieswidget.cpp
${QET_DIR}/sources/ui/shapegraphicsitempropertieswidget.h
${QET_DIR}/sources/ui/titleblockpropertieswidget.cpp
${QET_DIR}/sources/ui/titleblockpropertieswidget.h
${QET_DIR}/sources/ui/xrefpropertieswidget.cpp
${QET_DIR}/sources/ui/xrefpropertieswidget.h
${QET_DIR}/sources/ui/configpage/generalconfigurationpage.cpp
${QET_DIR}/sources/ui/configpage/generalconfigurationpage.h
${QET_DIR}/sources/undocommand/addelementtextcommand.cpp
${QET_DIR}/sources/undocommand/addelementtextcommand.h
${QET_DIR}/sources/undocommand/addgraphicsobjectcommand.cpp
${QET_DIR}/sources/undocommand/addgraphicsobjectcommand.h
${QET_DIR}/sources/undocommand/changeelementinformationcommand.cpp
${QET_DIR}/sources/undocommand/changeelementinformationcommand.h
${QET_DIR}/sources/undocommand/changetitleblockcommand.cpp
${QET_DIR}/sources/undocommand/changetitleblockcommand.h
${QET_DIR}/sources/undocommand/deleteqgraphicsitemcommand.cpp
${QET_DIR}/sources/undocommand/deleteqgraphicsitemcommand.h
${QET_DIR}/sources/undocommand/itemmodelcommand.cpp
${QET_DIR}/sources/undocommand/itemmodelcommand.h
${QET_DIR}/sources/undocommand/linkelementcommand.cpp
${QET_DIR}/sources/undocommand/linkelementcommand.h
${QET_DIR}/sources/undocommand/rotateselectioncommand.cpp
${QET_DIR}/sources/undocommand/rotateselectioncommand.h
${QET_DIR}/sources/undocommand/rotatetextscommand.cpp
${QET_DIR}/sources/undocommand/rotatetextscommand.h
${QET_DIR}/sources/utils/conductorcreator.cpp
${QET_DIR}/sources/utils/conductorcreator.h
${QET_DIR}/sources/utils/macosxopenevent.cpp
${QET_DIR}/sources/utils/macosxopenevent.h
${QET_DIR}/sources/utils/qetutils.cpp
${QET_DIR}/sources/utils/qetutils.h
)
set(TS_FILES
${QET_DIR}/lang/qet_ca.ts
${QET_DIR}/lang/qet_de.ts
${QET_DIR}/lang/qet_es.ts
${QET_DIR}/lang/qet_fr.ts
${QET_DIR}/lang/qet_it.ts
${QET_DIR}/lang/qet_mn.ts
${QET_DIR}/lang/qet_pt_br.ts
${QET_DIR}/lang/qet_ru.ts
${QET_DIR}/lang/qet_sr.ts
${QET_DIR}/lang/qet_zh.ts
${QET_DIR}/lang/qet_be.ts
${QET_DIR}/lang/qet_da.ts
${QET_DIR}/lang/qet_en.ts
${QET_DIR}/lang/qet_fi.ts
${QET_DIR}/lang/qet_hu.ts
${QET_DIR}/lang/qet_nl.ts
${QET_DIR}/lang/qet_pl.ts
${QET_DIR}/lang/qet_ro.ts
${QET_DIR}/lang/qet_sk.ts
${QET_DIR}/lang/qet_ar.ts
${QET_DIR}/lang/qet_cs.ts
${QET_DIR}/lang/qet_el.ts
${QET_DIR}/lang/qet_hr.ts
${QET_DIR}/lang/qet_ja.ts
${QET_DIR}/lang/qet_nb.ts
${QET_DIR}/lang/qet_no.ts
${QET_DIR}/lang/qet_pt.ts
${QET_DIR}/lang/qet_sl.ts
${QET_DIR}/lang/qet_tr.ts
)
+29
View File
@@ -0,0 +1,29 @@
# Copyright 2006 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/>.
message(" - start_options")
# Comment the line below to deactivate the --common-elements-dir option
add_definitions(-DQET_ALLOW_OVERRIDE_CED_OPTION)
# Comment the line below to disable the --common-tbt-dir option
add_definitions(-DQET_ALLOW_OVERRIDE_CTBTD_OPTION)
# Comment the line below to deactivate the --config-dir option
add_definitions(-DQET_ALLOW_OVERRIDE_CD_OPTION)
#comment the line below to disable the project database export
#add_definitions(-DQET_EXPORT_PROJECT_DB) #error Todo
@@ -1,24 +1,28 @@
<definition width="70" version="0.3" hotspot_x="49" hotspot_y="15" height="30" type="element" ic="true" orientation="dyyy" <definition height="20" version="0.80" width="30" hotspot_x="8" link_type="previous_report" hotspot_y="10" type="element">
link_type="previous_report"> <uuid uuid="{994d5b97-25b5-49aa-93ae-c1857ab866ea}"/>
<uuid uuid="{F549BEFB-F0CF-44ED-A948-F6F796BFB421}"/><names> <names>
<name lang="ru">Предыдущая страница</name>
<name lang="ar">الصفحة السابقة</name> <name lang="ar">الصفحة السابقة</name>
<name lang="ru">Предыдущая страница</name>
<name lang="es">folio anterior</name>
<name lang="it">Foglio precedente</name>
<name lang="de">Vorherige Folie</name> <name lang="de">Vorherige Folie</name>
<name lang="el">Προηγούμενη σελίδα</name> <name lang="el">Προηγούμενη σελίδα</name>
<name lang="en">Coming arrow</name> <name lang="en">Coming arrow</name>
<name lang="it">Foglio precedente</name> <name lang="cs">Předchozí list</name>
<name lang="fr">Folio précédent</name> <name lang="fr">Folio précédent</name>
<name lang="pl">Wejście adresowe</name> <name lang="pl">Wejście adresowe</name>
<name lang="es">folio anterior</name> <name lang="hu">Beérkező hivatkozás</name>
<name lang="cs">Předchozí list</name>
<name lang="nl">Referentie Vorig</name> <name lang="nl">Referentie Vorig</name>
</names> </names>
<informations>Author: The QElectroTech team <informations>Author: The QElectroTech team&#xd;
License: see http://qelectrotech.org/wiki/doc/elements_license</informations> License: see http://qelectrotech.org/wiki/doc/elements_license</informations>
<description> <description>
<polygon x4="-1" antialias="true" style="line-style:normal;line-weight:normal;filling:black;color:black" closed="false" y1="-4" x1="-1" y2="4" x2="-1" y3="0" x3="9" y4="-4"/> <polygon x2="-1" y2="4" y4="-4" x1="-1" x3="9" y3="0" closed="false" style="line-style:normal;line-weight:normal;filling:black;color:black" y1="-4" x4="-1" antialias="true"/>
<line length1="1.5" length2="1.5" antialias="false" end1="none" end2="none" style="line-style:normal;line-weight:normal;filling:none;color:black" y1="0" x1="9" y2="0" x2="12"/> <line length2="1.5" x2="12" end2="none" y2="0" length1="1.5" x1="9" style="line-style:normal;line-weight:normal;filling:none;color:black" y1="0" end1="none" antialias="false"/>
<input x="-44" y="0" size="9" rotate="true" text="/"/> <dynamic_text x="-44" rotation="0" uuid="{8ec41ce2-36d6-4fe3-b299-c8a48cb2182c}" Halignment="AlignLeft" font="Sans Serif,9,-1,5,50,0,0,0,0,0" text_from="ElementInfo" y="-11.5" Valignment="AlignTop" z="3" frame="false" text_width="-1">
<terminal x="13" y="0" nameHidden="0" number="" name="" orientation="e"/> <text></text>
<info_name>label</info_name>
</dynamic_text>
<terminal x="13" uuid="{d7fd0bec-9f05-4651-a50b-29d7ffabeb41}" name="" y="0" orientation="e"/>
</description> </description>
</definition> </definition>
@@ -1,24 +1,28 @@
<definition width="40" version="0.3" hotspot_x="18" hotspot_y="15" height="30" type="element" ic="true" <definition hotspot_x="21" hotspot_y="10" version="0.80" type="element" height="20" link_type="next_report" width="30">
link_type="next_report"> <uuid uuid="{2e596a05-ef45-4895-b826-942d28c2d038}"/>
<uuid uuid="{717352A1-F3C7-49C7-9A06-51620AB5CA00}"/><names> <names>
<name lang="ru">Следующая страница</name>
<name lang="ar">الصفحة التالية</name>
<name lang="de">Nächste Folie</name> <name lang="de">Nächste Folie</name>
<name lang="ar">الصفحة التالية</name>
<name lang="fr">Folio suivant</name>
<name lang="hu">Elmenő hivatkozás</name>
<name lang="it">Foglio successivo</name>
<name lang="el">Επόμενη σελίδα</name> <name lang="el">Επόμενη σελίδα</name>
<name lang="en">Going arrow</name> <name lang="en">Going arrow</name>
<name lang="it">Foglio successivo</name>
<name lang="fr">Folio suivant</name>
<name lang="pl">Wyjście adresowe</name>
<name lang="es">Folio siguiente</name> <name lang="es">Folio siguiente</name>
<name lang="cs">Další list</name>
<name lang="nl">Referentie volgend</name> <name lang="nl">Referentie volgend</name>
<name lang="pl">Wyjście adresowe</name>
<name lang="ru">Следующая страница</name>
<name lang="cs">Další list</name>
</names> </names>
<informations>Author: The QElectroTech team <informations>Author: The QElectroTech team&#xd;
License: see http://qelectrotech.org/wiki/doc/elements_license</informations> License: see http://qelectrotech.org/wiki/doc/elements_license</informations>
<description> <description>
<polygon x4="-9" antialias="true" style="line-style:normal;line-weight:normal;filling:black;color:black" closed="false" y1="-4" x1="-9" y2="4" x2="-9" y3="0" x3="2" y4="-4"/> <polygon y3="0" y2="4" x4="-9" x3="2" x1="-9" x2="-9" y4="-4" style="line-style:normal;line-weight:normal;filling:black;color:black" y1="-4" closed="false" antialias="true"/>
<line length1="1.5" length2="1.5" antialias="false" end1="none" end2="none" style="line-style:normal;line-weight:normal;filling:none;color:black" y1="0" x1="-9" y2="0" x2="-12"/> <line y2="0" x1="-9" x2="-12" length1="1.5" end2="none" style="line-style:normal;line-weight:normal;filling:none;color:black" y1="0" end1="none" length2="1.5" antialias="false"/>
<input x="6" y="0" size="9" rotate="true" text="/"/> <dynamic_text Valignment="AlignTop" Halignment="AlignLeft" rotation="0" font="Sans Serif,9,-1,5,50,0,0,0,0,0" uuid="{93888a84-3ffd-438d-acef-5396acba0750}" text_width="-1" x="6" frame="false" z="3" y="-11.5" text_from="ElementInfo">
<terminal x="-13" y="0" nameHidden="0" number="" name="" orientation="w"/> <text></text>
<info_name>label</info_name>
</dynamic_text>
<terminal uuid="{975add6f-4ba5-44af-a4c0-e1f1c2024601}" name="" x="-13" orientation="w" y="0"/>
</description> </description>
</definition> </definition>
@@ -2,16 +2,18 @@
<names> <names>
<name lang="ru">Точки разрыва</name> <name lang="ru">Точки разрыва</name>
<name lang="ar">إحالات</name> <name lang="ar">إحالات</name>
<name lang="cs">Výstupy</name> <name lang="cs">Odkazování listů</name>
<name lang="de">Folienverweise</name> <name lang="de">Folienverweise</name>
<name lang="el">Αναφορές σελίδας</name> <name lang="el">Αναφορές σελίδας</name>
<name lang="en">Folio referencing</name> <name lang="en">Folio referencing</name>
<name lang="fr">Reports de folio</name> <name lang="fr">Reports de folio</name>
<name lang="it">Riferimenti</name> <name lang="it">Riferimenti</name>
<name lang="pl">Odsyłacze</name> <name lang="pl">Odsyłacze</name>
<name lang="pt_br">Referências</name>
<name lang="es">Referencias</name> <name lang="es">Referencias</name>
<name lang="nl">Referenties</name> <name lang="nl">Referenties</name>
<name lang="da">Ark henvisninger</name> <name lang="da">Ark henvisninger</name>
<name lang="ja">フォリオ参照</name> <name lang="ja">フォリオ参照</name>
<name lang="hu">Tervlap hivatkozások</name>
</names> </names>
</qet-directory> </qet-directory>
@@ -11,7 +11,8 @@
<name lang="ru">Трёхполюсный + PEN</name> <name lang="ru">Трёхполюсный + PEN</name>
<name lang="fr">Source tripolaire + PEN</name> <name lang="fr">Source tripolaire + PEN</name>
<name lang="ar">مصدر ثلاثي القطبيّة + PEN</name> <name lang="ar">مصدر ثلاثي القطبيّة + PEN</name>
<name lang="cs">3 fáze + PEN pravý</name> <name lang="cs">Přípojnice 3f+PEN pravá</name>
<name lang="hu">3F + PEN</name>
</names> </names>
<elementInformations/> <elementInformations/>
<informations>Author: The QElectroTech team <informations>Author: The QElectroTech team
@@ -1,7 +1,7 @@
<definition type="element" height="100" hotspot_y="40" version="0.70" width="40" hotspot_x="20" link_type="simple"> <definition type="element" height="100" hotspot_y="40" version="0.70" width="40" hotspot_x="20" link_type="simple">
<uuid uuid="{b4b70d3d-8784-4323-b17b-d8ff3677cdc1}"/> <uuid uuid="{b4b70d3d-8784-4323-b17b-d8ff3677cdc1}"/>
<names> <names>
<name lang="en">Three-pole source + PEN</name> <name lang="en">Three-pole source + N + PE</name>
<name lang="el">Τριφασικό + PEN</name> <name lang="el">Τριφασικό + PEN</name>
<name lang="es">Fuente tripolar + PEN</name> <name lang="es">Fuente tripolar + PEN</name>
<name lang="nl">driefasen + aardenul</name> <name lang="nl">driefasen + aardenul</name>
@@ -11,7 +11,8 @@
<name lang="ru">Трёхполюсный + PEN</name> <name lang="ru">Трёхполюсный + PEN</name>
<name lang="fr">Source tripolaire + PEN</name> <name lang="fr">Source tripolaire + PEN</name>
<name lang="ar">مصدر ثلاثي القطبيّة + PEN</name> <name lang="ar">مصدر ثلاثي القطبيّة + PEN</name>
<name lang="cs">3 fáze + N+PE pravý</name> <name lang="cs">Přípojnice 3f+N+PE pravá</name>
<name lang="hu">3F + N + PE</name>
</names> </names>
<elementInformations/> <elementInformations/>
<informations>Author: The QElectroTech team <informations>Author: The QElectroTech team
@@ -14,6 +14,7 @@
<name lang="es">Masa</name> <name lang="es">Masa</name>
<name lang="ar">هيكل معدني</name> <name lang="ar">هيكل معدني</name>
<name lang="fr">Masse</name> <name lang="fr">Masse</name>
<name lang="hu">Test</name>
</names> </names>
<elementInformations> <elementInformations>
<elementInformation name="comment" show="1"></elementInformation> <elementInformation name="comment" show="1"></elementInformation>
@@ -13,6 +13,7 @@
<name lang="en">Chassis</name> <name lang="en">Chassis</name>
<name lang="fr">Masse</name> <name lang="fr">Masse</name>
<name lang="ru">Шасси</name> <name lang="ru">Шасси</name>
<name lang="hu">Vázszerkezet</name>
</names> </names>
<informations>Author: The QElectroTech team <informations>Author: The QElectroTech team
License: see http://qelectrotech.org/wiki/doc/elements_license</informations> License: see http://qelectrotech.org/wiki/doc/elements_license</informations>
@@ -5,12 +5,14 @@
<name lang="fr">Sources réseau</name> <name lang="fr">Sources réseau</name>
<name lang="it">Alimentazione da rete</name> <name lang="it">Alimentazione da rete</name>
<name lang="pl">Sieć elektroenergetyczna</name> <name lang="pl">Sieć elektroenergetyczna</name>
<name lang="pt_br">Alimentação</name>
<name lang="de">Netzquellen</name> <name lang="de">Netzquellen</name>
<name lang="el">Παροχές δικτύου</name> <name lang="el">Παροχές δικτύου</name>
<name lang="nl">Netvoedingen</name> <name lang="nl">Netvoedingen</name>
<name lang="cs">Síťové zdroje</name> <name lang="cs">Napájení</name>
<name lang="es">Fuentes de red</name> <name lang="es">Fuentes de red</name>
<name lang="da">Netværkskilder</name> <name lang="da">Netværkskilder</name>
<name lang="ja">電源網</name> <name lang="ja">電源網</name>
<name lang="hu">Hálózati források</name>
</names> </names>
</qet-directory> </qet-directory>
@@ -5,13 +5,14 @@
<name lang="nl">1 fase + aarde + nul</name> <name lang="nl">1 fase + aarde + nul</name>
<name lang="el">Μονοφασικό +N +PE</name> <name lang="el">Μονοφασικό +N +PE</name>
<name lang="de">Wechselstrom + PE +N</name> <name lang="de">Wechselstrom + PE +N</name>
<name lang="cs">1 fáze + PE +N</name> <name lang="cs">Přípojnice 1f+N+PE</name>
<name lang="pl">Linia jednofazowa (trójprzewodowa)</name> <name lang="pl">Linia jednofazowa (trójprzewodowa)</name>
<name lang="it">Sorgente unipolare + PE +N</name> <name lang="it">Sorgente unipolare + PE +N</name>
<name lang="ar">مصدر وحيد القطبية + أرضي PE + محايد N</name> <name lang="ar">مصدر وحيد القطبية + أرضي PE + محايد N</name>
<name lang="en">Single-pole source + PE +N</name> <name lang="en">Single-pole source + PE +N</name>
<name lang="fr">Source unipolaire + PE +N</name> <name lang="fr">Source unipolaire + PE +N</name>
<name lang="ru">Однополюсный + PE +N</name> <name lang="ru">Однополюсный + PE +N</name>
<name lang="hu">F + N + PE</name>
</names> </names>
<informations>Author: The QElectroTech team <informations>Author: The QElectroTech team
License: see http://qelectrotech.org/wiki/doc/elements_license</informations> License: see http://qelectrotech.org/wiki/doc/elements_license</informations>
@@ -5,13 +5,14 @@
<name lang="nl">1 fase + aardenul</name> <name lang="nl">1 fase + aardenul</name>
<name lang="el">Μονοφασικό +PEN</name> <name lang="el">Μονοφασικό +PEN</name>
<name lang="de">Wechselstrom + PEN</name> <name lang="de">Wechselstrom + PEN</name>
<name lang="cs">1 fáze + PEN</name> <name lang="cs">Přípojnice 1f+PEN</name>
<name lang="pl">Linia jednofazowa (TN-C)</name> <name lang="pl">Linia jednofazowa (TN-C)</name>
<name lang="it">Sorgente unipolare + PEN</name> <name lang="it">Sorgente unipolare + PEN</name>
<name lang="ar">مصدر وحيد القطبية +PEN</name> <name lang="ar">مصدر وحيد القطبية +PEN</name>
<name lang="en">Single-pole source +PEN</name> <name lang="en">Single-pole source +PEN</name>
<name lang="fr">Source unipolaire + PEN</name> <name lang="fr">Source unipolaire + PEN</name>
<name lang="ru">Однополюсный + PEN</name> <name lang="ru">Однополюсный + PEN</name>
<name lang="hu">F + PEN</name>
</names> </names>
<informations>Author: The QElectroTech team <informations>Author: The QElectroTech team
License: see http://qelectrotech.org/wiki/doc/elements_license</informations> License: see http://qelectrotech.org/wiki/doc/elements_license</informations>
@@ -6,13 +6,14 @@
<name lang="nl">Wisselspanning L + nul N</name> <name lang="nl">Wisselspanning L + nul N</name>
<name lang="el">Μονοφασικό + Ουδέτερος</name> <name lang="el">Μονοφασικό + Ουδέτερος</name>
<name lang="de">Wechselstrom L + N</name> <name lang="de">Wechselstrom L + N</name>
<name lang="cs">Jednopólový zdroj + nulový</name> <name lang="cs">Přípojnice 1f+N</name>
<name lang="pl">Linia jednofazowa (dwuprzewodowa)</name> <name lang="pl">Linia jednofazowa (dwuprzewodowa)</name>
<name lang="it">Sorgente unipolare + neutro</name> <name lang="it">Sorgente unipolare + neutro</name>
<name lang="ar">مصدر وحيد القطبية + محايد N</name> <name lang="ar">مصدر وحيد القطبية + محايد N</name>
<name lang="en">Single-pole source + neutral</name> <name lang="en">Single-pole source + neutral</name>
<name lang="fr">Source unipolaire + neutre</name> <name lang="fr">Source unipolaire + neutre</name>
<name lang="ru">Однополюсный + нейтраль</name> <name lang="ru">Однополюсный + нейтраль</name>
<name lang="hu">F + N</name>
</names> </names>
<informations>Author: The QElectroTech team&#xd; <informations>Author: The QElectroTech team&#xd;
License: see http://qelectrotech.org/wiki/doc/elements_license</informations> License: see http://qelectrotech.org/wiki/doc/elements_license</informations>
@@ -6,13 +6,14 @@
<name lang="nl">3fasen</name> <name lang="nl">3fasen</name>
<name lang="el">Τριφασικό</name> <name lang="el">Τριφασικό</name>
<name lang="de">Drehstrom</name> <name lang="de">Drehstrom</name>
<name lang="cs">Třípólový zdroj</name> <name lang="cs">Přípojnice 3f</name>
<name lang="pl">Linia trójfazowa (trójprzewodowa)</name> <name lang="pl">Linia trójfazowa (trójprzewodowa)</name>
<name lang="it">Sorgente tripolare</name> <name lang="it">Sorgente tripolare</name>
<name lang="ar">مصدر ثلاثي القطبيّة</name> <name lang="ar">مصدر ثلاثي القطبيّة</name>
<name lang="en">Three-pole source</name> <name lang="en">Three-pole source</name>
<name lang="fr">Source tripolaire</name> <name lang="fr">Source tripolaire</name>
<name lang="ru">Трёхполюсный</name> <name lang="ru">Трёхполюсный</name>
<name lang="hu">3F</name>
</names> </names>
<informations>Author: The QElectroTech team&#xd; <informations>Author: The QElectroTech team&#xd;
License: see http://qelectrotech.org/wiki/doc/elements_license</informations> License: see http://qelectrotech.org/wiki/doc/elements_license</informations>
@@ -5,13 +5,14 @@
<name lang="nl">driefase + aarde + nul</name> <name lang="nl">driefase + aarde + nul</name>
<name lang="el">Τριφασικό +N +PE</name> <name lang="el">Τριφασικό +N +PE</name>
<name lang="de">Drehstrom + PE +N</name> <name lang="de">Drehstrom + PE +N</name>
<name lang="cs">3 fáze + PE +N</name> <name lang="cs">Přípojnice 3f+N+PE</name>
<name lang="pl">Linia trójfazowa (pięcioprzewodowa)</name> <name lang="pl">Linia trójfazowa (pięcioprzewodowa)</name>
<name lang="it">Sorgente tripolare +PE + N</name> <name lang="it">Sorgente tripolare +PE + N</name>
<name lang="ar">مصدر ثلاثي القطبية + PE + N</name> <name lang="ar">مصدر ثلاثي القطبية + PE + N</name>
<name lang="en">Three-pole source + PE +N</name> <name lang="en">Three-pole source + PE +N</name>
<name lang="fr">Source tripolaire + PE +N</name> <name lang="fr">Source tripolaire + PE +N</name>
<name lang="ru">Трёхполюсный + PE +N</name> <name lang="ru">Трёхполюсный + PE +N</name>
<name lang="hu">3F + N + PE</name>
</names> </names>
<informations>Author: The QElectroTech team <informations>Author: The QElectroTech team
License: see http://qelectrotech.org/wiki/doc/elements_license</informations> License: see http://qelectrotech.org/wiki/doc/elements_license</informations>
@@ -5,13 +5,14 @@
<name lang="nl">driefasen + aardenul</name> <name lang="nl">driefasen + aardenul</name>
<name lang="el">Τριφασικό + PEN</name> <name lang="el">Τριφασικό + PEN</name>
<name lang="de">Drehstrom + PEN</name> <name lang="de">Drehstrom + PEN</name>
<name lang="cs">3 fáze + PEN</name> <name lang="cs">Přípojnice 3f+PEN</name>
<name lang="pl">Linia trójfazowa (PEN)</name> <name lang="pl">Linia trójfazowa (PEN)</name>
<name lang="it">Sorgente tripolare + PEN</name> <name lang="it">Sorgente tripolare + PEN</name>
<name lang="ar">مصدر ثلاثي القطبيّة + PEN</name> <name lang="ar">مصدر ثلاثي القطبيّة + PEN</name>
<name lang="en">Three-pole source + PEN</name> <name lang="en">Three-pole source + PEN</name>
<name lang="fr">Source tripolaire + PEN</name> <name lang="fr">Source tripolaire + PEN</name>
<name lang="ru">Трёхполюсный + PEN</name> <name lang="ru">Трёхполюсный + PEN</name>
<name lang="hu">3F + PEN</name>
</names> </names>
<informations>Author: The QElectroTech team <informations>Author: The QElectroTech team
License: see http://qelectrotech.org/wiki/doc/elements_license</informations> License: see http://qelectrotech.org/wiki/doc/elements_license</informations>
@@ -6,13 +6,14 @@
<name lang="nl">Driefasen + nul</name> <name lang="nl">Driefasen + nul</name>
<name lang="el">Τριφασικό + Ουδέτερος</name> <name lang="el">Τριφασικό + Ουδέτερος</name>
<name lang="de">Dreiphasig + Neutral</name> <name lang="de">Dreiphasig + Neutral</name>
<name lang="cs">Třípólový zdroj + nulový</name> <name lang="cs">Přípojnice 3f+N</name>
<name lang="pl">Linia trójfazowa (czteroprzewodowa)</name> <name lang="pl">Linia trójfazowa (czteroprzewodowa)</name>
<name lang="it">Sorgente tripolare + neutro</name> <name lang="it">Sorgente tripolare + neutro</name>
<name lang="ar">مصدر ثلاثي القطبيّة + محايد</name> <name lang="ar">مصدر ثلاثي القطبيّة + محايد</name>
<name lang="en">Three-pole source + neutral</name> <name lang="en">Three-pole source + neutral</name>
<name lang="fr">Source tripolaire + neutre</name> <name lang="fr">Source tripolaire + neutre</name>
<name lang="ru">Трёхполюсный + нейтраль</name> <name lang="ru">Трёхполюсный + нейтраль</name>
<name lang="hu">3F + N</name>
</names> </names>
<informations>Author: The QElectroTech team&#xd; <informations>Author: The QElectroTech team&#xd;
License: see http://qelectrotech.org/wiki/doc/elements_license</informations> License: see http://qelectrotech.org/wiki/doc/elements_license</informations>
@@ -6,13 +6,14 @@
<name lang="nl">Nul voeding</name> <name lang="nl">Nul voeding</name>
<name lang="el">Ουδέτερος</name> <name lang="el">Ουδέτερος</name>
<name lang="de">Neutralleiter</name> <name lang="de">Neutralleiter</name>
<name lang="cs">Nulový zdroj</name> <name lang="cs">Přípojnice N</name>
<name lang="pl">Przewód neutralny</name> <name lang="pl">Przewód neutralny</name>
<name lang="it">Sorgente neutro</name> <name lang="it">Sorgente neutro</name>
<name lang="ar">مصدر محايد</name> <name lang="ar">مصدر محايد</name>
<name lang="en">Neutral source</name> <name lang="en">Neutral source</name>
<name lang="fr">Source neutre</name> <name lang="fr">Source neutre</name>
<name lang="ru">Нейтраль</name> <name lang="ru">Нейтраль</name>
<name lang="hu">N</name>
</names> </names>
<informations>Author: The QElectroTech team <informations>Author: The QElectroTech team
License: see http://qelectrotech.org/wiki/doc/elements_license</informations> License: see http://qelectrotech.org/wiki/doc/elements_license</informations>
@@ -6,13 +6,14 @@
<name lang="nl">Fase</name> <name lang="nl">Fase</name>
<name lang="el">Φάση</name> <name lang="el">Φάση</name>
<name lang="de">Phase</name> <name lang="de">Phase</name>
<name lang="cs">Fázový zdroj</name> <name lang="cs">Přípojnice L</name>
<name lang="pl">Przewód liniowy</name> <name lang="pl">Przewód liniowy</name>
<name lang="it">Sorgente fase</name> <name lang="it">Sorgente fase</name>
<name lang="ar">مصدر وجه</name> <name lang="ar">مصدر وجه</name>
<name lang="en">Phase source</name> <name lang="en">Phase source</name>
<name lang="fr">Source phase</name> <name lang="fr">Source phase</name>
<name lang="ru">Фаза</name> <name lang="ru">Фаза</name>
<name lang="hu">F</name>
</names> </names>
<informations>Author: The QElectroTech team&#xd; <informations>Author: The QElectroTech team&#xd;
License: see http://qelectrotech.org/wiki/doc/elements_license</informations> License: see http://qelectrotech.org/wiki/doc/elements_license</informations>
@@ -11,6 +11,7 @@
<name lang="en">Distribution point TN-C >TN-S</name> <name lang="en">Distribution point TN-C >TN-S</name>
<name lang="fr">Point de distribution TN-C >TN-S</name> <name lang="fr">Point de distribution TN-C >TN-S</name>
<name lang="ru">Распределительный пункт TN-C >TN-S</name> <name lang="ru">Распределительный пункт TN-C >TN-S</name>
<name lang="hu">3F + PEN szétválasztva TN-C-ről TN-S-re</name>
</names> </names>
<informations>Author: The QElectroTech team <informations>Author: The QElectroTech team
License: see http://qelectrotech.org/wiki/doc/elements_license</informations> License: see http://qelectrotech.org/wiki/doc/elements_license</informations>
@@ -2,7 +2,7 @@
<uuid uuid="{e4e753a8-9fde-4e8e-9256-0cf99d67e3de}"/> <uuid uuid="{e4e753a8-9fde-4e8e-9256-0cf99d67e3de}"/>
<names> <names>
<name lang="pt">Terra</name> <name lang="pt">Terra</name>
<name lang="cs">Země</name> <name lang="cs">Uzemnění</name>
<name lang="it">Terra</name> <name lang="it">Terra</name>
<name lang="el">Γείωση</name> <name lang="el">Γείωση</name>
<name lang="nl">Aarde</name> <name lang="nl">Aarde</name>
@@ -13,6 +13,7 @@
<name lang="es">Tierra</name> <name lang="es">Tierra</name>
<name lang="ar">تأريض</name> <name lang="ar">تأريض</name>
<name lang="fr">Terre</name> <name lang="fr">Terre</name>
<name lang="hu">Földelő</name>
</names> </names>
<elementInformations> <elementInformations>
<elementInformation name="comment" show="1"></elementInformation> <elementInformation name="comment" show="1"></elementInformation>
@@ -2,6 +2,8 @@
<uuid uuid="{079913f8-18b5-4524-84bd-aadf75dfefbf}"/> <uuid uuid="{079913f8-18b5-4524-84bd-aadf75dfefbf}"/>
<names> <names>
<name lang="cs">Bod</name> <name lang="cs">Bod</name>
<name lang="de">Verbindung</name>
<name lang="hu">Keresztezés pont alakzatban</name>
</names> </names>
<informations></informations> <informations></informations>
<description> <description>
@@ -2,6 +2,7 @@
<uuid uuid="{141e7e1e-4f7f-456d-9f04-52c32109b969}"/> <uuid uuid="{141e7e1e-4f7f-456d-9f04-52c32109b969}"/>
<names> <names>
<name lang="en">Combine</name> <name lang="en">Combine</name>
<name lang="de">Klemmstelle (2)</name>
<name lang="fr">Jonction</name> <name lang="fr">Jonction</name>
<name lang="es">Unión</name> <name lang="es">Unión</name>
<name lang="it">Collegamento</name> <name lang="it">Collegamento</name>
@@ -9,6 +10,7 @@
<name lang="ar">وصلة</name> <name lang="ar">وصلة</name>
<name lang="ru">Соединение</name> <name lang="ru">Соединение</name>
<name lang="cs">Spoj</name> <name lang="cs">Spoj</name>
<name lang="hu">Egyesítő három vezetékhez</name>
</names> </names>
<elementInformations/> <elementInformations/>
<informations></informations> <informations></informations>
@@ -1,22 +1,25 @@
<definition hotspot_y="7" width="20" type="element" height="20" version="0.70" hotspot_x="11" link_type="terminal"> <definition link_type="terminal" width="20" height="20" hotspot_y="7" type="element" version="0.80" hotspot_x="11">
<uuid uuid="{2d505b61-db0f-4784-9b9c-189366058272}"/> <uuid uuid="{95725a69-d9bf-4186-938c-1f1b9256530b}"/>
<names> <names>
<name lang="es">Esquina</name> <name lang="it">Angolo</name>
<name lang="en">Corner</name>
<name lang="cs">Roh</name>
<name lang="fr">Coin</name> <name lang="fr">Coin</name>
<name lang="ru">Угол</name>
<name lang="pl">Narożnik</name> <name lang="pl">Narożnik</name>
<name lang="ar">ركن</name> <name lang="ar">ركن</name>
<name lang="it">Angolo</name> <name lang="es">Esquina</name>
<name lang="ru">Угол</name>
<name lang="en">Corner</name>
<name lang="de">Ecke</name>
<name lang="cs">Roh</name>
<name lang="hu">Sarok</name>
</names> </names>
<elementInformations/> <elementInformations/>
<informations></informations> <informations></informations>
<description> <description>
<dynamic_text rotation="0" x="-0.5" y="-5.45" uuid="{9b8dd22d-096a-4989-b6f7-1de9e0339f53}" font_size="1" z="1" frame="false" text_from="UserText" text_width="-1"> <dynamic_text rotation="0" font="Sans Serif,9,-1,5,0,0,0,0,0,0,normal" text_width="-1" x="-0.5" z="1" Halignment="AlignLeft" Valignment="AlignTop" text_from="UserText" frame="false" y="-5.45" uuid="{9b8dd22d-096a-4989-b6f7-1de9e0339f53}">
<text>_</text> <text>_</text>
</dynamic_text> </dynamic_text>
<terminal x="0" y="4" orientation="s"/> <polygon style="line-style:normal;line-weight:normal;filling:none;color:black" x1="-4" y2="0" y1="0" antialias="false" x2="0" x3="0" y3="4" closed="false"/>
<terminal x="-4" y="0" orientation="w"/> <terminal name="" orientation="w" x="-4" y="0" uuid="{e1ea331a-7456-47f0-b991-0a2299d3023c}"/>
<terminal name="" orientation="s" x="0" y="4" uuid="{eacfd29f-4682-41c2-9783-cedb80773f13}"/>
</description> </description>
</definition> </definition>
@@ -1,25 +1,29 @@
<definition height="20" link_type="terminal" hotspot_x="9" width="20" hotspot_y="9" version="0.70" type="element"> <definition hotspot_y="9" link_type="terminal" height="20" hotspot_x="9" version="0.80" type="element" width="20">
<uuid uuid="{8c0d3e9c-dc37-41d7-bfd5-fe4dbf8dc4fb}"/> <uuid uuid="{30794dcd-a269-4b6b-8231-c88d89a91e27}"/>
<names> <names>
<name lang="ru">Пересечение</name>
<name lang="cs">Kříž</name> <name lang="cs">Kříž</name>
<name lang="pl">Połączenie 2</name>
<name lang="it">Croce</name>
<name lang="es">Cruzar</name>
<name lang="en">Cross</name>
<name lang="ar">صليب</name> <name lang="ar">صليب</name>
<name lang="hu">Kereszt alakú</name>
<name lang="it">Croce</name>
<name lang="pl">Połączenie 2</name>
<name lang="ru">Пересечение</name>
<name lang="fr">Croix</name> <name lang="fr">Croix</name>
<name lang="de">Kreuz</name>
<name lang="en">Cross</name>
<name lang="es">Cruzar</name>
</names> </names>
<elementInformations/> <elementInformations/>
<informations></informations> <informations></informations>
<description> <description>
<circle y="-1" style="line-style:normal;line-weight:normal;filling:black;color:black" x="-1" antialias="true" diameter="2"/> <circle y="-1" x="-1" antialias="true" diameter="2" style="line-style:normal;line-weight:normal;filling:black;color:black"/>
<dynamic_text uuid="{fc5c039b-1fca-40d9-a6ff-a9e1775de38b}" text_width="-1" frame="false" y="-9.45" font_size="1" x="-0.5" z="2" rotation="0" text_from="UserText"> <dynamic_text y="-9.45" text_width="-1" x="-0.5" text_from="UserText" Valignment="AlignTop" rotation="0" Halignment="AlignLeft" z="2" frame="false" font="Sans Serif,9,-1,5,0,0,0,0,0,0,normal" uuid="{fc5c039b-1fca-40d9-a6ff-a9e1775de38b}">
<text>_</text> <text>_</text>
</dynamic_text> </dynamic_text>
<terminal y="0" orientation="e" x="4"/> <line y1="0" y2="0" x1="-4" antialias="false" end1="none" length1="1.5" length2="1.5" x2="4" end2="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<terminal y="4" orientation="s" x="0"/> <line y1="-4" y2="4" x1="0" antialias="false" end1="none" length1="1.5" length2="1.5" x2="0" end2="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<terminal y="-4" orientation="n" x="0"/> <terminal y="-4" name="" x="0" orientation="n" uuid="{667d83d2-8840-40ec-bf41-8dc659926fe2}"/>
<terminal y="0" orientation="w" x="-4"/> <terminal y="4" name="" x="0" orientation="s" uuid="{c9b40e74-5d24-4cd5-9dc7-3be318007661}"/>
<terminal y="0" name="" x="-4" orientation="w" uuid="{935e3f1e-3dc0-4b41-8252-6e7ee9f1a3e1}"/>
<terminal y="0" name="" x="4" orientation="e" uuid="{340c983a-1f7e-4939-b844-c50c8e28302d}"/>
</description> </description>
</definition> </definition>
@@ -2,6 +2,7 @@
<uuid uuid="{b5abb4c2-455d-45ff-95f2-328521f4e2e1}"/> <uuid uuid="{b5abb4c2-455d-45ff-95f2-328521f4e2e1}"/>
<names> <names>
<name lang="en">Jump</name> <name lang="en">Jump</name>
<name lang="de">Sprung</name>
<name lang="fr">Saut</name> <name lang="fr">Saut</name>
<name lang="ar">قفز</name> <name lang="ar">قفز</name>
<name lang="cs">Skok</name> <name lang="cs">Skok</name>
@@ -9,6 +10,7 @@
<name lang="pl">Brak połączenia</name> <name lang="pl">Brak połączenia</name>
<name lang="ru">Перемычка</name> <name lang="ru">Перемычка</name>
<name lang="es">Puente</name> <name lang="es">Puente</name>
<name lang="hu">Átugrás összekötés nélkül</name>
</names> </names>
<elementInformations/> <elementInformations/>
<informations></informations> <informations></informations>
@@ -1,19 +1,22 @@
<definition version="0.70" height="30" type="element" width="30" hotspot_x="14" link_type="simple" hotspot_y="12"> <definition hotspot_x="14" height="30" link_type="simple" width="30" version="0.80" type="element" hotspot_y="12">
<uuid uuid="{3015326e-2599-495e-8ef0-c12ff5313dd0}"/> <uuid uuid="{0b6817fe-dd44-42a8-8e7c-3c110d13b8a2}"/>
<names> <names>
<name lang="hu">Egyesítő négy vezetékhez</name>
<name lang="de">Klemmstelle (3)</name>
<name lang="cs">Všestranný spoj</name> <name lang="cs">Všestranný spoj</name>
</names> </names>
<elementInformations/> <elementInformations/>
<informations></informations> <informations></informations>
<description> <description>
<polygon x6="6" x2="-5" x8="6" y5="5" y2="0" closed="false" x10="0" x3="0" x7="10" y7="0" y4="10" y11="-5" antialias="false" x9="0" x11="0" style="line-style:normal;line-weight:normal;filling:none;color:black" x5="0" y9="5" y10="-5" y1="0" y6="0" x4="0" x1="-10" y8="0" y3="5"/> <dynamic_text Valignment="AlignTop" x="-13" text_from="ElementInfo" text_width="-1" z="2" uuid="{14c0b70c-c028-49ef-bf72-3c3c9cd64669}" y="-12" rotation="0" frame="false" Halignment="AlignLeft" font="Sans Serif,9,-1,5,50,0,0,0,0,0">
<dynamic_text font="Sans Serif,9,-1,5,50,0,0,0,0,0" frame="false" x="-13" text_from="ElementInfo" y="-12" z="2" rotation="0" Valignment="AlignTop" text_width="-1" uuid="{14c0b70c-c028-49ef-bf72-3c3c9cd64669}" Halignment="AlignLeft">
<text></text> <text></text>
<info_name>label</info_name> <info_name>label</info_name>
</dynamic_text> </dynamic_text>
<terminal x="0" y="-5" orientation="n"/> <polygon x1="-10" y5="0" x3="0" x5="10" y2="0" y3="5" closed="false" style="line-style:normal;line-weight:normal;filling:none;color:black" x4="5" x2="-5" antialias="false" y4="0" y1="0"/>
<terminal x="0" y="10" orientation="s"/> <line x1="0" end1="none" y2="10" style="line-style:normal;line-weight:normal;filling:none;color:black" x2="0" length1="1.5" antialias="false" end2="none" y1="-5" length2="1.5"/>
<terminal x="-10" y="0" orientation="w"/> <terminal x="10" orientation="e" uuid="{06bf5c9f-6986-45bf-b11f-02e876abc4b8}" y="0" name=""/>
<terminal x="10" y="0" orientation="e"/> <terminal x="0" orientation="n" uuid="{33c03677-8555-4b42-ae2c-4b4308978086}" y="-5" name=""/>
<terminal x="-10" orientation="w" uuid="{95bef6e9-343e-45d7-9705-4aa81f62bed0}" y="0" name=""/>
<terminal x="0" orientation="s" uuid="{e9329e22-255b-4763-9dc6-65da277e1ac7}" y="10" name=""/>
</description> </description>
</definition> </definition>
@@ -1,17 +0,0 @@
<definition type="element" hotspot_x="35" version="0.80" width="70" height="80" hotspot_y="46" link_type="simple">
<uuid uuid="{e5a46987-e259-4ca4-9e40-eedc3652f738}"/>
<names>
<name lang="cs">Pokus</name>
</names>
<elementInformations/>
<informations></informations>
<description>
<rect width="60" x="-30" style="line-style:normal;line-weight:normal;filling:none;color:black" height="65" rx="0" y="-35" antialias="false" ry="0"/>
<dynamic_text z="3" font="Sans Serif,9,-1,5,0,0,0,0,0,0,normal" Valignment="AlignTop" uuid="{cec75afa-b854-41b8-aed8-6edba82c76ff}" text_from="ElementInfo" x="-45" text_width="-1" y="-20" frame="false" rotation="0" Halignment="AlignLeft">
<text></text>
<info_name>label</info_name>
</dynamic_text>
<terminal orientation="n" x="20" y="-40"/>
<terminal orientation="n" x="-20" y="-40"/>
</description>
</definition>
@@ -6,11 +6,13 @@
<name lang="fr">Connections</name> <name lang="fr">Connections</name>
<name lang="it">Collegamenti</name> <name lang="it">Collegamenti</name>
<name lang="pl">Połączenia</name> <name lang="pl">Połączenia</name>
<name lang="pt_br">Conexões</name>
<name lang="cs">Spojení</name> <name lang="cs">Spojení</name>
<name lang="el">Ενώσεις</name> <name lang="el">Ενώσεις</name>
<name lang="nl">Verbindingen</name> <name lang="nl">Verbindingen</name>
<name lang="es">Conexiones</name> <name lang="es">Conexiones</name>
<name lang="da">Forbindelser</name> <name lang="da">Forbindelser</name>
<name lang="ja">接続</name> <name lang="ja">接続</name>
<name lang="hu">Csatlakozások</name>
</names> </names>
</qet-directory> </qet-directory>
@@ -1,25 +1,26 @@
<definition type="element" height="20" width="30" version="0.70" hotspot_y="4" link_type="terminal" hotspot_x="17"> <definition width="30" version="0.80" hotspot_x="17" hotspot_y="4" link_type="terminal" type="element" height="20">
<uuid uuid="{709e6400-adc2-4faf-ba46-aa513d1dcaf1}"/> <uuid uuid="{5a3d6c01-db95-45ec-be2c-dd861938525b}"/>
<names> <names>
<name lang="fr">Epissure</name> <name lang="fr">Epissure</name>
<name lang="pl">Połączenie 3</name>
<name lang="cs">Spojka</name> <name lang="cs">Spojka</name>
<name lang="en">Splice</name>
<name lang="it">Spaziatura</name>
<name lang="ru">Сращивание</name>
<name lang="es">Empalme</name> <name lang="es">Empalme</name>
<name lang="pl">Połączenie 3</name>
<name lang="it">Spaziatura</name>
<name lang="en">Splice</name>
<name lang="de">Spleiß</name>
<name lang="hu">Egyesítő három vezetékhez</name>
<name lang="ru">Сращивание</name>
</names> </names>
<elementInformations/> <elementInformations/>
<informations></informations> <informations></informations>
<description> <description>
<dynamic_text text_width="-1" x="1.5" rotation="0" frame="false" uuid="{b653b162-d4c8-4660-a5ca-e6ca05a56de9}" font_size="1" z="1" text_from="ElementInfo" y="-1.45"> <dynamic_text Valignment="AlignTop" y="-1.45" text_width="-1" frame="false" x="1.5" Halignment="AlignLeft" uuid="{b653b162-d4c8-4660-a5ca-e6ca05a56de9}" text_from="ElementInfo" font="Sans Serif,9,-1,5,0,0,0,0,0,0,normal" rotation="0" z="1">
<text></text> <text></text>
<info_name>label</info_name> <info_name>label</info_name>
</dynamic_text> </dynamic_text>
<line x2="-6" antialias="false" x1="0" end2="none" y2="0" end1="none" length2="1.5" length1="1.5" y1="6" style="line-style:normal;line-weight:normal;filling:none;color:black"/> <polygon y1="0" y2="0" style="line-style:normal;line-weight:normal;filling:none;color:black" x4="0" y4="5" x3="-5" antialias="false" x2="-10" y5="10" x5="0" closed="false" x1="4" y3="0"/>
<line x2="-5" antialias="false" x1="1" end2="none" y2="0" end1="none" length2="1.5" length1="1.5" y1="0" style="line-style:normal;line-weight:normal;filling:none;color:black"/> <terminal y="10" x="0" uuid="{1d3bb613-e8e2-4bcd-8515-ff9a0459b3c3}" name="" orientation="s"/>
<terminal x="0" orientation="s" y="10"/> <terminal y="0" x="-10" uuid="{367dd739-791b-4d8f-9e49-4a70fd990b19}" name="" orientation="w"/>
<terminal x="-10" orientation="w" y="0"/> <terminal y="0" x="4" uuid="{f75b8c8d-508b-4346-a6df-8cda82201d98}" name="" orientation="e"/>
<terminal x="4" orientation="e" y="0"/>
</description> </description>
</definition> </definition>
@@ -1,25 +1,27 @@
<definition hotspot_y="4" height="20" hotspot_x="17" type="element" width="30" link_type="terminal" version="0.70"> <definition height="20" version="0.80" hotspot_x="17" link_type="terminal" width="30" type="element" hotspot_y="4">
<uuid uuid="{9e88368e-1b20-4a56-8941-5d17a4cce2d4}"/> <uuid uuid="{3dd412d9-6882-42ae-9f5f-eb04f2224214}"/>
<names> <names>
<name lang="cs">Levé spojení</name> <name lang="hu">Balra továbbmenő leágazás</name>
<name lang="ru">Справа налево</name>
<name lang="fr">Liaison gauche</name>
<name lang="en">Thru left</name>
<name lang="ar">ربط يسار</name>
<name lang="it">Collegamento sinistro</name>
<name lang="pl">Połączenie 4</name>
<name lang="es">A la izquierda</name> <name lang="es">A la izquierda</name>
<name lang="ar">ربط يسار</name>
<name lang="pl">Połączenie 4</name>
<name lang="it">Collegamento sinistro</name>
<name lang="ru">Справа налево</name>
<name lang="de">Abzweig links</name>
<name lang="en">Thru left</name>
<name lang="fr">Liaison gauche</name>
<name lang="cs">Levé spojení</name>
</names> </names>
<elementInformations/> <elementInformations/>
<informations></informations> <informations></informations>
<description> <description>
<dynamic_text font_size="1" rotation="0" uuid="{5ff9bef8-b6a8-4cf8-ba82-4dabe7b1820f}" text_width="-1" frame="false" text_from="UserText" z="1" x="1.5" y="-1.45"> <dynamic_text text_width="-1" text_from="UserText" Valignment="AlignTop" x="1.5" frame="false" rotation="0" uuid="{5ff9bef8-b6a8-4cf8-ba82-4dabe7b1820f}" z="1" y="-1.45" Halignment="AlignLeft" font="Sans Serif,9,-1,5,0,0,0,0,0,0,normal">
<text>_</text> <text>_</text>
</dynamic_text> </dynamic_text>
<line x1="0" length1="1.5" end2="none" length2="1.5" style="line-style:normal;line-weight:normal;filling:none;color:black" y1="6" y2="0" end1="none" antialias="false" x2="-6"/> <polygon y1="0" x4="0" x2="-5" x3="0" antialias="false" y2="0" y3="5" style="line-style:normal;line-weight:normal;filling:none;color:black" y4="10" x1="-10" closed="false"/>
<line x1="0" length1="1.5" end2="none" length2="1.5" style="line-style:normal;line-weight:normal;filling:none;color:black" y1="0" y2="5" end1="none" antialias="false" x2="0"/> <polygon y1="10" x2="0" x3="4" antialias="false" y2="0" y3="0" style="line-style:normal;line-weight:normal;filling:none;color:black" x1="0" closed="false"/>
<terminal x="4" orientation="e" y="0"/> <terminal x="0" uuid="{46980c8f-3fb1-4993-b1ec-6f3b60832fab}" orientation="s" name="" y="10"/>
<terminal x="-10" orientation="w" y="0"/> <terminal x="-10" uuid="{401a02b0-a3d8-4f09-bd65-c4a6ad782686}" orientation="w" name="" y="0"/>
<terminal x="0" orientation="s" y="10"/> <terminal x="4" uuid="{223e7aaa-f9ff-47e6-b901-89471848b8de}" orientation="e" name="" y="0"/>
</description> </description>
</definition> </definition>
@@ -1,26 +1,27 @@
<definition link_type="terminal" width="30" hotspot_x="14" height="20" version="0.70" hotspot_y="4" type="element"> <definition width="30" type="element" hotspot_x="14" version="0.80" hotspot_y="4" height="20" link_type="terminal">
<uuid uuid="{6e40fff3-691c-4622-b9aa-4ff930a5b981}"/> <uuid uuid="{8e68cb1a-e9d8-42e4-aa67-aca8b6e6b32d}"/>
<names> <names>
<name lang="en">Thru right</name>
<name lang="ru">Слева направо</name>
<name lang="cs">Pravé spojení</name>
<name lang="fr">Liaison droite</name>
<name lang="it">Collegamento destro</name> <name lang="it">Collegamento destro</name>
<name lang="fr">Liaison droite</name>
<name lang="ru">Слева направо</name>
<name lang="hu">Jobbra továbbmenő leágazás</name>
<name lang="cs">Pravé spojení</name>
<name lang="de">Abzweig rechts</name>
<name lang="en">Thru right</name>
<name lang="es">A la derecha</name> <name lang="es">A la derecha</name>
<name lang="ar">ربط يمين</name>
<name lang="pl">Połączenie 5</name> <name lang="pl">Połączenie 5</name>
<name lang="ar">ربط يمين</name>
</names> </names>
<elementInformations/> <elementInformations/>
<informations></informations> <informations></informations>
<description> <description>
<dynamic_text text_width="-1" y="-0.45" rotation="0" uuid="{ab829572-e7d6-4e5c-9c6e-a0852fea788e}" x="5.5" frame="false" text_from="UserText" font_size="1" z="1"> <dynamic_text z="1" Halignment="AlignLeft" text_width="-1" y="-0.45" uuid="{ab829572-e7d6-4e5c-9c6e-a0852fea788e}" font="Sans Serif,9,-1,5,0,0,0,0,0,0,normal" Valignment="AlignTop" text_from="UserText" x="5.5" frame="false" rotation="0">
<text>_</text> <text>_</text>
</dynamic_text> </dynamic_text>
<line antialias="false" x1="0" y1="0" style="line-style:normal;line-weight:normal;filling:none;color:black" length1="1.5" end2="none" end1="none" y2="0" length2="1.5" x2="-6"/> <polygon y4="0" x4="10" x1="0" y2="5" style="line-style:normal;line-weight:normal;filling:none;color:black" x3="5" closed="false" y1="10" y3="0" x2="0" antialias="false"/>
<line antialias="false" x1="0" y1="0" style="line-style:normal;line-weight:normal;filling:none;color:black" length1="1.5" end2="none" end1="none" y2="5" length2="1.5" x2="0"/> <polygon x1="0" y2="0" style="line-style:normal;line-weight:normal;filling:none;color:black" x3="-10" closed="false" y1="10" y3="0" x2="0" antialias="false"/>
<line antialias="false" x1="6" y1="0" style="line-style:normal;line-weight:normal;filling:none;color:black" length1="1.5" end2="none" end1="none" y2="6" length2="1.5" x2="0"/> <terminal y="0" uuid="{53d9bb7f-b045-4581-bc2d-7a9198286e89}" name="" orientation="w" x="-10"/>
<terminal orientation="s" y="10" x="0"/> <terminal y="10" uuid="{7883adda-c1cd-4e21-93f5-330d9c7461ea}" name="" orientation="s" x="0"/>
<terminal orientation="w" y="0" x="-10"/> <terminal y="0" uuid="{053ce092-f1df-46a5-8960-e4c6fcea95d1}" name="" orientation="e" x="10"/>
<terminal orientation="e" y="0" x="10"/>
</description> </description>
</definition> </definition>
@@ -7,7 +7,8 @@
<name lang="fr">Cable 2 phases+terre</name> <name lang="fr">Cable 2 phases+terre</name>
<name lang="pl">Oznaczenie przewodu czterożyłowego</name> <name lang="pl">Oznaczenie przewodu czterożyłowego</name>
<name lang="es">Cable 2 fases+tierra</name> <name lang="es">Cable 2 fases+tierra</name>
<name lang="cs">Označení drátového propojení - 2 fáze + země</name> <name lang="cs">Kabel 3G</name>
<name lang="hu">Kábel 2 + PE</name>
</names> </names>
<informations>Author: The QElectroTech team&#xd; <informations>Author: The QElectroTech team&#xd;
License: see http://qelectrotech.org/wiki/doc/elements_license</informations> License: see http://qelectrotech.org/wiki/doc/elements_license</informations>
@@ -7,7 +7,8 @@
<name lang="fr">Cable 3 phases+terre</name> <name lang="fr">Cable 3 phases+terre</name>
<name lang="pl">Oznaczenie przewodu czterożyłowego</name> <name lang="pl">Oznaczenie przewodu czterożyłowego</name>
<name lang="es">Cable 3 fases+tierra</name> <name lang="es">Cable 3 fases+tierra</name>
<name lang="cs">Označení drátového propojení - 3 fáze + země</name> <name lang="cs">Kabel 4G</name>
<name lang="hu">Kábel 3 + PE</name>
</names> </names>
<informations>Author: The QElectroTech team&#xd; <informations>Author: The QElectroTech team&#xd;
License: see http://qelectrotech.org/wiki/doc/elements_license</informations> License: see http://qelectrotech.org/wiki/doc/elements_license</informations>
@@ -7,7 +7,8 @@
<name lang="fr">Cable 2 phases+terre</name> <name lang="fr">Cable 2 phases+terre</name>
<name lang="pl">Oznaczenie przewodu czterożyłowego</name> <name lang="pl">Oznaczenie przewodu czterożyłowego</name>
<name lang="es">Cable 2 fases+tierra</name> <name lang="es">Cable 2 fases+tierra</name>
<name lang="cs">Označení drátového propojení - 2 fáze + země</name> <name lang="cs">Kabel 3G</name>
<name lang="hu">Kábel 2 + PE</name>
</names> </names>
<informations>Author: The QElectroTech team&#xd; <informations>Author: The QElectroTech team&#xd;
License: see http://qelectrotech.org/wiki/doc/elements_license</informations> License: see http://qelectrotech.org/wiki/doc/elements_license</informations>
@@ -5,6 +5,8 @@
<name lang="fr">Cable 4G</name> <name lang="fr">Cable 4G</name>
<name lang="pl">Przewód czterożyłowy</name> <name lang="pl">Przewód czterożyłowy</name>
<name lang="es">Cable 4G</name> <name lang="es">Cable 4G</name>
<name lang="cs">Kabel 4G</name>
<name lang="hu">Kábel 3 + PE</name>
</names> </names>
<informations>Author: The QElectroTech team&#xd; <informations>Author: The QElectroTech team&#xd;
License: see http://qelectrotech.org/wiki/doc/elements_license</informations> License: see http://qelectrotech.org/wiki/doc/elements_license</informations>
@@ -5,6 +5,8 @@
<name lang="it">Cavo Type 5G</name> <name lang="it">Cavo Type 5G</name>
<name lang="es">Cable 5G</name> <name lang="es">Cable 5G</name>
<name lang="pl">Przewód pięciożyłowy</name> <name lang="pl">Przewód pięciożyłowy</name>
<name lang="cs">Kabel 5G</name>
<name lang="hu">Kábel 4 + N + PE</name>
</names> </names>
<informations>Author: The QElectroTech team&#xd; <informations>Author: The QElectroTech team&#xd;
License: see http://qelectrotech.org/wiki/doc/elements_license</informations> License: see http://qelectrotech.org/wiki/doc/elements_license</informations>
@@ -5,6 +5,8 @@
<name lang="fr">Cable 3G</name> <name lang="fr">Cable 3G</name>
<name lang="es">Cable 3G</name> <name lang="es">Cable 3G</name>
<name lang="pl">Przewód trójżyłowy</name> <name lang="pl">Przewód trójżyłowy</name>
<name lang="cs">Kabel 3G</name>
<name lang="hu">Kábel 2 + PE</name>
</names> </names>
<informations>Author: The QElectroTech team&#xd; <informations>Author: The QElectroTech team&#xd;
License: see http://qelectrotech.org/wiki/doc/elements_license</informations> License: see http://qelectrotech.org/wiki/doc/elements_license</informations>
@@ -2,13 +2,14 @@
<uuid uuid="{4b9a04b1-0d35-4d54-b5cb-b573ed3a9b0d}"/> <uuid uuid="{4b9a04b1-0d35-4d54-b5cb-b573ed3a9b0d}"/>
<names> <names>
<name lang="de">Kabel 3x</name> <name lang="de">Kabel 3x</name>
<name lang="cs">Označení drátového propojení 3 vodiče</name> <name lang="cs">Kabel 3x</name>
<name lang="pl">Oznaczenie przewodu trójżyłowego</name> <name lang="pl">Oznaczenie przewodu trójżyłowego</name>
<name lang="it">Cavo a 3 conduttori</name> <name lang="it">Cavo a 3 conduttori</name>
<name lang="en">Cable 3 wires</name> <name lang="en">Cable 3 wires</name>
<name lang="es">Cable 3 alambres</name> <name lang="es">Cable 3 alambres</name>
<name lang="fr">Cable 3 brins</name> <name lang="fr">Cable 3 brins</name>
<name lang="ru">Кабель 3 жилы</name> <name lang="ru">Кабель 3 жилы</name>
<name lang="hu">Kábel 3 + PE</name>
</names> </names>
<informations></informations> <informations></informations>
<description> <description>
@@ -4,7 +4,7 @@
<name lang="nl">Scherm</name> <name lang="nl">Scherm</name>
<name lang="el">Πλέγμα</name> <name lang="el">Πλέγμα</name>
<name lang="de">Schirm</name> <name lang="de">Schirm</name>
<name lang="cs">Obrazovka</name> <name lang="cs">Stínění</name>
<name lang="pl">Ekran 3</name> <name lang="pl">Ekran 3</name>
<name lang="it">Schermo</name> <name lang="it">Schermo</name>
<name lang="ar">شاشة</name> <name lang="ar">شاشة</name>
@@ -12,6 +12,7 @@
<name lang="es">Pantalla</name> <name lang="es">Pantalla</name>
<name lang="fr">Ecran</name> <name lang="fr">Ecran</name>
<name lang="ru">Экран</name> <name lang="ru">Экран</name>
<name lang="hu">Árnyékolás</name>
</names> </names>
<informations>Author: The QElectroTech team <informations>Author: The QElectroTech team
License: see http://qelectrotech.org/wiki/doc/elements_license</informations> License: see http://qelectrotech.org/wiki/doc/elements_license</informations>
@@ -2,13 +2,14 @@
<uuid uuid="{6ac285f9-6492-40cb-be58-9ba565ea1921}"/> <uuid uuid="{6ac285f9-6492-40cb-be58-9ba565ea1921}"/>
<names> <names>
<name lang="de">Kabelader</name> <name lang="de">Kabelader</name>
<name lang="cs">Vedení kabelu</name> <name lang="cs">Vodič kabelu</name>
<name lang="pl">Połączenie przewodu</name> <name lang="pl">Połączenie przewodu</name>
<name lang="it">Conduttore di un cavo</name> <name lang="it">Conduttore di un cavo</name>
<name lang="en">Wire of cable</name> <name lang="en">Wire of cable</name>
<name lang="es">Alambre del cable</name> <name lang="es">Alambre del cable</name>
<name lang="fr">Fil de cable</name> <name lang="fr">Fil de cable</name>
<name lang="ru">Жила кабеля</name> <name lang="ru">Жила кабеля</name>
<name lang="hu">Kábelér</name>
</names> </names>
<informations></informations> <informations></informations>
<description> <description>
@@ -2,12 +2,13 @@
<uuid uuid="{374ed6b3-7329-4cad-ac8c-200b17508460}"/> <uuid uuid="{374ed6b3-7329-4cad-ac8c-200b17508460}"/>
<names> <names>
<name lang="de">Verdrahtung</name> <name lang="de">Verdrahtung</name>
<name lang="cs">Drátové propojení</name> <name lang="cs">Vodič kabelu</name>
<name lang="pl">Oznaczenie przewodu</name> <name lang="pl">Oznaczenie przewodu</name>
<name lang="it">Conduttura</name> <name lang="it">Conduttura</name>
<name lang="en">Wiring</name> <name lang="en">Wiring</name>
<name lang="es">Alambrado</name> <name lang="es">Alambrado</name>
<name lang="fr">Filerie</name> <name lang="fr">Filerie</name>
<name lang="hu">Vezeték</name>
</names> </names>
<informations></informations> <informations></informations>
<description> <description>
@@ -4,6 +4,7 @@
<name lang="de">Kabel 3G</name> <name lang="de">Kabel 3G</name>
<name lang="fr">Cable 3G</name> <name lang="fr">Cable 3G</name>
<name lang="cs">Kabel 3G</name> <name lang="cs">Kabel 3G</name>
<name lang="hu">Kábel 2 + PE</name>
</names> </names>
<elementInformations/> <elementInformations/>
<informations>Author: The QElectroTech team&#xd; <informations>Author: The QElectroTech team&#xd;
@@ -8,6 +8,7 @@
<name lang="es">Cable 3 fases+tierra</name> <name lang="es">Cable 3 fases+tierra</name>
<name lang="it">Cavo 3 fasi + terra</name> <name lang="it">Cavo 3 fasi + terra</name>
<name lang="fr">Cable 3 phases+terre</name> <name lang="fr">Cable 3 phases+terre</name>
<name lang="hu">Kábel 3 + PE</name>
</names> </names>
<informations>Author: The QElectroTech team&#xd; <informations>Author: The QElectroTech team&#xd;
License: see http://qelectrotech.org/wiki/doc/elements_license</informations> License: see http://qelectrotech.org/wiki/doc/elements_license</informations>
@@ -8,6 +8,7 @@
<name lang="es">Cable 6 fases+tierra</name> <name lang="es">Cable 6 fases+tierra</name>
<name lang="it">Cavo fasi + terra</name> <name lang="it">Cavo fasi + terra</name>
<name lang="fr">Cable 6 phases+terre</name> <name lang="fr">Cable 6 phases+terre</name>
<name lang="hu">Kábel 6 + PE</name>
</names> </names>
<informations>Author: The QElectroTech team&#xd; <informations>Author: The QElectroTech team&#xd;
License: see http://qelectrotech.org/wiki/doc/elements_license</informations> License: see http://qelectrotech.org/wiki/doc/elements_license</informations>
@@ -5,12 +5,13 @@
<name lang="es">Clasificación de sección</name> <name lang="es">Clasificación de sección</name>
<name lang="nl">Doorsnede</name> <name lang="nl">Doorsnede</name>
<name lang="de">Verdrahtungsquerschnitt</name> <name lang="de">Verdrahtungsquerschnitt</name>
<name lang="cs">Průřez drátovým propojením</name> <name lang="cs">Průřez vodiče</name>
<name lang="pl">Pole przekróju przewodu</name> <name lang="pl">Pole przekróju przewodu</name>
<name lang="it">Sezione della nomenclatura</name> <name lang="it">Sezione della nomenclatura</name>
<name lang="ar">تسمية مساحة المقطع </name> <name lang="ar">تسمية مساحة المقطع </name>
<name lang="en">Wiring section</name> <name lang="en">Wiring section</name>
<name lang="fr">Section de fil</name> <name lang="fr">Section de fil</name>
<name lang="hu">Vezeték keresztmetszet</name>
</names> </names>
<informations>Author: The QElectroTech team <informations>Author: The QElectroTech team
License: see http://qelectrotech.org/wiki/doc/elements_license</informations> License: see http://qelectrotech.org/wiki/doc/elements_license</informations>
@@ -6,11 +6,13 @@
<name lang="fr">Câbles et filerie</name> <name lang="fr">Câbles et filerie</name>
<name lang="it">Cavi e collegamenti</name> <name lang="it">Cavi e collegamenti</name>
<name lang="pl">Przewody i kable</name> <name lang="pl">Przewody i kable</name>
<name lang="pt_br">Cabos e fiação</name>
<name lang="de">Kabel und Verdrahtung</name> <name lang="de">Kabel und Verdrahtung</name>
<name lang="el">Καλώδια και καλωδίωση</name> <name lang="el">Καλώδια και καλωδίωση</name>
<name lang="nl">Kabels en draden</name> <name lang="nl">Kabels en draden</name>
<name lang="cs">Kabely a drátové propojení</name> <name lang="cs">Kabely a vodiče</name>
<name lang="da">Kabler og ledninger</name> <name lang="da">Kabler og ledninger</name>
<name lang="ja">ケーブルと配線</name> <name lang="ja">ケーブルと配線</name>
<name lang="hu">Kábelek és vezetékek</name>
</names> </names>
</qet-directory> </qet-directory>
@@ -2,11 +2,12 @@
<uuid uuid="{b96a76a6-a798-497b-a044-dd933756d175}"/> <uuid uuid="{b96a76a6-a798-497b-a044-dd933756d175}"/>
<names> <names>
<name lang="de">Verdrahtungsdefinition 1 Leiter</name> <name lang="de">Verdrahtungsdefinition 1 Leiter</name>
<name lang="cs">Označení drátového propojení 1 vodič</name> <name lang="cs">Označení vodiče</name>
<name lang="pl">Oznaczenie pola przekroju przewodu jednożyłowego</name> <name lang="pl">Oznaczenie pola przekroju przewodu jednożyłowego</name>
<name lang="it">Sezione 1 conduttore</name> <name lang="it">Sezione 1 conduttore</name>
<name lang="fr">Section 1 conducteur</name> <name lang="fr">Section 1 conducteur</name>
<name lang="es">Sección 1 conductor</name> <name lang="es">Sección 1 conductor</name>
<name lang="hu">1 ér keresztmetszet</name>
</names> </names>
<informations>Author: The QElectroTech team&#xd; <informations>Author: The QElectroTech team&#xd;
License: see http://qelectrotech.org/wiki/doc/elements_license</informations> License: see http://qelectrotech.org/wiki/doc/elements_license</informations>
@@ -2,11 +2,12 @@
<uuid uuid="{448ac784-f459-4f8f-bd3f-d911802b3369}"/> <uuid uuid="{448ac784-f459-4f8f-bd3f-d911802b3369}"/>
<names> <names>
<name lang="de">Verdrahtungsdefinition 2 Leiter</name> <name lang="de">Verdrahtungsdefinition 2 Leiter</name>
<name lang="cs">Označení drátového propojení 2 vodiče</name> <name lang="cs">Označení žil 2 vodiče</name>
<name lang="pl">Oznaczenie pola przekroju przewodu dwużyłowego</name> <name lang="pl">Oznaczenie pola przekroju przewodu dwużyłowego</name>
<name lang="it">Sezione 2 conduttori</name> <name lang="it">Sezione 2 conduttori</name>
<name lang="fr">Section 2 conducteurs</name> <name lang="fr">Section 2 conducteurs</name>
<name lang="es">Sección 2 conductores</name> <name lang="es">Sección 2 conductores</name>
<name lang="hu">2 ér keresztmetszet</name>
</names> </names>
<informations>Author: The QElectroTech team&#xd; <informations>Author: The QElectroTech team&#xd;
License: see http://qelectrotech.org/wiki/doc/elements_license</informations> License: see http://qelectrotech.org/wiki/doc/elements_license</informations>
@@ -2,11 +2,12 @@
<uuid uuid="{c94d9e16-e3bb-4117-b037-466a15edcb14}"/> <uuid uuid="{c94d9e16-e3bb-4117-b037-466a15edcb14}"/>
<names> <names>
<name lang="de">Verdrahtungsdefinition 2 Leiter</name> <name lang="de">Verdrahtungsdefinition 2 Leiter</name>
<name lang="cs">Označení drátového propojení 2 vodiče</name> <name lang="cs">Označení žil 2 vodiče</name>
<name lang="pl">Oznaczenie pola przekroju przewodu dwużyłowego</name> <name lang="pl">Oznaczenie pola przekroju przewodu dwużyłowego</name>
<name lang="it">Sezione 2 conduttori</name> <name lang="it">Sezione 2 conduttori</name>
<name lang="fr">Section 2 conducteurs</name> <name lang="fr">Section 2 conducteurs</name>
<name lang="es">Sección 2 conductores</name> <name lang="es">Sección 2 conductores</name>
<name lang="hu">2 ér keresztmetszet</name>
</names> </names>
<informations>Author: The QElectroTech team&#xd; <informations>Author: The QElectroTech team&#xd;
License: see http://qelectrotech.org/wiki/doc/elements_license</informations> License: see http://qelectrotech.org/wiki/doc/elements_license</informations>
@@ -2,11 +2,12 @@
<uuid uuid="{9d939952-9c2b-4b12-898f-262abc91e845}"/> <uuid uuid="{9d939952-9c2b-4b12-898f-262abc91e845}"/>
<names> <names>
<name lang="de">Verdrahtungsdefinition 3 Leiter</name> <name lang="de">Verdrahtungsdefinition 3 Leiter</name>
<name lang="cs">Označení drátového propojení 3 vodiče</name> <name lang="cs">Označení žil 3 vodiče</name>
<name lang="pl">Oznaczenie pola przekroju przewodu trójżyłowego</name> <name lang="pl">Oznaczenie pola przekroju przewodu trójżyłowego</name>
<name lang="it">Sezione 3 conduttori</name> <name lang="it">Sezione 3 conduttori</name>
<name lang="fr">Section 3 conducteurs</name> <name lang="fr">Section 3 conducteurs</name>
<name lang="es">Sección 3 conductores</name> <name lang="es">Sección 3 conductores</name>
<name lang="hu">3 ér keresztmetszet</name>
</names> </names>
<informations>Author: The QElectroTech team&#xd; <informations>Author: The QElectroTech team&#xd;
License: see http://qelectrotech.org/wiki/doc/elements_license</informations> License: see http://qelectrotech.org/wiki/doc/elements_license</informations>
@@ -6,6 +6,8 @@
<name lang="fr">Label de bornier</name> <name lang="fr">Label de bornier</name>
<name lang="de">Klemmleisten-BMK</name> <name lang="de">Klemmleisten-BMK</name>
<name lang="pl">Etykieta listwy zaciskowej</name> <name lang="pl">Etykieta listwy zaciskowej</name>
<name lang="cs">Štítek svorkovnice</name>
<name lang="hu">Sorkapocstömb jelölő</name>
</names> </names>
<informations/> <informations/>
<description> <description>
@@ -6,6 +6,8 @@
<name lang="en">Terminal (feed-through)</name> <name lang="en">Terminal (feed-through)</name>
<name lang="es">Clema (introducción atravesada)</name> <name lang="es">Clema (introducción atravesada)</name>
<name lang="pl">Zacisk</name> <name lang="pl">Zacisk</name>
<name lang="cs">Svorka průchozí</name>
<name lang="hu">Sorkapocs átmenő</name>
</names> </names>
<informations/> <informations/>
<description> <description>
@@ -6,6 +6,8 @@
<name lang="en">Terminal (Grounding)</name> <name lang="en">Terminal (Grounding)</name>
<name lang="es">Clema (Aterrizada)</name> <name lang="es">Clema (Aterrizada)</name>
<name lang="pl">Zacisk uziemiający</name> <name lang="pl">Zacisk uziemiający</name>
<name lang="cs">Svorka zemnící</name>
<name lang="hu">Sorkapocs földelő</name>
</names> </names>
<informations/> <informations/>
<description> <description>
@@ -6,6 +6,8 @@
<name lang="en">Discontinuation terminal strip</name> <name lang="en">Discontinuation terminal strip</name>
<name lang="es">Clema de descontinuación</name> <name lang="es">Clema de descontinuación</name>
<name lang="it">Morsettiera d'interruzione</name> <name lang="it">Morsettiera d'interruzione</name>
<name lang="cs">Přerušení svorkovnice</name>
<name lang="hu">Sorkapocstömb megszakítása</name>
</names> </names>
<informations/> <informations/>
<description> <description>
@@ -6,6 +6,8 @@
<name lang="en">Terminal double-level (feed-through)</name> <name lang="en">Terminal double-level (feed-through)</name>
<name lang="es">Clema de doble nivel (Introducción atravesada)</name> <name lang="es">Clema de doble nivel (Introducción atravesada)</name>
<name lang="it">Morsettiera a doppio livello (interconnesso)</name> <name lang="it">Morsettiera a doppio livello (interconnesso)</name>
<name lang="cs">Dvoupatrová svorkovnice</name>
<name lang="hu">Kétemeletes sorkapocs</name>
</names> </names>
<informations/> <informations/>
<description> <description>
@@ -6,6 +6,8 @@
<name lang="en">Insertion bridge</name> <name lang="en">Insertion bridge</name>
<name lang="es">Puente de inserción</name> <name lang="es">Puente de inserción</name>
<name lang="it">Barra di connessione</name> <name lang="it">Barra di connessione</name>
<name lang="cs">Propojka svorkovnic</name>
<name lang="hu">Sorkapocs áthidalás</name>
</names> </names>
<informations/> <informations/>
<description> <description>
@@ -6,6 +6,8 @@
<name lang="de">Einlegebrücke (doppelte Breite)</name> <name lang="de">Einlegebrücke (doppelte Breite)</name>
<name lang="fr">Barette de pontage (largeur double)</name> <name lang="fr">Barette de pontage (largeur double)</name>
<name lang="it">Barra di connessione (larghezza doppia)</name> <name lang="it">Barra di connessione (larghezza doppia)</name>
<name lang="cs">Propojka svorkovnic (dvojitá šířka)</name>
<name lang="hu">Sorkapocs áthidalás dupla széles</name>
</names> </names>
<informations/> <informations/>
<description> <description>
@@ -6,6 +6,8 @@
<name lang="es">Conector de 25 pins</name> <name lang="es">Conector de 25 pins</name>
<name lang="de">Stecker 25-polig</name> <name lang="de">Stecker 25-polig</name>
<name lang="it">Connettore 25 poli</name> <name lang="it">Connettore 25 poli</name>
<name lang="cs">Konektor 25 pinů</name>
<name lang="hu">25 tűs áthidalás</name>
</names> </names>
<informations/> <informations/>
<description> <description>
@@ -6,6 +6,8 @@
<name lang="en">Device (connection on bottom)</name> <name lang="en">Device (connection on bottom)</name>
<name lang="es">Dispositivo (conexión por debajo)</name> <name lang="es">Dispositivo (conexión por debajo)</name>
<name lang="it">Dispositivo (connessione in basso)</name> <name lang="it">Dispositivo (connessione in basso)</name>
<name lang="cs">Zařízení (připojení zdola)</name>
<name lang="hu">Eszköz (alsó csatlakozás)</name>
</names> </names>
<informations/> <informations/>
<description> <description>
@@ -6,6 +6,8 @@
<name lang="en">Device (connection on top)</name> <name lang="en">Device (connection on top)</name>
<name lang="es">Dispositivo (conexión por encima)</name> <name lang="es">Dispositivo (conexión por encima)</name>
<name lang="it">Dispositivo (connessione in alto)</name> <name lang="it">Dispositivo (connessione in alto)</name>
<name lang="cs">Zařízení (připojení shora)</name>
<name lang="hu">Eszköz (felső csatlakozás)</name>
</names> </names>
<informations/> <informations/>
<description> <description>
@@ -6,6 +6,8 @@
<name lang="en">Device (connection on bottom) - beginning</name> <name lang="en">Device (connection on bottom) - beginning</name>
<name lang="es">Dispositivo (conexión por debajo)- iniciando</name> <name lang="es">Dispositivo (conexión por debajo)- iniciando</name>
<name lang="it">Dispositivo (connessione in basso) iniziale</name> <name lang="it">Dispositivo (connessione in basso) iniziale</name>
<name lang="cs">Zařízení (připojení zdola) začátek</name>
<name lang="hu">Eszköz (alsó csatlakozás) kezdő tag</name>
</names> </names>
<informations/> <informations/>
<description> <description>
@@ -6,6 +6,8 @@
<name lang="en">Device (connection on bottom) - middle</name> <name lang="en">Device (connection on bottom) - middle</name>
<name lang="es">Dispositivo (conexión por debajo) en medio</name> <name lang="es">Dispositivo (conexión por debajo) en medio</name>
<name lang="it">Dispositivo (connessione in basso) centrale</name> <name lang="it">Dispositivo (connessione in basso) centrale</name>
<name lang="cs">Zařízení (připojení zdola) střed</name>
<name lang="hu">Eszköz (alsó csatlakozás) közbülső tag</name>
</names> </names>
<informations/> <informations/>
<description> <description>
@@ -6,6 +6,8 @@
<name lang="en">Device (connection on bottom) - end</name> <name lang="en">Device (connection on bottom) - end</name>
<name lang="es">Dispositivo (conexión por debajo) final</name> <name lang="es">Dispositivo (conexión por debajo) final</name>
<name lang="it">Dispositivo (connessione in basso) finale</name> <name lang="it">Dispositivo (connessione in basso) finale</name>
<name lang="cs">Zařízení (připojení zdola) konec</name>
<name lang="hu">Eszköz (alsó csatlakozás) záró tag</name>
</names> </names>
<informations/> <informations/>
<description> <description>
@@ -6,6 +6,8 @@
<name lang="en">Device (connection on top)</name> <name lang="en">Device (connection on top)</name>
<name lang="es">Dispositivo (conexión por encima)</name> <name lang="es">Dispositivo (conexión por encima)</name>
<name lang="it">Dispositivo (connessione in alto)</name> <name lang="it">Dispositivo (connessione in alto)</name>
<name lang="cs">Zařízení (připojení shora)</name>
<name lang="hu">Eszköz (felső csatlakozás)</name>
</names> </names>
<informations/> <informations/>
<description> <description>
@@ -6,6 +6,8 @@
<name lang="en">Device (connection on top) - beginning</name> <name lang="en">Device (connection on top) - beginning</name>
<name lang="es">Dispositivo (conexión por encima) iniciando</name> <name lang="es">Dispositivo (conexión por encima) iniciando</name>
<name lang="it">Dispositivo (connessione in alto) iniziale</name> <name lang="it">Dispositivo (connessione in alto) iniziale</name>
<name lang="cs">Zařízení (připojení shora) začátek</name>
<name lang="hu">Eszköz (felső csatlakozás) kezdő tag</name>
</names> </names>
<informations/> <informations/>
<description> <description>
@@ -6,6 +6,8 @@
<name lang="en">Device (connection on top) - middle</name> <name lang="en">Device (connection on top) - middle</name>
<name lang="es">Dispositivo (conexión por encima) en medio</name> <name lang="es">Dispositivo (conexión por encima) en medio</name>
<name lang="it">Dispositivo (connessione in alto) medio</name> <name lang="it">Dispositivo (connessione in alto) medio</name>
<name lang="cs">Zařízení (připojení shora) střed</name>
<name lang="hu">Eszköz (felső csatlakozás) közbülső tag</name>
</names> </names>
<informations/> <informations/>
<description> <description>
@@ -6,6 +6,8 @@
<name lang="en">Device (connection on top) - end</name> <name lang="en">Device (connection on top) - end</name>
<name lang="es">Dispositivo (conexión por encima) final</name> <name lang="es">Dispositivo (conexión por encima) final</name>
<name lang="it">Dispositivo (connessione in alto) finale</name> <name lang="it">Dispositivo (connessione in alto) finale</name>
<name lang="cs">Zařízení (připojení shora) konec</name>
<name lang="hu">Eszköz (felső csatlakozás) záró tag</name>
</names> </names>
<informations/> <informations/>
<description> <description>
@@ -6,6 +6,8 @@
<name lang="en">Cable tag</name> <name lang="en">Cable tag</name>
<name lang="es">Etiqueta de cable</name> <name lang="es">Etiqueta de cable</name>
<name lang="it">Etichetta del cavo</name> <name lang="it">Etichetta del cavo</name>
<name lang="cs">Kabelový štítek</name>
<name lang="hu">Kábel címke</name>
</names> </names>
<informations/> <informations/>
<description> <description>

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