import time import settings_manager from alcasar import Alcasar, ConnectionResults, DisconnectResult from settings_manager import SettingsWindow from tray_manager import TrayManager from threading import Thread class AlcasarMonitor: def __init__(self): self.alcasar = Alcasar() self.tray_manager = TrayManager("AlcasarAuto", default_show=True, ImagePath=r".\assets\desactived_ico.png") self.connect_button = self.tray_manager.Menu.create_item("Connect", item_type=self.tray_manager.Menu.ItemType.BUTTON, callback=self.connect) self.disconnect_button = self.tray_manager.Menu.create_item("Disconnect", item_type=self.tray_manager.Menu.ItemType.BUTTON, callback=self.disconnect) self.settings_button = self.tray_manager.Menu.create_item("Settings", item_type=self.tray_manager.Menu.ItemType.BUTTON, callback=self.ask_credentials) self.auto_connect_check = self.tray_manager.Menu.create_item("Auto Connect", item_type=self.tray_manager.Menu.ItemType.CHECK, callback=self.toggle_auto_connect) self.settings_window = settings_manager.SettingsWindow() self.settings_manager = settings_manager.SettingsManager() self.state = False self.request_settings_open = False self.just_disconnected = False Thread(target=self.connection_state_loop).start() self.loop() def ask_credentials(self): self.request_settings_open = True def toggle_auto_connect(self): new_value = self.tray_manager.Menu.get_status(self.auto_connect_check) self.settings_manager.set("auto_connect", new_value) def disconnect(self): self.just_disconnected = True self.alcasar.disconnect() def connect(self): self.alcasar.connect(self.settings_manager.get("username"), self.settings_manager.get("password")) self.just_disconnected = False def loop(self): last_state = None while True: state = self.state if state != last_state: if state: self.tray_manager.set_icon(r".\assets\actived_ico.png") print("connected") else: self.tray_manager.set_icon(r".\assets\desactived_ico.png") print("Disconnected") if self.settings_manager.get("auto_connect") and not self.just_disconnected: self.connect() last_state = state if self.request_settings_open: self.__ask_credentials() time.sleep(0.2) def __ask_credentials(self): self.request_settings_open = False print("ask credentials") credentials = self.settings_window.get_credentials(self.settings_manager.get("username"), self.settings_manager.get("password")) self.settings_manager.set("username", credentials[0]) self.settings_manager.set("password", credentials[1]) def connection_state_loop(self): while True: self.state = self.alcasar.update_statut()[0] time.sleep(2) if __name__ == '__main__': alcasar_monitor = AlcasarMonitor()