1
0
mirror of https://github.com/bec-project/bec_widgets.git synced 2025-12-27 09:31:18 +01:00

feat: add draft diagnostic view

This commit is contained in:
2025-11-28 15:33:12 +01:00
parent fdb7008eee
commit b0986f15df
3 changed files with 97 additions and 0 deletions

View File

@@ -7,6 +7,7 @@ from bec_widgets.applications.views.developer_view.developer_view import Develop
from bec_widgets.applications.views.device_manager_view.device_manager_widget import (
DeviceManagerWidget,
)
from bec_widgets.applications.views.diagnostic_view.diagnostic_view import DiagnosticView
from bec_widgets.applications.views.view import ViewBase, WaveformViewInline, WaveformViewPopup
from bec_widgets.utils.colors import apply_theme
from bec_widgets.widgets.containers.advanced_dock_area.advanced_dock_area import AdvancedDockArea
@@ -53,6 +54,7 @@ class BECMainApp(BECMainWindow):
self.ads.setObjectName("MainWorkspace")
self.device_manager = DeviceManagerWidget(self)
self.developer_view = DeveloperView(self)
self.diagnostics = DiagnosticView(self)
self.add_view(
icon="widgets", title="Dock Area", id="dock_area", widget=self.ads, mini_text="Docks"
@@ -71,6 +73,13 @@ class BECMainApp(BECMainWindow):
id="developer_view",
exclusive=True,
)
self.add_view(
icon="code_blocks",
title="Diagnostics",
widget=self.diagnostics,
id="diagnostic_view",
exclusive=True,
)
if self._show_examples:
self.add_section("Examples", "examples")

View File

@@ -0,0 +1,88 @@
from qtpy.QtWidgets import QWidget
from bec_widgets.applications.views.view import ViewBase
from bec_widgets.widgets.containers.advanced_dock_area.basic_dock_area import DockAreaWidget
from bec_widgets.widgets.services.bec_status_box.bec_status_box import BECStatusBox
from bec_widgets.widgets.utility.logpanel.logpanel import LogPanel
class DiagnosticWidget(DockAreaWidget):
def __init__(self, parent=None, **kwargs):
super().__init__(parent=parent, variant="compact", **kwargs)
logs_dock_kwargs = {
"closable": False,
"floatable": False,
"movable": False,
"return_dock": True,
"show_settings_action": False,
"title_buttons": {"float": False, "close": False, "menu": False},
}
self.device_logs = LogPanel(show_toolbar=False, service_filter={"DeviceServer"})
self.device_logs.setObjectName("Device Server logs")
self.device_logs_dock = self.new(self.device_logs, **logs_dock_kwargs)
self.scihub_logs = LogPanel(show_toolbar=False, service_filter={"SciHub"})
self.scihub_logs.setObjectName("SciHub logs")
self.scihub_logs_dock = self.new(
self.scihub_logs, relative_to=self.device_logs_dock, where="right", **logs_dock_kwargs
)
self.service_status = BECStatusBox()
self.service_status.setObjectName("Service Status")
self.service_status_dock = self.new(
self.service_status,
relative_to=self.scihub_logs_dock,
where="right",
**logs_dock_kwargs,
)
self.scan_logs = LogPanel(show_toolbar=False, service_filter={"ScanServer"})
self.scan_logs.setObjectName("Scan Server logs")
self.scan_logs_dock = self.new(
self.scan_logs, relative_to=self.device_logs_dock, where="bottom", **logs_dock_kwargs
)
self.dap_logs = LogPanel(show_toolbar=False, service_filter={"DAPServer"})
self.dap_logs.setObjectName("DAP Server logs")
self.dap_logs_dock = self.new(
self.dap_logs, relative_to=self.scan_logs_dock, where="bottom", **logs_dock_kwargs
)
self.scanbundler_logs = LogPanel(show_toolbar=False, service_filter={"ScanBundler"})
self.scanbundler_logs.setObjectName("ScanBundler logs")
self.scanbundler_logs_dock = self.new(
self.scanbundler_logs,
relative_to=self.scihub_logs_dock,
where="bottom",
**logs_dock_kwargs,
)
self.filewriter_logs = LogPanel(show_toolbar=False, service_filter={"FileWriter"})
self.filewriter_logs.setObjectName("FileWriter logs")
self.filewriter_logs_dock = self.new(
self.filewriter_logs,
relative_to=self.scanbundler_logs_dock,
where="bottom",
**logs_dock_kwargs,
)
class DiagnosticView(ViewBase):
"""
A view for users to write scripts and macros and execute them within the application.
"""
def __init__(
self,
parent: QWidget | None = None,
content: QWidget | None = None,
*,
id: str | None = None,
title: str | None = None,
):
super().__init__(parent=parent, content=content, id=id, title=title)
self.developer_widget = DiagnosticWidget(parent=self)
self.set_content(self.developer_widget)