diff --git a/scripts/joinmarket-qt.py b/scripts/joinmarket-qt.py index df477a4..536d727 100644 --- a/scripts/joinmarket-qt.py +++ b/scripts/joinmarket-qt.py @@ -270,8 +270,7 @@ class SpendStateMgr(object): in which the spend tab is being run """ def __init__(self, updatecallback): - self.typestate = 'single' - self.runstate = 'ready' + self.reset_vars() self.updatecallback = updatecallback def updateType(self, t): @@ -282,9 +281,14 @@ class SpendStateMgr(object): self.runstate = r self.updatecallback() - def reset(self): + def reset_vars(self): self.typestate = 'single' self.runstate = 'ready' + self.schedule_name = None + self.loaded_schedule = None + + def reset(self): + self.reset_vars() self.updatecallback() class SpendTab(QWidget): @@ -309,10 +313,9 @@ class SpendTab(QWidget): #Signal indicating Taker has finished its work self.jmclient_obj.connect(self.jmclient_obj, QtCore.SIGNAL('JMCLIENT:finished'), self.takerFinished) - #will be set in 'multiple join' tab if the user chooses to run a schedule - self.loaded_schedule = None #tracks which mode the spend tab is run in self.spendstate = SpendStateMgr(self.toggleButtons) + self.spendstate.reset() #trigger callback to 'ready' state def generateTumbleSchedule(self): #needs a set of tumbler options and destination addresses, so needs @@ -321,10 +324,10 @@ class SpendTab(QWidget): wizard_return = wizard.exec_() if wizard_return == QDialog.Rejected: return - self.loaded_schedule = wizard.get_schedule() + self.spendstate.loaded_schedule = wizard.get_schedule() + self.spendstate.schedule_name = wizard.get_name() + self.updateSchedView() self.tumbler_options = wizard.opts - self.sch_label2.setText(wizard.get_name()) - self.sched_view.setText(schedule_to_text(self.loaded_schedule)) self.sch_startButton.setEnabled(True) def selectSchedule(self): @@ -346,13 +349,13 @@ class SpendTab(QWidget): title='Error') else: w.statusBar().showMessage("Schedule loaded OK.") - self.updateSchedView(rawsched, os.path.basename(str(firstarg))) - self.spendstate.updateType('multiple') - self.loaded_schedule = schedule + self.spendstate.loaded_schedule = schedule + self.spendstate.schedule_name = os.path.basename(str(firstarg)) + self.updateSchedView() - def updateSchedView(self, text, name): - self.sch_label2.setText(name) - self.sched_view.setText(text) + def updateSchedView(self): + self.sch_label2.setText(self.spendstate.schedule_name) + self.sched_view.setText(schedule_to_text(self.spendstate.loaded_schedule)) def getDonateLayout(self): donateLayout = QHBoxLayout() @@ -506,10 +509,9 @@ class SpendTab(QWidget): if not self.spendstate.runstate == 'ready': log.info("Cannot start join, already running.") return - if not self.loaded_schedule: + if not self.spendstate.loaded_schedule: log.info("Cannot start, no schedule loaded.") return - self.taker_schedule = self.loaded_schedule #self.qtw.setTabEnabled(0, False) self.spendstate.updateType('multiple') self.spendstate.updateRun('running') @@ -528,7 +530,8 @@ class SpendTab(QWidget): mixdepth = int(self.widgets[2][1].text()) #note 'amount' is integer, so not interpreted as fraction #see notes in sample testnet schedule for format - self.taker_schedule = [[mixdepth, amount, makercount, destaddr, 0, 0]] + self.spendstate.loaded_schedule = [[mixdepth, amount, makercount, + destaddr, 0, 0]] self.spendstate.updateType('single') self.spendstate.updateRun('running') self.startJoin() @@ -563,7 +566,7 @@ class SpendTab(QWidget): check_offers_callback = None self.taker = Taker(w.wallet, - self.taker_schedule, + self.spendstate.loaded_schedule, order_chooser=weighted_order_choose, callbacks=[check_offers_callback, self.callback_takerInfo, @@ -591,7 +594,7 @@ class SpendTab(QWidget): """Receives the signal from the JMClient thread """ if self.taker.aborted: - log.debug("Not processing orders, user has aborted.") + log.debug("Not processing offers, user has aborted.") return False self.offers_fee = offers_fee self.jmclient_obj.emit(QtCore.SIGNAL('JMCLIENT:offers')) @@ -721,10 +724,10 @@ class SpendTab(QWidget): self.taker_finished_waittime, self.taker_finished_txdetails) + self.spendstate.loaded_schedule = self.taker.schedule #Shows the schedule updates in the GUI; TODO make this more visual if self.spendstate.typestate == 'multiple': - self.updateSchedView(schedule_to_text(self.taker.schedule), - 'TUMBLE.schedule') + self.updateSchedView() #GUI-specific updates; QTimer.singleShot serves the role #of reactor.callLater