Major rework. Testing basic tracking.

This commit is contained in:
2026-01-09 16:40:19 +01:00
parent e385e9ac7b
commit ef48fe523d
9 changed files with 429 additions and 1073 deletions

View File

@@ -45,30 +45,25 @@ class OpticsTools(QtWidgets.QMainWindow, Ui_OpticsGUI):
self.machine = Machine(parent = True, office = office)
self.machine.initPVs(self.model.getElements())
self.sandbox = Sandbox(parent = self, machine = self.machine)
self.sandbox.updateSandbox()
self.reference = ReferenceManager(parent=self)
self.reference.initReferencePoints(self.match)
title = "SwissFEL Optics Tools - Lattice %s (Phase %d)" % (self.model.getLatticeVersion(),phase)
if office:
title += " - offline"
self.setWindowTitle(title)
# initialization
# self.loadSettingsdirect("Settings/ReferenceSetting.json")
self.sandbox.updateSandbox()
# self.reference = ReferenceManager(parent=self)
# self.matching = Matching(parent=self, model=self.model, reference = self.reference)
# events handling
self.UIMatchOpticsSelect.currentIndexChanged.connect(self.updateMatchingCase)
self.UIMatchSelected.clicked.connect(self.doMatch)
# self.actionOpen_2.triggered.connect(self.loadSettings)
# self.actionSave.triggered.connect(self.saveSettings)
# self.UIUpdateFromMachine.clicked.connect(self.fullUpdate)
# self.actionHelp.triggered.connect(self.openGit)
# self.actionAbout.triggered.connect(self.about)
# self.actionOpenMatch.triggered.connect(self.loadMatchingConfig)
# self.actionOpenMatchEditor.triggered.connect(self.editMatchingConfig)
# self.actionOpenScriptEditor.triggered.connect(self.editMatchingScript)
# self.actionExportElegant.triggered.connect(self.exportElegant)
self.actionOpen_2.triggered.connect(self.loadSettings)
self.actionSave.triggered.connect(self.saveSettings)
self.UIUpdateFromMachine.clicked.connect(self.fullUpdate)
self.actionHelp.triggered.connect(self.openGit)
self.actionAbout.triggered.connect(self.about)
self.actionOpenScriptEditor.triggered.connect(self.editMatchingScript)
def doMatch(self):
@@ -120,29 +115,6 @@ class OpticsTools(QtWidgets.QMainWindow, Ui_OpticsGUI):
def openGit(self):
webbrowser.open("https://gitea.psi.ch/reiche/opticstool")
def exportElegant(self):
self.elegant.writeElegantFiles('Elegant','dummy','SATBD01')
def loadMatchingConfig(self):
options = QtWidgets.QFileDialog.Options()
options |= QtWidgets.QFileDialog.DontUseNativeDialog
fileName, _ = QtWidgets.QFileDialog.getOpenFileName(self, "Open Matching Config File",
"MatchingConfig/Reference.json",
"Json Files (*.json)", options=options)
if not fileName:
return
self.reference.loadReference(fileName)
def editMatchingConfig(self):
options = QtWidgets.QFileDialog.Options()
options |= QtWidgets.QFileDialog.DontUseNativeDialog
fileName, _ = QtWidgets.QFileDialog.getOpenFileName(self, "Open Matching Config File",
"MatchingConfig/Reference.json",
"Json Files (*.json)", options=options)
if not fileName:
return
subprocess.Popen(["emacs", fileName])
def editMatchingScript(self):
options = QtWidgets.QFileDialog.Options()
options |= QtWidgets.QFileDialog.DontUseNativeDialog
@@ -153,6 +125,7 @@ class OpticsTools(QtWidgets.QMainWindow, Ui_OpticsGUI):
return
subprocess.Popen(["emacs", fileName])
##################################################
def saveSettings(self):
options = QtWidgets.QFileDialog.Options()
options |= QtWidgets.QFileDialog.DontUseNativeDialog
@@ -161,10 +134,7 @@ class OpticsTools(QtWidgets.QMainWindow, Ui_OpticsGUI):
"Json Files (*.json)", options=options)
if not fileName:
return
settings=self.model.getSettings()
with open(fileName, 'w', encoding='utf-8') as f:
json.dump(settings, f, ensure_ascii=False, indent=4)
self.saveSettingDirect(fileName)
def loadSettings(self):
@@ -183,6 +153,12 @@ class OpticsTools(QtWidgets.QMainWindow, Ui_OpticsGUI):
self.model.loadSettings(settings)
self.status('Reference loaded')
def saveSettingsdirect(self,fileName):
settings = self.model.getSettings()
with open(fileName, 'w', encoding='utf-8') as f:
json.dump(settings, f, ensure_ascii=False, indent=4)
####################################################
def fullUpdate(self):
machine = self.machine.getMachineStatus()
self.model.updateFromMachine(machine)