electrum

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

commit b00175d00db9279feab241532e124bd3cb432699
parent 1741d1cbd09990fcb20ea7c04d6d0c29a78beb02
Author: thomasv <thomasv@gitorious>
Date:   Mon,  7 Oct 2013 20:11:41 +0200

update android interface

Diffstat:
Melectrum | 2+-
Mgui/android.py | 87++++++++++++++++++++++++++++++++++++++++---------------------------------------
Mlib/util.py | 2++
3 files changed, 47 insertions(+), 44 deletions(-)

diff --git a/electrum b/electrum @@ -125,7 +125,7 @@ if __name__ == '__main__': # config is an object passed to the various constructors (wallet, interface, gui) if is_android: - config_options = {'wallet_path':"/sdcard/electrum.dat", 'portable':True, 'verbose':True, 'gui':'android', 'auto_cycle':True} + config_options = {'portable':True, 'verbose':True, 'gui':'android', 'auto_cycle':True} else: config_options = eval(str(options)) for k, v in config_options.items(): diff --git a/gui/android.py b/gui/android.py @@ -21,7 +21,7 @@ import android -from electrum import SimpleConfig, Interface, WalletSynchronizer, Wallet, format_satoshis, mnemonic_encode, mnemonic_decode, is_valid +from electrum import SimpleConfig, Wallet, WalletStorage, format_satoshis, mnemonic_encode, mnemonic_decode, is_valid from electrum import util from decimal import Decimal import datetime, re @@ -144,9 +144,7 @@ def protocol_dialog(host, protocol, z): if not response: return if not selected_item: return if response.get('which') == 'positive': - p = protocols[selected_item[0]] - port = z[p] - return host + ':' + port + ':' + p + return protocols[selected_item[0]] @@ -417,7 +415,7 @@ def set_history_layout(n): status_text = '' def update_layout(): global status_text - if not wallet.interface.is_connected: + if not network.is_connected(): text = "Not connected..." elif not wallet.up_to_date: text = "Synchronizing..." @@ -429,7 +427,7 @@ def update_layout(): # vibrate if status changed if text != status_text: - if status_text and wallet.interface.is_connected and wallet.up_to_date: + if status_text and network.is_connected() and wallet.up_to_date: droid.vibrate() status_text = text @@ -500,7 +498,7 @@ do_refresh = False def update_callback(): global do_refresh - print "gui callback", wallet.interface.is_connected, wallet.up_to_date + print "gui callback", network.is_connected(), wallet.up_to_date do_refresh = True droid.eventPost("refresh",'z') @@ -756,7 +754,7 @@ def settings_loop(): def set_listview(): - server, port, p = interface.server.split(':') + server, port, p = network.default_server.split(':') fee = str( Decimal( wallet.fee)/100000000 ) is_encrypted = 'yes' if wallet.use_encryption else 'no' protocol = protocol_name(p) @@ -773,49 +771,34 @@ def settings_loop(): if event == 'OK': continue if not event: continue - servers = interface.get_servers() + servers = network.get_servers() name = event.get("name") if not name: continue if name == "itemclick": pos = event["data"]["position"] - host, port, protocol = interface.server.split(':') + host, port, protocol = network.default_server.split(':') + network_changed = False if pos == "0": #server host = server_dialog(servers) if host: p = servers[host] - port = p['t'] - srv = host + ':' + port + ':t' - wallet.config.set_key("server", srv, True) - try: - wallet.interface.set_server(srv) - except: - modal_dialog('error','invalid server') - set_listview() + port = p[protocol] + network_changed = True elif pos == "1": #protocol if host in servers: - srv = protocol_dialog(host, protocol, servers[host]) - if srv: - wallet.config.set_key("server", srv, True) - try: - wallet.interface.set_server(srv) - except: - modal_dialog('error','invalid server') - set_listview() + protocol = protocol_dialog(host, protocol, servers[host]) + z = servers[host] + port = z[p] + network_changed = True elif pos == "2": #port a_port = modal_input('Port number', 'If you use a public server, this field is set automatically when you set the protocol', port, "number") - if a_port: - if a_port != port: - srv = host + ':' + a_port + ':'+ protocol - wallet.config.set_key("server", srv, True) - try: - wallet.interface.set_server(srv) - except: - modal_dialog('error','invalid port number') - set_listview() + if a_port != port: + port = a_port + network_changed = True elif pos == "3": #fee fee = modal_input('Transaction fee', 'The fee will be this amount multiplied by the number of inputs in your transaction. ', str( Decimal( wallet.fee)/100000000 ), "numberDecimal") @@ -834,6 +817,14 @@ def settings_loop(): elif pos == "5": seed_dialog() + if network_changed: + proxy = None + auto_connect = False + try: + network.set_parameters(host, port, protocol, proxy, auto_connect) + except: + modal_dialog('error','invalid server') + set_listview() elif name in menu_commands: out = event["name"] @@ -885,18 +876,26 @@ def make_bitmap(addr): droid = android.Android() menu_commands = ["send", "receive", "settings", "contacts", "main"] wallet = None -interface = None +network = None class ElectrumGui: - def __init__(self, w, config, app=None): - global wallet, interface + def __init__(self, config, _network): + global wallet, network wallet = w - interface = wallet.interface - interface.register_callback('updated',update_callback) - interface.register_callback('connected', update_callback) - interface.register_callback('disconnected', update_callback) - interface.register_callback('disconnecting', update_callback) + network = _network + network.register_callback('updated', update_callback) + network.register_callback('connected', update_callback) + network.register_callback('disconnected', update_callback) + network.register_callback('disconnecting', update_callback) + + storage = WalletStorage(config) + if not storage.file_exists: + print "Wallet not found. try 'electrum create'" + exit() + + self.wallet = Wallet(storage) + self.wallet.start_threads(network) def main(self, url): @@ -929,6 +928,7 @@ class ElectrumGui: droid.makeToast("Bye!") + def restore_or_create(self): droid.dialogCreateAlert("Wallet not found","Do you want to create a new wallet, or restore an existing one?") droid.dialogSetPositiveButtonText('Create') @@ -943,6 +943,7 @@ class ElectrumGui: return 'restore' if response.get('which') == 'neutral' else 'create' + def seed_dialog(self): if modal_question("Input method",None,'QR Code', 'mnemonic'): code = droid.scanBarcode() diff --git a/lib/util.py b/lib/util.py @@ -46,6 +46,8 @@ def user_dir(): return os.path.join(os.environ["APPDATA"], "Electrum") elif "LOCALAPPDATA" in os.environ: return os.path.join(os.environ["LOCALAPPDATA"], "Electrum") + elif 'ANDROID_DATA' in os.environ: + return "/sdcard/electrum/" else: #raise BaseException("No home directory found in environment variables.") return