mirror of
https://github.com/bec-project/bec_widgets.git
synced 2025-07-14 11:41:49 +02:00
fix(positioner_box): fixed positioner box dialog; added test; closes #332
This commit is contained in:
@ -46,6 +46,7 @@ class PositionerBox(BECWidget, QWidget):
|
|||||||
self.get_bec_shortcuts()
|
self.get_bec_shortcuts()
|
||||||
self._device = ""
|
self._device = ""
|
||||||
self._limits = None
|
self._limits = None
|
||||||
|
self._dialog = None
|
||||||
|
|
||||||
self.init_ui()
|
self.init_ui()
|
||||||
|
|
||||||
@ -87,17 +88,18 @@ class PositionerBox(BECWidget, QWidget):
|
|||||||
|
|
||||||
def _open_dialog_selection(self):
|
def _open_dialog_selection(self):
|
||||||
"""Open dialog window for positioner selection"""
|
"""Open dialog window for positioner selection"""
|
||||||
dialog = QDialog(self)
|
self._dialog = QDialog(self)
|
||||||
dialog.setWindowTitle("Positioner Selection")
|
self._dialog.setWindowTitle("Positioner Selection")
|
||||||
layout = QVBoxLayout()
|
layout = QVBoxLayout()
|
||||||
line_edit = DeviceLineEdit(self, client=self.client, device_filter="Positioner")
|
line_edit = DeviceLineEdit(self, client=self.client, device_filter="Positioner")
|
||||||
line_edit.textChanged.connect(self._positioner_changed)
|
line_edit.textChanged.connect(self.set_positioner)
|
||||||
layout.addWidget(line_edit)
|
layout.addWidget(line_edit)
|
||||||
close_button = QPushButton("Close")
|
close_button = QPushButton("Close")
|
||||||
close_button.clicked.connect(dialog.accept)
|
close_button.clicked.connect(self._dialog.accept)
|
||||||
layout.addWidget(close_button)
|
layout.addWidget(close_button)
|
||||||
dialog.setLayout(layout)
|
self._dialog.setLayout(layout)
|
||||||
dialog.exec()
|
self._dialog.exec()
|
||||||
|
self._dialog = None
|
||||||
|
|
||||||
def init_device(self):
|
def init_device(self):
|
||||||
"""Init the device view and readback"""
|
"""Init the device view and readback"""
|
||||||
|
@ -4,8 +4,11 @@ import pytest
|
|||||||
from bec_lib.device import Positioner
|
from bec_lib.device import Positioner
|
||||||
from bec_lib.endpoints import MessageEndpoints
|
from bec_lib.endpoints import MessageEndpoints
|
||||||
from bec_lib.messages import ScanQueueMessage
|
from bec_lib.messages import ScanQueueMessage
|
||||||
|
from qtpy.QtCore import Qt, QTimer
|
||||||
from qtpy.QtGui import QValidator
|
from qtpy.QtGui import QValidator
|
||||||
|
from qtpy.QtWidgets import QPushButton
|
||||||
|
|
||||||
|
from bec_widgets.widgets.device_line_edit.device_line_edit import DeviceLineEdit
|
||||||
from bec_widgets.widgets.positioner_box.positioner_box import PositionerBox
|
from bec_widgets.widgets.positioner_box.positioner_box import PositionerBox
|
||||||
from bec_widgets.widgets.positioner_box.positioner_control_line import PositionerControlLine
|
from bec_widgets.widgets.positioner_box.positioner_control_line import PositionerControlLine
|
||||||
|
|
||||||
@ -128,3 +131,23 @@ def test_positioner_control_line(qtbot, mocked_client):
|
|||||||
|
|
||||||
assert db.ui.device_box.height() == 60
|
assert db.ui.device_box.height() == 60
|
||||||
assert db.ui.device_box.width() == 600
|
assert db.ui.device_box.width() == 600
|
||||||
|
|
||||||
|
|
||||||
|
def test_positioner_box_open_dialog_selection(qtbot, positioner_box):
|
||||||
|
"""Test open positioner edit"""
|
||||||
|
|
||||||
|
# Use a timer to close the dialog after it opens
|
||||||
|
def close_dialog():
|
||||||
|
# pylint: disable=protected-access
|
||||||
|
assert positioner_box._dialog is not None
|
||||||
|
qtbot.waitUntil(lambda: positioner_box._dialog.isVisible() is True, timeout=1000)
|
||||||
|
line_edit = positioner_box._dialog.findChild(DeviceLineEdit)
|
||||||
|
line_edit.setText("samy")
|
||||||
|
close_button = positioner_box._dialog.findChild(QPushButton)
|
||||||
|
assert close_button.text() == "Close"
|
||||||
|
qtbot.mouseClick(close_button, Qt.LeftButton)
|
||||||
|
|
||||||
|
# Execute the timer after the dialog opens to close it
|
||||||
|
QTimer.singleShot(100, close_dialog)
|
||||||
|
qtbot.mouseClick(positioner_box.ui.tool_button, Qt.LeftButton)
|
||||||
|
assert positioner_box.device == "samy"
|
||||||
|
Reference in New Issue
Block a user