display more accurate error messages

This commit is contained in:
thomasv 2012-02-08 14:13:11 +01:00
parent ee396a0633
commit 94c6a1f6cf
2 changed files with 16 additions and 7 deletions

View File

@ -1128,16 +1128,19 @@ class BitcoinGUI:
if self.funds_error:
text = "Not enough funds"
elif self.wallet.interface.is_connected:
if self.wallet.interface.blocks > 0:
self.network_button.set_tooltip_text("Connected to %s.\n%d blocks\nresponse time: %f"%(self.wallet.interface.host, self.wallet.interface.blocks, self.wallet.interface.rtime))
if self.wallet.interface.blocks == 0:
self.status_image.set_from_stock(gtk.STOCK_STOP, gtk.ICON_SIZE_MENU)
text = "Server not ready"
elif not self.wallet.interface.was_polled:
self.status_image.set_from_stock(gtk.STOCK_STOP, gtk.ICON_SIZE_MENU)
text = "Synchronizing..."
else:
self.status_image.set_from_stock(gtk.STOCK_YES, gtk.ICON_SIZE_MENU)
self.network_button.set_tooltip_text("Connected to %s.\n%d blocks\nresponse time: %f"%(self.wallet.interface.host, self.wallet.interface.blocks, self.wallet.interface.rtime))
c, u = self.wallet.get_balance()
text = "Balance: %s "%( format_satoshis(c) )
if u: text += "[%s unconfirmed]"%( format_satoshis(u,True) )
else:
self.status_image.set_from_stock(gtk.STOCK_STOP, gtk.ICON_SIZE_MENU)
self.network_button.set_tooltip_text("Connected to %s.\n%d blocks\nresponse time: %f"%(self.wallet.interface.host, self.wallet.interface.blocks, self.wallet.interface.rtime))
text = "Server not ready"
else:
self.status_image.set_from_stock(gtk.STOCK_NO, gtk.ICON_SIZE_MENU)
self.network_button.set_tooltip_text("Trying to contact %s.\n%d blocks"%(self.wallet.interface.host, self.wallet.interface.blocks))

View File

@ -33,6 +33,7 @@ class Interface:
self.set_port(50000)
self.is_connected = False
self.was_updated = True # fixme: use a semaphore
self.was_polled = False # True after the first poll
def set_port(self, port_number):
self.port = port_number
@ -102,12 +103,14 @@ class Interface:
blocks, changed_addr = ast.literal_eval( out )
if blocks == -1: raise BaseException("session not found")
self.blocks = int(blocks)
if changed_addr: self.was_updated = True
self.was_polled = True
return changed_addr
def new_session(self, addresses, version):
self.was_polled = False
out = self.handler('session.new', [ version, addresses ] )
self.session_id, self.message = ast.literal_eval( out )
self.was_updated = True
def update_session(self, addresses):
out = self.handler('session.update', [ self.session_id, addresses ] )
@ -144,6 +147,10 @@ class Interface:
self.is_connected = False
self.new_session(wallet.all_addresses(), wallet.electrum_version)
self.update_session = False
except socket.error:
print "Not connected"
time.sleep(self.poll_interval())
continue
except:
traceback.print_exc(file=sys.stdout)
time.sleep(self.poll_interval())
@ -163,7 +170,6 @@ class Interface:
# define a method to update the list
if self.update_wallet(wallet):
self.update_session( wallet.all_addresses() )
self.was_updated = True # for gui
time.sleep(self.poll_interval())
except BaseException: