diff --git a/bec_widgets/utils/bec_designer.py b/bec_widgets/utils/bec_designer.py index 3c6e0947..efb7400b 100644 --- a/bec_widgets/utils/bec_designer.py +++ b/bec_widgets/utils/bec_designer.py @@ -16,7 +16,7 @@ from PySide6.scripts.pyside_tool import ( def patch_designer(): # pragma: no cover - init_virtual_env() + # init_virtual_env() major_version = sys.version_info[0] minor_version = sys.version_info[1] @@ -43,8 +43,11 @@ def patch_designer(): # pragma: no cover # Patch the designer function def main(): # pragma: no cover os.environ["PYSIDE_DESIGNER_PLUGINS"] = os.path.join( - os.path.dirname(bec_widgets.__file__), "examples/plugin_example_pyside" + os.path.dirname(bec_widgets.__file__), "widgets/device_inputs/device_combobox" ) + # os.environ["PYSIDE_DESIGNER_PLUGINS"] = os.path.join( + # os.path.dirname(bec_widgets.__file__), "widgets/motor_control/selection" + # ) patch_designer() diff --git a/bec_widgets/widgets/device_inputs/device_combobox/device_combobox.py b/bec_widgets/widgets/device_inputs/device_combobox/device_combobox.py index 7b348181..0dbde00f 100644 --- a/bec_widgets/widgets/device_inputs/device_combobox/device_combobox.py +++ b/bec_widgets/widgets/device_inputs/device_combobox/device_combobox.py @@ -82,14 +82,3 @@ class DeviceComboBox(DeviceInputBase, QComboBox): if device_obj is None: raise ValueError(f"Device {device_name} is not found.") return device_obj - - -if __name__ == "__main__": # pragma: no cover - import sys - - from qtpy.QtWidgets import QApplication - - app = QApplication(sys.argv) - w = DeviceComboBox(default_device="samx") - w.show() - sys.exit(app.exec_()) diff --git a/bec_widgets/widgets/device_inputs/device_combobox/device_combobox.pyproject b/bec_widgets/widgets/device_inputs/device_combobox/device_combobox.pyproject new file mode 100644 index 00000000..c97ce5c3 --- /dev/null +++ b/bec_widgets/widgets/device_inputs/device_combobox/device_combobox.pyproject @@ -0,0 +1,4 @@ +{ + "files": ["device_combobox.py", "launch_device_combobox.py", + ] +} diff --git a/bec_widgets/widgets/device_inputs/device_combobox/device_combobox_plugin.py b/bec_widgets/widgets/device_inputs/device_combobox/device_combobox_plugin.py new file mode 100644 index 00000000..b8c5f4a5 --- /dev/null +++ b/bec_widgets/widgets/device_inputs/device_combobox/device_combobox_plugin.py @@ -0,0 +1,55 @@ +# Copyright (C) 2022 The Qt Company Ltd. +# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause + +from device_combobox import DeviceComboBox + +from qtpy.QtGui import QIcon +from qtpy.QtDesigner import QDesignerCustomWidgetInterface + + +DOM_XML = """ + + + + +""" + + +class DeviceComboBoxPlugin(QDesignerCustomWidgetInterface): # pragma: no cover + def __init__(self): + super().__init__() + self._form_editor = None + + def createWidget(self, parent): + t = DeviceComboBox(parent) + return t + + def domXml(self): + return DOM_XML + + def group(self): + return "" + + def icon(self): + return QIcon() + + def includeFile(self): + return "device_combobox" + + 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 "DeviceComboBox" + + def toolTip(self): + return "Device ComboBox Example for BEC Widgets" + + def whatsThis(self): + return self.toolTip() diff --git a/bec_widgets/widgets/device_inputs/device_combobox/launch_device_combobox.py b/bec_widgets/widgets/device_inputs/device_combobox/launch_device_combobox.py new file mode 100644 index 00000000..979b7b2d --- /dev/null +++ b/bec_widgets/widgets/device_inputs/device_combobox/launch_device_combobox.py @@ -0,0 +1,11 @@ +from bec_widgets.widgets.device_inputs import DeviceComboBox + +if __name__ == "__main__": # pragma: no cover + import sys + + from qtpy.QtWidgets import QApplication + + app = QApplication(sys.argv) + w = DeviceComboBox() + w.show() + sys.exit(app.exec_()) diff --git a/bec_widgets/widgets/device_inputs/device_combobox/register_device_combobox.py b/bec_widgets/widgets/device_inputs/device_combobox/register_device_combobox.py new file mode 100644 index 00000000..df3581d5 --- /dev/null +++ b/bec_widgets/widgets/device_inputs/device_combobox/register_device_combobox.py @@ -0,0 +1,16 @@ +# Copyright (C) 2022 The Qt Company Ltd. +# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause + +from device_combobox import DeviceComboBox + +from PySide6.QtDesigner import QPyDesignerCustomWidgetCollection + +from bec_widgets.widgets.device_inputs.device_combobox.device_combobox_plugin import ( + DeviceComboBoxPlugin, +) + +# Set PYSIDE_DESIGNER_PLUGINS to point to this directory and load the plugin + + +if __name__ == "__main__": # pragma: no cover + QPyDesignerCustomWidgetCollection.addCustomWidget(DeviceComboBoxPlugin())