electrum

Electrum Bitcoin wallet
git clone https://git.parazyd.org/electrum
Log | Files | Refs | Submodules

commit 9c37ed68f481cbf06c92dcb13e444a344efe8a1d
parent 56e8ad3397a63d06fb20840945b8de9d41e77d62
Author: ThomasV <thomasv@gitorious>
Date:   Wed, 30 Apr 2014 11:40:53 +0200

wallet.has_seed

Diffstat:
Mgui/qt/main_window.py | 38+++++++++++++++-----------------------
Mlib/wallet.py | 25++++++++++++++++++++++---
2 files changed, 37 insertions(+), 26 deletions(-)

diff --git a/gui/qt/main_window.py b/gui/qt/main_window.py @@ -1354,13 +1354,16 @@ class ElectrumWindow(QMainWindow): def update_buttons_on_seed(self): - if not self.wallet.is_watching_only(): + if self.wallet.has_seed(): self.seed_button.show() + else: + self.seed_button.hide() + + if not self.wallet.is_watching_only(): self.password_button.show() self.send_button.setText(_("Send")) else: self.password_button.hide() - self.seed_button.hide() self.send_button.setText(_("Create unsigned transaction")) @@ -1469,29 +1472,18 @@ class ElectrumWindow(QMainWindow): @protected def show_seed_dialog(self, password): - if self.wallet.is_watching_only(): - QMessageBox.information(self, _('Message'), _('This is a watching-only wallet'), _('OK')) + if not self.wallet.has_seed(): + QMessageBox.information(self, _('Message'), _('This wallet has no seed'), _('OK')) return - if self.wallet.seed: - try: - mnemonic = self.wallet.get_mnemonic(password) - except Exception: - QMessageBox.warning(self, _('Error'), _('Incorrect Password'), _('OK')) - return - from seed_dialog import SeedDialog - d = SeedDialog(self, mnemonic, self.wallet.imported_keys) - d.exec_() - else: - l = {} - for k in self.wallet.master_private_keys.keys(): - pk = self.wallet.get_master_private_key(k, password) - l[k] = pk - from seed_dialog import PrivateKeysDialog - d = PrivateKeysDialog(self,l) - d.exec_() - - + try: + mnemonic = self.wallet.get_mnemonic(password) + except Exception: + QMessageBox.warning(self, _('Error'), _('Incorrect Password'), _('OK')) + return + from seed_dialog import SeedDialog + d = SeedDialog(self, mnemonic, self.wallet.imported_keys) + d.exec_() diff --git a/lib/wallet.py b/lib/wallet.py @@ -244,12 +244,20 @@ class Abstract_Wallet: pass def load_accounts(self): + self.accounts = {} + + def synchronize(self): pass + def get_pending_accounts(self): + return {} def can_create_accounts(self): return False + def check_password(self, password): + pass + def set_up_to_date(self,b): with self.lock: self.up_to_date = b @@ -266,8 +274,7 @@ class Abstract_Wallet: def import_key(self, sec, password): - # check password - seed = self.get_seed(password) + self.check_password(password) try: address = address_from_private_key(sec) except Exception: @@ -1094,6 +1101,9 @@ class Abstract_Wallet: self.verifier.stop() self.synchronizer.stop() + def restore(self, cb): + pass + class Imported_Wallet(Abstract_Wallet): @@ -1105,6 +1115,9 @@ class Imported_Wallet(Abstract_Wallet): n = self.imported_keys.values() return n == [''] * len(n) + def has_seed(self): + return False + class Deterministic_Wallet(Abstract_Wallet): @@ -1112,8 +1125,14 @@ class Deterministic_Wallet(Abstract_Wallet): def __init__(self, storage): Abstract_Wallet.__init__(self, storage) + def has_seed(self): + return self.seed == '' + def is_watching_only(self): - return (self.seed == '') and (self.master_private_keys == {}) + return self.has_seed() + + def check_password(self, password): + self.get_seed(password) def get_seed(self, password): s = pw_decode(self.seed, password)