From 12251f85d42e187bc7b4d326858f905b32ca9dff Mon Sep 17 00:00:00 2001
From: "paolo.cinquegrana@elettra.eu" <paolo.cinquegrana@elettra.eu>
Date: Tue, 2 May 2023 16:59:58 +0200
Subject: [PATCH] implementate correzioni richieste da beamline

---
 src/SluSourceMonitor.py | 215 ++++++++++++++++++++++++++++++++--------
 1 file changed, 176 insertions(+), 39 deletions(-)

diff --git a/src/SluSourceMonitor.py b/src/SluSourceMonitor.py
index b946c9c..a21c423 100644
--- a/src/SluSourceMonitor.py
+++ b/src/SluSourceMonitor.py
@@ -125,9 +125,11 @@ class MainWindow(QDialog):
     def __init__(self, parent=None):
         super(MainWindow, self).__init__(parent)
         self.autodeterminazionedeipupoli = 0
+        self.somethingred = 0
         # top
         self.gruppobeamline = QFrame()
         self.STATOSLU = LineEditRO()
+        self.globallarm = LineEditRO()
         self.beamlineattiva = LineEditRO()
         self.menubeamline = QComboBox()
         self.menubeamline.addItem("None")
@@ -145,13 +147,15 @@ class MainWindow(QDialog):
         lobeamline = QGridLayout()
         lobeamline.addWidget(QLabel("SLU state:"), 0, 0)
         lobeamline.addWidget(self.STATOSLU, 0, 1)
-        lobeamline.addWidget(QLabel("Active beamline:"), 0, 2)
-        lobeamline.addWidget(self.beamlineattiva, 0, 3)
-        lobeamline.addWidget(QLabel("|"), 0, 4)
-        lobeamline.addWidget(QLabel("switch to:"), 0, 5)
-        lobeamline.addWidget(self.menubeamline, 0, 6)
-        lobeamline.addWidget(self.calendar, 0, 7)
-        lobeamline.addWidget(self.paginawiki, 0, 8)
+        lobeamline.addWidget(QLabel("Alarms:"), 0, 2)
+        lobeamline.addWidget(self.globallarm, 0, 3)
+        lobeamline.addWidget(QLabel("Active beamline:"), 0, 4)
+        lobeamline.addWidget(self.beamlineattiva, 0, 5)
+        lobeamline.addWidget(QLabel("|"), 0, 6)
+        lobeamline.addWidget(QLabel("switch to:"), 0, 7)
+        lobeamline.addWidget(self.menubeamline, 0, 8)
+        lobeamline.addWidget(self.calendar, 0, 9)
+        lobeamline.addWidget(self.paginawiki, 0, 10)
         self.gruppobeamline.setLayout(lobeamline)
         #tab
         self.contienitab = QTabWidget()
@@ -538,14 +542,12 @@ class MainWindow(QDialog):
         self.triggerDGQ1RELm.clicked.connect(self.sdgmeno)
         self.triggerDGQ1RELp = QPushButton('+1ns')
         self.triggerDGQ1RELp.clicked.connect(self.sdgmpiu)
-        self.delaycalc = QPushButton('Delay calculator')
-        self.delaycalc.clicked.connect(self.apridelaycalc)
         self.delaycalcL = QLabel('Move by (ns)')
         self.delaycalcS = QLineEdit()
-        self.delaycalcA = QPushButton('Apply')
-        self.delaycalcA.clicked.connect(self.muovidelayslu)
-        self.delaycalcU = QPushButton('Undo')
-        self.delaycalcU.clicked.connect(self.ripristinamemoD)
+        self.delaycalcCALC = QPushButton('Calculate')
+        self.delaycalcCALC.clicked.connect(self.calcoladelayslu)
+        self.delaycalcAPPLYUNDO = QPushButton('...')
+        self.delaycalcAPPLYUNDO.clicked.connect(self.muovidelayslu)
         self.scope6M1L = QLabel('Seed-Pil')
         self.scope6M1R1 = LineEditRO()
         self.scope6M1R2 = LineEditRO()
@@ -623,8 +625,8 @@ class MainWindow(QDialog):
         lot5.addWidget(self.vergogna_canvas, riga, 0, 4, 3)
         lot5.addWidget(self.delaycalcL, riga, 3)
         lot5.addWidget(self.delaycalcS, riga, 4)
-        lot5.addWidget(self.delaycalcA, riga, 5)
-        lot5.addWidget(self.delaycalcU, riga, 6)
+        lot5.addWidget(self.delaycalcCALC, riga, 5)
+        lot5.addWidget(self.delaycalcAPPLYUNDO, riga, 6)
         lot5.addWidget(self.salvatrigger, riga, 7)
         riga += 1
         lot5.addWidget(QHLine(), riga, 3, 1, 5)
@@ -1159,6 +1161,7 @@ class MainWindow(QDialog):
 
     def update(self):
         t0 = time.time()
+        self.somethingred = 0
         #calendario
         if self.autodeterminazionedeipupoli == 0:
             try:
@@ -1166,7 +1169,7 @@ class MainWindow(QDialog):
             except:
                 risposta_calendario = ''
             self.beamlineattiva.setText(risposta_calendario)
-            self.linea = risposta_calendario        
+            self.linea = risposta_calendario 
 ####8 log
         try:
             risposta_archiviatore = sacco['archiviatore'].context
@@ -1176,8 +1179,12 @@ class MainWindow(QDialog):
         self.contesto_r.setText(risposta_archiviatore)
         if risposta_archiviatore in self.linea:
             self.monitor_log.setStyleSheet("background-color: rgb(0, 255, 0)")
+            self.contienitab.setTabText(6, "Log")
         else:
             self.monitor_log.setStyleSheet("background-color: rgb(255, 0, 0)")
+            self.somethingred += 1
+            self.contienitab.setTabText(6, "!! Log !!")
+            
 ####1 stato SLU e interlock
         try:
             tmp = sacco['interlock'].read_attributes(['BSH', 'BSH_Abi', 'Cover', 'Door', 'Plc_status', 'Key'])
@@ -1237,43 +1244,51 @@ class MainWindow(QDialog):
             else:
                 self.monitor_abilitatoshutterlaser.setText('DISABLED')
                 self.monitor_abilitatoshutterlaser.setStyleSheet("background-color: rgb(255, 0, 0)")
+                self.somethingred += 1
             if self.linea == 'TIMEX' and tmp[1].value[1]:
                 self.monitor_abilitatoshutterbeamline.setText('ENABLED') #timex
                 self.monitor_abilitatoshutterbeamline.setStyleSheet("background-color: rgb(0, 255, 0)")
             elif self.linea == 'TIMEX' and tmp[1].value[1] != True:
                 self.monitor_abilitatoshutterbeamline.setText('DISABLED') #timex
                 self.monitor_abilitatoshutterbeamline.setStyleSheet("background-color: rgb(255, 0, 0)")
+                self.somethingred += 1
             elif self.linea == 'DIPROI' and tmp[1].value[2]:
                 self.monitor_abilitatoshutterbeamline.setText('ENABLED') #diproi
                 self.monitor_abilitatoshutterbeamline.setStyleSheet("background-color: rgb(0, 255, 0)")
             elif self.linea == 'DIPROI' and tmp[1].value[2] != True:
                 self.monitor_abilitatoshutterbeamline.setText('DISABLED') #diproi
                 self.monitor_abilitatoshutterbeamline.setStyleSheet("background-color: rgb(255, 0, 0)")
+                self.somethingred += 1
             elif self.linea == 'LDM' and tmp[1].value[3]:
                 self.monitor_abilitatoshutterbeamline.setText('ENABLED') #ldm
                 self.monitor_abilitatoshutterbeamline.setStyleSheet("background-color: rgb(0, 255, 0)")
             elif self.linea == 'LDM' and tmp[1].value[3] != True:
                 self.monitor_abilitatoshutterbeamline.setText('DISABLED') #ldm
                 self.monitor_abilitatoshutterbeamline.setStyleSheet("background-color: rgb(255, 0, 0)")
+                self.somethingred += 1
             elif self.linea == 'TIMER' and tmp[1].value[4]:
                 self.monitor_abilitatoshutterbeamline.setText('ENABLED') #timer
                 self.monitor_abilitatoshutterbeamline.setStyleSheet("background-color: rgb(0, 255, 0)")
             elif self.linea == 'TIMER' and tmp[1].value[4] != True:
                 self.monitor_abilitatoshutterbeamline.setText('DISABLED') #timer
                 self.monitor_abilitatoshutterbeamline.setStyleSheet("background-color: rgb(255, 0, 0)")
+                self.somethingred += 1
             elif self.linea == 'MAGNEDYN' and tmp[1].value[12]:
                 self.monitor_abilitatoshutterbeamline.setText('ENABLED') #magnedyn
                 self.monitor_abilitatoshutterbeamline.setStyleSheet("background-color: rgb(0, 255, 0)")
             elif self.linea == 'MAGNEDYN' and tmp[1].value[12] != True:
                 self.monitor_abilitatoshutterbeamline.setText('DISABLED') #magnedyn
                 self.monitor_abilitatoshutterbeamline.setStyleSheet("background-color: rgb(255, 0, 0)")
+                self.somethingred += 1
             else:
                 self.monitor_abilitatoshutterbeamline.setText('Unknown') #?
                 self.monitor_abilitatoshutterbeamline.setStyleSheet("background-color: rgb(255, 0, 0)")
+                self.somethingred += 1
         #monitor_porte, monitor_coperchi e plc
             if False in tmp[2].value[0:5]:
                 self.monitor_coperchi.setText('Cover open')
                 self.monitor_coperchi.setStyleSheet("background-color: rgb(255, 0, 0)")
+                self.somethingred += 1
             else:
                 self.monitor_coperchi.setText('All OK')
                 self.monitor_coperchi.setStyleSheet("background-color: rgb(0, 255, 0)")
@@ -1281,6 +1296,7 @@ class MainWindow(QDialog):
                 if tmp[3].value[8] == False or tmp[3].value[9] == False:
                     self.monitor_porte.setText('Doors open')
                     self.monitor_porte.setStyleSheet("background-color: rgb(255, 0, 0)")
+                    self.somethingred += 1
                 else:
                     self.monitor_porte.setText('All OK')
                     self.monitor_porte.setStyleSheet("background-color: rgb(0, 255, 0)")
@@ -1288,12 +1304,14 @@ class MainWindow(QDialog):
                 if tmp[3].value[13] == False:
                     self.monitor_porte.setText('Doors open')
                     self.monitor_porte.setStyleSheet("background-color: rgb(255, 0, 0)")
+                    self.somethingred += 1
                 else:
                     self.monitor_porte.setText('All OK')
                     self.monitor_porte.setStyleSheet("background-color: rgb(0, 255, 0)")
             if tmp[4].value == False:
                 self.monitor_piellecci.setText('PLC state')
                 self.monitor_piellecci.setStyleSheet("background-color: rgb(255, 0, 0)")
+                self.somethingred += 1
             else:
                 self.monitor_piellecci.setText('All OK')
                 self.monitor_piellecci.setStyleSheet("background-color: rgb(0, 255, 0)")
@@ -1312,9 +1330,9 @@ class MainWindow(QDialog):
             self.monitor_porte.setStyleSheet("background-color: rgb(150, 150, 150)")
             self.monitor_coperchi.setText('Unknown')
             self.monitor_coperchi.setStyleSheet("background-color: rgb(150, 150, 150)")
+            self.somethingred += 1
 ####2+7 SOURCE
         condizione_source = 0
-        testo_source = ''
         #revolution
         try:
             tmp = sacco['revolution'].read_attributes(['State', 'Current'])
@@ -1322,17 +1340,20 @@ class MainWindow(QDialog):
             risposta_correnteampli = tmp[1].value
             if str(tmp[1].quality) != 'ATTR_VALID':
                 self.source_amplicurrent.setStyleSheet("background-color: rgb(255, 0, 0)")
+                self.somethingred += 1
             else:
                 condizione_source += 1
                 self.source_amplicurrent.setStyleSheet("background-color: rgb(0, 255, 0)")
         except:
             risposta_statoampli = ''
             risposta_correnteampli = -1
+            self.somethingred += 1
 #        self.monitor_ampli.setText(risposta_statoampli + ', ' + str(round(risposta_correnteampli,1)) + ' A')
         self.source_amplistate.setText(risposta_statoampli)
         self.source_amplicurrent.setText(str(round(risposta_correnteampli, 1)) + ' A')
         if risposta_statoampli != 'RUNNING':
             self.source_amplistate.setStyleSheet("background-color: rgb(255, 0, 0)")
+            self.somethingred += 1
         else:
             condizione_source += 1
             self.source_amplistate.setStyleSheet("background-color: rgb(0, 255, 0)")
@@ -1341,11 +1362,12 @@ class MainWindow(QDialog):
             tmp = sacco['attenuator'].Position
         except:
             tmp = -1
+            self.somethingred += 1
         self.source_attenuator.setText(str(round(tmp, 2)) + ' deg')
         #temperature
         temperaturefuori = 0
         try:
-            tmp = sacco['SLtemperature'].read_attributes(['Pt100_CHLRREVO_01', 'Pt100_Elite_2', 'Pt100_Table2_SLR', 'Pt100_Table1_SLR', 'Pt100_SLU_BB1', 'Pt100_SLU_BB2', 'Pt100_SLU_UTDR'])
+            tmp = sacco['SLtemperature'].read_attributes(['Pt100_CHLRREVO_SLU', 'Pt100_Elite_SLU', 'Pt100_Table2_SLR', 'Pt100_Table1_SLR', 'Pt100_SLU_BB1', 'Pt100_SLU_BB2', 'Pt100_SLU_UTDR'])
             risposta_trevo = round(tmp[0].value, 1)
             risposta_telite = round(tmp[1].value, 1)
             risposta_tslrt2 = round(tmp[2].value, 1)
@@ -1402,12 +1424,17 @@ class MainWindow(QDialog):
             risposta_tuh2 = -1
             risposta_tslrt2 = -1
             risposta_tslrt1 = -1
+            self.somethingred += 1
         try:
-            tmp = sacco['SLUtemperature'].read_attributes(['Temp_Pt100_TotemAIR', 'Temp_Pt100_TotemDOWN', 'Temp_Pt100_TotemUP', 'Temp_Pt100_BL'])
+            tmp = sacco['SLUtemperature'].read_attributes(['Temp_Pt100_TotemAIR', 'Temp_Pt100_TotemDOWN', 'Temp_Pt100_TotemUP', 'Temp_Pt100_LDM', 'Temp_Pt100_DIPROI', 'Temp_Pt100_TIMEX', 'Temp_Pt100_TIMER', 'Temp_Pt100_MAGNEDYN'])
             risposta_tta = round(tmp[0].value, 1)
             risposta_ttu = round(tmp[1].value, 1)
             risposta_ttd = round(tmp[2].value, 1)
             risposta_tldm = round(tmp[3].value, 1)
+            risposta_tdpi = round(tmp[4].value, 1)
+            risposta_ttmx = round(tmp[5].value, 1)
+            risposta_ttmr = round(tmp[6].value, 1)
+            risposta_tmag = round(tmp[7].value, 1)
             if str(tmp[0].quality) != 'ATTR_VALID':
                 self.tem_totemair_r.setStyleSheet("background-color: rgb(255, 0, 0)")
                 temperaturefuori += 1
@@ -1428,11 +1455,37 @@ class MainWindow(QDialog):
                 temperaturefuori += 1
             else:
                 self.tem_ldm_r.setStyleSheet("background-color: rgb(0, 255, 0)")
+            if str(tmp[4].quality) != 'ATTR_VALID':
+                self.tem_dpi_r.setStyleSheet("background-color: rgb(255, 0, 0)")
+                temperaturefuori += 1
+            else:
+                self.tem_dpi_r.setStyleSheet("background-color: rgb(0, 255, 0)")
+            if str(tmp[5].quality) != 'ATTR_VALID':
+                self.tem_tmx_r.setStyleSheet("background-color: rgb(255, 0, 0)")
+                temperaturefuori += 1
+            else:
+                self.tem_tmx_r.setStyleSheet("background-color: rgb(0, 255, 0)")
+            if str(tmp[6].quality) != 'ATTR_VALID':
+                self.tem_tmr_r.setStyleSheet("background-color: rgb(255, 0, 0)")
+                temperaturefuori += 1
+            else:
+                self.tem_tmr_r.setStyleSheet("background-color: rgb(0, 255, 0)")
+            if str(tmp[7].quality) != 'ATTR_VALID':
+                self.tem_mag_r.setStyleSheet("background-color: rgb(255, 0, 0)")
+                temperaturefuori += 1
+            else:
+                self.tem_mag_r.setStyleSheet("background-color: rgb(0, 255, 0)")
         except:
             risposta_tta = -1
             risposta_ttu = -1
             risposta_ttd = -1
             risposta_tldm = -1
+            risposta_ttmr = -1
+            risposta_ttmx = -1
+            risposta_tdpi = -1
+            risposta_tmag = -1
+            temperaturefuori += 1
+            self.somethingred += 1
         self.source_amplipumptemperature.setText(str(risposta_trevo) + ' C')
         self.source_amplitemperature.setText(str(risposta_telite) + ' C')
         self.tem_revo_r.setText(str(risposta_trevo) + ' C. attribute sl/cooling/dmm_sl.01/Pt100_CHLRREVO_01')
@@ -1445,18 +1498,20 @@ class MainWindow(QDialog):
         self.tem_totemup_r.setText(str(risposta_ttu) + ' C. attribute slu/cooling/dmm_slu.01/Temp_Pt100_TotemUP')
         self.tem_totemdown_r.setText(str(risposta_ttd) + ' C. attribute slu/cooling/dmm_slu.01/Temp_Pt100_TotemDOWN')
         self.tem_totemair_r.setText(str(risposta_tta) + ' C. attribute slu/cooling/dmm_slu.01/Temp_Pt100_TotemAIR')
-#        self.tem_tmr_r.setText(str() + ' C. attribute slu/cooling/dmm_slu.01/')
-#        self.tem_tmx_r.setText(str() + ' C. attribute slu/cooling/dmm_slu.01/')
-#        self.tem_dpi_r.setText(str() + ' C. attribute slu/cooling/dmm_slu.01/')
-        self.tem_ldm_r.setText(str(risposta_tldm) + ' C. attribute slu/cooling/dmm_slu.01/Temp_Pt100_BL')
-#        self.tem_mag_r.setText(str() + ' C. attribute slu/cooling/dmm_slu.01/')
+        self.tem_tmr_r.setText(str(risposta_ttmr) + ' C. attribute slu/cooling/dmm_slu.01/Temp_Pt100_TIMER')
+        self.tem_tmx_r.setText(str(risposta_ttmx) + ' C. attribute slu/cooling/dmm_slu.01/Temp_Pt100_TIMEX')
+        self.tem_dpi_r.setText(str(risposta_tdpi) + ' C. attribute slu/cooling/dmm_slu.01/Temp_Pt100_DIPROI')
+        self.tem_ldm_r.setText(str(risposta_tldm) + ' C. attribute slu/cooling/dmm_slu.01/Temp_Pt100_LDM')
+        self.tem_mag_r.setText(str(risposta_tmag) + ' C. attribute slu/cooling/dmm_slu.01/Temp_Pt100_MAGNEDYN')
         if temperaturefuori > 0:
             self.monitor_tempera.setStyleSheet("background-color: rgb(255, 0, 0)")
             self.monitor_tempera.setText('check tab Temperature')
             self.contienitab.setTabText(5, "!! Temperature !!")
+            self.somethingred += 1
         else:
             self.monitor_tempera.setStyleSheet("background-color: rgb(0, 255, 0)")
             self.monitor_tempera.setText('all OK')
+            self.contienitab.setTabText(5, "Temperature")
         #source feedback
         risultatofeedback = ''
         try:
@@ -1465,6 +1520,7 @@ class MainWindow(QDialog):
             if statofbin != 'ON':
                 self.source_ampliFBin.setStyleSheet("background-color: rgb(255, 0, 0)")
                 risultatofeedback = 'NOK'
+                self.somethingred += 1
             else:
                 self.source_ampliFBin.setStyleSheet("background-color: rgb(0, 255, 0)")
                 condizione_source += 1
@@ -1473,12 +1529,14 @@ class MainWindow(QDialog):
             self.source_ampliFBin.setText('unknown')
             self.source_ampliFBin.setStyleSheet("background-color: rgb(255, 0, 0)")
             risultatofeedback = 'NOK'
+            self.somethingred += 1
         try:
             statofbtime = str(sacco['slelitefbtime'].State())
             self.source_ampliFBtime.setText(statofbtime)
             if statofbtime != 'ON':
                 self.source_ampliFBtime.setStyleSheet("background-color: rgb(255, 0, 0)")
                 risultatofeedback = 'NOK'
+                self.somethingred += 1
             else:
                 self.source_ampliFBtime.setStyleSheet("background-color: rgb(0, 255, 0)")
                 condizione_source += 1
@@ -1487,32 +1545,40 @@ class MainWindow(QDialog):
             self.source_ampliFBtime.setText('unknown')
             self.source_ampliFBtime.setStyleSheet("background-color: rgb(255, 0, 0)")
             risultatofeedback = 'NOK'
+            self.somethingred += 1
         #energy
         try:
             tmp = sacco['ems8'].read_attribute('Corrected_energy')
             risposta_ems8 = tmp.value
             if str(tmp.quality) != 'ATTR_VALID':
                 self.source_launchenergy.setStyleSheet("background-color: rgb(255, 0, 0)")
+                self.somethingred += 1
             else:
                 self.source_launchenergy.setStyleSheet("background-color: rgb(0, 255, 0)")
         except:
             risposta_ems8 = -1
+            self.somethingred += 1
         self.source_launchenergy.setText(str(round(risposta_ems8, 3)) + ' mJ')
         try:
             tmp = sacco['ems3'].read_attribute('Corrected_energy')
             risposta_ems3 = tmp.value
             if str(tmp.quality) != 'ATTR_VALID':
                 self.source_amplienergy.setStyleSheet("background-color: rgb(255, 0, 0)")
+                self.somethingred += 1
             else:
                 self.source_amplienergy.setStyleSheet("background-color: rgb(0, 255, 0)")
                 condizione_source += 1
         except:
             risposta_ems3 = -1
+            self.somethingred += 1
         self.source_amplienergy.setText(str(round(risposta_ems3, 3)) + ' mJ')
         if condizione_source < 7:
             self.monitor_ampli.setStyleSheet("background-color: rgb(255, 0, 0)")
+            self.somethingred += 1
+            self.contienitab.setTabText(1, "!! Source !!")
         else:
             self.monitor_ampli.setStyleSheet("background-color: rgb(0, 255, 0)")
+            self.contienitab.setTabText(1, "Source")
         self.monitor_ampli.setText(risposta_statoampli + ', ' + str(round(risposta_correnteampli,1)) + ' A, fb ' + risultatofeedback + '. Launch energy ' + str(round(risposta_ems8, 2)) + ' mJ')
 ####3 transport feedback
         altrifeedback = []
@@ -1568,20 +1634,25 @@ class MainWindow(QDialog):
         self.monitor_pointing.setText('Feedback ' + READ_statofeedback + ', sensors(ccd) ' + str(READ_pesofeedback) + '/5')
         if READ_pesofeedback < 4:
             self.monitor_pointing.setStyleSheet("background-color: rgb(255, 0, 0)")
+            self.somethingred += 1
+            self.contienitab.setTabText(2, "!! Pointing FB !!")
         elif READ_pesofeedback < 5:
             self.monitor_pointing.setStyleSheet("background-color: rgb(255, 255, 0)")
+            self.contienitab.setTabText(2, "Pointing FB")
         elif READ_pesofeedback == 5:
             self.monitor_pointing.setStyleSheet("background-color: rgb(0, 255, 0)")
+            self.contienitab.setTabText(2, "Pointing FB")
         if READ_statofeedback == 'ON':
             self.feedbackstato.setStyleSheet("background-color: rgb(0, 255, 0)")
         elif READ_statofeedback == 'STANDBY' or READ_statofeedback == 'WARNING':
             self.feedbackstato.setStyleSheet("background-color: rgb(255, 255, 0)")
-            self.monitor_pointing.setStyleSheet("background-color: rgb(0, 255, 0)")
+            self.monitor_pointing.setStyleSheet("background-color: rgb(255, 255, 0)")
         elif READ_statofeedback == 'OFF' or READ_statofeedback == 'ALARM':
             self.feedbackstato.setStyleSheet("background-color: rgb(255, 0, 0)")
-            self.monitor_pointing.setStyleSheet("background-color: rgb(0, 255, 0)")
+            self.monitor_pointing.setStyleSheet("background-color: rgb(255, 0, 0)")
         else:
             self.feedbackstato.setStyleSheet("background-color: rgb(150, 150, 150)")
+            self.monitor_pointing.setStyleSheet("background-color: rgb(150, 150, 150)")
         if 'ON' in altrifeedback:
             self.feedbackstopothers.setDisabled(0)
             self.feedbackstopothers.setStyleSheet("background-color: #ff0000")
@@ -1868,6 +1939,42 @@ class MainWindow(QDialog):
             self.scope6M4R2.setText('std ' + str(round(-1, 1)))
             self.scope6M5R2.setText('std ' + str(round(-1, 1)))
             self.scope6M6R2.setText('std ' + str(round(-1, 1)))
+        if self.linea == 'TIMER':
+            self.memo_tmr_W.setEnabled(1)
+            self.memo_tmx_W.setDisabled(1)
+            self.memo_dpi_W.setDisabled(1)
+            self.memo_ldm_W.setDisabled(1)
+            self.memo_mag_W.setDisabled(1)
+        elif self.linea == 'TIMEX':
+            self.memo_tmr_W.setDisabled(1)
+            self.memo_tmx_W.setEnabled(1)
+            self.memo_dpi_W.setDisabled(1)
+            self.memo_ldm_W.setDisabled(1)
+            self.memo_mag_W.setDisabled(1)
+        elif self.linea == 'DIPROI':
+            self.memo_tmr_W.setDisabled(1)
+            self.memo_tmx_W.setDisabled(1)
+            self.memo_dpi_W.setEnabled(1)
+            self.memo_ldm_W.setDisabled(1)
+            self.memo_mag_W.setDisabled(1)
+        elif self.linea == 'LDM':
+            self.memo_tmr_W.setDisabled(1)
+            self.memo_tmx_W.setDisabled(1)
+            self.memo_dpi_W.setDisabled(1)
+            self.memo_ldm_W.setEnabled(1)
+            self.memo_mag_W.setDisabled(1)
+        elif self.linea == 'MAGNEDYN':
+            self.memo_tmr_W.setDisabled(1)
+            self.memo_tmx_W.setDisabled(1)
+            self.memo_dpi_W.setDisabled(1)
+            self.memo_ldm_W.setDisabled(1)
+            self.memo_mag_W.setEnabled(1)
+        else:
+            self.memo_tmr_W.setEnabled(1)
+            self.memo_tmx_W.setEnabled(1)
+            self.memo_dpi_W.setEnabled(1)
+            self.memo_ldm_W.setEnabled(1)
+            self.memo_mag_W.setEnabled(1)
         try:
             tmp = sacco['totem_delay'].read_attributes(['State', 'Position'])
             delaytotemps = str(round(tmp[1].value, 3)) + ' ps'
@@ -2120,7 +2227,10 @@ class MainWindow(QDialog):
             pressione__UTDR = str(tmp.value)
             self.sensoreUTDR_read.setText(pressione__UTDR + ' mbar')
             if str(tmp.quality) != 'ATTR_VALID':
+                self.sensoreUTDR_read.setStyleSheet("background-color: rgb(255, 0, 0)")
                 rosso_pressione += 1
+            else:
+                self.sensoreUTDR_read.setStyleSheet("background-color: rgb(0, 255, 0)")
         except:
             pressione__UTDR = '-1'
             self.sensoreUTDR_read.setText(pressione__UTDR + ' mbar')
@@ -2143,6 +2253,9 @@ class MainWindow(QDialog):
             self.sensoreUH3_read.setText(pressione__UH3 + ' mbar')
             if str(tmp.quality) != 'ATTR_VALID':
                 rosso_pressione += 1
+                self.sensoreUH3_read.setStyleSheet("background-color: rgb(255, 0, 0)")
+            else:
+                self.sensoreUH3_read.setStyleSheet("background-color: rgb(0, 255, 0)")
         except:
             pressione__UH3 = '-1'
             self.sensoreUH3_read.setText(pressione__UH3 + ' mbar')
@@ -2165,6 +2278,9 @@ class MainWindow(QDialog):
             self.sensoreEHF1_read.setText(pressione__EHF1 + ' mbar')
             if str(tmp.quality) != 'ATTR_VALID':
                 rosso_pressione += 1
+                self.sensoreEHF1_read.setStyleSheet("background-color: rgb(255, 0, 0)")
+            else:
+                self.sensoreEHF1_read.setStyleSheet("background-color: rgb(0, 255, 0)")
         except:
             pressione__EHF1 = '-1'
             self.sensoreEHF1_read.setText(pressione__EHF1 + ' mbar')
@@ -2181,6 +2297,9 @@ class MainWindow(QDialog):
             self.sensoreEHF3_read.setText(pressione__EHF3 + ' mbar')
             if str(tmp.quality) != 'ATTR_VALID':
                 rosso_pressione += 1
+                self.sensoreEHF3_read.setStyleSheet("background-color: rgb(255, 0, 0)")
+            else:
+                self.sensoreEHF3_read.setStyleSheet("background-color: rgb(0, 255, 0)")
         except:
             pressione__EHF3 = '-1'
             self.sensoreEHF3_read.setText(pressione__EHF3 + ' mbar')
@@ -2205,8 +2324,11 @@ class MainWindow(QDialog):
         self.monitor_vacuum.setText('UH: ' + str(pressione__UH3) + ', EHF1: ' + str(pressione__EHF1) + ', EHF2: ' + str(pressione__EHF3) + ', ' + pmpvlv)
         if rosso_pressione > 0:
             self.monitor_vacuum.setStyleSheet("background-color: rgb(255, 0, 0)")
+            self.somethingred += 1
+            self.contienitab.setTabText(4, "!! Vacuum !!")
         else:
             self.monitor_vacuum.setStyleSheet("background-color: rgb(0, 255, 0)")
+            self.contienitab.setTabText(4, "Vacuum")
 ####12 ldm
         if self.contienitab.currentIndex() == 8:
             try:
@@ -2246,6 +2368,12 @@ class MainWindow(QDialog):
                 self.LDM_feedback2_state.setText(str(sacco['ldm_fb2'].State()))
             except:
                 self.LDM_feedback2_state.setText('#####')
+        if self.somethingred != 0:
+            self.globallarm.setText('Alarm ON')
+            self.globallarm.setStyleSheet("background-color: rgb(255, 0, 0)")
+        else:
+            self.globallarm.setText('All OK')
+            self.globallarm.setStyleSheet("background-color: rgb(0, 255, 0)")
 #        print(str(time.time()-t0))
         
 
@@ -2426,7 +2554,6 @@ class MainWindow(QDialog):
                 print('error fb ldm')
 
     def neresterasoltantounoSEQ(self):
-        print('ffffffffffffffffffff')
         if self.linea == 'TIMER':
             try:
                 sacco['tmxfbsequencer'].command_inout('Init')
@@ -2968,9 +3095,6 @@ class MainWindow(QDialog):
                     sacco['triggerSL'].write_attribute(attribrutto, valore)
         csvfile.close()
 
-    def apridelaycalc(self):
-        os.system("/runtime/bin/slu-delay-calculator-gui &")
-
     def apridalaytotem(self):
         os.system('/runtime/bin/motion_controller slu/motor/trls_slu.05 -title SLU_TOTEM_DELAY_LINE &')
 
@@ -3036,7 +3160,7 @@ class MainWindow(QDialog):
         gol = sacco['triggerDGQ1'].Chan2Delay + tmp
         sacco['triggerDGQ1'].write_attribute('Chan2Delay', gol)
 
-    def muovidelayslu(self):
+    def calcoladelayslu(self):
         delta_t = float(self.delaycalcS.text())
         sacco['trls8_delay'].write_attribute('Speed', 100)
         #salvo i valori attuali
@@ -3070,14 +3194,27 @@ class MainWindow(QDialog):
         print('trls8 form ' + str(self.memoDtrls8) + ' to ' + str(self.trls8calc))
         print('evr ch2 from ' + str(self.memoDevrch2) + ' to ' + str(self.trg_elite2calc))
         print('sdg from ' + str(self.memoDdgqch2) + ' to ' + str(self.trg_S2calc))
-        sacco['triggerSL'].write_attribute('Chan2Delay', self.trg_elite2calc)
-        sacco['triggerDGQ1'].write_attribute('Chan2Delay', self.trg_S2calc)
-        sacco['trls8_delay'].write_attribute('Position', self.trls8calc)
-
-    def ripristinamemoD(self):
-        sacco['triggerSL'].write_attribute('Chan2Delay', self.memoDevrch2)
-        sacco['triggerDGQ1'].write_attribute('Chan2Delay', self.memoDdgqch2)
-        sacco['trls8_delay'].write_attribute('Position', self.memoDtrls8)
+        self.delaytotemW.setText(str(round(sacco['totem_delay'].Position, 3)))
+        self.delay8W.setText(str(round(self.trls8calc, 3)))
+        self.triggermainW.setText(str(round(self.trg_elite2calc, 3)))
+        self.triggerDGQ1W.setText(str(round(self.trg_S2calc, 3)))
+        self.delaycalcAPPLYUNDO.setText('Apply')
+#        sacco['triggerSL'].write_attribute('Chan2Delay', self.trg_elite2calc)
+#        sacco['triggerDGQ1'].write_attribute('Chan2Delay', self.trg_S2calc)
+#        sacco['trls8_delay'].write_attribute('Position', self.trls8calc)
+
+    def muovidelayslu(self):
+        if self.delaycalcAPPLYUNDO.text() == 'UNDO':
+            sacco['triggerSL'].write_attribute('Chan2Delay', self.memoDevrch2)
+            sacco['triggerDGQ1'].write_attribute('Chan2Delay', self.memoDdgqch2)
+            sacco['trls8_delay'].write_attribute('Position', self.memoDtrls8)
+        elif self.delaycalcAPPLYUNDO.text() == 'Apply':
+            sacco['triggerSL'].write_attribute('Chan2Delay', self.trg_elite2calc)
+            sacco['triggerDGQ1'].write_attribute('Chan2Delay', self.trg_S2calc)
+            sacco['trls8_delay'].write_attribute('Position', self.trls8calc)
+            self.delaycalcAPPLYUNDO.setText('UNDO')
+        else:
+            print('no')
         
     def scope6CW(self):
         sacco['scope6'].command_inout('ClearSweeps')
-- 
GitLab