101 lines
3.7 KiB
Python
101 lines
3.7 KiB
Python
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)
|