qt MyTreeView subclasses: change "headers" from list to dict
This commit is contained in:
parent
5aafcb2875
commit
c23b869d3c
@ -81,12 +81,14 @@ class AddressList(MyTreeView):
|
|||||||
ccy = fx.get_currency()
|
ccy = fx.get_currency()
|
||||||
else:
|
else:
|
||||||
ccy = _('Fiat')
|
ccy = _('Fiat')
|
||||||
headers = [_('Type'),
|
headers = {
|
||||||
_('Address'),
|
self.Columns.TYPE: _('Type'),
|
||||||
_('Label'),
|
self.Columns.ADDRESS: _('Address'),
|
||||||
_('Balance'),
|
self.Columns.LABEL: _('Label'),
|
||||||
ccy + ' ' + _('Balance'),
|
self.Columns.COIN_BALANCE: _('Balance'),
|
||||||
_('Tx')]
|
self.Columns.FIAT_BALANCE: ccy + ' ' + _('Balance'),
|
||||||
|
self.Columns.NUM_TXS: _('Tx'),
|
||||||
|
}
|
||||||
self.update_headers(headers)
|
self.update_headers(headers)
|
||||||
|
|
||||||
def toggle_change(self, state):
|
def toggle_change(self, state):
|
||||||
|
|||||||
@ -44,6 +44,10 @@ class ContactList(MyTreeView):
|
|||||||
NAME = 0
|
NAME = 0
|
||||||
ADDRESS = 1
|
ADDRESS = 1
|
||||||
|
|
||||||
|
headers = {
|
||||||
|
Columns.NAME: _('Name'),
|
||||||
|
Columns.ADDRESS: _('Address'),
|
||||||
|
}
|
||||||
filter_columns = [Columns.NAME, Columns.ADDRESS]
|
filter_columns = [Columns.NAME, Columns.ADDRESS]
|
||||||
|
|
||||||
def __init__(self, parent):
|
def __init__(self, parent):
|
||||||
@ -101,7 +105,7 @@ class ContactList(MyTreeView):
|
|||||||
def update(self):
|
def update(self):
|
||||||
current_key = self.current_item_user_role(col=self.Columns.NAME)
|
current_key = self.current_item_user_role(col=self.Columns.NAME)
|
||||||
self.model().clear()
|
self.model().clear()
|
||||||
self.update_headers([_('Name'), _('Address')])
|
self.update_headers(self.__class__.headers)
|
||||||
set_current = None
|
set_current = None
|
||||||
for key in sorted(self.parent.contacts.keys()):
|
for key in sorted(self.parent.contacts.keys()):
|
||||||
contact_type, name = self.parent.contacts[key]
|
contact_type, name = self.parent.contacts[key]
|
||||||
|
|||||||
@ -40,6 +40,13 @@ class InvoiceList(MyTreeView):
|
|||||||
AMOUNT = 3
|
AMOUNT = 3
|
||||||
STATUS = 4
|
STATUS = 4
|
||||||
|
|
||||||
|
headers = {
|
||||||
|
Columns.DATE: _('Expires'),
|
||||||
|
Columns.REQUESTOR: _('Requestor'),
|
||||||
|
Columns.DESCRIPTION: _('Description'),
|
||||||
|
Columns.AMOUNT: _('Amount'),
|
||||||
|
Columns.STATUS: _('Status'),
|
||||||
|
}
|
||||||
filter_columns = [Columns.DATE, Columns.REQUESTOR, Columns.DESCRIPTION, Columns.AMOUNT]
|
filter_columns = [Columns.DATE, Columns.REQUESTOR, Columns.DESCRIPTION, Columns.AMOUNT]
|
||||||
|
|
||||||
def __init__(self, parent):
|
def __init__(self, parent):
|
||||||
@ -54,7 +61,7 @@ class InvoiceList(MyTreeView):
|
|||||||
def update(self):
|
def update(self):
|
||||||
inv_list = self.parent.invoices.unpaid_invoices()
|
inv_list = self.parent.invoices.unpaid_invoices()
|
||||||
self.model().clear()
|
self.model().clear()
|
||||||
self.update_headers([_('Expires'), _('Requestor'), _('Description'), _('Amount'), _('Status')])
|
self.update_headers(self.__class__.headers)
|
||||||
self.header().setSectionResizeMode(self.Columns.REQUESTOR, QHeaderView.Interactive)
|
self.header().setSectionResizeMode(self.Columns.REQUESTOR, QHeaderView.Interactive)
|
||||||
for idx, pr in enumerate(inv_list):
|
for idx, pr in enumerate(inv_list):
|
||||||
key = pr.get_id()
|
key = pr.get_id()
|
||||||
|
|||||||
@ -48,6 +48,14 @@ class RequestList(MyTreeView):
|
|||||||
AMOUNT = 4
|
AMOUNT = 4
|
||||||
STATUS = 5
|
STATUS = 5
|
||||||
|
|
||||||
|
headers = {
|
||||||
|
Columns.DATE: _('Date'),
|
||||||
|
Columns.ADDRESS: _('Address'),
|
||||||
|
Columns.SIGNATURE: '',
|
||||||
|
Columns.DESCRIPTION: _('Description'),
|
||||||
|
Columns.AMOUNT: _('Amount'),
|
||||||
|
Columns.STATUS: _('Status'),
|
||||||
|
}
|
||||||
filter_columns = [Columns.DATE, Columns.ADDRESS, Columns.SIGNATURE, Columns.DESCRIPTION, Columns.AMOUNT]
|
filter_columns = [Columns.DATE, Columns.ADDRESS, Columns.SIGNATURE, Columns.DESCRIPTION, Columns.AMOUNT]
|
||||||
|
|
||||||
def __init__(self, parent):
|
def __init__(self, parent):
|
||||||
@ -102,7 +110,7 @@ class RequestList(MyTreeView):
|
|||||||
self.parent.new_request_button.setEnabled(addr != current_address)
|
self.parent.new_request_button.setEnabled(addr != current_address)
|
||||||
|
|
||||||
self.model().clear()
|
self.model().clear()
|
||||||
self.update_headers([_('Date'), _('Address'), '', _('Description'), _('Amount'), _('Status')])
|
self.update_headers(self.__class__.headers)
|
||||||
self.hideColumn(self.Columns.ADDRESS)
|
self.hideColumn(self.Columns.ADDRESS)
|
||||||
for req in self.wallet.get_sorted_requests(self.config):
|
for req in self.wallet.get_sorted_requests(self.config):
|
||||||
address = req['address']
|
address = req['address']
|
||||||
|
|||||||
@ -7,7 +7,7 @@ import queue
|
|||||||
import traceback
|
import traceback
|
||||||
|
|
||||||
from functools import partial, lru_cache
|
from functools import partial, lru_cache
|
||||||
from typing import NamedTuple, Callable, Optional, TYPE_CHECKING
|
from typing import NamedTuple, Callable, Optional, TYPE_CHECKING, Union, List, Dict
|
||||||
|
|
||||||
from PyQt5.QtGui import *
|
from PyQt5.QtGui import *
|
||||||
from PyQt5.QtCore import *
|
from PyQt5.QtCore import *
|
||||||
@ -466,13 +466,17 @@ class MyTreeView(QTreeView):
|
|||||||
assert set_current.isValid()
|
assert set_current.isValid()
|
||||||
self.selectionModel().select(QModelIndex(set_current), QItemSelectionModel.SelectCurrent)
|
self.selectionModel().select(QModelIndex(set_current), QItemSelectionModel.SelectCurrent)
|
||||||
|
|
||||||
def update_headers(self, headers):
|
def update_headers(self, headers: Union[List[str], Dict[int, str]]):
|
||||||
|
# headers is either a list of column names, or a dict: (col_idx->col_name)
|
||||||
|
if not isinstance(headers, dict): # convert to dict
|
||||||
|
headers = dict(enumerate(headers))
|
||||||
|
col_names = [headers[col_idx] for col_idx in sorted(headers.keys())]
|
||||||
model = self.model()
|
model = self.model()
|
||||||
model.setHorizontalHeaderLabels(headers)
|
model.setHorizontalHeaderLabels(col_names)
|
||||||
self.header().setStretchLastSection(False)
|
self.header().setStretchLastSection(False)
|
||||||
for col in range(len(headers)):
|
for col_idx in headers:
|
||||||
sm = QHeaderView.Stretch if col == self.stretch_column else QHeaderView.ResizeToContents
|
sm = QHeaderView.Stretch if col_idx == self.stretch_column else QHeaderView.ResizeToContents
|
||||||
self.header().setSectionResizeMode(col, sm)
|
self.header().setSectionResizeMode(col_idx, sm)
|
||||||
|
|
||||||
def keyPressEvent(self, event):
|
def keyPressEvent(self, event):
|
||||||
if self.itemDelegate().opened:
|
if self.itemDelegate().opened:
|
||||||
|
|||||||
@ -39,7 +39,13 @@ class UTXOList(MyTreeView):
|
|||||||
HEIGHT = 3
|
HEIGHT = 3
|
||||||
OUTPOINT = 4
|
OUTPOINT = 4
|
||||||
|
|
||||||
headers = [ _('Address'), _('Label'), _('Amount'), _('Height'), _('Output point')]
|
headers = {
|
||||||
|
Columns.ADDRESS: _('Address'),
|
||||||
|
Columns.LABEL: _('Label'),
|
||||||
|
Columns.AMOUNT: _('Amount'),
|
||||||
|
Columns.HEIGHT: _('Height'),
|
||||||
|
Columns.OUTPOINT: _('Output point'),
|
||||||
|
}
|
||||||
filter_columns = [Columns.ADDRESS, Columns.LABEL]
|
filter_columns = [Columns.ADDRESS, Columns.LABEL]
|
||||||
|
|
||||||
def __init__(self, parent=None):
|
def __init__(self, parent=None):
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user