1
0
mirror of https://github.com/naruxde/revpipycontrol.git synced 2025-11-08 15:43:52 +01:00

docstrings angepasst

This commit is contained in:
2017-07-01 13:37:06 +02:00
parent 256a95aa8b
commit 0653c6c8eb
16 changed files with 215 additions and 100 deletions

View File

@@ -38,7 +38,7 @@ Hängt root-dir der Anwendung vor Dateinamen.
Je nach Ausführungsart der Anwendung muss das root-dir über
andere Arten abgerufen werden.
</p><dl>
<dt><i>filename:</i></dt>
<dt><i>filename</i></dt>
<dd>
Datei oder Ordnername
</dd>

View File

@@ -125,10 +125,10 @@ RevPiCheckClient.__hidewin</h3>
<p>
Verbergt &#252;bergebenes Fenster.
</p><dl>
<dt><i>win:</i></dt>
<dt><i>win</i></dt>
<dd>
Fenster zum verbergen
</dd><dt><i>event:</i></dt>
</dd><dt><i>event</i></dt>
<dd>
Tkinter Event
</dd>
@@ -145,7 +145,7 @@ RevPiCheckClient.__showwin</h3>
<p>
Zeigt oder verbergt &#252;bergebenes Fenster.
</p><dl>
<dt><i>win:</i></dt>
<dt><i>win</i></dt>
<dd>
Fenster zum anzeigen/verbergen
</dd>
@@ -156,13 +156,30 @@ RevPiCheckClient.__spinboxkey</h3>
<p>
Pr&#252;ft die Eingabe auf plausibilit&#228;t.
</p><dl>
<dt><i>event:</i></dt>
<dt><i>event</i></dt>
<dd>
tkinter Event
</dd><dt><i>io:</i></dt>
</dd><dt><i>io</i></dt>
<dd>
IO Liste mit tkinter Variable
</dd>
</dl><a NAME="RevPiCheckClient._createiogroup" ID="RevPiCheckClient._createiogroup"></a>
<h3 style="background-color:#FFFFFF;color:#FF0000">
RevPiCheckClient._createiogroup</h3>
<b>_createiogroup</b>(<i>device, frame, iotype</i>)
<p>
Erstellt IO-Gruppen.
</p><dl>
<dt><i>device</i></dt>
<dd>
Deviceposition
</dd><dt><i>frame</i></dt>
<dd>
tkinter Frame
</dd><dt><i>iotype</i></dt>
<dd>
'inp' oder 'out' als str()
</dd>
</dl><a NAME="RevPiCheckClient._createwidgets" ID="RevPiCheckClient._createwidgets"></a>
<h3 style="background-color:#FFFFFF;color:#FF0000">
RevPiCheckClient._createwidgets</h3>
@@ -176,7 +193,7 @@ RevPiCheckClient._onfrmconf</h3>
<p>
Erstellt Fenster in einem Canvas.
</p><dl>
<dt><i>canvas:</i></dt>
<dt><i>canvas</i></dt>
<dd>
Canvas in dem Objekte erstellt werden sollen
</dd>
@@ -198,10 +215,10 @@ RevPiCheckClient._workvalues</h3>
<p>
Alle Werte der Inputs und Outputs abrufen.
</p><dl>
<dt><i>io_dicts:</i></dt>
<dt><i>io_dicts</i></dt>
<dd>
Arbeit nur f&#252;r dieses Dict()
</dd><dt><i>writeout:</i></dt>
</dd><dt><i>writeout</i></dt>
<dd>
&#196;nderungen auf RevPi schreiben
</dd>
@@ -242,7 +259,7 @@ RevPiCheckClient.validatereturn</h3>
<p>
&#220;berpr&#252;ft die R&#252;ckgaben der setvalue Funktion.
</p><dl>
<dt><i>returnlist:</i></dt>
<dt><i>returnlist</i></dt>
<dd>
list() der xml R&#252;ckgabe
</dd>

View File

@@ -77,7 +77,7 @@ RevPiInfo._checkclose</h3>
<p>
Pr&#252;ft ob Fenster beendet werden soll.
</p><dl>
<dt><i>event:</i></dt>
<dt><i>event</i></dt>
<dd>
tkinter-Event
</dd>

View File

@@ -89,7 +89,7 @@ RevPiLogfile._checkclose</h3>
<p>
Pr&#252;ft ob Fenster beendet werden soll.
</p><dl>
<dt><i>event:</i></dt>
<dt><i>event</i></dt>
<dd>
tkinter-Event
</dd>
@@ -106,16 +106,16 @@ RevPiLogfile._load_log</h3>
<p>
L&#228;d die angegebenen Logfiles herunter.
</p><dl>
<dt><i>textwidget:</i></dt>
<dt><i>textwidget</i></dt>
<dd>
Widget in das Logs eingef&#252;gt werden sollen
</dd><dt><i>xmlcall:</i></dt>
</dd><dt><i>xmlcall</i></dt>
<dd>
xmlrpc Funktion zum Abrufen der Logdaten
</dd><dt><i>startposition:</i></dt>
</dd><dt><i>startposition</i></dt>
<dd>
Startposition ab der Logdaten kommen sollen
</dd><dt><i>full:</i></dt>
</dd><dt><i>full</i></dt>
<dd>
Komplettes Logbuch laden
</dd>
@@ -143,7 +143,7 @@ RevPiLogfile.get_applog</h3>
<p>
Ruft App Logbuch ab.
</p><dl>
<dt><i>full:</i></dt>
<dt><i>full</i></dt>
<dd>
Ganzes Logbuch laden
</dd>
@@ -154,7 +154,7 @@ RevPiLogfile.get_plclog</h3>
<p>
Ruft PLC Logbuch ab.
</p><dl>
<dt><i>full:</i></dt>
<dt><i>full</i></dt>
<dd>
Ganzes Logbuch laden
</dd>

View File

@@ -105,7 +105,7 @@ RevPiOption._checkclose</h3>
<p>
Pr&#252;ft ob Fenster beendet werden soll.
</p><dl>
<dt><i>event:</i></dt>
<dt><i>event</i></dt>
<dd>
tkinter-Event
</dd>

View File

@@ -65,22 +65,22 @@ Methods</h3>
<td>F&#252;llt Verbindungsliste.</td>
</tr><tr>
<td><a style="color:#0000FF" href="#RevPiPlcList.evt_btnadd">evt_btnadd</a></td>
<td></td>
<td>Verbindungseinstellungen &#252;bernehmen.</td>
</tr><tr>
<td><a style="color:#0000FF" href="#RevPiPlcList.evt_btnnew">evt_btnnew</a></td>
<td></td>
<td>Neue Verbindung erstellen.</td>
</tr><tr>
<td><a style="color:#0000FF" href="#RevPiPlcList.evt_btnremove">evt_btnremove</a></td>
<td></td>
<td>Verbindung l&#246;schen.</td>
</tr><tr>
<td><a style="color:#0000FF" href="#RevPiPlcList.evt_btnsave">evt_btnsave</a></td>
<td></td>
<td>Alle Verbindungen speichern.</td>
</tr><tr>
<td><a style="color:#0000FF" href="#RevPiPlcList.evt_keypress">evt_keypress</a></td>
<td></td>
<td>Passt bei Tastendruck den Status der Buttons an.</td>
</tr><tr>
<td><a style="color:#0000FF" href="#RevPiPlcList.evt_listconn">evt_listconn</a></td>
<td></td>
<td>&#220;bernimmt Einstellungen in Eingabefelder.</td>
</tr>
</table>
<h3 style="background-color:#FFFFFF;color:#FF0000">
@@ -95,7 +95,7 @@ RevPiPlcList (Constructor)</h3>
<p>
Init RevPiPlcList-class.
</p><dl>
<dt><i>master:</i></dt>
<dt><i>master</i></dt>
<dd>
tkinter master
</dd>
@@ -106,7 +106,7 @@ RevPiPlcList._checkclose</h3>
<p>
Pr&#252;ft ob Fenster beendet werden soll.
</p><dl>
<dt><i>event:</i></dt>
<dt><i>event</i></dt>
<dd>
tkinter-Event
</dd>
@@ -122,7 +122,12 @@ RevPiPlcList._saveappdata</h3>
<b>_saveappdata</b>(<i></i>)
<p>
Speichert Verbindungen im home Dir.
</p><a NAME="RevPiPlcList.build_listconn" ID="RevPiPlcList.build_listconn"></a>
</p><dl>
<dt>Returns:</dt>
<dd>
True, bei erfolgreicher Verarbeitung
</dd>
</dl><a NAME="RevPiPlcList.build_listconn" ID="RevPiPlcList.build_listconn"></a>
<h3 style="background-color:#FFFFFF;color:#FF0000">
RevPiPlcList.build_listconn</h3>
<b>build_listconn</b>(<i></i>)
@@ -132,27 +137,39 @@ F&#252;llt Verbindungsliste.
<h3 style="background-color:#FFFFFF;color:#FF0000">
RevPiPlcList.evt_btnadd</h3>
<b>evt_btnadd</b>(<i></i>)
<a NAME="RevPiPlcList.evt_btnnew" ID="RevPiPlcList.evt_btnnew"></a>
<p>
Verbindungseinstellungen &#252;bernehmen.
</p><a NAME="RevPiPlcList.evt_btnnew" ID="RevPiPlcList.evt_btnnew"></a>
<h3 style="background-color:#FFFFFF;color:#FF0000">
RevPiPlcList.evt_btnnew</h3>
<b>evt_btnnew</b>(<i></i>)
<a NAME="RevPiPlcList.evt_btnremove" ID="RevPiPlcList.evt_btnremove"></a>
<p>
Neue Verbindung erstellen.
</p><a NAME="RevPiPlcList.evt_btnremove" ID="RevPiPlcList.evt_btnremove"></a>
<h3 style="background-color:#FFFFFF;color:#FF0000">
RevPiPlcList.evt_btnremove</h3>
<b>evt_btnremove</b>(<i></i>)
<a NAME="RevPiPlcList.evt_btnsave" ID="RevPiPlcList.evt_btnsave"></a>
<p>
Verbindung l&#246;schen.
</p><a NAME="RevPiPlcList.evt_btnsave" ID="RevPiPlcList.evt_btnsave"></a>
<h3 style="background-color:#FFFFFF;color:#FF0000">
RevPiPlcList.evt_btnsave</h3>
<b>evt_btnsave</b>(<i></i>)
<a NAME="RevPiPlcList.evt_keypress" ID="RevPiPlcList.evt_keypress"></a>
<p>
Alle Verbindungen speichern.
</p><a NAME="RevPiPlcList.evt_keypress" ID="RevPiPlcList.evt_keypress"></a>
<h3 style="background-color:#FFFFFF;color:#FF0000">
RevPiPlcList.evt_keypress</h3>
<b>evt_keypress</b>(<i>evt=None</i>)
<a NAME="RevPiPlcList.evt_listconn" ID="RevPiPlcList.evt_listconn"></a>
<p>
Passt bei Tastendruck den Status der Buttons an.
</p><a NAME="RevPiPlcList.evt_listconn" ID="RevPiPlcList.evt_listconn"></a>
<h3 style="background-color:#FFFFFF;color:#FF0000">
RevPiPlcList.evt_listconn</h3>
<b>evt_listconn</b>(<i>evt=None</i>)
<p>
&#220;bernimmt Einstellungen in Eingabefelder.
</p>
<div align="right"><a style="color:#0000FF" href="#top">Up</a></div>
<hr /><hr />
<a NAME="get_connections" ID="get_connections"></a>
@@ -160,7 +177,12 @@ RevPiPlcList.evt_listconn</h3>
<b>get_connections</b>(<i></i>)
<p>
Verbindungen aus Datei laden.
</p>
</p><dl>
<dt>Returns:</dt>
<dd>
dict() mit Verbindungen
</dd>
</dl>
<div align="right"><a style="color:#0000FF" href="#top">Up</a></div>
<hr />
</body></html>

View File

@@ -50,19 +50,19 @@ Methods</h3>
<td>Init RevPiProgram-Class.</td>
</tr><tr>
<td><a style="color:#0000FF" href="#RevPiProgram._checkclose">_checkclose</a></td>
<td></td>
<td>Pr&#252;ft ob Fenster beendet werden soll.</td>
</tr><tr>
<td><a style="color:#0000FF" href="#RevPiProgram._createwidgets">_createwidgets</a></td>
<td></td>
<td>Erstellt alle Widgets.</td>
</tr><tr>
<td><a style="color:#0000FF" href="#RevPiProgram._evt_optdown">_evt_optdown</a></td>
<td></td>
<td>Passt je nach gew&#228;hlter Option den Status der Widgets an.</td>
</tr><tr>
<td><a style="color:#0000FF" href="#RevPiProgram._evt_optup">_evt_optup</a></td>
<td></td>
<td>Passt je nach gew&#228;hlter Option den Status der Widgets an.</td>
</tr><tr>
<td><a style="color:#0000FF" href="#RevPiProgram._loaddefault">_loaddefault</a></td>
<td>Uebernimmt fuer den Pi die letzen Pfade.</td>
<td>&#220;bernimmt f&#252;r den Pi die letzen Pfade.</td>
</tr><tr>
<td><a style="color:#0000FF" href="#RevPiProgram._savedefaults">_savedefaults</a></td>
<td>Schreibt fuer den Pi die letzen Pfade.</td>
@@ -103,35 +103,68 @@ RevPiProgram (Constructor)</h3>
<b>RevPiProgram</b>(<i>master, xmlcli, xmlmode, revpi</i>)
<p>
Init RevPiProgram-Class.
</p><a NAME="RevPiProgram._checkclose" ID="RevPiProgram._checkclose"></a>
</p><dl>
<dt>Returns:</dt>
<dd>
None
</dd>
</dl><a NAME="RevPiProgram._checkclose" ID="RevPiProgram._checkclose"></a>
<h3 style="background-color:#FFFFFF;color:#FF0000">
RevPiProgram._checkclose</h3>
<b>_checkclose</b>(<i>event=None</i>)
<a NAME="RevPiProgram._createwidgets" ID="RevPiProgram._createwidgets"></a>
<p>
Pr&#252;ft ob Fenster beendet werden soll.
</p><dl>
<dt><i>event</i></dt>
<dd>
tkinter-Event
</dd>
</dl><a NAME="RevPiProgram._createwidgets" ID="RevPiProgram._createwidgets"></a>
<h3 style="background-color:#FFFFFF;color:#FF0000">
RevPiProgram._createwidgets</h3>
<b>_createwidgets</b>(<i></i>)
<a NAME="RevPiProgram._evt_optdown" ID="RevPiProgram._evt_optdown"></a>
<p>
Erstellt alle Widgets.
</p><a NAME="RevPiProgram._evt_optdown" ID="RevPiProgram._evt_optdown"></a>
<h3 style="background-color:#FFFFFF;color:#FF0000">
RevPiProgram._evt_optdown</h3>
<b>_evt_optdown</b>(<i>text=""</i>)
<a NAME="RevPiProgram._evt_optup" ID="RevPiProgram._evt_optup"></a>
<p>
Passt je nach gew&#228;hlter Option den Status der Widgets an.
</p><a NAME="RevPiProgram._evt_optup" ID="RevPiProgram._evt_optup"></a>
<h3 style="background-color:#FFFFFF;color:#FF0000">
RevPiProgram._evt_optup</h3>
<b>_evt_optup</b>(<i>text=""</i>)
<a NAME="RevPiProgram._loaddefault" ID="RevPiProgram._loaddefault"></a>
<p>
Passt je nach gew&#228;hlter Option den Status der Widgets an.
</p><a NAME="RevPiProgram._loaddefault" ID="RevPiProgram._loaddefault"></a>
<h3 style="background-color:#FFFFFF;color:#FF0000">
RevPiProgram._loaddefault</h3>
<b>_loaddefault</b>(<i>full=False</i>)
<p>
Uebernimmt fuer den Pi die letzen Pfade.
</p><a NAME="RevPiProgram._savedefaults" ID="RevPiProgram._savedefaults"></a>
&#220;bernimmt f&#252;r den Pi die letzen Pfade.
</p><dl>
<dt><i>full</i></dt>
<dd>
Einstellungen f&#252;r alle Verbindungen laden
</dd>
</dl><dl>
<dt>Returns:</dt>
<dd>
dict() mit Einstellungen
</dd>
</dl><a NAME="RevPiProgram._savedefaults" ID="RevPiProgram._savedefaults"></a>
<h3 style="background-color:#FFFFFF;color:#FF0000">
RevPiProgram._savedefaults</h3>
<b>_savedefaults</b>(<i></i>)
<p>
Schreibt fuer den Pi die letzen Pfade.
</p><a NAME="RevPiProgram.check_replacedir" ID="RevPiProgram.check_replacedir"></a>
</p><dl>
<dt>Returns:</dt>
<dd>
True, bei erfolgreicher Verarbeitung
</dd>
</dl><a NAME="RevPiProgram.check_replacedir" ID="RevPiProgram.check_replacedir"></a>
<h3 style="background-color:#FFFFFF;color:#FF0000">
RevPiProgram.check_replacedir</h3>
<b>check_replacedir</b>(<i>rootdir</i>)
@@ -141,7 +174,7 @@ Gibt das rootdir von einem entpackten Verzeichnis zurueck.
Dabei wird geprueft, ob es sich um einen einzelnen Ordner handelt
und ob es eine piCtory Konfiguration im rootdir gibt.
</p><dl>
<dt><i>rootdir:</i></dt>
<dt><i>rootdir</i></dt>
<dd>
Verzeichnis fuer Pruefung
</dd>
@@ -157,7 +190,7 @@ RevPiProgram.create_filelist</h3>
<p>
Erstellt eine Dateiliste von einem Verzeichnis.
</p><dl>
<dt><i>rootdir:</i></dt>
<dt><i>rootdir</i></dt>
<dd>
Verzeichnis fuer das eine Liste erstellt werden soll
</dd>
@@ -196,7 +229,12 @@ RevPiProgram.plcupload</h3>
<b>plcupload</b>(<i></i>)
<p>
L&#228;dt das angegebene Projekt auf den RevPi.
</p><a NAME="RevPiProgram.setpictoryrsc" ID="RevPiProgram.setpictoryrsc"></a>
</p><dl>
<dt>Returns:</dt>
<dd>
True, bei erfolgreicher Verarbeitung
</dd>
</dl><a NAME="RevPiProgram.setpictoryrsc" ID="RevPiProgram.setpictoryrsc"></a>
<h3 style="background-color:#FFFFFF;color:#FF0000">
RevPiProgram.setpictoryrsc</h3>
<b>setpictoryrsc</b>(<i>filename=None</i>)

View File

@@ -68,7 +68,7 @@ Methods</h3>
<td>Generiert Men&#252;eintr&#228;ge.</td>
</tr><tr>
<td><a style="color:#0000FF" href="#RevPiPyControl._opt_conn">_opt_conn</a></td>
<td></td>
<td>Stellt eine neue Verbindung zu RevPiPyLoad her.</td>
</tr><tr>
<td><a style="color:#0000FF" href="#RevPiPyControl.infowindow">infowindow</a></td>
<td>&#214;ffnet das Fenster f&#252;r die Info.</td>
@@ -104,7 +104,7 @@ Methods</h3>
<td>Setzt alles zur&#252;ck f&#252;r neue Verbindungen.</td>
</tr><tr>
<td><a style="color:#0000FF" href="#RevPiPyControl.tmr_plcrunning">tmr_plcrunning</a></td>
<td></td>
<td>Timer der den Status des PLC Programms pr&#252;ft.</td>
</tr><tr>
<td><a style="color:#0000FF" href="#RevPiPyControl.visitwebsite">visitwebsite</a></td>
<td>&#214;ffnet auf dem System einen Webbrowser zur Projektseite.</td>
@@ -122,7 +122,7 @@ RevPiPyControl (Constructor)</h3>
<p>
Init RevPiPyControl-Class.
</p><dl>
<dt><i>master:</i></dt>
<dt><i>master</i></dt>
<dd>
tkinter master
</dd>
@@ -145,7 +145,7 @@ RevPiPyControl._closeapp</h3>
<p>
R&#228;umt auf und beendet Programm.
</p><dl>
<dt><i>event:</i></dt>
<dt><i>event</i></dt>
<dd>
tkinter Event
</dd>
@@ -171,7 +171,14 @@ Generiert Men&#252;eintr&#228;ge.
<h3 style="background-color:#FFFFFF;color:#FF0000">
RevPiPyControl._opt_conn</h3>
<b>_opt_conn</b>(<i>text</i>)
<a NAME="RevPiPyControl.infowindow" ID="RevPiPyControl.infowindow"></a>
<p>
Stellt eine neue Verbindung zu RevPiPyLoad her.
</p><dl>
<dt><i>text</i></dt>
<dd>
Verbindungsname
</dd>
</dl><a NAME="RevPiPyControl.infowindow" ID="RevPiPyControl.infowindow"></a>
<h3 style="background-color:#FFFFFF;color:#FF0000">
RevPiPyControl.infowindow</h3>
<b>infowindow</b>(<i></i>)
@@ -195,7 +202,12 @@ RevPiPyControl.plclogs</h3>
<b>plclogs</b>(<i></i>)
<p>
&#214;ffnet das Fenster f&#252;r Logdateien.
</p><a NAME="RevPiPyControl.plcoptions" ID="RevPiPyControl.plcoptions"></a>
</p><dl>
<dt>Returns:</dt>
<dd>
None
</dd>
</dl><a NAME="RevPiPyControl.plcoptions" ID="RevPiPyControl.plcoptions"></a>
<h3 style="background-color:#FFFFFF;color:#FF0000">
RevPiPyControl.plcoptions</h3>
<b>plcoptions</b>(<i></i>)
@@ -241,7 +253,9 @@ Setzt alles zur&#252;ck f&#252;r neue Verbindungen.
<h3 style="background-color:#FFFFFF;color:#FF0000">
RevPiPyControl.tmr_plcrunning</h3>
<b>tmr_plcrunning</b>(<i></i>)
<a NAME="RevPiPyControl.visitwebsite" ID="RevPiPyControl.visitwebsite"></a>
<p>
Timer der den Status des PLC Programms pr&#252;ft.
</p><a NAME="RevPiPyControl.visitwebsite" ID="RevPiPyControl.visitwebsite"></a>
<h3 style="background-color:#FFFFFF;color:#FF0000">
RevPiPyControl.visitwebsite</h3>
<b>visitwebsite</b>(<i></i>)

View File

@@ -18,8 +18,8 @@ def addroot(filename):
Je nach Ausführungsart der Anwendung muss das root-dir über
andere Arten abgerufen werden.
@param filename: Datei oder Ordnername
@returns: root dir
@param filename Datei oder Ordnername
@return root dir
"""
if getattr(sys, "frozen", False):

View File

@@ -63,8 +63,8 @@ class RevPiCheckClient(tkinter.Frame):
def __hidewin(self, win, event=None):
u"""Verbergt übergebenes Fenster.
@param win: Fenster zum verbergen
@param event: Tkinter Event"""
@param win Fenster zum verbergen
@param event Tkinter Event"""
win.withdraw()
def __saveoldvalue(self, event, tkvar):
@@ -78,7 +78,7 @@ class RevPiCheckClient(tkinter.Frame):
def __showwin(self, win):
u"""Zeigt oder verbergt übergebenes Fenster.
@param win: Fenster zum anzeigen/verbergen"""
@param win Fenster zum anzeigen/verbergen"""
if win.winfo_viewable():
win.withdraw()
else:
@@ -86,8 +86,8 @@ class RevPiCheckClient(tkinter.Frame):
def __spinboxkey(self, device, io, event=None):
u"""Prüft die Eingabe auf plausibilität.
@param event: tkinter Event
@param io: IO Liste mit tkinter Variable"""
@param event tkinter Event
@param io IO Liste mit tkinter Variable"""
# io = [name,bytelen,byteaddr,bmk,bitaddress,(tkinter_var)]
try:
newvalue = io[5].get()
@@ -112,9 +112,9 @@ class RevPiCheckClient(tkinter.Frame):
def _createiogroup(self, device, frame, iotype):
u"""Erstellt IO-Gruppen.
@param device: Deviceposition
@param frame: tkinter Frame
@iotype: 'inp' oder 'out' als str()
@param device Deviceposition
@param frame tkinter Frame
@param iotype 'inp' oder 'out' als str()
"""
# IO-Typen festlegen
@@ -265,12 +265,12 @@ class RevPiCheckClient(tkinter.Frame):
def _onfrmconf(self, canvas):
u"""Erstellt Fenster in einem Canvas.
@param canvas: Canvas in dem Objekte erstellt werden sollen"""
@param canvas Canvas in dem Objekte erstellt werden sollen"""
canvas.configure(scrollregion=canvas.bbox("all"))
def _warnwrite(self):
u"""Warnung für Benutzer über Schreibfunktion einmal fragen.
@returns: True, wenn Warnung einmal mit OK bestätigt wurde"""
@return True, wenn Warnung einmal mit OK bestätigt wurde"""
if self.__checkwrite:
self.__checkwrite = not tkmsg.askokcancel(
_("Warning"),
@@ -285,8 +285,8 @@ class RevPiCheckClient(tkinter.Frame):
def _workvalues(self, io_dicts=None, writeout=False):
u"""Alle Werte der Inputs und Outputs abrufen.
@param io_dicts: Arbeit nur für dieses Dict()
@param writeout: Änderungen auf RevPi schreiben"""
@param io_dicts Arbeit nur für dieses Dict()
@param writeout Änderungen auf RevPi schreiben"""
# Abfragelisten vorbereiten
if io_dicts is None:
@@ -377,7 +377,7 @@ class RevPiCheckClient(tkinter.Frame):
def validatereturn(self, returnlist):
u"""Überprüft die Rückgaben der setvalue Funktion.
@param returnlist: list() der xml Rückgabe"""
@param returnlist list() der xml Rückgabe"""
if type(returnlist[0]) != list:
returnlist = [returnlist]

View File

@@ -29,7 +29,7 @@ class RevPiInfo(tkinter.Frame):
def _checkclose(self, event=None):
u"""Prüft ob Fenster beendet werden soll.
@param event: tkinter-Event"""
@param event tkinter-Event"""
self.master.destroy()
def _createwidgets(self, extended=False):

View File

@@ -31,7 +31,7 @@ class RevPiLogfile(tkinter.Frame):
def _checkclose(self, event=None):
u"""Prüft ob Fenster beendet werden soll.
@param event: tkinter-Event"""
@param event tkinter-Event"""
self.master.destroy()
def _createwidgets(self):
@@ -91,7 +91,7 @@ class RevPiLogfile(tkinter.Frame):
def get_applog(self, full=False):
u"""Ruft App Logbuch ab.
@param full: Ganzes Logbuch laden"""
@param full Ganzes Logbuch laden"""
# Logs abrufen und letzte Position merken
self.mrkapp = self._load_log(
@@ -103,7 +103,7 @@ class RevPiLogfile(tkinter.Frame):
def get_plclog(self, full=False):
u"""Ruft PLC Logbuch ab.
@param full: Ganzes Logbuch laden"""
@param full Ganzes Logbuch laden"""
# Logs abrufen und letzte Position merken
self.mrkplc = self._load_log(
@@ -116,11 +116,11 @@ class RevPiLogfile(tkinter.Frame):
def _load_log(self, textwidget, xmlcall, startposition, full):
u"""Läd die angegebenen Logfiles herunter.
@param textwidget: Widget in das Logs eingefügt werden sollen
@param xmlcall: xmlrpc Funktion zum Abrufen der Logdaten
@param startposition: Startposition ab der Logdaten kommen sollen
@param full: Komplettes Logbuch laden
@returns: Ende der Datei (neue Startposition)
@param textwidget Widget in das Logs eingefügt werden sollen
@param xmlcall xmlrpc Funktion zum Abrufen der Logdaten
@param startposition Startposition ab der Logdaten kommen sollen
@param full Komplettes Logbuch laden
@return Ende der Datei (neue Startposition)
"""
roll = textwidget.yview()[1] == 1.0

View File

@@ -17,7 +17,7 @@ class RevPiOption(tkinter.Frame):
def __init__(self, master, xmlcli, xmlmode):
u"""Init RevPiOption-Class.
@returns: None"""
@return None"""
if xmlmode < 2:
return None
@@ -36,7 +36,7 @@ class RevPiOption(tkinter.Frame):
def _changesdone(self):
u"""Prüft ob sich die Einstellungen geändert haben.
@returns: True, wenn min. eine Einstellung geändert wurde"""
@return True, wenn min. eine Einstellung geändert wurde"""
return (
self.var_start.get() != self.dc.get("autostart", "1")
or self.var_reload.get() != self.dc.get("autoreload", "1")
@@ -54,7 +54,7 @@ class RevPiOption(tkinter.Frame):
def _checkclose(self, event=None):
u"""Prüft ob Fenster beendet werden soll.
@param event: tkinter-Event"""
@param event tkinter-Event"""
ask = True
if self._changesdone():
ask = tkmsg.askyesno(

View File

@@ -26,7 +26,8 @@ savefile = os.path.join(homedir, ".revpipyplc", "connections.dat")
def get_connections():
u"""Verbindungen aus Datei laden."""
u"""Verbindungen aus Datei laden.
@return dict() mit Verbindungen"""
if os.path.exists(savefile):
fh = open(savefile, "rb")
connections = pickle.load(fh)
@@ -39,7 +40,7 @@ class RevPiPlcList(tkinter.Frame):
def __init__(self, master):
u"""Init RevPiPlcList-class.
@param master: tkinter master"""
@param master tkinter master"""
super().__init__(master)
self.master.bind("<KeyPress-Escape>", self._checkclose)
self.pack()
@@ -55,7 +56,7 @@ class RevPiPlcList(tkinter.Frame):
def _checkclose(self, event=None):
u"""Prüft ob Fenster beendet werden soll.
@param event: tkinter-Event"""
@param event tkinter-Event"""
ask = True
if self.changes:
ask = tkmsg.askyesno(
@@ -134,7 +135,8 @@ class RevPiPlcList(tkinter.Frame):
self.btn_close.grid(column=4, row=9, sticky="se")
def _saveappdata(self):
u"""Speichert Verbindungen im home Dir."""
u"""Speichert Verbindungen im home Dir.
@return True, bei erfolgreicher Verarbeitung"""
try:
makedirs(os.path.dirname(savefile), exist_ok=True)
fh = open(savefile, "wb")
@@ -151,6 +153,7 @@ class RevPiPlcList(tkinter.Frame):
self.list_conn.insert("end", *lst_conns)
def evt_btnadd(self):
u"""Verbindungseinstellungen übernehmen."""
# TODO: Daten prüfen
self._connections[self.var_name.get()] = \
(self.var_address.get(), self.var_port.get())
@@ -160,6 +163,7 @@ class RevPiPlcList(tkinter.Frame):
self.changes = True
def evt_btnnew(self):
u"""Neue Verbindung erstellen."""
self.list_conn.select_clear(0, "end")
self.evt_listconn()
@@ -169,6 +173,7 @@ class RevPiPlcList(tkinter.Frame):
self.var_port.set("55123")
def evt_btnremove(self):
u"""Verbindung löschen."""
item_index = self.list_conn.curselection()
if len(item_index) == 1:
item = self.list_conn.get(item_index[0])
@@ -186,6 +191,7 @@ class RevPiPlcList(tkinter.Frame):
self.changes = True
def evt_btnsave(self):
u"""Alle Verbindungen speichern."""
if self._saveappdata():
ask = tkmsg.askyesno(
_("Information"),
@@ -202,6 +208,7 @@ class RevPiPlcList(tkinter.Frame):
)
def evt_listconn(self, evt=None):
u"""Übernimmt Einstellungen in Eingabefelder."""
item_index = self.list_conn.curselection()
if len(item_index) == 1:
@@ -219,6 +226,7 @@ class RevPiPlcList(tkinter.Frame):
self.btn_remove["state"] = "disabled"
def evt_keypress(self, evt=None):
u"""Passt bei Tastendruck den Status der Buttons an."""
okvalue = "normal" if (
self.var_address.get() != ""
and self.var_name.get() != ""

View File

@@ -35,7 +35,8 @@ savefile = os.path.join(homedir, ".revpipyplc", "programpath.dat")
class RevPiProgram(tkinter.Frame):
def __init__(self, master, xmlcli, xmlmode, revpi):
u"""Init RevPiProgram-Class."""
u"""Init RevPiProgram-Class.
@return None"""
if xmlmode < 2:
return None
@@ -60,6 +61,8 @@ class RevPiProgram(tkinter.Frame):
self._evt_optup()
def _checkclose(self, event=None):
u"""Prüft ob Fenster beendet werden soll.
@param event tkinter-Event"""
if self.uploaded:
tkmsg.showinfo(
_("Information"),
@@ -71,6 +74,7 @@ class RevPiProgram(tkinter.Frame):
self.master.destroy()
def _createwidgets(self):
u"""Erstellt alle Widgets."""
self.master.wm_title(_("RevPi Python PLC program"))
self.master.wm_resizable(width=False, height=False)
@@ -217,6 +221,7 @@ class RevPiProgram(tkinter.Frame):
btn.grid()
def _evt_optdown(self, text=""):
u"""Passt je nach gewählter Option den Status der Widgets an."""
if self.lst_typedown.index(self.var_typedown.get()) == 0:
self.var_picdown.set(False)
self.ckb_picdown["state"] = "disable"
@@ -224,6 +229,7 @@ class RevPiProgram(tkinter.Frame):
self.ckb_picdown["state"] = "normal"
def _evt_optup(self, text=""):
u"""Passt je nach gewählter Option den Status der Widgets an."""
if self.lst_typeup.index(self.var_typeup.get()) <= 1:
self.var_picup.set(False)
self.ckb_picup["state"] = "disable"
@@ -231,7 +237,9 @@ class RevPiProgram(tkinter.Frame):
self.ckb_picup["state"] = "normal"
def _loaddefault(self, full=False):
"""Uebernimmt fuer den Pi die letzen Pfade."""
u"""Übernimmt für den Pi die letzen Pfade.
@param full Einstellungen für alle Verbindungen laden
@return dict() mit Einstellungen"""
if os.path.exists(savefile):
fh = open(savefile, "rb")
dict_all = pickle.load(fh)
@@ -242,7 +250,8 @@ class RevPiProgram(tkinter.Frame):
return {}
def _savedefaults(self):
u"""Schreibt fuer den Pi die letzen Pfade."""
u"""Schreibt fuer den Pi die letzen Pfade.
@return True, bei erfolgreicher Verarbeitung"""
try:
makedirs(os.path.dirname(savefile), exist_ok=True)
dict_all = self._loaddefault(full=True)
@@ -256,8 +265,8 @@ class RevPiProgram(tkinter.Frame):
def create_filelist(self, rootdir):
u"""Erstellt eine Dateiliste von einem Verzeichnis.
@param rootdir: Verzeichnis fuer das eine Liste erstellt werden soll
@returns: Dateiliste"""
@param rootdir Verzeichnis fuer das eine Liste erstellt werden soll
@return Dateiliste"""
filelist = []
for tup_dir in os.walk(rootdir):
for fname in tup_dir[2]:
@@ -269,8 +278,8 @@ class RevPiProgram(tkinter.Frame):
Dabei wird geprueft, ob es sich um einen einzelnen Ordner handelt
und ob es eine piCtory Konfiguration im rootdir gibt.
@param rootdir: Verzeichnis fuer Pruefung
@returns: Abgeaendertes rootdir
@param rootdir Verzeichnis fuer Pruefung
@return Abgeaendertes rootdir
"""
lst_dir = os.listdir(rootdir)
@@ -558,7 +567,8 @@ class RevPiProgram(tkinter.Frame):
fh.close()
def plcupload(self):
u"""Lädt das angegebene Projekt auf den RevPi."""
u"""Lädt das angegebene Projekt auf den RevPi.
@return True, bei erfolgreicher Verarbeitung"""
tup = self.lst_typeup.index(self.var_typeup.get())
dirselect = ""
dirtmp = None
@@ -748,3 +758,5 @@ class RevPiProgram(tkinter.Frame):
# Temp-Dir aufräumen
if dirtmp is not None:
rmtree(dirtmp)
return True

View File

@@ -31,7 +31,7 @@ class RevPiPyControl(tkinter.Frame):
def __init__(self, master=None):
u"""Init RevPiPyControl-Class.
@param master: tkinter master"""
@param master tkinter master"""
super().__init__(master)
self.master.protocol("WM_DELETE_WINDOW", self._closeapp)
self.pack(fill="both", expand=True)
@@ -84,7 +84,7 @@ class RevPiPyControl(tkinter.Frame):
def _closeapp(self, event=None):
u"""Räumt auf und beendet Programm.
@param event: tkinter Event"""
@param event tkinter Event"""
self._closeall()
self.master.destroy()
@@ -183,6 +183,8 @@ class RevPiPyControl(tkinter.Frame):
self.mbar.add_cascade(label=_("Connect"), menu=self.mconn)
def _opt_conn(self, text):
u"""Stellt eine neue Verbindung zu RevPiPyLoad her.
@param text Verbindungsname"""
socket.setdefaulttimeout(2)
sp = ServerProxy(
"http://{}:{}".format(
@@ -261,7 +263,8 @@ class RevPiPyControl(tkinter.Frame):
self._fillconnbar()
def plclogs(self):
u"""Öffnet das Fenster für Logdateien."""
u"""Öffnet das Fenster für Logdateien.
@return None"""
if "load_plclog" not in self.xmlfuncs:
tkmsg.showwarning(
_("Warning"),
@@ -345,6 +348,7 @@ class RevPiPyControl(tkinter.Frame):
)
def tmr_plcrunning(self):
u"""Timer der den Status des PLC Programms prüft."""
self._btnstate()
if self.cli is None:
self.txt_status["readonlybackground"] = "lightblue"