Untitled

 avatar
unknown
plain_text
5 months ago
5.7 kB
3
Indexable
class WifiConfigurationScreen(ctk.CTkToplevel):
    def __init__(self, parent, dark_mode: bool, language='EN'):
        super().__init__(parent)

        # Fullscreen and other properties
        self.overrideredirect(True)
        self.geometry(f"{self.winfo_screenwidth()}x{self.winfo_screenheight()}+0+0")
        self.attributes('-topmost', True)
        self.protocol("WM_DELETE_WINDOW", lambda: None)

        # Colors
        self.dark_mode = dark_mode
        self.bg_color = '#1c1c1e' if dark_mode else '#f5f5f7'
        self.text_color = 'white' if dark_mode else 'black'
        self.configure(fg_color=self.bg_color)

        # Initialize variables
        self.networks = []
        self.selected_network = StringVar()
        self.password = StringVar()
        self.show_password = ctk.BooleanVar(value=False)
        self.keyboard_visible = False

        # Main container
        self.main_container = ctk.CTkFrame(self, fg_color=self.bg_color, corner_radius=0)
        self.main_container.pack(fill="both", expand=True)

        # Close button
        self.close_button = ctk.CTkButton(
            self,
            text="×",
            width=35,
            height=20,
            command=self.destroy,
            fg_color='#ff3b30',
            hover_color='#ff453a',
            text_color='white',
            font=("Dongle", 24, "bold"),
        )
        self.close_button.place(relx=0.995, rely=0.01, anchor="ne")

        # Create UI elements
        self.create_widgets()
        self.scan_wifi_networks()

    def create_widgets(self):
        # Title and Status
        title_label = ctk.CTkLabel(
            self.main_container,
            text="Wi-Fi Diagnostics",
            font=("Dongle", 42, "bold"),
            text_color=self.text_color
        )
        title_label.pack(pady=(20, 10))

        self.status_label = ctk.CTkLabel(
            self.main_container,
            text="Status: Scanning...",
            font=("Dongle", 24),
            text_color=self.text_color
        )
        self.status_label.pack(pady=(0, 20))

        # Main content container
        content_container = ctk.CTkFrame(self.main_container, fg_color="transparent")
        content_container.pack(fill="x", expand=False, pady=(0, 20), padx=40)

        # Left Frame (Network Selection)
        left_frame = ctk.CTkFrame(content_container, fg_color="transparent")
        left_frame.grid(row=0, column=0, padx=(0, 20))

        network_label = ctk.CTkLabel(
            left_frame,
            text="Available Networks",
            font=("Dongle", 25),
            text_color=self.text_color
        )
        network_label.pack(pady=(0, 10))

        self.network_dropdown = ctk.CTkOptionMenu(
            left_frame,
            variable=self.selected_network,
            values=self.networks,
            width=300,
            fg_color="#333",
            text_color=self.text_color,
            font=("Dongle", 20)
        )
        self.network_dropdown.pack()

        password_label = ctk.CTkLabel(
            left_frame,
            text="Password",
            font=("Dongle", 25),
            text_color=self.text_color
        )
        password_label.pack(pady=(20, 10))

        password_container = ctk.CTkFrame(left_frame, fg_color="transparent")
        password_container.pack()

        self.password_entry = ctk.CTkEntry(
            password_container,
            textvariable=self.password,
            show="*",
            width=300,
            font=("Dongle", 20),
            fg_color="#444"
        )
        self.password_entry.pack(side="left", padx=(0, 10))

        self.toggle_password_btn = ctk.CTkButton(
            password_container,
            text="",
            width=35,
            command=self.toggle_password_visibility,
            fg_color="#555",
        )
        self.toggle_password_btn.pack(side="left")

        # Right Frame (Connection Info)
        right_frame = ctk.CTkFrame(content_container, fg_color="transparent")
        right_frame.grid(row=0, column=1)

        self.connection_frame = ctk.CTkFrame(right_frame, fg_color="#333", corner_radius=10)
        self.connection_frame.pack(fill="both", expand=True)

        connection_title = ctk.CTkLabel(
            self.connection_frame,
            text="Connection Details",
            font=("Dongle", 28, "bold"),
            text_color=self.text_color
        )
        connection_title.pack(pady=(10, 5))

        self.ssid_label = ctk.CTkLabel(
            self.connection_frame,
            text="SSID: Not connected",
            font=("Dongle", 24),
            text_color=self.text_color
        )
        self.ssid_label.pack(pady=5)

        self.ip_label = ctk.CTkLabel(
            self.connection_frame,
            text="IP Address: N/A",
            font=("Dongle", 24),
            text_color=self.text_color
        )
        self.ip_label.pack(pady=(0, 10))

        # Keyboard container
        self.keyboard_frame = ctk.CTkFrame(self.main_container, fg_color="transparent")
        self.keyboard_frame.pack(side="bottom", fill="x", pady=(10, 20), padx=40)

        self.keyboard = TouchKeyboard(
            self.keyboard_frame,
            self.password_entry,
            self.hide_keyboard,
            dark_mode=self.dark_mode
        )
        self.keyboard.pack()

    def toggle_password_visibility(self):
        if self.password_entry.cget("show") == "*":
            self.password_entry.configure(show="")
        else:
            self.password_entry.configure(show="*")
Editor is loading...
Leave a Comment