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

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>