qt thread panic

heirs import wizard
This commit is contained in:
2026-02-03 13:56:47 -04:00
parent faeff1ff3c
commit b8859ee5c1
3 changed files with 72 additions and 55 deletions

8
bal.py
View File

@@ -96,10 +96,10 @@ class BalPlugin(BasePlugin):
self.PREVIEW = BalConfig(config, "bal_preview", True) self.PREVIEW = BalConfig(config, "bal_preview", True)
self.SAVE_TXS = BalConfig(config, "bal_save_txs", True) self.SAVE_TXS = BalConfig(config, "bal_save_txs", True)
self.WILLEXECUTORS = BalConfig(config, "bal_willexecutors", True) self.WILLEXECUTORS = BalConfig(config, "bal_willexecutors", True)
self.PING_WILLEXECUTORS = BalConfig(config, "bal_ping_willexecutors", True) #self.PING_WILLEXECUTORS = BalConfig(config, "bal_ping_willexecutors", True)
self.ASK_PING_WILLEXECUTORS = BalConfig( #self.ASK_PING_WILLEXECUTORS = BalConfig(
config, "bal_ask_ping_willexecutors", True # config, "bal_ask_ping_willexecutors", True
) #)
self.NO_WILLEXECUTOR = BalConfig(config, "bal_no_willexecutor", True) self.NO_WILLEXECUTOR = BalConfig(config, "bal_no_willexecutor", True)
self.HIDE_REPLACED = BalConfig(config, "bal_hide_replaced", True) self.HIDE_REPLACED = BalConfig(config, "bal_hide_replaced", True)
self.HIDE_INVALIDATED = BalConfig(config, "bal_hide_invalidated", True) self.HIDE_INVALIDATED = BalConfig(config, "bal_hide_invalidated", True)

79
qt.py
View File

@@ -327,27 +327,27 @@ class Plugin(BalPlugin, Logger):
2, 2,
"Hide invalidated transactions from will detail and list", "Hide invalidated transactions from will detail and list",
) )
add_widget( #add_widget(
grid, # grid,
"Ping Willexecutors", # "Ping Willexecutors",
heir_ping_willexecutors, # heir_ping_willexecutors,
3, # 3,
"Ping willexecutors to get payment info before compiling will", # "Ping willexecutors to get payment info before compiling will",
) #)
add_widget( #add_widget(
grid, # grid,
" - Ask before", # " - Ask before",
heir_ask_ping_willexecutors, # heir_ask_ping_willexecutors,
4, # 4,
"Ask before to ping willexecutor", # "Ask before to ping willexecutor",
) #)
add_widget( #add_widget(
grid, # grid,
"Backup Transaction", # "Backup Transaction",
heir_no_willexecutor, # heir_no_willexecutor,
5, # 5,
"Add transactions without willexecutor", # "Add transactions without willexecutor",
) #)
# add_widget(grid,"Enable Multiverse(EXPERIMENTAL/BROKEN)",heir_enable_multiverse,6,"enable multiple locktimes, will import.... ") # add_widget(grid,"Enable Multiverse(EXPERIMENTAL/BROKEN)",heir_enable_multiverse,6,"enable multiple locktimes, will import.... ")
grid.addWidget(heir_repush, 7, 0) grid.addWidget(heir_repush, 7, 0)
grid.addWidget( grid.addWidget(
@@ -656,16 +656,17 @@ class BalWindow(Logger):
Will.normalize_will(self.willitems, self.wallet) Will.normalize_will(self.willitems, self.wallet)
def build_will(self, ignore_duplicate=True, keep_original=True): def build_will(self, ignore_duplicate=True, keep_original=True):
print("aa")
will = {} will = {}
willtodelete = [] willtodelete = []
willtoappend = {} willtoappend = {}
try: try:
self.init_class_variables() self.init_class_variables()
print("bb")
self.willexecutors = Willexecutors.get_willexecutors( self.willexecutors = Willexecutors.get_willexecutors(
self.bal_plugin, update=False, bal_window=self self.bal_plugin, update=False, bal_window=self
) )
print("cc")
if not self.no_willexecutor: if not self.no_willexecutor:
f = False f = False
@@ -1578,9 +1579,13 @@ class BalWizardDialog(BalDialog):
) )
def on_next_we(self): def on_next_we(self):
close_window = BalBuildWillDialog(self.bal_window, self) print("a")
close_window = BalBuildWillDialog(self.bal_window)
print("b")
close_window.build_will_task() close_window.build_will_task()
print("c")
self.close() self.close()
print("d")
# self.next_widget(BalWizardLocktimeAndFeeWidget(self.bal_window,self,self.on_next_locktimeandfee,self.on_next_wedonwload,self.on_next_wedonwload.on_cancel_heir)) # self.next_widget(BalWizardLocktimeAndFeeWidget(self.bal_window,self,self.on_next_locktimeandfee,self.on_next_wedonwload,self.on_next_wedonwload.on_cancel_heir))
def on_next_locktimeandfee(self): def on_next_locktimeandfee(self):
@@ -1688,7 +1693,7 @@ class BalWizardHeirsWidget(BalWizardWidget):
button_import = QPushButton(_("Import")) button_import = QPushButton(_("Import"))
button_import.clicked.connect(self.import_from_file) button_import.clicked.connect(self.import_from_file)
button_export = QPushButton(_("Export")) button_export = QPushButton(_("Export"))
button_import.clicked.connect(self.export_to_file) button_export.clicked.connect(self.export_to_file)
widget = QWidget() widget = QWidget()
vbox = QVBoxLayout(widget) vbox = QVBoxLayout(widget)
vbox.addWidget(self.heirs_list) vbox.addWidget(self.heirs_list)
@@ -1760,7 +1765,7 @@ class BalWizardWEDownloadWidget(BalWizardWidget):
def on_success(willexecutors): def on_success(willexecutors):
self.bal_window.willexecutors.update(willexecutors) self.bal_window.willexecutors.update(willexecutors)
self.bal_window.ping_willexecutors(self.bal_window.willexecutors,self) self.bal_window.ping_willexecutors(self.bal_window.willexecutors,False)
if index < 1: if index < 1:
for we in self.bal_window.willexecutors: for we in self.bal_window.willexecutors:
if self.bal_window.willexecutors[we]["status"] == 200: if self.bal_window.willexecutors[we]["status"] == 200:
@@ -2029,6 +2034,7 @@ class BalBuildWillDialog(BalDialog):
if not parent: if not parent:
parent = bal_window.window parent = bal_window.window
BalDialog.__init__(self, parent, bal_window.bal_plugin, "Building Will") BalDialog.__init__(self, parent, bal_window.bal_plugin, "Building Will")
self.parent=parent
self.updatemessage.connect(self.update) self.updatemessage.connect(self.update)
self.bal_window = bal_window self.bal_window = bal_window
self.message_label = QLabel("Building Will:") self.message_label = QLabel("Building Will:")
@@ -2051,15 +2057,21 @@ class BalBuildWillDialog(BalDialog):
pass pass
def build_will_task(self): def build_will_task(self):
print("1")
_logger.debug("build will task to be started") _logger.debug("build will task to be started")
print("2")
self.thread.add( self.thread.add(
self.task_phase1, self.task_phase1,
on_success=self.on_success_phase1, on_success=self.on_success_phase1,
on_done=self.on_accept, on_done=self.on_accept,
on_error=self.on_error_phase1, on_error=self.on_error_phase1,
) )
print(self.parent)
print("3")
self.show() self.show()
print("4")
self.exec() self.exec()
print("5")
def task_phase1(self): def task_phase1(self):
_logger.debug("close plugin phase 1 started") _logger.debug("close plugin phase 1 started")
@@ -3275,8 +3287,13 @@ class WillExecutorList(MyTreeView):
self.Columns.INFO, self.Columns.INFO,
], ],
) )
self.parent = parent self.parent=parent
self.setModel(QStandardItemModel(self)) try:
self.setModel(QStandardItemModel(self))
self.sortByColumn(self.Columns.SELECTED, Qt.SortOrder.AscendingOrder)
self.setSelectionMode(QAbstractItemView.SelectionMode.ExtendedSelection)
except Exception:
pass
self.setSortingEnabled(True) self.setSortingEnabled(True)
self.std_model = self.model() self.std_model = self.model()
self.config = parent.bal_plugin.config self.config = parent.bal_plugin.config
@@ -3490,9 +3507,9 @@ class WillExecutorWidget(QWidget, MessageBoxMixin):
b.clicked.connect(self.export_file) b.clicked.connect(self.export_file)
buttonbox.addWidget(b) buttonbox.addWidget(b)
b = QPushButton(_("Ping All")) #b = QPushButton(_("Ping All"))
b.clicked.connect(self.update_willexecutors) #b.clicked.connect(self.update_willexecutors)
buttonbox.addWidget(b) #buttonbox.addWidget(b)
vbox.addLayout(buttonbox) vbox.addLayout(buttonbox)
self.willexecutor_list.update() self.willexecutor_list.update()

View File

@@ -42,27 +42,27 @@ class Willexecutors:
if not bal_url in willexecutors: if not bal_url in willexecutors:
_logger.debug(f"force add {bal_url} willexecutor") _logger.debug(f"force add {bal_url} willexecutor")
willexecutors[bal_url] = bal_executor willexecutors[bal_url] = bal_executor
if update: #if update:
found = False # found = False
for url, we in willexecutors.items(): # for url, we in willexecutors.items():
if Willexecutors.is_selected(we): # if Willexecutors.is_selected(we):
found = True # found = True
if found or force: # if found or force:
if bal_plugin.PING_WILLEXECUTORS.get() or force: # if bal_plugin.PING_WILLEXECUTORS.get() or force:
ping_willexecutors = True # ping_willexecutors = True
if bal_plugin.ASK_PING_WILLEXECUTORS.get() and not force: # if bal_plugin.ASK_PING_WILLEXECUTORS.get() and not force:
if bal_window: # if bal_window:
ping_willexecutors = bal_window.window.question( # ping_willexecutors = bal_window.window.question(
_( # _(
"Contact willexecutors servers to update payment informations?" # "Contact willexecutors servers to update payment informations?"
) # )
) # )
if ping_willexecutors: # if ping_willexecutors:
if task: # if task:
bal_window.ping_willexecutors(willexecutors, task) # bal_window.ping_willexecutors(willexecutors, task)
else: # else:
bal_window.ping_willexecutors_task(willexecutors) # bal_window.ping_willexecutors_task(willexecutors)
w_sorted = dict( w_sorted = dict(
sorted( sorted(
willexecutors.items(), key=lambda w: w[1].get("sort", 0), reverse=True willexecutors.items(), key=lambda w: w[1].get("sort", 0), reverse=True