diff --git a/src/data.py b/src/data.py index 8dd4d4f..07a90f4 100644 --- a/src/data.py +++ b/src/data.py @@ -13,7 +13,7 @@ re_log = re.compile(r'(?P\d\d\d\d/\d\d/\d\d \d\d:\d\d:\d\d) (\d+) (\S+) \[ re_comm = re.compile(r'(?P[#@%$&]?)(?PTo|From)?\s?(?P<\S+>)? ?(?P[^:]+): (?P.*)') -re_joined = re.compile(r'(?P\S+) has joined the area.') +re_joined = re.compile(r': (?P\S+) has joined the area.') re_clipboard = None re_clipboard_prefix = None @@ -112,8 +112,11 @@ class Entered(): def from_message(cls, message: str): result = re_joined.search(message) if not result: + log.debug(f'Joined regex doesn\'t fit for text "{message}"') return None - return cls(result.group('user')) + user = result.group('user') + log.debug(f'User {user} entered') + return cls(user) class Communcation(): @@ -136,7 +139,7 @@ class Communcation(): def from_text(cls, text: str): result = re_comm.search(text) if not result: - log.debug(f'Result is none for text "{text}"') + log.debug(f'communication regex doesn\'t fit for text "{text}"') return None guild = result.group('guild') if guild: diff --git a/src/pyside6/gui_pyside6.py b/src/pyside6/gui_pyside6.py index 50557b6..85a2444 100644 --- a/src/pyside6/gui_pyside6.py +++ b/src/pyside6/gui_pyside6.py @@ -6,6 +6,7 @@ from src.pyside6.trade_widget import TradeCollection from PySide6 import QtCore from PySide6.QtWidgets import QApplication, QMainWindow, QTabWidget, QSizePolicy import qdarktheme +from typing import Dict class ResizingTabWidget(QTabWidget): @@ -94,6 +95,16 @@ class MainWindow(QMainWindow): def new_trade(self, message: Message): self.tab_widget.new_trade(message) + @QtCore.Slot() + def new_entered(self, message: Message): + for collection in self.tab_widget.trade_in_collections.values(): + for tradeWidget in collection.trades.values(): + if tradeWidget.message.communication.user == message.entered.user: + log.debug(f'Found trade with user {message.entered.user}') + tradeWidget.setHighlightStyle() + return + log.debug(f'User {message.entered.user} trade not found') + def start_app(): app = QApplication(sys.argv) diff --git a/src/pyside6/trade_widget.py b/src/pyside6/trade_widget.py index 08e2f98..83af003 100644 --- a/src/pyside6/trade_widget.py +++ b/src/pyside6/trade_widget.py @@ -4,7 +4,7 @@ from PySide6.QtGui import QIcon from src.data import Message from src import sendkeys from src.data import log -from typing import Callable +from typing import Callable, Dict class TradeWidget(QWidget): @@ -22,6 +22,7 @@ class TradeWidget(QWidget): self.setSizePolicy(QSizePolicy.Policy.Fixed, QSizePolicy.Policy.Fixed) self.main_layout.setContentsMargins(0, 0, 0, 0) self.setLayout(self.main_layout) + self.setNormalStyle() assert message.communication.trade def new_button(self, icon_filename: str, tooltip: str, callback: Callable[[], None]) -> QPushButton: @@ -41,6 +42,13 @@ class TradeWidget(QWidget): self.main_layout.addWidget(label) return label + def setNormalStyle(self): + self.setStyleSheet("margin:5px; border:0px solid rgb(0, 255, 0); ") + + def setHighlightStyle(self): + self.setStyleSheet("margin:5px; border:1px solid rgb(0, 255, 0); ") + + class Trade_In_Widget(TradeWidget): diff --git a/src/trader.py b/src/trader.py index 99040c1..f0807a5 100644 --- a/src/trader.py +++ b/src/trader.py @@ -10,10 +10,12 @@ from src.pyside6.gui_pyside6 import MainWindow class Log_Reader(QtCore.QObject): new_trade_signal = QtCore.Signal(Message) new_out_trade_signal = QtCore.Signal(Message) + new_entered = QtCore.Signal(Message) def __init__(self, window: MainWindow): super().__init__() self.new_trade_signal.connect(window.new_trade, QtCore.Qt.QueuedConnection) + self.new_entered.connect(window.new_entered, QtCore.Qt.QueuedConnection) def read_log(self, logfile: str) -> None: try: @@ -24,6 +26,8 @@ class Log_Reader(QtCore.QObject): log.debug(message) if message and message.communication and message.communication.trade: self.new_trade_signal.emit(message) + if message and message.entered: + self.new_entered.emit(message) except IOError: log.error(f'Error opening log file {logfile}.') diff --git a/tests/test_log.py b/tests/test_log.py index 443171d..cd8f716 100644 --- a/tests/test_log.py +++ b/tests/test_log.py @@ -53,4 +53,13 @@ def test_write_to_log_42(): assert (log_file) text = "2021/05/11 23:34:41 13600796 bad [INFO Client 9008] @From HenryHase: Hi, I would like to buy your Cortex Relic Chambers Map (T15) listed for 3.4 exalted in Ultimatum (stash tab \"$\"; position: left 3, top 9)" with open(log_file, 'a') as f: - f.write(text) \ No newline at end of file + f.write(text) + + +def test_write_entered(): + config.read_config(r'config.yaml') + log_file = config.get_value('General.log_file') + assert (log_file) + text = r'2023/05/21 22:39:25 28761078 cffb0719 [INFO Client 13392] : Sinusal has joined the area.' + with open(log_file, 'a') as f: + f.write(text)