diff --git a/qt.py b/qt.py
index 86e1b35..81a65fa 100644
--- a/qt.py
+++ b/qt.py
@@ -2085,6 +2085,14 @@ class BalBuildWillDialog(BalDialog):
self.setMinimumWidth(600)
self.setMinimumHeight(100)
self.setSizePolicy(QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Preferred)
+
+ # Coda per i messaggi (thread-safe)
+ self._message_queue = []
+ self._message_timer = QTimer(self)
+ self._message_timer.setSingleShot(True)
+ self._message_timer.setInterval(50) # Debounce: 50ms
+ self._message_timer.timeout.connect(self._process_message_queue)
+
self.labels = []
self.check_row = None
self.inval_row = None
@@ -2535,17 +2543,41 @@ class BalBuildWillDialog(BalDialog):
w.deleteLater()
def msg_update(self):
+ """Aggiorna l'interfaccia con i messaggi in coda."""
+ self._message_queue.extend(self.labels)
+ self.labels = []
+ if not self._message_timer.isActive():
+ self._message_timer.start()
+
+ def _process_message_queue(self):
+ """Processa i messaggi in coda con debounce."""
+ if not self._message_queue:
+ return
+
+ # Pulisce il layout esistente
self.clear_layout(self.labelsbox)
- for label in self.labels:
- label=label.replace("\n","
")
- qlabel=QLabel(label)
- self.labelsbox.addWidget(QLabel(label),1)
+
+ # Aggiunge solo i messaggi nuovi
+ for text in self._message_queue:
+ formatted_text = text.replace("\n", "
")
+ qlabel = QLabel(formatted_text)
+ qlabel.setWordWrap(True)
+ self.labelsbox.addWidget(qlabel)
+
+ self._message_queue = []
self.setMinimumHeight(30*(len(self.labels)+2))
def get_text(self):
return self.message_label.text()
+ def __del__(self):
+ """Cleanup per evitare memory leak."""
+ if hasattr(self, '_message_timer') and self._message_timer:
+ self._message_timer.stop()
+ self._message_timer.deleteLater()
+ self.clear_layout(self.labelsbox)
+
pass