store and display signatures of own requests
This commit is contained in:
@@ -629,17 +629,17 @@ class ElectrumWindow(QMainWindow):
|
||||
buttons.addWidget(self.new_request_button)
|
||||
|
||||
self.receive_requests_label = QLabel(_('My Requests'))
|
||||
self.receive_list = MyTreeWidget(self, self.receive_list_menu, [_('Date'), _('Account'), _('Address'), _('Description'), _('Amount'), _('Status')], 3)
|
||||
self.receive_list = MyTreeWidget(self, self.receive_list_menu, [_('Date'), _('Account'), _('Address'), _('Requestor'), _('Description'), _('Amount'), _('Status')], 4)
|
||||
self.receive_list.currentItemChanged.connect(self.receive_item_changed)
|
||||
self.receive_list.itemClicked.connect(self.receive_item_changed)
|
||||
self.receive_list.setSortingEnabled(True)
|
||||
self.receive_list.setColumnWidth(0, 180)
|
||||
self.receive_list.hideColumn(1) # the update will show it if necessary
|
||||
self.receive_list.hideColumn(2) # don't show address
|
||||
self.receive_list.setColumnWidth(2, 340)
|
||||
self.receive_list.hideColumn(1)
|
||||
self.receive_list.hideColumn(2)
|
||||
#self.receive_list.setColumnWidth(2, 340)
|
||||
h = self.receive_list.header()
|
||||
h.setStretchLastSection(False)
|
||||
h.setResizeMode(3, QHeaderView.Stretch)
|
||||
h.setResizeMode(4, QHeaderView.Stretch)
|
||||
|
||||
# layout
|
||||
vbox_g = QVBoxLayout()
|
||||
@@ -714,28 +714,34 @@ class ElectrumWindow(QMainWindow):
|
||||
return False
|
||||
i = self.expires_combo.currentIndex()
|
||||
expiration = map(lambda x: x[1], expiration_values)[i]
|
||||
self.wallet.add_payment_request(addr, amount, message, expiration, self.config)
|
||||
req = self.wallet.make_payment_request(addr, amount, message, expiration)
|
||||
pr, requestor = self.make_bip70_request(req)
|
||||
if requestor:
|
||||
req['requestor'] = requestor
|
||||
req['signature'] = pr.signature.encode('hex')
|
||||
self.wallet.add_payment_request(req, self.config)
|
||||
self.update_receive_tab()
|
||||
self.update_address_tab()
|
||||
self.save_request_button.setEnabled(False)
|
||||
return True
|
||||
return pr
|
||||
|
||||
def make_payment_request(self, addr):
|
||||
def make_bip70_request(self, req):
|
||||
alias = str(self.config.get('alias'))
|
||||
alias_privkey = None
|
||||
if alias:
|
||||
alias_info = self.contacts.resolve_openalias(alias)
|
||||
if alias_info:
|
||||
alias_addr, alias_name = alias_info
|
||||
alias_addr, alias_name, validated = alias_info
|
||||
if alias_addr and self.wallet.is_mine(alias_addr):
|
||||
password = self.password_dialog()
|
||||
alias_privkey = self.wallet.get_private_key(alias_addr, password)[0]
|
||||
r = self.wallet.get_payment_request(addr, self.config)
|
||||
pr = paymentrequest.make_request(self.config, r, alias, alias_privkey)
|
||||
return pr
|
||||
password = self.password_dialog(_('Please enter your password in order to sign your payment request.'))
|
||||
if password:
|
||||
alias_privkey = self.wallet.get_private_key(alias_addr, password)[0]
|
||||
return paymentrequest.make_request(self.config, req, alias, alias_privkey)
|
||||
|
||||
def export_payment_request(self, addr):
|
||||
pr = self.make_payment_request(addr)
|
||||
r = self.wallet.receive_requests.get(addr)
|
||||
pr, requestor = paymentrequest.make_request(self.config, r)
|
||||
pr = pr.SerializeToString()
|
||||
name = r['id'] + '.bip70'
|
||||
fileName = self.getSaveFileName(_("Select where to save your payment request"), name, "*.bip70")
|
||||
if fileName:
|
||||
@@ -828,9 +834,13 @@ class ElectrumWindow(QMainWindow):
|
||||
message = req.get('memo', '')
|
||||
date = format_time(timestamp)
|
||||
status = req.get('status')
|
||||
account = self.wallet.get_account_name(self.wallet.get_account_from_address(address))
|
||||
signature = req.get('signature')
|
||||
requestor = req.get('requestor', '')
|
||||
amount_str = self.format_amount(amount) if amount else ""
|
||||
item = QTreeWidgetItem([date, account, address, message, amount_str, pr_tooltips.get(status,'')])
|
||||
account = ''
|
||||
item = QTreeWidgetItem([date, account, address, requestor, message, amount_str, pr_tooltips.get(status,'')])
|
||||
if signature is not None:
|
||||
item.setIcon(3, QIcon(":icons/confirmed.png"))
|
||||
if status is not PR_UNKNOWN:
|
||||
item.setIcon(5, QIcon(pr_icons.get(status)))
|
||||
self.receive_list.addTopLevelItem(item)
|
||||
|
||||
Reference in New Issue
Block a user