Renamed version of revpipycontrol written with Qt framework

This commit is contained in:
2020-08-24 18:14:42 +02:00
parent b76dee8ee4
commit 0f22a2812b
73 changed files with 13002 additions and 0 deletions

160
include/ui/aclmanager_ui.py Normal file
View File

@@ -0,0 +1,160 @@
# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'aclmanager.ui'
#
# Created by: PyQt5 UI code generator 5.10.1
#
# WARNING! All changes made in this file will be lost!
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_diag_aclmanager(object):
def setupUi(self, diag_aclmanager):
diag_aclmanager.setObjectName("diag_aclmanager")
diag_aclmanager.resize(454, 572)
self.verticalLayout = QtWidgets.QVBoxLayout(diag_aclmanager)
self.verticalLayout.setObjectName("verticalLayout")
self.gb_acls = QtWidgets.QGroupBox(diag_aclmanager)
self.gb_acls.setObjectName("gb_acls")
self.verticalLayout_2 = QtWidgets.QVBoxLayout(self.gb_acls)
self.verticalLayout_2.setObjectName("verticalLayout_2")
self.tb_acls = QtWidgets.QTableWidget(self.gb_acls)
self.tb_acls.setEditTriggers(QtWidgets.QAbstractItemView.NoEditTriggers)
self.tb_acls.setTabKeyNavigation(False)
self.tb_acls.setSelectionMode(QtWidgets.QAbstractItemView.ExtendedSelection)
self.tb_acls.setSelectionBehavior(QtWidgets.QAbstractItemView.SelectRows)
self.tb_acls.setWordWrap(False)
self.tb_acls.setCornerButtonEnabled(False)
self.tb_acls.setObjectName("tb_acls")
self.tb_acls.setColumnCount(2)
self.tb_acls.setRowCount(0)
item = QtWidgets.QTableWidgetItem()
self.tb_acls.setHorizontalHeaderItem(0, item)
item = QtWidgets.QTableWidgetItem()
self.tb_acls.setHorizontalHeaderItem(1, item)
self.tb_acls.horizontalHeader().setHighlightSections(False)
self.tb_acls.horizontalHeader().setStretchLastSection(True)
self.tb_acls.verticalHeader().setVisible(False)
self.verticalLayout_2.addWidget(self.tb_acls)
self.hl_acls = QtWidgets.QHBoxLayout()
self.hl_acls.setObjectName("hl_acls")
self.btn_edit = QtWidgets.QPushButton(self.gb_acls)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Maximum, QtWidgets.QSizePolicy.Fixed)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.btn_edit.sizePolicy().hasHeightForWidth())
self.btn_edit.setSizePolicy(sizePolicy)
self.btn_edit.setObjectName("btn_edit")
self.hl_acls.addWidget(self.btn_edit)
self.btn_remove = QtWidgets.QPushButton(self.gb_acls)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Maximum, QtWidgets.QSizePolicy.Fixed)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.btn_remove.sizePolicy().hasHeightForWidth())
self.btn_remove.setSizePolicy(sizePolicy)
self.btn_remove.setObjectName("btn_remove")
self.hl_acls.addWidget(self.btn_remove)
self.verticalLayout_2.addLayout(self.hl_acls)
self.verticalLayout.addWidget(self.gb_acls)
self.gb_edit = QtWidgets.QGroupBox(diag_aclmanager)
self.gb_edit.setObjectName("gb_edit")
self.gridLayout_2 = QtWidgets.QGridLayout(self.gb_edit)
self.gridLayout_2.setObjectName("gridLayout_2")
self.btn_clear = QtWidgets.QPushButton(self.gb_edit)
self.btn_clear.setObjectName("btn_clear")
self.gridLayout_2.addWidget(self.btn_clear, 1, 0, 1, 1)
self.btn_add = QtWidgets.QPushButton(self.gb_edit)
self.btn_add.setObjectName("btn_add")
self.gridLayout_2.addWidget(self.btn_add, 1, 1, 1, 1)
self.fl_edit = QtWidgets.QFormLayout()
self.fl_edit.setObjectName("fl_edit")
self.lbl_ip = QtWidgets.QLabel(self.gb_edit)
self.lbl_ip.setObjectName("lbl_ip")
self.fl_edit.setWidget(0, QtWidgets.QFormLayout.LabelRole, self.lbl_ip)
self.lbl_level = QtWidgets.QLabel(self.gb_edit)
self.lbl_level.setObjectName("lbl_level")
self.fl_edit.setWidget(1, QtWidgets.QFormLayout.LabelRole, self.lbl_level)
self.cbb_level = QtWidgets.QComboBox(self.gb_edit)
self.cbb_level.setObjectName("cbb_level")
self.fl_edit.setWidget(1, QtWidgets.QFormLayout.FieldRole, self.cbb_level)
self.hl_ip = QtWidgets.QHBoxLayout()
self.hl_ip.setObjectName("hl_ip")
self.txt_ip_a = QtWidgets.QLineEdit(self.gb_edit)
self.txt_ip_a.setMaxLength(3)
self.txt_ip_a.setObjectName("txt_ip_a")
self.hl_ip.addWidget(self.txt_ip_a)
self.lbl_ip_a = QtWidgets.QLabel(self.gb_edit)
self.lbl_ip_a.setObjectName("lbl_ip_a")
self.hl_ip.addWidget(self.lbl_ip_a)
self.txt_ip_b = QtWidgets.QLineEdit(self.gb_edit)
self.txt_ip_b.setMaxLength(3)
self.txt_ip_b.setObjectName("txt_ip_b")
self.hl_ip.addWidget(self.txt_ip_b)
self.lbl_ip_b = QtWidgets.QLabel(self.gb_edit)
self.lbl_ip_b.setObjectName("lbl_ip_b")
self.hl_ip.addWidget(self.lbl_ip_b)
self.txt_ip_c = QtWidgets.QLineEdit(self.gb_edit)
self.txt_ip_c.setMaxLength(3)
self.txt_ip_c.setObjectName("txt_ip_c")
self.hl_ip.addWidget(self.txt_ip_c)
self.lbl_ip_c = QtWidgets.QLabel(self.gb_edit)
self.lbl_ip_c.setObjectName("lbl_ip_c")
self.hl_ip.addWidget(self.lbl_ip_c)
self.txt_ip_d = QtWidgets.QLineEdit(self.gb_edit)
self.txt_ip_d.setMaxLength(3)
self.txt_ip_d.setObjectName("txt_ip_d")
self.hl_ip.addWidget(self.txt_ip_d)
self.fl_edit.setLayout(0, QtWidgets.QFormLayout.FieldRole, self.hl_ip)
self.gridLayout_2.addLayout(self.fl_edit, 0, 0, 1, 2)
self.verticalLayout.addWidget(self.gb_edit)
self.lbl_level_info = QtWidgets.QLabel(diag_aclmanager)
self.lbl_level_info.setText("")
self.lbl_level_info.setObjectName("lbl_level_info")
self.verticalLayout.addWidget(self.lbl_level_info)
self.btn_box = QtWidgets.QDialogButtonBox(diag_aclmanager)
self.btn_box.setOrientation(QtCore.Qt.Horizontal)
self.btn_box.setStandardButtons(QtWidgets.QDialogButtonBox.Cancel|QtWidgets.QDialogButtonBox.Ok)
self.btn_box.setObjectName("btn_box")
self.verticalLayout.addWidget(self.btn_box)
self.retranslateUi(diag_aclmanager)
self.btn_box.accepted.connect(diag_aclmanager.accept)
self.btn_box.rejected.connect(diag_aclmanager.reject)
QtCore.QMetaObject.connectSlotsByName(diag_aclmanager)
diag_aclmanager.setTabOrder(self.tb_acls, self.btn_edit)
diag_aclmanager.setTabOrder(self.btn_edit, self.btn_remove)
diag_aclmanager.setTabOrder(self.btn_remove, self.txt_ip_a)
diag_aclmanager.setTabOrder(self.txt_ip_a, self.txt_ip_b)
diag_aclmanager.setTabOrder(self.txt_ip_b, self.txt_ip_c)
diag_aclmanager.setTabOrder(self.txt_ip_c, self.txt_ip_d)
diag_aclmanager.setTabOrder(self.txt_ip_d, self.cbb_level)
def retranslateUi(self, diag_aclmanager):
_translate = QtCore.QCoreApplication.translate
diag_aclmanager.setWindowTitle(_translate("diag_aclmanager", "IP access control list"))
self.gb_acls.setTitle(_translate("diag_aclmanager", "Existing ACLs"))
item = self.tb_acls.horizontalHeaderItem(0)
item.setText(_translate("diag_aclmanager", "IP Address"))
item = self.tb_acls.horizontalHeaderItem(1)
item.setText(_translate("diag_aclmanager", "Access Level"))
self.btn_edit.setText(_translate("diag_aclmanager", "&Edit"))
self.btn_remove.setText(_translate("diag_aclmanager", "&Remove"))
self.gb_edit.setTitle(_translate("diag_aclmanager", "Add / Edit access entry"))
self.btn_clear.setText(_translate("diag_aclmanager", "Clear fields"))
self.btn_add.setText(_translate("diag_aclmanager", "&Save entry"))
self.lbl_ip.setText(_translate("diag_aclmanager", "IP address:"))
self.lbl_level.setText(_translate("diag_aclmanager", "Access level:"))
self.lbl_ip_a.setText(_translate("diag_aclmanager", "."))
self.lbl_ip_b.setText(_translate("diag_aclmanager", "."))
self.lbl_ip_c.setText(_translate("diag_aclmanager", "."))
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
diag_aclmanager = QtWidgets.QDialog()
ui = Ui_diag_aclmanager()
ui.setupUi(diag_aclmanager)
diag_aclmanager.show()
sys.exit(app.exec_())

View File

@@ -0,0 +1,93 @@
# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'avahisearch.ui'
#
# Created by: PyQt5 UI code generator 5.10.1
#
# WARNING! All changes made in this file will be lost!
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_diag_search(object):
def setupUi(self, diag_search):
diag_search.setObjectName("diag_search")
diag_search.resize(480, 360)
self.gridLayout = QtWidgets.QGridLayout(diag_search)
self.gridLayout.setObjectName("gridLayout")
self.hl_header = QtWidgets.QHBoxLayout()
self.hl_header.setObjectName("hl_header")
self.lbl_search = QtWidgets.QLabel(diag_search)
self.lbl_search.setObjectName("lbl_search")
self.hl_header.addWidget(self.lbl_search)
self.btn_restart = QtWidgets.QPushButton(diag_search)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Maximum, QtWidgets.QSizePolicy.Fixed)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.btn_restart.sizePolicy().hasHeightForWidth())
self.btn_restart.setSizePolicy(sizePolicy)
self.btn_restart.setText("")
icon = QtGui.QIcon()
icon.addPixmap(QtGui.QPixmap(":/action/ico/reload.ico"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
self.btn_restart.setIcon(icon)
self.btn_restart.setIconSize(QtCore.QSize(24, 24))
self.btn_restart.setObjectName("btn_restart")
self.hl_header.addWidget(self.btn_restart)
self.gridLayout.addLayout(self.hl_header, 0, 0, 1, 2)
self.tb_revpi = QtWidgets.QTableWidget(diag_search)
self.tb_revpi.setEditTriggers(QtWidgets.QAbstractItemView.NoEditTriggers)
self.tb_revpi.setTabKeyNavigation(False)
self.tb_revpi.setSelectionMode(QtWidgets.QAbstractItemView.SingleSelection)
self.tb_revpi.setSelectionBehavior(QtWidgets.QAbstractItemView.SelectRows)
self.tb_revpi.setWordWrap(False)
self.tb_revpi.setCornerButtonEnabled(False)
self.tb_revpi.setObjectName("tb_revpi")
self.tb_revpi.setColumnCount(2)
self.tb_revpi.setRowCount(0)
item = QtWidgets.QTableWidgetItem()
self.tb_revpi.setHorizontalHeaderItem(0, item)
item = QtWidgets.QTableWidgetItem()
self.tb_revpi.setHorizontalHeaderItem(1, item)
self.tb_revpi.horizontalHeader().setHighlightSections(False)
self.tb_revpi.horizontalHeader().setStretchLastSection(True)
self.tb_revpi.verticalHeader().setVisible(False)
self.gridLayout.addWidget(self.tb_revpi, 1, 0, 1, 2)
self.btn_connect = QtWidgets.QPushButton(diag_search)
self.btn_connect.setObjectName("btn_connect")
self.gridLayout.addWidget(self.btn_connect, 2, 0, 1, 1)
self.btn_save = QtWidgets.QPushButton(diag_search)
self.btn_save.setObjectName("btn_save")
self.gridLayout.addWidget(self.btn_save, 2, 1, 1, 1)
self.btn_box = QtWidgets.QDialogButtonBox(diag_search)
self.btn_box.setOrientation(QtCore.Qt.Horizontal)
self.btn_box.setStandardButtons(QtWidgets.QDialogButtonBox.Close)
self.btn_box.setObjectName("btn_box")
self.gridLayout.addWidget(self.btn_box, 3, 0, 1, 2)
self.retranslateUi(diag_search)
self.btn_box.rejected.connect(diag_search.reject)
QtCore.QMetaObject.connectSlotsByName(diag_search)
def retranslateUi(self, diag_search):
_translate = QtCore.QCoreApplication.translate
diag_search.setWindowTitle(_translate("diag_search", "Search Revolution Pi devices"))
self.lbl_search.setText(_translate("diag_search", "Searching for Revolution Pi devices in your network..."))
self.btn_restart.setToolTip(_translate("diag_search", "Restart search"))
self.tb_revpi.setSortingEnabled(True)
item = self.tb_revpi.horizontalHeaderItem(0)
item.setText(_translate("diag_search", "Zero conf Name"))
item = self.tb_revpi.horizontalHeaderItem(1)
item.setText(_translate("diag_search", "IP address"))
self.btn_connect.setText(_translate("diag_search", "&Connect to Revolution Pi"))
self.btn_save.setText(_translate("diag_search", "&Save connection"))
from . import ressources_rc
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
diag_search = QtWidgets.QDialog()
ui = Ui_diag_search()
ui.setupUi(diag_search)
diag_search.show()
sys.exit(app.exec_())

View File

@@ -0,0 +1,83 @@
# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'debugcontrol.ui'
#
# Created by: PyQt5 UI code generator 5.10.1
#
# WARNING! All changes made in this file will be lost!
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_wid_debugcontrol(object):
def setupUi(self, wid_debugcontrol):
wid_debugcontrol.setObjectName("wid_debugcontrol")
wid_debugcontrol.resize(402, 214)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Minimum)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(wid_debugcontrol.sizePolicy().hasHeightForWidth())
wid_debugcontrol.setSizePolicy(sizePolicy)
self.gridLayout = QtWidgets.QGridLayout(wid_debugcontrol)
self.gridLayout.setContentsMargins(0, 0, 0, 0)
self.gridLayout.setObjectName("gridLayout")
self.gb_devices = QtWidgets.QGroupBox(wid_debugcontrol)
self.gb_devices.setObjectName("gb_devices")
self.vl_devices = QtWidgets.QVBoxLayout(self.gb_devices)
self.vl_devices.setObjectName("vl_devices")
self.gridLayout.addWidget(self.gb_devices, 0, 0, 1, 1)
self.cbx_stay_on_top = QtWidgets.QCheckBox(wid_debugcontrol)
self.cbx_stay_on_top.setObjectName("cbx_stay_on_top")
self.gridLayout.addWidget(self.cbx_stay_on_top, 1, 0, 1, 1)
self.gb_control = QtWidgets.QGroupBox(wid_debugcontrol)
self.gb_control.setObjectName("gb_control")
self.verticalLayout = QtWidgets.QVBoxLayout(self.gb_control)
self.verticalLayout.setObjectName("verticalLayout")
self.btn_read_io = QtWidgets.QPushButton(self.gb_control)
self.btn_read_io.setObjectName("btn_read_io")
self.verticalLayout.addWidget(self.btn_read_io)
self.btn_refresh_io = QtWidgets.QPushButton(self.gb_control)
self.btn_refresh_io.setObjectName("btn_refresh_io")
self.verticalLayout.addWidget(self.btn_refresh_io)
self.btn_write_o = QtWidgets.QPushButton(self.gb_control)
self.btn_write_o.setObjectName("btn_write_o")
self.verticalLayout.addWidget(self.btn_write_o)
self.cbx_refresh = QtWidgets.QCheckBox(self.gb_control)
self.cbx_refresh.setObjectName("cbx_refresh")
self.verticalLayout.addWidget(self.cbx_refresh)
self.cbx_write = QtWidgets.QCheckBox(self.gb_control)
self.cbx_write.setObjectName("cbx_write")
self.verticalLayout.addWidget(self.cbx_write)
spacerItem = QtWidgets.QSpacerItem(20, 1, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
self.verticalLayout.addItem(spacerItem)
self.gridLayout.addWidget(self.gb_control, 0, 1, 2, 1)
self.retranslateUi(wid_debugcontrol)
QtCore.QMetaObject.connectSlotsByName(wid_debugcontrol)
def retranslateUi(self, wid_debugcontrol):
_translate = QtCore.QCoreApplication.translate
self.gb_devices.setTitle(_translate("wid_debugcontrol", "Revolution Pi devices"))
self.cbx_stay_on_top.setText(_translate("wid_debugcontrol", "Open to stay on top"))
self.gb_control.setTitle(_translate("wid_debugcontrol", "IO Control"))
self.btn_read_io.setToolTip(_translate("wid_debugcontrol", "Read all IO values and discard local changes (F4)"))
self.btn_read_io.setText(_translate("wid_debugcontrol", "Read &all IO values"))
self.btn_read_io.setShortcut(_translate("wid_debugcontrol", "F4"))
self.btn_refresh_io.setToolTip(_translate("wid_debugcontrol", "Refresh all IO values which are locally not changed (F5)"))
self.btn_refresh_io.setText(_translate("wid_debugcontrol", "&Refresh unchanged IOs"))
self.btn_refresh_io.setShortcut(_translate("wid_debugcontrol", "F5"))
self.btn_write_o.setToolTip(_translate("wid_debugcontrol", "Write locally changed output values to process image (F6)"))
self.btn_write_o.setText(_translate("wid_debugcontrol", "&Write changed outputs"))
self.btn_write_o.setShortcut(_translate("wid_debugcontrol", "F6"))
self.cbx_refresh.setText(_translate("wid_debugcontrol", "&Auto refresh values"))
self.cbx_write.setText(_translate("wid_debugcontrol", "and write outputs"))
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
wid_debugcontrol = QtWidgets.QWidget()
ui = Ui_wid_debugcontrol()
ui.setupUi(wid_debugcontrol)
wid_debugcontrol.show()
sys.exit(app.exec_())

75
include/ui/debugios_ui.py Normal file
View File

@@ -0,0 +1,75 @@
# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'debugios.ui'
#
# Created by: PyQt5 UI code generator 5.10.1
#
# WARNING! All changes made in this file will be lost!
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_win_debugios(object):
def setupUi(self, win_debugios):
win_debugios.setObjectName("win_debugios")
win_debugios.resize(434, 343)
self.centralwidget = QtWidgets.QWidget(win_debugios)
self.centralwidget.setObjectName("centralwidget")
self.verticalLayout = QtWidgets.QVBoxLayout(self.centralwidget)
self.verticalLayout.setObjectName("verticalLayout")
self.gb_io = QtWidgets.QGroupBox(self.centralwidget)
self.gb_io.setObjectName("gb_io")
self.verticalLayout_2 = QtWidgets.QVBoxLayout(self.gb_io)
self.verticalLayout_2.setContentsMargins(0, 0, 0, 0)
self.verticalLayout_2.setObjectName("verticalLayout_2")
self.splitter = QtWidgets.QSplitter(self.gb_io)
self.splitter.setOrientation(QtCore.Qt.Horizontal)
self.splitter.setChildrenCollapsible(False)
self.splitter.setObjectName("splitter")
self.sca_inp = QtWidgets.QScrollArea(self.splitter)
self.sca_inp.setLineWidth(0)
self.sca_inp.setWidgetResizable(True)
self.sca_inp.setObjectName("sca_inp")
self.saw_inp = QtWidgets.QWidget()
self.saw_inp.setGeometry(QtCore.QRect(0, 0, 201, 275))
self.saw_inp.setObjectName("saw_inp")
self.form_inp = QtWidgets.QFormLayout(self.saw_inp)
self.form_inp.setLabelAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
self.form_inp.setContentsMargins(-1, 6, -1, 6)
self.form_inp.setObjectName("form_inp")
self.sca_inp.setWidget(self.saw_inp)
self.sca_out = QtWidgets.QScrollArea(self.splitter)
self.sca_out.setLineWidth(0)
self.sca_out.setWidgetResizable(True)
self.sca_out.setObjectName("sca_out")
self.saw_out = QtWidgets.QWidget()
self.saw_out.setGeometry(QtCore.QRect(0, 0, 201, 275))
self.saw_out.setObjectName("saw_out")
self.form_out = QtWidgets.QFormLayout(self.saw_out)
self.form_out.setLabelAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
self.form_out.setContentsMargins(-1, 6, -1, 6)
self.form_out.setObjectName("form_out")
self.sca_out.setWidget(self.saw_out)
self.verticalLayout_2.addWidget(self.splitter)
self.verticalLayout.addWidget(self.gb_io)
win_debugios.setCentralWidget(self.centralwidget)
self.stat_bar = QtWidgets.QStatusBar(win_debugios)
self.stat_bar.setObjectName("stat_bar")
win_debugios.setStatusBar(self.stat_bar)
self.retranslateUi(win_debugios)
QtCore.QMetaObject.connectSlotsByName(win_debugios)
def retranslateUi(self, win_debugios):
_translate = QtCore.QCoreApplication.translate
self.gb_io.setTitle(_translate("win_debugios", "{0}: Inputs | Outputs"))
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
win_debugios = QtWidgets.QMainWindow()
ui = Ui_win_debugios()
ui.setupUi(win_debugios)
win_debugios.show()
sys.exit(app.exec_())

View File

@@ -0,0 +1,155 @@
# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'mqttmanager.ui'
#
# Created by: PyQt5 UI code generator 5.10.1
#
# WARNING! All changes made in this file will be lost!
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_diag_mqtt(object):
def setupUi(self, diag_mqtt):
diag_mqtt.setObjectName("diag_mqtt")
diag_mqtt.resize(492, 704)
self.verticalLayout = QtWidgets.QVBoxLayout(diag_mqtt)
self.verticalLayout.setObjectName("verticalLayout")
self.gb_basetopic = QtWidgets.QGroupBox(diag_mqtt)
self.gb_basetopic.setObjectName("gb_basetopic")
self.gridLayout = QtWidgets.QGridLayout(self.gb_basetopic)
self.gridLayout.setObjectName("gridLayout")
self.lbl_basetopic_description = QtWidgets.QLabel(self.gb_basetopic)
self.lbl_basetopic_description.setMaximumSize(QtCore.QSize(450, 16777215))
self.lbl_basetopic_description.setWordWrap(True)
self.lbl_basetopic_description.setObjectName("lbl_basetopic_description")
self.gridLayout.addWidget(self.lbl_basetopic_description, 1, 0, 1, 4)
self.lbl_basetopic = QtWidgets.QLabel(self.gb_basetopic)
self.lbl_basetopic.setObjectName("lbl_basetopic")
self.gridLayout.addWidget(self.lbl_basetopic, 0, 0, 1, 1)
self.txt_basetopic = QtWidgets.QLineEdit(self.gb_basetopic)
self.txt_basetopic.setObjectName("txt_basetopic")
self.gridLayout.addWidget(self.txt_basetopic, 0, 1, 1, 1)
self.verticalLayout.addWidget(self.gb_basetopic)
self.gb_send_on_event = QtWidgets.QGroupBox(diag_mqtt)
self.gb_send_on_event.setObjectName("gb_send_on_event")
self.gridLayout_2 = QtWidgets.QGridLayout(self.gb_send_on_event)
self.gridLayout_2.setObjectName("gridLayout_2")
self.lbl_sendinterval = QtWidgets.QLabel(self.gb_send_on_event)
self.lbl_sendinterval.setObjectName("lbl_sendinterval")
self.gridLayout_2.addWidget(self.lbl_sendinterval, 0, 0, 1, 1)
self.sbx_sendinterval = QtWidgets.QSpinBox(self.gb_send_on_event)
self.sbx_sendinterval.setMinimum(1)
self.sbx_sendinterval.setMaximum(21600)
self.sbx_sendinterval.setObjectName("sbx_sendinterval")
self.gridLayout_2.addWidget(self.sbx_sendinterval, 0, 1, 1, 1)
self.lbl_topic_io = QtWidgets.QLabel(self.gb_send_on_event)
self.lbl_topic_io.setObjectName("lbl_topic_io")
self.gridLayout_2.addWidget(self.lbl_topic_io, 1, 0, 1, 2)
self.cbx_send_on_event = QtWidgets.QCheckBox(self.gb_send_on_event)
self.cbx_send_on_event.setObjectName("cbx_send_on_event")
self.gridLayout_2.addWidget(self.cbx_send_on_event, 2, 0, 1, 2)
self.lbl_topic_event = QtWidgets.QLabel(self.gb_send_on_event)
self.lbl_topic_event.setObjectName("lbl_topic_event")
self.gridLayout_2.addWidget(self.lbl_topic_event, 3, 0, 1, 2)
self.verticalLayout.addWidget(self.gb_send_on_event)
self.gb_write_outputs = QtWidgets.QGroupBox(diag_mqtt)
self.gb_write_outputs.setObjectName("gb_write_outputs")
self.gridLayout_3 = QtWidgets.QGridLayout(self.gb_write_outputs)
self.gridLayout_3.setObjectName("gridLayout_3")
self.lbl_write_outputs = QtWidgets.QLabel(self.gb_write_outputs)
self.lbl_write_outputs.setMaximumSize(QtCore.QSize(450, 16777215))
self.lbl_write_outputs.setWordWrap(True)
self.lbl_write_outputs.setObjectName("lbl_write_outputs")
self.gridLayout_3.addWidget(self.lbl_write_outputs, 1, 0, 1, 1)
self.cbx_write_outputs = QtWidgets.QCheckBox(self.gb_write_outputs)
self.cbx_write_outputs.setObjectName("cbx_write_outputs")
self.gridLayout_3.addWidget(self.cbx_write_outputs, 0, 0, 1, 1)
self.verticalLayout.addWidget(self.gb_write_outputs)
self.gb_broker = QtWidgets.QGroupBox(diag_mqtt)
self.gb_broker.setObjectName("gb_broker")
self.formLayout = QtWidgets.QFormLayout(self.gb_broker)
self.formLayout.setObjectName("formLayout")
self.lbl_broker_address = QtWidgets.QLabel(self.gb_broker)
self.lbl_broker_address.setObjectName("lbl_broker_address")
self.formLayout.setWidget(0, QtWidgets.QFormLayout.LabelRole, self.lbl_broker_address)
self.txt_broker_address = QtWidgets.QLineEdit(self.gb_broker)
self.txt_broker_address.setObjectName("txt_broker_address")
self.formLayout.setWidget(0, QtWidgets.QFormLayout.FieldRole, self.txt_broker_address)
self.lbl_port = QtWidgets.QLabel(self.gb_broker)
self.lbl_port.setObjectName("lbl_port")
self.formLayout.setWidget(1, QtWidgets.QFormLayout.LabelRole, self.lbl_port)
self.lbl_username = QtWidgets.QLabel(self.gb_broker)
self.lbl_username.setObjectName("lbl_username")
self.formLayout.setWidget(2, QtWidgets.QFormLayout.LabelRole, self.lbl_username)
self.lbl_password = QtWidgets.QLabel(self.gb_broker)
self.lbl_password.setObjectName("lbl_password")
self.formLayout.setWidget(3, QtWidgets.QFormLayout.LabelRole, self.lbl_password)
self.lbl_client_id = QtWidgets.QLabel(self.gb_broker)
self.lbl_client_id.setObjectName("lbl_client_id")
self.formLayout.setWidget(4, QtWidgets.QFormLayout.LabelRole, self.lbl_client_id)
self.txt_username = QtWidgets.QLineEdit(self.gb_broker)
self.txt_username.setObjectName("txt_username")
self.formLayout.setWidget(2, QtWidgets.QFormLayout.FieldRole, self.txt_username)
self.txt_password = QtWidgets.QLineEdit(self.gb_broker)
self.txt_password.setObjectName("txt_password")
self.formLayout.setWidget(3, QtWidgets.QFormLayout.FieldRole, self.txt_password)
self.txt_client_id = QtWidgets.QLineEdit(self.gb_broker)
self.txt_client_id.setObjectName("txt_client_id")
self.formLayout.setWidget(4, QtWidgets.QFormLayout.FieldRole, self.txt_client_id)
self.horizontalLayout = QtWidgets.QHBoxLayout()
self.horizontalLayout.setObjectName("horizontalLayout")
self.sbx_port = QtWidgets.QSpinBox(self.gb_broker)
self.sbx_port.setMinimum(1)
self.sbx_port.setMaximum(65535)
self.sbx_port.setObjectName("sbx_port")
self.horizontalLayout.addWidget(self.sbx_port)
self.cbx_tls_set = QtWidgets.QCheckBox(self.gb_broker)
self.cbx_tls_set.setObjectName("cbx_tls_set")
self.horizontalLayout.addWidget(self.cbx_tls_set)
self.formLayout.setLayout(1, QtWidgets.QFormLayout.FieldRole, self.horizontalLayout)
self.verticalLayout.addWidget(self.gb_broker)
self.btn_box = QtWidgets.QDialogButtonBox(diag_mqtt)
self.btn_box.setOrientation(QtCore.Qt.Horizontal)
self.btn_box.setStandardButtons(QtWidgets.QDialogButtonBox.Cancel|QtWidgets.QDialogButtonBox.Ok)
self.btn_box.setObjectName("btn_box")
self.verticalLayout.addWidget(self.btn_box)
self.retranslateUi(diag_mqtt)
self.btn_box.accepted.connect(diag_mqtt.accept)
self.btn_box.rejected.connect(diag_mqtt.reject)
QtCore.QMetaObject.connectSlotsByName(diag_mqtt)
def retranslateUi(self, diag_mqtt):
_translate = QtCore.QCoreApplication.translate
diag_mqtt.setWindowTitle(_translate("diag_mqtt", "MQTT settings"))
self.gb_basetopic.setTitle(_translate("diag_mqtt", "Base topic"))
self.lbl_basetopic_description.setText(_translate("diag_mqtt", "<html><head/><body><p>The base topic is the first part of any mqtt topic, the Revolution Pi will publish. You can use any character includig \'/\' to structure the messages on your broker.</p><p>For example: revpi0000/data</p></body></html>"))
self.lbl_basetopic.setText(_translate("diag_mqtt", "Base topic:"))
self.gb_send_on_event.setTitle(_translate("diag_mqtt", "Publish settings"))
self.lbl_sendinterval.setText(_translate("diag_mqtt", "Publish all exported values every n seconds:"))
self.lbl_topic_io.setText(_translate("diag_mqtt", "Topic: [basetopic]/io/[ioname]"))
self.cbx_send_on_event.setText(_translate("diag_mqtt", "Send exported values immediately on value change"))
self.lbl_topic_event.setText(_translate("diag_mqtt", "Topic: [basetopic]/event/[ioname]"))
self.gb_write_outputs.setTitle(_translate("diag_mqtt", "Set outputs"))
self.lbl_write_outputs.setText(_translate("diag_mqtt", "The Revolution Pi will subscribe a topic on which your mqtt client can publish messages with the new io value as payload.\n"
"\n"
"Publish values with topic: [basetopic]/set/[outputname]"))
self.cbx_write_outputs.setText(_translate("diag_mqtt", "Allow MQTT to to set outputs on Revolution Pi"))
self.gb_broker.setTitle(_translate("diag_mqtt", "Brocker settings"))
self.lbl_broker_address.setText(_translate("diag_mqtt", "Broker address:"))
self.lbl_port.setText(_translate("diag_mqtt", "Broker port:"))
self.lbl_username.setText(_translate("diag_mqtt", "User name:"))
self.lbl_password.setText(_translate("diag_mqtt", "Password:"))
self.lbl_client_id.setText(_translate("diag_mqtt", "Client ID:"))
self.cbx_tls_set.setText(_translate("diag_mqtt", "Use TLS"))
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
diag_mqtt = QtWidgets.QDialog()
ui = Ui_diag_mqtt()
ui.setupUi(diag_mqtt)
diag_mqtt.show()
sys.exit(app.exec_())

2761
include/ui/ressources_rc.py Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,167 @@
# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'revpicommander.ui'
#
# Created by: PyQt5 UI code generator 5.10.1
#
# WARNING! All changes made in this file will be lost!
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_win_revpicommander(object):
def setupUi(self, win_revpicommander):
win_revpicommander.setObjectName("win_revpicommander")
win_revpicommander.resize(318, 273)
icon = QtGui.QIcon()
icon.addPixmap(QtGui.QPixmap(":/main/ico/revpipycontrol.ico"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
win_revpicommander.setWindowIcon(icon)
self.centralwidget = QtWidgets.QWidget(win_revpicommander)
self.centralwidget.setObjectName("centralwidget")
self.gl = QtWidgets.QGridLayout(self.centralwidget)
self.gl.setObjectName("gl")
self.txt_connection = QtWidgets.QLineEdit(self.centralwidget)
self.txt_connection.setFocusPolicy(QtCore.Qt.NoFocus)
self.txt_connection.setReadOnly(True)
self.txt_connection.setObjectName("txt_connection")
self.gl.addWidget(self.txt_connection, 0, 0, 1, 1)
self.btn_plc_start = QtWidgets.QPushButton(self.centralwidget)
self.btn_plc_start.setObjectName("btn_plc_start")
self.gl.addWidget(self.btn_plc_start, 1, 0, 1, 1)
self.btn_plc_stop = QtWidgets.QPushButton(self.centralwidget)
self.btn_plc_stop.setObjectName("btn_plc_stop")
self.gl.addWidget(self.btn_plc_stop, 2, 0, 1, 1)
self.btn_plc_restart = QtWidgets.QPushButton(self.centralwidget)
self.btn_plc_restart.setObjectName("btn_plc_restart")
self.gl.addWidget(self.btn_plc_restart, 3, 0, 1, 1)
self.btn_plc_logs = QtWidgets.QPushButton(self.centralwidget)
self.btn_plc_logs.setObjectName("btn_plc_logs")
self.gl.addWidget(self.btn_plc_logs, 4, 0, 1, 1)
self.txt_status = QtWidgets.QLineEdit(self.centralwidget)
self.txt_status.setFocusPolicy(QtCore.Qt.NoFocus)
self.txt_status.setAlignment(QtCore.Qt.AlignCenter)
self.txt_status.setReadOnly(True)
self.txt_status.setObjectName("txt_status")
self.gl.addWidget(self.txt_status, 5, 0, 1, 1)
self.btn_plc_debug = QtWidgets.QPushButton(self.centralwidget)
self.btn_plc_debug.setMinimumSize(QtCore.QSize(300, 0))
self.btn_plc_debug.setCheckable(True)
self.btn_plc_debug.setObjectName("btn_plc_debug")
self.gl.addWidget(self.btn_plc_debug, 6, 0, 1, 1)
win_revpicommander.setCentralWidget(self.centralwidget)
self.menubar = QtWidgets.QMenuBar(win_revpicommander)
self.menubar.setGeometry(QtCore.QRect(0, 0, 318, 22))
self.menubar.setObjectName("menubar")
self.men_file = QtWidgets.QMenu(self.menubar)
self.men_file.setObjectName("men_file")
self.men_help = QtWidgets.QMenu(self.menubar)
self.men_help.setObjectName("men_help")
self.men_plc = QtWidgets.QMenu(self.menubar)
self.men_plc.setObjectName("men_plc")
self.men_connections = QtWidgets.QMenu(self.menubar)
self.men_connections.setObjectName("men_connections")
win_revpicommander.setMenuBar(self.menubar)
self.statusbar = QtWidgets.QStatusBar(win_revpicommander)
self.statusbar.setSizeGripEnabled(False)
self.statusbar.setObjectName("statusbar")
win_revpicommander.setStatusBar(self.statusbar)
self.act_connections = QtWidgets.QAction(win_revpicommander)
self.act_connections.setObjectName("act_connections")
self.act_search = QtWidgets.QAction(win_revpicommander)
self.act_search.setObjectName("act_search")
self.act_quit = QtWidgets.QAction(win_revpicommander)
self.act_quit.setObjectName("act_quit")
self.act_webpage = QtWidgets.QAction(win_revpicommander)
self.act_webpage.setObjectName("act_webpage")
self.act_info = QtWidgets.QAction(win_revpicommander)
self.act_info.setObjectName("act_info")
self.act_logs = QtWidgets.QAction(win_revpicommander)
self.act_logs.setObjectName("act_logs")
self.act_options = QtWidgets.QAction(win_revpicommander)
self.act_options.setObjectName("act_options")
self.act_program = QtWidgets.QAction(win_revpicommander)
self.act_program.setObjectName("act_program")
self.act_developer = QtWidgets.QAction(win_revpicommander)
self.act_developer.setCheckable(True)
self.act_developer.setObjectName("act_developer")
self.act_pictory = QtWidgets.QAction(win_revpicommander)
self.act_pictory.setObjectName("act_pictory")
self.act_disconnect = QtWidgets.QAction(win_revpicommander)
self.act_disconnect.setObjectName("act_disconnect")
self.act_reset = QtWidgets.QAction(win_revpicommander)
self.act_reset.setObjectName("act_reset")
self.act_simulator = QtWidgets.QAction(win_revpicommander)
self.act_simulator.setObjectName("act_simulator")
self.men_file.addAction(self.act_connections)
self.men_file.addAction(self.act_search)
self.men_file.addSeparator()
self.men_file.addAction(self.act_simulator)
self.men_file.addSeparator()
self.men_file.addAction(self.act_quit)
self.men_help.addAction(self.act_webpage)
self.men_help.addSeparator()
self.men_help.addAction(self.act_info)
self.men_plc.addAction(self.act_logs)
self.men_plc.addAction(self.act_options)
self.men_plc.addAction(self.act_program)
self.men_plc.addAction(self.act_developer)
self.men_plc.addSeparator()
self.men_plc.addAction(self.act_pictory)
self.men_plc.addAction(self.act_reset)
self.men_plc.addSeparator()
self.men_plc.addAction(self.act_disconnect)
self.menubar.addAction(self.men_file.menuAction())
self.menubar.addAction(self.men_plc.menuAction())
self.menubar.addAction(self.men_connections.menuAction())
self.menubar.addAction(self.men_help.menuAction())
self.retranslateUi(win_revpicommander)
self.act_quit.triggered.connect(win_revpicommander.close)
QtCore.QMetaObject.connectSlotsByName(win_revpicommander)
win_revpicommander.setTabOrder(self.btn_plc_start, self.btn_plc_stop)
win_revpicommander.setTabOrder(self.btn_plc_stop, self.btn_plc_restart)
win_revpicommander.setTabOrder(self.btn_plc_restart, self.btn_plc_logs)
win_revpicommander.setTabOrder(self.btn_plc_logs, self.btn_plc_debug)
def retranslateUi(self, win_revpicommander):
_translate = QtCore.QCoreApplication.translate
win_revpicommander.setWindowTitle(_translate("win_revpicommander", "RevPi Python PLC Commander"))
self.btn_plc_start.setText(_translate("win_revpicommander", "PLC &start"))
self.btn_plc_stop.setText(_translate("win_revpicommander", "PLC s&top"))
self.btn_plc_restart.setText(_translate("win_revpicommander", "PLC restart"))
self.btn_plc_logs.setText(_translate("win_revpicommander", "PLC &logs"))
self.btn_plc_debug.setText(_translate("win_revpicommander", "PLC watch &mode"))
self.men_file.setTitle(_translate("win_revpicommander", "&File"))
self.men_help.setTitle(_translate("win_revpicommander", "&Help"))
self.men_plc.setTitle(_translate("win_revpicommander", "&PLC"))
self.men_connections.setTitle(_translate("win_revpicommander", "&Connections"))
self.act_connections.setText(_translate("win_revpicommander", "&Connections..."))
self.act_search.setText(_translate("win_revpicommander", "&Search Revolution Pi..."))
self.act_search.setShortcut(_translate("win_revpicommander", "Ctrl+F"))
self.act_quit.setText(_translate("win_revpicommander", "&Quit"))
self.act_webpage.setText(_translate("win_revpicommander", "Visit &webpage..."))
self.act_info.setText(_translate("win_revpicommander", "&Info..."))
self.act_logs.setText(_translate("win_revpicommander", "PLC &logs..."))
self.act_logs.setShortcut(_translate("win_revpicommander", "F3"))
self.act_options.setText(_translate("win_revpicommander", "PLC &options..."))
self.act_options.setShortcut(_translate("win_revpicommander", "Ctrl+O"))
self.act_program.setText(_translate("win_revpicommander", "PLC progra&m..."))
self.act_program.setShortcut(_translate("win_revpicommander", "Ctrl+P"))
self.act_developer.setText(_translate("win_revpicommander", "PLC de&veloper..."))
self.act_developer.setShortcut(_translate("win_revpicommander", "F9"))
self.act_pictory.setText(_translate("win_revpicommander", "piCtory configuraiton..."))
self.act_disconnect.setText(_translate("win_revpicommander", "&Disconnect"))
self.act_disconnect.setShortcut(_translate("win_revpicommander", "Ctrl+X"))
self.act_reset.setText(_translate("win_revpicommander", "Reset driver..."))
self.act_simulator.setText(_translate("win_revpicommander", "Start local si&mulator..."))
from . import ressources_rc
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
win_revpicommander = QtWidgets.QMainWindow()
ui = Ui_win_revpicommander()
ui.setupUi(win_revpicommander)
win_revpicommander.show()
sys.exit(app.exec_())

View File

@@ -0,0 +1,88 @@
# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'revpidevelop.ui'
#
# Created by: PyQt5 UI code generator 5.10.1
#
# WARNING! All changes made in this file will be lost!
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_wid_develop(object):
def setupUi(self, wid_develop):
wid_develop.setObjectName("wid_develop")
wid_develop.resize(374, 444)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.MinimumExpanding)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(wid_develop.sizePolicy().hasHeightForWidth())
wid_develop.setSizePolicy(sizePolicy)
self.gridLayout = QtWidgets.QGridLayout(wid_develop)
self.gridLayout.setContentsMargins(0, 0, 0, 0)
self.gridLayout.setObjectName("gridLayout")
self.btn_all = QtWidgets.QPushButton(wid_develop)
self.btn_all.setObjectName("btn_all")
self.gridLayout.addWidget(self.btn_all, 2, 0, 1, 1)
self.btn_upload = QtWidgets.QPushButton(wid_develop)
self.btn_upload.setObjectName("btn_upload")
self.gridLayout.addWidget(self.btn_upload, 2, 1, 1, 1)
self.tree_files = QtWidgets.QTreeWidget(wid_develop)
self.tree_files.setEditTriggers(QtWidgets.QAbstractItemView.NoEditTriggers)
self.tree_files.setSelectionMode(QtWidgets.QAbstractItemView.MultiSelection)
self.tree_files.setSelectionBehavior(QtWidgets.QAbstractItemView.SelectRows)
self.tree_files.setIconSize(QtCore.QSize(24, 24))
self.tree_files.setObjectName("tree_files")
self.tree_files.headerItem().setText(0, "1")
self.tree_files.header().setVisible(False)
self.gridLayout.addWidget(self.tree_files, 1, 0, 1, 2)
self.gb_select = QtWidgets.QGroupBox(wid_develop)
self.gb_select.setObjectName("gb_select")
self.gridLayout_2 = QtWidgets.QGridLayout(self.gb_select)
self.gridLayout_2.setObjectName("gridLayout_2")
self.lbl_select = QtWidgets.QLabel(self.gb_select)
self.lbl_select.setObjectName("lbl_select")
self.gridLayout_2.addWidget(self.lbl_select, 0, 0, 1, 1)
self.btn_select = QtWidgets.QPushButton(self.gb_select)
icon = QtGui.QIcon()
icon.addPixmap(QtGui.QPixmap(":/action/ico/folder-open.ico"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
self.btn_select.setIcon(icon)
self.btn_select.setIconSize(QtCore.QSize(24, 24))
self.btn_select.setObjectName("btn_select")
self.gridLayout_2.addWidget(self.btn_select, 0, 1, 1, 1)
self.lbl_path = QtWidgets.QLabel(self.gb_select)
self.lbl_path.setObjectName("lbl_path")
self.gridLayout_2.addWidget(self.lbl_path, 1, 0, 1, 2)
self.btn_refresh = QtWidgets.QPushButton(self.gb_select)
icon1 = QtGui.QIcon()
icon1.addPixmap(QtGui.QPixmap(":/action/ico/refresh.ico"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
self.btn_refresh.setIcon(icon1)
self.btn_refresh.setIconSize(QtCore.QSize(24, 24))
self.btn_refresh.setObjectName("btn_refresh")
self.gridLayout_2.addWidget(self.btn_refresh, 0, 2, 1, 1)
self.gridLayout_2.setColumnStretch(0, 1)
self.gridLayout.addWidget(self.gb_select, 0, 0, 1, 2)
self.retranslateUi(wid_develop)
QtCore.QMetaObject.connectSlotsByName(wid_develop)
def retranslateUi(self, wid_develop):
_translate = QtCore.QCoreApplication.translate
self.btn_all.setText(_translate("wid_develop", "Stop / Upload / Start"))
self.btn_upload.setText(_translate("wid_develop", "Just upload"))
self.gb_select.setTitle(_translate("wid_develop", "File watcher for PLC development"))
self.lbl_select.setText(_translate("wid_develop", "Path to development root:"))
self.btn_select.setToolTip(_translate("wid_develop", "Open developer root directory"))
self.lbl_path.setText(_translate("wid_develop", "/"))
self.btn_refresh.setToolTip(_translate("wid_develop", "Reload file list"))
from . import ressources_rc
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
wid_develop = QtWidgets.QWidget()
ui = Ui_wid_develop()
ui.setupUi(wid_develop)
wid_develop.show()
sys.exit(app.exec_())

106
include/ui/revpiinfo_ui.py Normal file
View File

@@ -0,0 +1,106 @@
# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'revpiinfo.ui'
#
# Created by: PyQt5 UI code generator 5.10.1
#
# WARNING! All changes made in this file will be lost!
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_diag_revpiinfo(object):
def setupUi(self, diag_revpiinfo):
diag_revpiinfo.setObjectName("diag_revpiinfo")
diag_revpiinfo.resize(627, 398)
self.gridLayout = QtWidgets.QGridLayout(diag_revpiinfo)
self.gridLayout.setObjectName("gridLayout")
self.lbl_head = QtWidgets.QLabel(diag_revpiinfo)
font = QtGui.QFont()
font.setPointSize(20)
font.setBold(True)
font.setWeight(75)
self.lbl_head.setFont(font)
self.lbl_head.setAlignment(QtCore.Qt.AlignCenter)
self.lbl_head.setObjectName("lbl_head")
self.gridLayout.addWidget(self.lbl_head, 0, 0, 1, 3)
self.lbl_lbl_version_pyload = QtWidgets.QLabel(diag_revpiinfo)
font = QtGui.QFont()
font.setBold(True)
font.setWeight(75)
self.lbl_lbl_version_pyload.setFont(font)
self.lbl_lbl_version_pyload.setObjectName("lbl_lbl_version_pyload")
self.gridLayout.addWidget(self.lbl_lbl_version_pyload, 3, 0, 1, 1)
self.lst_files = QtWidgets.QListWidget(diag_revpiinfo)
self.lst_files.setObjectName("lst_files")
self.gridLayout.addWidget(self.lst_files, 3, 2, 4, 1)
self.lbl_version_pyload = QtWidgets.QLabel(diag_revpiinfo)
font = QtGui.QFont()
font.setBold(True)
font.setWeight(75)
self.lbl_version_pyload.setFont(font)
self.lbl_version_pyload.setAlignment(QtCore.Qt.AlignCenter)
self.lbl_version_pyload.setObjectName("lbl_version_pyload")
self.gridLayout.addWidget(self.lbl_version_pyload, 3, 1, 1, 1)
self.lbl_link = QtWidgets.QLabel(diag_revpiinfo)
self.lbl_link.setOpenExternalLinks(True)
self.lbl_link.setObjectName("lbl_link")
self.gridLayout.addWidget(self.lbl_link, 6, 0, 1, 1)
self.btn_box = QtWidgets.QDialogButtonBox(diag_revpiinfo)
self.btn_box.setOrientation(QtCore.Qt.Horizontal)
self.btn_box.setStandardButtons(QtWidgets.QDialogButtonBox.Ok)
self.btn_box.setObjectName("btn_box")
self.gridLayout.addWidget(self.btn_box, 7, 0, 1, 3)
self.horizontalLayout = QtWidgets.QHBoxLayout()
self.horizontalLayout.setObjectName("horizontalLayout")
self.lbl_lbl_version_control = QtWidgets.QLabel(diag_revpiinfo)
font = QtGui.QFont()
font.setPointSize(14)
self.lbl_lbl_version_control.setFont(font)
self.lbl_lbl_version_control.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
self.lbl_lbl_version_control.setObjectName("lbl_lbl_version_control")
self.horizontalLayout.addWidget(self.lbl_lbl_version_control)
self.lbl_version_control = QtWidgets.QLabel(diag_revpiinfo)
font = QtGui.QFont()
font.setPointSize(14)
self.lbl_version_control.setFont(font)
self.lbl_version_control.setObjectName("lbl_version_control")
self.horizontalLayout.addWidget(self.lbl_version_control)
self.gridLayout.addLayout(self.horizontalLayout, 1, 0, 1, 3)
self.lbl_info = QtWidgets.QLabel(diag_revpiinfo)
self.lbl_info.setMinimumSize(QtCore.QSize(300, 0))
self.lbl_info.setWordWrap(True)
self.lbl_info.setObjectName("lbl_info")
self.gridLayout.addWidget(self.lbl_info, 4, 0, 1, 2)
spacerItem = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
self.gridLayout.addItem(spacerItem, 5, 0, 1, 1)
self.retranslateUi(diag_revpiinfo)
self.btn_box.accepted.connect(diag_revpiinfo.accept)
self.btn_box.rejected.connect(diag_revpiinfo.reject)
QtCore.QMetaObject.connectSlotsByName(diag_revpiinfo)
def retranslateUi(self, diag_revpiinfo):
_translate = QtCore.QCoreApplication.translate
diag_revpiinfo.setWindowTitle(_translate("diag_revpiinfo", "Dialog"))
self.lbl_head.setText(_translate("diag_revpiinfo", "RevPi Python PLC - Control"))
self.lbl_lbl_version_pyload.setText(_translate("diag_revpiinfo", "RevPiPyLoad version on RevPi:"))
self.lbl_version_pyload.setText(_translate("diag_revpiinfo", "0.0.0"))
self.lbl_link.setText(_translate("diag_revpiinfo", "<html><head/><body><p><a href=\"https://revpimodio.org/\"><span style=\" text-decoration: underline; color:#0000ff;\">https://revpimodio.org/</span></a></p></body></html>"))
self.lbl_lbl_version_control.setText(_translate("diag_revpiinfo", "Version:"))
self.lbl_version_control.setText(_translate("diag_revpiinfo", "0.0.0"))
self.lbl_info.setText(_translate("diag_revpiinfo", "RevPiModIO, RevPiPyLoad and RevPiPyControl are community driven projects. They are all free and open source software.\n"
"All of them comes with ABSOLUTELY NO WARRANTY, to the extent permitted by\n"
"applicable law.\n"
"\n"
"(c) Sven Sager, License: GPLv3"))
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
diag_revpiinfo = QtWidgets.QDialog()
ui = Ui_diag_revpiinfo()
ui.setupUi(diag_revpiinfo)
diag_revpiinfo.show()
sys.exit(app.exec_())

View File

@@ -0,0 +1,96 @@
# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'revpilogfile.ui'
#
# Created by: PyQt5 UI code generator 5.10.1
#
# WARNING! All changes made in this file will be lost!
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_win_revpilogfile(object):
def setupUi(self, win_revpilogfile):
win_revpilogfile.setObjectName("win_revpilogfile")
win_revpilogfile.resize(796, 347)
self.centralwidget = QtWidgets.QWidget(win_revpilogfile)
self.centralwidget.setObjectName("centralwidget")
self.gridLayout_3 = QtWidgets.QGridLayout(self.centralwidget)
self.gridLayout_3.setObjectName("gridLayout_3")
self.cbx_stay_on_top = QtWidgets.QCheckBox(self.centralwidget)
self.cbx_stay_on_top.setObjectName("cbx_stay_on_top")
self.gridLayout_3.addWidget(self.cbx_stay_on_top, 1, 0, 1, 1)
self.cbx_wrap = QtWidgets.QCheckBox(self.centralwidget)
self.cbx_wrap.setObjectName("cbx_wrap")
self.gridLayout_3.addWidget(self.cbx_wrap, 1, 1, 1, 1)
self.splitter = QtWidgets.QSplitter(self.centralwidget)
self.splitter.setOrientation(QtCore.Qt.Horizontal)
self.splitter.setChildrenCollapsible(False)
self.splitter.setObjectName("splitter")
self.gridLayoutWidget = QtWidgets.QWidget(self.splitter)
self.gridLayoutWidget.setObjectName("gridLayoutWidget")
self.grid_daemon = QtWidgets.QGridLayout(self.gridLayoutWidget)
self.grid_daemon.setContentsMargins(0, 0, 0, 0)
self.grid_daemon.setObjectName("grid_daemon")
self.lbl_daemon = QtWidgets.QLabel(self.gridLayoutWidget)
self.lbl_daemon.setObjectName("lbl_daemon")
self.grid_daemon.addWidget(self.lbl_daemon, 0, 0, 1, 1)
self.btn_daemon = QtWidgets.QPushButton(self.gridLayoutWidget)
self.btn_daemon.setObjectName("btn_daemon")
self.grid_daemon.addWidget(self.btn_daemon, 0, 1, 1, 1)
self.txt_daemon = QtWidgets.QPlainTextEdit(self.gridLayoutWidget)
self.txt_daemon.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOn)
self.txt_daemon.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOn)
self.txt_daemon.setTabChangesFocus(True)
self.txt_daemon.setUndoRedoEnabled(False)
self.txt_daemon.setLineWrapMode(QtWidgets.QPlainTextEdit.NoWrap)
self.txt_daemon.setReadOnly(True)
self.txt_daemon.setObjectName("txt_daemon")
self.grid_daemon.addWidget(self.txt_daemon, 1, 0, 1, 2)
self.grid_daemon.setColumnStretch(0, 1)
self.gridLayoutWidget_2 = QtWidgets.QWidget(self.splitter)
self.gridLayoutWidget_2.setObjectName("gridLayoutWidget_2")
self.grid_app = QtWidgets.QGridLayout(self.gridLayoutWidget_2)
self.grid_app.setContentsMargins(0, 0, 0, 0)
self.grid_app.setObjectName("grid_app")
self.btn_app = QtWidgets.QPushButton(self.gridLayoutWidget_2)
self.btn_app.setObjectName("btn_app")
self.grid_app.addWidget(self.btn_app, 0, 1, 1, 1)
self.lbl_app = QtWidgets.QLabel(self.gridLayoutWidget_2)
self.lbl_app.setObjectName("lbl_app")
self.grid_app.addWidget(self.lbl_app, 0, 0, 1, 1)
self.txt_app = QtWidgets.QPlainTextEdit(self.gridLayoutWidget_2)
self.txt_app.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOn)
self.txt_app.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOn)
self.txt_app.setTabChangesFocus(True)
self.txt_app.setUndoRedoEnabled(False)
self.txt_app.setLineWrapMode(QtWidgets.QPlainTextEdit.NoWrap)
self.txt_app.setReadOnly(True)
self.txt_app.setObjectName("txt_app")
self.grid_app.addWidget(self.txt_app, 1, 0, 1, 2)
self.grid_app.setColumnStretch(0, 1)
self.gridLayout_3.addWidget(self.splitter, 0, 0, 1, 2)
win_revpilogfile.setCentralWidget(self.centralwidget)
self.retranslateUi(win_revpilogfile)
QtCore.QMetaObject.connectSlotsByName(win_revpilogfile)
def retranslateUi(self, win_revpilogfile):
_translate = QtCore.QCoreApplication.translate
win_revpilogfile.setWindowTitle(_translate("win_revpilogfile", "RevPi Python PLC Logfiles"))
self.cbx_stay_on_top.setText(_translate("win_revpilogfile", "Stay on top of all windows"))
self.cbx_wrap.setText(_translate("win_revpilogfile", "Linewrap"))
self.lbl_daemon.setText(_translate("win_revpilogfile", "RevPiPyLoad - Logfile"))
self.btn_daemon.setText(_translate("win_revpilogfile", "Clear view"))
self.btn_app.setText(_translate("win_revpilogfile", "Clear view"))
self.lbl_app.setText(_translate("win_revpilogfile", "Python PLC program - Logfile"))
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
win_revpilogfile = QtWidgets.QMainWindow()
ui = Ui_win_revpilogfile()
ui.setupUi(win_revpilogfile)
win_revpilogfile.show()
sys.exit(app.exec_())

View File

@@ -0,0 +1,144 @@
# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'revpioption.ui'
#
# Created by: PyQt5 UI code generator 5.10.1
#
# WARNING! All changes made in this file will be lost!
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_diag_options(object):
def setupUi(self, diag_options):
diag_options.setObjectName("diag_options")
diag_options.resize(452, 503)
self.verticalLayout = QtWidgets.QVBoxLayout(diag_options)
self.verticalLayout.setObjectName("verticalLayout")
self.gb_plc = QtWidgets.QGroupBox(diag_options)
self.gb_plc.setObjectName("gb_plc")
self.gridLayout = QtWidgets.QGridLayout(self.gb_plc)
self.gridLayout.setObjectName("gridLayout")
self.lbl_replace_io = QtWidgets.QLabel(self.gb_plc)
self.lbl_replace_io.setObjectName("lbl_replace_io")
self.gridLayout.addWidget(self.lbl_replace_io, 6, 0, 1, 1)
self.sbx_autoreloaddelay = QtWidgets.QSpinBox(self.gb_plc)
self.sbx_autoreloaddelay.setMinimum(5)
self.sbx_autoreloaddelay.setMaximum(120)
self.sbx_autoreloaddelay.setObjectName("sbx_autoreloaddelay")
self.gridLayout.addWidget(self.sbx_autoreloaddelay, 2, 2, 1, 1)
self.cbx_zeroonexit = QtWidgets.QCheckBox(self.gb_plc)
self.cbx_zeroonexit.setObjectName("cbx_zeroonexit")
self.gridLayout.addWidget(self.cbx_zeroonexit, 4, 1, 1, 2)
self.cbx_zeroonerror = QtWidgets.QCheckBox(self.gb_plc)
self.cbx_zeroonerror.setObjectName("cbx_zeroonerror")
self.gridLayout.addWidget(self.cbx_zeroonerror, 5, 1, 1, 2)
self.cbx_autostart = QtWidgets.QCheckBox(self.gb_plc)
self.cbx_autostart.setObjectName("cbx_autostart")
self.gridLayout.addWidget(self.cbx_autostart, 0, 0, 1, 3)
self.cbx_autoreload = QtWidgets.QCheckBox(self.gb_plc)
self.cbx_autoreload.setObjectName("cbx_autoreload")
self.gridLayout.addWidget(self.cbx_autoreload, 1, 0, 1, 3)
self.lbl_plc_zero = QtWidgets.QLabel(self.gb_plc)
self.lbl_plc_zero.setObjectName("lbl_plc_zero")
self.gridLayout.addWidget(self.lbl_plc_zero, 3, 0, 1, 3)
self.txt_replace_io = QtWidgets.QLineEdit(self.gb_plc)
self.txt_replace_io.setObjectName("txt_replace_io")
self.gridLayout.addWidget(self.txt_replace_io, 7, 1, 1, 2)
self.cbb_replace_io = QtWidgets.QComboBox(self.gb_plc)
self.cbb_replace_io.setObjectName("cbb_replace_io")
self.cbb_replace_io.addItem("")
self.cbb_replace_io.addItem("")
self.cbb_replace_io.addItem("")
self.cbb_replace_io.addItem("")
self.gridLayout.addWidget(self.cbb_replace_io, 6, 1, 1, 2)
self.lbl_plc_delay = QtWidgets.QLabel(self.gb_plc)
self.lbl_plc_delay.setObjectName("lbl_plc_delay")
self.gridLayout.addWidget(self.lbl_plc_delay, 2, 0, 1, 2)
self.verticalLayout.addWidget(self.gb_plc)
self.gb_server = QtWidgets.QGroupBox(diag_options)
self.gb_server.setObjectName("gb_server")
self.gridLayout_2 = QtWidgets.QGridLayout(self.gb_server)
self.gridLayout_2.setObjectName("gridLayout_2")
self.btn_aclplcslave = QtWidgets.QPushButton(self.gb_server)
self.btn_aclplcslave.setObjectName("btn_aclplcslave")
self.gridLayout_2.addWidget(self.btn_aclplcslave, 0, 1, 1, 1)
self.cbx_mqtt = QtWidgets.QCheckBox(self.gb_server)
self.cbx_mqtt.setObjectName("cbx_mqtt")
self.gridLayout_2.addWidget(self.cbx_mqtt, 2, 0, 1, 1)
self.cbx_plcslave = QtWidgets.QCheckBox(self.gb_server)
self.cbx_plcslave.setObjectName("cbx_plcslave")
self.gridLayout_2.addWidget(self.cbx_plcslave, 0, 0, 1, 1)
self.lbl_slave_status = QtWidgets.QLabel(self.gb_server)
self.lbl_slave_status.setAlignment(QtCore.Qt.AlignCenter)
self.lbl_slave_status.setObjectName("lbl_slave_status")
self.gridLayout_2.addWidget(self.lbl_slave_status, 1, 1, 1, 1)
self.lbl_lbl_slave_status = QtWidgets.QLabel(self.gb_server)
self.lbl_lbl_slave_status.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
self.lbl_lbl_slave_status.setObjectName("lbl_lbl_slave_status")
self.gridLayout_2.addWidget(self.lbl_lbl_slave_status, 1, 0, 1, 1)
self.lbl_mqtt_status = QtWidgets.QLabel(self.gb_server)
self.lbl_mqtt_status.setAlignment(QtCore.Qt.AlignCenter)
self.lbl_mqtt_status.setObjectName("lbl_mqtt_status")
self.gridLayout_2.addWidget(self.lbl_mqtt_status, 3, 1, 1, 1)
self.lbl_lbl_mqtt_status = QtWidgets.QLabel(self.gb_server)
self.lbl_lbl_mqtt_status.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
self.lbl_lbl_mqtt_status.setObjectName("lbl_lbl_mqtt_status")
self.gridLayout_2.addWidget(self.lbl_lbl_mqtt_status, 3, 0, 1, 1)
self.btn_mqtt = QtWidgets.QPushButton(self.gb_server)
self.btn_mqtt.setObjectName("btn_mqtt")
self.gridLayout_2.addWidget(self.btn_mqtt, 2, 1, 1, 1)
self.btn_aclxmlrpc = QtWidgets.QPushButton(self.gb_server)
self.btn_aclxmlrpc.setObjectName("btn_aclxmlrpc")
self.gridLayout_2.addWidget(self.btn_aclxmlrpc, 4, 1, 1, 1)
self.cbx_xmlrpc = QtWidgets.QCheckBox(self.gb_server)
self.cbx_xmlrpc.setObjectName("cbx_xmlrpc")
self.gridLayout_2.addWidget(self.cbx_xmlrpc, 4, 0, 1, 1)
self.verticalLayout.addWidget(self.gb_server)
self.btn_box = QtWidgets.QDialogButtonBox(diag_options)
self.btn_box.setOrientation(QtCore.Qt.Horizontal)
self.btn_box.setStandardButtons(QtWidgets.QDialogButtonBox.Cancel|QtWidgets.QDialogButtonBox.Ok)
self.btn_box.setObjectName("btn_box")
self.verticalLayout.addWidget(self.btn_box)
self.retranslateUi(diag_options)
self.btn_box.accepted.connect(diag_options.accept)
self.btn_box.rejected.connect(diag_options.reject)
QtCore.QMetaObject.connectSlotsByName(diag_options)
def retranslateUi(self, diag_options):
_translate = QtCore.QCoreApplication.translate
diag_options.setWindowTitle(_translate("diag_options", "RevPi Python PLC Options"))
self.gb_plc.setTitle(_translate("diag_options", "Start / Stop behavior of PLC program"))
self.lbl_replace_io.setText(_translate("diag_options", "Replace IO file:"))
self.cbx_zeroonexit.setText(_translate("diag_options", "... sucessfully without error"))
self.cbx_zeroonerror.setText(_translate("diag_options", "... after exception and errors"))
self.cbx_autostart.setText(_translate("diag_options", "Start PLC program automatically"))
self.cbx_autoreload.setText(_translate("diag_options", "Restart PLC program after exit or crash"))
self.lbl_plc_zero.setText(_translate("diag_options", "Set process image to NULL if program terminates..."))
self.cbb_replace_io.setItemText(0, _translate("diag_options", "Do not use replace io file"))
self.cbb_replace_io.setItemText(1, _translate("diag_options", "Use static file from RevPiPyLoad"))
self.cbb_replace_io.setItemText(2, _translate("diag_options", "Use dynamic file from work directory"))
self.cbb_replace_io.setItemText(3, _translate("diag_options", "Give own path and filename"))
self.lbl_plc_delay.setText(_translate("diag_options", "Restart delay in seconds:"))
self.gb_server.setTitle(_translate("diag_options", "RevPiPyLoad server services"))
self.btn_aclplcslave.setText(_translate("diag_options", "Edit ACL"))
self.cbx_mqtt.setText(_translate("diag_options", "MQTT process image publisher"))
self.cbx_plcslave.setText(_translate("diag_options", "Start RevPi piControl server"))
self.lbl_slave_status.setText(_translate("diag_options", "status"))
self.lbl_lbl_slave_status.setText(_translate("diag_options", "piControl server is:"))
self.lbl_mqtt_status.setText(_translate("diag_options", "status"))
self.lbl_lbl_mqtt_status.setText(_translate("diag_options", "MQTT publish service is:"))
self.btn_mqtt.setText(_translate("diag_options", "Settings"))
self.btn_aclxmlrpc.setText(_translate("diag_options", "Edit ACL"))
self.cbx_xmlrpc.setText(_translate("diag_options", "Activate XML-RPC for RevPiPyControl"))
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
diag_options = QtWidgets.QDialog()
ui = Ui_diag_options()
ui.setupUi(diag_options)
diag_options.show()
sys.exit(app.exec_())

View File

@@ -0,0 +1,126 @@
# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'revpiplclist.ui'
#
# Created by: PyQt5 UI code generator 5.10.1
#
# WARNING! All changes made in this file will be lost!
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_diag_connections(object):
def setupUi(self, diag_connections):
diag_connections.setObjectName("diag_connections")
diag_connections.resize(520, 508)
self.gridLayout = QtWidgets.QGridLayout(diag_connections)
self.gridLayout.setObjectName("gridLayout")
self.tre_connections = QtWidgets.QTreeWidget(diag_connections)
self.tre_connections.setEditTriggers(QtWidgets.QAbstractItemView.NoEditTriggers)
self.tre_connections.setObjectName("tre_connections")
self.gridLayout.addWidget(self.tre_connections, 0, 0, 1, 1)
self.vl_edit = QtWidgets.QVBoxLayout()
self.vl_edit.setObjectName("vl_edit")
spacerItem = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
self.vl_edit.addItem(spacerItem)
self.btn_up = QtWidgets.QPushButton(diag_connections)
self.btn_up.setText("")
icon = QtGui.QIcon()
icon.addPixmap(QtGui.QPixmap(":/action/ico/arrow-up.ico"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
self.btn_up.setIcon(icon)
self.btn_up.setObjectName("btn_up")
self.vl_edit.addWidget(self.btn_up)
self.btn_down = QtWidgets.QPushButton(diag_connections)
self.btn_down.setText("")
icon1 = QtGui.QIcon()
icon1.addPixmap(QtGui.QPixmap(":/action/ico/arrow-down.ico"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
self.btn_down.setIcon(icon1)
self.btn_down.setObjectName("btn_down")
self.vl_edit.addWidget(self.btn_down)
self.btn_delete = QtWidgets.QPushButton(diag_connections)
self.btn_delete.setText("")
icon2 = QtGui.QIcon()
icon2.addPixmap(QtGui.QPixmap(":/action/ico/edit-delete.ico"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
self.btn_delete.setIcon(icon2)
self.btn_delete.setObjectName("btn_delete")
self.vl_edit.addWidget(self.btn_delete)
self.btn_add = QtWidgets.QPushButton(diag_connections)
self.btn_add.setText("")
icon3 = QtGui.QIcon()
icon3.addPixmap(QtGui.QPixmap(":/action/ico/edit-add.ico"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
self.btn_add.setIcon(icon3)
self.btn_add.setObjectName("btn_add")
self.vl_edit.addWidget(self.btn_add)
self.gridLayout.addLayout(self.vl_edit, 0, 1, 1, 1)
self.gb_properties = QtWidgets.QGroupBox(diag_connections)
self.gb_properties.setObjectName("gb_properties")
self.formLayout = QtWidgets.QFormLayout(self.gb_properties)
self.formLayout.setObjectName("formLayout")
self.lbl_name = QtWidgets.QLabel(self.gb_properties)
self.lbl_name.setObjectName("lbl_name")
self.formLayout.setWidget(0, QtWidgets.QFormLayout.LabelRole, self.lbl_name)
self.lbl_folder = QtWidgets.QLabel(self.gb_properties)
self.lbl_folder.setObjectName("lbl_folder")
self.formLayout.setWidget(3, QtWidgets.QFormLayout.LabelRole, self.lbl_folder)
self.lbl_address = QtWidgets.QLabel(self.gb_properties)
self.lbl_address.setObjectName("lbl_address")
self.formLayout.setWidget(1, QtWidgets.QFormLayout.LabelRole, self.lbl_address)
self.lbl_port = QtWidgets.QLabel(self.gb_properties)
self.lbl_port.setObjectName("lbl_port")
self.formLayout.setWidget(2, QtWidgets.QFormLayout.LabelRole, self.lbl_port)
self.txt_name = QtWidgets.QLineEdit(self.gb_properties)
self.txt_name.setObjectName("txt_name")
self.formLayout.setWidget(0, QtWidgets.QFormLayout.FieldRole, self.txt_name)
self.txt_address = QtWidgets.QLineEdit(self.gb_properties)
self.txt_address.setObjectName("txt_address")
self.formLayout.setWidget(1, QtWidgets.QFormLayout.FieldRole, self.txt_address)
self.sbx_port = QtWidgets.QSpinBox(self.gb_properties)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Maximum, QtWidgets.QSizePolicy.Fixed)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.sbx_port.sizePolicy().hasHeightForWidth())
self.sbx_port.setSizePolicy(sizePolicy)
self.sbx_port.setMinimum(1)
self.sbx_port.setMaximum(65535)
self.sbx_port.setProperty("value", 55123)
self.sbx_port.setObjectName("sbx_port")
self.formLayout.setWidget(2, QtWidgets.QFormLayout.FieldRole, self.sbx_port)
self.cbb_folder = QtWidgets.QComboBox(self.gb_properties)
self.cbb_folder.setEditable(True)
self.cbb_folder.setObjectName("cbb_folder")
self.cbb_folder.addItem("")
self.cbb_folder.setItemText(0, "")
self.formLayout.setWidget(3, QtWidgets.QFormLayout.FieldRole, self.cbb_folder)
self.gridLayout.addWidget(self.gb_properties, 1, 0, 1, 2)
self.btn_box = QtWidgets.QDialogButtonBox(diag_connections)
self.btn_box.setOrientation(QtCore.Qt.Horizontal)
self.btn_box.setStandardButtons(QtWidgets.QDialogButtonBox.Discard|QtWidgets.QDialogButtonBox.Save)
self.btn_box.setObjectName("btn_box")
self.gridLayout.addWidget(self.btn_box, 2, 0, 1, 2)
self.retranslateUi(diag_connections)
self.btn_box.accepted.connect(diag_connections.accept)
self.btn_box.rejected.connect(diag_connections.reject)
QtCore.QMetaObject.connectSlotsByName(diag_connections)
def retranslateUi(self, diag_connections):
_translate = QtCore.QCoreApplication.translate
diag_connections.setWindowTitle(_translate("diag_connections", "Revolution Pi connections"))
self.tre_connections.headerItem().setText(0, _translate("diag_connections", "Connection name"))
self.tre_connections.headerItem().setText(1, _translate("diag_connections", "Address"))
self.gb_properties.setTitle(_translate("diag_connections", "Connection properties"))
self.lbl_name.setText(_translate("diag_connections", "Display name:"))
self.lbl_folder.setText(_translate("diag_connections", "Sub folder:"))
self.lbl_address.setText(_translate("diag_connections", "Address (DNS/IP):"))
self.lbl_port.setText(_translate("diag_connections", "Port (Default {0}):"))
from . import ressources_rc
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
diag_connections = QtWidgets.QDialog()
ui = Ui_diag_connections()
ui.setupUi(diag_connections)
diag_connections.show()
sys.exit(app.exec_())

View File

@@ -0,0 +1,152 @@
# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'revpiprogram.ui'
#
# Created by: PyQt5 UI code generator 5.10.1
#
# WARNING! All changes made in this file will be lost!
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_diag_program(object):
def setupUi(self, diag_program):
diag_program.setObjectName("diag_program")
diag_program.resize(488, 500)
self.verticalLayout = QtWidgets.QVBoxLayout(diag_program)
self.verticalLayout.setObjectName("verticalLayout")
self.gb_plc = QtWidgets.QGroupBox(diag_program)
self.gb_plc.setObjectName("gb_plc")
self.gridLayout = QtWidgets.QGridLayout(self.gb_plc)
self.gridLayout.setObjectName("gridLayout")
self.rbn_pythonversion_2 = QtWidgets.QRadioButton(self.gb_plc)
self.rbn_pythonversion_2.setObjectName("rbn_pythonversion_2")
self.gridLayout.addWidget(self.rbn_pythonversion_2, 3, 1, 1, 1)
self.txt_plcarguments = QtWidgets.QLineEdit(self.gb_plc)
self.txt_plcarguments.setObjectName("txt_plcarguments")
self.gridLayout.addWidget(self.txt_plcarguments, 2, 1, 1, 2)
self.rbn_pythonversion_3 = QtWidgets.QRadioButton(self.gb_plc)
self.rbn_pythonversion_3.setObjectName("rbn_pythonversion_3")
self.gridLayout.addWidget(self.rbn_pythonversion_3, 3, 2, 1, 1)
self.lbl_plcprogram = QtWidgets.QLabel(self.gb_plc)
self.lbl_plcprogram.setObjectName("lbl_plcprogram")
self.gridLayout.addWidget(self.lbl_plcprogram, 0, 0, 1, 3)
self.cbx_plcworkdir_set_uid = QtWidgets.QCheckBox(self.gb_plc)
self.cbx_plcworkdir_set_uid.setObjectName("cbx_plcworkdir_set_uid")
self.gridLayout.addWidget(self.cbx_plcworkdir_set_uid, 4, 0, 1, 3)
self.cbb_plcprogram = QtWidgets.QComboBox(self.gb_plc)
self.cbb_plcprogram.setObjectName("cbb_plcprogram")
self.gridLayout.addWidget(self.cbb_plcprogram, 1, 0, 1, 3)
self.lbl_pythonversion = QtWidgets.QLabel(self.gb_plc)
self.lbl_pythonversion.setObjectName("lbl_pythonversion")
self.gridLayout.addWidget(self.lbl_pythonversion, 3, 0, 1, 1)
self.lbl_plcarguments = QtWidgets.QLabel(self.gb_plc)
self.lbl_plcarguments.setObjectName("lbl_plcarguments")
self.gridLayout.addWidget(self.lbl_plcarguments, 2, 0, 1, 1)
self.verticalLayout.addWidget(self.gb_plc)
self.cb_transfair = QtWidgets.QGroupBox(diag_program)
self.cb_transfair.setObjectName("cb_transfair")
self.gridLayout_2 = QtWidgets.QGridLayout(self.cb_transfair)
self.gridLayout_2.setObjectName("gridLayout_2")
self.cbb_format = QtWidgets.QComboBox(self.cb_transfair)
self.cbb_format.setObjectName("cbb_format")
self.cbb_format.addItem("")
self.cbb_format.addItem("")
self.cbb_format.addItem("")
self.cbb_format.addItem("")
self.gridLayout_2.addWidget(self.cbb_format, 0, 1, 1, 1)
self.btn_program_upload = QtWidgets.QPushButton(self.cb_transfair)
self.btn_program_upload.setObjectName("btn_program_upload")
self.gridLayout_2.addWidget(self.btn_program_upload, 3, 1, 1, 1)
self.btn_program_download = QtWidgets.QPushButton(self.cb_transfair)
self.btn_program_download.setObjectName("btn_program_download")
self.gridLayout_2.addWidget(self.btn_program_download, 3, 0, 1, 1)
self.lbl_format = QtWidgets.QLabel(self.cb_transfair)
self.lbl_format.setObjectName("lbl_format")
self.gridLayout_2.addWidget(self.lbl_format, 0, 0, 1, 1)
self.cbx_pictory = QtWidgets.QCheckBox(self.cb_transfair)
self.cbx_pictory.setObjectName("cbx_pictory")
self.gridLayout_2.addWidget(self.cbx_pictory, 1, 0, 1, 2)
self.cbx_clear = QtWidgets.QCheckBox(self.cb_transfair)
self.cbx_clear.setObjectName("cbx_clear")
self.gridLayout_2.addWidget(self.cbx_clear, 2, 0, 1, 2)
self.verticalLayout.addWidget(self.cb_transfair)
self.gb_control = QtWidgets.QGroupBox(diag_program)
self.gb_control.setObjectName("gb_control")
self.gridLayout_3 = QtWidgets.QGridLayout(self.gb_control)
self.gridLayout_3.setObjectName("gridLayout_3")
self.btn_procimg_download = QtWidgets.QPushButton(self.gb_control)
self.btn_procimg_download.setObjectName("btn_procimg_download")
self.gridLayout_3.addWidget(self.btn_procimg_download, 1, 1, 1, 1)
self.btn_pictory_download = QtWidgets.QPushButton(self.gb_control)
self.btn_pictory_download.setObjectName("btn_pictory_download")
self.gridLayout_3.addWidget(self.btn_pictory_download, 0, 1, 1, 1)
self.btn_pictory_upload = QtWidgets.QPushButton(self.gb_control)
self.btn_pictory_upload.setObjectName("btn_pictory_upload")
self.gridLayout_3.addWidget(self.btn_pictory_upload, 0, 2, 1, 1)
self.lbl_pictory = QtWidgets.QLabel(self.gb_control)
self.lbl_pictory.setObjectName("lbl_pictory")
self.gridLayout_3.addWidget(self.lbl_pictory, 0, 0, 1, 1)
self.lbl_procimg = QtWidgets.QLabel(self.gb_control)
self.lbl_procimg.setObjectName("lbl_procimg")
self.gridLayout_3.addWidget(self.lbl_procimg, 1, 0, 1, 1)
self.verticalLayout.addWidget(self.gb_control)
self.btn_box = QtWidgets.QDialogButtonBox(diag_program)
self.btn_box.setOrientation(QtCore.Qt.Horizontal)
self.btn_box.setStandardButtons(QtWidgets.QDialogButtonBox.Cancel|QtWidgets.QDialogButtonBox.Ok)
self.btn_box.setObjectName("btn_box")
self.verticalLayout.addWidget(self.btn_box)
self.retranslateUi(diag_program)
self.btn_box.accepted.connect(diag_program.accept)
self.btn_box.rejected.connect(diag_program.reject)
QtCore.QMetaObject.connectSlotsByName(diag_program)
diag_program.setTabOrder(self.cbb_plcprogram, self.txt_plcarguments)
diag_program.setTabOrder(self.txt_plcarguments, self.rbn_pythonversion_2)
diag_program.setTabOrder(self.rbn_pythonversion_2, self.rbn_pythonversion_3)
diag_program.setTabOrder(self.rbn_pythonversion_3, self.cbx_plcworkdir_set_uid)
diag_program.setTabOrder(self.cbx_plcworkdir_set_uid, self.cbb_format)
diag_program.setTabOrder(self.cbb_format, self.cbx_pictory)
diag_program.setTabOrder(self.cbx_pictory, self.cbx_clear)
diag_program.setTabOrder(self.cbx_clear, self.btn_program_download)
diag_program.setTabOrder(self.btn_program_download, self.btn_program_upload)
diag_program.setTabOrder(self.btn_program_upload, self.btn_pictory_download)
diag_program.setTabOrder(self.btn_pictory_download, self.btn_pictory_upload)
diag_program.setTabOrder(self.btn_pictory_upload, self.btn_procimg_download)
def retranslateUi(self, diag_program):
_translate = QtCore.QCoreApplication.translate
diag_program.setWindowTitle(_translate("diag_program", "PLC program"))
self.gb_plc.setTitle(_translate("diag_program", "PLC program"))
self.rbn_pythonversion_2.setText(_translate("diag_program", "Python 2"))
self.rbn_pythonversion_3.setText(_translate("diag_program", "Python 3"))
self.lbl_plcprogram.setText(_translate("diag_program", "Python PLC start program:"))
self.cbx_plcworkdir_set_uid.setText(_translate("diag_program", "Set write permissions for plc program to workdirectory"))
self.lbl_pythonversion.setText(_translate("diag_program", "Python version:"))
self.lbl_plcarguments.setText(_translate("diag_program", "Program arguments:"))
self.cb_transfair.setTitle(_translate("diag_program", "Transfair PLC program"))
self.cbb_format.setItemText(0, _translate("diag_program", "Files"))
self.cbb_format.setItemText(1, _translate("diag_program", "Folder"))
self.cbb_format.setItemText(2, _translate("diag_program", "ZIP archive"))
self.cbb_format.setItemText(3, _translate("diag_program", "TGZ archive"))
self.btn_program_upload.setText(_translate("diag_program", "Upload"))
self.btn_program_download.setText(_translate("diag_program", "Download"))
self.lbl_format.setText(_translate("diag_program", "Transfair format:"))
self.cbx_pictory.setText(_translate("diag_program", "Including piCtory configuration"))
self.cbx_clear.setText(_translate("diag_program", "Remove all files on Revolution Pi before upload"))
self.gb_control.setTitle(_translate("diag_program", "Control files"))
self.btn_procimg_download.setText(_translate("diag_program", "Download"))
self.btn_pictory_download.setText(_translate("diag_program", "Download"))
self.btn_pictory_upload.setText(_translate("diag_program", "Upload"))
self.lbl_pictory.setText(_translate("diag_program", "piCtory configuraiton"))
self.lbl_procimg.setText(_translate("diag_program", "Process image from piControl0"))
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
diag_program = QtWidgets.QDialog()
ui = Ui_diag_program()
ui.setupUi(diag_program)
diag_program.show()
sys.exit(app.exec_())

View File

@@ -0,0 +1,258 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>diag_aclmanager</class>
<widget class="QDialog" name="diag_aclmanager">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>454</width>
<height>572</height>
</rect>
</property>
<property name="windowTitle">
<string>IP access control list</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<widget class="QGroupBox" name="gb_acls">
<property name="title">
<string>Existing ACLs</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout_2">
<item>
<widget class="QTableWidget" name="tb_acls">
<property name="editTriggers">
<set>QAbstractItemView::NoEditTriggers</set>
</property>
<property name="tabKeyNavigation">
<bool>false</bool>
</property>
<property name="selectionMode">
<enum>QAbstractItemView::ExtendedSelection</enum>
</property>
<property name="selectionBehavior">
<enum>QAbstractItemView::SelectRows</enum>
</property>
<property name="wordWrap">
<bool>false</bool>
</property>
<property name="cornerButtonEnabled">
<bool>false</bool>
</property>
<attribute name="horizontalHeaderHighlightSections">
<bool>false</bool>
</attribute>
<attribute name="horizontalHeaderStretchLastSection">
<bool>true</bool>
</attribute>
<attribute name="verticalHeaderVisible">
<bool>false</bool>
</attribute>
<column>
<property name="text">
<string>IP Address</string>
</property>
</column>
<column>
<property name="text">
<string>Access Level</string>
</property>
</column>
</widget>
</item>
<item>
<layout class="QHBoxLayout" name="hl_acls">
<item>
<widget class="QPushButton" name="btn_edit">
<property name="sizePolicy">
<sizepolicy hsizetype="Maximum" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>&amp;Edit</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="btn_remove">
<property name="sizePolicy">
<sizepolicy hsizetype="Maximum" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>&amp;Remove</string>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QGroupBox" name="gb_edit">
<property name="title">
<string>Add / Edit access entry</string>
</property>
<layout class="QGridLayout" name="gridLayout_2">
<item row="1" column="0">
<widget class="QPushButton" name="btn_clear">
<property name="text">
<string>Clear fields</string>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QPushButton" name="btn_add">
<property name="text">
<string>&amp;Save entry</string>
</property>
</widget>
</item>
<item row="0" column="0" colspan="2">
<layout class="QFormLayout" name="fl_edit">
<item row="0" column="0">
<widget class="QLabel" name="lbl_ip">
<property name="text">
<string>IP address:</string>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QLabel" name="lbl_level">
<property name="text">
<string>Access level:</string>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QComboBox" name="cbb_level"/>
</item>
<item row="0" column="1">
<layout class="QHBoxLayout" name="hl_ip">
<item>
<widget class="QLineEdit" name="txt_ip_a">
<property name="maxLength">
<number>3</number>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="lbl_ip_a">
<property name="text">
<string>.</string>
</property>
</widget>
</item>
<item>
<widget class="QLineEdit" name="txt_ip_b">
<property name="maxLength">
<number>3</number>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="lbl_ip_b">
<property name="text">
<string>.</string>
</property>
</widget>
</item>
<item>
<widget class="QLineEdit" name="txt_ip_c">
<property name="maxLength">
<number>3</number>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="lbl_ip_c">
<property name="text">
<string>.</string>
</property>
</widget>
</item>
<item>
<widget class="QLineEdit" name="txt_ip_d">
<property name="maxLength">
<number>3</number>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QLabel" name="lbl_level_info">
<property name="text">
<string/>
</property>
</widget>
</item>
<item>
<widget class="QDialogButtonBox" name="btn_box">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="standardButtons">
<set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
</property>
</widget>
</item>
</layout>
</widget>
<tabstops>
<tabstop>tb_acls</tabstop>
<tabstop>btn_edit</tabstop>
<tabstop>btn_remove</tabstop>
<tabstop>txt_ip_a</tabstop>
<tabstop>txt_ip_b</tabstop>
<tabstop>txt_ip_c</tabstop>
<tabstop>txt_ip_d</tabstop>
<tabstop>cbb_level</tabstop>
</tabstops>
<resources/>
<connections>
<connection>
<sender>btn_box</sender>
<signal>accepted()</signal>
<receiver>diag_aclmanager</receiver>
<slot>accept()</slot>
<hints>
<hint type="sourcelabel">
<x>247</x>
<y>538</y>
</hint>
<hint type="destinationlabel">
<x>157</x>
<y>274</y>
</hint>
</hints>
</connection>
<connection>
<sender>btn_box</sender>
<signal>rejected()</signal>
<receiver>diag_aclmanager</receiver>
<slot>reject()</slot>
<hints>
<hint type="sourcelabel">
<x>315</x>
<y>538</y>
</hint>
<hint type="destinationlabel">
<x>286</x>
<y>274</y>
</hint>
</hints>
</connection>
</connections>
</ui>

View File

@@ -0,0 +1,145 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>diag_search</class>
<widget class="QDialog" name="diag_search">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>480</width>
<height>360</height>
</rect>
</property>
<property name="windowTitle">
<string>Search Revolution Pi devices</string>
</property>
<layout class="QGridLayout" name="gridLayout">
<item row="0" column="0" colspan="2">
<layout class="QHBoxLayout" name="hl_header">
<item>
<widget class="QLabel" name="lbl_search">
<property name="text">
<string>Searching for Revolution Pi devices in your network...</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="btn_restart">
<property name="sizePolicy">
<sizepolicy hsizetype="Maximum" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="toolTip">
<string>Restart search</string>
</property>
<property name="text">
<string/>
</property>
<property name="icon">
<iconset resource="ressources.qrc">
<normaloff>:/action/ico/reload.ico</normaloff>:/action/ico/reload.ico</iconset>
</property>
<property name="iconSize">
<size>
<width>24</width>
<height>24</height>
</size>
</property>
</widget>
</item>
</layout>
</item>
<item row="1" column="0" colspan="2">
<widget class="QTableWidget" name="tb_revpi">
<property name="editTriggers">
<set>QAbstractItemView::NoEditTriggers</set>
</property>
<property name="tabKeyNavigation">
<bool>false</bool>
</property>
<property name="selectionMode">
<enum>QAbstractItemView::SingleSelection</enum>
</property>
<property name="selectionBehavior">
<enum>QAbstractItemView::SelectRows</enum>
</property>
<property name="sortingEnabled">
<bool>true</bool>
</property>
<property name="wordWrap">
<bool>false</bool>
</property>
<property name="cornerButtonEnabled">
<bool>false</bool>
</property>
<attribute name="horizontalHeaderHighlightSections">
<bool>false</bool>
</attribute>
<attribute name="horizontalHeaderStretchLastSection">
<bool>true</bool>
</attribute>
<attribute name="verticalHeaderVisible">
<bool>false</bool>
</attribute>
<column>
<property name="text">
<string>Zero conf Name</string>
</property>
</column>
<column>
<property name="text">
<string>IP address</string>
</property>
</column>
</widget>
</item>
<item row="2" column="0">
<widget class="QPushButton" name="btn_connect">
<property name="text">
<string>&amp;Connect to Revolution Pi</string>
</property>
</widget>
</item>
<item row="2" column="1">
<widget class="QPushButton" name="btn_save">
<property name="text">
<string>&amp;Save connection</string>
</property>
</widget>
</item>
<item row="3" column="0" colspan="2">
<widget class="QDialogButtonBox" name="btn_box">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="standardButtons">
<set>QDialogButtonBox::Close</set>
</property>
</widget>
</item>
</layout>
</widget>
<resources>
<include location="ressources.qrc"/>
</resources>
<connections>
<connection>
<sender>btn_box</sender>
<signal>rejected()</signal>
<receiver>diag_search</receiver>
<slot>reject()</slot>
<hints>
<hint type="sourcelabel">
<x>239</x>
<y>338</y>
</hint>
<hint type="destinationlabel">
<x>239</x>
<y>179</y>
</hint>
</hints>
</connection>
</connections>
</ui>

View File

@@ -0,0 +1,126 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>wid_debugcontrol</class>
<widget class="QWidget" name="wid_debugcontrol">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>402</width>
<height>214</height>
</rect>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Minimum">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<layout class="QGridLayout" name="gridLayout">
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item row="0" column="0">
<widget class="QGroupBox" name="gb_devices">
<property name="title">
<string>Revolution Pi devices</string>
</property>
<layout class="QVBoxLayout" name="vl_devices"/>
</widget>
</item>
<item row="1" column="0">
<widget class="QCheckBox" name="cbx_stay_on_top">
<property name="text">
<string>Open to stay on top</string>
</property>
</widget>
</item>
<item row="0" column="1" rowspan="2">
<widget class="QGroupBox" name="gb_control">
<property name="title">
<string>IO Control</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<widget class="QPushButton" name="btn_read_io">
<property name="toolTip">
<string>Read all IO values and discard local changes (F4)</string>
</property>
<property name="text">
<string>Read &amp;all IO values</string>
</property>
<property name="shortcut">
<string>F4</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="btn_refresh_io">
<property name="toolTip">
<string>Refresh all IO values which are locally not changed (F5)</string>
</property>
<property name="text">
<string>&amp;Refresh unchanged IOs</string>
</property>
<property name="shortcut">
<string>F5</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="btn_write_o">
<property name="toolTip">
<string>Write locally changed output values to process image (F6)</string>
</property>
<property name="text">
<string>&amp;Write changed outputs</string>
</property>
<property name="shortcut">
<string>F6</string>
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="cbx_refresh">
<property name="text">
<string>&amp;Auto refresh values</string>
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="cbx_write">
<property name="text">
<string>and write outputs</string>
</property>
</widget>
</item>
<item>
<spacer name="verticalSpacer">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>1</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
</item>
</layout>
</widget>
<resources/>
<connections/>
</ui>

110
include/ui_dev/debugios.ui Normal file
View File

@@ -0,0 +1,110 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>win_debugios</class>
<widget class="QMainWindow" name="win_debugios">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>434</width>
<height>343</height>
</rect>
</property>
<widget class="QWidget" name="centralwidget">
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<widget class="QGroupBox" name="gb_io">
<property name="title">
<string>{0}: Inputs | Outputs</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout_2">
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item>
<widget class="QSplitter" name="splitter">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="childrenCollapsible">
<bool>false</bool>
</property>
<widget class="QScrollArea" name="sca_inp">
<property name="lineWidth">
<number>0</number>
</property>
<property name="widgetResizable">
<bool>true</bool>
</property>
<widget class="QWidget" name="saw_inp">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>201</width>
<height>275</height>
</rect>
</property>
<layout class="QFormLayout" name="form_inp">
<property name="labelAlignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
<property name="topMargin">
<number>6</number>
</property>
<property name="bottomMargin">
<number>6</number>
</property>
</layout>
</widget>
</widget>
<widget class="QScrollArea" name="sca_out">
<property name="lineWidth">
<number>0</number>
</property>
<property name="widgetResizable">
<bool>true</bool>
</property>
<widget class="QWidget" name="saw_out">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>201</width>
<height>275</height>
</rect>
</property>
<layout class="QFormLayout" name="form_out">
<property name="labelAlignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
<property name="topMargin">
<number>6</number>
</property>
<property name="bottomMargin">
<number>6</number>
</property>
</layout>
</widget>
</widget>
</widget>
</item>
</layout>
</widget>
</item>
</layout>
</widget>
<widget class="QStatusBar" name="stat_bar"/>
</widget>
<resources/>
<connections/>
</ui>

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

BIN
include/ui_dev/ico/cpu.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

View File

@@ -0,0 +1,257 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>diag_mqtt</class>
<widget class="QDialog" name="diag_mqtt">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>492</width>
<height>704</height>
</rect>
</property>
<property name="windowTitle">
<string>MQTT settings</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<widget class="QGroupBox" name="gb_basetopic">
<property name="title">
<string>Base topic</string>
</property>
<layout class="QGridLayout" name="gridLayout">
<item row="1" column="0" colspan="4">
<widget class="QLabel" name="lbl_basetopic_description">
<property name="maximumSize">
<size>
<width>450</width>
<height>16777215</height>
</size>
</property>
<property name="text">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;The base topic is the first part of any mqtt topic, the Revolution Pi will publish. You can use any character includig '/' to structure the messages on your broker.&lt;/p&gt;&lt;p&gt;For example: revpi0000/data&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="wordWrap">
<bool>true</bool>
</property>
</widget>
</item>
<item row="0" column="0">
<widget class="QLabel" name="lbl_basetopic">
<property name="text">
<string>Base topic:</string>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QLineEdit" name="txt_basetopic"/>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QGroupBox" name="gb_send_on_event">
<property name="title">
<string>Publish settings</string>
</property>
<layout class="QGridLayout" name="gridLayout_2">
<item row="0" column="0">
<widget class="QLabel" name="lbl_sendinterval">
<property name="text">
<string>Publish all exported values every n seconds:</string>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QSpinBox" name="sbx_sendinterval">
<property name="minimum">
<number>1</number>
</property>
<property name="maximum">
<number>21600</number>
</property>
</widget>
</item>
<item row="1" column="0" colspan="2">
<widget class="QLabel" name="lbl_topic_io">
<property name="text">
<string>Topic: [basetopic]/io/[ioname]</string>
</property>
</widget>
</item>
<item row="2" column="0" colspan="2">
<widget class="QCheckBox" name="cbx_send_on_event">
<property name="text">
<string>Send exported values immediately on value change</string>
</property>
</widget>
</item>
<item row="3" column="0" colspan="2">
<widget class="QLabel" name="lbl_topic_event">
<property name="text">
<string>Topic: [basetopic]/event/[ioname]</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QGroupBox" name="gb_write_outputs">
<property name="title">
<string>Set outputs</string>
</property>
<layout class="QGridLayout" name="gridLayout_3">
<item row="1" column="0">
<widget class="QLabel" name="lbl_write_outputs">
<property name="maximumSize">
<size>
<width>450</width>
<height>16777215</height>
</size>
</property>
<property name="text">
<string>The Revolution Pi will subscribe a topic on which your mqtt client can publish messages with the new io value as payload.
Publish values with topic: [basetopic]/set/[outputname]</string>
</property>
<property name="wordWrap">
<bool>true</bool>
</property>
</widget>
</item>
<item row="0" column="0">
<widget class="QCheckBox" name="cbx_write_outputs">
<property name="text">
<string>Allow MQTT to to set outputs on Revolution Pi</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QGroupBox" name="gb_broker">
<property name="title">
<string>Brocker settings</string>
</property>
<layout class="QFormLayout" name="formLayout">
<item row="0" column="0">
<widget class="QLabel" name="lbl_broker_address">
<property name="text">
<string>Broker address:</string>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QLineEdit" name="txt_broker_address"/>
</item>
<item row="1" column="0">
<widget class="QLabel" name="lbl_port">
<property name="text">
<string>Broker port:</string>
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QLabel" name="lbl_username">
<property name="text">
<string>User name:</string>
</property>
</widget>
</item>
<item row="3" column="0">
<widget class="QLabel" name="lbl_password">
<property name="text">
<string>Password:</string>
</property>
</widget>
</item>
<item row="4" column="0">
<widget class="QLabel" name="lbl_client_id">
<property name="text">
<string>Client ID:</string>
</property>
</widget>
</item>
<item row="2" column="1">
<widget class="QLineEdit" name="txt_username"/>
</item>
<item row="3" column="1">
<widget class="QLineEdit" name="txt_password"/>
</item>
<item row="4" column="1">
<widget class="QLineEdit" name="txt_client_id"/>
</item>
<item row="1" column="1">
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<widget class="QSpinBox" name="sbx_port">
<property name="minimum">
<number>1</number>
</property>
<property name="maximum">
<number>65535</number>
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="cbx_tls_set">
<property name="text">
<string>Use TLS</string>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QDialogButtonBox" name="btn_box">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="standardButtons">
<set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
</property>
</widget>
</item>
</layout>
</widget>
<resources/>
<connections>
<connection>
<sender>btn_box</sender>
<signal>accepted()</signal>
<receiver>diag_mqtt</receiver>
<slot>accept()</slot>
<hints>
<hint type="sourcelabel">
<x>248</x>
<y>254</y>
</hint>
<hint type="destinationlabel">
<x>157</x>
<y>274</y>
</hint>
</hints>
</connection>
<connection>
<sender>btn_box</sender>
<signal>rejected()</signal>
<receiver>diag_mqtt</receiver>
<slot>reject()</slot>
<hints>
<hint type="sourcelabel">
<x>316</x>
<y>260</y>
</hint>
<hint type="destinationlabel">
<x>286</x>
<y>274</y>
</hint>
</hints>
</connection>
</connections>
</ui>

View File

@@ -0,0 +1,20 @@
<RCC>
<qresource prefix="main">
<file>ico/cpu.ico</file>
<file>ico/folder.ico</file>
<file>ico/revpipycontrol.ico</file>
</qresource>
<qresource prefix="file">
<file>ico/file-else.ico</file>
<file>ico/file-python.ico</file>
</qresource>
<qresource prefix="action">
<file>ico/folder-open.ico</file>
<file>ico/refresh.ico</file>
<file>ico/reload.ico</file>
<file>ico/arrow-down.ico</file>
<file>ico/arrow-up.ico</file>
<file>ico/edit-add.ico</file>
<file>ico/edit-delete.ico</file>
</qresource>
</RCC>

View File

@@ -0,0 +1,264 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<author>Sven Sager</author>
<class>win_revpicommander</class>
<widget class="QMainWindow" name="win_revpicommander">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>318</width>
<height>273</height>
</rect>
</property>
<property name="windowTitle">
<string>RevPi Python PLC Commander</string>
</property>
<property name="windowIcon">
<iconset resource="ressources.qrc">
<normaloff>:/main/ico/revpipycontrol.ico</normaloff>:/main/ico/revpipycontrol.ico</iconset>
</property>
<widget class="QWidget" name="centralwidget">
<layout class="QGridLayout" name="gl">
<item row="0" column="0">
<widget class="QLineEdit" name="txt_connection">
<property name="focusPolicy">
<enum>Qt::NoFocus</enum>
</property>
<property name="readOnly">
<bool>true</bool>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QPushButton" name="btn_plc_start">
<property name="text">
<string>PLC &amp;start</string>
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QPushButton" name="btn_plc_stop">
<property name="text">
<string>PLC s&amp;top</string>
</property>
</widget>
</item>
<item row="3" column="0">
<widget class="QPushButton" name="btn_plc_restart">
<property name="text">
<string>PLC restart</string>
</property>
</widget>
</item>
<item row="4" column="0">
<widget class="QPushButton" name="btn_plc_logs">
<property name="text">
<string>PLC &amp;logs</string>
</property>
</widget>
</item>
<item row="5" column="0">
<widget class="QLineEdit" name="txt_status">
<property name="focusPolicy">
<enum>Qt::NoFocus</enum>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
<property name="readOnly">
<bool>true</bool>
</property>
</widget>
</item>
<item row="6" column="0">
<widget class="QPushButton" name="btn_plc_debug">
<property name="minimumSize">
<size>
<width>300</width>
<height>0</height>
</size>
</property>
<property name="text">
<string>PLC watch &amp;mode</string>
</property>
<property name="checkable">
<bool>true</bool>
</property>
</widget>
</item>
</layout>
</widget>
<widget class="QMenuBar" name="menubar">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>318</width>
<height>22</height>
</rect>
</property>
<widget class="QMenu" name="men_file">
<property name="title">
<string>&amp;File</string>
</property>
<addaction name="act_connections"/>
<addaction name="act_search"/>
<addaction name="separator"/>
<addaction name="act_simulator"/>
<addaction name="separator"/>
<addaction name="act_quit"/>
</widget>
<widget class="QMenu" name="men_help">
<property name="title">
<string>&amp;Help</string>
</property>
<addaction name="act_webpage"/>
<addaction name="separator"/>
<addaction name="act_info"/>
</widget>
<widget class="QMenu" name="men_plc">
<property name="title">
<string>&amp;PLC</string>
</property>
<addaction name="act_logs"/>
<addaction name="act_options"/>
<addaction name="act_program"/>
<addaction name="act_developer"/>
<addaction name="separator"/>
<addaction name="act_pictory"/>
<addaction name="act_reset"/>
<addaction name="separator"/>
<addaction name="act_disconnect"/>
</widget>
<widget class="QMenu" name="men_connections">
<property name="title">
<string>&amp;Connections</string>
</property>
</widget>
<addaction name="men_file"/>
<addaction name="men_plc"/>
<addaction name="men_connections"/>
<addaction name="men_help"/>
</widget>
<widget class="QStatusBar" name="statusbar">
<property name="sizeGripEnabled">
<bool>false</bool>
</property>
</widget>
<action name="act_connections">
<property name="text">
<string>&amp;Connections...</string>
</property>
</action>
<action name="act_search">
<property name="text">
<string>&amp;Search Revolution Pi...</string>
</property>
<property name="shortcut">
<string>Ctrl+F</string>
</property>
</action>
<action name="act_quit">
<property name="text">
<string>&amp;Quit</string>
</property>
</action>
<action name="act_webpage">
<property name="text">
<string>Visit &amp;webpage...</string>
</property>
</action>
<action name="act_info">
<property name="text">
<string>&amp;Info...</string>
</property>
</action>
<action name="act_logs">
<property name="text">
<string>PLC &amp;logs...</string>
</property>
<property name="shortcut">
<string>F3</string>
</property>
</action>
<action name="act_options">
<property name="text">
<string>PLC &amp;options...</string>
</property>
<property name="shortcut">
<string>Ctrl+O</string>
</property>
</action>
<action name="act_program">
<property name="text">
<string>PLC progra&amp;m...</string>
</property>
<property name="shortcut">
<string>Ctrl+P</string>
</property>
</action>
<action name="act_developer">
<property name="checkable">
<bool>true</bool>
</property>
<property name="text">
<string>PLC de&amp;veloper...</string>
</property>
<property name="shortcut">
<string>F9</string>
</property>
</action>
<action name="act_pictory">
<property name="text">
<string>piCtory configuraiton...</string>
</property>
</action>
<action name="act_disconnect">
<property name="text">
<string>&amp;Disconnect</string>
</property>
<property name="shortcut">
<string>Ctrl+X</string>
</property>
</action>
<action name="act_reset">
<property name="text">
<string>Reset driver...</string>
</property>
</action>
<action name="act_simulator">
<property name="text">
<string>Start local si&amp;mulator...</string>
</property>
</action>
</widget>
<tabstops>
<tabstop>btn_plc_start</tabstop>
<tabstop>btn_plc_stop</tabstop>
<tabstop>btn_plc_restart</tabstop>
<tabstop>btn_plc_logs</tabstop>
<tabstop>btn_plc_debug</tabstop>
</tabstops>
<resources>
<include location="ressources.qrc"/>
</resources>
<connections>
<connection>
<sender>act_quit</sender>
<signal>triggered()</signal>
<receiver>win_revpicommander</receiver>
<slot>close()</slot>
<hints>
<hint type="sourcelabel">
<x>-1</x>
<y>-1</y>
</hint>
<hint type="destinationlabel">
<x>159</x>
<y>136</y>
</hint>
</hints>
</connection>
</connections>
</ui>

View File

@@ -0,0 +1,136 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>wid_develop</class>
<widget class="QWidget" name="wid_develop">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>374</width>
<height>444</height>
</rect>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="MinimumExpanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<layout class="QGridLayout" name="gridLayout">
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item row="2" column="0">
<widget class="QPushButton" name="btn_all">
<property name="text">
<string>Stop / Upload / Start</string>
</property>
</widget>
</item>
<item row="2" column="1">
<widget class="QPushButton" name="btn_upload">
<property name="text">
<string>Just upload</string>
</property>
</widget>
</item>
<item row="1" column="0" colspan="2">
<widget class="QTreeWidget" name="tree_files">
<property name="editTriggers">
<set>QAbstractItemView::NoEditTriggers</set>
</property>
<property name="selectionMode">
<enum>QAbstractItemView::MultiSelection</enum>
</property>
<property name="selectionBehavior">
<enum>QAbstractItemView::SelectRows</enum>
</property>
<property name="iconSize">
<size>
<width>24</width>
<height>24</height>
</size>
</property>
<attribute name="headerVisible">
<bool>false</bool>
</attribute>
<column>
<property name="text">
<string notr="true">1</string>
</property>
</column>
</widget>
</item>
<item row="0" column="0" colspan="2">
<widget class="QGroupBox" name="gb_select">
<property name="title">
<string>File watcher for PLC development</string>
</property>
<layout class="QGridLayout" name="gridLayout_2" columnstretch="1,0,0">
<item row="0" column="0">
<widget class="QLabel" name="lbl_select">
<property name="text">
<string>Path to development root:</string>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QPushButton" name="btn_select">
<property name="toolTip">
<string>Open developer root directory</string>
</property>
<property name="icon">
<iconset resource="ressources.qrc">
<normaloff>:/action/ico/folder-open.ico</normaloff>:/action/ico/folder-open.ico</iconset>
</property>
<property name="iconSize">
<size>
<width>24</width>
<height>24</height>
</size>
</property>
</widget>
</item>
<item row="1" column="0" colspan="2">
<widget class="QLabel" name="lbl_path">
<property name="text">
<string>/</string>
</property>
</widget>
</item>
<item row="0" column="2">
<widget class="QPushButton" name="btn_refresh">
<property name="toolTip">
<string>Reload file list</string>
</property>
<property name="icon">
<iconset resource="ressources.qrc">
<normaloff>:/action/ico/refresh.ico</normaloff>:/action/ico/refresh.ico</iconset>
</property>
<property name="iconSize">
<size>
<width>24</width>
<height>24</height>
</size>
</property>
</widget>
</item>
</layout>
</widget>
</item>
</layout>
</widget>
<resources>
<include location="ressources.qrc"/>
</resources>
<connections/>
</ui>

187
include/ui_dev/revpiinfo.ui Normal file
View File

@@ -0,0 +1,187 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>diag_revpiinfo</class>
<widget class="QDialog" name="diag_revpiinfo">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>627</width>
<height>398</height>
</rect>
</property>
<property name="windowTitle">
<string>Dialog</string>
</property>
<layout class="QGridLayout" name="gridLayout">
<item row="0" column="0" colspan="3">
<widget class="QLabel" name="lbl_head">
<property name="font">
<font>
<pointsize>20</pointsize>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="text">
<string>RevPi Python PLC - Control</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item row="3" column="0">
<widget class="QLabel" name="lbl_lbl_version_pyload">
<property name="font">
<font>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="text">
<string>RevPiPyLoad version on RevPi:</string>
</property>
</widget>
</item>
<item row="3" column="2" rowspan="4">
<widget class="QListWidget" name="lst_files"/>
</item>
<item row="3" column="1">
<widget class="QLabel" name="lbl_version_pyload">
<property name="font">
<font>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="text">
<string>0.0.0</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item row="6" column="0">
<widget class="QLabel" name="lbl_link">
<property name="text">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;a href=&quot;https://revpimodio.org/&quot;&gt;&lt;span style=&quot; text-decoration: underline; color:#0000ff;&quot;&gt;https://revpimodio.org/&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="openExternalLinks">
<bool>true</bool>
</property>
</widget>
</item>
<item row="7" column="0" colspan="3">
<widget class="QDialogButtonBox" name="btn_box">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="standardButtons">
<set>QDialogButtonBox::Ok</set>
</property>
</widget>
</item>
<item row="1" column="0" colspan="3">
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<widget class="QLabel" name="lbl_lbl_version_control">
<property name="font">
<font>
<pointsize>14</pointsize>
</font>
</property>
<property name="text">
<string>Version:</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="lbl_version_control">
<property name="font">
<font>
<pointsize>14</pointsize>
</font>
</property>
<property name="text">
<string>0.0.0</string>
</property>
</widget>
</item>
</layout>
</item>
<item row="4" column="0" colspan="2">
<widget class="QLabel" name="lbl_info">
<property name="minimumSize">
<size>
<width>300</width>
<height>0</height>
</size>
</property>
<property name="text">
<string>RevPiModIO, RevPiPyLoad and RevPiPyControl are community driven projects. They are all free and open source software.
All of them comes with ABSOLUTELY NO WARRANTY, to the extent permitted by
applicable law.
(c) Sven Sager, License: GPLv3</string>
</property>
<property name="wordWrap">
<bool>true</bool>
</property>
</widget>
</item>
<item row="5" column="0">
<spacer name="verticalSpacer">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
<resources/>
<connections>
<connection>
<sender>btn_box</sender>
<signal>accepted()</signal>
<receiver>diag_revpiinfo</receiver>
<slot>accept()</slot>
<hints>
<hint type="sourcelabel">
<x>248</x>
<y>254</y>
</hint>
<hint type="destinationlabel">
<x>157</x>
<y>274</y>
</hint>
</hints>
</connection>
<connection>
<sender>btn_box</sender>
<signal>rejected()</signal>
<receiver>diag_revpiinfo</receiver>
<slot>reject()</slot>
<hints>
<hint type="sourcelabel">
<x>316</x>
<y>260</y>
</hint>
<hint type="destinationlabel">
<x>286</x>
<y>274</y>
</hint>
</hints>
</connection>
</connections>
</ui>

View File

@@ -0,0 +1,127 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>win_revpilogfile</class>
<widget class="QMainWindow" name="win_revpilogfile">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>796</width>
<height>347</height>
</rect>
</property>
<property name="windowTitle">
<string>RevPi Python PLC Logfiles</string>
</property>
<widget class="QWidget" name="centralwidget">
<layout class="QGridLayout" name="gridLayout_3">
<item row="1" column="0">
<widget class="QCheckBox" name="cbx_stay_on_top">
<property name="text">
<string>Stay on top of all windows</string>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QCheckBox" name="cbx_wrap">
<property name="text">
<string>Linewrap</string>
</property>
</widget>
</item>
<item row="0" column="0" colspan="2">
<widget class="QSplitter" name="splitter">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="childrenCollapsible">
<bool>false</bool>
</property>
<widget class="QWidget" name="gridLayoutWidget">
<layout class="QGridLayout" name="grid_daemon" columnstretch="1,0">
<item row="0" column="0">
<widget class="QLabel" name="lbl_daemon">
<property name="text">
<string>RevPiPyLoad - Logfile</string>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QPushButton" name="btn_daemon">
<property name="text">
<string>Clear view</string>
</property>
</widget>
</item>
<item row="1" column="0" colspan="2">
<widget class="QPlainTextEdit" name="txt_daemon">
<property name="verticalScrollBarPolicy">
<enum>Qt::ScrollBarAlwaysOn</enum>
</property>
<property name="horizontalScrollBarPolicy">
<enum>Qt::ScrollBarAlwaysOn</enum>
</property>
<property name="tabChangesFocus">
<bool>true</bool>
</property>
<property name="undoRedoEnabled">
<bool>false</bool>
</property>
<property name="lineWrapMode">
<enum>QPlainTextEdit::NoWrap</enum>
</property>
<property name="readOnly">
<bool>true</bool>
</property>
</widget>
</item>
</layout>
</widget>
<widget class="QWidget" name="gridLayoutWidget_2">
<layout class="QGridLayout" name="grid_app" columnstretch="1,0">
<item row="0" column="1">
<widget class="QPushButton" name="btn_app">
<property name="text">
<string>Clear view</string>
</property>
</widget>
</item>
<item row="0" column="0">
<widget class="QLabel" name="lbl_app">
<property name="text">
<string>Python PLC program - Logfile</string>
</property>
</widget>
</item>
<item row="1" column="0" colspan="2">
<widget class="QPlainTextEdit" name="txt_app">
<property name="verticalScrollBarPolicy">
<enum>Qt::ScrollBarAlwaysOn</enum>
</property>
<property name="horizontalScrollBarPolicy">
<enum>Qt::ScrollBarAlwaysOn</enum>
</property>
<property name="tabChangesFocus">
<bool>true</bool>
</property>
<property name="undoRedoEnabled">
<bool>false</bool>
</property>
<property name="lineWrapMode">
<enum>QPlainTextEdit::NoWrap</enum>
</property>
<property name="readOnly">
<bool>true</bool>
</property>
</widget>
</item>
</layout>
</widget>
</widget>
</item>
</layout>
</widget>
</widget>
<resources/>
<connections/>
</ui>

View File

@@ -0,0 +1,250 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>diag_options</class>
<widget class="QDialog" name="diag_options">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>452</width>
<height>503</height>
</rect>
</property>
<property name="windowTitle">
<string>RevPi Python PLC Options</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<widget class="QGroupBox" name="gb_plc">
<property name="title">
<string>Start / Stop behavior of PLC program</string>
</property>
<layout class="QGridLayout" name="gridLayout">
<item row="6" column="0">
<widget class="QLabel" name="lbl_replace_io">
<property name="text">
<string>Replace IO file:</string>
</property>
</widget>
</item>
<item row="2" column="2">
<widget class="QSpinBox" name="sbx_autoreloaddelay">
<property name="minimum">
<number>5</number>
</property>
<property name="maximum">
<number>120</number>
</property>
</widget>
</item>
<item row="4" column="1" colspan="2">
<widget class="QCheckBox" name="cbx_zeroonexit">
<property name="text">
<string>... sucessfully without error</string>
</property>
</widget>
</item>
<item row="5" column="1" colspan="2">
<widget class="QCheckBox" name="cbx_zeroonerror">
<property name="text">
<string>... after exception and errors</string>
</property>
</widget>
</item>
<item row="0" column="0" colspan="3">
<widget class="QCheckBox" name="cbx_autostart">
<property name="text">
<string>Start PLC program automatically</string>
</property>
</widget>
</item>
<item row="1" column="0" colspan="3">
<widget class="QCheckBox" name="cbx_autoreload">
<property name="text">
<string>Restart PLC program after exit or crash</string>
</property>
</widget>
</item>
<item row="3" column="0" colspan="3">
<widget class="QLabel" name="lbl_plc_zero">
<property name="text">
<string>Set process image to NULL if program terminates...</string>
</property>
</widget>
</item>
<item row="7" column="1" colspan="2">
<widget class="QLineEdit" name="txt_replace_io"/>
</item>
<item row="6" column="1" colspan="2">
<widget class="QComboBox" name="cbb_replace_io">
<item>
<property name="text">
<string>Do not use replace io file</string>
</property>
</item>
<item>
<property name="text">
<string>Use static file from RevPiPyLoad</string>
</property>
</item>
<item>
<property name="text">
<string>Use dynamic file from work directory</string>
</property>
</item>
<item>
<property name="text">
<string>Give own path and filename</string>
</property>
</item>
</widget>
</item>
<item row="2" column="0" colspan="2">
<widget class="QLabel" name="lbl_plc_delay">
<property name="text">
<string>Restart delay in seconds:</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QGroupBox" name="gb_server">
<property name="title">
<string>RevPiPyLoad server services</string>
</property>
<layout class="QGridLayout" name="gridLayout_2">
<item row="0" column="1">
<widget class="QPushButton" name="btn_aclplcslave">
<property name="text">
<string>Edit ACL</string>
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QCheckBox" name="cbx_mqtt">
<property name="text">
<string>MQTT process image publisher</string>
</property>
</widget>
</item>
<item row="0" column="0">
<widget class="QCheckBox" name="cbx_plcslave">
<property name="text">
<string>Start RevPi piControl server</string>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QLabel" name="lbl_slave_status">
<property name="text">
<string>status</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QLabel" name="lbl_lbl_slave_status">
<property name="text">
<string>piControl server is:</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item row="3" column="1">
<widget class="QLabel" name="lbl_mqtt_status">
<property name="text">
<string>status</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item row="3" column="0">
<widget class="QLabel" name="lbl_lbl_mqtt_status">
<property name="text">
<string>MQTT publish service is:</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item row="2" column="1">
<widget class="QPushButton" name="btn_mqtt">
<property name="text">
<string>Settings</string>
</property>
</widget>
</item>
<item row="4" column="1">
<widget class="QPushButton" name="btn_aclxmlrpc">
<property name="text">
<string>Edit ACL</string>
</property>
</widget>
</item>
<item row="4" column="0">
<widget class="QCheckBox" name="cbx_xmlrpc">
<property name="text">
<string>Activate XML-RPC for RevPiPyControl</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QDialogButtonBox" name="btn_box">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="standardButtons">
<set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
</property>
</widget>
</item>
</layout>
</widget>
<resources/>
<connections>
<connection>
<sender>btn_box</sender>
<signal>accepted()</signal>
<receiver>diag_options</receiver>
<slot>accept()</slot>
<hints>
<hint type="sourcelabel">
<x>248</x>
<y>254</y>
</hint>
<hint type="destinationlabel">
<x>157</x>
<y>274</y>
</hint>
</hints>
</connection>
<connection>
<sender>btn_box</sender>
<signal>rejected()</signal>
<receiver>diag_options</receiver>
<slot>reject()</slot>
<hints>
<hint type="sourcelabel">
<x>316</x>
<y>260</y>
</hint>
<hint type="destinationlabel">
<x>286</x>
<y>274</y>
</hint>
</hints>
</connection>
</connections>
</ui>

View File

@@ -0,0 +1,218 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>diag_connections</class>
<widget class="QDialog" name="diag_connections">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>520</width>
<height>508</height>
</rect>
</property>
<property name="windowTitle">
<string>Revolution Pi connections</string>
</property>
<layout class="QGridLayout" name="gridLayout">
<item row="0" column="0">
<widget class="QTreeWidget" name="tre_connections">
<property name="editTriggers">
<set>QAbstractItemView::NoEditTriggers</set>
</property>
<column>
<property name="text">
<string>Connection name</string>
</property>
</column>
<column>
<property name="text">
<string>Address</string>
</property>
</column>
</widget>
</item>
<item row="0" column="1">
<layout class="QVBoxLayout" name="vl_edit">
<item>
<spacer name="vs_edit">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QPushButton" name="btn_up">
<property name="text">
<string/>
</property>
<property name="icon">
<iconset resource="ressources.qrc">
<normaloff>:/action/ico/arrow-up.ico</normaloff>:/action/ico/arrow-up.ico</iconset>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="btn_down">
<property name="text">
<string/>
</property>
<property name="icon">
<iconset resource="ressources.qrc">
<normaloff>:/action/ico/arrow-down.ico</normaloff>:/action/ico/arrow-down.ico</iconset>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="btn_delete">
<property name="text">
<string/>
</property>
<property name="icon">
<iconset resource="ressources.qrc">
<normaloff>:/action/ico/edit-delete.ico</normaloff>:/action/ico/edit-delete.ico</iconset>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="btn_add">
<property name="text">
<string/>
</property>
<property name="icon">
<iconset resource="ressources.qrc">
<normaloff>:/action/ico/edit-add.ico</normaloff>:/action/ico/edit-add.ico</iconset>
</property>
</widget>
</item>
</layout>
</item>
<item row="1" column="0" colspan="2">
<widget class="QGroupBox" name="gb_properties">
<property name="title">
<string>Connection properties</string>
</property>
<layout class="QFormLayout" name="formLayout">
<item row="0" column="0">
<widget class="QLabel" name="lbl_name">
<property name="text">
<string>Display name:</string>
</property>
</widget>
</item>
<item row="3" column="0">
<widget class="QLabel" name="lbl_folder">
<property name="text">
<string>Sub folder:</string>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QLabel" name="lbl_address">
<property name="text">
<string>Address (DNS/IP):</string>
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QLabel" name="lbl_port">
<property name="text">
<string>Port (Default {0}):</string>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QLineEdit" name="txt_name"/>
</item>
<item row="1" column="1">
<widget class="QLineEdit" name="txt_address"/>
</item>
<item row="2" column="1">
<widget class="QSpinBox" name="sbx_port">
<property name="sizePolicy">
<sizepolicy hsizetype="Maximum" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimum">
<number>1</number>
</property>
<property name="maximum">
<number>65535</number>
</property>
<property name="value">
<number>55123</number>
</property>
</widget>
</item>
<item row="3" column="1">
<widget class="QComboBox" name="cbb_folder">
<property name="editable">
<bool>true</bool>
</property>
<item>
<property name="text">
<string/>
</property>
</item>
</widget>
</item>
</layout>
</widget>
</item>
<item row="2" column="0" colspan="2">
<widget class="QDialogButtonBox" name="btn_box">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="standardButtons">
<set>QDialogButtonBox::Discard|QDialogButtonBox::Save</set>
</property>
</widget>
</item>
</layout>
</widget>
<resources>
<include location="ressources.qrc"/>
</resources>
<connections>
<connection>
<sender>btn_box</sender>
<signal>accepted()</signal>
<receiver>diag_connections</receiver>
<slot>accept()</slot>
<hints>
<hint type="sourcelabel">
<x>248</x>
<y>254</y>
</hint>
<hint type="destinationlabel">
<x>157</x>
<y>274</y>
</hint>
</hints>
</connection>
<connection>
<sender>btn_box</sender>
<signal>rejected()</signal>
<receiver>diag_connections</receiver>
<slot>reject()</slot>
<hints>
<hint type="sourcelabel">
<x>316</x>
<y>260</y>
</hint>
<hint type="destinationlabel">
<x>286</x>
<y>274</y>
</hint>
</hints>
</connection>
</connections>
</ui>

View File

@@ -0,0 +1,248 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>diag_program</class>
<widget class="QDialog" name="diag_program">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>488</width>
<height>500</height>
</rect>
</property>
<property name="windowTitle">
<string>PLC program</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<widget class="QGroupBox" name="gb_plc">
<property name="title">
<string>PLC program</string>
</property>
<layout class="QGridLayout" name="gridLayout">
<item row="3" column="1">
<widget class="QRadioButton" name="rbn_pythonversion_2">
<property name="text">
<string>Python 2</string>
</property>
</widget>
</item>
<item row="2" column="1" colspan="2">
<widget class="QLineEdit" name="txt_plcarguments"/>
</item>
<item row="3" column="2">
<widget class="QRadioButton" name="rbn_pythonversion_3">
<property name="text">
<string>Python 3</string>
</property>
</widget>
</item>
<item row="0" column="0" colspan="3">
<widget class="QLabel" name="lbl_plcprogram">
<property name="text">
<string>Python PLC start program:</string>
</property>
</widget>
</item>
<item row="4" column="0" colspan="3">
<widget class="QCheckBox" name="cbx_plcworkdir_set_uid">
<property name="text">
<string>Set write permissions for plc program to workdirectory</string>
</property>
</widget>
</item>
<item row="1" column="0" colspan="3">
<widget class="QComboBox" name="cbb_plcprogram"/>
</item>
<item row="3" column="0">
<widget class="QLabel" name="lbl_pythonversion">
<property name="text">
<string>Python version:</string>
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QLabel" name="lbl_plcarguments">
<property name="text">
<string>Program arguments:</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QGroupBox" name="cb_transfair">
<property name="title">
<string>Transfair PLC program</string>
</property>
<layout class="QGridLayout" name="gridLayout_2">
<item row="0" column="1">
<widget class="QComboBox" name="cbb_format">
<item>
<property name="text">
<string>Files</string>
</property>
</item>
<item>
<property name="text">
<string>Folder</string>
</property>
</item>
<item>
<property name="text">
<string>ZIP archive</string>
</property>
</item>
<item>
<property name="text">
<string>TGZ archive</string>
</property>
</item>
</widget>
</item>
<item row="3" column="1">
<widget class="QPushButton" name="btn_program_upload">
<property name="text">
<string>Upload</string>
</property>
</widget>
</item>
<item row="3" column="0">
<widget class="QPushButton" name="btn_program_download">
<property name="text">
<string>Download</string>
</property>
</widget>
</item>
<item row="0" column="0">
<widget class="QLabel" name="lbl_format">
<property name="text">
<string>Transfair format:</string>
</property>
</widget>
</item>
<item row="1" column="0" colspan="2">
<widget class="QCheckBox" name="cbx_pictory">
<property name="text">
<string>Including piCtory configuration</string>
</property>
</widget>
</item>
<item row="2" column="0" colspan="2">
<widget class="QCheckBox" name="cbx_clear">
<property name="text">
<string>Remove all files on Revolution Pi before upload</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QGroupBox" name="gb_control">
<property name="title">
<string>Control files</string>
</property>
<layout class="QGridLayout" name="gridLayout_3">
<item row="1" column="1">
<widget class="QPushButton" name="btn_procimg_download">
<property name="text">
<string>Download</string>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QPushButton" name="btn_pictory_download">
<property name="text">
<string>Download</string>
</property>
</widget>
</item>
<item row="0" column="2">
<widget class="QPushButton" name="btn_pictory_upload">
<property name="text">
<string>Upload</string>
</property>
</widget>
</item>
<item row="0" column="0">
<widget class="QLabel" name="lbl_pictory">
<property name="text">
<string>piCtory configuraiton</string>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QLabel" name="lbl_procimg">
<property name="text">
<string>Process image from piControl0</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QDialogButtonBox" name="btn_box">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="standardButtons">
<set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
</property>
</widget>
</item>
</layout>
</widget>
<tabstops>
<tabstop>cbb_plcprogram</tabstop>
<tabstop>txt_plcarguments</tabstop>
<tabstop>rbn_pythonversion_2</tabstop>
<tabstop>rbn_pythonversion_3</tabstop>
<tabstop>cbx_plcworkdir_set_uid</tabstop>
<tabstop>cbb_format</tabstop>
<tabstop>cbx_pictory</tabstop>
<tabstop>cbx_clear</tabstop>
<tabstop>btn_program_download</tabstop>
<tabstop>btn_program_upload</tabstop>
<tabstop>btn_pictory_download</tabstop>
<tabstop>btn_pictory_upload</tabstop>
<tabstop>btn_procimg_download</tabstop>
</tabstops>
<resources/>
<connections>
<connection>
<sender>btn_box</sender>
<signal>accepted()</signal>
<receiver>diag_program</receiver>
<slot>accept()</slot>
<hints>
<hint type="sourcelabel">
<x>257</x>
<y>490</y>
</hint>
<hint type="destinationlabel">
<x>157</x>
<y>274</y>
</hint>
</hints>
</connection>
<connection>
<sender>btn_box</sender>
<signal>rejected()</signal>
<receiver>diag_program</receiver>
<slot>reject()</slot>
<hints>
<hint type="sourcelabel">
<x>325</x>
<y>490</y>
</hint>
<hint type="destinationlabel">
<x>286</x>
<y>274</y>
</hint>
</hints>
</connection>
</connections>
</ui>