o û£2išã@sèdZddlZddlmZmZmZmZmZmZm Z m Z m Z m Z ddl mZmZddlmZmZddlmZddlmZddlmZdd lmZdd lmZdd lmZdd lm Z dd l!m"Z"ddl#m$Z$ddl%m&Z&Gdd„deƒZ'dS)zn Main Window for Python Scheduler GUI PyQt6-based desktop application with dashboard, jobs, and history views éN) Ú QMainWindowÚQWidgetÚ QVBoxLayoutÚ QHBoxLayoutÚ QTabWidgetÚQLabelÚ QPushButtonÚ QStatusBarÚ QMessageBoxÚQSystemTrayIcon)ÚQTimerÚQt)ÚQIconÚQFont)Úlogger)ÚDatabase)ÚSchedulerConfig)ÚDashboardWidget)Ú JobsWidget)ÚSchedulesWidget)Ú HistoryWidget)Ú BackupWidget)Ú SyncWidget)ÚSchedulerSystemTraycsXeZdZdZdedef‡fdd„ Zdd„Zdefd d „Z d d „Z d d„Z dd„Z ‡Z S)Ú MainWindowzMain application windowÚdbÚconfigcsŒtƒ ¡||_||_| d¡| dd¡| ¡t||jƒ|_|j  ¡|j  dd¡}t ƒ|_ |j j  |j¡|j  |¡t d¡dS)Nz!Python Automation - Control Paneli°i zgui.refresh_interval_mséÐzMain window initialized)ÚsuperÚ__init__rrZsetWindowTitleZsetMinimumSizeÚ _setup_uirÚ tray_iconÚshowÚgetr Z refresh_timerÚtimeoutÚconnectÚ _refresh_dataÚstartrÚinfo)ÚselfrrZrefresh_interval©Ú __class__©ú&c:\PYTHON\Scheduler\gui\main_window.pyrs     zMainWindow.__init__cCsBtƒ}| |¡t|ƒ}| dddd¡| ¡}| |¡tƒ|_|j tj j ¡t |j |j ƒ|_|j |jd¡t|j |j ƒ|_|j |jd¡t|j |j ƒ|_|j |jd¡t|j |j ƒ|_|j |jd¡t|j |j ƒ|_|j |jd¡t|j |j ƒ|_|j |jd¡| |j¡tƒ|_| |j¡|j d¡d S) zSetup main UI componentsé u📊 Dashboardu 📋 Jobsu â° Schedulesu 💾 Backupu 📠Syncu 📜 HistoryZReadyN)rZsetCentralWidgetrZsetContentsMarginsÚ_create_headerZ addLayoutrÚtabsZsetTabPositionZ TabPositionZNorthrrrZdashboard_widgetZaddTabrZ jobs_widgetrZschedules_widgetrZ backup_widgetrZ sync_widgetrZhistory_widgetÚ addWidgetr Ú status_barZ setStatusBarÚ showMessage)r)Zcentral_widgetZ main_layoutÚ header_layoutr,r,r-r 4s0    zMainWindow._setup_uiÚreturncCshtƒ}tdƒ}tƒ}| d¡| d¡| |¡| |¡| ¡tdƒ}|j   |j ¡| |¡|S)z%Create header with title and controlsu&🚀 Python Automation - Control PaneléTu 🔄 Refresh) rrrZ setPointSizeZsetBoldZsetFontr1Z addStretchrZclickedr%r&)r)r4Z title_labelZ title_fontZ refresh_btnr,r,r-r/es     zMainWindow._create_headerc Cs–z/|j ¡}t|dƒr| ¡t|j ¡ƒ}|dkr'|j d|›d¡WdS|j d¡WdSt yJ}zt   d|›¡WYd}~dSd}~ww)zRefresh all widgets dataÚrefreshru 🟢 Active: z job(s) runningu🟢 Ready - No jobs runningzError refreshing data: N) r0Z currentWidgetÚhasattrr7ÚlenrÚget_active_executionsr2r3Ú ExceptionrÚerror)r)Zcurrent_widgetÚ active_countÚer,r,r-r&zs  €ÿzMainWindow._refresh_datacCs*| ¡| ¡|j ddtjjd¡dS)zHandle window close eventzPython Schedulerz$Application minimized to system trayrN)ÚignoreÚhider!r3r Z MessageIconZ Information)r)Úeventr,r,r-Ú closeEventŽsüzMainWindow.closeEventcCs| ¡| ¡| ¡dS)zShow and activate windowN)r"ZactivateWindowZraise_)r)r,r,r-Ú show_windowšs zMainWindow.show_window)Ú__name__Ú __module__Ú __qualname__Ú__doc__rrrr rr/r&rBrCÚ __classcell__r,r,r*r-rs1 r)(rGÚsysÚPyQt6.QtWidgetsrrrrrrrr r r Ú PyQt6.QtCorer r Z PyQt6.QtGuirrÚlogururÚ core.databaserÚ core.configrZgui.dashboard_widgetrZgui.jobs_widgetrZgui.schedules_widgetrZgui.history_widgetrZgui.backup_widgetrZgui.sync_widgetrZgui.system_trayrrr,r,r,r-Ús 0