commit c95c80163da9dfa8d6f2dae86e973d87a689e47f
parent 827e29c1dce4574770e9e3ccd9707c7ab393eb5d
Author: ecdsa <ecdsa@github>
Date: Sat, 27 Apr 2013 17:48:27 +0200
distinction between unconfirmed and unverified transactions
Diffstat:
4 files changed, 35 insertions(+), 14 deletions(-)
diff --git a/gui/gui_classic.py b/gui/gui_classic.py
@@ -606,22 +606,22 @@ class ElectrumWindow(QMainWindow):
self.history_list.clear()
for item in self.wallet.get_tx_history(self.current_account):
tx_hash, conf, is_mine, value, fee, balance, timestamp = item
- if conf:
+ if conf > 0:
try:
time_str = datetime.datetime.fromtimestamp( timestamp).isoformat(' ')[:-3]
except:
time_str = "unknown"
- if conf == -1:
- icon = None
- if conf == 0:
- icon = QIcon(":icons/unconfirmed.png")
- elif conf < 6:
- icon = QIcon(":icons/clock%d.png"%conf)
- else:
- icon = QIcon(":icons/confirmed.png")
- else:
+
+ if conf == -1:
+ time_str = 'unverified'
+ icon = None
+ elif conf == 0:
time_str = 'pending'
icon = QIcon(":icons/unconfirmed.png")
+ elif conf < 6:
+ icon = QIcon(":icons/clock%d.png"%conf)
+ else:
+ icon = QIcon(":icons/confirmed.png")
if value is not None:
v_str = self.format_amount(value, True)
diff --git a/gui/gui_gtk.py b/gui/gui_gtk.py
@@ -1167,12 +1167,15 @@ class ElectrumWindow:
for item in self.wallet.get_tx_history():
tx_hash, conf, is_mine, value, fee, balance, timestamp = item
- if conf:
+ if conf > 0:
try:
time_str = datetime.datetime.fromtimestamp( timestamp).isoformat(' ')[:-3]
except:
time_str = "------"
conf_icon = gtk.STOCK_APPLY
+ elif conf == -1:
+ time_str = 'unverified'
+ conf_icon = None
else:
time_str = 'pending'
conf_icon = gtk.STOCK_EXECUTE
diff --git a/lib/verifier.py b/lib/verifier.py
@@ -52,15 +52,33 @@ class WalletVerifier(threading.Thread):
if tx in self.verified_tx:
height, timestamp, pos = self.verified_tx[tx]
conf = (self.local_height - height + 1)
+ if conf <= 0: timestamp = None
+
+ elif tx in self.transactions:
+ conf = -1
+ timestamp = None
+
else:
conf = 0
-
- if conf <= 0:
timestamp = None
return conf, timestamp
+ def get_txpos(self, tx_hash):
+ "return position, even if the tx is unverified"
+ with self.lock:
+ x = self.verified_tx.get(tx_hash)
+ y = self.transactions.get(tx_hash)
+ if x:
+ height, timestamp, pos = x
+ return height, pos
+ elif y:
+ return y, 0
+ else:
+ return 1e12, 0
+
+
def get_height(self, tx_hash):
with self.lock:
v = self.verified_tx.get(tx_hash)
diff --git a/lib/wallet.py b/lib/wallet.py
@@ -670,7 +670,7 @@ class Wallet:
def get_tx_history(self, account=None):
with self.transaction_lock:
history = self.transactions.items()
- history.sort(key = lambda x: self.verifier.verified_tx.get(x[0]) if self.verifier.verified_tx.get(x[0]) else (1e12,0,0))
+ history.sort(key = lambda x: self.verifier.get_txpos(x[0]))
result = []
balance = 0