PoeTrade/src/pyside6/trade_widget.py

89 lines
3.2 KiB
Python

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()