Added log widget

This commit is contained in:
2025-08-02 16:22:43 +02:00
parent 38593fc2c5
commit bc4f10a7ad
4 changed files with 159 additions and 139 deletions

View File

@ -0,0 +1,53 @@
import dearpygui.dearpygui as dpg
import logging
from .base_widget import BaseWidget
class DPGLogHandler(logging.Handler):
def __init__(self, callback):
super().__init__()
self.callback = callback
def emit(self, record):
msg = self.format(record)
self.callback(msg)
class LogWindowWidget(BaseWidget):
name = "Log Window"
register = True
def __init__(self, manager, logger):
super().__init__(manager, logger)
self.initialized = False
self.log_tag = dpg.generate_uuid()
self.log_lines = []
# Create and attach handler
self.handler = DPGLogHandler(self._on_log)
self.handler.setFormatter(logging.Formatter(
'%(asctime)s [%(levelname)s] %(message)s'))
self.logger.addHandler(self.handler)
def create_content(self):
dpg.add_text("Live Log Output")
dpg.add_separator()
dpg.add_child_window(tag=self.log_tag, autosize_x=True,
autosize_y=True, horizontal_scrollbar=True)
self.initialized = True
def _on_log(self, msg: str):
self.log_lines.append(msg)
if self.initialized:
dpg.add_text(msg, parent=self.log_tag)
dpg.set_y_scroll(self.log_tag, dpg.get_y_scroll_max(self.log_tag))
def on_resize(self, width: int, height: int):
# Optional: could resize child window here if needed
pass
def _on_window_close(self):
if self.initialized:
self.logger.removeHandler(self.handler)
self.handler = None
super()._on_window_close()

View File

@ -39,6 +39,9 @@ class OpenRawWidget(PipelineStageWidget):
"four_color_rgb": False,
}
def get_config(self):
return {}
def create_pipeline_stage_content(self):
with dpg.file_dialog(
directory_selector=False,
@ -140,7 +143,7 @@ class OpenRawWidget(PipelineStageWidget):
"four_color_rgb", a)
)
with dpg.group(tag=self.busy_group):
with dpg.group(tag=self.busy_group, show=False):
dpg.add_text("Processing...")
def _on_open_file(self):