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):
|
||||
"""Log a debug message."""
|
||||
self.log_watcher.emit(LogEvent(
|
||||
timestamp=datetime.now(),
|
||||
level="DEBUG",
|
||||
source=source,
|
||||
message=message
|
||||
))
|
||||
self._append_log("DEBUG", source, message)
|
||||
|
||||
def log_info(self, source: str, message: str):
|
||||
"""Log an info message."""
|
||||
self.log_watcher.emit(LogEvent(
|
||||
timestamp=datetime.now(),
|
||||
level="INFO",
|
||||
source=source,
|
||||
message=message
|
||||
))
|
||||
self._append_log("INFO", source, message)
|
||||
|
||||
def log_warning(self, source: str, message: str):
|
||||
"""Log a warning message."""
|
||||
self.log_watcher.emit(LogEvent(
|
||||
timestamp=datetime.now(),
|
||||
level="WARNING",
|
||||
source=source,
|
||||
message=message
|
||||
))
|
||||
self._append_log("WARNING", source, message)
|
||||
|
||||
def log_error(self, source: str, message: str):
|
||||
"""Log an error message."""
|
||||
self.log_watcher.emit(LogEvent(
|
||||
timestamp=datetime.now(),
|
||||
level="ERROR",
|
||||
source=source,
|
||||
message=message
|
||||
))
|
||||
self._append_log("ERROR", source, message)
|
||||
|
||||
def _append_log(self, level: str, source: str, message: str):
|
||||
"""Append log message to output."""
|
||||
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:
|
||||
"""Escape HTML special characters."""
|
||||
|
|
|
|||
Loading…
Reference in New Issue