AlcasarAuto/main.py
2024-09-03 11:30:49 +00:00

111 lines
4.5 KiB
Python

import time
import os, sys
sys.path.append(os.path.dirname(__file__))
import settings_manager
from alcasar import Alcasar
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.settings_manager = settings_manager.SettingsManager()
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,
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)
self.settings_window = settings_manager.SettingsWindow()
self.state = False
self.running = True
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 quit(self):
self.tray_manager.set_name("AlcasarAuto (Shutting down ...)")
self.tray_manager.set_icon(r".\assets\desactived_ico.png")
self.running = False
self.tray_manager.kill()
self.alcasar.disconnect()
print("Exit")
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 self.running:
state = self.state
if state != last_state:
if state:
self.tray_manager.set_icon(r".\assets\actived_ico.png")
self.tray_manager.set_name("AlcasarAuto (Connected)")
print("connected")
else:
self.tray_manager.set_icon(r".\assets\desactived_ico.png")
self.tray_manager.set_name("AlcasarAuto (Disconnected)")
print("Disconnected")
if self.settings_manager.get("auto_connect") and not self.just_disconnected:
print("Reconnecting...")
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 self.running:
self.state = self.alcasar.update_statut()[0]
time.sleep(2)
if __name__ == '__main__':
alcasar_monitor = AlcasarMonitor()