Browse Source

qt history list: small clean-up

3.3.3.1
SomberNight 6 years ago
parent
commit
059beab700
No known key found for this signature in database GPG Key ID: B33B5F232C6271E9
  1. 22
      electrum/gui/qt/history_list.py
  2. 1
      electrum/gui/qt/main_window.py
  3. 11
      electrum/gui/qt/util.py
  4. 4
      electrum/util.py

22
electrum/gui/qt/history_list.py

@ -104,9 +104,6 @@ class HistoryList(MyTreeView, AcceptFileDragDrop):
self.end_timestamp = None self.end_timestamp = None
self.years = [] self.years = []
self.create_toolbar_buttons() self.create_toolbar_buttons()
self.wallet = None
root = self.std_model.invisibleRootItem()
self.wallet = self.parent.wallet # type: Abstract_Wallet self.wallet = self.parent.wallet # type: Abstract_Wallet
fx = self.parent.fx fx = self.parent.fx
@ -144,7 +141,6 @@ class HistoryList(MyTreeView, AcceptFileDragDrop):
self.editable_columns -= {5} self.editable_columns -= {5}
col_count = self.std_model.columnCount() col_count = self.std_model.columnCount()
diff = col_count-len(headers) diff = col_count-len(headers)
grew = False
if col_count > len(headers): if col_count > len(headers):
if diff == 2: if diff == 2:
self.std_model.removeColumns(6, diff) self.std_model.removeColumns(6, diff)
@ -155,7 +151,6 @@ class HistoryList(MyTreeView, AcceptFileDragDrop):
while len(items) > col_count: while len(items) > col_count:
items.pop() items.pop()
elif col_count < len(headers): elif col_count < len(headers):
grew = True
self.std_model.clear() self.std_model.clear()
self.txid_to_items.clear() self.txid_to_items.clear()
self.transactions.clear() self.transactions.clear()
@ -300,11 +295,9 @@ class HistoryList(MyTreeView, AcceptFileDragDrop):
tx_mined_status = TxMinedStatus(height, conf, timestamp, None) tx_mined_status = TxMinedStatus(height, conf, timestamp, None)
status, status_str = self.wallet.get_tx_status(tx_hash, tx_mined_status) status, status_str = self.wallet.get_tx_status(tx_hash, tx_mined_status)
has_invoice = self.wallet.invoices.paid.get(tx_hash) has_invoice = self.wallet.invoices.paid.get(tx_hash)
icon = self.icon_cache.get(":icons/" + TX_ICONS[status])
v_str = self.parent.format_amount(value, is_diff=True, whitespaces=True) v_str = self.parent.format_amount(value, is_diff=True, whitespaces=True)
balance_str = self.parent.format_amount(balance, whitespaces=True) balance_str = self.parent.format_amount(balance, whitespaces=True)
entry = ['', status_str, label, v_str, balance_str] entry = ['', status_str, label, v_str, balance_str]
fiat_value = None
item = [QStandardItem(e) for e in entry] item = [QStandardItem(e) for e in entry]
item[3].setData(value, self.SORT_ROLE) item[3].setData(value, self.SORT_ROLE)
item[4].setData(balance, self.SORT_ROLE) item[4].setData(balance, self.SORT_ROLE)
@ -316,11 +309,11 @@ class HistoryList(MyTreeView, AcceptFileDragDrop):
item[2].setForeground(self.red_brush) item[2].setForeground(self.red_brush)
item[3].setForeground(self.red_brush) item[3].setForeground(self.red_brush)
self.txid_to_items[tx_hash] = item self.txid_to_items[tx_hash] = item
self.update_item(tx_hash, self.parent.wallet.get_tx_height(tx_hash)) self.update_item(tx_hash, self.wallet.get_tx_height(tx_hash))
source_row_idx = self.std_model.rowCount() source_row_idx = self.std_model.rowCount()
self.std_model.insertRow(source_row_idx, item) self.std_model.insertRow(source_row_idx, item)
new_idx = self.std_model.index(source_row_idx, 0) new_idx = self.std_model.index(source_row_idx, 0)
history = self.parent.fx.show_history() history = fx.show_history()
if history: if history:
self.update_fiat(tx_hash, tx_item) self.update_fiat(tx_hash, tx_item)
self.hide_row(self.proxy.mapFromSource(new_idx).row()) self.hide_row(self.proxy.mapFromSource(new_idx).row())
@ -344,7 +337,6 @@ class HistoryList(MyTreeView, AcceptFileDragDrop):
@profiler @profiler
def update(self): def update(self):
self.wallet = self.parent.wallet # type: Abstract_Wallet
fx = self.parent.fx fx = self.parent.fx
r = self.wallet.get_full_history(domain=self.get_domain(), from_timestamp=None, to_timestamp=None, fx=fx) r = self.wallet.get_full_history(domain=self.get_domain(), from_timestamp=None, to_timestamp=None, fx=fx)
seen = set() seen = set()
@ -374,7 +366,7 @@ class HistoryList(MyTreeView, AcceptFileDragDrop):
old = self.transactions[txid] old = self.transactions[txid]
if old == row: if old == row:
continue continue
self.update_item(txid, self.parent.wallet.get_tx_height(txid)) self.update_item(txid, self.wallet.get_tx_height(txid))
if history: if history:
self.update_fiat(txid, row) self.update_fiat(txid, row)
balance_str = self.parent.format_amount(row['balance'].value, whitespaces=True) balance_str = self.parent.format_amount(row['balance'].value, whitespaces=True)
@ -422,16 +414,16 @@ class HistoryList(MyTreeView, AcceptFileDragDrop):
key = item.data(self.TX_HASH_ROLE) key = item.data(self.TX_HASH_ROLE)
# fixme # fixme
if column == 2: if column == 2:
self.parent.wallet.set_label(key, text) self.wallet.set_label(key, text)
self.update_labels() self.update_labels()
self.parent.update_completions() self.parent.update_completions()
elif column == 5: elif column == 5:
tx_item = self.transactions[key] tx_item = self.transactions[key]
self.parent.wallet.set_fiat_value(key, self.parent.fx.ccy, text, self.parent.fx, tx_item['value'].value) self.wallet.set_fiat_value(key, self.parent.fx.ccy, text, self.parent.fx, tx_item['value'].value)
value = tx_item['value'].value value = tx_item['value'].value
if value is not None: if value is not None:
fee = tx_item['fee'] fee = tx_item['fee']
fiat_fields = self.parent.wallet.get_tx_item_fiat(key, value, self.parent.fx, fee.value if fee else None) fiat_fields = self.wallet.get_tx_item_fiat(key, value, self.parent.fx, fee.value if fee else None)
tx_item.update(fiat_fields) tx_item.update(fiat_fields)
self.update_fiat(key, tx_item) self.update_fiat(key, tx_item)
else: else:
@ -463,8 +455,6 @@ class HistoryList(MyTreeView, AcceptFileDragDrop):
item.setText(label) item.setText(label)
def update_item(self, tx_hash, tx_mined_status): def update_item(self, tx_hash, tx_mined_status):
if self.wallet is None:
return
conf = tx_mined_status.conf conf = tx_mined_status.conf
status, status_str = self.wallet.get_tx_status(tx_hash, tx_mined_status) status, status_str = self.wallet.get_tx_status(tx_hash, tx_mined_status)
icon = self.icon_cache.get(":icons/" + TX_ICONS[status]) icon = self.icon_cache.get(":icons/" + TX_ICONS[status])

1
electrum/gui/qt/main_window.py

@ -117,6 +117,7 @@ class ElectrumWindow(QMainWindow, MessageBoxMixin, PrintError):
self.setup_exception_hook() self.setup_exception_hook()
self.network = gui_object.daemon.network # type: Network self.network = gui_object.daemon.network # type: Network
assert wallet, "no wallet"
self.wallet = wallet self.wallet = wallet
self.fx = gui_object.daemon.fx # type: FxThread self.fx = gui_object.daemon.fx # type: FxThread
self.invoices = wallet.invoices self.invoices = wallet.invoices

11
electrum/gui/qt/util.py

@ -4,8 +4,7 @@ import sys
import platform import platform
import queue import queue
from functools import partial from functools import partial
from typing import NamedTuple, Callable, Optional from typing import NamedTuple, Callable, Optional, TYPE_CHECKING
from abc import abstractmethod
from PyQt5.QtGui import * from PyQt5.QtGui import *
from PyQt5.QtCore import * from PyQt5.QtCore import *
@ -15,6 +14,9 @@ from electrum.i18n import _, languages
from electrum.util import FileImportFailed, FileExportFailed from electrum.util import FileImportFailed, FileExportFailed
from electrum.paymentrequest import PR_UNPAID, PR_PAID, PR_EXPIRED from electrum.paymentrequest import PR_UNPAID, PR_PAID, PR_EXPIRED
if TYPE_CHECKING:
from .main_window import ElectrumWindow
if platform.system() == 'Windows': if platform.system() == 'Windows':
MONOSPACE_FONT = 'Lucida Console' MONOSPACE_FONT = 'Lucida Console'
@ -401,7 +403,7 @@ class ElectrumItemDelegate(QStyledItemDelegate):
class MyTreeView(QTreeView): class MyTreeView(QTreeView):
def __init__(self, parent, create_menu, stretch_column=None, editable_columns=None): def __init__(self, parent: 'ElectrumWindow', create_menu, stretch_column=None, editable_columns=None):
super().__init__(parent) super().__init__(parent)
self.parent = parent self.parent = parent
self.config = self.parent.config self.config = self.parent.config
@ -513,13 +515,12 @@ class MyTreeView(QTreeView):
if self.current_filter: if self.current_filter:
self.filter(self.current_filter) self.filter(self.current_filter)
@abstractmethod
def should_hide(self, row): def should_hide(self, row):
""" """
row_num is for self.model(). So if there is a proxy, it is the row number row_num is for self.model(). So if there is a proxy, it is the row number
in that! in that!
""" """
pass return False
def item_from_coordinate(self, row_num, column): def item_from_coordinate(self, row_num, column):
if isinstance(self.model(), QSortFilterProxyModel): if isinstance(self.model(), QSortFilterProxyModel):

4
electrum/util.py

@ -860,8 +860,8 @@ def ignore_exceptions(func):
class TxMinedStatus(NamedTuple): class TxMinedStatus(NamedTuple):
height: int height: int
conf: int conf: int
timestamp: int timestamp: Optional[int]
header_hash: str header_hash: Optional[str]
class VerifiedTxInfo(NamedTuple): class VerifiedTxInfo(NamedTuple):

Loading…
Cancel
Save