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.
2
.idea/misc.xml
generated
@@ -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">
|
||||||
|
|||||||
4
.idea/revpicommander.iml
generated
@@ -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
@@ -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>
|
||||||
|
|||||||
@@ -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
@@ -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
7
make.bat
@@ -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
|
|
||||||
36
setup.py
@@ -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")),
|
'gui_scripts': [
|
||||||
("share/revpicommander/ui", glob("include/ui/*.py")),
|
'RevPiCommander = revpicommander.revpicommander:main',
|
||||||
("share/revpicommander/locale/", glob("revpicommander/locale/*.qm")),
|
],
|
||||||
],
|
},
|
||||||
|
|
||||||
# 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},
|
|
||||||
)
|
)
|
||||||
|
|||||||
5
src/revpicommander/__init__.py
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
"""Package: RevPiCommander."""
|
||||||
|
__author__ = "Sven Sager"
|
||||||
|
__copyright__ = "Copyright (C) 2023 Sven Sager"
|
||||||
|
__license__ = "GPLv3"
|
||||||
22
src/revpicommander/__main__.py
Normal 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())
|
||||||
@@ -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):
|
||||||
@@ -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())
|
||||||
])
|
])
|
||||||
@@ -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()
|
||||||
|
|
||||||
@@ -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):
|
||||||
@@ -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):
|
||||||
@@ -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):
|
||||||
@@ -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):
|
||||||
@@ -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
|
||||||
37
revpicommander/revpicommander.py → src/revpicommander/revpicommander.py
Executable file → Normal 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())
|
||||||
@@ -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):
|
||||||
@@ -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):
|
||||||
@@ -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):
|
||||||
@@ -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):
|
||||||
@@ -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()
|
||||||
@@ -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):
|
||||||
@@ -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):
|
||||||
@@ -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)
|
||||||
@@ -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
|
||||||
@@ -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
|
||||||
@@ -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
|
||||||
@@ -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
|
||||||
@@ -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):
|
||||||
@@ -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):
|
||||||
@@ -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
|
||||||
@@ -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):
|
||||||
@@ -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):
|
||||||
@@ -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)
|
||||||
@@ -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)
|
||||||
@@ -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
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 4.2 KiB After Width: | Height: | Size: 4.2 KiB |
|
Before Width: | Height: | Size: 4.2 KiB After Width: | Height: | Size: 4.2 KiB |
|
Before Width: | Height: | Size: 4.2 KiB After Width: | Height: | Size: 4.2 KiB |
|
Before Width: | Height: | Size: 4.2 KiB After Width: | Height: | Size: 4.2 KiB |
|
Before Width: | Height: | Size: 4.2 KiB After Width: | Height: | Size: 4.2 KiB |
|
Before Width: | Height: | Size: 4.2 KiB After Width: | Height: | Size: 4.2 KiB |
|
Before Width: | Height: | Size: 4.2 KiB After Width: | Height: | Size: 4.2 KiB |
|
Before Width: | Height: | Size: 4.2 KiB After Width: | Height: | Size: 4.2 KiB |
|
Before Width: | Height: | Size: 4.2 KiB After Width: | Height: | Size: 4.2 KiB |
|
Before Width: | Height: | Size: 4.2 KiB After Width: | Height: | Size: 4.2 KiB |
|
Before Width: | Height: | Size: 4.2 KiB After Width: | Height: | Size: 4.2 KiB |
|
Before Width: | Height: | Size: 4.2 KiB After Width: | Height: | Size: 4.2 KiB |
|
Before Width: | Height: | Size: 4.2 KiB After Width: | Height: | Size: 4.2 KiB |
|
Before Width: | Height: | Size: 4.2 KiB After Width: | Height: | Size: 4.2 KiB |