from PySide6.QtWidgets import QPushButton, QHBoxLayout, QVBoxLayout, QWidget, QLabel from src.data import Message from src import sendkeys class TradeWidget(QWidget): """docstring for TradeWidget.""" def __init__(self, message: Message, parent): super(TradeWidget, self).__init__(parent=parent) self.message = message self.parent = parent self.main_layout = QHBoxLayout() self.setLayout(self.main_layout) self.label_user = QLabel(message.user) self.label_item = QLabel(message.trade.item) self.label_price = QLabel(f'{message.trade.amount} {message.trade.currency}') self.inv_button = QPushButton('inv') self.trade_button = QPushButton('trade') self.thank_button = QPushButton('ty') self.wait_button = QPushButton('wait') self.del_button = QPushButton('X') self.inv_button.clicked.connect(self.inv_callback) self.trade_button.clicked.connect(self.trade_callback) self.thank_button.clicked.connect(self.thank_callback) self.wait_button.clicked.connect(self.wait_callback) self.del_button.clicked.connect(self.delete_callback) self.main_layout.addWidget(self.label_user) self.main_layout.addWidget(self.label_item) self.main_layout.addWidget(self.label_price) self.main_layout.addWidget(self.inv_button) self.main_layout.addWidget(self.trade_button) self.main_layout.addWidget(self.thank_button) self.main_layout.addWidget(self.wait_button) self.main_layout.addWidget(self.del_button) def inv_callback(self): sendkeys.invite(message=self.message) sendkeys.send_to_format(type='pickup', message=self.message) def thank_callback(self): sendkeys.send_to_format(type='ty', message=self.message) sendkeys.kick(message=self.message) self.delete_callback() def trade_callback(self): sendkeys.trade(message=self.message) def wait_callback(self): sendkeys.send_to_format(type='wait', message=self.message) def delete_callback(self): self.deleteLater() self.parent.del_trade(self.message) class TradeCollection(QWidget): """docstring for TradeCollection.""" def __init__(self, message: Message, parent): super(TradeCollection, self).__init__() self.parent = parent self.main_layout = QVBoxLayout() self.setLayout(self.main_layout) trade = TradeWidget(message, self) self.main_layout.addWidget(trade) self.trades = {message.trade.__hash__: trade} def add_trade(self, message: Message) -> None: if message.trade.__hash__ in self.trades: return trade = TradeWidget(message, self) self.main_layout.addWidget(trade) self.trades[message.trade.__hash__] = trade def del_trade(self, message: Message): del self.trades[message.trade.__hash__] if not self.trades: self.parent.del_collection(message.trade.unique_item()) self.deleteLater()