0
0
mirror of https://github.com/bec-project/bec_widgets.git synced 2025-07-14 03:31:50 +02:00

refactor(widgets): widget module structure reorganised

This commit is contained in:
2024-11-13 13:48:55 +01:00
parent 7a1b8748a4
commit aab0229a40
285 changed files with 418 additions and 364 deletions

View File

@ -5,36 +5,23 @@ It is a preliminary version of the GUI, which will be added to the main branch a
import os import os
from typing import Optional from typing import Optional
from bec_lib.device import Positioner as BECPositioner
from bec_lib.device import Signal as BECSignal from bec_lib.device import Signal as BECSignal
from bec_lib.endpoints import MessageEndpoints from bec_lib.endpoints import MessageEndpoints
from bec_lib.logger import bec_logger from bec_lib.logger import bec_logger
from qtpy.QtCore import QSize, Signal from qtpy.QtCore import QSize
from qtpy.QtGui import QIcon from qtpy.QtGui import QIcon
from qtpy.QtWidgets import ( from qtpy.QtWidgets import QApplication
QApplication,
QCheckBox,
QDoubleSpinBox,
QMainWindow,
QPushButton,
QSpinBox,
)
import bec_widgets import bec_widgets
from bec_widgets.qt_utils.error_popups import SafeSlot as Slot from bec_widgets.qt_utils.error_popups import SafeSlot as Slot
from bec_widgets.qt_utils.toolbar import WidgetAction
from bec_widgets.utils import UILoader from bec_widgets.utils import UILoader
from bec_widgets.utils.bec_dispatcher import BECDispatcher from bec_widgets.utils.bec_dispatcher import BECDispatcher
from bec_widgets.utils.bec_widget import BECWidget
from bec_widgets.utils.colors import get_accent_colors from bec_widgets.utils.colors import get_accent_colors
from bec_widgets.widgets.bec_progressbar.bec_progressbar import BECProgressBar from bec_widgets.widgets.control.buttons.stop_button.stop_button import StopButton
from bec_widgets.widgets.device_line_edit.device_line_edit import DeviceLineEdit from bec_widgets.widgets.control.device_control.positioner_group import PositionerGroup
from bec_widgets.widgets.lmfit_dialog.lmfit_dialog import LMFitDialog from bec_widgets.widgets.dap.lmfit_dialog import LMFitDialog
from bec_widgets.widgets.positioner_box.positioner_box import PositionerBox from bec_widgets.widgets.plots.waveform import BECWaveformWidget
from bec_widgets.widgets.positioner_group.positioner_group import PositionerGroup from bec_widgets.widgets.progress.bec_progressbar.bec_progressbar import BECProgressBar
from bec_widgets.widgets.stop_button.stop_button import StopButton
from bec_widgets.widgets.toggle.toggle import ToggleSwitch
from bec_widgets.widgets.waveform.waveform_widget import BECWaveformWidget
MODULE_PATH = os.path.dirname(bec_widgets.__file__) MODULE_PATH = os.path.dirname(bec_widgets.__file__)
logger = bec_logger.logger logger = bec_logger.logger

View File

@ -15,39 +15,6 @@ class Widgets(str, enum.Enum):
Enum for the available widgets. Enum for the available widgets.
""" """
AbortButton = "AbortButton"
BECColorMapWidget = "BECColorMapWidget"
BECDock = "BECDock"
BECDockArea = "BECDockArea"
BECFigure = "BECFigure"
BECImageWidget = "BECImageWidget"
BECMotorMapWidget = "BECMotorMapWidget"
BECMultiWaveformWidget = "BECMultiWaveformWidget"
BECProgressBar = "BECProgressBar"
BECQueue = "BECQueue"
BECStatusBox = "BECStatusBox"
BECWaveformWidget = "BECWaveformWidget"
DapComboBox = "DapComboBox"
DarkModeButton = "DarkModeButton"
DeviceBrowser = "DeviceBrowser"
DeviceComboBox = "DeviceComboBox"
DeviceLineEdit = "DeviceLineEdit"
LMFitDialog = "LMFitDialog"
PositionIndicator = "PositionIndicator"
PositionerBox = "PositionerBox"
PositionerControlLine = "PositionerControlLine"
PositionerGroup = "PositionerGroup"
ResetButton = "ResetButton"
ResumeButton = "ResumeButton"
RingProgressBar = "RingProgressBar"
ScanControl = "ScanControl"
SignalComboBox = "SignalComboBox"
SignalLineEdit = "SignalLineEdit"
StopButton = "StopButton"
TextBox = "TextBox"
VSCodeEditor = "VSCodeEditor"
WebsiteWidget = "WebsiteWidget"
class AbortButton(RPCBase): class AbortButton(RPCBase):
@property @property
@ -1641,10 +1608,10 @@ class BECMultiWaveform(RPCBase):
@rpc_call @rpc_call
def set_colormap(self, colormap: str): def set_colormap(self, colormap: str):
""" """
Set the colormap for the scatter plot z gradient. Set the colormap for the curves.
Args: Args:
colormap(str): Colormap for the scatter plot. colormap(str): Colormap for the curves.
""" """
@rpc_call @rpc_call
@ -1757,10 +1724,10 @@ class BECMultiWaveform(RPCBase):
@rpc_call @rpc_call
def set_colormap(self, colormap: str): def set_colormap(self, colormap: str):
""" """
Set the colormap for the scatter plot z gradient. Set the colormap for the curves.
Args: Args:
colormap(str): Colormap for the scatter plot. colormap(str): Colormap for the curves.
""" """
@rpc_call @rpc_call
@ -1781,6 +1748,12 @@ class BECMultiWaveform(RPCBase):
lock(bool): True to lock, False to unlock. lock(bool): True to lock, False to unlock.
""" """
@rpc_call
def export(self):
"""
Show the Export Dialog of the plot widget.
"""
@rpc_call @rpc_call
def get_all_data(self, output: Literal["dict", "pandas"] = "dict") -> dict: def get_all_data(self, output: Literal["dict", "pandas"] = "dict") -> dict:
""" """
@ -1793,12 +1766,6 @@ class BECMultiWaveform(RPCBase):
dict | pd.DataFrame: Data of all curves in the specified format. dict | pd.DataFrame: Data of all curves in the specified format.
""" """
@rpc_call
def export(self):
"""
Show the Export Dialog of the plot widget.
"""
@rpc_call @rpc_call
def remove(self): def remove(self):
""" """

View File

@ -16,9 +16,8 @@ from qtpy.QtCore import QTimer
from bec_widgets.cli.rpc_register import RPCRegister from bec_widgets.cli.rpc_register import RPCRegister
from bec_widgets.utils import BECDispatcher from bec_widgets.utils import BECDispatcher
from bec_widgets.utils.bec_connector import BECConnector from bec_widgets.utils.bec_connector import BECConnector
from bec_widgets.utils.bec_dispatcher import QtRedisConnector from bec_widgets.widgets.containers.dock import BECDockArea
from bec_widgets.widgets.dock.dock_area import BECDockArea from bec_widgets.widgets.containers.figure import BECFigure
from bec_widgets.widgets.figure import BECFigure
messages = lazy_import("bec_lib.messages") messages = lazy_import("bec_lib.messages")
logger = bec_logger.logger logger = bec_logger.logger

View File

@ -3,8 +3,6 @@ import os
import numpy as np import numpy as np
import pyqtgraph as pg import pyqtgraph as pg
from bec_qthemes import material_icon from bec_qthemes import material_icon
from qtpy.QtCore import QSize
from qtpy.QtGui import QIcon
from qtpy.QtWidgets import ( from qtpy.QtWidgets import (
QApplication, QApplication,
QGroupBox, QGroupBox,
@ -17,9 +15,9 @@ from qtpy.QtWidgets import (
from bec_widgets.utils import BECDispatcher from bec_widgets.utils import BECDispatcher
from bec_widgets.utils.colors import apply_theme from bec_widgets.utils.colors import apply_theme
from bec_widgets.widgets.dock.dock_area import BECDockArea from bec_widgets.widgets.containers.dock import BECDockArea
from bec_widgets.widgets.figure import BECFigure from bec_widgets.widgets.containers.figure import BECFigure
from bec_widgets.widgets.jupyter_console.jupyter_console import BECJupyterConsole from bec_widgets.widgets.editors.jupyter_console.jupyter_console import BECJupyterConsole
class JupyterConsoleWindow(QWidget): # pragma: no cover: class JupyterConsoleWindow(QWidget): # pragma: no cover:

View File

@ -13,7 +13,7 @@ from qtpy.QtWidgets import (
from bec_widgets.utils.bec_widget import BECWidget from bec_widgets.utils.bec_widget import BECWidget
from bec_widgets.utils.colors import get_accent_colors, get_theme_palette from bec_widgets.utils.colors import get_accent_colors, get_theme_palette
from bec_widgets.widgets.dark_mode_button.dark_mode_button import DarkModeButton from bec_widgets.widgets.utility.visual.dark_mode_button.dark_mode_button import DarkModeButton
class PaletteViewer(BECWidget, QWidget): class PaletteViewer(BECWidget, QWidget):

View File

@ -143,7 +143,7 @@ class DesignerPluginGenerator:
if __name__ == "__main__": # pragma: no cover if __name__ == "__main__": # pragma: no cover
# from bec_widgets.widgets.bec_queue.bec_queue import BECQueue # from bec_widgets.widgets.bec_queue.bec_queue import BECQueue
from bec_widgets.widgets.spinner.spinner import SpinnerWidget from bec_widgets.widgets.utility.spinner import SpinnerWidget
generator = DesignerPluginGenerator(SpinnerWidget) generator = DesignerPluginGenerator(SpinnerWidget)
generator.run(validate=False) generator.run(validate=False)

View File

@ -156,6 +156,10 @@ def get_custom_classes(repo_name: str) -> BECClassContainer:
class_info.is_connector = True class_info.is_connector = True
if issubclass(obj, BECWidget): if issubclass(obj, BECWidget):
class_info.is_widget = True class_info.is_widget = True
if len(subs) == 1 and (
issubclass(obj, QWidget) or issubclass(obj, QGraphicsWidget)
):
class_info.is_top_level = True
if hasattr(obj, "PLUGIN") and obj.PLUGIN: if hasattr(obj, "PLUGIN") and obj.PLUGIN:
class_info.is_plugin = True class_info.is_plugin = True
collection.add_class(class_info) collection.add_class(class_info)

View File

@ -18,18 +18,18 @@ from bec_widgets.qt_utils.toolbar import (
) )
from bec_widgets.utils import ConnectionConfig, WidgetContainerUtils from bec_widgets.utils import ConnectionConfig, WidgetContainerUtils
from bec_widgets.utils.bec_widget import BECWidget from bec_widgets.utils.bec_widget import BECWidget
from bec_widgets.widgets.bec_queue.bec_queue import BECQueue from bec_widgets.widgets.containers.dock.dock import BECDock, DockConfig
from bec_widgets.widgets.bec_status_box.bec_status_box import BECStatusBox from bec_widgets.widgets.control.device_control.positioner_box.positioner_box import PositionerBox
from bec_widgets.widgets.dark_mode_button.dark_mode_button import DarkModeButton from bec_widgets.widgets.control.scan_control.scan_control import ScanControl
from bec_widgets.widgets.dock.dock import BECDock, DockConfig from bec_widgets.widgets.editors.vscode.vscode import VSCodeEditor
from bec_widgets.widgets.image.image_widget import BECImageWidget from bec_widgets.widgets.plots.image.image_widget import BECImageWidget
from bec_widgets.widgets.motor_map.motor_map_widget import BECMotorMapWidget from bec_widgets.widgets.plots.motor_map.motor_map_widget import BECMotorMapWidget
from bec_widgets.widgets.multi_waveform.multi_waveform_widget import BECMultiWaveformWidget from bec_widgets.widgets.plots.multi_waveform.multi_waveform_widget import BECMultiWaveformWidget
from bec_widgets.widgets.positioner_box.positioner_box import PositionerBox from bec_widgets.widgets.plots.waveform.waveform_widget import BECWaveformWidget
from bec_widgets.widgets.ring_progress_bar.ring_progress_bar import RingProgressBar from bec_widgets.widgets.progress.ring_progress_bar.ring_progress_bar import RingProgressBar
from bec_widgets.widgets.scan_control.scan_control import ScanControl from bec_widgets.widgets.services.bec_queue.bec_queue import BECQueue
from bec_widgets.widgets.vscode.vscode import VSCodeEditor from bec_widgets.widgets.services.bec_status_box.bec_status_box import BECStatusBox
from bec_widgets.widgets.waveform.waveform_widget import BECWaveformWidget from bec_widgets.widgets.utility.visual.dark_mode_button.dark_mode_button import DarkModeButton
class DockAreaConfig(ConnectionConfig): class DockAreaConfig(ConnectionConfig):
@ -40,6 +40,7 @@ class DockAreaConfig(ConnectionConfig):
class BECDockArea(BECWidget, QWidget): class BECDockArea(BECWidget, QWidget):
PLUGIN = True
USER_ACCESS = [ USER_ACCESS = [
"_config_dict", "_config_dict",
"panels", "panels",

View File

@ -6,7 +6,7 @@ from qtpy.QtDesigner import QDesignerCustomWidgetInterface
import bec_widgets import bec_widgets
from bec_widgets.utils.bec_designer import designer_material_icon from bec_widgets.utils.bec_designer import designer_material_icon
from bec_widgets.widgets.dock import BECDockArea from bec_widgets.widgets.containers.dock import BECDockArea
DOM_XML = """ DOM_XML = """
<ui language='c++'> <ui language='c++'>

View File

@ -6,7 +6,7 @@ def main(): # pragma: no cover
return return
from PySide6.QtDesigner import QPyDesignerCustomWidgetCollection from PySide6.QtDesigner import QPyDesignerCustomWidgetCollection
from bec_widgets.widgets.dock.dock_area_plugin import BECDockAreaPlugin from bec_widgets.widgets.containers.dock.dock_area_plugin import BECDockAreaPlugin
QPyDesignerCustomWidgetCollection.addCustomWidget(BECDockAreaPlugin()) QPyDesignerCustomWidgetCollection.addCustomWidget(BECDockAreaPlugin())

View File

@ -11,20 +11,25 @@ from bec_lib.logger import bec_logger
from pydantic import Field, ValidationError, field_validator from pydantic import Field, ValidationError, field_validator
from qtpy.QtCore import Signal as pyqtSignal from qtpy.QtCore import Signal as pyqtSignal
from qtpy.QtWidgets import QWidget from qtpy.QtWidgets import QWidget
from tornado.gen import multi
from typeguard import typechecked from typeguard import typechecked
from bec_widgets.utils import ConnectionConfig, WidgetContainerUtils from bec_widgets.utils import ConnectionConfig, WidgetContainerUtils
from bec_widgets.utils.bec_widget import BECWidget from bec_widgets.utils.bec_widget import BECWidget
from bec_widgets.utils.colors import apply_theme from bec_widgets.utils.colors import apply_theme
from bec_widgets.widgets.figure.plots.image.image import BECImageShow, ImageConfig from bec_widgets.widgets.containers.figure.plots.image.image import BECImageShow, ImageConfig
from bec_widgets.widgets.figure.plots.motor_map.motor_map import BECMotorMap, MotorMapConfig from bec_widgets.widgets.containers.figure.plots.motor_map.motor_map import (
from bec_widgets.widgets.figure.plots.multi_waveform.multi_waveform import ( BECMotorMap,
MotorMapConfig,
)
from bec_widgets.widgets.containers.figure.plots.multi_waveform.multi_waveform import (
BECMultiWaveform, BECMultiWaveform,
BECMultiWaveformConfig, BECMultiWaveformConfig,
) )
from bec_widgets.widgets.figure.plots.plot_base import BECPlotBase, SubplotConfig from bec_widgets.widgets.containers.figure.plots.plot_base import BECPlotBase, SubplotConfig
from bec_widgets.widgets.figure.plots.waveform.waveform import BECWaveform, Waveform1DConfig from bec_widgets.widgets.containers.figure.plots.waveform.waveform import (
BECWaveform,
Waveform1DConfig,
)
logger = bec_logger.logger logger = bec_logger.logger

View File

@ -6,19 +6,22 @@ from typing import Any, Literal, Optional
import numpy as np import numpy as np
from bec_lib.endpoints import MessageEndpoints from bec_lib.endpoints import MessageEndpoints
from bec_lib.logger import bec_logger from bec_lib.logger import bec_logger
from pydantic import BaseModel, Field, ValidationError from pydantic import Field, ValidationError
from qtpy.QtCore import QThread, Slot from qtpy.QtCore import QThread, Slot
from qtpy.QtWidgets import QWidget from qtpy.QtWidgets import QWidget
# from bec_widgets.qt_utils.error_popups import SafeSlot as Slot # from bec_widgets.qt_utils.error_popups import SafeSlot as Slot
from bec_widgets.utils import EntryValidator from bec_widgets.utils import EntryValidator
from bec_widgets.widgets.figure.plots.image.image_item import BECImageItem, ImageItemConfig from bec_widgets.widgets.containers.figure.plots.image.image_item import (
from bec_widgets.widgets.figure.plots.image.image_processor import ( BECImageItem,
ImageItemConfig,
)
from bec_widgets.widgets.containers.figure.plots.image.image_processor import (
ImageProcessor, ImageProcessor,
ImageStats, ImageStats,
ProcessorWorker, ProcessorWorker,
) )
from bec_widgets.widgets.figure.plots.plot_base import BECPlotBase, SubplotConfig from bec_widgets.widgets.containers.figure.plots.plot_base import BECPlotBase, SubplotConfig
logger = bec_logger.logger logger = bec_logger.logger

View File

@ -8,10 +8,13 @@ from bec_lib.logger import bec_logger
from pydantic import Field from pydantic import Field
from bec_widgets.utils import BECConnector, ConnectionConfig from bec_widgets.utils import BECConnector, ConnectionConfig
from bec_widgets.widgets.figure.plots.image.image_processor import ImageStats, ProcessingConfig from bec_widgets.widgets.containers.figure.plots.image.image_processor import (
ImageStats,
ProcessingConfig,
)
if TYPE_CHECKING: if TYPE_CHECKING:
from bec_widgets.widgets.figure.plots.image.image import BECImageShow from bec_widgets.widgets.containers.figure.plots.image.image import BECImageShow
logger = bec_logger.logger logger = bec_logger.logger

View File

@ -15,8 +15,8 @@ from qtpy.QtWidgets import QWidget
from bec_widgets.qt_utils.error_popups import SafeSlot as Slot from bec_widgets.qt_utils.error_popups import SafeSlot as Slot
from bec_widgets.utils import Colors, EntryValidator from bec_widgets.utils import Colors, EntryValidator
from bec_widgets.widgets.figure.plots.plot_base import BECPlotBase, SubplotConfig from bec_widgets.widgets.containers.figure.plots.plot_base import BECPlotBase, SubplotConfig
from bec_widgets.widgets.figure.plots.waveform.waveform import Signal, SignalData from bec_widgets.widgets.containers.figure.plots.waveform.waveform import Signal, SignalData
logger = bec_logger.logger logger = bec_logger.logger

View File

@ -10,7 +10,7 @@ from qtpy.QtCore import Signal, Slot
from qtpy.QtWidgets import QWidget from qtpy.QtWidgets import QWidget
from bec_widgets.utils import Colors from bec_widgets.utils import Colors
from bec_widgets.widgets.figure.plots.plot_base import BECPlotBase, SubplotConfig from bec_widgets.widgets.containers.figure.plots.plot_base import BECPlotBase, SubplotConfig
logger = bec_logger.logger logger = bec_logger.logger
@ -345,7 +345,7 @@ if __name__ == "__main__":
from qtpy.QtWidgets import QApplication from qtpy.QtWidgets import QApplication
from bec_widgets.widgets.figure import BECFigure from bec_widgets.widgets.containers.figure import BECFigure
app = QApplication(sys.argv) app = QApplication(sys.argv)
widget = BECFigure() widget = BECFigure()

View File

@ -19,8 +19,8 @@ from bec_widgets.qt_utils.error_popups import SafeSlot as Slot
from bec_widgets.utils import Colors, EntryValidator from bec_widgets.utils import Colors, EntryValidator
from bec_widgets.utils.colors import get_accent_colors from bec_widgets.utils.colors import get_accent_colors
from bec_widgets.utils.linear_region_selector import LinearRegionWrapper from bec_widgets.utils.linear_region_selector import LinearRegionWrapper
from bec_widgets.widgets.figure.plots.plot_base import BECPlotBase, SubplotConfig from bec_widgets.widgets.containers.figure.plots.plot_base import BECPlotBase, SubplotConfig
from bec_widgets.widgets.figure.plots.waveform.waveform_curve import ( from bec_widgets.widgets.containers.figure.plots.waveform.waveform_curve import (
BECCurve, BECCurve,
CurveConfig, CurveConfig,
Signal, Signal,

View File

@ -1,6 +1,6 @@
from __future__ import annotations from __future__ import annotations
from typing import TYPE_CHECKING, Any, Literal, Optional from typing import TYPE_CHECKING, Literal, Optional
import numpy as np import numpy as np
import pyqtgraph as pg import pyqtgraph as pg
@ -11,7 +11,7 @@ from qtpy import QtCore
from bec_widgets.utils import BECConnector, Colors, ConnectionConfig from bec_widgets.utils import BECConnector, Colors, ConnectionConfig
if TYPE_CHECKING: if TYPE_CHECKING:
from bec_widgets.widgets.figure.plots.waveform import BECWaveform1D from bec_widgets.widgets.containers.figure.plots.waveform import BECWaveform1D
logger = bec_logger.logger logger = bec_logger.logger

View File

@ -4,7 +4,7 @@
from qtpy.QtDesigner import QDesignerCustomWidgetInterface from qtpy.QtDesigner import QDesignerCustomWidgetInterface
from bec_widgets.utils.bec_designer import designer_material_icon from bec_widgets.utils.bec_designer import designer_material_icon
from bec_widgets.widgets.button_abort.button_abort import AbortButton from bec_widgets.widgets.control.buttons.button_abort.button_abort import AbortButton
DOM_XML = """ DOM_XML = """
<ui language='c++'> <ui language='c++'>

View File

@ -9,6 +9,7 @@ from bec_widgets.utils.bec_widget import BECWidget
class AbortButton(BECWidget, QWidget): class AbortButton(BECWidget, QWidget):
"""A button that abort the scan.""" """A button that abort the scan."""
PLUGIN = True
ICON_NAME = "cancel" ICON_NAME = "cancel"
def __init__( def __init__(

View File

@ -6,7 +6,9 @@ def main(): # pragma: no cover
return return
from PySide6.QtDesigner import QPyDesignerCustomWidgetCollection from PySide6.QtDesigner import QPyDesignerCustomWidgetCollection
from bec_widgets.widgets.button_abort.abort_button_plugin import AbortButtonPlugin from bec_widgets.widgets.control.buttons.button_abort.abort_button_plugin import (
AbortButtonPlugin,
)
QPyDesignerCustomWidgetCollection.addCustomWidget(AbortButtonPlugin()) QPyDesignerCustomWidgetCollection.addCustomWidget(AbortButtonPlugin())

View File

@ -9,6 +9,7 @@ from bec_widgets.utils.bec_widget import BECWidget
class ResetButton(BECWidget, QWidget): class ResetButton(BECWidget, QWidget):
"""A button that resets the scan queue.""" """A button that resets the scan queue."""
PLUGIN = True
ICON_NAME = "restart_alt" ICON_NAME = "restart_alt"
def __init__(self, parent=None, client=None, config=None, gui_id=None, toolbar=False): def __init__(self, parent=None, client=None, config=None, gui_id=None, toolbar=False):

View File

@ -6,7 +6,9 @@ def main(): # pragma: no cover
return return
from PySide6.QtDesigner import QPyDesignerCustomWidgetCollection from PySide6.QtDesigner import QPyDesignerCustomWidgetCollection
from bec_widgets.widgets.button_reset.reset_button_plugin import ResetButtonPlugin from bec_widgets.widgets.control.buttons.button_reset.reset_button_plugin import (
ResetButtonPlugin,
)
QPyDesignerCustomWidgetCollection.addCustomWidget(ResetButtonPlugin()) QPyDesignerCustomWidgetCollection.addCustomWidget(ResetButtonPlugin())

View File

@ -4,7 +4,7 @@
from qtpy.QtDesigner import QDesignerCustomWidgetInterface from qtpy.QtDesigner import QDesignerCustomWidgetInterface
from bec_widgets.utils.bec_designer import designer_material_icon from bec_widgets.utils.bec_designer import designer_material_icon
from bec_widgets.widgets.button_reset.button_reset import ResetButton from bec_widgets.widgets.control.buttons.button_reset.button_reset import ResetButton
DOM_XML = """ DOM_XML = """
<ui language='c++'> <ui language='c++'>

View File

@ -9,6 +9,7 @@ from bec_widgets.utils.bec_widget import BECWidget
class ResumeButton(BECWidget, QWidget): class ResumeButton(BECWidget, QWidget):
"""A button that continue scan queue.""" """A button that continue scan queue."""
PLUGIN = True
ICON_NAME = "resume" ICON_NAME = "resume"
def __init__(self, parent=None, client=None, config=None, gui_id=None, toolbar=False): def __init__(self, parent=None, client=None, config=None, gui_id=None, toolbar=False):

View File

@ -6,7 +6,9 @@ def main(): # pragma: no cover
return return
from PySide6.QtDesigner import QPyDesignerCustomWidgetCollection from PySide6.QtDesigner import QPyDesignerCustomWidgetCollection
from bec_widgets.widgets.button_resume.resume_button_plugin import ResumeButtonPlugin from bec_widgets.widgets.control.buttons.button_resume.resume_button_plugin import (
ResumeButtonPlugin,
)
QPyDesignerCustomWidgetCollection.addCustomWidget(ResumeButtonPlugin()) QPyDesignerCustomWidgetCollection.addCustomWidget(ResumeButtonPlugin())

View File

@ -4,7 +4,7 @@
from qtpy.QtDesigner import QDesignerCustomWidgetInterface from qtpy.QtDesigner import QDesignerCustomWidgetInterface
from bec_widgets.utils.bec_designer import designer_material_icon from bec_widgets.utils.bec_designer import designer_material_icon
from bec_widgets.widgets.button_resume.button_resume import ResumeButton from bec_widgets.widgets.control.buttons.button_resume.button_resume import ResumeButton
DOM_XML = """ DOM_XML = """
<ui language='c++'> <ui language='c++'>

View File

@ -6,7 +6,7 @@ def main(): # pragma: no cover
return return
from PySide6.QtDesigner import QPyDesignerCustomWidgetCollection from PySide6.QtDesigner import QPyDesignerCustomWidgetCollection
from bec_widgets.widgets.stop_button.stop_button_plugin import StopButtonPlugin from bec_widgets.widgets.control.buttons.stop_button.stop_button_plugin import StopButtonPlugin
QPyDesignerCustomWidgetCollection.addCustomWidget(StopButtonPlugin()) QPyDesignerCustomWidgetCollection.addCustomWidget(StopButtonPlugin())

View File

@ -9,6 +9,7 @@ from bec_widgets.utils.bec_widget import BECWidget
class StopButton(BECWidget, QWidget): class StopButton(BECWidget, QWidget):
"""A button that stops the current scan.""" """A button that stops the current scan."""
PLUGIN = True
ICON_NAME = "dangerous" ICON_NAME = "dangerous"
def __init__(self, parent=None, client=None, config=None, gui_id=None, toolbar=False): def __init__(self, parent=None, client=None, config=None, gui_id=None, toolbar=False):

View File

@ -6,7 +6,7 @@ from qtpy.QtDesigner import QDesignerCustomWidgetInterface
import bec_widgets import bec_widgets
from bec_widgets.utils.bec_designer import designer_material_icon from bec_widgets.utils.bec_designer import designer_material_icon
from bec_widgets.widgets.stop_button.stop_button import StopButton from bec_widgets.widgets.control.buttons.stop_button.stop_button import StopButton
DOM_XML = """ DOM_XML = """
<ui language='c++'> <ui language='c++'>

View File

@ -9,7 +9,7 @@ from bec_widgets.utils.colors import get_accent_colors, get_theme_palette
class PositionIndicator(BECWidget, QWidget): class PositionIndicator(BECWidget, QWidget):
USER_ACCESS = ["set_value", "set_range", "vertical", "indicator_width", "rounded_corners"] USER_ACCESS = ["set_value", "set_range", "vertical", "indicator_width", "rounded_corners"]
PLUGIN = True
ICON_NAME = "horizontal_distribute" ICON_NAME = "horizontal_distribute"
def __init__(self, parent=None, client=None, config=None, gui_id=None): def __init__(self, parent=None, client=None, config=None, gui_id=None):

View File

@ -6,7 +6,9 @@ from qtpy.QtDesigner import QDesignerCustomWidgetInterface
import bec_widgets import bec_widgets
from bec_widgets.utils.bec_designer import designer_material_icon from bec_widgets.utils.bec_designer import designer_material_icon
from bec_widgets.widgets.position_indicator.position_indicator import PositionIndicator from bec_widgets.widgets.control.device_control.position_indicator.position_indicator import (
PositionIndicator,
)
DOM_XML = """ DOM_XML = """
<ui language='c++'> <ui language='c++'>

View File

@ -6,7 +6,7 @@ def main(): # pragma: no cover
return return
from PySide6.QtDesigner import QPyDesignerCustomWidgetCollection from PySide6.QtDesigner import QPyDesignerCustomWidgetCollection
from bec_widgets.widgets.position_indicator.position_indicator_plugin import ( from bec_widgets.widgets.control.device_control.position_indicator.position_indicator_plugin import (
PositionIndicatorPlugin, PositionIndicatorPlugin,
) )

View File

@ -12,14 +12,16 @@ from bec_lib.messages import ScanQueueMessage
from bec_qthemes import material_icon from bec_qthemes import material_icon
from qtpy.QtCore import Property, Signal, Slot from qtpy.QtCore import Property, Signal, Slot
from qtpy.QtGui import QDoubleValidator from qtpy.QtGui import QDoubleValidator
from qtpy.QtWidgets import QDialog, QDoubleSpinBox, QPushButton, QVBoxLayout, QWidget from qtpy.QtWidgets import QDialog, QDoubleSpinBox, QPushButton, QVBoxLayout
from bec_widgets.qt_utils.compact_popup import CompactPopupWidget from bec_widgets.qt_utils.compact_popup import CompactPopupWidget
from bec_widgets.utils import UILoader from bec_widgets.utils import UILoader
from bec_widgets.utils.bec_widget import BECWidget from bec_widgets.utils.bec_widget import BECWidget
from bec_widgets.utils.colors import get_accent_colors, set_theme from bec_widgets.utils.colors import get_accent_colors, set_theme
from bec_widgets.widgets.base_classes.device_input_base import BECDeviceFilter from bec_widgets.widgets.control.device_input.base_classes.device_input_base import BECDeviceFilter
from bec_widgets.widgets.device_line_edit.device_line_edit import DeviceLineEdit from bec_widgets.widgets.control.device_input.device_line_edit.device_line_edit import (
DeviceLineEdit,
)
logger = bec_logger.logger logger = bec_logger.logger
@ -32,6 +34,7 @@ class PositionerBox(BECWidget, CompactPopupWidget):
ui_file = "positioner_box.ui" ui_file = "positioner_box.ui"
dimensions = (234, 224) dimensions = (234, 224)
PLUGIN = True
ICON_NAME = "switch_right" ICON_NAME = "switch_right"
USER_ACCESS = ["set_positioner"] USER_ACCESS = ["set_positioner"]
device_changed = Signal(str, str) device_changed = Signal(str, str)

View File

@ -6,7 +6,7 @@ import os
from qtpy.QtDesigner import QDesignerCustomWidgetInterface from qtpy.QtDesigner import QDesignerCustomWidgetInterface
from bec_widgets.utils.bec_designer import designer_material_icon from bec_widgets.utils.bec_designer import designer_material_icon
from bec_widgets.widgets.positioner_box.positioner_box import PositionerBox from bec_widgets.widgets.control.device_control.positioner_box.positioner_box import PositionerBox
DOM_XML = """ DOM_XML = """
<ui language='c++'> <ui language='c++'>

View File

@ -1,6 +1,6 @@
from bec_lib.device import Positioner from bec_lib.device import Positioner
from bec_widgets.widgets.positioner_box.positioner_box import PositionerBox from bec_widgets.widgets.control.device_control.positioner_box.positioner_box import PositionerBox
class PositionerControlLine(PositionerBox): class PositionerControlLine(PositionerBox):
@ -9,6 +9,7 @@ class PositionerControlLine(PositionerBox):
ui_file = "positioner_control_line.ui" ui_file = "positioner_control_line.ui"
dimensions = (60, 600) # height, width dimensions = (60, 600) # height, width
PLUGIN = True
ICON_NAME = "switch_left" ICON_NAME = "switch_left"
def __init__(self, parent=None, device: Positioner = None, *args, **kwargs): def __init__(self, parent=None, device: Positioner = None, *args, **kwargs):

View File

@ -6,7 +6,9 @@ import os
from qtpy.QtDesigner import QDesignerCustomWidgetInterface from qtpy.QtDesigner import QDesignerCustomWidgetInterface
from bec_widgets.utils.bec_designer import designer_material_icon from bec_widgets.utils.bec_designer import designer_material_icon
from bec_widgets.widgets.positioner_box.positioner_control_line import PositionerControlLine from bec_widgets.widgets.control.device_control.positioner_box.positioner_control_line import (
PositionerControlLine,
)
DOM_XML = """ DOM_XML = """
<ui language='c++'> <ui language='c++'>

View File

@ -6,7 +6,9 @@ def main(): # pragma: no cover
return return
from PySide6.QtDesigner import QPyDesignerCustomWidgetCollection from PySide6.QtDesigner import QPyDesignerCustomWidgetCollection
from bec_widgets.widgets.positioner_box.positioner_box_plugin import PositionerBoxPlugin from bec_widgets.widgets.control.device_control.positioner_box.positioner_box_plugin import (
PositionerBoxPlugin,
)
QPyDesignerCustomWidgetCollection.addCustomWidget(PositionerBoxPlugin()) QPyDesignerCustomWidgetCollection.addCustomWidget(PositionerBoxPlugin())

View File

@ -6,7 +6,7 @@ def main(): # pragma: no cover
return return
from PySide6.QtDesigner import QPyDesignerCustomWidgetCollection from PySide6.QtDesigner import QPyDesignerCustomWidgetCollection
from bec_widgets.widgets.positioner_box.positioner_control_line_plugin import ( from bec_widgets.widgets.control.device_control.positioner_box.positioner_control_line_plugin import (
PositionerControlLinePlugin, PositionerControlLinePlugin,
) )

View File

@ -5,16 +5,16 @@ from __future__ import annotations
from bec_lib.device import Positioner from bec_lib.device import Positioner
from bec_lib.logger import bec_logger from bec_lib.logger import bec_logger
from qtpy.QtCore import Property, QSize, Signal, Slot from qtpy.QtCore import Property, QSize, Signal, Slot
from qtpy.QtWidgets import QGridLayout, QGroupBox, QSizePolicy, QVBoxLayout, QWidget from qtpy.QtWidgets import QGridLayout, QGroupBox, QVBoxLayout, QWidget
from bec_widgets.utils.bec_widget import BECWidget from bec_widgets.utils.bec_widget import BECWidget
from bec_widgets.widgets.positioner_box.positioner_box import PositionerBox from bec_widgets.widgets.control.device_control.positioner_box.positioner_box import PositionerBox
logger = bec_logger.logger logger = bec_logger.logger
class PositionerGroupBox(QGroupBox): class PositionerGroupBox(QGroupBox):
PLUGIN = True
position_update = Signal(float) position_update = Signal(float)
def __init__(self, parent, dev_name): def __init__(self, parent, dev_name):

View File

@ -6,7 +6,9 @@ import os
from qtpy.QtDesigner import QDesignerCustomWidgetInterface from qtpy.QtDesigner import QDesignerCustomWidgetInterface
from bec_widgets.utils.bec_designer import designer_material_icon from bec_widgets.utils.bec_designer import designer_material_icon
from bec_widgets.widgets.positioner_group.positioner_group import PositionerGroup from bec_widgets.widgets.control.device_control.positioner_group.positioner_group import (
PositionerGroup,
)
DOM_XML = """ DOM_XML = """
<ui language='c++'> <ui language='c++'>

View File

@ -6,7 +6,9 @@ def main(): # pragma: no cover
return return
from PySide6.QtDesigner import QPyDesignerCustomWidgetCollection from PySide6.QtDesigner import QPyDesignerCustomWidgetCollection
from bec_widgets.widgets.positioner_group.positioner_group_plugin import PositionerGroupPlugin from bec_widgets.widgets.control.device_control.positioner_group.positioner_group_plugin import (
PositionerGroupPlugin,
)
QPyDesignerCustomWidgetCollection.addCustomWidget(PositionerGroupPlugin()) QPyDesignerCustomWidgetCollection.addCustomWidget(PositionerGroupPlugin())

View File

@ -6,7 +6,7 @@ from qtpy.QtDesigner import QDesignerCustomWidgetInterface
import bec_widgets import bec_widgets
from bec_widgets.utils.bec_designer import designer_material_icon from bec_widgets.utils.bec_designer import designer_material_icon
from bec_widgets.widgets.device_combobox.device_combobox import DeviceComboBox from bec_widgets.widgets.control.device_input.device_combobox.device_combobox import DeviceComboBox
DOM_XML = """ DOM_XML = """
<ui language='c++'> <ui language='c++'>

View File

@ -5,7 +5,7 @@ from qtpy.QtGui import QPainter, QPaintEvent, QPen
from qtpy.QtWidgets import QComboBox, QSizePolicy from qtpy.QtWidgets import QComboBox, QSizePolicy
from bec_widgets.utils.colors import get_accent_colors from bec_widgets.utils.colors import get_accent_colors
from bec_widgets.widgets.base_classes.device_input_base import ( from bec_widgets.widgets.control.device_input.base_classes.device_input_base import (
BECDeviceFilter, BECDeviceFilter,
DeviceInputBase, DeviceInputBase,
DeviceInputConfig, DeviceInputConfig,
@ -27,6 +27,7 @@ class DeviceComboBox(DeviceInputBase, QComboBox):
""" """
ICON_NAME = "list_alt" ICON_NAME = "list_alt"
PLUGIN = True
device_selected = Signal(str) device_selected = Signal(str)
device_config_update = Signal() device_config_update = Signal()

View File

@ -6,7 +6,9 @@ def main(): # pragma: no cover
return return
from PySide6.QtDesigner import QPyDesignerCustomWidgetCollection from PySide6.QtDesigner import QPyDesignerCustomWidgetCollection
from bec_widgets.widgets.device_combobox.device_combo_box_plugin import DeviceComboBoxPlugin from bec_widgets.widgets.control.device_input.device_combobox.device_combo_box_plugin import (
DeviceComboBoxPlugin,
)
QPyDesignerCustomWidgetCollection.addCustomWidget(DeviceComboBoxPlugin()) QPyDesignerCustomWidgetCollection.addCustomWidget(DeviceComboBoxPlugin())

View File

@ -6,7 +6,7 @@ from qtpy.QtGui import QPainter, QPaintEvent, QPen
from qtpy.QtWidgets import QApplication, QCompleter, QLineEdit, QSizePolicy from qtpy.QtWidgets import QApplication, QCompleter, QLineEdit, QSizePolicy
from bec_widgets.utils.colors import get_accent_colors from bec_widgets.utils.colors import get_accent_colors
from bec_widgets.widgets.base_classes.device_input_base import ( from bec_widgets.widgets.control.device_input.base_classes.device_input_base import (
BECDeviceFilter, BECDeviceFilter,
DeviceInputBase, DeviceInputBase,
DeviceInputConfig, DeviceInputConfig,
@ -32,6 +32,7 @@ class DeviceLineEdit(DeviceInputBase, QLineEdit):
device_selected = Signal(str) device_selected = Signal(str)
device_config_update = Signal() device_config_update = Signal()
PLUGIN = True
ICON_NAME = "edit_note" ICON_NAME = "edit_note"
def __init__( def __init__(
@ -156,7 +157,9 @@ if __name__ == "__main__": # pragma: no cover
from qtpy.QtWidgets import QVBoxLayout, QWidget from qtpy.QtWidgets import QVBoxLayout, QWidget
from bec_widgets.utils.colors import set_theme from bec_widgets.utils.colors import set_theme
from bec_widgets.widgets.signal_combobox.signal_combobox import SignalComboBox from bec_widgets.widgets.control.device_input.signal_combobox.signal_combobox import (
SignalComboBox,
)
app = QApplication([]) app = QApplication([])
set_theme("dark") set_theme("dark")

View File

@ -6,7 +6,9 @@ from qtpy.QtDesigner import QDesignerCustomWidgetInterface
import bec_widgets import bec_widgets
from bec_widgets.utils.bec_designer import designer_material_icon from bec_widgets.utils.bec_designer import designer_material_icon
from bec_widgets.widgets.device_line_edit.device_line_edit import DeviceLineEdit from bec_widgets.widgets.control.device_input.device_line_edit.device_line_edit import (
DeviceLineEdit,
)
DOM_XML = """ DOM_XML = """
<ui language='c++'> <ui language='c++'>

View File

@ -6,7 +6,9 @@ def main(): # pragma: no cover
return return
from PySide6.QtDesigner import QPyDesignerCustomWidgetCollection from PySide6.QtDesigner import QPyDesignerCustomWidgetCollection
from bec_widgets.widgets.device_line_edit.device_line_edit_plugin import DeviceLineEditPlugin from bec_widgets.widgets.control.device_input.device_line_edit.device_line_edit_plugin import (
DeviceLineEditPlugin,
)
QPyDesignerCustomWidgetCollection.addCustomWidget(DeviceLineEditPlugin()) QPyDesignerCustomWidgetCollection.addCustomWidget(DeviceLineEditPlugin())

View File

@ -6,7 +6,9 @@ def main(): # pragma: no cover
return return
from PySide6.QtDesigner import QPyDesignerCustomWidgetCollection from PySide6.QtDesigner import QPyDesignerCustomWidgetCollection
from bec_widgets.widgets.signal_combobox.signal_combobox_plugin import SignalComboBoxPlugin from bec_widgets.widgets.control.device_input.signal_combobox.signal_combobox_plugin import (
SignalComboBoxPlugin,
)
QPyDesignerCustomWidgetCollection.addCustomWidget(SignalComboBoxPlugin()) QPyDesignerCustomWidgetCollection.addCustomWidget(SignalComboBoxPlugin())

View File

@ -4,7 +4,9 @@ from qtpy.QtWidgets import QComboBox, QSizePolicy
from bec_widgets.utils.filter_io import ComboBoxFilterHandler, FilterIO from bec_widgets.utils.filter_io import ComboBoxFilterHandler, FilterIO
from bec_widgets.utils.ophyd_kind_util import Kind from bec_widgets.utils.ophyd_kind_util import Kind
from bec_widgets.widgets.base_classes.device_signal_input_base import DeviceSignalInputBase from bec_widgets.widgets.control.device_input.base_classes.device_signal_input_base import (
DeviceSignalInputBase,
)
class SignalComboBox(DeviceSignalInputBase, QComboBox): class SignalComboBox(DeviceSignalInputBase, QComboBox):
@ -22,6 +24,7 @@ class SignalComboBox(DeviceSignalInputBase, QComboBox):
""" """
ICON_NAME = "list_alt" ICON_NAME = "list_alt"
PLUGIN = True
device_signal_changed = Signal(str) device_signal_changed = Signal(str)

View File

@ -4,7 +4,7 @@
from qtpy.QtDesigner import QDesignerCustomWidgetInterface from qtpy.QtDesigner import QDesignerCustomWidgetInterface
from bec_widgets.utils.bec_designer import designer_material_icon from bec_widgets.utils.bec_designer import designer_material_icon
from bec_widgets.widgets.signal_combobox.signal_combobox import SignalComboBox from bec_widgets.widgets.control.device_input.signal_combobox.signal_combobox import SignalComboBox
DOM_XML = """ DOM_XML = """
<ui language='c++'> <ui language='c++'>

View File

@ -6,7 +6,9 @@ def main(): # pragma: no cover
return return
from PySide6.QtDesigner import QPyDesignerCustomWidgetCollection from PySide6.QtDesigner import QPyDesignerCustomWidgetCollection
from bec_widgets.widgets.signal_line_edit.signal_line_edit_plugin import SignalLineEditPlugin from bec_widgets.widgets.control.device_input.signal_line_edit.signal_line_edit_plugin import (
SignalLineEditPlugin,
)
QPyDesignerCustomWidgetCollection.addCustomWidget(SignalLineEditPlugin()) QPyDesignerCustomWidgetCollection.addCustomWidget(SignalLineEditPlugin())

View File

@ -5,7 +5,9 @@ from qtpy.QtWidgets import QCompleter, QLineEdit, QSizePolicy
from bec_widgets.utils.colors import get_accent_colors from bec_widgets.utils.colors import get_accent_colors
from bec_widgets.utils.ophyd_kind_util import Kind from bec_widgets.utils.ophyd_kind_util import Kind
from bec_widgets.widgets.base_classes.device_signal_input_base import DeviceSignalInputBase from bec_widgets.widgets.control.device_input.base_classes.device_signal_input_base import (
DeviceSignalInputBase,
)
class SignalLineEdit(DeviceSignalInputBase, QLineEdit): class SignalLineEdit(DeviceSignalInputBase, QLineEdit):
@ -24,6 +26,7 @@ class SignalLineEdit(DeviceSignalInputBase, QLineEdit):
device_signal_changed = Signal(str) device_signal_changed = Signal(str)
PLUGIN = True
ICON_NAME = "vital_signs" ICON_NAME = "vital_signs"
def __init__( def __init__(

View File

@ -4,7 +4,9 @@
from qtpy.QtDesigner import QDesignerCustomWidgetInterface from qtpy.QtDesigner import QDesignerCustomWidgetInterface
from bec_widgets.utils.bec_designer import designer_material_icon from bec_widgets.utils.bec_designer import designer_material_icon
from bec_widgets.widgets.signal_line_edit.signal_line_edit import SignalLineEdit from bec_widgets.widgets.control.device_input.signal_line_edit.signal_line_edit import (
SignalLineEdit,
)
DOM_XML = """ DOM_XML = """
<ui language='c++'> <ui language='c++'>

Some files were not shown because too many files have changed in this diff Show More