From e96ec3eaec1d82d647b211fb2faf02816e55449f Mon Sep 17 00:00:00 2001 From: Oliver Hartmann Date: Tue, 3 Jan 2023 22:32:36 +0100 Subject: [PATCH] more implementations for pyside gui --- src/data.py | 3 +++ src/pyside6/gui_pyside6.py | 35 +++++++++++++++++++++++------------ src/pyside6/trade_widget.py | 18 +++++++++++------- 3 files changed, 37 insertions(+), 19 deletions(-) diff --git a/src/data.py b/src/data.py index e75a365..0977d62 100644 --- a/src/data.py +++ b/src/data.py @@ -86,6 +86,9 @@ class Trade(): def __str__(self) -> str: return f'Trade: {self.nrItems} {self.item} for {self.amount} {self.currency} in {self.tab} ({self.row}/{self.col}) in {self.league} league' + def unique_item(self) -> str: + return f'{self.item}-{self.tab}-{self.row}/{self.col}-{self.league}' + class Message(): def __init__(self, diff --git a/src/pyside6/gui_pyside6.py b/src/pyside6/gui_pyside6.py index bbdcb78..595e465 100644 --- a/src/pyside6/gui_pyside6.py +++ b/src/pyside6/gui_pyside6.py @@ -1,10 +1,10 @@ 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 +from src.data import Message +from trade_widget import TradeCollection +from PySide6 import QtCore +from PySide6.QtWidgets import QApplication, QMainWindow, QVBoxLayout, QTabWidget class MainWindow(QMainWindow): @@ -12,27 +12,38 @@ class MainWindow(QMainWindow): super().__init__() config.read_config(r'config.yaml') - self.button_is_checked = True self.setWindowFlag(QtCore.Qt.FramelessWindowHint) - # self.setAttribute(QtCore.Qt.WA_TranslucentBackground) + self.setAttribute(QtCore.Qt.WA_TranslucentBackground) + + self.trades = {} 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)' + text2 = '2021/03/08 23:24:52 17931875 bb3 [INFO Client 1492] @From NiceGuy: 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) + message2 = Message.from_text(text2) 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.new_trade(message) + self.new_trade(message) + self.new_trade(message2) self.setCentralWidget(self.main_widget) + def new_trade(self, message: Message): + if message.trade: + unique_item = message.trade.unique_item() + if unique_item in self.trades: + self.trades[unique_item].add_trade(message) + else: + collection = TradeCollection(message) + self.trades[message.trade.unique_item()] = collection + self.main_widget.addTab(collection, message.trade.item) + if __name__ == "__main__": pass diff --git a/src/pyside6/trade_widget.py b/src/pyside6/trade_widget.py index bf6bccb..a54a9cd 100644 --- a/src/pyside6/trade_widget.py +++ b/src/pyside6/trade_widget.py @@ -15,6 +15,7 @@ class TradeWidget(QWidget): 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}') @@ -30,6 +31,7 @@ class TradeWidget(QWidget): 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) @@ -45,7 +47,7 @@ class TradeWidget(QWidget): def thank_callback(self): sendkeys.send_to_format(type='ty', message=self.message) sendkeys.kick(message=self.message) - self.deleteLater() + self.delete_callback() def trade_callback(self): sendkeys.trade(message=self.message) @@ -55,7 +57,7 @@ class TradeWidget(QWidget): def delete_callback(self): self.deleteLater() - self.parent.del_trade(self) + self.parent.del_trade(self.message) class TradeCollection(QWidget): @@ -66,14 +68,16 @@ class TradeCollection(QWidget): self.setLayout(self.main_layout) trade = TradeWidget(message, self) self.main_layout.addWidget(trade) - self.counter = 1 + 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.counter += 1 + self.trades[message.trade.__hash__] = trade - def del_trade(self, trade: TradeWidget): - self.counter -= 1 - if self.counter == 0: + def del_trade(self, message: Message): + del self.trades[message.trade.__hash__] + if not self.trades: self.deleteLater()