idZddlZddlmZmZmZmZmZmZm Z m Z m Z m Z ddl mZmZddlmZmZddlmZddlmZddlmZdd lmZdd lmZdd lmZdd lm Z dd l!m"Z"ddl#m$Z$GddeZ%dS)zc Main Window for Frank GUI PyQt6-based desktop application with dashboard, jobs, and history views N) QMainWindowQWidget QVBoxLayout QHBoxLayout QTabWidgetQLabel QPushButton QStatusBar QMessageBoxQSystemTrayIcon)QTimerQt)QIconQFont)logger)Database)SchedulerConfig)DashboardWidget) JobsWidget)SchedulesWidget) HistoryWidget) BackupWidget)SchedulerSystemTraycPeZdZdZdedeffd ZdZdefdZ dZ d Z d Z xZ S) MainWindowzMain application windowdbconfigcHt||_||_|d|dd|t||j|_|j |j dd}t|_ |j j |j|j |t#jddS)NzFrank - Control Panelii zgui.refresh_interval_mszMain window initialized)super__init__rrsetWindowTitlesetMinimumSize _setup_uir tray_iconshowgetr refresh_timertimeoutconnect _refresh_datastartrinfo)selfrrrefresh_interval __class__s "C:\PYTHON\Frank\gui\main_window.pyr!zMainWindow.__init__s   3444 D#&&& -T47;;  ;??+DdKK#XX "**4+=>>>   !1222 -.....ct}||t|}|dddd|}||t |_|jt j j t|j |j |_|j|jdt!|j |j |_|j|jdt%|j |j |_|j|jdt)|j |j |_|j|jdt-|j |j |_|j|jd||jt3|_||j|jddS) zSetup main UI components u📊 Dashboardu 📋 Jobsu ⏰ Schedulesu 💾 Backupu 📜 HistoryReadyN)rsetCentralWidgetrsetContentsMargins_create_header addLayoutrtabssetTabPosition TabPositionNorthrrrdashboard_widgetaddTabr jobs_widgetrschedules_widgetr backup_widgetrhistory_widget addWidgetr status_bar setStatusBar showMessage)r.central_widget main_layout header_layouts r1r$zMainWindow._setup_ui3s! n---".11 &&r2r2666++-- m,,,LL    !7!=>>>!0 E E .0@AAA&dgt{;; );777!0 E E .@@@*$'4;?? +];;;,DGT[AA ,n===di(((%,, $/*** ##G,,,,,r2returnct}td}t}|d|d|||||td}|j |j |||S)z%Create header with title and controlsu🚀 Frank - Control PanelTu 🔄 Refresh) rrr setPointSizesetBoldsetFontrD addStretchr clickedr*r+)r.rJ title_label title_font refresh_btns r1r8zMainWindow._create_header`s# 9:: WW ###4   J''' ,,,  """".11 ##D$6777 ,,,r2c|sdS |j}t|dr|t |j}|dkr |j d|ddS|j ddS#t$r"}tj d|Yd}~dSd}~wwxYw)u<Refresh all widgets data — solo se la finestra è visibileNrefreshru 🟢 Active: z job(s) runningu🟢 Ready - No jobs runningzError refreshing data: ) isVisibler: currentWidgethasattrrWlenrget_active_executionsrErG Exceptionrerror)r.current_widget active_countes r1r+zMainWindow._refresh_dataus~~  F 8!Y4466N~y11 )&&(((tw<<>>??La++,YL,Y,Y,YZZZZZ++,JKKKKK 8 8 8 L6166 7 7 7 7 7 7 7 7 7 8sBB=!B== C)C$$C)c|||jddtjjddS)zHandle window close eventFrankz$Application minimized to system trayrN)ignorehider%rGr MessageIcon Information)r.events r1 closeEventzMainWindow.closeEventsT    ""  2  ' 3       r2c~|||dS)zShow and activate windowN)r&activateWindowraise_)r.s r1 show_windowzMainWindow.show_windows2   r2)__name__ __module__ __qualname____doc__rrr!r$rr8r+rirm __classcell__)r0s@r1rrs!!/8/_//////.+-+-+-Z *888,    r2r)&rqsysPyQt6.QtWidgetsrrrrrrr r r r PyQt6.QtCorer r PyQt6.QtGuirrlogurur core.databaser core.configrgui.dashboard_widgetrgui.jobs_widgetrgui.schedules_widgetrgui.history_widgetrgui.backup_widgetrgui.system_trayrrr2r1rs  $#######$$$$$$$$""""""''''''000000&&&&&&000000,,,,,,******//////BBBBBBBBBBr2