Skip to content

Commit b0986f1

Browse files
committed
feat: add draft diagnostic view
1 parent fdb7008 commit b0986f1

File tree

3 files changed

+97
-0
lines changed

3 files changed

+97
-0
lines changed

bec_widgets/applications/main_app.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
from bec_widgets.applications.views.device_manager_view.device_manager_widget import (
88
DeviceManagerWidget,
99
)
10+
from bec_widgets.applications.views.diagnostic_view.diagnostic_view import DiagnosticView
1011
from bec_widgets.applications.views.view import ViewBase, WaveformViewInline, WaveformViewPopup
1112
from bec_widgets.utils.colors import apply_theme
1213
from bec_widgets.widgets.containers.advanced_dock_area.advanced_dock_area import AdvancedDockArea
@@ -53,6 +54,7 @@ def _add_views(self):
5354
self.ads.setObjectName("MainWorkspace")
5455
self.device_manager = DeviceManagerWidget(self)
5556
self.developer_view = DeveloperView(self)
57+
self.diagnostics = DiagnosticView(self)
5658

5759
self.add_view(
5860
icon="widgets", title="Dock Area", id="dock_area", widget=self.ads, mini_text="Docks"
@@ -71,6 +73,13 @@ def _add_views(self):
7173
id="developer_view",
7274
exclusive=True,
7375
)
76+
self.add_view(
77+
icon="code_blocks",
78+
title="Diagnostics",
79+
widget=self.diagnostics,
80+
id="diagnostic_view",
81+
exclusive=True,
82+
)
7483

7584
if self._show_examples:
7685
self.add_section("Examples", "examples")

bec_widgets/applications/views/diagnostic_view/__init__.py

Whitespace-only changes.
Lines changed: 88 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,88 @@
1+
from qtpy.QtWidgets import QWidget
2+
3+
from bec_widgets.applications.views.view import ViewBase
4+
from bec_widgets.widgets.containers.advanced_dock_area.basic_dock_area import DockAreaWidget
5+
from bec_widgets.widgets.services.bec_status_box.bec_status_box import BECStatusBox
6+
from bec_widgets.widgets.utility.logpanel.logpanel import LogPanel
7+
8+
9+
class DiagnosticWidget(DockAreaWidget):
10+
11+
def __init__(self, parent=None, **kwargs):
12+
super().__init__(parent=parent, variant="compact", **kwargs)
13+
14+
logs_dock_kwargs = {
15+
"closable": False,
16+
"floatable": False,
17+
"movable": False,
18+
"return_dock": True,
19+
"show_settings_action": False,
20+
"title_buttons": {"float": False, "close": False, "menu": False},
21+
}
22+
23+
self.device_logs = LogPanel(show_toolbar=False, service_filter={"DeviceServer"})
24+
self.device_logs.setObjectName("Device Server logs")
25+
self.device_logs_dock = self.new(self.device_logs, **logs_dock_kwargs)
26+
27+
self.scihub_logs = LogPanel(show_toolbar=False, service_filter={"SciHub"})
28+
self.scihub_logs.setObjectName("SciHub logs")
29+
self.scihub_logs_dock = self.new(
30+
self.scihub_logs, relative_to=self.device_logs_dock, where="right", **logs_dock_kwargs
31+
)
32+
33+
self.service_status = BECStatusBox()
34+
self.service_status.setObjectName("Service Status")
35+
self.service_status_dock = self.new(
36+
self.service_status,
37+
relative_to=self.scihub_logs_dock,
38+
where="right",
39+
**logs_dock_kwargs,
40+
)
41+
42+
self.scan_logs = LogPanel(show_toolbar=False, service_filter={"ScanServer"})
43+
self.scan_logs.setObjectName("Scan Server logs")
44+
self.scan_logs_dock = self.new(
45+
self.scan_logs, relative_to=self.device_logs_dock, where="bottom", **logs_dock_kwargs
46+
)
47+
48+
self.dap_logs = LogPanel(show_toolbar=False, service_filter={"DAPServer"})
49+
self.dap_logs.setObjectName("DAP Server logs")
50+
self.dap_logs_dock = self.new(
51+
self.dap_logs, relative_to=self.scan_logs_dock, where="bottom", **logs_dock_kwargs
52+
)
53+
54+
self.scanbundler_logs = LogPanel(show_toolbar=False, service_filter={"ScanBundler"})
55+
self.scanbundler_logs.setObjectName("ScanBundler logs")
56+
self.scanbundler_logs_dock = self.new(
57+
self.scanbundler_logs,
58+
relative_to=self.scihub_logs_dock,
59+
where="bottom",
60+
**logs_dock_kwargs,
61+
)
62+
63+
self.filewriter_logs = LogPanel(show_toolbar=False, service_filter={"FileWriter"})
64+
self.filewriter_logs.setObjectName("FileWriter logs")
65+
self.filewriter_logs_dock = self.new(
66+
self.filewriter_logs,
67+
relative_to=self.scanbundler_logs_dock,
68+
where="bottom",
69+
**logs_dock_kwargs,
70+
)
71+
72+
73+
class DiagnosticView(ViewBase):
74+
"""
75+
A view for users to write scripts and macros and execute them within the application.
76+
"""
77+
78+
def __init__(
79+
self,
80+
parent: QWidget | None = None,
81+
content: QWidget | None = None,
82+
*,
83+
id: str | None = None,
84+
title: str | None = None,
85+
):
86+
super().__init__(parent=parent, content=content, id=id, title=title)
87+
self.developer_widget = DiagnosticWidget(parent=self)
88+
self.set_content(self.developer_widget)

0 commit comments

Comments
 (0)