Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 9 additions & 0 deletions bec_widgets/applications/main_app.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
from bec_widgets.applications.navigation_centre.reveal_animator import ANIMATION_DURATION
from bec_widgets.applications.navigation_centre.side_bar import SideBar
from bec_widgets.applications.navigation_centre.side_bar_components import NavigationItem
from bec_widgets.applications.views.admin_view.admin_view import AdminView
from bec_widgets.applications.views.developer_view.developer_view import DeveloperView
from bec_widgets.applications.views.device_manager_view.device_manager_view import DeviceManagerView
from bec_widgets.applications.views.view import ViewBase, WaveformViewInline, WaveformViewPopup
Expand Down Expand Up @@ -54,6 +55,7 @@ def _add_views(self):
self.ads.setObjectName("MainWorkspace")
self.device_manager = DeviceManagerView(self)
self.developer_view = DeveloperView(self)
self.admin_view = AdminView(self)

self.add_view(
icon="widgets", title="Dock Area", id="dock_area", widget=self.ads, mini_text="Docks"
Expand All @@ -72,6 +74,13 @@ def _add_views(self):
id="developer_view",
exclusive=True,
)
self.add_view(
icon="admin_panel_settings",
title="Admin View",
widget=self.admin_view,
id="admin_view",
mini_text="Admin",
)

if self._show_examples:
self.add_section("Examples", "examples")
Expand Down
Empty file.
42 changes: 42 additions & 0 deletions bec_widgets/applications/views/admin_view/admin_view.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
"""Module for Admin View."""

from qtpy.QtWidgets import QWidget

from bec_widgets.applications.views.admin_view.admin_widget import AdminWidget
from bec_widgets.applications.views.view import ViewBase
from bec_widgets.utils.error_popups import SafeSlot


class AdminView(ViewBase):
"""
A view for administrators to change the current active experiment, manage messaging
services, and more tasks reserved for users with admin privileges.
"""

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.admin_widget = AdminWidget(parent=self)
self.set_content(self.admin_widget)

@SafeSlot()
def on_enter(self) -> None:
"""Called after the view becomes current/visible.

Default implementation does nothing. Override in subclasses.
"""
self.admin_widget.on_enter()

@SafeSlot()
def on_exit(self) -> None:
"""Called before the view is hidden.

Default implementation does nothing. Override in subclasses.
"""
self.admin_widget.on_exit()
48 changes: 48 additions & 0 deletions bec_widgets/applications/views/admin_view/admin_widget.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
"""Module to define a widget for the admin view."""

from __future__ import annotations

from qtpy.QtWidgets import QVBoxLayout, QWidget

from bec_widgets.utils.bec_widget import BECWidget
from bec_widgets.widgets.services.bec_atlas_admin_view.bec_atlas_admin_view import BECAtlasAdminView


class AdminWidget(BECWidget, QWidget):
"""Widget for admin view."""

RPC = False

def __init__(self, parent=None, client=None):
super().__init__(parent=parent, client=client)
# Overview widget
layout = QVBoxLayout(self)
self.admin_view_widget = BECAtlasAdminView(parent=self, client=self.client)
layout.addWidget(self.admin_view_widget)

def on_enter(self) -> None:
"""Called after the widget becomes visible."""
# self.admin_view_widget.check_health()

def on_exit(self) -> None:
"""Called before the widget is hidden."""
self.admin_view_widget.logout()


if __name__ == "__main__":
from bec_qthemes import apply_theme
from qtpy.QtWidgets import QApplication

from bec_widgets.widgets.utility.visual.dark_mode_button.dark_mode_button import DarkModeButton

app = QApplication([])

apply_theme("dark")
w = QWidget()
l = QVBoxLayout(w)
widget = AdminWidget(parent=w)
dark_mode_button = DarkModeButton(parent=w)
l.addWidget(dark_mode_button)
l.addWidget(widget)
w.show()
app.exec()
Empty file.
Loading
Loading