in msg_window two further parameters to be added to the pass, so height and wide can also be specified.

In rename, messages come now if new names do not fit
Fix Index Error on msg_window()
This commit is contained in:
Désiré Werner Menrath 2024-09-23 21:09:41 +02:00
parent 428854f25a
commit 8cd5fc28e4
3 changed files with 124 additions and 46 deletions

View File

@ -4,8 +4,9 @@
<option name="autoReloadType" value="SELECTIVE" /> <option name="autoReloadType" value="SELECTIVE" />
</component> </component>
<component name="ChangeListManager"> <component name="ChangeListManager">
<list default="true" id="940e1630-c825-4d4c-be80-bc11f543c122" name="Changes" comment="Descriptions added in wg_func-py"> <list default="true" id="940e1630-c825-4d4c-be80-bc11f543c122" name="Changes" comment="fix scrollbar view with set self.y_height = 330 to self.y_height = 340">
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" /> <change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/wg_func.py" beforeDir="false" afterPath="$PROJECT_DIR$/wg_func.py" afterDir="false" />
<change beforePath="$PROJECT_DIR$/wg_main.py" beforeDir="false" afterPath="$PROJECT_DIR$/wg_main.py" afterDir="false" /> <change beforePath="$PROJECT_DIR$/wg_main.py" beforeDir="false" afterPath="$PROJECT_DIR$/wg_main.py" afterDir="false" />
</list> </list>
<option name="SHOW_DIALOG" value="false" /> <option name="SHOW_DIALOG" value="false" />
@ -509,7 +510,23 @@
<option name="project" value="LOCAL" /> <option name="project" value="LOCAL" />
<updated>1727018233930</updated> <updated>1727018233930</updated>
</task> </task>
<option name="localTasksCounter" value="48" /> <task id="LOCAL-00048" summary="If tunnel is renamed and this is in the car start,&#10;is now renamed the label">
<option name="closed" value="true" />
<created>1727028762875</created>
<option name="number" value="00048" />
<option name="presentableId" value="LOCAL-00048" />
<option name="project" value="LOCAL" />
<updated>1727028762875</updated>
</task>
<task id="LOCAL-00049" summary="fix scrollbar view with set self.y_height = 330 to self.y_height = 340">
<option name="closed" value="true" />
<created>1727028915701</created>
<option name="number" value="00049" />
<option name="presentableId" value="LOCAL-00049" />
<option name="project" value="LOCAL" />
<updated>1727028915701</updated>
</task>
<option name="localTasksCounter" value="50" />
<servers /> <servers />
</component> </component>
<component name="UnknownFeatures"> <component name="UnknownFeatures">
@ -550,8 +567,6 @@
</component> </component>
<component name="VcsManagerConfiguration"> <component name="VcsManagerConfiguration">
<option name="ADD_EXTERNAL_FILES_SILENTLY" value="true" /> <option name="ADD_EXTERNAL_FILES_SILENTLY" value="true" />
<MESSAGE value="add class FileHandle,&#10;add Label to show autoconnect Tunnel&#10;disable checkbox when Listbox is empty or no select Tunnel" />
<MESSAGE value="add if question and add autoconnect, autoconnect_var to class Filehandle in box_set no finish!" />
<MESSAGE value="fixes on empty Listbox now is disable and now works autoconnect label with read and write, delete works now with read and write" /> <MESSAGE value="fixes on empty Listbox now is disable and now works autoconnect label with read and write, delete works now with read and write" />
<MESSAGE value="add Frame widget 3&#10;for Buttons and Listbox with Scrollbar.&#10;all Widgets new format&#10;delete works now of disable checkbox when Listbox empty (part two)" /> <MESSAGE value="add Frame widget 3&#10;for Buttons and Listbox with Scrollbar.&#10;all Widgets new format&#10;delete works now of disable checkbox when Listbox empty (part two)" />
<MESSAGE value="little fixes" /> <MESSAGE value="little fixes" />
@ -575,29 +590,31 @@
<MESSAGE value="add con_to_dict in import for write PreSharedKey in .key File to warning if tunnel has already been imported and delete that the key is deleted again" /> <MESSAGE value="add con_to_dict in import for write PreSharedKey in .key File to warning if tunnel has already been imported and delete that the key is deleted again" />
<MESSAGE value="add con_to_dict in import for write PreSharedKey in .key File to warning if tunnel has already been imported and delete that the key is deleted again&#10;now works" /> <MESSAGE value="add con_to_dict in import for write PreSharedKey in .key File to warning if tunnel has already been imported and delete that the key is deleted again&#10;now works" />
<MESSAGE value="Descriptions added in wg_func-py" /> <MESSAGE value="Descriptions added in wg_func-py" />
<option name="LAST_COMMIT_MESSAGE" value="Descriptions added in wg_func-py" /> <MESSAGE value="If tunnel is renamed and this is in the car start,&#10;is now renamed the label" />
<MESSAGE value="fix scrollbar view with set self.y_height = 330 to self.y_height = 340" />
<option name="LAST_COMMIT_MESSAGE" value="fix scrollbar view with set self.y_height = 330 to self.y_height = 340" />
</component> </component>
<component name="XDebuggerManager"> <component name="XDebuggerManager">
<breakpoint-manager> <breakpoint-manager>
<breakpoints> <breakpoints>
<line-breakpoint enabled="true" suspend="THREAD" type="python-line"> <line-breakpoint enabled="true" suspend="THREAD" type="python-line">
<url>file://$PROJECT_DIR$/wg_func.py</url> <url>file://$PROJECT_DIR$/wg_func.py</url>
<line>135</line> <line>137</line>
<option name="timeStamp" value="1" /> <option name="timeStamp" value="1" />
</line-breakpoint> </line-breakpoint>
<line-breakpoint enabled="true" suspend="THREAD" type="python-line"> <line-breakpoint enabled="true" suspend="THREAD" type="python-line">
<url>file://$PROJECT_DIR$/wg_func.py</url> <url>file://$PROJECT_DIR$/wg_func.py</url>
<line>194</line> <line>196</line>
<option name="timeStamp" value="2" /> <option name="timeStamp" value="2" />
</line-breakpoint> </line-breakpoint>
<line-breakpoint enabled="true" suspend="THREAD" type="python-line"> <line-breakpoint enabled="true" suspend="THREAD" type="python-line">
<url>file://$PROJECT_DIR$/wg_func.py</url> <url>file://$PROJECT_DIR$/wg_func.py</url>
<line>72</line> <line>74</line>
<option name="timeStamp" value="3" /> <option name="timeStamp" value="3" />
</line-breakpoint> </line-breakpoint>
<line-breakpoint enabled="true" suspend="THREAD" type="python-line"> <line-breakpoint enabled="true" suspend="THREAD" type="python-line">
<url>file://$PROJECT_DIR$/wg_func.py</url> <url>file://$PROJECT_DIR$/wg_func.py</url>
<line>343</line> <line>348</line>
<option name="timeStamp" value="4" /> <option name="timeStamp" value="4" />
</line-breakpoint> </line-breakpoint>
</breakpoints> </breakpoints>

View File

@ -14,7 +14,7 @@ path_to_file = Path('/etc/wire_py/wg_py')
_u = Path.read_text(Path('/tmp/_u')) _u = Path.read_text(Path('/tmp/_u'))
def msg_window(img_w, img_i, w_title, w_txt): def msg_window(img_w, img_i, w_title, w_txt, x, y):
""" """
Function for different message windows for the user. with 4 arguments to be passed. Function for different message windows for the user. with 4 arguments to be passed.
To create messages with your own images, icons, and titles. As an alternative to Python Messagebox. To create messages with your own images, icons, and titles. As an alternative to Python Messagebox.
@ -23,11 +23,13 @@ def msg_window(img_w, img_i, w_title, w_txt):
img_i = Image for Icon img_i = Image for Icon
w_title = Windows Title w_title = Windows Title
w_txt = Text for Tk Window w_txt = Text for Tk Window
x = Window width
y = Window height
""" """
msg = tk.Toplevel() msg = tk.Toplevel()
msg.resizable(width=False, height=False) msg.resizable(width=False, height=False)
msg.x_width = 340 msg.x_width = x
msg.y_height = 140 msg.y_height = y
msg.title(w_title) msg.title(w_title)
msg.monitor_center_x = msg.winfo_screenwidth() / 2 - (msg.x_width / 2) msg.monitor_center_x = msg.winfo_screenwidth() / 2 - (msg.x_width / 2)
msg.monitor_center_y = msg.winfo_screenheight() / 2 - (msg.y_height / 2) msg.monitor_center_y = msg.winfo_screenheight() / 2 - (msg.y_height / 2)
@ -242,14 +244,15 @@ class ImportTunnel:
if len(pre_key) != 0: if len(pre_key) != 0:
with open('/etc/wire_py/.keys', 'r') as readfile: with open('/etc/wire_py/.keys', 'r') as readfile:
p_key = readfile.readlines() p_key = readfile.readlines()
print(p_key)
if pre_key in p_key or pre_key + '\n' in p_key: if pre_key in p_key or pre_key + '\n' in p_key:
"""img_w, img_i, w_title, w_txt hand over""" """img_w, img_i, w_title, w_txt hand over"""
iw = r'/usr/share/icons/wp-icons/64/error.png' iw = r'/usr/share/icons/wp-icons/64/error.png'
ii = r'/usr/share/icons/wp-icons/48/wg_msg.png' ii = r'/usr/share/icons/wp-icons/48/wg_msg.png'
wt = 'Import Error' 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'
msg_window(iw, ii, wt, msg_t) x = 340 # width
y = 140 # height
msg_window(iw, ii, wt, msg_t, x, y)
else: else:
with open('/etc/wire_py/.keys', 'a') as keyfile: with open('/etc/wire_py/.keys', 'a') as keyfile:
keyfile.write(pre_key + '\r') keyfile.write(pre_key + '\r')
@ -292,12 +295,14 @@ class ImportTunnel:
os.chmod(str(wg_read), 0o600) os.chmod(str(wg_read), 0o600)
if 'PrivateKey = ' not in read: if 'PrivateKey = ' not in read:
"""img_w, img_i, w_title, w_txt hand over""" """img_w, img_i, w_title, w_txt x, y hand over"""
iw = r'/usr/share/icons/wp-icons/64/error.png' iw = r'/usr/share/icons/wp-icons/64/error.png'
ii = r'/usr/share/icons/wp-icons/48/wg_msg.png' ii = r'/usr/share/icons/wp-icons/48/wg_msg.png'
wt = 'Import Error' 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'
msg_window(iw, ii, wt, msg_t) x = 340 # width
y = 140 # height
msg_window(iw, ii, wt, msg_t, x, y)
except EOFError: except EOFError:
pass pass
except TypeError: except TypeError:
@ -398,14 +403,18 @@ class ExportTunnels:
ii = r'/usr/share/icons/wp-icons/48/wg_vpn.png' ii = r'/usr/share/icons/wp-icons/48/wg_vpn.png'
wt = 'Import Error' wt = 'Import Error'
msg_t = 'Your zip file is in home directory' msg_t = 'Your zip file is in home directory'
msg_window(iw, ii, wt, msg_t) x = 340 # width
y = 140 # height
msg_window(iw, ii, wt, msg_t, x, y)
else: else:
"""img_w, img_i, w_title, w_txt hand over""" """img_w, img_i, w_title, w_txt hand over"""
iw = r'/usr/share/icons/wp-icons/64/error.png' iw = r'/usr/share/icons/wp-icons/64/error.png'
ii = r'/usr/share/icons/wp-icons/48/wg_msg.png' ii = r'/usr/share/icons/wp-icons/48/wg_msg.png'
wt = 'Export error' wt = 'Export error'
msg_t = 'Export failed! Please try again' msg_t = 'Export failed! Please try again'
msg_window(iw, ii, wt, msg_t) x = 340 # width
y = 140 # height
msg_window(iw, ii, wt, msg_t, x, y)
except TypeError: except TypeError:
pass pass

View File

@ -7,7 +7,7 @@ from pathlib import Path
from tkinter import ttk from tkinter import ttk
from wg_func import (TunnelActiv, ListTunnels, ImportTunnel, ConToDict, GreenLabel, StartStopBTN, ShowAddress, from wg_func import (TunnelActiv, ListTunnels, ImportTunnel, ConToDict, GreenLabel, StartStopBTN, ShowAddress,
FileHandle, ExportTunnels, OnOff) FileHandle, ExportTunnels, OnOff, msg_window)
font_color = '#4011a7' font_color = '#4011a7'
@ -191,7 +191,14 @@ class FrameWidgets(ttk.Frame):
self.enp.set('') self.enp.set('')
return select_tl return select_tl
except IndexError: except IndexError:
pass """img_w, img_i, w_title, w_txt x, y hand over"""
iw = r'/usr/share/icons/wp-icons/64/info.png'
ii = r'/usr/share/icons/wp-icons/48/wg_msg.png'
wt = 'Renaming not possible'
msg_t = 'Please select a tunnel from the list.'
x = 340 # width
y = 140 # height
msg_window(iw, ii, wt, msg_t, x, y)
# Button Trash # Button Trash
self.btn_tr = tk.Button(self.lb_frame_btn_lbox, image=self.tr_pic, bd=0, command=delete) self.btn_tr = tk.Button(self.lb_frame_btn_lbox, image=self.tr_pic, bd=0, command=delete)
@ -208,31 +215,69 @@ class FrameWidgets(ttk.Frame):
self.lb_rename.config(state='disable') self.lb_rename.config(state='disable')
def tl_rename(): def tl_rename():
try:
self.select_tunnel = self.l_box.curselection() if len(self.lb_rename.get()) > 12:
select_tl = self.l_box.get(self.select_tunnel[0]) """img_w, img_i, w_title, w_txt hand over"""
# nmcli connection modify old connection.id iphone iw = r'/usr/share/icons/wp-icons/64/info.png'
check_call(['nmcli', 'connection', 'modify', select_tl, 'connection.id', self.lb_rename.get()]) ii = r'/usr/share/icons/wp-icons/48/wg_msg.png'
source = Path('/etc/wire_py') / str(select_tl + '.conf') wt = 'Renaming not possible'
destination = source.with_name(str(self.lb_rename.get() + '.conf')) msg_t = 'The new name may contain only 12 characters.'
source.replace(destination) x = 420 # width
self.l_box.delete(self.select_tunnel[0]) y = 140 # height
self.l_box.insert("end", self.lb_rename.get()) msg_window(iw, ii, wt, msg_t, x, y)
self.l_box.update()
new_a_connect = self.lb_rename.get() elif len(self.lb_rename.get()) == 0:
self.lb_rename.delete(0, tk.END) """img_w, img_i, w_title, w_txt x, y hand over"""
if self.a != '' and self.a == select_tl: iw = r'/usr/share/icons/wp-icons/64/info.png'
self.a = TunnelActiv.active() ii = r'/usr/share/icons/wp-icons/48/wg_msg.png'
self.StrVar.set(value=self.a) wt = 'Renaming not possible'
if Path.is_file(Path('/etc/wire_py/wg_py')): msg_t = 'At least one character must be entered.'
path_to_file = Path('/etc/wire_py') / 'wg_py' x = 380 # width
a_con = Path.read_text(path_to_file) y = 140 # height
if select_tl == a_con: msg_window(iw, ii, wt, msg_t, x, y)
self.autoconnect_var.set(value=new_a_connect)
Path.write_text(path_to_file, new_a_connect) elif ' ' in self.lb_rename.get():
return select_tl """img_w, img_i, w_title, w_txt x, y hand over"""
except IndexError: iw = r'/usr/share/icons/wp-icons/64/info.png'
pass ii = r'/usr/share/icons/wp-icons/48/wg_msg.png'
wt = 'Renaming not possible'
msg_t = 'Please do not use blanks.'
x = 280 # width
y = 140 # height
msg_window(iw, ii, wt, msg_t, x, y)
else:
try:
self.select_tunnel = self.l_box.curselection()
select_tl = self.l_box.get(self.select_tunnel[0])
# nmcli connection modify old connection.id iphone
check_call(['nmcli', 'connection', 'modify', select_tl, 'connection.id', self.lb_rename.get()])
source = Path('/etc/wire_py') / str(select_tl + '.conf')
destination = source.with_name(str(self.lb_rename.get() + '.conf'))
source.replace(destination)
self.l_box.delete(self.select_tunnel[0])
self.l_box.insert("end", self.lb_rename.get())
self.l_box.update()
new_a_connect = self.lb_rename.get()
self.lb_rename.delete(0, tk.END)
if self.a != '' and self.a == select_tl:
self.a = TunnelActiv.active()
self.StrVar.set(value=self.a)
if Path.is_file(Path('/etc/wire_py/wg_py')):
path_to_file = Path('/etc/wire_py') / 'wg_py'
a_con = Path.read_text(path_to_file)
if select_tl == a_con:
self.autoconnect_var.set(value=new_a_connect)
Path.write_text(path_to_file, new_a_connect)
return select_tl
except IndexError:
"""img_w, img_i, w_title, w_txt x, y hand over"""
iw = r'/usr/share/icons/wp-icons/64/info.png'
ii = r'/usr/share/icons/wp-icons/48/wg_msg.png'
wt = 'Renaming not possible'
msg_t = 'Please select a tunnel from the list.'
x = 340 # width
y = 140 # height
msg_window(iw, ii, wt, msg_t, x, y)
# Button Rename # Button Rename
self.btn_rename = ttk.Button(self, text='Rename', state='disable', command=tl_rename) self.btn_rename = ttk.Button(self, text='Rename', state='disable', command=tl_rename)
@ -292,7 +337,14 @@ class FrameWidgets(ttk.Frame):
self.enp.set('') self.enp.set('')
ShowAddress.show_data(self) ShowAddress.show_data(self)
except IndexError: except IndexError:
pass """img_w, img_i, w_title, w_txt x, y hand over"""
iw = r'/usr/share/icons/wp-icons/64/info.png'
ii = r'/usr/share/icons/wp-icons/48/wg_msg.png'
wt = 'Renaming not possible'
msg_t = 'Please select a tunnel from the list.'
x = 340 # width
y = 140 # height
msg_window(iw, ii, wt, msg_t, x, y)
if __name__ == '__main__': if __name__ == '__main__':