diff --git a/src/SluSourceMonitor.py b/src/SluSourceMonitor.py
index 164396880c3f3a6ebb7dd8342e436a8a23f6f8f7..b946c9c33ae514d201ec6b3bbb4b1c9f4731a0c0 100644
--- a/src/SluSourceMonitor.py
+++ b/src/SluSourceMonitor.py
@@ -1,21 +1,34 @@
 #!/usr/bin/python3
 
 # carico moduli
-from __future__ import division
 import numpy as np
 import PyTango
-from PyQt4.QtCore import *
-from PyQt4.QtGui import *
 import os
-import sys
+import csv
 import time
+from PyQt5.QtWidgets import QGroupBox, QApplication, QWidget, QHBoxLayout, QGridLayout, QPushButton, QLineEdit, QProgressBar, QLabel, QTabWidget, QFrame, QComboBox, QDialog, QCheckBox
+from PyQt5.QtCore import QBasicTimer
+from matplotlib.backends.backend_qt4agg import FigureCanvasQTAgg as FigureCanvas
+import matplotlib.pyplot as plt
 
 # variabili globali
-listacoperchi = ['CVR1_LSU_UH_CLD', 'CVR_MBX1_MBX2_EOS2_CLD', 'CVR2_LSU_UH_CLD', 'CVR_M21_M22_M23_EOS2_CLD', 'CVR_LSU_EH_1_CLD', 'CVR_LSU_EH_2_CLD', 'BRD_CVR_CLD', 'BRD_SCREEN_CLD']
-listaporte = ['DR_LSU_EH_01_CLD', 'DR_LSU_EH_02_CLD', 'DR_LSU_EH_03_CLD', 'DR_LSU_EH_04_CLD', 'DR_LSU_EH_05_CLD', 'DR_LSU_EH_06_CLD', 'DR_LSU_EH_07_CLD', 'DR_LSU_EH_08_CLD']
+listamonitor_coperchi = ['CVR1_LSU_UH_CLD', 'CVR_MBX1_MBX2_EOS2_CLD', 'CVR2_LSU_UH_CLD', 'CVR_M21_M22_M23_EOS2_CLD', 'CVR_LSU_EH_1_CLD', 'CVR_LSU_EH_2_CLD', 'BRD_CVR_CLD', 'BRD_SCREEN_CLD']
+listamonitor_porte = ['DR_LSU_EH_01_CLD', 'DR_LSU_EH_02_CLD', 'DR_LSU_EH_03_CLD', 'DR_LSU_EH_04_CLD', 'DR_LSU_EH_05_CLD', 'DR_LSU_EH_06_CLD', 'DR_LSU_EH_07_CLD', 'DR_LSU_EH_08_CLD']
 sacco = {}
 try:
     sacco['calendario'] = PyTango.DeviceProxy('srv-tango-srf-01:20000/slu/laser/calendar_slu.01')
+    sacco['archiviatore'] = PyTango.DeviceProxy('srv-tango-srf-01:20000/archiving/hdb++archiver/slu')
+    sacco['costanti'] = PyTango.DeviceProxy('srv-tango-srf-01:20000/slu/misc/ranges')
+    sacco['interlock'] = PyTango.DeviceProxy('srv-tango-srf-01:20000/slu/interlock/laser_pss')
+    
+    sacco['revolution'] = PyTango.DeviceProxy('srv-tango-srf-01:20000/sl/laser/evops_sl.03')
+    sacco['SLtemperature'] = PyTango.DeviceProxy('srv-tango-srf-01:20000/sl/cooling/dmm_sl.01')
+    sacco['ems3'] = PyTango.DeviceProxy('srv-tango-srf-01:20000/sl/energy_meter/ems_sl.03')
+    sacco['ems8'] = PyTango.DeviceProxy('srv-tango-srf-01:20000/sl/energy_meter/ems_sl.08')
+    sacco['slelitefbin'] = PyTango.DeviceProxy('srv-tango-srf-01:20000/sl/feedback/rtltf_osc.01')
+    sacco['slelitefbtime'] = PyTango.DeviceProxy('srv-tango-srf-01:20000/sl/feedback/fbdelay_sl.02')
+    sacco['attenuator'] = PyTango.DeviceProxy('srv-tango-srf-01:20000/sl/motor/rots_sl.09')
+    
     sacco['piezo0'] = PyTango.DeviceProxy('srv-tango-srf-01:20000/slu/piezo/tiptilt_slu.04')
     sacco['piezo1'] = PyTango.DeviceProxy('srv-tango-srf-01:20000/slu/piezo/tiptilt_slu.01')
     sacco['piezo2'] = PyTango.DeviceProxy('srv-tango-srf-01:20000/slu/piezo/tiptilt_slu.02')
@@ -25,31 +38,56 @@ try:
     sacco['ccd1'] = PyTango.DeviceProxy('srv-tango-srf-01:20000/slu/diagnostics/ccd_slu.03')
     sacco['ccd2'] = PyTango.DeviceProxy('srv-tango-srf-01:20000/slu/diagnostics/ccd_slu.04')
     sacco['ccd3'] = PyTango.DeviceProxy('srv-tango-srf-01:20000/slu/diagnostics/ccd_slu.08')
+    sacco['ccd4'] = PyTango.DeviceProxy('srv-tango-srf-01:20000/slu/diagnostics/ccd_slu.08')
     sacco['vuoto1'] = PyTango.DeviceProxy('srv-tango-srf-01:20000/slu/vacuum/vgpi_slu_utdr.01')
     sacco['vuoto2'] = PyTango.DeviceProxy('srv-tango-srf-01:20000/slu/vacuum/vgpi_slu_uh.03')
     sacco['vuoto3'] = PyTango.DeviceProxy('srv-tango-srf-01:20000/slu/vacuum/vgpi_slu_ehf.01')
     sacco['vuoto4'] = PyTango.DeviceProxy('srv-tango-srf-01:20000/slu/vacuum/vgpi_slu_ehf.03')
-    sacco['interlock'] = PyTango.DeviceProxy('srv-tango-srf-01:20000/slu/interlock/laser_pss')
-    sacco['pumptemperature'] = PyTango.DeviceProxy('srv-tango-srf-01:20000/sl/cooling/dmm_sl.01')
-    sacco['trigger'] = PyTango.DeviceProxy('srv-tango-srf-01:20000/ec-sl-slpsr-01/evr/ff100000')
+
+    sacco['decima1'] = PyTango.DeviceProxy('srv-tango-srf-01:20000/f/timing/rttrigger_sl.01')
+    sacco['decima2'] = PyTango.DeviceProxy('srv-tango-srf-01:20000/f/timing/rttrigger_sl.02')
+    sacco['decima3'] = PyTango.DeviceProxy('srv-tango-srf-01:20000/f/timing/rttrigger_sl.03')
+    sacco['decimacheck'] = PyTango.DeviceProxy('srv-tango-srf-01:20000/ec-sl-slpsr-01/rtevr/ff100000')
+    sacco['frequenza'] = PyTango.DeviceProxy('srv-tango-srf-01:20000/f/timing/bunchnumber_f')
+    
+    sacco['scope6'] = PyTango.DeviceProxy('srv-tango-srf-01:20000/sl/diagnostics/scope_sl.01')
+    sacco['trls8_delay'] = PyTango.DeviceProxy('srv-tango-srf-01:20000/sl/motor/trls_sl.08')
     sacco['totem_delay'] = PyTango.DeviceProxy('srv-tango-srf-01:20000/slu/motor/trls_slu.05')
-    sacco['costanti'] = PyTango.DeviceProxy('srv-tango-srf-01:20000/slu/misc/ranges')
-    sacco['emslr'] = PyTango.DeviceProxy('srv-tango-srf-01:20000/sl/energy_meter/ems_sl.03')
-    sacco['pump'] = PyTango.DeviceProxy('srv-tango-srf-01:20000/sl/laser/evops_sl.03')
-    sacco['slelitefbin'] = PyTango.DeviceProxy('srv-tango-srf-01:20000/sl/feedback/rtltf_osc.01')
-    sacco['slelitefbtime'] = PyTango.DeviceProxy('srv-tango-srf-01:20000/sl/feedback/fbdelay_sl.02')
-    sorgente = 2
-    sensoretemperatura = 'Pt100_CHLRREVO_01'
-    triggerdelays = 'Chan2Delay'
+    sacco['triggerSL'] = PyTango.DeviceProxy('srv-tango-srf-01:20000/ec-sl-slpsr-01/evr/ff100000')
+    sacco['triggerSL2'] = PyTango.DeviceProxy('srv-tango-srf-01:20000/ec-sl-slpsr-01/evr/ff200000')
+    sacco['triggerSLU'] = PyTango.DeviceProxy('srv-tango-srf-01:20000/ec-slu-ehf-01/evr/ff100000')
+    sacco['triggerDGQ1'] = PyTango.DeviceProxy('srv-tango-srf-01:20000/sl/delay/dgq_slpsr.01')
+    sacco['triggerDGQ2'] = PyTango.DeviceProxy('srv-tango-srf-01:20000/sl/delay/dgq_slpsr.02')
+    sacco['triggerSDG1'] = PyTango.DeviceProxy('srv-tango-srf-01:20000/sl/delay/sdg_slr.01')
+    sacco['triggerSDG2'] = PyTango.DeviceProxy('srv-tango-srf-01:20000/sl/delay/sdg_slr.02')
+
+    sacco['pompe'] = PyTango.DeviceProxy('srv-tango-srf-01:20000/slu/vacuum/pumps')
+    sacco['valvolaUH1'] = PyTango.DeviceProxy('srv-tango-srf-01:20000/uh/vacuum/vlvp_uh.01')
+    sacco['valvolaUH2'] = PyTango.DeviceProxy('srv-tango-srf-01:20000/uh/vacuum/vlvp_uh.02')
+    sacco['valvolaUH3'] = PyTango.DeviceProxy('srv-tango-srf-01:20000/uh/vacuum/vlvp_uh.03')
+    sacco['valvolaSH1'] = PyTango.DeviceProxy('srv-tango-srf-01:20000/sh/vacuum/vlvp_sh.01')
+    sacco['valvolaEHF1'] = PyTango.DeviceProxy('srv-tango-srf-01:20000/ehf/vacuum/vlvp_ehf.01')
+    sacco['valvolaEHF2'] = PyTango.DeviceProxy('srv-tango-srf-01:20000/ehf/vacuum/vlvp_ehf.02')
+    sacco['sensoreUH1'] = PyTango.DeviceProxy('srv-tango-srf-01:20000/slu/vacuum/vgpi_slu_uh.01')
+    sacco['sensoreUH2'] = PyTango.DeviceProxy('srv-tango-srf-01:20000/slu/vacuum/vgpi_slu_uh.02')
+    sacco['sensoreUH3'] = PyTango.DeviceProxy('srv-tango-srf-01:20000/slu/vacuum/vgpi_slu_uh.03')
+    sacco['sensoreUH4'] = PyTango.DeviceProxy('srv-tango-srf-01:20000/slu/vacuum/vgpi_slu_uh.04')
+    sacco['sensoreSH1'] = PyTango.DeviceProxy('srv-tango-srf-01:20000/slu/vacuum/vgpi_slu_sh.01')
+    sacco['sensoreUTDR'] = PyTango.DeviceProxy('srv-tango-srf-01:20000/slu/vacuum/vgpi_slu_utdr.01')
+    sacco['sensoreEHF1'] = PyTango.DeviceProxy('srv-tango-srf-01:20000/slu/vacuum/vgpi_slu_ehf.01')
+    sacco['sensoreEHF2'] = PyTango.DeviceProxy('srv-tango-srf-01:20000/slu/vacuum/vgpi_slu_ehf.02')
+    sacco['sensoreEHF3'] = PyTango.DeviceProxy('srv-tango-srf-01:20000/slu/vacuum/vgpi_slu_ehf.03')
+    sacco['sensoreEHF4'] = PyTango.DeviceProxy('srv-tango-srf-01:20000/slu/vacuum/vgpi_slu_ehf.04')
+
+    sacco['SLUtemperature'] = PyTango.DeviceProxy('srv-tango-srf-01:20000/slu/cooling/dmm_slu.01')
+    
+
+
 except PyTango.DevFailed:
     print('error defining sacco DeviceProxys')
 
-try:
-    selettore = sacco['calendario'].activityNum
-except PyTango.DevFailed:
-    selettore = -1
 
-#parte bl
+##parte bl
 try:
     sacco['totfeedback'] = PyTango.DeviceProxy('srv-tango-srf-01:20000/slu/feedback/mimofb_totem_slu.01')
     sacco['tmrfeedback'] = PyTango.DeviceProxy('srv-tango-srf-01:20000/slu/feedback/mimofb_tmr_slu.01')
@@ -67,39 +105,31 @@ try:
     sacco['magfeedback'] = PyTango.DeviceProxy('srv-tango-srf-01:20000/slu/feedback/mimofb_mag_slu.01')
     sacco['magfbsequencer'] = PyTango.DeviceProxy('srv-tango-srf-01:20000/seq/recover/fb_weights_mag_slu.01')
     sacco['magccd4'] = PyTango.DeviceProxy('srv-tango-srf-01:20000/slu/diagnostics/ccd_slu.10')
+
+    sacco['ldm_kom1'] = PyTango.DeviceProxy('srv-tango-ldm-01:20000/ldm/motor/kom_slu_ldm.01')
+    sacco['ldm_kom2'] = PyTango.DeviceProxy('srv-tango-ldm-01:20000/ldm/motor/kom_slu_ldm.02')
+    sacco['ldm_rots1'] = PyTango.DeviceProxy('srv-tango-ldm-01:20000/ldm/motor/rots_slu_ldm.01')
+    sacco['ldm_rots2'] = PyTango.DeviceProxy('srv-tango-ldm-01:20000/ldm/motor/rots_slu_ldm.02')
+    sacco['ldm_rots3'] = PyTango.DeviceProxy('srv-tango-ldm-01:20000/ldm/motor/rots_slu_ldm.03')
+    sacco['ldm_trls2'] = PyTango.DeviceProxy('srv-tango-ldm-01:20000/ldm/motor/trls_slu_ldm.02')
+    sacco['ldm_gentec1'] = PyTango.DeviceProxy('srv-tango-ldm-01:20000/ldm/energy_meter/ems_slu_ldm.01')
+    sacco['ldm_gentec2'] = PyTango.DeviceProxy('srv-tango-ldm-01:20000/ldm/energy_meter/ems_slu_ldm.02')
+    sacco['ldm_fb1'] = PyTango.DeviceProxy('srv-tango-ldm-01:20000/ldm/feedback/rtltf_ldm.01')
+    sacco['ldm_fb2'] = PyTango.DeviceProxy('srv-tango-ldm-01:20000/ldm/feedback/rtltf_ldm.02')
+
 except PyTango.DevFailed:
     print('error defining sacco DeviceProxys')
 
-if selettore < 2: #unknown, shutdown
-    linea = None
-elif selettore == 2: #TOTEM
-    linea = 'TOTEM'
-elif selettore == 3: #TIMER
-    linea = 'TIMER'
-elif selettore == 4: #TIMEX
-    linea = 'TIMEX'
-elif selettore == 5: #DIPRI
-    linea = 'DIPROI'
-elif selettore == 6: #LDM
-    linea = 'LDM'
-elif selettore == 7: #MAGNEDYN
-    linea = 'MAGNEDYN'
-
 
 class MainWindow(QDialog):
     def __init__(self, parent=None):
         super(MainWindow, self).__init__(parent)
-        self.sorgente = sorgente
-        self.linea = linea
-    ### beamline
-        self.gruppobeamline = QGroupBox()
-        self.STATOSLU = QLineEdit("")
-        self.STATOSLU.setReadOnly(1)
-        self.STATOSLU.setToolTip('Experimental hall LASER State')
-        self.beamlineattiva = QLineEdit("")
-        self.beamlineattiva.setReadOnly(1)
-        self.beamlineattiva.setStyleSheet("background-color: rgb(200, 200, 200)")
-        self.menubeamline  = QComboBox()
+        self.autodeterminazionedeipupoli = 0
+        # top
+        self.gruppobeamline = QFrame()
+        self.STATOSLU = LineEditRO()
+        self.beamlineattiva = LineEditRO()
+        self.menubeamline = QComboBox()
         self.menubeamline.addItem("None")
         self.menubeamline.addItem("TIMER")
         self.menubeamline.addItem("TIMEX")
@@ -113,125 +143,170 @@ class MainWindow(QDialog):
         self.paginawiki = QPushButton("?")
         self.paginawiki.clicked.connect(self.lanciailwiki)
         lobeamline = QGridLayout()
-        lobeamline.addWidget(self.paginawiki, 0, 0)
-        lobeamline.addWidget(QLabel("SLU state:"), 0, 1)
-        lobeamline.addWidget(self.STATOSLU, 0, 2)
-        lobeamline.addWidget(QLabel("Active beamline:"), 0, 3)
-        lobeamline.addWidget(self.beamlineattiva, 0, 4)
-        lobeamline.addWidget(QLabel("|"), 0, 5)
-        lobeamline.addWidget(QLabel("switch to:"), 0, 6)
-        lobeamline.addWidget(self.menubeamline, 0, 7)
-        lobeamline.addWidget(self.calendar, 0, 8)
+        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)
         self.gruppobeamline.setLayout(lobeamline)
-    ### amplifier
-        self.grupposorgente = QGroupBox()
-        self.energiaslr_letturaL = QLabel("Source energy")
-        self.energiaslr_letturaL.setAlignment(Qt.AlignCenter)
-        self.energiaslr_lettura = QLineEdit("")
-        self.energiaslr_lettura.setToolTip('IR energy BEFORE beam transport')
-        self.energiaslr_lettura.setReadOnly(1)
-        self.globale_amplificatoreL = QLabel("Amplifier")
-        self.globale_amplificatoreL.setAlignment(Qt.AlignCenter)
-        self.globale_amplificatore = QLineEdit("")
-        self.globale_amplificatore.setReadOnly(1)
-        self.globale_amplificatore.setToolTip('Global indicator for Pump temperature, Amplifier current and triggers. If not green call Reperibile Laser')
-        self.statoinputL = QLabel("Input fb")
-        self.statoinputL.setAlignment(Qt.AlignCenter)
-        self.statoinput = QLineEdit("")
-        self.statoinput.setReadOnly(1)
-        self.statoinput.setToolTip('Input feedback of the amplifier dedicated to SLU. If not green call Reperibile Laser')
-        self.statooutputL = QLabel("Output fb")
-        self.statooutputL.setAlignment(Qt.AlignCenter)
-        self.statooutput = QLineEdit("")
-        self.statooutput.setReadOnly(1)
-        self.statooutput.setToolTip('Output feedback of the amplifier dedicated to SLU. If not green call Reperibile Laser')
-        self.statotimeL = QLabel("Timing fb")
-        self.statotimeL.setAlignment(Qt.AlignCenter)
-        self.statotime = QLineEdit("")
-        self.statotime.setReadOnly(1)
-        self.statotime.setToolTip('Timing feedback of the amplifier dedicated to SLU. If not green call Reperibile Laser')
-        self.vuotoutdrL = QLabel("Vacuum UTDR")
-        self.vuotoutdrL.setAlignment(Qt.AlignCenter)
-        self.vuotoutdr = QLineEdit("")
-        self.vuotoutdr.setToolTip('Vacuum reading of UTDR section of the beam transport. If not green call Reperibile Laser')
-        self.vuotoutdr.setReadOnly(1)
-        self.vuotouhL = QLabel("Vacuum UH")
-        self.vuotouhL.setAlignment(Qt.AlignCenter)
-        self.vuotouh = QLineEdit("")
-        self.vuotouh.setToolTip('Vacuum reading of UH section of the beam transport. If not green call Reperibile Laser')
-        self.vuotouh.setReadOnly(1)
-        self.vuotouhtotemL = QLabel("Vacuum UH-Totem")
-        self.vuotouhtotemL.setAlignment(Qt.AlignCenter)
-        self.vuotouhtotem = QLineEdit("")
-        self.vuotouhtotem.setToolTip('Vacuum reading of UH-TOTEM section of the beam transport. If not green call Reperibile Laser')
-        self.vuotouhtotem.setReadOnly(1)
-        self.vuotototembeamlineL = QLabel("Vacuum Totem-BL")
-        self.vuotototembeamlineL.setAlignment(Qt.AlignCenter)
-        self.vuotototembeamline = QLineEdit("")
-        self.vuotototembeamline.setToolTip('Vacuum reading of TOTEM-BEAMLINE section of the beam transport. If not green call Reperibile Laser')
-        self.vuotototembeamline.setReadOnly(1)
-        losorgente = QGridLayout()
-        losorgente.addWidget(self.energiaslr_letturaL, 0, 0)
-        losorgente.addWidget(self.energiaslr_lettura, 1, 0)
-        losorgente.addWidget(self.globale_amplificatoreL, 0, 1)
-        losorgente.addWidget(self.globale_amplificatore, 1, 1)
-        losorgente.addWidget(self.statoinputL, 0, 2)
-        losorgente.addWidget(self.statoinput, 1, 2)
-        losorgente.addWidget(self.statooutputL, 0, 3)
-        losorgente.addWidget(self.statooutput, 1, 3)
-        losorgente.addWidget(self.statotimeL, 0, 4)
-        losorgente.addWidget(self.statotime, 1, 4)
-        losorgente.addWidget(self.vuotoutdrL, 0, 5)
-        losorgente.addWidget(self.vuotoutdr, 1, 5)
-        losorgente.addWidget(self.vuotouhL, 0, 6)
-        losorgente.addWidget(self.vuotouh, 1, 6)
-        losorgente.addWidget(self.vuotouhtotemL, 0, 7)
-        losorgente.addWidget(self.vuotouhtotem, 1, 7)
-        losorgente.addWidget(self.vuotototembeamlineL, 0, 8)
-        losorgente.addWidget(self.vuotototembeamline, 1, 8)
-        self.grupposorgente.setLayout(losorgente)
-    ### shutter
-        self.grupposhutter = QGroupBox()
-        self.letturashutterlaser = QLineEdit("")
-        self.letturashutterlaser.setReadOnly(1)
-        self.letturashutterbeamline = QLineEdit("")
-        self.letturashutterbeamline.setReadOnly(1)
-        self.abilitatoshutterlaser = QLineEdit("")
-        self.abilitatoshutterlaser.setReadOnly(1)
-        self.abilitatoshutterbeamline = QLineEdit("")
-        self.abilitatoshutterbeamline.setReadOnly(1)
-        self.aprilaserpss = QPushButton("Laser PSS")
-        self.aprilaserpss.clicked.connect(self.apripss)
-        self.porteL = QLabel("Doors:")
-        self.porte = QLineEdit("")
-        self.porte.setReadOnly(1)
-        self.coperchiL = QLabel("Cover:")
-        self.coperchi = QLineEdit("")
-        self.coperchi.setReadOnly(1)
-        self.piellecciL = QLabel("PLC:")
-        self.piellecci = QLineEdit("")
-        self.piellecci.setReadOnly(1)
-        loshutter = QGridLayout()
-        loshutter.addWidget(self.aprilaserpss, 0, 0)
-        loshutter.addWidget(QLabel("Main Shutter:"), 0, 1)
-        loshutter.addWidget(self.letturashutterlaser, 0, 2)
-        loshutter.addWidget(self.abilitatoshutterlaser, 0, 3)
-        loshutter.addWidget(QLabel("Beamline Shutter:"), 0, 4)
-        loshutter.addWidget(self.letturashutterbeamline, 0, 5)
-        loshutter.addWidget(self.abilitatoshutterbeamline, 0, 6)
-        loshutter.addWidget(self.porteL, 0, 7)
-        loshutter.addWidget(self.porte, 0, 8)
-        loshutter.addWidget(self.coperchiL, 0, 9)
-        loshutter.addWidget(self.coperchi, 0, 10)
-        loshutter.addWidget(self.piellecciL, 0, 11)
-        loshutter.addWidget(self.piellecci, 0, 12)
-        self.grupposhutter.setLayout(loshutter)
-    ### feedback
-        self.gruppofeedback = QGroupBox()
+        #tab
+        self.contienitab = QTabWidget()
+        self.tab1 = QWidget()
+        self.tab2 = QWidget()
+        self.tab3 = QWidget()
+        self.tab4 = QWidget()
+        self.tab5 = QWidget()
+        self.tab6 = QWidget()
+        self.tab7 = QWidget()
+        self.tab8 = QWidget()
+        self.tab9 = QWidget()
+        self.tab10 = QWidget()
+        self.tab11 = QWidget()
+        self.tab12 = QWidget()
+        self.tab13 = QWidget()
+        self.tab14 = QWidget()
+        self.contienitab.addTab(self.tab1, "Monitor")
+        self.contienitab.addTab(self.tab2, "Source")
+        self.contienitab.addTab(self.tab3, "Pointing FB")
+        self.contienitab.addTab(self.tab4, "Decimation")
+        self.contienitab.addTab(self.tab6, "Vacuum")
+        self.contienitab.addTab(self.tab7, "Temperature")
+        self.contienitab.addTab(self.tab8, "Log")
+        self.contienitab.addTab(self.tab5, "Delay")
+#        self.contienitab.addTab(self.tab9, "Timer")
+#        self.contienitab.addTab(self.tab10, "Timex")
+#        self.contienitab.addTab(self.tab11, "DiProi")
+        self.contienitab.addTab(self.tab12, "LDM")
+#        self.contienitab.addTab(self.tab13, "MagneDyn")
+#        self.contienitab.addTab(self.tab14, "Alarms")
+        lot1 = QGridLayout()
+        lot2 = QGridLayout()
+        lot3 = QGridLayout()
+        lot4 = QGridLayout()
+        lot5 = QGridLayout()
+        lot6 = QGridLayout()
+        lot7 = QGridLayout()
+        lot8 = QGridLayout()
+        lot9 = QGridLayout()
+        lot10 = QGridLayout()
+        lot11 = QGridLayout()
+        lot12 = QGridLayout()
+        lot13 = QGridLayout()
+        lot14 = QGridLayout()
+        self.tab1.setLayout(lot1)
+        self.tab2.setLayout(lot2)
+        self.tab3.setLayout(lot3)
+        self.tab4.setLayout(lot4)
+        self.tab5.setLayout(lot5)
+        self.tab6.setLayout(lot6)
+        self.tab7.setLayout(lot7)
+        self.tab8.setLayout(lot8)
+        self.tab9.setLayout(lot9)
+        self.tab10.setLayout(lot10)
+        self.tab11.setLayout(lot11)
+        self.tab12.setLayout(lot12)
+        self.tab13.setLayout(lot13)
+        self.tab14.setLayout(lot14)
+    #1 monitor
+        self.monitor_amplilabel = QLabel("Source")
+        self.monitor_ampli = LineEditRO()
+        self.monitor_pointinglabel = QLabel("Pointing FB")
+        self.monitor_pointing = LineEditRO()
+        self.monitor_decimationlabel = QLabel("Decimation")
+        self.monitor_decimation = LineEditRO()
+        self.monitor_vacuumlabel = QLabel("Vacuum")
+        self.monitor_vacuum = LineEditRO()
+        self.monitor_temperalabel = QLabel("Temperature")
+        self.monitor_tempera= LineEditRO()
+        self.monitor_loglabel = QLabel("Log")
+        self.monitor_log = LineEditRO()
+        self.monitor_letturashutterlaser = LineEditRO()
+        self.monitor_letturashutterbeamline = LineEditRO()
+        self.monitor_abilitatoshutterlaser = LineEditRO()
+        self.monitor_abilitatoshutterbeamline = LineEditRO()
+        self.monitor_aprilaserpss = QPushButton("Laser PSS")
+        self.monitor_aprilaserpss.clicked.connect(self.apripss)
+        self.monitor_porte = LineEditRO()
+        self.monitor_coperchi = LineEditRO()
+        self.monitor_piellecci =LineEditRO()
+        lot1.addWidget(self.monitor_amplilabel, 0, 0)
+        lot1.addWidget(self.monitor_ampli, 0, 1)
+        lot1.addWidget(self.monitor_pointinglabel,1, 0)
+        lot1.addWidget(self.monitor_pointing, 1, 1)
+        lot1.addWidget(self.monitor_decimationlabel, 2, 0)
+        lot1.addWidget(self.monitor_decimation, 2, 1)
+        lot1.addWidget(self.monitor_vacuumlabel, 3, 0)
+        lot1.addWidget(self.monitor_vacuum, 3, 1)
+        lot1.addWidget(self.monitor_temperalabel, 4, 0)
+        lot1.addWidget(self.monitor_tempera, 4, 1)
+        lot1.addWidget(self.monitor_loglabel, 5, 0)
+        lot1.addWidget(self.monitor_log, 5, 1)
+        lot1.addWidget(QVLine(), 0, 2, 6, 1)
+        lot1.addWidget(QLabel("Main Shutter:"), 0, 3)
+        lot1.addWidget(self.monitor_letturashutterlaser, 0, 4)
+        lot1.addWidget(self.monitor_abilitatoshutterlaser, 0, 5)
+        lot1.addWidget(QLabel("Beamline Shutter:"), 1, 3)
+        lot1.addWidget(self.monitor_letturashutterbeamline, 1, 4)
+        lot1.addWidget(self.monitor_abilitatoshutterbeamline, 1, 5)
+        lot1.addWidget(QLabel("Doors:"), 2, 3)
+        lot1.addWidget(self.monitor_porte, 2, 4)
+        lot1.addWidget(QLabel("Cover:"), 3, 3)
+        lot1.addWidget(self.monitor_coperchi, 3, 4)
+        lot1.addWidget(QLabel("PLC:"), 4, 3)
+        lot1.addWidget(self.monitor_piellecci, 4, 4)
+        lot1.addWidget(self.monitor_aprilaserpss, 5, 3, 1, 3)
+    #2 source
+        self.source_amplistate = LineEditRO()
+        self.source_amplicurrent = LineEditRO()
+        self.source_amplienergy = LineEditRO()
+        self.source_amplipumptemperature = LineEditRO()
+        self.source_amplitemperature = LineEditRO()
+        self.source_ampliFBin = LineEditRO()
+        self.source_ampliFBtime = LineEditRO()
+        self.source_launchenergy = LineEditRO()
+        self.source_attenuator = LineEditRO()
+        self.source_attenuatorcontrol = movimentirelativi()
+        self.source_attenuatorcontrol.muoviM.clicked.connect(self.attenuatoregiu)
+        self.source_attenuatorcontrol.muoviP.clicked.connect(self.attenuatoresu)
+        riga = 0
+        colonna = 0
+        lot2.addWidget(QLabel("Amplifier State"), riga, colonna)
+        lot2.addWidget(self.source_amplistate, riga, colonna+1)
+        riga +=1
+        lot2.addWidget(QLabel("Amplifier Current"), riga, colonna)
+        lot2.addWidget(self.source_amplicurrent, riga, colonna+1)
+        riga +=1
+        lot2.addWidget(QLabel("Amplifier Energy"), riga, colonna)
+        lot2.addWidget(self.source_amplienergy, riga, colonna+1)
+        riga +=1
+        lot2.addWidget(QLabel("Pump laser Temperature"), riga, colonna)
+        lot2.addWidget(self.source_amplipumptemperature, riga, colonna+1)
+        riga +=1
+        lot2.addWidget(QLabel("Amplifier Temperature"), riga, colonna)
+        lot2.addWidget(self.source_amplitemperature, riga, colonna+1)
+        riga +=1
+        lot2.addWidget(QLabel("Amplifier input FB"), riga, colonna)
+        lot2.addWidget(self.source_ampliFBin, riga, colonna+1)
+        riga +=1
+        lot2.addWidget(QLabel("Amplifier time FB"), riga, colonna)
+        lot2.addWidget(self.source_ampliFBtime, riga, colonna+1)
+        colonna +=2
+        riga = 0
+        lot2.addWidget(QLabel("Launch Energy"), riga, colonna)
+        lot2.addWidget(self.source_launchenergy, riga, colonna+1)
+        riga +=1
+        lot2.addWidget(QLabel("T2 attenuator"), riga, colonna)
+        lot2.addWidget(self.source_attenuator, riga, colonna+1)
+        riga +=1
+        lot2.addWidget(self.source_attenuatorcontrol, riga, colonna+1)
+    #3 feedback
         self.feedbackpannello = QPushButton("Transport feedback")
         self.feedbackpannello.clicked.connect(self.aprifeedback)
-        self.feedbackstato = QLineEdit("")
-        self.feedbackstato.setReadOnly(1)
+        self.feedbackstato = LineEditRO()
         self.feedbackon = QPushButton("ON")
         self.feedbackon.clicked.connect(self.accendiilfeedback)
         self.feedbacksmarton = QPushButton("Start 1by1")
@@ -247,7 +322,7 @@ class MainWindow(QDialog):
         self.feedbackstopothers.setDisabled(1)
         self.feedbackautolabel = QPushButton('Auto-weights')
         self.feedbackautolabel.clicked.connect(self.apriSEQpesi)
-        self.feedbackautoread = QLineEdit('')
+        self.feedbackautoread = LineEditRO()
         self.feedbackautoonoffreset = QPushButton('On')
         self.feedbackautoonoffreset.clicked.connect(self.comandipersequencer)
         self.feedbackstopothersauto = QPushButton('Stop other BL sequencer')
@@ -260,173 +335,818 @@ class MainWindow(QDialog):
         self.feedbacksalvapiezi.clicked.connect(self.scrivitensioni)
         self.feedbackripristinapiezi = QPushButton('Restore pzt voltage')
         self.feedbackripristinapiezi.clicked.connect(self.riapplicatensioni)
-        self.feedback0L = QLabel("SLR Table1 -> Table2")
-        self.feedback0L.setAlignment(Qt.AlignCenter)
-        self.feedback0x = QProgressBar()
-        self.feedback0x.setRange(0, 100)
-        self.feedback0x.setValue(0)
-        self.feedback0x.setToolTip('Horizontal')
-        self.feedback0x.setAlignment(Qt.AlignCenter)
-        self.feedback0y = QProgressBar()
-        self.feedback0y.setRange(0, 100)
-        self.feedback0y.setValue(0)
-        self.feedback0y.setToolTip('Vertical')
-        self.feedback0y.setAlignment(Qt.AlignCenter)
-        self.feedback0corrector = QPushButton("tiptilt")
-        self.feedback0corrector.clicked.connect(self.apritiptilt0)
-        self.feedback0monitor = QPushButton("CCD")
-        self.feedback0monitor.clicked.connect(self.apriccd0)
-#        if not(selettore >= 1 and selettore <= 6):
-#            self.feedback0L.setDisabled(1)
-#            self.feedback0x.setDisabled(1)
-#            self.feedback0y.setDisabled(1)
-#            self.feedback0corrector.setDisabled(1)
-#            self.feedback0monitor.setDisabled(1)
-        self.feedback1L = QLabel("SLR -> UH")
-        self.feedback1L.setAlignment(Qt.AlignCenter)
-        self.feedback1x = QProgressBar()
-        self.feedback1x.setRange(0, 100)
-        self.feedback1x.setValue(0)
-        self.feedback1x.setToolTip('Horizontal')
-        self.feedback1x.setAlignment(Qt.AlignCenter)
-        self.feedback1y = QProgressBar()
-        self.feedback1y.setRange(0, 100)
-        self.feedback1y.setValue(0)
-        self.feedback1y.setToolTip('Vertical')
-        self.feedback1y.setAlignment(Qt.AlignCenter)
-        self.feedback1corrector = QPushButton("tiptilt")
-        self.feedback1corrector.clicked.connect(self.apritiptilt1)
-        self.feedback1monitor = QPushButton("CCD")
-        self.feedback1monitor.clicked.connect(self.apriccd1)
-        self.feedback2L = QLabel("UH -> Totem")
-        self.feedback2L.setAlignment(Qt.AlignCenter)
-        self.feedback2x = QProgressBar()
-        self.feedback2x.setRange(0, 100)
-        self.feedback2x.setValue(0)
-        self.feedback2x.setToolTip('Horizontal')
-        self.feedback2x.setAlignment(Qt.AlignCenter)
-        self.feedback2y = QProgressBar()
-        self.feedback2y.setRange(0, 100)
-        self.feedback2y.setValue(0)
-        self.feedback2y.setToolTip('Vertical')
-        self.feedback2y.setAlignment(Qt.AlignCenter)
-        self.feedback2corrector = QPushButton("tiptilt")
-        self.feedback2corrector.clicked.connect(self.apritiptilt2)
-        self.feedback2monitor = QPushButton("CCD")
-        self.feedback2monitor.clicked.connect(self.apriccd2)
-        self.feedback3L = QLabel("Totem up -> down")
-        self.feedback3L.setAlignment(Qt.AlignCenter)
-        self.feedback3x = QProgressBar()
-        self.feedback3x.setRange(0, 100)
-        self.feedback3x.setValue(0)
-        self.feedback3x.setToolTip('Horizontal')
-        self.feedback3x.setAlignment(Qt.AlignCenter)
-        self.feedback3y = QProgressBar()
-        self.feedback3y.setRange(0, 100)
-        self.feedback3y.setValue(0)
-        self.feedback3y.setToolTip('Vertical')
-        self.feedback3y.setAlignment(Qt.AlignCenter)
-        self.feedback3corrector = QPushButton("tiptilt")
-        self.feedback3corrector.clicked.connect(self.apritiptilt3)
-        self.feedback3monitor = QPushButton("CCD")
-        self.feedback3monitor.clicked.connect(self.apriccd3)
-        self.feedback4L = QLabel("Totem -> Beamline")
-        self.feedback4L.setAlignment(Qt.AlignCenter)
-        self.feedback4x = QProgressBar()
-        self.feedback4x.setRange(0, 100)
-        self.feedback4x.setValue(0)
-        self.feedback4x.setToolTip('Horizontal')
-        self.feedback4x.setAlignment(Qt.AlignCenter)
-        self.feedback4y = QProgressBar()
-        self.feedback4y.setRange(0, 100)
-        self.feedback4y.setValue(0)
-        self.feedback4y.setToolTip('Vertical')
-        self.feedback4y.setAlignment(Qt.AlignCenter)
-        self.feedback4corrector = QPushButton("tiptilt")
-        self.feedback4corrector.clicked.connect(self.apritiptilt4)
-        self.feedback4monitor = QPushButton("CCD")
-        self.feedback4monitor.clicked.connect(self.apriccd4)
-        lofeedback = QGridLayout()
-        lofeedback.addWidget(self.feedbackpannello, 0, 0)
-        lofeedback.addWidget(self.feedbackstato, 0, 1)
-        lofeedback.addWidget(self.feedbackon, 0, 2)
-        lofeedback.addWidget(self.feedbacksb, 0, 3)
-        lofeedback.addWidget(self.feedbackconfig, 0, 4)
-        lofeedback.addWidget(self.feedbacksmarton, 0, 5)
-        lofeedback.addWidget(self.feedbackreset, 0, 6)
-        lofeedback.addWidget(self.feedbacksalvapiezi, 0, 7)
-        lofeedback.addWidget(self.feedbackripristinapiezi, 0, 8, 1, 2)
-        lofeedback.addWidget(self.feedbackautolabel, 1, 0)
-        lofeedback.addWidget(self.feedbackautoread, 1, 1)
-        lofeedback.addWidget(self.feedbackautoonoffreset, 1, 2)
-        lofeedback.addWidget(self.feedbackstopothersauto, 1, 3)
-        lofeedback.addWidget(self.feedbackstopothersccds, 1, 4)
-        lofeedback.addWidget(self.feedbackstopothers, 1, 5)
-        lofeedback.addWidget(self.feedback0L, 2, 0, 1, 2)
-        lofeedback.addWidget(self.feedback0monitor, 3, 0, 1, 2)
-        lofeedback.addWidget(self.feedback0corrector, 4, 0, 1, 2)
-        lofeedback.addWidget(self.feedback0x, 5, 0)
-        lofeedback.addWidget(self.feedback0y, 5, 1)
-        lofeedback.addWidget(self.feedback1L, 2, 2, 1, 2)
-        lofeedback.addWidget(self.feedback1monitor, 3, 2, 1, 2)
-        lofeedback.addWidget(self.feedback1corrector, 4, 2, 1, 2)
-        lofeedback.addWidget(self.feedback1x, 5, 2)
-        lofeedback.addWidget(self.feedback1y, 5, 3)
-        lofeedback.addWidget(self.feedback2L, 2, 4, 1, 2)
-        lofeedback.addWidget(self.feedback2monitor, 3, 4, 1, 2)
-        lofeedback.addWidget(self.feedback2corrector, 4, 4, 1, 2)
-        lofeedback.addWidget(self.feedback2x, 5, 4)
-        lofeedback.addWidget(self.feedback2y, 5, 5)
-        lofeedback.addWidget(self.feedback3L, 2, 6, 1, 2)
-        lofeedback.addWidget(self.feedback3monitor, 3, 6, 1, 2)
-        lofeedback.addWidget(self.feedback3corrector, 4, 6, 1, 2)
-        lofeedback.addWidget(self.feedback3x, 5, 6)
-        lofeedback.addWidget(self.feedback3y, 5, 7)
-        lofeedback.addWidget(self.feedback4L, 2, 8, 1, 2)
-        lofeedback.addWidget(self.feedback4monitor, 3, 8, 1, 2)
-        lofeedback.addWidget(self.feedback4corrector, 4, 8, 1, 2)
-        lofeedback.addWidget(self.feedback4x, 5, 8)
-        lofeedback.addWidget(self.feedback4y, 5, 9)
-        self.gruppofeedback.setLayout(lofeedback)
-    ### delay
-        self.gruppodelay = QGroupBox()
+        self.feedback0 = transport_fb_element("SLR Table2 -> Table1", sacco['ccd0'].name(), sacco['piezo0'].name())
+        self.feedback1 = transport_fb_element("SLR -> UH", sacco['ccd1'].name(), sacco['piezo1'].name())
+        self.feedback2 = transport_fb_element("UH -> Totem", sacco['ccd2'].name(), sacco['piezo2'].name())
+        self.feedback3 = transport_fb_element("Totem up -> down", sacco['ccd3'].name(), sacco['piezo3'].name())
+        self.feedback4 = transport_fb_element("Totem -> Beamline", 'boh', sacco['piezo4'].name())
+        self.feedback4.tasto_ccd.clicked.connect(self.apriccd4)
+        self.feedback_motori_label = QLabel('some motors here')
+        riga = 0
+        lot3.addWidget(self.feedbackstopothersauto, riga, 0, 1, 2)
+        lot3.addWidget(self.feedbackstopothersccds, riga, 2, 1, 2)
+        lot3.addWidget(self.feedbackstopothers, riga, 4, 1, 2)
+        riga += 1
+        lot3.addWidget(self.feedbackpannello, riga, 0)
+        lot3.addWidget(self.feedbackstato, riga, 1)
+        lot3.addWidget(self.feedbackon, riga, 2)
+        lot3.addWidget(self.feedbacksb, riga, 3)        
+        lot3.addWidget(self.feedbacksmarton, riga, 4)
+        lot3.addWidget(self.feedbackconfig, riga, 5)
+        riga += 1
+        lot3.addWidget(self.feedbackreset, riga, 0)
+        lot3.addWidget(self.feedbacksalvapiezi, riga, 1)
+        lot3.addWidget(self.feedbackripristinapiezi, riga, 2)
+        lot3.addWidget(self.feedbackautolabel, riga, 3)
+        lot3.addWidget(self.feedbackautoread, riga, 4)
+        lot3.addWidget(self.feedbackautoonoffreset, riga, 5)
+        riga += 1
+        lot3.addWidget(self.feedback0, riga, 0)
+        lot3.addWidget(self.feedback1, riga, 1)
+        lot3.addWidget(self.feedback2, riga, 2)
+        lot3.addWidget(self.feedback3, riga, 3)
+        lot3.addWidget(self.feedback4, riga, 4)
+        riga += 1
+        lot3.addWidget(QHLine(), riga, 0, 1, 6)
+        riga += 1
+        lot3.addWidget(self.feedback_motori_label, riga, 0)
+    #4 decimation
+        self.decimators = QPushButton('Open decimation panel')
+        self.decimators.clicked.connect(self.apridecimatori)
+        self.scope6 = QPushButton('Open scope-laser-06')
+        self.scope6.clicked.connect(self.apriscope6)
+        self.deci1L = QLabel('Global SEED+SLU')
+        self.deci1R = LineEditRO()
+        self.deci1on = QPushButton('ON (random)')
+        self.deci1on.clicked.connect(lambda: self.accendidecimatore('decima1', 'random'))
+        self.deci1on1 = QPushButton('ON (odd)')
+        self.deci1on1.clicked.connect(lambda: self.accendidecimatore('decima1', 'odd'))
+        self.deci1on2 = QPushButton('ON (even)')
+        self.deci1on2.clicked.connect(lambda: self.accendidecimatore('decima1', 'even'))
+        self.deci1off = QPushButton('OFF')
+        self.deci1off.clicked.connect(lambda: self.spegnidecimazione('decima1'))
+        self.deci1delay = QPushButton('Set DELAY')
+        self.deci1delay.clicked.connect(lambda: self.decimadelay('decima1'))
+        self.deci1status = QPushButton('Set STATUS')
+        self.deci1status.clicked.connect(lambda: self.decimastatus('decima1'))
+        self.deci1sequence_R = LineEditRO()
+        self.deci1sequence_W = QLineEdit()
+        self.deci1sequence = QPushButton('Change sequence')
+        self.deci1sequence.clicked.connect(lambda: self.decimasequenza('decima1'))
+        self.deci2L = QLabel('SEED / FEL')
+        self.deci2R = LineEditRO()
+        self.deci2on = QPushButton('ON (random)')
+        self.deci2on.clicked.connect(lambda: self.accendidecimatore('decima2', 'random'))
+        self.deci2on1 = QPushButton('ON (odd)')
+        self.deci2on1.clicked.connect(lambda: self.accendidecimatore('decima2', 'odd'))
+        self.deci2on2 = QPushButton('ON (even)')
+        self.deci2on2.clicked.connect(lambda: self.accendidecimatore('decima2', 'even'))
+        self.deci2off = QPushButton('OFF')
+        self.deci2off.clicked.connect(lambda: self.spegnidecimazione('decima2'))
+        self.deci2delay = QPushButton('Set DELAY')
+        self.deci2delay.clicked.connect(lambda: self.decimadelay('decima2'))
+        self.deci2status = QPushButton('Set STATUS')
+        self.deci2status.clicked.connect(lambda: self.decimastatus('decima2'))
+        self.deci2sequence_R = LineEditRO()
+        self.deci2sequence_W = QLineEdit()
+        self.deci2sequence = QPushButton('Change sequence')
+        self.deci2sequence.clicked.connect(lambda: self.decimasequenza('decima2'))
+        self.deci3L = QLabel('SLU')
+        self.deci3R = LineEditRO()
+        self.deci3on = QPushButton('ON (random)')
+        self.deci3on.clicked.connect(lambda: self.accendidecimatore('decima3', 'random'))
+        self.deci3on1 = QPushButton('ON (odd)')
+        self.deci3on1.clicked.connect(lambda: self.accendidecimatore('decima3', 'odd'))
+        self.deci3on2 = QPushButton('ON (even)')
+        self.deci3on2.clicked.connect(lambda: self.accendidecimatore('decima3', 'even'))
+        self.deci3off = QPushButton('OFF')
+        self.deci3off.clicked.connect(lambda: self.spegnidecimazione('decima3'))
+        self.deci3delay = QPushButton('Set DELAY')
+        self.deci3delay.clicked.connect(lambda: self.decimadelay('decima3'))
+        self.deci3status = QPushButton('Set STATUS')
+        self.deci3status.clicked.connect(lambda: self.decimastatus('decima3'))
+        self.deci3sequence_R = LineEditRO()
+        self.deci3sequence_W = QLineEdit()
+        self.deci3sequence = QPushButton('Change sequence')
+        self.deci3sequence.clicked.connect(lambda: self.decimasequenza('decima3'))
+        self.deciripristino = QPushButton('STOP ALL AND RESTORE CORRECT DELAYS')
+        self.deciripristino.clicked.connect(self.decimafermatutto)
+        lot4.addWidget(self.decimators, 0, 0, 1, 10)
+        lot4.addWidget(self.scope6, 0, 10, 1, 10)
+        lot4.addWidget(self.deci1L, 11, 0)
+        lot4.addWidget(self.deci1R, 11, 1, 1, 5)
+        lot4.addWidget(self.deci1on, 12, 0, 1, 2)
+        lot4.addWidget(self.deci1on1, 12, 2, 1, 2)
+        lot4.addWidget(self.deci1on2, 12, 4, 1, 2)
+        lot4.addWidget(self.deci1off, 13, 0, 1, 6)
+        lot4.addWidget(self.deci1delay, 14, 0, 1, 3)
+        lot4.addWidget(self.deci1status, 14, 3, 1, 3)
+        lot4.addWidget(QLabel('Sequence'), 15, 0)
+        lot4.addWidget(self.deci1sequence_R, 15, 1, 1, 5)
+        lot4.addWidget(self.deci1sequence_W, 16, 0, 1, 5)
+        lot4.addWidget(self.deci1sequence, 16, 5)
+        lot4.addWidget(QVLine(), 11, 6, 6, 1)
+        lot4.addWidget(self.deci2L, 11, 7)
+        lot4.addWidget(self.deci2R, 11, 8, 1, 5)
+        lot4.addWidget(self.deci2on, 12, 7, 1, 2)
+        lot4.addWidget(self.deci2on1, 12, 9, 1, 2)
+        lot4.addWidget(self.deci2on2, 12, 11, 1, 2)
+        lot4.addWidget(self.deci2off, 13, 7, 1, 6)
+        lot4.addWidget(self.deci2delay, 14, 7, 1, 3)
+        lot4.addWidget(self.deci2status, 14, 10, 1, 3)
+        lot4.addWidget(QLabel('Sequence'), 15, 7)
+        lot4.addWidget(self.deci2sequence_R, 15, 8, 1, 5)
+        lot4.addWidget(self.deci2sequence_W, 16, 7, 1, 5)
+        lot4.addWidget(self.deci2sequence, 16, 12)
+        lot4.addWidget(QVLine(), 11, 13, 6, 1)
+        lot4.addWidget(self.deci3L, 11, 14)
+        lot4.addWidget(self.deci3R, 11, 15, 1, 5)
+        lot4.addWidget(self.deci3on, 12, 14, 1, 2)
+        lot4.addWidget(self.deci3on1, 12, 16, 1, 2)
+        lot4.addWidget(self.deci3on2, 12, 18, 1, 2)
+        lot4.addWidget(self.deci3off, 13, 14, 1, 6)
+        lot4.addWidget(self.deci3delay, 14, 14, 1, 3)
+        lot4.addWidget(self.deci3status, 14, 17, 1, 3)
+        lot4.addWidget(QLabel('Sequence'), 15, 14)
+        lot4.addWidget(self.deci3sequence_R, 15, 15, 1, 5)
+        lot4.addWidget(self.deci3sequence_W, 16, 14, 1, 5)
+        lot4.addWidget(self.deci3sequence, 16, 19)
+        lot4.addWidget(self.deciripristino, 20, 0, 1, 20)
+    #5 delay
+        self.vergogna_figura = plt.figure()
+        self.vergogna_canvas = FigureCanvas(self.vergogna_figura)
+        self.wavelength_subp1 = self.vergogna_figura.add_subplot(121)
+        self.wavelength_subp2 = self.vergogna_figura.add_subplot(122)
+        x = np.arange(-5,5,.01)
+        f1 = 1.5*np.exp(-np.square(x-0)/2*np.square(2.5))/(np.sqrt(2*np.pi*np.square(2.5)))
+        f2 = np.exp(-np.square(x-1.5)/2*np.square(2))/(np.sqrt(2*np.pi*np.square(2)))
+        f3 = np.exp(-np.square(x+1.5)/2*np.square(2))/(np.sqrt(2*np.pi*np.square(2)))
+        self.wavelength_subp1.plot(x, f1)
+        self.wavelength_subp1.plot(x, f2)
+        self.wavelength_subp2.plot(x, f1)
+        self.wavelength_subp2.plot(x, f3)
+        self.wavelength_subp1.axes.get_xaxis().set_visible(False)
+        self.wavelength_subp1.axes.get_yaxis().set_visible(False)
+        self.wavelength_subp1.text(-4, 0.1, '-', fontsize='xx-large')
+        self.wavelength_subp1.text(4, 0.16, 'fel', color='blue')
+        self.wavelength_subp1.text(4, 0.12, 'slu', color='orange')
+        self.wavelength_subp2.axes.get_xaxis().set_visible(False)
+        self.wavelength_subp2.axes.get_yaxis().set_visible(False)
+        self.wavelength_subp2.text(-4, 0.1, '+', fontsize='xx-large')
+        self.wavelength_subp2.text(4, 0.16, 'fel', color='blue')
+        self.wavelength_subp2.text(4, 0.12, 'slu', color='orange')
+        self.vergogna_canvas.draw()
         self.delaytotem = QPushButton('Totem delay line')
         self.delaytotem.clicked.connect(self.apridalaytotem)
-        self.delaytotemR = QLineEdit('')
-        self.delaytotemR.setReadOnly(1)
+        self.delaytotemR = LineEditRO()
         self.delaytotemW = QLineEdit('')
-        self.delaytotemABS = QPushButton('GO TO:')
+        self.delaytotemABS = QPushButton('GO TO (ps):')
         self.delaytotemABS.clicked.connect(self.delaytotemgoto)
         self.delaytotemRELm = QPushButton('<')
         self.delaytotemRELm.clicked.connect(self.delaytotemmeno)
         self.delaytotemRELstep = QLineEdit('')
         self.delaytotemRELp = QPushButton('>')
         self.delaytotemRELp.clicked.connect(self.delaytotempiu)
-        self.decimators = QPushButton('Decimator panel')
-        self.decimators.clicked.connect(self.apridecimatori)
-        self.delaycalc = QPushButton('Delay caluculator panel')
+        self.delay8 = QPushButton('TRLS8 delay line')
+        self.delay8.clicked.connect(self.apridalay8)
+        self.delay8R = LineEditRO()
+        self.delay8W = QLineEdit('')
+        self.delay8ABS = QPushButton('GO TO (ps):')
+        self.delay8ABS.clicked.connect(self.delay8goto)
+        self.delay8RELm = QPushButton('<')
+        self.delay8RELm.clicked.connect(self.delay8meno)
+        self.delay8RELstep = QLineEdit('')
+        self.delay8RELp = QPushButton('>')
+        self.delay8RELp.clicked.connect(self.delay8piu)
+        self.triggermain = QPushButton('Main Trigger')
+        self.triggermain.clicked.connect(self.apritrg)
+        self.triggermainR = LineEditRO()
+        self.triggermainW = QLineEdit('')
+        self.triggermainABS = QPushButton('GO TO (ns):')
+        self.triggermainABS.clicked.connect(self.trggoto)
+        self.triggermainRELm = QPushButton('-12ns')
+        self.triggermainRELm.clicked.connect(self.trgmeno)
+        self.triggermainRELp = QPushButton('+12ns')
+        self.triggermainRELp.clicked.connect(self.trgpiu)
+        self.triggerDGQ1 = QPushButton('SDG Trigger')
+        self.triggerDGQ1.clicked.connect(self.apritrg)
+        self.triggerDGQ1R = LineEditRO()
+        self.triggerDGQ1W = QLineEdit('')
+        self.triggerDGQ1ABS = QPushButton('GO TO (ns):')
+        self.triggerDGQ1ABS.clicked.connect(self.sdggoto)
+        self.triggerDGQ1RELm = QPushButton('-1ns')
+        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)
-        lodelay = QGridLayout()
-        lodelay.addWidget(self.delaytotem, 0, 0)
-        lodelay.addWidget(self.delaytotemR, 0, 1)
-        lodelay.addWidget(QLabel("|"), 0, 2)
-        lodelay.addWidget(self.delaytotemABS, 0, 3)
-        lodelay.addWidget(self.delaytotemW, 0, 4)
-        lodelay.addWidget(QLabel('Move by:'), 0, 5)
-        lodelay.addWidget(self.delaytotemRELm, 0, 6)
-        lodelay.addWidget(self.delaytotemRELstep, 0, 7)
-        lodelay.addWidget(self.delaytotemRELp, 0, 8)
-        lodelay.addWidget(QLabel("|"), 0, 9)
-        lodelay.addWidget(self.decimators, 0, 10)
-        lodelay.addWidget(self.delaycalc, 0, 11)
-        self.gruppodelay.setLayout(lodelay)
+        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.scope6M1L = QLabel('Seed-Pil')
+        self.scope6M1R1 = LineEditRO()
+        self.scope6M1R2 = LineEditRO()
+        self.scope6M2L = QLabel('SLU-Pil')
+        self.scope6M2R1 = LineEditRO()
+        self.scope6M2R2 = LineEditRO()
+        self.scope6M3L = QLabel('SLU-Seed')
+        self.scope6M3R1 = LineEditRO()
+        self.scope6M3R2 = LineEditRO()
+        self.scope6M4L = QLabel('Pil-Trg')
+        self.scope6M4R1 = LineEditRO()
+        self.scope6M4R2 = LineEditRO()
+        self.scope6M5L = QLabel('Seed-Trg')
+        self.scope6M5R1 = LineEditRO()
+        self.scope6M5R2 = LineEditRO()
+        self.scope6M6L = QLabel('SLU-trg')
+        self.scope6M6R1 = LineEditRO()
+        self.scope6M6R2 = LineEditRO()
+        self.scope6reset = QPushButton('Clear swap')
+        self.scope6reset.clicked.connect(self.scope6CW)
+        self.scope6apri = QPushButton('open scope6')
+        self.scope6apri.clicked.connect(self.apriscope6)
+        self.memo_tmr_R = QPushButton('Recall TMR memory')
+        self.memo_tmr_R.clicked.connect(self.memoriaTMRr)
+        self.memo_tmr_W = QPushButton('Save TMR memory')
+        self.memo_tmr_W.clicked.connect(self.memoriaTMRw)
+        self.memo_tmx_R = QPushButton('Recall TMX memory')
+        self.memo_tmx_R.clicked.connect(self.memoriaTMXr)
+        self.memo_tmx_W = QPushButton('Save TMX memory')
+        self.memo_tmx_W.clicked.connect(self.memoriaTMXw)
+        self.memo_dpi_R = QPushButton('Recall DPI memory')
+        self.memo_dpi_R.clicked.connect(self.memoriaDPIr)
+        self.memo_dpi_W = QPushButton('Save DPI memory')
+        self.memo_dpi_W.clicked.connect(self.memoriaDPIw)
+        self.memo_ldm_R = QPushButton('Recall LDM memory')
+        self.memo_ldm_R.clicked.connect(self.memoriaLDMr)
+        self.memo_ldm_W = QPushButton('Save LDM memory')
+        self.memo_ldm_W.clicked.connect(self.memoriaLDMw)
+        self.memo_mag_R = QPushButton('Recall MAG memory')
+        self.memo_mag_R.clicked.connect(self.memoriaMAGr)
+        self.memo_mag_W = QPushButton('Save MAG memory')
+        self.memo_mag_W.clicked.connect(self.memoriaMAGw)
+        self.salvatrigger = QPushButton('Save trigger')
+        self.salvatrigger.clicked.connect(self.funzionesalvatrigger)
+        riga = 0
+        lot5.addWidget(QLabel('Measurament from scope-laser-06'), riga, 2, 1, 2)
+        riga += 1
+        lot5.addWidget(self.scope6M1L, riga, 0)
+        lot5.addWidget(self.scope6M2L, riga, 1)
+        lot5.addWidget(self.scope6M3L, riga, 2)
+        lot5.addWidget(self.scope6M4L, riga, 3)
+        lot5.addWidget(self.scope6M5L, riga, 4)
+        lot5.addWidget(self.scope6M6L, riga, 5)
+        riga += 1
+        lot5.addWidget(self.scope6M1R1, riga, 0)
+        lot5.addWidget(self.scope6M2R1, riga, 1)
+        lot5.addWidget(self.scope6M3R1, riga, 2)
+        lot5.addWidget(self.scope6M4R1, riga, 3)
+        lot5.addWidget(self.scope6M5R1, riga, 4)
+        lot5.addWidget(self.scope6M6R1, riga, 5)
+        lot5.addWidget(self.scope6apri, riga, 6)
+        lot5.addWidget(self.scope6reset, riga, 7)
+        riga += 1
+        lot5.addWidget(self.scope6M1R2, riga, 0)
+        lot5.addWidget(self.scope6M2R2, riga, 1)
+        lot5.addWidget(self.scope6M3R2, riga, 2)
+        lot5.addWidget(self.scope6M4R2, riga, 3)
+        lot5.addWidget(self.scope6M5R2, riga, 4)
+        lot5.addWidget(self.scope6M6R2, riga, 5)
+        riga += 1
+        lot5.addWidget(QHLine(), riga, 0, 1, 8)
+        riga += 1
+        lot5.addWidget(QLabel('SLU delay calculator'), riga, 2, 1, 2)
+        riga += 1
+        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.salvatrigger, riga, 7)
+        riga += 1
+        lot5.addWidget(QHLine(), riga, 3, 1, 5)
+        riga += 1
+        lot5.addWidget(self.memo_tmr_R, riga, 3)
+        lot5.addWidget(self.memo_tmx_R, riga, 4)
+        lot5.addWidget(self.memo_dpi_R, riga, 5)     
+        lot5.addWidget(self.memo_ldm_R, riga, 6)
+        lot5.addWidget(self.memo_mag_R, riga, 7)
+        riga += 1
+        lot5.addWidget(self.memo_tmr_W, riga, 3)
+        lot5.addWidget(self.memo_tmx_W, riga, 4)
+        lot5.addWidget(self.memo_dpi_W, riga, 5)
+        lot5.addWidget(self.memo_ldm_W, riga, 6)
+        lot5.addWidget(self.memo_mag_W, riga, 7)
+        riga += 1
+        lot5.addWidget(QHLine(), riga, 0, 1, 8)
+        riga += 1
+        lot5.addWidget(QLabel('Devices'), riga, 2, 1, 2)
+        riga += 1
+        lot5.addWidget(self.triggermain, riga, 0)
+        lot5.addWidget(self.triggermainR, riga, 1)
+        lot5.addWidget(self.triggermainABS, riga, 2)
+        lot5.addWidget(self.triggermainW, riga, 3)
+        lot5.addWidget(QLabel('Move by:'), riga, 4)
+        lot5.addWidget(self.triggermainRELm, riga, 5)
+        lot5.addWidget(self.triggermainRELp, riga, 7)
+        riga += 1
+        lot5.addWidget(self.triggerDGQ1, riga, 0)
+        lot5.addWidget(self.triggerDGQ1R, riga, 1)
+        lot5.addWidget(self.triggerDGQ1ABS, riga, 2)
+        lot5.addWidget(self.triggerDGQ1W, riga, 3)
+        lot5.addWidget(QLabel('Move by:'), riga, 4)
+        lot5.addWidget(self.triggerDGQ1RELm, riga, 5)
+        lot5.addWidget(self.triggerDGQ1RELp, riga, 7)
+        riga += 1
+        lot5.addWidget(self.delay8, riga, 0)
+        lot5.addWidget(self.delay8R, riga, 1)
+        lot5.addWidget(self.delay8ABS, riga, 2)
+        lot5.addWidget(self.delay8W, riga, 3)
+        lot5.addWidget(QLabel('Move by:'), riga, 4)
+        lot5.addWidget(self.delay8RELm, riga, 5)
+        lot5.addWidget(self.delay8RELstep, riga, 6)
+        lot5.addWidget(self.delay8RELp, riga, 7)
+        riga += 1
+        lot5.addWidget(self.delaytotem, riga, 0)
+        lot5.addWidget(self.delaytotemR, riga, 1)
+        lot5.addWidget(self.delaytotemABS, riga, 2)
+        lot5.addWidget(self.delaytotemW, riga, 3)
+        lot5.addWidget(QLabel('Move by:'), riga, 4)
+        lot5.addWidget(self.delaytotemRELm, riga, 5)
+        lot5.addWidget(self.delaytotemRELstep, riga, 6)
+        lot5.addWidget(self.delaytotemRELp, riga, 7)
+    #6 vacuum
+        self.gruppoUTDR = QGroupBox("UTDR")
+        self.gruppoUH = QGroupBox("UH")
+        self.gruppoEH1 = QGroupBox("EH1")
+        self.gruppoEH2 = QGroupBox("EH2")
+        self.valvolaUH1 = QPushButton("vlvp_uh.01")
+        self.valvolaUH1.clicked.connect(self.pannello_valvolaUH1)
+        self.valvolaUH1_read = LineEditRO()
+        self.valvolaUH1_set = QPushButton("OPEN")
+        self.valvolaUH1_set.clicked.connect(self.smanette_valvolaUH1)
+        self.valvolaUH2 = QPushButton("vlvp_uh.02")
+        self.valvolaUH2.clicked.connect(self.pannello_valvolaUH2)
+        self.valvolaUH2_read = LineEditRO()
+        self.valvolaUH2_set = QPushButton("OPEN")
+        self.valvolaUH2_set.clicked.connect(self.smanette_valvolaUH2)
+        self.valvolaUH3 = QPushButton("vlvp_uh.03")
+        self.valvolaUH3.clicked.connect(self.pannello_valvolaUH3)
+        self.valvolaUH3_read = LineEditRO()
+        self.valvolaUH3_set = QPushButton("OPEN")
+        self.valvolaUH3_set.clicked.connect(self.smanette_valvolaUH3)
+        self.valvolaSH1 = QPushButton("vlvp_sh.01")
+        self.valvolaSH1.clicked.connect(self.pannello_valvolaSH1)
+        self.valvolaSH1_read = LineEditRO()
+        self.valvolaSH1_set = QPushButton("OPEN")
+        self.valvolaSH1_set.clicked.connect(self.smanette_valvolaSH1)
+        self.valvolaEHF1 = QPushButton("vlvp_ehf.01")
+        self.valvolaEHF1.clicked.connect(self.pannello_valvolaEHF1)
+        self.valvolaEHF1_read = LineEditRO()
+        self.valvolaEHF1_set = QPushButton("OPEN")
+        self.valvolaEHF1_set.clicked.connect(self.smanette_valvolaEHF1)
+        self.valvolaEHF2 = QPushButton("vlvp_ehf.02")
+        self.valvolaEHF2.clicked.connect(self.pannello_valvolaEHF2)
+        self.valvolaEHF2_read = LineEditRO()
+        self.valvolaEHF2_set = QPushButton("OPEN")
+        self.valvolaEHF2_set.clicked.connect(self.smanette_valvolaEHF2)
+        self.pompaUH1 = QPushButton("pmp_uh_01")
+        self.pompaUH1.clicked.connect(self.pannello_pompe)
+        self.pompaUH1_read = LineEditRO()
+        self.pompaUH1_set = QPushButton("ON")
+        self.pompaUH1_set.clicked.connect(self.smanetta_pompe1)
+        self.pompaUH2 = QPushButton("pmp_uh_02")
+        self.pompaUH2.clicked.connect(self.pannello_pompe)
+        self.pompaUH2_read = LineEditRO()
+        self.pompaUH2_set = QPushButton("ON")
+        self.pompaUH2_set.clicked.connect(self.smanetta_pompe2)
+        self.pompaUH3 = QPushButton("pmp_uh_03")
+        self.pompaUH3.clicked.connect(self.pannello_pompe)
+        self.pompaUH3_read = LineEditRO()
+        self.pompaUH3_set = QPushButton("ON")
+        self.pompaUH3_set.clicked.connect(self.smanetta_pompe3)
+        self.pompaSH1 = QPushButton("pmp_sh_01")
+        self.pompaSH1.clicked.connect(self.pannello_pompe)
+        self.pompaSH1_read = LineEditRO()
+        self.pompaSH1_set = QPushButton("ON")
+        self.pompaSH1_set.clicked.connect(self.smanetta_pompe4)
+        self.pompaEH1 = QPushButton("pmp_eh_01")
+        self.pompaEH1.clicked.connect(self.pannello_pompe)
+        self.pompaEH1_read = LineEditRO()
+        self.pompaEH1_set = QPushButton("ON")
+        self.pompaEH1_set.clicked.connect(self.smanetta_pompe5)
+        self.pompaEH2 = QPushButton("pmp_eh_02")
+        self.pompaEH2.clicked.connect(self.pannello_pompe)
+        self.pompaEH2_read = LineEditRO()
+        self.pompaEH2_set = QPushButton("ON")
+        self.pompaEH2_set.clicked.connect(self.smanetta_pompe6)
+        self.sensoreUTDR = QPushButton("vgpi_slu_utdr.01")
+        self.sensoreUTDR.clicked.connect(self.pannello_sensore_UTDR)
+        self.sensoreUTDR_read = LineEditRO()
+        self.sensoreUH1 = QPushButton("vgpi_slu_uh.01")
+        self.sensoreUH1.clicked.connect(self.pannello_sensore_UH1)
+        self.sensoreUH1_read = LineEditRO()
+        self.sensoreUH2 = QPushButton("vgpi_slu_uh.02")
+        self.sensoreUH2.clicked.connect(self.pannello_sensore_UH2)
+        self.sensoreUH2_read = LineEditRO()
+        self.sensoreUH3 = QPushButton("vgpi_slu_uh.03")
+        self.sensoreUH3.clicked.connect(self.pannello_sensore_UH3)
+        self.sensoreUH3_read = LineEditRO()
+        self.sensoreUH4 = QPushButton("vgpi_slu_uh.04")
+        self.sensoreUH4.clicked.connect(self.pannello_sensore_UH4)
+        self.sensoreUH4_read = LineEditRO()
+        self.sensoreSH1 = QPushButton("vgpi_slu_sh.01")
+        self.sensoreSH1.clicked.connect(self.pannello_sensore_SH1)
+        self.sensoreSH1_read = LineEditRO()
+        self.sensoreEHF1 = QPushButton("vgpi_slu_ehf.01")
+        self.sensoreEHF1.clicked.connect(self.pannello_sensore_EHF1)
+        self.sensoreEHF1_read = LineEditRO()
+        self.sensoreEHF2 = QPushButton("vgpi_slu_ehf.02")
+        self.sensoreEHF2.clicked.connect(self.pannello_sensore_EHF2)
+        self.sensoreEHF2_read = LineEditRO()
+        self.sensoreEHF3 = QPushButton("vgpi_slu_ehf.03")
+        self.sensoreEHF3.clicked.connect(self.pannello_sensore_EHF3)
+        self.sensoreEHF3_read = LineEditRO()
+        self.sensoreEHF4 = QPushButton("vgpi_slu_ehf.04")
+        self.sensoreEHF4.clicked.connect(self.pannello_sensore_EHF4)
+        self.sensoreEHF4_read = LineEditRO()
+        self.cumulativoUH = QPushButton("Start all pumps and Open all valves")
+        self.cumulativoUH.clicked.connect(self.cumulativo_UH)
+        self.cumulativoEHF1 = QPushButton("Start all pumps and Open all valves")
+        self.cumulativoEHF1.clicked.connect(self.cumulativo_EH1)
+        self.cumulativoEHF2 = QPushButton("Start all pumps and Open all valves")
+        self.cumulativoEHF2.clicked.connect(self.cumulativo_EH2)
+        lo_UTDR = QGridLayout()
+        lo_UTDR.addWidget(self.sensoreUTDR, 0, 0)
+        lo_UTDR.addWidget(self.sensoreUTDR_read, 1, 0)
+        self.gruppoUTDR.setLayout(lo_UTDR)
+        lo_UH = QGridLayout()
+        lo_UH.addWidget(self.sensoreUH3, 0, 0, 1, 9)
+        lo_UH.addWidget(self.sensoreUH3_read, 0, 9, 1, 9)
+        lo_UH.addWidget(self.sensoreUH1, 2, 0, 1, 3)
+        lo_UH.addWidget(self.sensoreUH1_read, 2, 3, 1, 3)
+        lo_UH.addWidget(self.valvolaUH1, 3, 0, 1, 2)
+        lo_UH.addWidget(self.valvolaUH1_read, 3, 2, 1, 2)
+        lo_UH.addWidget(self.valvolaUH1_set, 3, 4, 1, 2)
+        lo_UH.addWidget(self.pompaUH1, 4, 0, 1, 2)
+        lo_UH.addWidget(self.pompaUH1_read, 4, 2, 1, 2)
+        lo_UH.addWidget(self.pompaUH1_set, 4, 4, 1, 2)
+        lo_UH.addWidget(self.sensoreUH2, 2, 6, 1, 3)
+        lo_UH.addWidget(self.sensoreUH2_read, 2, 9, 1, 3)
+        lo_UH.addWidget(self.valvolaUH2, 3, 6, 1, 2)
+        lo_UH.addWidget(self.valvolaUH2_read, 3, 8, 1, 2)
+        lo_UH.addWidget(self.valvolaUH2_set, 3, 10, 1, 2)
+        lo_UH.addWidget(self.pompaUH2, 4, 6, 1, 2)
+        lo_UH.addWidget(self.pompaUH2_read, 4, 8, 1, 2)
+        lo_UH.addWidget(self.pompaUH2_set, 4, 10, 1, 2)
+        lo_UH.addWidget(self.sensoreUH4, 2, 12, 1, 3)
+        lo_UH.addWidget(self.sensoreUH4_read, 2, 15, 1, 3)
+        lo_UH.addWidget(self.valvolaUH3, 3, 12, 1, 2)
+        lo_UH.addWidget(self.valvolaUH3_read, 3, 14, 1, 2)
+        lo_UH.addWidget(self.valvolaUH3_set, 3, 16, 1, 2)
+        lo_UH.addWidget(self.pompaUH3, 4, 12, 1, 2)
+        lo_UH.addWidget(self.pompaUH3_read, 4, 14, 1, 2)
+        lo_UH.addWidget(self.pompaUH3_set, 4, 16, 1, 2)
+        lo_UH.addWidget(self.cumulativoUH, 5, 0, 1, 18)
+        self.gruppoUH.setLayout(lo_UH)
+        lo_EH1 = QGridLayout()
+        lo_EH1.addWidget(self.sensoreEHF1, 0, 0, 1, 6)
+        lo_EH1.addWidget(self.sensoreEHF1_read, 0, 6, 1, 6)
+        lo_EH1.addWidget(self.sensoreSH1, 2, 0, 1, 3)
+        lo_EH1.addWidget(self.sensoreSH1_read, 2, 3, 1, 3)
+        lo_EH1.addWidget(self.valvolaSH1, 3, 0, 1, 2)
+        lo_EH1.addWidget(self.valvolaSH1_read, 3, 2, 1, 2)
+        lo_EH1.addWidget(self.valvolaSH1_set, 3, 4, 1, 2)
+        lo_EH1.addWidget(self.pompaSH1, 4, 0, 1, 2)
+        lo_EH1.addWidget(self.pompaSH1_read, 4, 2, 1, 2)
+        lo_EH1.addWidget(self.pompaSH1_set, 4, 4, 1, 2)
+        lo_EH1.addWidget(self.sensoreEHF2, 2, 6, 1, 3)
+        lo_EH1.addWidget(self.sensoreEHF2_read, 2, 9, 1, 3)
+        lo_EH1.addWidget(self.valvolaEHF1, 3, 6, 1, 2)
+        lo_EH1.addWidget(self.valvolaEHF1_read, 3, 8, 1, 2)
+        lo_EH1.addWidget(self.valvolaEHF1_set, 3, 10, 1, 2)
+        lo_EH1.addWidget(self.pompaEH1, 4, 6, 1, 2)
+        lo_EH1.addWidget(self.pompaEH1_read, 4, 8, 1, 2)
+        lo_EH1.addWidget(self.pompaEH1_set, 4, 10, 1, 2)
+        lo_EH1.addWidget(self.cumulativoEHF1, 5, 0, 1, 12)
+        self.gruppoEH1.setLayout(lo_EH1)
+        lo_EH2 = QGridLayout()
+        lo_EH2.addWidget(self.sensoreEHF3, 0, 0, 1, 3)
+        lo_EH2.addWidget(self.sensoreEHF3_read, 0, 3, 1, 3)
+        lo_EH2.addWidget(self.sensoreEHF4, 2, 0, 1, 3)
+        lo_EH2.addWidget(self.sensoreEHF4_read, 2, 3, 1, 3)
+        lo_EH2.addWidget(self.valvolaEHF2, 3, 0, 1, 2)
+        lo_EH2.addWidget(self.valvolaEHF2_read, 3, 2, 1, 2)
+        lo_EH2.addWidget(self.valvolaEHF2_set, 3, 4, 1, 2)
+        lo_EH2.addWidget(self.pompaEH2, 4, 0, 1, 2)
+        lo_EH2.addWidget(self.pompaEH2_read, 4, 2, 1, 2)
+        lo_EH2.addWidget(self.pompaEH2_set, 4, 4, 1, 2)
+        lo_EH2.addWidget(self.cumulativoEHF2, 5, 0, 1, 6)
+        self.gruppoEH2.setLayout(lo_EH2)
+        lot6.addWidget(self.gruppoUTDR, 0, 0)
+        lot6.addWidget(self.gruppoUH, 0, 1, 1, 4)
+        lot6.addWidget(self.gruppoEH1, 1, 0, 2, 3)
+        lot6.addWidget(self.gruppoEH2, 1, 3, 2, 2)
+    #7 temperatures
+        self.tem_revo_l = QLabel('Pump laser')
+        self.tem_revo_r = LineEditRO()
+        self.tem_elite_l = QLabel('Amplifier')
+        self.tem_elite_r = LineEditRO()
+        self.tem_table2_l = QLabel('SLR Table2')
+        self.tem_table2_r = LineEditRO()
+        self.tem_table1_l = QLabel('SLR Table1')
+        self.tem_table1_r = LineEditRO()
+        self.tem_utdr_l = QLabel('UTDR')
+        self.tem_utdr_r = LineEditRO()
+        self.tem_uhbb1_l = QLabel('UH BB1')
+        self.tem_uhbb1_r = LineEditRO()
+        self.tem_uhbb2_l = QLabel('UH BB2')
+        self.tem_uhbb2_r = LineEditRO()
+        self.tem_totemup_l = QLabel('TOTEM UP')
+        self.tem_totemup_r = LineEditRO()
+        self.tem_totemdown_l = QLabel('TOTEM DOWN')
+        self.tem_totemdown_r = LineEditRO()
+        self.tem_totemair_l = QLabel('TOTEM AIR')
+        self.tem_totemair_r = LineEditRO()
+        self.tem_tmr_l = QLabel('Timer IB')
+        self.tem_tmr_r = LineEditRO()
+        self.tem_tmx_l = QLabel('Timex IB')
+        self.tem_tmx_r = LineEditRO()
+        self.tem_dpi_l = QLabel('Diproi IB')
+        self.tem_dpi_r = LineEditRO()
+        self.tem_ldm_l = QLabel('LDM IB')
+        self.tem_ldm_r = LineEditRO()
+        self.tem_mag_l = QLabel('Magnedyn IB')
+        self.tem_mag_r = LineEditRO()
+        self.apri_hdb = QPushButton('view trend on HDB')
+        self.apri_hdb.clicked.connect(self.lanciahdb)
+        lot7.addWidget(self.tem_revo_l, 0, 0)
+        lot7.addWidget(self.tem_revo_r, 0, 1)
+        lot7.addWidget(self.tem_elite_l, 1, 0)
+        lot7.addWidget(self.tem_elite_r, 1, 1)
+        lot7.addWidget(self.tem_table2_l, 2, 0)
+        lot7.addWidget(self.tem_table2_r, 2, 1)
+        lot7.addWidget(self.tem_table1_l, 3, 0)
+        lot7.addWidget(self.tem_table1_r, 3, 1)
+        lot7.addWidget(self.tem_utdr_l, 4, 0)
+        lot7.addWidget(self.tem_utdr_r, 4, 1)
+        lot7.addWidget(self.tem_uhbb1_l, 5, 0)
+        lot7.addWidget(self.tem_uhbb1_r, 5, 1)
+        lot7.addWidget(self.tem_uhbb2_l, 6, 0)
+        lot7.addWidget(self.tem_uhbb2_r, 6, 1)
+        lot7.addWidget(self.tem_totemup_l, 0, 2)
+        lot7.addWidget(self.tem_totemup_r, 0, 3)
+        lot7.addWidget(self.tem_totemdown_l, 1, 2)
+        lot7.addWidget(self.tem_totemdown_r, 1, 3)
+        lot7.addWidget(self.tem_totemair_l, 2, 2)
+        lot7.addWidget(self.tem_totemair_r, 2, 3)
+        lot7.addWidget(self.tem_tmr_l, 3, 2)
+        lot7.addWidget(self.tem_tmr_r, 3, 3)
+        lot7.addWidget(self.tem_tmx_l, 4, 2)
+        lot7.addWidget(self.tem_tmx_r, 4, 3)
+        lot7.addWidget(self.tem_dpi_l, 5, 2)
+        lot7.addWidget(self.tem_dpi_r, 5, 3)
+        lot7.addWidget(self.tem_ldm_l, 6, 2)
+        lot7.addWidget(self.tem_ldm_r, 6, 3)
+        lot7.addWidget(self.tem_mag_l, 7, 2)
+        lot7.addWidget(self.tem_mag_r, 7, 3)
+        lot7.addWidget(self.apri_hdb, 7, 0, 1, 2)
+    #8 log/calendar
+        self.contesto_l = QLabel('Archiver for HDB log context')
+        self.contesto_r = LineEditRO()
+        self.contesto_switch = QComboBox()
+        self.contesto_switch.addItem("None")
+        self.contesto_switch.addItem("SHUTDOWN")
+        self.contesto_switch.addItem("TOTEM")
+        self.contesto_switch.addItem("TIMER")
+        self.contesto_switch.addItem("TIMEX")
+        self.contesto_switch.addItem("DIPROI")
+        self.contesto_switch.addItem("LDM")
+        self.contesto_switch.addItem("MAGNEDYN")
+        self.contesto_switch.addItem("ALL")
+        self.contesto_a = QPushButton('Apply')
+        self.contesto_a.clicked.connect(self.cambiacontestolog)
+        lot8.addWidget(self.contesto_l, 1, 0)
+        lot8.addWidget(self.contesto_r, 1, 1)
+        lot8.addWidget(self.contesto_switch, 1, 2)
+        lot8.addWidget(self.contesto_a, 1, 3)
+        lot8.addWidget(QLabel(' '), 2, 3, 8, 1)
+    #12 LDM
+        self.LDM_label_CCD = QLabel('CCD')
+        self.LDM_bottone_CCD0 = QPushButton('CCD SLU 7')
+        self.LDM_bottone_CCD0.clicked.connect(self.ldm_lancia_ccd0)
+        self.LDM_bottone_CCD3 = QPushButton('CCD 3 Autocorrelator')
+        self.LDM_bottone_CCD3.clicked.connect(self.ldm_lancia_ccd3)
+        self.LDM_bottone_CCD4 = QPushButton('CCD 4 Input LDM box')
+        self.LDM_bottone_CCD4.clicked.connect(self.ldm_lancia_ccd4)
+        self.LDM_bottone_CCD6 = QPushButton('CCD 6 Recombination mirror')
+        self.LDM_bottone_CCD6.clicked.connect(self.ldm_lancia_ccd6)
+        self.LDM_bottone_CCD7 = QPushButton('CCD 7 Third Harmonic')
+        self.LDM_bottone_CCD7.clicked.connect(self.ldm_lancia_ccd7)
+        self.LDM_bottone_CCD9 = QPushButton('CCD 9 Virtual sample')
+        self.LDM_bottone_CCD9.clicked.connect(self.ldm_lancia_ccd9)
+        self.LDM_label_EM = QLabel('Energy Meter')
+        self.LDM_bottone_EM1 = QPushButton('Gentec ch1')
+        self.LDM_bottone_EM1.clicked.connect(self.ldm_lancia_em1)
+        self.LDM_bottone_EM1bis = QPushButton('Stop and Configure')
+        self.LDM_bottone_EM1bis.clicked.connect(self.ldm_configura_em1)
+        self.LDM_bottone_EM2 = QPushButton('Gentec ch2')
+        self.LDM_bottone_EM2.clicked.connect(self.ldm_lancia_em2)
+        self.LDM_bottone_EM2bis = QPushButton('Stop and Configure')
+        self.LDM_bottone_EM2bis.clicked.connect(self.ldm_configura_em2)
+        self.LDM_label_SPCTM = QLabel('Spectrometers')
+        self.LDM_bottone_SPCTM1 = QPushButton('Avantes 178-1300')
+        self.LDM_bottone_SPCTM1.clicked.connect(self.ldm_lancia_spctm1)
+        self.LDM_bottone_SPCTM2 = QPushButton('Avantes 212-285')
+        self.LDM_bottone_SPCTM2.clicked.connect(self.ldm_lancia_spctm2)
+        self.LDM_label_MOTOR = QLabel('Motors')
+        self.LDM_rots1_b = QPushButton('ROTS 1')
+        self.LDM_rots1_b.clicked.connect(self.ldm_lancia_rots)
+        self.LDM_rots1_r = LineEditRO()
+        self.LDM_rots1_w = QLineEdit()
+        self.LDM_rots1_a = QPushButton('Apply')
+        self.LDM_rots1_a.clicked.connect(self.ldm_rots1_applica)
+        self.LDM_rots1_relative = movimentirelativi()
+        self.LDM_rots1_relative.muoviM.clicked.connect(self.ldm_rots1_rm)
+        self.LDM_rots1_relative.muoviP.clicked.connect(self.ldm_rots1_rp)
+        self.LDM_rots2_b = QPushButton('ROTS 2')
+        self.LDM_rots2_b.clicked.connect(self.ldm_lancia_rots)
+        self.LDM_rots2_r = LineEditRO()
+        self.LDM_rots2_w = QLineEdit()
+        self.LDM_rots2_a = QPushButton('Apply')
+        self.LDM_rots2_a.clicked.connect(self.ldm_rots2_applica)
+        self.LDM_rots2_relative = movimentirelativi()
+        self.LDM_rots2_relative.muoviM.clicked.connect(self.ldm_rots2_rm)
+        self.LDM_rots2_relative.muoviP.clicked.connect(self.ldm_rots2_rp)
+        self.LDM_rots3_b = QPushButton('ROTS 3')
+        self.LDM_rots3_b.clicked.connect(self.ldm_lancia_rots)
+        self.LDM_rots3_r = LineEditRO()
+        self.LDM_rots3_w = QLineEdit()
+        self.LDM_rots3_a = QPushButton('Apply')
+        self.LDM_rots3_a.clicked.connect(self.ldm_rots3_applica)
+        self.LDM_rots3_relative = movimentirelativi()
+        self.LDM_rots3_relative.muoviM.clicked.connect(self.ldm_rots3_rm)
+        self.LDM_rots3_relative.muoviP.clicked.connect(self.ldm_rots3_rp)
+        self.LDM_trls2_b = QPushButton('Focus')
+        self.LDM_trls2_b.clicked.connect(self.ldm_lancia_trls2)
+        self.LDM_trls2_r = LineEditRO()
+        self.LDM_trls2_w = QLineEdit()
+        self.LDM_trls2_a = QPushButton('Apply')
+        self.LDM_trls2_a.clicked.connect(self.ldm_trls2_applica)
+        self.LDM_trls2_relative = movimentirelativi()
+        self.LDM_trls2_relative.muoviM.clicked.connect(self.ldm_trls2_rm)
+        self.LDM_trls2_relative.muoviP.clicked.connect(self.ldm_trls2_rp)
+        self.LDM_kom1_b = QPushButton('KOM1')
+        self.LDM_kom1_b.clicked.connect(self.ldm_lancia_kom1)
+        self.LDM_kom1_rx = LineEditRO()
+        self.LDM_kom1_ry = LineEditRO()
+        self.LDM_kom1_rel = movimentiacroce()
+        self.LDM_kom1_rel.muoviSU.clicked.connect(self.ldm_kom1_yp)
+        self.LDM_kom1_rel.muoviGIU.clicked.connect(self.ldm_kom1_ym)
+        self.LDM_kom1_rel.muoviDX.clicked.connect(self.ldm_kom1_xp)
+        self.LDM_kom1_rel.muoviSX.clicked.connect(self.ldm_kom1_xm)
+        self.LDM_kom2_b = QPushButton('KOM2')
+        self.LDM_kom2_b.clicked.connect(self.ldm_lancia_kom2)
+        self.LDM_kom2_rx = LineEditRO()
+        self.LDM_kom2_ry = LineEditRO()
+        self.LDM_kom2_rel = movimentiacroce()
+        self.LDM_kom2_rel.muoviSU.clicked.connect(self.ldm_kom2_ym)
+        self.LDM_kom2_rel.muoviGIU.clicked.connect(self.ldm_kom2_yp)
+        self.LDM_kom2_rel.muoviDX.clicked.connect(self.ldm_kom2_xp)
+        self.LDM_kom2_rel.muoviSX.clicked.connect(self.ldm_kom2_xm)
+        self.LDM_feedback1 = QPushButton('pointing Harmonics')
+        self.LDM_feedback1_state = LineEditRO()
+        self.LDM_feedback2 = QPushButton('pointing Fundamental')
+        self.LDM_feedback2_state = LineEditRO()
+        lo_bottoni = QGridLayout()
+        lo_bottoni.addWidget(self.LDM_label_CCD, 0, 0)
+        lo_bottoni.addWidget(self.LDM_bottone_CCD0, 1, 0)
+        lo_bottoni.addWidget(self.LDM_bottone_CCD3, 1, 1)
+        lo_bottoni.addWidget(self.LDM_bottone_CCD4, 2, 0)
+        lo_bottoni.addWidget(self.LDM_bottone_CCD6, 2, 1)
+        lo_bottoni.addWidget(self.LDM_bottone_CCD7, 3, 0)
+        lo_bottoni.addWidget(self.LDM_bottone_CCD9, 3, 1)
+        lo_bottoni.addWidget(QHLine(), 4, 0, 1, 2)
+        lo_bottoni.addWidget(self.LDM_label_EM, 5, 0)
+        lo_bottoni.addWidget(self.LDM_bottone_EM1, 6, 0)
+        lo_bottoni.addWidget(self.LDM_bottone_EM1bis, 6, 1)
+        lo_bottoni.addWidget(self.LDM_bottone_EM2, 7, 0)
+        lo_bottoni.addWidget(self.LDM_bottone_EM2bis, 7,1)
+        lo_bottoni.addWidget(QHLine(), 8, 0, 1, 2)
+        lo_bottoni.addWidget(self.LDM_label_SPCTM, 9, 0)
+        lo_bottoni.addWidget(self.LDM_bottone_SPCTM1, 10, 0)
+        lo_bottoni.addWidget(self.LDM_bottone_SPCTM2, 10, 1)
+        lo_bottoni.addWidget(QHLine(), 11, 0, 1, 2)
+        lo_bottoni.addWidget(QLabel('Feedbacks'), 12, 0)
+        lo_bottoni.addWidget(self.LDM_feedback1, 13, 0)
+        lo_bottoni.addWidget(self.LDM_feedback1_state, 13, 1)
+        lo_bottoni.addWidget(self.LDM_feedback2, 14, 0)
+        lo_bottoni.addWidget(self.LDM_feedback2_state, 14, 1)
+        lot12.addLayout(lo_bottoni, 0, 0, 11, 2)
+        lot12.addWidget(QVLine(), 0, 2, 11, 1)
+        riga = 0
+        
+        lot12.addWidget(self.LDM_label_MOTOR, riga, 3)
+        riga +=1
+        lot12.addWidget(self.LDM_rots1_b, riga, 3)
+        lot12.addWidget(self.LDM_rots1_r, riga, 4)
+        lot12.addWidget(self.LDM_rots1_w, riga, 5)
+        lot12.addWidget(self.LDM_rots1_a, riga, 6)
+        lot12.addWidget(self.LDM_rots1_relative, riga, 7, 1, 2)
+        riga +=1
+        lot12.addWidget(self.LDM_rots2_b, riga, 3)
+        lot12.addWidget(self.LDM_rots2_r, riga, 4)
+        lot12.addWidget(self.LDM_rots2_w, riga, 5)
+        lot12.addWidget(self.LDM_rots2_a, riga, 6)
+        lot12.addWidget(self.LDM_rots2_relative, riga, 7, 1, 2)
+        riga +=1
+        lot12.addWidget(self.LDM_rots3_b, riga, 3)
+        lot12.addWidget(self.LDM_rots3_r, riga, 4)
+        lot12.addWidget(self.LDM_rots3_w, riga, 5)
+        lot12.addWidget(self.LDM_rots3_a, riga, 6)
+        lot12.addWidget(self.LDM_rots3_relative, riga, 7, 1, 2)
+        riga +=1
+        lot12.addWidget(self.LDM_trls2_b, riga, 3)
+        lot12.addWidget(self.LDM_trls2_r, riga, 4)
+        lot12.addWidget(self.LDM_trls2_w, riga, 5)
+        lot12.addWidget(self.LDM_trls2_a, riga, 6)
+        lot12.addWidget(self.LDM_trls2_relative, riga, 7, 1, 2)
+        riga +=1
+        lot12.addWidget(self.LDM_kom1_b, riga, 3)
+        lot12.addWidget(self.LDM_kom2_b, riga, 6)
+#        riga +=1
+        lot12.addWidget(self.LDM_kom1_rx, riga, 4)
+        lot12.addWidget(self.LDM_kom2_rx, riga, 7)
+#        riga +=1
+        lot12.addWidget(self.LDM_kom1_ry, riga, 5)
+        lot12.addWidget(self.LDM_kom2_ry, riga, 8)
+        riga +=1
+        lot12.addWidget(self.LDM_kom1_rel, riga, 3, 5, 3)
+        lot12.addWidget(self.LDM_kom2_rel, riga, 6, 5, 3)
+    #9 timer
+    #10 timex
+    #11 diproi
+    #12 ldm
+    #13 magnedyn
+    #14 alarm
+        self.allarme_enablebeep = QCheckBox('Beep ON')
+        self.allarme_test = QPushButton('Test')
+        self.allarme_test.clicked.connect(self.provailbeep)
+        self.allarme_source_amplifier_current = Riga_allarmi('Numero source_amplifier_current')
+        self.allarme_source_amplifier_temperature = Riga_allarmi('Numero source_amplifier_temperature')
+        self.allarme_source_amplifier_inputfb = Riga_allarmi('Numero source_amplifier_inputfb')
+        self.allarme_source_amplifier_timefb = Riga_allarmi('Numero source_amplifier_timefb')
+        self.allarme_source_launchenergy = Riga_allarmi('Numero source_launch_energy') #o amplifier energy?
+        self.allarme_pointingfb = Riga_allarmi('Stato pointing_feedback')
+        self.allarme_pointingtt1 = Riga_allarmi('Numero pointing_tt1')
+        self.allarme_pointingtt2 = Riga_allarmi('Numero pointing_tt2')
+        self.allarme_pointingtt3 = Riga_allarmi('Numero pointing_tt3')
+        self.allarme_pointingtt4 = Riga_allarmi('Numero pointing_tt4')
+        self.allarme_pointingtt5 = Riga_allarmi('Numero pointing_tt5')      
+        self.allarme_vacuumUH = Riga_allarmi('Numero vacuum_uh')
+        self.allarme_vacuumtotem = Riga_allarmi('Numero vacuum_totem')
+        self.allarme_vacuumbl = Riga_allarmi('Numero vacuum_bl')
+        self.allarme_tempuhbb1 = Riga_allarmi('Numero temperature_uh_bb1')
+        self.allarme_tempuhbb2 = Riga_allarmi('Numero temperature_uh_bb2')
+        self.allarme_temptotemup = Riga_allarmi('Numero temperature_totem_up')
+        self.allarme_temptotemdown = Riga_allarmi('Numero temperature_totem_down')
+        self.allarme_tempibtmx = Riga_allarmi('Numero temperature_ib_tmx')
+        self.allarme_tempibtmr = Riga_allarmi('Numero temperature_ib_tmr')
+        self.allarme_tempibdpi = Riga_allarmi('Numero temperature_ib_dpi')
+        self.allarme_tempibldm = Riga_allarmi('Numero temperature_ib_ldm')
+        self.allarme_tempibmag = Riga_allarmi('Numero temperature_ib_mag')
+        lot14.addWidget(self.allarme_enablebeep, 0, 0)
+        lot14.addWidget(self.allarme_test, 0, 1)
+        lot14.addWidget(self.allarme_source_amplifier_current, 10, 0)
+        lot14.addWidget(self.allarme_source_amplifier_temperature, 11, 0)
+        lot14.addWidget(self.allarme_source_amplifier_inputfb, 12, 0)
+        lot14.addWidget(self.allarme_source_amplifier_timefb, 13, 0)
+        lot14.addWidget(self.allarme_source_launchenergy, 14, 0)
+        lot14.addWidget(self.allarme_pointingfb, 15, 0)
+        lot14.addWidget(self.allarme_pointingtt1, 16, 0)
+        lot14.addWidget(self.allarme_pointingtt2, 17, 0)
+        lot14.addWidget(self.allarme_pointingtt3, 18, 0)
+        lot14.addWidget(self.allarme_pointingtt4, 10, 1)
+        lot14.addWidget(self.allarme_pointingtt5, 11, 1)
+        lot14.addWidget(self.allarme_vacuumUH, 12, 1)
+        lot14.addWidget(self.allarme_vacuumtotem, 13, 1)
+        lot14.addWidget(self.allarme_vacuumbl, 14, 1)
+        lot14.addWidget(self.allarme_tempuhbb1, 15, 1)
+        lot14.addWidget(self.allarme_tempuhbb2, 16, 1)
+        lot14.addWidget(self.allarme_temptotemup, 17, 1)
+        lot14.addWidget(self.allarme_temptotemdown, 18, 1)
+        lot14.addWidget(self.allarme_tempibtmx, 10, 2)
+        lot14.addWidget(self.allarme_tempibtmr, 11, 2)
+        lot14.addWidget(self.allarme_tempibdpi, 12, 2)
+        lot14.addWidget(self.allarme_tempibldm, 13, 2)
+        lot14.addWidget(self.allarme_tempibmag, 14, 2)
     ### generale
         loglobale = QGridLayout()
         loglobale.addWidget(self.gruppobeamline, 0, 0)
-        loglobale.addWidget(self.grupposorgente, 1, 0)
-        loglobale.addWidget(self.grupposhutter, 2, 0)
-        loglobale.addWidget(self.gruppofeedback, 3, 0)
-        loglobale.addWidget(self.gruppodelay, 4, 0)
+        loglobale.addWidget(self.contienitab, 1, 0)
         self.setLayout(loglobale)
         self.setStyleSheet("QDialog {background-color: rgb(160, 220, 160)}" + "QGroupBox {background-color: rgb(200, 255, 200)}")
         self.setWindowTitle("SLU Source monitor")
@@ -438,8 +1158,27 @@ class MainWindow(QDialog):
         self.update()
 
     def update(self):
-        self.beamlineattiva.setText(str(self.linea))
-        #stato SLU e interlock
+        t0 = time.time()
+        #calendario
+        if self.autodeterminazionedeipupoli == 0:
+            try:
+                risposta_calendario = sacco['calendario'].activity
+            except:
+                risposta_calendario = ''
+            self.beamlineattiva.setText(risposta_calendario)
+            self.linea = risposta_calendario        
+####8 log
+        try:
+            risposta_archiviatore = sacco['archiviatore'].context
+        except:
+            risposta_archiviatore = ''
+        self.monitor_log.setText(risposta_archiviatore)
+        self.contesto_r.setText(risposta_archiviatore)
+        if risposta_archiviatore in self.linea:
+            self.monitor_log.setStyleSheet("background-color: rgb(0, 255, 0)")
+        else:
+            self.monitor_log.setStyleSheet("background-color: rgb(255, 0, 0)")
+####1 stato SLU e interlock
         try:
             tmp = sacco['interlock'].read_attributes(['BSH', 'BSH_Abi', 'Cover', 'Door', 'Plc_status', 'Key'])
             if tmp[5].value[10]: #laser OFF
@@ -456,261 +1195,330 @@ class MainWindow(QDialog):
                 self.STATOSLU.setStyleSheet("background-color: rgb(255, 0, 0)")
         #valvolevuoto e shutter
             if tmp[0].value[0] or tmp[0].value[2]: #shutter slr e valvola vuoto
-                self.letturashutterlaser.setText('CLOSED')
-                self.letturashutterlaser.setStyleSheet("background-color: rgb(255, 255, 255)")
+                self.monitor_letturashutterlaser.setText('CLOSED')
+                self.monitor_letturashutterlaser.setStyleSheet("background-color: rgb(255, 255, 255)")
             if tmp[0].value[1] and tmp[0].value[3]: #shutter slr e valvola vuoto
-                self.letturashutterlaser.setText('OPENED')
-                self.letturashutterlaser.setStyleSheet("background-color: rgb(0, 255, 0)")
+                self.monitor_letturashutterlaser.setText('OPENED')
+                self.monitor_letturashutterlaser.setStyleSheet("background-color: rgb(0, 255, 0)")
             if self.linea == 'TIMEX' and tmp[0].value[5]:
-                self.letturashutterbeamline.setText('CLOSED') #timex
-                self.letturashutterbeamline.setStyleSheet("background-color: rgb(255, 255, 255)")
+                self.monitor_letturashutterbeamline.setText('CLOSED') #timex
+                self.monitor_letturashutterbeamline.setStyleSheet("background-color: rgb(255, 255, 255)")
             if self.linea == 'TIMEX' and tmp[0].value[7]:
-                self.letturashutterbeamline.setText('OPENED') #timex
-                self.letturashutterbeamline.setStyleSheet("background-color: rgb(0, 255, 0)")
+                self.monitor_letturashutterbeamline.setText('OPENED') #timex
+                self.monitor_letturashutterbeamline.setStyleSheet("background-color: rgb(0, 255, 0)")
             if self.linea == 'DIPROI' and tmp[0].value[8]:
-                self.letturashutterbeamline.setText('CLOSED') #diproi
-                self.letturashutterbeamline.setStyleSheet("background-color: rgb(255, 255, 255)")
+                self.monitor_letturashutterbeamline.setText('CLOSED') #diproi
+                self.monitor_letturashutterbeamline.setStyleSheet("background-color: rgb(255, 255, 255)")
             if self.linea == 'DIPROI' and tmp[0].value[10]:
-                self.letturashutterbeamline.setText('OPENED') #diproi
-                self.letturashutterbeamline.setStyleSheet("background-color: rgb(0, 255, 0)")
+                self.monitor_letturashutterbeamline.setText('OPENED') #diproi
+                self.monitor_letturashutterbeamline.setStyleSheet("background-color: rgb(0, 255, 0)")
             if self.linea == 'LDM' and tmp[0].value[11]:
-                self.letturashutterbeamline.setText('CLOSED') #ldm
-                self.letturashutterbeamline.setStyleSheet("background-color: rgb(255, 255, 255)")
+                self.monitor_letturashutterbeamline.setText('CLOSED') #ldm
+                self.monitor_letturashutterbeamline.setStyleSheet("background-color: rgb(255, 255, 255)")
             if self.linea == 'LDM' and tmp[0].value[13]:
-                self.letturashutterbeamline.setText('OPENED') #ldm
-                self.letturashutterbeamline.setStyleSheet("background-color: rgb(0, 255, 0)")
+                self.monitor_letturashutterbeamline.setText('OPENED') #ldm
+                self.monitor_letturashutterbeamline.setStyleSheet("background-color: rgb(0, 255, 0)")
             if self.linea == 'TIMER' and tmp[0].value[14]:
-                self.letturashutterbeamline.setText('CLOSED') #timer
-                self.letturashutterbeamline.setStyleSheet("background-color: rgb(255, 255, 255)")
+                self.monitor_letturashutterbeamline.setText('CLOSED') #timer
+                self.monitor_letturashutterbeamline.setStyleSheet("background-color: rgb(255, 255, 255)")
             if self.linea == 'TIMER' and tmp[0].value[16]:
-                self.letturashutterbeamline.setText('OPENED') #timer
-                self.letturashutterbeamline.setStyleSheet("background-color: rgb(0, 255, 0)")
+                self.monitor_letturashutterbeamline.setText('OPENED') #timer
+                self.monitor_letturashutterbeamline.setStyleSheet("background-color: rgb(0, 255, 0)")
             if self.linea == 'MAGNEDYN' and tmp[0].value[19]:
-                self.letturashutterbeamline.setText('CLOSED') #magnedyn
-                self.letturashutterbeamline.setStyleSheet("background-color: rgb(255, 255, 255)")
+                self.monitor_letturashutterbeamline.setText('CLOSED') #magnedyn
+                self.monitor_letturashutterbeamline.setStyleSheet("background-color: rgb(255, 255, 255)")
             if self.linea == 'MAGNEDYN' and tmp[0].value[21]:
-                self.letturashutterbeamline.setText('OPENED') #magnedyn
-                self.letturashutterbeamline.setStyleSheet("background-color: rgb(0, 255, 0)")
+                self.monitor_letturashutterbeamline.setText('OPENED') #magnedyn
+                self.monitor_letturashutterbeamline.setStyleSheet("background-color: rgb(0, 255, 0)")
         #abilitazioni
             if tmp[1].value[0] and tmp[1].value[10]:
-                self.abilitatoshutterlaser.setText('ENABLED')
-                self.abilitatoshutterlaser.setStyleSheet("background-color: rgb(0, 255, 0)")
+                self.monitor_abilitatoshutterlaser.setText('ENABLED')
+                self.monitor_abilitatoshutterlaser.setStyleSheet("background-color: rgb(0, 255, 0)")
             else:
-                self.abilitatoshutterlaser.setText('DISABLED')
-                self.abilitatoshutterlaser.setStyleSheet("background-color: rgb(255, 0, 0)")
+                self.monitor_abilitatoshutterlaser.setText('DISABLED')
+                self.monitor_abilitatoshutterlaser.setStyleSheet("background-color: rgb(255, 0, 0)")
             if self.linea == 'TIMEX' and tmp[1].value[1]:
-                self.abilitatoshutterbeamline.setText('ENABLED') #timex
-                self.abilitatoshutterbeamline.setStyleSheet("background-color: rgb(0, 255, 0)")
+                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.abilitatoshutterbeamline.setText('DISABLED') #timex
-                self.abilitatoshutterbeamline.setStyleSheet("background-color: rgb(255, 0, 0)")
+                self.monitor_abilitatoshutterbeamline.setText('DISABLED') #timex
+                self.monitor_abilitatoshutterbeamline.setStyleSheet("background-color: rgb(255, 0, 0)")
             elif self.linea == 'DIPROI' and tmp[1].value[2]:
-                self.abilitatoshutterbeamline.setText('ENABLED') #diproi
-                self.abilitatoshutterbeamline.setStyleSheet("background-color: rgb(0, 255, 0)")
+                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.abilitatoshutterbeamline.setText('DISABLED') #diproi
-                self.abilitatoshutterbeamline.setStyleSheet("background-color: rgb(255, 0, 0)")
+                self.monitor_abilitatoshutterbeamline.setText('DISABLED') #diproi
+                self.monitor_abilitatoshutterbeamline.setStyleSheet("background-color: rgb(255, 0, 0)")
             elif self.linea == 'LDM' and tmp[1].value[3]:
-                self.abilitatoshutterbeamline.setText('ENABLED') #ldm
-                self.abilitatoshutterbeamline.setStyleSheet("background-color: rgb(0, 255, 0)")
+                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.abilitatoshutterbeamline.setText('DISABLED') #ldm
-                self.abilitatoshutterbeamline.setStyleSheet("background-color: rgb(255, 0, 0)")
+                self.monitor_abilitatoshutterbeamline.setText('DISABLED') #ldm
+                self.monitor_abilitatoshutterbeamline.setStyleSheet("background-color: rgb(255, 0, 0)")
             elif self.linea == 'TIMER' and tmp[1].value[4]:
-                self.abilitatoshutterbeamline.setText('ENABLED') #timer
-                self.abilitatoshutterbeamline.setStyleSheet("background-color: rgb(0, 255, 0)")
+                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.abilitatoshutterbeamline.setText('DISABLED') #timer
-                self.abilitatoshutterbeamline.setStyleSheet("background-color: rgb(255, 0, 0)")
+                self.monitor_abilitatoshutterbeamline.setText('DISABLED') #timer
+                self.monitor_abilitatoshutterbeamline.setStyleSheet("background-color: rgb(255, 0, 0)")
             elif self.linea == 'MAGNEDYN' and tmp[1].value[12]:
-                self.abilitatoshutterbeamline.setText('ENABLED') #magnedyn
-                self.abilitatoshutterbeamline.setStyleSheet("background-color: rgb(0, 255, 0)")
+                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.abilitatoshutterbeamline.setText('DISABLED') #magnedyn
-                self.abilitatoshutterbeamline.setStyleSheet("background-color: rgb(255, 0, 0)")
+                self.monitor_abilitatoshutterbeamline.setText('DISABLED') #magnedyn
+                self.monitor_abilitatoshutterbeamline.setStyleSheet("background-color: rgb(255, 0, 0)")
             else:
-                self.abilitatoshutterbeamline.setText('Unknown') #?
-                self.abilitatoshutterbeamline.setStyleSheet("background-color: rgb(255, 0, 0)")
-        #porte, coperchi e plc
+                self.monitor_abilitatoshutterbeamline.setText('Unknown') #?
+                self.monitor_abilitatoshutterbeamline.setStyleSheet("background-color: rgb(255, 0, 0)")
+        #monitor_porte, monitor_coperchi e plc
             if False in tmp[2].value[0:5]:
-                self.coperchi.setText('Cover open')
-                self.coperchi.setStyleSheet("background-color: rgb(255, 0, 0)")
+                self.monitor_coperchi.setText('Cover open')
+                self.monitor_coperchi.setStyleSheet("background-color: rgb(255, 0, 0)")
             else:
-                self.coperchi.setText('All OK')
-                self.coperchi.setStyleSheet("background-color: rgb(0, 255, 0)")
+                self.monitor_coperchi.setText('All OK')
+                self.monitor_coperchi.setStyleSheet("background-color: rgb(0, 255, 0)")
             if self.linea == 'MAGNEDYN':
                 if tmp[3].value[8] == False or tmp[3].value[9] == False:
-                    self.porte.setText('Doors open')
-                    self.porte.setStyleSheet("background-color: rgb(255, 0, 0)")
+                    self.monitor_porte.setText('Doors open')
+                    self.monitor_porte.setStyleSheet("background-color: rgb(255, 0, 0)")
                 else:
-                    self.porte.setText('All OK')
-                    self.porte.setStyleSheet("background-color: rgb(0, 255, 0)")
+                    self.monitor_porte.setText('All OK')
+                    self.monitor_porte.setStyleSheet("background-color: rgb(0, 255, 0)")
             else:
                 if tmp[3].value[13] == False:
-                    self.porte.setText('Doors open')
-                    self.porte.setStyleSheet("background-color: rgb(255, 0, 0)")
+                    self.monitor_porte.setText('Doors open')
+                    self.monitor_porte.setStyleSheet("background-color: rgb(255, 0, 0)")
                 else:
-                    self.porte.setText('All OK')
-                    self.porte.setStyleSheet("background-color: rgb(0, 255, 0)")
+                    self.monitor_porte.setText('All OK')
+                    self.monitor_porte.setStyleSheet("background-color: rgb(0, 255, 0)")
             if tmp[4].value == False:
-                self.piellecci.setText('PLC state')
-                self.piellecci.setStyleSheet("background-color: rgb(255, 0, 0)")
+                self.monitor_piellecci.setText('PLC state')
+                self.monitor_piellecci.setStyleSheet("background-color: rgb(255, 0, 0)")
             else:
-                self.piellecci.setText('All OK')
-                self.piellecci.setStyleSheet("background-color: rgb(0, 255, 0)")
+                self.monitor_piellecci.setText('All OK')
+                self.monitor_piellecci.setStyleSheet("background-color: rgb(0, 255, 0)")
         except:
             self.STATOSLU.setText('Unknown')
             self.STATOSLU.setStyleSheet("background-color: rgb(150, 150, 150)")
-            self.letturashutterlaser.setText('Unknown')
-            self.letturashutterlaser.setStyleSheet("background-color: rgb(150, 150, 150)")
-            self.letturashutterbeamline.setText('Unknown')
-            self.letturashutterbeamline.setStyleSheet("background-color: rgb(150, 150, 150)")
-            self.abilitatoshutterlaser.setText('Unknown')
-            self.abilitatoshutterlaser.setStyleSheet("background-color: rgb(150, 150, 150)")
-            self.abilitatoshutterbeamline.setText('Unknown')
-            self.abilitatoshutterbeamline.setStyleSheet("background-color: rgb(150, 150, 150)")
-            self.porte.setText('Unknown')
-            self.porte.setStyleSheet("background-color: rgb(150, 150, 150)")
-            self.coperchi.setText('Unknown')
-            self.coperchi.setStyleSheet("background-color: rgb(150, 150, 150)")
-        #vuoto
+            self.monitor_letturashutterlaser.setText('Unknown')
+            self.monitor_letturashutterlaser.setStyleSheet("background-color: rgb(150, 150, 150)")
+            self.monitor_letturashutterbeamline.setText('Unknown')
+            self.monitor_letturashutterbeamline.setStyleSheet("background-color: rgb(150, 150, 150)")
+            self.monitor_abilitatoshutterlaser.setText('Unknown')
+            self.monitor_abilitatoshutterlaser.setStyleSheet("background-color: rgb(150, 150, 150)")
+            self.monitor_abilitatoshutterbeamline.setText('Unknown')
+            self.monitor_abilitatoshutterbeamline.setStyleSheet("background-color: rgb(150, 150, 150)")
+            self.monitor_porte.setText('Unknown')
+            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)")
+####2+7 SOURCE
+        condizione_source = 0
+        testo_source = ''
+        #revolution
         try:
-            READ_vuotoutdr = sacco['vuoto1'].read_attribute('Pressure')
-            self.vuotoutdr.setText(str(round(READ_vuotoutdr.value, 1)) + ' mBar')
-            if str(READ_vuotoutdr.quality) == 'ATTR_VALID':
-                self.vuotoutdr.setStyleSheet("background-color: rgb(0, 255, 0)")
-            elif str(READ_vuotoutdr.quality) == 'ATTR_ALARM':
-                self.vuotoutdr.setStyleSheet("background-color: rgb(255, 0, 0)")
-            elif str(READ_vuotoutdr.quality) == 'ATTR_WARNING':
-                self.vuotoutdr.setStyleSheet("background-color: rgb(255, 255, 0)")
+            tmp = sacco['revolution'].read_attributes(['State', 'Current'])
+            risposta_statoampli = str(tmp[0].value)
+            risposta_correnteampli = tmp[1].value
+            if str(tmp[1].quality) != 'ATTR_VALID':
+                self.source_amplicurrent.setStyleSheet("background-color: rgb(255, 0, 0)")
             else:
-                self.vuotoutdr.setStyleSheet("background-color: rgb(150, 150, 150)")
+                condizione_source += 1
+                self.source_amplicurrent.setStyleSheet("background-color: rgb(0, 255, 0)")
         except:
-            self.vuotoutdr.setText('Unknown')
-            self.vuotoutdr.setStyleSheet("background-color: rgb(150, 150, 150)")
+            risposta_statoampli = ''
+            risposta_correnteampli = -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)")
+        else:
+            condizione_source += 1
+            self.source_amplistate.setStyleSheet("background-color: rgb(0, 255, 0)")
+        #attenuatore
         try:
-            READ_vuotouh = sacco['vuoto2'].read_attribute('Pressure')
-            self.vuotouh.setText(str(round(READ_vuotouh.value, 1)) + ' mBar')
-            if str(READ_vuotouh.quality) == 'ATTR_VALID':
-                self.vuotouh.setStyleSheet("background-color: rgb(0, 255, 0)")
-            elif str(READ_vuotouh.quality) == 'ATTR_ALARM':
-                self.vuotouh.setStyleSheet("background-color: rgb(255, 0, 0)")
-            elif str(READ_vuotouh.quality) == 'ATTR_WARNING':
-                self.vuotouh.setStyleSheet("background-color: rgb(255, 255, 0)")
-            else:
-                self.vuotouh.setStyleSheet("background-color: rgb(150, 150, 150)")
+            tmp = sacco['attenuator'].Position
         except:
-            self.vuotouh.setText('Unknown')
-            self.vuotouh.setStyleSheet("background-color: rgb(150, 150, 150)")
+            tmp = -1
+        self.source_attenuator.setText(str(round(tmp, 2)) + ' deg')
+        #temperature
+        temperaturefuori = 0
         try:
-            READ_vuotouhtotem = sacco['vuoto3'].read_attribute('Pressure')
-            self.vuotouhtotem.setText(str(round(READ_vuotouhtotem.value, 1)) + ' mBar')
-            if str(READ_vuotouhtotem.quality) == 'ATTR_VALID':
-                self.vuotouhtotem.setStyleSheet("background-color: rgb(0, 255, 0)")
-            elif str(READ_vuotouhtotem.quality) == 'ATTR_ALARM':
-                self.vuotouhtotem.setStyleSheet("background-color: rgb(255, 0, 0)")
-            elif str(READ_vuotouhtotem.quality) == 'ATTR_WARNING':
-                self.vuotouhtotem.setStyleSheet("background-color: rgb(255, 255, 0)")
+            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'])
+            risposta_trevo = round(tmp[0].value, 1)
+            risposta_telite = round(tmp[1].value, 1)
+            risposta_tslrt2 = round(tmp[2].value, 1)
+            risposta_tslrt1 = round(tmp[3].value, 1)
+            risposta_tuh1 = round(tmp[4].value, 1)
+            risposta_tuh2 = round(tmp[5].value, 1)
+            risposta_tutdr = round(tmp[6].value, 1)
+            if str(tmp[0].quality) != 'ATTR_VALID':
+                self.source_amplipumptemperature.setStyleSheet("background-color: rgb(255, 0, 0)")
+                self.tem_revo_r.setStyleSheet("background-color: rgb(255, 0, 0)")
+                temperaturefuori += 1
             else:
-                self.vuotouhtotem.setStyleSheet("background-color: rgb(150, 150, 150)")
-        except:
-            self.vuotouhtotem.setText('Unknown')
-            self.vuotouhtotem.setStyleSheet("background-color: rgb(150, 150, 150)")
-        try:
-            READ_vuotototembeamline = sacco['vuoto4'].read_attribute('Pressure')
-            self.vuotototembeamline.setText(str(round(READ_vuotototembeamline.value, 1)) + ' mBar')
-            if str(READ_vuotototembeamline.quality) == 'ATTR_VALID':
-                self.vuotototembeamline.setStyleSheet("background-color: rgb(0, 255, 0)")
-            elif str(READ_vuotototembeamline.quality) == 'ATTR_ALARM':
-                self.vuotototembeamline.setStyleSheet("background-color: rgb(255, 0, 0)")
-            elif str(READ_vuotototembeamline.quality) == 'ATTR_WARNING':
-                self.vuotototembeamline.setStyleSheet("background-color: rgb(255, 255, 0)")
+                condizione_source += 1
+                self.source_amplipumptemperature.setStyleSheet("background-color: rgb(0, 255, 0)")
+                self.tem_revo_r.setStyleSheet("background-color: rgb(0, 255, 0)")
+            if str(tmp[1].quality) != 'ATTR_VALID':
+                self.source_amplitemperature.setStyleSheet("background-color: rgb(255, 0, 0)")
+                self.tem_elite_r.setStyleSheet("background-color: rgb(255, 0, 0)")
+                temperaturefuori += 1
             else:
-                self.vuotototembeamline.setStyleSheet("background-color: rgb(150, 150, 150)")
-        except:
-            self.vuotouhtotem.setText('Unknown')
-            self.vuotouhtotem.setStyleSheet("background-color: rgb(150, 150, 150)")
-        #sourcefb
-        stato_globale_amplificatore = 0
-        try:
-            sourcecurrent = sacco['pump'].read_attribute('Current')
-            if str(sourcecurrent.quality) == 'ATTR_VALID':
-                stato_globale_amplificatore +=1
-        except:
-            print('Errore lettura corrente in update/#sourcefb')
-        try:
-            sourcetemperature = sacco['pumptemperature'].read_attribute(sensoretemperatura)
-            if str(sourcetemperature.quality) == 'ATTR_VALID':
-                stato_globale_amplificatore +=1
+                condizione_source += 1
+                self.source_amplitemperature.setStyleSheet("background-color: rgb(0, 255, 0)")
+                self.tem_elite_r.setStyleSheet("background-color: rgb(0, 255, 0)")
+            if str(tmp[2].quality) != 'ATTR_VALID':
+                self.tem_table2_r.setStyleSheet("background-color: rgb(255, 0, 0)")
+                temperaturefuori += 1
+            else:
+                self.tem_table2_r.setStyleSheet("background-color: rgb(0, 255, 0)")
+            if str(tmp[3].quality) != 'ATTR_VALID':
+                self.tem_table1_r.setStyleSheet("background-color: rgb(255, 0, 0)")
+                temperaturefuori += 1
+            else:
+                self.tem_table1_r.setStyleSheet("background-color: rgb(0, 255, 0)")
+            if str(tmp[6].quality) != 'ATTR_VALID':
+                self.tem_utdr_r.setStyleSheet("background-color: rgb(255, 0, 0)")
+                temperaturefuori += 1
+            else:
+                self.tem_utdr_r.setStyleSheet("background-color: rgb(0, 255, 0)")
+            if str(tmp[4].quality) != 'ATTR_VALID':
+                self.tem_uhbb1_r.setStyleSheet("background-color: rgb(255, 0, 0)")
+                temperaturefuori += 1
+            else:
+                self.tem_uhbb1_r.setStyleSheet("background-color: rgb(0, 255, 0)")
+            if str(tmp[5].quality) != 'ATTR_VALID':
+                self.tem_uhbb2_r.setStyleSheet("background-color: rgb(255, 0, 0)")
+                temperaturefuori += 1
+            else:
+                self.tem_uhbb2_r.setStyleSheet("background-color: rgb(0, 255, 0)")
         except:
-            print('Errore lettura temperatura in update/#sourcefb')
+            risposta_trevo = -1
+            risposta_telite = -1
+            risposta_tutdr = -1
+            risposta_tuh1 = -1
+            risposta_tuh2 = -1
+            risposta_tslrt2 = -1
+            risposta_tslrt1 = -1
         try:
-            sourcetrigger = sacco['trigger'].read_attribute(triggerdelays)
-            if str(sourcetrigger.quality) == 'ATTR_VALID':
-                stato_globale_amplificatore +=1
+            tmp = sacco['SLUtemperature'].read_attributes(['Temp_Pt100_TotemAIR', 'Temp_Pt100_TotemDOWN', 'Temp_Pt100_TotemUP', 'Temp_Pt100_BL'])
+            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)
+            if str(tmp[0].quality) != 'ATTR_VALID':
+                self.tem_totemair_r.setStyleSheet("background-color: rgb(255, 0, 0)")
+                temperaturefuori += 1
+            else:
+                self.tem_totemair_r.setStyleSheet("background-color: rgb(0, 255, 0)")
+            if str(tmp[1].quality) != 'ATTR_VALID':
+                self.tem_totemdown_r.setStyleSheet("background-color: rgb(255, 0, 0)")
+                temperaturefuori += 1
+            else:
+                self.tem_totemdown_r.setStyleSheet("background-color: rgb(0, 255, 0)")
+            if str(tmp[2].quality) != 'ATTR_VALID':
+                self.tem_totemup_r.setStyleSheet("background-color: rgb(255, 0, 0)")
+                temperaturefuori += 1
+            else:
+                self.tem_totemup_r.setStyleSheet("background-color: rgb(0, 255, 0)")
+            if str(tmp[3].quality) != 'ATTR_VALID':
+                self.tem_ldm_r.setStyleSheet("background-color: rgb(255, 0, 0)")
+                temperaturefuori += 1
+            else:
+                self.tem_ldm_r.setStyleSheet("background-color: rgb(0, 255, 0)")
         except:
-            print('Errore lettura trigger in update/#sourcefb')
-        if stato_globale_amplificatore == 3:
-            self.globale_amplificatore.setText('Elite' + str(sorgente))
-            self.globale_amplificatore.setStyleSheet("background-color: rgb(0, 255, 0)")
-        elif stato_globale_amplificatore >0 and stato_globale_amplificatore <3:
-            self.globale_amplificatore.setText('Elite' + str(sorgente))
-            self.globale_amplificatore.setStyleSheet("background-color: rgb(255, 255, 0)")
+            risposta_tta = -1
+            risposta_ttu = -1
+            risposta_ttd = -1
+            risposta_tldm = -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')
+        self.tem_elite_r.setText(str(risposta_telite) + ' C. attribute sl/cooling/dmm_sl.01/Pt100_Elite_2')
+        self.tem_table2_r.setText(str(risposta_tslrt2) + ' C. attribute sl/cooling/dmm_sl.01/Pt100_Table2_SLR')
+        self.tem_table1_r.setText(str(risposta_tslrt1) + ' C. attribute sl/cooling/dmm_sl.01/Pt100_Table1_SLR')
+        self.tem_utdr_r.setText(str(risposta_tutdr) + ' C. attribute sl/cooling/dmm_sl.01/Pt100_SLU_UTDR')
+        self.tem_uhbb1_r.setText(str(risposta_tuh1) + ' C. attribute sl/cooling/dmm_sl.01/Pt100_SLU_BB1')
+        self.tem_uhbb2_r.setText(str(risposta_tuh2) + ' C. attribute sl/cooling/dmm_sl.01/Pt100_SLU_BB2')
+        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/')
+        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 !!")
         else:
-            self.globale_amplificatore.setText('Elite' + str(sorgente))
-            self.globale_amplificatore.setStyleSheet("background-color: rgb(255, 0, 0)")
+            self.monitor_tempera.setStyleSheet("background-color: rgb(0, 255, 0)")
+            self.monitor_tempera.setText('all OK')
+        #source feedback
+        risultatofeedback = ''
         try:
             statofbin = str(sacco['slelitefbin'].State())
-            self.statoinput.setText(statofbin)
-            if statofbin == 'ON':
-                self.statoinput.setStyleSheet("background-color: rgb(0, 255, 0)")
-            elif statofbin == 'STANDBY' or statofbin == 'WARNING':
-                self.statoinput.setStyleSheet("background-color: rgb(255, 255, 0)")
-            elif statofbin == 'OFF' or statofbin == 'ALARM':
-                self.statoinput.setStyleSheet("background-color: rgb(255, 0, 0)")
+            self.source_ampliFBin.setText(statofbin)
+            if statofbin != 'ON':
+                self.source_ampliFBin.setStyleSheet("background-color: rgb(255, 0, 0)")
+                risultatofeedback = 'NOK'
             else:
-                self.statoinput.setStyleSheet("background-color: rgb(150, 150, 150)")
+                self.source_ampliFBin.setStyleSheet("background-color: rgb(0, 255, 0)")
+                condizione_source += 1
+                risultatofeedback = 'ok'
         except:
-            self.statoinput.setText('unknown')
-            self.statoinput.setStyleSheet("background-color: rgb(150, 150, 150)")
+            self.source_ampliFBin.setText('unknown')
+            self.source_ampliFBin.setStyleSheet("background-color: rgb(255, 0, 0)")
+            risultatofeedback = 'NOK'
         try:
-            statofbout = str(sacco['slelitefbout'].State())
-            self.statooutput.setText(statofbout)
-            if statofbout == 'ON':
-                self.statooutput.setStyleSheet("background-color: rgb(0, 255, 0)")
-            elif statofbout == 'STANDBY' or statofbout == 'WARNING':
-                self.statooutput.setStyleSheet("background-color: rgb(255, 255, 0)")
-            elif statofbout == 'OFF' or statofbout == 'ALARM':
-                self.statooutput.setStyleSheet("background-color: rgb(255, 0, 0)")
+            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'
             else:
-                self.statooutput.setStyleSheet("background-color: rgb(150, 150, 150)")
+                self.source_ampliFBtime.setStyleSheet("background-color: rgb(0, 255, 0)")
+                condizione_source += 1
+                risultatofeedback = 'ok'
         except:
-            self.statooutput.setText('unknown')
-            self.statooutput.setStyleSheet("background-color: rgb(150, 150, 150)")
+            self.source_ampliFBtime.setText('unknown')
+            self.source_ampliFBtime.setStyleSheet("background-color: rgb(255, 0, 0)")
+            risultatofeedback = 'NOK'
+        #energy
         try:
-            statofbtime = str(sacco['slelitefbtime'].State())
-            self.statotime.setText(statofbtime)
-            if statofbtime == 'ON':
-                self.statotime.setStyleSheet("background-color: rgb(0, 255, 0)")
-            elif statofbtime == 'STANDBY' or statofbtime == 'WARNING':
-                self.statotime.setStyleSheet("background-color: rgb(255, 255, 0)")
-            elif statofbtime == 'OFF' or statofbtime == 'ALARM' or statofbtime == 'MOVING':
-                self.statotime.setStyleSheet("background-color: rgb(255, 0, 0)")
+            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)")
             else:
-                self.statotime.setStyleSheet("background-color: rgb(150, 150, 150)")
+                self.source_launchenergy.setStyleSheet("background-color: rgb(0, 255, 0)")
         except:
-            self.statotime.setText('unknown')
-            self.statotime.setStyleSheet("background-color: rgb(150, 150, 150)")
-        #energy
+            risposta_ems8 = -1
+        self.source_launchenergy.setText(str(round(risposta_ems8, 3)) + ' mJ')
         try:
-            tmp = sacco['emslr'].Corrected_Energy
-            self.energiaslr_lettura.setText(str(round(tmp, 3)) + ' mJ')
+            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)")
+            else:
+                self.source_amplienergy.setStyleSheet("background-color: rgb(0, 255, 0)")
+                condizione_source += 1
         except:
-            self.energiaslr_lettura.setText('Unknown')
-        #transport feedback
+            risposta_ems3 = -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)")
+        else:
+            self.monitor_ampli.setStyleSheet("background-color: rgb(0, 255, 0)")
+        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 = []
         if self.linea == 'TOTEM':
             READ_statofeedback = str(sacco['totfeedback'].State())
+            READ_pesofeedback = np.sum(sacco['totfeedback'].sensorweights)/2.0
             altrifeedback.append(str(sacco['tmrfeedback'].State()))
             altrifeedback.append(str(sacco['tmxfeedback'].State()))
             altrifeedback.append(str(sacco['dpifeedback'].State()))
@@ -718,6 +1526,7 @@ class MainWindow(QDialog):
             altrifeedback.append(str(sacco['magfeedback'].State()))
         elif self.linea == 'TIMER':
             READ_statofeedback = str(sacco['tmrfeedback'].State())
+            READ_pesofeedback = np.sum(sacco['tmrfeedback'].sensorweights)/2.0
 #            altrifeedback.append(str(sacco['totfeedback'].State()))
             altrifeedback.append(str(sacco['tmxfeedback'].State()))
             altrifeedback.append(str(sacco['dpifeedback'].State()))
@@ -725,6 +1534,7 @@ class MainWindow(QDialog):
             altrifeedback.append(str(sacco['magfeedback'].State()))
         elif self.linea == 'TIMEX':
             READ_statofeedback = str(sacco['tmxfeedback'].State())
+            READ_pesofeedback = np.sum(sacco['tmxfeedback'].sensorweights)/2.0
             altrifeedback.append(str(sacco['tmrfeedback'].State()))
 #            altrifeedback.append(str(sacco['totfeedback'].State()))
             altrifeedback.append(str(sacco['dpifeedback'].State()))
@@ -732,6 +1542,7 @@ class MainWindow(QDialog):
             altrifeedback.append(str(sacco['magfeedback'].State()))
         elif self.linea == 'DIPROI':
             READ_statofeedback = str(sacco['dpifeedback'].State())
+            READ_pesofeedback = np.sum(sacco['dpifeedback'].sensorweights)/2.0
             altrifeedback.append(str(sacco['tmrfeedback'].State()))
             altrifeedback.append(str(sacco['tmxfeedback'].State()))
 #            altrifeedback.append(str(sacco['totfeedback'].State()))
@@ -739,6 +1550,7 @@ class MainWindow(QDialog):
             altrifeedback.append(str(sacco['magfeedback'].State()))
         elif self.linea == 'LDM':
             READ_statofeedback = str(sacco['ldmfeedback'].State())
+            READ_pesofeedback = np.sum(sacco['ldmfeedback'].sensorweights)/2.0
             altrifeedback.append(str(sacco['tmrfeedback'].State()))
             altrifeedback.append(str(sacco['tmxfeedback'].State()))
             altrifeedback.append(str(sacco['dpifeedback'].State()))
@@ -746,18 +1558,28 @@ class MainWindow(QDialog):
             altrifeedback.append(str(sacco['magfeedback'].State()))
         elif self.linea == 'MAGNEDYN':
             READ_statofeedback = str(sacco['magfeedback'].State())
+            READ_pesofeedback = np.sum(sacco['magfeedback'].sensorweights)/2.0
             altrifeedback.append(str(sacco['tmrfeedback'].State()))
             altrifeedback.append(str(sacco['tmxfeedback'].State()))
             altrifeedback.append(str(sacco['dpifeedback'].State()))
             altrifeedback.append(str(sacco['ldmfeedback'].State()))
 #            altrifeedback.append(str(sacco['totfeedback'].State()))
         self.feedbackstato.setText(READ_statofeedback)
+        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)")
+        elif READ_pesofeedback < 5:
+            self.monitor_pointing.setStyleSheet("background-color: rgb(255, 255, 0)")
+        elif READ_pesofeedback == 5:
+            self.monitor_pointing.setStyleSheet("background-color: rgb(0, 255, 0)")
         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)")
         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)")
         else:
             self.feedbackstato.setStyleSheet("background-color: rgb(150, 150, 150)")
         if 'ON' in altrifeedback:
@@ -780,24 +1602,24 @@ class MainWindow(QDialog):
                 READ_stato_tiptilt = eval("str(sacco['piezo" + str(kkkk) + "'].State())")
                 perc_y = eval("np.abs(sacco['piezo" + str(kkkk) + "'].VoltageVer - 131000)/1310")
                 perc_x = eval("np.abs(sacco['piezo" + str(kkkk) + "'].VoltageHor - 131000)/1310")
-                eval("self.feedback" + str(kkkk) + "y.setValue(perc_y)")
-                eval("self.feedback" + str(kkkk) + "y.setTextVisible(1)")
-                eval("self.feedback" + str(kkkk) + "x.setValue(perc_x)")
-                eval("self.feedback" + str(kkkk) + "x.setTextVisible(1)")
+                eval("self.feedback" + str(kkkk) + ".barra_v.setValue(perc_y)")
+                eval("self.feedback" + str(kkkk) + ".barra_v.setTextVisible(1)")
+                eval("self.feedback" + str(kkkk) + ".barra_h.setValue(perc_x)")
+                eval("self.feedback" + str(kkkk) + ".barra_h.setTextVisible(1)")
                 if perc_y > 80:
-                    eval("self.feedback" + str(kkkk) + "y.setStyleSheet('background-color: rgb(255, 0, 0)')")
+                    eval("self.feedback" + str(kkkk) + ".barra_v.setStyleSheet('background-color: rgb(255, 0, 0)')")
                 else:
-                    eval("self.feedback" + str(kkkk) + "y.setStyleSheet('background-color: rgb(0, 255, 0)')")
+                    eval("self.feedback" + str(kkkk) + ".barra_v.setStyleSheet('background-color: rgb(0, 255, 0)')")
                 if perc_x > 80:
-                    eval("self.feedback" + str(kkkk) + "x.setStyleSheet('background-color: rgb(255, 0, 0)')")
+                    eval("self.feedback" + str(kkkk) + ".barra_h.setStyleSheet('background-color: rgb(255, 0, 0)')")
                 else:
-                    eval("self.feedback" + str(kkkk) + "x.setStyleSheet('background-color: rgb(0, 255, 0)')")
+                    eval("self.feedback" + str(kkkk) + ".barra_h.setStyleSheet('background-color: rgb(0, 255, 0)')")
             except:
                 READ_stato_tiptilt = '#####'
-                eval("self.feedback" + str(kkkk) + "y.setValue(0)")
-                eval("self.feedback" + str(kkkk) + "y.setTextVisible(0)")
-                eval("self.feedback" + str(kkkk) + "x.setValue(0)")
-                eval("self.feedback" + str(kkkk) + "x.setTextVisible(0)")
+                eval("self.feedback" + str(kkkk) + ".barra_v.setValue(0)")
+                eval("self.feedback" + str(kkkk) + ".barra_v.setTextVisible(0)")
+                eval("self.feedback" + str(kkkk) + ".barra_h.setValue(0)")
+                eval("self.feedback" + str(kkkk) + ".barra_h.setTextVisible(0)")
             self.convertistatotiptilt(kkkk, READ_stato_tiptilt)
         tmp = sacco['costanti'].read_attribute('voltage_tiptilt_slu01_H')
         tmpt = tmp.time.todatetime()
@@ -851,23 +1673,23 @@ class MainWindow(QDialog):
             READ_stato_ccd4 = '#####'
             ccd4pausa = False
         if READ_stato_ccd4 == 'ON' and not ccd4pausa:
-            self.feedback4monitor.setStyleSheet("background-color: #00ff00")
+            self.feedback4.tasto_ccd.setStyleSheet("background-color: #00ff00")
         elif READ_stato_ccd4 == 'OFF':
-            self.feedback4monitor.setStyleSheet("background-color: #ffffff")
+            self.feedback4.tasto_ccd.setStyleSheet("background-color: #ffffff")
         elif READ_stato_ccd4 == 'FAULT':
-            self.feedback4monitor.setStyleSheet("background-color: #ff0000")
+            self.feedback4.tasto_ccd.setStyleSheet("background-color: #ff0000")
         elif READ_stato_ccd4 == 'STANDBY' or ccd4pausa:
-            self.feedback4monitor.setStyleSheet("background-color: #ffff00")
+            self.feedback4.tasto_ccd.setStyleSheet("background-color: #ffff00")
         elif READ_stato_ccd4 == 'ALARM':
-            self.feedback4monitor.setStyleSheet("background-color: #ff9900")
+            self.feedback4.tasto_ccd.setStyleSheet("background-color: #ff9900")
         elif READ_stato_ccd4 == 'DISABLE':
-            self.feedback4monitor.setStyleSheet("background-color: #ff00ff")
+            self.feedback4.tasto_ccd.setStyleSheet("background-color: #ff00ff")
         elif READ_stato_ccd4 == 'INIT':
-            self.feedback4monitor.setStyleSheet("background-color: #dddd88")
+            self.feedback4.tasto_ccd.setStyleSheet("background-color: #dddd88")
         elif READ_stato_ccd4 == 'UNKNOWN':
-            self.feedback4monitor.setStyleSheet("background-color: #888888")
+            self.feedback4.tasto_ccd.setStyleSheet("background-color: #888888")
         else:
-            self.feedback4monitor.setStyleSheet("background-color: #888888")
+            self.feedback4.tasto_ccd.setStyleSheet("background-color: #888888")
         if 'ON' in altreccd or 'ALARM' in altreccd:
             self.feedbackstopothersccds.setDisabled(0)
             self.feedbackstopothersccds.setStyleSheet("background-color: #ff0000")
@@ -926,52 +1748,574 @@ class MainWindow(QDialog):
         else:
             self.feedbackstopothersauto.setDisabled(1)
             self.feedbackstopothersauto.setStyleSheet("background-color: lightgray")
-        # delay
+####4 decimation
+        try:
+            tmp = sacco['decima1'].read_attributes(['DelayMode', 'StatusMode', 'Sequence'])
+            self.deci1sequence_R.setText(str(tmp[2].value).replace('[', '').replace(']','').replace(' ', ', '))
+            if tmp[0].value and not tmp[1].value:
+                mod1 = 'Delay'
+            elif not tmp[0].value and tmp[1].value:
+                mod1 = 'Status'
+            else:
+                mod1 = 'unknown'
+        except:
+            mod1 = 'unknown'
+        try:
+            tmp = sacco['decima2'].read_attributes(['DelayMode', 'StatusMode', 'Sequence'])
+            self.deci2sequence_R.setText(str(tmp[2].value).replace('[', '').replace(']','').replace(' ', ', '))
+            if tmp[0].value and not tmp[1].value:
+                mod2 = 'Delay'
+            elif not tmp[0].value and tmp[1].value:
+                mod2 = 'Status'
+            else:
+                mod2 = 'unknown'
+        except:
+            mod2 = 'unknown'
         try:
-            delaytotemps = str(round(sacco['totem_delay'].Position, 3)) + ' ps'
+            tmp = sacco['decima3'].read_attributes(['DelayMode', 'StatusMode', 'Sequence'])
+            self.deci3sequence_R.setText(str(tmp[2].value).replace('[', '').replace(']','').replace(' ', ', '))
+            if tmp[0].value and not tmp[1].value:
+                mod3 = 'Delay'
+            elif not tmp[0].value and tmp[1].value:
+                mod3 = 'Status'
+            else:
+                mod3 = 'unknown'
+        except:
+            mod3 = 'unknown'
+        try:
+            tmp = sacco['decimacheck'].read_attribute('ChannelsState')
+            if tmp.value[1] == 10  and tmp.value[2] == 10:
+                self.deci1R.setText('Decimation ON - ' + mod1)
+                self.deci1R.setStyleSheet("background-color: #00ff00")
+                self.deci2R.setText('Decimation ON - ' + mod1)
+                self.deci2R.setStyleSheet("background-color: #00ff00")
+                self.deci3R.setText('Decimation ON - ' + mod1)
+                self.deci3R.setStyleSheet("background-color: #00ff00")
+                self.monitor_decimation.setText('Global SEED+SLU ON - ' + mod1)
+                self.monitor_decimation.setStyleSheet("background-color: #7777ff")
+            if tmp.value[1] == 10  and tmp.value[2] == 1 and tmp.value[10] == 10:
+                self.deci1R.setText('Off - ' + mod1)
+                self.deci1R.setStyleSheet("background-color: #ffffff")
+                self.deci2R.setText('Decimation ON - ' + mod2)
+                self.deci2R.setStyleSheet("background-color: #00ff00")
+                self.deci3R.setText('Off - ' + mod3)
+                self.deci3R.setStyleSheet("background-color: #ffffff")
+                self.monitor_decimation.setText('SEED/FEL ON - ' + mod2)
+                self.monitor_decimation.setStyleSheet("background-color: #7777ff")
+            if tmp.value[1] == 1  and tmp.value[2] == 10 and tmp.value[11] == 10:
+                self.deci1R.setText('Off - ' + mod1)
+                self.deci1R.setStyleSheet("background-color: #ffffff")
+                self.deci2R.setText('Off - ' + mod2)
+                self.deci2R.setStyleSheet("background-color: #ffffff")
+                self.deci3R.setText('Decimation ON - ' + mod3)
+                self.deci3R.setStyleSheet("background-color: #00ff00")
+                self.monitor_decimation.setText('SLU ON - ' + mod3)
+                self.monitor_decimation.setStyleSheet("background-color: #7777ff")
+            if tmp.value[1] == 1  and tmp.value[2] == 1 and tmp.value[11] == 1:
+                self.deci1R.setText('Off - ' + mod1)
+                self.deci1R.setStyleSheet("background-color: #ffffff")
+                self.deci2R.setText('Off - ' + mod2)
+                self.deci2R.setStyleSheet("background-color: #ffffff")
+                self.deci3R.setText('Off - ' + mod3)
+                self.deci3R.setStyleSheet("background-color: #ffffff")
+                self.monitor_decimation.setText('No decimation')
+                self.monitor_decimation.setStyleSheet("background-color: #00ff00")
+        except:
+            self.deci1R.setText('unknown')
+            self.deci2R.setText('unknown')
+            self.deci3R.setText('unknown')
+            self.monitor_decimation.setText('unknown')
+            self.monitor_decimation.setStyleSheet("background-color: #ff0000")
+####5 delay
+        if self.contienitab.currentIndex() == 7:
+            try:
+                tmp = sacco['scope6'].read_attributes(['P1AVG', 'P1Sigma', 'P2AVG', 'P2Sigma', 'P3AVG', 'P3Sigma', 'P4AVG', 'P4Sigma', 'P5AVG', 'P5Sigma', 'P6AVG', 'P6Sigma'])
+                self.scope6M1R1.setText('avg ' + str(round(tmp[0].value * 10**9, 3)) + ' ns')
+                self.scope6M2R1.setText('avg ' + str(round(tmp[2].value * 10**9, 3)) + ' ns')
+                self.scope6M3R1.setText('avg ' + str(round(tmp[4].value * 10**9, 3)) + ' ns')
+                self.scope6M4R1.setText('avg ' + str(round(tmp[6].value * 10**9, 3)) + ' ns')
+                self.scope6M5R1.setText('avg ' + str(round(tmp[8].value * 10**9, 3)) + ' ns')
+                self.scope6M6R1.setText('avg ' + str(round(tmp[10].value * 10**9, 3)) + ' ns')
+                self.scope6M1R2.setText('std ' + str(round(tmp[1].value * 10**9, 1)) + ' ns')
+                self.scope6M2R2.setText('std ' + str(round(tmp[3].value * 10**9, 1)) + ' ns')
+                self.scope6M3R2.setText('std ' + str(round(tmp[5].value * 10**9, 1)) + ' ns')
+                self.scope6M4R2.setText('std ' + str(round(tmp[7].value * 10**9, 1)) + ' ns')
+                self.scope6M5R2.setText('std ' + str(round(tmp[9].value * 10**9, 1)) + ' ns')
+                self.scope6M6R2.setText('std ' + str(round(tmp[11].value * 10**9, 1)) + ' ns')
+            except:
+                self.scope6M1R1.setText('avg ... ns')
+                self.scope6M2R1.setText('avg ... ns')
+                self.scope6M3R1.setText('avg ... ns')
+                self.scope6M4R1.setText('avg ... ns')
+                self.scope6M5R1.setText('avg ... ns')
+                self.scope6M6R1.setText('avg ... ns')
+                self.scope6M1R2.setText('std ... ns')
+                self.scope6M2R2.setText('std ... ns')
+                self.scope6M3R2.setText('std ... ns')
+                self.scope6M4R2.setText('std ... ns')
+                self.scope6M5R2.setText('std ... ns')
+                self.scope6M6R2.setText('std ... ns')
+        else:
+            self.scope6M1R1.setText('avg ' + str(round(-1, 3)))
+            self.scope6M2R1.setText('avg ' + str(round(-1, 3)))
+            self.scope6M3R1.setText('avg ' + str(round(-1, 3)))
+            self.scope6M4R1.setText('avg ' + str(round(-1, 3)))
+            self.scope6M5R1.setText('avg ' + str(round(-1, 3)))
+            self.scope6M6R1.setText('avg ' + str(round(-1, 3)))
+            self.scope6M1R2.setText('std ' + str(round(-1, 1)))
+            self.scope6M2R2.setText('std ' + str(round(-1, 1)))
+            self.scope6M3R2.setText('std ' + str(round(-1, 1)))
+            self.scope6M4R2.setText('std ' + str(round(-1, 1)))
+            self.scope6M5R2.setText('std ' + str(round(-1, 1)))
+            self.scope6M6R2.setText('std ' + str(round(-1, 1)))
+        try:
+            tmp = sacco['totem_delay'].read_attributes(['State', 'Position'])
+            delaytotemps = str(round(tmp[1].value, 3)) + ' ps'
         except:
             delaytotemps = '##### ps'
         self.delaytotemR.setText(delaytotemps)
+        if str(tmp[0].value) == 'ON':
+            self.delaytotemR.setStyleSheet("background-color: #00ff00")
+        elif str(tmp[0].value) == 'MOVING':
+            self.delaytotemR.setStyleSheet("background-color: #7777ff")
+        else:
+            self.delaytotemR.setStyleSheet("background-color: #ff0000")
+        try:
+            tmp = sacco['trls8_delay'].read_attributes(['State', 'Position'])
+            delay8ps = str(round(tmp[1].value, 3)) + ' ps'
+        except:
+            delay8ps = '##### ps'
+        self.delay8R.setText(delay8ps)
+        if str(tmp[0].value) == 'ON':
+            self.delay8R.setStyleSheet("background-color: #00ff00")
+        elif str(tmp[0].value) == 'MOVING':
+            self.delay8R.setStyleSheet("background-color: #7777ff")
+        else:
+            self.delay8R.setStyleSheet("background-color: #ff0000")
+        try:
+            tmp = sacco['triggerSL'].read_attribute('Chan2Delay')
+            risposta_trgmain = tmp.value
+            self.triggermainR.setText(str(round(risposta_trgmain, 3)))
+            if str(tmp.quality) != 'ATTR_VALID':
+                self.triggermainR.setStyleSheet("background-color: #ff0000")
+            else:
+                self.triggermainR.setStyleSheet("background-color: #00ff00")
+        except:
+            risposta_trgmain = -1
+            self.triggermainR.setText(str(round(risposta_trgmain, 3)))
+            self.triggermainR.setStyleSheet("background-color: #ff0000")
+        try:
+            tmp = sacco['triggerDGQ1'].read_attribute('Chan2Delay')
+            risposta_trgsdg = tmp.value
+            self.triggerDGQ1R.setText(str(round(risposta_trgsdg, 3)) + ' ns')
+            if str(tmp.quality) != 'ATTR_VALID':
+                self.triggerDGQ1R.setStyleSheet("background-color: #ff0000")
+            else:
+                self.triggerDGQ1R.setStyleSheet("background-color: #00ff00")
+        except:
+            risposta_trgsdg = -1
+            self.triggerDGQ1R.setText(str(round(risposta_trgsdg, 3)) + ' ns')
+            self.triggerDGQ1R.setStyleSheet("background-color: #ff0000")
+####6 vuoto
+        pompaccesa = 0
+        valvolaperta = 0
+        rosso_pressione = 0
+        try:
+            leggi_pompe = sacco['pompe'].read_attributes(['PMP_UH_01','PMP_UH_02','PMP_UH_03','PMP_SH_01','PMP_EH_01','PMP_EH_02'])
+            stato_pompa_UH1 = leggi_pompe[0].value
+            stato_pompa_UH2 = leggi_pompe[1].value
+            stato_pompa_UH3 = leggi_pompe[2].value
+            stato_pompa_SH1 = leggi_pompe[3].value
+            stato_pompa_EH1 = leggi_pompe[4].value
+            stato_pompa_EH2 = leggi_pompe[5].value
+        except:
+            stato_pompa_UH1 = -1
+            stato_pompa_UH2 = -1
+            stato_pompa_UH3 = -1
+            stato_pompa_SH1 = -1
+            stato_pompa_EH1 = -1
+            stato_pompa_EH2 = -1
+        if stato_pompa_UH1 == True:
+            self.pompaUH1_read.setText('ON')
+            self.pompaUH1_read.setStyleSheet("background-color: rgb(0, 255, 0)")
+            self.pompaUH1_set.setText('OFF')
+            pompaccesa += 1
+        elif stato_pompa_UH1 == False:
+            self.pompaUH1_read.setText('OFF')
+            self.pompaUH1_read.setStyleSheet("background-color: rgb(255, 255, 255)")
+            self.pompaUH1_set.setText('ON')
+        else:
+            self.pompaUH1_read.setText('#####')
+            self.pompaUH1_read.setStyleSheet("background-color: rgb(255, 0, 0)")
+            self.pompaUH1_set.setText('#####')
+        if stato_pompa_UH2 == True:
+            self.pompaUH2_read.setText('ON')
+            self.pompaUH2_read.setStyleSheet("background-color: rgb(0, 255, 0)")
+            self.pompaUH2_set.setText('OFF')
+            pompaccesa += 1
+        elif stato_pompa_UH2 == False:
+            self.pompaUH2_read.setText('OFF')
+            self.pompaUH2_read.setStyleSheet("background-color: rgb(255, 255, 255)")
+            self.pompaUH2_set.setText('ON')
+        else:
+            self.pompaUH2_read.setText('#####')
+            self.pompaUH2_read.setStyleSheet("background-color: rgb(255, 0, 0)")
+            self.pompaUH2_set.setText('#####')
+        if stato_pompa_UH3 == True:
+            self.pompaUH3_read.setText('ON')
+            self.pompaUH3_read.setStyleSheet("background-color: rgb(0, 255, 0)")
+            self.pompaUH3_set.setText('OFF')
+            pompaccesa += 1
+        elif stato_pompa_UH3 == False:
+            self.pompaUH3_read.setText('OFF')
+            self.pompaUH3_read.setStyleSheet("background-color: rgb(255, 255, 255)")
+            self.pompaUH3_set.setText('ON')
+        else:
+            self.pompaUH3_read.setText('#####')
+            self.pompaUH3_read.setStyleSheet("background-color: rgb(255, 0, 0)")
+            self.pompaUH3_set.setText('#####')
+        if stato_pompa_SH1 == True:
+            self.pompaSH1_read.setText('ON')
+            self.pompaSH1_read.setStyleSheet("background-color: rgb(0, 255, 0)")
+            self.pompaSH1_set.setText('OFF')
+            pompaccesa += 1
+        elif stato_pompa_SH1 == False:
+            self.pompaSH1_read.setText('OFF')
+            self.pompaSH1_read.setStyleSheet("background-color: rgb(255, 255, 255)")
+            self.pompaSH1_set.setText('ON')
+        else:
+            self.pompaSH1_read.setText('#####')
+            self.pompaSH1_read.setStyleSheet("background-color: rgb(255, 0, 0)")
+            self.pompaSH1_set.setText('#####')
+        if stato_pompa_EH1 == True:
+            self.pompaEH1_read.setText('ON')
+            self.pompaEH1_read.setStyleSheet("background-color: rgb(0, 255, 0)")
+            self.pompaEH1_set.setText('OFF')
+            pompaccesa += 1
+        elif stato_pompa_EH1 == False:
+            self.pompaEH1_read.setText('OFF')
+            self.pompaEH1_read.setStyleSheet("background-color: rgb(255, 255, 255)")
+            self.pompaEH1_set.setText('ON')
+        else:
+            self.pompaEH1_read.setText('#####')
+            self.pompaEH1_read.setStyleSheet("background-color: rgb(255, 0, 0)")
+            self.pompaEH1_set.setText('#####')
+        if stato_pompa_EH2 == True:
+            self.pompaEH2_read.setText('ON')
+            self.pompaEH2_read.setStyleSheet("background-color: rgb(0, 255, 0)")
+            self.pompaEH2_set.setText('OFF')
+            pompaccesa += 1
+        elif stato_pompa_EH2 == False:
+            self.pompaEH2_read.setText('OFF')
+            self.pompaEH2_read.setStyleSheet("background-color: rgb(255, 255, 255)")
+            self.pompaEH2_set.setText('ON')
+        else:
+            self.pompaEH2_read.setText('#####')
+            self.pompaEH2_read.setStyleSheet("background-color: rgb(0, 255, 0)")
+            self.pompaEH2_set.setText('#####')
+        try:
+            stato_valvola_UH1 = str(sacco['valvolaUH1'].command_inout('State'))
+        except:
+            stato_valvola_UH1 = ''
+        if stato_valvola_UH1 == 'CLOSE':
+            self.valvolaUH1_read.setText('close')
+            self.valvolaUH1_read.setStyleSheet("background-color: rgb(255, 255, 255)")
+            self.valvolaUH1_set.setText('OPEN')
+        elif stato_valvola_UH1 == 'OPEN':
+            self.valvolaUH1_read.setText('open')
+            self.valvolaUH1_read.setStyleSheet("background-color: rgb(255, 255, 0)")
+            self.valvolaUH1_set.setText('CLOSE')
+            valvolaperta += 1
+        else:
+            self.valvolaUH1_read.setText('#####')
+            self.valvolaUH1_read.setStyleSheet("background-color: rgb(255, 0, 0)")
+            self.valvolaUH1_set.setText('#####')
+        try:
+            stato_valvola_UH2 = str(sacco['valvolaUH2'].command_inout('State'))
+        except:
+            stato_valvola_UH2 = ''
+        if stato_valvola_UH2 == 'CLOSE':
+            self.valvolaUH2_read.setText('close')
+            self.valvolaUH2_read.setStyleSheet("background-color: rgb(255, 255, 255)")
+            self.valvolaUH2_set.setText('OPEN')
+        elif stato_valvola_UH2 == 'OPEN':
+            self.valvolaUH2_read.setText('open')
+            self.valvolaUH2_read.setStyleSheet("background-color: rgb(255, 255, 0)")
+            self.valvolaUH2_set.setText('CLOSE')
+            valvolaperta += 1
+        else:
+            self.valvolaUH2_read.setText('#####')
+            self.valvolaUH2_read.setStyleSheet("background-color: rgb(255, 0, 0)")
+            self.valvolaUH2_set.setText('#####')
+        try:
+            stato_valvola_UH3 = str(sacco['valvolaUH3'].command_inout('State'))
+        except:
+            stato_valvola_UH3 = ''
+        if stato_valvola_UH3 == 'CLOSE':
+            self.valvolaUH3_read.setText('close')
+            self.valvolaUH3_read.setStyleSheet("background-color: rgb(255, 255, 255)")
+            self.valvolaUH3_set.setText('OPEN')
+        elif stato_valvola_UH3 == 'OPEN':
+            self.valvolaUH3_read.setText('open')
+            self.valvolaUH3_read.setStyleSheet("background-color: rgb(255, 255, 0)")
+            self.valvolaUH3_set.setText('CLOSE')
+            valvolaperta += 1
+        else:
+            self.valvolaUH3_read.setText('#####')
+            self.valvolaUH3_read.setStyleSheet("background-color: rgb(255, 0, 0)")
+            self.valvolaUH3_set.setText('#####')
+        try:
+            stato_valvola_SH1 = str(sacco['valvolaSH1'].command_inout('State'))
+        except:
+            stato_valvola_SH1 = ''
+        if stato_valvola_SH1 == 'CLOSE':
+            self.valvolaSH1_read.setText('close')
+            self.valvolaSH1_read.setStyleSheet("background-color: rgb(255, 255, 255)")
+            self.valvolaSH1_set.setText('OPEN')
+        elif stato_valvola_SH1 == 'OPEN':
+            self.valvolaSH1_read.setText('open')
+            self.valvolaSH1_read.setStyleSheet("background-color: rgb(255, 255, 0)")
+            self.valvolaSH1_set.setText('CLOSE')
+            valvolaperta += 1
+        else:
+            self.valvolaSH1_read.setText('#####')
+            self.valvolaSH1_read.setStyleSheet("background-color: rgb(255, 0, 0)")
+            self.valvolaSH1_set.setText('#####')
+        try:
+            stato_valvola_EHF1 = str(sacco['valvolaEHF1'].command_inout('State'))
+        except:
+            stato_valvola_EHF1 = ''
+        if stato_valvola_EHF1 == 'CLOSE':
+            self.valvolaEHF1_read.setText('close')
+            self.valvolaEHF1_read.setStyleSheet("background-color: rgb(255, 255, 255)")
+            self.valvolaEHF1_set.setText('OPEN')
+        elif stato_valvola_EHF1 == 'OPEN':
+            self.valvolaEHF1_read.setText('open')
+            self.valvolaEHF1_read.setStyleSheet("background-color: rgb(255, 255, 0)")
+            self.valvolaEHF1_set.setText('CLOSE')
+            valvolaperta += 1
+        else:
+            self.valvolaEHF1_read.setText('#####')
+            self.valvolaEHF1_read.setStyleSheet("background-color: rgb(255, 0, 0)")
+            self.valvolaEHF1_set.setText('#####')
+        try:
+            stato_valvola_EHF2 = str(sacco['valvolaEHF2'].command_inout('State'))
+        except:
+            stato_valvola_EHF2 = ''
+        if stato_valvola_EHF2 == 'CLOSE':
+            self.valvolaEHF2_read.setText('close')
+            self.valvolaEHF2_read.setStyleSheet("background-color: rgb(255, 255, 255)")
+            self.valvolaEHF2_set.setText('OPEN')
+        elif stato_valvola_EHF2 == 'OPEN':
+            self.valvolaEHF2_read.setText('open')
+            self.valvolaEHF2_read.setStyleSheet("background-color: rgb(255, 255, 0)")
+            self.valvolaEHF2_set.setText('CLOSE')
+            valvolaperta += 1
+        else:
+            self.valvolaEHF2_read.setText('#####')
+            self.valvolaEHF2_read.setStyleSheet("background-color: rgb(255, 0, 0)")
+            self.valvolaEHF2_set.setText('#####')
+        try:
+            tmp = sacco['sensoreUTDR'].read_attribute('Pressure')
+            pressione__UTDR = str(tmp.value)
+            self.sensoreUTDR_read.setText(pressione__UTDR + ' mbar')
+            if str(tmp.quality) != 'ATTR_VALID':
+                rosso_pressione += 1
+        except:
+            pressione__UTDR = '-1'
+            self.sensoreUTDR_read.setText(pressione__UTDR + ' mbar')
+            rosso_pressione += 1
+        try:
+            tmp = sacco['sensoreUH1'].read_attribute('Pressure')
+            pressione__UH1 = str(tmp.value)
+            self.sensoreUH1_read.setText(pressione__UH1 + ' mbar')
+        except:
+            self.sensoreUH1_read.setText('-1 mbar')
+        try:
+            tmp = sacco['sensoreUH2'].read_attribute('Pressure')
+            pressione__UH2 = str(tmp.value)
+            self.sensoreUH2_read.setText(pressione__UH2 + ' mbar')
+        except:
+            self.sensoreUH2_read.setText('-1 mbar')
+        try:
+            tmp = sacco['sensoreUH3'].read_attribute('Pressure')
+            pressione__UH3 = str(tmp.value)
+            self.sensoreUH3_read.setText(pressione__UH3 + ' mbar')
+            if str(tmp.quality) != 'ATTR_VALID':
+                rosso_pressione += 1
+        except:
+            pressione__UH3 = '-1'
+            self.sensoreUH3_read.setText(pressione__UH3 + ' mbar')
+            rosso_pressione += 1
+        try:
+            tmp = sacco['sensoreUH4'].read_attribute('Pressure')
+            pressione__UH4 = str(tmp.value)
+            self.sensoreUH4_read.setText(pressione__UH4 + ' mbar')
+        except:
+            self.sensoreUH4_read.setText('-1 mbar')
+        try:
+            tmp = sacco['sensoreSH1'].read_attribute('Pressure')
+            pressione__SH1 = str(tmp.value)
+            self.sensoreSH1_read.setText(pressione__SH1 + ' mbar')
+        except:
+            self.sensoreSH1_read.setText('-1 mbar')
+        try:
+            tmp = sacco['sensoreEHF1'].read_attribute('Pressure')
+            pressione__EHF1 = str(tmp.value)
+            self.sensoreEHF1_read.setText(pressione__EHF1 + ' mbar')
+            if str(tmp.quality) != 'ATTR_VALID':
+                rosso_pressione += 1
+        except:
+            pressione__EHF1 = '-1'
+            self.sensoreEHF1_read.setText(pressione__EHF1 + ' mbar')
+            rosso_pressione += 1
+        try:
+            tmp = sacco['sensoreEHF2'].read_attribute('Pressure')
+            pressione__EHF2 = str(tmp.value)
+            self.sensoreEHF2_read.setText(pressione__EHF2 + ' mbar')
+        except:
+            self.sensoreEHF2_read.setText('-1 mbar')
+        try:
+            tmp = sacco['sensoreEHF3'].read_attribute('Pressure')
+            pressione__EHF3 = str(tmp.value)
+            self.sensoreEHF3_read.setText(pressione__EHF3 + ' mbar')
+            if str(tmp.quality) != 'ATTR_VALID':
+                rosso_pressione += 1
+        except:
+            pressione__EHF3 = '-1'
+            self.sensoreEHF3_read.setText(pressione__EHF3 + ' mbar')
+            rosso_pressione += 1
+        try:
+            tmp = sacco['sensoreEHF4'].read_attribute('Pressure')
+            pressione__EHF4 = str(tmp.value)
+            self.sensoreEHF4_read.setText(pressione__EHF4 + ' mbar')
+        except:
+            self.sensoreEHF4_read.setText('-1 mbar')
+        if pompaccesa == 0 and valvolaperta == 0:
+            pmpvlv = 'Pumps&Valves OK'
+        elif valvolaperta > 0 and valvolaperta == 0:
+            pmpvlv = 'Pumps ON, Valves OK'
+            rosso_pressione += 1
+        elif valvolaperta == 0 and valvolaperta > 0:
+            pmpvlv = 'Pumps OK, Valves OPENED'
+            rosso_pressione += 1
+        elif valvolaperta > 0 and valvolaperta > 0:
+            pmpvlv = 'Pumps ON, Valves OPENED'
+            rosso_pressione += 1
+        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)")
+        else:
+            self.monitor_vacuum.setStyleSheet("background-color: rgb(0, 255, 0)")
+####12 ldm
+        if self.contienitab.currentIndex() == 8:
+            try:
+                tmp = sacco['ldm_kom1'].read_attributes(['Position_X', 'Position_Y'])
+                self.LDM_kom1_rx.setText(str(round(tmp[0].value, 4)))
+                self.LDM_kom1_ry.setText(str(round(tmp[1].value, 4)))
+            except:
+                self.LDM_kom1_rx.setText('#####')
+                self.LDM_kom1_ry.setText('#####')
+            try:
+                tmp = sacco['ldm_kom2'].read_attributes(['Position_X', 'Position_Y'])
+                self.LDM_kom2_rx.setText(str(round(tmp[0].value, 4)))
+            except:
+                self.LDM_kom2_rx.setText('#####')
+                self.LDM_kom2_ry.setText('#####')
+            try:
+                self.LDM_rots1_r.setText(str(round(sacco['ldm_rots1'].UserPosition, 3)))
+            except:
+                self.LDM_rots1_r.setText('#####')
+            try:
+                self.LDM_rots2_r.setText(str(round(sacco['ldm_rots2'].UserPosition, 3)))
+            except:
+                self.LDM_rots2_r.setText('#####')
+            try:
+                self.LDM_rots3_r.setText(str(round(sacco['ldm_rots3'].UserPosition, 3)))
+            except:
+                self.LDM_rots3_r.setText('#####')
+            try:
+                self.LDM_trls2_r.setText(str(round(sacco['ldm_trls2'].UserPosition, 3)))
+            except:
+                self.LDM_trls2_r.setText('#####')
+            try:
+                self.LDM_feedback1_state.setText(str(sacco['ldm_fb1'].State()))
+            except:
+                self.LDM_feedback1_state.setText('#####')
+            try:
+                self.LDM_feedback2_state.setText(str(sacco['ldm_fb2'].State()))
+            except:
+                self.LDM_feedback2_state.setText('#####')
+#        print(str(time.time()-t0))
+        
+
+
+    def forcepanel(self):
+        nuovalinea = self.menubeamline.currentText()
+        self.linea = nuovalinea
+        self.beamlineattiva.setText(str(self.linea))
+        self.autodeterminazionedeipupoli = 1
+
+    def apripss(self):
+        os.system('/runtime/bin/laserpss -title Laser_safety_system &')
+
+    def lanciailwiki(self):
+        os.system('firefox http://acswww.elettra.trieste.it/Fermi/Procedures/Lasers/monitorpanel &')
+
+    def lanciahdb(self):
+        os.system('firefox http://fcs-proxy-01.elettra.eu/egiga2m/egiga2m.html?conf=fermi &')
+
+    def apricalendario(self):
+        os.system("python /home/lfo/runtime/panels/bin/slucalendarpanel.py &")
+
+    def attenuatoresu(self):
+        gol = sacco['attenuator'].Position + float(self.source_attenuatorcontrol.muoviS.text())
+        sacco['attenuator'].write_attribute('Position', gol)
+
+    def attenuatoregiu(self):
+        gol = sacco['attenuator'].Position - float(self.source_attenuatorcontrol.muoviS.text())
+        sacco['attenuator'].write_attribute('Position', gol)
 
+#pointing
     def convertistatoccd(self, uno, due, tre):
         if due == 'ON' and not tre:
-            eval("self.feedback" + str(uno) + "monitor.setStyleSheet('background-color: #00ff00')")
+            eval("self.feedback" + str(uno) + ".tasto_ccd.setStyleSheet('background-color: #00ff00')")
         elif due == 'OFF':
-            eval("self.feedback" + str(uno) + "monitor.setStyleSheet('background-color: #ffffff')")
+            eval("self.feedback" + str(uno) + ".tasto_ccd.setStyleSheet('background-color: #ffffff')")
         elif due == 'FAULT':
-            eval("self.feedback" + str(uno) + "monitor.setStyleSheet('background-color: #ff0000')")
+            eval("self.feedback" + str(uno) + ".tasto_ccd.setStyleSheet('background-color: #ff0000')")
         elif due == 'STANDBY' or tre:
-            eval("self.feedback" + str(uno) + "monitor.setStyleSheet('background-color: #ffff00')")
+            eval("self.feedback" + str(uno) + ".tasto_ccd.setStyleSheet('background-color: #ffff00')")
         elif due == 'ALARM':
-            eval("self.feedback" + str(uno) + "monitor.setStyleSheet('background-color: #ff9900')")
+            eval("self.feedback" + str(uno) + ".tasto_ccd.setStyleSheet('background-color: #ff9900')")
         elif due == 'DISABLE':
-            eval("self.feedback" + str(uno) + "monitor.setStyleSheet('background-color: #ff00ff')")
+            eval("self.feedback" + str(uno) + ".tasto_ccd.setStyleSheet('background-color: #ff00ff')")
         elif due == 'INIT':
-            eval("self.feedback" + str(uno) + "monitor.setStyleSheet('background-color: #dddd88')")
+            eval("self.feedback" + str(uno) + ".tasto_ccd.setStyleSheet('background-color: #dddd88')")
         elif due == 'UNKNOWN':
-            eval("self.feedback" + str(uno) + "monitor.setStyleSheet('background-color: #888888')")
+            eval("self.feedback" + str(uno) + ".tasto_ccd.setStyleSheet('background-color: #888888')")
         else:
-            eval("self.feedback" + str(uno) + "monitor.setStyleSheet('background-color: #888888')")
+            eval("self.feedback" + str(uno) + ".tasto_ccd.setStyleSheet('background-color: #888888')")
 
     def convertistatotiptilt(self, uno, due):
         if due == 'ON':
-            eval("self.feedback" + str(uno) + "corrector.setStyleSheet('background-color: #00ff00')")
+            eval("self.feedback" + str(uno) + ".tasto_tip.setStyleSheet('background-color: #00ff00')")
         elif due == 'OFF':
-            eval("self.feedback" + str(uno) + "corrector.setStyleSheet('background-color: #ffffff')")
+            eval("self.feedback" + str(uno) + ".tasto_tip.setStyleSheet('background-color: #ffffff')")
         elif due == 'FAULT':
-            eval("self.feedback" + str(uno) + "corrector.setStyleSheet('background-color: #ff0000')")
+            eval("self.feedback" + str(uno) + ".tasto_tip.setStyleSheet('background-color: #ff0000')")
         elif due == 'STANDBY':
-            eval("self.feedback" + str(uno) + "corrector.setStyleSheet('background-color: #ffff00')")
+            eval("self.feedback" + str(uno) + ".tasto_tip.setStyleSheet('background-color: #ffff00')")
         elif due == 'ALARM':
-            eval("self.feedback" + str(uno) + "corrector.setStyleSheet('background-color: #ff9900')")
+            eval("self.feedback" + str(uno) + ".tasto_tip.setStyleSheet('background-color: #ff9900')")
         elif due == 'DISABLE':
-            eval("self.feedback" + str(uno) + "corrector.setStyleSheet('background-color: #ff00ff')")
+            eval("self.feedback" + str(uno) + ".tasto_tip.setStyleSheet('background-color: #ff00ff')")
         elif due == 'INIT':
-            eval("self.feedback" + str(uno) + "corrector.setStyleSheet('background-color: #dddd88')")
+            eval("self.feedback" + str(uno) + ".tasto_tip.setStyleSheet('background-color: #dddd88')")
         elif due == 'UNKNOWN':
-            eval("self.feedback" + str(uno) + "corrector.setStyleSheet('background-color: #888888')")
+            eval("self.feedback" + str(uno) + ".tasto_tip.setStyleSheet('background-color: #888888')")
         else:
-            eval("self.feedback" + str(uno) + "corrector.setStyleSheet('background-color: #888888')")
+            eval("self.feedback" + str(uno) + ".tasto_tip.setStyleSheet('background-color: #888888')")
 
     def neresterasoltantounoFB(self):
         if self.linea == 'TOTEM':
@@ -1321,26 +2665,15 @@ class MainWindow(QDialog):
 
     def apriSEQpesi(self):
         if self.linea == 'TIMER':
-            os.system('/usr/local/tango-9.3.3/bin/atkpanel ' + sacco['tmrfbsequencer'].name() + ' &')
+            os.system('atkpanel ' + sacco['tmrfbsequencer'].name() + ' &')
         elif self.linea == 'TIMEX':
-            os.system('/usr/local/tango-9.3.3/bin/atkpanel ' + sacco['tmxfbsequencer'].name() + ' &')
+            os.system('atkpanel ' + sacco['tmxfbsequencer'].name() + ' &')
         elif self.linea == 'DIPROI':
-            os.system('/usr/local/tango-9.3.3/bin/atkpanel ' + sacco['dpifbsequencer'].name() + ' &')
+            os.system('atkpanel ' + sacco['dpifbsequencer'].name() + ' &')
         elif self.linea == 'LDM':
-            os.system('/usr/local/tango-9.3.3/bin/atkpanel ' + sacco['ldmfbsequencer'].name() + ' &')
+            os.system('atkpanel ' + sacco['ldmfbsequencer'].name() + ' &')
         elif self.linea == 'MAGNEDYN':
-            os.system('/usr/local/tango-9.3.3/bin/atkpanel ' + sacco['magfbsequencer'].name() + ' &')
-
-    def forcepanel(self):
-        nuovalinea = self.menubeamline.currentText()
-        self.linea = nuovalinea
-        self.beamlineattiva.setText('Elite' + str(self.sorgente) + ' to ' + str(self.linea))
-
-    def apripss(self):
-        os.system('/runtime/bin/laserpss -title Laser_safety_system &')
-
-    def lanciailwiki(self):
-        os.system('firefox http://acswww.elettra.trieste.it/Fermi/Procedures/Lasers/monitorpanel &')
+            os.system('atkpanel ' + sacco['magfbsequencer'].name() + ' &')
 
     def accendiilfeedback(self):
         if self.linea == 'TIMER':
@@ -1424,42 +2757,6 @@ class MainWindow(QDialog):
             nome = sacco['magfeedback'].dev_name()
         eval("os.system('/runtime/bin/mimo-fb-gui " + nome + " &')")
 
-    def apritiptilt0(self):
-        nome = sacco['piezo0'].dev_name()
-        eval("os.system('/runtime/bin/slutiptilt " + nome + " &')")
-
-    def apriccd0(self):
-        nome = sacco['ccd0'].dev_name()
-        eval("os.system('/runtime/bin/gigecam-gui " + nome + "  --refresh=200 &')")
-
-    def apritiptilt1(self):
-        nome = sacco['piezo1'].dev_name()
-        eval("os.system('/runtime/bin/slutiptilt " + nome + " &')")
-
-    def apriccd1(self):
-        nome = sacco['ccd1'].dev_name()
-        eval("os.system('/runtime/bin/gigecam-gui " + nome + "  --refresh=200 &')")
-
-    def apritiptilt2(self):
-        nome = sacco['piezo2'].dev_name()
-        eval("os.system('/runtime/bin/slutiptilt " + nome + " &')")
-
-    def apriccd2(self):
-        nome = sacco['ccd2'].dev_name()
-        eval("os.system('/runtime/bin/gigecam-gui " + nome + "  --refresh=200 &')")
-
-    def apritiptilt3(self):
-        nome = sacco['piezo3'].dev_name()
-        eval("os.system('/runtime/bin/slutiptilt " + nome + " &')")
-
-    def apriccd3(self):
-        nome = sacco['ccd3'].dev_name()
-        eval("os.system('/runtime/bin/gigecam-gui " + nome + "  --refresh=200 &')")
-
-    def apritiptilt4(self):
-        nome = sacco['piezo4'].dev_name()
-        eval("os.system('/runtime/bin/slutiptilt " + nome + " &')")
-
     def apriccd4(self):
         if self.linea == 'TIMER':
             nome = sacco['tmrccd4'].dev_name()
@@ -1473,12 +2770,6 @@ class MainWindow(QDialog):
             nome = sacco['magccd4'].dev_name()
         eval("os.system('/runtime/bin/gigecam-gui " + nome + "  --refresh=200 &')")
 
-    def apridalaytotem(self):
-        os.system('/runtime/bin/motion_controller slu/motor/trls_slu.05 -title SLU_TOTEM_DELAY_LINE &')
-
-    def apricalendario(self):
-        os.system("python /home/lfo/runtime/panels/bin/slucalendarpanel.py &")
-
     def aprifeedbackconf(self):
         if self.linea == 'TIMER':
             nome = sacco['tmrfeedback'].dev_name()
@@ -1512,29 +2803,6 @@ class MainWindow(QDialog):
         elif str(self.feedbackautoonoffreset.text()) == '#####':
             print('popup resetta server')
 
-    def delaytotemgoto(self):
-        gol = float(self.delaytotemW.text())
-        sacco['totem_delay'].write_attribute('Position', gol)
-
-    def delaytotemmeno(self):
-        tmp = float(self.delaytotemRELstep.text())
-        gol = sacco['totem_delay'].position - tmp
-        sacco['totem_delay'].write_attribute('Position', gol)
-
-    def delaytotempiu(self):
-        tmp = float(self.delaytotemRELstep.text())
-        gol = sacco['totem_delay'].position + tmp
-        sacco['totem_delay'].write_attribute('Position', gol)
-
-    def apridecimatori(self):
-        os.system("/runtime/bin/sl-decimators-gui &")
-
-    def apridelaycalc(self):
-        os.system("/runtime/bin/slu-delay-calculator-gui &")
-
-    def FUNZIONEVUOTA(self):
-        print('FUNZIONEVUOTA')
-
     def smart_feedback_on(self):
         if self.linea == 'TIMER':
             dasitemare1 = sacco['tmrfeedback']
@@ -1599,6 +2867,782 @@ class MainWindow(QDialog):
         print('fine')
 
 
+    def apridecimatori(self):
+        os.system("/runtime/bin/sl-decimators-gui &")
+
+    def apriscope6(self):
+        os.system('/usr/bin/vncviewer scope-laser-06 &')
+
+    def accendidecimatore(self, chi, metodo):
+        if metodo == 'random':
+            sacco[chi].command_inout('Start', 0)
+        elif metodo == 'odd':
+            BunchNumberStart_new = sacco['frequenza'].BunchNumber
+            if BunchNumberStart_new % 2 > 0:
+                BunchNumberStart_new = BunchNumberStart_new + 50
+            else:
+                BunchNumberStart_new = BunchNumberStart_new + 51
+            sacco[chi].write_attribute('BunchNumberStart', BunchNumberStart_new)
+            sacco[chi].command_inout('Start', 1)
+        elif metodo == 'even':
+            BunchNumberStart_new = sacco['frequenza'].BunchNumber
+            if BunchNumberStart_new % 2 > 0:
+                BunchNumberStart_new = BunchNumberStart_new + 51
+            else:
+                BunchNumberStart_new = BunchNumberStart_new + 50
+            sacco[chi].write_attribute('BunchNumberStart', BunchNumberStart_new)
+            sacco[chi].command_inout('Start', 1)
+
+    def spegnidecimazione(self, chi):
+        sacco[chi].command_inout('Stop')
+        if sacco[chi].EnableStaticTriggerShift:
+            sacco[chi].write_attribute('EnableStaticTriggerShift', 0)
+
+    def decimadelay(self, chi):
+        tmp = sacco[chi].InfiniteCycle
+        sacco[chi].write_attribute('StatusMode', 0)
+        sacco[chi].write_attribute('DelayMode', 1)
+        sacco[chi].write_attribute('InfiniteCycle', 0)
+        sacco[chi].write_attribute('InfiniteCycle', 1)
+        sacco[chi].write_attribute('InfiniteCycle', tmp)
+
+    def decimastatus(self, chi):
+        tmp = sacco[chi].InfiniteCycle
+        sacco[chi].write_attribute('DelayMode', 0)
+        sacco[chi].write_attribute('StatusMode', 1)
+        sacco[chi].write_attribute('InfiniteCycle', 0)
+        sacco[chi].write_attribute('InfiniteCycle', 1)
+        sacco[chi].write_attribute('InfiniteCycle', tmp)
+
+    def decimasequenza(self, chi):
+        if chi == 'decima1':
+            cosa = self.deci1sequence_W.text()
+        elif chi == 'decima2':
+            cosa = self.deci2sequence_W.text()
+        elif chi == 'decima3':
+            cosa = self.deci3sequence_W.text()
+        try:
+            frequenza1050 = sacco['frequenza'].BunchNumberFrequency
+        except:
+            frequenza1050 = -1
+        try:
+            tmp = str(cosa).replace('[', '').replace(']','')
+            if sacco[chi].StatusMode and tmp.count('0') > 4:
+                self.msgBox = QMessageBox()
+                self.msgBox.setIcon(QMessageBox.Question)
+                self.msgBox.setStandardButtons(QMessageBox.Ok | QMessageBox.Cancel)
+                self.msgBox.setText("Decimation is too strong, if the frequency of the laser is below " + str(int(frequenza1050/5)) + "Hz thermal effects might degradate beam quality. Are you sure you want to proceed?")
+                risp = self.msgBox.exec_()
+                if risp == 1024:
+                    Sequence_new = [int(aa) for aa in tmp.split(',')]
+                    sacco[chi].write_attribute('Sequence', Sequence_new)
+                else:
+                    return
+            else:
+                Sequence_new = [int(aa) for aa in tmp.split(',')]
+                sacco[chi].write_attribute('Sequence', Sequence_new)
+        except:
+            print('error  ' + str(cosa))
+
+    def decimafermatutto(self):
+        sacco['decima1'].command_inout('Stop')
+        if sacco['decima1'].EnableStaticTriggerShift:
+            sacco['decima1'].write_attribute('EnableStaticTriggerShift', 0)
+        sacco['decima2'].command_inout('Stop')
+        if sacco['decima2'].EnableStaticTriggerShift:
+            sacco['decima2'].write_attribute('EnableStaticTriggerShift', 0)
+        sacco['decima3'].command_inout('Stop')
+        if sacco['decima3'].EnableStaticTriggerShift:
+            sacco['decima3'].write_attribute('EnableStaticTriggerShift', 0)
+        #ripristinodelay
+        files = os.listdir('/home/lfo/data/salvatutto/SEED_trigger/')
+        files = ['/home/lfo/data/salvatutto/SEED_trigger/' + aa for aa in files]
+        ultimo = max(files, key = os.path.getctime)
+        with open(ultimo) as csvfile:
+            spamreader = csv.reader(csvfile, delimiter=',')
+            for row in spamreader:
+                if 'EVR1 ' in row[0]:
+                    print(row[0].replace('EVR1 ', 'Chan') + 'Delay ' + row[1])
+                    attribrutto = row[0].replace('EVR1 ', 'Chan') + 'Delay'
+                    valore = round(float(row[1]), 3)
+                    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 &')
+
+    def delaytotemgoto(self):
+        gol = float(self.delaytotemW.text())
+        sacco['totem_delay'].write_attribute('Position', gol)
+
+    def delaytotemmeno(self):
+        tmp = float(self.delaytotemRELstep.text())
+        gol = sacco['totem_delay'].position - tmp
+        sacco['totem_delay'].write_attribute('Position', gol)
+
+    def delaytotempiu(self):
+        tmp = float(self.delaytotemRELstep.text())
+        gol = sacco['totem_delay'].position + tmp
+        sacco['totem_delay'].write_attribute('Position', gol)
+
+    def apridalay8(self):
+        os.system('/runtime/bin/xps-gui sl/motor/trls_sl.08 -title SL_SLU_delay_line &')
+
+    def delay8goto(self):
+        gol = float(self.delay8W.text())
+        sacco['trls8_delay'].write_attribute('Position', gol)
+
+    def delay8meno(self):
+        tmp = float(self.delay8RELstep.text())
+        gol = sacco['trls8_delay'].position - tmp
+        sacco['trls8_delay'].write_attribute('Position', gol)
+
+    def delay8piu(self):
+        tmp = float(self.delay8RELstep.text())
+        gol = sacco['trls8_delay'].position + tmp
+        sacco['trls8_delay'].write_attribute('Position', gol)
+
+    def apritrg(self):
+        os.system('/runtime/bin/sl-trigger-gui &')
+
+    def trggoto(self):
+        gol = float(self.triggermainW.text())
+        sacco['triggerSL'].write_attribute('Chan2Delay', gol)
+
+    def trgmeno(self):
+        tmp = 12.67507
+        gol = sacco['triggerSL'].Chan2Delay - tmp
+        sacco['triggerSL'].write_attribute('Chan2Delay', gol)
+
+    def trgpiu(self):
+        tmp = 12.67507
+        gol = sacco['triggerSL'].Chan2Delay + tmp
+        sacco['triggerSL'].write_attribute('Chan2Delay', gol)
+
+    def sdggoto(self):
+        gol = float(self.triggerDGQ1W.text())
+        sacco['triggerDGQ1'].write_attribute('Chan2Delay', gol)
+
+    def sdgmeno(self):
+        tmp = 1.0
+        gol = sacco['triggerDGQ1'].Chan2Delay - tmp
+        sacco['triggerDGQ1'].write_attribute('Chan2Delay', gol)
+
+    def sdgmpiu(self):
+        tmp = 1.0
+        gol = sacco['triggerDGQ1'].Chan2Delay + tmp
+        sacco['triggerDGQ1'].write_attribute('Chan2Delay', gol)
+
+    def muovidelayslu(self):
+        delta_t = float(self.delaycalcS.text())
+        sacco['trls8_delay'].write_attribute('Speed', 100)
+        #salvo i valori attuali
+        self.memoDevrch2 = sacco['triggerSL'].Chan2Delay
+        self.memoDdgqch2 = sacco['triggerDGQ1'].Chan2Delay
+        self.memoDtrls8 = sacco['trls8_delay'].position
+        self.memoDtrls8_ns = self.memoDtrls8/1000
+        #calcolo
+        resto = (delta_t/12.675074466 - int(delta_t/12.675074466))*12.675074466 #ns, avanzo da dare in pasto ai traslatori
+        print('resto ' + str(resto))
+        trg_e2_tmp = self.memoDevrch2 + int(delta_t/12.675074466)*12.675074466 #valore tmp, perche potrebbe cambiare di 1 cilclo per via dei traslatori
+        print('trg_e2_tmp ' + str(trg_e2_tmp))
+        # valuto corsa disponibile sulla slitta, se delta_t oltre i limiti agisco ancora sul trigger
+        print('self.memoDtrls8_ns + resto ' + str(self.memoDtrls8_ns + resto))
+        if self.memoDtrls8_ns + resto >= -6.6 and self.memoDtrls8_ns + resto <= 6.6:
+            self.trls8calc = (self.memoDtrls8_ns + resto)*1000
+            print("caso 1: trls8 entro i limiti")
+            self.trg_elite2calc = trg_e2_tmp
+        elif self.memoDtrls8_ns + resto < -6.6:
+            print("caso 2: trls8 sotto i limiti")
+            self.trls8calc = (self.memoDtrls8_ns + resto + 12.675074466)*1000
+            self.trg_elite2calc = trg_e2_tmp - 12.675074466
+        elif self.memoDtrls8_ns + resto > 6.6:
+            print("caso 3: trls8 sopra i limiti")
+            self.trls8calc = (self.memoDtrls8_ns + resto - 12.675074466)*1000
+            self.trg_elite2calc = trg_e2_tmp + 12.675074466
+        print(self.trls8calc)
+        print(self.trg_elite2calc)
+        # valuto spostamento SDG
+        self.trg_S2calc = self.memoDdgqch2 - int(self.memoDtrls8_ns - self.trls8calc/1000)
+        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)
+        
+    def scope6CW(self):
+        sacco['scope6'].command_inout('ClearSweeps')
+        
+    def memoriaTMRr(self):
+        sacco['trls8_delay'].write_attribute('Position', sacco['costanti'].memo_delay_tmr1)
+        sacco['triggerSL'].write_attribute('Chan2Delay', sacco['costanti'].memo_delay_tmr2)
+        sacco['triggerDGQ1'].write_attribute('Chan2Delay', sacco['costanti'].memo_delay_tmr3)
+        sacco['totem_delay'].write_attribute('Position', sacco['costanti'].memo_delay_tmr4)
+
+    def memoriaTMRw(self):
+        sacco['costanti'].write_attribute('memo_delay_tmr1', sacco['trls8_delay'].Position)
+        sacco['costanti'].write_attribute('memo_delay_tmr2', sacco['triggerSL'].Chan2Delay)
+        sacco['costanti'].write_attribute('memo_delay_tmr3', sacco['triggerDGQ1'].Chan2Delay)
+        sacco['costanti'].write_attribute('memo_delay_tmr4', sacco['totem_delay'].Position)
+        
+    def memoriaTMXr(self):
+        sacco['trls8_delay'].write_attribute('Position', sacco['costanti'].memo_delay_tmx1)
+        sacco['triggerSL'].write_attribute('Chan2Delay', sacco['costanti'].memo_delay_tmx2)
+        sacco['triggerDGQ1'].write_attribute('Chan2Delay', sacco['costanti'].memo_delay_tmx3)
+        sacco['totem_delay'].write_attribute('Position', sacco['costanti'].memo_delay_tmx4)
+
+    def memoriaTMXw(self):
+        sacco['costanti'].write_attribute('memo_delay_tmx1', sacco['trls8_delay'].Position)
+        sacco['costanti'].write_attribute('memo_delay_tmx2', sacco['triggerSL'].Chan2Delay)
+        sacco['costanti'].write_attribute('memo_delay_tmx3', sacco['triggerDGQ1'].Chan2Delay)
+        sacco['costanti'].write_attribute('memo_delay_tmx4', sacco['totem_delay'].Position)
+        
+    def memoriaDPIr(self):
+        sacco['trls8_delay'].write_attribute('Position', sacco['costanti'].memo_delay_dpi1)
+        sacco['triggerSL'].write_attribute('Chan2Delay', sacco['costanti'].memo_delay_dpi2)
+        sacco['triggerDGQ1'].write_attribute('Chan2Delay', sacco['costanti'].memo_delay_dpi3)
+        sacco['totem_delay'].write_attribute('Position', sacco['costanti'].memo_delay_dpi4)
+
+    def memoriaDPIw(self):
+        sacco['costanti'].write_attribute('memo_delay_dpi1', sacco['trls8_delay'].Position)
+        sacco['costanti'].write_attribute('memo_delay_dpi2', sacco['triggerSL'].Chan2Delay)
+        sacco['costanti'].write_attribute('memo_delay_dpi3', sacco['triggerDGQ1'].Chan2Delay)
+        sacco['costanti'].write_attribute('memo_delay_dpi4', sacco['totem_delay'].Position)
+        
+    def memoriaLDMr(self):
+        sacco['trls8_delay'].write_attribute('Position', sacco['costanti'].memo_delay_ldm1)
+        sacco['triggerSL'].write_attribute('Chan2Delay', sacco['costanti'].memo_delay_ldm2)
+        sacco['triggerDGQ1'].write_attribute('Chan2Delay', sacco['costanti'].memo_delay_ldm3)
+        sacco['totem_delay'].write_attribute('Position', sacco['costanti'].memo_delay_ldm4)
+
+    def memoriaLDMw(self):
+        sacco['costanti'].write_attribute('memo_delay_ldm1', sacco['trls8_delay'].Position)
+        sacco['costanti'].write_attribute('memo_delay_ldm2', sacco['triggerSL'].Chan2Delay)
+        sacco['costanti'].write_attribute('memo_delay_ldm3', sacco['triggerDGQ1'].Chan2Delay)
+        sacco['costanti'].write_attribute('memo_delay_ldm4', sacco['totem_delay'].Position)
+        
+    def memoriaMAGr(self):
+        sacco['trls8_delay'].write_attribute('Position', sacco['costanti'].memo_delay_mag1)
+        sacco['triggerSL'].write_attribute('Chan2Delay', sacco['costanti'].memo_delay_mag2)
+        sacco['triggerDGQ1'].write_attribute('Chan2Delay', sacco['costanti'].memo_delay_mag3)
+        sacco['totem_delay'].write_attribute('Position', sacco['costanti'].memo_delay_mag4)
+
+    def memoriaMAGw(self):
+        sacco['costanti'].write_attribute('memo_delay_mag1', sacco['trls8_delay'].Position)
+        sacco['costanti'].write_attribute('memo_delay_mag2', sacco['triggerSL'].Chan2Delay)
+        sacco['costanti'].write_attribute('memo_delay_mag3', sacco['triggerDGQ1'].Chan2Delay)
+        sacco['costanti'].write_attribute('memo_delay_mag4', sacco['totem_delay'].Position)
+
+    def funzionesalvatrigger(self):
+        os.chdir('/home/lfo/data/salvatutto/SEED_trigger/')
+        sonoin = os.path.abspath('')
+        indice = 0
+        for file in os.listdir(sonoin):
+            if file.endswith(".csv"):
+                indice = indice +1
+        nomefile = '/home/lfo/data/salvatutto/SEED_trigger/' + str(indice+1) + '.csv'
+        listaEVR1 = [0, 1, 2, 3, 8, 9, 10, 11, 12, 13]
+        listaDGQ1 = [1, 2, 3, 4, 5, 6, 7, 8]
+        listaSDG1 = [1, 2]
+        listaEVR2 = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13]
+        listaDGQ2 = [1, 2, 3, 4, 5, 6, 7, 8]
+        listaSDG2 = [1, 2]
+        datidasalvare = []
+        nomidasalvare = []
+        for kkk in range(len(listaEVR1)):
+            stringattributo = 'Chan' + str(listaEVR1[kkk]) + 'Delay'
+            tmp = sacco["triggerSL"].read_attribute(stringattributo)
+            datidasalvare.append(str(tmp.value))
+            nomidasalvare.append("EVR1 " + str(kkk))
+            if tmp.quality != 'ATTR_VALID':
+                altro = eval('sacco["triggerSL"].get_attribute_config_ex(stringattributo)')
+                if altro[0].alarms.min_alarm != str(float(tmp.value) - 1.0):
+                    altro[0].alarms.min_alarm = str(float(tmp.value) - 1.0)
+                if altro[0].alarms.max_alarm != str(float(tmp.value) + 1.0):
+                    altro[0].alarms.max_alarm = str(float(tmp.value) + 1.0)
+                sacco["triggerSL"].set_attribute_config(altro)
+                print(stringattributo + ' ' + str(tmp.quality))
+        for kkk in range(len(listaDGQ1)):
+            stringattributo = 'Chan' + str(listaDGQ1[kkk]) + 'Delay'
+            tmp = sacco["triggerDGQ1"].read_attribute(stringattributo)
+            datidasalvare.append(str(tmp.value))
+            nomidasalvare.append("DGQ1 " + str(kkk+1))
+            if tmp.quality != 'ATTR_VALID':
+                altro = eval('sacco["triggerDGQ1"].get_attribute_config_ex(stringattributo)')
+                if altro[0].alarms.min_alarm != str(float(tmp.value) - 1.0):
+                    altro[0].alarms.min_alarm = str(float(tmp.value) - 1.0)
+                if altro[0].alarms.max_alarm != str(float(tmp.value) + 1.0):
+                    altro[0].alarms.max_alarm = str(float(tmp.value) + 1.0)
+                sacco["triggerDGQ1"].set_attribute_config(altro)
+        for kkk in range(len(listaSDG1)):
+            stringattributo = 'Channel' + str(listaSDG1[kkk]) + 'Delay'
+            tmp = sacco["triggerSDG1"].read_attribute(stringattributo)
+            datidasalvare.append(str(tmp.value))
+            nomidasalvare.append("SDG1 " + str(kkk+1))
+            if tmp.quality != 'ATTR_VALID':
+                altro = eval('sacco["triggerSDG1"].get_attribute_config_ex(stringattributo)')
+                if altro[0].alarms.min_alarm != str(float(tmp.value) - 1.0):
+                    altro[0].alarms.min_alarm = str(float(tmp.value) - 1.0)
+                if altro[0].alarms.max_alarm != str(float(tmp.value) + 1.0):
+                    altro[0].alarms.max_alarm = str(float(tmp.value) + 1.0)
+                sacco["triggerSDG1"].set_attribute_config(altro)
+        for kkk in range(len(listaEVR2)):
+            stringattributo = 'Chan' + str(listaEVR2[kkk]) + 'Delay'
+            tmp = sacco["triggerSL2"].read_attribute(stringattributo)
+            datidasalvare.append(str(tmp.value))
+            nomidasalvare.append("EVR2 " + str(kkk))
+            if tmp.quality != 'ATTR_VALID':
+                altro = eval('sacco["triggerSL2"].get_attribute_config_ex(stringattributo)')
+                if altro[0].alarms.min_alarm != str(float(tmp.value) - 1.0):
+                    altro[0].alarms.min_alarm = str(float(tmp.value) - 1.0)
+                if altro[0].alarms.max_alarm != str(float(tmp.value) + 1.0):
+                    altro[0].alarms.max_alarm = str(float(tmp.value) + 1.0)
+                sacco["triggerSL2"].set_attribute_config(altro)
+        for kkk in range(len(listaDGQ2)):
+            stringattributo = 'Chan' + str(listaDGQ2[kkk]) + 'Delay'
+            tmp = sacco["triggerDGQ2"].read_attribute(stringattributo)
+            datidasalvare.append(str(tmp.value))
+            nomidasalvare.append("DGQ2 " + str(kkk+1))
+            if tmp.quality != 'ATTR_VALID':
+                altro = eval('sacco["triggerDGQ2"].get_attribute_config_ex(stringattributo)')
+                if altro[0].alarms.min_alarm != str(float(tmp.value) - 1.0):
+                    altro[0].alarms.min_alarm = str(float(tmp.value) - 1.0)
+                if altro[0].alarms.max_alarm != str(float(tmp.value) + 1.0):
+                    altro[0].alarms.max_alarm = str(float(tmp.value) + 1.0)
+                sacco["triggerDGQ2"].set_attribute_config(altro)
+        for kkk in range(len(listaSDG2)):
+            stringattributo = 'Channel' + str(listaSDG2[kkk]) + 'Delay'
+            tmp = sacco["triggerSDG2"].read_attribute(stringattributo)
+            datidasalvare.append(str(tmp.value))
+            nomidasalvare.append("SDG2 " + str(kkk+1))
+            if tmp.quality != 'ATTR_VALID':
+                altro = eval('sacco["triggerSDG2"].get_attribute_config_ex(stringattributo)')
+                if altro[0].alarms.min_alarm != str(float(tmp.value) - 1.0):
+                    altro[0].alarms.min_alarm = str(float(tmp.value) - 1.0)
+                if altro[0].alarms.max_alarm != str(float(tmp.value) + 1.0):
+                    altro[0].alarms.max_alarm = str(float(tmp.value) + 1.0)
+                sacco["triggerSDG2"].set_attribute_config(altro)
+        with open(nomefile, 'w', newline='') as csvfile:
+            spamwriter = csv.writer(csvfile)
+            for ind in range(len(datidasalvare)):
+                riga = [nomidasalvare[ind], str(datidasalvare[ind])]
+                spamwriter.writerow(riga)
+        csvfile.close()
+#        QMessageBox.warning(None, 'Save SEED trigger', 'file saved: ' + nomefile)
+            
+
+    def pannello_valvolaUH1(self):
+        os.system('/runtime/bin/valve uh/vacuum/vlvp_uh.01 -title UH_to_SH_valve_for_1st_pump_"vlvp_uh.01" &')
+
+    def pannello_valvolaUH2(self):
+        os.system('/runtime/bin/valve uh/vacuum/vlvp_uh.02 -title UH_to_SH_valve_for_2nd_pump_"vlvp_uh.02" &')
+
+    def pannello_valvolaUH3(self):
+        os.system('/runtime/bin/valve uh/vacuum/vlvp_uh.03 -title UH_to_SH_valve_3rd_pump_"vlvp_uh.03" &')
+
+    def pannello_valvolaSH1(self):
+        os.system('/runtime/bin/valve sh/vacuum/vlvp_sh.01 -title SH_to_TOTEM_valve_1st_pump_"vlvp_sh.01" &')
+
+    def pannello_valvolaEHF1(self):
+        os.system('/runtime/bin/valve ehf/vacuum/vlvp_ehf.01 -title SH_to_TOTEM_valve_2nd_pump_"vlvp_ehf.01" &')
+
+    def pannello_valvolaEHF2(self):
+        os.system('/runtime/bin/valve ehf/vacuum/vlvp_ehf.02 -title TOTEM_to_Beamlines_valve_1st_pump_"vlvp_ehf.02" &')
+
+    def pannello_pompe(self):
+        os.system('/usr/local/tango-9.3.3/bin/atkpanel srv-tango-srf-01:20000/slu/vacuum/pumps &')
+
+    def pannello_sensore_UTDR(self):
+        os.system('/runtime/bin/vg srv-tango-srf-01:20000/slu/vacuum/vgpi_slu_utdr.01 -title Vacuum_meter_UTDR_"vgpi_slu_utdr.01" &')
+
+    def pannello_sensore_UH1(self):
+        os.system('/runtime/bin/vg srv-tango-srf-01:20000/slu/vacuum/vgpi_slu_uh.01 -title Vacuum_meter_UH_to_SH_1st_pump_"vgpi_slu_uh.01" &')
+
+    def pannello_sensore_UH2(self):
+        os.system('/runtime/bin/vg srv-tango-srf-01:20000/slu/vacuum/vgpi_slu_uh.02 -title Vacuum_meter_UH_to_SH_2nd_pump_"vgpi_slu_uh.02" &')
+
+    def pannello_sensore_UH3(self):
+        os.system('/runtime/bin/vg srv-tango-srf-01:20000/slu/vacuum/vgpi_slu_uh.03 -title UH_Vacuum_meter_"vgpi_slu_uh.03" &')
+
+    def pannello_sensore_UH4(self):
+        os.system('/runtime/bin/vg srv-tango-srf-01:20000/slu/vacuum/vgpi_slu_uh.04 -title Vacuum_meter_UH_to_SH_3rd_pump_"vgpi_slu_uh.04" &')
+
+    def pannello_sensore_SH1(self):
+        os.system('/runtime/bin/vg srv-tango-srf-01:20000/slu/vacuum/vgpi_slu_sh.01 -title Vacuum_meter_SH_to_TOTEM_1st_pump_"vgpi_slu_sh.01" &')
+
+    def pannello_sensore_EHF1(self):
+        os.system('/runtime/bin/vg srv-tango-srf-01:20000/slu/vacuum/vgpi_slu_ehf.01 -title SH_to_TOTEM_Vacuum_meter_"vgpi_slu_ehf.01" &')
+
+    def pannello_sensore_EHF2(self):
+        os.system('/runtime/bin/vg srv-tango-srf-01:20000/slu/vacuum/vgpi_slu_ehf.02 -title Vacuum_meter_SH_to_TOTEM_2nd_pump_"vgpi_slu_ehf.02" &')
+
+    def pannello_sensore_EHF3(self):
+        os.system('/runtime/bin/vg srv-tango-srf-01:20000/slu/vacuum/vgpi_slu_ehf.03 -title TOTEM_to_BL_Vacuum_meter_"vgpi_slu_ehf.03" &')
+
+    def pannello_sensore_EHF4(self):
+        os.system('/runtime/bin/vg srv-tango-srf-01:20000/slu/vacuum/vgpi_slu_ehf.04 -title Vacuum_meter_TOTEM_to_BL_1st_pump_"vgpi_slu_ehf.04" &')
+
+    def smanette_valvolaUH1(self):
+        lettura = sacco['valvolaUH1'].command_inout('State')
+        if str(lettura) == 'CLOSE':
+            sacco['valvolaUH1'].command_inout('open')
+        elif str(lettura) == 'OPEN':
+            sacco['valvolaUH1'].command_inout('close')
+
+    def smanette_valvolaUH2(self):
+        lettura = sacco['valvolaUH2'].command_inout('State')
+        if str(lettura) == 'CLOSE':
+            sacco['valvolaUH2'].command_inout('open')
+        elif str(lettura) == 'OPEN':
+            sacco['valvolaUH2'].command_inout('close')
+
+    def smanette_valvolaUH3(self):
+        lettura = sacco['valvolaUH3'].command_inout('State')
+        if str(lettura) == 'CLOSE':
+            sacco['valvolaUH3'].command_inout('open')
+        elif str(lettura) == 'OPEN':
+            sacco['valvolaUH3'].command_inout('close')
+
+    def smanette_valvolaSH1(self):
+        lettura = sacco['valvolaSH1'].command_inout('State')
+        if str(lettura) == 'CLOSE':
+            sacco['valvolaSH1'].command_inout('open')
+        elif str(lettura) == 'OPEN':
+            sacco['valvolaSH1'].command_inout('close')
+
+    def smanette_valvolaEHF1(self):
+        lettura = sacco['valvolaEHF1'].command_inout('State')
+        if str(lettura) == 'CLOSE':
+            sacco['valvolaEHF1'].command_inout('open')
+        elif str(lettura) == 'OPEN':
+            sacco['valvolaEHF1'].command_inout('close')
+
+    def smanette_valvolaEHF2(self):
+        lettura = sacco['valvolaEHF2'].command_inout('State')
+        if str(lettura) == 'CLOSE':
+            sacco['valvolaEHF2'].command_inout('open')
+        elif str(lettura) == 'OPEN':
+            sacco['valvolaEHF2'].command_inout('close')
+
+    def smanetta_pompe1(self):
+        lettura = sacco['pompe'].PMP_UH_01
+        if lettura == True:
+            sacco['pompe'].command_inout('Stop_UH_01')
+        elif lettura == False:
+            sacco['pompe'].command_inout('Start_UH_01')
+
+    def smanetta_pompe2(self):
+        lettura = sacco['pompe'].PMP_UH_02
+        if lettura == True:
+            sacco['pompe'].command_inout('Stop_UH_02')
+        elif lettura == False:
+            sacco['pompe'].command_inout('Start_UH_02')
+
+    def smanetta_pompe3(self):
+        lettura = sacco['pompe'].PMP_UH_03
+        if lettura == True:
+            sacco['pompe'].command_inout('Stop_UH_03')
+        elif lettura == False:
+            sacco['pompe'].command_inout('Start_UH_03')
+
+    def smanetta_pompe4(self):
+        lettura = sacco['pompe'].PMP_SH_01
+        if lettura == True:
+            sacco['pompe'].command_inout('Stop_SH_01')
+        elif lettura == False:
+            sacco['pompe'].command_inout('Start_SH_01')
+
+    def smanetta_pompe5(self):
+        lettura = sacco['pompe'].PMP_EH_01
+        if lettura == True:
+            sacco['pompe'].command_inout('Stop_EH_01')
+        elif lettura == False:
+            sacco['pompe'].command_inout('Start_EH_01')
+
+    def smanetta_pompe6(self):
+        lettura = sacco['pompe'].PMP_EH_02
+        if lettura == True:
+            sacco['pompe'].command_inout('Stop_EH_02')
+        elif lettura == False:
+            sacco['pompe'].command_inout('Start_EH_02')
+
+    def cumulativo_UH(self):
+        sacco['pompe'].command_inout('Start_UH_01')
+        sacco['pompe'].command_inout('Start_UH_02')
+        sacco['pompe'].command_inout('Start_UH_03')
+        sacco['valvolaUH1'].command_inout('open')
+        sacco['valvolaUH2'].command_inout('open')
+        sacco['valvolaUH3'].command_inout('open')
+
+    def cumulativo_EH1(self):
+        sacco['pompe'].command_inout('Start_SH_01')
+        sacco['pompe'].command_inout('Start_EH_01')
+        sacco['valvolaSH1'].command_inout('open')
+        sacco['valvolaEHF1'].command_inout('open')
+
+    def cumulativo_EH2(self):
+        sacco['pompe'].command_inout('Start_EH_02')
+        sacco['valvolaEHF2'].command_inout('open')
+
+    def cambiacontestolog(self):
+        nuovocontesto = str(self.contesto_switch.currentText())
+        sacco['archiviatore'].write_attribute('Context', nuovocontesto)
+
+    def ldm_lancia_ccd0(self):
+        os.system('/runtime/bin/gigecam-gui  srv-tango-srf-01:20000/slu/diagnostics/ccd_slu.07 ccd_slu.07_LDM_ccd_slu.07 --calibration --refresh=1000 -title SLU_LDM_ccd_slu.07 &')
+
+    def ldm_lancia_ccd3(self):
+        os.system('/runtime/bin/gigecam-gui srv-tango-ldm-01:20000/ldm/diagnostics/ccd_ldm.03 ccd_ldm03 --calibration &')
+
+    def ldm_lancia_ccd4(self):
+        os.system('/runtime/bin/gigecam-gui srv-tango-ldm-01:20000/ldm/diagnostics/ccd_ldm.04 ccd_ldm04 --calibration &')
+
+    def ldm_lancia_ccd6(self):
+        os.system('/runtime/bin/gigecam-gui srv-tango-ldm-01:20000/ldm/diagnostics/ccd_ldm.06 ccd_ldm06 --calibration &')
+
+    def ldm_lancia_ccd7(self):
+        os.system('/runtime/bin/gigecam-gui srv-tango-ldm-01:20000/ldm/diagnostics/ccd_ldm.07 ccd_ldm07 --calibration &')
+
+    def ldm_lancia_ccd9(self):
+        os.system('/runtime/bin/gigecam-gui srv-tango-ldm-01:20000/ldm/diagnostics/ccd_ldm.09 ccd_ldm09 --calibration &')
+
+    def ldm_lancia_em1(self):
+        os.system('/runtime/bin/gentec_energymeter srv-tango-ldm-01:20000/ldm/energy_meter/ems_slu_ldm.01 &')
+
+    def ldm_configura_em1(self):
+        sacco['ldm_gentec1'].command_inout('Stop')
+        sacco['ldm_gentec2'].command_inout('Stop')
+        os.system('export TANGO_HOST=srv-tango-ldm-01:20000; atkpanel ldm/energy_meter/ems_slu_ldm.01 &')
+
+    def ldm_lancia_em2(self):
+        os.system('/runtime/bin/gentec_energymeter srv-tango-ldm-01:20000/ldm/energy_meter/ems_slu_ldm.02 &')
+
+    def ldm_configura_em2(self):
+        sacco['ldm_gentec1'].command_inout('Stop')
+        sacco['ldm_gentec2'].command_inout('Stop')
+        os.system('export TANGO_HOST=srv-tango-ldm-01:20000; atkpanel ldm/energy_meter/ems_slu_ldm.02 &')
+
+    def ldm_lancia_spctm1(self):
+        os.system('/runtime/bin/solar-gui srv-tango-ldm-01:20000/ldm/diagnostics/spctm_178_1100_ldm.01 -title "Spectrum178-1100" &')
+
+    def ldm_lancia_spctm2(self):
+        os.system('/runtime/bin/solar-gui srv-tango-ldm-01:20000/ldm/diagnostics/spctm_212_385_ldm.02 -title "Spectrum 212-385" &')
+
+    def ldm_lancia_rots(self):
+        os.system('/runtime/bin/galilaxis-gui srv-tango-ldm-01:20000/ldm/motor/rots_slu_ldm.01 srv-tango-ldm-01:20000/ldm/motor/rots_slu_ldm.02 srv-tango-ldm-01:20000/ldm/motor/rots_slu_ldm.03 -title Rotation_Stages &')
+
+    def ldm_lancia_trls2(self):
+        os.system('/runtime/bin/galilaxis-gui -e srv-tango-ldm-01:20000/ldm/motor/trls_slu_ldm.02 -title Focus_Translation &')
+
+    def ldm_lancia_kom1(self):
+        os.system('/runtime/bin/galilaxis-gui srv-tango-ldm-01:20000/ldm/motor/kom_x_slu_ldm.01 srv-tango-ldm-01:20000/ldm/motor/kom_y_slu_ldm.01 -title KOM1_X_Y &')
+
+    def ldm_lancia_kom2(self):
+        os.system('/runtime/bin/galilaxis-gui srv-tango-ldm-01:20000/ldm/motor/kom_x_slu_ldm.02 srv-tango-ldm-01:20000/ldm/motor/kom_y_slu_ldm.02 -title KOM2_X_Y &')
+
+    def ldm_rots1_applica(self):
+        gol = float(self.LDM_rots1_w.text())
+        sacco['ldm_rots1'].write_attribute('UserPosition', gol)
+
+    def ldm_rots2_applica(self):
+        gol = float(self.LDM_rots2_w.text())
+        sacco['ldm_rots2'].write_attribute('UserPosition', gol)
+
+    def ldm_rots3_applica(self):
+        gol = float(self.LDM_rots3_w.text())
+        sacco['ldm_rots3'].write_attribute('UserPosition', gol)
+
+    def ldm_trls2_applica(self):
+        gol = float(self.LDM_trls2_w.text())
+        sacco['ldm_trls2'].write_attribute('UserPosition', gol)
+
+    def ldm_rots1_rp(self):
+        gol = sacco['ldm_rots1'].UserPosition + float(self.LDM_rots1_relative.muoviS.text())
+        sacco['ldm_rots1'].write_attribute('UserPosition', gol)
+
+    def ldm_rots1_rm(self):
+        gol = sacco['ldm_rots1'].UserPosition - float(self.LDM_rots1_relative.muoviS.text())
+        sacco['ldm_rots1'].write_attribute('UserPosition', gol)
+
+    def ldm_rots2_rp(self):
+        gol = sacco['ldm_rots2'].UserPosition + float(self.LDM_rots2_relative.muoviS.text())
+        sacco['ldm_rots2'].write_attribute('UserPosition', gol)
+
+    def ldm_rots2_rm(self):
+        gol = sacco['ldm_rots2'].UserPosition - float(self.LDM_rots2_relative.muoviS.text())
+        sacco['ldm_rots2'].write_attribute('UserPosition', gol)
+
+    def ldm_rots3_rp(self):
+        gol = sacco['ldm_rots3'].UserPosition + float(self.LDM_rots3_relative.muoviS.text())
+        sacco['ldm_rots3'].write_attribute('UserPosition', gol)
+
+    def ldm_rots3_rm(self):
+        gol = sacco['ldm_rots3'].UserPosition - float(self.LDM_rots3_relative.muoviS.text())
+        sacco['ldm_rots3'].write_attribute('UserPosition', gol)
+
+    def ldm_trls2_rp(self):
+        gol = sacco['ldm_trls2'].UserPosition + float(self.LDM_trls2_relative.muoviS.text())
+        sacco['ldm_trls2'].write_attribute('UserPosition', gol)
+
+    def ldm_trls2_rm(self):
+        gol = sacco['ldm_trls2'].UserPosition - float(self.LDM_trls2_relative.muoviS.text())
+        sacco['ldm_trls2'].write_attribute('UserPosition', gol)
+
+    def ldm_kom1_xp(self):
+        gol = sacco['ldm_kom1'].Position_X + float(self.LDM_kom1_rel.muoviPASSO.text())
+        sacco['ldm_kom1'].write_attribute('Position_X', gol)
+
+    def ldm_kom1_xm(self):
+        gol = sacco['ldm_kom1'].Position_X - float(self.LDM_kom1_rel.muoviPASSO.text())
+        sacco['ldm_kom1'].write_attribute('Position_X', gol)
+
+    def ldm_kom1_yp(self):
+        gol = sacco['ldm_kom1'].Position_Y + float(self.LDM_kom1_rel.muoviPASSO.text())
+        sacco['ldm_kom1'].write_attribute('Position_Y', gol)
+
+    def ldm_kom1_ym(self):
+        gol = sacco['ldm_kom1'].Position_Y - float(self.LDM_kom1_rel.muoviPASSO.text())
+        sacco['ldm_kom1'].write_attribute('Position_Y', gol)
+
+    def ldm_kom2_xp(self):
+        gol = sacco['ldm_kom2'].Position_X + float(self.LDM_kom2_rel.muoviPASSO.text())
+        sacco['ldm_kom2'].write_attribute('Position_X', gol)
+
+    def ldm_kom2_xm(self):
+        gol = sacco['ldm_kom2'].Position_X - float(self.LDM_kom2_rel.muoviPASSO.text())
+        sacco['ldm_kom2'].write_attribute('Position_X', gol)
+
+    def ldm_kom2_yp(self):
+        gol = sacco['ldm_kom2'].Position_Y + float(self.LDM_kom2_rel.muoviPASSO.text())
+        sacco['ldm_kom2'].write_attribute('Position_Y', gol)
+
+    def ldm_kom2_ym(self):
+        gol = sacco['ldm_kom2'].Position_Y - float(self.LDM_kom2_rel.muoviPASSO.text())
+        sacco['ldm_kom2'].write_attribute('Position_Y', gol)
+
+    def provailbeep(self):
+        print('\007')
+        print("\a")
+
+    def FUNZIONEVUOTA(self):
+        print('FUNZIONEVUOTA')
+   
+
+class movimentirelativi(QFrame):
+    def __init__(self):
+        super(movimentirelativi, self).__init__()
+        self.muoviM = QPushButton('<')
+        self.muoviS = QLineEdit()
+        self.muoviP = QPushButton('>')
+        ilsuolayout = QHBoxLayout()
+        ilsuolayout.addWidget(self.muoviM)
+        ilsuolayout.addWidget(self.muoviS)
+        ilsuolayout.addWidget(self.muoviP)
+        self.setLayout(ilsuolayout)
+
+class movimentiacroce(QFrame):
+    def __init__(self):
+        super(movimentiacroce, self).__init__()
+        self.muoviSU = QPushButton('UP')
+        self.muoviGIU = QPushButton('DOWN')
+        self.muoviDX = QPushButton('RIGHT')
+        self.muoviSX = QPushButton('LEFT')
+        self.muoviPASSO = QLineEdit()
+        ilsuolayout = QGridLayout()
+        ilsuolayout.addWidget(self.muoviSU, 0, 1)
+        ilsuolayout.addWidget(self.muoviSX, 1, 0)
+        ilsuolayout.addWidget(self.muoviPASSO, 1, 1)
+        ilsuolayout.addWidget(self.muoviDX, 1, 2)
+        ilsuolayout.addWidget(self.muoviGIU, 2, 1)
+        self.setLayout(ilsuolayout)
+
+class Riga_allarmi(QFrame):
+    def __init__(self, stringa):
+        super(Riga_allarmi, self).__init__()
+        testo = stringa.replace('Stato','').replace('Numero','')
+        self.cb = QCheckBox()
+        self.label = QLabel(testo)
+        self.low = QLineEdit()
+        self.low.setReadOnly(1)
+        self.low.setMaximumWidth(60)
+        self.high = QLineEdit()
+        self.high.setReadOnly(1)
+        self.high.setMaximumWidth(60)
+        self.change = QPushButton('Change limits')
+        self.vabene = QPushButton('ack')
+        ilsuolayout = QHBoxLayout()
+        ilsuolayout.addWidget(self.cb)
+        ilsuolayout.addWidget(self.label)
+        ilsuolayout.addWidget(self.low)
+        ilsuolayout.addWidget(self.high)
+        ilsuolayout.addWidget(self.change)
+        ilsuolayout.addWidget(self.vabene)
+        self.setLayout(ilsuolayout)
+
+class transport_fb_element(QFrame):
+    def __init__(self, stringa, nomeccd, nomett):
+        super(transport_fb_element, self).__init__()
+        self.etichetta = QLabel(stringa)
+        self.tasto_ccd = QPushButton('CCD')
+        if nomeccd != 'boh':
+            self.tasto_ccd.clicked.connect(lambda: self.apripannelloccd(nomeccd))
+        self.tasto_tip = QPushButton('tiptilt')
+        self.tasto_tip.clicked.connect(lambda: self.apripannellotiptilt(nomett))
+        self.barra_h = QProgressBar()
+        self.barra_h.setRange(0, 100)
+        self.barra_h.setValue(0)
+        self.barra_h.setToolTip('Horizontal')
+        self.barra_v = QProgressBar()
+        self.barra_v.setRange(0, 100)
+        self.barra_v.setValue(0)
+        self.barra_v.setToolTip('Vertical')
+        ilsuolayout = QGridLayout()
+        ilsuolayout.addWidget(self.etichetta, 0, 0, 1, 8)
+        ilsuolayout.addWidget(self.tasto_ccd, 1, 0, 1, 8)
+        ilsuolayout.addWidget(self.tasto_tip, 2, 0, 1, 8)
+        ilsuolayout.addWidget(QLabel('H:'), 3, 0)
+        ilsuolayout.addWidget(self.barra_h, 3, 1, 1, 3)
+        ilsuolayout.addWidget(QLabel('V:'), 3, 4)
+        ilsuolayout.addWidget(self.barra_v, 3, 5, 1, 3)
+        self.setLayout(ilsuolayout)
+
+    def apripannelloccd(self, ccdnome):
+        eval("os.system('/runtime/bin/gigecam-gui " + ccdnome + "  --refresh=200 &')")
+
+    def apripannellotiptilt(self, ttnome):
+        eval("os.system('/runtime/bin/slutiptilt " + ttnome + " &')")
+
+
+class QHLine(QFrame):
+    def __init__(self):
+        super(QHLine, self).__init__()
+        self.setFrameShape(QFrame.HLine)
+        self.setFrameShadow(QFrame.Sunken)
+
+class QVLine(QFrame):
+    def __init__(self):
+        super(QVLine, self).__init__()
+        self.setFrameShape(QFrame.VLine)
+        self.setFrameShadow(QFrame.Sunken)
+
+class LineEditRO(QLineEdit):
+    def __init__(self):
+        super(LineEditRO, self).__init__()
+        self.setReadOnly(1)
+        self.setStyleSheet("background-color: rgb(200, 200, 200)")
+#        self.setFont(font_importante)
+
+
+
 app = QApplication([])
 main = MainWindow()
 app.exec_()