electrum

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

commit 14b5a3afd8b51e7a1133c7c1180bcc73c720ae4a
parent d2af935fc7d0f5cc81aaa88259050c904c4b8e45
Author: ThomasV <thomasv@gitorious>
Date:   Tue,  8 Oct 2013 14:12:56 +0200

fixes for android: restore from seed

Diffstat:
Mgui/android.py | 47+++++++++++++++++++++++++++++++++++------------
Mlib/wallet.py | 2+-
2 files changed, 36 insertions(+), 13 deletions(-)

diff --git a/gui/android.py b/gui/android.py @@ -705,7 +705,7 @@ def server_dialog(servers): return response -def seed_dialog(): +def show_seed(): if wallet.use_encryption: password = droid.dialogGetPassword('Seed').result if not password: return @@ -817,7 +817,7 @@ def settings_loop(): set_listview() elif pos == "5": - seed_dialog() + show_seed() if network_changed: proxy = None @@ -892,11 +892,37 @@ class ElectrumGui: storage = WalletStorage(config) if not storage.file_exists: - print "Wallet not found. try 'electrum create'" - exit() + action = self.restore_or_create() + if not action: exit() + + wallet = Wallet(storage) + if action == 'create': + wallet.init_seed(None) + self.show_seed() + wallet.save_seed() + wallet.create_accounts() + wallet.synchronize() # generate first addresses offline + + elif action == 'restore': + seed = self.seed_dialog() + if not seed: + exit() + wallet.init_seed(str(seed)) + wallet.save_seed() + else: + exit() + + wallet.start_threads(network) - wallet = Wallet(storage) - wallet.start_threads(network) + if action == 'restore': + if not self.restore_wallet(): + exit() + + self.password_dialog(wallet) + + else: + wallet = Wallet(storage) + wallet.start_threads(network) def main(self, url): @@ -946,7 +972,7 @@ class ElectrumGui: def seed_dialog(self): - if modal_question("Input method",None,'QR Code', 'mnemonic'): + if modal_question("Enter your seed","Input method",'QR Code', 'mnemonic'): code = droid.scanBarcode() r = code.result if r: @@ -961,9 +987,7 @@ class ElectrumGui: modal_dialog('error: could not decode this seed') return - gap = 5 # default - - return str(seed), gap + return str(seed) def network_dialog(self): @@ -988,7 +1012,7 @@ class ElectrumGui: droid.dialogCreateSpinnerProgress("Electrum", msg) droid.dialogShow() - wallet.update() + wallet.restore(lambda x: None) droid.dialogDismiss() droid.vibrate() @@ -1000,6 +1024,5 @@ class ElectrumGui: if not modal_question("no transactions found for this seed","do you want to keep this wallet?"): return False - wallet.save() return True diff --git a/lib/wallet.py b/lib/wallet.py @@ -126,7 +126,7 @@ class WalletStorage: f = open(self.path,"w") f.write( s ) f.close() - if self.get('gui') != 'android': + if 'ANDROID_DATA' not in os.environ: import stat os.chmod(self.path,stat.S_IREAD | stat.S_IWRITE)