1
0

Merge pull request #9929 from f321x/swapserver_icon

qt: show deterministic colors for swapservers
This commit is contained in:
ThomasV
2025-06-10 09:57:36 +02:00
committed by GitHub

View File

@@ -1,6 +1,7 @@
from typing import TYPE_CHECKING, Optional, Union, Tuple, Sequence from typing import TYPE_CHECKING, Optional, Union, Tuple, Sequence
from PyQt6.QtCore import pyqtSignal, Qt from PyQt6.QtCore import pyqtSignal, Qt
from PyQt6.QtGui import QIcon, QPixmap, QColor
from PyQt6.QtWidgets import QLabel, QVBoxLayout, QGridLayout, QPushButton from PyQt6.QtWidgets import QLabel, QVBoxLayout, QGridLayout, QPushButton
from PyQt6.QtWidgets import QTreeWidget, QTreeWidgetItem, QHeaderView from PyQt6.QtWidgets import QTreeWidget, QTreeWidgetItem, QHeaderView
@@ -9,6 +10,7 @@ from electrum.util import NotEnoughFunds, NoDynamicFeeEstimates, UserCancelled
from electrum.bitcoin import DummyAddress from electrum.bitcoin import DummyAddress
from electrum.transaction import PartialTxOutput, PartialTransaction from electrum.transaction import PartialTxOutput, PartialTransaction
from electrum.fee_policy import FeePolicy from electrum.fee_policy import FeePolicy
from electrum.crypto import sha256
from electrum.gui import messages from electrum.gui import messages
from . import util from . import util
@@ -463,5 +465,20 @@ class SwapServerDialog(WindowModalDialog, QtEventListener):
max_reverse = self.window.format_amount(x.pairs.max_reverse) + ' ' + self.window.base_unit() max_reverse = self.window.format_amount(x.pairs.max_reverse) + ' ' + self.window.base_unit()
item = QTreeWidgetItem([x.server_pubkey, fee, max_forward, max_reverse, last_seen]) item = QTreeWidgetItem([x.server_pubkey, fee, max_forward, max_reverse, last_seen])
item.setData(0, ROLE_NPUB, x.server_npub) item.setData(0, ROLE_NPUB, x.server_npub)
item.setIcon(0, self._pubkey_to_q_icon(x.server_pubkey))
items.append(item) items.append(item)
self.servers_list.insertTopLevelItems(0, items) self.servers_list.insertTopLevelItems(0, items)
@staticmethod
def _pubkey_to_q_icon(server_pubkey: str) -> QIcon:
def str_to_rgb(color_input: str) -> int:
input_hash = int.from_bytes(sha256(color_input), byteorder="big")
r = (input_hash & 0xFF0000) >> 16
g = (input_hash & 0x00FF00) >> 8
b = input_hash & 0x0000FF
return (r << 16) | (g << 8) | b
color = QColor(str_to_rgb(server_pubkey))
color_pixmap = QPixmap(100, 100)
color_pixmap.fill(color)
return QIcon(color_pixmap)