AmountEdit:get_amount
[electrum-nvc.git] / gui / qt / amountedit.py
index 673e199..edac456 100644 (file)
@@ -6,10 +6,12 @@ from PyQt4.QtGui import *
 from decimal import Decimal
 
 class MyLineEdit(QLineEdit):
+    frozen = pyqtSignal()
 
     def setFrozen(self, b):
         self.setReadOnly(b)
         self.setFrame(not b)
+        self.frozen.emit()
 
 class AmountEdit(MyLineEdit):
 
@@ -21,6 +23,9 @@ class AmountEdit(MyLineEdit):
         self.is_shortcut = False
         self.help_palette = QPalette()
 
+    def decimal_point(self):
+        return 8
+
     def numbify(self):
         text = unicode(self.text()).strip()
         if text == '!':
@@ -33,7 +38,7 @@ class AmountEdit(MyLineEdit):
             if '.' in s:
                 p = s.find('.')
                 s = s.replace('.','')
-                s = s[:p] + '.' + s[p:p+8]
+                s = s[:p] + '.' + s[p:p+self.decimal_point()]
         self.setText(s)
         self.setCursorPosition(pos)
 
@@ -48,6 +53,12 @@ class AmountEdit(MyLineEdit):
             painter.setPen(self.help_palette.brush(QPalette.Disabled, QPalette.Text).color())
             painter.drawText(textRect, Qt.AlignRight | Qt.AlignVCenter, self.base_unit())
 
+    def get_amount(self):
+        try:
+            x = int(str(self.text()))
+        except:
+            return None
+        return x
 
 
 class BTCAmountEdit(AmountEdit):
@@ -58,8 +69,14 @@ class BTCAmountEdit(AmountEdit):
 
     def _base_unit(self):
         p = self.decimal_point()
-        assert p in [5,8]
-        return "BTC" if p == 8 else "mBTC"
+        assert p in [2, 5, 8]
+        if p == 8:
+            return 'BTC'
+        if p == 5:
+            return 'mBTC'
+        if p == 2:
+            return 'bits'
+        raise Exception('Unknown base unit')
 
     def get_amount(self):
         try:
@@ -70,6 +87,10 @@ class BTCAmountEdit(AmountEdit):
         return int( p * x )
 
     def setAmount(self, amount):
+        if amount is None:
+            self.setText("")
+            return
+
         p = pow(10, self.decimal_point())
         x = amount / Decimal(p)
         self.setText(str(x))