Browse Source

qml: wizard fixes

master
Sander van Grieken 2 years ago
parent
commit
dec4a8e2c7
  1. 8
      electrum/gui/qml/qeapp.py
  2. 14
      electrum/gui/qml/qedaemon.py
  3. 21
      electrum/gui/qml/qewizard.py

8
electrum/gui/qml/qeapp.py

@ -5,10 +5,9 @@ import os
import sys
import html
import threading
import asyncio
from typing import TYPE_CHECKING, Set
from PyQt5.QtCore import (pyqtSlot, pyqtSignal, pyqtProperty, QObject, QUrl, QLocale,
from PyQt5.QtCore import (pyqtSlot, pyqtSignal, pyqtProperty, QObject,
qInstallMessageHandler, QTimer, QSortFilterProxyModel)
from PyQt5.QtGui import QGuiApplication, QFontDatabase
from PyQt5.QtQml import qmlRegisterType, qmlRegisterUncreatableType, QQmlApplicationEngine
@ -61,6 +60,7 @@ if 'ANDROID_DATA' in os.environ:
notification = None
class QEAppController(BaseCrashReporter, QObject):
_dummy = pyqtSignal()
userNotify = pyqtSignal(str, str)
@ -319,6 +319,7 @@ class QEAppController(BaseCrashReporter, QObject):
self._secureWindow = secure
self.secureWindowChanged.emit()
class ElectrumQmlApplication(QGuiApplication):
_valid = True
@ -376,7 +377,7 @@ class ElectrumQmlApplication(QGuiApplication):
self.plugins = plugins
self._qeconfig = QEConfig(config)
self._qenetwork = QENetwork(daemon.network, self._qeconfig)
self.daemon = QEDaemon(daemon)
self.daemon = QEDaemon(daemon, self.plugins)
self.appController = QEAppController(self, self.daemon, self.plugins)
self._maxAmount = QEAmount(is_max=True)
self.context.setContextProperty('AppController', self.appController)
@ -413,6 +414,7 @@ class ElectrumQmlApplication(QGuiApplication):
return
self.logger.warning(file)
class Exception_Hook(QObject, Logger):
_report_exception = pyqtSignal(object, object, object, object)

14
electrum/gui/qml/qedaemon.py

@ -1,5 +1,6 @@
import os
import threading
from typing import TYPE_CHECKING
from PyQt5.QtCore import Qt, QAbstractListModel, QModelIndex
from PyQt5.QtCore import pyqtProperty, pyqtSignal, pyqtSlot, QObject
@ -7,10 +8,8 @@ from PyQt5.QtCore import pyqtProperty, pyqtSignal, pyqtSlot, QObject
from electrum.i18n import _
from electrum.logging import get_logger
from electrum.util import WalletFileException, standardize_path
from electrum.wallet import Abstract_Wallet
from electrum.plugin import run_hook
from electrum.lnchannel import ChannelState
from electrum.daemon import Daemon
from .auth import AuthMixin, auth_protect
from .qefx import QEFX
@ -18,6 +17,11 @@ from .qewallet import QEWallet
from .qewalletdb import QEWalletDB
from .qewizard import QENewWalletWizard, QEServerConnectWizard
if TYPE_CHECKING:
from electrum.daemon import Daemon
from electrum.plugin import Plugins
# wallet list model. supports both wallet basenames (wallet file basenames)
# and whole Wallet instances (loaded wallets)
class QEWalletListModel(QAbstractListModel):
@ -108,6 +112,7 @@ class QEWalletListModel(QAbstractListModel):
return
i += 1
class QEDaemon(AuthMixin, QObject):
_logger = get_logger(__name__)
@ -135,9 +140,10 @@ class QEDaemon(AuthMixin, QObject):
walletOpenError = pyqtSignal([str], arguments=["error"])
walletDeleteError = pyqtSignal([str,str], arguments=['code', 'message'])
def __init__(self, daemon: 'Daemon', parent=None):
def __init__(self, daemon: 'Daemon', plugins: 'Plugins', parent=None):
super().__init__(parent)
self.daemon = daemon
self.plugins = plugins
self.qefx = QEFX(daemon.fx, daemon.config)
self._backendWalletLoaded.connect(self._on_backend_wallet_loaded)
@ -334,7 +340,7 @@ class QEDaemon(AuthMixin, QObject):
@pyqtProperty(QENewWalletWizard, notify=newWalletWizardChanged)
def newWalletWizard(self):
if not self._new_wallet_wizard:
self._new_wallet_wizard = QENewWalletWizard(self)
self._new_wallet_wizard = QENewWalletWizard(self, self.plugins)
return self._new_wallet_wizard

21
electrum/gui/qml/qewizard.py

@ -1,12 +1,16 @@
import os
from typing import TYPE_CHECKING
from PyQt5.QtCore import pyqtProperty, pyqtSignal, pyqtSlot, QObject
from PyQt5.QtQml import QQmlApplicationEngine
from electrum.logging import get_logger
from electrum import mnemonic
from electrum.wizard import NewWalletWizard, ServerConnectWizard
if TYPE_CHECKING:
from electrum.gui.qml.qedaemon import QEDaemon
from electrum.plugin import Plugins
class QEAbstractWizard(QObject):
_logger = get_logger(__name__)
@ -45,10 +49,10 @@ class QENewWalletWizard(NewWalletWizard, QEAbstractWizard):
createError = pyqtSignal([str], arguments=["error"])
createSuccess = pyqtSignal()
def __init__(self, daemon, parent = None):
NewWalletWizard.__init__(self, daemon)
def __init__(self, daemon: 'QEDaemon', plugins: 'Plugins', parent = None):
NewWalletWizard.__init__(self, daemon.daemon, plugins)
QEAbstractWizard.__init__(self, parent)
self._daemon = daemon
self._qedaemon = daemon
# attach view names and accept handlers
self.navmap_merge({
@ -80,7 +84,7 @@ class QENewWalletWizard(NewWalletWizard, QEAbstractWizard):
self.pathChanged.emit()
def is_single_password(self):
return self._daemon.singlePasswordEnabled
return self._qedaemon.singlePasswordEnabled
@pyqtSlot('QJSValue', result=bool)
def hasDuplicateMasterKeys(self, js_data):
@ -107,7 +111,7 @@ class QENewWalletWizard(NewWalletWizard, QEAbstractWizard):
data['encrypt'] = True
data['password'] = single_password
path = os.path.join(os.path.dirname(self._daemon.daemon.config.get_wallet_path()), data['wallet_name'])
path = os.path.join(os.path.dirname(self._qedaemon.daemon.config.get_wallet_path()), data['wallet_name'])
try:
self.create_storage(path, data)
@ -124,10 +128,9 @@ class QENewWalletWizard(NewWalletWizard, QEAbstractWizard):
class QEServerConnectWizard(ServerConnectWizard, QEAbstractWizard):
def __init__(self, daemon, parent = None):
ServerConnectWizard.__init__(self, daemon)
def __init__(self, daemon: 'QEDaemon', parent=None):
ServerConnectWizard.__init__(self, daemon.daemon)
QEAbstractWizard.__init__(self, parent)
self._daemon = daemon
# attach view names
self.navmap_merge({

Loading…
Cancel
Save