mirror of
https://github.com/naruxde/revpipycontrol.git
synced 2025-11-08 23:53:52 +01:00
Optionfenster schlie?t bei destroy alle Unterfenster mit
MQTT Settings ingetriert
This commit is contained in:
@@ -49,7 +49,7 @@ Methods</h3>
|
|||||||
<table>
|
<table>
|
||||||
<tr>
|
<tr>
|
||||||
<td><a style="color:#0000FF" href="#AclManager.__init__">AclManager</a></td>
|
<td><a style="color:#0000FF" href="#AclManager.__init__">AclManager</a></td>
|
||||||
<td>Init RevPiOption-Class.</td>
|
<td>Init AclManger-Class.</td>
|
||||||
</tr><tr>
|
</tr><tr>
|
||||||
<td><a style="color:#0000FF" href="#AclManager.__get_acltext">__get_acltext</a></td>
|
<td><a style="color:#0000FF" href="#AclManager.__get_acltext">__get_acltext</a></td>
|
||||||
<td>Getter fuer Leveltexte.</td>
|
<td>Getter fuer Leveltexte.</td>
|
||||||
@@ -107,7 +107,7 @@ Static Methods</h3>
|
|||||||
AclManager (Constructor)</h3>
|
AclManager (Constructor)</h3>
|
||||||
<b>AclManager</b>(<i>master, minlevel, maxlevel, acl_str="", readonly=False</i>)
|
<b>AclManager</b>(<i>master, minlevel, maxlevel, acl_str="", readonly=False</i>)
|
||||||
<p>
|
<p>
|
||||||
Init RevPiOption-Class.
|
Init AclManger-Class.
|
||||||
</p><dl>
|
</p><dl>
|
||||||
<dt>Returns:</dt>
|
<dt>Returns:</dt>
|
||||||
<dd>
|
<dd>
|
||||||
|
|||||||
@@ -24,6 +24,9 @@ Modules</h3>
|
|||||||
<td><a style="color:#0000FF" href="aclmanager.html">aclmanager</a></td>
|
<td><a style="color:#0000FF" href="aclmanager.html">aclmanager</a></td>
|
||||||
<td></td>
|
<td></td>
|
||||||
</tr><tr>
|
</tr><tr>
|
||||||
|
<td><a style="color:#0000FF" href="mqttmanager.html">mqttmanager</a></td>
|
||||||
|
<td></td>
|
||||||
|
</tr><tr>
|
||||||
<td><a style="color:#0000FF" href="mytools.html">mytools</a></td>
|
<td><a style="color:#0000FF" href="mytools.html">mytools</a></td>
|
||||||
<td>Tools-Sammlung.</td>
|
<td>Tools-Sammlung.</td>
|
||||||
</tr><tr>
|
</tr><tr>
|
||||||
|
|||||||
134
doc/mqttmanager.html
Normal file
134
doc/mqttmanager.html
Normal file
@@ -0,0 +1,134 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html><head>
|
||||||
|
<title>mqttmanager</title>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
</head>
|
||||||
|
<body style="background-color:#FFFFFF;color:#000000"><a NAME="top" ID="top"></a>
|
||||||
|
<h1 style="background-color:#FFFFFF;color:#0000FF">
|
||||||
|
mqttmanager</h1>
|
||||||
|
|
||||||
|
<h3 style="background-color:#FFFFFF;color:#FF0000">
|
||||||
|
Global Attributes</h3>
|
||||||
|
<table>
|
||||||
|
<tr><td>_</td></tr><tr><td>__author__</td></tr><tr><td>__copyright__</td></tr><tr><td>__license__</td></tr>
|
||||||
|
</table>
|
||||||
|
<h3 style="background-color:#FFFFFF;color:#FF0000">
|
||||||
|
Classes</h3>
|
||||||
|
<table>
|
||||||
|
<tr>
|
||||||
|
<td><a style="color:#0000FF" href="#MqttManager">MqttManager</a></td>
|
||||||
|
<td>Hauptfenster der MQTT-Einstellungen.</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<h3 style="background-color:#FFFFFF;color:#FF0000">
|
||||||
|
Functions</h3>
|
||||||
|
<table>
|
||||||
|
<tr><td>None</td></tr>
|
||||||
|
</table>
|
||||||
|
<hr /><hr />
|
||||||
|
<a NAME="MqttManager" ID="MqttManager"></a>
|
||||||
|
<h2 style="background-color:#FFFFFF;color:#0000FF">MqttManager</h2>
|
||||||
|
<p>
|
||||||
|
Hauptfenster der MQTT-Einstellungen.
|
||||||
|
</p>
|
||||||
|
<h3 style="background-color:#FFFFFF;color:#FF0000">
|
||||||
|
Derived from</h3>
|
||||||
|
tkinter.Frame
|
||||||
|
<h3 style="background-color:#FFFFFF;color:#FF0000">
|
||||||
|
Class Attributes</h3>
|
||||||
|
<table>
|
||||||
|
<tr><td>dict_mqttsettings</td></tr><tr><td>root</td></tr><tr><td>settings</td></tr>
|
||||||
|
</table>
|
||||||
|
<h3 style="background-color:#FFFFFF;color:#FF0000">
|
||||||
|
Class Methods</h3>
|
||||||
|
<table>
|
||||||
|
<tr><td>None</td></tr>
|
||||||
|
</table>
|
||||||
|
<h3 style="background-color:#FFFFFF;color:#FF0000">
|
||||||
|
Methods</h3>
|
||||||
|
<table>
|
||||||
|
<tr>
|
||||||
|
<td><a style="color:#0000FF" href="#MqttManager.__init__">MqttManager</a></td>
|
||||||
|
<td>Init MqttManager-Class.</td>
|
||||||
|
</tr><tr>
|
||||||
|
<td><a style="color:#0000FF" href="#MqttManager._changesdone">_changesdone</a></td>
|
||||||
|
<td>Prüft ob sich die Einstellungen geändert haben.</td>
|
||||||
|
</tr><tr>
|
||||||
|
<td><a style="color:#0000FF" href="#MqttManager._checkclose">_checkclose</a></td>
|
||||||
|
<td>Prüft ob Fenster beendet werden soll.</td>
|
||||||
|
</tr><tr>
|
||||||
|
<td><a style="color:#0000FF" href="#MqttManager._createwidgets">_createwidgets</a></td>
|
||||||
|
<td>Erstellt Widgets.</td>
|
||||||
|
</tr><tr>
|
||||||
|
<td><a style="color:#0000FF" href="#MqttManager._save">_save</a></td>
|
||||||
|
<td>Übernimt die Änderungen.</td>
|
||||||
|
</tr><tr>
|
||||||
|
<td><a style="color:#0000FF" href="#MqttManager.get_settings">get_settings</a></td>
|
||||||
|
<td>Gibt die MQTT Konfiguration zurück.</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<h3 style="background-color:#FFFFFF;color:#FF0000">
|
||||||
|
Static Methods</h3>
|
||||||
|
<table>
|
||||||
|
<tr><td>None</td></tr>
|
||||||
|
</table>
|
||||||
|
<a NAME="MqttManager.__init__" ID="MqttManager.__init__"></a>
|
||||||
|
<h3 style="background-color:#FFFFFF;color:#FF0000">
|
||||||
|
MqttManager (Constructor)</h3>
|
||||||
|
<b>MqttManager</b>(<i>master, settings, readonly=False</i>)
|
||||||
|
<p>
|
||||||
|
Init MqttManager-Class.
|
||||||
|
</p><dl>
|
||||||
|
<dt>Returns:</dt>
|
||||||
|
<dd>
|
||||||
|
None
|
||||||
|
</dd>
|
||||||
|
</dl><a NAME="MqttManager._changesdone" ID="MqttManager._changesdone"></a>
|
||||||
|
<h3 style="background-color:#FFFFFF;color:#FF0000">
|
||||||
|
MqttManager._changesdone</h3>
|
||||||
|
<b>_changesdone</b>(<i></i>)
|
||||||
|
<p>
|
||||||
|
Prüft ob sich die Einstellungen geändert haben.
|
||||||
|
</p><dl>
|
||||||
|
<dt>Returns:</dt>
|
||||||
|
<dd>
|
||||||
|
True, wenn min. eine Einstellung geändert wurde
|
||||||
|
</dd>
|
||||||
|
</dl><a NAME="MqttManager._checkclose" ID="MqttManager._checkclose"></a>
|
||||||
|
<h3 style="background-color:#FFFFFF;color:#FF0000">
|
||||||
|
MqttManager._checkclose</h3>
|
||||||
|
<b>_checkclose</b>(<i>event=None</i>)
|
||||||
|
<p>
|
||||||
|
Prüft ob Fenster beendet werden soll.
|
||||||
|
</p><dl>
|
||||||
|
<dt><i>event</i></dt>
|
||||||
|
<dd>
|
||||||
|
tkinter-Event
|
||||||
|
</dd>
|
||||||
|
</dl><a NAME="MqttManager._createwidgets" ID="MqttManager._createwidgets"></a>
|
||||||
|
<h3 style="background-color:#FFFFFF;color:#FF0000">
|
||||||
|
MqttManager._createwidgets</h3>
|
||||||
|
<b>_createwidgets</b>(<i></i>)
|
||||||
|
<p>
|
||||||
|
Erstellt Widgets.
|
||||||
|
</p><a NAME="MqttManager._save" ID="MqttManager._save"></a>
|
||||||
|
<h3 style="background-color:#FFFFFF;color:#FF0000">
|
||||||
|
MqttManager._save</h3>
|
||||||
|
<b>_save</b>(<i></i>)
|
||||||
|
<p>
|
||||||
|
Übernimt die Änderungen.
|
||||||
|
</p><a NAME="MqttManager.get_settings" ID="MqttManager.get_settings"></a>
|
||||||
|
<h3 style="background-color:#FFFFFF;color:#FF0000">
|
||||||
|
MqttManager.get_settings</h3>
|
||||||
|
<b>get_settings</b>(<i></i>)
|
||||||
|
<p>
|
||||||
|
Gibt die MQTT Konfiguration zurück.
|
||||||
|
</p><dl>
|
||||||
|
<dt>Returns:</dt>
|
||||||
|
<dd>
|
||||||
|
Settings als <class 'dict'>
|
||||||
|
</dd>
|
||||||
|
</dl>
|
||||||
|
<div align="right"><a style="color:#0000FF" href="#top">Up</a></div>
|
||||||
|
<hr />
|
||||||
|
</body></html>
|
||||||
@@ -54,6 +54,9 @@ Methods</h3>
|
|||||||
<td><a style="color:#0000FF" href="#RevPiOption._changesdone">_changesdone</a></td>
|
<td><a style="color:#0000FF" href="#RevPiOption._changesdone">_changesdone</a></td>
|
||||||
<td>Prüft ob sich die Einstellungen geändert haben.</td>
|
<td>Prüft ob sich die Einstellungen geändert haben.</td>
|
||||||
</tr><tr>
|
</tr><tr>
|
||||||
|
<td><a style="color:#0000FF" href="#RevPiOption._changesdone_mqtt">_changesdone_mqtt</a></td>
|
||||||
|
<td>Prüft ob MQTT-Settings geändert wurden.</td>
|
||||||
|
</tr><tr>
|
||||||
<td><a style="color:#0000FF" href="#RevPiOption._checkclose">_checkclose</a></td>
|
<td><a style="color:#0000FF" href="#RevPiOption._checkclose">_checkclose</a></td>
|
||||||
<td>Prüft ob Fenster beendet werden soll.</td>
|
<td>Prüft ob Fenster beendet werden soll.</td>
|
||||||
</tr><tr>
|
</tr><tr>
|
||||||
@@ -72,11 +75,17 @@ Methods</h3>
|
|||||||
<td><a style="color:#0000FF" href="#RevPiOption.askxmlon">askxmlon</a></td>
|
<td><a style="color:#0000FF" href="#RevPiOption.askxmlon">askxmlon</a></td>
|
||||||
<td>Fragt Nuter, ob wirklicht abgeschaltet werden soll.</td>
|
<td>Fragt Nuter, ob wirklicht abgeschaltet werden soll.</td>
|
||||||
</tr><tr>
|
</tr><tr>
|
||||||
|
<td><a style="color:#0000FF" href="#RevPiOption.btn_mqttsettings">btn_mqttsettings</a></td>
|
||||||
|
<td>Öffnet Fenster für MQTT Einstellungen.</td>
|
||||||
|
</tr><tr>
|
||||||
<td><a style="color:#0000FF" href="#RevPiOption.btn_slaveacl">btn_slaveacl</a></td>
|
<td><a style="color:#0000FF" href="#RevPiOption.btn_slaveacl">btn_slaveacl</a></td>
|
||||||
<td>Öffnet Fenster für ACL-Verwaltung.</td>
|
<td>Öffnet Fenster für ACL-Verwaltung.</td>
|
||||||
</tr><tr>
|
</tr><tr>
|
||||||
<td><a style="color:#0000FF" href="#RevPiOption.btn_xmlacl">btn_xmlacl</a></td>
|
<td><a style="color:#0000FF" href="#RevPiOption.btn_xmlacl">btn_xmlacl</a></td>
|
||||||
<td>Öffnet Fenster für ACL-Verwaltung.</td>
|
<td>Öffnet Fenster für ACL-Verwaltung.</td>
|
||||||
|
</tr><tr>
|
||||||
|
<td><a style="color:#0000FF" href="#RevPiOption.destroy">destroy</a></td>
|
||||||
|
<td>Beendet alle Unterfenster und sich selbst.</td>
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
<h3 style="background-color:#FFFFFF;color:#FF0000">
|
<h3 style="background-color:#FFFFFF;color:#FF0000">
|
||||||
@@ -106,6 +115,17 @@ Prüft ob sich die Einstellungen geändert haben.
|
|||||||
<dd>
|
<dd>
|
||||||
True, wenn min. eine Einstellung geändert wurde
|
True, wenn min. eine Einstellung geändert wurde
|
||||||
</dd>
|
</dd>
|
||||||
|
</dl><a NAME="RevPiOption._changesdone_mqtt" ID="RevPiOption._changesdone_mqtt"></a>
|
||||||
|
<h3 style="background-color:#FFFFFF;color:#FF0000">
|
||||||
|
RevPiOption._changesdone_mqtt</h3>
|
||||||
|
<b>_changesdone_mqtt</b>(<i></i>)
|
||||||
|
<p>
|
||||||
|
Prüft ob MQTT-Settings geändert wurden.
|
||||||
|
</p><dl>
|
||||||
|
<dt>Returns:</dt>
|
||||||
|
<dd>
|
||||||
|
True, wenn Änderungen existieren
|
||||||
|
</dd>
|
||||||
</dl><a NAME="RevPiOption._checkclose" ID="RevPiOption._checkclose"></a>
|
</dl><a NAME="RevPiOption._checkclose" ID="RevPiOption._checkclose"></a>
|
||||||
<h3 style="background-color:#FFFFFF;color:#FF0000">
|
<h3 style="background-color:#FFFFFF;color:#FF0000">
|
||||||
RevPiOption._checkclose</h3>
|
RevPiOption._checkclose</h3>
|
||||||
@@ -162,6 +182,12 @@ RevPiOption.askxmlon</h3>
|
|||||||
<b>askxmlon</b>(<i></i>)
|
<b>askxmlon</b>(<i></i>)
|
||||||
<p>
|
<p>
|
||||||
Fragt Nuter, ob wirklicht abgeschaltet werden soll.
|
Fragt Nuter, ob wirklicht abgeschaltet werden soll.
|
||||||
|
</p><a NAME="RevPiOption.btn_mqttsettings" ID="RevPiOption.btn_mqttsettings"></a>
|
||||||
|
<h3 style="background-color:#FFFFFF;color:#FF0000">
|
||||||
|
RevPiOption.btn_mqttsettings</h3>
|
||||||
|
<b>btn_mqttsettings</b>(<i></i>)
|
||||||
|
<p>
|
||||||
|
Öffnet Fenster für MQTT Einstellungen.
|
||||||
</p><a NAME="RevPiOption.btn_slaveacl" ID="RevPiOption.btn_slaveacl"></a>
|
</p><a NAME="RevPiOption.btn_slaveacl" ID="RevPiOption.btn_slaveacl"></a>
|
||||||
<h3 style="background-color:#FFFFFF;color:#FF0000">
|
<h3 style="background-color:#FFFFFF;color:#FF0000">
|
||||||
RevPiOption.btn_slaveacl</h3>
|
RevPiOption.btn_slaveacl</h3>
|
||||||
@@ -174,6 +200,12 @@ RevPiOption.btn_xmlacl</h3>
|
|||||||
<b>btn_xmlacl</b>(<i></i>)
|
<b>btn_xmlacl</b>(<i></i>)
|
||||||
<p>
|
<p>
|
||||||
Öffnet Fenster für ACL-Verwaltung.
|
Öffnet Fenster für ACL-Verwaltung.
|
||||||
|
</p><a NAME="RevPiOption.destroy" ID="RevPiOption.destroy"></a>
|
||||||
|
<h3 style="background-color:#FFFFFF;color:#FF0000">
|
||||||
|
RevPiOption.destroy</h3>
|
||||||
|
<b>destroy</b>(<i></i>)
|
||||||
|
<p>
|
||||||
|
Beendet alle Unterfenster und sich selbst.
|
||||||
</p>
|
</p>
|
||||||
<div align="right"><a style="color:#0000FF" href="#top">Up</a></div>
|
<div align="right"><a style="color:#0000FF" href="#top">Up</a></div>
|
||||||
<hr />
|
<hr />
|
||||||
|
|||||||
@@ -21,6 +21,19 @@ aclmanager._?8
|
|||||||
aclmanager.__author__?9
|
aclmanager.__author__?9
|
||||||
aclmanager.__copyright__?9
|
aclmanager.__copyright__?9
|
||||||
aclmanager.__license__?9
|
aclmanager.__license__?9
|
||||||
|
mqttmanager.MqttManager._changesdone?5()
|
||||||
|
mqttmanager.MqttManager._checkclose?5(event=None)
|
||||||
|
mqttmanager.MqttManager._createwidgets?5()
|
||||||
|
mqttmanager.MqttManager._save?5()
|
||||||
|
mqttmanager.MqttManager.dict_mqttsettings?7
|
||||||
|
mqttmanager.MqttManager.get_settings?4()
|
||||||
|
mqttmanager.MqttManager.root?7
|
||||||
|
mqttmanager.MqttManager.settings?7
|
||||||
|
mqttmanager.MqttManager?1(master, settings, readonly=False)
|
||||||
|
mqttmanager._?8
|
||||||
|
mqttmanager.__author__?9
|
||||||
|
mqttmanager.__copyright__?9
|
||||||
|
mqttmanager.__license__?9
|
||||||
mytools.__author__?9
|
mytools.__author__?9
|
||||||
mytools.__copyright__?9
|
mytools.__copyright__?9
|
||||||
mytools.__license__?9
|
mytools.__license__?9
|
||||||
@@ -104,14 +117,17 @@ revpilogfile.__author__?9
|
|||||||
revpilogfile.__copyright__?9
|
revpilogfile.__copyright__?9
|
||||||
revpilogfile.__license__?9
|
revpilogfile.__license__?9
|
||||||
revpioption.RevPiOption._changesdone?5()
|
revpioption.RevPiOption._changesdone?5()
|
||||||
|
revpioption.RevPiOption._changesdone_mqtt?5()
|
||||||
revpioption.RevPiOption._checkclose?5(event=None)
|
revpioption.RevPiOption._checkclose?5(event=None)
|
||||||
revpioption.RevPiOption._checkvalues?5()
|
revpioption.RevPiOption._checkvalues?5()
|
||||||
revpioption.RevPiOption._createwidgets?5()
|
revpioption.RevPiOption._createwidgets?5()
|
||||||
revpioption.RevPiOption._loadappdata?5(refresh=False)
|
revpioption.RevPiOption._loadappdata?5(refresh=False)
|
||||||
revpioption.RevPiOption._setappdata?5()
|
revpioption.RevPiOption._setappdata?5()
|
||||||
revpioption.RevPiOption.askxmlon?4()
|
revpioption.RevPiOption.askxmlon?4()
|
||||||
|
revpioption.RevPiOption.btn_mqttsettings?4()
|
||||||
revpioption.RevPiOption.btn_slaveacl?4()
|
revpioption.RevPiOption.btn_slaveacl?4()
|
||||||
revpioption.RevPiOption.btn_xmlacl?4()
|
revpioption.RevPiOption.btn_xmlacl?4()
|
||||||
|
revpioption.RevPiOption.destroy?4()
|
||||||
revpioption.RevPiOption?1(master, xmlcli)
|
revpioption.RevPiOption?1(master, xmlcli)
|
||||||
revpioption._?8
|
revpioption._?8
|
||||||
revpioption.__author__?9
|
revpioption.__author__?9
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
AclManager ttk.Frame
|
AclManager ttk.Frame
|
||||||
|
MqttManager tkinter.Frame
|
||||||
RevPiCheckClient tkinter.Frame
|
RevPiCheckClient tkinter.Frame
|
||||||
RevPiDevelop ttk.Frame
|
RevPiDevelop ttk.Frame
|
||||||
RevPiInfo tkinter.Frame
|
RevPiInfo tkinter.Frame
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<!DOCTYPE Project SYSTEM "Project-5.1.dtd">
|
<!DOCTYPE Project SYSTEM "Project-5.1.dtd">
|
||||||
<!-- eric project file for project revpipycontrol -->
|
<!-- eric project file for project revpipycontrol -->
|
||||||
<!-- Saved: 2018-08-12, 16:56:01 -->
|
<!-- Saved: 2018-09-03, 16:25:26 -->
|
||||||
<!-- Copyright (C) 2018 Sven Sager, akira@narux.de -->
|
<!-- Copyright (C) 2018 Sven Sager, akira@narux.de -->
|
||||||
<Project version="5.1">
|
<Project version="5.1">
|
||||||
<Language>en_US</Language>
|
<Language>en_US</Language>
|
||||||
@@ -14,6 +14,7 @@
|
|||||||
<Eol index="1"/>
|
<Eol index="1"/>
|
||||||
<Sources>
|
<Sources>
|
||||||
<Source>revpipycontrol/aclmanager.py</Source>
|
<Source>revpipycontrol/aclmanager.py</Source>
|
||||||
|
<Source>revpipycontrol/mqttmanager.py</Source>
|
||||||
<Source>revpipycontrol/mytools.py</Source>
|
<Source>revpipycontrol/mytools.py</Source>
|
||||||
<Source>revpipycontrol/revpicheckclient.py</Source>
|
<Source>revpipycontrol/revpicheckclient.py</Source>
|
||||||
<Source>revpipycontrol/revpidevelop.py</Source>
|
<Source>revpipycontrol/revpidevelop.py</Source>
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ class AclManager(ttk.Frame):
|
|||||||
u"""Hauptfenster des ACL-Managers."""
|
u"""Hauptfenster des ACL-Managers."""
|
||||||
|
|
||||||
def __init__(self, master, minlevel, maxlevel, acl_str="", readonly=False):
|
def __init__(self, master, minlevel, maxlevel, acl_str="", readonly=False):
|
||||||
u"""Init RevPiOption-Class.
|
u"""Init AclManger-Class.
|
||||||
@return None"""
|
@return None"""
|
||||||
super().__init__(master)
|
super().__init__(master)
|
||||||
self.master.bind("<KeyPress-Escape>", self._checkclose)
|
self.master.bind("<KeyPress-Escape>", self._checkclose)
|
||||||
|
|||||||
321
revpipycontrol/mqttmanager.py
Normal file
321
revpipycontrol/mqttmanager.py
Normal file
@@ -0,0 +1,321 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
u"""Optionen für das MQTT System."""
|
||||||
|
|
||||||
|
__author__ = "Sven Sager"
|
||||||
|
__copyright__ = "Copyright (C) 2018 Sven Sager"
|
||||||
|
__license__ = "GPLv3"
|
||||||
|
|
||||||
|
import tkinter
|
||||||
|
import tkinter.messagebox as tkmsg
|
||||||
|
from mytools import gettrans
|
||||||
|
|
||||||
|
# Übersetzung laden
|
||||||
|
_ = gettrans()
|
||||||
|
|
||||||
|
|
||||||
|
class MqttManager(tkinter.Frame):
|
||||||
|
|
||||||
|
u"""Hauptfenster der MQTT-Einstellungen."""
|
||||||
|
|
||||||
|
def __init__(self, master, settings, readonly=False):
|
||||||
|
u"""Init MqttManager-Class.
|
||||||
|
@return None"""
|
||||||
|
if not isinstance(settings, dict):
|
||||||
|
raise ValueError("parameter settings must be <class 'dict'>")
|
||||||
|
if not isinstance(readonly, bool):
|
||||||
|
raise ValueError("parameter readonly must be <class 'bool'>")
|
||||||
|
|
||||||
|
super().__init__(master)
|
||||||
|
self.master.bind("<KeyPress-Escape>", self._checkclose)
|
||||||
|
self.master.protocol("WM_DELETE_WINDOW", self._checkclose)
|
||||||
|
self.pack(expand=True, fill="both")
|
||||||
|
|
||||||
|
# Daten laden
|
||||||
|
self.__ro = "disabled" if readonly else "normal"
|
||||||
|
self.__settings = settings
|
||||||
|
|
||||||
|
# Fenster bauen
|
||||||
|
self._createwidgets()
|
||||||
|
|
||||||
|
def _changesdone(self):
|
||||||
|
u"""Prüft ob sich die Einstellungen geändert haben.
|
||||||
|
@return True, wenn min. eine Einstellung geändert wurde"""
|
||||||
|
return (
|
||||||
|
self.var_basetopic.get() != self.__settings["mqttbasetopic"] or
|
||||||
|
self.var_send_events.get() != self.__settings["mqttsend_events"] or
|
||||||
|
self.var_client_id.get() != self.__settings["mqttclient_id"] or
|
||||||
|
self.var_password.get() != self.__settings["mqttpassword"] or
|
||||||
|
self.var_port.get() != str(self.__settings["mqttport"]) or
|
||||||
|
self.var_tls_set.get() != self.__settings["mqtttls_set"] or
|
||||||
|
self.var_username.get() != self.__settings["mqttusername"] or
|
||||||
|
self.var_broker_address.get() !=
|
||||||
|
self.__settings["mqttbroker_address"] or
|
||||||
|
self.var_sendinterval.get() !=
|
||||||
|
str(self.__settings["mqttsendinterval"]) or
|
||||||
|
self.var_write_outputs.get() !=
|
||||||
|
self.__settings["mqttwrite_outputs"]
|
||||||
|
)
|
||||||
|
|
||||||
|
def _checkclose(self, event=None):
|
||||||
|
u"""Prüft ob Fenster beendet werden soll.
|
||||||
|
@param event tkinter-Event"""
|
||||||
|
ask = True
|
||||||
|
if self._changesdone():
|
||||||
|
ask = tkmsg.askyesno(
|
||||||
|
_("Question"),
|
||||||
|
_("Do you really want to quit? \nUnsaved changes will "
|
||||||
|
"be lost"),
|
||||||
|
parent=self.master, default="no"
|
||||||
|
)
|
||||||
|
|
||||||
|
if ask:
|
||||||
|
self.master.destroy()
|
||||||
|
|
||||||
|
def _createwidgets(self):
|
||||||
|
u"""Erstellt Widgets."""
|
||||||
|
self.master.wm_title(_("MQTT Settings"))
|
||||||
|
self.master.wm_resizable(width=False, height=False)
|
||||||
|
|
||||||
|
# cpade = {"padx": 4, "pady": 2, "sticky": "e"}
|
||||||
|
cpadw = {"padx": 4, "pady": 2, "sticky": "w"}
|
||||||
|
cpadwe = {"padx": 4, "pady": 2, "sticky": "we"}
|
||||||
|
|
||||||
|
# Gruppe MQTT System ######################################
|
||||||
|
|
||||||
|
# Basetopic
|
||||||
|
gb = tkinter.LabelFrame(self)
|
||||||
|
gb["text"] = _("MQTT base topic")
|
||||||
|
gb.columnconfigure(0, weight=1)
|
||||||
|
gb.pack(expand=True, fill="both", padx=4, pady=4)
|
||||||
|
|
||||||
|
self.var_basetopic = tkinter.StringVar(
|
||||||
|
gb, self.__settings["mqttbasetopic"])
|
||||||
|
|
||||||
|
row = 0
|
||||||
|
lbl = tkinter.Label(gb)
|
||||||
|
lbl["text"] = _("Base topic") + ":"
|
||||||
|
lbl.grid(row=row, column=0, **cpadw)
|
||||||
|
|
||||||
|
txt = tkinter.Entry(gb)
|
||||||
|
txt["state"] = self.__ro
|
||||||
|
txt["textvariable"] = self.var_basetopic
|
||||||
|
txt["width"] = 34
|
||||||
|
txt.grid(row=row, column=1, **cpadwe)
|
||||||
|
|
||||||
|
row += 1
|
||||||
|
lbl = tkinter.Label(gb)
|
||||||
|
lbl["justify"] = "left"
|
||||||
|
lbl["text"] = _(
|
||||||
|
"""The base topic is the first part of any mqtt topic, the
|
||||||
|
Revolution Pi will publish. You can use any character
|
||||||
|
includig '/' to identify the messages and subscribe them
|
||||||
|
on your broker.
|
||||||
|
|
||||||
|
For example: revpi0000/data"""
|
||||||
|
)
|
||||||
|
lbl.grid(row=row, column=0, columnspan=2, **cpadw)
|
||||||
|
|
||||||
|
# Publish settings
|
||||||
|
gb = tkinter.LabelFrame(self)
|
||||||
|
gb["text"] = _("MQTT publish settings")
|
||||||
|
gb.columnconfigure(0, weight=1)
|
||||||
|
gb.pack(expand=True, fill="both", padx=4, pady=4)
|
||||||
|
|
||||||
|
self.var_send_events = tkinter.BooleanVar(
|
||||||
|
gb, self.__settings["mqttsend_events"])
|
||||||
|
self.var_sendinterval = tkinter.StringVar(
|
||||||
|
gb, self.__settings["mqttsendinterval"])
|
||||||
|
self.var_write_outputs = tkinter.BooleanVar(
|
||||||
|
gb, self.__settings["mqttwrite_outputs"])
|
||||||
|
|
||||||
|
row = 0
|
||||||
|
lbl = tkinter.Label(gb)
|
||||||
|
lbl["text"] = _("Publish all exported values every n seconds") + ":"
|
||||||
|
lbl.grid(row=row, column=0, **cpadw)
|
||||||
|
sb = tkinter.Spinbox(gb)
|
||||||
|
sb["state"] = self.__ro
|
||||||
|
sb["textvariable"] = self.var_sendinterval
|
||||||
|
sb["width"] = 5
|
||||||
|
sb.grid(row=row, column=1, **cpadw)
|
||||||
|
|
||||||
|
row += 1
|
||||||
|
lbl = tkinter.Label(gb)
|
||||||
|
lbl["justify"] = "left"
|
||||||
|
lbl["text"] = _("Topic: \t[basetopic]/io/[ioname]")
|
||||||
|
lbl.grid(row=row, columnspan=2, **cpadw)
|
||||||
|
|
||||||
|
row += 1
|
||||||
|
cb = tkinter.Checkbutton(gb)
|
||||||
|
cb["state"] = self.__ro
|
||||||
|
cb["text"] = _("Send exported values immediately on value change")
|
||||||
|
cb["variable"] = self.var_send_events
|
||||||
|
cb.grid(row=row, columnspan=2, **cpadw)
|
||||||
|
|
||||||
|
row += 1
|
||||||
|
lbl = tkinter.Label(gb)
|
||||||
|
lbl["justify"] = "left"
|
||||||
|
lbl["text"] = _("Topic: \t[basetopic]/event/[ioname]")
|
||||||
|
lbl.grid(row=row, columnspan=2, **cpadw)
|
||||||
|
|
||||||
|
# Subscribe settings
|
||||||
|
gb = tkinter.LabelFrame(self)
|
||||||
|
gb["text"] = _("MQTT set outputs")
|
||||||
|
gb.columnconfigure(0, weight=1)
|
||||||
|
gb.pack(expand=True, fill="both", padx=4, pady=4)
|
||||||
|
|
||||||
|
row = 0
|
||||||
|
cb = tkinter.Checkbutton(gb)
|
||||||
|
cb["state"] = self.__ro
|
||||||
|
cb["text"] = _("Allow MQTT to to set outputs on Revolution Pi")
|
||||||
|
cb["variable"] = self.var_write_outputs
|
||||||
|
cb.grid(row=row, columnspan=2, **cpadw)
|
||||||
|
|
||||||
|
row += 1
|
||||||
|
lbl = tkinter.Label(gb)
|
||||||
|
lbl["justify"] = "left"
|
||||||
|
lbl["text"] = _(
|
||||||
|
"""The Revolution Pi will subscribe a topic on which your client
|
||||||
|
can publish messages with the new value as payload.
|
||||||
|
|
||||||
|
Publish values with topic: \t[basetopic]/set/[outputname]"""
|
||||||
|
)
|
||||||
|
lbl.grid(row=row, columnspan=2, **cpadw)
|
||||||
|
|
||||||
|
# ############################################################
|
||||||
|
|
||||||
|
# Gruppe Broker ##########################################
|
||||||
|
gb = tkinter.LabelFrame(self)
|
||||||
|
gb["text"] = _("MQTT broker settings")
|
||||||
|
gb.pack(expand=True, fill="both", padx=4, pady=4)
|
||||||
|
gb.columnconfigure(2, weight=1)
|
||||||
|
|
||||||
|
# Variablen
|
||||||
|
self.var_client_id = tkinter.StringVar(
|
||||||
|
gb, self.__settings["mqttclient_id"])
|
||||||
|
self.var_broker_address = tkinter.StringVar(
|
||||||
|
gb, self.__settings["mqttbroker_address"])
|
||||||
|
self.var_password = tkinter.StringVar(
|
||||||
|
gb, self.__settings["mqttpassword"])
|
||||||
|
self.var_port = tkinter.StringVar(
|
||||||
|
gb, self.__settings["mqttport"])
|
||||||
|
self.var_tls_set = tkinter.BooleanVar(
|
||||||
|
gb, self.__settings["mqtttls_set"])
|
||||||
|
self.var_username = tkinter.StringVar(
|
||||||
|
gb, self.__settings["mqttusername"])
|
||||||
|
|
||||||
|
row = 0
|
||||||
|
lbl = tkinter.Label(gb)
|
||||||
|
lbl["text"] = _("Broker address") + ":"
|
||||||
|
lbl.grid(row=row, column=0, **cpadw)
|
||||||
|
txt = tkinter.Entry(gb)
|
||||||
|
txt["state"] = self.__ro
|
||||||
|
txt["textvariable"] = self.var_broker_address
|
||||||
|
txt.grid(row=row, column=1, columnspan=2, **cpadw)
|
||||||
|
|
||||||
|
row += 1
|
||||||
|
lbl = tkinter.Label(gb)
|
||||||
|
lbl["text"] = _("Broker port") + ":"
|
||||||
|
lbl.grid(row=row, column=0, **cpadw)
|
||||||
|
sb = tkinter.Spinbox(gb)
|
||||||
|
sb["state"] = self.__ro
|
||||||
|
sb["textvariable"] = self.var_port
|
||||||
|
sb["width"] = 6
|
||||||
|
sb.grid(row=row, column=1, **cpadw)
|
||||||
|
|
||||||
|
ckb = tkinter.Checkbutton(gb)
|
||||||
|
ckb["state"] = self.__ro
|
||||||
|
ckb["text"] = _("Use TLS") + ":"
|
||||||
|
ckb["variable"] = self.var_tls_set
|
||||||
|
ckb.grid(row=row, column=2, **cpadw)
|
||||||
|
|
||||||
|
row += 1
|
||||||
|
lbl = tkinter.Label(gb)
|
||||||
|
lbl["text"] = _("Username") + ":"
|
||||||
|
lbl.grid(row=row, column=0, **cpadw)
|
||||||
|
txt = tkinter.Entry(gb)
|
||||||
|
txt["state"] = self.__ro
|
||||||
|
txt["textvariable"] = self.var_username
|
||||||
|
txt.grid(row=row, column=1, columnspan=2, **cpadw)
|
||||||
|
|
||||||
|
row += 1
|
||||||
|
lbl = tkinter.Label(gb)
|
||||||
|
lbl["text"] = _("Password") + ":"
|
||||||
|
lbl.grid(row=row, column=0, **cpadw)
|
||||||
|
txt = tkinter.Entry(gb)
|
||||||
|
txt["state"] = self.__ro
|
||||||
|
txt["textvariable"] = self.var_password
|
||||||
|
txt.grid(row=row, column=1, columnspan=2, **cpadw)
|
||||||
|
|
||||||
|
row += 1
|
||||||
|
lbl = tkinter.Label(gb)
|
||||||
|
lbl["text"] = _("Client ID") + ":"
|
||||||
|
lbl.grid(row=row, column=0, **cpadw)
|
||||||
|
txt = tkinter.Entry(gb)
|
||||||
|
txt["state"] = self.__ro
|
||||||
|
txt["textvariable"] = self.var_client_id
|
||||||
|
txt["width"] = 30
|
||||||
|
txt.grid(row=row, column=1, columnspan=2, **cpadw)
|
||||||
|
|
||||||
|
# ############################################################
|
||||||
|
|
||||||
|
frame = tkinter.Frame(self)
|
||||||
|
frame.columnconfigure(0, weight=1)
|
||||||
|
frame.columnconfigure(1, weight=1)
|
||||||
|
frame.pack(expand=True, fill="both", pady=4)
|
||||||
|
|
||||||
|
# Buttons
|
||||||
|
btn_save = tkinter.Button(frame)
|
||||||
|
btn_save["command"] = self._save
|
||||||
|
btn_save["state"] = self.__ro
|
||||||
|
btn_save["text"] = _("Save")
|
||||||
|
btn_save.grid(column=0, row=0)
|
||||||
|
|
||||||
|
btn_close = tkinter.Button(frame)
|
||||||
|
btn_close["command"] = self._checkclose
|
||||||
|
btn_close["text"] = _("Close")
|
||||||
|
btn_close.grid(column=1, row=0)
|
||||||
|
|
||||||
|
def _save(self):
|
||||||
|
u"""Übernimt die Änderungen."""
|
||||||
|
|
||||||
|
# TODO: Wertprüfung
|
||||||
|
|
||||||
|
# Wertübernahme
|
||||||
|
self.__settings["mqttbasetopic"] = self.var_basetopic.get()
|
||||||
|
self.__settings["mqttsendinterval"] = int(self.var_sendinterval.get())
|
||||||
|
self.__settings["mqttsend_events"] = int(self.var_send_events.get())
|
||||||
|
self.__settings["mqttwrite_outputs"] = \
|
||||||
|
int(self.var_write_outputs.get())
|
||||||
|
self.__settings["mqttbroker_address"] = self.var_broker_address.get()
|
||||||
|
self.__settings["mqtttls_set"] = int(self.var_tls_set.get())
|
||||||
|
self.__settings["mqttport"] = int(self.var_port.get())
|
||||||
|
self.__settings["mqttusername"] = self.var_username.get()
|
||||||
|
self.__settings["mqttpassword"] = self.var_password.get()
|
||||||
|
self.__settings["mqttclient_id"] = self.var_client_id.get()
|
||||||
|
|
||||||
|
self._checkclose()
|
||||||
|
|
||||||
|
def get_settings(self):
|
||||||
|
u"""Gibt die MQTT Konfiguration zurück.
|
||||||
|
@return Settings als <class 'dict'>"""
|
||||||
|
return self.__settings
|
||||||
|
|
||||||
|
settings = property(get_settings)
|
||||||
|
|
||||||
|
|
||||||
|
# Debugging
|
||||||
|
if __name__ == "__main__":
|
||||||
|
dict_mqttsettings = {
|
||||||
|
"mqttbasetopic": "revpi01",
|
||||||
|
"mqttclient_id": "",
|
||||||
|
"mqttbroker_address": "127.0.0.1",
|
||||||
|
"mqttpassword": "",
|
||||||
|
"mqttport": 1883,
|
||||||
|
"mqttsend_events": 0,
|
||||||
|
"mqttsendinterval": 30,
|
||||||
|
"mqtttls_set": 0,
|
||||||
|
"mqttusername": "",
|
||||||
|
"mqttwrite_outputs": 0,
|
||||||
|
}
|
||||||
|
root = MqttManager(tkinter.Tk(), dict_mqttsettings)
|
||||||
|
root.mainloop()
|
||||||
@@ -8,6 +8,7 @@ __license__ = "GPLv3"
|
|||||||
import tkinter
|
import tkinter
|
||||||
import tkinter.messagebox as tkmsg
|
import tkinter.messagebox as tkmsg
|
||||||
from aclmanager import AclManager
|
from aclmanager import AclManager
|
||||||
|
from mqttmanager import MqttManager
|
||||||
from mytools import gettrans
|
from mytools import gettrans
|
||||||
|
|
||||||
# Übersetzung laden
|
# Übersetzung laden
|
||||||
@@ -32,10 +33,27 @@ class RevPiOption(tkinter.Frame):
|
|||||||
self.master.protocol("WM_DELETE_WINDOW", self._checkclose)
|
self.master.protocol("WM_DELETE_WINDOW", self._checkclose)
|
||||||
self.pack(expand=True, fill="both")
|
self.pack(expand=True, fill="both")
|
||||||
|
|
||||||
|
self.frm_mqttmgr = None
|
||||||
|
self.frm_slaveacl = None
|
||||||
|
self.frm_xmlacl = None
|
||||||
|
|
||||||
# XML-RPC Server konfigurieren
|
# XML-RPC Server konfigurieren
|
||||||
self.xmlcli = xmlcli
|
self.xmlcli = xmlcli
|
||||||
self.xmlmodus = self.xmlcli.xmlmodus()
|
self.xmlmodus = self.xmlcli.xmlmodus()
|
||||||
|
|
||||||
|
self._dict_mqttsettings = {
|
||||||
|
"mqttbasetopic": "revpi01",
|
||||||
|
"mqttclient_id": "",
|
||||||
|
"mqttbroker_address": "127.0.0.1",
|
||||||
|
"mqttpassword": "",
|
||||||
|
"mqttport": 1883,
|
||||||
|
"mqttsend_events": 0,
|
||||||
|
"mqttsendinterval": 30,
|
||||||
|
"mqtttls_set": 0,
|
||||||
|
"mqttusername": "",
|
||||||
|
"mqttwrite_outputs": 0,
|
||||||
|
}
|
||||||
|
|
||||||
self.mrk_xmlmodask = False
|
self.mrk_xmlmodask = False
|
||||||
self.dorestart = False
|
self.dorestart = False
|
||||||
|
|
||||||
@@ -61,9 +79,19 @@ class RevPiOption(tkinter.Frame):
|
|||||||
self.var_slaveacl.get() != self.dc.get("plcslaveacl", "") or
|
self.var_slaveacl.get() != self.dc.get("plcslaveacl", "") or
|
||||||
self.var_mqtton.get() != self.dc.get("mqtt", 0) or
|
self.var_mqtton.get() != self.dc.get("mqtt", 0) or
|
||||||
self.var_xmlon.get() != self.dc.get("xmlrpc", 0) or
|
self.var_xmlon.get() != self.dc.get("xmlrpc", 0) or
|
||||||
self.var_xmlacl.get() != self.dc.get("xmlrpcacl", "")
|
self.var_xmlacl.get() != self.dc.get("xmlrpcacl", "") or
|
||||||
|
self._changesdone_mqtt()
|
||||||
)
|
)
|
||||||
|
|
||||||
|
def _changesdone_mqtt(self):
|
||||||
|
u"""Prüft ob MQTT-Settings geändert wurden.
|
||||||
|
@return True, wenn Änderungen existieren"""
|
||||||
|
for key in self._dict_mqttsettings:
|
||||||
|
if key in self.dc:
|
||||||
|
if self._dict_mqttsettings[key] != self.dc[key]:
|
||||||
|
return True
|
||||||
|
return False
|
||||||
|
|
||||||
def _checkclose(self, event=None):
|
def _checkclose(self, event=None):
|
||||||
u"""Prüft ob Fenster beendet werden soll.
|
u"""Prüft ob Fenster beendet werden soll.
|
||||||
@param event tkinter-Event"""
|
@param event tkinter-Event"""
|
||||||
@@ -246,7 +274,7 @@ class RevPiOption(tkinter.Frame):
|
|||||||
self.var_mqtton = tkinter.BooleanVar(services)
|
self.var_mqtton = tkinter.BooleanVar(services)
|
||||||
try:
|
try:
|
||||||
status = self.xmlcli.mqttrunning()
|
status = self.xmlcli.mqttrunning()
|
||||||
except:
|
except Exception:
|
||||||
pass
|
pass
|
||||||
else:
|
else:
|
||||||
row = 2
|
row = 2
|
||||||
@@ -257,7 +285,7 @@ class RevPiOption(tkinter.Frame):
|
|||||||
ckb_slave.grid(column=0, **cpadw)
|
ckb_slave.grid(column=0, **cpadw)
|
||||||
|
|
||||||
btn_slaveacl = tkinter.Button(services, justify="center")
|
btn_slaveacl = tkinter.Button(services, justify="center")
|
||||||
# TODO: btn_slaveacl["command"] = self.btn_mqttsettings
|
btn_slaveacl["command"] = self.btn_mqttsettings
|
||||||
btn_slaveacl["text"] = _("Settings")
|
btn_slaveacl["text"] = _("Settings")
|
||||||
btn_slaveacl.grid(column=1, row=row, **cpadwe)
|
btn_slaveacl.grid(column=1, row=row, **cpadwe)
|
||||||
|
|
||||||
@@ -317,7 +345,11 @@ class RevPiOption(tkinter.Frame):
|
|||||||
self.var_startargs.set(self.dc.get("plcarguments", ""))
|
self.var_startargs.set(self.dc.get("plcarguments", ""))
|
||||||
self.var_pythonver.set(self.dc.get("pythonversion", 3))
|
self.var_pythonver.set(self.dc.get("pythonversion", 3))
|
||||||
|
|
||||||
|
# MQTT Einstellungen laden
|
||||||
self.var_mqtton.set(self.dc.get("mqtt", 0))
|
self.var_mqtton.set(self.dc.get("mqtt", 0))
|
||||||
|
for key in self._dict_mqttsettings:
|
||||||
|
if key in self.dc:
|
||||||
|
self._dict_mqttsettings[key] = self.dc[key]
|
||||||
|
|
||||||
self.var_slave.set(self.dc.get("plcslave", 0))
|
self.var_slave.set(self.dc.get("plcslave", 0))
|
||||||
self.var_slaveacl.set(self.dc.get("plcslaveacl", ""))
|
self.var_slaveacl.set(self.dc.get("plcslaveacl", ""))
|
||||||
@@ -361,11 +393,34 @@ class RevPiOption(tkinter.Frame):
|
|||||||
self.dc["zeroonerror"] = int(self.var_zerr.get())
|
self.dc["zeroonerror"] = int(self.var_zerr.get())
|
||||||
self.dc["zeroonexit"] = int(self.var_zexit.get())
|
self.dc["zeroonexit"] = int(self.var_zexit.get())
|
||||||
|
|
||||||
|
# MQTT Settings
|
||||||
self.dc["mqtt"] = int(self.var_mqtton.get())
|
self.dc["mqtt"] = int(self.var_mqtton.get())
|
||||||
|
self.dc["mqttbasetopic"] = \
|
||||||
|
self._dict_mqttsettings["mqttbasetopic"]
|
||||||
|
self.dc["mqttclient_id"] = \
|
||||||
|
self._dict_mqttsettings["mqttclient_id"]
|
||||||
|
self.dc["mqttbroker_address"] = \
|
||||||
|
self._dict_mqttsettings["mqttbroker_address"]
|
||||||
|
self.dc["mqttpassword"] = \
|
||||||
|
self._dict_mqttsettings["mqttpassword"]
|
||||||
|
self.dc["mqttusername"] = \
|
||||||
|
self._dict_mqttsettings["mqttusername"]
|
||||||
|
self.dc["mqttport"] = \
|
||||||
|
int(self._dict_mqttsettings["mqttport"])
|
||||||
|
self.dc["mqttsend_events"] = \
|
||||||
|
int(self._dict_mqttsettings["mqttsend_events"])
|
||||||
|
self.dc["mqttsendinterval"] = \
|
||||||
|
int(self._dict_mqttsettings["mqttsendinterval"])
|
||||||
|
self.dc["mqtttls_set"] = \
|
||||||
|
int(self._dict_mqttsettings["mqtttls_set"])
|
||||||
|
self.dc["mqttwrite_outputs"] = \
|
||||||
|
int(self._dict_mqttsettings["mqttwrite_outputs"])
|
||||||
|
|
||||||
|
# PLCSlave Settings
|
||||||
self.dc["plcslave"] = int(self.var_slave.get())
|
self.dc["plcslave"] = int(self.var_slave.get())
|
||||||
self.dc["plcslaveacl"] = self.var_slaveacl.get()
|
self.dc["plcslaveacl"] = self.var_slaveacl.get()
|
||||||
|
|
||||||
|
# XML Settings
|
||||||
self.dc["xmlrpc"] = int(self.var_xmlon.get())
|
self.dc["xmlrpc"] = int(self.var_xmlon.get())
|
||||||
self.dc["xmlrpcacl"] = self.var_xmlacl.get()
|
self.dc["xmlrpcacl"] = self.var_xmlacl.get()
|
||||||
|
|
||||||
@@ -398,34 +453,46 @@ class RevPiOption(tkinter.Frame):
|
|||||||
if not self.mrk_xmlmodask:
|
if not self.mrk_xmlmodask:
|
||||||
self.var_xmlon.set(True)
|
self.var_xmlon.set(True)
|
||||||
|
|
||||||
|
def btn_mqttsettings(self):
|
||||||
|
u"""Öffnet Fenster für MQTT Einstellungen."""
|
||||||
|
win = tkinter.Toplevel(self)
|
||||||
|
win.focus_set()
|
||||||
|
win.grab_set()
|
||||||
|
self.frm_mqttmgr = MqttManager(
|
||||||
|
win, self._dict_mqttsettings,
|
||||||
|
readonly=self.xmlmodus < 4
|
||||||
|
)
|
||||||
|
self.wait_window(win)
|
||||||
|
self._dict_mqttsettings = self.frm_mqttmgr.settings
|
||||||
|
|
||||||
def btn_slaveacl(self):
|
def btn_slaveacl(self):
|
||||||
u"""Öffnet Fenster für ACL-Verwaltung."""
|
u"""Öffnet Fenster für ACL-Verwaltung."""
|
||||||
win = tkinter.Toplevel(self)
|
win = tkinter.Toplevel(self)
|
||||||
win.focus_set()
|
win.focus_set()
|
||||||
win.grab_set()
|
win.grab_set()
|
||||||
slaveacl = AclManager(
|
self.frm_slaveacl = AclManager(
|
||||||
win, 0, 1,
|
win, 0, 1,
|
||||||
self.var_slaveacl.get(),
|
self.var_slaveacl.get(),
|
||||||
readonly=self.xmlmodus < 4
|
readonly=self.xmlmodus < 4
|
||||||
)
|
)
|
||||||
slaveacl.acltext = {
|
self.frm_slaveacl.acltext = {
|
||||||
0: _("read only"),
|
0: _("read only"),
|
||||||
1: _("read and write")
|
1: _("read and write")
|
||||||
}
|
}
|
||||||
self.wait_window(win)
|
self.wait_window(win)
|
||||||
self.var_slaveacl.set(slaveacl.acl)
|
self.var_slaveacl.set(self.frm_slaveacl.acl)
|
||||||
|
|
||||||
def btn_xmlacl(self):
|
def btn_xmlacl(self):
|
||||||
u"""Öffnet Fenster für ACL-Verwaltung."""
|
u"""Öffnet Fenster für ACL-Verwaltung."""
|
||||||
win = tkinter.Toplevel(self)
|
win = tkinter.Toplevel(self)
|
||||||
win.focus_set()
|
win.focus_set()
|
||||||
win.grab_set()
|
win.grab_set()
|
||||||
slaveacl = AclManager(
|
self.frm_xmlacl = AclManager(
|
||||||
win, 0, 4,
|
win, 0, 4,
|
||||||
self.var_xmlacl.get(),
|
self.var_xmlacl.get(),
|
||||||
readonly=self.xmlmodus < 4
|
readonly=self.xmlmodus < 4
|
||||||
)
|
)
|
||||||
slaveacl.acltext = {
|
self.frm_xmlacl.acltext = {
|
||||||
0: _("Start/Stop PLC program and read logs"),
|
0: _("Start/Stop PLC program and read logs"),
|
||||||
1: _("+ read IOs in watch modus"),
|
1: _("+ read IOs in watch modus"),
|
||||||
2: _("+ read properties and download PLC program"),
|
2: _("+ read properties and download PLC program"),
|
||||||
@@ -433,4 +500,15 @@ class RevPiOption(tkinter.Frame):
|
|||||||
4: _("+ set properties")
|
4: _("+ set properties")
|
||||||
}
|
}
|
||||||
self.wait_window(win)
|
self.wait_window(win)
|
||||||
self.var_xmlacl.set(slaveacl.acl)
|
self.var_xmlacl.set(self.frm_xmlacl.acl)
|
||||||
|
|
||||||
|
def destroy(self):
|
||||||
|
u"""Beendet alle Unterfenster und sich selbst."""
|
||||||
|
if self.frm_mqttmgr is not None:
|
||||||
|
self.frm_mqttmgr.master.destroy()
|
||||||
|
if self.frm_slaveacl is not None:
|
||||||
|
self.frm_slaveacl.master.destroy()
|
||||||
|
if self.frm_xmlacl is not None:
|
||||||
|
self.frm_xmlacl.master.destroy()
|
||||||
|
|
||||||
|
super().destroy()
|
||||||
|
|||||||
@@ -82,6 +82,7 @@ class RevPiPyControl(tkinter.Frame):
|
|||||||
self.tklogs.master.destroy()
|
self.tklogs.master.destroy()
|
||||||
if self.tkoptions is not None:
|
if self.tkoptions is not None:
|
||||||
self.tkoptions.destroy()
|
self.tkoptions.destroy()
|
||||||
|
self.tkoptions.master.destroy()
|
||||||
if self.tkprogram is not None:
|
if self.tkprogram is not None:
|
||||||
self.tkprogram.destroy()
|
self.tkprogram.destroy()
|
||||||
if self.debugframe is not None:
|
if self.debugframe is not None:
|
||||||
|
|||||||
Reference in New Issue
Block a user