1
0

save invoices

This commit is contained in:
ThomasV
2014-06-06 16:16:14 +02:00
parent 2bbcae449c
commit 513f9c2d89
4 changed files with 90 additions and 11 deletions

View File

@@ -181,7 +181,8 @@ class ElectrumGui:
return
def payment_request():
self.payment_request = paymentrequest.PaymentRequest(request_url)
self.payment_request = paymentrequest.PaymentRequest(self.config)
self.payment_request.read(request_url)
if self.payment_request.verify():
self.main_window.emit(SIGNAL('payment_request_ok'))
else:

View File

@@ -129,6 +129,7 @@ class ElectrumWindow(QMainWindow):
tabs.addTab(self.create_send_tab(), _('Send') )
tabs.addTab(self.create_receive_tab(), _('Receive') )
tabs.addTab(self.create_contacts_tab(), _('Contacts') )
tabs.addTab(self.create_invoices_tab(), _('Invoices') )
tabs.addTab(self.create_console_tab(), _('Console') )
tabs.setMinimumSize(600, 400)
tabs.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding)
@@ -468,6 +469,7 @@ class ElectrumWindow(QMainWindow):
self.update_receive_tab()
self.update_contacts_tab()
self.update_completions()
self.update_invoices_tab()
def create_history_tab(self):
@@ -808,7 +810,7 @@ class ElectrumWindow(QMainWindow):
if addr is None or not bitcoin.is_address(addr):
QMessageBox.warning(self, _('Error'), _('Invalid Bitcoin Address'), _('OK'))
return
if type(x) is not int:
if x is None:
QMessageBox.warning(self, _('Error'), _('Invalid Amount'), _('OK'))
return
@@ -912,6 +914,7 @@ class ElectrumWindow(QMainWindow):
def prepare_for_payment_request(self):
self.tabs.setCurrentIndex(1)
self.payto_e.is_pr = True
for e in [self.payto_e, self.amount_e, self.message_e]:
e.setFrozen(True)
for h in [self.payto_help, self.amount_help, self.message_help]:
@@ -921,6 +924,13 @@ class ElectrumWindow(QMainWindow):
def payment_request_ok(self):
pr = self.gui_object.payment_request
pr_id = pr.get_id()
# save it
invoices = self.wallet.storage.get('invoices', {})
invoices[pr_id] = (pr.get_domain(), pr.get_amount())
invoices = self.wallet.storage.put('invoices', invoices)
self.update_invoices_tab()
self.payto_help.show()
self.payto_help.set_alt(pr.status)
self.payto_e.setGreen()
@@ -952,6 +962,7 @@ class ElectrumWindow(QMainWindow):
def do_clear(self):
self.payto_e.is_pr = False
self.payto_sig.setVisible(False)
for e in [self.payto_e, self.message_e, self.amount_e, self.fee_e]:
e.setText('')
@@ -1049,6 +1060,30 @@ class ElectrumWindow(QMainWindow):
return w
def create_invoices_tab(self):
l,w,hbox = self.create_list_tab([_('Recipient'), _('Amount'), _('Status')])
l.setContextMenuPolicy(Qt.CustomContextMenu)
#l.customContextMenuRequested.connect(self.create_contact_menu)
#self.connect(l, SIGNAL('itemDoubleClicked(QTreeWidgetItem*, int)'), lambda a, b: self.address_label_clicked(a,b,l,0,1))
#self.connect(l, SIGNAL('itemChanged(QTreeWidgetItem*, int)'), lambda a,b: self.address_label_changed(a,b,l,0,1))
self.invoices_list = l
hbox.addStretch(1)
return w
def update_invoices_tab(self):
invoices = self.wallet.storage.get('invoices', {})
l = self.invoices_list
l.clear()
for item, value in invoices.items():
domain, amount = value
item = QTreeWidgetItem( [ domain, self.format_amount(amount), ""] )
l.addTopLevelItem(item)
l.setCurrentItem(l.topLevelItem(0))
def delete_imported_key(self, addr):
if self.question(_("Do you want to remove")+" %s "%addr +_("from your wallet?")):
self.wallet.delete_imported_key(addr)

View File

@@ -42,6 +42,7 @@ class PayToEdit(QTextEdit):
self.c = None
self.textChanged.connect(self.check_text)
self.outputs = []
self.is_pr = False
def lock_amount(self):
self.amount_edit.setFrozen(True)
@@ -54,8 +55,10 @@ class PayToEdit(QTextEdit):
self.setStyleSheet(frozen_style if b else normal_style)
def setGreen(self):
self.is_pr = True
self.setStyleSheet("QWidget { background-color:#00ff00;}")
def parse_address_and_amount(self, line):
x, y = line.split(',')
address = self.parse_address(x)
@@ -77,6 +80,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 = []