Browse Source

Use qt resource system from now on. Also stub translation file

master
Nils 4 years ago
parent
commit
8cb98c4496
  1. 4
      qtgui/mainwindow.py
  2. 374
      qtgui/resources.py
  3. 4
      qtgui/resources/buildresources.sh
  4. 1
      qtgui/resources/hidden.svg
  5. BIN
      qtgui/resources/icon.png
  6. 1
      qtgui/resources/power.svg
  7. 1
      qtgui/resources/removed.svg
  8. 11
      qtgui/resources/resources.qrc
  9. 1
      qtgui/resources/running.svg
  10. 1
      qtgui/resources/stopped.svg
  11. 2
      qtgui/resources/translations/config.pro
  12. BIN
      qtgui/resources/translations/de.qm
  13. 799
      qtgui/resources/translations/de.ts
  14. 5
      qtgui/resources/translations/update.sh
  15. 5
      qtgui/systemtray.py

4
qtgui/mainwindow.py

@ -47,7 +47,7 @@ from .quickopensessioncontroller import QuickOpenSessionController
from .projectname import ProjectNameWidget
from .addclientprompt import askForExecutable, updateWordlist
from .waitdialog import WaitDialog
from .resources import *
api.eventLoop = EventLoop()
@ -105,7 +105,7 @@ class MainWindow(QtWidgets.QMainWindow):
def __init__(self):
super().__init__()
self.qtApp = qtApp
self.qtApp.setWindowIcon(QtGui.QIcon("icon.png")) #non-template part of the program
self.qtApp.setWindowIcon(QtGui.QIcon(":icon.png")) #non-template part of the program
self.qtApp.setApplicationName(f"{METADATA['name']}")
self.qtApp.setApplicationDisplayName(f"{METADATA['name']}")
logger.info("Init MainWindow")

374
qtgui/resources.py

@ -0,0 +1,374 @@
# -*- coding: utf-8 -*-
# Resource object code
#
# Created by: The Resource Compiler for PyQt5 (Qt v5.14.2)
#
# WARNING! All changes made in this file will be lost!
from PyQt5 import QtCore
qt_resource_data = b"\
\x00\x00\x06\xec\
\x89\
\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\
\x00\x00\x40\x00\x00\x00\x40\x08\x06\x00\x00\x00\xaa\x69\x71\xde\
\x00\x00\x00\x04\x73\x42\x49\x54\x08\x08\x08\x08\x7c\x08\x64\x88\
\x00\x00\x00\x09\x70\x48\x59\x73\x00\x00\x02\x4d\x00\x00\x02\x4d\
\x01\x88\x6f\xfb\x19\x00\x00\x00\x19\x74\x45\x58\x74\x53\x6f\x66\
\x74\x77\x61\x72\x65\x00\x77\x77\x77\x2e\x69\x6e\x6b\x73\x63\x61\
\x70\x65\x2e\x6f\x72\x67\x9b\xee\x3c\x1a\x00\x00\x06\x69\x49\x44\
\x41\x54\x78\x9c\xed\x9b\xdd\x4b\x14\x5d\x1c\xc7\xbf\xdb\xae\xfb\
\x96\xde\x74\x11\x68\xc8\x9a\xa5\x8f\xe4\xe3\x5f\x90\x18\xa2\x48\
\xe2\xd2\xcb\x4d\xe0\x45\x37\x81\x61\x50\xac\x84\x94\x44\x98\x04\
\x4a\x42\xc8\x9a\x75\xd7\xd5\x42\xf0\x10\xd4\x85\x2b\x46\xf4\x76\
\xa3\x77\xb9\x2f\xca\x4c\x25\xba\xbb\xae\x65\xd6\x75\x39\x2f\xbb\
\x3b\xf3\x5c\xc4\x2e\xfb\xac\xae\x7b\xde\xb4\x60\x9f\x2f\x88\x3b\
\x33\xbf\xf3\x3d\x67\x3f\x3b\xe7\xfc\xce\x9c\x99\x01\x80\x27\x00\
\x0c\x00\x66\x99\xfd\x19\x00\x9e\x58\x00\x64\x00\x1c\x40\x79\xca\
\xb0\xe0\x17\x0d\x9c\x3c\x79\x12\xad\xad\xad\xbf\xb9\x3d\xfb\xa3\
\xb9\xb9\x39\xcc\xcf\xcf\xe7\xb6\x4d\x00\xe6\xf0\xf0\xb0\x59\x2e\
\x1a\x1e\x1e\xce\x75\x85\x72\x3d\xf5\x73\x2a\x7b\x00\x36\x51\x46\
\xdf\xbf\x7f\xc7\x8b\x17\x2f\x44\xd9\xed\xaa\xee\xee\x6e\x1c\x3e\
\x7c\x58\x88\x97\x10\x00\xa6\x69\x62\x7a\x7a\x1a\x7d\x7d\x7d\x22\
\xec\x4a\xea\xf1\xe3\xc7\xb8\x74\xe9\x12\x2c\x16\x0b\xb7\x97\x90\
\x2e\xa0\x28\x0a\xa2\xd1\xa8\x08\x2b\x22\x45\xa3\x51\x28\x8a\x22\
\xc4\x4b\x08\x80\x4c\x26\x03\x49\x92\x44\x58\x11\x49\x92\x24\x64\
\x32\x19\x21\x5e\x42\x00\xb8\x5c\x2e\xc8\xb2\x2c\xc2\x8a\x48\xb2\
\x2c\xc3\xe5\x72\x09\xf1\x12\x02\x40\x55\x55\x7c\xfb\xf6\x4d\x84\
\x15\x91\x36\x37\x37\xa1\x69\x9a\x10\x2f\x21\x00\x56\x57\x57\x45\
\xd8\xfc\x96\x3a\x85\x00\x08\x85\x42\x22\x6c\xa8\xb4\xb0\xb0\x20\
\xc4\x87\x1b\xc0\xd6\xd6\x16\xc2\xe1\xb0\x88\xb6\x50\x29\x12\x89\
\x08\xc9\x04\xdc\x00\xd2\xe9\xf4\xbe\x0e\x80\x59\xc9\xb2\x8c\x54\
\x2a\xc5\xed\xc3\x0d\x60\xbf\x33\x40\x56\xb2\x2c\xc3\xed\x76\x73\
\xfb\x70\x03\x48\xa5\x52\xf8\xfa\xf5\x2b\x53\xd9\xce\xce\x4e\x74\
\x76\x76\x32\x95\xdd\xd8\xd8\x10\x92\x09\xb8\xa7\xc2\x2b\x2b\x2b\
\x4c\xe5\xec\x76\x3b\xa6\xa6\xa6\x60\xb5\x5a\xd1\xd2\xd2\xc2\xf4\
\x65\x62\xb1\x18\x5a\x5a\x5a\x98\xea\xcf\x8a\xfb\x0c\x60\x1d\x00\
\x07\x07\x07\xd1\xd4\xd4\x84\x86\x86\x06\x5c\xbf\x7e\x7d\x5f\xeb\
\xce\x17\x17\x00\x45\x51\x98\x1a\x51\x5b\x5b\x8b\x5b\xb7\x6e\xe5\
\xb6\x6f\xdf\xbe\x8d\xba\xba\x3a\x6a\x9f\x70\x38\xcc\x9d\x09\xb8\
\x00\xa4\x52\x29\xa6\x01\xf0\xc1\x83\x07\x38\x78\xf0\x60\x6e\xdb\
\xed\x76\x63\x62\x62\x82\xda\x47\x44\x26\xe0\x02\xc0\x92\x01\xba\
\xba\xba\x70\xee\xdc\xb9\x6d\xfb\xcf\x9f\x3f\x8f\x9e\x9e\x1e\x2a\
\x2f\x11\xd7\x04\x5c\x00\xd2\xe9\x34\x36\x36\x36\x88\xe3\x1d\x0e\
\x07\xa6\xa6\xa6\x8a\x1e\x9f\x9c\x9c\x84\xd3\xe9\x24\xf6\xfb\xfc\
\xf9\x33\xd2\xe9\x34\x71\xfc\x4e\xe2\x02\xb0\xba\xba\x0a\xd3\x34\
\x89\xe3\x87\x86\x86\xd0\xd8\xd8\x58\xf4\xf8\xb1\x63\xc7\x70\xe3\
\xc6\x0d\xaa\x36\xc4\x62\x31\xaa\xf8\x42\x71\x01\x88\x44\x22\xc4\
\xb1\x1e\x8f\x87\xe8\xcb\x0d\x0d\x0d\xa1\xbe\xbe\x9e\xd8\x97\x37\
\x13\x30\x03\x50\x14\x85\xea\x22\xe8\xe1\xc3\x87\x44\x33\x37\x97\
\xcb\x85\x47\x8f\x1e\x11\xfb\x86\xc3\x61\xa8\xaa\x4a\x1c\x5f\x28\
\x66\x00\x34\x19\xe0\xec\xd9\xb3\xf0\x7a\xbd\xc4\xde\xa7\x4f\x9f\
\xc6\x99\x33\x67\x88\x62\x65\x59\x86\xae\xeb\xc4\xde\x85\x62\x06\
\xe0\x74\x3a\x89\x96\xc1\x1c\x0e\x07\xfc\x7e\x3f\xb5\xff\xe4\xe4\
\x24\x1c\x0e\x47\xc9\x38\x49\x92\xb8\x32\x01\x33\x00\xc3\x30\xf0\
\xe5\xcb\x97\x92\x71\x9a\xa6\x31\x0d\x54\xc9\x64\x92\xe8\x97\xe5\
\xcd\x04\xcc\x00\x62\xb1\x18\x71\x06\xb8\x72\xe5\x0a\xd5\x5c\x5f\
\xd7\x75\xf4\xf7\xf7\x13\xf9\x9b\xa6\x89\x44\x22\x41\xec\x5d\x28\
\x66\x00\x34\x19\x60\x79\x79\x99\xaa\x1b\x4c\x4c\x4c\xe0\xc3\x87\
\x0f\x7b\xd2\x96\x42\x31\x01\x50\x55\x95\x7a\x19\xec\xee\xdd\xbb\
\x44\xbf\xd4\xfa\xfa\x3a\x46\x47\x47\xa9\xbc\x43\xa1\x10\x73\x26\
\x60\x02\xa0\xeb\x3a\xf5\x14\x78\x6b\x6b\x0b\x83\x83\x83\x25\xe3\
\x06\x06\x06\xf0\xe3\xc7\x0f\x2a\x6f\x9e\x4c\xc0\x04\x80\x34\x03\
\x14\xea\xd9\xb3\x67\x98\x9d\x9d\x2d\x7a\xfc\xd5\xab\x57\x78\xfe\
\xfc\x39\xb5\xaf\x24\x49\x54\x53\xe8\x7c\x31\x01\x30\x4d\x13\xeb\
\xeb\xeb\x4c\x15\xfa\x7c\xbe\x1d\x4f\x57\x5d\xd7\x71\xed\xda\x35\
\x26\xcf\x64\x32\x49\x35\x25\xcf\x17\x13\x80\x78\x3c\xce\x5c\xe1\
\xca\xca\x0a\xee\xdf\xbf\xbf\x6d\xff\xf8\xf8\x38\x3e\x7d\xfa\xc4\
\xe4\xc9\x93\x09\x98\x00\xf0\xce\xbf\xc7\xc6\xc6\x10\x8f\xc7\x73\
\xdb\xc9\x64\x12\xe3\xe3\xe3\x5c\x9e\xac\x99\x80\x1a\x80\xa6\x69\
\xdc\x00\x14\x45\xc1\xc0\xc0\x40\x6e\xfb\xea\xd5\xab\xf8\xf9\xf3\
\x27\x97\x27\x6b\x26\xa0\x5e\x14\xd5\x34\x4d\xc8\x9d\xe0\xe9\xe9\
\x69\xcc\xcc\xcc\xc0\x66\xb3\x21\x18\x0c\x72\xfb\x49\x92\x04\x5d\
\xd7\xa9\x07\x43\x6a\x00\x0e\x87\x43\xd8\x7d\x00\x9f\xcf\x27\xc4\
\x07\xf8\x95\x0a\x59\x32\x01\x35\x00\x8b\xc5\x82\x64\x32\x49\x5d\
\xd1\x4e\xe2\x5d\xcc\xc8\xd7\xda\xda\x1a\x53\x39\xea\x31\x20\x91\
\x48\xc0\x30\x0c\xa6\xca\xf6\x52\x86\x61\x30\x41\xa0\x06\xc0\x33\
\xef\xde\x6b\xb1\xb4\x8d\x0a\x80\xa6\x69\xbf\xe5\x56\x38\xa9\x42\
\xa1\x10\xf5\x1d\x26\x6a\x00\xfb\xf9\x2c\x10\xad\x24\x49\xda\x5b\
\x00\x22\x33\xc0\x5e\x48\x96\x65\xa2\x55\xa4\x7c\x51\x01\xb0\x58\
\x2c\x5c\x8b\x0f\xf9\xaa\xaf\xaf\xc7\xcc\xcc\x0c\x5e\xbf\x7e\x8d\
\xa6\xa6\x26\x21\x9e\xf1\x78\x9c\xfa\xd9\x41\x2a\x00\x6b\x6b\x6b\
\xdc\x19\xc0\x6e\xb7\xe3\xe6\xcd\x9b\x90\x24\x09\x3d\x3d\x3d\xe8\
\xe8\xe8\x40\x34\x1a\xc5\xbd\x7b\xf7\x98\xaf\xe8\xb2\x32\x0c\x83\
\x3a\x45\x53\x01\xe0\x7d\x18\xb2\xd8\x97\x2d\x84\xc2\xa3\xc5\xc5\
\x45\xaa\x78\x62\x00\xba\xae\x33\x3f\x98\x74\xe4\xc8\x11\x04\x02\
\x81\x92\xa7\x7b\xb6\x5b\x04\x83\x41\x1c\x3d\x7a\x94\xa9\xae\xf7\
\xef\xdf\x53\x0d\x84\xc4\x00\x54\x55\xa5\x1e\x00\x2b\x2a\x2a\xe0\
\xf3\xf9\xf0\xf1\xe3\x47\x5c\xbc\x78\x91\xb8\x9c\xd7\xeb\x85\x24\
\x49\x18\x19\x19\xa1\xee\x16\xb2\x2c\xef\x0d\x00\xbb\xdd\x4e\x05\
\xa0\xbd\xbd\x1d\x91\x48\x04\x7e\xbf\x1f\x95\x95\x95\xc4\xe5\xb2\
\x72\xb9\x5c\xb8\x73\xe7\x0e\x96\x96\x96\xd0\xdd\xdd\x4d\x5c\x8e\
\x36\x13\x10\x03\xb0\xd9\x6c\xff\xb9\x86\x2f\xa6\x9a\x9a\x1a\x04\
\x02\x01\xbc\x7d\xfb\x16\x27\x4e\x9c\x20\x6e\x48\x31\x1d\x3f\x7e\
\x1c\xb3\xb3\xb3\x08\x06\x83\xf0\x78\x3c\x25\xe3\x63\xb1\x18\x0e\
\x1c\x20\x1f\xda\x88\x23\x13\x89\xc4\xae\x0f\x28\xb3\x9e\xee\xa4\
\xf2\x7a\xbd\x90\x65\x19\x23\x23\x23\xbb\xfe\xc2\x99\x4c\x86\x2a\
\x13\x10\x03\x58\x5a\x5a\x2a\x7a\xec\xd4\xa9\x53\x08\x87\xc3\xf0\
\xfb\xfd\xa8\xaa\xaa\x22\xae\x9c\x56\x6e\xb7\x3b\xd7\x2d\xba\xba\
\xba\x8a\xc6\xed\xd6\xd6\x42\x11\x01\x28\x96\x01\xaa\xab\xab\x11\
\x08\x04\xf0\xee\xdd\x3b\x34\x37\x37\x13\x57\xca\xab\x86\x86\x06\
\xbc\x7c\xf9\x12\xc1\x60\x10\xb5\xb5\xb5\xdb\x8e\x2f\x2c\x2c\x10\
\x2f\x93\x13\xad\x07\xa8\xaa\x8a\xba\xba\x3a\x5c\xbe\x7c\x39\xb7\
\xaf\xb1\xb1\x11\x17\x2e\x5c\x40\x55\x55\x15\x14\x45\x81\xd3\xe9\
\xa4\xea\x7b\xbc\x52\x55\x15\x6d\x6d\x6d\x98\x9f\x9f\xc7\xd3\xa7\
\x4f\xb1\xbc\xbc\x9c\x3b\xe6\xf1\x78\xa0\xaa\x2a\xec\x76\x7b\x49\
\x1f\x22\x00\x6e\xb7\x1b\xbd\xbd\xbd\xe8\xed\xed\xdd\xf1\xb8\x69\
\x9a\xb9\xa7\xb5\xb2\x53\xd1\x62\xff\x8b\xed\xcb\xfa\xe4\xaf\x36\
\xe7\x6f\x17\xee\x07\x00\xab\xd5\x8a\x43\x87\x0e\xa1\xbf\xbf\x7f\
\x5b\x9b\x48\x33\x01\x11\x00\x9b\xcd\x06\x9b\x4d\xd8\xfb\x55\x7f\
\x94\xfe\x7f\x6d\x2e\xfb\xe1\xcd\x9b\x37\xc2\xde\xc2\xf8\xd3\x35\
\x37\x37\x97\xfb\x5c\xf6\x2f\x4f\x5b\x01\xfc\x05\xe0\x6f\xfc\x82\
\x51\x4e\x32\x01\xfc\xf3\x2f\xe8\x31\x0e\x04\xd7\xcb\x8f\x12\x00\
\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\
\x00\x00\x01\x4f\
\x3c\
\x73\x76\x67\x20\x78\x6d\x6c\x6e\x73\x3d\x22\x68\x74\x74\x70\x3a\
\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x32\x30\x30\
\x30\x2f\x73\x76\x67\x22\x20\x76\x69\x65\x77\x42\x6f\x78\x3d\x22\
\x30\x20\x30\x20\x31\x32\x30\x20\x31\x32\x30\x22\x3e\x3c\x70\x61\
\x74\x68\x20\x64\x3d\x22\x4d\x36\x30\x20\x31\x39\x2e\x30\x39\x43\
\x32\x32\x2e\x33\x38\x32\x20\x31\x39\x2e\x30\x39\x2e\x30\x35\x33\
\x20\x36\x30\x20\x2e\x30\x35\x33\x20\x36\x30\x53\x32\x32\x2e\x33\
\x38\x33\x20\x31\x30\x30\x2e\x39\x31\x20\x36\x30\x20\x31\x30\x30\
\x2e\x39\x31\x20\x31\x31\x39\x2e\x39\x35\x20\x36\x30\x20\x31\x31\
\x39\x2e\x39\x35\x20\x36\x30\x20\x39\x37\x2e\x36\x31\x38\x20\x31\
\x39\x2e\x30\x39\x20\x36\x30\x20\x31\x39\x2e\x30\x39\x7a\x6d\x30\
\x20\x36\x35\x2e\x33\x32\x63\x2d\x31\x33\x2e\x34\x36\x20\x30\x2d\
\x32\x34\x2e\x34\x31\x2d\x31\x30\x2e\x39\x35\x2d\x32\x34\x2e\x34\
\x31\x2d\x32\x34\x2e\x34\x31\x53\x34\x36\x2e\x35\x34\x20\x33\x35\
\x2e\x35\x39\x20\x36\x30\x20\x33\x35\x2e\x35\x39\x20\x38\x34\x2e\
\x34\x30\x37\x20\x34\x36\x2e\x35\x34\x20\x38\x34\x2e\x34\x30\x37\
\x20\x36\x30\x73\x2d\x31\x30\x2e\x39\x35\x20\x32\x34\x2e\x34\x31\
\x2d\x32\x34\x2e\x34\x31\x20\x32\x34\x2e\x34\x31\x7a\x22\x2f\x3e\
\x3c\x63\x69\x72\x63\x6c\x65\x20\x63\x79\x3d\x22\x36\x30\x2e\x35\
\x38\x33\x22\x20\x63\x78\x3d\x22\x36\x30\x22\x20\x72\x3d\x22\x31\
\x34\x2e\x34\x30\x39\x22\x2f\x3e\x3c\x2f\x73\x76\x67\x3e\
\x00\x00\x00\xb4\
\x3c\
\x73\x76\x67\x20\x78\x6d\x6c\x6e\x73\x3d\x22\x68\x74\x74\x70\x3a\
\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x32\x30\x30\
\x30\x2f\x73\x76\x67\x22\x20\x76\x69\x65\x77\x42\x6f\x78\x3d\x22\
\x30\x20\x30\x20\x38\x20\x38\x22\x3e\x3c\x70\x61\x74\x68\x20\x64\
\x3d\x22\x4d\x33\x2e\x31\x31\x20\x37\x2e\x31\x37\x4c\x2e\x30\x34\
\x38\x20\x34\x2e\x31\x30\x36\x6c\x31\x2e\x31\x34\x34\x2d\x31\x2e\
\x31\x34\x34\x20\x33\x2e\x30\x36\x32\x20\x33\x2e\x30\x36\x32\x7a\
\x22\x2f\x3e\x3c\x70\x61\x74\x68\x20\x64\x3d\x22\x4d\x38\x2e\x30\
\x36\x33\x20\x32\x2e\x32\x30\x38\x4c\x33\x2e\x37\x33\x35\x20\x36\
\x2e\x35\x33\x36\x6c\x2d\x31\x2e\x32\x32\x2d\x31\x2e\x32\x32\x4c\
\x36\x2e\x38\x34\x33\x2e\x39\x38\x38\x7a\x22\x2f\x3e\x3c\x2f\x73\
\x76\x67\x3e\
\x00\x00\x01\x25\
\x3c\
\x73\x76\x67\x20\x78\x6d\x6c\x6e\x73\x3d\x22\x68\x74\x74\x70\x3a\
\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x32\x30\x30\
\x30\x2f\x73\x76\x67\x22\x20\x76\x69\x65\x77\x42\x6f\x78\x3d\x22\
\x30\x20\x30\x20\x34\x34\x32\x20\x33\x38\x33\x22\x3e\x3c\x74\x69\
\x74\x6c\x65\x3e\x53\x68\x61\x70\x65\x20\x2b\x20\x53\x68\x61\x70\
\x65\x3c\x2f\x74\x69\x74\x6c\x65\x3e\x3c\x67\x20\x66\x69\x6c\x6c\
\x2d\x72\x75\x6c\x65\x3d\x22\x65\x76\x65\x6e\x6f\x64\x64\x22\x3e\
\x3c\x70\x61\x74\x68\x20\x64\x3d\x22\x4d\x34\x34\x31\x2e\x34\x33\
\x20\x33\x38\x32\x2e\x33\x38\x48\x30\x4c\x32\x32\x30\x2e\x37\x33\
\x20\x30\x6c\x32\x32\x30\x2e\x37\x20\x33\x38\x32\x2e\x33\x38\x7a\
\x4d\x38\x37\x2e\x37\x20\x33\x33\x31\x2e\x37\x33\x68\x32\x36\x36\
\x2e\x30\x31\x4c\x32\x32\x30\x2e\x37\x33\x20\x31\x30\x31\x2e\x33\
\x31\x20\x38\x37\x2e\x37\x20\x33\x33\x31\x2e\x37\x33\x68\x2e\x30\
\x30\x33\x7a\x22\x2f\x3e\x3c\x70\x61\x74\x68\x20\x64\x3d\x22\x4d\
\x32\x30\x33\x20\x31\x37\x37\x68\x33\x35\x76\x39\x34\x2e\x37\x38\
\x68\x2d\x33\x35\x56\x31\x37\x37\x7a\x6d\x30\x20\x31\x31\x30\x2e\
\x37\x32\x68\x33\x35\x76\x32\x37\x2e\x38\x39\x68\x2d\x33\x35\x76\
\x2d\x32\x37\x2e\x38\x39\x7a\x22\x2f\x3e\x3c\x2f\x67\x3e\x3c\x2f\
\x73\x76\x67\x3e\
\x00\x00\x00\x60\
\x3c\
\x73\x76\x67\x20\x78\x6d\x6c\x6e\x73\x3d\x22\x68\x74\x74\x70\x3a\
\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x32\x30\x30\
\x30\x2f\x73\x76\x67\x22\x20\x76\x69\x65\x77\x42\x6f\x78\x3d\x22\
\x30\x20\x30\x20\x31\x32\x30\x20\x31\x32\x30\x22\x3e\x3c\x70\x61\
\x74\x68\x20\x64\x3d\x22\x4d\x31\x36\x20\x31\x36\x68\x38\x38\x76\
\x38\x38\x48\x31\x36\x7a\x22\x2f\x3e\x3c\x2f\x73\x76\x67\x3e\
\x00\x00\x02\x70\
\x3c\
\x73\x76\x67\x20\x78\x6d\x6c\x6e\x73\x3d\x22\x68\x74\x74\x70\x3a\
\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x32\x30\x30\
\x30\x2f\x73\x76\x67\x22\x20\x76\x69\x65\x77\x42\x6f\x78\x3d\x22\
\x30\x20\x30\x20\x31\x32\x30\x20\x31\x32\x30\x22\x3e\x3c\x70\x61\
\x74\x68\x20\x64\x3d\x22\x4d\x33\x2e\x32\x37\x32\x20\x35\x38\x2e\
\x37\x37\x32\x63\x30\x20\x33\x31\x2e\x32\x30\x34\x20\x32\x35\x2e\
\x32\x39\x36\x20\x35\x36\x2e\x35\x20\x35\x36\x2e\x35\x20\x35\x36\
\x2e\x35\x20\x33\x31\x2e\x32\x30\x33\x20\x30\x20\x35\x36\x2e\x35\
\x2d\x32\x35\x2e\x32\x39\x36\x20\x35\x36\x2e\x35\x2d\x35\x36\x2e\
\x35\x20\x30\x2d\x31\x36\x2e\x32\x36\x34\x2d\x36\x2e\x38\x38\x32\
\x2d\x33\x30\x2e\x39\x31\x2d\x31\x37\x2e\x38\x38\x2d\x34\x31\x2e\
\x32\x32\x4c\x38\x34\x2e\x30\x33\x20\x33\x32\x2e\x38\x38\x35\x63\
\x36\x2e\x39\x31\x32\x20\x36\x2e\x34\x38\x32\x20\x31\x31\x2e\x32\
\x34\x34\x20\x31\x35\x2e\x36\x38\x38\x20\x31\x31\x2e\x32\x34\x34\
\x20\x32\x35\x2e\x38\x39\x20\x30\x20\x31\x39\x2e\x35\x37\x34\x2d\
\x31\x35\x2e\x39\x32\x36\x20\x33\x35\x2e\x35\x2d\x33\x35\x2e\x35\
\x20\x33\x35\x2e\x35\x2d\x31\x39\x2e\x35\x37\x35\x20\x30\x2d\x33\
\x35\x2e\x35\x2d\x31\x35\x2e\x39\x32\x36\x2d\x33\x35\x2e\x35\x2d\
\x33\x35\x2e\x35\x22\x20\x66\x69\x6c\x6c\x3d\x22\x23\x30\x31\x30\
\x31\x30\x31\x22\x2f\x3e\x3c\x70\x61\x74\x68\x20\x64\x3d\x22\x4d\
\x39\x35\x2e\x32\x37\x32\x20\x35\x38\x2e\x37\x37\x32\x63\x30\x20\
\x31\x39\x2e\x35\x37\x35\x2d\x31\x35\x2e\x39\x32\x35\x20\x33\x35\
\x2e\x35\x2d\x33\x35\x2e\x35\x20\x33\x35\x2e\x35\x2d\x31\x39\x2e\
\x35\x37\x34\x20\x30\x2d\x33\x35\x2e\x35\x2d\x31\x35\x2e\x39\x32\
\x36\x2d\x33\x35\x2e\x35\x2d\x33\x35\x2e\x35\x20\x30\x2d\x31\x30\
\x2e\x32\x20\x34\x2e\x33\x33\x32\x2d\x31\x39\x2e\x34\x30\x36\x20\
\x31\x31\x2e\x32\x34\x35\x2d\x32\x35\x2e\x38\x39\x6c\x2d\x31\x34\
\x2e\x33\x36\x35\x2d\x31\x35\x2e\x33\x33\x43\x31\x30\x2e\x31\x35\
\x34\x20\x32\x37\x2e\x38\x36\x20\x33\x2e\x32\x37\x32\x20\x34\x32\
\x2e\x35\x30\x37\x20\x33\x2e\x32\x37\x32\x20\x35\x38\x2e\x37\x37\
\x63\x30\x20\x33\x31\x2e\x32\x30\x34\x20\x32\x35\x2e\x32\x39\x37\
\x20\x35\x36\x2e\x35\x20\x35\x36\x2e\x35\x20\x35\x36\x2e\x35\x20\
\x33\x31\x2e\x32\x30\x34\x20\x30\x20\x35\x36\x2e\x35\x2d\x32\x35\
\x2e\x32\x39\x37\x20\x35\x36\x2e\x35\x2d\x35\x36\x2e\x35\x22\x20\
\x66\x69\x6c\x6c\x3d\x22\x23\x30\x31\x30\x31\x30\x31\x22\x2f\x3e\
\x3c\x70\x61\x74\x68\x20\x64\x3d\x22\x4d\x34\x39\x2e\x37\x38\x35\
\x20\x30\x48\x36\x39\x2e\x37\x36\x76\x36\x31\x2e\x35\x37\x36\x48\
\x34\x39\x2e\x37\x38\x35\x7a\x22\x20\x66\x69\x6c\x6c\x3d\x22\x23\
\x30\x31\x30\x31\x30\x31\x22\x2f\x3e\x3c\x2f\x73\x76\x67\x3e\
\x00\x00\x03\x7f\
\x3c\
\xb8\x64\x18\xca\xef\x9c\x95\xcd\x21\x1c\xbf\x60\xa1\xbd\xdd\x42\
\x00\x00\x00\x38\x00\x58\xc0\x60\x00\x00\x00\xce\x05\xdc\x98\xcf\
\x00\x00\x00\x6f\x07\x0f\x9f\xbe\x00\x00\x02\x4e\x09\x43\x3f\xbf\
\x00\x00\x00\x00\x09\x9d\x07\x29\x00\x00\x02\x03\x0a\xb4\xa1\xee\
\x00\x00\x01\x6c\x0c\x17\x1f\x5f\x00\x00\x00\xfe\x69\x00\x00\x03\
\x26\x03\x00\x00\x00\x3c\x00\x41\x00\x62\x00\x62\x00\x72\x00\x65\
\x00\x63\x00\x68\x00\x65\x00\x6e\x00\x20\x00\x75\x00\x6e\x00\x64\
\x00\x20\x00\x41\x00\x72\x00\x67\x00\x6f\x00\x64\x00\x65\x00\x6a\
\x00\x6f\x00\x20\x00\x42\x00\x65\x00\x65\x00\x6e\x00\x64\x00\x65\
\x00\x6e\x08\x00\x00\x00\x00\x06\x00\x00\x00\x16\x41\x62\x6f\x72\
\x74\x20\x26\x26\x20\x51\x75\x69\x74\x20\x41\x72\x67\x6f\x64\x65\
\x6a\x6f\x07\x00\x00\x00\x08\x54\x72\x61\x79\x49\x63\x6f\x6e\x01\
\x03\x00\x00\x00\x30\x00\x56\x00\x65\x00\x72\x00\x73\x00\x74\x00\
\x65\x00\x63\x00\x6b\x00\x65\x00\x2f\x00\x5a\x00\x65\x00\x69\x00\
\x67\x00\x65\x00\x20\x00\x41\x00\x72\x00\x67\x00\x6f\x00\x64\x00\
\x65\x00\x6a\x00\x6f\x08\x00\x00\x00\x00\x06\x00\x00\x00\x12\x48\
\x69\x64\x65\x2f\x53\x68\x6f\x77\x20\x41\x72\x67\x6f\x64\x65\x6a\
\x6f\x07\x00\x00\x00\x08\x54\x72\x61\x79\x49\x63\x6f\x6e\x01\x03\
\x00\x00\x00\x0e\x00\x42\x00\x65\x00\x65\x00\x6e\x00\x64\x00\x65\
\x00\x6e\x08\x00\x00\x00\x00\x06\x00\x00\x00\x05\x51\x75\x69\x74\
\x20\x07\x00\x00\x00\x08\x54\x72\x61\x79\x49\x63\x6f\x6e\x01\x03\
\x00\x00\x00\x3c\x00\x53\x00\x70\x00\x65\x00\x69\x00\x63\x00\x68\
\x00\x65\x00\x72\x00\x6e\x00\x20\x00\x75\x00\x6e\x00\x64\x00\x20\
\x00\x41\x00\x72\x00\x67\x00\x6f\x00\x64\x00\x65\x00\x6a\x00\x6f\
\x00\x20\x00\x42\x00\x65\x00\x65\x00\x6e\x00\x64\x00\x65\x00\x6e\
\x08\x00\x00\x00\x00\x06\x00\x00\x00\x15\x53\x61\x76\x65\x20\x26\
\x26\x20\x51\x75\x69\x74\x20\x41\x72\x67\x6f\x64\x65\x6a\x6f\x07\
\x00\x00\x00\x08\x54\x72\x61\x79\x49\x63\x6f\x6e\x01\x03\x00\x00\
\x00\x5c\x00\x45\x00\x73\x00\x20\x00\x77\x00\x75\x00\x72\x00\x64\
\x00\x65\x00\x20\x00\x76\x00\x65\x00\x72\x00\x73\x00\x75\x00\x63\
\x00\x68\x00\x74\x00\x20\x00\x65\x00\x69\x00\x6e\x00\x65\x00\x20\
\x00\x77\x00\x65\x00\x69\x00\x74\x00\x65\x00\x72\x00\x65\x00\x20\
\x00\x47\x00\x55\x00\x49\x00\x20\x00\x7a\x00\x75\x00\x20\x00\x73\
\x00\x74\x00\x61\x00\x72\x00\x74\x00\x65\x00\x6e\x00\x2e\x08\x00\
\x00\x00\x00\x06\x00\x00\x00\x1c\x41\x6e\x6f\x74\x68\x65\x72\x20\
\x47\x55\x49\x20\x74\x72\x69\x65\x64\x20\x74\x6f\x20\x6c\x61\x75\
\x6e\x63\x68\x2e\x07\x00\x00\x00\x0a\x6d\x61\x69\x6e\x57\x69\x6e\
\x64\x6f\x77\x01\x03\x00\x00\x00\x1e\x00\x41\x00\x72\x00\x67\x00\
\x6f\x00\x64\x00\x65\x00\x6a\x00\x6f\x00\x20\x00\x62\x00\x65\x00\
\x72\x00\x65\x00\x69\x00\x74\x08\x00\x00\x00\x00\x06\x00\x00\x00\
\x0e\x41\x72\x67\x6f\x64\x65\x6a\x6f\x20\x72\x65\x61\x64\x79\x07\
\x00\x00\x00\x0a\x6d\x61\x69\x6e\x57\x69\x6e\x64\x6f\x77\x01\x03\
\x00\x00\x00\x82\x00\x50\x00\x72\x00\x6f\x00\x67\x00\x72\x00\x61\
\x00\x6d\x00\x6d\x00\x64\x00\x61\x00\x74\x00\x65\x00\x6e\x00\x62\
\x00\x61\x00\x6e\x00\x6b\x00\x20\x00\x77\x00\x69\x00\x72\x00\x64\
\x00\x20\x00\x61\x00\x6b\x00\x74\x00\x75\x00\x61\x00\x6c\x00\x69\
\x00\x73\x00\x69\x00\x65\x00\x72\x00\x74\x00\x2e\x00\x0a\x00\x56\
\x00\x69\x00\x65\x00\x6c\x00\x65\x00\x6e\x00\x20\x00\x44\x00\x61\
\x00\x6e\x00\x6b\x00\x20\x00\x66\x00\xfc\x00\x72\x00\x20\x00\x69\
\x00\x68\x00\x72\x00\x65\x00\x20\x00\x47\x00\x65\x00\x64\x00\x75\
\x00\x6c\x00\x64\x00\x2e\x08\x00\x00\x00\x00\x06\x00\x00\x00\x37\
\x55\x70\x64\x61\x74\x69\x6e\x67\x20\x50\x72\x6f\x67\x72\x61\x6d\
\x20\x44\x61\x74\x61\x62\x61\x73\x65\x2e\x0a\x54\x68\x61\x6e\x6b\
\x20\x79\x6f\x75\x20\x66\x6f\x72\x20\x79\x6f\x75\x72\x20\x70\x61\
\x74\x69\x65\x6e\x63\x65\x2e\x07\x00\x00\x00\x0a\x6d\x61\x69\x6e\
\x57\x69\x6e\x64\x6f\x77\x01\x88\x00\x00\x00\x02\x01\x01\
"
qt_resource_name = b"\
\x00\x08\
\x0a\x61\x5a\xa7\
\x00\x69\
\x00\x63\x00\x6f\x00\x6e\x00\x2e\x00\x70\x00\x6e\x00\x67\
\x00\x0a\
\x0a\xcc\x85\x87\
\x00\x68\
\x00\x69\x00\x64\x00\x64\x00\x65\x00\x6e\x00\x2e\x00\x73\x00\x76\x00\x67\
\x00\x0b\
\x00\xbd\xd0\x67\
\x00\x72\
\x00\x75\x00\x6e\x00\x6e\x00\x69\x00\x6e\x00\x67\x00\x2e\x00\x73\x00\x76\x00\x67\
\x00\x0b\
\x0c\x46\xd2\x07\
\x00\x72\
\x00\x65\x00\x6d\x00\x6f\x00\x76\x00\x65\x00\x64\x00\x2e\x00\x73\x00\x76\x00\x67\
\x00\x0b\
\x06\x42\x36\x27\
\x00\x73\
\x00\x74\x00\x6f\x00\x70\x00\x70\x00\x65\x00\x64\x00\x2e\x00\x73\x00\x76\x00\x67\
\x00\x0c\
\x0d\xfc\x11\x13\
\x00\x74\
\x00\x72\x00\x61\x00\x6e\x00\x73\x00\x6c\x00\x61\x00\x74\x00\x69\x00\x6f\x00\x6e\x00\x73\
\x00\x09\
\x0d\xc5\xb4\x07\
\x00\x70\
\x00\x6f\x00\x77\x00\x65\x00\x72\x00\x2e\x00\x73\x00\x76\x00\x67\
\x00\x05\
\x00\x6a\x85\x7d\
\x00\x64\
\x00\x65\x00\x2e\x00\x71\x00\x6d\
"
qt_resource_struct_v1 = b"\
\x00\x00\x00\x00\x00\x02\x00\x00\x00\x07\x00\x00\x00\x01\
\x00\x00\x00\x30\x00\x00\x00\x00\x00\x01\x00\x00\x08\x43\
\x00\x00\x00\x68\x00\x00\x00\x00\x00\x01\x00\x00\x0a\x24\
\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\
\x00\x00\x00\x16\x00\x00\x00\x00\x00\x01\x00\x00\x06\xf0\
\x00\x00\x00\x4c\x00\x00\x00\x00\x00\x01\x00\x00\x08\xfb\
\x00\x00\x00\xa2\x00\x00\x00\x00\x00\x01\x00\x00\x0a\x88\
\x00\x00\x00\x84\x00\x02\x00\x00\x00\x01\x00\x00\x00\x08\
\x00\x00\x00\xba\x00\x00\x00\x00\x00\x01\x00\x00\x0c\xfc\
"
qt_resource_struct_v2 = b"\
\x00\x00\x00\x00\x00\x02\x00\x00\x00\x07\x00\x00\x00\x01\
\x00\x00\x00\x00\x00\x00\x00\x00\
\x00\x00\x00\x30\x00\x00\x00\x00\x00\x01\x00\x00\x08\x43\
\x00\x00\x01\x71\xa5\xd3\xf0\x16\
\x00\x00\x00\x68\x00\x00\x00\x00\x00\x01\x00\x00\x0a\x24\
\x00\x00\x01\x71\xa5\xd3\xf0\x19\
\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\
\x00\x00\x01\x71\x87\x2b\x78\xc5\
\x00\x00\x00\x16\x00\x00\x00\x00\x00\x01\x00\x00\x06\xf0\
\x00\x00\x01\x71\xa5\xd3\xf0\x19\
\x00\x00\x00\x4c\x00\x00\x00\x00\x00\x01\x00\x00\x08\xfb\
\x00\x00\x01\x71\xa5\xd3\xf0\x16\
\x00\x00\x00\xa2\x00\x00\x00\x00\x00\x01\x00\x00\x0a\x88\
\x00\x00\x01\x71\xa5\xd3\xf0\x19\
\x00\x00\x00\x84\x00\x02\x00\x00\x00\x01\x00\x00\x00\x08\
\x00\x00\x00\x00\x00\x00\x00\x00\
\x00\x00\x00\xba\x00\x00\x00\x00\x00\x01\x00\x00\x0c\xfc\
\x00\x00\x01\x71\xa8\x6a\x85\xde\
"
qt_version = [int(v) for v in QtCore.qVersion().split('.')]
if qt_version < [5, 8, 0]:
rcc_version = 1
qt_resource_struct = qt_resource_struct_v1
else:
rcc_version = 2
qt_resource_struct = qt_resource_struct_v2
def qInitResources():
QtCore.qRegisterResourceData(rcc_version, qt_resource_struct, qt_resource_name, qt_resource_data)
def qCleanupResources():
QtCore.qUnregisterResourceData(rcc_version, qt_resource_struct, qt_resource_name, qt_resource_data)
qInitResources()

4
qtgui/resources/buildresources.sh

@ -0,0 +1,4 @@
#!/bin/bash
#https://doc.qt.io/qt-5/resources.html
#Resources are kept up-to-date upstream. They are not part of the make and build process.
pyrcc5 -no-compress resources.qrc -o ../resources.py #put them into the gui directly. Engine does not need any translation or images.

1
qtgui/resources/hidden.svg

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 120 120"><path d="M60 19.09C22.382 19.09.053 60 .053 60S22.383 100.91 60 100.91 119.95 60 119.95 60 97.618 19.09 60 19.09zm0 65.32c-13.46 0-24.41-10.95-24.41-24.41S46.54 35.59 60 35.59 84.407 46.54 84.407 60s-10.95 24.41-24.41 24.41z"/><circle cy="60.583" cx="60" r="14.409"/></svg>

After

Width:  |  Height:  |  Size: 335 B

BIN
qtgui/resources/icon.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

1
qtgui/resources/power.svg

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 120 120"><path d="M3.272 58.772c0 31.204 25.296 56.5 56.5 56.5 31.203 0 56.5-25.296 56.5-56.5 0-16.264-6.882-30.91-17.88-41.22L84.03 32.885c6.912 6.482 11.244 15.688 11.244 25.89 0 19.574-15.926 35.5-35.5 35.5-19.575 0-35.5-15.926-35.5-35.5" fill="#010101"/><path d="M95.272 58.772c0 19.575-15.925 35.5-35.5 35.5-19.574 0-35.5-15.926-35.5-35.5 0-10.2 4.332-19.406 11.245-25.89l-14.365-15.33C10.154 27.86 3.272 42.507 3.272 58.77c0 31.204 25.297 56.5 56.5 56.5 31.204 0 56.5-25.297 56.5-56.5" fill="#010101"/><path d="M49.785 0H69.76v61.576H49.785z" fill="#010101"/></svg>

After

Width:  |  Height:  |  Size: 624 B

1
qtgui/resources/removed.svg

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 442 383"><title>Shape + Shape</title><g fill-rule="evenodd"><path d="M441.43 382.38H0L220.73 0l220.7 382.38zM87.7 331.73h266.01L220.73 101.31 87.7 331.73h.003z"/><path d="M203 177h35v94.78h-35V177zm0 110.72h35v27.89h-35v-27.89z"/></g></svg>

After

Width:  |  Height:  |  Size: 293 B

11
qtgui/resources/resources.qrc

@ -0,0 +1,11 @@
<!DOCTYPE RCC><RCC version="1.0">
<qresource>
<file>icon.png</file>
<file>hidden.svg</file>
<file>power.svg</file>
<file>running.svg</file>
<file>stopped.svg</file>
<file>removed.svg</file>
<file>translations/de.qm</file>
</qresource>
</RCC>

1
qtgui/resources/running.svg

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 8 8"><path d="M3.11 7.17L.048 4.106l1.144-1.144 3.062 3.062z"/><path d="M8.063 2.208L3.735 6.536l-1.22-1.22L6.843.988z"/></svg>

After

Width:  |  Height:  |  Size: 180 B

1
qtgui/resources/stopped.svg

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 120 120"><path d="M16 16h88v88H16z"/></svg>

After

Width:  |  Height:  |  Size: 96 B

2
qtgui/resources/translations/config.pro

@ -0,0 +1,2 @@
SOURCES = ../../addclientprompt.py ../../descriptiontextwidget.py ../../mainwindow.py ../../projectname.py ../../quickopensessioncontroller.py ../../quicksessioncontroller.py ../../sessiontreecontroller.py ../../opensessioncontroller.py ../../systemtray.py ../../waitdialog.py
TRANSLATIONS = de.ts

BIN
qtgui/resources/translations/de.qm

Binary file not shown.

799
qtgui/resources/translations/de.ts

@ -0,0 +1,799 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="de">
<context>
<name>About</name>
<message>
<location filename="../../mainwindow.py" line="60"/>
<source>Prefer clone track over adding a new empty track when creating a new pattern for an existing &apos;real world&apos; instrument.</source>
<translation type="obsolete">Spuren zu klonen ist meist besser als eine neue, leere Spur zu erstellen. Benutze Klonen immer wenn du ein neues Pattern für ein existierendes Instrument komponieren möchtest.</translation>
</message>
<message>
<location filename="../../mainwindow.py" line="61"/>
<source>You can run multiple Patroneo instances in parallel to create complex polyrhythms.</source>
<translation type="obsolete">Um komplexe Rhythmen zu erstellen versuche Patroneo mehrmals zu starten und verschiedene Taktarten einzustellen.</translation>
</message>
<message>
<location filename="../../mainwindow.py" line="62"/>
<source>To revert all steps that are longer or shorter than default invert the pattern twice in a row.</source>
<translation type="obsolete">Alle gedehnten oder verkürzte Noten im Takt bekommst du am einfachsten zurück auf die normale Länge wenn du zweimal hintereinander die &amp;quot;Umkehren&amp;quot; Funktion benutzt.</translation>
</message>
<message>
<location filename="../../mainwindow.py" line="63"/>
<source>Control a synth with MIDI Control Changes (CC) by routing a Patroneo track into a midi plugin that converts notes to CC.</source>
<translation type="obsolete">MIDI Control Changes (CC) werden nicht direkt von Patroneo erzeugt. Route eine Extraspur in ein Konverterplugin, dass aus Pitch und Velocity CC und Value macht.</translation>
</message>
<message>
<location filename="../../mainwindow.py" line="64"/>
<source>The mouse wheel is very powerful: Use it to transpose measures (with or without Shift pressed), it resizes the measure number line, zooms when Ctrl is held down, changes row volumes in the pattern with the Alt key or sounds a preview if pressed on a step.</source>
<translation type="obsolete">Das Mausrad ist sehr wichtig: Es transponiert Takte (mit oder ohne Umschalttaste), verändert die Größe der Taktgruppen, zoomed wenn Strg gedrückt ist, ändert die Lautstärke einer ganzen Reihe zusammen mit der Alt-Taste oder lässt eine Note erklingen wenn man es auf einem Schritt drückt.</translation>
</message>
<message>
<location filename="../../mainwindow.py" line="65"/>
<source>Many elements have context menus with unique functions: Try right clicking on a Step, the Track name or a measure in the song editor.</source>
<translation type="obsolete">Die meisten Bedienelemente haben ein Kontextmenü. Versuche auf alles mit der rechten Maustaste zu klicken: Schritte, Takte, der Spurname etc.</translation>
</message>
</context>
<context>
<name>AskBeforeQuit</name>
<message>
<location filename="../../mainwindow.py" line="258"/>
<source>About to quit but session {} still open</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../mainwindow.py" line="259"/>
<source>Do you want to save?</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../mainwindow.py" line="260"/>
<source>About to quit</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../mainwindow.py" line="269"/>
<source>Don&apos;t Quit</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../mainwindow.py" line="270"/>
<source>Save</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../mainwindow.py" line="271"/>
<source>Discard Changes</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>EventContextMenu</name>
<message>
<location filename="../../pattern_grid.py" line="315"/>
<source>Invert Steps</source>
<translation type="obsolete">Schritte invertieren</translation>
</message>
<message>
<location filename="../../pattern_grid.py" line="316"/>
<source>All Steps On</source>
<translation type="obsolete">Alle Schritte an</translation>
</message>
<message>
<location filename="../../pattern_grid.py" line="317"/>
<source>All Steps Off</source>
<translation type="obsolete">Alles Schritte aus</translation>
</message>
<message>
<location filename="../../pattern_grid.py" line="323"/>
<source>Repeat to here to fill Row</source>
<translation type="obsolete">Reihe mit Wiederholung bis hier befüllen</translation>
</message>
<message>
<location filename="../../pattern_grid.py" line="322"/>
<source>Clear Row</source>
<translation type="obsolete">Reihe löschen</translation>
</message>
<message>
<location filename="../../pattern_grid.py" line="323"/>
<source>Invert Row</source>
<translation type="obsolete">Reihe umkehren</translation>
</message>
<message>
<location filename="../../pattern_grid.py" line="321"/>
<source>Repeat to step {} incl. to fill Row</source>
<translation type="obsolete">Reihe mit Wiederholung bis Schritt {} befüllen</translation>
</message>
</context>
<context>
<name>Launcher</name>
<message>
<location filename="../../opensessioncontroller.py" line="416"/>
<source>Name</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../opensessioncontroller.py" line="417"/>
<source>Description</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../opensessioncontroller.py" line="418"/>
<source>Path</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>LoadedSessionDescription</name>
<message>
<location filename="../../descriptiontextwidget.py" line="43"/>
<source>Double click to add the client nsm-data to write here.
Use it for notes, TODO, references etc</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>MainWindow</name>
<message>
<location filename="../../designer/mainwindow.py" line="191"/>
<source>Add Track</source>
<translation type="obsolete">Neue Spur</translation>
</message>
<message>
<location filename="../../designer/mainwindow.py" line="193"/>
<source>Clone selected Track</source>
<translation type="obsolete">Klone aktuelle Spur</translation>
</message>
<message>
<location filename="../../designer/mainwindow.py" line="192"/>
<source>Home</source>
<translation type="obsolete">Zum Anfang</translation>
</message>
</context>
<context>
<name>Menu</name>
<message>
<location filename="../../mainwindow.py" line="71"/>
<source>Convert Grouping</source>
<translation type="obsolete">Gruppierung umwandeln</translation>
</message>
<message>
<location filename="../../mainwindow.py" line="71"/>
<source>Change step-grouping but keep your music the same</source>
<translation type="obsolete">Taktartaufspaltung durch Gruppierung umwandeln, versucht die Musik gleich klingen zu lassen</translation>
</message>
</context>
<context>
<name>OpenSession</name>
<message>
<location filename="../../opensessioncontroller.py" line="86"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../opensessioncontroller.py" line="88"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../opensessioncontroller.py" line="91"/>
<source>not saved</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../opensessioncontroller.py" line="93"/>
<source>clean</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../opensessioncontroller.py" line="116"/>
<source>(command not found)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../opensessioncontroller.py" line="139"/>
<source>Name</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../opensessioncontroller.py" line="140"/>
<source>Label</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../opensessioncontroller.py" line="141"/>
<source>Status</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../opensessioncontroller.py" line="142"/>
<source>Visible</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../opensessioncontroller.py" line="143"/>
<source>Changes</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../opensessioncontroller.py" line="144"/>
<source>ID</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>PlaybackControls</name>
<message>
<location filename="../../mainwindow.py" line="87"/>
<source>[Space] Play / Pause</source>
<translation type="obsolete">[Leertaste] Play / Pause</translation>
</message>
<message>
<location filename="../../mainwindow.py" line="94"/>
<source>[L] Loop current Measure</source>
<translation type="obsolete">[L] Aktueller Takt in Schleife spielen</translation>
</message>
<message>
<location filename="../../mainwindow.py" line="111"/>
<source>[Home] Jump to Start</source>
<translation type="obsolete">[Pos1] Springe zum Anfang</translation>
</message>
</context>
<context>
<name>ProjectNameWidget</name>
<message>
<location filename="../../projectname.py" line="81"/>
<source>Name must not be empty.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../projectname.py" line="83"/>
<source>Name must be a relative path.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../projectname.py" line="85"/>
<source>Moving to parent directory not allowed.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../projectname.py" line="87"/>
<source>Writing in this directory is not permitted.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../projectname.py" line="89"/>
<source>Name is already in use.</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>PromptWidget</name>
<message>
<location filename="../../addclientprompt.py" line="55"/>
<source>Type in the name of an executable file on your system.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../addclientprompt.py" line="57"/>
<source>No program database found. Please update through Control menu.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../addclientprompt.py" line="65"/>
<source>Command not accepted!&lt;br&gt;Parameters, --switches and relative paths are not allowed.&lt;br&gt;Use nsm-proxy or write a starter-script instead.</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>Scale</name>
<message>
<location filename="../../pattern_grid.py" line="659"/>
<source>Major</source>
<translation type="obsolete">Dur</translation>
</message>
<message>
<location filename="../../pattern_grid.py" line="660"/>
<source>Minor</source>
<translation type="obsolete">Moll</translation>
</message>
<message>
<location filename="../../pattern_grid.py" line="661"/>
<source>Dorian</source>
<translation type="obsolete">Dorisch</translation>
</message>
<message>
<location filename="../../pattern_grid.py" line="662"/>
<source>Phrygian</source>
<translation type="obsolete">Phrygisch</translation>
</message>
<message>
<location filename="../../pattern_grid.py" line="663"/>
<source>Lydian</source>
<translation type="obsolete">Lydisch</translation>
</message>
<message>
<location filename="../../pattern_grid.py" line="664"/>
<source>Mixolydian</source>
<translation type="obsolete">Mixolydisch</translation>
</message>
<message>
<location filename="../../pattern_grid.py" line="665"/>
<source>Locrian</source>
<translation type="obsolete">Lokrisch</translation>
</message>
<message>
<location filename="../../pattern_grid.py" line="666"/>
<source>Blues</source>
<translation type="obsolete">Blues</translation>
</message>
<message>
<location filename="../../pattern_grid.py" line="667"/>
<source>Hollywood</source>
<translation type="obsolete">Hollywood</translation>
</message>
<message>
<location filename="../../pattern_grid.py" line="670"/>
<source>English</source>
<translation type="obsolete">Englisch</translation>
</message>
<message>
<location filename="../../pattern_grid.py" line="671"/>
<source>Lilypond</source>
<translation type="obsolete">Lilypond</translation>
</message>
<message>
<location filename="../../pattern_grid.py" line="672"/>
<source>German</source>
<translation type="obsolete">Deutsch</translation>
</message>
<message>
<location filename="../../pattern_grid.py" line="673"/>
<source>Drums GM</source>
<translation type="obsolete">Drums GM</translation>
</message>
<message>
<location filename="../../pattern_grid.py" line="668"/>
<source>Chromatic</source>
<translation type="obsolete">Chromatisch</translation>
</message>
</context>
<context>
<name>SessionTree</name>
<message>
<location filename="../../sessiontreecontroller.py" line="144"/>
<source>Name</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../sessiontreecontroller.py" line="145"/>
<source>Last Save</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../sessiontreecontroller.py" line="146"/>
<source>Clients</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../sessiontreecontroller.py" line="147"/>
<source>Size</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../sessiontreecontroller.py" line="148"/>
<source>Symlinks</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../sessiontreecontroller.py" line="149"/>
<source>Path</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../sessiontreecontroller.py" line="246"/>
<source>About to delete Session {}</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../sessiontreecontroller.py" line="245"/>
<source>All files in the project directory will be irreversibly deleted.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../sessiontreecontroller.py" line="254"/>
<source>Keep Session</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../sessiontreecontroller.py" line="255"/>
<source>Delete!</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../sessiontreecontroller.py" line="271"/>
<source>Copy Session</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../sessiontreecontroller.py" line="274"/>
<source>Force Lock Removal</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../sessiontreecontroller.py" line="276"/>
<source>Rename Session</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../sessiontreecontroller.py" line="278"/>
<source>Delete Session</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>SongStructure</name>
<message>
<location filename="../../songeditor.py" line="325"/>
<source>Insert {} empty measures before no. {}</source>
<translation type="obsolete">{} leere Takte vor Takt {} einfügen</translation>
</message>
<message>
<location filename="../../songeditor.py" line="326"/>
<source>Delete {} measures from no. {} on</source>
<translation type="obsolete">Lösche {} Takte von Takt {} beginnend</translation>
</message>
<message>
<location filename="../../songeditor.py" line="328"/>
<source>Insert empty group before this one</source>
<translation type="obsolete">Leere Taktgruppe vor dieser einfügen</translation>
</message>
<message>
<location filename="../../songeditor.py" line="329"/>
<source>Delete whole group</source>
<translation type="obsolete">Lösche diese Taktgruppe</translation>
</message>
<message>
<location filename="../../songeditor.py" line="330"/>
<source>Duplicate whole group including measures</source>
<translation type="obsolete">Verdopple diese Taktgruppe inkl. Struktur</translation>
</message>
<message>
<location filename="../../songeditor.py" line="331"/>
<source>Clear all group transpositions</source>
<translation type="obsolete">Setze alle Transpositionen dieser Taktgruppe zurück</translation>
</message>
</context>
<context>
<name>TimeSignature</name>
<message>
<location filename="../../mainwindow.py" line="343"/>
<source>Whole</source>
<translation type="obsolete">Ganze</translation>
</message>
<message>
<location filename="../../mainwindow.py" line="344"/>
<source>Half</source>
<translation type="obsolete">Halbe</translation>
</message>
<message>
<location filename="../../mainwindow.py" line="345"/>
<source>Quarter</source>
<translation type="obsolete">Viertel</translation>
</message>
<message>
<location filename="../../mainwindow.py" line="346"/>
<source>Eigth</source>
<translation type="obsolete">Achtel</translation>
</message>
<message>
<location filename="../../mainwindow.py" line="347"/>
<source>Sixteenth</source>
<translation type="obsolete">Sechzehntel</translation>
</message>
</context>
<context>
<name>Timeline</name>
<message>
<location filename="../../timeline.py" line="65"/>
<source>Click to set playback position. Scroll with mousewheel to adjust measure grouping.</source>
<translation type="obsolete">Klicken um die Wiedergabeposition zu ändern. Mausrad um die Taktgruppen zu ändern.</translation>
</message>
</context>
<context>
<name>Toolbar</name>
<message>
<location filename="../../mainwindow.py" line="256"/>
<source>BPM/Tempo: </source>
<translation type="obsolete">BPM/Tempo: </translation>
</message>
<message>
<location filename="../../mainwindow.py" line="257"/>
<source>Deactivate to beccome JACK Transport Slave. Activate for Master.</source>
<translation type="obsolete">Aus: JACK Transport Slave. An: JACK Master (eigenes Tempo).</translation>
</message>
<message>
<location filename="../../mainwindow.py" line="310"/>
<source>Overall length of the song</source>
<translation type="obsolete">Länge des Stückes in Takten</translation>
</message>
<message>
<location filename="../../mainwindow.py" line="327"/>
<source>Please read the manual!</source>
<translation type="obsolete">Bitte im Handbuch nachlesen!</translation>
</message>
<message>
<location filename="../../mainwindow.py" line="354"/>
<source>Length of the pattern (bottom part of the program)</source>
<translation type="obsolete">Länge des Musters in Schritten (untere Hälfte des Programms)</translation>
</message>
<message>
<location filename="../../mainwindow.py" line="358"/>
<source>How long is each main step</source>
<translation type="obsolete">Welchen Notenwert repräsentiert ein Schritt</translation>
</message>
<message>
<location filename="../../mainwindow.py" line="340"/>
<source>Convert Grouping</source>
<translation type="obsolete">Gruppierung umwandeln</translation>
</message>
<message>
<location filename="../../mainwindow.py" line="342"/>
<source>Change step grouping but keep your music the same</source>
<translation type="obsolete">Taktartaufspaltung durch Gruppierung umwandeln, versucht die Musik gleich klingen zu lassen</translation>
</message>
<message>
<location filename="../../mainwindow.py" line="394"/>
<source>Clone Selected Track</source>
<translation type="obsolete">Klone ausgewählte Spur</translation>
</message>
<message>
<location filename="../../mainwindow.py" line="395"/>
<source>Use this! Create a new track that inherits everything but the content from the original. Already jack connected!</source>
<translation type="obsolete">Das hier benutzen! Neue Spur, die alle Eigenschaften außer der Musik selbst vom Original erbt. Ist bereits in JACK verbunden!</translation>
</message>
<message>
<location filename="../../mainwindow.py" line="396"/>
<source>Add Track</source>
<translation type="obsolete">Neue Spur</translation>
</message>
<message>
<location filename="../../mainwindow.py" line="397"/>
<source>Add a complete empty track that needs to be connected to an instrument manually.</source>
<translation type="obsolete">Eine neue, leere Spur, bei der man noch per Hand ein Instrument mit JACK verbinden muss.</translation>
</message>
<message>
<location filename="../../mainwindow.py" line="402"/>
<source>Measures per Track: </source>
<translation type="obsolete">Takte pro Spur: </translation>
</message>
<message>
<location filename="../../mainwindow.py" line="408"/>
<source>Steps per Pattern:</source>
<translation type="obsolete">Schritte pro Takt:</translation>
</message>
<message>
<location filename="../../mainwindow.py" line="413"/>
<source> in groups of: </source>
<translation type="obsolete"> gruppiert in je: </translation>
</message>
<message>
<location filename="../../mainwindow.py" line="418"/>
<source> so that each group produces a:</source>
<translation type="obsolete"> und jede Gruppe ergibt eine:</translation>
</message>
</context>
<context>
<name>TrackLabel</name>
<message>
<location filename="../../songeditor.py" line="646"/>
<source>grab and move to reorder tracks</source>
<translation type="obsolete">mit der maus halten und ziehen um Spuren anzuordnen</translation>
</message>
<message>
<location filename="../../songeditor.py" line="651"/>
<source>change track color</source>
<translation type="obsolete">setze Farbe der Spur</translation>
</message>
</context>
<context>
<name>TrackLabelContext</name>
<message>
<location filename="../../songeditor.py" line="584"/>
<source>Invert Measures</source>
<translation type="obsolete">Taktauswahl umdrehen</translation>
</message>
<message>
<location filename="../../songeditor.py" line="585"/>
<source>All Measures On</source>
<translation type="obsolete">Alle Takte anschalten</translation>
</message>
<message>
<location filename="../../songeditor.py" line="586"/>
<source>All Measures Off</source>
<translation type="obsolete">Alle Takte ausschalten</translation>
</message>
<message>
<location filename="../../songeditor.py" line="587"/>
<source>Clone this Track</source>
<translation type="obsolete">Spur klonen</translation>
</message>
<message>
<location filename="../../songeditor.py" line="588"/>
<source>Delete Track</source>
<translation type="obsolete">Spur löschen</translation>
</message>
<message>
<location filename="../../songeditor.py" line="595"/>
<source>Merge/Copy from</source>
<translation type="obsolete">Übernimm Struktur von</translation>
</message>
<message>
<location filename="../../songeditor.py" line="605"/>
<source>Merge/Copy Measure-Structure from</source>
<translation type="obsolete">Übernimm und ergänze Struktur von</translation>
</message>
<message>
<location filename="../../songeditor.py" line="619"/>
<source>Replace Pattern with</source>
<translation type="obsolete">Ersetze Noten des Taktes durch</translation>
</message>
</context>
<context>
<name>TransposeControls</name>
<message>
<location filename="../../pattern_grid.py" line="685"/>
<source>+Half Tone</source>
<translation type="obsolete">+Halbton</translation>
</message>
<message>
<location filename="../../pattern_grid.py" line="687"/>
<source>Transpose the whole scale up a half tone (+1 midi note)</source>
<translation type="obsolete">Transponiere die Tonleiter einen Halbton aufwärts (+1 MIDI Tonhöhe)</translation>
</message>
<message>
<location filename="../../pattern_grid.py" line="690"/>
<source>-Half Tone</source>
<translation type="obsolete">-Halbton</translation>
</message>
<message>
<location filename="../../pattern_grid.py" line="692"/>
<source>Transpose the whole scale down a half tone (-1 midi note)</source>
<translation type="obsolete">Transponiere die Tonleiter einen Halbton abwärts (-1 MIDI Tonhöhe)</translation>
</message>
<message>
<location filename="../../pattern_grid.py" line="695"/>
<source>+Octave</source>
<translation type="obsolete">+Oktave</translation>
</message>
<message>
<location filename="../../pattern_grid.py" line="697"/>
<source>Transpose the whole scale up an octave (+12 midi notes)</source>
<translation type="obsolete">Transponiere die Tonleiter eine Oktave aufwärts (+12 MIDI Tonhöhe)</translation>
</message>
<message>
<location filename="../../pattern_grid.py" line="700"/>
<source>-Octave</source>
<translation type="obsolete">-Oktave</translation>
</message>
<message>
<location filename="../../pattern_grid.py" line="702"/>
<source>Transpose the whole scale down an octave (-12 midi notes)</source>
<translation type="obsolete">Transponiere die Tonleiter eine Oktave abwärts (-12 MIDI Tonhöhe)</translation>
</message>
<message>
<location filename="../../pattern_grid.py" line="709"/>
<source>Set Scale to:</source>
<translation type="obsolete">Benutze Tonleiter:</translation>
</message>
<message>
<location filename="../../pattern_grid.py" line="711"/>
<source>Take the bottom note and build a predefined scale from it upwards.</source>
<translation type="obsolete">Ändere die Tonleiter des Musters auf die Ausgewählte. Referenzton ist die unterste Reihe des Musters.</translation>
</message>
<message>
<location filename="../../pattern_grid.py" line="717"/>
<source>Set Notenames to:</source>
<translation type="obsolete">Benutze Notennamen:</translation>
</message>
<message>
<location filename="../../pattern_grid.py" line="719"/>
<source>Use this scheme as note names.</source>
<translation type="obsolete">Use this scheme as note names.</translation>
</message>
</context>
<context>
<name>TrayIcon</name>
<message>
<location filename="../../systemtray.py" line="65"/>
<source>Hide/Show Argodejo</source>
<translation>Verstecke/Zeige Argodejo</translation>
</message>
<message>
<location filename="../../systemtray.py" line="78"/>
<source>Save &amp;&amp; Quit Argodejo</source>
<translation>Speichern und Argodejo Beenden</translation>
</message>
<message>
<location filename="../../systemtray.py" line="79"/>
<source>Abort &amp;&amp; Quit Argodejo</source>
<translation>Abbrechen und Argodejo Beenden</translation>
</message>
<message>
<location filename="../../systemtray.py" line="85"/>
<source>Quit </source>
<translation>Beenden</translation>
</message>
</context>
<context>
<name>VelocityControls</name>
<message>
<location filename="../../pattern_grid.py" line="875"/>
<source>+Velocity</source>
<translation type="obsolete">+Velocity</translation>
</message>
<message>
<location filename="../../pattern_grid.py" line="878"/>
<source>Make everything louder. Hover and mousewheel up/down to go in steps of 10.</source>
<translation type="obsolete">Alle Töne lauter machen. Mit dem Mauszeiger über dem Knopf bleiben und das Mausrad auf oder ab bewegen für 10er Schritte.</translation>
</message>
<message>
<location filename="../../pattern_grid.py" line="881"/>
<source>-Velocity</source>
<translation type="obsolete">-Velocity</translation>
</message>
<message>
<location filename="../../pattern_grid.py" line="884"/>
<source>Make everything softer. Hover and mousewheel up/down to go in steps of 10.</source>
<translation type="obsolete">Alle Töne leiser machen. Mit dem Mauszeiger über dem Knopf bleiben und das Mausrad auf oder ab bewegen für 10er Schritte.</translation>
</message>
</context>
<context>
<name>convertSubdivisionsSubMenu</name>
<message>
<location filename="../../mainwindow.py" line="458"/>
<source>New Grouping</source>
<translation type="obsolete">Neue Gruppierung</translation>
</message>
<message>
<location filename="../../mainwindow.py" line="461"/>
<source>Do nothing</source>
<translation type="obsolete">Nichts machen</translation>
</message>
<message>
<location filename="../../mainwindow.py" line="461"/>
<source>Delete wrong steps</source>
<translation type="obsolete">Falsche Schritte löschen</translation>
</message>
<message>
<location filename="../../mainwindow.py" line="461"/>
<source>Merge wrong steps</source>
<translation type="obsolete">Falsche Schritte mit einbinden</translation>
</message>
<message>
<location filename="../../mainwindow.py" line="466"/>
<source>If not possible</source>
<translation type="obsolete">Falls unmöglich</translation>
</message>
</context>
<context>
<name>mainWindow</name>
<message>
<location filename="../../mainwindow.py" line="159"/>
<source>Argodejo ready</source>
<translation>Argodejo bereit</translation>
</message>
<message>
<location filename="../../mainwindow.py" line="194"/>
<source>Another GUI tried to launch.</source>
<translation>Es wurde versucht eine weitere GUI zu starten.</translation>
</message>
<message>
<location filename="../../mainwindow.py" line="221"/>
<source>Updating Program Database.
Thank you for your patience.</source>
<translation>Programmdatenbank wird aktualisiert.
Vielen Dank für ihre Geduld.</translation>
</message>
</context>
</TS>

5
qtgui/resources/translations/update.sh

@ -0,0 +1,5 @@
#!/bin/sh
set -e
pylupdate5 config.pro
echo "linguist-qt5 de.ts"

5
qtgui/systemtray.py

@ -31,10 +31,13 @@ from PyQt5 import QtCore, QtGui, QtWidgets
#Engine
import engine.api as api #This loads the engine and starts a session.
#QtGui
from .resources import *
class SystemTray(QtWidgets.QSystemTrayIcon):
def __init__(self, mainWindow):
super().__init__(QtGui.QIcon("icon.png"))
super().__init__(QtGui.QIcon(":icon.png"))
self.mainWindow = mainWindow
self.available = self.isSystemTrayAvailable()
self.show()

Loading…
Cancel
Save