diff --git a/src/pyside6/trade_widget.py b/src/pyside6/trade_widget.py index 07fbb94..85ea24e 100644 --- a/src/pyside6/trade_widget.py +++ b/src/pyside6/trade_widget.py @@ -1,8 +1,9 @@ -from PySide6.QtWidgets import QPushButton, QHBoxLayout, QVBoxLayout, QWidget, QLabel, QSizePolicy +from PySide6.QtWidgets import QPushButton, QHBoxLayout, QVBoxLayout, QWidget, QLabel, QSizePolicy, QFrame from PySide6 import QtCore from src.data import Message from src import sendkeys from src.data import log +from typing import Callable class TradeWidget(QWidget): @@ -17,32 +18,35 @@ class TradeWidget(QWidget): self.main_layout = QHBoxLayout() self.main_layout.setSpacing(0) - # self.main_layout.setMargin(0) self.setSizePolicy(QSizePolicy.Policy.Fixed, QSizePolicy.Policy.Fixed) self.main_layout.setContentsMargins(0, 0, 0, 0) - self.setContentsMargins(0, 0, 0, 0) - self.setGeometry(0, 0, 0, 20) self.setLayout(self.main_layout) assert message.trade - self.label_user = QLabel(message.user) - self.label_item = QLabel(message.trade.item) - self.label_price = QLabel(f'{message.trade.amount} {message.trade.currency}') - buttons = [('inv', self.inv_callback), - ('trade', self.trade_callback), - ('ty', self.thank_callback), - ('wait', self.wait_callback), - ('X', self.delete_callback)] - for button in buttons: - pb = QPushButton(button[0]) - pb.setSizePolicy(QSizePolicy.Policy.Fixed, QSizePolicy.Policy.Fixed) - pb.setContentsMargins(0, 0, 0, 0) - pb.clicked.connect(button[1]) - self.main_layout.addWidget(pb) + self.inv_button = self.new_button('inv', self.inv_callback) + self.trade_button = self.new_button('trade', self.trade_callback) + self.thank_button = self.new_button('thank', self.thank_callback) + self.wait_button = self.new_button('wait', self.wait_callback) + self.close_button = self.new_button('X', self.close_callback) - self.main_layout.addWidget(self.label_item) - self.main_layout.addWidget(self.label_price) - self.main_layout.addWidget(self.label_user) + self.label_item = self.new_Label(message.trade.item) + self.label_price = self.new_Label(f'{message.trade.amount} {message.trade.currency}') + self.label_user = self.new_Label(message.user) + + def new_button(self, text: str, callback: Callable[[], None]) -> QPushButton: + button = QPushButton(text) + button.setSizePolicy(QSizePolicy.Policy.Fixed, QSizePolicy.Policy.Fixed) + button.setContentsMargins(0, 0, 0, 0) + button.clicked.connect(callback) + self.main_layout.addWidget(button) + return button + + def new_Label(self, text: str) -> QLabel: + label = QLabel(text) + label.setFrameStyle(QFrame.Panel | QFrame.Sunken) + label.setAlignment(QtCore.Qt.AlignLeft) + self.main_layout.addWidget(label) + return label def inv_callback(self): sendkeys.invite(message=self.message) @@ -51,7 +55,7 @@ class TradeWidget(QWidget): def thank_callback(self): sendkeys.send_to_format(type='ty', message=self.message) sendkeys.kick(message=self.message) - self.delete_callback() + self.close_callback() def trade_callback(self): sendkeys.trade(message=self.message) @@ -59,13 +63,14 @@ class TradeWidget(QWidget): def wait_callback(self): sendkeys.send_to_format(type='wait', message=self.message) - def delete_callback(self): + def close_callback(self): self.deleteLater() self.parent.del_trade(self.message) class TradeCollection(QWidget): - """docstring for TradeCollection.""" + """This holds the content of one tab. + One tab corresponds to a unique item.""" def __init__(self, message: Message, @@ -86,18 +91,11 @@ class TradeCollection(QWidget): self.trades = {message.unique_trade(): trade} def childEvent(self, event: QtCore.QChildEvent) -> None: - if event.removed(): - log.debug('Child removed') + if event.removed() or event.added(): + log.debug('Child added/removed') self.parent.updateSizes() - if event.added(): - log.debug('Child added') return super().childEvent(event) - def resizeEvent(self, event): - # self.resized.emit() - log.debug('resizeEvent') - return super(TradeCollection, self).resizeEvent(event) - def add_trade(self, message: Message) -> None: assert message.trade if message.unique_trade() in self.trades: