update android interface
This commit is contained in:
parent
1741d1cbd0
commit
b00175d00d
2
electrum
2
electrum
@ -125,7 +125,7 @@ if __name__ == '__main__':
|
|||||||
|
|
||||||
# config is an object passed to the various constructors (wallet, interface, gui)
|
# config is an object passed to the various constructors (wallet, interface, gui)
|
||||||
if is_android:
|
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:
|
else:
|
||||||
config_options = eval(str(options))
|
config_options = eval(str(options))
|
||||||
for k, v in config_options.items():
|
for k, v in config_options.items():
|
||||||
|
|||||||
@ -21,7 +21,7 @@
|
|||||||
|
|
||||||
import android
|
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 electrum import util
|
||||||
from decimal import Decimal
|
from decimal import Decimal
|
||||||
import datetime, re
|
import datetime, re
|
||||||
@ -144,9 +144,7 @@ def protocol_dialog(host, protocol, z):
|
|||||||
if not response: return
|
if not response: return
|
||||||
if not selected_item: return
|
if not selected_item: return
|
||||||
if response.get('which') == 'positive':
|
if response.get('which') == 'positive':
|
||||||
p = protocols[selected_item[0]]
|
return protocols[selected_item[0]]
|
||||||
port = z[p]
|
|
||||||
return host + ':' + port + ':' + p
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -417,7 +415,7 @@ def set_history_layout(n):
|
|||||||
status_text = ''
|
status_text = ''
|
||||||
def update_layout():
|
def update_layout():
|
||||||
global status_text
|
global status_text
|
||||||
if not wallet.interface.is_connected:
|
if not network.is_connected():
|
||||||
text = "Not connected..."
|
text = "Not connected..."
|
||||||
elif not wallet.up_to_date:
|
elif not wallet.up_to_date:
|
||||||
text = "Synchronizing..."
|
text = "Synchronizing..."
|
||||||
@ -429,7 +427,7 @@ def update_layout():
|
|||||||
|
|
||||||
# vibrate if status changed
|
# vibrate if status changed
|
||||||
if text != status_text:
|
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()
|
droid.vibrate()
|
||||||
status_text = text
|
status_text = text
|
||||||
|
|
||||||
@ -500,7 +498,7 @@ do_refresh = False
|
|||||||
|
|
||||||
def update_callback():
|
def update_callback():
|
||||||
global do_refresh
|
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
|
do_refresh = True
|
||||||
droid.eventPost("refresh",'z')
|
droid.eventPost("refresh",'z')
|
||||||
|
|
||||||
@ -756,7 +754,7 @@ def settings_loop():
|
|||||||
|
|
||||||
|
|
||||||
def set_listview():
|
def set_listview():
|
||||||
server, port, p = interface.server.split(':')
|
server, port, p = network.default_server.split(':')
|
||||||
fee = str( Decimal( wallet.fee)/100000000 )
|
fee = str( Decimal( wallet.fee)/100000000 )
|
||||||
is_encrypted = 'yes' if wallet.use_encryption else 'no'
|
is_encrypted = 'yes' if wallet.use_encryption else 'no'
|
||||||
protocol = protocol_name(p)
|
protocol = protocol_name(p)
|
||||||
@ -773,49 +771,34 @@ def settings_loop():
|
|||||||
if event == 'OK': continue
|
if event == 'OK': continue
|
||||||
if not event: continue
|
if not event: continue
|
||||||
|
|
||||||
servers = interface.get_servers()
|
servers = network.get_servers()
|
||||||
name = event.get("name")
|
name = event.get("name")
|
||||||
if not name: continue
|
if not name: continue
|
||||||
|
|
||||||
if name == "itemclick":
|
if name == "itemclick":
|
||||||
pos = event["data"]["position"]
|
pos = event["data"]["position"]
|
||||||
host, port, protocol = interface.server.split(':')
|
host, port, protocol = network.default_server.split(':')
|
||||||
|
network_changed = False
|
||||||
|
|
||||||
if pos == "0": #server
|
if pos == "0": #server
|
||||||
host = server_dialog(servers)
|
host = server_dialog(servers)
|
||||||
if host:
|
if host:
|
||||||
p = servers[host]
|
p = servers[host]
|
||||||
port = p['t']
|
port = p[protocol]
|
||||||
srv = host + ':' + port + ':t'
|
network_changed = True
|
||||||
wallet.config.set_key("server", srv, True)
|
|
||||||
try:
|
|
||||||
wallet.interface.set_server(srv)
|
|
||||||
except:
|
|
||||||
modal_dialog('error','invalid server')
|
|
||||||
set_listview()
|
|
||||||
|
|
||||||
elif pos == "1": #protocol
|
elif pos == "1": #protocol
|
||||||
if host in servers:
|
if host in servers:
|
||||||
srv = protocol_dialog(host, protocol, servers[host])
|
protocol = protocol_dialog(host, protocol, servers[host])
|
||||||
if srv:
|
z = servers[host]
|
||||||
wallet.config.set_key("server", srv, True)
|
port = z[p]
|
||||||
try:
|
network_changed = True
|
||||||
wallet.interface.set_server(srv)
|
|
||||||
except:
|
|
||||||
modal_dialog('error','invalid server')
|
|
||||||
set_listview()
|
|
||||||
|
|
||||||
elif pos == "2": #port
|
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")
|
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:
|
||||||
if a_port != port:
|
port = a_port
|
||||||
srv = host + ':' + a_port + ':'+ protocol
|
network_changed = True
|
||||||
wallet.config.set_key("server", srv, True)
|
|
||||||
try:
|
|
||||||
wallet.interface.set_server(srv)
|
|
||||||
except:
|
|
||||||
modal_dialog('error','invalid port number')
|
|
||||||
set_listview()
|
|
||||||
|
|
||||||
elif pos == "3": #fee
|
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")
|
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":
|
elif pos == "5":
|
||||||
seed_dialog()
|
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:
|
elif name in menu_commands:
|
||||||
out = event["name"]
|
out = event["name"]
|
||||||
@ -885,18 +876,26 @@ def make_bitmap(addr):
|
|||||||
droid = android.Android()
|
droid = android.Android()
|
||||||
menu_commands = ["send", "receive", "settings", "contacts", "main"]
|
menu_commands = ["send", "receive", "settings", "contacts", "main"]
|
||||||
wallet = None
|
wallet = None
|
||||||
interface = None
|
network = None
|
||||||
|
|
||||||
class ElectrumGui:
|
class ElectrumGui:
|
||||||
|
|
||||||
def __init__(self, w, config, app=None):
|
def __init__(self, config, _network):
|
||||||
global wallet, interface
|
global wallet, network
|
||||||
wallet = w
|
wallet = w
|
||||||
interface = wallet.interface
|
network = _network
|
||||||
interface.register_callback('updated',update_callback)
|
network.register_callback('updated', update_callback)
|
||||||
interface.register_callback('connected', update_callback)
|
network.register_callback('connected', update_callback)
|
||||||
interface.register_callback('disconnected', update_callback)
|
network.register_callback('disconnected', update_callback)
|
||||||
interface.register_callback('disconnecting', 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):
|
def main(self, url):
|
||||||
@ -929,6 +928,7 @@ class ElectrumGui:
|
|||||||
|
|
||||||
droid.makeToast("Bye!")
|
droid.makeToast("Bye!")
|
||||||
|
|
||||||
|
|
||||||
def restore_or_create(self):
|
def restore_or_create(self):
|
||||||
droid.dialogCreateAlert("Wallet not found","Do you want to create a new wallet, or restore an existing one?")
|
droid.dialogCreateAlert("Wallet not found","Do you want to create a new wallet, or restore an existing one?")
|
||||||
droid.dialogSetPositiveButtonText('Create')
|
droid.dialogSetPositiveButtonText('Create')
|
||||||
@ -943,6 +943,7 @@ class ElectrumGui:
|
|||||||
|
|
||||||
return 'restore' if response.get('which') == 'neutral' else 'create'
|
return 'restore' if response.get('which') == 'neutral' else 'create'
|
||||||
|
|
||||||
|
|
||||||
def seed_dialog(self):
|
def seed_dialog(self):
|
||||||
if modal_question("Input method",None,'QR Code', 'mnemonic'):
|
if modal_question("Input method",None,'QR Code', 'mnemonic'):
|
||||||
code = droid.scanBarcode()
|
code = droid.scanBarcode()
|
||||||
|
|||||||
@ -46,6 +46,8 @@ def user_dir():
|
|||||||
return os.path.join(os.environ["APPDATA"], "Electrum")
|
return os.path.join(os.environ["APPDATA"], "Electrum")
|
||||||
elif "LOCALAPPDATA" in os.environ:
|
elif "LOCALAPPDATA" in os.environ:
|
||||||
return os.path.join(os.environ["LOCALAPPDATA"], "Electrum")
|
return os.path.join(os.environ["LOCALAPPDATA"], "Electrum")
|
||||||
|
elif 'ANDROID_DATA' in os.environ:
|
||||||
|
return "/sdcard/electrum/"
|
||||||
else:
|
else:
|
||||||
#raise BaseException("No home directory found in environment variables.")
|
#raise BaseException("No home directory found in environment variables.")
|
||||||
return
|
return
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user