L5i ndZddlmZmZmZmZmZmZddlm Z m Z m Z ddl m Z mZddlmZGddeZy) !Main GUI window for DaemonControl) QMainWindow QTabWidgetQMenuBarQMenu QStatusBar QMessageBox)QtQTimer pyqtSignal)QAction QCloseEvent)PathceZdZdZeZfdZdZdZdZ dZ dZ dZ d Z d Zd Zd Zd ZdZdefdZxZS) MainWindowrct||jd|jdd|j dd|j |j |jy)z Initialize main window. Creates: - Window geometry (1200x800) - Tab widget with 3 tabs - Menu bar - Status bar - Refresh timer DaemonControliiii N)super__init__setWindowTitlesetMinimumSizeresize _init_tabs_init_menu_bar_init_status_bar)self __class__s 9/mnt/ssd/data/python-lab/DaemonControl/gui/main_window.pyrzMainWindow.__init__s`  O, D#& D#   cddlm}ddlm}ddlm}ddlm}t|_ |j|j||_||_||_||_|jj|jd|jj|jd|jj|jd|jj|j d |jjj|j|jjj|j y ) a' Create tab widget with 4 tabs. Tabs: 1. Fleet - Flotta Autonoma monitoring (Docker, Tunnel, Backup, Disk) 2. Dashboard - Overview and statistics 3. Jobs - Job management (list, create, edit, delete) 4. History - Execution history viewer )FleetTab) DashboardTab)JobsTab) HistoryTabu 🚢 Fleetu📊 Dashboardu ⚙️ Jobsu 📜 HistoryN) fleet_tabr" dashboard_tabr#jobs_tabr$ history_tabr%rtabssetCentralWidgetaddTab jobs_modifiedconnect_on_jobs_modifiedcurrentChanged_on_tab_changed)rr"r#r$r%s rrzMainWindow._init_tabs)s (/%+L  dii(")^  %< 6 ++-=>  6 ))>: ##++D,B,BC   (()=)=>rc |j}|jd}td|}|jd|jj |j j|j||jtd|}|jd|jj |j|j||jd}td|}|jj |j|j|td|}|jj |j|j|td |}|jj |j|j||jtd |} | jj |j|j| |jd } td |} | jd | jj |j| j| td|} | jj |j | j| |jd} td|}|jj |j"| j|y)z Create menu bar with menus. Menus: - File: New Job, Exit - Daemon: Start, Stop, Reload, Status - View: Refresh, Open Logs - Help: About z&Filez &New Job...zCtrl+NzE&xitzCtrl+Qz&Daemonz &Start Daemonz S&top Daemonz &Reload Jobsz Show &Statusz&Viewz&RefreshF5zOpen &Logs Folderz&Helpz&AboutN)menuBaraddMenur setShortcut triggeredr.r( create_job addAction addSeparatorclose _start_daemon _stop_daemon_reload_daemon_show_daemon_status_refresh_current_tab _open_logs _show_about)rmenu_bar file_menunew_job_action exit_action daemon_menu start_action stop_action reload_action status_action view_menurefresh_action logs_action help_menu about_actions rrzMainWindow._init_menu_barKsn<<>$$W-  5""8,  (()A)ABN+ gt, )%%djj1K(&&y1 5 &&t'9'9:l+nd3 %%d&7&78k*5 ''(;(;<m,  "5 ''(@(@Am,$$W-  T2""4(  (()B)BCN+148 %%doo6K($$W- x. &&t'7'78L)rct|_|j|j|jjdy)z Create status bar. Shows: - Daemon status (running/stopped) - Number of active jobs - Last refresh time ReadyN)r status_bar setStatusBar showMessagers rrzMainWindow._init_status_bars1%, $//* ##G,rc|jj|jj|jj y)z Handle jobs modified signal. Refresh dashboard and jobs tab Emit signal for external listeners N)r'refreshr(r-emitrVs rr/zMainWindow._on_jobs_modifieds8 ""$  !rct|jj|}t|dr|jyy)zH Handle tab change. Refresh newly selected tab rXN)r*widgethasattrrX)rindexcurrent_widgets rr1zMainWindow._on_tab_changeds3 ))%0 >9 -  " " $ .rcr|jj}t|dr|jyy)zRefresh currently visible tabrXN)r* currentWidgetr\rX)rr^s rr@zMainWindow._refresh_current_tabs/002 >9 -  " " $ .rc2tj|ddy)z,Start daemon (placeholder - implement later)z Start Daemonz@Start daemon functionality coming soon. Use system tray for now.Nr informationrVs rr<zMainWindow._start_daemonsn : ;rc2tj|ddy)z+Stop daemon (placeholder - implement later)z Stop Daemonz?Stop daemon functionality coming soon. Use system tray for now.NrbrVs rr=zMainWindow._stop_daemonsm : ;rc2tj|ddy)z2Reload daemon jobs (placeholder - implement later)z Reload Daemonz:Reload functionality coming soon. Use system tray for now.NrbrVs rr>zMainWindow._reload_daemonso : ;rc2tj|ddy)zShow daemon status dialogz Daemon Statusz@Daemon status check coming soon. Check system tray icon for now.NrbrVs rr?zMainWindow._show_daemon_statuss o A Brcddlm}ddl}|}|jdd}t |j }|j dt|gy)z Open logs folder in file managerr) ConfigManagerNloggingdaemon_log_filezxdg-open)corerh subprocessgetrparentPopenstr)rrhrlconfiglog_filelog_dirs rrAzMainWindow._open_logssF&::i):;x.''*c'l34rc2tj|ddy)zShow about dialogzAbout DaemonControluDaemonControl Version 1.0 A powerful job scheduling and system monitoring daemon for Linux. Milestones: ✅ M1: Core Infrastructure ✅ M2: Daemon Base ✅ M3: System Tray ✅ M4: GUI Job Management N)r aboutrVs rrBzMainWindow._show_abouts  ! + reventcz|j|jjd|jy)z Handle window close event. Don't exit application, just hide window. Application exits only via tray menu "Exit". z-Window hidden. Use system tray to show again.N)hiderSrUaccept)rrvs r closeEventzMainWindow.closeEvents+  ##$ST  r)__name__ __module__ __qualname____doc__r r-rrrrr/r1r@r<r=r>r?rArBrrz __classcell__)rs@rrr s`+LM . ?DA*F -6 "%% ; ; ; B 5    rrN)r~PyQt6.QtWidgetsrrrrrr PyQt6.QtCorer r r PyQt6.QtGuir rpathlibrrrrrs.'0/,xxr