feat: full implementation - switcher, device watcher, hotkeys, tray, settings UI
This commit is contained in:
67
main.py
Normal file
67
main.py
Normal file
@@ -0,0 +1,67 @@
|
||||
import sys
|
||||
import queue
|
||||
import threading
|
||||
import logging
|
||||
|
||||
from PyQt6.QtWidgets import QApplication
|
||||
from PyQt6.QtCore import QTimer
|
||||
|
||||
from config.config_manager import ConfigManager
|
||||
from core.switcher import MonitorSwitcher
|
||||
from core.device_watcher import DeviceWatcher
|
||||
from core.hotkey_manager import HotkeyManager
|
||||
from ui.tray import TrayApp
|
||||
|
||||
logging.basicConfig(
|
||||
level=logging.INFO,
|
||||
format="%(asctime)s %(name)s %(levelname)s %(message)s",
|
||||
)
|
||||
|
||||
|
||||
def main() -> None:
|
||||
app = QApplication(sys.argv)
|
||||
app.setQuitOnLastWindowClosed(False)
|
||||
|
||||
config = ConfigManager()
|
||||
switcher = MonitorSwitcher(config)
|
||||
watcher = DeviceWatcher(config, switcher)
|
||||
hotkeys = HotkeyManager(config, switcher)
|
||||
|
||||
settings_queue: queue.Queue = queue.Queue()
|
||||
tray = TrayApp(config, switcher, settings_queue)
|
||||
|
||||
watcher.start()
|
||||
hotkeys.register_all()
|
||||
|
||||
tray_thread = threading.Thread(
|
||||
target=tray.run_tray, daemon=True, name="TrayThread"
|
||||
)
|
||||
tray_thread.start()
|
||||
|
||||
settings_window = None
|
||||
|
||||
def process_queue() -> None:
|
||||
nonlocal settings_window
|
||||
while not settings_queue.empty():
|
||||
cmd = settings_queue.get_nowait()
|
||||
if cmd == "open_settings":
|
||||
from ui.settings_window import SettingsWindow
|
||||
if settings_window is None or not settings_window.isVisible():
|
||||
settings_window = SettingsWindow(config, switcher, hotkeys)
|
||||
settings_window.show()
|
||||
settings_window.raise_()
|
||||
settings_window.activateWindow()
|
||||
elif cmd == "exit":
|
||||
hotkeys.unregister_all()
|
||||
watcher.stop()
|
||||
app.quit()
|
||||
|
||||
timer = QTimer()
|
||||
timer.timeout.connect(process_queue)
|
||||
timer.start(100)
|
||||
|
||||
sys.exit(app.exec())
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
Reference in New Issue
Block a user