diff --git a/bec_widgets/assets/status_icons/error.svg b/bec_widgets/assets/status_icons/error.svg deleted file mode 100644 index da2c21c6..00000000 --- a/bec_widgets/assets/status_icons/error.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/bec_widgets/assets/status_icons/not_connected.svg b/bec_widgets/assets/status_icons/not_connected.svg deleted file mode 100644 index 21e2dfa6..00000000 --- a/bec_widgets/assets/status_icons/not_connected.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/bec_widgets/assets/status_icons/refresh.svg b/bec_widgets/assets/status_icons/refresh.svg deleted file mode 100644 index f98e08ff..00000000 --- a/bec_widgets/assets/status_icons/refresh.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/bec_widgets/assets/status_icons/running.svg b/bec_widgets/assets/status_icons/running.svg deleted file mode 100644 index 9df42617..00000000 --- a/bec_widgets/assets/status_icons/running.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/bec_widgets/assets/status_icons/warning.svg b/bec_widgets/assets/status_icons/warning.svg deleted file mode 100644 index 1e57372a..00000000 --- a/bec_widgets/assets/status_icons/warning.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/bec_widgets/widgets/bec_status_box/bec_status_box.py b/bec_widgets/widgets/bec_status_box/bec_status_box.py index c61fc19a..63bcd446 100644 --- a/bec_widgets/widgets/bec_status_box/bec_status_box.py +++ b/bec_widgets/widgets/bec_status_box/bec_status_box.py @@ -14,7 +14,7 @@ from qtpy.QtCore import QObject, QTimer, Signal, Slot from qtpy.QtWidgets import QHBoxLayout, QTreeWidget, QTreeWidgetItem, QWidget from bec_widgets.utils.bec_widget import BECWidget -from bec_widgets.utils.colors import apply_theme +from bec_widgets.utils.colors import set_theme from bec_widgets.widgets.bec_status_box.status_item import StatusItem if TYPE_CHECKING: @@ -303,17 +303,13 @@ class BECStatusBox(BECWidget, QWidget): return super().cleanup() -def main(): - """Main method to run the BECStatusBox widget.""" - # pylint: disable=import-outside-toplevel +if __name__ == "__main__": # pragma: no cover + import sys + from qtpy.QtWidgets import QApplication app = QApplication(sys.argv) - apply_theme("dark") + set_theme("dark") main_window = BECStatusBox() main_window.show() sys.exit(app.exec()) - - -if __name__ == "__main__": - main() diff --git a/bec_widgets/widgets/bec_status_box/status_item.py b/bec_widgets/widgets/bec_status_box/status_item.py index d2e12250..2b628aba 100644 --- a/bec_widgets/widgets/bec_status_box/status_item.py +++ b/bec_widgets/widgets/bec_status_box/status_item.py @@ -6,11 +6,13 @@ import os from datetime import datetime from bec_lib.utils.import_utils import lazy_import_from +from bec_qthemes import material_icon from qtpy.QtCore import Qt, Slot -from qtpy.QtGui import QIcon +from qtpy.QtGui import QIcon, QPainter from qtpy.QtWidgets import QDialog, QHBoxLayout, QLabel, QVBoxLayout, QWidget import bec_widgets +from bec_widgets.utils.colors import get_accent_colors # TODO : Put normal imports back when Pydantic gets faster BECStatus = lazy_import_from("bec_lib.messages", ("BECStatus",)) @@ -21,11 +23,11 @@ MODULE_PATH = os.path.dirname(bec_widgets.__file__) class IconsEnum(enum.Enum): """Enum class for icons in the status item widget.""" - RUNNING = os.path.join(MODULE_PATH, "assets", "status_icons", "running.svg") - BUSY = os.path.join(MODULE_PATH, "assets", "status_icons", "refresh.svg") - IDLE = os.path.join(MODULE_PATH, "assets", "status_icons", "warning.svg") - ERROR = os.path.join(MODULE_PATH, "assets", "status_icons", "error.svg") - NOTCONNECTED = os.path.join(MODULE_PATH, "assets", "status_icons", "not_connected.svg") + RUNNING = "done_outline" + BUSY = "progress_activity" + IDLE = "progress_activity" + ERROR = "emergency_home" + NOTCONNECTED = "signal_disconnected" class StatusItem(QWidget): @@ -43,13 +45,13 @@ class StatusItem(QWidget): raise ValueError( "Please initialize the StatusItem with a BECServiceInfoContainer for config, received None." ) + self.accent_colors = get_accent_colors() self.config = config self.parent = parent self.layout = None self._label = None self._icon = None self.icon_size = (24, 24) - self._popup_label_ref = {} self.init_ui() @@ -97,8 +99,15 @@ class StatusItem(QWidget): def set_status(self) -> None: """Set the status icon for the status item widget.""" - icon_path = IconsEnum[self.config.status].value - icon = QIcon(icon_path) + status = self.config.status + if status in ["RUNNING", "BUSY"]: + color = self.accent_colors.success + elif status == "IDLE": + color = self.accent_colors.warning + elif status in ["ERROR", "NOTCONNECTED"]: + color = self.accent_colors.emergency + icon = QIcon(material_icon(IconsEnum[status].value, filled=True, color=color)) + self._icon.setPixmap(icon.pixmap(*self.icon_size)) self._icon.setAlignment(Qt.AlignmentFlag.AlignRight) diff --git a/docs/assets/widget_screenshots/status_box.png b/docs/assets/widget_screenshots/status_box.png index 9581dc03..57206c72 100644 Binary files a/docs/assets/widget_screenshots/status_box.png and b/docs/assets/widget_screenshots/status_box.png differ