diff --git a/icons/material_door.svg b/icons/material_door.svg index e67d0c7..96591ea 100644 --- a/icons/material_door.svg +++ b/icons/material_door.svg @@ -1 +1 @@ - \ No newline at end of file + diff --git a/icons/material_home.svg b/icons/material_home.svg index 6a00126..082903d 100644 --- a/icons/material_home.svg +++ b/icons/material_home.svg @@ -1 +1 @@ - \ No newline at end of file + diff --git a/icons/material_leave.svg b/icons/material_leave.svg new file mode 100644 index 0000000..7976dca --- /dev/null +++ b/icons/material_leave.svg @@ -0,0 +1 @@ + diff --git a/src/data.py b/src/data.py index bbf580c..72fe958 100644 --- a/src/data.py +++ b/src/data.py @@ -95,9 +95,6 @@ class Trade(): and self.col == __o.col and self.league == __o.league) - def unique_item(self) -> str: - return f'{self.item}-{self.tab}-{self.row}/{self.col}-{self.league}' - class Message(): def __init__(self, @@ -152,3 +149,12 @@ class Message(): def unique_trade(self) -> int: assert self.trade return hash((self.user, self.trade.__hash__())) + + def unique_user_item(self) -> int: + assert self.trade + if self.to_from == 'From': + # Item in my stash. + return hash((self.trade.item, self.trade.tab, self.trade.row, self.trade.col, self.trade.league)) + else: + # Item in a stash from another char + return hash((self.trade.item, self.trade.league)) diff --git a/src/pyside6/gui_pyside6.py b/src/pyside6/gui_pyside6.py index 1f04288..505382b 100644 --- a/src/pyside6/gui_pyside6.py +++ b/src/pyside6/gui_pyside6.py @@ -39,29 +39,16 @@ class ResizingTabWidget(QTabWidget): self.adjustSize() self.main_window.updateSizes() - def new_in_trade(self, message: Message): + def new_trade(self, message: Message): if message.trade: - unique_item = message.trade.unique_item() + unique_item = message.unique_user_item() if unique_item in self.trade_in_collections: self.trade_in_collections[unique_item].add_trade(message) else: - collection = TradeCollection(message, self) + collection = TradeCollection(self, unique_item) + collection.add_trade(message) self.addTab(collection, message.trade.item) - self.trade_in_collections[message.trade.unique_item()] = collection - - self.main_window.show() - - self.main_window.updateSizes() - - def new_out_trade(self, message: Message): - if message.trade: - unique_item = message.trade.unique_item() - if unique_item in self.trade_out_collections: - self.trade_out_collections[unique_item].add_trade(message) - else: - collection = TradeCollection(message, self) - self.addTab(collection, message.trade.item) - self.trade_out_collections[message.trade.unique_item()] = collection + self.trade_in_collections[unique_item] = collection self.main_window.show() @@ -70,13 +57,13 @@ class ResizingTabWidget(QTabWidget): def del_tab(self, index: int): collection = self.widget(index) assert isinstance(collection, TradeCollection) - self.trade_in_collections[collection.unique_item].deleteLater() - del self.trade_in_collections[collection.unique_item] + self.trade_in_collections[collection.unique_user_item].deleteLater() + del self.trade_in_collections[collection.unique_user_item] if not self.trade_in_collections: self.main_window.hide() - def del_collection(self, unique_item: str): - del self.trade_in_collections[unique_item] + def del_collection(self, unique_user_item: str): + del self.trade_in_collections[unique_user_item] if not self.trade_in_collections: self.main_window.hide() @@ -104,12 +91,8 @@ class MainWindow(QMainWindow): self.resize(self.tab_widget.minimumSizeHint()) @QtCore.Slot() - def new_in_trade(self, message: Message): - self.tab_widget.new_in_trade(message) - - @QtCore.Slot() - def new_out_trade(self, message: Message): - self.tab_widget.new_out_trade(message) + def new_trade(self, message: Message): + self.tab_widget.new_trade(message) def start_app(): diff --git a/src/pyside6/trade_widget.py b/src/pyside6/trade_widget.py index 000e389..8a09dd8 100644 --- a/src/pyside6/trade_widget.py +++ b/src/pyside6/trade_widget.py @@ -127,12 +127,11 @@ class TradeCollection(QWidget): One tab corresponds to a unique item.""" def __init__(self, - message: Message, - parent): + parent, + unique_user_item: int): super(TradeCollection, self).__init__(parent) self.parent = parent - assert message.trade - self.unique_item = message.trade.unique_item() + self.unique_user_item = unique_user_item self.setSizePolicy(QSizePolicy.Policy.Minimum, QSizePolicy.Policy.Minimum) self.setGeometry(0, 0, 20, 20) self.main_layout = QVBoxLayout() @@ -140,9 +139,7 @@ class TradeCollection(QWidget): self.main_layout.setContentsMargins(0, 0, 0, 0) self.setContentsMargins(0, 0, 0, 0) self.setLayout(self.main_layout) - trade = Trade_In_Widget(message, self) - self.main_layout.addWidget(trade) - self.trades = {message.unique_trade(): trade} + self.trades = {} def childEvent(self, event: QtCore.QChildEvent) -> None: if event.removed() or event.added(): @@ -154,7 +151,11 @@ class TradeCollection(QWidget): assert message.trade if message.unique_trade() in self.trades: return - trade = Trade_In_Widget(message, self) + if message.to_from == 'From': + trade = Trade_In_Widget(message, self) + else: + trade = Trade_Out_Widget(message, self) + self.main_layout.addWidget(trade) self.trades[message.unique_trade()] = trade @@ -162,5 +163,5 @@ class TradeCollection(QWidget): assert message.trade del self.trades[message.unique_trade()] if not self.trades: - self.parent.del_collection(self.unique_item) + self.parent.del_collection(self.unique_user_item) self.deleteLater() diff --git a/src/trader.py b/src/trader.py index 26ea17b..4651b5c 100644 --- a/src/trader.py +++ b/src/trader.py @@ -8,13 +8,12 @@ from src.pyside6.gui_pyside6 import MainWindow class Log_Reader(QtCore.QObject): - new_in_trade_signal = QtCore.Signal(Message) + new_trade_signal = QtCore.Signal(Message) new_out_trade_signal = QtCore.Signal(Message) def __init__(self, window: MainWindow): super().__init__() - self.new_in_trade_signal.connect(window.new_in_trade, QtCore.Qt.QueuedConnection) - self.new_out_trade_signal.connect(window.new_out_trade, QtCore.Qt.QueuedConnection) + self.new_trade_signal.connect(window.new_trade, QtCore.Qt.QueuedConnection) def read_log(self, logfile: str) -> None: try: @@ -24,13 +23,7 @@ class Log_Reader(QtCore.QObject): message = Message.from_text(line) log.debug(message) if message and message.trade: - if message.to_from == 'From': - log.debug(message.trade) - # app.add_tab(30, message) - self.new_in_trade_signal.emit(message) - if message.to_from == 'To': - log.debug(message.trade) - self.new_out_trade_signal.emit(message) + self.new_trade_signal.emit(message) except IOError: log.error(f'Error opening log file {logfile}.')