fix(gui): logging methods don't depend on log_watcher
- log_debug/info/warning/error now use _append_log directly - Avoids AttributeError when log_watcher is None during init - LogWatcher is only used for game events, not UI logging
This commit is contained in:
parent
e2388dadaf
commit
e1316076bf
|
|
@ -1142,39 +1142,36 @@ class MainWindow(QMainWindow):
|
||||||
|
|
||||||
def log_debug(self, source: str, message: str):
|
def log_debug(self, source: str, message: str):
|
||||||
"""Log a debug message."""
|
"""Log a debug message."""
|
||||||
self.log_watcher.emit(LogEvent(
|
self._append_log("DEBUG", source, message)
|
||||||
timestamp=datetime.now(),
|
|
||||||
level="DEBUG",
|
|
||||||
source=source,
|
|
||||||
message=message
|
|
||||||
))
|
|
||||||
|
|
||||||
def log_info(self, source: str, message: str):
|
def log_info(self, source: str, message: str):
|
||||||
"""Log an info message."""
|
"""Log an info message."""
|
||||||
self.log_watcher.emit(LogEvent(
|
self._append_log("INFO", source, message)
|
||||||
timestamp=datetime.now(),
|
|
||||||
level="INFO",
|
|
||||||
source=source,
|
|
||||||
message=message
|
|
||||||
))
|
|
||||||
|
|
||||||
def log_warning(self, source: str, message: str):
|
def log_warning(self, source: str, message: str):
|
||||||
"""Log a warning message."""
|
"""Log a warning message."""
|
||||||
self.log_watcher.emit(LogEvent(
|
self._append_log("WARNING", source, message)
|
||||||
timestamp=datetime.now(),
|
|
||||||
level="WARNING",
|
|
||||||
source=source,
|
|
||||||
message=message
|
|
||||||
))
|
|
||||||
|
|
||||||
def log_error(self, source: str, message: str):
|
def log_error(self, source: str, message: str):
|
||||||
"""Log an error message."""
|
"""Log an error message."""
|
||||||
self.log_watcher.emit(LogEvent(
|
self._append_log("ERROR", source, message)
|
||||||
timestamp=datetime.now(),
|
|
||||||
level="ERROR",
|
def _append_log(self, level: str, source: str, message: str):
|
||||||
source=source,
|
"""Append log message to output."""
|
||||||
message=message
|
timestamp = datetime.now().strftime("%H:%M:%S")
|
||||||
))
|
color = {
|
||||||
|
"DEBUG": "#888888",
|
||||||
|
"INFO": "#4caf50",
|
||||||
|
"WARNING": "#ff9800",
|
||||||
|
"ERROR": "#f44336"
|
||||||
|
}.get(level, "#ffffff")
|
||||||
|
|
||||||
|
log_entry = f'<span style="color: #666;">[{timestamp}]</span> <span style="color: {color};">[{level}]</span> <span style="color: #aaa;">[{source}]</span> {self.escape_html(message)}'
|
||||||
|
self.log_output.append(log_entry)
|
||||||
|
|
||||||
|
# Auto-scroll to bottom
|
||||||
|
scrollbar = self.log_output.verticalScrollBar()
|
||||||
|
scrollbar.setValue(scrollbar.maximum())
|
||||||
|
|
||||||
def escape_html(self, text: str) -> str:
|
def escape_html(self, text: str) -> str:
|
||||||
"""Escape HTML special characters."""
|
"""Escape HTML special characters."""
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue