add class Image for icon managment

This commit is contained in:
2025-06-28 00:32:49 +02:00
parent ddae246d46
commit 47aa3ac749
3 changed files with 83 additions and 36 deletions

View File

@ -24,7 +24,7 @@ from shared_libs.common_tools import (
Tooltip,
)
from wp_app_config import AppConfig, Msg
from shared_libs.wp_app_config import AppConfig, Image, Msg
class Wirepy(tk.Tk):
@ -39,6 +39,7 @@ class Wirepy(tk.Tk):
self.withdraw()
self.my_tool_tip = None
self.x_width = AppConfig.UI_CONFIG["window_size"][0]
self.y_height = AppConfig.UI_CONFIG["window_size"][1]
@ -53,17 +54,19 @@ class Wirepy(tk.Tk):
AppConfig.UI_CONFIG["window_size"][1],
)
self.title(AppConfig.UI_CONFIG["window_title"])
self.image_manager = Image()
self.tk.call("source", f"{AppConfig.SYSTEM_PATHS['tcl_path']}/water.tcl")
ConfigManager.init(AppConfig.SETTINGS_FILE)
theme = ConfigManager.get("theme")
ThemeManager.change_theme(self, theme)
# Load the image file from the disk
self.wg_icon = tk.PhotoImage(file=AppConfig.IMAGE_PATHS["icon_vpn"])
# Set it as the window icon
self.iconphoto(True, self.wg_icon)
# Try to set icon
try:
icon = self.image_manager.load_image("icon_vpn")
if icon:
self.iconphoto(True, icon)
except:
pass
# Add the widgets
FrameWidgets(self).grid()
@ -91,13 +94,7 @@ class FrameWidgets(ttk.Frame):
self.dns = None
self.address = None
self.auto_con = None
self.wg_vpn_start = tk.PhotoImage(file=AppConfig.IMAGE_PATHS["icon_start"])
self.wg_vpn_stop = tk.PhotoImage(file=AppConfig.IMAGE_PATHS["icon_stop"])
self.imp_pic = tk.PhotoImage(file=AppConfig.IMAGE_PATHS["icon_import"])
self.tr_pic = tk.PhotoImage(file=AppConfig.IMAGE_PATHS["icon_trash"])
self.exp_pic = tk.PhotoImage(file=AppConfig.IMAGE_PATHS["icon_export"])
self.warning_pic = tk.PhotoImage(file=AppConfig.IMAGE_PATHS["icon_error"])
self.wg_icon_header = tk.PhotoImage(file=AppConfig.IMAGE_PATHS["icon_header"])
self.image_manager = Image()
self.columnconfigure(0, weight=1)
self.rowconfigure(0, weight=1)
self.columnconfigure(1, weight=1)
@ -211,7 +208,9 @@ class FrameWidgets(ttk.Frame):
self.wg_icon_header_frame.grid(column=0, row=0, rowspan=2, sticky="w")
self.wg_icon_header_label = tk.Label(
self.wg_icon_header_frame, image=self.wg_icon_header, bg="#2c3e50"
self.wg_icon_header_frame,
image=self.image_manager.load_image("icon_header"),
bg="#2c3e50",
)
self.wg_icon_header_label.grid(column=0, row=0, sticky="e", ipadx=10)
@ -345,7 +344,7 @@ class FrameWidgets(ttk.Frame):
# Button Import
self.btn_i = ttk.Button(
self.control_buttons_frame,
image=self.imp_pic,
image=self.image_manager.load_image("icon_import"),
command=self.import_sl,
padding=0,
)
@ -356,7 +355,7 @@ class FrameWidgets(ttk.Frame):
# Button Trash
self.btn_tr = ttk.Button(
self.control_buttons_frame,
image=self.tr_pic,
image=self.image_manager.load_image("icon_trash"),
command=self.delete,
padding=0,
)
@ -370,7 +369,7 @@ class FrameWidgets(ttk.Frame):
# Button Export
self.btn_exp = ttk.Button(
self.control_buttons_frame,
image=self.exp_pic,
image=self.image_manager.load_image("icon_export"),
command=lambda: Tunnel.export(),
padding=0,
)
@ -560,7 +559,7 @@ class FrameWidgets(ttk.Frame):
None,
partial(webbrowser.open, "https://git.ilunix.de/punix/Wire-Py"),
],
icon=AppConfig.IMAGE_PATHS["icon_vpn"],
icon="/usr/share/icons/lx-icons/64/wg_vpn.png",
wraplength=420,
)
@ -655,7 +654,7 @@ class FrameWidgets(ttk.Frame):
"""
self.btn_stst = ttk.Button(
self.control_buttons_frame,
image=self.wg_vpn_start,
image=self.image_manager.load_image("icon_start"),
command=lambda: self.wg_switch("start"),
padding=0,
)
@ -694,7 +693,7 @@ class FrameWidgets(ttk.Frame):
"""
self.btn_stst = ttk.Button(
self.control_buttons_frame,
image=self.wg_vpn_stop,
image=self.image_manager.load_image("icon_stop"),
command=lambda: self.wg_switch("stop"),
padding=0,
)