Compare commits

...

79 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
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
274 changed files with 46421 additions and 36021 deletions

View File

@@ -19,7 +19,7 @@ include(cmake/hoto_update_cmake_message.cmake)
cmake_minimum_required(VERSION 3.14...3.19 FATAL_ERROR)
project(qelectrotech
VERSION 0.8.0
VERSION 0.9.0
DESCRIPTION "QET is a CAD/CAE editor focusing on schematics drawing features."
HOMEPAGE_URL "https://qelectrotech.org/"
LANGUAGES CXX)

View File

@@ -1,12 +1,79 @@
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__
----------
* Fallback to standard QApplication class on iOS and Android systems where
the library is not supported.
* Added Build CI tests to verify the library builds successfully on Linux, Windows and MacOS across multiple Qt versions.
_Anton Filimonov_

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)
# 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
singleapplication.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_package(Qt5Network)
if(QAPPLICATION_CLASS STREQUAL QApplication)
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})
set(QT_COMPONENTS Core Network)
set(QT_LIBRARIES Qt${QT_DEFAULT_MAJOR_VERSION}::Core Qt${QT_DEFAULT_MAJOR_VERSION}::Network)
# Link dependencies
target_link_libraries(${PROJECT_NAME} PRIVATE Qt5::Network)
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)
target_link_libraries(${PROJECT_NAME} PRIVATE Qt5::Gui)
list(APPEND QT_COMPONENTS Gui)
list(APPEND QT_LIBRARIES Qt${QT_DEFAULT_MAJOR_VERSION}::Gui)
else()
target_link_libraries(${PROJECT_NAME} PRIVATE Qt5::Core)
set(QAPPLICATION_CLASS QCoreApplication)
endif()
find_package(Qt${QT_DEFAULT_MAJOR_VERSION} COMPONENTS ${QT_COMPONENTS} REQUIRED)
target_link_libraries(${PROJECT_NAME} PUBLIC ${QT_LIBRARIES})
if(WIN32)
target_link_libraries(${PROJECT_NAME} PRIVATE advapi32)
endif()
target_compile_definitions(${PROJECT_NAME} PUBLIC QAPPLICATION_CLASS=${QAPPLICATION_CLASS})
target_include_directories(${PROJECT_NAME} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})

View File

@@ -1,6 +1,6 @@
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
of this software and associated documentation files (the "Software"), to deal

View File

@@ -1,7 +1,8 @@
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
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`
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
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
submodule to your project and include it's contents with a `.pri` file. Here is
how:
submodule to your project. Here is how:
```bash
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
set(QAPPLICATION_CLASS QApplication CACHE STRING "Inheritance class for 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
is not `QCoreApplication` as in examples above.
The `Instance Started` signal
------------------------
-----------------------------
The SingleApplication class implements a `instanceStarted()` signal. You can
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
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
---
### Members
```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
@@ -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
used to notify the primary instance whenever a secondary instance had been
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
recognizes.*
@@ -204,6 +215,22 @@ qint64 SingleApplication::primaryPid()
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
```cpp

View File

@@ -0,0 +1 @@
#include "singleapplication.h"

View File

@@ -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)

0
SingleApplication/examples/basic/basic.pro Normal file → Executable file
View File

2
SingleApplication/examples/basic/main.cpp Normal file → Executable file
View File

@@ -5,5 +5,7 @@ int main(int argc, char *argv[])
// Allow secondary instances
SingleApplication app( argc, argv );
qWarning() << "Started a new instance";
return app.exec();
}

View File

@@ -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)

View File

@@ -82,27 +82,27 @@ Calculator::Calculator(QWidget *parent)
digitButtons[i] = createButton(QString::number(i), SLOT(digitClicked()));
}
Button *pointButton = createButton(tr("."), SLOT(pointClicked()));
Button *changeSignButton = createButton(tr("\302\261"), SLOT(changeSignClicked()));
Button *pointButton = createButton(".", SLOT(pointClicked()));
Button *changeSignButton = createButton("\302\261", SLOT(changeSignClicked()));
Button *backspaceButton = createButton(tr("Backspace"), SLOT(backspaceClicked()));
Button *clearButton = createButton(tr("Clear"), SLOT(clear()));
Button *clearAllButton = createButton(tr("Clear All"), SLOT(clearAll()));
Button *backspaceButton = createButton("Backspace", SLOT(backspaceClicked()));
Button *clearButton = createButton("Clear", SLOT(clear()));
Button *clearAllButton = createButton("Clear All", SLOT(clearAll()));
Button *clearMemoryButton = createButton(tr("MC"), SLOT(clearMemory()));
Button *readMemoryButton = createButton(tr("MR"), SLOT(readMemory()));
Button *setMemoryButton = createButton(tr("MS"), SLOT(setMemory()));
Button *addToMemoryButton = createButton(tr("M+"), SLOT(addToMemory()));
Button *clearMemoryButton = createButton("MC", SLOT(clearMemory()));
Button *readMemoryButton = createButton("MR", SLOT(readMemory()));
Button *setMemoryButton = createButton("MS", SLOT(setMemory()));
Button *addToMemoryButton = createButton("M+", SLOT(addToMemory()));
Button *divisionButton = createButton(tr("\303\267"), SLOT(multiplicativeOperatorClicked()));
Button *timesButton = createButton(tr("\303\227"), SLOT(multiplicativeOperatorClicked()));
Button *minusButton = createButton(tr("-"), SLOT(additiveOperatorClicked()));
Button *plusButton = createButton(tr("+"), SLOT(additiveOperatorClicked()));
Button *divisionButton = createButton("\303\267", SLOT(multiplicativeOperatorClicked()));
Button *timesButton = createButton("\303\227", SLOT(multiplicativeOperatorClicked()));
Button *minusButton = createButton("-", SLOT(additiveOperatorClicked()));
Button *plusButton = createButton("+", SLOT(additiveOperatorClicked()));
Button *squareRootButton = createButton(tr("Sqrt"), SLOT(unaryOperatorClicked()));
Button *powerButton = createButton(tr("x\302\262"), SLOT(unaryOperatorClicked()));
Button *reciprocalButton = createButton(tr("1/x"), SLOT(unaryOperatorClicked()));
Button *equalButton = createButton(tr("="), SLOT(equalClicked()));
Button *squareRootButton = createButton("Sqrt", SLOT(unaryOperatorClicked()));
Button *powerButton = createButton("x\302\262", SLOT(unaryOperatorClicked()));
Button *reciprocalButton = createButton("1/x", SLOT(unaryOperatorClicked()));
Button *equalButton = createButton("=", SLOT(equalClicked()));
//! [4]
//! [5]
@@ -140,7 +140,7 @@ Calculator::Calculator(QWidget *parent)
mainLayout->addWidget(equalButton, 5, 5);
setLayout(mainLayout);
setWindowTitle(tr("Calculator"));
setWindowTitle("Calculator");
}
//! [6]
@@ -169,15 +169,15 @@ void Calculator::unaryOperatorClicked()
double operand = display->text().toDouble();
double result = 0.0;
if (clickedOperator == tr("Sqrt")) {
if (clickedOperator == "Sqrt") {
if (operand < 0.0) {
abortOperation();
return;
}
result = std::sqrt(operand);
} else if (clickedOperator == tr("x\302\262")) {
} else if (clickedOperator == "x\302\262") {
result = std::pow(operand, 2.0);
} else if (clickedOperator == tr("1/x")) {
} else if (clickedOperator == "1/x") {
if (operand == 0.0) {
abortOperation();
return;
@@ -287,7 +287,7 @@ void Calculator::pointClicked()
if (waitingForOperand)
display->setText("0");
if (!display->text().contains('.'))
display->setText(display->text() + tr("."));
display->setText(display->text() + ".");
waitingForOperand = false;
}
//! [22]
@@ -299,7 +299,7 @@ void Calculator::changeSignClicked()
double value = text.toDouble();
if (value > 0.0) {
text.prepend(tr("-"));
text.prepend("-");
} else if (value < 0.0) {
text.remove(0, 1);
}
@@ -383,20 +383,20 @@ Button *Calculator::createButton(const QString &text, const char *member)
void Calculator::abortOperation()
{
clearAll();
display->setText(tr("####"));
display->setText("####");
}
//! [36]
//! [38]
bool Calculator::calculate(double rightOperand, const QString &pendingOperator)
{
if (pendingOperator == tr("+")) {
if (pendingOperator == "+") {
sumSoFar += rightOperand;
} else if (pendingOperator == tr("-")) {
} else if (pendingOperator == "-") {
sumSoFar -= rightOperand;
} else if (pendingOperator == tr("\303\227")) {
} else if (pendingOperator == "\303\227") {
factorSoFar *= rightOperand;
} else if (pendingOperator == tr("\303\267")) {
} else if (pendingOperator == "\303\267") {
if (rightOperand == 0.0)
return false;
factorSoFar /= rightOperand;

View File

@@ -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
SingleApplication/examples/sending_arguments/main.cpp Normal file → Executable file
View File

@@ -11,6 +11,9 @@ int main(int argc, char *argv[])
// If this is a secondary instance
if( app.isSecondary() ) {
app.sendMessage( app.arguments().join(' ').toUtf8() );
qDebug() << "App already running.";
qDebug() << "Primary instance PID: " << app.primaryPid();
qDebug() << "Primary instance user: " << app.primaryUser();
return 0;
} else {
QObject::connect(

View File

View File

@@ -1,6 +1,6 @@
// 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
// of this software and associated documentation files (the "Software"), to deal
@@ -20,176 +20,255 @@
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
// THE SOFTWARE.
#include <QtCore/QTime>
#include <QtCore/QThread>
#include <QtCore/QDateTime>
#include <QtCore/QElapsedTimer>
#include <QtCore/QByteArray>
#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_p.h"
/**
@brief Constructor. Checks and fires up LocalServer or closes the program
if another instance already exists
@param argc
@param argv
@param {bool} allowSecondaryInstances
*/
SingleApplication::SingleApplication( int &argc, char *argv[], bool allowSecondary, Options options, int timeout )
: app_t( argc, argv ), d_ptr( new SingleApplicationPrivate( this ) )
* @brief Constructor. Checks and fires up LocalServer or closes the program
* if another instance already exists
* @param argc
* @param argv
* @param allowSecondary Whether to enable secondary instance support
* @param options Optional flags to toggle specific behaviour
* @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 ) )
{
Q_D(SingleApplication);
Q_D( SingleApplication );
#if defined(Q_OS_ANDROID) || defined(Q_OS_IOS)
// On Android and iOS since the library is not supported fallback to
// standard QApplication behaviour by simply returning at this point.
qWarning() << "SingleApplication is not supported on Android and iOS systems.";
return;
// On Android and iOS since the library is not supported fallback to
// standard QApplication behaviour by simply returning at this point.
qWarning() << "SingleApplication is not supported on Android and iOS systems.";
return;
#endif
// Store the current mode of the program
d->options = options;
// Store the current mode of the program
d->options = options;
// Generating an application ID used for identifying the shared memory
// block and QLocalServer
d->genBlockServerName();
// Add any unique user data
if ( ! userData.isEmpty() )
d->addAppData( userData );
// Generating an application ID used for identifying the shared memory
// block and QLocalServer
d->genBlockServerName();
// To mitigate QSharedMemory issues with large amount of processes
// attempting to attach at the same time
SingleApplicationPrivate::randomSleep();
#ifdef Q_OS_UNIX
// By explicitly attaching it and then deleting it we make sure that the
// memory is deleted even after the process has crashed on Unix.
d->memory = new QSharedMemory( d->blockServerName );
d->memory->attach();
delete d->memory;
// By explicitly attaching it and then deleting it we make sure that the
// memory is deleted even after the process has crashed on Unix.
d->memory = new QSharedMemory( d->blockServerName );
d->memory->attach();
delete d->memory;
#endif
// Guarantee thread safe behaviour with a shared memory block.
d->memory = new QSharedMemory( d->blockServerName );
// Guarantee thread safe behaviour with a shared memory block.
d->memory = new QSharedMemory( d->blockServerName );
// Create a shared memory block
if( d->memory->create( sizeof( InstancesInfo ) ) ) {
// Initialize the shared memory block
d->memory->lock();
d->initializeMemoryBlock();
d->memory->unlock();
} else {
// Attempt to attach to the memory segment
if( ! d->memory->attach() ) {
qCritical() << "SingleApplication: Unable to attach to shared memory block.";
qCritical() << d->memory->errorString();
delete d;
::exit( EXIT_FAILURE );
}
}
// Create a shared memory block
if( d->memory->create( sizeof( InstancesInfo ) )){
// Initialize the shared memory block
if( ! d->memory->lock() ){
qCritical() << "SingleApplication: Unable to lock memory block after create.";
abortSafely();
}
d->initializeMemoryBlock();
} else {
if( d->memory->error() == QSharedMemory::AlreadyExists ){
// Attempt to attach to the memory segment
if( ! d->memory->attach() ){
qCritical() << "SingleApplication: Unable to attach to shared memory block.";
abortSafely();
}
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() );
QElapsedTimer time;
time.start();
auto *inst = static_cast<InstancesInfo*>( d->memory->data() );
QElapsedTimer time;
time.start();
// Make sure the shared memory block is initialised and in consistent state
while( true ) {
d->memory->lock();
// Make sure the shared memory block is initialised and in consistent state
while( true ){
// If the shared memory block's checksum is valid continue
if( d->blockChecksum() == inst->checksum ) break;
if( d->blockChecksum() == inst->checksum ) break;
// 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.";
d->initializeMemoryBlock();
}
if( time.elapsed() > 5000 ) {
qWarning() << "SingleApplication: Shared memory block has been in an inconsistent state from more than 5s. Assuming primary instance failure.";
d->initializeMemoryBlock();
}
// Otherwise wait for a random period and try again. The random sleep here
// limits the probability of a collision between two racing apps and
// allows the app to initialise faster
if( ! d->memory->unlock() ){
qDebug() << "SingleApplication: Unable to unlock memory for random wait.";
qDebug() << d->memory->errorString();
}
SingleApplicationPrivate::randomSleep();
if( ! d->memory->lock() ){
qCritical() << "SingleApplication: Unable to lock memory after random wait.";
abortSafely();
}
}
d->memory->unlock();
if( inst->primary == false ){
d->startPrimary();
if( ! d->memory->unlock() ){
qDebug() << "SingleApplication: Unable to unlock memory after primary start.";
qDebug() << d->memory->errorString();
}
return;
}
// Random sleep here limits the probability of a collision between two racing apps
#if QT_VERSION < QT_VERSION_CHECK(5, 10, 0) // ### Qt 6: remove
qsrand( QDateTime::currentMSecsSinceEpoch() % std::numeric_limits<uint>::max() );
QThread::sleep( 8 + static_cast <unsigned long>( static_cast <float>( qrand() ) / RAND_MAX * 10 ) );
#else
#if TODO_LIST
#pragma message("@TODO remove code for QT 5.10 or later")
#endif
quint32 value = QRandomGenerator::global()->generate();
QThread::sleep(8 + static_cast<unsigned long>(value / RAND_MAX * 10));
#endif
}
// Check if another instance can be started
if( allowSecondary ){
d->startSecondary();
if( d->options & Mode::SecondaryNotification ){
d->connectToPrimary( timeout, SingleApplicationPrivate::SecondaryInstance );
}
if( ! d->memory->unlock() ){
qDebug() << "SingleApplication: Unable to unlock memory after secondary start.";
qDebug() << d->memory->errorString();
}
return;
}
if( inst->primary == false) {
d->startPrimary();
d->memory->unlock();
return;
}
if( ! d->memory->unlock() ){
qDebug() << "SingleApplication: Unable to unlock memory at end of execution.";
qDebug() << d->memory->errorString();
}
// Check if another instance can be started
if( allowSecondary ) {
inst->secondary += 1;
inst->checksum = d->blockChecksum();
d->instanceNumber = inst->secondary;
d->startSecondary();
if( d->options & Mode::SecondaryNotification ) {
d->connectToPrimary( timeout, SingleApplicationPrivate::SecondaryInstance );
}
d->memory->unlock();
return;
}
d->connectToPrimary( timeout, SingleApplicationPrivate::NewInstance );
d->memory->unlock();
delete d;
d->connectToPrimary( timeout, SingleApplicationPrivate::NewInstance );
::exit( EXIT_SUCCESS );
}
delete d;
::exit( EXIT_SUCCESS );
SingleApplication::~SingleApplication()
{
Q_D( SingleApplication );
delete d;
}
/**
@brief Destructor
*/
SingleApplication::~SingleApplication()
* 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);
delete d;
Q_D( const SingleApplication );
return d->server != nullptr;
}
bool SingleApplication::isPrimary()
/**
* 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);
return d->server != nullptr;
Q_D( const SingleApplication );
return d->server == nullptr;
}
bool SingleApplication::isSecondary()
/**
* 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);
return d->server == nullptr;
Q_D( const SingleApplication );
return d->instanceNumber;
}
quint32 SingleApplication::instanceId()
/**
* 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);
return d->instanceNumber;
Q_D( const SingleApplication );
return d->primaryPid();
}
qint64 SingleApplication::primaryPid()
/**
* 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);
return d->primaryPid();
Q_D( const SingleApplication );
return d->primaryUser();
}
bool SingleApplication::sendMessage( QByteArray message, int timeout )
/**
* Returns the username the current instance is running as.
* @return Returns the username the current instance is running as.
*/
QString SingleApplication::currentUser() const
{
Q_D(SingleApplication);
// Nobody to connect to
if( isPrimary() ) return false;
// Make sure the socket is connected
d->connectToPrimary( timeout, SingleApplicationPrivate::Reconnect );
d->socket->write( message );
bool dataWritten = d->socket->waitForBytesWritten( timeout );
d->socket->flush();
return dataWritten;
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
if( isPrimary() ) return false;
// Make sure the socket is connected
if( ! d->connectToPrimary( timeout, SingleApplicationPrivate::Reconnect ) )
return false;
d->socket->write( message );
bool dataWritten = d->socket->waitForBytesWritten( timeout );
d->socket->flush();
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();
}

View File

@@ -25,7 +25,6 @@
#include <QtCore/QtGlobal>
#include <QtNetwork/QLocalSocket>
#include <QElapsedTimer>
#ifndef QAPPLICATION_CLASS
#define QAPPLICATION_CLASS QCoreApplication
@@ -36,99 +35,118 @@
class SingleApplicationPrivate;
/**
@brief The SingleApplication class handles multiple instances of the same
Application
@see QCoreApplication
*/
* @brief The SingleApplication class handles multiple instances of the same
* Application
* @see QCoreApplication
*/
class SingleApplication : public QAPPLICATION_CLASS
{
Q_OBJECT
typedef QAPPLICATION_CLASS app_t;
public:
/**
@brief Mode of operation of SingleApplication.
Whether the block should be user-wide or system-wide and whether the
primary instance should be notified when a secondary instance had been
started.
@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
block will be user wide.
@enum
*/
enum Mode {
User = 1 << 0,
System = 1 << 1,
SecondaryNotification = 1 << 2,
ExcludeAppVersion = 1 << 3,
ExcludeAppPath = 1 << 4
};
Q_DECLARE_FLAGS(Options, Mode)
/**
@brief Intitializes a SingleApplication instance with argc command line
arguments in argv
@arg {int &} argc - Number of arguments in argv
@arg {const char *[]} argv - Supplied command line arguments
@arg {bool} allowSecondary - Whether to start the instance as secondary
if there is already a primary instance.
@arg {Mode} mode - Whether for the SingleApplication block to be applied
User wide or System wide.
@arg {int} timeout - Timeout to wait in milliseconds.
@note argc and argv may be changed as Qt removes arguments that it
recognizes
@note Mode::SecondaryNotification only works if set on both the primary
instance and the secondary instance.
@note The timeout is just a hint for the maximum time of blocking
operations. It does not guarantee that the SingleApplication
initialisation will be completed in given time, though is a good hint.
Usually 4*timeout would be the worst case (fail) scenario.
@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 );
~SingleApplication();
/**
@brief Returns if the instance is the primary instance
@returns {bool}
*/
bool isPrimary();
/**
@brief Returns if the instance is a secondary instance
@returns {bool}
*/
bool isSecondary();
/**
@brief Returns a unique identifier for the current instance
@returns {qint32}
*/
quint32 instanceId();
/**
@brief Returns the process ID (PID) of the primary instance
@returns {qint64}
*/
qint64 primaryPid();
/**
@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( QByteArray message, int timeout = 100 );
Q_SIGNALS:
void instanceStarted();
void receivedMessage( quint32 instanceId, QByteArray message );
private:
SingleApplicationPrivate *d_ptr;
Q_DECLARE_PRIVATE(SingleApplication)
Q_OBJECT
using app_t = QAPPLICATION_CLASS;
public:
/**
* @brief Mode of operation of SingleApplication.
* Whether the block should be user-wide or system-wide and whether the
* primary instance should be notified when a secondary instance had been
* started.
* @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
* block will be user wide.
* @enum
*/
enum Mode {
User = 1 << 0,
System = 1 << 1,
SecondaryNotification = 1 << 2,
ExcludeAppVersion = 1 << 3,
ExcludeAppPath = 1 << 4
};
Q_DECLARE_FLAGS(Options, Mode)
/**
* @brief Intitializes a SingleApplication instance with argc command line
* arguments in argv
* @arg {int &} argc - Number of arguments in argv
* @arg {const char *[]} argv - Supplied command line arguments
* @arg {bool} allowSecondary - Whether to start the instance as secondary
* if there is already a primary instance.
* @arg {Mode} mode - Whether for the SingleApplication block to be applied
* User wide or System wide.
* @arg {int} timeout - Timeout to wait in milliseconds.
* @note argc and argv may be changed as Qt removes arguments that it
* recognizes
* @note Mode::SecondaryNotification only works if set on both the primary
* instance and the secondary instance.
* @note The timeout is just a hint for the maximum time of blocking
* operations. It does not guarantee that the SingleApplication
* initialisation will be completed in given time, though is a good hint.
* Usually 4*timeout would be the worst case (fail) scenario.
* @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, const QString &userData = {} );
~SingleApplication() override;
/**
* @brief Returns if the instance is the primary instance
* @returns {bool}
*/
bool isPrimary() const;
/**
* @brief Returns if the instance is a secondary instance
* @returns {bool}
*/
bool isSecondary() const;
/**
* @brief Returns a unique identifier for the current instance
* @returns {qint32}
*/
quint32 instanceId() const;
/**
* @brief Returns the process ID (PID) of the primary instance
* @returns {qint64}
*/
qint64 primaryPid() const;
/**
* @brief Returns the username of the user running the primary instance
* @returns {QString}
*/
QString primaryUser() const;
/**
* @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 receivedMessage( quint32 instanceId, QByteArray message );
private:
SingleApplicationPrivate *d_ptr;
Q_DECLARE_PRIVATE(SingleApplication)
void abortSafely();
};
Q_DECLARE_OPERATORS_FOR_FLAGS(SingleApplication::Options)

View File

@@ -1,7 +1,8 @@
QT += core network
CONFIG += c++17
CONFIG += c++11
HEADERS += $$PWD/singleapplication.h \
HEADERS += $$PWD/SingleApplication \
$$PWD/singleapplication.h \
$$PWD/singleapplication_p.h
SOURCES += $$PWD/singleapplication.cpp \
$$PWD/singleapplication_p.cpp

View File

@@ -1,6 +1,6 @@
// 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
// of this software and associated documentation files (the "Software"), to deal
@@ -33,412 +33,454 @@
#include <cstddef>
#include <QtCore/QDir>
#include <QtCore/QThread>
#include <QtCore/QByteArray>
#include <QtCore/QDataStream>
#include <QtCore/QElapsedTimer>
#include <QtCore/QCryptographicHash>
#include <QtNetwork/QLocalServer>
#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_p.h"
#ifdef Q_OS_UNIX
#include <unistd.h>
#include <sys/types.h>
#include <pwd.h>
#include <unistd.h>
#include <sys/types.h>
#include <pwd.h>
#endif
#ifdef Q_OS_WIN
#include <windows.h>
#include <lmcons.h>
#ifndef NOMINMAX
#define NOMINMAX 1
#endif
#include <windows.h>
#include <lmcons.h>
#endif
SingleApplicationPrivate::SingleApplicationPrivate( SingleApplication *q_ptr )
: q_ptr( q_ptr )
: q_ptr( q_ptr )
{
server = nullptr;
socket = nullptr;
memory = nullptr;
instanceNumber = -1;
server = nullptr;
socket = nullptr;
memory = nullptr;
instanceNumber = 0;
}
SingleApplicationPrivate::~SingleApplicationPrivate()
{
if( socket != nullptr ) {
socket->close();
delete socket;
}
if( socket != nullptr ){
socket->close();
delete socket;
}
memory->lock();
InstancesInfo* inst = static_cast<InstancesInfo*>(memory->data());
if( server != nullptr ) {
server->close();
delete server;
inst->primary = false;
inst->primaryPid = -1;
inst->checksum = blockChecksum();
}
memory->unlock();
if( memory != nullptr ){
memory->lock();
auto *inst = static_cast<InstancesInfo*>(memory->data());
if( server != nullptr ){
server->close();
delete server;
inst->primary = false;
inst->primaryPid = -1;
inst->primaryUser[0] = '\0';
inst->checksum = blockChecksum();
}
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()
{
QCryptographicHash appData( QCryptographicHash::Sha256 );
appData.addData( "SingleApplication", 17 );
appData.addData( SingleApplication::app_t::applicationName().toUtf8() );
appData.addData( SingleApplication::app_t::organizationName().toUtf8() );
appData.addData( SingleApplication::app_t::organizationDomain().toUtf8() );
QCryptographicHash appData( QCryptographicHash::Sha256 );
appData.addData( "SingleApplication", 17 );
appData.addData( SingleApplication::app_t::applicationName().toUtf8() );
appData.addData( SingleApplication::app_t::organizationName().toUtf8() );
appData.addData( SingleApplication::app_t::organizationDomain().toUtf8() );
if( ! (options & SingleApplication::Mode::ExcludeAppVersion) ) {
appData.addData( SingleApplication::app_t::applicationVersion().toUtf8() );
}
if ( ! appDataList.isEmpty() )
appData.addData( appDataList.join( "" ).toUtf8() );
if( ! (options & SingleApplication::Mode::ExcludeAppPath) ) {
if( ! (options & SingleApplication::Mode::ExcludeAppVersion) ){
appData.addData( SingleApplication::app_t::applicationVersion().toUtf8() );
}
if( ! (options & SingleApplication::Mode::ExcludeAppPath) ){
#ifdef Q_OS_WIN
appData.addData( SingleApplication::app_t::applicationFilePath().toLower().toUtf8() );
appData.addData( SingleApplication::app_t::applicationFilePath().toLower().toUtf8() );
#else
appData.addData( SingleApplication::app_t::applicationFilePath().toUtf8() );
appData.addData( SingleApplication::app_t::applicationFilePath().toUtf8() );
#endif
}
}
// User level block requires a user specific data in the hash
if( options & SingleApplication::Mode::User ) {
#ifdef Q_OS_WIN
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
}
// User level block requires a user specific data in the hash
if( options & SingleApplication::Mode::User ){
appData.addData( getUsername().toUtf8() );
}
// Replace the backslash in RFC 2045 Base64 [a-zA-Z0-9+/=] to comply with
// server naming requirements.
blockServerName = appData.result().toBase64().replace("/", "_");
// Replace the backslash in RFC 2045 Base64 [a-zA-Z0-9+/=] to comply with
// server naming requirements.
blockServerName = appData.result().toBase64().replace("/", "_");
}
void SingleApplicationPrivate::initializeMemoryBlock()
void SingleApplicationPrivate::initializeMemoryBlock() const
{
InstancesInfo* inst = static_cast<InstancesInfo*>( memory->data() );
inst->primary = false;
inst->secondary = 0;
inst->primaryPid = -1;
inst->checksum = blockChecksum();
auto *inst = static_cast<InstancesInfo*>( memory->data() );
inst->primary = false;
inst->secondary = 0;
inst->primaryPid = -1;
inst->primaryUser[0] = '\0';
inst->checksum = blockChecksum();
}
void SingleApplicationPrivate::startPrimary()
{
Q_Q(SingleApplication);
// Reset the number of connections
auto *inst = static_cast <InstancesInfo*>( memory->data() );
// Successful creation means that no main process exists
// So we start a QLocalServer to listen for connections
QLocalServer::removeServer( blockServerName );
server = new QLocalServer();
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
// So we start a QLocalServer to listen for connections
QLocalServer::removeServer( blockServerName );
server = new QLocalServer();
// Restrict access to the socket according to the
// SingleApplication::Mode::User flag on User level or no restrictions
if( options & SingleApplication::Mode::User ) {
server->setSocketOptions( QLocalServer::UserAccessOption );
} else {
server->setSocketOptions( QLocalServer::WorldAccessOption );
}
// Restrict access to the socket according to the
// SingleApplication::Mode::User flag on User level or no restrictions
if( options & SingleApplication::Mode::User ){
server->setSocketOptions( QLocalServer::UserAccessOption );
} else {
server->setSocketOptions( QLocalServer::WorldAccessOption );
}
server->listen( blockServerName );
QObject::connect(
server,
&QLocalServer::newConnection,
this,
&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;
server->listen( blockServerName );
QObject::connect(
server,
&QLocalServer::newConnection,
this,
&SingleApplicationPrivate::slotConnectionEstablished
);
}
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 )
{
// Connect to the Local Server of the Primary Instance if not already
// connected.
if( socket == nullptr ) {
socket = new QLocalSocket();
}
QElapsedTimer time;
time.start();
// If already connected - we are done;
if( socket->state() == QLocalSocket::ConnectedState )
return;
// Connect to the Local Server of the Primary Instance if not already
// connected.
if( socket == nullptr ){
socket = new QLocalSocket();
}
// If not connect
if( socket->state() == QLocalSocket::UnconnectedState ||
socket->state() == QLocalSocket::ClosingState ) {
socket->connectToServer( blockServerName );
}
if( socket->state() == QLocalSocket::ConnectedState ) return true;
// Wait for being connected
if( socket->state() == QLocalSocket::ConnectingState ) {
socket->waitForConnected( msecs );
}
if( socket->state() != QLocalSocket::ConnectedState ){
// Initialisation message according to the SingleApplication protocol
if( socket->state() == QLocalSocket::ConnectedState ) {
// Notify the parent that a new instance had been started;
QByteArray initMsg;
QDataStream writeStream(&initMsg, QIODevice::WriteOnly);
while( true ){
randomSleep();
if( socket->state() != QLocalSocket::ConnectingState )
socket->connectToServer( blockServerName );
if( socket->state() == QLocalSocket::ConnectingState ){
socket->waitForConnected( static_cast<int>(msecs - time.elapsed()) );
}
// If connected break out of the loop
if( socket->state() == QLocalSocket::ConnectedState ) break;
// 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
QByteArray initMsg;
QDataStream writeStream(&initMsg, QIODevice::WriteOnly);
#if (QT_VERSION >= QT_VERSION_CHECK(5, 6, 0))
writeStream.setVersion(QDataStream::Qt_5_6);
writeStream.setVersion(QDataStream::Qt_5_6);
#endif
writeStream << blockServerName.toLatin1();
writeStream << static_cast<quint8>(connectionType);
writeStream << instanceNumber;
#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) // ### Qt 6: remove
quint16 checksum =
qChecksum(
initMsg.constData(),
static_cast<quint32>(initMsg.length()));
writeStream << blockServerName.toLatin1();
writeStream << static_cast<quint8>(connectionType);
writeStream << instanceNumber;
#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
quint16 checksum = qChecksum(QByteArray(initMsg, static_cast<quint32>(initMsg.length())));
#else
#if TODO_LIST
#pragma message("@TODO remove code for QT 6 or later")
quint16 checksum = qChecksum(initMsg.constData(), static_cast<quint32>(initMsg.length()));
#endif
quint16 checksum =
qChecksum(
QByteArrayView(
initMsg.constData(),
static_cast<quint32>(initMsg.length())));
#endif
writeStream << checksum;
writeStream << checksum;
// The header indicates the message length that follows
QByteArray header;
QDataStream headerStream(&header, QIODevice::WriteOnly);
// The header indicates the message length that follows
QByteArray header;
QDataStream headerStream(&header, QIODevice::WriteOnly);
#if (QT_VERSION >= QT_VERSION_CHECK(5, 6, 0))
headerStream.setVersion(QDataStream::Qt_5_6);
headerStream.setVersion(QDataStream::Qt_5_6);
#endif
headerStream << static_cast <quint64>( initMsg.length() );
headerStream << static_cast <quint64>( initMsg.length() );
socket->write( header );
socket->write( initMsg );
socket->flush();
socket->waitForBytesWritten( msecs );
}
socket->write( header );
socket->write( initMsg );
bool result = socket->waitForBytesWritten( static_cast<int>(msecs - time.elapsed()) );
socket->flush();
return result;
}
quint16 SingleApplicationPrivate::blockChecksum()
quint16 SingleApplicationPrivate::blockChecksum() const
{
#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) // ### Qt 6: remove
return qChecksum(
static_cast <const char *>( memory->data() ),
offsetof( InstancesInfo, checksum )
);
#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
quint16 checksum = qChecksum(QByteArray(static_cast<const char*>(memory->constData()), offsetof(InstancesInfo, checksum)));
#else
#if TODO_LIST
#pragma message("@TODO remove code for QT 6 or later")
#endif
return qChecksum(
QByteArrayView(
static_cast <const char *>( memory->data() ),
offsetof( InstancesInfo, checksum )));
quint16 checksum = qChecksum(static_cast<const char*>(memory->constData()), offsetof(InstancesInfo, checksum));
#endif
return checksum;
}
qint64 SingleApplicationPrivate::primaryPid()
qint64 SingleApplicationPrivate::primaryPid() const
{
qint64 pid;
qint64 pid;
memory->lock();
InstancesInfo* inst = static_cast<InstancesInfo*>( memory->data() );
pid = inst->primaryPid;
memory->unlock();
memory->lock();
auto *inst = static_cast<InstancesInfo*>( memory->data() );
pid = inst->primaryPid;
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()
{
QLocalSocket *nextConnSocket = server->nextPendingConnection();
connectionMap.insert(nextConnSocket, ConnectionInfo());
QLocalSocket *nextConnSocket = server->nextPendingConnection();
connectionMap.insert(nextConnSocket, ConnectionInfo());
QObject::connect(nextConnSocket, &QLocalSocket::aboutToClose,
[nextConnSocket, this]() {
auto &info = connectionMap[nextConnSocket];
Q_EMIT this->slotClientConnectionClosed( nextConnSocket, info.instanceId );
}
);
QObject::connect(nextConnSocket, &QLocalSocket::aboutToClose,
[nextConnSocket, this](){
auto &info = connectionMap[nextConnSocket];
Q_EMIT this->slotClientConnectionClosed( nextConnSocket, info.instanceId );
}
);
QObject::connect(nextConnSocket, &QLocalSocket::disconnected,
[nextConnSocket, this](){
connectionMap.remove(nextConnSocket);
nextConnSocket->deleteLater();
}
);
QObject::connect(nextConnSocket, &QLocalSocket::disconnected, nextConnSocket, &QLocalSocket::deleteLater);
QObject::connect(nextConnSocket, &QLocalSocket::readyRead,
[nextConnSocket, this]() {
auto &info = connectionMap[nextConnSocket];
switch(info.stage) {
case StageHeader:
readInitMessageHeader(nextConnSocket);
break;
case StageBody:
readInitMessageBody(nextConnSocket);
break;
case StageConnected:
Q_EMIT this->slotDataAvailable( nextConnSocket, info.instanceId );
break;
default:
break;
};
}
);
QObject::connect(nextConnSocket, &QLocalSocket::destroyed,
[nextConnSocket, this](){
connectionMap.remove(nextConnSocket);
}
);
QObject::connect(nextConnSocket, &QLocalSocket::readyRead,
[nextConnSocket, this](){
auto &info = connectionMap[nextConnSocket];
switch(info.stage){
case StageHeader:
readInitMessageHeader(nextConnSocket);
break;
case StageBody:
readInitMessageBody(nextConnSocket);
break;
case StageConnected:
Q_EMIT this->slotDataAvailable( nextConnSocket, info.instanceId );
break;
default:
break;
};
}
);
}
void SingleApplicationPrivate::readInitMessageHeader( QLocalSocket *sock )
{
if (!connectionMap.contains( sock )) {
return;
}
if (!connectionMap.contains( sock )){
return;
}
if( sock->bytesAvailable() < ( qint64 )sizeof( quint64 ) ) {
return;
}
if( sock->bytesAvailable() < ( qint64 )sizeof( quint64 ) ){
return;
}
QDataStream headerStream( sock );
QDataStream headerStream( sock );
#if (QT_VERSION >= QT_VERSION_CHECK(5, 6, 0))
headerStream.setVersion( QDataStream::Qt_5_6 );
headerStream.setVersion( QDataStream::Qt_5_6 );
#endif
// Read the header to know the message length
quint64 msgLen = 0;
headerStream >> msgLen;
ConnectionInfo &info = connectionMap[sock];
info.stage = StageBody;
info.msgLen = msgLen;
// Read the header to know the message length
quint64 msgLen = 0;
headerStream >> msgLen;
ConnectionInfo &info = connectionMap[sock];
info.stage = StageBody;
info.msgLen = msgLen;
if ( sock->bytesAvailable() >= (qint64) msgLen ) {
readInitMessageBody( sock );
}
if ( sock->bytesAvailable() >= (qint64) msgLen ){
readInitMessageBody( sock );
}
}
void SingleApplicationPrivate::readInitMessageBody( QLocalSocket *sock )
{
Q_Q(SingleApplication);
Q_Q(SingleApplication);
if (!connectionMap.contains( sock )) {
return;
}
if (!connectionMap.contains( sock )){
return;
}
ConnectionInfo &info = connectionMap[sock];
if( sock->bytesAvailable() < ( qint64 )info.msgLen ) {
return;
}
ConnectionInfo &info = connectionMap[sock];
if( sock->bytesAvailable() < ( qint64 )info.msgLen ){
return;
}
// Read the message body
QByteArray msgBytes = sock->read(info.msgLen);
QDataStream readStream(msgBytes);
// Read the message body
QByteArray msgBytes = sock->read(info.msgLen);
QDataStream readStream(msgBytes);
#if (QT_VERSION >= QT_VERSION_CHECK(5, 6, 0))
readStream.setVersion( QDataStream::Qt_5_6 );
readStream.setVersion( QDataStream::Qt_5_6 );
#endif
// server name
QByteArray latin1Name;
readStream >> latin1Name;
// server name
QByteArray latin1Name;
readStream >> latin1Name;
// connection type
ConnectionType connectionType = InvalidConnection;
quint8 connTypeVal = InvalidConnection;
readStream >> connTypeVal;
connectionType = static_cast <ConnectionType>( connTypeVal );
// connection type
ConnectionType connectionType = InvalidConnection;
quint8 connTypeVal = InvalidConnection;
readStream >> connTypeVal;
connectionType = static_cast <ConnectionType>( connTypeVal );
// instance id
quint32 instanceId = 0;
readStream >> instanceId;
// instance id
quint32 instanceId = 0;
readStream >> instanceId;
// checksum
quint16 msgChecksum = 0;
readStream >> msgChecksum;
// checksum
quint16 msgChecksum = 0;
readStream >> msgChecksum;
#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) // ### Qt 6: remove
const quint16 actualChecksum =
qChecksum(
msgBytes.constData(),
static_cast<quint32>( msgBytes.length() - sizeof( quint16 ) ) );
#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
const quint16 actualChecksum = qChecksum(QByteArray(msgBytes, static_cast<quint32>(msgBytes.length() - sizeof(quint16))));
#else
#if TODO_LIST
#pragma message("@TODO remove code for QT 6 or later")
const quint16 actualChecksum = qChecksum(msgBytes.constData(), static_cast<quint32>(msgBytes.length() - sizeof(quint16)));
#endif
const quint16 actualChecksum =
qChecksum(
QByteArrayView(
msgBytes.constData(),
static_cast<quint32>(msgBytes.length() - sizeof(quint16))));
#endif
bool isValid = readStream.status() == QDataStream::Ok &&
QLatin1String(latin1Name) == blockServerName &&
msgChecksum == actualChecksum;
if( !isValid ) {
sock->close();
return;
}
bool isValid = readStream.status() == QDataStream::Ok &&
QLatin1String(latin1Name) == blockServerName &&
msgChecksum == actualChecksum;
info.instanceId = instanceId;
info.stage = StageConnected;
if( !isValid ){
sock->close();
return;
}
if( connectionType == NewInstance ||
( connectionType == SecondaryInstance &&
options & SingleApplication::Mode::SecondaryNotification ) )
{
Q_EMIT q->instanceStarted();
}
info.instanceId = instanceId;
info.stage = StageConnected;
if (sock->bytesAvailable() > 0) {
Q_EMIT this->slotDataAvailable( sock, instanceId );
}
if( connectionType == NewInstance ||
( connectionType == SecondaryInstance &&
options & SingleApplication::Mode::SecondaryNotification ) )
{
Q_EMIT q->instanceStarted();
}
if (sock->bytesAvailable() > 0){
Q_EMIT this->slotDataAvailable( sock, instanceId );
}
}
void SingleApplicationPrivate::slotDataAvailable( QLocalSocket *dataSocket, quint32 instanceId )
{
Q_Q(SingleApplication);
Q_EMIT q->receivedMessage( instanceId, dataSocket->readAll() );
Q_Q(SingleApplication);
Q_EMIT q->receivedMessage( instanceId, dataSocket->readAll() );
}
void SingleApplicationPrivate::slotClientConnectionClosed( QLocalSocket *closedSocket, quint32 instanceId )
{
if( closedSocket->bytesAvailable() > 0 )
Q_EMIT slotDataAvailable( closedSocket, instanceId );
if( closedSocket->bytesAvailable() > 0 )
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;
}

View File

@@ -1,6 +1,6 @@
// 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
// of this software and associated documentation files (the "Software"), to deal
@@ -38,62 +38,67 @@
#include "singleapplication.h"
struct InstancesInfo {
bool primary;
quint32 secondary;
qint64 primaryPid;
quint16 checksum;
bool primary;
quint32 secondary;
qint64 primaryPid;
char primaryUser[128];
quint16 checksum; // Must be the last field
};
struct ConnectionInfo {
explicit ConnectionInfo() :
msgLen(0), instanceId(0), stage(0) {}
qint64 msgLen;
quint32 instanceId;
quint8 stage;
qint64 msgLen = 0;
quint32 instanceId = 0;
quint8 stage = 0;
};
class SingleApplicationPrivate : public QObject {
Q_OBJECT
public:
enum ConnectionType : quint8 {
InvalidConnection = 0,
NewInstance = 1,
SecondaryInstance = 2,
Reconnect = 3
};
enum ConnectionStage : quint8 {
StageHeader = 0,
StageBody = 1,
StageConnected = 2,
};
Q_DECLARE_PUBLIC(SingleApplication)
SingleApplicationPrivate( SingleApplication *q_ptr );
~SingleApplicationPrivate();
void genBlockServerName();
void initializeMemoryBlock();
void startPrimary();
void startSecondary();
void connectToPrimary(int msecs, ConnectionType connectionType );
quint16 blockChecksum();
qint64 primaryPid();
void readInitMessageHeader(QLocalSocket *socket);
void readInitMessageBody(QLocalSocket *socket);
SingleApplication *q_ptr;
QSharedMemory *memory;
QLocalSocket *socket;
QLocalServer *server;
quint32 instanceNumber;
QString blockServerName;
SingleApplication::Options options;
QMap<QLocalSocket*, ConnectionInfo> connectionMap;
public Q_SLOTS:
void slotConnectionEstablished();
void slotDataAvailable( QLocalSocket*, quint32 );
void slotClientConnectionClosed( QLocalSocket*, quint32 );
Q_OBJECT
public:
enum ConnectionType : quint8 {
InvalidConnection = 0,
NewInstance = 1,
SecondaryInstance = 2,
Reconnect = 3
};
enum ConnectionStage : quint8 {
StageHeader = 0,
StageBody = 1,
StageConnected = 2,
};
Q_DECLARE_PUBLIC(SingleApplication)
SingleApplicationPrivate( SingleApplication *q_ptr );
~SingleApplicationPrivate() override;
static QString getUsername();
void genBlockServerName();
void initializeMemoryBlock() const;
void startPrimary();
void startSecondary();
bool connectToPrimary( int msecs, ConnectionType connectionType );
quint16 blockChecksum() const;
qint64 primaryPid() const;
QString primaryUser() const;
void readInitMessageHeader(QLocalSocket *socket);
void readInitMessageBody(QLocalSocket *socket);
static void randomSleep();
void addAppData(const QString &data);
QStringList appData() const;
SingleApplication *q_ptr;
QSharedMemory *memory;
QLocalSocket *socket;
QLocalServer *server;
quint32 instanceNumber;
QString blockServerName;
SingleApplication::Options options;
QMap<QLocalSocket*, ConnectionInfo> connectionMap;
QStringList appDataList;
public Q_SLOTS:
void slotConnectionEstablished();
void slotDataAvailable( QLocalSocket*, quint32 );
void slotClientConnectionClosed( QLocalSocket*, quint32 );
};
#endif // SINGLEAPPLICATION_P_H

View File

@@ -1,7 +1,7 @@
{
"id": "org.qelectrotech.QElectroTech",
"runtime": "org.kde.Platform",
"runtime-version": "5.14",
"runtime-version": "5.15",
"sdk": "org.kde.Sdk",
"command": "qelectrotech",
"rename-desktop-file": "qelectrotech.desktop",

View File

@@ -21,6 +21,6 @@ Include(FetchContent)
FetchContent_Declare(
pugixml
GIT_REPOSITORY https://github.com/zeux/pugixml.git
GIT_TAG v1.11.1)
GIT_TAG v1.11.4)
FetchContent_MakeAvailable(pugixml)

View File

@@ -26,6 +26,6 @@ Include(FetchContent)
FetchContent_Declare(
SingleApplication
GIT_REPOSITORY https://github.com/itay-grudev/SingleApplication.git
GIT_TAG v3.1.5)
GIT_TAG v3.2.0)
FetchContent_MakeAvailable(SingleApplication)

View File

@@ -52,6 +52,8 @@ set(QET_RES_FILES
${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
@@ -260,12 +262,8 @@ set(QET_SRC_FILES
${QET_DIR}/sources/editor/elementscene.h
${QET_DIR}/sources/editor/elementview.cpp
${QET_DIR}/sources/editor/elementview.h
${QET_DIR}/sources/editor/qetelementeditor.cpp
${QET_DIR}/sources/editor/qetelementeditor.h
${QET_DIR}/sources/editor/styleeditor.cpp
${QET_DIR}/sources/editor/styleeditor.h
${QET_DIR}/sources/editor/terminaleditor.cpp
${QET_DIR}/sources/editor/terminaleditor.h
${QET_DIR}/sources/editor/esevent/eseventaddarc.cpp
${QET_DIR}/sources/editor/esevent/eseventaddarc.h
@@ -320,8 +318,12 @@ set(QET_SRC_FILES
${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
@@ -371,6 +373,8 @@ set(QET_SRC_FILES
${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

View File

@@ -1,4 +1,4 @@
<definition hotspot_y="52" version="0.51" hotspot_x="56" link_type="simple" width="70" type="element" height="100">
<definition hotspot_y="52" version="0.51" hotspot_x="56" link_type="master" width="70" type="element" height="100">
<uuid uuid="{2d6c186b-0578-4682-90c9-f77843432e9f}"/>
<names>
<name lang="cs">Motorový spouštěč 1P+N</name>
@@ -12,6 +12,9 @@
<name lang="ar">قاطع مغناطيسي-حراري GV</name>
<name lang="hu">Motorvédő kapcsoló 1 pólusú GV</name>
</names>
<kindInformations>
<kindInformation name="type" show="1">protection</kindInformation>
</kindInformations>
<informations></informations>
<description>
<polygon x1="0" y1="14" x5="0" y4="4" y5="4" x6="0" y7="-25" x2="0" y6="-6" y2="10" y3="10" x7="-7" antialias="true" x3="5" closed="false" x4="5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>

View File

@@ -1,4 +1,4 @@
<definition hotspot_y="52" width="70" version="0.51" type="element" height="100" hotspot_x="56" link_type="simple">
<definition hotspot_y="52" width="70" version="0.51" type="element" height="100" hotspot_x="56" link_type="master">
<uuid uuid="{ec5fa3cd-6769-4a35-aaa9-6bc5ba4fc779}"/>
<names>
<name lang="fr">Disjoncteur Magnéto-thermique GV 2P</name>
@@ -8,6 +8,9 @@
<name lang="cs">Motorový spouštěč 2P</name>
<name lang="hu">Motorvédő kapcsoló 2 pólusú GV</name>
</names>
<kindInformations>
<kindInformation name="type" show="1">protection</kindInformation>
</kindInformations>
<informations></informations>
<description>
<polygon y2="10" x3="-15" y4="4" x2="-20" y3="10" x5="-20" style="line-style:normal;line-weight:normal;filling:none;color:black" x1="-20" x4="-15" closed="false" y1="14" y6="-6" x7="-27" y5="4" antialias="true" y7="-25" x6="-20"/>

View File

@@ -1,4 +1,4 @@
<definition hotspot_y="52" version="0.51" hotspot_x="56" link_type="simple" width="110" type="element" height="100">
<definition hotspot_y="52" version="0.51" hotspot_x="56" link_type="master" width="110" type="element" height="100">
<uuid uuid="{2424a938-847f-447f-a4ad-d9b6ef730fd9}"/>
<names>
<name lang="de">Motorschutzschalter</name>
@@ -12,6 +12,9 @@
<name lang="ar">قاطع مغناطيسي-حراري GV</name>
<name lang="hu">Motorvédő kapcsoló 3F + N pólusú</name>
</names>
<kindInformations>
<kindInformation name="type" show="1">protection</kindInformation>
</kindInformations>
<informations></informations>
<description>
<line end1="none" x1="40" y1="39" x2="40" length1="1.5" y2="28" antialias="false" end2="none" length2="1.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>

View File

@@ -1,4 +1,4 @@
<definition hotspot_y="50" width="110" version="0.51" type="element" height="100" hotspot_x="56" link_type="simple">
<definition hotspot_y="50" width="110" version="0.51" type="element" height="100" hotspot_x="56" link_type="master">
<uuid uuid="{686e19c6-6bce-4ced-8c01-2d7f58a78386}"/>
<names>
<name lang="el">Θερμομαγνητικό</name>
@@ -12,6 +12,9 @@
<name lang="de">Motorschutzschalter</name>
<name lang="hu">Motorvédő kapcsoló 4 pólusú GV</name>
</names>
<kindInformations>
<kindInformation name="type" show="1">protection</kindInformation>
</kindInformations>
<informations></informations>
<description>
<line y2="28" end1="none" length2="1.5" x2="40" style="line-style:normal;line-weight:normal;filling:none;color:black" x1="40" length1="1.5" y1="39" end2="none" antialias="false"/>

View File

@@ -1,4 +1,4 @@
<definition type="element" link_type="simple" hotspot_x="31" hotspot_y="4" version="0.5" width="90" height="70">
<definition type="element" link_type="master" hotspot_x="31" hotspot_y="4" version="0.5" width="90" height="70">
<uuid uuid="{98ADF831-42F0-4EDE-9267-6733EEBEAF62}"/><names>
<name lang="en">Motor circuit breaker</name>
<name lang="es">Disyuntor termico magnetico 3P mando manual con auto retorno y boton de desenclave</name>
@@ -10,6 +10,9 @@
<name lang="pl">Wyłącznik silnikowy</name>
<name lang="hu">Motorvédő kapcsoló 3 pólusú</name>
</names>
<kindInformations>
<kindInformation name="type" show="1">protection</kindInformation>
</kindInformations>
<informations>Author: The QElectroTech team
License: see http://qelectrotech.org/wiki/doc/elements_license</informations>
<description>

View File

@@ -1,4 +1,4 @@
<definition type="element" link_type="simple" hotspot_x="33" hotspot_y="5" version="0.5" width="110" height="70">
<definition type="element" link_type="master" hotspot_x="33" hotspot_y="5" version="0.5" width="110" height="70">
<uuid uuid="{C33FE39E-B2EE-4EC0-BC3F-4EB76E9BCEA0}"/><names>
<name lang="en">Motor circuit breaker with neutral</name>
<name lang="es">Disyuntor termico magnetico 3P+N mando manual con auto retorno y boton de desenclave</name>
@@ -10,6 +10,9 @@
<name lang="pl">Wyłącznik silnikowy</name>
<name lang="hu">Motorvédő kapcsoló 3F + N pólusú</name>
</names>
<kindInformations>
<kindInformation name="type" show="1">protection</kindInformation>
</kindInformations>
<informations>Author: The QElectroTech team
License: see http://qelectrotech.org/wiki/doc/elements_license</informations>
<description>

View File

@@ -1,4 +1,4 @@
<definition hotspot_y="50" version="0.51" hotspot_x="56" link_type="simple" width="70" type="element" height="110">
<definition hotspot_y="50" version="0.51" hotspot_x="56" link_type="master" width="70" type="element" height="110">
<uuid uuid="{68830151-5901-40f6-b94d-dc68b85165a2}"/>
<names>
<name lang="fr">Disjoncteur differentiel 1P+N</name>
@@ -8,6 +8,9 @@
<name lang="cs">Jističochránič 2P</name>
<name lang="hu">Differenciál-védőkapcsoló 1P+N termikus és zárlatvédelemmel</name>
</names>
<kindInformations>
<kindInformation name="type" show="1">protection</kindInformation>
</kindInformations>
<informations></informations>
<description>
<line end1="none" x1="-29.6203" y1="28" x2="10" length1="1.5" y2="28" antialias="false" end2="none" length2="1.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>

View File

@@ -1,4 +1,4 @@
<definition hotspot_y="50" version="0.51" hotspot_x="56" link_type="simple" width="110" type="element" height="110">
<definition hotspot_y="50" version="0.51" hotspot_x="56" link_type="master" width="110" type="element" height="110">
<uuid uuid="{3fa48846-98c0-43e1-8a96-330d4dc11ceb}"/>
<names>
<name lang="cs">Jističochránič 3P+N</name>
@@ -12,6 +12,9 @@
<name lang="ar">قاطع مغناطيسي-حراري GV</name>
<name lang="hu">Differenciál-védőkapcsoló 3P+N termikus és zárlatvédelemmel</name>
</names>
<kindInformations>
<kindInformation name="type" show="1">protection</kindInformation>
</kindInformations>
<informations></informations>
<description>
<line end1="none" x1="-29.6203" y1="28" x2="49.5887" length1="1.5" y2="28" antialias="false" end2="none" length2="1.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>

View File

@@ -1,4 +1,4 @@
<definition hotspot_y="50" version="0.51" hotspot_x="56" link_type="simple" width="70" type="element" height="110">
<definition hotspot_y="50" version="0.51" hotspot_x="56" link_type="master" width="70" type="element" height="110">
<uuid uuid="{20f65431-6f1f-4e09-9c73-68a1431c40a1}"/>
<names>
<name lang="fr">Disjoncteur differentiel 2P</name>
@@ -8,6 +8,9 @@
<name lang="cs">Jističochránič 2P</name>
<name lang="hu">Differenciál-védőkapcsoló 2P termikus és zárlatvédelemmel</name>
</names>
<kindInformations>
<kindInformation name="type" show="1">protection</kindInformation>
</kindInformations>
<informations></informations>
<description>
<polygon x1="-20" y1="14" x5="-20" y4="4" y5="4" x6="-20" y7="-25" x2="-20" y6="-6" y2="10" y3="10" x7="-27" antialias="true" x3="-15" closed="false" x4="-15" style="line-style:normal;line-weight:normal;filling:none;color:black"/>

View File

@@ -1,4 +1,4 @@
<definition hotspot_y="50" version="0.51" hotspot_x="56" link_type="simple" width="90" type="element" height="110">
<definition hotspot_y="50" version="0.51" hotspot_x="56" link_type="master" width="90" type="element" height="110">
<uuid uuid="{1e746e43-1906-4ea0-99a6-261e3c862dba}"/>
<names>
<name lang="cs">Jističochránič 3P</name>
@@ -12,6 +12,9 @@
<name lang="ar">قاطع مغناطيسي-حراري GV</name>
<name lang="hu">Differenciál-védőkapcsoló 3P termikus és zárlatvédelemmel</name>
</names>
<kindInformations>
<kindInformation name="type" show="1">protection</kindInformation>
</kindInformations>
<informations></informations>
<description>
<text text="I>" size="9" y="25" x="-24"/>

View File

@@ -1,4 +1,4 @@
<definition hotspot_y="50" version="0.51" hotspot_x="56" link_type="simple" width="110" type="element" height="110">
<definition hotspot_y="50" version="0.51" hotspot_x="56" link_type="master" width="110" type="element" height="110">
<uuid uuid="{fee3faef-5f4a-4a0b-bf0e-b6e93d9f9425}"/>
<names>
<name lang="de">Motorschutzschalter</name>
@@ -12,6 +12,9 @@
<name lang="ar">قاطع مغناطيسي-حراري GV</name>
<name lang="hu">Differenciál-védőkapcsoló 4P termikus és zárlatvédelemmel</name>
</names>
<kindInformations>
<kindInformation name="type" show="1">protection</kindInformation>
</kindInformations>
<informations></informations>
<description>
<polygon x1="-20" y1="14" x5="-20" y4="4" y5="4" x6="-20" y7="-25" x2="-20" y6="-6" y2="10" y3="10" x7="-27" antialias="true" x3="-15" closed="false" x4="-15" style="line-style:normal;line-weight:normal;filling:none;color:black"/>

View File

@@ -0,0 +1,16 @@
<definition height="30" version="0.70" orientation="dyyy" width="20" hotspot_x="10" link_type="simple" type="element" hotspot_y="17">
<uuid uuid="{ff754778-ac11-493d-828a-5f763560b02e}"/>
<names>
<name lang="en">Ground</name>
<name lang="nl">Aarde</name>
</names>
<elementInformations/>
<informations></informations>
<description>
<line end1="none" length1="1.5" x2="0" style="line-style:normal;line-weight:normal;filling:none;color:black" y2="0" y1="-10" antialias="false" x1="0" end2="none" length2="1.5"/>
<line end1="none" length1="1.5" x2="7" style="line-style:normal;line-weight:hight;filling:none;color:black" y2="0" y1="0" antialias="false" x1="-7" end2="none" length2="1.5"/>
<line end1="none" length1="1.5" x2="-5" style="line-style:normal;line-weight:hight;filling:none;color:black" y2="4" y1="4" antialias="false" x1="5" end2="none" length2="1.5"/>
<line end1="none" length1="1.5" x2="3" style="line-style:normal;line-weight:hight;filling:none;color:black" y2="8" y1="8" antialias="false" x1="-3" end2="none" length2="1.5"/>
<terminal y="-10" orientation="n" x="0"/>
</description>
</definition>

View File

@@ -0,0 +1,15 @@
<definition height="20" version="0.70" orientation="dyyy" width="30" hotspot_x="11" link_type="simple" type="element" hotspot_y="10">
<uuid uuid="{4f47811e-036e-4ef0-a846-b656f51ca81e}"/>
<names>
<name lang="en">Not connected (east)</name>
<name lang="nl">Niet verbonden (oost)</name>
</names>
<elementInformations/>
<informations></informations>
<description>
<line end1="none" length1="1.5" x2="10" style="line-style:normal;line-weight:normal;filling:none;color:black" y2="0" y1="0" antialias="false" x1="0" end2="none" length2="1.5"/>
<line end1="none" length1="1.5" x2="5" style="line-style:normal;line-weight:normal;filling:none;color:black" y2="5" y1="-5" antialias="false" x1="-5" end2="none" length2="1.5"/>
<line end1="none" length1="1.5" x2="5" style="line-style:normal;line-weight:normal;filling:none;color:black" y2="-5" y1="5" antialias="false" x1="-5" end2="none" length2="1.5"/>
<terminal y="0" orientation="e" x="10"/>
</description>
</definition>

View File

@@ -0,0 +1,15 @@
<definition height="30" version="0.70" orientation="dyyy" width="20" hotspot_x="10" link_type="simple" type="element" hotspot_y="18">
<uuid uuid="{e446ec4b-827d-4df3-bed0-dd4adbd2b62a}"/>
<names>
<name lang="en">Not connected (north)</name>
<name lang="nl">Niet verbonden (noord)</name>
</names>
<elementInformations/>
<informations></informations>
<description>
<line end1="none" length1="1.5" x2="6" style="line-style:normal;line-weight:normal;filling:none;color:black" y2="6" y1="-6" antialias="false" x1="-6" end2="none" length2="1.5"/>
<line end1="none" length1="1.5" x2="-6" style="line-style:normal;line-weight:normal;filling:none;color:black" y2="6" y1="-6" antialias="false" x1="6" end2="none" length2="1.5"/>
<line end1="none" length1="1.5" x2="0" style="line-style:normal;line-weight:normal;filling:none;color:black" y2="-10" y1="0" antialias="false" x1="0" end2="none" length2="1.5"/>
<terminal y="-10" orientation="n" x="0"/>
</description>
</definition>

View File

@@ -0,0 +1,15 @@
<definition height="30" version="0.70" orientation="dyyy" width="20" hotspot_x="10" link_type="simple" type="element" hotspot_y="11">
<uuid uuid="{e16cfe95-6fbc-49a0-97ee-1c0991324964}"/>
<names>
<name lang="en">Not connected (south)</name>
<name lang="nl">Niet verbonden (zuid)</name>
</names>
<elementInformations/>
<informations></informations>
<description>
<line end1="none" length1="1.5" x2="0" style="line-style:normal;line-weight:normal;filling:none;color:black" y2="0" y1="10" antialias="false" x1="0" end2="none" length2="1.5"/>
<line end1="none" length1="1.5" x2="5" style="line-style:normal;line-weight:normal;filling:none;color:black" y2="-5" y1="5" antialias="false" x1="-5" end2="none" length2="1.5"/>
<line end1="none" length1="1.5" x2="-5" style="line-style:normal;line-weight:normal;filling:none;color:black" y2="-5" y1="5" antialias="false" x1="5" end2="none" length2="1.5"/>
<terminal y="10" orientation="s" x="0"/>
</description>
</definition>

View File

@@ -0,0 +1,15 @@
<definition height="20" version="0.70" orientation="dyyy" width="30" hotspot_x="18" link_type="simple" type="element" hotspot_y="10">
<uuid uuid="{b6b35ed3-cbaa-43b0-a5b2-6120925de98e}"/>
<names>
<name lang="en">Not connected (west)</name>
<name lang="nl">Niet verbonden (west)</name>
</names>
<elementInformations/>
<informations></informations>
<description>
<line end1="none" length1="1.5" x2="-10" style="line-style:normal;line-weight:normal;filling:none;color:black" y2="0" y1="0" antialias="false" x1="0" end2="none" length2="1.5"/>
<line end1="none" length1="1.5" x2="5" style="line-style:normal;line-weight:normal;filling:none;color:black" y2="5" y1="-5" antialias="false" x1="-5" end2="none" length2="1.5"/>
<line end1="none" length1="1.5" x2="5" style="line-style:normal;line-weight:normal;filling:none;color:black" y2="-5" y1="5" antialias="false" x1="-5" end2="none" length2="1.5"/>
<terminal y="0" orientation="w" x="-10"/>
</description>
</definition>

View File

@@ -0,0 +1,6 @@
<qet-directory>
<names>
<name lang="en">Common</name>
<name lang="nl">Algemeen</name>
</names>
</qet-directory>

View File

@@ -0,0 +1,20 @@
<definition height="50" version="0.70" orientation="dyyy" width="50" hotspot_x="24" link_type="simple" type="element" hotspot_y="15">
<uuid uuid="{48d90cab-e93d-4460-a1c8-4945e69144bf}"/>
<names>
<name lang="en">Jack with 2 positions</name>
<name lang="nl">Contact met 2 posities</name>
</names>
<elementInformations/>
<informations></informations>
<description>
<rect y="-10" height="40" width="20" rx="0" style="line-style:normal;line-weight:normal;filling:none;color:black" antialias="false" x="-10" ry="0"/>
<line end1="none" length1="1.5" x2="-10" style="line-style:normal;line-weight:normal;filling:none;color:black" y2="0" y1="0" antialias="false" x1="-20" end2="none" length2="1.5"/>
<line end1="none" length1="1.5" x2="-11" style="line-style:normal;line-weight:normal;filling:none;color:black" y2="20" y1="20" antialias="false" x1="-20" end2="none" length2="1.5"/>
<line end1="none" length1="1.5" x2="20" style="line-style:normal;line-weight:normal;filling:none;color:black" y2="20" y1="20" antialias="false" x1="10" end2="none" length2="1.5"/>
<line end1="none" length1="1.5" x2="10" style="line-style:normal;line-weight:normal;filling:none;color:black" y2="0" y1="0" antialias="false" x1="20" end2="none" length2="1.5"/>
<terminal y="0" orientation="e" x="20"/>
<terminal y="0" orientation="w" x="-20"/>
<terminal y="20" orientation="e" x="20"/>
<terminal y="20" orientation="w" x="-20"/>
</description>
</definition>

View File

@@ -0,0 +1,24 @@
<definition height="70" version="0.70" orientation="dyyy" width="50" hotspot_x="24" link_type="simple" type="element" hotspot_y="15">
<uuid uuid="{1e0d2098-80e3-4f87-a1a4-8979da3035e3}"/>
<names>
<name lang="en">Jack with 3 positions</name>
<name lang="nl">Contact met 3 posities</name>
</names>
<elementInformations/>
<informations></informations>
<description>
<rect y="-10" height="60" width="20" rx="0" style="line-style:normal;line-weight:normal;filling:none;color:black" antialias="false" x="-10" ry="0"/>
<line end1="none" length1="1.5" x2="-10" style="line-style:normal;line-weight:normal;filling:none;color:black" y2="0" y1="0" antialias="false" x1="-20" end2="none" length2="1.5"/>
<line end1="none" length1="1.5" x2="20" style="line-style:normal;line-weight:normal;filling:none;color:black" y2="0" y1="0" antialias="false" x1="10" end2="none" length2="1.5"/>
<line end1="none" length1="1.5" x2="10" style="line-style:normal;line-weight:normal;filling:none;color:black" y2="20" y1="20" antialias="false" x1="20" end2="none" length2="1.5"/>
<line end1="none" length1="1.5" x2="20" style="line-style:normal;line-weight:normal;filling:none;color:black" y2="40" y1="40" antialias="false" x1="10" end2="none" length2="1.5"/>
<line end1="none" length1="1.5" x2="-20" style="line-style:normal;line-weight:normal;filling:none;color:black" y2="40" y1="40" antialias="false" x1="-10" end2="none" length2="1.5"/>
<line end1="none" length1="1.5" x2="-10" style="line-style:normal;line-weight:normal;filling:none;color:black" y2="20" y1="20" antialias="false" x1="-20" end2="none" length2="1.5"/>
<terminal y="40" orientation="w" x="-20"/>
<terminal y="40" orientation="e" x="20"/>
<terminal y="0" orientation="w" x="-20"/>
<terminal y="20" orientation="w" x="-20"/>
<terminal y="20" orientation="e" x="20"/>
<terminal y="0" orientation="e" x="20"/>
</description>
</definition>

View File

@@ -0,0 +1,28 @@
<definition height="90" version="0.70" orientation="dyyy" width="50" hotspot_x="24" link_type="simple" type="element" hotspot_y="15">
<uuid uuid="{88b316e4-9fd7-4b89-af9e-3a70b840603b}"/>
<names>
<name lang="en">Jack with 4 positions</name>
<name lang="nl">Contact met 4 posities</name>
</names>
<elementInformations/>
<informations></informations>
<description>
<rect y="-10" height="80" width="20" rx="0" style="line-style:normal;line-weight:normal;filling:none;color:black" antialias="false" x="-10" ry="0"/>
<line end1="none" length1="1.5" x2="20" style="line-style:normal;line-weight:normal;filling:none;color:black" y2="0" y1="0" antialias="false" x1="10" end2="none" length2="1.5"/>
<line end1="none" length1="1.5" x2="20" style="line-style:normal;line-weight:normal;filling:none;color:black" y2="20" y1="20" antialias="false" x1="10" end2="none" length2="1.5"/>
<line end1="none" length1="1.5" x2="20" style="line-style:normal;line-weight:normal;filling:none;color:black" y2="40" y1="40" antialias="false" x1="10" end2="none" length2="1.5"/>
<line end1="none" length1="1.5" x2="20" style="line-style:normal;line-weight:normal;filling:none;color:black" y2="60" y1="60" antialias="false" x1="10" end2="none" length2="1.5"/>
<line end1="none" length1="1.5" x2="-20" style="line-style:normal;line-weight:normal;filling:none;color:black" y2="60" y1="60" antialias="false" x1="-10" end2="none" length2="1.5"/>
<line end1="none" length1="1.5" x2="-10" style="line-style:normal;line-weight:normal;filling:none;color:black" y2="40" y1="40" antialias="false" x1="-20" end2="none" length2="1.5"/>
<line end1="none" length1="1.5" x2="-20" style="line-style:normal;line-weight:normal;filling:none;color:black" y2="20" y1="20" antialias="false" x1="-10" end2="none" length2="1.5"/>
<line end1="none" length1="1.5" x2="-10" style="line-style:normal;line-weight:normal;filling:none;color:black" y2="0" y1="0" antialias="false" x1="-20" end2="none" length2="1.5"/>
<terminal y="20" orientation="w" x="-20"/>
<terminal y="0" orientation="w" x="-20"/>
<terminal y="60" orientation="w" x="-20"/>
<terminal y="20" orientation="e" x="20"/>
<terminal y="40" orientation="e" x="20"/>
<terminal y="60" orientation="e" x="20"/>
<terminal y="0" orientation="e" x="20"/>
<terminal y="40" orientation="w" x="-20"/>
</description>
</definition>

View File

@@ -0,0 +1,32 @@
<definition type="element" width="50" orientation="dyyy" hotspot_x="24" hotspot_y="15" version="0.70" link_type="simple" height="110">
<uuid uuid="{3398a8e0-2b95-4231-8820-ad19908d197a}"/>
<names>
<name lang="en">Jack with 5 positions</name>
<name lang="nl">Contact met 5 posities</name>
</names>
<elementInformations/>
<informations></informations>
<description>
<rect width="20" rx="0" x="-10" y="-10" ry="0" style="line-style:normal;line-weight:normal;filling:none;color:black" antialias="false" height="100"/>
<line length2="1.5" y2="0" end1="none" x1="-20" y1="0" length1="1.5" end2="none" style="line-style:normal;line-weight:normal;filling:none;color:black" antialias="false" x2="-10"/>
<line length2="1.5" y2="20" end1="none" x1="-20" y1="20" length1="1.5" end2="none" style="line-style:normal;line-weight:normal;filling:none;color:black" antialias="false" x2="-10"/>
<line length2="1.5" y2="40" end1="none" x1="-20" y1="40" length1="1.5" end2="none" style="line-style:normal;line-weight:normal;filling:none;color:black" antialias="false" x2="-10"/>
<line length2="1.5" y2="60" end1="none" x1="-20" y1="60" length1="1.5" end2="none" style="line-style:normal;line-weight:normal;filling:none;color:black" antialias="false" x2="-10"/>
<line length2="1.5" y2="80" end1="none" x1="-20" y1="80" length1="1.5" end2="none" style="line-style:normal;line-weight:normal;filling:none;color:black" antialias="false" x2="-10"/>
<line length2="1.5" y2="80" end1="none" x1="20" y1="80" length1="1.5" end2="none" style="line-style:normal;line-weight:normal;filling:none;color:black" antialias="false" x2="10"/>
<line length2="1.5" y2="60" end1="none" x1="10" y1="60" length1="1.5" end2="none" style="line-style:normal;line-weight:normal;filling:none;color:black" antialias="false" x2="20"/>
<line length2="1.5" y2="40" end1="none" x1="10" y1="40" length1="1.5" end2="none" style="line-style:normal;line-weight:normal;filling:none;color:black" antialias="false" x2="20"/>
<line length2="1.5" y2="20" end1="none" x1="10" y1="20" length1="1.5" end2="none" style="line-style:normal;line-weight:normal;filling:none;color:black" antialias="false" x2="20"/>
<line length2="1.5" y2="0" end1="none" x1="10" y1="0" length1="1.5" end2="none" style="line-style:normal;line-weight:normal;filling:none;color:black" antialias="false" x2="20"/>
<terminal x="-20" y="60" orientation="w"/>
<terminal x="-20" y="40" orientation="w"/>
<terminal x="-20" y="20" orientation="w"/>
<terminal x="20" y="20" orientation="e"/>
<terminal x="20" y="0" orientation="e"/>
<terminal x="20" y="40" orientation="e"/>
<terminal x="-20" y="80" orientation="w"/>
<terminal x="-20" y="0" orientation="w"/>
<terminal x="20" y="60" orientation="e"/>
<terminal x="20" y="80" orientation="e"/>
</description>
</definition>

View File

@@ -0,0 +1,36 @@
<definition height="130" version="0.70" orientation="dyyy" width="50" hotspot_x="24" link_type="simple" type="element" hotspot_y="15">
<uuid uuid="{8cdb64a3-1edc-4ac6-9e86-67c987e62457}"/>
<names>
<name lang="en">Jack with 6 positions</name>
<name lang="nl">Contact met 6 posities</name>
</names>
<elementInformations/>
<informations></informations>
<description>
<line end1="none" length1="1.5" x2="-10" style="line-style:normal;line-weight:normal;filling:none;color:black" y2="80" y1="80" antialias="false" x1="-20" end2="none" length2="1.5"/>
<line end1="none" length1="1.5" x2="-10" style="line-style:normal;line-weight:normal;filling:none;color:black" y2="60" y1="60" antialias="false" x1="-20" end2="none" length2="1.5"/>
<line end1="none" length1="1.5" x2="-10" style="line-style:normal;line-weight:normal;filling:none;color:black" y2="40" y1="40" antialias="false" x1="-20" end2="none" length2="1.5"/>
<line end1="none" length1="1.5" x2="-10" style="line-style:normal;line-weight:normal;filling:none;color:black" y2="20" y1="20" antialias="false" x1="-20" end2="none" length2="1.5"/>
<line end1="none" length1="1.5" x2="-10" style="line-style:normal;line-weight:normal;filling:none;color:black" y2="100" y1="100" antialias="false" x1="-20" end2="none" length2="1.5"/>
<rect y="-10" height="120" width="20" rx="0" style="line-style:normal;line-weight:normal;filling:none;color:black" antialias="false" x="-10" ry="0"/>
<line end1="none" length1="1.5" x2="-10" style="line-style:normal;line-weight:normal;filling:none;color:black" y2="0" y1="0" antialias="false" x1="-20" end2="none" length2="1.5"/>
<line end1="none" length1="1.5" x2="20" style="line-style:normal;line-weight:normal;filling:none;color:black" y2="60" y1="60" antialias="false" x1="10" end2="none" length2="1.5"/>
<line end1="none" length1="1.5" x2="20" style="line-style:normal;line-weight:normal;filling:none;color:black" y2="40" y1="40" antialias="false" x1="10" end2="none" length2="1.5"/>
<line end1="none" length1="1.5" x2="20" style="line-style:normal;line-weight:normal;filling:none;color:black" y2="20" y1="20" antialias="false" x1="10" end2="none" length2="1.5"/>
<line end1="none" length1="1.5" x2="20" style="line-style:normal;line-weight:normal;filling:none;color:black" y2="100" y1="100" antialias="false" x1="10" end2="none" length2="1.5"/>
<line end1="none" length1="1.5" x2="20" style="line-style:normal;line-weight:normal;filling:none;color:black" y2="80" y1="80" antialias="false" x1="10" end2="none" length2="1.5"/>
<line end1="none" length1="1.5" x2="20" style="line-style:normal;line-weight:normal;filling:none;color:black" y2="0" y1="0" antialias="false" x1="10" end2="none" length2="1.5"/>
<terminal y="0" orientation="e" x="20"/>
<terminal y="0" orientation="w" x="-20"/>
<terminal y="20" orientation="w" x="-20"/>
<terminal y="20" orientation="e" x="20"/>
<terminal y="40" orientation="w" x="-20"/>
<terminal y="40" orientation="e" x="20"/>
<terminal y="60" orientation="e" x="20"/>
<terminal y="60" orientation="w" x="-20"/>
<terminal y="100" orientation="w" x="-20"/>
<terminal y="100" orientation="e" x="20"/>
<terminal y="80" orientation="e" x="20"/>
<terminal y="80" orientation="w" x="-20"/>
</description>
</definition>

View File

@@ -0,0 +1,40 @@
<definition height="150" version="0.70" orientation="dyyy" width="50" hotspot_x="24" link_type="simple" type="element" hotspot_y="15">
<uuid uuid="{b95190d3-569c-4d29-9c08-eb63190954ef}"/>
<names>
<name lang="en">Jack with 7 positions</name>
<name lang="nl">Contact met 7 posities</name>
</names>
<elementInformations/>
<informations></informations>
<description>
<line end1="none" length1="1.5" x2="-10" style="line-style:normal;line-weight:normal;filling:none;color:black" y2="100" y1="100" antialias="false" x1="-20" end2="none" length2="1.5"/>
<rect y="-10" height="140" width="20" rx="0" style="line-style:normal;line-weight:normal;filling:none;color:black" antialias="false" x="-10" ry="0"/>
<line end1="none" length1="1.5" x2="-10" style="line-style:normal;line-weight:normal;filling:none;color:black" y2="0" y1="0" antialias="false" x1="-20" end2="none" length2="1.5"/>
<line end1="none" length1="1.5" x2="-10" style="line-style:normal;line-weight:normal;filling:none;color:black" y2="20" y1="20" antialias="false" x1="-20" end2="none" length2="1.5"/>
<line end1="none" length1="1.5" x2="-10" style="line-style:normal;line-weight:normal;filling:none;color:black" y2="60" y1="60" antialias="false" x1="-20" end2="none" length2="1.5"/>
<line end1="none" length1="1.5" x2="-10" style="line-style:normal;line-weight:normal;filling:none;color:black" y2="80" y1="80" antialias="false" x1="-20" end2="none" length2="1.5"/>
<line end1="none" length1="1.5" x2="-10" style="line-style:normal;line-weight:normal;filling:none;color:black" y2="40" y1="40" antialias="false" x1="-20" end2="none" length2="1.5"/>
<line end1="none" length1="1.5" x2="-10" style="line-style:normal;line-weight:normal;filling:none;color:black" y2="120" y1="120" antialias="false" x1="-20" end2="none" length2="1.5"/>
<line end1="none" length1="1.5" x2="20" style="line-style:normal;line-weight:normal;filling:none;color:black" y2="60" y1="60" antialias="false" x1="10" end2="none" length2="1.5"/>
<line end1="none" length1="1.5" x2="20" style="line-style:normal;line-weight:normal;filling:none;color:black" y2="0" y1="0" antialias="false" x1="10" end2="none" length2="1.5"/>
<line end1="none" length1="1.5" x2="20" style="line-style:normal;line-weight:normal;filling:none;color:black" y2="80" y1="80" antialias="false" x1="10" end2="none" length2="1.5"/>
<line end1="none" length1="1.5" x2="20" style="line-style:normal;line-weight:normal;filling:none;color:black" y2="40" y1="40" antialias="false" x1="10" end2="none" length2="1.5"/>
<line end1="none" length1="1.5" x2="20" style="line-style:normal;line-weight:normal;filling:none;color:black" y2="20" y1="20" antialias="false" x1="10" end2="none" length2="1.5"/>
<line end1="none" length1="1.5" x2="20" style="line-style:normal;line-weight:normal;filling:none;color:black" y2="100" y1="100" antialias="false" x1="10" end2="none" length2="1.5"/>
<line end1="none" length1="1.5" x2="20" style="line-style:normal;line-weight:normal;filling:none;color:black" y2="120" y1="120" antialias="false" x1="10" end2="none" length2="1.5"/>
<terminal y="100" orientation="w" x="-20"/>
<terminal y="100" orientation="e" x="20"/>
<terminal y="120" orientation="e" x="20"/>
<terminal y="120" orientation="w" x="-20"/>
<terminal y="20" orientation="e" x="20"/>
<terminal y="20" orientation="w" x="-20"/>
<terminal y="0" orientation="e" x="20"/>
<terminal y="0" orientation="w" x="-20"/>
<terminal y="40" orientation="e" x="20"/>
<terminal y="40" orientation="w" x="-20"/>
<terminal y="60" orientation="e" x="20"/>
<terminal y="60" orientation="w" x="-20"/>
<terminal y="80" orientation="e" x="20"/>
<terminal y="80" orientation="w" x="-20"/>
</description>
</definition>

View File

@@ -0,0 +1,44 @@
<definition height="170" version="0.70" orientation="dyyy" width="50" hotspot_x="24" link_type="simple" type="element" hotspot_y="15">
<uuid uuid="{aa0c2db1-cd6d-470e-a45f-1503fd898c7d}"/>
<names>
<name lang="en">Jack with 8 positions</name>
<name lang="nl">Contact met 8 posities</name>
</names>
<elementInformations/>
<informations></informations>
<description>
<rect y="-10" height="160" width="20" rx="0" style="line-style:normal;line-weight:normal;filling:none;color:black" antialias="false" x="-10" ry="0"/>
<line end1="none" length1="1.5" x2="-10" style="line-style:normal;line-weight:normal;filling:none;color:black" y2="80" y1="80" antialias="false" x1="-20" end2="none" length2="1.5"/>
<line end1="none" length1="1.5" x2="-10" style="line-style:normal;line-weight:normal;filling:none;color:black" y2="60" y1="60" antialias="false" x1="-20" end2="none" length2="1.5"/>
<line end1="none" length1="1.5" x2="-10" style="line-style:normal;line-weight:normal;filling:none;color:black" y2="20" y1="20" antialias="false" x1="-20" end2="none" length2="1.5"/>
<line end1="none" length1="1.5" x2="-10" style="line-style:normal;line-weight:normal;filling:none;color:black" y2="40" y1="40" antialias="false" x1="-20" end2="none" length2="1.5"/>
<line end1="none" length1="1.5" x2="-10" style="line-style:normal;line-weight:normal;filling:none;color:black" y2="0" y1="0" antialias="false" x1="-20" end2="none" length2="1.5"/>
<line end1="none" length1="1.5" x2="-10" style="line-style:normal;line-weight:normal;filling:none;color:black" y2="100" y1="100" antialias="false" x1="-20" end2="none" length2="1.5"/>
<line end1="none" length1="1.5" x2="-10" style="line-style:normal;line-weight:normal;filling:none;color:black" y2="120" y1="120" antialias="false" x1="-20" end2="none" length2="1.5"/>
<line end1="none" length1="1.5" x2="-10" style="line-style:normal;line-weight:normal;filling:none;color:black" y2="140" y1="140" antialias="false" x1="-20" end2="none" length2="1.5"/>
<line end1="none" length1="1.5" x2="20" style="line-style:normal;line-weight:normal;filling:none;color:black" y2="0" y1="0" antialias="false" x1="10" end2="none" length2="1.5"/>
<line end1="none" length1="1.5" x2="20" style="line-style:normal;line-weight:normal;filling:none;color:black" y2="140" y1="140" antialias="false" x1="10" end2="none" length2="1.5"/>
<line end1="none" length1="1.5" x2="20" style="line-style:normal;line-weight:normal;filling:none;color:black" y2="120" y1="120" antialias="false" x1="10" end2="none" length2="1.5"/>
<line end1="none" length1="1.5" x2="20" style="line-style:normal;line-weight:normal;filling:none;color:black" y2="20" y1="20" antialias="false" x1="10" end2="none" length2="1.5"/>
<line end1="none" length1="1.5" x2="20" style="line-style:normal;line-weight:normal;filling:none;color:black" y2="40" y1="40" antialias="false" x1="10" end2="none" length2="1.5"/>
<line end1="none" length1="1.5" x2="20" style="line-style:normal;line-weight:normal;filling:none;color:black" y2="80" y1="80" antialias="false" x1="10" end2="none" length2="1.5"/>
<line end1="none" length1="1.5" x2="20" style="line-style:normal;line-weight:normal;filling:none;color:black" y2="60" y1="60" antialias="false" x1="10" end2="none" length2="1.5"/>
<line end1="none" length1="1.5" x2="20" style="line-style:normal;line-weight:normal;filling:none;color:black" y2="100" y1="100" antialias="false" x1="10" end2="none" length2="1.5"/>
<terminal y="20" orientation="w" x="-20"/>
<terminal y="0" orientation="w" x="-20"/>
<terminal y="20" orientation="e" x="20"/>
<terminal y="0" orientation="e" x="20"/>
<terminal y="120" orientation="e" x="20"/>
<terminal y="60" orientation="e" x="20"/>
<terminal y="40" orientation="e" x="20"/>
<terminal y="80" orientation="e" x="20"/>
<terminal y="80" orientation="w" x="-20"/>
<terminal y="40" orientation="w" x="-20"/>
<terminal y="60" orientation="w" x="-20"/>
<terminal y="100" orientation="e" x="20"/>
<terminal y="100" orientation="w" x="-20"/>
<terminal y="140" orientation="e" x="20"/>
<terminal y="120" orientation="w" x="-20"/>
<terminal y="140" orientation="w" x="-20"/>
</description>
</definition>

View File

@@ -0,0 +1,48 @@
<definition height="190" version="0.70" orientation="dyyy" width="50" hotspot_x="24" link_type="simple" type="element" hotspot_y="15">
<uuid uuid="{d13c9554-6300-4f3a-bc7b-cadecf88a2a5}"/>
<names>
<name lang="en">Jack with 9 positions</name>
<name lang="nl">Contact met 9 posities</name>
</names>
<elementInformations/>
<informations></informations>
<description>
<line end1="none" length1="1.5" x2="-10" style="line-style:normal;line-weight:normal;filling:none;color:black" y2="100" y1="100" antialias="false" x1="-20" end2="none" length2="1.5"/>
<rect y="-10" height="180" width="20" rx="0" style="line-style:normal;line-weight:normal;filling:none;color:black" antialias="false" x="-10" ry="0"/>
<line end1="none" length1="1.5" x2="-10" style="line-style:normal;line-weight:normal;filling:none;color:black" y2="120" y1="120" antialias="false" x1="-20" end2="none" length2="1.5"/>
<line end1="none" length1="1.5" x2="-10" style="line-style:normal;line-weight:normal;filling:none;color:black" y2="60" y1="60" antialias="false" x1="-20" end2="none" length2="1.5"/>
<line end1="none" length1="1.5" x2="-10" style="line-style:normal;line-weight:normal;filling:none;color:black" y2="80" y1="80" antialias="false" x1="-20" end2="none" length2="1.5"/>
<line end1="none" length1="1.5" x2="-10" style="line-style:normal;line-weight:normal;filling:none;color:black" y2="0" y1="0" antialias="false" x1="-20" end2="none" length2="1.5"/>
<line end1="none" length1="1.5" x2="-10" style="line-style:normal;line-weight:normal;filling:none;color:black" y2="20" y1="20" antialias="false" x1="-20" end2="none" length2="1.5"/>
<line end1="none" length1="1.5" x2="-10" style="line-style:normal;line-weight:normal;filling:none;color:black" y2="160" y1="160" antialias="false" x1="-20" end2="none" length2="1.5"/>
<line end1="none" length1="1.5" x2="-10" style="line-style:normal;line-weight:normal;filling:none;color:black" y2="140" y1="140" antialias="false" x1="-20" end2="none" length2="1.5"/>
<line end1="none" length1="1.5" x2="-10" style="line-style:normal;line-weight:normal;filling:none;color:black" y2="40" y1="40" antialias="false" x1="-20" end2="none" length2="1.5"/>
<line end1="none" length1="1.5" x2="20" style="line-style:normal;line-weight:normal;filling:none;color:black" y2="140" y1="140" antialias="false" x1="10" end2="none" length2="1.5"/>
<line end1="none" length1="1.5" x2="20" style="line-style:normal;line-weight:normal;filling:none;color:black" y2="160" y1="160" antialias="false" x1="10" end2="none" length2="1.5"/>
<line end1="none" length1="1.5" x2="20" style="line-style:normal;line-weight:normal;filling:none;color:black" y2="20" y1="20" antialias="false" x1="10" end2="none" length2="1.5"/>
<line end1="none" length1="1.5" x2="20" style="line-style:normal;line-weight:normal;filling:none;color:black" y2="40" y1="40" antialias="false" x1="10" end2="none" length2="1.5"/>
<line end1="none" length1="1.5" x2="20" style="line-style:normal;line-weight:normal;filling:none;color:black" y2="100" y1="100" antialias="false" x1="10" end2="none" length2="1.5"/>
<line end1="none" length1="1.5" x2="20" style="line-style:normal;line-weight:normal;filling:none;color:black" y2="0" y1="0" antialias="false" x1="10" end2="none" length2="1.5"/>
<line end1="none" length1="1.5" x2="20" style="line-style:normal;line-weight:normal;filling:none;color:black" y2="120" y1="120" antialias="false" x1="10" end2="none" length2="1.5"/>
<line end1="none" length1="1.5" x2="20" style="line-style:normal;line-weight:normal;filling:none;color:black" y2="80" y1="80" antialias="false" x1="10" end2="none" length2="1.5"/>
<line end1="none" length1="1.5" x2="20" style="line-style:normal;line-weight:normal;filling:none;color:black" y2="60" y1="60" antialias="false" x1="10" end2="none" length2="1.5"/>
<terminal y="0" orientation="e" x="20"/>
<terminal y="0" orientation="w" x="-20"/>
<terminal y="100" orientation="e" x="20"/>
<terminal y="120" orientation="w" x="-20"/>
<terminal y="140" orientation="e" x="20"/>
<terminal y="60" orientation="w" x="-20"/>
<terminal y="80" orientation="e" x="20"/>
<terminal y="100" orientation="w" x="-20"/>
<terminal y="80" orientation="w" x="-20"/>
<terminal y="120" orientation="e" x="20"/>
<terminal y="60" orientation="e" x="20"/>
<terminal y="160" orientation="w" x="-20"/>
<terminal y="160" orientation="e" x="20"/>
<terminal y="140" orientation="w" x="-20"/>
<terminal y="40" orientation="e" x="20"/>
<terminal y="20" orientation="e" x="20"/>
<terminal y="40" orientation="w" x="-20"/>
<terminal y="20" orientation="w" x="-20"/>
</description>
</definition>

View File

@@ -0,0 +1,52 @@
<definition height="210" version="0.70" orientation="dyyy" width="50" hotspot_x="24" link_type="simple" type="element" hotspot_y="15">
<uuid uuid="{d8443641-f543-4e44-b838-615c066287b3}"/>
<names>
<name lang="en">Jack with 10 positions</name>
<name lang="nl">Contact met 10 posities</name>
</names>
<elementInformations/>
<informations></informations>
<description>
<rect y="-10" height="200" width="20" rx="0" style="line-style:normal;line-weight:normal;filling:none;color:black" antialias="false" x="-10" ry="0"/>
<line end1="none" length1="1.5" x2="-10" style="line-style:normal;line-weight:normal;filling:none;color:black" y2="120" y1="120" antialias="false" x1="-20" end2="none" length2="1.5"/>
<line end1="none" length1="1.5" x2="-10" style="line-style:normal;line-weight:normal;filling:none;color:black" y2="20" y1="20" antialias="false" x1="-20" end2="none" length2="1.5"/>
<line end1="none" length1="1.5" x2="-10" style="line-style:normal;line-weight:normal;filling:none;color:black" y2="0" y1="0" antialias="false" x1="-20" end2="none" length2="1.5"/>
<line end1="none" length1="1.5" x2="-10" style="line-style:normal;line-weight:normal;filling:none;color:black" y2="40" y1="40" antialias="false" x1="-20" end2="none" length2="1.5"/>
<line end1="none" length1="1.5" x2="-10" style="line-style:normal;line-weight:normal;filling:none;color:black" y2="60" y1="60" antialias="false" x1="-20" end2="none" length2="1.5"/>
<line end1="none" length1="1.5" x2="-10" style="line-style:normal;line-weight:normal;filling:none;color:black" y2="100" y1="100" antialias="false" x1="-20" end2="none" length2="1.5"/>
<line end1="none" length1="1.5" x2="-10" style="line-style:normal;line-weight:normal;filling:none;color:black" y2="140" y1="140" antialias="false" x1="-20" end2="none" length2="1.5"/>
<line end1="none" length1="1.5" x2="-10" style="line-style:normal;line-weight:normal;filling:none;color:black" y2="180" y1="180" antialias="false" x1="-20" end2="none" length2="1.5"/>
<line end1="none" length1="1.5" x2="-10" style="line-style:normal;line-weight:normal;filling:none;color:black" y2="160" y1="160" antialias="false" x1="-20" end2="none" length2="1.5"/>
<line end1="none" length1="1.5" x2="-10" style="line-style:normal;line-weight:normal;filling:none;color:black" y2="80" y1="80" antialias="false" x1="-20" end2="none" length2="1.5"/>
<line end1="none" length1="1.5" x2="20" style="line-style:normal;line-weight:normal;filling:none;color:black" y2="60" y1="60" antialias="false" x1="10" end2="none" length2="1.5"/>
<line end1="none" length1="1.5" x2="20" style="line-style:normal;line-weight:normal;filling:none;color:black" y2="180" y1="180" antialias="false" x1="10" end2="none" length2="1.5"/>
<line end1="none" length1="1.5" x2="20" style="line-style:normal;line-weight:normal;filling:none;color:black" y2="160" y1="160" antialias="false" x1="10" end2="none" length2="1.5"/>
<line end1="none" length1="1.5" x2="20" style="line-style:normal;line-weight:normal;filling:none;color:black" y2="140" y1="140" antialias="false" x1="10" end2="none" length2="1.5"/>
<line end1="none" length1="1.5" x2="20" style="line-style:normal;line-weight:normal;filling:none;color:black" y2="40" y1="40" antialias="false" x1="10" end2="none" length2="1.5"/>
<line end1="none" length1="1.5" x2="20" style="line-style:normal;line-weight:normal;filling:none;color:black" y2="100" y1="100" antialias="false" x1="10" end2="none" length2="1.5"/>
<line end1="none" length1="1.5" x2="20" style="line-style:normal;line-weight:normal;filling:none;color:black" y2="80" y1="80" antialias="false" x1="10" end2="none" length2="1.5"/>
<line end1="none" length1="1.5" x2="20" style="line-style:normal;line-weight:normal;filling:none;color:black" y2="120" y1="120" antialias="false" x1="10" end2="none" length2="1.5"/>
<line end1="none" length1="1.5" x2="20" style="line-style:normal;line-weight:normal;filling:none;color:black" y2="0" y1="0" antialias="false" x1="10" end2="none" length2="1.5"/>
<line end1="none" length1="1.5" x2="20" style="line-style:normal;line-weight:normal;filling:none;color:black" y2="20" y1="20" antialias="false" x1="10" end2="none" length2="1.5"/>
<terminal y="140" orientation="w" x="-20"/>
<terminal y="160" orientation="e" x="20"/>
<terminal y="140" orientation="e" x="20"/>
<terminal y="160" orientation="w" x="-20"/>
<terminal y="180" orientation="e" x="20"/>
<terminal y="180" orientation="w" x="-20"/>
<terminal y="20" orientation="w" x="-20"/>
<terminal y="40" orientation="e" x="20"/>
<terminal y="40" orientation="w" x="-20"/>
<terminal y="20" orientation="e" x="20"/>
<terminal y="0" orientation="w" x="-20"/>
<terminal y="0" orientation="e" x="20"/>
<terminal y="60" orientation="e" x="20"/>
<terminal y="60" orientation="w" x="-20"/>
<terminal y="80" orientation="w" x="-20"/>
<terminal y="80" orientation="e" x="20"/>
<terminal y="100" orientation="e" x="20"/>
<terminal y="100" orientation="w" x="-20"/>
<terminal y="120" orientation="w" x="-20"/>
<terminal y="120" orientation="e" x="20"/>
</description>
</definition>

View File

@@ -0,0 +1,16 @@
<definition height="20" version="0.70" orientation="dyyy" width="30" hotspot_x="14" link_type="simple" type="element" hotspot_y="10">
<uuid uuid="{648b691b-a9ce-44ae-96dd-c02039645205}"/>
<names>
<name lang="en">Plug</name>
<name lang="nl">Contactpin</name>
</names>
<elementInformations/>
<informations></informations>
<description>
<rect y="-5" height="10" width="4" rx="0" style="line-style:normal;line-weight:normal;filling:none;color:black" antialias="false" x="-2" ry="0"/>
<line end1="none" length1="1.5" x2="-2" style="line-style:normal;line-weight:normal;filling:none;color:black" y2="0" y1="0" antialias="false" x1="-10" end2="none" length2="1.5"/>
<line end1="none" length1="1.5" x2="10" style="line-style:normal;line-weight:normal;filling:none;color:black" y2="0" y1="0" antialias="false" x1="2" end2="none" length2="1.5"/>
<terminal y="0" orientation="e" x="10"/>
<terminal y="0" orientation="w" x="-10"/>
</description>
</definition>

View File

@@ -0,0 +1,6 @@
<qet-directory>
<names>
<name lang="en">Jacks</name>
<name lang="nl">Contacten</name>
</names>
</qet-directory>

View File

@@ -0,0 +1,19 @@
<definition height="20" version="0.70" orientation="dyyy" width="50" hotspot_x="24" link_type="simple" type="element" hotspot_y="10">
<uuid uuid="{2275166e-668f-4912-b838-1def0f65418e}"/>
<names>
<name lang="en">Coil</name>
<name lang="nl">Spoel</name>
</names>
<elementInformations/>
<informations></informations>
<description>
<arc y="-4" height="8" width="8" style="line-style:normal;line-weight:normal;filling:none;color:black" angle="180" antialias="true" start="0" x="-8"/>
<arc y="-4" height="8" width="8" style="line-style:normal;line-weight:normal;filling:none;color:black" angle="180" antialias="true" start="0" x="-16"/>
<arc y="-4" height="8" width="8" style="line-style:normal;line-weight:normal;filling:none;color:black" angle="180" antialias="true" start="0" x="0"/>
<arc y="-4" height="8" width="8" style="line-style:normal;line-weight:normal;filling:none;color:black" angle="180" antialias="true" start="0" x="8"/>
<line end1="none" length1="1.5" x2="-20" style="line-style:normal;line-weight:normal;filling:none;color:black" y2="0" y1="0" antialias="false" x1="-16" end2="none" length2="1.5"/>
<line end1="none" length1="1.5" x2="16" style="line-style:normal;line-weight:normal;filling:none;color:black" y2="0" y1="0" antialias="false" x1="20" end2="none" length2="1.5"/>
<terminal y="0" orientation="w" x="-20"/>
<terminal y="0" orientation="e" x="20"/>
</description>
</definition>

View File

@@ -0,0 +1,22 @@
<definition height="30" version="0.70" orientation="dyyy" width="50" hotspot_x="24" link_type="simple" type="element" hotspot_y="11">
<uuid uuid="{6d4161fc-3f61-48cc-8322-9d384c2f7550}"/>
<names>
<name lang="en">Flipper coil</name>
<name lang="nl">Flipperspoel</name>
</names>
<elementInformations/>
<informations></informations>
<description>
<arc y="-4" height="8" width="8" style="line-style:normal;line-weight:normal;filling:none;color:black" angle="180" antialias="true" start="0" x="0"/>
<arc y="-4" height="8" width="8" style="line-style:normal;line-weight:normal;filling:none;color:black" angle="180" antialias="true" start="0" x="8"/>
<arc y="-4" height="8" width="8" style="line-style:normal;line-weight:normal;filling:none;color:black" angle="180" antialias="true" start="0" x="-16"/>
<arc y="-4" height="8" width="8" style="line-style:normal;line-weight:normal;filling:none;color:black" angle="180" antialias="true" start="0" x="-8"/>
<line end1="none" length1="1.5" x2="-16" style="line-style:normal;line-weight:normal;filling:none;color:black" y2="0" y1="0" antialias="false" x1="-20" end2="none" length2="1.5"/>
<line end1="none" length1="1.5" x2="20" style="line-style:normal;line-weight:normal;filling:none;color:black" y2="0" y1="0" antialias="false" x1="16" end2="none" length2="1.5"/>
<line end1="none" length1="1.5" x2="0" style="line-style:normal;line-weight:normal;filling:none;color:black" y2="10" y1="0" antialias="false" x1="0" end2="none" length2="1.5"/>
<circle y="0" style="line-style:normal;line-weight:normal;filling:black;color:black" diameter="4" antialias="false" x="-2"/>
<terminal y="0" orientation="w" x="-20"/>
<terminal y="0" orientation="e" x="20"/>
<terminal y="10" orientation="s" x="0"/>
</description>
</definition>

View File

@@ -0,0 +1,16 @@
<definition height="30" version="0.70" orientation="dyyy" width="50" hotspot_x="24" link_type="simple" type="element" hotspot_y="15">
<uuid uuid="{06cf3371-5a2c-4887-aa73-667fa6dc718b}"/>
<names>
<name lang="en">Lite</name>
<name lang="nl">Lamp</name>
</names>
<elementInformations/>
<informations></informations>
<description>
<circle y="-10" style="line-style:normal;line-weight:normal;filling:none;color:black" diameter="20" antialias="false" x="-10"/>
<line end1="none" length1="1.5" x2="20" style="line-style:normal;line-weight:normal;filling:none;color:black" y2="0" y1="0" antialias="false" x1="10" end2="none" length2="1.5"/>
<line end1="none" length1="1.5" x2="-20" style="line-style:normal;line-weight:normal;filling:none;color:black" y2="0" y1="0" antialias="false" x1="-10" end2="none" length2="1.5"/>
<terminal y="0" orientation="e" x="20"/>
<terminal y="0" orientation="w" x="-20"/>
</description>
</definition>

View File

@@ -0,0 +1,18 @@
<definition height="30" version="0.70" orientation="dyyy" width="50" hotspot_x="24" link_type="simple" type="element" hotspot_y="15">
<uuid uuid="{1a497d79-1196-4b65-9d65-a8660693c5b8}"/>
<names>
<name lang="en">Motor</name>
<name lang="nl">Motor</name>
</names>
<elementInformations/>
<informations></informations>
<description>
<circle y="-10" style="line-style:normal;line-weight:normal;filling:none;color:black" diameter="20" antialias="false" x="-10"/>
<line end1="none" length1="1.5" x2="-16" style="line-style:normal;line-weight:normal;filling:none;color:black" y2="0" y1="0" antialias="false" x1="-20" end2="none" length2="1.5"/>
<line end1="none" length1="1.5" x2="16" style="line-style:normal;line-weight:normal;filling:none;color:black" y2="0" y1="0" antialias="false" x1="20" end2="none" length2="1.5"/>
<line end1="none" length1="1.5" x2="-10" style="line-style:normal;line-weight:normal;filling:none;color:black" y2="-10" y1="0" antialias="false" x1="-16" end2="none" length2="1.5"/>
<line end1="none" length1="1.5" x2="10" style="line-style:normal;line-weight:normal;filling:none;color:black" y2="10" y1="0" antialias="false" x1="16" end2="none" length2="1.5"/>
<terminal y="0" orientation="e" x="20"/>
<terminal y="0" orientation="w" x="-20"/>
</description>
</definition>

View File

@@ -0,0 +1,6 @@
<qet-directory>
<names>
<name lang="en">Output</name>
<name lang="nl">Uitvoer</name>
</names>
</qet-directory>

View File

@@ -0,0 +1,21 @@
<definition height="20" version="0.70" orientation="dyyy" width="50" hotspot_x="24" link_type="simple" type="element" hotspot_y="10">
<uuid uuid="{6cfb757b-80eb-472e-a72b-4d1e398ff0be}"/>
<names>
<name lang="en">Fuse</name>
<name lang="nl">Zekering</name>
</names>
<elementInformations/>
<informations></informations>
<description>
<arc y="-5" height="10" width="10" style="line-style:normal;line-weight:normal;filling:none;color:black" angle="180" antialias="true" start="0" x="0"/>
<arc y="-5" height="10" width="10" style="line-style:normal;line-weight:normal;filling:none;color:black" angle="180" antialias="true" start="180" x="-10"/>
<line end1="none" length1="1.5" x2="-12" style="line-style:normal;line-weight:normal;filling:none;color:black" y2="0" y1="0" antialias="false" x1="-10" end2="none" length2="1.5"/>
<line end1="none" length1="1.5" x2="12" style="line-style:normal;line-weight:normal;filling:none;color:black" y2="0" y1="0" antialias="false" x1="10" end2="none" length2="1.5"/>
<circle y="-2" style="line-style:normal;line-weight:normal;filling:none;color:black" diameter="4" antialias="false" x="-16"/>
<circle y="-2" style="line-style:normal;line-weight:normal;filling:none;color:black" diameter="4" antialias="false" x="12"/>
<line end1="none" length1="1.5" x2="-20" style="line-style:normal;line-weight:normal;filling:none;color:black" y2="0" y1="0" antialias="false" x1="-16" end2="none" length2="1.5"/>
<line end1="none" length1="1.5" x2="20" style="line-style:normal;line-weight:normal;filling:none;color:black" y2="0" y1="0" antialias="false" x1="16" end2="none" length2="1.5"/>
<terminal y="0" orientation="e" x="20"/>
<terminal y="0" orientation="w" x="-20"/>
</description>
</definition>

View File

@@ -0,0 +1,21 @@
<definition height="40" version="0.70" orientation="dyyy" width="50" hotspot_x="24" link_type="simple" type="element" hotspot_y="34">
<uuid uuid="{d67bb38e-704e-4df0-bcd5-6b5fc4f8b27f}"/>
<names>
<name lang="en">Power cord</name>
<name lang="nl">Stekker</name>
</names>
<elementInformations/>
<informations></informations>
<description>
<line end1="none" length1="1.5" x2="10" style="line-style:normal;line-weight:normal;filling:none;color:black" y2="-20" y1="-20" antialias="false" x1="-10" end2="none" length2="1.5"/>
<line end1="none" length1="1.5" x2="-20" style="line-style:normal;line-weight:normal;filling:none;color:black" y2="0" y1="0" antialias="false" x1="-5" end2="none" length2="1.5"/>
<line end1="none" length1="1.5" x2="5" style="line-style:normal;line-weight:normal;filling:none;color:black" y2="0" y1="0" antialias="false" x1="20" end2="none" length2="1.5"/>
<arc y="-30" height="20" width="20" style="line-style:normal;line-weight:normal;filling:none;color:black" angle="180" antialias="true" start="180" x="-10"/>
<line end1="none" length1="1.5" x2="-5" style="line-style:normal;line-weight:normal;filling:none;color:black" y2="-11" y1="0" antialias="false" x1="-5" end2="none" length2="1.5"/>
<line end1="none" length1="1.5" x2="5" style="line-style:normal;line-weight:normal;filling:none;color:black" y2="-11" y1="0" antialias="false" x1="5" end2="none" length2="1.5"/>
<line end1="none" length1="1.5" x2="-5" style="line-style:normal;line-weight:normal;filling:none;color:black" y2="-20" y1="-28" antialias="false" x1="-5" end2="none" length2="1.5"/>
<line end1="none" length1="1.5" x2="5" style="line-style:normal;line-weight:normal;filling:none;color:black" y2="-20" y1="-28" antialias="false" x1="5" end2="none" length2="1.5"/>
<terminal y="0" orientation="e" x="20"/>
<terminal y="0" orientation="w" x="-20"/>
</description>
</definition>

View File

@@ -0,0 +1,24 @@
<definition height="50" version="0.70" orientation="dyyy" width="50" hotspot_x="24" link_type="simple" type="element" hotspot_y="34">
<uuid uuid="{772a2b18-69f2-407b-8594-917ecc52a4d3}"/>
<names>
<name lang="en">Power cord with ground pin</name>
<name lang="nl">Stekker met aardedraad</name>
</names>
<elementInformations/>
<informations></informations>
<description>
<line end1="none" length1="1.5" x2="-5" style="line-style:normal;line-weight:normal;filling:none;color:black" y2="0" y1="0" antialias="false" x1="-20" end2="none" length2="1.5"/>
<line end1="none" length1="1.5" x2="20" style="line-style:normal;line-weight:normal;filling:none;color:black" y2="0" y1="0" antialias="false" x1="5" end2="none" length2="1.5"/>
<line end1="none" length1="1.5" x2="10" style="line-style:normal;line-weight:normal;filling:none;color:black" y2="-20" y1="-20" antialias="false" x1="-10" end2="none" length2="1.5"/>
<arc y="-30" height="20" width="20" style="line-style:normal;line-weight:normal;filling:none;color:black" angle="180" antialias="true" start="180" x="-10"/>
<line end1="none" length1="1.5" x2="-5" style="line-style:normal;line-weight:normal;filling:none;color:black" y2="-11" y1="0" antialias="false" x1="-5" end2="none" length2="1.5"/>
<line end1="none" length1="1.5" x2="5" style="line-style:normal;line-weight:normal;filling:none;color:black" y2="-11" y1="0" antialias="false" x1="5" end2="none" length2="1.5"/>
<line end1="none" length1="1.5" x2="5" style="line-style:normal;line-weight:normal;filling:none;color:black" y2="-27" y1="-20" antialias="false" x1="5" end2="none" length2="1.5"/>
<line end1="none" length1="1.5" x2="-5" style="line-style:normal;line-weight:normal;filling:none;color:black" y2="-27" y1="-20" antialias="false" x1="-5" end2="none" length2="1.5"/>
<line end1="none" length1="1.5" x2="0" style="line-style:normal;line-weight:normal;filling:none;color:black" y2="-25" y1="-20" antialias="false" x1="0" end2="none" length2="1.5"/>
<line end1="none" length1="1.5" x2="0" style="line-style:normal;line-weight:normal;filling:none;color:black" y2="10" y1="-10" antialias="false" x1="0" end2="none" length2="1.5"/>
<terminal y="10" orientation="s" x="0"/>
<terminal y="0" orientation="w" x="-20"/>
<terminal y="0" orientation="e" x="20"/>
</description>
</definition>

View File

@@ -0,0 +1,18 @@
<definition height="30" version="0.70" orientation="dyyy" width="50" hotspot_x="24" link_type="simple" type="element" hotspot_y="15">
<uuid uuid="{f75bd99b-67cd-4d09-bea0-677ba9528257}"/>
<names>
<name lang="en">Service outlet</name>
<name lang="nl">Servicestopcontact</name>
</names>
<elementInformations/>
<informations></informations>
<description>
<circle y="-10" style="line-style:normal;line-weight:normal;filling:none;color:black" diameter="20" antialias="false" x="-10"/>
<line end1="none" length1="1.5" x2="-20" style="line-style:normal;line-weight:normal;filling:none;color:black" y2="0" y1="0" antialias="false" x1="-10" end2="none" length2="1.5"/>
<line end1="none" length1="1.5" x2="20" style="line-style:normal;line-weight:normal;filling:none;color:black" y2="0" y1="0" antialias="false" x1="10" end2="none" length2="1.5"/>
<line end1="none" length1="1.5" x2="-4" style="line-style:normal;line-weight:normal;filling:none;color:black" y2="5" y1="-5" antialias="false" x1="-4" end2="none" length2="1.5"/>
<line end1="none" length1="1.5" x2="4" style="line-style:normal;line-weight:normal;filling:none;color:black" y2="5" y1="-5" antialias="false" x1="4" end2="none" length2="1.5"/>
<terminal y="0" orientation="w" x="-20"/>
<terminal y="0" orientation="e" x="20"/>
</description>
</definition>

View File

@@ -0,0 +1,6 @@
<qet-directory>
<names>
<name lang="en">Power</name>
<name lang="nl">Stroom</name>
</names>
</qet-directory>

View File

@@ -0,0 +1,6 @@
<qet-directory>
<names>
<name lang="en">Williams EM Schematics</name>
<name lang="nl">Williams EM Schema's</name>
</names>
</qet-directory>

View File

@@ -0,0 +1,21 @@
<definition hotspot_y="30" width="50" orientation="dyyy" height="40" version="0.70" hotspot_x="24" link_type="simple" type="element">
<uuid uuid="{52858864-b876-400b-b65e-7482add60868}"/>
<names>
<name lang="en">Switch (M.B.) - Bottom input - Mirrored</name>
<name lang="nl">Schakelaar (M.B.) - Input onder - Gespiegeld</name>
</names>
<elementInformations/>
<informations></informations>
<description>
<rect x="2" rx="0" antialias="false" y="-25" width="3" style="line-style:normal;line-weight:normal;filling:black;color:black" height="30" ry="0"/>
<line length2="1.5" x1="-20" antialias="false" style="line-style:normal;line-weight:normal;filling:none;color:black" length1="1.5" end1="none" end2="none" x2="-5" y2="-20" y1="-20"/>
<rect x="-5" rx="0" antialias="false" y="-7" width="3" style="line-style:normal;line-weight:normal;filling:black;color:black" height="12" ry="0"/>
<rect x="-5" rx="0" antialias="false" y="-25" width="3" style="line-style:normal;line-weight:normal;filling:black;color:black" height="12" ry="0"/>
<line length2="1.5" x1="5" antialias="false" style="line-style:normal;line-weight:normal;filling:none;color:black" length1="1.5" end1="none" end2="none" x2="20" y2="0" y1="0"/>
<line length2="1.5" x1="-20" antialias="false" style="line-style:normal;line-weight:normal;filling:none;color:black" length1="1.5" end1="none" end2="none" x2="-5" y2="0" y1="0"/>
<line length2="1.5" x1="10" antialias="false" style="line-style:normal;line-weight:hight;filling:none;color:black" length1="1.5" end1="none" end2="none" x2="-10" y2="5" y1="-5"/>
<terminal x="-20" y="-20" orientation="w"/>
<terminal x="20" y="0" orientation="e"/>
<terminal x="-20" y="0" orientation="w"/>
</description>
</definition>

View File

@@ -0,0 +1,21 @@
<definition height="40" orientation="dyyy" hotspot_y="30" link_type="simple" version="0.70" type="element" hotspot_x="24" width="50">
<uuid uuid="{5671de08-ab81-4f72-809b-7ac854e38016}"/>
<names>
<name lang="nl">Schakelaar (M.B.) - Input onder - Gespiegeld en omgekeerd</name>
<name lang="en">Switch (M.B.) - Bottom input - Mirrored and inverted</name>
</names>
<elementInformations/>
<informations></informations>
<description>
<rect height="30" rx="0" ry="0" x="2" y="-25" antialias="false" width="3" style="line-style:normal;line-weight:normal;filling:black;color:black"/>
<line x1="-20" end2="none" antialias="false" end1="none" y1="-20" length2="1.5" x2="-5" length1="1.5" y2="-20" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<rect height="12" rx="0" ry="0" x="-5" y="-7" antialias="false" width="3" style="line-style:normal;line-weight:normal;filling:black;color:black"/>
<rect height="12" rx="0" ry="0" x="-5" y="-25" antialias="false" width="3" style="line-style:normal;line-weight:normal;filling:black;color:black"/>
<line x1="5" end2="none" antialias="false" end1="none" y1="0" length2="1.5" x2="20" length1="1.5" y2="0" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="-20" end2="none" antialias="false" end1="none" y1="0" length2="1.5" x2="-5" length1="1.5" y2="0" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="10" end2="none" antialias="false" end1="none" y1="-25" length2="1.5" x2="-10" length1="1.5" y2="-15" style="line-style:normal;line-weight:hight;filling:none;color:black"/>
<terminal x="20" y="0" orientation="e"/>
<terminal x="-20" y="-20" orientation="w"/>
<terminal x="-20" y="0" orientation="w"/>
</description>
</definition>

View File

@@ -0,0 +1,21 @@
<definition height="40" orientation="dyyy" hotspot_y="20" link_type="simple" version="0.70" type="element" hotspot_x="24" width="50">
<uuid uuid="{762b188c-50f3-4900-b870-ea563c2cc7da}"/>
<names>
<name lang="nl">Schakelaar (M.B.) - Input midden - Gespiegeld</name>
<name lang="en">Switch (M.B.) - Center input - Mirrored</name>
</names>
<elementInformations/>
<informations></informations>
<description>
<rect height="30" rx="0" ry="0" x="2" y="-15" antialias="false" width="3" style="line-style:normal;line-weight:normal;filling:black;color:black"/>
<line x1="-20" end2="none" antialias="false" end1="none" y1="-10" length2="1.5" x2="-5" length1="1.5" y2="-10" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<rect height="12" rx="0" ry="0" x="-5" y="3" antialias="false" width="3" style="line-style:normal;line-weight:normal;filling:black;color:black"/>
<rect height="12" rx="0" ry="0" x="-5" y="-15" antialias="false" width="3" style="line-style:normal;line-weight:normal;filling:black;color:black"/>
<line x1="5" end2="none" antialias="false" end1="none" y1="0" length2="1.5" x2="20" length1="1.5" y2="0" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="-20" end2="none" antialias="false" end1="none" y1="10" length2="1.5" x2="-5" length1="1.5" y2="10" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="10" end2="none" antialias="false" end1="none" y1="5" length2="1.5" x2="-10" length1="1.5" y2="15" style="line-style:normal;line-weight:hight;filling:none;color:black"/>
<terminal x="-20" y="-10" orientation="w"/>
<terminal x="-20" y="10" orientation="w"/>
<terminal x="20" y="0" orientation="e"/>
</description>
</definition>

View File

@@ -0,0 +1,21 @@
<definition height="40" orientation="dyyy" hotspot_y="20" link_type="simple" version="0.70" type="element" hotspot_x="24" width="50">
<uuid uuid="{3509d560-3eb8-4527-b5b2-35d66bf3fc64}"/>
<names>
<name lang="nl">Schakelaar (M.B.) - Input midden - Gespiegeld en omgekeerd</name>
<name lang="en">Switch (M.B.) - Center input - Mirrored and inverted</name>
</names>
<elementInformations/>
<informations></informations>
<description>
<rect height="30" rx="0" ry="0" x="2" y="-15" antialias="false" width="3" style="line-style:normal;line-weight:normal;filling:black;color:black"/>
<line x1="-20" end2="none" antialias="false" end1="none" y1="-10" length2="1.5" x2="-5" length1="1.5" y2="-10" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<rect height="12" rx="0" ry="0" x="-5" y="3" antialias="false" width="3" style="line-style:normal;line-weight:normal;filling:black;color:black"/>
<rect height="12" rx="0" ry="0" x="-5" y="-15" antialias="false" width="3" style="line-style:normal;line-weight:normal;filling:black;color:black"/>
<line x1="5" end2="none" antialias="false" end1="none" y1="0" length2="1.5" x2="20" length1="1.5" y2="0" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="-20" end2="none" antialias="false" end1="none" y1="10" length2="1.5" x2="-5" length1="1.5" y2="10" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="10" end2="none" antialias="false" end1="none" y1="-15" length2="1.5" x2="-10" length1="1.5" y2="-5" style="line-style:normal;line-weight:hight;filling:none;color:black"/>
<terminal x="20" y="0" orientation="e"/>
<terminal x="-20" y="10" orientation="w"/>
<terminal x="-20" y="-10" orientation="w"/>
</description>
</definition>

View File

@@ -0,0 +1,21 @@
<definition height="40" orientation="dyyy" hotspot_y="10" link_type="simple" version="0.70" type="element" hotspot_x="24" width="50">
<uuid uuid="{b85f89b8-cbf2-4bda-ba31-8cc3570a4339}"/>
<names>
<name lang="nl">Schakelaar (M.B.) - Input boven - Gespiegeld</name>
<name lang="en">Switch (M.B.) - Top input - Mirrored</name>
</names>
<elementInformations/>
<informations></informations>
<description>
<rect height="30" rx="0" ry="0" x="2" y="-5" antialias="false" width="3" style="line-style:normal;line-weight:normal;filling:black;color:black"/>
<line x1="-20" end2="none" antialias="false" end1="none" y1="0" length2="1.5" x2="-5" length1="1.5" y2="0" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<rect height="12" rx="0" ry="0" x="-5" y="13" antialias="false" width="3" style="line-style:normal;line-weight:normal;filling:black;color:black"/>
<rect height="12" rx="0" ry="0" x="-5" y="-5" antialias="false" width="3" style="line-style:normal;line-weight:normal;filling:black;color:black"/>
<line x1="5" end2="none" antialias="false" end1="none" y1="0" length2="1.5" x2="20" length1="1.5" y2="0" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="-20" end2="none" antialias="false" end1="none" y1="20" length2="1.5" x2="-5" length1="1.5" y2="20" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="10" end2="none" antialias="false" end1="none" y1="15" length2="1.5" x2="-10" length1="1.5" y2="25" style="line-style:normal;line-weight:hight;filling:none;color:black"/>
<terminal x="20" y="0" orientation="e"/>
<terminal x="-20" y="20" orientation="w"/>
<terminal x="-20" y="0" orientation="w"/>
</description>
</definition>

View File

@@ -0,0 +1,21 @@
<definition height="40" orientation="dyyy" hotspot_y="10" link_type="simple" version="0.70" type="element" hotspot_x="24" width="50">
<uuid uuid="{6e72e029-0004-452d-9e0c-ed664e36f070}"/>
<names>
<name lang="nl">Schakelaar (M.B.) - Input boven - Gespiegeld en omgekeerd</name>
<name lang="en">Switch (M.B.) - Top input - Mirrored and inverted</name>
</names>
<elementInformations/>
<informations></informations>
<description>
<rect height="30" rx="0" ry="0" x="2" y="-5" antialias="false" width="3" style="line-style:normal;line-weight:normal;filling:black;color:black"/>
<line x1="-20" end2="none" antialias="false" end1="none" y1="0" length2="1.5" x2="-5" length1="1.5" y2="0" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<rect height="12" rx="0" ry="0" x="-5" y="13" antialias="false" width="3" style="line-style:normal;line-weight:normal;filling:black;color:black"/>
<rect height="12" rx="0" ry="0" x="-5" y="-5" antialias="false" width="3" style="line-style:normal;line-weight:normal;filling:black;color:black"/>
<line x1="5" end2="none" antialias="false" end1="none" y1="0" length2="1.5" x2="20" length1="1.5" y2="0" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="-20" end2="none" antialias="false" end1="none" y1="20" length2="1.5" x2="-5" length1="1.5" y2="20" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="10" end2="none" antialias="false" end1="none" y1="-5" length2="1.5" x2="-10" length1="1.5" y2="5" style="line-style:normal;line-weight:hight;filling:none;color:black"/>
<terminal x="-20" y="0" orientation="w"/>
<terminal x="20" y="0" orientation="e"/>
<terminal x="-20" y="20" orientation="w"/>
</description>
</definition>

View File

@@ -0,0 +1,6 @@
<qet-directory>
<names>
<name lang="en">Mirrored</name>
<name lang="nl">Gespiegeld</name>
</names>
</qet-directory>

View File

@@ -0,0 +1,21 @@
<definition hotspot_x="24" height="40" type="element" width="50" hotspot_y="30" version="0.70" link_type="simple" orientation="dyyy">
<uuid uuid="{6b2f7d0b-0bea-4db2-9da7-ed808130db45}"/>
<names>
<name lang="nl">Schakelaar (M.B.) - Input onder</name>
<name lang="en">Switch (M.B.) - Bottom input</name>
</names>
<elementInformations/>
<informations></informations>
<description>
<rect height="30" style="line-style:normal;line-weight:normal;filling:black;color:black" width="3" y="-25.25" ry="0" rx="0" x="-5" antialias="false"/>
<rect height="12" style="line-style:normal;line-weight:normal;filling:black;color:black" width="3" y="-7.25" ry="0" rx="0" x="2" antialias="false"/>
<rect height="12" style="line-style:normal;line-weight:normal;filling:black;color:black" width="3" y="-25.25" ry="0" rx="0" x="2" antialias="false"/>
<line style="line-style:normal;line-weight:normal;filling:none;color:black" x1="5" end1="none" length2="1.5" y2="-0.25" end2="none" y1="-0.25" x2="20" length1="1.5" antialias="false"/>
<line style="line-style:normal;line-weight:normal;filling:none;color:black" x1="-20" end1="none" length2="1.5" y2="-0.25" end2="none" y1="-0.25" x2="-5" length1="1.5" antialias="false"/>
<line style="line-style:normal;line-weight:normal;filling:none;color:black" x1="5" end1="none" length2="1.5" y2="-20.25" end2="none" y1="-20.25" x2="20" length1="1.5" antialias="false"/>
<line style="line-style:normal;line-weight:hight;filling:none;color:black" x1="10" end1="none" length2="1.5" y2="4.75" end2="none" y1="-5.25" x2="-10" length1="1.5" antialias="false"/>
<terminal y="-0.25" x="20" orientation="e"/>
<terminal y="-20.25" x="20" orientation="e"/>
<terminal y="-0.25" x="-20" orientation="w"/>
</description>
</definition>

View File

@@ -0,0 +1,21 @@
<definition height="40" orientation="dyyy" hotspot_y="30" link_type="simple" version="0.70" type="element" hotspot_x="24" width="50">
<uuid uuid="{6321259d-91c7-4126-9bcf-c8ab9dedddf7}"/>
<names>
<name lang="nl">Schakelaar (M.B.) - Input onder - Omgekeerd</name>
<name lang="en">Switch (M.B.) - Bottom input - Inverted</name>
</names>
<elementInformations/>
<informations></informations>
<description>
<rect height="30" rx="0" ry="0" x="-5" y="-25" antialias="false" width="3" style="line-style:normal;line-weight:normal;filling:black;color:black"/>
<rect height="12" rx="0" ry="0" x="2" y="-7" antialias="false" width="3" style="line-style:normal;line-weight:normal;filling:black;color:black"/>
<rect height="12" rx="0" ry="0" x="2" y="-25" antialias="false" width="3" style="line-style:normal;line-weight:normal;filling:black;color:black"/>
<line x1="5" end2="none" antialias="false" end1="none" y1="0" length2="1.5" x2="20" length1="1.5" y2="0" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="-20" end2="none" antialias="false" end1="none" y1="0" length2="1.5" x2="-5" length1="1.5" y2="0" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="5" end2="none" antialias="false" end1="none" y1="-20" length2="1.5" x2="20" length1="1.5" y2="-20" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="10" end2="none" antialias="false" end1="none" y1="-24.75" length2="1.5" x2="-10" length1="1.5" y2="-14.75" style="line-style:normal;line-weight:hight;filling:none;color:black"/>
<terminal x="20" y="0" orientation="e"/>
<terminal x="20" y="-20" orientation="e"/>
<terminal x="-20" y="0" orientation="w"/>
</description>
</definition>

View File

@@ -0,0 +1,21 @@
<definition hotspot_x="24" height="40" type="element" width="50" hotspot_y="20" version="0.70" link_type="simple" orientation="dyyy">
<uuid uuid="{57993a2e-8feb-4920-97f7-5481bc1e63e3}"/>
<names>
<name lang="nl">Schakelaar (M.B.) - Input midden</name>
<name lang="en">Switch (M.B.) - Center input</name>
</names>
<elementInformations/>
<informations></informations>
<description>
<rect height="30" style="line-style:normal;line-weight:normal;filling:black;color:black" width="3" y="-15" ry="0" rx="0" x="-5" antialias="false"/>
<rect height="12" style="line-style:normal;line-weight:normal;filling:black;color:black" width="3" y="3" ry="0" rx="0" x="2" antialias="false"/>
<rect height="12" style="line-style:normal;line-weight:normal;filling:black;color:black" width="3" y="-15" ry="0" rx="0" x="2" antialias="false"/>
<line style="line-style:normal;line-weight:normal;filling:none;color:black" x1="5" end1="none" length2="1.5" y2="10" end2="none" y1="10" x2="20" length1="1.5" antialias="false"/>
<line style="line-style:normal;line-weight:normal;filling:none;color:black" x1="-20" end1="none" length2="1.5" y2="0" end2="none" y1="0" x2="-5" length1="1.5" antialias="false"/>
<line style="line-style:normal;line-weight:normal;filling:none;color:black" x1="5" end1="none" length2="1.5" y2="-10" end2="none" y1="-10" x2="20" length1="1.5" antialias="false"/>
<line style="line-style:normal;line-weight:hight;filling:none;color:black" x1="10" end1="none" length2="1.5" y2="15" end2="none" y1="5" x2="-10" length1="1.5" antialias="false"/>
<terminal y="10" x="20" orientation="e"/>
<terminal y="-10" x="20" orientation="e"/>
<terminal y="0" x="-20" orientation="w"/>
</description>
</definition>

View File

@@ -0,0 +1,21 @@
<definition height="40" orientation="dyyy" hotspot_y="20" link_type="simple" version="0.70" type="element" hotspot_x="24" width="50">
<uuid uuid="{9a0c9775-c4ca-4a6b-809c-74ffb482fc6a}"/>
<names>
<name lang="nl">Schakelaar (M.B.) - Input midden - Omgekeerd</name>
<name lang="en">Switch (M.B.) - Center input - Inverted</name>
</names>
<elementInformations/>
<informations></informations>
<description>
<rect height="30" rx="0" ry="0" x="-5" y="-15" antialias="false" width="3" style="line-style:normal;line-weight:normal;filling:black;color:black"/>
<rect height="12" rx="0" ry="0" x="2" y="3" antialias="false" width="3" style="line-style:normal;line-weight:normal;filling:black;color:black"/>
<rect height="12" rx="0" ry="0" x="2" y="-15" antialias="false" width="3" style="line-style:normal;line-weight:normal;filling:black;color:black"/>
<line x1="5" end2="none" antialias="false" end1="none" y1="10" length2="1.5" x2="20" length1="1.5" y2="10" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="-20" end2="none" antialias="false" end1="none" y1="0" length2="1.5" x2="-5" length1="1.5" y2="0" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="5" end2="none" antialias="false" end1="none" y1="-10" length2="1.5" x2="20" length1="1.5" y2="-10" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="10" end2="none" antialias="false" end1="none" y1="-15" length2="1.5" x2="-10" length1="1.5" y2="-5" style="line-style:normal;line-weight:hight;filling:none;color:black"/>
<terminal x="20" y="-10" orientation="e"/>
<terminal x="20" y="10" orientation="e"/>
<terminal x="-20" y="0" orientation="w"/>
</description>
</definition>

View File

@@ -0,0 +1,21 @@
<definition hotspot_x="24" height="40" type="element" width="50" hotspot_y="10" version="0.70" link_type="simple" orientation="dyyy">
<uuid uuid="{01a0d1a8-0de0-4f5e-ac2b-2490c38301b0}"/>
<names>
<name lang="nl">Schakelaar (M.B.) - Input boven</name>
<name lang="en">Switch (M.B.) - Top input</name>
</names>
<elementInformations/>
<informations></informations>
<description>
<rect height="30" style="line-style:normal;line-weight:normal;filling:black;color:black" width="3" y="-5" ry="0" rx="0" x="-5" antialias="false"/>
<rect height="12" style="line-style:normal;line-weight:normal;filling:black;color:black" width="3" y="13" ry="0" rx="0" x="2" antialias="false"/>
<rect height="12" style="line-style:normal;line-weight:normal;filling:black;color:black" width="3" y="-5" ry="0" rx="0" x="2" antialias="false"/>
<line style="line-style:normal;line-weight:normal;filling:none;color:black" x1="5" end1="none" length2="1.5" y2="20" end2="none" y1="20" x2="20" length1="1.5" antialias="false"/>
<line style="line-style:normal;line-weight:normal;filling:none;color:black" x1="-20" end1="none" length2="1.5" y2="0" end2="none" y1="0" x2="-5" length1="1.5" antialias="false"/>
<line style="line-style:normal;line-weight:normal;filling:none;color:black" x1="5" end1="none" length2="1.5" y2="0" end2="none" y1="0" x2="20" length1="1.5" antialias="false"/>
<line style="line-style:normal;line-weight:hight;filling:none;color:black" x1="10" end1="none" length2="1.5" y2="25" end2="none" y1="15" x2="-10" length1="1.5" antialias="false"/>
<terminal y="20" x="20" orientation="e"/>
<terminal y="0" x="20" orientation="e"/>
<terminal y="0" x="-20" orientation="w"/>
</description>
</definition>

View File

@@ -0,0 +1,21 @@
<definition height="40" orientation="dyyy" hotspot_y="10" link_type="simple" version="0.70" type="element" hotspot_x="24" width="50">
<uuid uuid="{130b56ae-6888-4b0d-bac8-5b49335e33ec}"/>
<names>
<name lang="nl">Schakelaar (M.B.) - Input boven - Omgekeerd</name>
<name lang="en">Switch (M.B) - Top input - Inverted</name>
</names>
<elementInformations/>
<informations></informations>
<description>
<rect height="30" rx="0" ry="0" x="-5" y="-5.25" antialias="false" width="3" style="line-style:normal;line-weight:normal;filling:black;color:black"/>
<rect height="12" rx="0" ry="0" x="2" y="12.75" antialias="false" width="3" style="line-style:normal;line-weight:normal;filling:black;color:black"/>
<rect height="12" rx="0" ry="0" x="2" y="-5.25" antialias="false" width="3" style="line-style:normal;line-weight:normal;filling:black;color:black"/>
<line x1="5" end2="none" antialias="false" end1="none" y1="19.75" length2="1.5" x2="20" length1="1.5" y2="19.75" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="-20" end2="none" antialias="false" end1="none" y1="-0.25" length2="1.5" x2="-5" length1="1.5" y2="-0.25" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="5" end2="none" antialias="false" end1="none" y1="-0.25" length2="1.5" x2="20" length1="1.5" y2="-0.25" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="10" end2="none" antialias="false" end1="none" y1="-5" length2="1.5" x2="-10" length1="1.5" y2="5" style="line-style:normal;line-weight:hight;filling:none;color:black"/>
<terminal x="20" y="-0.25" orientation="e"/>
<terminal x="-20" y="-0.25" orientation="w"/>
<terminal x="20" y="19.75" orientation="e"/>
</description>
</definition>

View File

@@ -0,0 +1,18 @@
<definition hotspot_x="24" height="20" type="element" width="50" hotspot_y="10" version="0.70" link_type="simple" orientation="dyyy">
<uuid uuid="{b4de77c7-a031-4ae2-b7f7-8ea5309631c7}"/>
<names>
<name lang="nl">Schakelaar (N.C.)</name>
<name lang="en">Switch (N.C.)</name>
</names>
<elementInformations/>
<informations></informations>
<description>
<rect height="10" style="line-style:normal;line-weight:normal;filling:black;color:black" width="3" y="-5" ry="0" rx="0" x="-5" antialias="false"/>
<rect height="10" style="line-style:normal;line-weight:normal;filling:black;color:black" width="3" y="-5" ry="0" rx="0" x="2" antialias="false"/>
<line style="line-style:normal;line-weight:normal;filling:none;color:black" x1="5" end1="none" length2="1.5" y2="0" end2="none" y1="0" x2="20" length1="1.5" antialias="false"/>
<line style="line-style:normal;line-weight:normal;filling:none;color:black" x1="-5" end1="none" length2="1.5" y2="0" end2="none" y1="0" x2="-20" length1="1.5" antialias="false"/>
<line style="line-style:normal;line-weight:hight;filling:none;color:black" x1="10" end1="none" length2="1.5" y2="5" end2="none" y1="-5" x2="-10" length1="1.5" antialias="false"/>
<terminal y="0" x="-20" orientation="w"/>
<terminal y="0" x="20" orientation="e"/>
</description>
</definition>

View File

@@ -0,0 +1,17 @@
<definition hotspot_x="24" height="20" type="element" width="50" hotspot_y="10" version="0.70" link_type="simple" orientation="dyyy">
<uuid uuid="{5a15257d-de36-4aad-9b67-717ea5763a1c}"/>
<names>
<name lang="nl">Schakelaar (N.O.)</name>
<name lang="en">Switch (N.O.)</name>
</names>
<elementInformations/>
<informations></informations>
<description>
<rect height="10" style="line-style:normal;line-weight:normal;filling:black;color:black" width="3" y="-5" ry="0" rx="0" x="-5" antialias="false"/>
<rect height="10" style="line-style:normal;line-weight:normal;filling:black;color:black" width="3" y="-5" ry="0" rx="0" x="2" antialias="false"/>
<line style="line-style:normal;line-weight:normal;filling:none;color:black" x1="-20" end1="none" length2="1.5" y2="0" end2="none" y1="0" x2="-5" length1="1.5" antialias="false"/>
<line style="line-style:normal;line-weight:normal;filling:none;color:black" x1="5" end1="none" length2="1.5" y2="0" end2="none" y1="0" x2="20" length1="1.5" antialias="false"/>
<terminal y="0" x="-20" orientation="w"/>
<terminal y="0" x="20" orientation="e"/>
</description>
</definition>

View File

@@ -0,0 +1,6 @@
<qet-directory>
<names>
<name lang="nl">Schakelaars - Algemeen</name>
<name lang="en">Switches - Common</name>
</names>
</qet-directory>

View File

@@ -0,0 +1,25 @@
<definition hotspot_y="35" width="50" orientation="dyyy" height="50" version="0.70" hotspot_x="24" link_type="simple" type="element">
<uuid uuid="{10830219-83b0-4488-8564-adfe27637f60}"/>
<names>
<name lang="en">Switch on Score Motor (M.B.) - Bottom input - Mirrored</name>
<name lang="nl">Schakelaar op Score Motor (M.B.) - Input onder - Gespiegeld</name>
</names>
<elementInformations/>
<informations></informations>
<description>
<rect x="2" rx="0" antialias="false" y="-25" width="3" style="line-style:normal;line-weight:normal;filling:black;color:black" height="30" ry="0"/>
<arc x="-10" start="0" antialias="true" y="-30" width="20" style="line-style:normal;line-weight:normal;filling:none;color:black" height="20" angle="180"/>
<line length2="1.5" x1="-10" antialias="false" style="line-style:normal;line-weight:normal;filling:none;color:black" length1="1.5" end1="none" end2="none" x2="-10" y2="0" y1="-20"/>
<line length2="1.5" x1="-20" antialias="false" style="line-style:normal;line-weight:normal;filling:none;color:black" length1="1.5" end1="none" end2="none" x2="-5" y2="-20" y1="-20"/>
<rect x="-5" rx="0" antialias="false" y="-7" width="3" style="line-style:normal;line-weight:normal;filling:black;color:black" height="12" ry="0"/>
<line length2="1.5" x1="10" antialias="false" style="line-style:normal;line-weight:normal;filling:none;color:black" length1="1.5" end1="none" end2="none" x2="10" y2="0" y1="-20"/>
<rect x="-5" rx="0" antialias="false" y="-25" width="3" style="line-style:normal;line-weight:normal;filling:black;color:black" height="12" ry="0"/>
<arc x="-10" start="180" antialias="true" y="-10" width="20" style="line-style:normal;line-weight:normal;filling:none;color:black" height="20" angle="180"/>
<line length2="1.5" x1="5" antialias="false" style="line-style:normal;line-weight:normal;filling:none;color:black" length1="1.5" end1="none" end2="none" x2="20" y2="0" y1="0"/>
<line length2="1.5" x1="-20" antialias="false" style="line-style:normal;line-weight:normal;filling:none;color:black" length1="1.5" end1="none" end2="none" x2="-5" y2="0" y1="0"/>
<line length2="1.5" x1="10" antialias="false" style="line-style:normal;line-weight:hight;filling:none;color:black" length1="1.5" end1="none" end2="none" x2="-10" y2="5" y1="-5"/>
<terminal x="-20" y="0" orientation="w"/>
<terminal x="-20" y="-20" orientation="w"/>
<terminal x="20" y="0" orientation="e"/>
</description>
</definition>

View File

@@ -0,0 +1,25 @@
<definition hotspot_y="35" width="50" orientation="dyyy" height="50" version="0.70" hotspot_x="24" link_type="simple" type="element">
<uuid uuid="{5854bbcc-54b3-41c1-b728-36ea16c235c7}"/>
<names>
<name lang="en">Switch on Score Motor (M.B.) - Bottom input - Mirrored and inverted</name>
<name lang="nl">Schakelaar op Score Motor (M.B.) - Input onder - Gespiegeld en omgekeerd</name>
</names>
<elementInformations/>
<informations></informations>
<description>
<rect x="2" rx="0" antialias="false" y="-25" width="3" style="line-style:normal;line-weight:normal;filling:black;color:black" height="30" ry="0"/>
<arc x="-10" start="0" antialias="true" y="-30" width="20" style="line-style:normal;line-weight:normal;filling:none;color:black" height="20" angle="180"/>
<line length2="1.5" x1="-20" antialias="false" style="line-style:normal;line-weight:normal;filling:none;color:black" length1="1.5" end1="none" end2="none" x2="-5" y2="-20" y1="-20"/>
<line length2="1.5" x1="-10" antialias="false" style="line-style:normal;line-weight:normal;filling:none;color:black" length1="1.5" end1="none" end2="none" x2="-10" y2="0" y1="-20"/>
<line length2="1.5" x1="10" antialias="false" style="line-style:normal;line-weight:normal;filling:none;color:black" length1="1.5" end1="none" end2="none" x2="10" y2="0" y1="-20"/>
<rect x="-5" rx="0" antialias="false" y="-7" width="3" style="line-style:normal;line-weight:normal;filling:black;color:black" height="12" ry="0"/>
<rect x="-5" rx="0" antialias="false" y="-25" width="3" style="line-style:normal;line-weight:normal;filling:black;color:black" height="12" ry="0"/>
<arc x="-10" start="180" antialias="true" y="-10" width="20" style="line-style:normal;line-weight:normal;filling:none;color:black" height="20" angle="180"/>
<line length2="1.5" x1="5" antialias="false" style="line-style:normal;line-weight:normal;filling:none;color:black" length1="1.5" end1="none" end2="none" x2="20" y2="0" y1="0"/>
<line length2="1.5" x1="-20" antialias="false" style="line-style:normal;line-weight:normal;filling:none;color:black" length1="1.5" end1="none" end2="none" x2="-5" y2="0" y1="0"/>
<line length2="1.5" x1="10" antialias="false" style="line-style:normal;line-weight:hight;filling:none;color:black" length1="1.5" end1="none" end2="none" x2="-10" y2="-15" y1="-25"/>
<terminal x="20" y="0" orientation="e"/>
<terminal x="-20" y="0" orientation="w"/>
<terminal x="-20" y="-20" orientation="w"/>
</description>
</definition>

View File

@@ -0,0 +1,25 @@
<definition hotspot_y="25" width="50" orientation="dyyy" height="50" version="0.70" hotspot_x="24" link_type="simple" type="element">
<uuid uuid="{b17bd886-7621-424a-b336-cdf9d15da91c}"/>
<names>
<name lang="en">Switch on Score Motor (M.B.) - Center input - Mirrored</name>
<name lang="nl">Schakelaar op Score Motor (M.B.) - Input midden - Gespiegeld</name>
</names>
<elementInformations/>
<informations></informations>
<description>
<arc x="-10" start="0" antialias="true" y="-20" width="20" style="line-style:normal;line-weight:normal;filling:none;color:black" height="20" angle="180"/>
<rect x="2" rx="0" antialias="false" y="-15.25" width="3" style="line-style:normal;line-weight:normal;filling:black;color:black" height="30" ry="0"/>
<line length2="1.5" x1="-10" antialias="false" style="line-style:normal;line-weight:normal;filling:none;color:black" length1="1.5" end1="none" end2="none" x2="-10" y2="10" y1="-10"/>
<line length2="1.5" x1="-20" antialias="false" style="line-style:normal;line-weight:normal;filling:none;color:black" length1="1.5" end1="none" end2="none" x2="-5" y2="-10.25" y1="-10.25"/>
<line length2="1.5" x1="10" antialias="false" style="line-style:normal;line-weight:normal;filling:none;color:black" length1="1.5" end1="none" end2="none" x2="10" y2="10" y1="-10"/>
<rect x="-5" rx="0" antialias="false" y="2.75" width="3" style="line-style:normal;line-weight:normal;filling:black;color:black" height="12" ry="0"/>
<arc x="-10" start="180" antialias="true" y="0" width="20" style="line-style:normal;line-weight:normal;filling:none;color:black" height="20" angle="180"/>
<rect x="-5" rx="0" antialias="false" y="-15.25" width="3" style="line-style:normal;line-weight:normal;filling:black;color:black" height="12" ry="0"/>
<line length2="1.5" x1="5" antialias="false" style="line-style:normal;line-weight:normal;filling:none;color:black" length1="1.5" end1="none" end2="none" x2="20" y2="-0.25" y1="-0.25"/>
<line length2="1.5" x1="-20" antialias="false" style="line-style:normal;line-weight:normal;filling:none;color:black" length1="1.5" end1="none" end2="none" x2="-5" y2="9.75" y1="9.75"/>
<line length2="1.5" x1="10" antialias="false" style="line-style:normal;line-weight:hight;filling:none;color:black" length1="1.5" end1="none" end2="none" x2="-10" y2="14.75" y1="4.75"/>
<terminal x="-20" y="9.75" orientation="w"/>
<terminal x="-20" y="-10.25" orientation="w"/>
<terminal x="20" y="-0.25" orientation="e"/>
</description>
</definition>

View File

@@ -0,0 +1,25 @@
<definition hotspot_y="25" width="50" orientation="dyyy" height="50" version="0.70" hotspot_x="24" link_type="simple" type="element">
<uuid uuid="{a5464c2a-4620-41a8-a18f-e34f0e0fa5ee}"/>
<names>
<name lang="en">Switch on Score Motor (M.B.) - Center input - Mirrored and inverted</name>
<name lang="nl">Schakelaar op Score Motor (M.B.) - Input midden - Gespiegeld en omgekeerd</name>
</names>
<elementInformations/>
<informations></informations>
<description>
<arc x="-10" start="0" antialias="true" y="-20" width="20" style="line-style:normal;line-weight:normal;filling:none;color:black" height="20" angle="180"/>
<rect x="2" rx="0" antialias="false" y="-15" width="3" style="line-style:normal;line-weight:normal;filling:black;color:black" height="30" ry="0"/>
<line length2="1.5" x1="-20" antialias="false" style="line-style:normal;line-weight:normal;filling:none;color:black" length1="1.5" end1="none" end2="none" x2="-5" y2="-10" y1="-10"/>
<line length2="1.5" x1="-10" antialias="false" style="line-style:normal;line-weight:normal;filling:none;color:black" length1="1.5" end1="none" end2="none" x2="-10" y2="10" y1="-10"/>
<rect x="-5" rx="0" antialias="false" y="3" width="3" style="line-style:normal;line-weight:normal;filling:black;color:black" height="12" ry="0"/>
<line length2="1.5" x1="10" antialias="false" style="line-style:normal;line-weight:normal;filling:none;color:black" length1="1.5" end1="none" end2="none" x2="10" y2="10" y1="-10"/>
<arc x="-10" start="180" antialias="true" y="0" width="20" style="line-style:normal;line-weight:normal;filling:none;color:black" height="20" angle="180"/>
<rect x="-5" rx="0" antialias="false" y="-15" width="3" style="line-style:normal;line-weight:normal;filling:black;color:black" height="12" ry="0"/>
<line length2="1.5" x1="5" antialias="false" style="line-style:normal;line-weight:normal;filling:none;color:black" length1="1.5" end1="none" end2="none" x2="20" y2="0" y1="0"/>
<line length2="1.5" x1="-20" antialias="false" style="line-style:normal;line-weight:normal;filling:none;color:black" length1="1.5" end1="none" end2="none" x2="-5" y2="10" y1="10"/>
<line length2="1.5" x1="10" antialias="false" style="line-style:normal;line-weight:hight;filling:none;color:black" length1="1.5" end1="none" end2="none" x2="-10" y2="-5" y1="-15"/>
<terminal x="-20" y="10" orientation="w"/>
<terminal x="-20" y="-10" orientation="w"/>
<terminal x="20" y="0" orientation="e"/>
</description>
</definition>

View File

@@ -0,0 +1,25 @@
<definition hotspot_y="15" width="50" orientation="dyyy" height="50" version="0.70" hotspot_x="24" link_type="simple" type="element">
<uuid uuid="{118827a9-bf0b-49d4-9c37-9679a3014ff2}"/>
<names>
<name lang="en">Switch on Score Motor (M.B.) - Top input - Mirrored</name>
<name lang="nl">Schakelaar op Score Motor (M.B.) - Input boven - Gespiegeld</name>
</names>
<elementInformations/>
<informations></informations>
<description>
<rect x="2" rx="0" antialias="false" y="-5" width="3" style="line-style:normal;line-weight:normal;filling:black;color:black" height="30" ry="0"/>
<arc x="-10" start="0" antialias="true" y="-10" width="20" style="line-style:normal;line-weight:normal;filling:none;color:black" height="20" angle="180"/>
<line length2="1.5" x1="-10" antialias="false" style="line-style:normal;line-weight:normal;filling:none;color:black" length1="1.5" end1="none" end2="none" x2="-10" y2="20" y1="0"/>
<line length2="1.5" x1="-20" antialias="false" style="line-style:normal;line-weight:normal;filling:none;color:black" length1="1.5" end1="none" end2="none" x2="-5" y2="0" y1="0"/>
<rect x="-5" rx="0" antialias="false" y="13" width="3" style="line-style:normal;line-weight:normal;filling:black;color:black" height="12" ry="0"/>
<line length2="1.5" x1="10" antialias="false" style="line-style:normal;line-weight:normal;filling:none;color:black" length1="1.5" end1="none" end2="none" x2="10" y2="20" y1="0"/>
<rect x="-5" rx="0" antialias="false" y="-5" width="3" style="line-style:normal;line-weight:normal;filling:black;color:black" height="12" ry="0"/>
<arc x="-10" start="180" antialias="true" y="10" width="20" style="line-style:normal;line-weight:normal;filling:none;color:black" height="20" angle="180"/>
<line length2="1.5" x1="5" antialias="false" style="line-style:normal;line-weight:normal;filling:none;color:black" length1="1.5" end1="none" end2="none" x2="20" y2="0" y1="0"/>
<line length2="1.5" x1="-20" antialias="false" style="line-style:normal;line-weight:normal;filling:none;color:black" length1="1.5" end1="none" end2="none" x2="-5" y2="20" y1="20"/>
<line length2="1.5" x1="10" antialias="false" style="line-style:normal;line-weight:hight;filling:none;color:black" length1="1.5" end1="none" end2="none" x2="-10" y2="25" y1="15"/>
<terminal x="-20" y="20" orientation="w"/>
<terminal x="20" y="0" orientation="e"/>
<terminal x="-20" y="0" orientation="w"/>
</description>
</definition>

View File

@@ -0,0 +1,25 @@
<definition hotspot_y="15" width="50" orientation="dyyy" height="50" version="0.70" hotspot_x="24" link_type="simple" type="element">
<uuid uuid="{d2347a8a-0c35-45a6-95e4-8a3a3100964f}"/>
<names>
<name lang="en">Switch on Score Motor (M.B.) - Top input - Mirrored and inverted</name>
<name lang="nl">Schakelaar op Score Motor (M.B.) - Input boven - Gespiegeld en omgekeerd</name>
</names>
<elementInformations/>
<informations></informations>
<description>
<arc x="-10" start="0" antialias="true" y="-10" width="20" style="line-style:normal;line-weight:normal;filling:none;color:black" height="20" angle="180"/>
<rect x="2" rx="0" antialias="false" y="-5" width="3" style="line-style:normal;line-weight:normal;filling:black;color:black" height="30" ry="0"/>
<line length2="1.5" x1="-20" antialias="false" style="line-style:normal;line-weight:normal;filling:none;color:black" length1="1.5" end1="none" end2="none" x2="-5" y2="0" y1="0"/>
<line length2="1.5" x1="-10" antialias="false" style="line-style:normal;line-weight:normal;filling:none;color:black" length1="1.5" end1="none" end2="none" x2="-10" y2="20" y1="0"/>
<line length2="1.5" x1="10" antialias="false" style="line-style:normal;line-weight:normal;filling:none;color:black" length1="1.5" end1="none" end2="none" x2="10" y2="20" y1="0"/>
<rect x="-5" rx="0" antialias="false" y="13" width="3" style="line-style:normal;line-weight:normal;filling:black;color:black" height="12" ry="0"/>
<arc x="-10" start="180" antialias="true" y="10" width="20" style="line-style:normal;line-weight:normal;filling:none;color:black" height="20" angle="180"/>
<rect x="-5" rx="0" antialias="false" y="-5" width="3" style="line-style:normal;line-weight:normal;filling:black;color:black" height="12" ry="0"/>
<line length2="1.5" x1="5" antialias="false" style="line-style:normal;line-weight:normal;filling:none;color:black" length1="1.5" end1="none" end2="none" x2="20" y2="0" y1="0"/>
<line length2="1.5" x1="-20" antialias="false" style="line-style:normal;line-weight:normal;filling:none;color:black" length1="1.5" end1="none" end2="none" x2="-5" y2="20" y1="20"/>
<line length2="1.5" x1="10" antialias="false" style="line-style:normal;line-weight:hight;filling:none;color:black" length1="1.5" end1="none" end2="none" x2="-10" y2="5" y1="-5"/>
<terminal x="-20" y="20" orientation="w"/>
<terminal x="20" y="0" orientation="e"/>
<terminal x="-20" y="0" orientation="w"/>
</description>
</definition>

View File

@@ -0,0 +1,6 @@
<qet-directory>
<names>
<name lang="en">Mirrored</name>
<name lang="nl">Gespiegeld</name>
</names>
</qet-directory>

View File

@@ -0,0 +1,25 @@
<definition type="element" hotspot_y="35" width="50" hotspot_x="24" version="0.70" link_type="simple" height="50" orientation="dyyy">
<uuid uuid="{925545b8-d804-4125-a17d-563abac148b4}"/>
<names>
<name lang="nl">Schakelaar op Score Motor (M.B.) - Input onder</name>
<name lang="en">Switch on Score Motor (M.B.) - Bottom input</name>
</names>
<elementInformations/>
<informations></informations>
<description>
<rect y="-25" rx="0" ry="0" width="3" antialias="false" style="line-style:normal;line-weight:normal;filling:black;color:black" x="-5" height="30"/>
<rect y="-7" rx="0" ry="0" width="3" antialias="false" style="line-style:normal;line-weight:normal;filling:black;color:black" x="2" height="12"/>
<rect y="-25" rx="0" ry="0" width="3" antialias="false" style="line-style:normal;line-weight:normal;filling:black;color:black" x="2" height="12"/>
<line x2="20" length2="1.5" y1="0" antialias="false" end1="none" length1="1.5" end2="none" style="line-style:normal;line-weight:normal;filling:none;color:black" x1="5" y2="0"/>
<line x2="-5" length2="1.5" y1="0" antialias="false" end1="none" length1="1.5" end2="none" style="line-style:normal;line-weight:normal;filling:none;color:black" x1="-20" y2="0"/>
<line x2="20" length2="1.5" y1="-20" antialias="false" end1="none" length1="1.5" end2="none" style="line-style:normal;line-weight:normal;filling:none;color:black" x1="5" y2="-20"/>
<line x2="-10" length2="1.5" y1="-5" antialias="false" end1="none" length1="1.5" end2="none" style="line-style:normal;line-weight:hight;filling:none;color:black" x1="10" y2="5"/>
<arc y="-30" start="0" width="20" antialias="true" style="line-style:normal;line-weight:normal;filling:none;color:black" x="-10" height="20" angle="180"/>
<line x2="-10" length2="1.5" y1="-20" antialias="false" end1="none" length1="1.5" end2="none" style="line-style:normal;line-weight:normal;filling:none;color:black" x1="-10" y2="0"/>
<line x2="10" length2="1.5" y1="-20" antialias="false" end1="none" length1="1.5" end2="none" style="line-style:normal;line-weight:normal;filling:none;color:black" x1="10" y2="0"/>
<arc y="-10" start="180" width="20" antialias="true" style="line-style:normal;line-weight:normal;filling:none;color:black" x="-10" height="20" angle="180"/>
<terminal y="0" x="20" orientation="e"/>
<terminal y="0" x="-20" orientation="w"/>
<terminal y="-20" x="20" orientation="e"/>
</description>
</definition>

View File

@@ -0,0 +1,25 @@
<definition type="element" hotspot_y="35" width="50" hotspot_x="24" version="0.70" link_type="simple" height="50" orientation="dyyy">
<uuid uuid="{a366c41f-2629-4a8b-9dad-f06804bd84d6}"/>
<names>
<name lang="nl">Schakelaar op Score Motor (M.B.) - Input onder - Omgekeerd</name>
<name lang="en">Switch on Score Motor (M.B.) - Bottom input - Inverted</name>
</names>
<elementInformations/>
<informations></informations>
<description>
<rect y="-25" rx="0" ry="0" width="3" antialias="false" style="line-style:normal;line-weight:normal;filling:black;color:black" x="-5" height="30"/>
<rect y="-7" rx="0" ry="0" width="3" antialias="false" style="line-style:normal;line-weight:normal;filling:black;color:black" x="2" height="12"/>
<rect y="-25" rx="0" ry="0" width="3" antialias="false" style="line-style:normal;line-weight:normal;filling:black;color:black" x="2" height="12"/>
<line x2="20" length2="1.5" y1="0" antialias="false" end1="none" length1="1.5" end2="none" style="line-style:normal;line-weight:normal;filling:none;color:black" x1="5" y2="0"/>
<line x2="-5" length2="1.5" y1="0" antialias="false" end1="none" length1="1.5" end2="none" style="line-style:normal;line-weight:normal;filling:none;color:black" x1="-20" y2="0"/>
<line x2="20" length2="1.5" y1="-20" antialias="false" end1="none" length1="1.5" end2="none" style="line-style:normal;line-weight:normal;filling:none;color:black" x1="5" y2="-20"/>
<line x2="-10" length2="1.5" y1="-25" antialias="false" end1="none" length1="1.5" end2="none" style="line-style:normal;line-weight:hight;filling:none;color:black" x1="10" y2="-15"/>
<arc y="-30" start="0" width="20" antialias="true" style="line-style:normal;line-weight:normal;filling:none;color:black" x="-10" height="20" angle="180"/>
<line x2="-10" length2="1.5" y1="-20" antialias="false" end1="none" length1="1.5" end2="none" style="line-style:normal;line-weight:normal;filling:none;color:black" x1="-10" y2="0"/>
<line x2="10" length2="1.5" y1="-20" antialias="false" end1="none" length1="1.5" end2="none" style="line-style:normal;line-weight:normal;filling:none;color:black" x1="10" y2="0"/>
<arc y="-10" start="180" width="20" antialias="true" style="line-style:normal;line-weight:normal;filling:none;color:black" x="-10" height="20" angle="180"/>
<terminal y="0" x="20" orientation="e"/>
<terminal y="0" x="-20" orientation="w"/>
<terminal y="-20" x="20" orientation="e"/>
</description>
</definition>

View File

@@ -0,0 +1,25 @@
<definition hotspot_y="25" width="50" orientation="dyyy" height="50" version="0.70" hotspot_x="24" link_type="simple" type="element">
<uuid uuid="{eda35b7a-2534-400d-b477-a07ff481a50d}"/>
<names>
<name lang="en">Switch on Score Motor (M.B.) - Center input</name>
<name lang="nl">Schakelaar op Score Motor (M.B.) - Input midden</name>
</names>
<elementInformations/>
<informations></informations>
<description>
<arc x="-10" start="0" antialias="true" y="-20" width="20" style="line-style:normal;line-weight:normal;filling:none;color:black" height="20" angle="180"/>
<rect x="-5" rx="0" antialias="false" y="-15" width="3" style="line-style:normal;line-weight:normal;filling:black;color:black" height="30" ry="0"/>
<line length2="1.5" x1="-10" antialias="false" style="line-style:normal;line-weight:normal;filling:none;color:black" length1="1.5" end1="none" end2="none" x2="-10" y2="10" y1="-10"/>
<rect x="2" rx="0" antialias="false" y="3" width="3" style="line-style:normal;line-weight:normal;filling:black;color:black" height="12" ry="0"/>
<line length2="1.5" x1="10" antialias="false" style="line-style:normal;line-weight:normal;filling:none;color:black" length1="1.5" end1="none" end2="none" x2="10" y2="10" y1="-10"/>
<rect x="2" rx="0" antialias="false" y="-15" width="3" style="line-style:normal;line-weight:normal;filling:black;color:black" height="12" ry="0"/>
<arc x="-10" start="180" antialias="true" y="0" width="20" style="line-style:normal;line-weight:normal;filling:none;color:black" height="20" angle="180"/>
<line length2="1.5" x1="5" antialias="false" style="line-style:normal;line-weight:normal;filling:none;color:black" length1="1.5" end1="none" end2="none" x2="20" y2="10" y1="10"/>
<line length2="1.5" x1="-20" antialias="false" style="line-style:normal;line-weight:normal;filling:none;color:black" length1="1.5" end1="none" end2="none" x2="-5" y2="0" y1="0"/>
<line length2="1.5" x1="5" antialias="false" style="line-style:normal;line-weight:normal;filling:none;color:black" length1="1.5" end1="none" end2="none" x2="20" y2="-10" y1="-10"/>
<line length2="1.5" x1="10" antialias="false" style="line-style:normal;line-weight:hight;filling:none;color:black" length1="1.5" end1="none" end2="none" x2="-10" y2="15" y1="5"/>
<terminal x="20" y="10" orientation="e"/>
<terminal x="20" y="-10" orientation="e"/>
<terminal x="-20" y="0" orientation="w"/>
</description>
</definition>

View File

@@ -0,0 +1,25 @@
<definition hotspot_y="25" width="50" orientation="dyyy" height="50" version="0.70" hotspot_x="24" link_type="simple" type="element">
<uuid uuid="{97121fe2-38e2-4c5e-b5ab-223bb4770b11}"/>
<names>
<name lang="en">Switch on Score Motor (M.B.) - Center input - Inverted</name>
<name lang="nl">Schakelaar op Score Motor (M.B.) - Input midden - Omgekeerd</name>
</names>
<elementInformations/>
<informations></informations>
<description>
<arc x="-10" start="0" antialias="true" y="-20" width="20" style="line-style:normal;line-weight:normal;filling:none;color:black" height="20" angle="180"/>
<rect x="-5" rx="0" antialias="false" y="-15" width="3" style="line-style:normal;line-weight:normal;filling:black;color:black" height="30" ry="0"/>
<line length2="1.5" x1="-10" antialias="false" style="line-style:normal;line-weight:normal;filling:none;color:black" length1="1.5" end1="none" end2="none" x2="-10" y2="10" y1="-10"/>
<rect x="2" rx="0" antialias="false" y="3" width="3" style="line-style:normal;line-weight:normal;filling:black;color:black" height="12" ry="0"/>
<line length2="1.5" x1="10" antialias="false" style="line-style:normal;line-weight:normal;filling:none;color:black" length1="1.5" end1="none" end2="none" x2="10" y2="10" y1="-10"/>
<rect x="2" rx="0" antialias="false" y="-15" width="3" style="line-style:normal;line-weight:normal;filling:black;color:black" height="12" ry="0"/>
<arc x="-10" start="180" antialias="true" y="0" width="20" style="line-style:normal;line-weight:normal;filling:none;color:black" height="20" angle="180"/>
<line length2="1.5" x1="5" antialias="false" style="line-style:normal;line-weight:normal;filling:none;color:black" length1="1.5" end1="none" end2="none" x2="20" y2="10" y1="10"/>
<line length2="1.5" x1="-20" antialias="false" style="line-style:normal;line-weight:normal;filling:none;color:black" length1="1.5" end1="none" end2="none" x2="-5" y2="0" y1="0"/>
<line length2="1.5" x1="5" antialias="false" style="line-style:normal;line-weight:normal;filling:none;color:black" length1="1.5" end1="none" end2="none" x2="20" y2="-10" y1="-10"/>
<line length2="1.5" x1="10" antialias="false" style="line-style:normal;line-weight:hight;filling:none;color:black" length1="1.5" end1="none" end2="none" x2="-10" y2="-5" y1="-15"/>
<terminal x="-20" y="0" orientation="w"/>
<terminal x="20" y="-10" orientation="e"/>
<terminal x="20" y="10" orientation="e"/>
</description>
</definition>

View File

@@ -0,0 +1,25 @@
<definition hotspot_y="15" width="50" orientation="dyyy" height="50" version="0.70" hotspot_x="24" link_type="simple" type="element">
<uuid uuid="{8da83d7e-0afb-4811-8903-633089863194}"/>
<names>
<name lang="en">Switch on Score Motor (M.B.) - Top input</name>
<name lang="nl">Schakelaar op Score Motor (M.B.) - Input boven</name>
</names>
<elementInformations/>
<informations></informations>
<description>
<arc x="-10" start="0" antialias="true" y="-10" width="20" style="line-style:normal;line-weight:normal;filling:none;color:black" height="20" angle="180"/>
<rect x="-5" rx="0" antialias="false" y="-5" width="3" style="line-style:normal;line-weight:normal;filling:black;color:black" height="30" ry="0"/>
<rect x="2" rx="0" antialias="false" y="13" width="3" style="line-style:normal;line-weight:normal;filling:black;color:black" height="12" ry="0"/>
<line length2="1.5" x1="-10" antialias="false" style="line-style:normal;line-weight:normal;filling:none;color:black" length1="1.5" end1="none" end2="none" x2="-10" y2="20" y1="0"/>
<rect x="2" rx="0" antialias="false" y="-5" width="3" style="line-style:normal;line-weight:normal;filling:black;color:black" height="12" ry="0"/>
<line length2="1.5" x1="10" antialias="false" style="line-style:normal;line-weight:normal;filling:none;color:black" length1="1.5" end1="none" end2="none" x2="10" y2="20" y1="0"/>
<arc x="-10" start="180" antialias="true" y="10" width="20" style="line-style:normal;line-weight:normal;filling:none;color:black" height="20" angle="180"/>
<line length2="1.5" x1="5" antialias="false" style="line-style:normal;line-weight:normal;filling:none;color:black" length1="1.5" end1="none" end2="none" x2="20" y2="20" y1="20"/>
<line length2="1.5" x1="-20" antialias="false" style="line-style:normal;line-weight:normal;filling:none;color:black" length1="1.5" end1="none" end2="none" x2="-5" y2="0" y1="0"/>
<line length2="1.5" x1="5" antialias="false" style="line-style:normal;line-weight:normal;filling:none;color:black" length1="1.5" end1="none" end2="none" x2="20" y2="0" y1="0"/>
<line length2="1.5" x1="10" antialias="false" style="line-style:normal;line-weight:hight;filling:none;color:black" length1="1.5" end1="none" end2="none" x2="-10" y2="25" y1="15"/>
<terminal x="20" y="20" orientation="e"/>
<terminal x="-20" y="0" orientation="w"/>
<terminal x="20" y="0" orientation="e"/>
</description>
</definition>

View File

@@ -0,0 +1,25 @@
<definition hotspot_y="15" width="50" orientation="dyyy" height="50" version="0.70" hotspot_x="24" link_type="simple" type="element">
<uuid uuid="{affc73ff-2963-4d34-911d-da56d8ba6452}"/>
<names>
<name lang="en">Switch on Score Motor (M.B.) - Top input - Inverted</name>
<name lang="nl">Schakelaar op Score Motor (M.B.) - Input boven - Omgekeerd</name>
</names>
<elementInformations/>
<informations></informations>
<description>
<rect x="-5" rx="0" antialias="false" y="-5" width="3" style="line-style:normal;line-weight:normal;filling:black;color:black" height="30" ry="0"/>
<arc x="-10" start="0" antialias="true" y="-10" width="20" style="line-style:normal;line-weight:normal;filling:none;color:black" height="20" angle="180"/>
<rect x="2" rx="0" antialias="false" y="13" width="3" style="line-style:normal;line-weight:normal;filling:black;color:black" height="12" ry="0"/>
<line length2="1.5" x1="-10" antialias="false" style="line-style:normal;line-weight:normal;filling:none;color:black" length1="1.5" end1="none" end2="none" x2="-10" y2="20" y1="0"/>
<rect x="2" rx="0" antialias="false" y="-5" width="3" style="line-style:normal;line-weight:normal;filling:black;color:black" height="12" ry="0"/>
<line length2="1.5" x1="10" antialias="false" style="line-style:normal;line-weight:normal;filling:none;color:black" length1="1.5" end1="none" end2="none" x2="10" y2="20" y1="0"/>
<line length2="1.5" x1="5" antialias="false" style="line-style:normal;line-weight:normal;filling:none;color:black" length1="1.5" end1="none" end2="none" x2="20" y2="20" y1="20"/>
<arc x="-10" start="180" antialias="true" y="10" width="20" style="line-style:normal;line-weight:normal;filling:none;color:black" height="20" angle="180"/>
<line length2="1.5" x1="-20" antialias="false" style="line-style:normal;line-weight:normal;filling:none;color:black" length1="1.5" end1="none" end2="none" x2="-5" y2="0" y1="0"/>
<line length2="1.5" x1="5" antialias="false" style="line-style:normal;line-weight:normal;filling:none;color:black" length1="1.5" end1="none" end2="none" x2="20" y2="0" y1="0"/>
<line length2="1.5" x1="10" antialias="false" style="line-style:normal;line-weight:hight;filling:none;color:black" length1="1.5" end1="none" end2="none" x2="-10" y2="5.25" y1="-4.75"/>
<terminal x="20" y="20" orientation="e"/>
<terminal x="-20" y="0" orientation="w"/>
<terminal x="20" y="0" orientation="e"/>
</description>
</definition>

View File

@@ -0,0 +1,19 @@
<definition hotspot_x="24" height="30" type="element" width="50" hotspot_y="15" version="0.70" link_type="simple" orientation="dyyy">
<uuid uuid="{b1b5df82-b447-41d7-bf0c-28d7301821af}"/>
<names>
<name lang="nl">Schakelaar op Score Motor (N.C.)</name>
<name lang="en">Switch on Score Motor (N.C.)</name>
</names>
<elementInformations/>
<informations></informations>
<description>
<rect height="10" style="line-style:normal;line-weight:normal;filling:black;color:black" width="3" y="-5" ry="0" rx="0" x="-5" antialias="false"/>
<rect height="10" style="line-style:normal;line-weight:normal;filling:black;color:black" width="3" y="-5" ry="0" rx="0" x="2" antialias="false"/>
<line style="line-style:normal;line-weight:normal;filling:none;color:black" x1="5" end1="none" length2="1.5" y2="0" end2="none" y1="0" x2="20" length1="1.5" antialias="false"/>
<line style="line-style:normal;line-weight:normal;filling:none;color:black" x1="-5" end1="none" length2="1.5" y2="0" end2="none" y1="0" x2="-20" length1="1.5" antialias="false"/>
<line style="line-style:normal;line-weight:hight;filling:none;color:black" x1="10" end1="none" length2="1.5" y2="5" end2="none" y1="-5" x2="-10" length1="1.5" antialias="false"/>
<circle style="line-style:normal;line-weight:normal;filling:none;color:black" diameter="20" y="-10" x="-10" antialias="false"/>
<terminal y="0" x="-20" orientation="w"/>
<terminal y="0" x="20" orientation="e"/>
</description>
</definition>

View File

@@ -0,0 +1,18 @@
<definition hotspot_x="24" height="30" type="element" width="50" hotspot_y="15" version="0.70" link_type="simple" orientation="dyyy">
<uuid uuid="{cf1b5449-9964-4d90-8114-a131a53ce467}"/>
<names>
<name lang="nl">Schakelaar op Score Motor (N.O.)</name>
<name lang="en">Switch on Score Motor (N.O.)</name>
</names>
<elementInformations/>
<informations></informations>
<description>
<rect height="10" style="line-style:normal;line-weight:normal;filling:black;color:black" width="3" y="-5" ry="0" rx="0" x="-5" antialias="false"/>
<rect height="10" style="line-style:normal;line-weight:normal;filling:black;color:black" width="3" y="-5" ry="0" rx="0" x="2" antialias="false"/>
<line style="line-style:normal;line-weight:normal;filling:none;color:black" x1="-20" end1="none" length2="1.5" y2="0" end2="none" y1="0" x2="-5" length1="1.5" antialias="false"/>
<line style="line-style:normal;line-weight:normal;filling:none;color:black" x1="5" end1="none" length2="1.5" y2="0" end2="none" y1="0" x2="20" length1="1.5" antialias="false"/>
<circle style="line-style:normal;line-weight:normal;filling:none;color:black" diameter="20" y="-10" x="-10" antialias="false"/>
<terminal y="0" x="20" orientation="e"/>
<terminal y="0" x="-20" orientation="w"/>
</description>
</definition>

View File

@@ -0,0 +1,6 @@
<qet-directory>
<names>
<name lang="nl">Schakelaars - Score Motor</name>
<name lang="en">Switches - Score Motor</name>
</names>
</qet-directory>

View File

@@ -0,0 +1,6 @@
<qet-directory>
<names>
<name lang="en">Units</name>
<name lang="nl">Units</name>
</names>
</qet-directory>

View File

@@ -0,0 +1,39 @@
<definition hotspot_y="15" width="70" orientation="dyyy" height="90" version="0.70" hotspot_x="34" link_type="simple" type="element">
<uuid uuid="{aac95ab4-e46a-401d-90c6-0564253d0711}"/>
<names>
<name lang="en">Wiper between 4 contact pairs</name>
<name lang="nl">Sleepcontact tussen 4 contactparen</name>
</names>
<elementInformations/>
<informations></informations>
<description>
<circle x="5" antialias="false" y="35" style="line-style:normal;line-weight:normal;filling:none;color:black" diameter="10"/>
<circle x="5" antialias="false" y="-5" style="line-style:normal;line-weight:normal;filling:none;color:black" diameter="10"/>
<circle x="5" antialias="false" y="55" style="line-style:normal;line-weight:normal;filling:none;color:black" diameter="10"/>
<circle x="5" antialias="false" y="15" style="line-style:normal;line-weight:normal;filling:none;color:black" diameter="10"/>
<rect x="-20" rx="0" antialias="false" y="-10" width="40" style="line-style:normal;line-weight:normal;filling:none;color:black" height="80" ry="0"/>
<circle x="-15" antialias="false" y="55" style="line-style:normal;line-weight:normal;filling:none;color:black" diameter="10"/>
<circle x="-15" antialias="false" y="35" style="line-style:normal;line-weight:normal;filling:none;color:black" diameter="10"/>
<circle x="-15" antialias="false" y="-5" style="line-style:normal;line-weight:normal;filling:none;color:black" diameter="10"/>
<circle x="-15" antialias="false" y="15" style="line-style:normal;line-weight:normal;filling:none;color:black" diameter="10"/>
<line length2="1.5" x1="-5" antialias="false" style="line-style:normal;line-weight:normal;filling:none;color:black" length1="1.5" end1="none" end2="none" x2="5" y2="0" y1="0"/>
<line length2="1.5" x1="15" antialias="false" style="line-style:normal;line-weight:normal;filling:none;color:black" length1="1.5" end1="none" end2="none" x2="30" y2="0" y1="0"/>
<line length2="1.5" x1="15" antialias="false" style="line-style:normal;line-weight:normal;filling:none;color:black" length1="1.5" end1="none" end2="none" x2="30" y2="20" y1="20"/>
<line length2="1.5" x1="15" antialias="false" style="line-style:normal;line-weight:normal;filling:none;color:black" length1="1.5" end1="none" end2="none" x2="30" y2="40" y1="40"/>
<line length2="1.5" x1="15" antialias="false" style="line-style:normal;line-weight:normal;filling:none;color:black" length1="1.5" end1="none" end2="none" x2="30" y2="60" y1="60"/>
<line length2="1.5" x1="-30" antialias="false" style="line-style:normal;line-weight:normal;filling:none;color:black" length1="1.5" end1="none" end2="none" x2="-16" y2="0" y1="0"/>
<line length2="1.5" x1="-30" antialias="false" style="line-style:normal;line-weight:normal;filling:none;color:black" length1="1.5" end1="none" end2="none" x2="-15" y2="20" y1="20"/>
<line length2="1.5" x1="-30" antialias="false" style="line-style:normal;line-weight:normal;filling:none;color:black" length1="1.5" end1="none" end2="none" x2="-16" y2="40" y1="40"/>
<line length2="1.5" x1="-30" antialias="false" style="line-style:normal;line-weight:normal;filling:none;color:black" length1="1.5" end1="none" end2="none" x2="-16" y2="60" y1="60"/>
<polygon x1="-5" y4="0" antialias="false" style="line-style:normal;line-weight:normal;filling:black;color:black" x2="-2" y2="-3" x3="-2" y1="0" x4="-5" y3="3"/>
<polygon x1="2" antialias="false" style="line-style:normal;line-weight:normal;filling:black;color:black" x2="5" y2="0" x3="2" y1="-3" y3="3"/>
<terminal x="30" y="0" orientation="e"/>
<terminal x="30" y="60" orientation="e"/>
<terminal x="-30" y="20" orientation="w"/>
<terminal x="30" y="20" orientation="e"/>
<terminal x="30" y="40" orientation="e"/>
<terminal x="-30" y="0" orientation="w"/>
<terminal x="-30" y="60" orientation="w"/>
<terminal x="-30" y="40" orientation="w"/>
</description>
</definition>

View File

@@ -0,0 +1,75 @@
<definition hotspot_y="15" width="70" orientation="dyyy" height="210" version="0.70" hotspot_x="34" link_type="simple" type="element">
<uuid uuid="{a7798588-80e2-4689-8a35-5a1b9459b69b}"/>
<names>
<name lang="en">Wiper between 10 contact pairs</name>
<name lang="nl">Sleepcontact tussen 10 contactparen</name>
</names>
<elementInformations/>
<informations></informations>
<description>
<circle x="5" antialias="false" y="155" style="line-style:normal;line-weight:normal;filling:none;color:black" diameter="10"/>
<circle x="5" antialias="false" y="35" style="line-style:normal;line-weight:normal;filling:none;color:black" diameter="10"/>
<circle x="5" antialias="false" y="95" style="line-style:normal;line-weight:normal;filling:none;color:black" diameter="10"/>
<circle x="5" antialias="false" y="115" style="line-style:normal;line-weight:normal;filling:none;color:black" diameter="10"/>
<circle x="5" antialias="false" y="175" style="line-style:normal;line-weight:normal;filling:none;color:black" diameter="10"/>
<circle x="5" antialias="false" y="-5" style="line-style:normal;line-weight:normal;filling:none;color:black" diameter="10"/>
<circle x="5" antialias="false" y="135" style="line-style:normal;line-weight:normal;filling:none;color:black" diameter="10"/>
<circle x="5" antialias="false" y="55" style="line-style:normal;line-weight:normal;filling:none;color:black" diameter="10"/>
<circle x="5" antialias="false" y="75" style="line-style:normal;line-weight:normal;filling:none;color:black" diameter="10"/>
<circle x="5" antialias="false" y="15" style="line-style:normal;line-weight:normal;filling:none;color:black" diameter="10"/>
<circle x="-15" antialias="false" y="115" style="line-style:normal;line-weight:normal;filling:none;color:black" diameter="10"/>
<circle x="-15" antialias="false" y="175" style="line-style:normal;line-weight:normal;filling:none;color:black" diameter="10"/>
<circle x="-15" antialias="false" y="95" style="line-style:normal;line-weight:normal;filling:none;color:black" diameter="10"/>
<rect x="-20" rx="0" antialias="false" y="-10" width="40" style="line-style:normal;line-weight:normal;filling:none;color:black" height="200" ry="0"/>
<circle x="-15" antialias="false" y="155" style="line-style:normal;line-weight:normal;filling:none;color:black" diameter="10"/>
<circle x="-15" antialias="false" y="135" style="line-style:normal;line-weight:normal;filling:none;color:black" diameter="10"/>
<circle x="-15" antialias="false" y="75" style="line-style:normal;line-weight:normal;filling:none;color:black" diameter="10"/>
<circle x="-15" antialias="false" y="55" style="line-style:normal;line-weight:normal;filling:none;color:black" diameter="10"/>
<line length2="1.5" x1="15" antialias="false" style="line-style:normal;line-weight:normal;filling:none;color:black" length1="1.5" end1="none" end2="none" x2="30" y2="140" y1="140"/>
<circle x="-15" antialias="false" y="35" style="line-style:normal;line-weight:normal;filling:none;color:black" diameter="10"/>
<line length2="1.5" x1="15" antialias="false" style="line-style:normal;line-weight:normal;filling:none;color:black" length1="1.5" end1="none" end2="none" x2="30" y2="80" y1="80"/>
<circle x="-15" antialias="false" y="-5" style="line-style:normal;line-weight:normal;filling:none;color:black" diameter="10"/>
<line length2="1.5" x1="15" antialias="false" style="line-style:normal;line-weight:normal;filling:none;color:black" length1="1.5" end1="none" end2="none" x2="30" y2="160" y1="160"/>
<line length2="1.5" x1="15" antialias="false" style="line-style:normal;line-weight:normal;filling:none;color:black" length1="1.5" end1="none" end2="none" x2="30" y2="100" y1="100"/>
<circle x="-15" antialias="false" y="15" style="line-style:normal;line-weight:normal;filling:none;color:black" diameter="10"/>
<line length2="1.5" x1="15" antialias="false" style="line-style:normal;line-weight:normal;filling:none;color:black" length1="1.5" end1="none" end2="none" x2="30" y2="180" y1="180"/>
<line length2="1.5" x1="15" antialias="false" style="line-style:normal;line-weight:normal;filling:none;color:black" length1="1.5" end1="none" end2="none" x2="30" y2="120" y1="120"/>
<line length2="1.5" x1="-5" antialias="false" style="line-style:normal;line-weight:normal;filling:none;color:black" length1="1.5" end1="none" end2="none" x2="5" y2="0" y1="0"/>
<line length2="1.5" x1="-30" antialias="false" style="line-style:normal;line-weight:normal;filling:none;color:black" length1="1.5" end1="none" end2="none" x2="-15" y2="80" y1="80"/>
<line length2="1.5" x1="-30" antialias="false" style="line-style:normal;line-weight:normal;filling:none;color:black" length1="1.5" end1="none" end2="none" x2="-15" y2="140" y1="140"/>
<line length2="1.5" x1="-30" antialias="false" style="line-style:normal;line-weight:normal;filling:none;color:black" length1="1.5" end1="none" end2="none" x2="-16" y2="160" y1="160"/>
<line length2="1.5" x1="-30" antialias="false" style="line-style:normal;line-weight:normal;filling:none;color:black" length1="1.5" end1="none" end2="none" x2="-16" y2="100" y1="100"/>
<line length2="1.5" x1="15" antialias="false" style="line-style:normal;line-weight:normal;filling:none;color:black" length1="1.5" end1="none" end2="none" x2="30" y2="0" y1="0"/>
<line length2="1.5" x1="-30" antialias="false" style="line-style:normal;line-weight:normal;filling:none;color:black" length1="1.5" end1="none" end2="none" x2="-16" y2="120" y1="120"/>
<line length2="1.5" x1="-30" antialias="false" style="line-style:normal;line-weight:normal;filling:none;color:black" length1="1.5" end1="none" end2="none" x2="-16" y2="180" y1="180"/>
<line length2="1.5" x1="15" antialias="false" style="line-style:normal;line-weight:normal;filling:none;color:black" length1="1.5" end1="none" end2="none" x2="30" y2="20" y1="20"/>
<line length2="1.5" x1="15" antialias="false" style="line-style:normal;line-weight:normal;filling:none;color:black" length1="1.5" end1="none" end2="none" x2="30" y2="40" y1="40"/>
<line length2="1.5" x1="15" antialias="false" style="line-style:normal;line-weight:normal;filling:none;color:black" length1="1.5" end1="none" end2="none" x2="30" y2="60" y1="60"/>
<line length2="1.5" x1="-30" antialias="false" style="line-style:normal;line-weight:normal;filling:none;color:black" length1="1.5" end1="none" end2="none" x2="-16" y2="0" y1="0"/>
<line length2="1.5" x1="-30" antialias="false" style="line-style:normal;line-weight:normal;filling:none;color:black" length1="1.5" end1="none" end2="none" x2="-15" y2="20" y1="20"/>
<line length2="1.5" x1="-30" antialias="false" style="line-style:normal;line-weight:normal;filling:none;color:black" length1="1.5" end1="none" end2="none" x2="-16" y2="40" y1="40"/>
<line length2="1.5" x1="-30" antialias="false" style="line-style:normal;line-weight:normal;filling:none;color:black" length1="1.5" end1="none" end2="none" x2="-16" y2="60" y1="60"/>
<polygon x1="-5" y4="0" antialias="false" style="line-style:normal;line-weight:normal;filling:black;color:black" x2="-2" y2="-3" x3="-2" y1="0" x4="-5" y3="3"/>
<polygon x1="2" antialias="false" style="line-style:normal;line-weight:normal;filling:black;color:black" x2="5" y2="0" x3="2" y1="-3" y3="3"/>
<terminal x="30" y="120" orientation="e"/>
<terminal x="-30" y="80" orientation="w"/>
<terminal x="-30" y="120" orientation="w"/>
<terminal x="-30" y="100" orientation="w"/>
<terminal x="30" y="80" orientation="e"/>
<terminal x="30" y="100" orientation="e"/>
<terminal x="-30" y="0" orientation="w"/>
<terminal x="30" y="0" orientation="e"/>
<terminal x="-30" y="20" orientation="w"/>
<terminal x="-30" y="60" orientation="w"/>
<terminal x="-30" y="40" orientation="w"/>
<terminal x="30" y="20" orientation="e"/>
<terminal x="30" y="60" orientation="e"/>
<terminal x="30" y="40" orientation="e"/>
<terminal x="-30" y="160" orientation="w"/>
<terminal x="-30" y="180" orientation="w"/>
<terminal x="30" y="140" orientation="e"/>
<terminal x="30" y="180" orientation="e"/>
<terminal x="30" y="160" orientation="e"/>
<terminal x="-30" y="140" orientation="w"/>
</description>
</definition>

View File

@@ -0,0 +1,39 @@
<definition hotspot_y="15" width="70" orientation="dyyy" height="130" version="0.70" hotspot_x="34" link_type="simple" type="element">
<uuid uuid="{e2c18efc-1f4f-45cb-a814-09c1b5554535}"/>
<names>
<name lang="en">3 wipers between 3 contact pairs</name>
<name lang="nl">3 sleepcontacten tussen 3 contactparen</name>
</names>
<elementInformations/>
<informations></informations>
<description>
<line length2="1.5" x1="-5" antialias="false" style="line-style:normal;line-weight:normal;filling:none;color:black" length1="1.5" end1="none" end2="none" x2="5" y2="40" y1="40"/>
<line length2="1.5" x1="-5" antialias="false" style="line-style:normal;line-weight:normal;filling:none;color:black" length1="1.5" end1="none" end2="none" x2="5" y2="20" y1="20"/>
<circle x="5" antialias="false" y="75" style="line-style:normal;line-weight:normal;filling:none;color:black" diameter="10"/>
<polygon x1="-5" y4="20" antialias="false" style="line-style:normal;line-weight:normal;filling:black;color:black" x2="-2" y2="17" x3="-2" y1="20" x4="-5" y3="23"/>
<polygon x1="-5" y4="40" antialias="false" style="line-style:normal;line-weight:normal;filling:black;color:black" x2="-2" y2="37" x3="-2" y1="40" x4="-5" y3="43"/>
<polygon x1="2" antialias="false" style="line-style:normal;line-weight:normal;filling:black;color:black" x2="5" y2="40" x3="2" y1="37" y3="43"/>
<polygon x1="2" antialias="false" style="line-style:normal;line-weight:normal;filling:black;color:black" x2="5" y2="20" x3="2" y1="17" y3="23"/>
<circle x="5" antialias="false" y="95" style="line-style:normal;line-weight:normal;filling:none;color:black" diameter="10"/>
<circle x="5" antialias="false" y="55" style="line-style:normal;line-weight:normal;filling:none;color:black" diameter="10"/>
<rect x="-20" rx="0" antialias="false" y="-10" width="40" style="line-style:normal;line-weight:normal;filling:none;color:black" height="120" ry="0"/>
<circle x="-15" antialias="false" y="95" style="line-style:normal;line-weight:normal;filling:none;color:black" diameter="10"/>
<circle x="-15" antialias="false" y="75" style="line-style:normal;line-weight:normal;filling:none;color:black" diameter="10"/>
<circle x="-15" antialias="false" y="55" style="line-style:normal;line-weight:normal;filling:none;color:black" diameter="10"/>
<line length2="1.5" x1="-5" antialias="false" style="line-style:normal;line-weight:normal;filling:none;color:black" length1="1.5" end1="none" end2="none" x2="5" y2="0" y1="0"/>
<line length2="1.5" x1="15" antialias="false" style="line-style:normal;line-weight:normal;filling:none;color:black" length1="1.5" end1="none" end2="none" x2="30" y2="60" y1="60"/>
<line length2="1.5" x1="15" antialias="false" style="line-style:normal;line-weight:normal;filling:none;color:black" length1="1.5" end1="none" end2="none" x2="30" y2="80" y1="80"/>
<line length2="1.5" x1="15" antialias="false" style="line-style:normal;line-weight:normal;filling:none;color:black" length1="1.5" end1="none" end2="none" x2="30" y2="100" y1="100"/>
<line length2="1.5" x1="-30" antialias="false" style="line-style:normal;line-weight:normal;filling:none;color:black" length1="1.5" end1="none" end2="none" x2="-15" y2="60" y1="60"/>
<line length2="1.5" x1="-30" antialias="false" style="line-style:normal;line-weight:normal;filling:none;color:black" length1="1.5" end1="none" end2="none" x2="-16" y2="80" y1="80"/>
<line length2="1.5" x1="-30" antialias="false" style="line-style:normal;line-weight:normal;filling:none;color:black" length1="1.5" end1="none" end2="none" x2="-16" y2="100" y1="100"/>
<polygon x1="-5" y4="0" antialias="false" style="line-style:normal;line-weight:normal;filling:black;color:black" x2="-2" y2="-3" x3="-2" y1="0" x4="-5" y3="3"/>
<polygon x1="2" antialias="false" style="line-style:normal;line-weight:normal;filling:black;color:black" x2="5" y2="0" x3="2" y1="-3" y3="3"/>
<terminal x="30" y="100" orientation="e"/>
<terminal x="-30" y="80" orientation="w"/>
<terminal x="-30" y="60" orientation="w"/>
<terminal x="30" y="60" orientation="e"/>
<terminal x="30" y="80" orientation="e"/>
<terminal x="-30" y="100" orientation="w"/>
</description>
</definition>

View File

@@ -0,0 +1,6 @@
<qet-directory>
<names>
<name lang="en">Wiper between</name>
<name lang="nl">Sleepcontact tussen</name>
</names>
</qet-directory>

View File

@@ -0,0 +1,21 @@
<definition hotspot_y="15" width="70" orientation="dyyy" height="50" version="0.70" hotspot_x="34" link_type="simple" type="element">
<uuid uuid="{292efe3b-b14f-4bf4-b666-7edcff8c76e6}"/>
<names>
<name lang="en">Wiper to 2 contacts</name>
<name lang="nl">Sleepcontact naar 2 polen</name>
</names>
<elementInformations/>
<informations></informations>
<description>
<circle x="-15" antialias="false" y="15" style="line-style:normal;line-weight:normal;filling:none;color:black" diameter="10"/>
<rect x="-20" rx="0" antialias="false" y="-10" width="40" style="line-style:normal;line-weight:normal;filling:none;color:black" height="40" ry="0"/>
<circle x="-15" antialias="false" y="-5" style="line-style:normal;line-weight:normal;filling:none;color:black" diameter="10"/>
<line length2="1.5" x1="-30" antialias="false" style="line-style:normal;line-weight:normal;filling:none;color:black" length1="1.5" end1="none" end2="none" x2="-15" y2="0" y1="0"/>
<line length2="1.5" x1="-30" antialias="false" style="line-style:normal;line-weight:normal;filling:none;color:black" length1="1.5" end1="none" end2="none" x2="-15" y2="20" y1="20"/>
<line length2="1.5" x1="-5" antialias="false" style="line-style:normal;line-weight:normal;filling:none;color:black" length1="1.5" end1="none" end2="none" x2="30" y2="0" y1="0"/>
<polygon x1="-2" y4="-3" antialias="false" style="line-style:normal;line-weight:normal;filling:black;color:black" x2="-2" y2="3" x3="-5" y1="-3" x4="-2" y3="0"/>
<terminal x="30" y="0" orientation="e"/>
<terminal x="-30" y="20" orientation="w"/>
<terminal x="-30" y="0" orientation="w"/>
</description>
</definition>

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