diff --git a/scripts/joinmarket-qt.py b/scripts/joinmarket-qt.py index 11be9ed..058e4e8 100755 --- a/scripts/joinmarket-qt.py +++ b/scripts/joinmarket-qt.py @@ -602,7 +602,8 @@ class SpendTab(QWidget): lambda: asyncio.ensure_future(self.generateTumbleSchedule())) self.sch_startButton = QPushButton('Run schedule') self.sch_startButton.setEnabled(False) #not runnable until schedule chosen - self.sch_startButton.clicked.connect(self.startMultiple) + self.sch_startButton.clicked.connect( + lambda: asyncio.ensure_future(self.startMultiple())) self.sch_abortButton = QPushButton('Abort') self.sch_abortButton.setEnabled(False) self.sch_abortButton.clicked.connect(self.abortTransactions) @@ -733,7 +734,7 @@ class SpendTab(QWidget): mainWindow.statusBar().showMessage("Transaction in a block, now continuing.") self.startJoin() - def startMultiple(self): + async def startMultiple(self): if jm_single().bc_interface is None: log.info("Cannot start join, blockchain source not available.") return @@ -752,7 +753,8 @@ class SpendTab(QWidget): #is in case the user can increase success probability by changing them. if self.tumbler_options == True: wizard = TumbleRestartWizard() - wizard_return = wizard.exec_() + wizard.open() + wizard_return = await wizard.result() if wizard_return == QDialog.Rejected: return self.tumbler_options = wizard.getOptions() diff --git a/scripts/qtsupport.py b/scripts/qtsupport.py index 57c0a40..7391c1b 100644 --- a/scripts/qtsupport.py +++ b/scripts/qtsupport.py @@ -975,12 +975,25 @@ class ScheduleWizard(QWizard): return get_tumble_schedule(self.opts, self.destaddrs, wallet_balance_by_mixdepth, max_mixdepth_in_wallet) + class TumbleRestartWizard(QWizard): + def __init__(self): super().__init__() + self.setModal(True) + self.result_fut = asyncio.get_event_loop().create_future() + self.finished.connect(self.on_finished) self.setWindowTitle("Restart tumbler schedule") self.setPage(0, RestartSettingsPage(self)) + @QtCore.Slot(QMessageBox.StandardButton) + def on_finished(self, button): + self.result_fut.set_result(button) + + async def result(self): + await self.result_fut + return self.result_fut.result() + def getOptions(self): self.opts = {} self.opts['mincjamount'] = int(self.field("mincjamount")) @@ -991,6 +1004,7 @@ class TumbleRestartWizard(QWizard): jm_single().mincjamount = self.opts['mincjamount'] return self.opts + class RestartSettingsPage(QWizardPage): def __init__(self, parent):