Switch project so src layout

This will make it possible to build pip packages.
Add a make file to compile UI files and build mac and win applications.
This commit is contained in:
2023-01-04 18:12:59 +01:00
parent 2400bd6951
commit 3f2f3e0478
73 changed files with 2606 additions and 2584 deletions

2
.idea/misc.xml generated
View File

@@ -4,7 +4,7 @@
<option name="languageLevel" value="ES6" /> <option name="languageLevel" value="ES6" />
</component> </component>
<component name="ProjectPlainTextFileTypeManager"> <component name="ProjectPlainTextFileTypeManager">
<file url="file://$PROJECT_DIR$/revpicommander/locale/revpicommander_de.ts" /> <file url="file://$PROJECT_DIR$/src/revpicommander/locale/revpicommander_de.ts" />
</component> </component>
<component name="ProjectRootManager" version="2" project-jdk-name="Python 3.9 (revpicommander)" project-jdk-type="Python SDK" /> <component name="ProjectRootManager" version="2" project-jdk-name="Python 3.9 (revpicommander)" project-jdk-type="Python SDK" />
<component name="PythonCompatibilityInspectionAdvertiser"> <component name="PythonCompatibilityInspectionAdvertiser">

View File

@@ -2,9 +2,7 @@
<module type="PYTHON_MODULE" version="4"> <module type="PYTHON_MODULE" version="4">
<component name="NewModuleRootManager"> <component name="NewModuleRootManager">
<content url="file://$MODULE_DIR$"> <content url="file://$MODULE_DIR$">
<sourceFolder url="file://$MODULE_DIR$/include" isTestSource="false" /> <sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/revpicommander" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/lib/revpimodio2" isTestSource="false" />
<excludeFolder url="file://$MODULE_DIR$/venv" /> <excludeFolder url="file://$MODULE_DIR$/venv" />
</content> </content>
<orderEntry type="jdk" jdkName="Python 3.9 (revpicommander)" jdkType="Python SDK" /> <orderEntry type="jdk" jdkName="Python 3.9 (revpicommander)" jdkType="Python SDK" />

7
.idea/vcs.xml generated
View File

@@ -1,5 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<project version="4"> <project version="4">
<component name="CommitMessageInspectionProfile">
<profile version="1.0">
<inspection_tool class="BodyLimit" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="SubjectBodySeparation" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="SubjectLimit" enabled="true" level="WARNING" enabled_by_default="true" />
</profile>
</component>
<component name="VcsDirectoryMappings"> <component name="VcsDirectoryMappings">
<mapping directory="$PROJECT_DIR$" vcs="Git" /> <mapping directory="$PROJECT_DIR$" vcs="Git" />
</component> </component>

View File

@@ -1,8 +1,7 @@
include MANIFEST.in
include stdeb.cfg
recursive-include data * recursive-include data *
recursive-include include *.py
recursive-include lib *.py
recursive-include revpicommander *.py *.qm recursive-include revpicommander *.py *.qm
global-exclude *.pyc global-exclude *.pyc
include LICENSE.txt include LICENSE.txt
include MANIFEST.in
include README.md
include stdeb.cfg

38
Makefile Normal file
View File

@@ -0,0 +1,38 @@
SHELL := bash
build_ui:
cd ui_dev && for ui_file in *.ui; do \
file_name=$${ui_file%.ui}; \
pyuic5 $${ui_file} -o ../src/revpicommander/ui/$${file_name}_ui.py -x --from-imports; \
echo $${file_name}; \
done
cd ui_dev && for rc_file in *.qrc; do \
file_name=$${rc_file%.qrc}; \
pyrcc5 $${rc_file} -o ../src/revpicommander/ui/$${file_name}_rc.py; \
echo $${file_name}; \
done
update_translation:
pylupdate5 translate.pro
installer_mac:
pyinstaller -n "RevPi Commander" \
--add-data="src/revpicommander/locale:locale" \
--add-data="data/revpicommander.icns:." \
--icon=data/revpicommander.icns \
--noconfirm \
--clean \
--onedir \
--windowed \
src/revpicommander/__main__.py
installer_win:
pyinstaller -n "RevPi Commander" \
--add-data="src\\revpicommander\\locale;.\\locale" \
--add-data="data\\revpicommander.ico;." \
--icon=data\\revpicommander.ico \
--noconfirm \
--clean \
--onedir \
--windowed \
src/revpicommander\__main__.py

BIN
data/revpicommander.icns Normal file

Binary file not shown.

View File

@@ -1,7 +0,0 @@
@echo off
pyinstaller --noconfirm --clean -D --windowed ^
--add-data="data\\revpicommander.ico;." ^
--add-data="revpicommander\\locale;.\\locale" ^
--icon=data\\revpicommander.ico ^
--path=include ^
revpicommander\revpicommander.py

View File

@@ -4,33 +4,22 @@ __author__ = "Sven Sager"
__copyright__ = "Copyright (C) 2018 Sven Sager" __copyright__ = "Copyright (C) 2018 Sven Sager"
__license__ = "LGPLv3" __license__ = "LGPLv3"
import distutils.command.install_egg_info from setuptools import setup
from distutils.core import setup
from glob import glob
class MyEggInfo(distutils.command.install_egg_info.install_egg_info):
u"""Disable egg_info installation, seems pointless for a non-library."""
def run(self):
u"""just pass egg_info."""
pass
setup( setup(
version="0.9.3b", version="0.9.10rc1",
python_requires="~=3.4", # python_requires="~=3.4",
requires=["PyQt5", "revpimodio2", "zeroconf"], install_requires=["PyQt5", "revpimodio2", "zeroconf"],
scripts=["data/revpicommander"], entry_points={
data_files=[ 'console_scripts': [
("share/applications", ["data/revpicommander.desktop"]), 'revpicommander = revpicommander.revpicommander:main',
("share/icons/hicolor/32x32/apps", ["data/revpicommander.png"]),
("share/revpicommander", glob("revpicommander/*.py")),
("share/revpicommander/ui", glob("include/ui/*.py")),
("share/revpicommander/locale/", glob("revpicommander/locale/*.qm")),
], ],
'gui_scripts': [
'RevPiCommander = revpicommander.revpicommander:main',
],
},
# Additional meta-data # Additional meta-data
name="revpicommander", name="revpicommander",
@@ -51,5 +40,4 @@ setup(
"Operating System :: POSIX :: Linux", "Operating System :: POSIX :: Linux",
], ],
license="GPLv3", license="GPLv3",
cmdclass={"install_egg_info": MyEggInfo},
) )

View File

@@ -0,0 +1,5 @@
# -*- coding: utf-8 -*-
"""Package: RevPiCommander."""
__author__ = "Sven Sager"
__copyright__ = "Copyright (C) 2023 Sven Sager"
__license__ = "GPLv3"

View File

@@ -0,0 +1,22 @@
# -*- coding: utf-8 -*-
"""Start main application of this package."""
__author__ = "Sven Sager"
__copyright__ = "Copyright (C) 2023 Sven Sager"
__license__ = "GPLv3"
# If we are running from a wheel, add the wheel to sys.path
if __package__ == "":
from os.path import dirname
from sys import path
# __file__ is package-*.whl/package/__main__.py
# Resulting path is the name of the wheel itself
package_path = dirname(dirname(__file__))
path.insert(0, package_path)
if __name__ == "__main__":
import sys
from revpicommander.revpicommander import main
# Run the main application of this package
sys.exit(main())

View File

@@ -1,15 +1,15 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
"""Manager for ACL lists.""" """Manager for ACL lists."""
__author__ = "Sven Sager" __author__ = "Sven Sager"
__copyright__ = "Copyright (C) 2018 Sven Sager" __copyright__ = "Copyright (C) 2023 Sven Sager"
__license__ = "GPLv3" __license__ = "GPLv3"
from re import compile from re import compile
from PyQt5 import QtCore, QtGui, QtWidgets from PyQt5 import QtCore, QtGui, QtWidgets
from helper import WidgetData from .helper import WidgetData
from ui.aclmanager_ui import Ui_diag_aclmanager from .ui.aclmanager_ui import Ui_diag_aclmanager
class AclManager(QtWidgets.QDialog, Ui_diag_aclmanager): class AclManager(QtWidgets.QDialog, Ui_diag_aclmanager):

View File

@@ -1,7 +1,7 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
"""Revolution Pi search with zeroconf.""" """Revolution Pi search with zeroconf."""
__author__ = "Sven Sager" __author__ = "Sven Sager"
__copyright__ = "Copyright (C) 2020 Sven Sager" __copyright__ = "Copyright (C) 2023 Sven Sager"
__license__ = "GPLv3" __license__ = "GPLv3"
import webbrowser import webbrowser
@@ -12,10 +12,9 @@ from sys import platform
from PyQt5 import QtCore, QtGui, QtWidgets from PyQt5 import QtCore, QtGui, QtWidgets
from zeroconf import IPVersion, ServiceBrowser, Zeroconf from zeroconf import IPVersion, ServiceBrowser, Zeroconf
import helper from . import proginit as pi
import proginit as pi from .helper import WidgetData, settings
from helper import WidgetData from .ui.avahisearch_ui import Ui_diag_search
from ui.avahisearch_ui import Ui_diag_search
class AvahiSearchThread(QtCore.QThread): class AvahiSearchThread(QtCore.QThread):
@@ -103,8 +102,8 @@ class AvahiSearch(QtWidgets.QDialog, Ui_diag_search):
self.btn_connect.setEnabled(False) self.btn_connect.setEnabled(False)
self.btn_save.setEnabled(False) self.btn_save.setEnabled(False)
self.restoreGeometry(helper.settings.value("avahisearch/geo", b'')) self.restoreGeometry(settings.value("avahisearch/geo", b''))
column_sizes = helper.settings.value("avahisearch/column_sizes", [], type=list) column_sizes = settings.value("avahisearch/column_sizes", [], type=list)
if len(column_sizes) == self.tb_revpi.columnCount(): if len(column_sizes) == self.tb_revpi.columnCount():
for i in range(self.tb_revpi.columnCount()): for i in range(self.tb_revpi.columnCount()):
self.tb_revpi.setColumnWidth(i, int(column_sizes[i])) self.tb_revpi.setColumnWidth(i, int(column_sizes[i]))
@@ -130,15 +129,15 @@ class AvahiSearch(QtWidgets.QDialog, Ui_diag_search):
"""Load existing connections to show hostname of existing ip addresses""" """Load existing connections to show hostname of existing ip addresses"""
self.known_hosts.clear() self.known_hosts.clear()
for i in range(helper.settings.beginReadArray("connections")): for i in range(settings.beginReadArray("connections")):
helper.settings.setArrayIndex(i) settings.setArrayIndex(i)
name = helper.settings.value("name", type=str) name = settings.value("name", type=str)
folder = helper.settings.value("folder", type=str) folder = settings.value("folder", type=str)
address = helper.settings.value("address", type=str) address = settings.value("address", type=str)
self.known_hosts[address] = "{0}/{1}".format(folder, name) if folder else name self.known_hosts[address] = "{0}/{1}".format(folder, name) if folder else name
helper.settings.endArray() settings.endArray()
def _restart_search(self) -> None: def _restart_search(self) -> None:
"""Clean up and restart search thread.""" """Clean up and restart search thread."""
@@ -169,12 +168,12 @@ class AvahiSearch(QtWidgets.QDialog, Ui_diag_search):
selected_address = item.data(WidgetData.address) selected_address = item.data(WidgetData.address)
selected_port = item.data(WidgetData.port) selected_port = item.data(WidgetData.port)
i = 0 i = 0
for i in range(helper.settings.beginReadArray("connections")): for i in range(settings.beginReadArray("connections")):
helper.settings.setArrayIndex(i) settings.setArrayIndex(i)
name = helper.settings.value("name", type=str) name = settings.value("name", type=str)
address = helper.settings.value("address", type=str) address = settings.value("address", type=str)
port = helper.settings.value("port", type=int) port = settings.value("port", type=int)
if address.lower() == selected_address.lower() and port == selected_port: if address.lower() == selected_address.lower() and port == selected_port:
if not no_warn: if not no_warn:
QtWidgets.QMessageBox.information( QtWidgets.QMessageBox.information(
@@ -183,19 +182,19 @@ class AvahiSearch(QtWidgets.QDialog, Ui_diag_search):
"connection list as '{0}'." "connection list as '{0}'."
).format(name) ).format(name)
) )
helper.settings.endArray() settings.endArray()
return i return i
helper.settings.endArray() settings.endArray()
helper.settings.beginWriteArray("connections") settings.beginWriteArray("connections")
helper.settings.setArrayIndex(i + 1) settings.setArrayIndex(i + 1)
helper.settings.setValue("address", selected_address) settings.setValue("address", selected_address)
helper.settings.setValue("folder", folder_name) settings.setValue("folder", folder_name)
helper.settings.setValue("name", selected_name) settings.setValue("name", selected_name)
helper.settings.setValue("port", selected_port) settings.setValue("port", selected_port)
helper.settings.endArray() settings.endArray()
if not no_warn: if not no_warn:
QtWidgets.QMessageBox.information( QtWidgets.QMessageBox.information(
@@ -208,8 +207,8 @@ class AvahiSearch(QtWidgets.QDialog, Ui_diag_search):
return i + 1 return i + 1
def closeEvent(self, a0: QtGui.QCloseEvent) -> None: def closeEvent(self, a0: QtGui.QCloseEvent) -> None:
helper.settings.setValue("avahisearch/geo", self.saveGeometry()) settings.setValue("avahisearch/geo", self.saveGeometry())
helper.settings.setValue("avahisearch/column_sizes", [ settings.setValue("avahisearch/column_sizes", [
self.tb_revpi.columnWidth(i) self.tb_revpi.columnWidth(i)
for i in range(self.tb_revpi.columnCount()) for i in range(self.tb_revpi.columnCount())
]) ])

View File

@@ -1,14 +1,14 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
"""File transfer system to handle QThreads.""" """File transfer system to handle QThreads."""
__author__ = "Sven Sager" __author__ = "Sven Sager"
__copyright__ = "Copyright (C) 2021 Sven Sager" __copyright__ = "Copyright (C) 2023 Sven Sager"
__license__ = "GPLv3" __license__ = "GPLv3"
from logging import getLogger from logging import getLogger
from PyQt5 import QtCore, QtGui, QtWidgets from PyQt5 import QtCore, QtGui, QtWidgets
from ui.backgroundworker_ui import Ui_diag_backgroundworker from .ui.backgroundworker_ui import Ui_diag_backgroundworker
log = getLogger() log = getLogger()

View File

@@ -1,7 +1,7 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
"""Debug control widget to append to main window.""" """Debug control widget to append to main window."""
__author__ = "Sven Sager" __author__ = "Sven Sager"
__copyright__ = "Copyright (C) 2020 Sven Sager" __copyright__ = "Copyright (C) 2023 Sven Sager"
__license__ = "GPLv3" __license__ = "GPLv3"
import pickle import pickle
@@ -9,10 +9,10 @@ from xmlrpc.client import Binary, Fault, MultiCall, MultiCallIterator
from PyQt5 import QtCore, QtWidgets from PyQt5 import QtCore, QtWidgets
import helper from .import helper
import proginit as pi from . import proginit as pi
from debugios import DebugIos from .debugios import DebugIos
from ui.debugcontrol_ui import Ui_wid_debugcontrol from .ui.debugcontrol_ui import Ui_wid_debugcontrol
class PsValues(QtCore.QThread): class PsValues(QtCore.QThread):

View File

@@ -1,16 +1,16 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
"""One device of the Revolution Pi.""" """One device of the Revolution Pi."""
__author__ = "Sven Sager" __author__ = "Sven Sager"
__copyright__ = "Copyright (C) 2020 Sven Sager" __copyright__ = "Copyright (C) 2023 Sven Sager"
__license__ = "GPLv3" __license__ = "GPLv3"
import struct import struct
from PyQt5 import QtCore, QtGui, QtWidgets from PyQt5 import QtCore, QtGui, QtWidgets
import helper from . import helper
import proginit as pi from . import proginit as pi
from ui.debugios_ui import Ui_win_debugios from .ui.debugios_ui import Ui_win_debugios
class DebugIos(QtWidgets.QMainWindow, Ui_win_debugios): class DebugIos(QtWidgets.QMainWindow, Ui_win_debugios):

View File

@@ -1,7 +1,7 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
"""Helper functions for this application.""" """Helper functions for this application."""
__author__ = "Sven Sager" __author__ = "Sven Sager"
__copyright__ = "Copyright (C) 2020 Sven Sager" __copyright__ = "Copyright (C) 2023 Sven Sager"
__license__ = "GPLv3" __license__ = "GPLv3"
import pickle import pickle
@@ -16,7 +16,7 @@ from xmlrpc.client import Binary, ServerProxy
from PyQt5 import QtCore from PyQt5 import QtCore
import proginit as pi from . import proginit as pi
class WidgetData(IntEnum): class WidgetData(IntEnum):

View File

@@ -2,13 +2,13 @@
"""Options for MQTT system.""" """Options for MQTT system."""
__author__ = "Sven Sager" __author__ = "Sven Sager"
__copyright__ = "Copyright (C) 2018 Sven Sager" __copyright__ = "Copyright (C) 2023 Sven Sager"
__license__ = "GPLv3" __license__ = "GPLv3"
from PyQt5 import QtGui, QtWidgets from PyQt5 import QtGui, QtWidgets
import proginit as pi from . import proginit as pi
from ui.mqttmanager_ui import Ui_diag_mqtt from .ui.mqttmanager_ui import Ui_diag_mqtt
class MqttManager(QtWidgets.QDialog, Ui_diag_mqtt): class MqttManager(QtWidgets.QDialog, Ui_diag_mqtt):

View File

@@ -1,7 +1,7 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
"""Global program initialization.""" """Global program initialization."""
__author__ = "Sven Sager" __author__ = "Sven Sager"
__copyright__ = "Copyright (C) 2019 Sven Sager" __copyright__ = "Copyright (C) 2023 Sven Sager"
__license__ = "LGPLv3" __license__ = "LGPLv3"
import logging import logging

View File

@@ -12,18 +12,18 @@ from os.path import basename, dirname, join
from PyQt5 import QtCore, QtGui, QtWidgets from PyQt5 import QtCore, QtGui, QtWidgets
import helper from . import helper
import proginit as pi from . import proginit as pi
import revpilogfile from . import revpilogfile
from avahisearch import AvahiSearch from .avahisearch import AvahiSearch
from debugcontrol import DebugControl from .debugcontrol import DebugControl
from revpifiles import RevPiFiles from .revpifiles import RevPiFiles
from revpiinfo import RevPiInfo from .revpiinfo import RevPiInfo
from revpioption import RevPiOption from .revpioption import RevPiOption
from revpiplclist import RevPiPlcList from .revpiplclist import RevPiPlcList
from revpiprogram import RevPiProgram from .revpiprogram import RevPiProgram
from simulator import Simulator from .simulator import Simulator
from ui.revpicommander_ui import Ui_win_revpicommander from .ui.revpicommander_ui import Ui_win_revpicommander
class RevPiCommander(QtWidgets.QMainWindow, Ui_win_revpicommander): class RevPiCommander(QtWidgets.QMainWindow, Ui_win_revpicommander):
@@ -475,15 +475,15 @@ class RevPiCommander(QtWidgets.QMainWindow, Ui_win_revpicommander):
# endregion # # # # # # endregion # # # # #
if __name__ == "__main__": def main() -> int:
import sys from sys import argv
if hasattr(QtCore.Qt, 'AA_EnableHighDpiScaling'): if hasattr(QtCore.Qt, 'AA_EnableHighDpiScaling'):
QtWidgets.QApplication.setAttribute(QtCore.Qt.AA_EnableHighDpiScaling, True) QtWidgets.QApplication.setAttribute(QtCore.Qt.AA_EnableHighDpiScaling, True)
if hasattr(QtCore.Qt, 'AA_UseHighDpiPixmaps'): if hasattr(QtCore.Qt, 'AA_UseHighDpiPixmaps'):
QtWidgets.QApplication.setAttribute(QtCore.Qt.AA_UseHighDpiPixmaps, True) QtWidgets.QApplication.setAttribute(QtCore.Qt.AA_UseHighDpiPixmaps, True)
app = QtWidgets.QApplication(sys.argv) app = QtWidgets.QApplication(argv)
try: try:
# Setup translation from file with system language # Setup translation from file with system language
@@ -506,4 +506,9 @@ if __name__ == "__main__":
helper.cm.requestInterruption() helper.cm.requestInterruption()
helper.cm.wait() helper.cm.wait()
sys.exit(exit_code) return exit_code
if __name__ == "__main__":
import sys
sys.exit(main())

View File

@@ -1,7 +1,7 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
"""File manager for up und download PLC program.""" """File manager for up und download PLC program."""
__author__ = "Sven Sager" __author__ = "Sven Sager"
__copyright__ = "Copyright (C) 2020 Sven Sager" __copyright__ = "Copyright (C) 2023 Sven Sager"
__license__ = "GPLv3" __license__ = "GPLv3"
import gzip import gzip
@@ -11,11 +11,11 @@ from xmlrpc.client import Binary
from PyQt5 import QtCore, QtGui, QtWidgets from PyQt5 import QtCore, QtGui, QtWidgets
import helper from . import helper
import proginit as pi from . import proginit as pi
from backgroundworker import BackgroundWorker from .backgroundworker import BackgroundWorker
from helper import WidgetData from .helper import WidgetData
from ui.files_ui import Ui_win_files from .ui.files_ui import Ui_win_files
class NodeType(IntEnum): class NodeType(IntEnum):

View File

@@ -1,13 +1,13 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
"""Program information of local an remote system.""" """Program information of local an remote system."""
__author__ = "Sven Sager" __author__ = "Sven Sager"
__copyright__ = "Copyright (C) 2018 Sven Sager" __copyright__ = "Copyright (C) 2023 Sven Sager"
__license__ = "GPLv3" __license__ = "GPLv3"
from PyQt5 import QtCore, QtGui, QtWidgets from PyQt5 import QtCore, QtGui, QtWidgets
import helper from . import helper
from ui.revpiinfo_ui import Ui_diag_revpiinfo from .ui.revpiinfo_ui import Ui_diag_revpiinfo
class RevPiInfo(QtWidgets.QDialog, Ui_diag_revpiinfo): class RevPiInfo(QtWidgets.QDialog, Ui_diag_revpiinfo):

View File

@@ -1,16 +1,16 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
"""View log files from Revolution Pi.""" """View log files from Revolution Pi."""
__author__ = "Sven Sager" __author__ = "Sven Sager"
__copyright__ = "Copyright (C) 2018 Sven Sager" __copyright__ = "Copyright (C) 2023 Sven Sager"
__license__ = "GPLv3" __license__ = "GPLv3"
from enum import IntEnum from enum import IntEnum
from PyQt5 import QtCore, QtGui, QtWidgets from PyQt5 import QtCore, QtGui, QtWidgets
import helper from . import helper
import proginit as pi from . import proginit as pi
from ui.revpilogfile_ui import Ui_win_revpilogfile from .ui.revpilogfile_ui import Ui_win_revpilogfile
class LogType(IntEnum): class LogType(IntEnum):

View File

@@ -1,16 +1,16 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
"""RevPiPyLoad options window.""" """RevPiPyLoad options window."""
__author__ = "Sven Sager" __author__ = "Sven Sager"
__copyright__ = "Copyright (C) 2018 Sven Sager" __copyright__ = "Copyright (C) 2023 Sven Sager"
__license__ = "GPLv3" __license__ = "GPLv3"
from PyQt5 import QtCore, QtGui, QtWidgets from PyQt5 import QtCore, QtGui, QtWidgets
import helper from . import helper
import proginit as pi from . import proginit as pi
from aclmanager import AclManager from .aclmanager import AclManager
from mqttmanager import MqttManager from .mqttmanager import MqttManager
from ui.revpioption_ui import Ui_diag_options from .ui.revpioption_ui import Ui_diag_options
class RevPiOption(QtWidgets.QDialog, Ui_diag_options): class RevPiOption(QtWidgets.QDialog, Ui_diag_options):

View File

@@ -1,17 +1,16 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
"""Saved connections of Revolution Pi devices.""" """Saved connections of Revolution Pi devices."""
__author__ = "Sven Sager" __author__ = "Sven Sager"
__copyright__ = "Copyright (C) 2018 Sven Sager" __copyright__ = "Copyright (C) 2023 Sven Sager"
__license__ = "GPLv3" __license__ = "GPLv3"
from enum import IntEnum from enum import IntEnum
from PyQt5 import QtCore, QtGui, QtWidgets from PyQt5 import QtCore, QtGui, QtWidgets
import helper from . import proginit as pi
import proginit as pi from .helper import WidgetData, settings
from helper import WidgetData from .ui.revpiplclist_ui import Ui_diag_connections
from ui.revpiplclist_ui import Ui_diag_connections
class NodeType(IntEnum): class NodeType(IntEnum):
@@ -42,29 +41,29 @@ class RevPiPlcList(QtWidgets.QDialog, Ui_diag_connections):
self.tre_connections.clear() self.tre_connections.clear()
self.cbb_folder.clear() self.cbb_folder.clear()
self.cbb_folder.addItem("") self.cbb_folder.addItem("")
for i in range(helper.settings.beginReadArray("connections")): for i in range(settings.beginReadArray("connections")):
helper.settings.setArrayIndex(i) settings.setArrayIndex(i)
con_item = QtWidgets.QTreeWidgetItem(NodeType.CON) con_item = QtWidgets.QTreeWidgetItem(NodeType.CON)
con_item.setIcon(0, QtGui.QIcon(":/main/ico/cpu.ico")) con_item.setIcon(0, QtGui.QIcon(":/main/ico/cpu.ico"))
con_item.setText(0, helper.settings.value("name", "Revolution Pi", str)) con_item.setText(0, settings.value("name", "Revolution Pi", str))
con_item.setText(1, helper.settings.value("address", "127.0.0.1", str)) con_item.setText(1, settings.value("address", "127.0.0.1", str))
con_item.setData(0, WidgetData.port, helper.settings.value("port", self.__default_port, int)) con_item.setData(0, WidgetData.port, settings.value("port", self.__default_port, int))
con_item.setData(0, WidgetData.timeout, helper.settings.value("timeout", 5, int)) con_item.setData(0, WidgetData.timeout, settings.value("timeout", 5, int))
con_item.setData(0, WidgetData.last_dir_upload, helper.settings.value("last_dir_upload")) con_item.setData(0, WidgetData.last_dir_upload, settings.value("last_dir_upload"))
con_item.setData(0, WidgetData.last_file_upload, helper.settings.value("last_file_upload")) con_item.setData(0, WidgetData.last_file_upload, settings.value("last_file_upload"))
con_item.setData(0, WidgetData.last_dir_pictory, helper.settings.value("last_dir_pictory")) con_item.setData(0, WidgetData.last_dir_pictory, settings.value("last_dir_pictory"))
con_item.setData(0, WidgetData.last_dir_picontrol, helper.settings.value("last_dir_picontrol")) con_item.setData(0, WidgetData.last_dir_picontrol, settings.value("last_dir_picontrol"))
con_item.setData(0, WidgetData.last_dir_selected, helper.settings.value("last_dir_selected")) con_item.setData(0, WidgetData.last_dir_selected, settings.value("last_dir_selected"))
con_item.setData(0, WidgetData.last_pictory_file, helper.settings.value("last_pictory_file")) con_item.setData(0, WidgetData.last_pictory_file, settings.value("last_pictory_file"))
con_item.setData(0, WidgetData.last_tar_file, helper.settings.value("last_tar_file")) con_item.setData(0, WidgetData.last_tar_file, settings.value("last_tar_file"))
con_item.setData(0, WidgetData.last_zip_file, helper.settings.value("last_zip_file")) con_item.setData(0, WidgetData.last_zip_file, settings.value("last_zip_file"))
con_item.setData(0, WidgetData.watch_files, helper.settings.value("watch_files")) con_item.setData(0, WidgetData.watch_files, settings.value("watch_files"))
con_item.setData(0, WidgetData.watch_path, helper.settings.value("watch_path")) con_item.setData(0, WidgetData.watch_path, settings.value("watch_path"))
con_item.setData(0, WidgetData.debug_geos, helper.settings.value("debug_geos")) con_item.setData(0, WidgetData.debug_geos, settings.value("debug_geos"))
folder = helper.settings.value("folder", "", str) folder = settings.value("folder", "", str)
if folder: if folder:
sub_folder = self._get_folder_item(folder) sub_folder = self._get_folder_item(folder)
if sub_folder is None: if sub_folder is None:
@@ -78,7 +77,7 @@ class RevPiPlcList(QtWidgets.QDialog, Ui_diag_connections):
else: else:
self.tre_connections.addTopLevelItem(con_item) self.tre_connections.addTopLevelItem(con_item)
helper.settings.endArray() settings.endArray()
self.tre_connections.expandAll() self.tre_connections.expandAll()
self.changes = True self.changes = True
@@ -91,52 +90,52 @@ class RevPiPlcList(QtWidgets.QDialog, Ui_diag_connections):
def set_settings(node: QtWidgets.QTreeWidgetItem): def set_settings(node: QtWidgets.QTreeWidgetItem):
parent = node.parent() parent = node.parent()
helper.settings.setValue("address", node.text(1)) settings.setValue("address", node.text(1))
helper.settings.setValue("folder", parent.text(0) if parent else "") settings.setValue("folder", parent.text(0) if parent else "")
helper.settings.setValue("name", node.text(0)) settings.setValue("name", node.text(0))
helper.settings.setValue("port", node.data(0, WidgetData.port)) settings.setValue("port", node.data(0, WidgetData.port))
helper.settings.setValue("timeout", node.data(0, WidgetData.timeout)) settings.setValue("timeout", node.data(0, WidgetData.timeout))
if node.data(0, WidgetData.last_dir_upload): if node.data(0, WidgetData.last_dir_upload):
helper.settings.setValue("last_dir_upload", node.data(0, WidgetData.last_dir_upload)) settings.setValue("last_dir_upload", node.data(0, WidgetData.last_dir_upload))
if node.data(0, WidgetData.last_file_upload): if node.data(0, WidgetData.last_file_upload):
helper.settings.setValue("last_file_upload", node.data(0, WidgetData.last_file_upload)) settings.setValue("last_file_upload", node.data(0, WidgetData.last_file_upload))
if node.data(0, WidgetData.last_dir_pictory): if node.data(0, WidgetData.last_dir_pictory):
helper.settings.setValue("last_dir_pictory", node.data(0, WidgetData.last_dir_pictory)) settings.setValue("last_dir_pictory", node.data(0, WidgetData.last_dir_pictory))
if node.data(0, WidgetData.last_dir_picontrol): if node.data(0, WidgetData.last_dir_picontrol):
helper.settings.setValue("last_dir_picontrol", node.data(0, WidgetData.last_dir_picontrol)) settings.setValue("last_dir_picontrol", node.data(0, WidgetData.last_dir_picontrol))
if node.data(0, WidgetData.last_dir_selected): if node.data(0, WidgetData.last_dir_selected):
helper.settings.setValue("last_dir_selected", node.data(0, WidgetData.last_dir_selected)) settings.setValue("last_dir_selected", node.data(0, WidgetData.last_dir_selected))
if node.data(0, WidgetData.last_pictory_file): if node.data(0, WidgetData.last_pictory_file):
helper.settings.setValue("last_pictory_file", node.data(0, WidgetData.last_pictory_file)) settings.setValue("last_pictory_file", node.data(0, WidgetData.last_pictory_file))
if node.data(0, WidgetData.last_tar_file): if node.data(0, WidgetData.last_tar_file):
helper.settings.setValue("last_tar_file", node.data(0, WidgetData.last_tar_file)) settings.setValue("last_tar_file", node.data(0, WidgetData.last_tar_file))
if node.data(0, WidgetData.last_zip_file): if node.data(0, WidgetData.last_zip_file):
helper.settings.setValue("last_zip_file", node.data(0, WidgetData.last_zip_file)) settings.setValue("last_zip_file", node.data(0, WidgetData.last_zip_file))
if node.data(0, WidgetData.watch_files): if node.data(0, WidgetData.watch_files):
helper.settings.setValue("watch_files", node.data(0, WidgetData.watch_files)) settings.setValue("watch_files", node.data(0, WidgetData.watch_files))
if node.data(0, WidgetData.watch_path): if node.data(0, WidgetData.watch_path):
helper.settings.setValue("watch_path", node.data(0, WidgetData.watch_path)) settings.setValue("watch_path", node.data(0, WidgetData.watch_path))
if node.data(0, WidgetData.debug_geos): if node.data(0, WidgetData.debug_geos):
helper.settings.setValue("debug_geos", node.data(0, WidgetData.debug_geos)) settings.setValue("debug_geos", node.data(0, WidgetData.debug_geos))
helper.settings.remove("connections") settings.remove("connections")
helper.settings.beginWriteArray("connections") settings.beginWriteArray("connections")
counter_index = 0 counter_index = 0
for i in range(self.tre_connections.topLevelItemCount()): for i in range(self.tre_connections.topLevelItemCount()):
root_item = self.tre_connections.topLevelItem(i) root_item = self.tre_connections.topLevelItem(i)
if root_item.type() == NodeType.DIR: if root_item.type() == NodeType.DIR:
for k in range(root_item.childCount()): for k in range(root_item.childCount()):
helper.settings.setArrayIndex(counter_index) settings.setArrayIndex(counter_index)
set_settings(root_item.child(k)) set_settings(root_item.child(k))
counter_index += 1 counter_index += 1
elif root_item.type() == NodeType.CON: elif root_item.type() == NodeType.CON:
helper.settings.setArrayIndex(counter_index) settings.setArrayIndex(counter_index)
set_settings(root_item) set_settings(root_item)
counter_index += 1 counter_index += 1
helper.settings.endArray() settings.endArray()
self.changes = False self.changes = False
super(RevPiPlcList, self).accept() super(RevPiPlcList, self).accept()

View File

@@ -1,7 +1,7 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
"""Revolution Pi PLC program configuration.""" """Revolution Pi PLC program configuration."""
__author__ = "Sven Sager" __author__ = "Sven Sager"
__copyright__ = "Copyright (C) 2018 Sven Sager" __copyright__ = "Copyright (C) 2023 Sven Sager"
__license__ = "GPLv3" __license__ = "GPLv3"
import gzip import gzip
@@ -14,9 +14,9 @@ from xmlrpc.client import Binary
from PyQt5 import QtCore, QtGui, QtWidgets from PyQt5 import QtCore, QtGui, QtWidgets
import helper from . import helper
import proginit as pi from . import proginit as pi
from ui.revpiprogram_ui import Ui_diag_program from .ui.revpiprogram_ui import Ui_diag_program
class RevPiProgram(QtWidgets.QDialog, Ui_diag_program): class RevPiProgram(QtWidgets.QDialog, Ui_diag_program):

View File

@@ -1,7 +1,7 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
"""Simulator for piControl.""" """Simulator for piControl."""
__author__ = "Sven Sager" __author__ = "Sven Sager"
__copyright__ = "Copyright (C) 2021 Sven Sager" __copyright__ = "Copyright (C) 2023 Sven Sager"
__license__ = "GPLv3" __license__ = "GPLv3"
from os import W_OK, access from os import W_OK, access
@@ -9,8 +9,8 @@ from os.path import basename, dirname, exists, join
from PyQt5 import QtCore, QtGui, QtWidgets from PyQt5 import QtCore, QtGui, QtWidgets
import helper from . import helper
from ui.simulator_ui import Ui_diag_simulator from .ui.simulator_ui import Ui_diag_simulator
class Simulator(QtWidgets.QDialog, Ui_diag_simulator): class Simulator(QtWidgets.QDialog, Ui_diag_simulator):

View File

@@ -2,9 +2,10 @@
# Form implementation generated from reading ui file 'aclmanager.ui' # Form implementation generated from reading ui file 'aclmanager.ui'
# #
# Created by: PyQt5 UI code generator 5.14.1 # Created by: PyQt5 UI code generator 5.15.7
# #
# WARNING! All changes made in this file will be lost! # WARNING: Any manual changes made to this file will be lost when pyuic5 is
# run again. Do not edit this file unless you know what you are doing.
from PyQt5 import QtCore, QtGui, QtWidgets from PyQt5 import QtCore, QtGui, QtWidgets
@@ -120,8 +121,8 @@ class Ui_diag_aclmanager(object):
self.verticalLayout.addWidget(self.btn_box) self.verticalLayout.addWidget(self.btn_box)
self.retranslateUi(diag_aclmanager) self.retranslateUi(diag_aclmanager)
self.btn_box.accepted.connect(diag_aclmanager.accept) self.btn_box.accepted.connect(diag_aclmanager.accept) # type: ignore
self.btn_box.rejected.connect(diag_aclmanager.reject) self.btn_box.rejected.connect(diag_aclmanager.reject) # type: ignore
QtCore.QMetaObject.connectSlotsByName(diag_aclmanager) QtCore.QMetaObject.connectSlotsByName(diag_aclmanager)
diag_aclmanager.setTabOrder(self.tb_acls, self.btn_edit) diag_aclmanager.setTabOrder(self.tb_acls, self.btn_edit)
diag_aclmanager.setTabOrder(self.btn_edit, self.btn_remove) diag_aclmanager.setTabOrder(self.btn_edit, self.btn_remove)

View File

@@ -2,9 +2,10 @@
# Form implementation generated from reading ui file 'backgroundworker.ui' # Form implementation generated from reading ui file 'backgroundworker.ui'
# #
# Created by: PyQt5 UI code generator 5.14.1 # Created by: PyQt5 UI code generator 5.15.7
# #
# WARNING! All changes made in this file will be lost! # WARNING: Any manual changes made to this file will be lost when pyuic5 is
# run again. Do not edit this file unless you know what you are doing.
from PyQt5 import QtCore, QtGui, QtWidgets from PyQt5 import QtCore, QtGui, QtWidgets

View File

@@ -2,9 +2,10 @@
# Form implementation generated from reading ui file 'debugcontrol.ui' # Form implementation generated from reading ui file 'debugcontrol.ui'
# #
# Created by: PyQt5 UI code generator 5.14.1 # Created by: PyQt5 UI code generator 5.15.7
# #
# WARNING! All changes made in this file will be lost! # WARNING: Any manual changes made to this file will be lost when pyuic5 is
# run again. Do not edit this file unless you know what you are doing.
from PyQt5 import QtCore, QtGui, QtWidgets from PyQt5 import QtCore, QtGui, QtWidgets

View File

@@ -2,9 +2,10 @@
# Form implementation generated from reading ui file 'debugios.ui' # Form implementation generated from reading ui file 'debugios.ui'
# #
# Created by: PyQt5 UI code generator 5.14.1 # Created by: PyQt5 UI code generator 5.15.7
# #
# WARNING! All changes made in this file will be lost! # WARNING: Any manual changes made to this file will be lost when pyuic5 is
# run again. Do not edit this file unless you know what you are doing.
from PyQt5 import QtCore, QtGui, QtWidgets from PyQt5 import QtCore, QtGui, QtWidgets

View File

@@ -2,9 +2,10 @@
# Form implementation generated from reading ui file 'files.ui' # Form implementation generated from reading ui file 'files.ui'
# #
# Created by: PyQt5 UI code generator 5.14.1 # Created by: PyQt5 UI code generator 5.15.7
# #
# WARNING! All changes made in this file will be lost! # WARNING: Any manual changes made to this file will be lost when pyuic5 is
# run again. Do not edit this file unless you know what you are doing.
from PyQt5 import QtCore, QtGui, QtWidgets from PyQt5 import QtCore, QtGui, QtWidgets

View File

@@ -2,9 +2,10 @@
# Form implementation generated from reading ui file 'mqttmanager.ui' # Form implementation generated from reading ui file 'mqttmanager.ui'
# #
# Created by: PyQt5 UI code generator 5.14.1 # Created by: PyQt5 UI code generator 5.15.7
# #
# WARNING! All changes made in this file will be lost! # WARNING: Any manual changes made to this file will be lost when pyuic5 is
# run again. Do not edit this file unless you know what you are doing.
from PyQt5 import QtCore, QtGui, QtWidgets from PyQt5 import QtCore, QtGui, QtWidgets
@@ -117,8 +118,8 @@ class Ui_diag_mqtt(object):
self.verticalLayout.addWidget(self.btn_box) self.verticalLayout.addWidget(self.btn_box)
self.retranslateUi(diag_mqtt) self.retranslateUi(diag_mqtt)
self.btn_box.accepted.connect(diag_mqtt.accept) self.btn_box.accepted.connect(diag_mqtt.accept) # type: ignore
self.btn_box.rejected.connect(diag_mqtt.reject) self.btn_box.rejected.connect(diag_mqtt.reject) # type: ignore
QtCore.QMetaObject.connectSlotsByName(diag_mqtt) QtCore.QMetaObject.connectSlotsByName(diag_mqtt)
def retranslateUi(self, diag_mqtt): def retranslateUi(self, diag_mqtt):

View File

@@ -2,9 +2,10 @@
# Form implementation generated from reading ui file 'revpiinfo.ui' # Form implementation generated from reading ui file 'revpiinfo.ui'
# #
# Created by: PyQt5 UI code generator 5.14.1 # Created by: PyQt5 UI code generator 5.15.7
# #
# WARNING! All changes made in this file will be lost! # WARNING: Any manual changes made to this file will be lost when pyuic5 is
# run again. Do not edit this file unless you know what you are doing.
from PyQt5 import QtCore, QtGui, QtWidgets from PyQt5 import QtCore, QtGui, QtWidgets
@@ -79,8 +80,8 @@ class Ui_diag_revpiinfo(object):
self.gridLayout.addItem(spacerItem, 5, 0, 1, 1) self.gridLayout.addItem(spacerItem, 5, 0, 1, 1)
self.retranslateUi(diag_revpiinfo) self.retranslateUi(diag_revpiinfo)
self.btn_box.accepted.connect(diag_revpiinfo.accept) self.btn_box.accepted.connect(diag_revpiinfo.accept) # type: ignore
self.btn_box.rejected.connect(diag_revpiinfo.reject) self.btn_box.rejected.connect(diag_revpiinfo.reject) # type: ignore
QtCore.QMetaObject.connectSlotsByName(diag_revpiinfo) QtCore.QMetaObject.connectSlotsByName(diag_revpiinfo)
def retranslateUi(self, diag_revpiinfo): def retranslateUi(self, diag_revpiinfo):

View File

@@ -2,9 +2,10 @@
# Form implementation generated from reading ui file 'revpilogfile.ui' # Form implementation generated from reading ui file 'revpilogfile.ui'
# #
# Created by: PyQt5 UI code generator 5.14.1 # Created by: PyQt5 UI code generator 5.15.7
# #
# WARNING! All changes made in this file will be lost! # WARNING: Any manual changes made to this file will be lost when pyuic5 is
# run again. Do not edit this file unless you know what you are doing.
from PyQt5 import QtCore, QtGui, QtWidgets from PyQt5 import QtCore, QtGui, QtWidgets

View File

@@ -2,9 +2,10 @@
# Form implementation generated from reading ui file 'revpioption.ui' # Form implementation generated from reading ui file 'revpioption.ui'
# #
# Created by: PyQt5 UI code generator 5.14.1 # Created by: PyQt5 UI code generator 5.15.7
# #
# WARNING! All changes made in this file will be lost! # WARNING: Any manual changes made to this file will be lost when pyuic5 is
# run again. Do not edit this file unless you know what you are doing.
from PyQt5 import QtCore, QtGui, QtWidgets from PyQt5 import QtCore, QtGui, QtWidgets
@@ -115,8 +116,8 @@ class Ui_diag_options(object):
self.verticalLayout.addWidget(self.btn_box) self.verticalLayout.addWidget(self.btn_box)
self.retranslateUi(diag_options) self.retranslateUi(diag_options)
self.btn_box.accepted.connect(diag_options.accept) self.btn_box.accepted.connect(diag_options.accept) # type: ignore
self.btn_box.rejected.connect(diag_options.reject) self.btn_box.rejected.connect(diag_options.reject) # type: ignore
QtCore.QMetaObject.connectSlotsByName(diag_options) QtCore.QMetaObject.connectSlotsByName(diag_options)
def retranslateUi(self, diag_options): def retranslateUi(self, diag_options):

View File

@@ -2,9 +2,10 @@
# Form implementation generated from reading ui file 'revpiplclist.ui' # Form implementation generated from reading ui file 'revpiplclist.ui'
# #
# Created by: PyQt5 UI code generator 5.14.1 # Created by: PyQt5 UI code generator 5.15.7
# #
# WARNING! All changes made in this file will be lost! # WARNING: Any manual changes made to this file will be lost when pyuic5 is
# run again. Do not edit this file unless you know what you are doing.
from PyQt5 import QtCore, QtGui, QtWidgets from PyQt5 import QtCore, QtGui, QtWidgets
@@ -113,8 +114,8 @@ class Ui_diag_connections(object):
self.gridLayout.addWidget(self.btn_box, 2, 0, 1, 2) self.gridLayout.addWidget(self.btn_box, 2, 0, 1, 2)
self.retranslateUi(diag_connections) self.retranslateUi(diag_connections)
self.btn_box.accepted.connect(diag_connections.accept) self.btn_box.accepted.connect(diag_connections.accept) # type: ignore
self.btn_box.rejected.connect(diag_connections.reject) self.btn_box.rejected.connect(diag_connections.reject) # type: ignore
QtCore.QMetaObject.connectSlotsByName(diag_connections) QtCore.QMetaObject.connectSlotsByName(diag_connections)
def retranslateUi(self, diag_connections): def retranslateUi(self, diag_connections):

View File

@@ -2,9 +2,10 @@
# Form implementation generated from reading ui file 'revpiprogram.ui' # Form implementation generated from reading ui file 'revpiprogram.ui'
# #
# Created by: PyQt5 UI code generator 5.14.1 # Created by: PyQt5 UI code generator 5.15.7
# #
# WARNING! All changes made in this file will be lost! # WARNING: Any manual changes made to this file will be lost when pyuic5 is
# run again. Do not edit this file unless you know what you are doing.
from PyQt5 import QtCore, QtGui, QtWidgets from PyQt5 import QtCore, QtGui, QtWidgets
@@ -104,8 +105,8 @@ class Ui_diag_program(object):
self.verticalLayout.addWidget(self.btn_box) self.verticalLayout.addWidget(self.btn_box)
self.retranslateUi(diag_program) self.retranslateUi(diag_program)
self.btn_box.accepted.connect(diag_program.accept) self.btn_box.accepted.connect(diag_program.accept) # type: ignore
self.btn_box.rejected.connect(diag_program.reject) self.btn_box.rejected.connect(diag_program.reject) # type: ignore
QtCore.QMetaObject.connectSlotsByName(diag_program) QtCore.QMetaObject.connectSlotsByName(diag_program)
diag_program.setTabOrder(self.cbb_plcprogram, self.txt_plcarguments) diag_program.setTabOrder(self.cbb_plcprogram, self.txt_plcarguments)
diag_program.setTabOrder(self.txt_plcarguments, self.rbn_pythonversion_2) diag_program.setTabOrder(self.txt_plcarguments, self.rbn_pythonversion_2)

View File

@@ -2,9 +2,10 @@
# Form implementation generated from reading ui file 'simulator.ui' # Form implementation generated from reading ui file 'simulator.ui'
# #
# Created by: PyQt5 UI code generator 5.14.1 # Created by: PyQt5 UI code generator 5.15.7
# #
# WARNING! All changes made in this file will be lost! # WARNING: Any manual changes made to this file will be lost when pyuic5 is
# run again. Do not edit this file unless you know what you are doing.
from PyQt5 import QtCore, QtGui, QtWidgets from PyQt5 import QtCore, QtGui, QtWidgets
@@ -92,9 +93,9 @@ class Ui_diag_simulator(object):
self.verticalLayout.addWidget(self.btn_start_nochange) self.verticalLayout.addWidget(self.btn_start_nochange)
self.retranslateUi(diag_simulator) self.retranslateUi(diag_simulator)
self.btn_start_empty.clicked.connect(diag_simulator.accept) self.btn_start_empty.clicked.connect(diag_simulator.accept) # type: ignore
self.btn_start_nochange.clicked.connect(diag_simulator.accept) self.btn_start_nochange.clicked.connect(diag_simulator.accept) # type: ignore
self.btn_start_pictory.clicked.connect(diag_simulator.accept) self.btn_start_pictory.clicked.connect(diag_simulator.accept) # type: ignore
QtCore.QMetaObject.connectSlotsByName(diag_simulator) QtCore.QMetaObject.connectSlotsByName(diag_simulator)
diag_simulator.setTabOrder(self.cbb_history, self.btn_configrsc) diag_simulator.setTabOrder(self.cbb_history, self.btn_configrsc)
diag_simulator.setTabOrder(self.btn_configrsc, self.cbx_stop_remove) diag_simulator.setTabOrder(self.btn_configrsc, self.cbx_stop_remove)

View File

@@ -1,32 +1,32 @@
SOURCES = revpicommander/aclmanager.py \ SOURCES = src/revpicommander/aclmanager.py \
revpicommander/avahisearch.py \ src/revpicommander/avahisearch.py \
revpicommander/debugcontrol.py \ src/revpicommander/debugcontrol.py \
revpicommander/debugios.py \ src/revpicommander/debugios.py \
revpicommander/helper.py \ src/revpicommander/helper.py \
revpicommander/mqttmanager.py \ src/revpicommander/mqttmanager.py \
revpicommander/revpifiles.py \ src/revpicommander/revpifiles.py \
revpicommander/revpiinfo.py \ src/revpicommander/revpiinfo.py \
revpicommander/revpilogfile.py \ src/revpicommander/revpilogfile.py \
revpicommander/revpioption.py \ src/revpicommander/revpioption.py \
revpicommander/revpiplclist.py \ src/revpicommander/revpiplclist.py \
revpicommander/revpiprogram.py \ src/revpicommander/revpiprogram.py \
revpicommander/simulator.py \ src/revpicommander/simulator.py \
revpicommander/revpicommander.py src/revpicommander/revpicommander.py
FORMS = include/ui_dev/aclmanager.ui \ FORMS = ui_dev/aclmanager.ui \
include/ui_dev/avahisearch.ui \ ui_dev/avahisearch.ui \
include/ui_dev/debugcontrol.ui \ ui_dev/debugcontrol.ui \
include/ui_dev/debugios.ui \ ui_dev/debugios.ui \
include/ui_dev/files.ui \ ui_dev/files.ui \
include/ui_dev/mqttmanager.ui \ ui_dev/mqttmanager.ui \
include/ui_dev/revpiinfo.ui \ ui_dev/revpiinfo.ui \
include/ui_dev/revpilogfile.ui \ ui_dev/revpilogfile.ui \
include/ui_dev/revpioption.ui \ ui_dev/revpioption.ui \
include/ui_dev/revpiplclist.ui \ ui_dev/revpiplclist.ui \
include/ui_dev/revpiprogram.ui \ ui_dev/revpiprogram.ui \
include/ui_dev/simulator.ui \ ui_dev/simulator.ui \
include/ui_dev/revpicommander.ui ui_dev/revpicommander.ui
TRANSLATIONS = revpicommander/locale/revpicommander_de.ts TRANSLATIONS = src/revpicommander/locale/revpicommander_de.ts
CODECRORTR = UTF-8 CODECRORTR = UTF-8

View File

Before

Width:  |  Height:  |  Size: 4.2 KiB

After

Width:  |  Height:  |  Size: 4.2 KiB

View File

Before

Width:  |  Height:  |  Size: 4.2 KiB

After

Width:  |  Height:  |  Size: 4.2 KiB

View File

Before

Width:  |  Height:  |  Size: 4.2 KiB

After

Width:  |  Height:  |  Size: 4.2 KiB

View File

Before

Width:  |  Height:  |  Size: 4.2 KiB

After

Width:  |  Height:  |  Size: 4.2 KiB

View File

Before

Width:  |  Height:  |  Size: 4.2 KiB

After

Width:  |  Height:  |  Size: 4.2 KiB

View File

Before

Width:  |  Height:  |  Size: 4.2 KiB

After

Width:  |  Height:  |  Size: 4.2 KiB

View File

Before

Width:  |  Height:  |  Size: 4.2 KiB

After

Width:  |  Height:  |  Size: 4.2 KiB

View File

Before

Width:  |  Height:  |  Size: 4.2 KiB

After

Width:  |  Height:  |  Size: 4.2 KiB

View File

Before

Width:  |  Height:  |  Size: 4.2 KiB

After

Width:  |  Height:  |  Size: 4.2 KiB

View File

Before

Width:  |  Height:  |  Size: 4.2 KiB

After

Width:  |  Height:  |  Size: 4.2 KiB

View File

Before

Width:  |  Height:  |  Size: 4.2 KiB

After

Width:  |  Height:  |  Size: 4.2 KiB

View File

Before

Width:  |  Height:  |  Size: 4.2 KiB

After

Width:  |  Height:  |  Size: 4.2 KiB

View File

Before

Width:  |  Height:  |  Size: 4.2 KiB

After

Width:  |  Height:  |  Size: 4.2 KiB

View File

Before

Width:  |  Height:  |  Size: 4.2 KiB

After

Width:  |  Height:  |  Size: 4.2 KiB