1
0

qt wizard: start: merge "start_viewstate" and "initial_data"

This commit is contained in:
SomberNight
2025-08-15 20:46:24 +00:00
parent 43987c5ca0
commit 14494c13dc
4 changed files with 34 additions and 32 deletions

View File

@@ -57,7 +57,7 @@ class QEKeystoreWizard(KeystoreWizard, QEAbstractWizard, MessageBoxMixin):
config: 'SimpleConfig', config: 'SimpleConfig',
app: 'QElectrumApplication', app: 'QElectrumApplication',
plugins: 'Plugins', plugins: 'Plugins',
start_viewstate: WizardViewState = None start_viewstate: WizardViewState = None,
): ):
assert 'wallet_type' in start_viewstate.wizard_data, 'wallet_type required' assert 'wallet_type' in start_viewstate.wizard_data, 'wallet_type required'

View File

@@ -124,10 +124,7 @@ class QEAbstractWizard(QDialog, MessageBoxMixin):
@pyqtSlot() @pyqtSlot()
def strt(self): def strt(self):
if self.start_viewstate is not None: viewstate = self.start_wizard(start_viewstate=self.start_viewstate)
viewstate = self._current = self.start_viewstate
else:
viewstate = self.start_wizard()
self.load_next_component(viewstate.view, viewstate.wizard_data, viewstate.params) self.load_next_component(viewstate.view, viewstate.wizard_data, viewstate.params)
self.set_default_focus() self.set_default_focus()
@@ -236,8 +233,8 @@ class QEAbstractWizard(QDialog, MessageBoxMixin):
self.prev() # rollback the submit above self.prev() # rollback the submit above
raise e raise e
def start_wizard(self) -> 'WizardViewState': def start_wizard(self, *, start_viewstate: Optional['WizardViewState'] = None) -> 'WizardViewState':
self.start() self.start(start_viewstate=start_viewstate)
return self._current return self._current
def view_to_component(self, view) -> QWidget: def view_to_component(self, view) -> QWidget:

View File

@@ -257,13 +257,14 @@ class KeystoreWizard(AbstractWizard):
# one at a time # one at a time
return True return True
def start(self, *, initial_data: dict = None) -> WizardViewState: def start(self, *, start_viewstate: WizardViewState = None) -> WizardViewState:
if initial_data is None:
initial_data = {}
self.reset() self.reset()
start_view = 'keystore_type' if start_viewstate is None:
params = self.navmap[start_view].get('params', {}) start_view = 'keystore_type'
self._current = WizardViewState(start_view, initial_data, params) params = self.navmap[start_view].get('params', {})
self._current = WizardViewState(start_view, {}, params)
else:
self._current = start_viewstate
return self._current return self._current
# returns (sub)dict of current cosigner (or root if first) # returns (sub)dict of current cosigner (or root if first)
@@ -487,13 +488,14 @@ class NewWalletWizard(KeystoreWizard):
# todo: load only if needed, like hw plugins # todo: load only if needed, like hw plugins
self.plugins.load_plugin_by_name('trustedcoin') self.plugins.load_plugin_by_name('trustedcoin')
def start(self, *, initial_data: dict = None) -> WizardViewState: def start(self, *, start_viewstate: WizardViewState = None) -> WizardViewState:
if initial_data is None:
initial_data = {}
self.reset() self.reset()
start_view = 'wallet_name' if start_viewstate is None:
params = self.navmap[start_view].get('params', {}) start_view = 'wallet_name'
self._current = WizardViewState(start_view, initial_data, params) params = self.navmap[start_view].get('params', {})
self._current = WizardViewState(start_view, {}, params)
else:
self._current = start_viewstate
return self._current return self._current
def is_single_password(self) -> bool: def is_single_password(self) -> bool:
@@ -861,13 +863,14 @@ class ServerConnectWizard(AbstractWizard):
if wizard_data.get('autoconnect') is not None: if wizard_data.get('autoconnect') is not None:
self._daemon.config.NETWORK_AUTO_CONNECT = wizard_data.get('autoconnect') self._daemon.config.NETWORK_AUTO_CONNECT = wizard_data.get('autoconnect')
def start(self, *, initial_data: dict = None) -> WizardViewState: def start(self, *, start_viewstate: WizardViewState = None) -> WizardViewState:
if initial_data is None:
initial_data = {}
self.reset() self.reset()
start_view = 'welcome' if start_viewstate is None:
params = self.navmap[start_view].get('params', {}) start_view = 'welcome'
self._current = WizardViewState(start_view, initial_data, params) params = self.navmap[start_view].get('params', {})
self._current = WizardViewState(start_view, {}, params)
else:
self._current = start_viewstate
return self._current return self._current
@@ -888,11 +891,12 @@ class TermsOfUseWizard(AbstractWizard):
def accept_terms_of_use(self, _): def accept_terms_of_use(self, _):
self._config.TERMS_OF_USE_ACCEPTED = TERMS_OF_USE_LATEST_VERSION self._config.TERMS_OF_USE_ACCEPTED = TERMS_OF_USE_LATEST_VERSION
def start(self, *, initial_data: dict = None) -> WizardViewState: def start(self, *, start_viewstate: WizardViewState = None) -> WizardViewState:
if initial_data is None:
initial_data = {}
self.reset() self.reset()
start_view = 'terms_of_use' if start_viewstate is None:
params = self.navmap[start_view].get('params', {}) start_view = 'terms_of_use'
self._current = WizardViewState(start_view, initial_data, params) params = self.navmap[start_view].get('params', {})
self._current = WizardViewState(start_view, {}, params)
else:
self._current = start_viewstate
return self._current return self._current

View File

@@ -140,7 +140,8 @@ class KeystoreWizardTestCase(WizardTestCase):
def _wizard_for(self, *, wallet_type: str = 'standard', hww: bool = False) -> tuple[KeystoreWizard, WizardViewState]: def _wizard_for(self, *, wallet_type: str = 'standard', hww: bool = False) -> tuple[KeystoreWizard, WizardViewState]:
w = KeystoreWizardTestCase.TKeystoreWizard(self.plugins) w = KeystoreWizardTestCase.TKeystoreWizard(self.plugins)
v = w.start(initial_data={'wallet_type': wallet_type}) start_viewstate = WizardViewState('keystore_type', {'wallet_type': wallet_type}, {})
v = w.start(start_viewstate=start_viewstate)
self.assertEqual('keystore_type', v.view) self.assertEqual('keystore_type', v.view)
d = v.wizard_data d = v.wizard_data
if hww: if hww: