estimate fee using number of outputs
[electrum-nvc.git] / gui / qt / paytoedit.py
index 1b9ae1b..ceb92fa 100644 (file)
@@ -18,6 +18,7 @@
 
 from PyQt4.QtCore import *
 from PyQt4.QtGui import *
+from qrtextedit import QRTextEdit
 
 import re
 from decimal import Decimal
@@ -29,11 +30,12 @@ RE_ALIAS = '(.*?)\s*\<([1-9A-HJ-NP-Za-km-z]{26,})\>'
 frozen_style = "QWidget { background-color:none; border:none;}"
 normal_style = "QTextEdit { }"
 
-class PayToEdit(QTextEdit):
+class PayToEdit(QRTextEdit):
 
-    def __init__(self, amount_edit):
-        QTextEdit.__init__(self)
-        self.amount_edit = amount_edit
+    def __init__(self, win):
+        QRTextEdit.__init__(self)
+        self.win = win
+        self.amount_edit = win.amount_e
         self.document().contentsChanged.connect(self.update_size)
         self.heightMin = 0
         self.heightMax = 150
@@ -41,6 +43,11 @@ class PayToEdit(QTextEdit):
         self.setMaximumHeight(27)
         self.c = None
         self.textChanged.connect(self.check_text)
+        self.outputs = []
+        self.is_pr = False
+        self.scan_f = self.win.pay_from_URI
+        self.update_size()
+        self.payto_address = None
 
     def lock_amount(self):
         self.amount_edit.setFrozen(True)
@@ -53,7 +60,12 @@ class PayToEdit(QTextEdit):
         self.setStyleSheet(frozen_style if b else normal_style)
 
     def setGreen(self):
-        self.setStyleSheet("QWidget { background-color:#00ff00;}")
+        self.is_pr = True
+        self.setStyleSheet("QWidget { background-color:#80ff80;}")
+
+    def setExpired(self):
+        self.is_pr = True
+        self.setStyleSheet("QWidget { background-color:#ffcccc;}")
 
     def parse_address_and_amount(self, line):
         x, y = line.split(',')
@@ -76,6 +88,9 @@ class PayToEdit(QTextEdit):
 
 
     def check_text(self):
+        if self.is_pr:
+            return
+
         # filter out empty lines
         lines = filter( lambda x: x, self.lines())
         outputs = []
@@ -88,6 +103,7 @@ class PayToEdit(QTextEdit):
                 self.payto_address = self.parse_address(lines[0])
             except:
                 pass
+
             if self.payto_address:
                 self.unlock_amount()
                 return
@@ -109,31 +125,24 @@ class PayToEdit(QTextEdit):
         else:
             self.amount_edit.setText("")
 
+        self.amount_edit.textEdited.emit("")
+
         if total or len(lines)>1:
             self.lock_amount()
         else:
             self.unlock_amount()
 
 
-
     def get_outputs(self):
-
         if self.payto_address:
-            
-            if not bitcoin.is_address(self.payto_address):
-                QMessageBox.warning(self, _('Error'), _('Invalid Bitcoin Address') + ':\n' + self.payto_address, _('OK'))
-                return
-
             try:
                 amount = self.amount_edit.get_amount()
-            except Exception:
-                QMessageBox.warning(self, _('Error'), _('Invalid Amount'), _('OK'))
-                return
+            except:
+                amount = None
 
-            outputs = [(self.payto_address, amount)]
-            return outputs
+            self.outputs = [(self.payto_address, amount)]
 
-        return self.outputs
+        return self.outputs[:]
 
 
     def lines(self):