start implementing outgoing trades

This commit is contained in:
2023-01-06 15:09:43 +01:00
parent af4de2df62
commit fd14e4578d
8 changed files with 130 additions and 40 deletions

View File

@@ -4,7 +4,7 @@ from src.data import log
from src.data import Message, compile_regex
from src.pyside6.trade_widget import TradeCollection
from PySide6 import QtCore
from PySide6.QtWidgets import QApplication, QMainWindow, QTabWidget, QSizePolicy, QWidget
from PySide6.QtWidgets import QApplication, QMainWindow, QTabWidget, QSizePolicy
import qdarktheme
@@ -17,7 +17,8 @@ class ResizingTabWidget(QTabWidget):
self.setSizePolicy(QSizePolicy.Policy.Minimum, QSizePolicy.Policy.Minimum)
self.setGeometry(0, 0, 20, 20)
self.trade_collections = {}
self.trade_in_collections = {}
self.trade_out_collections = {}
self.setTabsClosable(True)
self.tabCloseRequested.connect(self.del_tab)
@@ -38,16 +39,29 @@ class ResizingTabWidget(QTabWidget):
self.adjustSize()
self.main_window.updateSizes()
def new_trade(self, message: Message):
def new_in_trade(self, message: Message):
if message.trade:
unique_item = message.trade.unique_item()
if unique_item in self.trade_collections:
self.trade_collections[unique_item].add_trade(message)
if unique_item in self.trade_in_collections:
self.trade_in_collections[unique_item].add_trade(message)
else:
collection = TradeCollection(message, self)
collection.setParent(self)
self.addTab(collection, message.trade.item)
self.trade_collections[message.trade.unique_item()] = collection
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.main_window.show()
@@ -56,14 +70,14 @@ class ResizingTabWidget(QTabWidget):
def del_tab(self, index: int):
collection = self.widget(index)
assert isinstance(collection, TradeCollection)
self.trade_collections[collection.unique_item].deleteLater()
del self.trade_collections[collection.unique_item]
if not self.trade_collections:
self.trade_in_collections[collection.unique_item].deleteLater()
del self.trade_in_collections[collection.unique_item]
if not self.trade_in_collections:
self.main_window.hide()
def del_collection(self, unique_item: str):
del self.trade_collections[unique_item]
if not self.trade_collections:
del self.trade_in_collections[unique_item]
if not self.trade_in_collections:
self.main_window.hide()
@@ -90,8 +104,12 @@ class MainWindow(QMainWindow):
self.resize(self.tab_widget.minimumSizeHint())
@QtCore.Slot()
def new_trade(self, message: Message):
self.tab_widget.new_trade(message)
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 start_app():
@@ -124,8 +142,8 @@ if __name__ == "__main__":
assert message2
assert message3
app, window = start_app()
window.new_trade(message)
window.new_trade(message)
window.new_trade(message2)
window.new_trade(message3)
window.new_in_trade(message)
window.new_in_trade(message)
window.new_in_trade(message2)
window.new_in_trade(message3)
app.exec()