From d24d53116feb289341802c38e87f1695feb53b03 Mon Sep 17 00:00:00 2001 From: Oliver Hartmann Date: Tue, 3 Jan 2023 21:55:35 +0100 Subject: [PATCH] added pyside gui --- src/pyside6/gui_pyside6.py | 45 +++++++++++++++++++++ src/pyside6/trade_widget.py | 79 +++++++++++++++++++++++++++++++++++++ 2 files changed, 124 insertions(+) create mode 100644 src/pyside6/gui_pyside6.py create mode 100644 src/pyside6/trade_widget.py diff --git a/src/pyside6/gui_pyside6.py b/src/pyside6/gui_pyside6.py new file mode 100644 index 0000000..bbdcb78 --- /dev/null +++ b/src/pyside6/gui_pyside6.py @@ -0,0 +1,45 @@ +import sys +sys.path.append('d:/PoeTrader') +from PySide6.QtWidgets import QApplication, QMainWindow, QVBoxLayout, QTabWidget +from PySide6 import QtCore +from trade_widget import TradeCollection +from src.data import Message +from src import config + + +class MainWindow(QMainWindow): + def __init__(self): + super().__init__() + + config.read_config(r'config.yaml') + self.button_is_checked = True + self.setWindowFlag(QtCore.Qt.FramelessWindowHint) + # self.setAttribute(QtCore.Qt.WA_TranslucentBackground) + + text = '2021/03/08 23:24:52 17931875 bb3 [INFO Client 1492] @From Sinusal: Hi, I would like to buy your level 21 23% Vaal Impurity of Lightning ' \ + 'listed for 18 chaos in Ritual (stash tab "$"; position: left 22, top 5)' + message = Message.from_text(text) + self.setWindowTitle("My App") + + self.main_widget = QTabWidget() + + # self.main_layout = QVBoxLayout() + if message: + trade_collection = TradeCollection(message) + trade_collection.add_trade(message) + self.main_widget.addTab(trade_collection, 'Hello') + self.main_widget.addTab(TradeCollection(message), 'Hello2') + # self.main_layout.addWidget(TradeWidget(message)) + + self.setCentralWidget(self.main_widget) + + +if __name__ == "__main__": + pass + app = QApplication(sys.argv) + app.setStyle('Material') + + window = MainWindow() + window.show() + + app.exec() diff --git a/src/pyside6/trade_widget.py b/src/pyside6/trade_widget.py new file mode 100644 index 0000000..bf6bccb --- /dev/null +++ b/src/pyside6/trade_widget.py @@ -0,0 +1,79 @@ +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_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_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.deleteLater() + + 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) + + +class TradeCollection(QWidget): + """docstring for TradeCollection.""" + def __init__(self, message: Message): + super(TradeCollection, self).__init__() + self.main_layout = QVBoxLayout() + self.setLayout(self.main_layout) + trade = TradeWidget(message, self) + self.main_layout.addWidget(trade) + self.counter = 1 + + def add_trade(self, message: Message) -> None: + trade = TradeWidget(message, self) + self.main_layout.addWidget(trade) + self.counter += 1 + + def del_trade(self, trade: TradeWidget): + self.counter -= 1 + if self.counter == 0: + self.deleteLater()