Untitled

 avatar
unknown
plain_text
5 months ago
4.1 kB
3
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