mirror of
https://github.com/bec-project/bec_widgets.git
synced 2025-07-14 11:41:49 +02:00
feat: added full app with all motor movement related widgets into motor_control_compilations.py
This commit is contained in:
@ -1,6 +1,9 @@
|
|||||||
from .motor_movement import (
|
from .motor_movement import (
|
||||||
|
MotorControlApp,
|
||||||
MotorControlMap,
|
MotorControlMap,
|
||||||
MotorControlPanel,
|
MotorControlPanel,
|
||||||
MotorControlPanelRelative,
|
MotorControlPanelRelative,
|
||||||
MotorControlPanelAbsolute,
|
MotorControlPanelAbsolute,
|
||||||
|
MotorCoordinateTable,
|
||||||
|
MotorThread,
|
||||||
)
|
)
|
||||||
|
@ -1,6 +1,9 @@
|
|||||||
from .motor_control_compilations import (
|
from .motor_control_compilations import (
|
||||||
|
MotorControlApp,
|
||||||
MotorControlMap,
|
MotorControlMap,
|
||||||
MotorControlPanel,
|
MotorControlPanel,
|
||||||
MotorControlPanelRelative,
|
MotorControlPanelRelative,
|
||||||
MotorControlPanelAbsolute,
|
MotorControlPanelAbsolute,
|
||||||
|
MotorCoordinateTable,
|
||||||
|
MotorThread,
|
||||||
)
|
)
|
||||||
|
@ -16,6 +16,7 @@ from bec_widgets.widgets import (
|
|||||||
MotorControlSelection,
|
MotorControlSelection,
|
||||||
MotorThread,
|
MotorThread,
|
||||||
MotorMap,
|
MotorMap,
|
||||||
|
MotorCoordinateTable,
|
||||||
)
|
)
|
||||||
|
|
||||||
CONFIG_DEFAULT = {
|
CONFIG_DEFAULT = {
|
||||||
@ -23,7 +24,7 @@ CONFIG_DEFAULT = {
|
|||||||
"motor_x": "samx",
|
"motor_x": "samx",
|
||||||
"motor_y": "samy",
|
"motor_y": "samy",
|
||||||
"step_size_x": 3,
|
"step_size_x": 3,
|
||||||
"step_size_y": 50,
|
"step_size_y": 3,
|
||||||
"precision": 4,
|
"precision": 4,
|
||||||
"step_x_y_same": False,
|
"step_x_y_same": False,
|
||||||
"move_with_arrows": False,
|
"move_with_arrows": False,
|
||||||
@ -51,6 +52,49 @@ CONFIG_DEFAULT = {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
class MotorControlApp(QWidget):
|
||||||
|
def __init__(self, parent=None, client=None, config=None):
|
||||||
|
super().__init__(parent)
|
||||||
|
|
||||||
|
bec_dispatcher = BECDispatcher()
|
||||||
|
self.client = bec_dispatcher.client if client is None else client
|
||||||
|
self.config = config
|
||||||
|
|
||||||
|
# Widgets
|
||||||
|
self.motor_control_panel = MotorControlPanel(client=self.client, config=self.config)
|
||||||
|
# Create MotorMap
|
||||||
|
self.motion_map = MotorMap(client=self.client, config=self.config)
|
||||||
|
# Create MotorCoordinateTable
|
||||||
|
self.motor_table = MotorCoordinateTable(client=self.client, config=self.config)
|
||||||
|
|
||||||
|
# Create the splitter and add MotorMap and MotorControlPanel
|
||||||
|
splitter = QSplitter(Qt.Horizontal)
|
||||||
|
splitter.addWidget(self.motion_map)
|
||||||
|
splitter.addWidget(self.motor_control_panel)
|
||||||
|
splitter.addWidget(self.motor_table)
|
||||||
|
|
||||||
|
# Set the main layout
|
||||||
|
layout = QVBoxLayout(self)
|
||||||
|
layout.addWidget(splitter)
|
||||||
|
self.setLayout(layout)
|
||||||
|
|
||||||
|
# Connecting signals and slots
|
||||||
|
self.motor_control_panel.selection_widget.selected_motors_signal.connect(
|
||||||
|
lambda x, y: self.motion_map.change_motors(x, y, 0)
|
||||||
|
)
|
||||||
|
self.motor_control_panel.absolute_widget.coordinates_signal.connect(
|
||||||
|
self.motor_table.add_coordinate
|
||||||
|
)
|
||||||
|
self.motor_control_panel.relative_widget.precision_signal.connect(
|
||||||
|
self.motor_table.set_precision
|
||||||
|
)
|
||||||
|
self.motor_control_panel.relative_widget.precision_signal.connect(
|
||||||
|
self.motor_control_panel.absolute_widget.set_precision
|
||||||
|
)
|
||||||
|
|
||||||
|
self.motor_table.plot_coordinates_signal.connect(self.motion_map.plot_saved_coordinates)
|
||||||
|
|
||||||
|
|
||||||
class MotorControlMap(QWidget):
|
class MotorControlMap(QWidget):
|
||||||
def __init__(self, parent=None, client=None, config=None):
|
def __init__(self, parent=None, client=None, config=None):
|
||||||
super().__init__(parent)
|
super().__init__(parent)
|
||||||
@ -171,18 +215,45 @@ class MotorControlPanelRelative(QWidget):
|
|||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
|
import argparse
|
||||||
|
import sys
|
||||||
|
|
||||||
|
parser = argparse.ArgumentParser(description="Run various Motor Control Widgets compositions.")
|
||||||
|
parser.add_argument(
|
||||||
|
"-v",
|
||||||
|
"--variant",
|
||||||
|
type=str,
|
||||||
|
choices=["app", "map", "panel", "panel_abs", "panel_rel"],
|
||||||
|
help="Select the variant of the motor control to run. "
|
||||||
|
"'app' for the full application, "
|
||||||
|
"'map' for MotorMap, "
|
||||||
|
"'panel' for the MotorControlPanel, "
|
||||||
|
"'panel_abs' for MotorControlPanel with absolute control, "
|
||||||
|
"'panel_rel' for MotorControlPanel with relative control.",
|
||||||
|
)
|
||||||
|
|
||||||
|
args = parser.parse_args()
|
||||||
|
|
||||||
bec_dispatcher = BECDispatcher()
|
bec_dispatcher = BECDispatcher()
|
||||||
# BECclient global variables
|
|
||||||
client = bec_dispatcher.client
|
client = bec_dispatcher.client
|
||||||
client.start()
|
client.start()
|
||||||
|
|
||||||
app = QApplication([])
|
app = QApplication([])
|
||||||
qdarktheme.setup_theme("auto")
|
qdarktheme.setup_theme("auto")
|
||||||
|
|
||||||
motor_control = MotorControlMap(client=client, config=CONFIG_DEFAULT)
|
if args.variant == "app":
|
||||||
# motor_control = MotorControlPanel(client=client, config=CONFIG_DEFAULT)
|
window = MotorControlApp(client=client, config=CONFIG_DEFAULT)
|
||||||
# motor_control = MotorControlPanelRelative(client=client, config=CONFIG_DEFAULT)
|
elif args.variant == "map":
|
||||||
# motor_control = MotorControlPanelAbsolute(client=client, config=CONFIG_DEFAULT)
|
window = MotorControlMap(client=client, config=CONFIG_DEFAULT)
|
||||||
window = motor_control
|
elif args.variant == "panel":
|
||||||
|
window = MotorControlPanel(client=client, config=CONFIG_DEFAULT)
|
||||||
|
elif args.variant == "panel_abs":
|
||||||
|
window = MotorControlPanelAbsolute(client=client, config=CONFIG_DEFAULT)
|
||||||
|
elif args.variant == "panel_rel":
|
||||||
|
window = MotorControlPanelRelative(client=client, config=CONFIG_DEFAULT)
|
||||||
|
else:
|
||||||
|
print("Please specify a valid variant to run. Use -h for help.")
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
window.show()
|
window.show()
|
||||||
app.exec()
|
sys.exit(app.exec())
|
||||||
|
Reference in New Issue
Block a user