/i-SrSSKJrJrJrJrJrJrJrJ r J r J r SSK J r SSKJr SSKJr SSKJr SSKJr SSKJr SS KJr "S S \5rg ) z? Jobs Widget for Python Scheduler Display and manage jobs list ) QWidget QVBoxLayout QHBoxLayout QTableWidgetQTableWidgetItem QPushButton QHeaderViewQLabel QMessageBoxQMenu)Qt)QAction)logger)SchedulerDatabase)SchedulerConfig)JobEditorDialog)ScheduleEditorDialogc^\rSrSrSrS\S\4U4SjjrSrSr Sr S \ 4S jr S r S rS rSrSrSrSrSrU=r$) JobsWidgetzJobs list and management widgetdbconfigcz>[TU]5 XlX lUR 5 UR 5 gN)super__init__rr _setup_uirefresh)selfrr __class__s &c:\PYTHON\Scheduler\gui\jobs_widget.pyrJobsWidget.__init__s+    c ^[T5n[5n[S5nURS5 UR U5 UR 5 [ S5TlTRRS5 TRRRTR5 UR TR5 [ S5Tl TRRRTR5 TRRS5 UR TR5 [ S5TlTRRRTR5 TRRS5 UR TR5 [ S5TlTR RRTR"5 TR RS5 UR TR 5 [ S 5TlTR$RS 5 TR$RRTR&5 TR$RS5 UR TR$5 [ S 5TlTR(RRTR*5 UR TR(5 UR-U5 [/5TlTR0R3S 5 TR0R5/S Q5 TR0R75R9S[:R<R>5 TR0RA[.RBRD5 TR0RGS5 TR0RI[.RJRL5 TR0RO[PRRRT5 TR0RVRTRX5 TR0RZRTR\5 TR0R^RU4Sj5 UR TR05 g)zSetup UIzConfigured Jobsz#font-size: 14px; font-weight: bold;zNew Jobz;background-color: #4CAF50; color: white; padding: 5px 15px;EditFRun NowzCreate ScheduleDeletez(background-color: #f44336; color: white;Refresh)IDNameTypeEnabled CriticalityTagsTc$>TR5$r) _edit_job)rsr!&JobsWidget._setup_ui..Zs T^^5Er#N)0rrr setStyleSheet addWidget addStretchr new_job_btnclickedconnect_new_job edit_job_btnr2 setEnabled run_job_btn_run_jobcreate_schedule_btn_create_scheduledelete_job_btn _delete_job refresh_btnr addLayoutrtablesetColumnCountsetHorizontalHeaderLabelshorizontalHeadersetSectionResizeModer ResizeModeStretchsetSelectionBehaviorSelectionBehavior SelectRowssetAlternatingRowColorssetEditTriggers EditTriggerNoEditTriggerssetContextMenuPolicyr ContextMenuPolicyCustomContextMenucustomContextMenuRequested_show_context_menuitemSelectionChanged_on_selection_changeditemDoubleClicked)rlayout header_layout header_labels` r!rJobsWidget._setup_uisT"$ /0 ""#HI -  "'y1 &&'de   ((7 0 01'/ !!))$..9 $$U+ 1 12&y1   ((7 ##E* 0 01#./@#A    ((001F1FG   ++E2 8 89)(3 ))*TU ##++D,<,<= &&u- 3 34&y1   ((6 0 01'"^  !!!$ ,,.  ##%::1k>T>T>\>\] '' (F(F(Q(QR **40 ""<#;#;#J#JK ''(<(<(N(NO --55d6M6MN ''//0J0JK $$,,-EF$r#c rURR5nURR[ U55 [ U5GHzup#URR US[[US555 [US5nURURR55 USS:Xa)UR[RR5 URR USU5 URR US[US55 [US (aS OS 5nUS (a*UR[RR5 O)UR[RR 5 URR US U5 SS Kn[USR%55nUSS:Xa*UR[RR5 O2USS:Xa)UR[RR&5 URR USU5 US(aUR)US5O/nU(aSR+U5OSn URR US[U 55 GM} [,R."S[ U5S35 g ![0a>n [,R2"SU 35 [4R6"USSU 35 S n A g S n A ff=f)zRefresh jobs listridname criticalitycriticalr0job_typeenabledu✓ Yesu✗ NoNhightagsz, -zRefreshed jobs table: z jobszError refreshing jobs: ErrorzFailed to load jobs: )r get_all_jobsrF setRowCountlen enumeratesetItemrstrsetFontfont setForegroundr GlobalColorred darkGreengrayjsonupper darkYellowloadsjoinrdebug Exceptionerrorr rd) rjobsrowjob name_item enabled_itemr| crit_itemrktags_stres r!rJobsWidget.refresh^ss- M77'')D JJ " "3t9 -%dO ""3+;CD N+KL-S[9 !!$**//"34}%3++BNN,>,>? ""395 ""3+;C O+LM 0S^ QYZ y> ..r~~/G/GH ..r~~/B/BC ""3<8,S-?-E-E-GH }%3++BNN,>,>?'61++BNN,E,EF ""39536f+tzz#f+.2.2499T? ""3+;H+EFE,H LL1#d)EB C M LL21#6 7  w2Gs0K L L MsK+K.. L684L11L6c([URR55S:nURR U5 UR R U5 UR R U5 URR U5 g)zHandle selection changerN)rqrF selectedItemsr<r=r>r@rB)r has_selections r!rZ JobsWidget._on_selection_changedsnDJJ4467!;  $$]3 ##M2   ++M: &&}5r#returncURR5R5nU(dgUSR5nURR US5nU(a[ UR 55$S$)zGet selected job IDNr)rFselectionModel selectedRowsriteminttext)r selected_rowsr job_id_items r!_get_selected_job_idJobsWidget._get_selected_job_idse 113@@B A""$jjooc1- *5s;##%&?4?r#c[XR5nUR5(a'UR5 [R "S5 gg)zOpen dialog to create new jobz!New job created, refreshing tableN)rrexecrrinfo)rdialogs r!r;JobsWidget._new_jobs6 ww/ ;;== LLN KK; < r#cUR5nU(dg[XRUS9nUR5(a+UR 5 [ R "SUS35 gg)z Open dialog to edit selected jobN)job_idzJob z edited, refreshing table)rrrrrrr)rrrs r!r2JobsWidget._edit_jobsU**,  wwv> ;;== LLN KK$vh&?@ A r#c UR5nU(dgURRU5n[R"USSUSS3[R R [R R-5nU[R R :XaqSSKJ n U"URUR5nURUSS 9n[R"US S USS US 35 [R"SUS35 gg![a>n[R "SU35 [R""USSU35 SnAgSnAff=f)z Execute selected job immediatelyNzRun Jobz Execute job 'rbz' now?r) JobExecutor manual_gui) triggered_byz Job StartedJob 'z' started (Execution ID: z!) Check History tab for results.zManually executed job z from GUIzError executing job: rnzFailed to execute job: )rrget_jobr questionStandardButtonYesNodaemon.job_executorrr execute_job informationrrrrrd)rrrreplyrexecutor execution_idrs r!r?JobsWidget._run_jobsD**, ggoof%$$  CK= /  & & * *[-G-G-J-J J   K..22 2 S;&tww <'33F3V ''!CK=(A,Ors  4VHIFG 3 S 4QC89$$T76MaS4QRR Ss&A/D E!4EEcUR5nU(dg[UURURUS9nUR 5(a3[ R "USS5 [R"SUS35 gg![a>n[R"SU35 [ R"USS U35 SnAgSnAff=f) z Create schedule for selected jobN)pre_selected_job_idSuccesszBSchedule created successfully! Check the Schedules tab to see it.zCreated schedule for job z from Jobs tabzError creating schedule: rnzFailed to create schedule: ) rrrrrr rrrrrrd)rrrrs r!rAJobsWidget._create_schedules**,  S) $* F {{}}''Z  7x~NO  S LL4QC8 9  w2MaS0Q R R SsA'B C  4CC cUR5nU(dgURRU5n[R"USSUSS3[R R [R R-[R R5nU[R R :XaeURRU5 [R"USSUSS35 UR5 [R"S U35 gg![a>n[R"S U35 [R"US S U35 SnAgSnAff=f) zDelete selected jobNz Delete Jobz%Are you sure you want to delete job 'rbz!'? This action cannot be undone.rrz' deleted successfullyz Deleted job zError deleting job: rnzFailed to delete job: )rrrr warningrrr delete_jobrrrrrrrd)rrrrrs r!rCJobsWidget._delete_jobs2**, ggoof%##  3CK=@c d  & & * *[-G-G-J-J J  & & ) )   K..22 2 R""6*''i5V Mc9de  l6(34 3 R 3A378$$T76LQC4PQQ Rs?A#D$$ E,.4E''E,cUR5nU(dgURRU5nUS(+nURRXS9 U(aSOSn[R "USSUSSU35 UR 5 [R"S US U35 g![a>n[R"S U35 [R"US S U35 SnAgSnAff=f)z%Toggle enabled status of selected jobNrg)rgdisabledrrrbz' z Toggled job z enabled=zError toggling job: rnzFailed to toggle job: ) rrr update_jobr rrrrrrrd)rrr new_enabled status_textrs r!_toggle_enabledJobsWidget._toggle_enableds**, ggoof%i.(  N GG  v  ;'2) K  # #D)uS[MK=5Y Z LLN KK,vhi }E F N LL/s3 4  w2H0L M M NsA1B11 C9;4C44C9cUR5nU(dgURRU5n[U5n[ SU5nUR R UR5 URU5 [ SU5nUR R UR5 URU5 UR5 [ SU5nUR R UR5 URU5 UR5 US(aSOSn[ X5n U R R UR5 URU 5 UR5 [ SU5n U R R UR5 URU 5 URURR!5R#U55 g) zShow right-click context menuNzEdit...r&zCreate Schedule...rgDisableEnabler')rrrr r triggeredr:r2 addActionr? addSeparatorrArrCrrFviewport mapToGlobal) rpositionrrmenu edit_action run_actionschedule_action toggle_text toggle_action delete_actions r!rXJobsWidget._show_context_menus**, ggoof%T{i. %%dnn5 {#Y- $$T]]3 z" ""6=!!))$*?*?@ ' $'y>ix  2 ''(<(<= }%  $/ ''(8(89 }% $**%%'33H=>r#) rr@rrBr<r8rDr>rF)__name__ __module__ __qualname____firstlineno____doc__rrrrrrZrrr;r2r?rArCrrX__static_attributes__ __classcell__)r s@r!rrsg),o=%~/Mb6@c@= BS>S0R4N(*?*?r#rN)rPyQt6.QtWidgetsrrrrrrr r r r PyQt6.QtCorer PyQt6.QtGuirlogurur core.databaser core.configrgui.job_editor_dialogrgui.schedule_editor_dialogrrr#r!rs> +'1;m?m?r#