sys.exit("Error: Unknown GUI: " + pref_gui )
interface = Interface(config, True)
- interface.start()
wallet.interface = interface
-
gui = gui.ElectrumGui(wallet, config)
interface.register_callback('peers', gui.server_list_changed)
- # need to wait until interface is connected..
+
+ interface.start()
WalletSynchronizer(wallet, config).start()
WalletVerifier(wallet, config).start()
-
try:
found = config.wallet_file_exists
self.window = window
self.wallet.interface.register_callback('updated',self.update_callback)
+ self.wallet.interface.register_callback('connected', self.update_callback)
+ self.wallet.interface.register_callback('disconnected', self.update_callback)
self.state = None
def register_callback(self, event, callback):
with self.lock:
- self.callbacks[event] = callback
+ if not self.callbacks.get(event):
+ self.callbacks[event] = []
+ self.callbacks[event].append(callback)
def trigger_callback(self, event):
with self.lock:
- callback = self.callbacks.get(event)
- if callback:
- callback()
-
-
+ callbacks = self.callbacks.get(event,[])[:]
+ if callbacks:
+ [callback() for callback in callbacks]
def init_server(self, host, port, proxy=None, use_ssl=True):
self.host = host
self.wallet.up_to_date = False
self.wallet.was_updated = True
- if self.wallet.was_updated:
- self.interface.trigger_callback('updated')
- self.wallet.was_updated = False
def subscribe_to_addresses(self, addresses):
# 1. send new requests
self.synchronize_wallet()
+ if self.wallet.was_updated:
+ self.interface.trigger_callback('updated')
+ self.wallet.was_updated = False
+
# 2. get a response
r = self.interface.get_response('synchronizer')
if not r: continue
elif method == 'server.banner':
self.wallet.banner = result
- self.interface.trigger_callback('updated')
+ self.wallet.was_updated = True
else:
print_error("Error: Unknown message:" + method + ", " + repr(params) + ", " + repr(result) )
+ if self.wallet.was_updated:
+ self.interface.trigger_callback('updated')
+ self.wallet.was_updated = False
+
encode = lambda x: x[::-1].encode('hex')
decode = lambda x: x.decode('hex')[::-1]