diff --git a/bec_widgets/cli/client.py b/bec_widgets/cli/client.py index e89791f0..c2430f56 100644 --- a/bec_widgets/cli/client.py +++ b/bec_widgets/cli/client.py @@ -42,6 +42,7 @@ _Widgets = { "ResumeButton": "ResumeButton", "RingProgressBar": "RingProgressBar", "ScanControl": "ScanControl", + "ScanMetadata": "ScanMetadata", "ScatterWaveform": "ScatterWaveform", "SignalComboBox": "SignalComboBox", "SignalLineEdit": "SignalLineEdit", diff --git a/bec_widgets/widgets/editors/scan_metadata/register_scan_metadata.py b/bec_widgets/widgets/editors/scan_metadata/register_scan_metadata.py new file mode 100644 index 00000000..6a1ec637 --- /dev/null +++ b/bec_widgets/widgets/editors/scan_metadata/register_scan_metadata.py @@ -0,0 +1,15 @@ +def main(): # pragma: no cover + from qtpy import PYSIDE6 + + if not PYSIDE6: + print("PYSIDE6 is not available in the environment. Cannot patch designer.") + return + from PySide6.QtDesigner import QPyDesignerCustomWidgetCollection + + from bec_widgets.widgets.editors.scan_metadata.scan_metadata_plugin import ScanMetadataPlugin + + QPyDesignerCustomWidgetCollection.addCustomWidget(ScanMetadataPlugin()) + + +if __name__ == "__main__": # pragma: no cover + main() diff --git a/bec_widgets/widgets/editors/scan_metadata/scan_metadata.py b/bec_widgets/widgets/editors/scan_metadata/scan_metadata.py index 9f65f0aa..bc49a4d1 100644 --- a/bec_widgets/widgets/editors/scan_metadata/scan_metadata.py +++ b/bec_widgets/widgets/editors/scan_metadata/scan_metadata.py @@ -40,6 +40,9 @@ class ScanMetadata(BECWidget, QWidget): metadata schema registry supplied in the plugin repo to find pydantic models associated with the scan type. Sets limits for numerical values if specified.""" + PLUGIN = True + ICON_NAME = "list_alt" + metadata_updated = Signal(dict) metadata_cleared = Signal(NoneType) diff --git a/bec_widgets/widgets/editors/scan_metadata/scan_metadata.pyproject b/bec_widgets/widgets/editors/scan_metadata/scan_metadata.pyproject new file mode 100644 index 00000000..40c962fe --- /dev/null +++ b/bec_widgets/widgets/editors/scan_metadata/scan_metadata.pyproject @@ -0,0 +1 @@ +{'files': ['scan_metadata.py']} \ No newline at end of file diff --git a/bec_widgets/widgets/editors/scan_metadata/scan_metadata_plugin.py b/bec_widgets/widgets/editors/scan_metadata/scan_metadata_plugin.py new file mode 100644 index 00000000..ff14361b --- /dev/null +++ b/bec_widgets/widgets/editors/scan_metadata/scan_metadata_plugin.py @@ -0,0 +1,54 @@ +# Copyright (C) 2022 The Qt Company Ltd. +# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause + +from qtpy.QtDesigner import QDesignerCustomWidgetInterface + +from bec_widgets.utils.bec_designer import designer_material_icon +from bec_widgets.widgets.editors.scan_metadata.scan_metadata import ScanMetadata + +DOM_XML = """ + + + + +""" + + +class ScanMetadataPlugin(QDesignerCustomWidgetInterface): # pragma: no cover + def __init__(self): + super().__init__() + self._form_editor = None + + def createWidget(self, parent): + t = ScanMetadata(parent) + return t + + def domXml(self): + return DOM_XML + + def group(self): + return "" + + def icon(self): + return designer_material_icon(ScanMetadata.ICON_NAME) + + def includeFile(self): + return "scan_metadata" + + def initialize(self, form_editor): + self._form_editor = form_editor + + def isContainer(self): + return False + + def isInitialized(self): + return self._form_editor is not None + + def name(self): + return "ScanMetadata" + + def toolTip(self): + return "Dynamically generates a form for inclusion of metadata for a scan." + + def whatsThis(self): + return self.toolTip()