Skip to content

Commit 6f50414

Browse files
committed
qt: SwapServerDialog: explicit columns
1 parent 0c0a8b7 commit 6f50414

File tree

1 file changed

+32
-14
lines changed

1 file changed

+32
-14
lines changed

electrum/gui/qt/swap_dialog.py

Lines changed: 32 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import enum
12
from typing import TYPE_CHECKING, Optional, Union, Tuple, Sequence
23

34
from PyQt6.QtCore import pyqtSignal, Qt
@@ -19,7 +20,7 @@
1920
from .util import qt_event_listener, QtEventListener
2021
from .amountedit import BTCAmountEdit
2122
from .fee_slider import FeeSlider, FeeComboBox
22-
from .my_treeview import create_toolbar_with_menu
23+
from .my_treeview import create_toolbar_with_menu, MyTreeView
2324

2425
if TYPE_CHECKING:
2526
from .main_window import ElectrumWindow
@@ -424,7 +425,22 @@ def choose_swap_server(self, transport: 'SwapServerTransport') -> None:
424425

425426
class SwapServerDialog(WindowModalDialog, QtEventListener):
426427

427-
def __init__(self, window, servers):
428+
class Columns(MyTreeView.BaseColumnsEnum):
429+
PUBKEY = enum.auto()
430+
FEE = enum.auto()
431+
MAX_FORWARD = enum.auto()
432+
MAX_REVERSE = enum.auto()
433+
LAST_SEEN = enum.auto()
434+
435+
headers = {
436+
Columns.PUBKEY: _("Pubkey"),
437+
Columns.FEE: _("Fee"),
438+
Columns.MAX_FORWARD: _('Max Forward'),
439+
Columns.MAX_REVERSE: _('Max Reverse'),
440+
Columns.LAST_SEEN: _("Last seen"),
441+
}
442+
443+
def __init__(self, window: 'ElectrumWindow', servers: Sequence['SwapOffer']):
428444
WindowModalDialog.__init__(self, window, _('Choose Swap Provider'))
429445
self.window = window
430446
self.config = window.config
@@ -433,11 +449,11 @@ def __init__(self, window, servers):
433449
_("Note that fees and liquidity may be updated frequently.")
434450
])
435451
self.servers_list = QTreeWidget()
436-
self.servers_list.setColumnCount(5)
437-
self.servers_list.setHeaderLabels([_("Pubkey"), _("Fee"), _('Max Forward'), _('Max Reverse'), _("Last seen")])
452+
col_names = [self.headers[col_idx] for col_idx in sorted(self.headers.keys())]
453+
self.servers_list.setHeaderLabels(col_names)
438454
self.servers_list.header().setStretchLastSection(False)
439-
for col_idx in range(5):
440-
sm = QHeaderView.ResizeMode.Stretch if col_idx == 0 else QHeaderView.ResizeMode.ResizeToContents
455+
for col_idx in range(len(self.Columns)):
456+
sm = QHeaderView.ResizeMode.Stretch if col_idx == self.Columns.PUBKEY else QHeaderView.ResizeMode.ResizeToContents
441457
self.servers_list.header().setSectionResizeMode(col_idx, sm)
442458
self.update_servers_list(servers)
443459
vbox = QVBoxLayout()
@@ -453,21 +469,23 @@ def run(self):
453469
if self.exec() != 1:
454470
return None
455471
if item := self.servers_list.currentItem():
456-
return item.data(0, ROLE_NPUB)
472+
return item.data(self.Columns.PUBKEY, ROLE_NPUB)
457473
return None
458474

459475
def update_servers_list(self, servers: Sequence['SwapOffer']):
460476
self.servers_list.clear()
461477
from electrum.util import age
462478
items = []
463479
for x in servers:
464-
last_seen = age(x.timestamp)
465-
fee = f"{x.pairs.percentage}% + {x.pairs.mining_fee} sats"
466-
max_forward = self.window.format_amount(x.pairs.max_forward) + ' ' + self.window.base_unit()
467-
max_reverse = self.window.format_amount(x.pairs.max_reverse) + ' ' + self.window.base_unit()
468-
item = QTreeWidgetItem([x.server_pubkey, fee, max_forward, max_reverse, last_seen])
469-
item.setData(0, ROLE_NPUB, x.server_npub)
470-
item.setIcon(0, self._pubkey_to_q_icon(x.server_pubkey))
480+
labels = [""] * len(self.Columns)
481+
labels[self.Columns.PUBKEY] = x.server_pubkey
482+
labels[self.Columns.FEE] = f"{x.pairs.percentage}% + {x.pairs.mining_fee} sats"
483+
labels[self.Columns.MAX_FORWARD] = self.window.format_amount(x.pairs.max_forward) + ' ' + self.window.base_unit()
484+
labels[self.Columns.MAX_REVERSE] = self.window.format_amount(x.pairs.max_reverse) + ' ' + self.window.base_unit()
485+
labels[self.Columns.LAST_SEEN] = age(x.timestamp)
486+
item = QTreeWidgetItem(labels)
487+
item.setData(self.Columns.PUBKEY, ROLE_NPUB, x.server_npub)
488+
item.setIcon(self.Columns.PUBKEY, self._pubkey_to_q_icon(x.server_pubkey))
471489
items.append(item)
472490
self.servers_list.insertTopLevelItems(0, items)
473491

0 commit comments

Comments
 (0)