Untitled
unknown
plain_text
a year ago
4.1 kB
4
Indexable
class ConnectionScreen(ctk.CTkToplevel):
def __init__(self, parent, network_ssid: str, dark_mode: bool, language: str):
super().__init__(parent)
self.network_ssid = network_ssid
self.dark_mode = dark_mode
self.language = language
self.wifi = WiFiConnection()
# Make it fullscreen
self.overrideredirect(True)
self.geometry(f"{self.winfo_screenwidth()}x{self.winfo_screenheight()}+0+0")
# Colors
bg_color = '#1c1c1e' if dark_mode else '#f5f5f7'
accent_color = '#2c2c2e' if dark_mode else '#e5e5e7'
text_color = 'white' if dark_mode else 'black'
self.configure(fg_color=bg_color)
# Header
header = ctk.CTkFrame(self, fg_color=bg_color, height=50)
header.pack(fill='x', padx=20, pady=(20,10))
title = ctk.CTkLabel(
header,
text=f"Connect to {network_ssid}",
font=("Dongle", 24, "bold"),
text_color=text_color
)
title.pack(side='left')
back_btn = ctk.CTkButton(
header,
text="×",
width=40,
height=40,
font=("Dongle", 20),
fg_color=accent_color,
hover_color='#3a3a3c' if dark_mode else '#d1d1d6',
command=self.destroy
)
back_btn.pack(side='right')
# Password entry
self.password_frame = ctk.CTkFrame(self, fg_color=bg_color)
self.password_frame.pack(fill='x', padx=20, pady=10)
self.password_var = ctk.StringVar()
self.password_entry = ctk.CTkEntry(
self.password_frame,
textvariable=self.password_var,
placeholder_text="Enter network password",
font=("Dongle", 18),
height=50,
show="*",
fg_color=accent_color
)
self.password_entry.pack(side='left', fill='x', expand=True, padx=(0,10))
self.show_password_btn = ctk.CTkButton(
self.password_frame,
text="👁",
width=50,
height=50,
font=("Dongle", 20),
fg_color=accent_color,
hover_color='#3a3a3c' if dark_mode else '#d1d1d6',
command=self.toggle_password_visibility
)
self.show_password_btn.pack(side='right')
# Custom keyboard
self.keyboard = CustomKeyboard(
self,
self.password_entry,
dark_mode,
command=self.connect_to_network
)
self.keyboard.pack(fill='both', expand=True, padx=20, pady=10)
self.status_label = ctk.CTkLabel(
self,
text="",
font=("Dongle", 16),
text_color=text_color
)
self.status_label.pack(pady=10)
def toggle_password_visibility(self):
current = self.password_entry.cget('show')
self.password_entry.configure(show='' if current == '*' else '*')
def connect_to_network(self):
password = self.password_var.get()
if not password:
self.status_label.configure(text="Please enter a password")
return
self.status_label.configure(text="Connecting...")
def connect():
result = self.wifi.connect_to_network(self.network_ssid, password)
if result['status'] == 'success':
self.status_label.configure(
text="Connected successfully",
text_color='#34c759'
)
self.after(1000, self.destroy)
else:
self.status_label.configure(
text=result['message'],
text_color='#ff3b30'
)
threading.Thread(target=connect, daemon=True).start()Editor is loading...
Leave a Comment