working out trades

This commit is contained in:
Oliver Hartmann 2023-01-07 23:56:54 +01:00
parent fd14e4578d
commit 4b85bc5b18
7 changed files with 36 additions and 52 deletions

View File

@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" height="48" width="48"><path d="M6 42v-3h4V9q0-1.2.9-2.1.9-.9 2.1-.9h22q1.2 0 2.1.9.9.9.9 2.1v30h4v3Zm29-3V9H13v30Zm-6.65-13.45q.7 0 1.2-.5t.5-1.2q0-.7-.5-1.2t-1.2-.5q-.7 0-1.2.5t-.5 1.2q0 .7.5 1.2t1.2.5ZM13 9v30V9Z"/></svg>
<svg xmlns="http://www.w3.org/2000/svg" height="48" width="48"><path fill="#eda65a" d="M6 42v-3h4V9q0-1.2.9-2.1.9-.9 2.1-.9h22q1.2 0 2.1.9.9.9.9 2.1v30h4v3Zm29-3V9H13v30Zm-6.65-13.45q.7 0 1.2-.5t.5-1.2q0-.7-.5-1.2t-1.2-.5q-.7 0-1.2.5t-.5 1.2q0 .7.5 1.2t1.2.5ZM13 9v30V9Z"/></svg>

Before

Width:  |  Height:  |  Size: 264 B

After

Width:  |  Height:  |  Size: 281 B

View File

@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" height="48" width="48"><path d="M11 39h7.5V26.5h11V39H37V19.5L24 9.75 11 19.5Zm-3 3V18L24 6l16 12v24H26.5V29.5h-5V42Zm16-17.65Z"/></svg>
<svg xmlns="http://www.w3.org/2000/svg" height="48" width="48"><path fill="#eda65a" d="M11 39h7.5V26.5h11V39H37V19.5L24 9.75 11 19.5Zm-3 3V18L24 6l16 12v24H26.5V29.5h-5V42Zm16-17.65Z"/></svg>

Before

Width:  |  Height:  |  Size: 176 B

After

Width:  |  Height:  |  Size: 193 B

1
icons/material_leave.svg Normal file
View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" height="48" width="48"><path fill="#eda65a" d="M9 42q-1.2 0-2.1-.9Q6 40.2 6 39V9q0-1.2.9-2.1Q7.8 6 9 6h14.55v3H9v30h14.55v3Zm24.3-9.25-2.15-2.15 5.1-5.1h-17.5v-3h17.4l-5.1-5.1 2.15-2.15 8.8 8.8Z"/></svg>

After

Width:  |  Height:  |  Size: 245 B

View File

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

View File

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

View File

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

View File

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