Message window optimized2

This commit is contained in:
Désiré Werner Menrath 2025-04-26 22:33:59 +02:00
parent 97ea07d34b
commit 4eb9d6acd4
4 changed files with 45 additions and 66 deletions

3
.idea/workspace.xml generated
View File

@ -5,10 +5,7 @@
</component> </component>
<component name="ChangeListManager"> <component name="ChangeListManager">
<list default="true" id="940e1630-c825-4d4c-be80-bc11f543c122" name="Changes" comment=" - Update Translate Files"> <list default="true" id="940e1630-c825-4d4c-be80-bc11f543c122" name="Changes" comment=" - Update Translate Files">
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/cls_mth_fc.py" beforeDir="false" afterPath="$PROJECT_DIR$/cls_mth_fc.py" afterDir="false" /> <change beforePath="$PROJECT_DIR$/cls_mth_fc.py" beforeDir="false" afterPath="$PROJECT_DIR$/cls_mth_fc.py" afterDir="false" />
<change beforePath="$PROJECT_DIR$/ssl_decrypt.py" beforeDir="false" afterPath="$PROJECT_DIR$/ssl_decrypt.py" afterDir="false" />
<change beforePath="$PROJECT_DIR$/ssl_encrypt.py" beforeDir="false" afterPath="$PROJECT_DIR$/ssl_encrypt.py" afterDir="false" />
<change beforePath="$PROJECT_DIR$/wirepy.py" beforeDir="false" afterPath="$PROJECT_DIR$/wirepy.py" afterDir="false" /> <change beforePath="$PROJECT_DIR$/wirepy.py" beforeDir="false" afterPath="$PROJECT_DIR$/wirepy.py" afterDir="false" />
</list> </list>
<option name="SHOW_DIALOG" value="false" /> <option name="SHOW_DIALOG" value="false" />

View File

@ -400,7 +400,7 @@ class Tunnel:
return wg_s return wg_s
@staticmethod @staticmethod
def export(img_w: str = None, img_i: str = None, img_w2: str = None, img_i2: str = None) -> None: def export(img_w: str = None, img_i: str = None, img_w2: str = None, img_i2: str = None, sl: str = None, pfit:str = None) -> None:
""" """
This will export the tunnels. This will export the tunnels.
A zipfile with the current date and time is created A zipfile with the current date and time is created
@ -425,21 +425,17 @@ class Tunnel:
with zipfile.ZipFile(f"{wg_tar}.zip", "r") as zf: with zipfile.ZipFile(f"{wg_tar}.zip", "r") as zf:
if len(zf.namelist()) != 0: if len(zf.namelist()) != 0:
wt: str = _("Export Successful")
msg_t: str = _("Your zip file is in home directory") msg_t: str = _("Your zip file is in home directory")
LxTools.msg_window(img_w, img_i, wt, msg_t) LxTools.msg_window(img_w, img_i, _("Export Successful"), msg_t)
else: else:
wt: str = _("Export error")
msg_t: str = _("Export failed! Please try again") msg_t: str = _("Export failed! Please try again")
LxTools.msg_window(img_w2, img_i2, wt, msg_t) LxTools.msg_window(img_w2, img_i2, _("Export error"), msg_t)
else: else:
wt: str = _("Select tunnel") LxTools.msg_window(img_w, img_i2, sl, pfit)
msg_t: str = _("Please first import tunnel")
LxTools.msg_window(img_w, img_i2, wt, msg_t)
except TypeError: except TypeError:
pass pass

View File

@ -25,18 +25,13 @@ tcl_path: Path = Path("/usr/share/TK-Themes")
set_file: Path = Path(Path.home() / ".config/wire_py/settings") set_file: Path = Path(Path.home() / ".config/wire_py/settings")
tips = LxTools.if_tip(set_file) tips = LxTools.if_tip(set_file)
folder_path: Path = Path("/tmp/tlecdcwg/") folder_path: Path = Path("/tmp/tlecdcwg/")
userfile = Path("/tmp/.log_user") user_file = Path("/tmp/.log_user")
# 1 = 1. Year, 09 = Month of the Year, 2924 = Day and Year of the Year # 1 = 1. Year, 09 = Month of the Year, 2924 = Day and Year of the Year
VERSION: str = "v. 2.04.1725" VERSION: str = "v. 2.04.1725"
res = GiteaUpdate.api_down("https://git.ilunix.de/api/v1/repos/punix/Wire-Py/releases", VERSION, set_file) res = GiteaUpdate.api_down("https://git.ilunix.de/api/v1/repos/punix/Wire-Py/releases", VERSION, set_file)
img_w: str = r"/usr/share/icons/lx-icons/64/info.png"
img_i: str = r"/usr/share/icons/lx-icons/48/wg_vpn.png"
img_w2: str = r"/usr/share/icons/lx-icons/64/error.png"
img_i2: str = r"/usr/share/icons/lx-icons/48/wg_msg.png"
# Translate # Translate
APP = "wirepy" APP = "wirepy"
LOCALE_DIR = "/usr/share/locale/" LOCALE_DIR = "/usr/share/locale/"
@ -45,12 +40,21 @@ gettext.bindtextdomain(APP, LOCALE_DIR)
gettext.textdomain(APP) gettext.textdomain(APP)
_ = gettext.gettext _ = gettext.gettext
LxTools.sigi(folder_path, userfile) img_w: str = r"/usr/share/icons/lx-icons/64/info.png"
img_i: str = r"/usr/share/icons/lx-icons/48/wg_vpn.png"
img_w2: str = r"/usr/share/icons/lx-icons/64/error.png"
img_i2: str = r"/usr/share/icons/lx-icons/48/wg_msg.png"
sl: str = _("Select tunnel")
rnp: str = _("Renaming not possible")
ie:str = _("Import Error")
pfit: str = _("Please first import tunnel")
pstl: str = _("Please select a tunnel from the list")
LxTools.sigi(folder_path, user_file)
class Wirepy(tk.Tk): class Wirepy(tk.Tk):
""" """
Class Wirepy this is Main Window of wirepy Class Wirepy this is the Main Window of wirepy
""" """
def __init__(self, *args, **kwargs): def __init__(self, *args, **kwargs):
@ -76,7 +80,7 @@ class Wirepy(tk.Tk):
else: else:
self.tk.call("set_theme", "dark") self.tk.call("set_theme", "dark")
# Load the image file from disk # Load the image file from the disk
self.wg_icon = tk.PhotoImage(file=r"/usr/share/icons/lx-icons/48/wg_vpn.png") self.wg_icon = tk.PhotoImage(file=r"/usr/share/icons/lx-icons/48/wg_vpn.png")
# Set it as the window icon # Set it as the window icon
@ -126,7 +130,7 @@ class FrameWidgets(ttk.Frame):
def theme_change_light(): def theme_change_light():
""" """
Set light theme Set a light theme
""" """
if self.tk.call("ttk::style", "theme", "use") == "water-dark": if self.tk.call("ttk::style", "theme", "use") == "water-dark":
self.tk.call("set_theme", "light") self.tk.call("set_theme", "light")
@ -139,7 +143,7 @@ class FrameWidgets(ttk.Frame):
def theme_change_dark(): def theme_change_dark():
""" """
Set dark theme Set a dark theme
""" """
if not self.tk.call("ttk::style", "theme", "use") == "water-dark": if not self.tk.call("ttk::style", "theme", "use") == "water-dark":
self.tk.call("set_theme", "dark") self.tk.call("set_theme", "dark")
@ -152,7 +156,7 @@ class FrameWidgets(ttk.Frame):
def tooltip(): def tooltip():
""" """
Set True or False in file Set True or False in a file
""" """
if set_tip.get(): if set_tip.get():
with open(set_file, "r", encoding="utf-8") as set_f2: with open(set_file, "r", encoding="utf-8") as set_f2:
@ -172,15 +176,12 @@ class FrameWidgets(ttk.Frame):
def link_btn(): def link_btn():
webbrowser.open("https://git.ilunix.de/punix/Wire-Py") webbrowser.open("https://git.ilunix.de/punix/Wire-Py")
wt = _("Info")
msg_t = _("Wire-Py a simple Wireguard Gui for Linux systems.\n\n" msg_t = _("Wire-Py a simple Wireguard Gui for Linux systems.\n\n"
"Wire-Py is open source software written in Python.\n\n" "Wire-Py is open source software written in Python.\n\n"
"Email: polunga40@unity-mail.de also likes for donation.\n\n" "Email: polunga40@unity-mail.de also likes for donation.\n\n"
"Use without warranty!\n") "Use without warranty!\n")
txt2 = _("Go to Wire-Py git")
com = link_btn
LxTools.msg_window(img_i, img_i, wt, msg_t, txt2, com) LxTools.msg_window(img_i, img_i, _("Info"), msg_t, _("Go to Wire-Py git"), link_btn)
# Frame for Menu # Frame for Menu
self.menu_frame = ttk.Frame(self) self.menu_frame = ttk.Frame(self)
@ -219,7 +220,7 @@ class FrameWidgets(ttk.Frame):
self.updates_lb = ttk.Label(self.menu_frame) self.updates_lb = ttk.Label(self.menu_frame)
self.updates_lb.grid(column=4, columnspan=3, row=0, padx=10) self.updates_lb.grid(column=4, columnspan=3, row=0, padx=10)
# View Checkbox for enable or disable Tooltip # View Checkbox to enable or disable Tooltip
if tips: if tips:
set_tip.set(value=False) set_tip.set(value=False)
else: else:
@ -254,7 +255,8 @@ class FrameWidgets(ttk.Frame):
self.update_btn.configure(menu=self.download, style="Toolbutton") self.update_btn.configure(menu=self.download, style="Toolbutton")
self.download.add_command( self.download.add_command(
label=_("Download"), label=_("Download"),
command=lambda: GiteaUpdate.download(f"https://git.ilunix.de/punix/Wire-Py/archive/{res}.zip", res, img_w, img_i, img_w2, img_i2)) command=lambda: GiteaUpdate.download(f"https://git.ilunix.de/punix/Wire-Py/archive/{res}.zip",
res, img_w, img_i, img_w2, img_i2))
# Show active Tunnel # Show active Tunnel
self.a = Tunnel.active() self.a = Tunnel.active()
@ -394,7 +396,7 @@ class FrameWidgets(ttk.Frame):
file_one.replace(file_two) file_one.replace(file_two)
self.wg_autostart.configure(state="disabled") self.wg_autostart.configure(state="disabled")
# for disable checkbox when Listbox empty # for disabling checkbox when Listbox empty
if self.l_box.size() == 0: if self.l_box.size() == 0:
self.wg_autostart.configure(state="disabled") self.wg_autostart.configure(state="disabled")
self.lb_rename.configure(state="disabled") self.lb_rename.configure(state="disabled")
@ -420,15 +422,11 @@ class FrameWidgets(ttk.Frame):
if self.l_box.size() != 0: if self.l_box.size() != 0:
wt = _("Select tunnel") LxTools.msg_window(img_w, img_i2, sl, pstl)
msg_t = _("Please select a tunnel from the list")
LxTools.msg_window(img_w, img_i2, wt, msg_t)
else: else:
wt = _("Select tunnel") LxTools.msg_window(img_w, img_i2, sl, pfit)
msg_t = _("Please first import tunnel")
LxTools.msg_window(img_w, img_i2, wt, msg_t)
# Button Trash # Button Trash
self.btn_tr = ttk.Button(self.lb_frame_btn_lbox, image=self.tr_pic, command=delete, padding=0, self.btn_tr = ttk.Button(self.lb_frame_btn_lbox, image=self.tr_pic, command=delete, padding=0,
@ -441,7 +439,8 @@ class FrameWidgets(ttk.Frame):
Tooltip(self.btn_tr, _("Click to delete a Wireguard Tunnel\nSelect from the list!"), tips) Tooltip(self.btn_tr, _("Click to delete a Wireguard Tunnel\nSelect from the list!"), tips)
# Button Export # Button Export
self.btn_exp = ttk.Button(self.lb_frame_btn_lbox, image=self.exp_pic, command=lambda: Tunnel.export(img_w, img_i, img_w2, img_i2), padding=0) self.btn_exp = ttk.Button(self.lb_frame_btn_lbox, image=self.exp_pic,
command=lambda: Tunnel.export(img_w, img_i, img_w2, img_i2, sl, pfit), padding=0)
self.btn_exp.grid(column=0, row=3, padx=15, pady=8) self.btn_exp.grid(column=0, row=3, padx=15, pady=8)
if self.l_box.size() == 0: if self.l_box.size() == 0:
@ -466,21 +465,16 @@ class FrameWidgets(ttk.Frame):
if len(self.lb_rename.get()) > 12: if len(self.lb_rename.get()) > 12:
wt = _("Renaming not possible") LxTools.msg_window(img_w, img_i2, rnp, _("The new name may contain only 12 characters"))
msg_t = _("The new name may contain only 12 characters")
LxTools.msg_window(img_w, img_i2, wt, msg_t)
elif len(self.lb_rename.get()) == 0: elif len(self.lb_rename.get()) == 0:
wt = _("Renaming not possible") LxTools.msg_window(img_w, img_i2, rnp, _("At least one character must be entered"))
msg_t = _("At least one character must be entered")
LxTools.msg_window(img_w, img_i2, wt, msg_t)
elif any(ch in special_characters for ch in self.lb_rename.get()): elif any(ch in special_characters for ch in self.lb_rename.get()):
wt = _("Renaming not possible")
msg_t = _("No valid sign. These must not be used.\nBlank, Slash, Backslash and { }\n") msg_t = _("No valid sign. These must not be used.\nBlank, Slash, Backslash and { }\n")
LxTools.msg_window(img_w, img_i2, wt, msg_t) LxTools.msg_window(img_w, img_i2, rnp, msg_t)
else: else:
@ -515,9 +509,7 @@ class FrameWidgets(ttk.Frame):
except IndexError: except IndexError:
wt = _("Renaming not possible") LxTools.msg_window(img_w, img_i2, rnp, pstl)
msg_t = _("Please select a tunnel from the list")
LxTools.msg_window(img_w, img_i2, wt, msg_t)
# Button Rename # Button Rename
self.btn_rename = ttk.Button(self.lb_frame4, text=_("Rename"), state="disable", command=tl_rename, padding=4, self.btn_rename = ttk.Button(self.lb_frame4, text=_("Rename"), state="disable", command=tl_rename, padding=4,
@ -553,12 +545,12 @@ class FrameWidgets(ttk.Frame):
""" """
Import Methode for Wireguard config Files. Import Methode for Wireguard config Files.
Before importing, it is checked whether PrivateKey and PublicKey are in the file. Before importing, it is checked whether PrivateKey and PublicKey are in the file.
If True then it is checked whether the PreSharedKey is already in the key file If True, then it is checked whether the PreSharedKey is already in the key file
to avoid an import error so that no double wgconf are imported. to avoid an import error so that no double wgconf are imported.
Thus, tunnels can be renamed without the problems arise. Thus, tunnels can be renamed without the problems arising.
If False then the key is written into the file. If False, then the key is written into the file.
Furthermore, it is checked whether the name is longer than 12 characters. Furthermore, it is checked whether the name is longer than 12 characters.
If True then the name is automatically shortened to 12 characters If True, then the name is automatically shortened to 12 characters
and then imported. and then imported.
If in each case false comes out, a corresponding window comes to If in each case false comes out, a corresponding window comes to
inform the user that something is wrong. inform the user that something is wrong.
@ -585,9 +577,8 @@ class FrameWidgets(ttk.Frame):
p_key = readfile.readlines() p_key = readfile.readlines()
if pre_key in p_key or f"{pre_key}\n" in p_key: if pre_key in p_key or f"{pre_key}\n" in p_key:
wt = _("Import Error")
msg_t = _("Tunnel already available!\nPlease use another file for import") msg_t = _("Tunnel already available!\nPlease use another file for import")
LxTools.msg_window(img_w2, img_i2, wt, msg_t) LxTools.msg_window(img_w2, img_i2, ie, msg_t)
else: else:
@ -658,9 +649,8 @@ class FrameWidgets(ttk.Frame):
pass pass
else: else:
wt = _("Import Error")
msg_t = _("Oh... no valid Wireguard File!\nPlease select a valid Wireguard File") msg_t = _("Oh... no valid Wireguard File!\nPlease select a valid Wireguard File")
LxTools.msg_window(img_w2, img_i2, wt, msg_t) LxTools.msg_window(img_w2, img_i2, ie, msg_t)
except EOFError as e: except EOFError as e:
print(e) print(e)
@ -707,7 +697,7 @@ class FrameWidgets(ttk.Frame):
def on_off(self): def on_off(self):
""" """
Here it is checked whether the path to the file is there if not it is created. Here it is checked whether the path to the file is there, if not, it is created.
Set (on), the selected tunnel is displayed in the label. Set (on), the selected tunnel is displayed in the label.
At (off) the label is first emptied then filled with No Autoconnect At (off) the label is first emptied then filled with No Autoconnect
""" """
@ -798,7 +788,7 @@ class FrameWidgets(ttk.Frame):
def color_label(self): def color_label(self):
""" """
View activ Tunnel in color green or yellow View activ Tunnel in the color green or yellow
""" """
with open(set_file, "r", encoding="utf-8") as read_file: with open(set_file, "r", encoding="utf-8") as read_file:
@ -861,15 +851,11 @@ class FrameWidgets(ttk.Frame):
if self.l_box.size() != 0: if self.l_box.size() != 0:
wt = _("Select tunnel") LxTools.msg_window(img_w, img_i2, sl, pstl)
msg_t = _("Please select a tunnel from the list")
LxTools.msg_window(img_w, img_i2, wt, msg_t)
else: else:
wt = _("Select tunnel") LxTools.msg_window(img_w, img_i2, sl, pfit)
msg_t = _("Please first import tunnel")
LxTools.msg_window(img_w, img_i2, wt, msg_t)
if __name__ == "__main__": if __name__ == "__main__":
@ -885,5 +871,5 @@ if __name__ == "__main__":
window.tk.call("set", "::tk::dialog::file::showHiddenVar", "0") window.tk.call("set", "::tk::dialog::file::showHiddenVar", "0")
window.mainloop() window.mainloop()
LxTools.clean_files(folder_path, userfile) LxTools.clean_files(folder_path, user_file)
sys.exit(0) sys.exit(0)