import tkinter as tk from tkinter import ttk from shared_libs.common_tools import Tooltip, ConfigManager from shared_libs.wp_app_config import Msg class StatusPanel(ttk.Frame): def __init__(self, container, tooltip_state, rename_callback, autoconnect_callback, **kwargs): super().__init__(container, **kwargs) self.columnconfigure(1, weight=1) self.tooltip_state = tooltip_state # Autoconnect Frame autoconnect_frame = ttk.Frame(self) autoconnect_frame.grid(column=0, row=0, sticky="w") self.selected_option = tk.IntVar() self.wg_autostart = ttk.Checkbutton( autoconnect_frame, text=Msg.STR["autoconnect_on"], variable=self.selected_option, command=autoconnect_callback, ) self.wg_autostart.grid(column=0, row=0, pady=5, padx=(10, 0), sticky="ew") Tooltip(self.wg_autostart, Msg.TTIP["autostart_info"], state_var=self.tooltip_state) self.autoconnect_var = tk.StringVar() self.autoconnect_label = ttk.Label( autoconnect_frame, textvariable=self.autoconnect_var, foreground="#0071ff", width=18, ) self.autoconnect_label.config(font=("Ubuntu", 11)) self.autoconnect_label.grid(column=1, row=0, sticky="ew", pady=5) # Rename Frame rename_frame = ttk.Frame(self) rename_frame.grid(column=1, row=0, sticky="e", padx=10) self.lb_rename = ttk.Entry(rename_frame) self.lb_rename.grid(column=0, row=0, padx=8, pady=10, sticky="ne") self.lb_rename.config(width=15) self.lb_rename.insert(0, Msg.STR["max_chars"]) self.lb_rename.config(state="disable") Tooltip(self.lb_rename, Msg.TTIP["rename_tl_info"], state_var=self.tooltip_state) self.btn_rename = ttk.Button( rename_frame, text=Msg.STR["rename"], state="disable", command=rename_callback, width=15, ) self.btn_rename.grid(column=1, row=0, pady=10, sticky="nsew") self.update_autoconnect_display() def update_autoconnect_display(self): autostart_tunnel = ConfigManager.get("autostart") if autostart_tunnel and autostart_tunnel != "off": self.selected_option.set(1) self.autoconnect_var.set(autostart_tunnel) else: self.selected_option.set(0) self.autoconnect_var.set(Msg.STR["no_autoconnect"]) def get_rename_value(self): return self.lb_rename.get() def clear_rename_entry(self): self.lb_rename.delete(0, tk.END) def enable_controls(self, list_box_size, is_selection): if list_box_size > 0: self.wg_autostart.config(state="normal") Tooltip(self.wg_autostart, Msg.TTIP["autostart"], state_var=self.tooltip_state) if is_selection: self.lb_rename.config(state="normal") self.btn_rename.config(state="normal") self.lb_rename.delete(0, tk.END) Tooltip(self.lb_rename, Msg.TTIP["rename_tl"], state_var=self.tooltip_state) else: self.wg_autostart.config(state="disabled") self.lb_rename.config(state="disabled") self.btn_rename.config(state="disabled") self.lb_rename.delete(0, tk.END) self.lb_rename.insert(0, Msg.STR["max_chars"]) Tooltip(self.wg_autostart, Msg.TTIP["autostart_info"], state_var=self.tooltip_state) Tooltip(self.lb_rename, Msg.TTIP["rename_tl_info"], state_var=self.tooltip_state)