GUI: added error handling if GUI fails to open. Will need to test to see if it crashes if any other errors are raised!
This commit is contained in:
+113
-86
@@ -1,101 +1,128 @@
|
||||
import sys
|
||||
import traceback
|
||||
|
||||
from PySide6.QtCore import QCommandLineParser, QCommandLineOption
|
||||
from PySide6.QtWidgets import QApplication, QDialog
|
||||
from PySide6.QtWidgets import QApplication, QMessageBox
|
||||
|
||||
|
||||
from aaredaqlib.logger_config import setup_logger
|
||||
from aaregui.main_window import MainWindow
|
||||
from aaregui.widgets.login import LoginDialog
|
||||
#from aaregui.widgets.login import LoginDialog
|
||||
from aaredaqlib.beamline import MXBeamline, mx_beamline
|
||||
from aaregui.auth import auth
|
||||
|
||||
logger = setup_logger("aareGUI")
|
||||
|
||||
if __name__ == "__main__":
|
||||
app = QApplication(sys.argv)
|
||||
|
||||
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://mx-x06da-queue-01.psi.ch:5210"
|
||||
default_zmq_addr = "tcp://x06da-pserv-01:9089" #129.129.110.12:9089
|
||||
default_pred_zmq_addr = "tcp://mx-ml:9091"
|
||||
case MXBeamline.X10SA:
|
||||
default_url = "http://mx-x10sa-queue-01.psi.ch:5210"
|
||||
default_zmq_addr = ""
|
||||
default_pred_zmq_addr = ""
|
||||
case MXBeamline.X06SA:
|
||||
default_url = "http://mx-x06sa-queue-01.psi.ch:5210"
|
||||
default_zmq_addr = ""
|
||||
default_pred_zmq_addr = ""
|
||||
case _:
|
||||
default_url = ""
|
||||
default_zmq_addr = ""
|
||||
default_pred_zmq_addr = ""
|
||||
|
||||
# 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",
|
||||
default_zmq_addr)
|
||||
parser.addOption(cameraZeroMQ)
|
||||
|
||||
predZmqOption = QCommandLineOption(
|
||||
["p", "pred-zmq"],
|
||||
"Prediction ZeroMQ URL (PUB) to subscribe to (e.g. tcp://mx-ml:9091)",
|
||||
"pred-zmq",
|
||||
default_pred_zmq_addr
|
||||
)
|
||||
parser.addOption(predZmqOption)
|
||||
|
||||
parser.process(app)
|
||||
|
||||
base_url = parser.value(urlOption)
|
||||
if base_url == "" or base_url.lower() == "none":
|
||||
base_url = None
|
||||
|
||||
zmq_addr = parser.value(cameraZeroMQ)
|
||||
if zmq_addr == "":
|
||||
zmq_addr = None
|
||||
|
||||
pred_zmq_addr = parser.value(predZmqOption)
|
||||
if pred_zmq_addr == "":
|
||||
pred_zmq_addr = None
|
||||
|
||||
if parser.isSet(defaultImage):
|
||||
default_image = parser.value(defaultImage)
|
||||
else:
|
||||
default_image = None
|
||||
try:
|
||||
token = auth(base_url)
|
||||
app = QApplication(sys.argv)
|
||||
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://mx-x06da-queue-01.psi.ch:5210"
|
||||
default_zmq_addr = "tcp://x06da-pserv-01:9089" #129.129.110.12:9089
|
||||
default_pred_zmq_addr = "tcp://mx-ml:9091"
|
||||
case MXBeamline.X10SA:
|
||||
default_url = "http://mx-x10sa-queue-01.psi.ch:5210"
|
||||
default_zmq_addr = ""
|
||||
default_pred_zmq_addr = ""
|
||||
case MXBeamline.X06SA:
|
||||
default_url = "http://mx-x06sa-queue-01.psi.ch:5210"
|
||||
default_zmq_addr = ""
|
||||
default_pred_zmq_addr = ""
|
||||
case _:
|
||||
default_url = ""
|
||||
default_zmq_addr = ""
|
||||
default_pred_zmq_addr = ""
|
||||
|
||||
# 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",
|
||||
default_zmq_addr)
|
||||
parser.addOption(cameraZeroMQ)
|
||||
|
||||
predZmqOption = QCommandLineOption(
|
||||
["p", "pred-zmq"],
|
||||
"Prediction ZeroMQ URL (PUB) to subscribe to (e.g. tcp://mx-ml:9091)",
|
||||
"pred-zmq",
|
||||
default_pred_zmq_addr
|
||||
)
|
||||
parser.addOption(predZmqOption)
|
||||
|
||||
parser.process(app)
|
||||
|
||||
base_url = parser.value(urlOption)
|
||||
if base_url == "" or base_url.lower() == "none":
|
||||
base_url = None
|
||||
|
||||
zmq_addr = parser.value(cameraZeroMQ)
|
||||
if zmq_addr == "":
|
||||
zmq_addr = None
|
||||
|
||||
pred_zmq_addr = parser.value(predZmqOption)
|
||||
if pred_zmq_addr == "":
|
||||
pred_zmq_addr = None
|
||||
|
||||
if parser.isSet(defaultImage):
|
||||
default_image = parser.value(defaultImage)
|
||||
else:
|
||||
default_image = None
|
||||
|
||||
try:
|
||||
token = auth(base_url)
|
||||
logger.info("Authentication successful")
|
||||
except Exception as e:
|
||||
logger.error(f"Cannot connect to AareDAQ server. Exiting. {e}")
|
||||
logger.error(traceback.format_exc())
|
||||
QMessageBox.critical(
|
||||
None,
|
||||
"Authentication Error",
|
||||
f"Cannot connect to AareDAQ server:\n{str(e)}\n\n Please check the server is running and your network connection."
|
||||
)
|
||||
sys.exit(1)
|
||||
|
||||
|
||||
win = MainWindow(base_url=base_url,
|
||||
token=token,
|
||||
default_image=default_image,
|
||||
zmq_addr=zmq_addr,
|
||||
pred_zmq_addr=pred_zmq_addr)
|
||||
win.show()
|
||||
sys.exit(app.exec())
|
||||
except Exception as e:
|
||||
logger.error(f"Cannot connect to AareDAQ server. Exiting. {e}")
|
||||
sys.exit()
|
||||
logger.error(f"Error starting GUI: {e}")
|
||||
logger.error(f"Traceback: {traceback.format_exc()}")
|
||||
|
||||
try:
|
||||
QMessageBox.critical(
|
||||
None,
|
||||
"Fatal Error",
|
||||
f"An error occurred during startup:\n\n{str(e)}\n\nSee console for details."
|
||||
)
|
||||
except:
|
||||
pass
|
||||
|
||||
sys.exit(1)
|
||||
|
||||
|
||||
win = MainWindow(base_url=base_url,
|
||||
token=token,
|
||||
default_image=default_image,
|
||||
zmq_addr=zmq_addr,
|
||||
pred_zmq_addr=pred_zmq_addr)
|
||||
win.show()
|
||||
sys.exit(app.exec())
|
||||
|
||||
Reference in New Issue
Block a user