Browse Source

qt: wizard: keep wizard stack in a consistent state if load_next_component raises

master
Sander van Grieken 1 year ago
parent
commit
6bbc5f8553
No known key found for this signature in database
GPG Key ID: 9BCF8209EA402EBA
  1. 11
      electrum/gui/qt/wizard/wizard.py

11
electrum/gui/qt/wizard/wizard.py

@ -143,6 +143,7 @@ class QEAbstractWizard(QDialog, MessageBoxMixin):
comp = self.view_to_component(view) comp = self.view_to_component(view)
try: try:
self._logger.debug(f'load_next_component: {comp!r}')
page = comp(self.main_widget, self) page = comp(self.main_widget, self)
except Exception as e: except Exception as e:
self._logger.error(f'not a class: {comp!r}') self._logger.error(f'not a class: {comp!r}')
@ -151,13 +152,11 @@ class QEAbstractWizard(QDialog, MessageBoxMixin):
page.params = params page.params = params
page.on_ready() # call before component emits any signals page.on_ready() # call before component emits any signals
self._logger.debug(f'load_next_component: {page=!r}')
page.updated.connect(self.on_page_updated) page.updated.connect(self.on_page_updated)
# add to stack and update wizard # add to stack and update wizard
self.main_widget.setCurrentIndex(self.main_widget.addWidget(page))
page.apply() page.apply()
self.main_widget.setCurrentIndex(self.main_widget.addWidget(page))
self.update() self.update()
@pyqtSlot(object) @pyqtSlot(object)
@ -218,7 +217,11 @@ class QEAbstractWizard(QDialog, MessageBoxMixin):
self.prev() # rollback the submit above self.prev() # rollback the submit above
else: else:
view = self.submit(wd) view = self.submit(wd)
self.load_next_component(view.view, view.wizard_data, view.params) try:
self.load_next_component(view.view, view.wizard_data, view.params)
except Exception as e:
self.prev() # rollback the submit above
raise e
def start_wizard(self) -> 'WizardViewState': def start_wizard(self) -> 'WizardViewState':
self.start() self.start()

Loading…
Cancel
Save