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

Developer als Frame zu Hauptfenster gelegt

Sockettimeout auf 6 Sekunden ver?ndert
This commit is contained in:
2018-08-02 14:17:07 +02:00
parent e42cc1a6d2
commit 554f19d090
2 changed files with 72 additions and 89 deletions

View File

@@ -15,7 +15,6 @@ import tkinter.messagebox as tkmsg
from mytools import homedir
from mytools import gettrans
from mytools import savefile_developer as savefile
from revpilogfile import RevPiLogfile
from tkinter import ttk
from xmlrpc.client import Binary
@@ -70,8 +69,6 @@ class RevPiDevelop(ttk.Frame):
return None
super().__init__(master)
self.master.protocol("WM_DELETE_WINDOW", self._checkclose)
self.master.bind("<KeyPress-Escape>", self._checkclose)
self.pack(expand=True, fill="both")
self.revpi = revpi
@@ -94,9 +91,6 @@ class RevPiDevelop(ttk.Frame):
self.refresh_stats()
# Logfenster öffnen
self.tklog = RevPiLogfile(master, self.xmlcli)
def _checkclose(self, event=None):
u"""Prüft ob Fenster beendet werden soll.
@param event tkinter-Event"""
@@ -107,18 +101,12 @@ class RevPiDevelop(ttk.Frame):
self.opt["watchfiles"] = self.watchfiles
_savedefaults(self.revpi, self.opt)
# Logfile und eigenes fenster schließen
self.tklog.destroy()
self.master.destroy()
def _createwidgets(self):
u"""Erstellt alle Widgets."""
self.master.wm_title(_("RevPi Python PLC program"))
self.rowconfigure(0, weight=1)
self.columnconfigure(0, weight=1)
cpad = {"padx": 4, "pady": 2}
# cpad = {"padx": 4, "pady": 2}
# cpade = {"padx": 4, "pady": 2, "sticky": "e"}
cpadw = {"padx": 4, "pady": 2, "sticky": "w"}
cpadwe = {"padx": 4, "pady": 2, "sticky": "we"}
@@ -134,16 +122,16 @@ class RevPiDevelop(ttk.Frame):
lbl["text"] = _("Path to list files:")
lbl.grid(row=r, **cpadw)
r += 1
self.lbl_path = ttk.Label(devel)
self.lbl_path["text"] = self.watchpath
self.lbl_path.grid(row=r, column=0, columnspan=2, **cpadw)
btn = ttk.Button(devel)
btn["command"] = self.btn_selectpath
btn["text"] = _("Select path")
btn.grid(row=r, column=1, **cpadw)
r += 1
self.lbl_path = ttk.Label(devel)
self.lbl_path["width"] = 50
self.lbl_path.grid(row=r, column=0, columnspan=2, **cpadw)
# Listbox
r += 1
trv = ttk.Frame(devel)
@@ -164,27 +152,11 @@ class RevPiDevelop(ttk.Frame):
btnlist.columnconfigure(1, weight=1)
btnlist.grid(row=r, columnspan=2, sticky="we")
btn = ttk.Button(btnlist)
btn["command"] = lambda: self.xmlcli.plcstop()
btn["text"] = _("Just stop PLC")
btn.grid(row=0, column=0, **cpadwe)
self.btn_jobs = ttk.Button(btnlist)
self.btn_jobs["command"] = self.btn_domyjob
self.btn_jobs["text"] = _("Stop / Upload / Start")
self.btn_jobs.grid(row=0, column=1, **cpadwe)
btn = ttk.Button(btnlist)
btn["command"] = lambda: self.xmlcli.plcstart()
btn["text"] = _("Just start PLC")
btn.grid(row=0, column=2, **cpadwe)
# Beendenbutton
btn = ttk.Button(self)
btn["command"] = self._checkclose
btn["text"] = _("Exit")
btn.grid(**cpad)
def btn_domyjob(self):
u"""Hochladen und neu starten."""

View File

@@ -48,12 +48,12 @@ class RevPiPyControl(tkinter.Frame):
self.xmlfuncs = []
self.xmlmode = 0
# Debugger vorbereiten
# Frames vorbereiten
self.debugframe = None
self.developframe = None
# Globale Fenster
self.tkcheckclient = None
self.tkdevelop = None
self.tklogs = None
self.tkoptions = None
self.tkprogram = None
@@ -77,8 +77,10 @@ class RevPiPyControl(tkinter.Frame):
u"""Schließt alle Fenster."""
if self.tkcheckclient is not None:
self.tkcheckclient.destroy()
if self.tkdevelop is not None:
self.tkdevelop.destroy()
if self.developframe is not None:
self.developframe._checkclose()
self.developframe.destroy()
self.developframe = None
if self.tklogs is not None:
self.tklogs.master.destroy()
if self.tkoptions is not None:
@@ -129,38 +131,43 @@ class RevPiPyControl(tkinter.Frame):
menu1.add_command(label=_("Info..."), command=self.infowindow)
self.mbar.add_cascade(label=_("Help"), menu=menu1)
self.var_conn = tkinter.StringVar(self)
self.txt_connect = tkinter.Entry(self, state="readonly", width=40)
self.main_frame = tkinter.Frame(self)
self.main_frame.pack(side="left", fill="y")
self.var_conn = tkinter.StringVar(self.main_frame)
self.txt_connect = tkinter.Entry(
self.main_frame, state="readonly", width=40
)
self.txt_connect["textvariable"] = self.var_conn
self.txt_connect.pack(fill="x")
self.btn_plcstart = tkinter.Button(self)
self.btn_plcstart = tkinter.Button(self.main_frame)
self.btn_plcstart["text"] = _("PLC start")
self.btn_plcstart["command"] = self.plcstart
self.btn_plcstart.pack(fill="x")
self.btn_plcstop = tkinter.Button(self)
self.btn_plcstop = tkinter.Button(self.main_frame)
self.btn_plcstop["text"] = _("PLC stop")
self.btn_plcstop["command"] = self.plcstop
self.btn_plcstop.pack(fill="x")
self.btn_plcrestart = tkinter.Button(self)
self.btn_plcrestart = tkinter.Button(self.main_frame)
self.btn_plcrestart["text"] = _("PLC restart")
self.btn_plcrestart["command"] = self.plcrestart
self.btn_plcrestart.pack(fill="x")
self.btn_plclogs = tkinter.Button(self)
self.btn_plclogs = tkinter.Button(self.main_frame)
self.btn_plclogs["text"] = _("PLC logs")
self.btn_plclogs["command"] = self.plclogs
self.btn_plclogs.pack(fill="x")
self.var_status = tkinter.StringVar(self)
self.txt_status = tkinter.Entry(self)
self.var_status = tkinter.StringVar(self.main_frame)
self.txt_status = tkinter.Entry(self.main_frame)
self.txt_status["state"] = "readonly"
self.txt_status["textvariable"] = self.var_status
self.txt_status.pack(fill="x")
self.btn_debug = tkinter.Button(self)
self.btn_debug = tkinter.Button(self.main_frame)
self.btn_debug["text"] = _("PLC watch mode")
self.btn_debug["command"] = self.plcdebug
self.btn_debug.pack(fill="x")
@@ -200,7 +207,7 @@ class RevPiPyControl(tkinter.Frame):
@param text Verbindungsname
@param reconnect Socket Timeout nicht heruntersetzen"""
if reconnect:
socket.setdefaulttimeout(10)
socket.setdefaulttimeout(6)
else:
socket.setdefaulttimeout(2)
@@ -218,7 +225,7 @@ class RevPiPyControl(tkinter.Frame):
self.servererror()
else:
self._closeall()
socket.setdefaulttimeout(10)
socket.setdefaulttimeout(6)
self.cli = ServerProxy(
"http://{}:{}".format(
self.dict_conn[text][0], int(self.dict_conn[text][1])
@@ -255,14 +262,16 @@ class RevPiPyControl(tkinter.Frame):
"").format(self.cli.version()),
parent=self.master
)
else:
# Debugfenster laden
return
# Debugframe laden
# FIXME: Bei neuer piCtory Konfig schneller vernichten
if self.debugframe is None \
or self.debugframe.err_workvalues >= \
self.debugframe.max_errors:
try:
self.debugframe = revpicheckclient.RevPiCheckClient(
self, self.cli, self.xmlmode
self.main_frame, self.cli, self.xmlmode
)
except:
tkmsg.showwarning(
@@ -297,17 +306,19 @@ class RevPiPyControl(tkinter.Frame):
"configuration is too small to access this dialog!"),
parent=self.master
)
else:
# Logfenster schließen
if self.tklogs is not None:
self.tklogs.master.destroy()
return
win = tkinter.Toplevel(self)
win.focus_set()
win.grab_set()
self.tkdevelop = revpidevelop.RevPiDevelop(
win, self.cli, self.xmlmode, self.revpiname)
self.wait_window(win)
# Developframe laden
if self.developframe is None:
self.developframe = revpidevelop.RevPiDevelop(
self, self.cli, self.xmlmode, self.revpiname
)
if self.developframe.winfo_viewable():
self.developframe._checkclose()
self.developframe.pack_forget()
else:
self.developframe.pack(side="right") # fill="x")
def plclist(self):
u"""Öffnet das Fenster für die Verbindungen."""