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