distinction between unconfirmed and unverified transactions
authorecdsa <ecdsa@github>
Sat, 27 Apr 2013 15:48:27 +0000 (17:48 +0200)
committerecdsa <ecdsa@github>
Sat, 27 Apr 2013 15:48:27 +0000 (17:48 +0200)
gui/gui_classic.py
gui/gui_gtk.py
lib/verifier.py
lib/wallet.py

index cd8d32c..3acd35f 100644 (file)
@@ -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)
index 1c36b92..a1038a0 100644 (file)
@@ -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
index ff8275c..5451cfd 100644 (file)
@@ -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)
index d04a13f..62aeb01 100644 (file)
@@ -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