2023-11-21 11:02:57 +00:00
|
|
|
import time
|
|
|
|
|
|
|
|
import settings_manager
|
2023-11-21 12:31:07 +00:00
|
|
|
from alcasar import Alcasar
|
2023-11-21 11:02:57 +00:00
|
|
|
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)
|
2023-11-21 12:31:07 +00:00
|
|
|
|
|
|
|
self.settings_manager = settings_manager.SettingsManager()
|
|
|
|
|
2023-11-21 11:02:57 +00:00
|
|
|
self.auto_connect_check = self.tray_manager.Menu.create_item("Auto Connect",
|
|
|
|
item_type=self.tray_manager.Menu.ItemType.CHECK,
|
2023-11-21 12:31:07 +00:00
|
|
|
callback=self.toggle_auto_connect,
|
|
|
|
checkdefault=self.settings_manager.get("auto_connect"))
|
|
|
|
|
|
|
|
self.quit_button = self.tray_manager.Menu.create_item("Quit",
|
|
|
|
item_type=self.tray_manager.Menu.ItemType.BUTTON,
|
|
|
|
callback=self.quit)
|
|
|
|
|
2023-11-21 11:02:57 +00:00
|
|
|
self.settings_window = settings_manager.SettingsWindow()
|
|
|
|
|
|
|
|
self.state = False
|
2023-11-21 12:31:07 +00:00
|
|
|
self.running = True
|
2023-11-21 11:02:57 +00:00
|
|
|
|
|
|
|
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
|
|
|
|
|
2023-11-21 12:31:07 +00:00
|
|
|
def quit(self):
|
2023-11-21 12:34:21 +00:00
|
|
|
self.tray_manager.set_name("AlcasarAuto (Shutting down ...)")
|
|
|
|
self.tray_manager.set_icon(r".\assets\desactived_ico.png")
|
2023-11-21 12:31:07 +00:00
|
|
|
self.running = False
|
|
|
|
self.tray_manager.kill()
|
|
|
|
self.alcasar.disconnect()
|
|
|
|
print("Exit")
|
|
|
|
|
2023-11-21 11:02:57 +00:00
|
|
|
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
|
2023-11-21 12:31:07 +00:00
|
|
|
while self.running:
|
2023-11-21 11:02:57 +00:00
|
|
|
state = self.state
|
|
|
|
if state != last_state:
|
|
|
|
if state:
|
|
|
|
self.tray_manager.set_icon(r".\assets\actived_ico.png")
|
2023-11-21 12:34:21 +00:00
|
|
|
self.tray_manager.set_name("AlcasarAuto (Connected)")
|
2023-11-21 11:02:57 +00:00
|
|
|
print("connected")
|
|
|
|
else:
|
|
|
|
self.tray_manager.set_icon(r".\assets\desactived_ico.png")
|
2023-11-21 12:34:21 +00:00
|
|
|
self.tray_manager.set_name("AlcasarAuto (Disconnected)")
|
2023-11-21 11:02:57 +00:00
|
|
|
print("Disconnected")
|
|
|
|
if self.settings_manager.get("auto_connect") and not self.just_disconnected:
|
2023-11-21 12:08:58 +00:00
|
|
|
print("Reconnecting...")
|
2023-11-21 11:02:57 +00:00
|
|
|
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):
|
2023-11-21 12:31:07 +00:00
|
|
|
while self.running:
|
2023-11-21 11:02:57 +00:00
|
|
|
self.state = self.alcasar.update_statut()[0]
|
|
|
|
time.sleep(2)
|
|
|
|
|
2023-11-10 14:20:24 +00:00
|
|
|
|
|
|
|
if __name__ == '__main__':
|
2023-11-21 11:02:57 +00:00
|
|
|
alcasar_monitor = AlcasarMonitor()
|