33import ctypes
44from datetime import datetime
55from threading import Thread , Lock
6- from PyQt5 .QtCore import Qt
6+ from queue import Queue
7+ from PyQt5 .QtCore import Qt , QTimer
78from PyQt5 .QtGui import (
89 QColor , QIcon , QMovie , QPixmap , QStandardItem , QStandardItemModel
910)
1516from frontend .PyQt5CustomClasses import QPushButton
1617from frontend .events import Events
1718from frontend .styles import styles
19+
1820class MainApp (QWidget ):
1921 def __init__ (self , ** kwargs ) -> None :
2022 super ().__init__ ()
2123 ConfigData : dict = kwargs .pop ('configData' ) # Config data gettin poped
2224 self .validSourcePlatforms : list = ConfigData ['validSourcePlatforms' ]
2325 self .invalidSourcePlatforms : list = ConfigData ['invalidSourcePlatforms' ]
2426 self .config : object = ConfigData ['config' ]
27+
28+ # --- Start of Changes ---
29+ self .message_queue = Queue ()
30+ # --- End of Changes ---
31+
2532 self .events : object = Events (
2633 config = self .config ,
2734 print2FeedbackConsole = self .print2FeedbackConsole ,
@@ -46,6 +53,12 @@ def __init__(self, **kwargs) -> None:
4653 ctypes .windll .shell32 .SetCurrentProcessExplicitAppUserModelID ("TurboVault4dbt" )
4754 self .setGeometry (100 , 100 , 800 , 1280 )
4855 self .setupUI ()
56+
57+ # --- Start of Changes ---
58+ self .timer = QTimer (self )
59+ self .timer .timeout .connect (self .process_queue )
60+ self .timer .start (100 ) # Check the queue every 100ms
61+ # --- End of Changes ---
4962
5063 def setupUI (self ) -> None :
5164 mainLayout : QVBoxLayout = QVBoxLayout ()
@@ -118,7 +131,7 @@ def __createDropdownLayout(self) -> QVBoxLayout:
118131 # Add invalid platforms as unselectable with custom color
119132 for platform in self .invalidSourcePlatforms :
120133 item = QStandardItem (platform )
121- item .setForeground (QColor ("#eb5a50" )) # Custom red color
134+ item .setForeground (QColor ("#eb5a50" ))
122135 item .setEnabled (False )
123136 model .appendRow (item )
124137
@@ -403,16 +416,23 @@ def onStart(self):
403416 ).start ()
404417
405418 def onCancel (self ):
406- self .feedbackConsole . append ("Process canceled." )
419+ self .print2FeedbackConsole ("Process canceled." )
407420
421+ # --- Start of Changes ---
408422 def print2FeedbackConsole (self , message = None ) -> None :
409- self .feedbackConsole .append (message )
423+ if message :
424+ self .message_queue .put (message )
425+
426+ def process_queue (self ):
427+ while not self .message_queue .empty ():
428+ message = self .message_queue .get_nowait ()
429+ self .feedbackConsole .append (message )
430+ # --- End of Changes ---
410431
411432 def enableWidgets (self , state ) -> None :
412433 self .sourcePlatformCombo .setEnabled (state )
413434 self .selectAllSourcesBtn .setEnabled (state )
414435 self .sourcesList .setEnabled (state )
415436 self .deselectAllTasksBtn .setEnabled (state )
416437 self .tasksList .setEnabled (state )
417- self .startButton .setEnabled (state )
418-
438+ self .startButton .setEnabled (state )
0 commit comments