Browse Source

detect if electrum is offline during wallet creation

283
ecdsa 11 years ago
parent
commit
8b4410d86a
  1. 8
      gui/qt/installwizard.py
  2. 2
      gui/qt/main_window.py
  3. 13
      lib/network.py

8
gui/qt/installwizard.py

@ -268,7 +268,7 @@ class InstallWizard(QDialog):
return return
if not self.verify_seed(wallet): if not self.verify_seed(wallet):
return return
ok, _, password = self.password_dialog(wallet) ok, old_password, password = self.password_dialog(wallet)
def create(): def create():
wallet.save_seed(password) wallet.save_seed(password)
wallet.synchronize() # generate first addresses offline wallet.synchronize() # generate first addresses offline
@ -287,7 +287,7 @@ class InstallWizard(QDialog):
QMessageBox.warning(None, _('Error'), _('Incorrect seed'), _('OK')) QMessageBox.warning(None, _('Error'), _('Incorrect seed'), _('OK'))
return return
ok, _, password = self.password_dialog(wallet) ok, old_password, password = self.password_dialog(wallet)
wallet.save_seed(password) wallet.save_seed(password)
@ -302,7 +302,11 @@ class InstallWizard(QDialog):
#if not self.config.get('server'): #if not self.config.get('server'):
if self.network: if self.network:
if self.network.interfaces:
self.network_dialog() self.network_dialog()
else:
QMessageBox.information(None, _('Warning'), _('You are offline'), _('OK'))
self.network.stop()
# start wallet threads # start wallet threads
wallet.start_threads(self.network) wallet.start_threads(self.network)

2
gui/qt/main_window.py

@ -533,7 +533,7 @@ class ElectrumWindow(QMainWindow):
def update_status(self): def update_status(self):
if self.network is None: if self.network is None or not self.network.is_running():
text = _("Offline") text = _("Offline")
icon = QIcon(":icons/status_disconnected.png") icon = QIcon(":icons/status_disconnected.png")

13
lib/network.py

@ -151,8 +151,9 @@ class Network(threading.Thread):
if server in self.interfaces.keys(): if server in self.interfaces.keys():
return return
i = interface.Interface(server, self.config) i = interface.Interface(server, self.config)
self.interfaces[server] = i # add it only if it gets connected
i.start(self.queue) i.start(self.queue)
return i
def start_random_interface(self): def start_random_interface(self):
server = self.random_server() server = self.random_server()
@ -160,8 +161,8 @@ class Network(threading.Thread):
self.start_interface(server) self.start_interface(server)
def start_interfaces(self): def start_interfaces(self):
self.start_interface(self.default_server) self.interface = self.start_interface(self.default_server)
self.interface = self.interfaces[self.default_server] #self.interface = self.interfaces[self.default_server]
for i in range(self.num_server): for i in range(self.num_server):
self.start_random_interface() self.start_random_interface()
@ -252,8 +253,7 @@ class Network(threading.Thread):
if server in self.interfaces.keys(): if server in self.interfaces.keys():
self.switch_to_interface( self.interfaces[server] ) self.switch_to_interface( self.interfaces[server] )
else: else:
self.start_interface(server) self.interface = self.start_interface(server)
self.interface = self.interfaces[server]
def add_recent_server(self, i): def add_recent_server(self, i):
@ -296,6 +296,8 @@ class Network(threading.Thread):
continue continue
if i.is_connected: if i.is_connected:
#if i.server in self.interfaces: raise
self.interfaces[i.server] = i
self.add_recent_server(i) self.add_recent_server(i)
i.send([ ('blockchain.headers.subscribe',[])], self.on_header) i.send([ ('blockchain.headers.subscribe',[])], self.on_header)
if i == self.interface: if i == self.interface:
@ -304,6 +306,7 @@ class Network(threading.Thread):
self.trigger_callback('connected') self.trigger_callback('connected')
else: else:
self.disconnected_servers.append(i.server) self.disconnected_servers.append(i.server)
if i.server in self.interfaces:
self.interfaces.pop(i.server) self.interfaces.pop(i.server)
if i.server in self.heights: if i.server in self.heights:
self.heights.pop(i.server) self.heights.pop(i.server)

Loading…
Cancel
Save