Browse Source

qt MyTreeView subclasses: change "headers" from list to dict

sqlite_db
SomberNight 6 years ago
parent
commit
c23b869d3c
No known key found for this signature in database GPG Key ID: B33B5F232C6271E9
  1. 14
      electrum/gui/qt/address_list.py
  2. 6
      electrum/gui/qt/contact_list.py
  3. 9
      electrum/gui/qt/invoice_list.py
  4. 10
      electrum/gui/qt/request_list.py
  5. 16
      electrum/gui/qt/util.py
  6. 8
      electrum/gui/qt/utxo_list.py

14
electrum/gui/qt/address_list.py

@ -81,12 +81,14 @@ class AddressList(MyTreeView):
ccy = fx.get_currency()
else:
ccy = _('Fiat')
headers = [_('Type'),
_('Address'),
_('Label'),
_('Balance'),
ccy + ' ' + _('Balance'),
_('Tx')]
headers = {
self.Columns.TYPE: _('Type'),
self.Columns.ADDRESS: _('Address'),
self.Columns.LABEL: _('Label'),
self.Columns.COIN_BALANCE: _('Balance'),
self.Columns.FIAT_BALANCE: ccy + ' ' + _('Balance'),
self.Columns.NUM_TXS: _('Tx'),
}
self.update_headers(headers)
def toggle_change(self, state):

6
electrum/gui/qt/contact_list.py

@ -44,6 +44,10 @@ class ContactList(MyTreeView):
NAME = 0
ADDRESS = 1
headers = {
Columns.NAME: _('Name'),
Columns.ADDRESS: _('Address'),
}
filter_columns = [Columns.NAME, Columns.ADDRESS]
def __init__(self, parent):
@ -101,7 +105,7 @@ class ContactList(MyTreeView):
def update(self):
current_key = self.current_item_user_role(col=self.Columns.NAME)
self.model().clear()
self.update_headers([_('Name'), _('Address')])
self.update_headers(self.__class__.headers)
set_current = None
for key in sorted(self.parent.contacts.keys()):
contact_type, name = self.parent.contacts[key]

9
electrum/gui/qt/invoice_list.py

@ -40,6 +40,13 @@ class InvoiceList(MyTreeView):
AMOUNT = 3
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]
def __init__(self, parent):
@ -54,7 +61,7 @@ class InvoiceList(MyTreeView):
def update(self):
inv_list = self.parent.invoices.unpaid_invoices()
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)
for idx, pr in enumerate(inv_list):
key = pr.get_id()

10
electrum/gui/qt/request_list.py

@ -48,6 +48,14 @@ class RequestList(MyTreeView):
AMOUNT = 4
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]
def __init__(self, parent):
@ -102,7 +110,7 @@ class RequestList(MyTreeView):
self.parent.new_request_button.setEnabled(addr != current_address)
self.model().clear()
self.update_headers([_('Date'), _('Address'), '', _('Description'), _('Amount'), _('Status')])
self.update_headers(self.__class__.headers)
self.hideColumn(self.Columns.ADDRESS)
for req in self.wallet.get_sorted_requests(self.config):
address = req['address']

16
electrum/gui/qt/util.py

@ -7,7 +7,7 @@ import queue
import traceback
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.QtCore import *
@ -466,13 +466,17 @@ class MyTreeView(QTreeView):
assert set_current.isValid()
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.setHorizontalHeaderLabels(headers)
model.setHorizontalHeaderLabels(col_names)
self.header().setStretchLastSection(False)
for col in range(len(headers)):
sm = QHeaderView.Stretch if col == self.stretch_column else QHeaderView.ResizeToContents
self.header().setSectionResizeMode(col, sm)
for col_idx in headers:
sm = QHeaderView.Stretch if col_idx == self.stretch_column else QHeaderView.ResizeToContents
self.header().setSectionResizeMode(col_idx, sm)
def keyPressEvent(self, event):
if self.itemDelegate().opened:

8
electrum/gui/qt/utxo_list.py

@ -39,7 +39,13 @@ class UTXOList(MyTreeView):
HEIGHT = 3
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]
def __init__(self, parent=None):

Loading…
Cancel
Save