GUI: Add command line parameters (URL, ZeroMQ sample camera and default image)
Build and Publish / build (push) Failing after 22s

This commit is contained in:
leonarski_f committed 2025-05-20 18:01:32 +02:00
1 parent 001a2d5b71
commit 7fa68225f6
3 files changed
+79 -17

No files matched your search

+56 -2
View File
@@ -1,18 +1,72 @@
import sys
from PySide6.QtCore import QCommandLineParser, QCommandLineOption
from PySide6.QtWidgets import QApplication, QDialog
from aaregui.main_window import MainWindow
from aaregui.widgets.login import LoginDialog
from aaredaqlib.beamline import MXBeamline, mx_beamline
if __name__ == "__main__":
app = QApplication(sys.argv)
base_url = "http://0.0.0.0:5210"
app.setApplicationName("AareGUI")
app.setApplicationVersion("0.1.0")
app.setOrganizationName("PSI")
app.setOrganizationDomain("psi.ch")
# Create the parser
parser = QCommandLineParser()
parser.setApplicationDescription("PSI AareGUI")
parser.addHelpOption() # Adds --help option
parser.addVersionOption() # Adds --version option
match mx_beamline():
case MXBeamline.X06DA:
default_url = "http://x06da-queue-01.psi.ch:5210"
zmq_addr = "tcp://129.129.110.12:9089"
case MXBeamline.X10SA:
default_url = "http://x10aa-queue-01.psi.ch:5210"
zmq_addr = None
case MXBeamline.X06SA:
default_url = "http://x06sa-queue-01.psi.ch:5210"
zmq_addr = None
case _:
default_url = "http://localhost:5210"
zmq_addr = None
# Add custom options as needed
urlOption = QCommandLineOption(["u", "aaredaq-url"],
"Base AareDAQ URL",
"url", default_url)
parser.addOption(urlOption)
defaultImage = QCommandLineOption(["i", "image"],
"Default image to display in absence of the ZMQ stream",
"image")
parser.addOption(defaultImage)
cameraZeroMQ = QCommandLineOption(["s", "sample-camera-zmq"],
"Sample camera ZeroMQ URL",
"sample-camera-zmq")
parser.addOption(cameraZeroMQ)
parser.process(app)
base_url = parser.value(urlOption)
if parser.isSet(defaultImage):
default_image = parser.value(defaultImage)
else:
default_image = None
dialog = LoginDialog(base_url=base_url)
if dialog.exec() == QDialog.DialogCode.Accepted and dialog.token:
win = MainWindow(base_url=base_url, token=dialog.token)
win = MainWindow(base_url=base_url,
token=dialog.token,
default_image=default_image,
zmq_addr=zmq_addr)
win.show()
sys.exit(app.exec())
else:
+14 -7
View File
@@ -29,7 +29,9 @@ from aaregui.widgets.status_bar import StatusBar
class MainWindow(QMainWindow):
sample_geometry = Signal(SampleGeometryModel)
def __init__(self, base_url: str, token: str):
def __init__(self, base_url: str, token: str,
default_image: str | None,
zmq_addr: str | None):
super().__init__()
self.__base_url = base_url
self.__token = token
@@ -58,7 +60,7 @@ class MainWindow(QMainWindow):
top_widget_layout.addWidget(self.data_collection)
self.camera_image = SampleCameraImageLabel(
geom=geom, rasters=rasters, parent=top_widget
geom=geom, rasters=rasters, parent=top_widget, default_image=default_image
)
top_widget_layout.addWidget(self.camera_image)
@@ -94,7 +96,7 @@ class MainWindow(QMainWindow):
self.setCentralWidget(splitter)
self.setWindowTitle("Aare macromolecular crystallography GUI")
self.setWindowTitle("AareGUI")
self.create_menu_bar()
self.status_bar = StatusBar(self.__decoded_token, parent=self)
@@ -129,9 +131,13 @@ class MainWindow(QMainWindow):
self.beamline.beam_center.beam_center_clear.connect(self.daq.beam_center_clear)
self.camera_image.update_beam_center.connect(self.daq.beam_center_mark)
self.camera_thread = SampleCameraThread(zmq_url="tcp://129.129.110.12:9089")
self.camera_thread.camera_image.connect(self.camera_image.update_pixmap)
self.camera_thread.start()
if zmq_addr is not None:
self.camera_thread = SampleCameraThread(zmq_url=zmq_addr)
self.camera_thread.camera_image.connect(self.camera_image.update_pixmap)
self.camera_thread.start()
else:
self.camera_thread = None
QApplication.instance().aboutToQuit.connect(self.cleanup)
#
@@ -198,4 +204,5 @@ class MainWindow(QMainWindow):
self.status_bar.showMessage(f'<span style="color: red; "> {msg} </span>', 10000)
def cleanup(self):
self.camera_thread.stop()
if self.camera_thread is not None:
self.camera_thread.stop()
+9 -8
View File
@@ -38,10 +38,11 @@ class SampleCameraImageLabel(QGraphicsView):
update_beam_center = Signal(float, float)
def __init__(
self,
geom: SampleGeometryModel,
rasters: List[RasterGridRequest],
parent=None,
self,
geom: SampleGeometryModel,
rasters: List[RasterGridRequest],
default_image: str | None,
parent=None,
):
super().__init__(parent)
@@ -50,7 +51,6 @@ class SampleCameraImageLabel(QGraphicsView):
else:
self.__raster = rasters
self.__pixmap = QPixmap("/home/leonarski_f/loop200.jpg")
self.__geom = geom
self.__bookmarks: SmargonBookmarkList = SmargonBookmarkList()
self.__autoscale = True
@@ -73,9 +73,10 @@ class SampleCameraImageLabel(QGraphicsView):
self.setMouseTracking(True)
pixmap = QPixmap("/home/leonarski_f/loop200.jpg")
self.pixmap_item = QGraphicsPixmapItem(pixmap)
self.scene.addItem(self.pixmap_item)
if default_image is not None:
pixmap = QPixmap("/home/leonarski_f/loop200.jpg")
self.pixmap_item = QGraphicsPixmapItem(pixmap)
self.scene.addItem(self.pixmap_item)
self.setFrameShape(QFrame.Shape.NoFrame)
self.setRenderHints(QPainter.RenderHint.Antialiasing)