mirror of
https://github.com/qelectrotech/qelectrotech-source-mirror.git
synced 2025-12-18 22:00:35 +01:00
Compare commits
420 Commits
9-dev-2021
...
0.9.1
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
9354e1ad8d | ||
|
|
7ab08bc99f | ||
|
|
b9ee6c7b5d | ||
|
|
ad85d9b6bf | ||
|
|
6dec80cfa3 | ||
|
|
9aaf8839dc | ||
|
|
230fc76c78 | ||
|
|
fbb2c18086 | ||
|
|
522e5337ee | ||
|
|
fa52482874 | ||
|
|
1c31bed281 | ||
|
|
04d9b06b04 | ||
|
|
94c6c78927 | ||
|
|
2f3b0ae3ca | ||
|
|
f342691436 | ||
|
|
4ae890c63e | ||
|
|
e3afc562ba | ||
|
|
c7891bc4c2 | ||
|
|
cbbe4a6cae | ||
|
|
46077144d3 | ||
|
|
49cfd6b753 | ||
|
|
c5b4e033c4 | ||
|
|
9afef79629 | ||
|
|
62fcdec958 | ||
|
|
2ace2ca104 | ||
|
|
b0c3c90f3c | ||
|
|
8c35559480 | ||
|
|
66614072a6 | ||
|
|
bd4c7cf2ff | ||
|
|
4a568c4e89 | ||
|
|
caf5dc5dd4 | ||
|
|
eeadbde8d2 | ||
|
|
85892b1c54 | ||
|
|
949db14699 | ||
|
|
0753bac62f | ||
|
|
808598f759 | ||
|
|
7377cf394c | ||
|
|
555c243905 | ||
|
|
7b6f357870 | ||
|
|
b9f28c1567 | ||
|
|
6a4b250213 | ||
|
|
4caf5e0211 | ||
|
|
8242e4cfd7 | ||
|
|
a1f9d05f1c | ||
|
|
2032ba76ed | ||
|
|
1994235bc5 | ||
|
|
a76e5446aa | ||
|
|
1eed13c617 | ||
|
|
6869d20813 | ||
|
|
c17492183f | ||
|
|
e3d1467352 | ||
|
|
b626130071 | ||
|
|
7f4bad712e | ||
|
|
300440454e | ||
|
|
05416a5fdc | ||
|
|
d6bcde5f8d | ||
|
|
e1cb55f218 | ||
|
|
937afea351 | ||
|
|
3341d65a89 | ||
|
|
c397bb6c1d | ||
|
|
2f72c60f64 | ||
|
|
5a057b1c20 | ||
|
|
57929e6e38 | ||
|
|
ae8c20bb04 | ||
|
|
ad97559b7c | ||
|
|
e3cc89b546 | ||
|
|
0f215c2902 | ||
|
|
0ae0ce04cd | ||
|
|
850cc5d0f2 | ||
|
|
914ae348c6 | ||
|
|
bb47a1852e | ||
|
|
28329c3f1b | ||
|
|
71297a0e45 | ||
|
|
0e0b680131 | ||
|
|
554dc388a6 | ||
|
|
33c22c72f8 | ||
|
|
d4658e64b1 | ||
|
|
9633c32c2c | ||
|
|
6f52be4145 | ||
|
|
e26efb6c3a | ||
|
|
04f2094466 | ||
|
|
346900ecbd | ||
|
|
d80669c253 | ||
|
|
922f96d79c | ||
|
|
0d90defcfe | ||
|
|
ea1ede9cb3 | ||
|
|
ffc2a7a7d7 | ||
|
|
3e75bedef0 | ||
|
|
05bd6b43f2 | ||
|
|
718a6a6872 | ||
|
|
42746aa710 | ||
|
|
662ec3496b | ||
|
|
cec479aefb | ||
|
|
43821bea0f | ||
|
|
8775d1e1bd | ||
|
|
c6f45c5862 | ||
|
|
d7e1813ff3 | ||
|
|
d6e8a1c133 | ||
|
|
eee1c7fff7 | ||
|
|
af5d5e0aa3 | ||
|
|
e9931511de | ||
|
|
acf1e713fc | ||
|
|
21524ee528 | ||
|
|
f0919d5fa6 | ||
|
|
695e4d95aa | ||
|
|
02769fe881 | ||
|
|
e57ba72d7c | ||
|
|
1b3599e673 | ||
|
|
d0d6b299e4 | ||
|
|
56b7458951 | ||
|
|
74a187e659 | ||
|
|
8b62318588 | ||
|
|
31466a65ba | ||
|
|
a7160ba9b7 | ||
|
|
cacbce6cec | ||
|
|
6fd5209364 | ||
|
|
57695bbbea | ||
|
|
5a497cd6b5 | ||
|
|
cae7cbdbd8 | ||
|
|
b65ff83805 | ||
|
|
c1f2b345e4 | ||
|
|
f9600f5dbb | ||
|
|
6e81451b46 | ||
|
|
2a7848e1ca | ||
|
|
c22abdd2f8 | ||
|
|
9e2d4abd01 | ||
|
|
acd151c9ca | ||
|
|
ab724377c0 | ||
|
|
4c5d27e9af | ||
|
|
8af850df44 | ||
|
|
8a1f509b62 | ||
|
|
cf479bc113 | ||
|
|
08e206deeb | ||
|
|
ba1e8381f2 | ||
|
|
d082c9c9a6 | ||
|
|
84631b238c | ||
|
|
aa50224b00 | ||
|
|
d44486f468 | ||
|
|
2a307a74da | ||
|
|
1a2fea84ff | ||
|
|
f603b229db | ||
|
|
fa753449ad | ||
|
|
fe19b270f9 | ||
|
|
5c96c6d773 | ||
|
|
637d0bf6de | ||
|
|
d917c697b0 | ||
|
|
1be21782fd | ||
|
|
2e15372aab | ||
|
|
5c6b9f1829 | ||
|
|
9c55378f49 | ||
|
|
e367436358 | ||
|
|
c9ebdace04 | ||
|
|
3e6e38e566 | ||
|
|
c83d4e5aea | ||
|
|
0e9d09c62e | ||
|
|
fe66caf5ac | ||
|
|
c58d61594b | ||
|
|
3cd3535c18 | ||
|
|
97ecd26749 | ||
|
|
2e70d2e599 | ||
|
|
3dd0986c4f | ||
|
|
899caeabe9 | ||
|
|
a2b73ea2bc | ||
|
|
bf32219154 | ||
|
|
6a669f1399 | ||
|
|
4ab1ed7fc9 | ||
|
|
89d03e5503 | ||
|
|
9a6e1d2a61 | ||
|
|
fad6983cf1 | ||
|
|
daeec311b2 | ||
|
|
db8c76c184 | ||
|
|
2ec7e6aa45 | ||
|
|
021aea1d8b | ||
|
|
1f4dfdba3f | ||
|
|
f0694f0daf | ||
|
|
baf412614c | ||
|
|
e1865fec62 | ||
|
|
1e255af3be | ||
|
|
1c99cb5c2d | ||
|
|
4ca21a3bff | ||
|
|
189d92f2a9 | ||
|
|
34a7e0f3fe | ||
|
|
17290ae3b3 | ||
|
|
8b65d240db | ||
|
|
bce6a43427 | ||
|
|
1c52cd71a9 | ||
|
|
898edb6c12 | ||
|
|
de3fa988b1 | ||
|
|
b42aec7bdf | ||
|
|
ea46a92f3f | ||
|
|
6197d0215a | ||
|
|
6fd342e265 | ||
|
|
395d968ab5 | ||
|
|
e41b7f7d6c | ||
|
|
fabf0109ff | ||
|
|
cabfdc0a54 | ||
|
|
6f4122f65c | ||
|
|
ce21a812c0 | ||
|
|
5a51f6bace | ||
|
|
a38d97896d | ||
|
|
c4b0c1435c | ||
|
|
a4445c411d | ||
|
|
e92bd36f9b | ||
|
|
61ff8884e0 | ||
|
|
b8af2e9d1d | ||
|
|
8084fa8f29 | ||
|
|
1066e55262 | ||
|
|
edfb23be23 | ||
|
|
516a1a7826 | ||
|
|
be1d87c5d4 | ||
|
|
b48ba939de | ||
|
|
b1ad16d482 | ||
|
|
ceb54fbc6a | ||
|
|
e42bcb5ec9 | ||
|
|
9cbc3a2265 | ||
|
|
e93990a6e4 | ||
|
|
bb1a0767a3 | ||
|
|
0b7afe4781 | ||
|
|
9a3de1f780 | ||
|
|
0ff099fb52 | ||
|
|
05a2e4b37b | ||
|
|
830a70ac94 | ||
|
|
e63a8c8482 | ||
|
|
855162bb03 | ||
|
|
d2c15cf57b | ||
|
|
02ce65b3a9 | ||
|
|
0bf1f89c13 | ||
|
|
74c3ab1b82 | ||
|
|
062ae6e9eb | ||
|
|
dcc5a4dd0b | ||
|
|
ba638f52e5 | ||
|
|
ffd904749e | ||
|
|
c037d3ea0a | ||
|
|
087c8980f0 | ||
|
|
70f50ff362 | ||
|
|
904e805935 | ||
|
|
04d478882e | ||
|
|
35cd790c8f | ||
|
|
1a26133a78 | ||
|
|
a028b774bf | ||
|
|
72b7bc210f | ||
|
|
5fe2efca1a | ||
|
|
3ce09775ac | ||
|
|
3a53c2d53b | ||
|
|
7ba27ec9d9 | ||
|
|
d74dcdea6c | ||
|
|
9cb86a7e54 | ||
|
|
826991e6d6 | ||
|
|
53157afd12 | ||
|
|
a165a3cb28 | ||
|
|
1d20018a26 | ||
|
|
c02238cab8 | ||
|
|
35a40f1aba | ||
|
|
6e55a630b4 | ||
|
|
9a17c8f72c | ||
|
|
04c17ac5ac | ||
|
|
686bd8dff1 | ||
|
|
bd635b8e43 | ||
|
|
0bd0476cb1 | ||
|
|
d562ca8a39 | ||
|
|
a31bd6eb0d | ||
|
|
d114b097bf | ||
|
|
993eb58d46 | ||
|
|
7aa048740b | ||
|
|
306f4c7b54 | ||
|
|
4334c8ec8c | ||
|
|
7aabdd1781 | ||
|
|
bb48c4607a | ||
|
|
0600b85e8a | ||
|
|
688d9fe4c1 | ||
|
|
683095173e | ||
|
|
0d70ed53a9 | ||
|
|
7d33b48b3a | ||
|
|
d7e2ef283a | ||
|
|
782eaff4d2 | ||
|
|
9bd2ea22f3 | ||
|
|
ee4ce5db4e | ||
|
|
b90d06aa5c | ||
|
|
ba47a11282 | ||
|
|
4041073c96 | ||
|
|
8830204c0c | ||
|
|
d932f8ea01 | ||
|
|
8cfa852077 | ||
|
|
1a75eb19d0 | ||
|
|
ae9faa2192 | ||
|
|
e087270b6d | ||
|
|
b8263b03bc | ||
|
|
778837a770 | ||
|
|
09694ddec9 | ||
|
|
1572fafabe | ||
|
|
5709f469fc | ||
|
|
2ea9f8a2c6 | ||
|
|
a2e5989f3b | ||
|
|
e556abbab3 | ||
|
|
337dd7c13b | ||
|
|
34a3325ba9 | ||
|
|
02b385e0b7 | ||
|
|
e2454faa36 | ||
|
|
57e80e7b5e | ||
|
|
6505330b5f | ||
|
|
56685d0f30 | ||
|
|
ee7a752a52 | ||
|
|
7084f5bcf0 | ||
|
|
cd914c8726 | ||
|
|
beee4a06c8 | ||
|
|
98960f5b2b | ||
|
|
2bdecd3bd2 | ||
|
|
c22f3c84bb | ||
|
|
959dee7889 | ||
|
|
dd82a705d6 | ||
|
|
c744356b0f | ||
|
|
1073ebeebc | ||
|
|
b94ec0938b | ||
|
|
eed1223c1d | ||
|
|
291e163ee2 | ||
|
|
6e68e6047a | ||
|
|
ce8bd7fae3 | ||
|
|
94f66553ac | ||
|
|
c7579db674 | ||
|
|
478c7771b7 | ||
|
|
b46bf67c58 | ||
|
|
8c09399804 | ||
|
|
5055e93114 | ||
|
|
c70eb65259 | ||
|
|
ebeeb04aa4 | ||
|
|
f0413ce9a5 | ||
|
|
21bb3f8426 | ||
|
|
acf7478c8b | ||
|
|
f08811aca0 | ||
|
|
ea26f0b04e | ||
|
|
9485e3360b | ||
|
|
3e5713a512 | ||
|
|
58a3e72abe | ||
|
|
2252feca16 | ||
|
|
985988ee53 | ||
|
|
1cc162867f | ||
|
|
91ac46df83 | ||
|
|
f01b15d00a | ||
|
|
3fdba11c73 | ||
|
|
7afa1b8a59 | ||
|
|
6f197c2bb7 | ||
|
|
5b788c177b | ||
|
|
204b53cd00 | ||
|
|
a646359d51 | ||
|
|
91f034272c | ||
|
|
aefae7b73b | ||
|
|
107d7ff806 | ||
|
|
8b1f2fb0d9 | ||
|
|
7c6fca2aac | ||
|
|
c6e3e385ff | ||
|
|
089f260d9b | ||
|
|
09e345ee4a | ||
|
|
828424cae8 | ||
|
|
dca643f7aa | ||
|
|
cc327cb761 | ||
|
|
c03f2b605f | ||
|
|
7ce23598e4 | ||
|
|
3097a59c68 | ||
|
|
53178cf17a | ||
|
|
6d02cd1779 | ||
|
|
1839e988f6 | ||
|
|
543c706e0c | ||
|
|
5af8665e24 | ||
|
|
86595f4114 | ||
|
|
f8cc42e3a7 | ||
|
|
085f56d192 | ||
|
|
b580c2bb73 | ||
|
|
c6e168bb20 | ||
|
|
a2a0c166d9 | ||
|
|
96d6e21e2f | ||
|
|
4093d1fa27 | ||
|
|
de80d10f5e | ||
|
|
1699ad9dd8 | ||
|
|
e9a5fded5c | ||
|
|
a8d42b0f9a | ||
|
|
b69c7b1027 | ||
|
|
7b0a581008 | ||
|
|
4f1a6d55e5 | ||
|
|
1048cef845 | ||
|
|
dccbf92964 | ||
|
|
626bf4ce9c | ||
|
|
1f22a5a0a8 | ||
|
|
ce4729e1c0 | ||
|
|
d99b035aa6 | ||
|
|
ad77482235 | ||
|
|
b02ed7fe51 | ||
|
|
58efc14633 | ||
|
|
b03deb8e3e | ||
|
|
580bb07685 | ||
|
|
818e5ef484 | ||
|
|
bd6920e049 | ||
|
|
377f8b1521 | ||
|
|
67dbc798aa | ||
|
|
6d17f3d0ad | ||
|
|
5fc5a33543 | ||
|
|
337a2a45b4 | ||
|
|
8cb2fcc09c | ||
|
|
8547940ab2 | ||
|
|
f52ed8cf51 | ||
|
|
ccfb46b354 | ||
|
|
c640d96bca | ||
|
|
37e74b397e | ||
|
|
9135099dbf | ||
|
|
76d68f5025 | ||
|
|
710067969e | ||
|
|
ddc171cfa2 | ||
|
|
896ffb9c72 | ||
|
|
db8529c536 | ||
|
|
fcab77420d | ||
|
|
8c554e875d | ||
|
|
5ef073b6c1 | ||
|
|
895417c98c | ||
|
|
374805d6ab | ||
|
|
b08c2bd90b | ||
|
|
4dd2dc259f | ||
|
|
80601a415a | ||
|
|
cc6f66ad11 | ||
|
|
30dc34ebe1 | ||
|
|
efed7ab5c0 | ||
|
|
f410fbf7e2 |
20
.github/workflows/publish-edge-snap.yml
vendored
Normal file
20
.github/workflows/publish-edge-snap.yml
vendored
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
name: Publish Edge Snap
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- master
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
publish_amd64:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
- uses: snapcore/action-build@v1
|
||||||
|
id: build
|
||||||
|
- uses: snapcore/action-publish@v1
|
||||||
|
env:
|
||||||
|
SNAPCRAFT_STORE_CREDENTIALS: ${{ secrets.STORE_LOGIN }}
|
||||||
|
with:
|
||||||
|
snap: ${{ steps.build.outputs.snap }}
|
||||||
|
release: edge
|
||||||
@@ -31,7 +31,7 @@ set(QET_DIR ${PROJECT_SOURCE_DIR})
|
|||||||
# Add sub directories
|
# Add sub directories
|
||||||
option(PACKAGE_TESTS "Build the tests" ON)
|
option(PACKAGE_TESTS "Build the tests" ON)
|
||||||
if(PACKAGE_TESTS)
|
if(PACKAGE_TESTS)
|
||||||
message("Add sub directorie tests")
|
message("Add sub directory tests")
|
||||||
add_subdirectory(tests)
|
add_subdirectory(tests)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
@@ -147,14 +147,6 @@ install(DIRECTORY examples DESTINATION share/qelectrotech)
|
|||||||
install(DIRECTORY titleblocks DESTINATION share/qelectrotech)
|
install(DIRECTORY titleblocks DESTINATION share/qelectrotech)
|
||||||
install(FILES LICENSE ELEMENTS.LICENSE CREDIT README ChangeLog DESTINATION share/doc/qelectrotech)
|
install(FILES LICENSE ELEMENTS.LICENSE CREDIT README ChangeLog DESTINATION share/doc/qelectrotech)
|
||||||
install(FILES misc/qelectrotech.desktop DESTINATION share/applications)
|
install(FILES misc/qelectrotech.desktop DESTINATION share/applications)
|
||||||
install(FILES misc/x-qet-element.xml
|
|
||||||
misc/x-qet-project.xml
|
|
||||||
misc/x-qet-titleblock.xml
|
|
||||||
DESTINATION share/mime/application)
|
|
||||||
install(FILES misc/x-qet-element.desktop
|
|
||||||
misc/x-qet-project.desktop
|
|
||||||
misc/x-qet-titleblock.desktop
|
|
||||||
DESTINATION share/mimelnk/application)
|
|
||||||
install(FILES misc/qelectrotech.xml DESTINATION share/mime/packages)
|
install(FILES misc/qelectrotech.xml DESTINATION share/mime/packages)
|
||||||
install(FILES misc/qelectrotech.appdata.xml DESTINATION ${QET_APPDATA_PATH})
|
install(FILES misc/qelectrotech.appdata.xml DESTINATION ${QET_APPDATA_PATH})
|
||||||
install(FILES ${QM_FILES} DESTINATION ${QET_LANG_PATH})
|
install(FILES ${QM_FILES} DESTINATION ${QET_LANG_PATH})
|
||||||
|
|||||||
68
ChangeLog
68
ChangeLog
@@ -1,3 +1,71 @@
|
|||||||
|
====== ChangeLog from 0.9.0 to 0.9.1 ======
|
||||||
|
|
||||||
|
*Bug fix:
|
||||||
|
Avoid WARNING: mime_xml.path is not defined
|
||||||
|
Update *.qm translations files
|
||||||
|
Improve 20 logic elements, thanks Vbxier
|
||||||
|
|
||||||
|
*Element Editor:
|
||||||
|
Fix wrong calculation of the bounding rect of an arc
|
||||||
|
|
||||||
|
*Diagram editor:
|
||||||
|
Improve conductor first and last segment position.
|
||||||
|
Unwanted change of the filling color of shapes in some condition.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
====== ChangeLog from 0.8 to 0.9 ======
|
||||||
|
|
||||||
|
|
||||||
|
*Diagram editor :
|
||||||
|
Improved QElectroTech speed (launch qet, open project, function)
|
||||||
|
A drop-down list has been added to the toolbar to change the size of the resize handles.
|
||||||
|
|
||||||
|
|
||||||
|
*Element Editor:
|
||||||
|
The "keep visual rotation" property of element texts is editable from the element editor.
|
||||||
|
Thanks to the work of antonioaja it is now possible to import a dxf directly from the element editor in a completely transparent way for the user.
|
||||||
|
In the background QElectroTech uses the dxf2elmt software. https://qelectrotech.org/forum/viewtopic.php?id=2265 https://github.com/antonioaja/dxf2elmt
|
||||||
|
Improved responsiveness when multiple shapes are selected or deleted, especially when working on a large converted DXF element.
|
||||||
|
https://qelectrotech.org/forum/viewtopic.php?pid=16612#p16612
|
||||||
|
|
||||||
|
*Other:
|
||||||
|
Add a "side project" tab in the "about" window.
|
||||||
|
In the general QElectroTech configuration, a drop down list allows to choose the scaling method for hdpi screens.
|
||||||
|
Allow open polygons (i.e. polylines) when saving in dxf format.
|
||||||
|
https://qelectrotech.org/forum/viewtopic.php?pid=16611#p16611
|
||||||
|
|
||||||
|
Added 'Other' option for slave device contact type.
|
||||||
|
https://github.com/qelectrotech/qelectrotech-source-mirror/pull/222
|
||||||
|
https://qelectrotech.org/forum/viewtopic.php?id=2264
|
||||||
|
|
||||||
|
*Logs:
|
||||||
|
|
||||||
|
Added a QElapsedTimer to calculate the time used to reload the item collection.
|
||||||
|
Improved QElapsedTimer to calculate the time used to reload the item collection in seconds instead of ms.
|
||||||
|
Added Linux pc.gpu.RAM information, but requires mesa-utils dependency on the Linux OS.
|
||||||
|
Added information about mounted disk volumes.
|
||||||
|
Added CPU architecture for which Qt was compiled in the aboutqetdialog widget and in the logs.
|
||||||
|
Added MSVC support to MachineInfo.
|
||||||
|
Added RAM information on Windows of available RAM.
|
||||||
|
Added QElectroTech version to the log file.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
* Elements collection :
|
||||||
|
Improve collection 8274 elements in 1097 categories (i.e. 9371 files).
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
* macOS :
|
||||||
|
Fix sqlite3 database export on macOS, now I use macports with Digikam scripts instead off Homebrew Package Manager.
|
||||||
|
See: https://invent.kde.org/graphics/digikam/-/tree/master/project/bundles/macports
|
||||||
|
|
||||||
|
|
||||||
|
*Bug fix:
|
||||||
|
see: https://git.tuxfamily.org/qet/qet.git/log/?h=0.8.1
|
||||||
|
|
||||||
====== ChangeLog from 0.7 to 0.8 ======
|
====== ChangeLog from 0.7 to 0.8 ======
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -16,11 +16,11 @@ The main goal of the developers is to provide a libre, easy to use and effective
|
|||||||
### Version
|
### Version
|
||||||
|
|
||||||
The current stable version is 0.80 and was released on 2021.02.21.
|
The current stable version is 0.80 and was released on 2021.02.21.
|
||||||
Once it has been officialy released, the stable version is always frozen and is no longer developed.
|
Once it has been officially released, the stable version is always frozen and is no longer developed.
|
||||||
|
|
||||||
New functionalities, bug and issue fixings are further made in the development version (currently 0.9), which can also be [downloaded](https://qelectrotech.org/download.html).
|
New functionalities, bug and issue fixings are further made in the development version (currently 0.9), which can also be [downloaded](https://qelectrotech.org/download.html).
|
||||||
|
|
||||||
Users who want to test and take benefits from the last software implementations should use the development version. But... use it at your own risk, since things are sometimes broken or only partialy implemented until they are done!
|
Users who want to test and take benefits from the last software implementations should use the development version. But... use it at your own risk, since things are sometimes broken or only partially implemented until they are done!
|
||||||
|
|
||||||
### License
|
### License
|
||||||
|
|
||||||
@@ -28,7 +28,7 @@ The software is licensed under [GNU/GPL](https://www.gnu.org/licenses/old-licens
|
|||||||
You are free to use, copy, modify and redistribute it under the terms of the license.
|
You are free to use, copy, modify and redistribute it under the terms of the license.
|
||||||
|
|
||||||
|
|
||||||
Like many other open source softwares, QElectroTech is provided as it is, without any warranty.
|
Like many other open source software, QElectroTech is provided as is, without any warranty.
|
||||||
|
|
||||||
### Development / technical choices
|
### Development / technical choices
|
||||||
|
|
||||||
|
|||||||
@@ -3,6 +3,31 @@ Changelog
|
|||||||
|
|
||||||
If by accident I have forgotten to credit someone in the CHANGELOG, email me and I will fix it.
|
If by accident I have forgotten to credit someone in the CHANGELOG, email me and I will fix it.
|
||||||
|
|
||||||
|
__3.3.4__
|
||||||
|
---------
|
||||||
|
|
||||||
|
* Fix compilation under Qt 6.2+ and stricter Qt compile settings. - _Christoph Cullmann_
|
||||||
|
|
||||||
|
__3.3.3__
|
||||||
|
---------
|
||||||
|
|
||||||
|
* Support for Qt 6.3+ - Fixed deprecated `QCryptographicHash::addData()` that will only support `QByteArrayView` going further. - _Moody Liu_
|
||||||
|
|
||||||
|
__3.3.2__
|
||||||
|
---------
|
||||||
|
|
||||||
|
* Fixed crash caused by sending a `writeAck` on a removed connection. - _Nicolas Werner_
|
||||||
|
|
||||||
|
__3.3.1__
|
||||||
|
---------
|
||||||
|
|
||||||
|
* Added support for _AppImage_ dynamic executable paths. - _Michael Klein_
|
||||||
|
|
||||||
|
__3.3.0__
|
||||||
|
---------
|
||||||
|
|
||||||
|
* Fixed message fragmentation issue causing crashes and incorrectly / inconsistently received messages. - _Nils Jeisecke_
|
||||||
|
|
||||||
__3.2.0__
|
__3.2.0__
|
||||||
---------
|
---------
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
cmake_minimum_required(VERSION 3.7.0)
|
cmake_minimum_required(VERSION 3.12.0)
|
||||||
|
|
||||||
project(SingleApplication LANGUAGES CXX)
|
project(SingleApplication LANGUAGES CXX)
|
||||||
|
|
||||||
@@ -38,3 +38,13 @@ endif()
|
|||||||
|
|
||||||
target_compile_definitions(${PROJECT_NAME} PUBLIC QAPPLICATION_CLASS=${QAPPLICATION_CLASS})
|
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})
|
||||||
|
target_compile_definitions(${PROJECT_NAME} PRIVATE
|
||||||
|
QT_NO_CAST_TO_ASCII
|
||||||
|
QT_NO_CAST_FROM_ASCII
|
||||||
|
QT_NO_URL_CAST_FROM_STRING
|
||||||
|
QT_NO_CAST_FROM_BYTEARRAY
|
||||||
|
QT_USE_QSTRINGBUILDER
|
||||||
|
QT_NO_NARROWING_CONVERSIONS_IN_CONNECT
|
||||||
|
QT_NO_KEYWORDS
|
||||||
|
QT_NO_FOREACH
|
||||||
|
)
|
||||||
|
|||||||
@@ -35,7 +35,7 @@ To include the library files I would recommend that you add it as a git
|
|||||||
submodule to your project. Here is how:
|
submodule to your project. Here is how:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
git submodule add git@github.com:itay-grudev/SingleApplication.git singleapplication
|
git submodule add https://github.com/itay-grudev/SingleApplication.git singleapplication
|
||||||
```
|
```
|
||||||
|
|
||||||
**Qmake:**
|
**Qmake:**
|
||||||
@@ -182,7 +182,8 @@ bool SingleApplication::sendMessage( QByteArray message, int timeout = 100 )
|
|||||||
```
|
```
|
||||||
|
|
||||||
Sends `message` to the Primary Instance. Uses `timeout` as a the maximum timeout
|
Sends `message` to the Primary Instance. Uses `timeout` as a the maximum timeout
|
||||||
in milliseconds for blocking functions
|
in milliseconds for blocking functions. Returns `true` if the message has been sent
|
||||||
|
successfully. If the message can't be sent or the function timeouts - returns `false`.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|||||||
0
SingleApplication/examples/basic/basic.pro
Executable file → Normal file
0
SingleApplication/examples/basic/basic.pro
Executable file → Normal file
1
SingleApplication/examples/basic/main.cpp
Executable file → Normal file
1
SingleApplication/examples/basic/main.cpp
Executable file → Normal file
@@ -2,7 +2,6 @@
|
|||||||
|
|
||||||
int main(int argc, char *argv[])
|
int main(int argc, char *argv[])
|
||||||
{
|
{
|
||||||
// Allow secondary instances
|
|
||||||
SingleApplication app( argc, argv );
|
SingleApplication app( argc, argv );
|
||||||
|
|
||||||
qWarning() << "Started a new instance";
|
qWarning() << "Started a new instance";
|
||||||
|
|||||||
0
SingleApplication/examples/sending_arguments/main.cpp
Executable file → Normal file
0
SingleApplication/examples/sending_arguments/main.cpp
Executable file → Normal file
0
SingleApplication/examples/sending_arguments/sending_arguments.pro
Executable file → Normal file
0
SingleApplication/examples/sending_arguments/sending_arguments.pro
Executable file → Normal file
@@ -235,7 +235,7 @@ QString SingleApplication::currentUser() const
|
|||||||
* Sends message to the Primary Instance.
|
* Sends message to the Primary Instance.
|
||||||
* @param message The message to send.
|
* @param message The message to send.
|
||||||
* @param timeout the maximum timeout in milliseconds for blocking functions.
|
* @param timeout the maximum timeout in milliseconds for blocking functions.
|
||||||
* @return true if the message was sent successfuly, false otherwise.
|
* @return true if the message was sent successfully, false otherwise.
|
||||||
*/
|
*/
|
||||||
bool SingleApplication::sendMessage( const QByteArray &message, int timeout )
|
bool SingleApplication::sendMessage( const QByteArray &message, int timeout )
|
||||||
{
|
{
|
||||||
@@ -248,10 +248,7 @@ bool SingleApplication::sendMessage( const QByteArray &message, int timeout )
|
|||||||
if( ! d->connectToPrimary( timeout, SingleApplicationPrivate::Reconnect ) )
|
if( ! d->connectToPrimary( timeout, SingleApplicationPrivate::Reconnect ) )
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
d->socket->write( message );
|
return d->writeConfirmedMessage( timeout, message );
|
||||||
bool dataWritten = d->socket->waitForBytesWritten( timeout );
|
|
||||||
d->socket->flush();
|
|
||||||
return dataWritten;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -131,21 +131,34 @@ QString SingleApplicationPrivate::getUsername()
|
|||||||
void SingleApplicationPrivate::genBlockServerName()
|
void SingleApplicationPrivate::genBlockServerName()
|
||||||
{
|
{
|
||||||
QCryptographicHash appData( QCryptographicHash::Sha256 );
|
QCryptographicHash appData( QCryptographicHash::Sha256 );
|
||||||
|
#if QT_VERSION < QT_VERSION_CHECK(6, 3, 0)
|
||||||
appData.addData( "SingleApplication", 17 );
|
appData.addData( "SingleApplication", 17 );
|
||||||
|
#else
|
||||||
|
appData.addData( QByteArrayView{"SingleApplication"} );
|
||||||
|
#endif
|
||||||
appData.addData( SingleApplication::app_t::applicationName().toUtf8() );
|
appData.addData( SingleApplication::app_t::applicationName().toUtf8() );
|
||||||
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 ( ! appDataList.isEmpty() )
|
if ( ! appDataList.isEmpty() )
|
||||||
appData.addData( appDataList.join( "" ).toUtf8() );
|
appData.addData( appDataList.join(QString()).toUtf8() );
|
||||||
|
|
||||||
if( ! (options & SingleApplication::Mode::ExcludeAppVersion) ){
|
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
|
#if defined(Q_OS_WIN)
|
||||||
appData.addData( SingleApplication::app_t::applicationFilePath().toLower().toUtf8() );
|
appData.addData( SingleApplication::app_t::applicationFilePath().toLower().toUtf8() );
|
||||||
|
#elif defined(Q_OS_LINUX)
|
||||||
|
// If the application is running as an AppImage then the APPIMAGE env var should be used
|
||||||
|
// instead of applicationPath() as each instance is launched with its own executable path
|
||||||
|
const QByteArray appImagePath = qgetenv( "APPIMAGE" );
|
||||||
|
if( appImagePath.isEmpty() ){ // Not running as AppImage: use path to executable file
|
||||||
|
appData.addData( SingleApplication::app_t::applicationFilePath().toUtf8() );
|
||||||
|
} else { // Running as AppImage: Use absolute path to AppImage file
|
||||||
|
appData.addData( appImagePath );
|
||||||
|
};
|
||||||
#else
|
#else
|
||||||
appData.addData( SingleApplication::app_t::applicationFilePath().toUtf8() );
|
appData.addData( SingleApplication::app_t::applicationFilePath().toUtf8() );
|
||||||
#endif
|
#endif
|
||||||
@@ -158,7 +171,7 @@ void SingleApplicationPrivate::genBlockServerName()
|
|||||||
|
|
||||||
// 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
|
||||||
// server naming requirements.
|
// server naming requirements.
|
||||||
blockServerName = appData.result().toBase64().replace("/", "_");
|
blockServerName = QString::fromUtf8(appData.result().toBase64().replace("/", "_"));
|
||||||
}
|
}
|
||||||
|
|
||||||
void SingleApplicationPrivate::initializeMemoryBlock() const
|
void SingleApplicationPrivate::initializeMemoryBlock() const
|
||||||
@@ -257,26 +270,52 @@ bool SingleApplicationPrivate::connectToPrimary( int msecs, ConnectionType conne
|
|||||||
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)
|
||||||
quint16 checksum = qChecksum(QByteArray(initMsg, static_cast<quint32>(initMsg.length())));
|
quint16 checksum = qChecksum(QByteArray(initMsg.constData(), static_cast<quint32>(initMsg.length())));
|
||||||
#else
|
#else
|
||||||
quint16 checksum = qChecksum(initMsg.constData(), static_cast<quint32>(initMsg.length()));
|
quint16 checksum = qChecksum(initMsg.constData(), static_cast<quint32>(initMsg.length()));
|
||||||
#endif
|
#endif
|
||||||
writeStream << checksum;
|
writeStream << checksum;
|
||||||
|
|
||||||
// The header indicates the message length that follows
|
return writeConfirmedMessage( static_cast<int>(msecs - time.elapsed()), initMsg );
|
||||||
|
}
|
||||||
|
|
||||||
|
void SingleApplicationPrivate::writeAck( QLocalSocket *sock ) {
|
||||||
|
sock->putChar('\n');
|
||||||
|
}
|
||||||
|
|
||||||
|
bool SingleApplicationPrivate::writeConfirmedMessage (int msecs, const QByteArray &msg)
|
||||||
|
{
|
||||||
|
QElapsedTimer time;
|
||||||
|
time.start();
|
||||||
|
|
||||||
|
// Frame 1: The header indicates the message length that follows
|
||||||
QByteArray header;
|
QByteArray header;
|
||||||
QDataStream headerStream(&header, QIODevice::WriteOnly);
|
QDataStream headerStream(&header, QIODevice::WriteOnly);
|
||||||
|
|
||||||
#if (QT_VERSION >= QT_VERSION_CHECK(5, 6, 0))
|
#if (QT_VERSION >= QT_VERSION_CHECK(5, 6, 0))
|
||||||
headerStream.setVersion(QDataStream::Qt_5_6);
|
headerStream.setVersion(QDataStream::Qt_5_6);
|
||||||
#endif
|
#endif
|
||||||
headerStream << static_cast <quint64>( initMsg.length() );
|
headerStream << static_cast <quint64>( msg.length() );
|
||||||
|
|
||||||
socket->write( header );
|
if( ! writeConfirmedFrame( static_cast<int>(msecs - time.elapsed()), header ))
|
||||||
socket->write( initMsg );
|
return false;
|
||||||
bool result = socket->waitForBytesWritten( static_cast<int>(msecs - time.elapsed()) );
|
|
||||||
|
// Frame 2: The message
|
||||||
|
return writeConfirmedFrame( static_cast<int>(msecs - time.elapsed()), msg );
|
||||||
|
}
|
||||||
|
|
||||||
|
bool SingleApplicationPrivate::writeConfirmedFrame( int msecs, const QByteArray &msg )
|
||||||
|
{
|
||||||
|
socket->write( msg );
|
||||||
socket->flush();
|
socket->flush();
|
||||||
return result;
|
|
||||||
|
bool result = socket->waitForReadyRead( msecs ); // await ack byte
|
||||||
|
if (result) {
|
||||||
|
socket->read( 1 );
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
quint16 SingleApplicationPrivate::blockChecksum() const
|
quint16 SingleApplicationPrivate::blockChecksum() const
|
||||||
@@ -321,33 +360,36 @@ 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, this,
|
||||||
[nextConnSocket, this](){
|
[nextConnSocket, this](){
|
||||||
auto &info = connectionMap[nextConnSocket];
|
auto &info = connectionMap[nextConnSocket];
|
||||||
Q_EMIT this->slotClientConnectionClosed( nextConnSocket, info.instanceId );
|
this->slotClientConnectionClosed( nextConnSocket, info.instanceId );
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
QObject::connect(nextConnSocket, &QLocalSocket::disconnected, nextConnSocket, &QLocalSocket::deleteLater);
|
QObject::connect(nextConnSocket, &QLocalSocket::disconnected, nextConnSocket, &QLocalSocket::deleteLater);
|
||||||
|
|
||||||
QObject::connect(nextConnSocket, &QLocalSocket::destroyed,
|
QObject::connect(nextConnSocket, &QLocalSocket::destroyed, this,
|
||||||
[nextConnSocket, this](){
|
[nextConnSocket, this](){
|
||||||
connectionMap.remove(nextConnSocket);
|
connectionMap.remove(nextConnSocket);
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
QObject::connect(nextConnSocket, &QLocalSocket::readyRead,
|
QObject::connect(nextConnSocket, &QLocalSocket::readyRead, this,
|
||||||
[nextConnSocket, this](){
|
[nextConnSocket, this](){
|
||||||
auto &info = connectionMap[nextConnSocket];
|
auto &info = connectionMap[nextConnSocket];
|
||||||
switch(info.stage){
|
switch(info.stage){
|
||||||
case StageHeader:
|
case StageInitHeader:
|
||||||
readInitMessageHeader(nextConnSocket);
|
readMessageHeader( nextConnSocket, StageInitBody );
|
||||||
break;
|
break;
|
||||||
case StageBody:
|
case StageInitBody:
|
||||||
readInitMessageBody(nextConnSocket);
|
readInitMessageBody(nextConnSocket);
|
||||||
break;
|
break;
|
||||||
case StageConnected:
|
case StageConnectedHeader:
|
||||||
Q_EMIT this->slotDataAvailable( nextConnSocket, info.instanceId );
|
readMessageHeader( nextConnSocket, StageConnectedBody );
|
||||||
|
break;
|
||||||
|
case StageConnectedBody:
|
||||||
|
this->slotDataAvailable( nextConnSocket, info.instanceId );
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
@@ -356,7 +398,7 @@ void SingleApplicationPrivate::slotConnectionEstablished()
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
void SingleApplicationPrivate::readInitMessageHeader( QLocalSocket *sock )
|
void SingleApplicationPrivate::readMessageHeader( QLocalSocket *sock, SingleApplicationPrivate::ConnectionStage nextStage )
|
||||||
{
|
{
|
||||||
if (!connectionMap.contains( sock )){
|
if (!connectionMap.contains( sock )){
|
||||||
return;
|
return;
|
||||||
@@ -376,29 +418,35 @@ void SingleApplicationPrivate::readInitMessageHeader( QLocalSocket *sock )
|
|||||||
quint64 msgLen = 0;
|
quint64 msgLen = 0;
|
||||||
headerStream >> msgLen;
|
headerStream >> msgLen;
|
||||||
ConnectionInfo &info = connectionMap[sock];
|
ConnectionInfo &info = connectionMap[sock];
|
||||||
info.stage = StageBody;
|
info.stage = nextStage;
|
||||||
info.msgLen = msgLen;
|
info.msgLen = msgLen;
|
||||||
|
|
||||||
if ( sock->bytesAvailable() >= (qint64) msgLen ){
|
writeAck( sock );
|
||||||
readInitMessageBody( sock );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool SingleApplicationPrivate::isFrameComplete( QLocalSocket *sock )
|
||||||
|
{
|
||||||
|
if (!connectionMap.contains( sock )){
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
ConnectionInfo &info = connectionMap[sock];
|
||||||
|
if( sock->bytesAvailable() < ( qint64 )info.msgLen ){
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void SingleApplicationPrivate::readInitMessageBody( QLocalSocket *sock )
|
void SingleApplicationPrivate::readInitMessageBody( QLocalSocket *sock )
|
||||||
{
|
{
|
||||||
Q_Q(SingleApplication);
|
Q_Q(SingleApplication);
|
||||||
|
|
||||||
if (!connectionMap.contains( sock )){
|
if( !isFrameComplete( sock ) )
|
||||||
return;
|
return;
|
||||||
}
|
|
||||||
|
|
||||||
ConnectionInfo &info = connectionMap[sock];
|
|
||||||
if( sock->bytesAvailable() < ( qint64 )info.msgLen ){
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Read the message body
|
// Read the message body
|
||||||
QByteArray msgBytes = sock->read(info.msgLen);
|
QByteArray msgBytes = sock->readAll();
|
||||||
QDataStream readStream(msgBytes);
|
QDataStream readStream(msgBytes);
|
||||||
|
|
||||||
#if (QT_VERSION >= QT_VERSION_CHECK(5, 6, 0))
|
#if (QT_VERSION >= QT_VERSION_CHECK(5, 6, 0))
|
||||||
@@ -424,7 +472,7 @@ void SingleApplicationPrivate::readInitMessageBody( QLocalSocket *sock )
|
|||||||
readStream >> msgChecksum;
|
readStream >> msgChecksum;
|
||||||
|
|
||||||
#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
|
#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
|
||||||
const quint16 actualChecksum = qChecksum(QByteArray(msgBytes, static_cast<quint32>(msgBytes.length() - sizeof(quint16))));
|
const quint16 actualChecksum = qChecksum(QByteArray(msgBytes.constData(), static_cast<quint32>(msgBytes.length() - sizeof(quint16))));
|
||||||
#else
|
#else
|
||||||
const quint16 actualChecksum = qChecksum(msgBytes.constData(), static_cast<quint32>(msgBytes.length() - sizeof(quint16)));
|
const quint16 actualChecksum = qChecksum(msgBytes.constData(), static_cast<quint32>(msgBytes.length() - sizeof(quint16)));
|
||||||
#endif
|
#endif
|
||||||
@@ -438,8 +486,9 @@ void SingleApplicationPrivate::readInitMessageBody( QLocalSocket *sock )
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ConnectionInfo &info = connectionMap[sock];
|
||||||
info.instanceId = instanceId;
|
info.instanceId = instanceId;
|
||||||
info.stage = StageConnected;
|
info.stage = StageConnectedHeader;
|
||||||
|
|
||||||
if( connectionType == NewInstance ||
|
if( connectionType == NewInstance ||
|
||||||
( connectionType == SecondaryInstance &&
|
( connectionType == SecondaryInstance &&
|
||||||
@@ -448,21 +497,30 @@ void SingleApplicationPrivate::readInitMessageBody( QLocalSocket *sock )
|
|||||||
Q_EMIT q->instanceStarted();
|
Q_EMIT q->instanceStarted();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (sock->bytesAvailable() > 0){
|
writeAck( sock );
|
||||||
Q_EMIT this->slotDataAvailable( sock, instanceId );
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void SingleApplicationPrivate::slotDataAvailable( QLocalSocket *dataSocket, quint32 instanceId )
|
void SingleApplicationPrivate::slotDataAvailable( QLocalSocket *dataSocket, quint32 instanceId )
|
||||||
{
|
{
|
||||||
Q_Q(SingleApplication);
|
Q_Q(SingleApplication);
|
||||||
Q_EMIT q->receivedMessage( instanceId, dataSocket->readAll() );
|
|
||||||
|
if ( !isFrameComplete( dataSocket ) )
|
||||||
|
return;
|
||||||
|
|
||||||
|
const QByteArray message = dataSocket->readAll();
|
||||||
|
|
||||||
|
writeAck( dataSocket );
|
||||||
|
|
||||||
|
ConnectionInfo &info = connectionMap[dataSocket];
|
||||||
|
info.stage = StageConnectedHeader;
|
||||||
|
|
||||||
|
Q_EMIT q->receivedMessage( instanceId, message);
|
||||||
}
|
}
|
||||||
|
|
||||||
void SingleApplicationPrivate::slotClientConnectionClosed( QLocalSocket *closedSocket, quint32 instanceId )
|
void SingleApplicationPrivate::slotClientConnectionClosed( QLocalSocket *closedSocket, quint32 instanceId )
|
||||||
{
|
{
|
||||||
if( closedSocket->bytesAvailable() > 0 )
|
if( closedSocket->bytesAvailable() > 0 )
|
||||||
Q_EMIT slotDataAvailable( closedSocket, instanceId );
|
slotDataAvailable( closedSocket, instanceId );
|
||||||
}
|
}
|
||||||
|
|
||||||
void SingleApplicationPrivate::randomSleep()
|
void SingleApplicationPrivate::randomSleep()
|
||||||
@@ -471,7 +529,7 @@ void SingleApplicationPrivate::randomSleep()
|
|||||||
QThread::msleep( QRandomGenerator::global()->bounded( 8u, 18u ));
|
QThread::msleep( QRandomGenerator::global()->bounded( 8u, 18u ));
|
||||||
#else
|
#else
|
||||||
qsrand( QDateTime::currentMSecsSinceEpoch() % std::numeric_limits<uint>::max() );
|
qsrand( QDateTime::currentMSecsSinceEpoch() % std::numeric_limits<uint>::max() );
|
||||||
QThread::msleep( 8 + static_cast <unsigned long>( static_cast <float>( qrand() ) / RAND_MAX * 10 ));
|
QThread::msleep( qrand() % 11 + 8);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -61,9 +61,10 @@ public:
|
|||||||
Reconnect = 3
|
Reconnect = 3
|
||||||
};
|
};
|
||||||
enum ConnectionStage : quint8 {
|
enum ConnectionStage : quint8 {
|
||||||
StageHeader = 0,
|
StageInitHeader = 0,
|
||||||
StageBody = 1,
|
StageInitBody = 1,
|
||||||
StageConnected = 2,
|
StageConnectedHeader = 2,
|
||||||
|
StageConnectedBody = 3,
|
||||||
};
|
};
|
||||||
Q_DECLARE_PUBLIC(SingleApplication)
|
Q_DECLARE_PUBLIC(SingleApplication)
|
||||||
|
|
||||||
@@ -79,8 +80,12 @@ public:
|
|||||||
quint16 blockChecksum() const;
|
quint16 blockChecksum() const;
|
||||||
qint64 primaryPid() const;
|
qint64 primaryPid() const;
|
||||||
QString primaryUser() const;
|
QString primaryUser() const;
|
||||||
void readInitMessageHeader(QLocalSocket *socket);
|
bool isFrameComplete(QLocalSocket *sock);
|
||||||
|
void readMessageHeader(QLocalSocket *socket, ConnectionStage nextStage);
|
||||||
void readInitMessageBody(QLocalSocket *socket);
|
void readInitMessageBody(QLocalSocket *socket);
|
||||||
|
void writeAck(QLocalSocket *sock);
|
||||||
|
bool writeConfirmedFrame(int msecs, const QByteArray &msg);
|
||||||
|
bool writeConfirmedMessage(int msecs, const QByteArray &msg);
|
||||||
static void randomSleep();
|
static void randomSleep();
|
||||||
void addAppData(const QString &data);
|
void addAppData(const QString &data);
|
||||||
QStringList appData() const;
|
QStringList appData() const;
|
||||||
|
|||||||
@@ -13,6 +13,8 @@
|
|||||||
"--socket=fallback-x11",
|
"--socket=fallback-x11",
|
||||||
"--device=dri",
|
"--device=dri",
|
||||||
"--share=ipc",
|
"--share=ipc",
|
||||||
|
"--share=network",
|
||||||
|
"--socket=cups",
|
||||||
"--filesystem=host"
|
"--filesystem=host"
|
||||||
],
|
],
|
||||||
"modules": [
|
"modules": [
|
||||||
@@ -100,8 +102,8 @@
|
|||||||
"sources": [
|
"sources": [
|
||||||
{
|
{
|
||||||
"type": "file",
|
"type": "file",
|
||||||
"url": "https://files.pythonhosted.org/packages/45/be/d5940d365ebf256e490bc6c10837244e0b8dda08a7d790691767263c318d/qet_tb_generator-1.2.5.tar.gz",
|
"url": "https://files.pythonhosted.org/packages/70/aa/ebde0dddfbde799a4e8cf0564e52f95089105a7f562739ee1d16ff5a495a/qet_tb_generator-1.3.1.tar.gz",
|
||||||
"sha256": "37c3298602244f3152fbb7601caba9b4862bac782991fbb472eab91afb70d09c"
|
"sha256": "52c9836387d54bc30ea29272068ec156fc65c3905e0cb863afd9418abc3c0907"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,17 +1,17 @@
|
|||||||
From 2a390b5188fe070295090b1bd37273d12963b371 Mon Sep 17 00:00:00 2001
|
From 14f0685ddcf3a7d64bb85a3e9a9ac97c369bb508 Mon Sep 17 00:00:00 2001
|
||||||
From: Laurent Trinques <scorpio@qelectrotech.org>
|
From: Laurent Trinques <scorpio@qelectrotech.org>
|
||||||
Date: Sat, 26 Sep 2020 22:52:52 +0200
|
Date: Sat, 26 Sep 2020 22:52:52 +0200
|
||||||
Subject: [PATCH] build: Fix the installation paths
|
Subject: [PATCH] build: Fix the installation paths
|
||||||
|
|
||||||
---
|
---
|
||||||
qelectrotech.pro | 14 +++++++-------
|
qelectrotech.pro | 10 +++++-----
|
||||||
1 file changed, 7 insertions(+), 7 deletions(-)
|
1 file changed, 5 insertions(+), 5 deletions(-)
|
||||||
|
|
||||||
diff --git a/qelectrotech.pro b/qelectrotech.pro
|
diff --git a/qelectrotech.pro b/qelectrotech.pro
|
||||||
index 2901a30d5..1019a9870 100644
|
index 7baddbb08..5dcda04b6 100644
|
||||||
--- a/qelectrotech.pro
|
--- a/qelectrotech.pro
|
||||||
+++ b/qelectrotech.pro
|
+++ b/qelectrotech.pro
|
||||||
@@ -5,20 +5,20 @@
|
@@ -5,18 +5,18 @@
|
||||||
# Chemins utilises pour la compilation et l'installation de QET
|
# Chemins utilises pour la compilation et l'installation de QET
|
||||||
unix {
|
unix {
|
||||||
# Chemins UNIX
|
# Chemins UNIX
|
||||||
@@ -25,12 +25,8 @@ index 2901a30d5..1019a9870 100644
|
|||||||
QET_LANG_PATH = 'share/qelectrotech/lang/'
|
QET_LANG_PATH = 'share/qelectrotech/lang/'
|
||||||
QET_EXAMPLES_PATH = 'share/qelectrotech/examples/'
|
QET_EXAMPLES_PATH = 'share/qelectrotech/examples/'
|
||||||
- QET_LICENSE_PATH = 'doc/qelectrotech/'
|
- QET_LICENSE_PATH = 'doc/qelectrotech/'
|
||||||
- QET_MIME_XML_PATH = '../share/mime/application/'
|
|
||||||
- QET_MIME_DESKTOP_PATH = '../share/mimelnk/application/'
|
|
||||||
- QET_MIME_PACKAGE_PATH = '../share/mime/packages/'
|
- QET_MIME_PACKAGE_PATH = '../share/mime/packages/'
|
||||||
+ QET_LICENSE_PATH = 'share/doc/qelectrotech/'
|
+ QET_LICENSE_PATH = 'share/doc/qelectrotech/'
|
||||||
+ QET_MIME_XML_PATH = 'share/mime/application/'
|
|
||||||
+ QET_MIME_DESKTOP_PATH = 'share/mimelnk/application/'
|
|
||||||
+ QET_MIME_PACKAGE_PATH = 'share/mime/packages/'
|
+ QET_MIME_PACKAGE_PATH = 'share/mime/packages/'
|
||||||
QET_DESKTOP_PATH = 'share/applications/'
|
QET_DESKTOP_PATH = 'share/applications/'
|
||||||
QET_ICONS_PATH = 'share/icons/hicolor/'
|
QET_ICONS_PATH = 'share/icons/hicolor/'
|
||||||
@@ -40,5 +36,5 @@ index 2901a30d5..1019a9870 100644
|
|||||||
}
|
}
|
||||||
win32 {
|
win32 {
|
||||||
--
|
--
|
||||||
2.28.0
|
2.35.1
|
||||||
|
|
||||||
|
|||||||
18
build-aux/snap/local/launchers/qelectrotech-launch
Executable file → Normal file
18
build-aux/snap/local/launchers/qelectrotech-launch
Executable file → Normal file
@@ -1,15 +1,5 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
|
|
||||||
# a KDE session forces the KDE Plasma platformtheme which is incompatible with QET
|
|
||||||
# unset the ENV vars in that case to prevent loading of the theme
|
|
||||||
if [ ! -z "$KDE_FULL_SESSION" ]; then
|
|
||||||
unset KDE_FULL_SESSION
|
|
||||||
fi
|
|
||||||
|
|
||||||
if echo "$XDG_CURRENT_DESKTOP" | grep -q KDE; then
|
|
||||||
unset XDG_CURRENT_DESKTOP
|
|
||||||
fi
|
|
||||||
|
|
||||||
# migrate .qet directory from SNAP_USER_DATA to SNAP_USER_COMMON
|
# migrate .qet directory from SNAP_USER_DATA to SNAP_USER_COMMON
|
||||||
from="$SNAP_USER_DATA/.qet"
|
from="$SNAP_USER_DATA/.qet"
|
||||||
to="$SNAP_USER_COMMON/.qet"
|
to="$SNAP_USER_COMMON/.qet"
|
||||||
@@ -23,12 +13,4 @@ fi
|
|||||||
mkdir -p "$HOME/.qet"
|
mkdir -p "$HOME/.qet"
|
||||||
ln -snf "$SNAP/bin/DXFtoQET" "$HOME/.qet/DXFtoQET"
|
ln -snf "$SNAP/bin/DXFtoQET" "$HOME/.qet/DXFtoQET"
|
||||||
|
|
||||||
# start desktop portal. Open & save dialogs might fail if it is not running
|
|
||||||
dbus-send --print-reply \
|
|
||||||
--dest=org.freedesktop.DBus \
|
|
||||||
/org/freedesktop/DBus \
|
|
||||||
org.freedesktop.DBus.StartServiceByName \
|
|
||||||
string:org.freedesktop.portal.Desktop \
|
|
||||||
uint32:0
|
|
||||||
|
|
||||||
exec "${@}"
|
exec "${@}"
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
name: qelectrotech
|
name: qelectrotech
|
||||||
title: QElectroTech
|
title: QElectroTech
|
||||||
base: core18
|
base: core20
|
||||||
adopt-info: qelectrotech
|
adopt-info: qelectrotech
|
||||||
license: GPL-2.0
|
license: GPL-2.0
|
||||||
summary: Electrical diagram editor
|
summary: Electrical diagram editor
|
||||||
@@ -10,6 +10,7 @@ description: |
|
|||||||
|
|
||||||
grade: stable
|
grade: stable
|
||||||
confinement: strict
|
confinement: strict
|
||||||
|
compression: lzo
|
||||||
|
|
||||||
architectures:
|
architectures:
|
||||||
- build-on: amd64
|
- build-on: amd64
|
||||||
@@ -30,15 +31,14 @@ apps:
|
|||||||
extensions: [kde-neon]
|
extensions: [kde-neon]
|
||||||
plugs: &plugs [opengl, unity7, home, removable-media, gsettings, network, cups-control]
|
plugs: &plugs [opengl, unity7, home, removable-media, gsettings, network, cups-control]
|
||||||
environment: &env
|
environment: &env
|
||||||
__EGL_VENDOR_LIBRARY_DIRS: $SNAP/kf5/usr/share/glvnd/egl_vendor.d:$SNAP/usr/share/glvnd/egl_vendor.d
|
|
||||||
TCL_LIBRARY: $SNAP/usr/share/tcltk/tcl8.6
|
TCL_LIBRARY: $SNAP/usr/share/tcltk/tcl8.6
|
||||||
QT_QPA_PLATFORMTHEME: gtk3
|
|
||||||
QT_AUTO_SCREEN_SCALE_FACTOR: 1
|
|
||||||
HOME: $SNAP_USER_COMMON
|
HOME: $SNAP_USER_COMMON
|
||||||
PYTHONPATH: $SNAP:$SNAP/lib/python3.6/site-packages:$SNAP/usr/lib/python3.6:$SNAP/usr/lib/python3.6/lib-dynload
|
PYTHONPATH: $SNAP:$SNAP/lib/python3.8/site-packages:$SNAP/usr/lib/python3.8:$SNAP/usr/lib/python3.8/lib-dynload
|
||||||
|
|
||||||
qet-tb-generator:
|
qet-tb-generator:
|
||||||
command: bin/qelectrotech-launch $SNAP/bin/qet_tb_generator
|
command: bin/qet_tb_generator
|
||||||
|
command-chain:
|
||||||
|
- bin/qelectrotech-launch
|
||||||
extensions: [kde-neon]
|
extensions: [kde-neon]
|
||||||
plugs: *plugs
|
plugs: *plugs
|
||||||
environment: *env
|
environment: *env
|
||||||
@@ -58,8 +58,7 @@ parts:
|
|||||||
|
|
||||||
qet-tb-generator:
|
qet-tb-generator:
|
||||||
plugin: python
|
plugin: python
|
||||||
python-version: python3
|
source: https://github.com/raulroda/qet_tb_generator-plugin.git
|
||||||
source: https://github.com/qelectrotech/qet_tb_generator.git
|
|
||||||
python-packages: [PySimpleGUI]
|
python-packages: [PySimpleGUI]
|
||||||
stage-packages:
|
stage-packages:
|
||||||
- python3-lxml
|
- python3-lxml
|
||||||
@@ -69,14 +68,14 @@ parts:
|
|||||||
kde-sdk-setup:
|
kde-sdk-setup:
|
||||||
plugin: nil
|
plugin: nil
|
||||||
build-snaps:
|
build-snaps:
|
||||||
- kde-frameworks-5-core18-sdk
|
- kde-frameworks-5-qt-5-15-3-core20-sdk
|
||||||
build-packages:
|
build-packages:
|
||||||
- g++
|
- g++
|
||||||
- mesa-common-dev
|
- mesa-common-dev
|
||||||
- libglvnd-dev
|
- libglvnd-dev
|
||||||
- rsync
|
- rsync
|
||||||
override-build: |
|
override-build: |
|
||||||
rsync -a --ignore-existing /snap/kde-frameworks-5-core18-sdk/current/ /
|
rsync -a --ignore-existing /snap/kde-frameworks-5-qt-5-15-3-core20-sdk/current/ /
|
||||||
|
|
||||||
dxf-to-qet:
|
dxf-to-qet:
|
||||||
after: [kde-sdk-setup]
|
after: [kde-sdk-setup]
|
||||||
@@ -92,19 +91,18 @@ parts:
|
|||||||
after: [kde-sdk-setup]
|
after: [kde-sdk-setup]
|
||||||
plugin: nil
|
plugin: nil
|
||||||
source: .
|
source: .
|
||||||
stage-packages: [ git, sqlite3 ]
|
stage-packages: [ git, sqlite3, xdg-user-dirs ]
|
||||||
build-packages:
|
build-packages:
|
||||||
- git
|
- git
|
||||||
- libsqlite3-dev
|
- libsqlite3-dev
|
||||||
override-pull: |
|
override-build: |
|
||||||
snapcraftctl pull
|
displayed_version=$(grep "displayedVersion" sources/qet.h | tr -d "\";" | cut -d" " -f5)
|
||||||
snap_version=$(git describe --dirty)
|
snap_version="${displayed_version}-g$(git rev-parse --short=8 HEAD)"
|
||||||
modified_displayed_version=$snap_version".snap"
|
modified_displayed_version="${snap_version}.snap"
|
||||||
sed -i -E "s|const QString displayedVersion =.*|const QString displayedVersion =\"$modified_displayed_version\";|" sources/qet.h
|
sed -i -E "s|const QString displayedVersion =.*|const QString displayedVersion =\"$modified_displayed_version\";|" sources/qet.h
|
||||||
snapcraftctl set-version "$snap_version"
|
snapcraftctl set-version "$snap_version"
|
||||||
override-build: |
|
|
||||||
qmake "$SNAPCRAFT_PART_SRC/qelectrotech.pro"
|
qmake "$SNAPCRAFT_PART_SRC/qelectrotech.pro"
|
||||||
make -j$(nproc)
|
make -j${SNAPCRAFT_PARALLEL_BUILD_COUNT}
|
||||||
make install INSTALL_ROOT="$SNAPCRAFT_PART_INSTALL"
|
make install INSTALL_ROOT="$SNAPCRAFT_PART_INSTALL"
|
||||||
override-stage: |
|
override-stage: |
|
||||||
snapcraftctl stage
|
snapcraftctl stage
|
||||||
@@ -115,11 +113,14 @@ parts:
|
|||||||
cleanup:
|
cleanup:
|
||||||
after: [qelectrotech, dxf-to-qet, qet-tb-generator]
|
after: [qelectrotech, dxf-to-qet, qet-tb-generator]
|
||||||
plugin: nil
|
plugin: nil
|
||||||
build-snaps: [core18, kde-frameworks-5-core18]
|
build-snaps: [kde-frameworks-5-qt-5-15-3-core20]
|
||||||
override-prime: |
|
override-prime: |
|
||||||
# Remove all files from snap that are already included in the base snap or in
|
|
||||||
# any connected content snaps
|
|
||||||
set -eux
|
set -eux
|
||||||
for snap in "core18" "kde-frameworks-5-core18"; do # List all content-snaps and base snaps you're using here
|
for snap in "kde-frameworks-5-qt-5-15-3-core20"; do # List all content-snaps you're using here
|
||||||
cd "/snap/$snap/current" && find . -type f,l -exec rm -f "$SNAPCRAFT_PRIME/{}" \;
|
cd "/snap/$snap/current" && find . -type f,l -exec rm -f "$SNAPCRAFT_PRIME/{}" "$SNAPCRAFT_PRIME/usr/{}" \;
|
||||||
done
|
done
|
||||||
|
for cruft in bug lintian man; do
|
||||||
|
rm -rf $SNAPCRAFT_PRIME/usr/share/$cruft
|
||||||
|
done
|
||||||
|
find $SNAPCRAFT_PRIME/usr/share/doc/ -type f -not -name 'copyright' -delete
|
||||||
|
find $SNAPCRAFT_PRIME/usr/share -type d -empty -delete
|
||||||
|
|||||||
0
build-aux/windows/Lancer QET.bat
Normal file → Executable file
0
build-aux/windows/Lancer QET.bat
Normal file → Executable file
@@ -47,8 +47,6 @@ endif()
|
|||||||
endif()
|
endif()
|
||||||
|
|
||||||
message("QET_LICENSE_PATH " ${QET_LICENSE_PATH})
|
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_MIME_PACKAGE_PATH " ${QET_MIME_PACKAGE_PATH})
|
||||||
message("QET_DESKTOP_PATH " ${QET_DESKTOP_PATH})
|
message("QET_DESKTOP_PATH " ${QET_DESKTOP_PATH})
|
||||||
message("QET_ICONS_PATH " ${QET_ICONS_PATH})
|
message("QET_ICONS_PATH " ${QET_ICONS_PATH})
|
||||||
|
|||||||
@@ -28,8 +28,6 @@ if(UNIX AND NOT APPLE)
|
|||||||
set(QET_LANG_PATH "share/qelectrotech/lang/")
|
set(QET_LANG_PATH "share/qelectrotech/lang/")
|
||||||
set(QET_EXAMPLES_PATH "share/qelectrotech/examples/")
|
set(QET_EXAMPLES_PATH "share/qelectrotech/examples/")
|
||||||
set(QET_LICENSE_PATH "doc/qelectrotech/")
|
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_MIME_PACKAGE_PATH "../share/mime/packages/")
|
||||||
set(QET_DESKTOP_PATH "share/applications/")
|
set(QET_DESKTOP_PATH "share/applications/")
|
||||||
set(QET_ICONS_PATH "share/icons/hicolor/")
|
set(QET_ICONS_PATH "share/icons/hicolor/")
|
||||||
@@ -47,8 +45,6 @@ if(APPLE)
|
|||||||
set(QET_LANG_PATH "../Resources/lang/")
|
set(QET_LANG_PATH "../Resources/lang/")
|
||||||
set(QET_EXAMPLES_PATH "share/qelectrotech/examples/")
|
set(QET_EXAMPLES_PATH "share/qelectrotech/examples/")
|
||||||
set(QET_LICENSE_PATH "doc/qelectrotech/")
|
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_DESKTOP_PATH "share/applications/")
|
||||||
set(QET_ICONS_PATH "share/icons/hicolor/")
|
set(QET_ICONS_PATH "share/icons/hicolor/")
|
||||||
set(QET_MAN_PATH "man/")
|
set(QET_MAN_PATH "man/")
|
||||||
|
|||||||
@@ -1,16 +1,17 @@
|
|||||||
<definition version="0.80" link_type="simple" hotspot_y="13" type="element" height="250" hotspot_x="15" width="30">
|
<definition version="0.80" link_type="simple" hotspot_y="13" type="element" height="250" hotspot_x="15" width="30">
|
||||||
<uuid uuid="{bb4c314c-2020-4c8a-b465-632eb562e1f7}"/>
|
<uuid uuid="{dd31e345-1749-fa3f-03f0-d2d4bce845bc}" />
|
||||||
<names>
|
<names>
|
||||||
<name lang="fr">Cable</name>
|
<name lang="fr">Cable</name>
|
||||||
<name lang="cs">Kabel</name>
|
<name lang="cs">Kabel</name>
|
||||||
<name lang="hu">Kábel/name>
|
<name lang="de">Kabel</name>
|
||||||
|
<name lang="hu">Kábel</name>
|
||||||
</names>
|
</names>
|
||||||
<elementInformations />
|
<elementInformations />
|
||||||
<informations></informations>
|
<informations />
|
||||||
<description>
|
<description>
|
||||||
<rect ry="0" y="0" x="-10" style="line-style:normal;line-weight:normal;filling:none;color:black" height="230" rx="0" width="20" antialias="false" />
|
<rect ry="0" y="0" x="-10" style="line-style:normal;line-weight:normal;filling:none;color:black" height="230" rx="0" width="20" antialias="false" />
|
||||||
<dynamic_text uuid="{3a1faa81-e74a-4640-af5a-3fb5c454f467}" rotation="270" text_width="-1" text_from="ElementInfo" font="Sans Serif,7,-1,5,50,0,0,0,0,0" frame="false" Valignment="AlignTop" y="200" x="-10" Halignment="AlignLeft" z="2">
|
<dynamic_text uuid="{3a1faa81-e74a-4640-af5a-3fb5c454f467}" rotation="270" text_width="-1" text_from="ElementInfo" font="Sans Serif,7,-1,5,50,0,0,0,0,0" frame="false" Valignment="AlignTop" y="200" x="-10" Halignment="AlignLeft" z="2">
|
||||||
<text></text>
|
<text />
|
||||||
<info_name>label</info_name>
|
<info_name>label</info_name>
|
||||||
</dynamic_text>
|
</dynamic_text>
|
||||||
<line x1="0" x2="0" end1="none" end2="none" y2="0" length1="1.5" y1="-4" length2="1.5" style="line-style:normal;line-weight:normal;filling:none;color:black" antialias="false" />
|
<line x1="0" x2="0" end1="none" end2="none" y2="0" length1="1.5" y1="-4" length2="1.5" style="line-style:normal;line-weight:normal;filling:none;color:black" antialias="false" />
|
||||||
@@ -0,0 +1,223 @@
|
|||||||
|
<definition type="element" width="550" hotspot_y="65" height="70" link_type="simple" version="0.90" hotspot_x="265">
|
||||||
|
<uuid uuid="{c99de07b-0296-4e75-8a90-3b5c533510e8}"/>
|
||||||
|
<names>
|
||||||
|
<name lang="en">24 pin connector female+male</name>
|
||||||
|
<name lang="hu">24 tűs csatlakozó anya+apa</name>
|
||||||
|
</names>
|
||||||
|
<elementInformations>
|
||||||
|
<elementInformation show="1" name="manufacturer">Weidmüller</elementInformation>
|
||||||
|
<elementInformation show="1" name="supplier"></elementInformation>
|
||||||
|
<elementInformation show="1" name="manufacturer_reference">HDC HE 24 MS 25-48</elementInformation>
|
||||||
|
<elementInformation show="1" name="quantity"></elementInformation>
|
||||||
|
<elementInformation show="1" name="description"></elementInformation>
|
||||||
|
<elementInformation show="1" name="label"></elementInformation>
|
||||||
|
<elementInformation show="1" name="comment"></elementInformation>
|
||||||
|
<elementInformation show="1" name="plant"></elementInformation>
|
||||||
|
<elementInformation show="1" name="designation"></elementInformation>
|
||||||
|
<elementInformation show="1" name="machine_manufacturer_reference"></elementInformation>
|
||||||
|
<elementInformation show="1" name="unity"></elementInformation>
|
||||||
|
</elementInformations>
|
||||||
|
<informations></informations>
|
||||||
|
<description>
|
||||||
|
<dynamic_text frame="false" z="1" text_from="ElementInfo" rotation="0" keep_visual_rotation="false" uuid="{c28b53eb-1e17-4e90-b9af-ff86d19d1a56}" Valignment="AlignTop" Halignment="AlignLeft" y="-90" text_width="-1" x="-270" font="Sans Serif,8,-1,5,50,0,0,0,0,0">
|
||||||
|
<text></text>
|
||||||
|
<info_name>label</info_name>
|
||||||
|
</dynamic_text>
|
||||||
|
<line y1="-36" y2="-45" length2="1.5" antialias="false" x2="-240" end2="none" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black" x1="-240" length1="1.5"/>
|
||||||
|
<text rotation="0" color="#000000" text="12" y="-40" x="1" font="Sans Serif,7,-1,5,50,0,0,0,0,0"/>
|
||||||
|
<text rotation="0" color="#000000" text="20" y="-40" x="161" font="Sans Serif,7,-1,5,50,0,0,0,0,0"/>
|
||||||
|
<text rotation="0" color="#000000" text="4" y="-40" x="-159" font="Sans Serif,7,-1,5,50,0,0,0,0,0"/>
|
||||||
|
<text rotation="0" color="#000000" text="8" y="-40" x="-79" font="Sans Serif,7,-1,5,50,0,0,0,0,0"/>
|
||||||
|
<text rotation="0" color="#000000" text="3" y="-40" x="-179" font="Sans Serif,7,-1,5,50,0,0,0,0,0"/>
|
||||||
|
<text rotation="0" color="#000000" text="2" y="-40" x="-199" font="Sans Serif,7,-1,5,50,0,0,0,0,0"/>
|
||||||
|
<line y1="-36" y2="-45" length2="1.5" antialias="false" x2="-20" end2="none" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black" x1="-20" length1="1.5"/>
|
||||||
|
<line y1="-25" y2="-14" length2="1.5" antialias="false" x2="-160" end2="none" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black" x1="-160" length1="1.5"/>
|
||||||
|
<line y1="-25" y2="-14" length2="1.5" antialias="false" x2="-200" end2="none" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black" x1="-200" length1="1.5"/>
|
||||||
|
<line y1="-36" y2="-45" length2="1.5" antialias="false" x2="0" end2="none" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black" x1="0" length1="1.5"/>
|
||||||
|
<line y1="-25" y2="-14" length2="1.5" antialias="false" x2="0" end2="none" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black" x1="0" length1="1.5"/>
|
||||||
|
<line y1="-25" y2="-14" length2="1.5" antialias="false" x2="-80" end2="none" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black" x1="-80" length1="1.5"/>
|
||||||
|
<line y1="-25" y2="-14" length2="1.5" antialias="false" x2="-240" end2="none" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black" x1="-240" length1="1.5"/>
|
||||||
|
<line y1="-36" y2="-45" length2="1.5" antialias="false" x2="260" end2="none" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black" x1="260" length1="1.5"/>
|
||||||
|
<line y1="-25" y2="-14" length2="1.5" antialias="false" x2="160" end2="none" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black" x1="160" length1="1.5"/>
|
||||||
|
<line y1="-25" y2="-14" length2="1.5" antialias="false" x2="-120" end2="none" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black" x1="-120" length1="1.5"/>
|
||||||
|
<line y1="-36" y2="-45" length2="1.5" antialias="false" x2="-40" end2="none" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black" x1="-40" length1="1.5"/>
|
||||||
|
<arc antialias="true" width="6" height="6" start="-180" angle="-180" style="line-style:normal;line-weight:normal;filling:none;color:black" y="-35" x="-3"/>
|
||||||
|
<line y1="-25" y2="-14" length2="1.5" antialias="false" x2="-40" end2="none" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black" x1="-40" length1="1.5"/>
|
||||||
|
<rect rx="0" antialias="false" width="2" height="7" style="line-style:normal;line-weight:normal;filling:black;color:black" y="-32" ry="0" x="-161"/>
|
||||||
|
<rect rx="0" antialias="false" width="2" height="7" style="line-style:normal;line-weight:normal;filling:black;color:black" y="-32" ry="0" x="-201"/>
|
||||||
|
<line y1="-25" y2="-14" length2="1.5" antialias="false" x2="260" end2="none" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black" x1="260" length1="1.5"/>
|
||||||
|
<arc antialias="true" width="6" height="6" start="-180" angle="-180" style="line-style:normal;line-weight:normal;filling:none;color:black" y="-35" x="-243"/>
|
||||||
|
<text rotation="0" color="#000000" text="18" y="-40" x="121" font="Sans Serif,7,-1,5,50,0,0,0,0,0"/>
|
||||||
|
<line y1="-25" y2="-14" length2="1.5" antialias="false" x2="240" end2="none" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black" x1="240" length1="1.5"/>
|
||||||
|
<rect rx="0" antialias="false" width="2" height="7" style="line-style:normal;line-weight:normal;filling:black;color:black" y="-32" ry="0" x="-241"/>
|
||||||
|
<text rotation="0" color="#000000" text="10" y="-40" x="-39" font="Sans Serif,7,-1,5,50,0,0,0,0,0"/>
|
||||||
|
<text rotation="0" color="#000000" text="7" y="-40" x="-99" font="Sans Serif,7,-1,5,50,0,0,0,0,0"/>
|
||||||
|
<arc antialias="true" width="6" height="6" start="-180" angle="-180" style="line-style:normal;line-weight:normal;filling:none;color:black" y="-35" x="257"/>
|
||||||
|
<rect rx="0" antialias="false" width="2" height="7" style="line-style:normal;line-weight:normal;filling:black;color:black" y="-32" ry="0" x="-41"/>
|
||||||
|
<line y1="-36" y2="-45" length2="1.5" antialias="false" x2="-60" end2="none" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black" x1="-60" length1="1.5"/>
|
||||||
|
<line y1="-25" y2="-14" length2="1.5" antialias="false" x2="-180" end2="none" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black" x1="-180" length1="1.5"/>
|
||||||
|
<line y1="-36" y2="-45" length2="1.5" antialias="false" x2="240" end2="none" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black" x1="240" length1="1.5"/>
|
||||||
|
<text rotation="0" color="#000000" text="19" y="-40" x="141" font="Sans Serif,7,-1,5,50,0,0,0,0,0"/>
|
||||||
|
<text rotation="0" color="#000000" text="6" y="-40" x="-119" font="Sans Serif,7,-1,5,50,0,0,0,0,0"/>
|
||||||
|
<rect rx="0" antialias="false" width="2" height="7" style="line-style:normal;line-weight:normal;filling:black;color:black" y="-32" ry="0" x="-121"/>
|
||||||
|
<text rotation="0" color="#000000" text="11" y="-40" x="-19" font="Sans Serif,7,-1,5,50,0,0,0,0,0"/>
|
||||||
|
<text rotation="0" color="#000000" text="5" y="-40" x="-139" font="Sans Serif,7,-1,5,50,0,0,0,0,0"/>
|
||||||
|
<rect rx="0" antialias="false" width="2" height="7" style="line-style:normal;line-weight:normal;filling:black;color:black" y="-32" ry="0" x="-1"/>
|
||||||
|
<text rotation="0" color="#000000" text="24" y="-40" x="241" font="Sans Serif,7,-1,5,50,0,0,0,0,0"/>
|
||||||
|
<rect rx="0" antialias="false" width="2" height="7" style="line-style:normal;line-weight:normal;filling:black;color:black" y="-32" ry="0" x="-81"/>
|
||||||
|
<rect rx="0" antialias="false" width="2" height="7" style="line-style:normal;line-weight:normal;filling:black;color:black" y="-32" ry="0" x="259"/>
|
||||||
|
<line y1="-25" y2="-14" length2="1.5" antialias="false" x2="40" end2="none" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black" x1="40" length1="1.5"/>
|
||||||
|
<rect rx="0" antialias="false" width="2" height="7" style="line-style:normal;line-weight:normal;filling:black;color:black" y="-32" ry="0" x="-181"/>
|
||||||
|
<text rotation="0" color="#000000" text="16" y="-40" x="81" font="Sans Serif,7,-1,5,50,0,0,0,0,0"/>
|
||||||
|
<line y1="-36" y2="-45" length2="1.5" antialias="false" x2="-80" end2="none" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black" x1="-80" length1="1.5"/>
|
||||||
|
<line y1="-36" y2="-45" length2="1.5" antialias="false" x2="220" end2="none" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black" x1="220" length1="1.5"/>
|
||||||
|
<line y1="-36" y2="-45" length2="1.5" antialias="false" x2="-100" end2="none" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black" x1="-100" length1="1.5"/>
|
||||||
|
<line y1="-37" y2="-32" length2="1.5" antialias="false" x2="270" end2="none" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black" x1="270" length1="1.5"/>
|
||||||
|
<line y1="-25" y2="-14" length2="1.5" antialias="false" x2="-20" end2="none" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black" x1="-20" length1="1.5"/>
|
||||||
|
<line y1="-25" y2="-14" length2="1.5" antialias="false" x2="-100" end2="none" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black" x1="-100" length1="1.5"/>
|
||||||
|
<text rotation="0" color="#000000" text="15" y="-40" x="61" font="Sans Serif,7,-1,5,50,0,0,0,0,0"/>
|
||||||
|
<text rotation="0" color="#000000" text="23" y="-40" x="221" font="Sans Serif,7,-1,5,50,0,0,0,0,0"/>
|
||||||
|
<rect rx="0" antialias="false" width="2" height="7" style="line-style:normal;line-weight:normal;filling:black;color:black" y="-32" ry="0" x="-21"/>
|
||||||
|
<arc antialias="true" width="6" height="6" start="-180" angle="-180" style="line-style:normal;line-weight:normal;filling:none;color:black" y="-35" x="-23"/>
|
||||||
|
<text rotation="0" color="#000000" text="22" y="-40" x="201" font="Sans Serif,7,-1,5,50,0,0,0,0,0"/>
|
||||||
|
<text rotation="0" color="#000000" text="14" y="-40" x="41" font="Sans Serif,7,-1,5,50,0,0,0,0,0"/>
|
||||||
|
<line y1="-32" y2="-32" length2="1.5" antialias="false" x2="274" end2="none" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black" x1="266" length1="1.5"/>
|
||||||
|
<line y1="-25" y2="-14" length2="1.5" antialias="false" x2="80" end2="none" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black" x1="80" length1="1.5"/>
|
||||||
|
<rect rx="0" antialias="false" width="2" height="7" style="line-style:normal;line-weight:normal;filling:black;color:black" y="-32" ry="0" x="-101"/>
|
||||||
|
<line y1="-30" y2="-30" length2="1.5" antialias="false" x2="272" end2="none" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black" x1="268" length1="1.5"/>
|
||||||
|
<rect rx="0" antialias="false" width="2" height="7" style="line-style:normal;line-weight:normal;filling:black;color:black" y="-32" ry="0" x="79"/>
|
||||||
|
<line y1="-25" y2="-14" length2="1.5" antialias="false" x2="-140" end2="none" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black" x1="-140" length1="1.5"/>
|
||||||
|
<text rotation="0" color="#000000" text="21" y="-40" x="181" font="Sans Serif,7,-1,5,50,0,0,0,0,0"/>
|
||||||
|
<line y1="-25" y2="-14" length2="1.5" antialias="false" x2="-60" end2="none" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black" x1="-60" length1="1.5"/>
|
||||||
|
<arc antialias="true" width="6" height="6" start="-180" angle="-180" style="line-style:normal;line-weight:normal;filling:none;color:black" y="-35" x="-43"/>
|
||||||
|
<text rotation="0" color="#000000" text="13" y="-40" x="21" font="Sans Serif,7,-1,5,50,0,0,0,0,0"/>
|
||||||
|
<text rotation="0" color="#000000" text="9" y="-40" x="-59" font="Sans Serif,7,-1,5,50,0,0,0,0,0"/>
|
||||||
|
<rect rx="0" antialias="false" width="2" height="7" style="line-style:normal;line-weight:normal;filling:black;color:black" y="-32" ry="0" x="-61"/>
|
||||||
|
<arc antialias="true" width="6" height="6" start="-180" angle="-180" style="line-style:normal;line-weight:normal;filling:none;color:black" y="-35" x="-63"/>
|
||||||
|
<rect rx="0" antialias="false" width="2" height="7" style="line-style:normal;line-weight:normal;filling:black;color:black" y="-32" ry="0" x="-141"/>
|
||||||
|
<line y1="-28" y2="-28" length2="1.5" antialias="false" x2="271" end2="none" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black" x1="269" length1="1.5"/>
|
||||||
|
<text rotation="0" color="#000000" text="17" y="-40" x="101" font="Sans Serif,7,-1,5,50,0,0,0,0,0"/>
|
||||||
|
<arc antialias="true" width="6" height="6" start="-180" angle="-180" style="line-style:normal;line-weight:normal;filling:none;color:black" y="-35" x="237"/>
|
||||||
|
<arc antialias="true" width="6" height="6" start="-180" angle="-180" style="line-style:normal;line-weight:normal;filling:none;color:black" y="-35" x="-83"/>
|
||||||
|
<line y1="-25" y2="-14" length2="1.5" antialias="false" x2="120" end2="none" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black" x1="120" length1="1.5"/>
|
||||||
|
<line y1="-36" y2="-45" length2="1.5" antialias="false" x2="200" end2="none" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black" x1="200" length1="1.5"/>
|
||||||
|
<arc antialias="true" width="6" height="6" start="-180" angle="-180" style="line-style:normal;line-weight:normal;filling:none;color:black" y="-35" x="-103"/>
|
||||||
|
<line y1="-25" y2="-14" length2="1.5" antialias="false" x2="200" end2="none" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black" x1="200" length1="1.5"/>
|
||||||
|
<rect rx="0" antialias="false" width="2" height="7" style="line-style:normal;line-weight:normal;filling:black;color:black" y="-32" ry="0" x="39"/>
|
||||||
|
<line y1="-25" y2="-14" length2="1.5" antialias="false" x2="60" end2="none" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black" x1="60" length1="1.5"/>
|
||||||
|
<line y1="-36" y2="-45" length2="1.5" antialias="false" x2="180" end2="none" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black" x1="180" length1="1.5"/>
|
||||||
|
<rect rx="0" antialias="false" width="2" height="7" style="line-style:normal;line-weight:normal;filling:black;color:black" y="-32" ry="0" x="119"/>
|
||||||
|
<line y1="-25" y2="-14" length2="1.5" antialias="false" x2="-220" end2="none" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black" x1="-220" length1="1.5"/>
|
||||||
|
<line y1="-36" y2="-45" length2="1.5" antialias="false" x2="-120" end2="none" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black" x1="-120" length1="1.5"/>
|
||||||
|
<rect rx="0" antialias="false" width="2" height="7" style="line-style:normal;line-weight:normal;filling:black;color:black" y="-32" ry="0" x="199"/>
|
||||||
|
<line y1="-36" y2="-45" length2="1.5" antialias="false" x2="-140" end2="none" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black" x1="-140" length1="1.5"/>
|
||||||
|
<line y1="-36" y2="-45" length2="1.5" antialias="false" x2="160" end2="none" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black" x1="160" length1="1.5"/>
|
||||||
|
<line y1="-36" y2="-45" length2="1.5" antialias="false" x2="-160" end2="none" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black" x1="-160" length1="1.5"/>
|
||||||
|
<rect rx="0" antialias="false" width="2" height="7" style="line-style:normal;line-weight:normal;filling:black;color:black" y="-32" ry="0" x="59"/>
|
||||||
|
<line y1="-36" y2="-45" length2="1.5" antialias="false" x2="-180" end2="none" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black" x1="-180" length1="1.5"/>
|
||||||
|
<rect rx="0" antialias="false" width="2" height="7" style="line-style:normal;line-weight:normal;filling:black;color:black" y="-32" ry="0" x="159"/>
|
||||||
|
<rect rx="0" antialias="false" width="2" height="7" style="line-style:normal;line-weight:normal;filling:black;color:black" y="-32" ry="0" x="239"/>
|
||||||
|
<line y1="-36" y2="-45" length2="1.5" antialias="false" x2="-200" end2="none" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black" x1="-200" length1="1.5"/>
|
||||||
|
<line y1="-36" y2="-45" length2="1.5" antialias="false" x2="140" end2="none" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black" x1="140" length1="1.5"/>
|
||||||
|
<line y1="-36" y2="-45" length2="1.5" antialias="false" x2="-220" end2="none" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black" x1="-220" length1="1.5"/>
|
||||||
|
<line y1="-25" y2="-14" length2="1.5" antialias="false" x2="220" end2="none" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black" x1="220" length1="1.5"/>
|
||||||
|
<line y1="-25" y2="-14" length2="1.5" antialias="false" x2="140" end2="none" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black" x1="140" length1="1.5"/>
|
||||||
|
<arc antialias="true" width="6" height="6" start="-180" angle="-180" style="line-style:normal;line-weight:normal;filling:none;color:black" y="-35" x="217"/>
|
||||||
|
<rect rx="0" antialias="false" width="2" height="7" style="line-style:normal;line-weight:normal;filling:black;color:black" y="-32" ry="0" x="139"/>
|
||||||
|
<rect rx="0" antialias="false" width="2" height="7" style="line-style:normal;line-weight:normal;filling:black;color:black" y="-32" ry="0" x="219"/>
|
||||||
|
<line y1="-25" y2="-14" length2="1.5" antialias="false" x2="100" end2="none" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black" x1="100" length1="1.5"/>
|
||||||
|
<line y1="-25" y2="-14" length2="1.5" antialias="false" x2="180" end2="none" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black" x1="180" length1="1.5"/>
|
||||||
|
<arc antialias="true" width="6" height="6" start="-180" angle="-180" style="line-style:normal;line-weight:normal;filling:none;color:black" y="-35" x="-123"/>
|
||||||
|
<arc antialias="true" width="6" height="6" start="-180" angle="-180" style="line-style:normal;line-weight:normal;filling:none;color:black" y="-35" x="197"/>
|
||||||
|
<arc antialias="true" width="6" height="6" start="-180" angle="-180" style="line-style:normal;line-weight:normal;filling:none;color:black" y="-35" x="-143"/>
|
||||||
|
<arc antialias="true" width="6" height="6" start="-180" angle="-180" style="line-style:normal;line-weight:normal;filling:none;color:black" y="-35" x="-163"/>
|
||||||
|
<rect rx="0" antialias="false" width="2" height="7" style="line-style:normal;line-weight:normal;filling:black;color:black" y="-32" ry="0" x="99"/>
|
||||||
|
<rect rx="0" antialias="false" width="2" height="7" style="line-style:normal;line-weight:normal;filling:black;color:black" y="-32" ry="0" x="179"/>
|
||||||
|
<arc antialias="true" width="6" height="6" start="-180" angle="-180" style="line-style:normal;line-weight:normal;filling:none;color:black" y="-35" x="-183"/>
|
||||||
|
<arc antialias="true" width="6" height="6" start="-180" angle="-180" style="line-style:normal;line-weight:normal;filling:none;color:black" y="-35" x="177"/>
|
||||||
|
<arc antialias="true" width="6" height="6" start="-180" angle="-180" style="line-style:normal;line-weight:normal;filling:none;color:black" y="-35" x="-203"/>
|
||||||
|
<arc antialias="true" width="6" height="6" start="-180" angle="-180" style="line-style:normal;line-weight:normal;filling:none;color:black" y="-35" x="-223"/>
|
||||||
|
<arc antialias="true" width="6" height="6" start="-180" angle="-180" style="line-style:normal;line-weight:normal;filling:none;color:black" y="-35" x="157"/>
|
||||||
|
<rect rx="0" antialias="false" width="2" height="7" style="line-style:normal;line-weight:normal;filling:black;color:black" y="-32" ry="0" x="-221"/>
|
||||||
|
<arc antialias="true" width="6" height="6" start="-180" angle="-180" style="line-style:normal;line-weight:normal;filling:none;color:black" y="-35" x="137"/>
|
||||||
|
<line y1="-25" y2="-14" length2="1.5" antialias="false" x2="20" end2="none" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black" x1="20" length1="1.5"/>
|
||||||
|
<line y1="-36" y2="-45" length2="1.5" antialias="false" x2="120" end2="none" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black" x1="120" length1="1.5"/>
|
||||||
|
<text rotation="0" color="#000000" text="1" y="-40" x="-219" font="Sans Serif,7,-1,5,50,0,0,0,0,0"/>
|
||||||
|
<line y1="-36" y2="-45" length2="1.5" antialias="false" x2="100" end2="none" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black" x1="100" length1="1.5"/>
|
||||||
|
<line y1="-36" y2="-45" length2="1.5" antialias="false" x2="80" end2="none" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black" x1="80" length1="1.5"/>
|
||||||
|
<line y1="-36" y2="-45" length2="1.5" antialias="false" x2="60" end2="none" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black" x1="60" length1="1.5"/>
|
||||||
|
<line y1="-36" y2="-45" length2="1.5" antialias="false" x2="40" end2="none" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black" x1="40" length1="1.5"/>
|
||||||
|
<line y1="-36" y2="-45" length2="1.5" antialias="false" x2="20" end2="none" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black" x1="20" length1="1.5"/>
|
||||||
|
<arc antialias="true" width="6" height="6" start="-180" angle="-180" style="line-style:normal;line-weight:normal;filling:none;color:black" y="-35" x="117"/>
|
||||||
|
<arc antialias="true" width="6" height="6" start="-180" angle="-180" style="line-style:normal;line-weight:normal;filling:none;color:black" y="-35" x="97"/>
|
||||||
|
<arc antialias="true" width="6" height="6" start="-180" angle="-180" style="line-style:normal;line-weight:normal;filling:none;color:black" y="-35" x="77"/>
|
||||||
|
<arc antialias="true" width="6" height="6" start="-180" angle="-180" style="line-style:normal;line-weight:normal;filling:none;color:black" y="-35" x="57"/>
|
||||||
|
<arc antialias="true" width="6" height="6" start="-180" angle="-180" style="line-style:normal;line-weight:normal;filling:none;color:black" y="-35" x="37"/>
|
||||||
|
<arc antialias="true" width="6" height="6" start="-180" angle="-180" style="line-style:normal;line-weight:normal;filling:none;color:black" y="-35" x="17"/>
|
||||||
|
<rect rx="0" antialias="false" width="2" height="7" style="line-style:normal;line-weight:normal;filling:black;color:black" y="-32" ry="0" x="19"/>
|
||||||
|
<line y1="-37" y2="-32" length2="1.5" antialias="false" x2="-250" end2="none" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black" x1="-250" length1="1.5"/>
|
||||||
|
<line y1="-32" y2="-32" length2="1.5" antialias="false" x2="-246" end2="none" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black" x1="-254" length1="1.5"/>
|
||||||
|
<line y1="-30" y2="-30" length2="1.5" antialias="false" x2="-248" end2="none" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black" x1="-252" length1="1.5"/>
|
||||||
|
<line y1="-28" y2="-28" length2="1.5" antialias="false" x2="-249" end2="none" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black" x1="-251" length1="1.5"/>
|
||||||
|
<line y1="-60" y2="-60" length2="1.5" antialias="false" x2="270" end2="none" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black" x1="-250" length1="1.5"/>
|
||||||
|
<line y1="-60" y2="-50" length2="1.5" antialias="false" x2="280" end2="none" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black" x1="270" length1="1.5"/>
|
||||||
|
<line y1="-50" y2="-10" length2="1.5" antialias="false" x2="280" end2="none" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black" x1="280" length1="1.5"/>
|
||||||
|
<line y1="-10" y2="0" length2="1.5" antialias="false" x2="270" end2="none" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black" x1="280" length1="1.5"/>
|
||||||
|
<line y1="0" y2="0" length2="1.5" antialias="false" x2="-250" end2="none" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black" x1="270" length1="1.5"/>
|
||||||
|
<line y1="0" y2="-10" length2="1.5" antialias="false" x2="-260" end2="none" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black" x1="-250" length1="1.5"/>
|
||||||
|
<line y1="-10" y2="-50" length2="1.5" antialias="false" x2="-260" end2="none" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black" x1="-260" length1="1.5"/>
|
||||||
|
<line y1="-50" y2="-60" length2="1.5" antialias="false" x2="-250" end2="none" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black" x1="-260" length1="1.5"/>
|
||||||
|
<terminal name="" type="Generic" uuid="{2fd7e019-01c1-4cf6-9c8c-e8adca3ce496}" orientation="s" y="-14" x="240"/>
|
||||||
|
<terminal name="" type="Generic" uuid="{6a39b490-3888-4356-91cc-0a6574a30788}" orientation="n" y="-45" x="-140"/>
|
||||||
|
<terminal name="" type="Generic" uuid="{30fe38ae-876f-478a-83d5-22342403d1bb}" orientation="n" y="-45" x="120"/>
|
||||||
|
<terminal name="" type="Generic" uuid="{6d000d02-1a83-4d64-816c-40b834beef4f}" orientation="s" y="-14" x="120"/>
|
||||||
|
<terminal name="" type="Generic" uuid="{7e0e49fe-4d0a-4560-9f78-a0e160283578}" orientation="s" y="-14" x="-200"/>
|
||||||
|
<terminal name="" type="Generic" uuid="{26db0fbd-62c0-4de4-97ac-5b0bf685cef4}" orientation="s" y="-14" x="-180"/>
|
||||||
|
<terminal name="" type="Generic" uuid="{9e7a5014-3d0f-4f58-880a-9517e77f17ee}" orientation="s" y="-14" x="-160"/>
|
||||||
|
<terminal name="" type="Generic" uuid="{98fdfeec-a022-4d30-bfb1-915a2bb00351}" orientation="s" y="-14" x="-80"/>
|
||||||
|
<terminal name="" type="Generic" uuid="{ed4b19f3-15b5-432c-a9c8-bee918a2429b}" orientation="s" y="-14" x="-60"/>
|
||||||
|
<terminal name="" type="Generic" uuid="{f3c3c49c-4170-46ff-a474-fd1fea020156}" orientation="n" y="-45" x="-100"/>
|
||||||
|
<terminal name="" type="Generic" uuid="{da25c11c-260c-4fb8-9a9b-ae8d11c96e6d}" orientation="n" y="-45" x="-240"/>
|
||||||
|
<terminal name="" type="Generic" uuid="{bcfc8484-a82a-4585-a428-a9ffc2a676d7}" orientation="n" y="-45" x="-160"/>
|
||||||
|
<terminal name="" type="Generic" uuid="{ab25a69a-5c8c-469e-9da7-b79e3ebeb4ba}" orientation="n" y="-45" x="-220"/>
|
||||||
|
<terminal name="" type="Generic" uuid="{ef7db529-e31c-4f39-b831-8c578fb43462}" orientation="s" y="-14" x="20"/>
|
||||||
|
<terminal name="" type="Generic" uuid="{a21c8338-b99c-44a6-9b42-e71b936344ea}" orientation="s" y="-14" x="200"/>
|
||||||
|
<terminal name="" type="Generic" uuid="{aacb7245-00e4-4588-8960-4c3aaea6085b}" orientation="n" y="-45" x="60"/>
|
||||||
|
<terminal name="" type="Generic" uuid="{b6143a32-a9c1-40aa-8e94-c64e0d217a8f}" orientation="s" y="-14" x="-40"/>
|
||||||
|
<terminal name="" type="Generic" uuid="{7ee9a07f-0bf2-42f4-bf51-cabae0875328}" orientation="n" y="-45" x="100"/>
|
||||||
|
<terminal name="" type="Generic" uuid="{b03f6f6e-658a-49fa-84bd-03243a44ff18}" orientation="s" y="-14" x="60"/>
|
||||||
|
<terminal name="" type="Generic" uuid="{a88754c9-bf2c-4e3d-aa45-95113c37c426}" orientation="s" y="-14" x="-140"/>
|
||||||
|
<terminal name="" type="Generic" uuid="{efb0a56a-20ec-49ab-a470-dec34ed12027}" orientation="n" y="-45" x="260"/>
|
||||||
|
<terminal name="" type="Generic" uuid="{8ad57bf7-4125-4268-9817-e0d84a3e80c7}" orientation="s" y="-14" x="100"/>
|
||||||
|
<terminal name="" type="Generic" uuid="{66764cb9-b07b-4d38-bea0-4caefd955b61}" orientation="n" y="-45" x="-120"/>
|
||||||
|
<terminal name="" type="Generic" uuid="{bfaa681e-3fc9-4806-8b32-36af6ae51932}" orientation="s" y="-14" x="180"/>
|
||||||
|
<terminal name="" type="Generic" uuid="{4607cb5a-db47-40aa-9cfe-e22de405bf88}" orientation="s" y="-14" x="-20"/>
|
||||||
|
<terminal name="" type="Generic" uuid="{951d1e08-5f4d-4034-aecb-b6b8033d0dcf}" orientation="n" y="-45" x="-40"/>
|
||||||
|
<terminal name="" type="Generic" uuid="{f28988c9-363c-4486-a22f-a5365a15da8a}" orientation="n" y="-45" x="-180"/>
|
||||||
|
<terminal name="" type="Generic" uuid="{31805e67-1014-4ed3-83d0-6e15db99bbb7}" orientation="s" y="-14" x="-220"/>
|
||||||
|
<terminal name="" type="Generic" uuid="{bdb67495-8137-4c88-9986-671070320ce6}" orientation="n" y="-45" x="0"/>
|
||||||
|
<terminal name="" type="Generic" uuid="{434fcf9a-7e51-481d-a6c7-9269d6d99b29}" orientation="s" y="-14" x="-100"/>
|
||||||
|
<terminal name="" type="Generic" uuid="{7fede45b-d5cf-468a-9cca-52aff95a1c78}" orientation="s" y="-14" x="80"/>
|
||||||
|
<terminal name="" type="Generic" uuid="{c7897fc8-739e-4c72-b524-a8d7ba6f2b6b}" orientation="n" y="-45" x="-60"/>
|
||||||
|
<terminal name="" type="Generic" uuid="{bef0d722-d69f-4489-b8f1-2afb03de1784}" orientation="s" y="-14" x="220"/>
|
||||||
|
<terminal name="" type="Generic" uuid="{9ae10c41-be73-4e99-9423-568ff93475fd}" orientation="n" y="-45" x="-200"/>
|
||||||
|
<terminal name="" type="Generic" uuid="{8a60a879-ccf3-4c21-a0ab-3a2ae2d01dbe}" orientation="n" y="-45" x="200"/>
|
||||||
|
<terminal name="" type="Generic" uuid="{24426091-f2ec-4154-aba3-6bdaec485c4f}" orientation="n" y="-45" x="20"/>
|
||||||
|
<terminal name="" type="Generic" uuid="{ba1e41da-e37c-4f54-8237-618421d1e344}" orientation="s" y="-14" x="0"/>
|
||||||
|
<terminal name="" type="Generic" uuid="{b28694f6-eac6-4eb9-9c3c-ed0cc49328e6}" orientation="n" y="-45" x="40"/>
|
||||||
|
<terminal name="" type="Generic" uuid="{2481d2c4-d913-4d55-a48a-20eef116dc46}" orientation="s" y="-14" x="-120"/>
|
||||||
|
<terminal name="" type="Generic" uuid="{1e6a6de8-1126-4ec0-a8dc-833a14913da6}" orientation="n" y="-45" x="-20"/>
|
||||||
|
<terminal name="" type="Generic" uuid="{24d3c3fe-8549-4e16-b8b3-dc2fa1675be6}" orientation="n" y="-45" x="80"/>
|
||||||
|
<terminal name="" type="Generic" uuid="{5dbff03f-b71c-4f41-81e4-5093fafce82f}" orientation="s" y="-14" x="160"/>
|
||||||
|
<terminal name="" type="Generic" uuid="{da4a5bbe-5aa7-4493-99b6-e87b73d6b858}" orientation="n" y="-45" x="-80"/>
|
||||||
|
<terminal name="" type="Generic" uuid="{071a2b7e-4a5a-465a-b040-0e3579f36665}" orientation="s" y="-14" x="260"/>
|
||||||
|
<terminal name="" type="Generic" uuid="{fe47517f-462b-4a9a-a2c3-ae756dbfefe8}" orientation="n" y="-45" x="140"/>
|
||||||
|
<terminal name="" type="Generic" uuid="{1f24bdb1-cc99-4d89-8d89-8e104aaf498e}" orientation="n" y="-45" x="220"/>
|
||||||
|
<terminal name="" type="Generic" uuid="{2738bb7b-c6be-4aa4-81c9-31e4e457cf31}" orientation="s" y="-14" x="-240"/>
|
||||||
|
<terminal name="" type="Generic" uuid="{4d909e53-50b1-4b45-b8c3-262038f6c247}" orientation="n" y="-45" x="160"/>
|
||||||
|
<terminal name="" type="Generic" uuid="{0e87f452-86a3-45ef-a66b-8ed92e08899d}" orientation="n" y="-45" x="180"/>
|
||||||
|
<terminal name="" type="Generic" uuid="{1c6e1ab1-d98f-4322-bc2b-def58fefbea7}" orientation="s" y="-14" x="40"/>
|
||||||
|
<terminal name="" type="Generic" uuid="{1f0b7ff5-9f52-4517-b749-018b5bfa59dd}" orientation="n" y="-45" x="240"/>
|
||||||
|
<terminal name="" type="Generic" uuid="{8adac905-77b9-471f-8822-4ac63d3f6cf6}" orientation="s" y="-14" x="140"/>
|
||||||
|
</description>
|
||||||
|
</definition>
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user