diff --git a/.idea/workspace.xml b/.idea/workspace.xml
index 0f8ea06..bc16aa9 100644
--- a/.idea/workspace.xml
+++ b/.idea/workspace.xml
@@ -4,15 +4,20 @@
-
-
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
+
@@ -30,7 +35,7 @@
@@ -51,27 +56,28 @@
- {
- "keyToString": {
- "ASKED_ADD_EXTERNAL_FILES": "true",
- "Python.INSTALL.executor": "Run",
- "Python.install.executor": "Run",
- "Python.main.executor": "Run",
- "Python.messagebox.executor": "Run",
- "Python.start_wg.executor": "Run",
- "Python.testtheme.executor": "Run",
- "Python.wg_func.executor": "Run",
- "Python.wg_main.executor": "Run",
- "RunOnceActivity.ShowReadmeOnStart": "true",
- "Shell Script.install.executor": "Run",
- "Shell Script.run_as.executor": "Run",
- "git-widget-placeholder": "main",
- "last_opened_file_path": "/home/punix/Pyapps/wire-py",
- "settings.editor.selected.configurable": "reference.settingsdialog.IDE.editor.colors"
+
+}]]>
+
@@ -135,7 +141,7 @@
-
+
@@ -148,30 +154,6 @@
1723279982210
-
-
- 1724576599289
-
-
-
- 1724576599289
-
-
-
- 1724593165879
-
-
-
- 1724593165879
-
-
-
- 1724610514657
-
-
-
- 1724610514658
-
1724778892233
@@ -540,18 +522,37 @@
1729938941027
-
+
+
+ 1731097309468
+
+
+
+ 1731097309468
+
+
+
+ 1731097969343
+
+
+
+ 1731097969344
+
+
+
+ 1731098372497
+
+
+
+ 1731098372497
+
+
-
-
@@ -606,7 +601,8 @@
-
+
+
diff --git a/Changelog b/Changelog
index 4b9b8b6..60c597a 100644
--- a/Changelog
+++ b/Changelog
@@ -3,50 +3,75 @@ My standard System: Linux Mint 22 Cinnamon
## [Unreleased]
- - os import in wg_func replaced by other methods
+ - os import in cls_mth_fc.py replaced by other methods
- If Wire-Py already runs, prevent further start
- for loops with lists replaced by List Comprehensions
- Update search after start of Wire-Py
+ ### Added
+10-11-2024
+
+ - Translate file de_De complete
+ - new FrameWidget for rename Entry and rename Button
+
+
+ ### Added
+09-11-2024
+
+ - Move Tips Method in separate class for Tooltips in another Apps
+ - Move Version Variable in main script
+ - Edit Class GiteaUpdate for requests in api_down and download
+ - Description on Class GiteaUpdate
+
+
### Added
08-11-2024
-- methods from class MainWindow move to class FrameWidgets for active color_label when theme change
-- optimize columnconfigure, rowconfigure in class MainWindow and FrameWidgets
-- add new Frame for Widgets on Bottom
-- optimize from tkinter * to from tkinter import filedialog, ttk, TclError
+ - Preparation for language translation part 1
+ - separate folder for general icons
+ - install edit for new dir lx-icons
+
+
+ ### Added
+08-11-2024
+
+ - methods from class MainWindow move to class FrameWidgets for active color_label when theme change
+ - optimize columnconfigure, rowconfigure in class MainWindow and FrameWidgets
+ - add new Frame for Widgets on Bottom
+ - optimize from tkinter * to from tkinter import filedialog, ttk, TclError
+
### Added
07-11-2024
-- remove classes and add methods to class FrameWidgets (removed self errors)
+ - remove classes and add methods to class FrameWidgets (removed self errors)
### Added
27-10-2024
-- Add Autoconnect settings to settings.conf
+ - Add Autoconnect settings to settings.conf
### Added
26-10-2024
-- Add run_as Bash script and open_gitea.py python script
-- Add Tooltip disable/enable
-- Rename settings to settings.conf for theme, updates and tooltip enable in one file
+ - Add run_as Bash script and open_gitea.py python script
+ - Add Tooltip disable/enable
+ - Rename settings to settings.conf for theme, updates and tooltip enable in one file
### Added
25-10-2024
-- Optimize Class and Tooltip
+ - Optimize Class and Tooltip
### Added
21-10-2024
-- Optimize Class. Move to wg_main Import Start/StopBTN and Tooltip
+ - Optimize Class. Move to wg_main Import Start/StopBTN and Tooltip
### Added
diff --git a/wg_func.py b/cls_mth_fc.py
similarity index 71%
rename from wg_func.py
rename to cls_mth_fc.py
index b435f82..eadc6d2 100755
--- a/wg_func.py
+++ b/cls_mth_fc.py
@@ -1,90 +1,97 @@
-""" Wireguard Classes and Method for Wire-Py """
+""" Classes Method and functions for lx apps """
+import gettext
+import locale
import os
import shutil
import subprocess
-import time
import tkinter as tk
import zipfile
from datetime import datetime
from pathlib import Path
-from subprocess import check_call
from tkinter import ttk
import requests
+APP = 'cls_mth_fc'
+LOCALE_DIR = "/usr/share/locale/"
+locale.bindtextdomain(APP, LOCALE_DIR)
+gettext.bindtextdomain(APP, LOCALE_DIR)
+gettext.textdomain(APP)
+_ = gettext.gettext
-''' 1 = 1. Year, 09 = Month of the Year, 2924 = Day and Year of the Year '''
-version = 'v. 1.11.0824'
-
-path_to_file2 = Path('/etc/wire_py/settings.conf')
+wg_set = Path('/etc/wire_py/settings.conf')
_u = Path.read_text(Path('/tmp/_u'))
-UPDATE_API_URL = 'https://git.ilunix.de/api/v1/repos/punix/Wire-Py/releases'
+class GiteaUpdate:
+ """
+ Calling api_down requests the URL and the version of the running script.
+ Example: version = 'v. 1.1.1.1' GiteaUpdate.api_down(http://example.de, version)
+
+ Calling download requests the download URL of the running script,
+ the taskbar image for the “Download OK” window, the taskbar image for the
+ “Download error” window and the variable res
+ """
-class WirePyUpdate:
@staticmethod
- def api_down():
+ def api_down(update_api_url, version):
try:
- response = requests.get(UPDATE_API_URL)
+ response = requests.get(update_api_url)
response_dict = response.json()
response_dict = response_dict[0]
- with open(path_to_file2, 'r') as set_file:
+ with open(wg_set, 'r') as set_file:
set_file = set_file.read()
if 'on\n' in set_file:
if version[3:] != response_dict['tag_name']:
return response_dict['tag_name']
else:
- return 'No Updates'
+ return _('No Updates')
else:
return 'False'
except requests.exceptions.ConnectionError:
return 'No Internet Connection!'
@staticmethod
- def download():
+ def download(urld, down_ok_image, down_not_ok_image, res):
try:
- url = f'https://git.ilunix.de/punix/Wire-Py/archive/{res}.zip'
- to_down = 'wget -qP ' + str(_u) + ' ' + url
+ to_down = 'wget -qP ' + str(_u) + ' ' + urld
result = subprocess.call(to_down, shell=True)
if result == 0:
shutil.chown(str(_u) + f'/{res}.zip', 1000, 1000)
"""img_w, img_i, w_title, w_txt hand over"""
- iw = r'/usr/share/icons/wp-icons/64/info.png'
- ii = r'/usr/share/icons/wp-icons/48/wg_vpn.png'
- wt = 'Download Successful'
- msg_t = 'Your zip file is in home directory'
+ iw = r'/usr/share/icons/lx-icons/64/info.png'
+ ii = down_ok_image
+ wt = _('Download Successful')
+ msg_t = _('Your zip file is in home directory')
msg_window(iw, ii, wt, msg_t)
else:
"""img_w, img_i, w_title, w_txt hand over"""
- iw = r'/usr/share/icons/wp-icons/64/error.png'
- ii = r'/usr/share/icons/wp-icons/48/wg_msg.png'
- wt = 'Download error'
- msg_t = 'Download failed! Please try again'
+ iw = r'/usr/share/icons/lx-icons/64/error.png'
+ ii = down_not_ok_image
+ wt = _('Download error')
+ msg_t = _('Download failed! Please try again')
msg_window(iw, ii, wt, msg_t)
except subprocess.CalledProcessError:
"""img_w, img_i, w_title, w_txt hand over"""
- iw = r'/usr/share/icons/wp-icons/64/error.png'
- ii = r'/usr/share/icons/wp-icons/48/wg_msg.png'
- wt = 'Download error'
- msg_t = 'Download failed! No internet connection!'
+ iw = r'/usr/share/icons/lx-icons/64/error.png'
+ ii = down_not_ok_image
+ wt = _('Download error')
+ msg_t = _('Download failed! No internet connection!')
msg_window(iw, ii, wt, msg_t)
-res = WirePyUpdate.api_down()
-
-
-
def msg_window(img_w, img_i, w_title, w_txt, txt2=None, com=None):
"""
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.
- Paths to images must be specified: r'/usr/share/icons/wp-icons/64/info.png'
+ Paths to images must be specified: r'/usr/share/icons/lx-icons/64/info.png'
img_w = Image for Tk Window
img_i = Image for Icon
w_title = Windows Title
w_txt = Text for Tk Window
+ txt2 = Text for Button two
+ com = function for Button command
"""
msg = tk.Toplevel()
@@ -98,7 +105,7 @@ def msg_window(img_w, img_i, w_title, w_txt, txt2=None, com=None):
label.grid(column=1, row=0)
- if txt2 != None and com != None:
+ if txt2 is not None and com is not None:
label.config(font=('Ubuntu', 11), padx=15, justify='left')
msg.i_window.grid(column=0, row=0, sticky='nw')
button2 = ttk.Button(msg, text=f'{txt2}', command=com, padding=4)
@@ -120,7 +127,6 @@ def msg_window(img_w, img_i, w_title, w_txt, txt2=None, com=None):
class Tunnel:
-
"""
Class of Methods for Wire-Py
"""
@@ -171,7 +177,6 @@ class Tunnel:
pre_key = final_dict['PreSharedKey']
return address, dns, endpoint, pre_key
-
"""
Shows the Active Tunnel
"""
@@ -199,7 +204,6 @@ class Tunnel:
tl = wg_s[::3]
return tl
-
"""
This will export the tunnels.
A zipfile with current date and time is created
@@ -228,40 +232,47 @@ class Tunnel:
if len(zf.namelist()) != 0:
"""img_w, img_i, w_title, w_txt hand over"""
- iw = r'/usr/share/icons/wp-icons/64/info.png'
+ iw = r'/usr/share/icons/lx-icons/64/info.png'
ii = r'/usr/share/icons/wp-icons/48/wg_vpn.png'
- wt = 'Export Successful'
- msg_t = 'Your zip file is in home directory'
+ wt = _('Export Successful')
+ msg_t = _('Your zip file is in home directory')
msg_window(iw, ii, wt, msg_t)
else:
"""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/lx-icons/64/error.png'
ii = r'/usr/share/icons/wp-icons/48/wg_msg.png'
- wt = 'Export error'
- msg_t = 'Export failed! Please try again'
+ wt = _('Export error')
+ msg_t = _('Export failed! Please try again')
msg_window(iw, ii, wt, msg_t)
else:
"""img_w, img_i, w_title, w_txt hand over"""
- iw = r'/usr/share/icons/wp-icons/64/info.png'
+ iw = r'/usr/share/icons/lx-icons/64/info.png'
ii = r'/usr/share/icons/wp-icons/48/wg_msg.png'
- wt = 'Select tunnel'
- msg_t = 'Please first import tunnel.'
+ wt = _('Select tunnel')
+ msg_t = _('Please first import tunnel')
msg_window(iw, ii, wt, msg_t)
except TypeError:
pass
- @staticmethod
- def if_tip():
- with open(path_to_file2, 'r') as set_file2:
- lines2 = set_file2.readlines()
- if 'False\n' in lines2:
- return False
- else:
- return True
-tips = Tunnel.if_tip()
\ No newline at end of file
+class Tipi:
+ """
+ Class for Tooltip setting write in File
+ Calling request path to file
+ """
+ @staticmethod
+ def if_tip(path):
+ with open(path, 'r') as set_file2:
+ lines2 = set_file2.readlines()
+ if 'False\n' in lines2:
+ return False
+ else:
+ return True
+
+
+wg_tips = Tipi.if_tip(wg_set)
diff --git a/install b/install
index e6af75c..9978256 100755
--- a/install
+++ b/install
@@ -7,10 +7,11 @@ BLUE='\033[30;1;34m'
install_file_with(){
clear
sudo apt install python3-tk && \
- sudo cp -u wg_main.py start_wg.py wg_func.py wirepy.py run_as open_gitea.py /usr/bin/ && \
+ sudo cp -u wg_main.py start_wg.py cls_mth_fc.py wirepy.py run_as open_gitea.py /usr/bin/ && \
sudo mkdir -p /etc/wire_py && sudo touch /etc/wire_py/.keys && sudo cp -u settings.conf /etc/wire_py/ && \
- sudo cp -uR wp-icons /usr/share/icons/ && sudo cp -uR TK-Themes /usr/share/ && \
+ sudo cp -uR wp-icons lx-icons /usr/share/icons/ && sudo cp -uR TK-Themes /usr/share/ && \
sudo chown -R root:root /etc/wire_py && sudo chmod 755 /etc/wire_py && \
+ sudo cp -u languages/de/*.mo /usr/share/locale/de/LC_MESSAGES/ && \
sudo ln -sf /usr/bin/wirepy.py /usr/local/bin/wirepy && \
sudo cp -u org.wirepy.policy /usr/share/polkit-1/actions/ && \
sudo cp -u Wire-Py.desktop /usr/share/applications/ && \
@@ -21,10 +22,11 @@ install_file_with(){
install_arch_d(){
clear
sudo pacman -S --noconfirm tk python3 python-requests && \
- sudo cp -u wg_main.py start_wg.py wg_func.py wirepy.py run_as open_gitea.py /usr/bin/ && \
+ sudo cp -u wg_main.py start_wg.py cls_mth_fc.py wirepy.py run_as open_gitea.py /usr/bin/ && \
sudo mkdir -p /etc/wire_py && sudo touch /etc/wire_py/.keys && sudo cp -u settings.conf /etc/wire_py/ && \
- sudo cp -uR wp-icons /usr/share/icons/ && sudo cp -uR TK-Themes /usr/share/ && \
+ sudo cp -uR wp-icons lx-icons /usr/share/icons/ && sudo cp -uR TK-Themes /usr/share/ && \
sudo chown -R root:root /etc/wire_py && sudo chmod 755 /etc/wire_py && \
+ sudo cp -u languages/de/*.mo /usr/share/locale/de/LC_MESSAGES/ && \
sudo ln -sf /usr/bin/wirepy.py /usr/local/bin/wirepy && \
sudo cp -u org.wirepy.policy /usr/share/polkit-1/actions/ && \
sudo cp -u Wire-Py.desktop /usr/share/applications/ && \
@@ -89,10 +91,11 @@ elif grep -i 'fedora' /etc/os-release > /dev/null 2>&1
if ! which python3-tkinter &> /dev/null
then sudo dnf install python3-tkinter -y
- sudo cp -u wg_main.py start_wg.py wg_func.py wirepy.py run_as open_gitea.py /usr/bin/ && \
+ sudo cp -u wg_main.py start_wg.py cls_mth_fc.py wirepy.py run_as open_gitea.py /usr/bin/ && \
sudo mkdir -p /etc/wire_py && sudo touch /etc/wire_py/.keys && \
sudo cp -u settings.conf /etc/wire_py/ && \
- sudo cp -uR wp-icons /usr/share/icons/ && sudo cp -uR TK-Themes /usr/share/ && \
+ sudo cp -u languages/de/*.mo /usr/share/locale/de/LC_MESSAGES/ && \
+ sudo cp -uR wp-icons lx-icons /usr/share/icons/ && sudo cp -uR TK-Themes /usr/share/ && \
sudo chown -R root:root /etc/wire_py && sudo chmod 755 /etc/wire_py && \
sudo ln -sf /usr/bin/wirepy.py /usr/local/bin/wirepy && \
sudo cp -u org.wirepy.policy /usr/share/polkit-1/actions/ && \
@@ -105,10 +108,11 @@ elif grep -i 'suse' /etc/os-release > /dev/null 2>&1
then
if ! which python311-tk &> /dev/null
then sudo zypper install python311-tk
- sudo cp -u wg_main.py start_wg.py wg_func.py wirepy.py run_as open_gitea.py /usr/bin/ && \
+ sudo cp -u wg_main.py start_wg.py cls_mth_fc.py wirepy.py run_as open_gitea.py /usr/bin/ && \
sudo mkdir -p /etc/wire_py && sudo touch /etc/wire_py/.keys && \
sudo cp -u settings.conf /etc/wire_py/ && \
- sudo cp -uR wp-icons /usr/share/icons/ && sudo cp -uR TK-Themes /usr/share/ && \
+ sudo cp -u languages/de/*.mo /usr/share/locale/de/LC_MESSAGES/ && \
+ sudo cp -uR wp-icons lx-icons /usr/share/icons/ && sudo cp -uR TK-Themes /usr/share/ && \
sudo chown -R root:root /etc/wire_py && sudo chmod 755 /etc/wire_py && \
sudo ln -sf /usr/bin/wirepy.py /usr/local/bin/wirepy && \
sudo cp -u org.wirepy.policy /usr/share/polkit-1/actions/ && \
diff --git a/languages/de/cls_mth_fc.mo b/languages/de/cls_mth_fc.mo
new file mode 100644
index 0000000..f64e39e
Binary files /dev/null and b/languages/de/cls_mth_fc.mo differ
diff --git a/languages/de/wirepy.mo b/languages/de/wirepy.mo
new file mode 100644
index 0000000..db911e3
Binary files /dev/null and b/languages/de/wirepy.mo differ
diff --git a/lx-icons/128/error.png b/lx-icons/128/error.png
new file mode 100644
index 0000000..ae580f8
Binary files /dev/null and b/lx-icons/128/error.png differ
diff --git a/lx-icons/128/info.png b/lx-icons/128/info.png
new file mode 100644
index 0000000..ccba611
Binary files /dev/null and b/lx-icons/128/info.png differ
diff --git a/lx-icons/256/error.png b/lx-icons/256/error.png
new file mode 100644
index 0000000..7734e3a
Binary files /dev/null and b/lx-icons/256/error.png differ
diff --git a/lx-icons/256/info.png b/lx-icons/256/info.png
new file mode 100644
index 0000000..8c1ca4f
Binary files /dev/null and b/lx-icons/256/info.png differ
diff --git a/lx-icons/32/error.png b/lx-icons/32/error.png
new file mode 100644
index 0000000..18e6c64
Binary files /dev/null and b/lx-icons/32/error.png differ
diff --git a/lx-icons/32/info.png b/lx-icons/32/info.png
new file mode 100644
index 0000000..f11ca97
Binary files /dev/null and b/lx-icons/32/info.png differ
diff --git a/lx-icons/48/error.png b/lx-icons/48/error.png
new file mode 100644
index 0000000..92a731a
Binary files /dev/null and b/lx-icons/48/error.png differ
diff --git a/lx-icons/48/info.png b/lx-icons/48/info.png
new file mode 100644
index 0000000..52206e6
Binary files /dev/null and b/lx-icons/48/info.png differ
diff --git a/lx-icons/64/error.png b/lx-icons/64/error.png
new file mode 100644
index 0000000..5ac3858
Binary files /dev/null and b/lx-icons/64/error.png differ
diff --git a/lx-icons/64/info.png b/lx-icons/64/info.png
new file mode 100644
index 0000000..4917814
Binary files /dev/null and b/lx-icons/64/info.png differ
diff --git a/wg_main.py b/wg_main.py
index e2cc83d..2e7f3de 100755
--- a/wg_main.py
+++ b/wg_main.py
@@ -1,4 +1,7 @@
#!/usr/bin/python3
+
+import gettext
+import locale
import os
import shutil
import subprocess
@@ -6,11 +9,23 @@ import tkinter as tk
from pathlib import Path
from subprocess import check_call
from tkinter import filedialog, ttk, TclError
-
-from wg_func import (Tunnel, msg_window, WirePyUpdate, res, _u, version, path_to_file2, tips)
+from cls_mth_fc import (Tunnel, msg_window, GiteaUpdate, _u, wg_tips, wg_set)
tcl_path = Path('/usr/share/TK-Themes')
+''' 1 = 1. Year, 09 = Month of the Year, 2924 = Day and Year of the Year '''
+version = 'v. 1.11.1024'
+
+res = GiteaUpdate.api_down('https://git.ilunix.de/api/v1/repos/punix/Wire-Py/releases', version)
+
+''' Translate '''
+APP = 'wirepy'
+LOCALE_DIR = "/usr/share/locale/"
+locale.bindtextdomain(APP, LOCALE_DIR)
+gettext.bindtextdomain(APP, LOCALE_DIR)
+gettext.textdomain(APP)
+_ = gettext.gettext
+
class MainWindow(tk.Tk):
@@ -22,7 +37,7 @@ class MainWindow(tk.Tk):
self.y_height = 383
self.monitor_center_x = self.winfo_screenwidth() / 2 - (self.x_width / 2)
self.monitor_center_y = self.winfo_screenheight() / 2 - (self.y_height / 2)
- self.resizable(width=True, height=True)
+ self.resizable(width=False, height=False)
self.title('Wire-Py')
self.geometry('%dx%d+%d+%d' % (self.x_width, self.y_height, self.monitor_center_x, self.monitor_center_y))
self.columnconfigure(0, weight=1)
@@ -31,7 +46,7 @@ class MainWindow(tk.Tk):
self.style = ttk.Style(self)
self.tk.call('source', str(tcl_path) + '/water.tcl')
''' self.tk.call('source', 'TK-Themes/water.tcl') '''
- with open(path_to_file2, 'r') as read_file:
+ with open(wg_set, 'r') as read_file:
lines = read_file.readlines()
if 'light\n' in lines:
self.tk.call('set_theme', 'light')
@@ -62,7 +77,7 @@ class FrameWidgets(ttk.Frame):
self.imp_pic = tk.PhotoImage(file=r'/usr/share/icons/wp-icons/48/wg_import.png')
self.tr_pic = tk.PhotoImage(file=r'/usr/share/icons/wp-icons/48/wg_trash.png')
self.exp_pic = tk.PhotoImage(file=r'/usr/share/icons/wp-icons/48/wg_export.png')
- self.warning_pic = tk.PhotoImage(file=r'/usr/share/icons/wp-icons/64/error.png')
+ self.warning_pic = tk.PhotoImage(file=r'/usr/share/icons/lx-icons/64/error.png')
self.wg_vpn_start = tk.PhotoImage(file=r'/usr/share/icons/wp-icons/48/wg_vpn-start.png')
self.wg_vpn_stop = tk.PhotoImage(file=r'/usr/share/icons/wp-icons/48/wg_vpn-stop.png')
@@ -70,34 +85,34 @@ class FrameWidgets(ttk.Frame):
def update():
if set_update.get() == 1:
- with open(path_to_file2, 'r') as set_file2:
+ with open(wg_set, 'r') as set_file2:
lines2 = set_file2.readlines()
lines2[1] = 'off\n'
- with open(path_to_file2, 'w') as set_file2:
+ with open(wg_set, 'w') as set_file2:
set_file2.writelines(lines2)
if set_update.get() == 0:
- with open(path_to_file2, 'r') as set_file2:
+ with open(wg_set, 'r') as set_file2:
lines2 = set_file2.readlines()
lines2[1] = 'on\n'
- with open(path_to_file2, 'w') as set_file2:
+ with open(wg_set, 'w') as set_file2:
set_file2.writelines(lines2)
''' Set True or False in file '''
def tooltip():
if set_tip.get():
- with open(path_to_file2, 'r') as set_file2:
+ with open(wg_set, 'r') as set_file2:
lines2 = set_file2.readlines()
lines2[5] = 'False\n'
- with open(path_to_file2, 'w') as set_file2:
+ with open(wg_set, 'w') as set_file2:
set_file2.writelines(lines2)
else:
- with open(path_to_file2, 'r') as set_file2:
+ with open(wg_set, 'r') as set_file2:
lines2 = set_file2.readlines()
lines2[5] = 'True\n'
- with open(path_to_file2, 'w') as set_file2:
+ with open(wg_set, 'w') as set_file2:
set_file2.writelines(lines2)
''' Set dark or light '''
@@ -106,10 +121,10 @@ class FrameWidgets(ttk.Frame):
if self.tk.call("ttk::style", "theme", "use") == "water-dark":
''' Set light theme '''
self.tk.call('set_theme', 'light')
- with open(path_to_file2, 'r') as theme_set2:
+ with open(wg_set, 'r') as theme_set2:
lines3 = theme_set2.readlines()
lines3[3] = 'light\n'
- with open(path_to_file2, 'w') as theme_set2:
+ with open(wg_set, 'w') as theme_set2:
theme_set2.writelines(lines3)
self.color_label()
@@ -117,10 +132,10 @@ class FrameWidgets(ttk.Frame):
if not self.tk.call("ttk::style", "theme", "use") == "water-dark":
''' Set dark theme '''
self.tk.call('set_theme', 'dark')
- with open(path_to_file2, 'r') as theme_set2:
+ with open(wg_set, 'r') as theme_set2:
lines4 = theme_set2.readlines()
lines4[3] = 'dark\n'
- with open(path_to_file2, 'w') as theme_set2:
+ with open(wg_set, 'w') as theme_set2:
theme_set2.writelines(lines4)
self.color_label()
@@ -133,12 +148,12 @@ class FrameWidgets(ttk.Frame):
"""img_w, img_i, w_title, w_txt , txt2, com hand over"""
iw = r'/usr/share/icons/wp-icons/48/wg_vpn.png'
ii = r'/usr/share/icons/wp-icons/48/wg_msg.png'
- wt = 'Info'
- msg_t = ('Wire-Py a simple Wireguard Gui for Linux systems.\n\n'
- 'Wire-Py is open source software written in Python.\n\n'
- 'Email: polunga40@unity-mail.de also likes for donation.\n\n'
- 'Use without warranty!\n')
- txt2 = 'Go to Wire-Py git'
+ wt = _('Info')
+ msg_t = (_('Wire-Py a simple Wireguard Gui for Linux systems.\n\n'
+ 'Wire-Py is open source software written in Python.\n\n'
+ 'Email: polunga40@unity-mail.de also likes for donation.\n\n'
+ 'Use without warranty!\n'))
+ txt2 = _('Go to Wire-Py git')
com = link_btn
msg_window(iw, ii, wt, msg_t, txt2, com)
@@ -162,12 +177,12 @@ class FrameWidgets(ttk.Frame):
''' Remove Tool-Tip '''
window.my_tool_tip.destroy()
- self.options_btn = ttk.Menubutton(self.menu_frame, text='Options')
- self.options_btn.grid(column=1, row=0)
+ self.options_btn = ttk.Menubutton(self.menu_frame, text=_('Options'))
+ self.options_btn.grid(column=1, columnspan=1, row=0)
def sets_enter(event):
""" The mouse moves into the entry widget """
- window.my_tool_tip = MyToolTip(event.x_root, event.y_root, 'Click for Settings')
+ window.my_tool_tip = MyToolTip(event.x_root, event.y_root, _('Click for Settings'))
def sets_leave(_):
""" The mouse moves from the entry widget """
@@ -183,21 +198,21 @@ class FrameWidgets(ttk.Frame):
set_tip = tk.BooleanVar()
self.settings = tk.Menu(self, relief='flat')
self.options_btn.configure(menu=self.settings, style='Toolbutton')
- self.settings.add_checkbutton(label='Disable Updates', command=update, variable=set_update)
- self.settings.add_checkbutton(label='Disable Tooltips', command=tooltip, variable=set_tip)
- self.settings.add_command(label='Light', command=theme_change_light)
- self.settings.add_command(label='Dark', command=theme_change_dark)
+ self.settings.add_checkbutton(label=_('Disable Updates'), command=update, variable=set_update)
+ self.settings.add_checkbutton(label=_('Disable Tooltips'), command=tooltip, variable=set_tip)
+ self.settings.add_command(label=_('Light'), command=theme_change_light)
+ self.settings.add_command(label=_('Dark'), command=theme_change_dark)
''' About BTN Menu / Label '''
- self.about_btn = ttk.Button(self.menu_frame, text='About', style='Toolbutton', command=info)
- self.about_btn.grid(column=2, row=0)
+ self.about_btn = ttk.Button(self.menu_frame, text=_('About'), style='Toolbutton', command=info)
+ self.about_btn.grid(column=2, columnspan=2, row=0)
self.readme = tk.Menu(self)
''' Update and Tooltip Label '''
self.updates_lb = ttk.Label(self.menu_frame)
- self.updates_lb.grid(column=3, row=0, padx=10)
+ self.updates_lb.grid(column=4, columnspan=3, row=0, padx=10)
'''View Checkbox for enable or disable Tooltip '''
- if tips:
+ if wg_tips:
set_tip.set(value=False)
else:
set_tip.set(value=True)
@@ -205,11 +220,11 @@ class FrameWidgets(ttk.Frame):
'''View Checkbox for enable or disable Updates '''
if res == 'False':
set_update.set(value=1)
- self.updates_lb.configure(text='Update search off')
+ self.updates_lb.configure(text=_('Update search off'))
def disable_enter(event):
""" The mouse moves into the entry widget """
- window.my_tool_tip = MyToolTip(event.x_root, event.y_root, 'Updates you have disabled')
+ window.my_tool_tip = MyToolTip(event.x_root, event.y_root, _('Updates you have disabled'))
def disable_leave(_):
""" The mouse moves from the entry widget """
@@ -219,14 +234,13 @@ class FrameWidgets(ttk.Frame):
self.updates_lb.bind('', disable_enter)
self.updates_lb.bind('', disable_leave)
elif res == 'No Internet Connection!':
- self.updates_lb.configure(text='No Server Connection!', foreground='red')
+ self.updates_lb.configure(text=_('No Server Connection!'), foreground='red')
elif res == 'No Updates':
- self.updates_lb.configure(text='No Updates')
+ self.updates_lb.configure(text=_('No Updates'))
def congratulations_enter(event):
""" The mouse moves into the entry widget """
- window.my_tool_tip = MyToolTip(event.x_root, event.y_root,
- 'Congratulations! Wire-Py is up to date')
+ window.my_tool_tip = MyToolTip(event.x_root, event.y_root, _('Congratulations! Wire-Py is up to date'))
def congratulations_leave(_):
""" The mouse moves from the entry widget """
@@ -237,15 +251,15 @@ class FrameWidgets(ttk.Frame):
self.updates_lb.bind('', congratulations_leave)
else:
set_update.set(value=0)
- text = f'Update {res} available!'
+ text = f'Update {res} ' + _('available!')
''' Update BTN Menu'''
self.update_btn = ttk.Menubutton(self.menu_frame, text=text)
- self.update_btn.grid(column=4, row=0, padx=0)
+ self.update_btn.grid(column=4, columnspan=3, row=0, padx=0)
def download_enter(event):
""" The mouse moves into the entry widget """
- window.my_tool_tip = MyToolTip(event.x_root, event.y_root, 'Click to download new version')
+ window.my_tool_tip = MyToolTip(event.x_root, event.y_root, _('Click to download new version'))
def download_leave(_):
""" The mouse moves from the entry widget """
@@ -258,7 +272,15 @@ class FrameWidgets(ttk.Frame):
self.download = tk.Menu(self, relief='flat')
self.update_btn.configure(menu=self.download, style='Toolbutton')
- self.download.add_command(label='Download', command=WirePyUpdate.download)
+ self.download.add_command(label=_('Download'),
+ command=lambda: GiteaUpdate.download(f'https://git.ilunix.de/punix'
+ f'/Wire-Py/archive/'
+ f'{res}.zip', r'/usr/'
+ r'share/icons/wp-icons'
+ r'/48/wg_vpn.png',
+ r'/usr/share/icons/wp-icons'
+ r'/48/wg_msg.png', res))
+
''' Show active Tunnel '''
self.a = Tunnel.active()
@@ -282,9 +304,14 @@ class FrameWidgets(ttk.Frame):
self.lb_frame3.configure(relief='flat')
self.lb_frame3.grid(column=0, row=5, columnspan=4, sticky='snew', padx=2, pady=2)
+ ''' Bottom Frame 5 '''
+ self.lb_frame4 = ttk.Frame(self)
+ self.lb_frame4.configure(relief='flat')
+ self.lb_frame4.grid(column=2, row=5, columnspan=3, sticky='e', padx=15)
+
''' Show active Label '''
self.select_tunnel = None
- self.lb = ttk.Label(self, text='Active: ')
+ self.lb = ttk.Label(self, text=_('Active: '))
self.lb.config(font=('Ubuntu', 11, 'bold'))
self.lb.grid(column=2, row=1, padx=15, pady=4, sticky='w')
@@ -293,12 +320,12 @@ class FrameWidgets(ttk.Frame):
self.color_label()
''' Interface Label '''
- self.interface = ttk.Label(self.lb_frame, text='Interface')
+ self.interface = ttk.Label(self.lb_frame, text=_('Interface'))
self.interface.grid(column=0, row=3, sticky='we', padx=120)
self.interface.config(font=('Ubuntu', 9))
''' Peer Label '''
- self.peer = ttk.Label(self.lb_frame2, text='Peer')
+ self.peer = ttk.Label(self.lb_frame2, text=_('Peer'))
self.peer.config(font=('Ubuntu', 9))
self.peer.grid(column=0, row=4, sticky='we', padx=130)
@@ -329,8 +356,7 @@ class FrameWidgets(ttk.Frame):
def list_empty_enter(event):
""" The mouse moves into the entry widget """
- window.my_tool_tip = MyToolTip(event.x_root, event.y_root,
- 'You must first import\na Wireguard tunnel')
+ window.my_tool_tip = MyToolTip(event.x_root, event.y_root, _('You must first import\na Wireguard tunnel'))
def list_empty_leave(_):
""" The mouse moves from the entry widget """
@@ -339,7 +365,7 @@ class FrameWidgets(ttk.Frame):
def list_not_empty_enter(event):
""" The mouse moves into the entry widget """
- window.my_tool_tip = MyToolTip(event.x_root, event.y_root, 'Select a Tunnel')
+ window.my_tool_tip = MyToolTip(event.x_root, event.y_root, _('Select a Tunnel'))
def list_not_empty_leave(_):
""" The mouse moves from the entry widget """
@@ -379,7 +405,7 @@ class FrameWidgets(ttk.Frame):
def imp_enter(event):
""" The mouse moves into the entry widget """
- window.my_tool_tip = MyToolTip(event.x_root, event.y_root, 'Click to import a Wireguard Tunnel')
+ window.my_tool_tip = MyToolTip(event.x_root, event.y_root, _('Click to import a Wireguard Tunnel'))
def imp_leave(_):
""" The mouse moves from the entry widget """
@@ -399,14 +425,14 @@ class FrameWidgets(ttk.Frame):
pre_key = key[3]
check_call(['nmcli', 'connection', 'delete', select_tl])
self.l_box.delete(self.select_tunnel[0])
- with open(path_to_file2, 'r') as set_file6:
+ with open(wg_set, 'r') as set_file6:
lines6 = set_file6.readlines()
if select_tl == lines6[7].strip() and 'off' not in lines6[7].strip():
lines6[7] = 'off'
- with open(path_to_file2, 'w') as set_file7:
+ with open(wg_set, 'w') as set_file7:
set_file7.writelines(lines6)
self.selected_option.set(0)
- self.autoconnect_var.set('no Autoconnect')
+ self.autoconnect_var.set(_('no Autoconnect'))
Path.unlink(Path('/etc/wire_py') / str(select_tl + '.conf'))
with open('/etc/wire_py/.keys', 'r') as readfile:
@@ -423,8 +449,7 @@ class FrameWidgets(ttk.Frame):
def empty_list_start_enter(event):
""" The mouse moves into the entry widget """
- window.my_tool_tip = MyToolTip(event.x_root, event.y_root,
- 'No tunnels to start in the list')
+ window.my_tool_tip = MyToolTip(event.x_root, event.y_root, _('No tunnels to start in the list'))
def empty_list_start_leave(_):
""" The mouse moves from the entry widget """
@@ -446,7 +471,7 @@ class FrameWidgets(ttk.Frame):
self.btn_stst.bind('', empty_list_start_leave)
self.lb_rename.bind('', rename_no_active_enter)
self.lb_rename.bind('', rename_no_active_leave)
- self.lb_rename.insert(0, 'Max. 12 characters!')
+ self.lb_rename.insert(0, _('Max. 12 characters!'))
if self.a != '' and self.a == select_tl:
self.StrVar.set(value='')
@@ -464,19 +489,19 @@ class FrameWidgets(ttk.Frame):
if self.l_box.size() != 0:
"""img_w, img_i, w_title, w_txt hand over"""
- iw = r'/usr/share/icons/wp-icons/64/info.png'
+ iw = r'/usr/share/icons/lx-icons/64/info.png'
ii = r'/usr/share/icons/wp-icons/48/wg_msg.png'
- wt = 'Select tunnel'
- msg_t = 'Please select a tunnel from the list.'
+ wt = _('Select tunnel')
+ msg_t = _('Please select a tunnel from the list')
msg_window(iw, ii, wt, msg_t)
else:
"""img_w, img_i, w_title, w_txt hand over"""
- iw = r'/usr/share/icons/wp-icons/64/info.png'
+ iw = r'/usr/share/icons/lx-icons/64/info.png'
ii = r'/usr/share/icons/wp-icons/48/wg_msg.png'
- wt = 'Select tunnel'
- msg_t = 'Please first import tunnel.'
+ wt = _('Select tunnel')
+ msg_t = _('Please first import tunnel')
msg_window(iw, ii, wt, msg_t)
''' Button Trash '''
@@ -486,7 +511,7 @@ class FrameWidgets(ttk.Frame):
def empty_list_enter(event):
""" The mouse moves into the entry widget """
- window.my_tool_tip = MyToolTip(event.x_root, event.y_root, 'No tunnels to delete in the list')
+ window.my_tool_tip = MyToolTip(event.x_root, event.y_root, _('No tunnels to delete in the list'))
def empty_list_leave(_):
""" The mouse moves from the entry widget """
@@ -496,7 +521,7 @@ class FrameWidgets(ttk.Frame):
def del_enter(event):
""" The mouse moves into the entry widget """
window.my_tool_tip = MyToolTip(event.x_root, event.y_root,
- 'Click to delete a Wireguard Tunnel\nSelect from the list!')
+ _('Click to delete a Wireguard Tunnel\nSelect from the list!'))
def del_leave(_):
""" The mouse moves from the entry widget """
@@ -516,7 +541,7 @@ class FrameWidgets(ttk.Frame):
def empty_list_enter(event):
""" The mouse moves into the entry widget """
- window.my_tool_tip = MyToolTip(event.x_root, event.y_root, 'No Tunnels in List for Export')
+ window.my_tool_tip = MyToolTip(event.x_root, event.y_root, _('No Tunnels in List for Export'))
def empty_list_leave(_):
""" The mouse moves from the entry widget """
@@ -526,7 +551,7 @@ class FrameWidgets(ttk.Frame):
def exp_enter(event):
""" The mouse moves into the entry widget """
window.my_tool_tip = MyToolTip(event.x_root, event.y_root,
- ' Click to export all\nWireguard Tunnel to Zipfile')
+ _(' Click to export all\nWireguard Tunnel to Zipfile'))
def exp_leave(_):
""" The mouse moves from the entry widget """
@@ -541,9 +566,9 @@ class FrameWidgets(ttk.Frame):
self.btn_exp.bind('', exp_leave)
''' Label Entry '''
- self.lb_rename = ttk.Entry(self.lb_frame3, width=20)
+ self.lb_rename = ttk.Entry(self.lb_frame4, width=20)
self.lb_rename.grid(column=2, row=0, padx=8, pady=10, sticky='ne')
- self.lb_rename.insert(0, 'Max. 12 characters!')
+ self.lb_rename.insert(0, _('Max. 12 characters!'))
self.lb_rename.config(state='disable')
def rename_no_active_leave(_):
@@ -554,12 +579,12 @@ class FrameWidgets(ttk.Frame):
def rename_no_active_enter(event):
""" The mouse moves into the entry widget """
window.my_tool_tip = MyToolTip(event.x_root, event.y_root,
- 'To rename a tunnel, at least one must be in the list')
+ _('To rename a tunnel, at least one must be in the list'))
def rename_enter(event):
""" The mouse moves into the entry widget """
window.my_tool_tip = MyToolTip(event.x_root, event.y_root,
- 'To rename a tunnel, you need to\nselect a tunnel from the list')
+ _('To rename a tunnel, you need to\nselect a tunnel from the list'))
def rename_leave(_):
""" The mouse moves from the entry widget """
@@ -579,28 +604,28 @@ class FrameWidgets(ttk.Frame):
if len(self.lb_rename.get()) > 12:
"""img_w, img_i, w_title, w_txt hand over"""
- iw = r'/usr/share/icons/wp-icons/64/info.png'
+ iw = r'/usr/share/icons/lx-icons/64/info.png'
ii = r'/usr/share/icons/wp-icons/48/wg_msg.png'
- wt = 'Renaming not possible'
- msg_t = 'The new name may contain only 12 characters.'
+ wt = _('Renaming not possible')
+ msg_t = _('The new name may contain only 12 characters')
msg_window(iw, ii, wt, msg_t)
elif len(self.lb_rename.get()) == 0:
"""img_w, img_i, w_title, w_txt hand over"""
- iw = r'/usr/share/icons/wp-icons/64/info.png'
+ iw = r'/usr/share/icons/lx-icons/64/info.png'
ii = r'/usr/share/icons/wp-icons/48/wg_msg.png'
- wt = 'Renaming not possible'
- msg_t = 'At least one character must be entered.'
+ wt = _('Renaming not possible')
+ msg_t = _('At least one character must be entered')
msg_window(iw, ii, wt, msg_t)
elif any(ch in special_characters for ch in self.lb_rename.get()):
"""img_w, img_i, w_title, w_txt hand over"""
- iw = r'/usr/share/icons/wp-icons/64/info.png'
+ iw = r'/usr/share/icons/lx-icons/64/info.png'
ii = r'/usr/share/icons/wp-icons/48/wg_msg.png'
- wt = 'Renaming not possible'
- msg_t = 'No valid sign. These must not be used.\nBlank, Slash, Backslash and { }\n'
+ wt = _('Renaming not possible')
+ msg_t = _('No valid sign. These must not be used.\nBlank, Slash, Backslash and { }\n')
msg_window(iw, ii, wt, msg_t)
else:
@@ -622,11 +647,11 @@ class FrameWidgets(ttk.Frame):
if self.a != '' and self.a == select_tl:
self.a = Tunnel.active()
self.StrVar.set(value=self.a)
- with open(path_to_file2, 'r') as set_file5:
+ with open(wg_set, 'r') as set_file5:
lines5 = set_file5.readlines()
if select_tl == lines5[7].strip() and 'off' not in lines5[7].strip():
lines5[7] = new_a_connect
- with open(path_to_file2, 'w') as theme_set5:
+ with open(wg_set, 'w') as theme_set5:
theme_set5.writelines(lines5)
self.autoconnect_var.set(value=new_a_connect)
@@ -635,14 +660,14 @@ class FrameWidgets(ttk.Frame):
except IndexError:
"""img_w, img_i, w_title, w_txt hand over"""
- iw = r'/usr/share/icons/wp-icons/64/info.png'
+ iw = r'/usr/share/icons/lx-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.'
+ wt = _('Renaming not possible')
+ msg_t = _('Please select a tunnel from the list')
msg_window(iw, ii, wt, msg_t)
''' Button Rename '''
- self.btn_rename = ttk.Button(self.lb_frame3, 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,
style='RnButton.TButton')
self.btn_rename.grid(column=3, row=0, padx=5, pady=10, sticky='ne')
@@ -654,15 +679,15 @@ class FrameWidgets(ttk.Frame):
self.autoconnect = ttk.Label(self.lb_frame3, textvariable=self.autoconnect_var, width=15)
self.autoconnect.config(font=('Ubuntu', 11))
self.autoconnect.grid(column=1, row=0, sticky='e', pady=19)
- self.wg_autostart = ttk.Checkbutton(self.lb_frame3, text='Autoconnect on:', variable=self.selected_option,
+ self.wg_autostart = ttk.Checkbutton(self.lb_frame3, text=_('Autoconnect on:'), variable=self.selected_option,
command=self.box_set)
self.wg_autostart.grid(column=0, row=0, pady=15, padx=15, sticky='nw')
def chk_enter(event):
""" The mouse moves into the entry widget """
window.my_tool_tip = MyToolTip(event.x_root, event.y_root,
- 'You must have at least one\n'
- 'tunnel in the list,to use the autostart')
+ _('You must have at least one\n'
+ 'tunnel in the list,to use the autostart'))
def chk_leave(_):
""" The mouse moves from the entry widget """
@@ -673,7 +698,7 @@ class FrameWidgets(ttk.Frame):
def chk_a_enter(event):
""" The mouse moves into the entry widget """
window.my_tool_tip = MyToolTip(event.x_root, event.y_root,
- 'To use the autostart, enable this Checkbox')
+ _('To use the autostart, enable this Checkbox'))
def chk_a_leave(_):
""" The mouse moves from the entry widget """
@@ -690,7 +715,7 @@ class FrameWidgets(ttk.Frame):
def chk_a_enter(event):
""" The mouse moves into the entry widget """
window.my_tool_tip = MyToolTip(event.x_root, event.y_root,
- 'To use the autostart, a tunnel must be selected from the list')
+ _('To use the autostart, a tunnel must be selected from the list'))
def chk_a_leave(_):
""" The mouse moves from the entry widget """
@@ -714,8 +739,8 @@ class FrameWidgets(ttk.Frame):
If in each case false comes out, a corresponding window comes to inform the user that something is wrong.
"""
try:
- filepath = filedialog.askopenfilename(initialdir=str(_u), title='Select Wireguard config File',
- filetypes=[('WG config files', '*.conf')], )
+ filepath = filedialog.askopenfilename(initialdir=str(_u), title=_('Select Wireguard config File'),
+ filetypes=[(_('WG config files'), '*.conf')], )
with open(filepath, 'r') as file:
read = file.read()
@@ -732,10 +757,10 @@ class FrameWidgets(ttk.Frame):
p_key = readfile.readlines()
if pre_key in p_key or pre_key + '\n' in p_key:
"""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/lx-icons/64/error.png'
ii = r'/usr/share/icons/wp-icons/48/wg_msg.png'
- wt = 'Import Error'
- msg_t = 'Tunnel already available!\nPlease use another file for import'
+ wt = _('Import Error')
+ msg_t = _('Tunnel already available!\nPlease use another file for import')
msg_window(iw, ii, wt, msg_t)
else:
@@ -774,8 +799,8 @@ class FrameWidgets(ttk.Frame):
def chk_a_enter(event):
""" The mouse moves into the entry widget """
window.my_tool_tip = MyToolTip(event.x_root, event.y_root,
- 'To use the autostart, enable this '
- 'Checkbox')
+ _('To use the autostart, enable this '
+ 'Checkbox'))
def chk_a_leave(_):
""" The mouse moves from the entry widget """
@@ -785,7 +810,7 @@ class FrameWidgets(ttk.Frame):
def list_info_enter(event):
""" The mouse moves into the entry widget """
window.my_tool_tip = MyToolTip(event.x_root, event.y_root,
- 'List of available tunnels')
+ _('List of available tunnels'))
def list_info_leave(_):
""" The mouse moves from the entry widget """
@@ -795,8 +820,8 @@ class FrameWidgets(ttk.Frame):
def del_enter(event):
""" The mouse moves into the entry widget """
window.my_tool_tip = MyToolTip(event.x_root, event.y_root,
- 'Click to delete a Wireguard '
- 'Tunnel\nSelect from the list!')
+ _('Click to delete a Wireguard '
+ 'Tunnel\nSelect from the list!'))
def del_leave(_):
""" The mouse moves from the entry widget """
@@ -806,8 +831,8 @@ class FrameWidgets(ttk.Frame):
def exp_enter(event):
""" The mouse moves into the entry widget """
window.my_tool_tip = MyToolTip(event.x_root, event.y_root,
- ' Click to export '
- 'all\nWireguard Tunnel to Zipfile')
+ _(' Click to export '
+ 'all\nWireguard Tunnel to Zipfile'))
def exp_leave(_):
""" The mouse moves from the entry widget """
@@ -817,8 +842,8 @@ class FrameWidgets(ttk.Frame):
def rename_enter(event):
""" The mouse moves into the entry widget """
window.my_tool_tip = MyToolTip(event.x_root, event.y_root,
- 'To rename a tunnel, you need to\n'
- 'select a tunnel from the list')
+ _('To rename a tunnel, you need to\n'
+ 'select a tunnel from the list'))
def rename_leave(_):
""" The mouse moves from the entry widget """
@@ -852,10 +877,10 @@ class FrameWidgets(ttk.Frame):
if 'PrivateKey = ' and 'Endpoint = ' not in read:
"""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/lx-icons/64/error.png'
ii = r'/usr/share/icons/wp-icons/48/wg_msg.png'
- wt = 'Import Error'
- msg_t = 'Oh... no valid Wireguard File!\nPlease select a valid Wireguard File'
+ wt = _('Import Error')
+ msg_t = _('Oh... no valid Wireguard File!\nPlease select a valid Wireguard File')
msg_window(iw, ii, wt, msg_t)
except EOFError:
@@ -879,10 +904,10 @@ class FrameWidgets(ttk.Frame):
select_tl = self.l_box.get(select_tunnel[0])
if self.selected_option.get() == 0:
- with open(path_to_file2, 'r') as set_file3:
+ with open(wg_set, 'r') as set_file3:
lines3 = set_file3.readlines()
lines3[7] = 'off'
- with open(path_to_file2, 'w') as set_file3:
+ with open(wg_set, 'w') as set_file3:
set_file3.writelines(lines3)
tl = Tunnel.list()
@@ -891,10 +916,10 @@ class FrameWidgets(ttk.Frame):
self.wg_autostart.configure(state='disabled')
if self.selected_option.get() >= 1:
- with open(path_to_file2, 'r') as set_file3:
+ with open(wg_set, 'r') as set_file3:
lines3 = set_file3.readlines()
lines3[7] = select_tl
- with open(path_to_file2, 'w') as set_file3:
+ with open(wg_set, 'w') as set_file3:
set_file3.writelines(lines3)
except IndexError:
@@ -908,7 +933,7 @@ class FrameWidgets(ttk.Frame):
Set (on), the selected tunnel is displayed in the label.
At (off) the label is first emptied then filled with No Autoconnect
"""
- with open(path_to_file2, 'r') as set_file4:
+ with open(wg_set, 'r') as set_file4:
lines4 = set_file4.readlines()
if lines4[7] != 'off':
@@ -919,7 +944,7 @@ class FrameWidgets(ttk.Frame):
else:
self.wg_autostart.configure(state='disabled')
- self.auto_con = 'no Autoconnect'
+ self.auto_con = _('no Autoconnect')
self.autoconnect_var.set('')
self.autoconnect_var = tk.StringVar()
self.autoconnect_var.set(self.auto_con)
@@ -936,11 +961,11 @@ class FrameWidgets(ttk.Frame):
""" Address Label """
self.add = tk.StringVar()
- self.add.set('Address: ' + data[0])
+ self.add.set(_('Address: ') + data[0])
self.DNS = tk.StringVar()
self.DNS.set(' DNS: ' + data[1])
self.enp = tk.StringVar()
- self.enp.set('Endpoint: ' + data[2])
+ self.enp.set(_('Endpoint: ') + data[2])
def label_empty(self):
self.add.set('')
@@ -970,8 +995,7 @@ class FrameWidgets(ttk.Frame):
def stop_enter(event):
""" The mouse moves into the entry widget """
- window.my_tool_tip = MyToolTip(event.x_root, event.y_root,
- 'Click to stop selected Wireguard Tunnel')
+ window.my_tool_tip = MyToolTip(event.x_root, event.y_root, _('Click to stop selected Wireguard Tunnel'))
def stop_leave(_):
""" The mouse moves from the entry widget """
@@ -988,7 +1012,7 @@ class FrameWidgets(ttk.Frame):
def empty_list_start_enter(event):
""" The mouse moves into the entry widget """
- window.my_tool_tip = MyToolTip(event.x_root, event.y_root, 'No tunnels to start in the list')
+ window.my_tool_tip = MyToolTip(event.x_root, event.y_root, _('No tunnels to start in the list'))
def empty_list_start_leave(_):
""" The mouse moves from the entry widget """
@@ -997,8 +1021,7 @@ class FrameWidgets(ttk.Frame):
def start_enter(event):
""" The mouse moves into the entry widget """
- window.my_tool_tip = MyToolTip(event.x_root, event.y_root,
- 'Click to start selected Wireguard Tunnel')
+ window.my_tool_tip = MyToolTip(event.x_root, event.y_root, _('Click to start selected Wireguard Tunnel'))
def start_leave(_):
""" The mouse moves from the entry widget """
@@ -1016,7 +1039,7 @@ class FrameWidgets(ttk.Frame):
def color_label(self):
""" View activ Tunnel in color green or yellow """
- with open(path_to_file2, 'r') as read_file:
+ with open(wg_set, 'r') as read_file:
lines = read_file.readlines()
if 'light\n' in lines:
self.lb_tunnel = ttk.Label(self, textvariable=self.StrVar, foreground='green')
@@ -1075,29 +1098,29 @@ class FrameWidgets(ttk.Frame):
if self.l_box.size() != 0:
"""img_w, img_i, w_title, w_txt hand over"""
- iw = r'/usr/share/icons/wp-icons/64/info.png'
+ iw = r'/usr/share/icons/lx-icons/64/info.png'
ii = r'/usr/share/icons/wp-icons/48/wg_msg.png'
- wt = 'Select tunnel'
- msg_t = 'Please select a tunnel from the list.'
+ wt = _('Select tunnel')
+ msg_t = _('Please select a tunnel from the list')
msg_window(iw, ii, wt, msg_t)
else:
"""img_w, img_i, w_title, w_txt hand over"""
- iw = r'/usr/share/icons/wp-icons/64/info.png'
+ iw = r'/usr/share/icons/lx-icons/64/info.png'
ii = r'/usr/share/icons/wp-icons/48/wg_msg.png'
- wt = 'Select tunnel'
- msg_t = 'Please first import tunnel.'
+ wt = _('Select tunnel')
+ msg_t = _('Please first import tunnel')
msg_window(iw, ii, wt, msg_t)
class MyToolTip(tk.Toplevel):
TIP_X_OFFSET = 20
TIP_Y_OFFSET = 20
- if not tips:
+ if not wg_tips:
AUTO_CLEAR_TIME = 0
else:
- AUTO_CLEAR_TIME = 900 # Millisecond. (1/90 sec.)
+ AUTO_CLEAR_TIME = 2000 # Millisecond. (1/200 sec.)
def __init__(self, x_pos, y_pos, message=None, auto_clear=True):
self.x_pos = x_pos