read amounts
This commit is contained in:
parent
ea9e0eb053
commit
fe04ceeed1
|
@ -51,14 +51,24 @@ class PayToEdit(QTextEdit):
|
|||
e.setFrame(True)
|
||||
|
||||
|
||||
def parse_line(self, line):
|
||||
recipient, amount = line.split(',')
|
||||
amount = Decimal(amount.strip())
|
||||
recipient = recipient.strip()
|
||||
m = re.match(RE_ALIAS, recipient)
|
||||
to_address = m.group(2) if m else recipient
|
||||
assert bitcoin.is_address(to_address)
|
||||
return to_address, amount
|
||||
def parse_address_and_amount(self, line):
|
||||
x, y = line.split(',')
|
||||
address = self.parse_address(x)
|
||||
amount = self.parse_amount(y)
|
||||
return address, amount
|
||||
|
||||
|
||||
def parse_amount(self, x):
|
||||
p = pow(10, self.amount_edit.decimal_point())
|
||||
return int( p * Decimal(x.strip()))
|
||||
|
||||
|
||||
def parse_address(self, line):
|
||||
r = line.strip()
|
||||
m = re.match('^'+RE_ALIAS+'$', r)
|
||||
address = m.group(2) if m else r
|
||||
assert bitcoin.is_address(address)
|
||||
return address
|
||||
|
||||
|
||||
def check_text(self):
|
||||
|
@ -67,22 +77,61 @@ class PayToEdit(QTextEdit):
|
|||
outputs = []
|
||||
total = 0
|
||||
|
||||
if len(lines) == 1:
|
||||
try:
|
||||
self.payto_address = self.parse_address(lines[0])
|
||||
except:
|
||||
self.payto_address = None
|
||||
|
||||
if self.payto_address:
|
||||
print "unlock", self.payto_address
|
||||
self.unlock_amount()
|
||||
return
|
||||
|
||||
for line in lines:
|
||||
try:
|
||||
to_address, amount = self.parse_line(line)
|
||||
to_address, amount = self.parse_address_and_amount(line)
|
||||
except:
|
||||
continue
|
||||
|
||||
outputs.append((to_address, amount))
|
||||
total += amount
|
||||
|
||||
self.outputs = outputs
|
||||
self.payto_address = None
|
||||
|
||||
if total:
|
||||
self.amount_edit.setAmount(total)
|
||||
else:
|
||||
self.amount_edit.setText("")
|
||||
|
||||
self.amount_edit.setText(str(total) if total else "")
|
||||
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' + to_address, _('OK'))
|
||||
return
|
||||
|
||||
try:
|
||||
amount = self.amount_edit.get_amount()
|
||||
except Exception:
|
||||
QMessageBox.warning(self, _('Error'), _('Invalid Amount'), _('OK'))
|
||||
return
|
||||
|
||||
outputs = [(self.payto_address, amount)]
|
||||
return outputs
|
||||
|
||||
return self.outputs
|
||||
|
||||
|
||||
def lines(self):
|
||||
return str(self.toPlainText()).split('\n')
|
||||
|
||||
|
|
Loading…
Reference in New Issue