forked from bitcoinafterlife/bal-electrum-plugin
Fix BalBuildWillDialog: risolto sfarfallio su Windows + coda messaggi
- Implementata coda messaggi con debounce (50ms) per evitare aggiornamenti troppo frequenti - Aggiunto QTimer per processare i messaggi in modo efficiente - Migliorata gestione memoria con cleanup in __del__ - Mantenuto il metodo clear_layout esistente - Fix #
This commit is contained in:
40
qt.py
40
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","<br>")
|
||||
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", "<br>")
|
||||
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
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user