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}.')