|
|
@ -29,6 +29,7 @@ from typing import Optional |
|
|
|
from PyQt5.QtGui import QStandardItemModel, QStandardItem |
|
|
|
from PyQt5.QtWidgets import QMenu |
|
|
|
from PyQt5.QtCore import Qt, QItemSelectionModel, QModelIndex |
|
|
|
from PyQt5.QtWidgets import QAbstractItemView |
|
|
|
|
|
|
|
from electrum.i18n import _ |
|
|
|
from electrum.util import format_time, get_request_status |
|
|
@ -65,8 +66,9 @@ class RequestList(MyTreeView): |
|
|
|
self.wallet = self.parent.wallet |
|
|
|
self.setModel(QStandardItemModel(self)) |
|
|
|
self.setSortingEnabled(True) |
|
|
|
self.update() |
|
|
|
self.selectionModel().currentRowChanged.connect(self.item_changed) |
|
|
|
self.setSelectionMode(QAbstractItemView.ExtendedSelection) |
|
|
|
self.update() |
|
|
|
|
|
|
|
def select_key(self, key): |
|
|
|
for i in range(self.model().rowCount()): |
|
|
@ -124,8 +126,6 @@ class RequestList(MyTreeView): |
|
|
|
self.update_headers(self.__class__.headers) |
|
|
|
for req in self.wallet.get_sorted_requests(): |
|
|
|
status, status_str = get_request_status(req) |
|
|
|
if status == PR_PAID: |
|
|
|
continue |
|
|
|
request_type = req['type'] |
|
|
|
timestamp = req.get('time', 0) |
|
|
|
amount = req.get('amount') |
|
|
@ -162,6 +162,13 @@ class RequestList(MyTreeView): |
|
|
|
self.item_changed(None) |
|
|
|
|
|
|
|
def create_menu(self, position): |
|
|
|
items = self.selected_in_column(0) |
|
|
|
if len(items)>1: |
|
|
|
keys = [ item.data(ROLE_KEY) for item in items] |
|
|
|
menu = QMenu(self) |
|
|
|
menu.addAction(_("Delete requests"), lambda: self.parent.delete_requests(keys)) |
|
|
|
menu.exec_(self.viewport().mapToGlobal(position)) |
|
|
|
return |
|
|
|
idx = self.indexAt(position) |
|
|
|
item = self.model().itemFromIndex(idx) |
|
|
|
# TODO use siblingAtColumn when min Qt version is >=5.11 |
|
|
@ -183,6 +190,6 @@ class RequestList(MyTreeView): |
|
|
|
menu.addAction(_("Copy Address"), lambda: self.parent.do_copy(req['address'], title='Bitcoin Address')) |
|
|
|
if 'view_url' in req: |
|
|
|
menu.addAction(_("View in web browser"), lambda: webopen(req['view_url'])) |
|
|
|
menu.addAction(_("Delete"), lambda: self.parent.delete_request(key)) |
|
|
|
menu.addAction(_("Delete"), lambda: self.parent.delete_requests([key])) |
|
|
|
run_hook('receive_list_menu', menu, key) |
|
|
|
menu.exec_(self.viewport().mapToGlobal(position)) |
|
|
|