use Qt signals to connect to gui
This commit is contained in:
parent
c0fff4e59d
commit
594626ce7e
17
main.py
17
main.py
@ -1,7 +1,9 @@
|
|||||||
from argparse import ArgumentParser, Namespace
|
from argparse import ArgumentParser, Namespace
|
||||||
from threading import Thread
|
from threading import Thread
|
||||||
|
|
||||||
from src import config, gui, trader, clipboard
|
from src import config, trader, clipboard
|
||||||
|
# from src import gui
|
||||||
|
from src.pyside6 import gui_pyside6
|
||||||
from src.data import compile_regex, log
|
from src.data import compile_regex, log
|
||||||
|
|
||||||
|
|
||||||
@ -19,10 +21,13 @@ if __name__ == "__main__":
|
|||||||
conf = config.read_config(args.configfile)
|
conf = config.read_config(args.configfile)
|
||||||
log.debug('Compiling regex')
|
log.debug('Compiling regex')
|
||||||
compile_regex(conf)
|
compile_regex(conf)
|
||||||
app = gui.Gui()
|
# app = gui.Gui()
|
||||||
reader_thread = Thread(target=trader.read_log, args=(conf['General']['log_file'], app))
|
app, window = gui_pyside6.start_app()
|
||||||
|
reader = trader.Log_Reader(window)
|
||||||
|
reader_thread = Thread(target=reader.read_log, args=(conf['General']['log_file'], window))
|
||||||
log.debug(f'Starting reader thread for "{conf["General"]["log_file"]}"')
|
log.debug(f'Starting reader thread for "{conf["General"]["log_file"]}"')
|
||||||
reader_thread.start()
|
reader_thread.start()
|
||||||
clipboard_thread = Thread(target=clipboard.clipboard_poll, args=(app,))
|
# clipboard_thread = Thread(target=clipboard.clipboard_poll, args=(app,))
|
||||||
clipboard_thread.start()
|
# clipboard_thread.start()
|
||||||
app.mainloop()
|
app.exec()
|
||||||
|
# app.mainloop()
|
||||||
|
@ -4,6 +4,7 @@ from src.data import Message, compile_regex
|
|||||||
from src.pyside6.trade_widget import TradeCollection
|
from src.pyside6.trade_widget import TradeCollection
|
||||||
from PySide6 import QtCore
|
from PySide6 import QtCore
|
||||||
from PySide6.QtWidgets import QApplication, QMainWindow, QVBoxLayout, QTabWidget
|
from PySide6.QtWidgets import QApplication, QMainWindow, QVBoxLayout, QTabWidget
|
||||||
|
import qdarktheme
|
||||||
|
|
||||||
|
|
||||||
class MainWindow(QMainWindow):
|
class MainWindow(QMainWindow):
|
||||||
@ -22,6 +23,7 @@ class MainWindow(QMainWindow):
|
|||||||
self.main_widget.tabCloseRequested.connect(self.del_tab)
|
self.main_widget.tabCloseRequested.connect(self.del_tab)
|
||||||
self.setCentralWidget(self.main_widget)
|
self.setCentralWidget(self.main_widget)
|
||||||
|
|
||||||
|
@QtCore.Slot()
|
||||||
def new_trade(self, message: Message):
|
def new_trade(self, message: Message):
|
||||||
if message.trade:
|
if message.trade:
|
||||||
unique_item = message.trade.unique_item()
|
unique_item = message.trade.unique_item()
|
||||||
@ -48,6 +50,14 @@ class MainWindow(QMainWindow):
|
|||||||
self.hide()
|
self.hide()
|
||||||
|
|
||||||
|
|
||||||
|
def start_app():
|
||||||
|
app = QApplication(sys.argv)
|
||||||
|
qdarktheme.setup_theme()
|
||||||
|
app.setStyle('Material')
|
||||||
|
|
||||||
|
window = MainWindow()
|
||||||
|
return app, window
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
conf = config.read_config(r'config.yaml')
|
conf = config.read_config(r'config.yaml')
|
||||||
compile_regex(conf)
|
compile_regex(conf)
|
||||||
@ -60,16 +70,13 @@ if __name__ == "__main__":
|
|||||||
message = Message.from_text(text)
|
message = Message.from_text(text)
|
||||||
message2 = Message.from_text(text2)
|
message2 = Message.from_text(text2)
|
||||||
message3 = Message.from_text(text3)
|
message3 = Message.from_text(text3)
|
||||||
app = QApplication(sys.argv)
|
|
||||||
app.setStyle('Material')
|
|
||||||
|
|
||||||
window = MainWindow()
|
|
||||||
assert message
|
assert message
|
||||||
assert message2
|
assert message2
|
||||||
assert message3
|
assert message3
|
||||||
|
app, window = start_app()
|
||||||
window.new_trade(message)
|
window.new_trade(message)
|
||||||
window.new_trade(message)
|
window.new_trade(message)
|
||||||
window.new_trade(message2)
|
window.new_trade(message2)
|
||||||
window.new_trade(message3)
|
window.new_trade(message3)
|
||||||
|
|
||||||
app.exec()
|
app.exec()
|
||||||
|
|
||||||
|
@ -3,23 +3,31 @@ from .data import Message
|
|||||||
from . import gui
|
from . import gui
|
||||||
from .data import log
|
from .data import log
|
||||||
from io import TextIOWrapper
|
from io import TextIOWrapper
|
||||||
|
from PySide6 import QtCore
|
||||||
|
|
||||||
|
|
||||||
def read_log(logfile: str, app: gui.Gui) -> None:
|
class Log_Reader(QtCore.QObject):
|
||||||
|
new_trade_signal = QtCore.Signal(Message)
|
||||||
|
|
||||||
|
def __init__(self, window):
|
||||||
|
super().__init__()
|
||||||
|
self.new_trade_signal.connect(window.new_trade, QtCore.Qt.QueuedConnection)
|
||||||
|
|
||||||
|
def read_log(self, logfile: str, app) -> None:
|
||||||
try:
|
try:
|
||||||
with open(logfile, 'r', encoding='utf8') as file:
|
with open(logfile, 'r', encoding='utf8') as file:
|
||||||
loglines = follow(file)
|
loglines = self.follow(file)
|
||||||
for line in loglines:
|
for line in loglines:
|
||||||
message = Message.from_text(line)
|
message = Message.from_text(line)
|
||||||
log.debug(message)
|
log.debug(message)
|
||||||
if message and message.trade and message.to_from == 'From':
|
if message and message.trade and message.to_from == 'From':
|
||||||
log.debug(message.trade)
|
log.debug(message.trade)
|
||||||
app.add_tab(30, message)
|
# app.add_tab(30, message)
|
||||||
|
self.new_trade_signal.emit(message)
|
||||||
except IOError:
|
except IOError:
|
||||||
log.error(f'Error opening log file {logfile}.')
|
log.error(f'Error opening log file {logfile}.')
|
||||||
|
|
||||||
|
def follow(self, thefile: TextIOWrapper):
|
||||||
def follow(thefile: TextIOWrapper):
|
|
||||||
thefile.seek(0, 2)
|
thefile.seek(0, 2)
|
||||||
while True:
|
while True:
|
||||||
line = thefile.readline()
|
line = thefile.readline()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user