mirror of
https://github.com/naruxde/revpipycontrol.git
synced 2025-11-08 15:43:52 +01:00
RevPiPyLoad Dienste als Gruppe anzeigen
Status der Dienste integriert FileHandler wurden in Programmfenster nicht geschlossen programpath.dat wird aufger?umt, wenn RevPi Liste gespeichert wird
This commit is contained in:
@@ -12,7 +12,7 @@ Tools-Sammlung.
|
|||||||
<h3 style="background-color:#FFFFFF;color:#FF0000">
|
<h3 style="background-color:#FFFFFF;color:#FF0000">
|
||||||
Global Attributes</h3>
|
Global Attributes</h3>
|
||||||
<table>
|
<table>
|
||||||
<tr><td>None</td></tr>
|
<tr><td>savefile_connections</td></tr><tr><td>savefile_programpath</td></tr>
|
||||||
</table>
|
</table>
|
||||||
<h3 style="background-color:#FFFFFF;color:#FF0000">
|
<h3 style="background-color:#FFFFFF;color:#FF0000">
|
||||||
Classes</h3>
|
Classes</h3>
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ revpiplclist</h1>
|
|||||||
<h3 style="background-color:#FFFFFF;color:#FF0000">
|
<h3 style="background-color:#FFFFFF;color:#FF0000">
|
||||||
Global Attributes</h3>
|
Global Attributes</h3>
|
||||||
<table>
|
<table>
|
||||||
<tr><td>_</td></tr><tr><td>savefile</td></tr>
|
<tr><td>_</td></tr>
|
||||||
</table>
|
</table>
|
||||||
<h3 style="background-color:#FFFFFF;color:#FF0000">
|
<h3 style="background-color:#FFFFFF;color:#FF0000">
|
||||||
Classes</h3>
|
Classes</h3>
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ revpiprogram</h1>
|
|||||||
<h3 style="background-color:#FFFFFF;color:#FF0000">
|
<h3 style="background-color:#FFFFFF;color:#FF0000">
|
||||||
Global Attributes</h3>
|
Global Attributes</h3>
|
||||||
<table>
|
<table>
|
||||||
<tr><td>_</td></tr><tr><td>savefile</td></tr>
|
<tr><td>_</td></tr>
|
||||||
</table>
|
</table>
|
||||||
<h3 style="background-color:#FFFFFF;color:#FF0000">
|
<h3 style="background-color:#FFFFFF;color:#FF0000">
|
||||||
Classes</h3>
|
Classes</h3>
|
||||||
@@ -23,7 +23,13 @@ Classes</h3>
|
|||||||
<h3 style="background-color:#FFFFFF;color:#FF0000">
|
<h3 style="background-color:#FFFFFF;color:#FF0000">
|
||||||
Functions</h3>
|
Functions</h3>
|
||||||
<table>
|
<table>
|
||||||
<tr><td>None</td></tr>
|
<tr>
|
||||||
|
<td><a style="color:#0000FF" href="#_loaddefaults">_loaddefaults</a></td>
|
||||||
|
<td>Übernimmt für den Pi die letzen Pfade.</td>
|
||||||
|
</tr><tr>
|
||||||
|
<td><a style="color:#0000FF" href="#_savedefaults">_savedefaults</a></td>
|
||||||
|
<td>Schreibt fuer den Pi die letzen Pfade.</td>
|
||||||
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
<hr /><hr />
|
<hr /><hr />
|
||||||
<a NAME="RevPiProgram" ID="RevPiProgram"></a>
|
<a NAME="RevPiProgram" ID="RevPiProgram"></a>
|
||||||
@@ -63,12 +69,6 @@ Methods</h3>
|
|||||||
<td><a style="color:#0000FF" href="#RevPiProgram._evt_optup">_evt_optup</a></td>
|
<td><a style="color:#0000FF" href="#RevPiProgram._evt_optup">_evt_optup</a></td>
|
||||||
<td>Passt je nach gewählter Option den Status der Widgets an.</td>
|
<td>Passt je nach gewählter Option den Status der Widgets an.</td>
|
||||||
</tr><tr>
|
</tr><tr>
|
||||||
<td><a style="color:#0000FF" href="#RevPiProgram._loaddefault">_loaddefault</a></td>
|
|
||||||
<td>Übernimmt fü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>
|
|
||||||
</tr><tr>
|
|
||||||
<td><a style="color:#0000FF" href="#RevPiProgram.check_replacedir">check_replacedir</a></td>
|
<td><a style="color:#0000FF" href="#RevPiProgram.check_replacedir">check_replacedir</a></td>
|
||||||
<td>Gibt das rootdir von einem entpackten Verzeichnis zurueck.</td>
|
<td>Gibt das rootdir von einem entpackten Verzeichnis zurueck.</td>
|
||||||
</tr><tr>
|
</tr><tr>
|
||||||
@@ -139,34 +139,7 @@ RevPiProgram._evt_optup</h3>
|
|||||||
<b>_evt_optup</b>(<i>text=""</i>)
|
<b>_evt_optup</b>(<i>text=""</i>)
|
||||||
<p>
|
<p>
|
||||||
Passt je nach gewählter Option den Status der Widgets an.
|
Passt je nach gewählter Option den Status der Widgets an.
|
||||||
</p><a NAME="RevPiProgram._loaddefault" ID="RevPiProgram._loaddefault"></a>
|
</p><a NAME="RevPiProgram.check_replacedir" ID="RevPiProgram.check_replacedir"></a>
|
||||||
<h3 style="background-color:#FFFFFF;color:#FF0000">
|
|
||||||
RevPiProgram._loaddefault</h3>
|
|
||||||
<b>_loaddefault</b>(<i>full=False</i>)
|
|
||||||
<p>
|
|
||||||
Übernimmt für den Pi die letzen Pfade.
|
|
||||||
</p><dl>
|
|
||||||
<dt><i>full</i></dt>
|
|
||||||
<dd>
|
|
||||||
Einstellungen fü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><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">
|
<h3 style="background-color:#FFFFFF;color:#FF0000">
|
||||||
RevPiProgram.check_replacedir</h3>
|
RevPiProgram.check_replacedir</h3>
|
||||||
<b>check_replacedir</b>(<i>rootdir</i>)
|
<b>check_replacedir</b>(<i>rootdir</i>)
|
||||||
@@ -244,5 +217,44 @@ RevPiProgram.setpictoryrsc</h3>
|
|||||||
Überträgt die angegebene piCtory-Konfiguration.
|
Überträgt die angegebene piCtory-Konfiguration.
|
||||||
</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 />
|
||||||
|
<a NAME="_loaddefaults" ID="_loaddefaults"></a>
|
||||||
|
<h2 style="background-color:#FFFFFF;color:#0000FF">_loaddefaults</h2>
|
||||||
|
<b>_loaddefaults</b>(<i>revpiname=None</i>)
|
||||||
|
<p>
|
||||||
|
Übernimmt für den Pi die letzen Pfade.
|
||||||
|
</p><dl>
|
||||||
|
<dt><i>revpiname</i></dt>
|
||||||
|
<dd>
|
||||||
|
Einstellungen nur für RevPi laden
|
||||||
|
</dd>
|
||||||
|
</dl><dl>
|
||||||
|
<dt>Returns:</dt>
|
||||||
|
<dd>
|
||||||
|
<class 'dict'> mit Einstellungen
|
||||||
|
</dd>
|
||||||
|
</dl>
|
||||||
|
<div align="right"><a style="color:#0000FF" href="#top">Up</a></div>
|
||||||
|
<hr /><hr />
|
||||||
|
<a NAME="_savedefaults" ID="_savedefaults"></a>
|
||||||
|
<h2 style="background-color:#FFFFFF;color:#0000FF">_savedefaults</h2>
|
||||||
|
<b>_savedefaults</b>(<i>revpiname, settings</i>)
|
||||||
|
<p>
|
||||||
|
Schreibt fuer den Pi die letzen Pfade.
|
||||||
|
</p><dl>
|
||||||
|
<dt><i>revpiname</i></dt>
|
||||||
|
<dd>
|
||||||
|
Einstellungen sind für diesen RevPi
|
||||||
|
</dd><dt><i>settings</i></dt>
|
||||||
|
<dd>
|
||||||
|
<class 'dict'> mit Einstellungen
|
||||||
|
</dd>
|
||||||
|
</dl><dl>
|
||||||
|
<dt>Returns:</dt>
|
||||||
|
<dd>
|
||||||
|
True, bei erfolgreicher Verarbeitung
|
||||||
|
</dd>
|
||||||
|
</dl>
|
||||||
|
<div align="right"><a style="color:#0000FF" href="#top">Up</a></div>
|
||||||
<hr />
|
<hr />
|
||||||
</body></html>
|
</body></html>
|
||||||
@@ -20,6 +20,8 @@ aclmanager.AclManager?1(master, minlevel, maxlevel, acl_str="", readonly=False)
|
|||||||
aclmanager._?8
|
aclmanager._?8
|
||||||
mytools.addroot?4(filename)
|
mytools.addroot?4(filename)
|
||||||
mytools.gettrans?4(proglang=None)
|
mytools.gettrans?4(proglang=None)
|
||||||
|
mytools.savefile_connections?7
|
||||||
|
mytools.savefile_programpath?7
|
||||||
revpicheckclient.RevPiCheckClient.__chval?6(device, io, event=None)
|
revpicheckclient.RevPiCheckClient.__chval?6(device, io, event=None)
|
||||||
revpicheckclient.RevPiCheckClient.__hidewin?6(win, event=None)
|
revpicheckclient.RevPiCheckClient.__hidewin?6(win, event=None)
|
||||||
revpicheckclient.RevPiCheckClient.__saveoldvalue?6(event, tkvar)
|
revpicheckclient.RevPiCheckClient.__saveoldvalue?6(event, tkvar)
|
||||||
@@ -91,13 +93,10 @@ revpiplclist.RevPiPlcList.root?7
|
|||||||
revpiplclist.RevPiPlcList?1(master)
|
revpiplclist.RevPiPlcList?1(master)
|
||||||
revpiplclist._?8
|
revpiplclist._?8
|
||||||
revpiplclist.get_connections?4()
|
revpiplclist.get_connections?4()
|
||||||
revpiplclist.savefile?7
|
|
||||||
revpiprogram.RevPiProgram._checkclose?5(event=None)
|
revpiprogram.RevPiProgram._checkclose?5(event=None)
|
||||||
revpiprogram.RevPiProgram._createwidgets?5()
|
revpiprogram.RevPiProgram._createwidgets?5()
|
||||||
revpiprogram.RevPiProgram._evt_optdown?5(text="")
|
revpiprogram.RevPiProgram._evt_optdown?5(text="")
|
||||||
revpiprogram.RevPiProgram._evt_optup?5(text="")
|
revpiprogram.RevPiProgram._evt_optup?5(text="")
|
||||||
revpiprogram.RevPiProgram._loaddefault?5(full=False)
|
|
||||||
revpiprogram.RevPiProgram._savedefaults?5()
|
|
||||||
revpiprogram.RevPiProgram.check_replacedir?4(rootdir)
|
revpiprogram.RevPiProgram.check_replacedir?4(rootdir)
|
||||||
revpiprogram.RevPiProgram.create_filelist?4(rootdir)
|
revpiprogram.RevPiProgram.create_filelist?4(rootdir)
|
||||||
revpiprogram.RevPiProgram.getpictoryrsc?4()
|
revpiprogram.RevPiProgram.getpictoryrsc?4()
|
||||||
@@ -108,7 +107,8 @@ revpiprogram.RevPiProgram.plcupload?4()
|
|||||||
revpiprogram.RevPiProgram.setpictoryrsc?4(filename=None)
|
revpiprogram.RevPiProgram.setpictoryrsc?4(filename=None)
|
||||||
revpiprogram.RevPiProgram?1(master, xmlcli, xmlmode, revpi)
|
revpiprogram.RevPiProgram?1(master, xmlcli, xmlmode, revpi)
|
||||||
revpiprogram._?8
|
revpiprogram._?8
|
||||||
revpiprogram.savefile?7
|
revpiprogram._loaddefaults?5(revpiname=None)
|
||||||
|
revpiprogram._savedefaults?5(revpiname, settings)
|
||||||
revpipycontrol.RevPiPyControl._btnstate?5()
|
revpipycontrol.RevPiPyControl._btnstate?5()
|
||||||
revpipycontrol.RevPiPyControl._closeall?5()
|
revpipycontrol.RevPiPyControl._closeall?5()
|
||||||
revpipycontrol.RevPiPyControl._closeapp?5(event=None)
|
revpipycontrol.RevPiPyControl._closeapp?5(event=None)
|
||||||
|
|||||||
@@ -9,8 +9,20 @@
|
|||||||
import gettext
|
import gettext
|
||||||
import locale
|
import locale
|
||||||
import sys
|
import sys
|
||||||
|
from os import environ
|
||||||
from os.path import dirname
|
from os.path import dirname
|
||||||
from os.path import join as pathjoin
|
from os.path import join as pathjoin
|
||||||
|
from sys import platform
|
||||||
|
|
||||||
|
# Systemwerte und SaveFiles
|
||||||
|
if platform == "linux":
|
||||||
|
homedir = environ["HOME"]
|
||||||
|
else:
|
||||||
|
homedir = environ["APPDATA"]
|
||||||
|
savefile_connections = pathjoin(
|
||||||
|
homedir, ".revpipyplc", "connections.dat")
|
||||||
|
savefile_programpath = pathjoin(
|
||||||
|
homedir, ".revpipyplc", "programpath.dat")
|
||||||
|
|
||||||
|
|
||||||
def addroot(filename):
|
def addroot(filename):
|
||||||
|
|||||||
@@ -162,7 +162,6 @@ class RevPiOption(tkinter.Frame):
|
|||||||
self.var_pythonver = tkinter.IntVar(prog)
|
self.var_pythonver = tkinter.IntVar(prog)
|
||||||
self.var_startpy = tkinter.StringVar(prog)
|
self.var_startpy = tkinter.StringVar(prog)
|
||||||
self.var_startargs = tkinter.StringVar(prog)
|
self.var_startargs = tkinter.StringVar(prog)
|
||||||
self.var_slave = tkinter.BooleanVar(prog)
|
|
||||||
self.var_slaveacl = tkinter.StringVar(prog)
|
self.var_slaveacl = tkinter.StringVar(prog)
|
||||||
|
|
||||||
self.var_pythonver.set(3)
|
self.var_pythonver.set(3)
|
||||||
@@ -210,39 +209,54 @@ class RevPiOption(tkinter.Frame):
|
|||||||
txt["textvariable"] = self.var_startargs
|
txt["textvariable"] = self.var_startargs
|
||||||
txt.grid(columnspan=2, **cpadw)
|
txt.grid(columnspan=2, **cpadw)
|
||||||
|
|
||||||
# Row 6
|
# Gruppe Services
|
||||||
ckb_slave = tkinter.Checkbutton(prog, justify="left")
|
services = tkinter.LabelFrame(self)
|
||||||
|
services["text"] = _("RevPiPyLoad server services")
|
||||||
|
services.grid(columnspan=2, pady=2, sticky="we")
|
||||||
|
|
||||||
|
self.var_slave = tkinter.BooleanVar(services)
|
||||||
|
self.var_xmlon = tkinter.BooleanVar(services)
|
||||||
|
self.var_xmlacl = tkinter.StringVar(services)
|
||||||
|
|
||||||
|
# RevPiSlave Service
|
||||||
|
row = 0
|
||||||
|
ckb_slave = tkinter.Checkbutton(services, justify="left")
|
||||||
ckb_slave["state"] = xmlstate
|
ckb_slave["state"] = xmlstate
|
||||||
ckb_slave["text"] = _("Use RevPi as PLC-Slave")
|
ckb_slave["text"] = _("Use RevPi as PLC-Slave")
|
||||||
ckb_slave["variable"] = self.var_slave
|
ckb_slave["variable"] = self.var_slave
|
||||||
ckb_slave.grid(column=0, **cpadw)
|
ckb_slave.grid(column=0, **cpadw)
|
||||||
|
|
||||||
btn_slaveacl = tkinter.Button(prog, justify="center")
|
btn_slaveacl = tkinter.Button(services, justify="center")
|
||||||
btn_slaveacl["command"] = self.btn_slaveacl
|
btn_slaveacl["command"] = self.btn_slaveacl
|
||||||
btn_slaveacl["text"] = _("Edit ACL")
|
btn_slaveacl["text"] = _("Edit ACL")
|
||||||
btn_slaveacl.grid(column=1, row=6, **cpade)
|
btn_slaveacl.grid(column=1, row=row, **cpade)
|
||||||
|
|
||||||
# Gruppe XMLRPC
|
row = 1
|
||||||
xmlrpc = tkinter.LabelFrame(self)
|
lbl = tkinter.Label(services)
|
||||||
xmlrpc["text"] = _("XML-RPC server")
|
lbl["text"] = _("RevPi-Slave service is:")
|
||||||
xmlrpc.grid(columnspan=2, pady=2, sticky="we")
|
lbl.grid(column=0, **cpade)
|
||||||
|
|
||||||
self.var_xmlon = tkinter.BooleanVar(xmlrpc)
|
status = self.xmlcli.plcslaverunning()
|
||||||
self.var_xmlacl = tkinter.StringVar(xmlrpc)
|
lbl = tkinter.Label(services)
|
||||||
|
lbl["fg"] = "green" if status else "red"
|
||||||
|
lbl["text"] = _("running") if status else _("stopped")
|
||||||
|
lbl.grid(column=1, row=row, **cpadwe)
|
||||||
|
|
||||||
ckb_xmlon = tkinter.Checkbutton(xmlrpc)
|
# XML-RPC Service
|
||||||
|
row = 2
|
||||||
|
ckb_xmlon = tkinter.Checkbutton(services)
|
||||||
ckb_xmlon["command"] = self.askxmlon
|
ckb_xmlon["command"] = self.askxmlon
|
||||||
ckb_xmlon["state"] = xmlstate
|
ckb_xmlon["state"] = xmlstate
|
||||||
ckb_xmlon["text"] = _("Activate XML-RPC server on RevPi")
|
ckb_xmlon["text"] = _("Activate XML-RPC server on RevPi")
|
||||||
ckb_xmlon["variable"] = self.var_xmlon
|
ckb_xmlon["variable"] = self.var_xmlon
|
||||||
ckb_xmlon.grid(**cpadw)
|
ckb_xmlon.grid(**cpadw)
|
||||||
|
|
||||||
btn_slaveacl = tkinter.Button(xmlrpc, justify="center")
|
btn_slaveacl = tkinter.Button(services, justify="center")
|
||||||
btn_slaveacl["command"] = self.btn_xmlacl
|
btn_slaveacl["command"] = self.btn_xmlacl
|
||||||
btn_slaveacl["text"] = _("Edit ACL")
|
btn_slaveacl["text"] = _("Edit ACL")
|
||||||
btn_slaveacl.grid(column=1, row=0, **cpade)
|
btn_slaveacl.grid(column=1, row=row, **cpade)
|
||||||
|
|
||||||
# Buttons
|
# Buttons am Ende
|
||||||
btn_save = tkinter.Button(self)
|
btn_save = tkinter.Button(self)
|
||||||
btn_save["command"] = self._setappdata
|
btn_save["command"] = self._setappdata
|
||||||
btn_save["state"] = xmlstate
|
btn_save["state"] = xmlstate
|
||||||
|
|||||||
@@ -11,26 +11,22 @@ import pickle
|
|||||||
import tkinter
|
import tkinter
|
||||||
import tkinter.messagebox as tkmsg
|
import tkinter.messagebox as tkmsg
|
||||||
from mytools import gettrans
|
from mytools import gettrans
|
||||||
from os import environ, makedirs
|
from mytools import savefile_connections as savefile
|
||||||
from sys import platform
|
from revpiprogram import _loaddefaults as programloaddefaults
|
||||||
|
from revpiprogram import _savedefaults as programsavedefaults
|
||||||
|
from os import makedirs
|
||||||
|
|
||||||
|
|
||||||
# Übersetzungen laden
|
# Übersetzungen laden
|
||||||
_ = gettrans()
|
_ = gettrans()
|
||||||
|
|
||||||
# Systemwerte
|
|
||||||
if platform == "linux":
|
|
||||||
homedir = environ["HOME"]
|
|
||||||
else:
|
|
||||||
homedir = environ["APPDATA"]
|
|
||||||
savefile = os.path.join(homedir, ".revpipyplc", "connections.dat")
|
|
||||||
|
|
||||||
|
|
||||||
def get_connections():
|
def get_connections():
|
||||||
u"""Verbindungen aus Datei laden.
|
u"""Verbindungen aus Datei laden.
|
||||||
@return dict() mit Verbindungen"""
|
@return dict() mit Verbindungen"""
|
||||||
if os.path.exists(savefile):
|
if os.path.exists(savefile):
|
||||||
fh = open(savefile, "rb")
|
with open(savefile, "rb") as fh:
|
||||||
connections = pickle.load(fh)
|
connections = pickle.load(fh)
|
||||||
return connections
|
return connections
|
||||||
else:
|
else:
|
||||||
return {}
|
return {}
|
||||||
@@ -151,11 +147,19 @@ class RevPiPlcList(tkinter.Frame):
|
|||||||
@return True, bei erfolgreicher Verarbeitung"""
|
@return True, bei erfolgreicher Verarbeitung"""
|
||||||
try:
|
try:
|
||||||
makedirs(os.path.dirname(savefile), exist_ok=True)
|
makedirs(os.path.dirname(savefile), exist_ok=True)
|
||||||
fh = open(savefile, "wb")
|
with open(savefile, "wb") as fh:
|
||||||
pickle.dump(self._connections, fh)
|
pickle.dump(self._connections, fh)
|
||||||
self.changes = False
|
self.changes = False
|
||||||
except:
|
except:
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
# Andere Einstellungen aufräumen
|
||||||
|
dict = programloaddefaults()
|
||||||
|
for revpi in tuple(dict.keys()):
|
||||||
|
if revpi not in self._connections:
|
||||||
|
del dict[revpi]
|
||||||
|
programsavedefaults(None, dict)
|
||||||
|
|
||||||
return True
|
return True
|
||||||
|
|
||||||
def build_listconn(self):
|
def build_listconn(self):
|
||||||
|
|||||||
@@ -15,22 +15,50 @@ import tkinter.filedialog as tkfd
|
|||||||
import tkinter.messagebox as tkmsg
|
import tkinter.messagebox as tkmsg
|
||||||
import zipfile
|
import zipfile
|
||||||
from mytools import gettrans
|
from mytools import gettrans
|
||||||
from os import environ
|
from mytools import savefile_programpath as savefile
|
||||||
from os import makedirs
|
from os import makedirs
|
||||||
from shutil import rmtree
|
from shutil import rmtree
|
||||||
from sys import platform
|
|
||||||
from tempfile import mkstemp, mkdtemp
|
from tempfile import mkstemp, mkdtemp
|
||||||
from xmlrpc.client import Binary
|
from xmlrpc.client import Binary
|
||||||
|
|
||||||
# Übersetzung laden
|
# Übersetzung laden
|
||||||
_ = gettrans()
|
_ = gettrans()
|
||||||
|
|
||||||
# Systemwerte
|
|
||||||
if platform == "linux":
|
def _loaddefaults(revpiname=None):
|
||||||
homedir = environ["HOME"]
|
u"""Übernimmt für den Pi die letzen Pfade.
|
||||||
else:
|
@param revpiname Einstellungen nur für RevPi laden
|
||||||
homedir = environ["APPDATA"]
|
@return <class 'dict'> mit Einstellungen"""
|
||||||
savefile = os.path.join(homedir, ".revpipyplc", "programpath.dat")
|
if os.path.exists(savefile):
|
||||||
|
with open(savefile, "rb") as fh:
|
||||||
|
dict_all = pickle.load(fh)
|
||||||
|
if revpiname is None:
|
||||||
|
return dict_all
|
||||||
|
else:
|
||||||
|
return dict_all.get(revpiname, {})
|
||||||
|
return {}
|
||||||
|
|
||||||
|
|
||||||
|
def _savedefaults(revpiname, settings):
|
||||||
|
u"""Schreibt fuer den Pi die letzen Pfade.
|
||||||
|
|
||||||
|
@param revpiname Einstellungen sind für diesen RevPi
|
||||||
|
@param settings <class 'dict'> mit Einstellungen
|
||||||
|
@return True, bei erfolgreicher Verarbeitung
|
||||||
|
|
||||||
|
"""
|
||||||
|
try:
|
||||||
|
makedirs(os.path.dirname(savefile), exist_ok=True)
|
||||||
|
if revpiname is None:
|
||||||
|
dict_all = settings
|
||||||
|
else:
|
||||||
|
dict_all = _loaddefaults()
|
||||||
|
dict_all[revpiname] = settings
|
||||||
|
with open(savefile, "wb") as fh:
|
||||||
|
pickle.dump(dict_all, fh)
|
||||||
|
except:
|
||||||
|
return False
|
||||||
|
return True
|
||||||
|
|
||||||
|
|
||||||
class RevPiProgram(tkinter.Frame):
|
class RevPiProgram(tkinter.Frame):
|
||||||
@@ -54,7 +82,7 @@ class RevPiProgram(tkinter.Frame):
|
|||||||
self.xmlstate = "normal" if xmlmode >= 3 else "disabled"
|
self.xmlstate = "normal" if xmlmode >= 3 else "disabled"
|
||||||
|
|
||||||
# Letzte Einstellungen übernehmen
|
# Letzte Einstellungen übernehmen
|
||||||
self.opt = self._loaddefault()
|
self.opt = _loaddefaults()
|
||||||
|
|
||||||
# Fenster bauen
|
# Fenster bauen
|
||||||
self._createwidgets()
|
self._createwidgets()
|
||||||
@@ -250,33 +278,6 @@ class RevPiProgram(tkinter.Frame):
|
|||||||
else:
|
else:
|
||||||
self.ckb_picup["state"] = "normal"
|
self.ckb_picup["state"] = "normal"
|
||||||
|
|
||||||
def _loaddefault(self, full=False):
|
|
||||||
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)
|
|
||||||
if full:
|
|
||||||
return dict_all
|
|
||||||
else:
|
|
||||||
return dict_all.get(self.revpi, {})
|
|
||||||
return {}
|
|
||||||
|
|
||||||
def _savedefaults(self):
|
|
||||||
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)
|
|
||||||
dict_all[self.revpi] = self.opt
|
|
||||||
fh = open(savefile, "wb")
|
|
||||||
pickle.dump(dict_all, fh)
|
|
||||||
self.changes = False
|
|
||||||
except:
|
|
||||||
return False
|
|
||||||
return True
|
|
||||||
|
|
||||||
def create_filelist(self, rootdir):
|
def create_filelist(self, rootdir):
|
||||||
u"""Erstellt eine Dateiliste von einem Verzeichnis.
|
u"""Erstellt eine Dateiliste von einem Verzeichnis.
|
||||||
@param rootdir Verzeichnis fuer das eine Liste erstellt werden soll
|
@param rootdir Verzeichnis fuer das eine Liste erstellt werden soll
|
||||||
@@ -338,7 +339,7 @@ class RevPiProgram(tkinter.Frame):
|
|||||||
)
|
)
|
||||||
# Einstellungen speichern
|
# Einstellungen speichern
|
||||||
self.opt["getpictoryrsc_dir"] = os.path.dirname(fh.name)
|
self.opt["getpictoryrsc_dir"] = os.path.dirname(fh.name)
|
||||||
self._savedefaults()
|
self._savedefaults(self.revpi, self.opt)
|
||||||
finally:
|
finally:
|
||||||
fh.close()
|
fh.close()
|
||||||
|
|
||||||
@@ -369,7 +370,7 @@ class RevPiProgram(tkinter.Frame):
|
|||||||
)
|
)
|
||||||
# Einstellungen speichern
|
# Einstellungen speichern
|
||||||
self.opt["getprocimg_dir"] = os.path.dirname(fh.name)
|
self.opt["getprocimg_dir"] = os.path.dirname(fh.name)
|
||||||
self._savedefaults()
|
self._savedefaults(self.revpi, self.opt)
|
||||||
finally:
|
finally:
|
||||||
fh.close()
|
fh.close()
|
||||||
|
|
||||||
@@ -417,7 +418,7 @@ class RevPiProgram(tkinter.Frame):
|
|||||||
|
|
||||||
# Einstellungen speichern
|
# Einstellungen speichern
|
||||||
self.opt["setpictoryrsc_dir"] = os.path.dirname(fh.name)
|
self.opt["setpictoryrsc_dir"] = os.path.dirname(fh.name)
|
||||||
self._savedefaults()
|
self._savedefaults(self.revpi, self.opt)
|
||||||
elif ec == -1:
|
elif ec == -1:
|
||||||
tkmsg.showerror(
|
tkmsg.showerror(
|
||||||
_("Error"),
|
_("Error"),
|
||||||
@@ -575,7 +576,7 @@ class RevPiProgram(tkinter.Frame):
|
|||||||
)
|
)
|
||||||
|
|
||||||
# Einstellungen speichern
|
# Einstellungen speichern
|
||||||
self._savedefaults()
|
self._savedefaults(self.revpi, self.opt)
|
||||||
finally:
|
finally:
|
||||||
fh.close()
|
fh.close()
|
||||||
|
|
||||||
@@ -751,7 +752,7 @@ class RevPiProgram(tkinter.Frame):
|
|||||||
|
|
||||||
self.opt["typeup"] = self.var_typeup.get()
|
self.opt["typeup"] = self.var_typeup.get()
|
||||||
self.opt["picup"] = self.var_picup.get()
|
self.opt["picup"] = self.var_picup.get()
|
||||||
self._savedefaults()
|
self._savedefaults(self.revpi, self.opt)
|
||||||
|
|
||||||
elif ec == -1:
|
elif ec == -1:
|
||||||
tkmsg.showerror(
|
tkmsg.showerror(
|
||||||
|
|||||||
Reference in New Issue
Block a user