diff --git a/bec_widgets/assets/bec_widgets_icon.png b/bec_widgets/assets/app_icons/bec_widgets_icon.png similarity index 100% rename from bec_widgets/assets/bec_widgets_icon.png rename to bec_widgets/assets/app_icons/bec_widgets_icon.png diff --git a/bec_widgets/assets/terminal_icon.png b/bec_widgets/assets/app_icons/terminal_icon.png similarity index 100% rename from bec_widgets/assets/terminal_icon.png rename to bec_widgets/assets/app_icons/terminal_icon.png diff --git a/bec_widgets/assets/toolbar_icons/add.svg b/bec_widgets/assets/toolbar_icons/add.svg new file mode 100644 index 00000000..e4e88e5c --- /dev/null +++ b/bec_widgets/assets/toolbar_icons/add.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/bec_widgets/widgets/waveform/assets/export.svg b/bec_widgets/assets/toolbar_icons/export.svg similarity index 100% rename from bec_widgets/widgets/waveform/assets/export.svg rename to bec_widgets/assets/toolbar_icons/export.svg diff --git a/bec_widgets/widgets/waveform/assets/import.svg b/bec_widgets/assets/toolbar_icons/import.svg similarity index 100% rename from bec_widgets/widgets/waveform/assets/import.svg rename to bec_widgets/assets/toolbar_icons/import.svg diff --git a/bec_widgets/assets/toolbar_icons/line_axis.svg b/bec_widgets/assets/toolbar_icons/line_axis.svg new file mode 100644 index 00000000..fbf2bf4b --- /dev/null +++ b/bec_widgets/assets/toolbar_icons/line_axis.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/bec_widgets/widgets/waveform/waveform_toolbar/curve_dialog/remove.svg b/bec_widgets/assets/toolbar_icons/remove.svg similarity index 100% rename from bec_widgets/widgets/waveform/waveform_toolbar/curve_dialog/remove.svg rename to bec_widgets/assets/toolbar_icons/remove.svg diff --git a/bec_widgets/assets/toolbar_icons/save.svg b/bec_widgets/assets/toolbar_icons/save.svg new file mode 100644 index 00000000..14e60e8a --- /dev/null +++ b/bec_widgets/assets/toolbar_icons/save.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/bec_widgets/widgets/waveform/assets/settings.svg b/bec_widgets/assets/toolbar_icons/settings.svg similarity index 100% rename from bec_widgets/widgets/waveform/assets/settings.svg rename to bec_widgets/assets/toolbar_icons/settings.svg diff --git a/bec_widgets/cli/server.py b/bec_widgets/cli/server.py index 4e3519a2..e53ed73f 100644 --- a/bec_widgets/cli/server.py +++ b/bec_widgets/cli/server.py @@ -202,7 +202,8 @@ def main(): module_path = os.path.dirname(bec_widgets.__file__) icon = QIcon() icon.addFile( - os.path.join(module_path, "assets", "bec_widgets_icon.png"), size=QSize(48, 48) + os.path.join(module_path, "assets", "app_icons", "bec_widgets_icon.png"), + size=QSize(48, 48), ) app.setWindowIcon(icon) diff --git a/bec_widgets/examples/jupyter_console/jupyter_console_window.py b/bec_widgets/examples/jupyter_console/jupyter_console_window.py index ed3ec96f..a49ec7be 100644 --- a/bec_widgets/examples/jupyter_console/jupyter_console_window.py +++ b/bec_widgets/examples/jupyter_console/jupyter_console_window.py @@ -201,7 +201,9 @@ if __name__ == "__main__": # pragma: no cover app.setApplicationDisplayName("Jupyter Console") apply_theme("dark") icon = QIcon() - icon.addFile(os.path.join(module_path, "assets", "terminal_icon.png"), size=QSize(48, 48)) + icon.addFile( + os.path.join(module_path, "assets", "app_icons", "terminal_icon.png"), size=QSize(48, 48) + ) app.setWindowIcon(icon) bec_dispatcher = BECDispatcher() diff --git a/bec_widgets/widgets/waveform/assets/line_axis.svg b/bec_widgets/widgets/waveform/assets/line_axis.svg deleted file mode 100644 index e0e713e0..00000000 --- a/bec_widgets/widgets/waveform/assets/line_axis.svg +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/bec_widgets/widgets/waveform/waveform_toolbar/curve_dialog/curve_dialog.py b/bec_widgets/widgets/waveform/waveform_toolbar/curve_dialog/curve_dialog.py index 9436bb3a..7062f041 100644 --- a/bec_widgets/widgets/waveform/waveform_toolbar/curve_dialog/curve_dialog.py +++ b/bec_widgets/widgets/waveform/waveform_toolbar/curve_dialog/curve_dialog.py @@ -3,19 +3,20 @@ from __future__ import annotations import os from typing import Literal -from PySide6.QtCore import QObject -from PySide6.QtGui import QIcon -from PySide6.QtWidgets import QComboBox, QLineEdit, QPushButton, QSpinBox, QTableWidget from pydantic import BaseModel -from qtpy.QtCore import Slot -from qtpy.QtWidgets import QVBoxLayout +from qtpy.QtCore import QObject, QSize, Slot +from qtpy.QtGui import QIcon +from qtpy.QtWidgets import QComboBox, QLineEdit, QPushButton, QSpinBox, QTableWidget, QVBoxLayout +import bec_widgets from bec_widgets.qt_utils.error_popups import WarningPopupUtility from bec_widgets.qt_utils.settings_dialog import SettingWidget from bec_widgets.utils import Colors, UILoader from bec_widgets.widgets.color_button.color_button import ColorButton from bec_widgets.widgets.device_line_edit.device_line_edit import DeviceLineEdit +MODULE_PATH = os.path.dirname(bec_widgets.__file__) + class CurveSettings(SettingWidget): def __init__(self, parent=None, *args, **kwargs): @@ -23,6 +24,7 @@ class CurveSettings(SettingWidget): current_path = os.path.dirname(__file__) self.ui = UILoader(self).loader(os.path.join(current_path, "curve_dialog.ui")) + self._setup_icons() self.warning_util = WarningPopupUtility(self) @@ -35,6 +37,16 @@ class CurveSettings(SettingWidget): self.ui.normalize_colors_scan.clicked.connect(lambda: self.change_colormap("scan")) self.ui.normalize_colors_dap.clicked.connect(lambda: self.change_colormap("dap")) + def _setup_icons(self): + add_icon = QIcon() + add_icon.addFile( + os.path.join(MODULE_PATH, "assets", "toolbar_icons", "add.svg"), size=QSize(20, 20) + ) + self.ui.add_dap.setIcon(add_icon) + self.ui.add_dap.setToolTip("Add DAP Curve") + self.ui.add_curve.setIcon(add_icon) + self.ui.add_curve.setToolTip("Add Scan Curve") + @Slot(dict) def display_current_settings(self, config: dict | BaseModel): @@ -323,6 +335,5 @@ class StyleComboBox(QComboBox): class RemoveButton(QPushButton): def __init__(self, parent=None): super().__init__(parent) - current_path = os.path.dirname(__file__) - icon_path = os.path.join(current_path, "remove.svg") + icon_path = os.path.join(MODULE_PATH, "assets", "toolbar_icons", "remove.svg") self.setIcon(QIcon(icon_path)) diff --git a/bec_widgets/widgets/waveform/waveform_toolbar/curve_dialog/curve_dialog.ui b/bec_widgets/widgets/waveform/waveform_toolbar/curve_dialog/curve_dialog.ui index 21402569..4ded9abf 100644 --- a/bec_widgets/widgets/waveform/waveform_toolbar/curve_dialog/curve_dialog.ui +++ b/bec_widgets/widgets/waveform/waveform_toolbar/curve_dialog/curve_dialog.ui @@ -171,8 +171,11 @@ + + + - Add Curve + @@ -360,7 +363,7 @@ - Add DAP + diff --git a/bec_widgets/widgets/waveform/waveform_toolbar/waveform_toolbar.py b/bec_widgets/widgets/waveform/waveform_toolbar/waveform_toolbar.py index b1bf3419..92df5bb5 100644 --- a/bec_widgets/widgets/waveform/waveform_toolbar/waveform_toolbar.py +++ b/bec_widgets/widgets/waveform/waveform_toolbar/waveform_toolbar.py @@ -3,44 +3,48 @@ import os from qtpy.QtCore import QSize from qtpy.QtGui import QAction, QIcon +import bec_widgets from bec_widgets.qt_utils.toolbar import ToolBarAction +MODULE_PATH = os.path.dirname(bec_widgets.__file__) + class CurveAction(ToolBarAction): def add_to_toolbar(self, toolbar, target): - current_path = os.path.dirname(__file__) - parent_path = os.path.dirname(current_path) icon = QIcon() - icon.addFile(os.path.join(parent_path, "assets", "line_axis.svg"), size=QSize(20, 20)) + icon.addFile( + os.path.join(MODULE_PATH, "assets", "toolbar_icons", "line_axis.svg"), + size=QSize(20, 20), + ) self.action = QAction(icon, "Open Curves Configuration", target) toolbar.addAction(self.action) class SettingsAction(ToolBarAction): def add_to_toolbar(self, toolbar, target): - current_path = os.path.dirname(__file__) - parent_path = os.path.dirname(current_path) icon = QIcon() - icon.addFile(os.path.join(parent_path, "assets", "settings.svg"), size=QSize(20, 20)) + icon.addFile( + os.path.join(MODULE_PATH, "assets", "toolbar_icons", "settings.svg"), size=QSize(20, 20) + ) self.action = QAction(icon, "Open Configuration Dialog", target) toolbar.addAction(self.action) class ImportAction(ToolBarAction): def add_to_toolbar(self, toolbar, target): - current_path = os.path.dirname(__file__) - parent_path = os.path.dirname(current_path) icon = QIcon() - icon.addFile(os.path.join(parent_path, "assets", "import.svg"), size=QSize(20, 20)) + icon.addFile( + os.path.join(MODULE_PATH, "assets", "toolbar_icons", "import.svg"), size=QSize(20, 20) + ) self.action = QAction(icon, "Import Configuration from YAML", target) toolbar.addAction(self.action) class ExportAction(ToolBarAction): def add_to_toolbar(self, toolbar, target): - current_path = os.path.dirname(__file__) - parent_path = os.path.dirname(current_path) icon = QIcon() - icon.addFile(os.path.join(parent_path, "assets", "export.svg"), size=QSize(20, 20)) + icon.addFile( + os.path.join(MODULE_PATH, "assets", "toolbar_icons", "export.svg"), size=QSize(20, 20) + ) self.action = QAction(icon, "Export Current Configuration to YAML", target) toolbar.addAction(self.action) diff --git a/bec_widgets/widgets/waveform/waveform_widget.py b/bec_widgets/widgets/waveform/waveform_widget.py index 84ae7621..6d0720bd 100644 --- a/bec_widgets/widgets/waveform/waveform_widget.py +++ b/bec_widgets/widgets/waveform/waveform_widget.py @@ -8,7 +8,7 @@ from qtpy.QtWidgets import QVBoxLayout, QWidget from bec_widgets.qt_utils.error_popups import error_managed from bec_widgets.qt_utils.settings_dialog import SettingsDialog -from bec_widgets.qt_utils.toolbar import ModularToolBar +from bec_widgets.qt_utils.toolbar import ModularToolBar, SeparatorAction from bec_widgets.utils import BECConnector from bec_widgets.widgets.figure import BECFigure from bec_widgets.widgets.figure.plots.axis_settings import AxisSettings @@ -67,9 +67,10 @@ class BECWaveformWidget(BECConnector, QWidget): self.fig = BECFigure() self.toolbar = ModularToolBar( actions={ - # "connect": ConnectAction(), + "separator_1": SeparatorAction(), "curves": CurveAction(), "axis_settings": SettingsAction(), + "separator_2": SeparatorAction(), "import": ImportAction(), "export": ExportAction(), },