From 0ee9d005f64ac5e6e9ffe0ac760dff856a69cd44 Mon Sep 17 00:00:00 2001
From: Lorenzo Pivetta <lorenzo.pivetta@elettra.eu>
Date: Mon, 18 May 2020 13:59:58 +0200
Subject: [PATCH] Initial import

---
 .gitignore           |    1 +
 Makefile             |   18 +
 src/sl-decimators.py | 1300 ++++++++++++++++++++++++++++++++++++++++++
 3 files changed, 1319 insertions(+)
 create mode 100644 .gitignore
 create mode 100644 Makefile
 create mode 100644 src/sl-decimators.py

diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..ba077a4
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1 @@
+bin
diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..7bddf66
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,18 @@
+NAME = sl-decimators-gui
+MAIN = sl-decimators.py
+
+DIRNAME = $(NAME:-gui=)
+PY_FILES += $(wildcard src/*.py)
+
+default: bin ${PY_FILES}
+	@cp ${PY_FILES} bin/${DIRNAME}
+	@echo "#!/bin/bash\nexec ${DIRNAME}/${MAIN}" > bin/${NAME}
+	@chmod +x bin/${NAME} bin/${DIRNAME}/${MAIN}
+
+bin:
+	@test -d $@ || mkdir -p $@/${DIRNAME}
+
+clean:
+	@rm -fr bin/ src/*~
+
+.PHONY: clean
diff --git a/src/sl-decimators.py b/src/sl-decimators.py
new file mode 100644
index 0000000..76067fd
--- /dev/null
+++ b/src/sl-decimators.py
@@ -0,0 +1,1300 @@
+#!/usr/bin/python3
+#-*- coding: utf-8 -*-
+
+import PyTango
+from PyQt4.QtCore import *
+from PyQt4.QtGui import *
+
+devicelist = {}
+devicelist['1'] = PyTango.DeviceProxy('f/timing/rttrigger_sl.01')
+devicelist['2'] = PyTango.DeviceProxy('f/timing/rttrigger_sl.02')
+devicelist['3'] = PyTango.DeviceProxy('f/timing/rttrigger_sl.03')
+devicelist['4'] = PyTango.DeviceProxy('f/timing/rttrigger_sl.04')
+devicelist['5'] = PyTango.DeviceProxy('f/timing/rttrigger_sl.05')
+devicelist['contollo'] = PyTango.DeviceProxy('ec-sl-slpsr-01/rtevr/ff100000')
+
+
+class Finestra(QTabWidget):
+    def __init__(self, parent=None):
+        super(Finestra, self).__init__(parent)
+        self.paginagenerale = QFrame()
+        self.paginagenerale_1facileindicatore = QLineEdit()
+        self.paginagenerale_1etichetta = QLabel('f/timing/rttrigger_sl.01')
+        self.paginagenerale_1modalita = LineEditRO()
+        self.paginagenerale_1on = QPushButton('ON')
+        self.paginagenerale_1on.clicked.connect(self.accendi1)
+        self.paginagenerale_1off = QPushButton('OFF')
+        self.paginagenerale_1off.clicked.connect(self.spegni1)
+        self.paginagenerale_1conf = QToolButton()
+        self.paginagenerale_2facileindicatore = QLineEdit()
+        self.paginagenerale_2etichetta = QLabel('f/timing/rttrigger_sl.02')
+        self.paginagenerale_2modalita = LineEditRO()
+        self.paginagenerale_2on = QPushButton('ON')
+        self.paginagenerale_2on.clicked.connect(self.accendi2)
+        self.paginagenerale_2off = QPushButton('OFF')
+        self.paginagenerale_2off.clicked.connect(self.spegni2)
+        self.paginagenerale_2conf = QToolButton()
+        self.paginagenerale_3facileindicatore = QLineEdit()
+        self.paginagenerale_3etichetta = QLabel('f/timing/rttrigger_sl.03')
+        self.paginagenerale_3modalita = LineEditRO()
+        self.paginagenerale_3on = QPushButton('ON')
+        self.paginagenerale_3on.clicked.connect(self.accendi3)
+        self.paginagenerale_3off = QPushButton('OFF')
+        self.paginagenerale_3off.clicked.connect(self.spegni3)
+        self.paginagenerale_3conf = QToolButton()
+        self.paginagenerale_4facileindicatore = QLineEdit()
+        self.paginagenerale_4etichetta = QLabel('f/timing/rttrigger_sl.04')
+        self.paginagenerale_4modalita = LineEditRO()
+        self.paginagenerale_4on = QPushButton('ON')
+        self.paginagenerale_4on.clicked.connect(self.accendi4)
+        self.paginagenerale_4off = QPushButton('OFF')
+        self.paginagenerale_4off.clicked.connect(self.spegni4)
+        self.paginagenerale_4conf = QToolButton()
+        self.paginagenerale_5facileindicatore = QLineEdit()
+        self.paginagenerale_5etichetta = QLabel('f/timing/rttrigger_sl.05')
+        self.paginagenerale_5modalita = LineEditRO()
+        self.paginagenerale_5on = QPushButton('ON')
+        self.paginagenerale_5on.clicked.connect(self.accendi5)
+        self.paginagenerale_5off = QPushButton('OFF')
+        self.paginagenerale_5off.clicked.connect(self.spegni5)
+        self.paginagenerale_5conf = QToolButton()
+        self.LO_paginagenerale = QGridLayout()
+        self.LO_paginagenerale.addWidget(self.paginagenerale_1facileindicatore, 10, 0, 1, 1)
+        self.LO_paginagenerale.addWidget(self.paginagenerale_1etichetta, 10, 1, 1, 1)
+        self.LO_paginagenerale.addWidget(self.paginagenerale_1modalita, 10, 2, 1, 1)
+        self.LO_paginagenerale.addWidget(self.paginagenerale_1on, 10, 3, 1, 1)
+        self.LO_paginagenerale.addWidget(self.paginagenerale_1off, 10, 4, 1, 1)
+        self.LO_paginagenerale.addWidget(self.paginagenerale_1conf, 10, 5, 1, 1)
+        self.LO_paginagenerale.addWidget(self.paginagenerale_2facileindicatore, 20, 0, 1, 1)
+        self.LO_paginagenerale.addWidget(self.paginagenerale_2etichetta, 20, 1, 1, 1)
+        self.LO_paginagenerale.addWidget(self.paginagenerale_2modalita, 20, 2, 1, 1)
+        self.LO_paginagenerale.addWidget(self.paginagenerale_2on, 20, 3, 1, 1)
+        self.LO_paginagenerale.addWidget(self.paginagenerale_2off, 20, 4, 1, 1)
+        self.LO_paginagenerale.addWidget(self.paginagenerale_2conf, 20, 5, 1, 1)
+        self.LO_paginagenerale.addWidget(self.paginagenerale_3facileindicatore, 30, 0, 1, 1)
+        self.LO_paginagenerale.addWidget(self.paginagenerale_3etichetta, 30, 1, 1, 1)
+        self.LO_paginagenerale.addWidget(self.paginagenerale_3modalita, 30, 2, 1, 1)
+        self.LO_paginagenerale.addWidget(self.paginagenerale_3on, 30, 3, 1, 1)
+        self.LO_paginagenerale.addWidget(self.paginagenerale_3off, 30, 4, 1, 1)
+        self.LO_paginagenerale.addWidget(self.paginagenerale_3conf, 30, 5, 1, 1)
+        self.LO_paginagenerale.addWidget(self.paginagenerale_4facileindicatore, 40, 0, 1, 1)
+        self.LO_paginagenerale.addWidget(self.paginagenerale_4etichetta, 40, 1, 1, 1)
+        self.LO_paginagenerale.addWidget(self.paginagenerale_4modalita, 40, 2, 1, 1)
+        self.LO_paginagenerale.addWidget(self.paginagenerale_4on, 40, 3, 1, 1)
+        self.LO_paginagenerale.addWidget(self.paginagenerale_4off, 40, 4, 1, 1)
+        self.LO_paginagenerale.addWidget(self.paginagenerale_4conf, 40, 5, 1, 1)
+        self.LO_paginagenerale.addWidget(self.paginagenerale_5facileindicatore, 50, 0, 1, 1)
+        self.LO_paginagenerale.addWidget(self.paginagenerale_5etichetta, 50, 1, 1, 1)
+        self.LO_paginagenerale.addWidget(self.paginagenerale_5modalita, 50, 2, 1, 1)
+        self.LO_paginagenerale.addWidget(self.paginagenerale_5on, 50, 3, 1, 1)
+        self.LO_paginagenerale.addWidget(self.paginagenerale_5off, 50, 4, 1, 1)
+        self.LO_paginagenerale.addWidget(self.paginagenerale_5conf, 50, 5, 1, 1)
+        self.paginagenerale.setLayout(self.LO_paginagenerale)
+        #
+        self.paginadeci1 = QFrame()
+        self.paginadeci1_campo_BunchNumber = DoppiaSceltanofun('Enable start/end BunchNumber')
+        self.paginadeci1_campo_BunchNumberEnd_R = LineEditRO()
+        self.paginadeci1_campo_BunchNumberEnd_W = QLineEdit()
+        self.paginadeci1_campo_BunchNumberStart_R = LineEditRO()
+        self.paginadeci1_campo_BunchNumberStart_W = QLineEdit()
+        self.paginadeci1_campo_DelayMode = QRadioButton('Delay mode')
+        self.paginadeci1_campo_DelayMode.chiave = '1'
+        self.paginadeci1_campo_DelayMode.clicked.connect(self.sceltadelay)
+        self.paginadeci1_campo_DelayOffset_R = LineEditRO()
+        self.paginadeci1_campo_DelayOffset_W = QLineEdit()
+        self.paginadeci1_campo_EnableStaticTriggerShift = DoppiaScelta('Enable Static Trigger Shift', '1', 'EnableStaticTriggerShift')
+        self.paginadeci1_campo_InfiniteCycle = DoppiaScelta('Infinite cycles', '1', 'InfiniteCycle')
+        self.paginadeci1_campo_InfiniteCycle.radiopositive.setChecked(1)
+        self.paginadeci1_campo_MaxNumCycles_R = LineEditRO()
+        self.paginadeci1_campo_MaxNumCycles_W = QLineEdit()
+        self.paginadeci1_campo_PolarityMode = DoppiaScelta('Polarity mode', '1', 'PolarityMode')
+        self.paginadeci1_campo_ReverseMode = DoppiaScelta('Reverse mode', '1', 'ReverseMode')
+        self.paginadeci1_campo_SaveModes = DoppiaScelta('Save modes', '1', 'SaveModes')
+        self.paginadeci1_campo_Sequence_R = LineEditRO()
+        self.paginadeci1_campo_Sequence_W = QLineEdit()
+        self.paginadeci1_campo_State = LineEditRO()
+        self.paginadeci1_campo_Status = LineEditRO()
+        self.paginadeci1_campo_StatusMode = QRadioButton('Status Mode')
+        self.paginadeci1_campo_StatusMode.chiave = '1'
+        self.paginadeci1_campo_StatusMode.clicked.connect(self.sceltastatus)
+        self.paginadeci1_applica = QPushButton('Apply')
+        self.paginadeci1_applica.clicked.connect(self.applica1)
+        self.paginadeci1_on = QPushButton('ON')
+        self.paginadeci1_on.clicked.connect(self.accendi1)
+        self.paginadeci1_off = QPushButton('OFF')
+        self.paginadeci1_off.clicked.connect(self.spegni1)
+        self.LOpaginadeci1 = QGridLayout()
+        self.LOpaginadeci1.addWidget(QLabel('This decive acts on the trigger signal for both SEED and SLU'), 0, 0, 1, 3)
+        self.LOpaginadeci1.addWidget(QLabel(''), 1, 0, 1, 3)
+        self.LOpaginadeci1.addWidget(QLabel('State(misleading): '), 2, 0, 1, 1)
+        self.LOpaginadeci1.addWidget(self.paginadeci1_campo_State, 2, 1, 1, 1)
+        self.LOpaginadeci1.addWidget(QLabel('Status: '), 3, 0, 1, 1)
+        self.LOpaginadeci1.addWidget(self.paginadeci1_campo_Status, 3, 1, 1, 2)
+        self.LOpaginadeci1.addWidget(self.paginadeci1_on, 4, 0, 1, 1)
+        self.LOpaginadeci1.addWidget(self.paginadeci1_off, 4, 1, 1, 1)
+        self.LOpaginadeci1.addWidget(QLabel('BunchNumber Start: '), 10, 0, 1, 1)
+        self.LOpaginadeci1.addWidget(self.paginadeci1_campo_BunchNumberStart_R, 10, 1, 1, 1)
+        self.LOpaginadeci1.addWidget(self.paginadeci1_campo_BunchNumberStart_W, 10, 2, 1, 1)
+        self.LOpaginadeci1.addWidget(QLabel('BunchNumber End: '), 11, 0, 1, 1)
+        self.LOpaginadeci1.addWidget(self.paginadeci1_campo_BunchNumberEnd_R, 11, 1, 1, 1)
+        self.LOpaginadeci1.addWidget(self.paginadeci1_campo_BunchNumberEnd_W, 11, 2, 1, 1)
+        self.LOpaginadeci1.addWidget(QLabel('Delay offset: '), 12, 0, 1, 1)
+        self.LOpaginadeci1.addWidget(self.paginadeci1_campo_DelayOffset_R, 12, 1, 1, 1)
+        self.LOpaginadeci1.addWidget(self.paginadeci1_campo_DelayOffset_W, 12, 2, 1, 1)
+        self.LOpaginadeci1.addWidget(QLabel('Sequence: '), 13, 0, 1, 1)
+        self.LOpaginadeci1.addWidget(self.paginadeci1_campo_Sequence_R, 13, 1, 1, 1)
+        self.LOpaginadeci1.addWidget(self.paginadeci1_campo_Sequence_W, 13, 2, 1, 1)
+        self.LOpaginadeci1.addWidget(QLabel('Max num Cycles: '), 14, 0, 1, 1)
+        self.LOpaginadeci1.addWidget(self.paginadeci1_campo_MaxNumCycles_R, 14, 1, 1, 1)
+        self.LOpaginadeci1.addWidget(self.paginadeci1_campo_MaxNumCycles_W, 14, 2, 1, 1)
+        self.LOpaginadeci1.addWidget(self.paginadeci1_campo_StatusMode, 20, 0, 1, 1)
+        self.LOpaginadeci1.addWidget(self.paginadeci1_campo_DelayMode, 20, 1, 1, 1)
+        self.LOpaginadeci1.addWidget(self.paginadeci1_campo_InfiniteCycle, 22, 0, 1, 3)
+        self.LOpaginadeci1.addWidget(self.paginadeci1_campo_EnableStaticTriggerShift, 23, 0, 1, 3)
+        self.LOpaginadeci1.addWidget(self.paginadeci1_campo_PolarityMode, 24, 0, 1, 3)
+        self.LOpaginadeci1.addWidget(self.paginadeci1_campo_ReverseMode, 25, 0, 1, 3)
+        self.LOpaginadeci1.addWidget(self.paginadeci1_campo_SaveModes, 26, 0, 1, 3)
+        self.LOpaginadeci1.addWidget(self.paginadeci1_campo_BunchNumber, 27, 0, 1, 3)
+        self.LOpaginadeci1.addWidget(self.paginadeci1_applica, 30, 0, 1, 3)
+        self.paginadeci1.setLayout(self.LOpaginadeci1)
+        #
+        self.paginadeci2 = QFrame()
+        self.paginadeci2_campo_BunchNumber = DoppiaSceltanofun('Enable start/end BunchNumber')
+        self.paginadeci2_campo_BunchNumberEnd_R = LineEditRO()
+        self.paginadeci2_campo_BunchNumberEnd_W = QLineEdit()
+        self.paginadeci2_campo_BunchNumberStart_R = LineEditRO()
+        self.paginadeci2_campo_BunchNumberStart_W = QLineEdit()
+        self.paginadeci2_campo_DelayMode = QRadioButton('Delay mode')
+        self.paginadeci2_campo_DelayMode.chiave = '2'
+        self.paginadeci2_campo_DelayMode.clicked.connect(self.sceltadelay)
+        self.paginadeci2_campo_DelayOffset_R = LineEditRO()
+        self.paginadeci2_campo_DelayOffset_W = QLineEdit()
+        self.paginadeci2_campo_EnableStaticTriggerShift = DoppiaScelta('Enable Static Trigger Shift', '2', 'EnableStaticTriggerShift')
+        self.paginadeci2_campo_InfiniteCycle = DoppiaScelta('Infinite cycles', '2', 'InfiniteCycle')
+        self.paginadeci2_campo_InfiniteCycle.radiopositive.setChecked(1)
+        self.paginadeci2_campo_MaxNumCycles_R = LineEditRO()
+        self.paginadeci2_campo_MaxNumCycles_W = QLineEdit()
+        self.paginadeci2_campo_PolarityMode = DoppiaScelta('Polarity mode', '2', 'PolarityMode')
+        self.paginadeci2_campo_ReverseMode = DoppiaScelta('Reverse mode', '2', 'ReverseMode')
+        self.paginadeci2_campo_SaveModes = DoppiaScelta('Save modes', '2', 'SaveModes')
+        self.paginadeci2_campo_Sequence_R = LineEditRO()
+        self.paginadeci2_campo_Sequence_W = QLineEdit()
+        self.paginadeci2_campo_State = LineEditRO()
+        self.paginadeci2_campo_Status = LineEditRO()
+        self.paginadeci2_campo_StatusMode = QRadioButton('Status Mode')
+        self.paginadeci2_campo_StatusMode.chiave = '2'
+        self.paginadeci2_campo_StatusMode.clicked.connect(self.sceltastatus)
+        self.paginadeci2_applica = QPushButton('Apply')
+        self.paginadeci2_applica.clicked.connect(self.applica2)
+        self.paginadeci2_on = QPushButton('ON')
+        self.paginadeci2_on.clicked.connect(self.accendi2)
+        self.paginadeci2_off = QPushButton('OFF')
+        self.paginadeci2_off.clicked.connect(self.spegni2)
+        self.LOpaginadeci2 = QGridLayout()
+        self.LOpaginadeci2.addWidget(QLabel('With FEL1 this decive acts on the trigger signal for SEED'), 0, 0, 1, 3)
+        self.LOpaginadeci2.addWidget(QLabel('With FEL2 this decive acts on the trigger signal for SLU'), 1, 0, 1, 3)
+        self.LOpaginadeci2.addWidget(QLabel('State(misleading): '), 2, 0, 1, 1)
+        self.LOpaginadeci2.addWidget(self.paginadeci2_campo_State, 2, 1, 1, 1)
+        self.LOpaginadeci2.addWidget(QLabel('Status: '), 3, 0, 1, 1)
+        self.LOpaginadeci2.addWidget(self.paginadeci2_campo_Status, 3, 1, 1, 2)
+        self.LOpaginadeci2.addWidget(self.paginadeci2_on, 4, 0, 1, 1)
+        self.LOpaginadeci2.addWidget(self.paginadeci2_off, 4, 1, 1, 1)
+        self.LOpaginadeci2.addWidget(QLabel('BunchNumber Start: '), 10, 0, 1, 1)
+        self.LOpaginadeci2.addWidget(self.paginadeci2_campo_BunchNumberStart_R, 10, 1, 1, 1)
+        self.LOpaginadeci2.addWidget(self.paginadeci2_campo_BunchNumberStart_W, 10, 2, 1, 1)
+        self.LOpaginadeci2.addWidget(QLabel('BunchNumber End: '), 11, 0, 1, 1)
+        self.LOpaginadeci2.addWidget(self.paginadeci2_campo_BunchNumberEnd_R, 11, 1, 1, 1)
+        self.LOpaginadeci2.addWidget(self.paginadeci2_campo_BunchNumberEnd_W, 11, 2, 1, 1)
+        self.LOpaginadeci2.addWidget(QLabel('Delay offset: '), 12, 0, 1, 1)
+        self.LOpaginadeci2.addWidget(self.paginadeci2_campo_DelayOffset_R, 12, 1, 1, 1)
+        self.LOpaginadeci2.addWidget(self.paginadeci2_campo_DelayOffset_W, 12, 2, 1, 1)
+        self.LOpaginadeci2.addWidget(QLabel('Sequence: '), 13, 0, 1, 1)
+        self.LOpaginadeci2.addWidget(self.paginadeci2_campo_Sequence_R, 13, 1, 1, 1)
+        self.LOpaginadeci2.addWidget(self.paginadeci2_campo_Sequence_W, 13, 2, 1, 1)
+        self.LOpaginadeci2.addWidget(QLabel('Max num Cycles: '), 14, 0, 1, 1)
+        self.LOpaginadeci2.addWidget(self.paginadeci2_campo_MaxNumCycles_R, 14, 1, 1, 1)
+        self.LOpaginadeci2.addWidget(self.paginadeci2_campo_MaxNumCycles_W, 14, 2, 1, 1)
+        self.LOpaginadeci2.addWidget(self.paginadeci2_campo_StatusMode, 20, 0, 1, 1)
+        self.LOpaginadeci2.addWidget(self.paginadeci2_campo_DelayMode, 20, 1, 1, 1)
+        self.LOpaginadeci2.addWidget(self.paginadeci2_campo_InfiniteCycle, 22, 0, 1, 3)
+        self.LOpaginadeci2.addWidget(self.paginadeci2_campo_EnableStaticTriggerShift, 23, 0, 1, 3)
+        self.LOpaginadeci2.addWidget(self.paginadeci2_campo_PolarityMode, 24, 0, 1, 3)
+        self.LOpaginadeci2.addWidget(self.paginadeci2_campo_ReverseMode, 25, 0, 1, 3)
+        self.LOpaginadeci2.addWidget(self.paginadeci2_campo_SaveModes, 26, 0, 1, 3)
+        self.LOpaginadeci2.addWidget(self.paginadeci2_campo_BunchNumber, 27, 0, 1, 3)
+        self.LOpaginadeci2.addWidget(self.paginadeci2_applica, 30, 0, 1, 3)
+        self.paginadeci2.setLayout(self.LOpaginadeci2)
+        #
+        self.paginadeci3 = QFrame()
+        self.paginadeci3_campo_BunchNumber = DoppiaSceltanofun('Enable start/end BunchNumber')
+        self.paginadeci3_campo_BunchNumberEnd_R = LineEditRO()
+        self.paginadeci3_campo_BunchNumberEnd_W = QLineEdit()
+        self.paginadeci3_campo_BunchNumberStart_R = LineEditRO()
+        self.paginadeci3_campo_BunchNumberStart_W = QLineEdit()
+        self.paginadeci3_campo_DelayMode = QRadioButton('Delay mode')
+        self.paginadeci3_campo_DelayMode.chiave = '3'
+        self.paginadeci3_campo_DelayMode.clicked.connect(self.sceltadelay)
+        self.paginadeci3_campo_DelayOffset_R = LineEditRO()
+        self.paginadeci3_campo_DelayOffset_W = QLineEdit()
+        self.paginadeci3_campo_EnableStaticTriggerShift = DoppiaScelta('Enable Static Trigger Shift', '3', 'EnableStaticTriggerShift')
+        self.paginadeci3_campo_InfiniteCycle = DoppiaScelta('Infinite cycles', '3', 'InfiniteCycle')
+        self.paginadeci3_campo_InfiniteCycle.radiopositive.setChecked(1)
+        self.paginadeci3_campo_MaxNumCycles_R = LineEditRO()
+        self.paginadeci3_campo_MaxNumCycles_W = QLineEdit()
+        self.paginadeci3_campo_PolarityMode = DoppiaScelta('Polarity mode', '3', 'PolarityMode')
+        self.paginadeci3_campo_ReverseMode = DoppiaScelta('Reverse mode', '3', 'ReverseMode')
+        self.paginadeci3_campo_SaveModes = DoppiaScelta('Save modes', '3', 'SaveModes')
+        self.paginadeci3_campo_Sequence_R = LineEditRO()
+        self.paginadeci3_campo_Sequence_W = QLineEdit()
+        self.paginadeci3_campo_State = LineEditRO()
+        self.paginadeci3_campo_Status = LineEditRO()
+        self.paginadeci3_campo_StatusMode = QRadioButton('Status Mode')
+        self.paginadeci3_campo_StatusMode.chiave = '3'
+        self.paginadeci3_campo_StatusMode.clicked.connect(self.sceltastatus)
+        self.paginadeci3_applica = QPushButton('Apply')
+        self.paginadeci3_applica.clicked.connect(self.applica3)
+        self.paginadeci3_on = QPushButton('ON')
+        self.paginadeci3_on.clicked.connect(self.accendi3)
+        self.paginadeci3_off = QPushButton('OFF')
+        self.paginadeci3_off.clicked.connect(self.spegni3)
+        self.LOpaginadeci3 = QGridLayout()
+        self.LOpaginadeci3.addWidget(QLabel('With FEL1 this decive acts on the trigger signal for SLU'), 0, 0, 1, 3)
+        self.LOpaginadeci3.addWidget(QLabel('With FEL2 this decive acts on the trigger signal for SEED'), 1, 0, 1, 3)
+        self.LOpaginadeci3.addWidget(QLabel('State(misleading): '), 2, 0, 1, 1)
+        self.LOpaginadeci3.addWidget(self.paginadeci3_campo_State, 2, 1, 1, 1)
+        self.LOpaginadeci3.addWidget(QLabel('Status: '), 3, 0, 1, 1)
+        self.LOpaginadeci3.addWidget(self.paginadeci3_campo_Status, 3, 1, 1, 2)
+        self.LOpaginadeci3.addWidget(self.paginadeci3_on, 4, 0, 1, 1)
+        self.LOpaginadeci3.addWidget(self.paginadeci3_off, 4, 1, 1, 1)
+        self.LOpaginadeci3.addWidget(QLabel('BunchNumber Start: '), 10, 0, 1, 1)
+        self.LOpaginadeci3.addWidget(self.paginadeci3_campo_BunchNumberStart_R, 10, 1, 1, 1)
+        self.LOpaginadeci3.addWidget(self.paginadeci3_campo_BunchNumberStart_W, 10, 2, 1, 1)
+        self.LOpaginadeci3.addWidget(QLabel('BunchNumber End: '), 11, 0, 1, 1)
+        self.LOpaginadeci3.addWidget(self.paginadeci3_campo_BunchNumberEnd_R, 11, 1, 1, 1)
+        self.LOpaginadeci3.addWidget(self.paginadeci3_campo_BunchNumberEnd_W, 11, 2, 1, 1)
+        self.LOpaginadeci3.addWidget(QLabel('Delay offset: '), 12, 0, 1, 1)
+        self.LOpaginadeci3.addWidget(self.paginadeci3_campo_DelayOffset_R, 12, 1, 1, 1)
+        self.LOpaginadeci3.addWidget(self.paginadeci3_campo_DelayOffset_W, 12, 2, 1, 1)
+        self.LOpaginadeci3.addWidget(QLabel('Sequence: '), 13, 0, 1, 1)
+        self.LOpaginadeci3.addWidget(self.paginadeci3_campo_Sequence_R, 13, 1, 1, 1)
+        self.LOpaginadeci3.addWidget(self.paginadeci3_campo_Sequence_W, 13, 2, 1, 1)
+        self.LOpaginadeci3.addWidget(QLabel('Max num Cycles: '), 14, 0, 1, 1)
+        self.LOpaginadeci3.addWidget(self.paginadeci3_campo_MaxNumCycles_R, 14, 1, 1, 1)
+        self.LOpaginadeci3.addWidget(self.paginadeci3_campo_MaxNumCycles_W, 14, 2, 1, 1)
+        self.LOpaginadeci3.addWidget(self.paginadeci3_campo_StatusMode, 20, 0, 1, 1)
+        self.LOpaginadeci3.addWidget(self.paginadeci3_campo_DelayMode, 20, 1, 1, 1)
+        self.LOpaginadeci3.addWidget(self.paginadeci3_campo_InfiniteCycle, 22, 0, 1, 3)
+        self.LOpaginadeci3.addWidget(self.paginadeci3_campo_EnableStaticTriggerShift, 23, 0, 1, 3)
+        self.LOpaginadeci3.addWidget(self.paginadeci3_campo_PolarityMode, 24, 0, 1, 3)
+        self.LOpaginadeci3.addWidget(self.paginadeci3_campo_ReverseMode, 25, 0, 1, 3)
+        self.LOpaginadeci3.addWidget(self.paginadeci3_campo_SaveModes, 26, 0, 1, 3)
+        self.LOpaginadeci3.addWidget(self.paginadeci3_campo_BunchNumber, 27, 0, 1, 3)
+        self.LOpaginadeci3.addWidget(self.paginadeci3_applica, 30, 0, 1, 3)
+        self.paginadeci3.setLayout(self.LOpaginadeci3)
+        #
+        self.paginadeci4 = QFrame()
+        self.paginadeci4_campo_BunchNumber = DoppiaSceltanofun('Enable start/end BunchNumber')
+        self.paginadeci4_campo_BunchNumberEnd_R = LineEditRO()
+        self.paginadeci4_campo_BunchNumberEnd_W = QLineEdit()
+        self.paginadeci4_campo_BunchNumberStart_R = LineEditRO()
+        self.paginadeci4_campo_BunchNumberStart_W = QLineEdit()
+        self.paginadeci4_campo_DelayMode = QRadioButton('Delay mode')
+        self.paginadeci4_campo_DelayMode.chiave = '4'
+        self.paginadeci4_campo_DelayMode.clicked.connect(self.sceltadelay)
+        self.paginadeci4_campo_DelayOffset_R = LineEditRO()
+        self.paginadeci4_campo_DelayOffset_W = QLineEdit()
+        self.paginadeci4_campo_EnableStaticTriggerShift = DoppiaScelta('Enable Static Trigger Shift', '4', 'EnableStaticTriggerShift')
+        self.paginadeci4_campo_InfiniteCycle = DoppiaScelta('Infinite cycles', '4', 'InfiniteCycle')
+        self.paginadeci4_campo_InfiniteCycle.radiopositive.setChecked(1)
+        self.paginadeci4_campo_MaxNumCycles_R = LineEditRO()
+        self.paginadeci4_campo_MaxNumCycles_W = QLineEdit()
+        self.paginadeci4_campo_PolarityMode = DoppiaScelta('Polarity mode', '4', 'PolarityMode')
+        self.paginadeci4_campo_ReverseMode = DoppiaScelta('Reverse mode', '4', 'ReverseMode')
+        self.paginadeci4_campo_SaveModes = DoppiaScelta('Save modes', '4', 'SaveModes')
+        self.paginadeci4_campo_Sequence_R = LineEditRO()
+        self.paginadeci4_campo_Sequence_W = QLineEdit()
+        self.paginadeci4_campo_State = LineEditRO()
+        self.paginadeci4_campo_Status = LineEditRO()
+        self.paginadeci4_campo_StatusMode = QRadioButton('Status Mode')
+        self.paginadeci4_campo_StatusMode.chiave = '4'
+        self.paginadeci4_campo_StatusMode.clicked.connect(self.sceltastatus)
+        self.paginadeci4_applica = QPushButton('Apply')
+        self.paginadeci4_applica.clicked.connect(self.applica4)
+        self.paginadeci4_on = QPushButton('ON')
+        self.paginadeci4_on.clicked.connect(self.accendi4)
+        self.paginadeci4_off = QPushButton('OFF')
+        self.paginadeci4_off.clicked.connect(self.spegni4)
+        self.LOpaginadeci4 = QGridLayout()
+        self.LOpaginadeci4.addWidget(QLabel('Amplifier 1 without diagnostics'), 0, 0, 1, 3)
+        self.LOpaginadeci4.addWidget(QLabel(''), 1, 0, 1, 3)
+        self.LOpaginadeci4.addWidget(QLabel('State(misleading): '), 2, 0, 1, 1)
+        self.LOpaginadeci4.addWidget(self.paginadeci4_campo_State, 2, 1, 1, 1)
+        self.LOpaginadeci4.addWidget(QLabel('Status: '), 3, 0, 1, 1)
+        self.LOpaginadeci4.addWidget(self.paginadeci4_campo_Status, 3, 1, 1, 2)
+        self.LOpaginadeci4.addWidget(self.paginadeci4_on, 4, 0, 1, 1)
+        self.LOpaginadeci4.addWidget(self.paginadeci4_off, 4, 1, 1, 1)
+        self.LOpaginadeci4.addWidget(QLabel('BunchNumber Start: '), 10, 0, 1, 1)
+        self.LOpaginadeci4.addWidget(self.paginadeci4_campo_BunchNumberStart_R, 10, 1, 1, 1)
+        self.LOpaginadeci4.addWidget(self.paginadeci4_campo_BunchNumberStart_W, 10, 2, 1, 1)
+        self.LOpaginadeci4.addWidget(QLabel('BunchNumber End: '), 11, 0, 1, 1)
+        self.LOpaginadeci4.addWidget(self.paginadeci4_campo_BunchNumberEnd_R, 11, 1, 1, 1)
+        self.LOpaginadeci4.addWidget(self.paginadeci4_campo_BunchNumberEnd_W, 11, 2, 1, 1)
+        self.LOpaginadeci4.addWidget(QLabel('Delay offset: '), 12, 0, 1, 1)
+        self.LOpaginadeci4.addWidget(self.paginadeci4_campo_DelayOffset_R, 12, 1, 1, 1)
+        self.LOpaginadeci4.addWidget(self.paginadeci4_campo_DelayOffset_W, 12, 2, 1, 1)
+        self.LOpaginadeci4.addWidget(QLabel('Sequence: '), 13, 0, 1, 1)
+        self.LOpaginadeci4.addWidget(self.paginadeci4_campo_Sequence_R, 13, 1, 1, 1)
+        self.LOpaginadeci4.addWidget(self.paginadeci4_campo_Sequence_W, 13, 2, 1, 1)
+        self.LOpaginadeci4.addWidget(QLabel('Max num Cycles: '), 14, 0, 1, 1)
+        self.LOpaginadeci4.addWidget(self.paginadeci4_campo_MaxNumCycles_R, 14, 1, 1, 1)
+        self.LOpaginadeci4.addWidget(self.paginadeci4_campo_MaxNumCycles_W, 14, 2, 1, 1)
+        self.LOpaginadeci4.addWidget(self.paginadeci4_campo_StatusMode, 20, 0, 1, 1)
+        self.LOpaginadeci4.addWidget(self.paginadeci4_campo_DelayMode, 20, 1, 1, 1)
+        self.LOpaginadeci4.addWidget(self.paginadeci4_campo_InfiniteCycle, 22, 0, 1, 3)
+        self.LOpaginadeci4.addWidget(self.paginadeci4_campo_EnableStaticTriggerShift, 23, 0, 1, 3)
+        self.LOpaginadeci4.addWidget(self.paginadeci4_campo_PolarityMode, 24, 0, 1, 3)
+        self.LOpaginadeci4.addWidget(self.paginadeci4_campo_ReverseMode, 25, 0, 1, 3)
+        self.LOpaginadeci4.addWidget(self.paginadeci4_campo_SaveModes, 26, 0, 1, 3)
+        self.LOpaginadeci4.addWidget(self.paginadeci4_campo_BunchNumber, 27, 0, 1, 3)
+        self.LOpaginadeci4.addWidget(self.paginadeci4_applica, 30, 0, 1, 3)
+        self.paginadeci4.setLayout(self.LOpaginadeci4)
+        #
+        self.paginadeci5 = QFrame()
+        self.paginadeci5_campo_BunchNumber = DoppiaSceltanofun('Enable start/end BunchNumber')
+        self.paginadeci5_campo_BunchNumberEnd_R = LineEditRO()
+        self.paginadeci5_campo_BunchNumberEnd_W = QLineEdit()
+        self.paginadeci5_campo_BunchNumberStart_R = LineEditRO()
+        self.paginadeci5_campo_BunchNumberStart_W = QLineEdit()
+        self.paginadeci5_campo_DelayMode = QRadioButton('Delay mode')
+        self.paginadeci5_campo_DelayMode.chiave = '5'
+        self.paginadeci5_campo_DelayMode.clicked.connect(self.sceltadelay)
+        self.paginadeci5_campo_DelayOffset_R = LineEditRO()
+        self.paginadeci5_campo_DelayOffset_W = QLineEdit()
+        self.paginadeci5_campo_EnableStaticTriggerShift = DoppiaScelta('Enable Static Trigger Shift', '5', 'EnableStaticTriggerShift')
+        self.paginadeci5_campo_InfiniteCycle = DoppiaScelta('Infinite cycles', '5', 'InfiniteCycle')
+        self.paginadeci5_campo_InfiniteCycle.radiopositive.setChecked(1)
+        self.paginadeci5_campo_MaxNumCycles_R = LineEditRO()
+        self.paginadeci5_campo_MaxNumCycles_W = QLineEdit()
+        self.paginadeci5_campo_PolarityMode = DoppiaScelta('Polarity mode', '5', 'PolarityMode')
+        self.paginadeci5_campo_ReverseMode = DoppiaScelta('Reverse mode', '5', 'ReverseMode')
+        self.paginadeci5_campo_SaveModes = DoppiaScelta('Save modes', '5', 'SaveModes')
+        self.paginadeci5_campo_Sequence_R = LineEditRO()
+        self.paginadeci5_campo_Sequence_W = QLineEdit()
+        self.paginadeci5_campo_State = LineEditRO()
+        self.paginadeci5_campo_Status = LineEditRO()
+        self.paginadeci5_campo_StatusMode = QRadioButton('Status Mode')
+        self.paginadeci5_campo_StatusMode.chiave = '5'
+        self.paginadeci5_campo_StatusMode.clicked.connect(self.sceltastatus)
+        self.paginadeci5_applica = QPushButton('Apply')
+        self.paginadeci5_applica.clicked.connect(self.applica5)
+        self.paginadeci5_on = QPushButton('ON')
+        self.paginadeci5_on.clicked.connect(self.accendi5)
+        self.paginadeci5_off = QPushButton('OFF')
+        self.paginadeci5_off.clicked.connect(self.spegni5)
+        self.LOpaginadeci5 = QGridLayout()
+        self.LOpaginadeci5.addWidget(QLabel('Amplifier 2 without diagnostics'), 0, 0, 1, 3)
+        self.LOpaginadeci5.addWidget(QLabel(''), 1, 0, 1, 3)
+        self.LOpaginadeci5.addWidget(QLabel('State(misleading): '), 2, 0, 1, 1)
+        self.LOpaginadeci5.addWidget(self.paginadeci5_campo_State, 2, 1, 1, 1)
+        self.LOpaginadeci5.addWidget(QLabel('Status: '), 3, 0, 1, 1)
+        self.LOpaginadeci5.addWidget(self.paginadeci5_campo_Status, 3, 1, 1, 2)
+        self.LOpaginadeci5.addWidget(self.paginadeci5_on, 4, 0, 1, 1)
+        self.LOpaginadeci5.addWidget(self.paginadeci5_off, 4, 1, 1, 1)
+        self.LOpaginadeci5.addWidget(QLabel('BunchNumber Start: '), 10, 0, 1, 1)
+        self.LOpaginadeci5.addWidget(self.paginadeci5_campo_BunchNumberStart_R, 10, 1, 1, 1)
+        self.LOpaginadeci5.addWidget(self.paginadeci5_campo_BunchNumberStart_W, 10, 2, 1, 1)
+        self.LOpaginadeci5.addWidget(QLabel('BunchNumber End: '), 11, 0, 1, 1)
+        self.LOpaginadeci5.addWidget(self.paginadeci5_campo_BunchNumberEnd_R, 11, 1, 1, 1)
+        self.LOpaginadeci5.addWidget(self.paginadeci5_campo_BunchNumberEnd_W, 11, 2, 1, 1)
+        self.LOpaginadeci5.addWidget(QLabel('Delay offset: '), 12, 0, 1, 1)
+        self.LOpaginadeci5.addWidget(self.paginadeci5_campo_DelayOffset_R, 12, 1, 1, 1)
+        self.LOpaginadeci5.addWidget(self.paginadeci5_campo_DelayOffset_W, 12, 2, 1, 1)
+        self.LOpaginadeci5.addWidget(QLabel('Sequence: '), 13, 0, 1, 1)
+        self.LOpaginadeci5.addWidget(self.paginadeci5_campo_Sequence_R, 13, 1, 1, 1)
+        self.LOpaginadeci5.addWidget(self.paginadeci5_campo_Sequence_W, 13, 2, 1, 1)
+        self.LOpaginadeci5.addWidget(QLabel('Max num Cycles: '), 14, 0, 1, 1)
+        self.LOpaginadeci5.addWidget(self.paginadeci5_campo_MaxNumCycles_R, 14, 1, 1, 1)
+        self.LOpaginadeci5.addWidget(self.paginadeci5_campo_MaxNumCycles_W, 14, 2, 1, 1)
+        self.LOpaginadeci5.addWidget(self.paginadeci5_campo_StatusMode, 20, 0, 1, 1)
+        self.LOpaginadeci5.addWidget(self.paginadeci5_campo_DelayMode, 20, 1, 1, 1)
+        self.LOpaginadeci5.addWidget(self.paginadeci5_campo_InfiniteCycle, 22, 0, 1, 3)
+        self.LOpaginadeci5.addWidget(self.paginadeci5_campo_EnableStaticTriggerShift, 23, 0, 1, 3)
+        self.LOpaginadeci5.addWidget(self.paginadeci5_campo_PolarityMode, 24, 0, 1, 3)
+        self.LOpaginadeci5.addWidget(self.paginadeci5_campo_ReverseMode, 25, 0, 1, 3)
+        self.LOpaginadeci5.addWidget(self.paginadeci5_campo_SaveModes, 26, 0, 1, 3)
+        self.LOpaginadeci5.addWidget(self.paginadeci5_campo_BunchNumber, 27, 0, 1, 3)
+        self.LOpaginadeci5.addWidget(self.paginadeci5_applica, 30, 0, 1, 3)
+        self.paginadeci5.setLayout(self.LOpaginadeci5)
+        #
+        self.insertTab(0, self.paginagenerale, 'General')
+        self.insertTab(1, self.paginadeci1, 'rttrigger_sl.01')
+        self.insertTab(2, self.paginadeci2, 'rttrigger_sl.02')
+        self.insertTab(3, self.paginadeci3, 'rttrigger_sl.03')
+        self.insertTab(4, self.paginadeci4, 'rttrigger_sl.04')
+        self.insertTab(5, self.paginadeci5, 'rttrigger_sl.05')
+        self.show()
+        #timer
+        self.timer = QBasicTimer()
+        self.timer.start(2000, self)
+
+    def timerEvent(self, event):
+        self.update()
+
+    def __del__(self):
+        self.timer.stop()
+
+    def update(self):
+        try:
+            tmp = devicelist['contollo'].read_attribute('ChannelsState')
+            if tmp.value[0] == 10:
+                self.paginagenerale_1facileindicatore.setText('ON')
+                self.paginagenerale_1facileindicatore.setStyleSheet("background-color: rgb(255, 255, 255)")
+                self.paginagenerale_2facileindicatore.setText('?')
+                self.paginagenerale_2facileindicatore.setStyleSheet("background-color: rgb(200, 200, 200)")
+                self.paginagenerale_3facileindicatore.setText('?')
+                self.paginagenerale_3facileindicatore.setStyleSheet("background-color: rgb(200, 200, 200)")
+            elif tmp.value[0] == 1 and tmp.value[1] == 10 and tmp.value[2] == 1:
+                self.paginagenerale_1facileindicatore.setText('OFF')
+                self.paginagenerale_1facileindicatore.setStyleSheet("background-color: rgb(200, 200, 200)")
+                self.paginagenerale_2facileindicatore.setText('ON')
+                self.paginagenerale_2facileindicatore.setStyleSheet("background-color: rgb(255, 255, 255)")
+                self.paginagenerale_3facileindicatore.setText('OFF')
+                self.paginagenerale_3facileindicatore.setStyleSheet("background-color: rgb(200, 200, 200)")
+            elif tmp.value[0] == 1 and tmp.value[1] == 1 and tmp.value[2] == 10:
+                self.paginagenerale_1facileindicatore.setText('OFF')
+                self.paginagenerale_1facileindicatore.setStyleSheet("background-color: rgb(200, 200, 200)")
+                self.paginagenerale_2facileindicatore.setText('OFF')
+                self.paginagenerale_2facileindicatore.setStyleSheet("background-color: rgb(200, 200, 200)")
+                self.paginagenerale_3facileindicatore.setText('ON')
+                self.paginagenerale_3facileindicatore.setStyleSheet("background-color: rgb(255, 255, 255)")
+            elif tmp.value[0] == 1 and tmp.value[1] == 1 and tmp.value[2] == 1:
+                self.paginagenerale_1facileindicatore.setText('OFF')
+                self.paginagenerale_1facileindicatore.setStyleSheet("background-color: rgb(200, 200, 200)")
+                self.paginagenerale_2facileindicatore.setText('OFF')
+                self.paginagenerale_2facileindicatore.setStyleSheet("background-color: rgb(200, 200, 200)")
+                self.paginagenerale_3facileindicatore.setText('OFF')
+                self.paginagenerale_3facileindicatore.setStyleSheet("background-color: rgb(200, 200, 200)")
+            else:
+                self.paginagenerale_1facileindicatore.setText('?')
+                self.paginagenerale_1facileindicatore.setStyleSheet("background-color: rgb(200, 200, 200)")
+                self.paginagenerale_2facileindicatore.setText('?')
+                self.paginagenerale_2facileindicatore.setStyleSheet("background-color: rgb(200, 200, 200)")
+                self.paginagenerale_3facileindicatore.setText('?')
+                self.paginagenerale_3facileindicatore.setStyleSheet("background-color: rgb(200, 200, 200)")
+        except:
+            print('ao')
+        try:
+            tmp = devicelist['1'].read_attributes(['BunchNumberEnd', 'BunchNumberStart', 'DelayMode', 'DelayOffset', 'EnableStaticTriggerShift', 'InfiniteCycle', 'MaxNumCycles', 'PolarityMode', 'ReverseMode', 'SaveModes', 'Sequence', 'State', 'Status', 'StatusMode'])
+            self.paginadeci1_campo_BunchNumberEnd_R.setText(str(tmp[0].value))
+            self.paginadeci1_campo_BunchNumberStart_R.setText(str(tmp[1].value))
+            if tmp[2].value:
+                self.paginadeci1_campo_DelayMode.setChecked(1)
+                self.paginagenerale_1modalita.setText('Delay')
+            else:
+                self.paginadeci1_campo_DelayMode.setChecked(0)
+            self.paginadeci1_campo_DelayOffset_R.setText(str(tmp[3].value))
+            if tmp[4].value:
+                self.paginadeci1_campo_EnableStaticTriggerShift.lettura.setText('True')
+            else:
+                self.paginadeci1_campo_EnableStaticTriggerShift.lettura.setText('False')
+            if tmp[5].value:
+                self.paginadeci1_campo_InfiniteCycle.lettura.setText('True')
+            else:
+                self.paginadeci1_campo_InfiniteCycle.lettura.setText('False')
+            self.paginadeci1_campo_MaxNumCycles_R.setText(str(tmp[6].value))
+            if tmp[7].value:
+                self.paginadeci1_campo_PolarityMode.lettura.setText('True')
+            else:
+                self.paginadeci1_campo_PolarityMode.lettura.setText('False')
+            if tmp[8].value:
+                self.paginadeci1_campo_ReverseMode.lettura.setText('True')
+            else:
+                self.paginadeci1_campo_ReverseMode.lettura.setText('False')
+            if tmp[9].value:
+                self.paginadeci1_campo_SaveModes.lettura.setText('True')
+            else:
+                self.paginadeci1_campo_SaveModes.lettura.setText('False')
+            self.paginadeci1_campo_Sequence_R.setText(str(tmp[10].value))
+            self.paginadeci1_campo_State.setText(str(tmp[11].value))
+            self.paginadeci1_campo_Status.setText(str(tmp[12].value))
+            if tmp[13].value:
+                self.paginadeci1_campo_StatusMode.setChecked(1)
+                self.paginagenerale_1modalita.setText('Status')
+            else:
+                self.paginadeci1_campo_StatusMode.setChecked(0)
+        except:
+            self.paginadeci1_campo_BunchNumberEnd_R.setText('#####')
+            self.paginadeci1_campo_BunchNumberStart_R.setText('#####')
+            self.paginagenerale_1modalita.setText('#####')
+            self.paginadeci1_campo_DelayOffset_R.setText('#####')
+            self.paginadeci1_campo_Sequence_R.setText('#####')
+            self.paginadeci1_campo_State.setText('#####')
+            self.paginadeci1_campo_Status.setText('#####')
+            self.paginadeci1_campo_MaxNumCycles_R.setText('#####')
+            self.paginadeci1_campo_DelayMode.setChecked(0)
+            self.paginadeci1_campo_StatusMode.setChecked(0)
+            self.paginadeci1_campo_EnableStaticTriggerShift.lettura.setText('UNKNOW')
+            self.paginadeci1_campo_InfiniteCycle.lettura.setText('UNKNOW')
+            self.paginadeci1_campo_PolarityMode.lettura.setText('UNKNOW')
+            self.paginadeci1_campo_ReverseMode.lettura.setText('UNKNOW')
+            self.paginadeci1_campo_SaveModes.lettura.setText('UNKNOW')
+        ##
+        try:
+            tmp = devicelist['2'].read_attributes(['BunchNumberEnd', 'BunchNumberStart', 'DelayMode', 'DelayOffset', 'EnableStaticTriggerShift', 'InfiniteCycle', 'MaxNumCycles', 'PolarityMode', 'ReverseMode', 'SaveModes', 'Sequence', 'State', 'Status', 'StatusMode'])
+            self.paginadeci2_campo_BunchNumberEnd_R.setText(str(tmp[0].value))
+            self.paginadeci2_campo_BunchNumberStart_R.setText(str(tmp[1].value))
+            if tmp[2].value:
+                self.paginadeci2_campo_DelayMode.setChecked(1)
+                self.paginagenerale_2modalita.setText('Delay')
+            else:
+                self.paginadeci2_campo_DelayMode.setChecked(0)
+            self.paginadeci2_campo_DelayOffset_R.setText(str(tmp[3].value))
+            if tmp[4].value:
+                self.paginadeci2_campo_EnableStaticTriggerShift.lettura.setText('True')
+            else:
+                self.paginadeci2_campo_EnableStaticTriggerShift.lettura.setText('False')
+            if tmp[5].value:
+                self.paginadeci2_campo_InfiniteCycle.lettura.setText('True')
+            else:
+                self.paginadeci2_campo_InfiniteCycle.lettura.setText('False')
+            self.paginadeci2_campo_MaxNumCycles_R.setText(str(tmp[6].value))
+            if tmp[7].value:
+                self.paginadeci2_campo_PolarityMode.lettura.setText('True')
+            else:
+                self.paginadeci2_campo_PolarityMode.lettura.setText('False')
+            if tmp[8].value:
+                self.paginadeci2_campo_ReverseMode.lettura.setText('True')
+            else:
+                self.paginadeci2_campo_ReverseMode.lettura.setText('False')
+            if tmp[9].value:
+                self.paginadeci2_campo_SaveModes.lettura.setText('True')
+            else:
+                self.paginadeci2_campo_SaveModes.lettura.setText('False')
+            self.paginadeci2_campo_Sequence_R.setText(str(tmp[10].value))
+            self.paginadeci2_campo_State.setText(str(tmp[11].value))
+            self.paginadeci2_campo_Status.setText(str(tmp[12].value))
+            if tmp[13].value:
+                self.paginadeci2_campo_StatusMode.setChecked(1)
+                self.paginagenerale_2modalita.setText('Status')
+            else:
+                self.paginadeci2_campo_StatusMode.setChecked(0)
+        except:
+            self.paginadeci2_campo_BunchNumberEnd_R.setText('#####')
+            self.paginadeci2_campo_BunchNumberStart_R.setText('#####')
+            self.paginagenerale_2modalita.setText('#####')
+            self.paginadeci2_campo_DelayOffset_R.setText('#####')
+            self.paginadeci2_campo_Sequence_R.setText('#####')
+            self.paginadeci2_campo_State.setText('#####')
+            self.paginadeci2_campo_Status.setText('#####')
+            self.paginadeci2_campo_MaxNumCycles_R.setText('#####')
+            self.paginadeci2_campo_DelayMode.setChecked(0)
+            self.paginadeci2_campo_StatusMode.setChecked(0)
+            self.paginadeci2_campo_EnableStaticTriggerShift.lettura.setText('UNKNOW')
+            self.paginadeci2_campo_InfiniteCycle.lettura.setText('UNKNOW')
+            self.paginadeci2_campo_PolarityMode.lettura.setText('UNKNOW')
+            self.paginadeci2_campo_ReverseMode.lettura.setText('UNKNOW')
+            self.paginadeci2_campo_SaveModes.lettura.setText('UNKNOW')
+        ##
+        try:
+            tmp = devicelist['3'].read_attributes(['BunchNumberEnd', 'BunchNumberStart', 'DelayMode', 'DelayOffset', 'EnableStaticTriggerShift', 'InfiniteCycle', 'MaxNumCycles', 'PolarityMode', 'ReverseMode', 'SaveModes', 'Sequence', 'State', 'Status', 'StatusMode'])
+            self.paginadeci3_campo_BunchNumberEnd_R.setText(str(tmp[0].value))
+            self.paginadeci3_campo_BunchNumberStart_R.setText(str(tmp[1].value))
+            if tmp[2].value:
+                self.paginadeci3_campo_DelayMode.setChecked(1)
+                self.paginagenerale_3modalita.setText('Delay')
+            else:
+                self.paginadeci3_campo_DelayMode.setChecked(0)
+            self.paginadeci3_campo_DelayOffset_R.setText(str(tmp[3].value))
+            if tmp[4].value:
+                self.paginadeci3_campo_EnableStaticTriggerShift.lettura.setText('True')
+            else:
+                self.paginadeci3_campo_EnableStaticTriggerShift.lettura.setText('False')
+            if tmp[5].value:
+                self.paginadeci3_campo_InfiniteCycle.lettura.setText('True')
+            else:
+                self.paginadeci3_campo_InfiniteCycle.lettura.setText('False')
+            self.paginadeci3_campo_MaxNumCycles_R.setText(str(tmp[6].value))
+            if tmp[7].value:
+                self.paginadeci3_campo_PolarityMode.lettura.setText('True')
+            else:
+                self.paginadeci3_campo_PolarityMode.lettura.setText('False')
+            if tmp[8].value:
+                self.paginadeci3_campo_ReverseMode.lettura.setText('True')
+            else:
+                self.paginadeci3_campo_ReverseMode.lettura.setText('False')
+            if tmp[9].value:
+                self.paginadeci3_campo_SaveModes.lettura.setText('True')
+            else:
+                self.paginadeci3_campo_SaveModes.lettura.setText('False')
+            self.paginadeci3_campo_Sequence_R.setText(str(tmp[10].value))
+            self.paginadeci3_campo_State.setText(str(tmp[11].value))
+            self.paginadeci3_campo_Status.setText(str(tmp[12].value))
+            if tmp[13].value:
+                self.paginadeci3_campo_StatusMode.setChecked(1)
+                self.paginagenerale_3modalita.setText('Status')
+            else:
+                self.paginadeci3_campo_StatusMode.setChecked(0)
+        except:
+            self.paginadeci3_campo_BunchNumberEnd_R.setText('#####')
+            self.paginadeci3_campo_BunchNumberStart_R.setText('#####')
+            self.paginagenerale_3modalita.setText('#####')
+            self.paginadeci3_campo_DelayOffset_R.setText('#####')
+            self.paginadeci3_campo_Sequence_R.setText('#####')
+            self.paginadeci3_campo_State.setText('#####')
+            self.paginadeci3_campo_Status.setText('#####')
+            self.paginadeci3_campo_MaxNumCycles_R.setText('#####')
+            self.paginadeci3_campo_DelayMode.setChecked(0)
+            self.paginadeci3_campo_StatusMode.setChecked(0)
+            self.paginadeci3_campo_EnableStaticTriggerShift.lettura.setText('UNKNOW')
+            self.paginadeci3_campo_InfiniteCycle.lettura.setText('UNKNOW')
+            self.paginadeci3_campo_PolarityMode.lettura.setText('UNKNOW')
+            self.paginadeci3_campo_ReverseMode.lettura.setText('UNKNOW')
+            self.paginadeci3_campo_SaveModes.lettura.setText('UNKNOW')
+        ##
+        try:
+            tmp = devicelist['4'].read_attributes(['BunchNumberEnd', 'BunchNumberStart', 'DelayMode', 'DelayOffset', 'EnableStaticTriggerShift', 'InfiniteCycle', 'MaxNumCycles', 'PolarityMode', 'ReverseMode', 'SaveModes', 'Sequence', 'State', 'Status', 'StatusMode'])
+            self.paginadeci4_campo_BunchNumberEnd_R.setText(str(tmp[0].value))
+            self.paginadeci4_campo_BunchNumberStart_R.setText(str(tmp[1].value))
+            if tmp[2].value:
+                self.paginadeci4_campo_DelayMode.setChecked(1)
+                self.paginagenerale_4modalita.setText('Delay')
+            else:
+                self.paginadeci4_campo_DelayMode.setChecked(0)
+            self.paginadeci4_campo_DelayOffset_R.setText(str(tmp[3].value))
+            if tmp[4].value:
+                self.paginadeci4_campo_EnableStaticTriggerShift.lettura.setText('True')
+            else:
+                self.paginadeci4_campo_EnableStaticTriggerShift.lettura.setText('False')
+            if tmp[5].value:
+                self.paginadeci4_campo_InfiniteCycle.lettura.setText('True')
+            else:
+                self.paginadeci4_campo_InfiniteCycle.lettura.setText('False')
+            self.paginadeci4_campo_MaxNumCycles_R.setText(str(tmp[6].value))
+            if tmp[7].value:
+                self.paginadeci4_campo_PolarityMode.lettura.setText('True')
+            else:
+                self.paginadeci4_campo_PolarityMode.lettura.setText('False')
+            if tmp[8].value:
+                self.paginadeci4_campo_ReverseMode.lettura.setText('True')
+            else:
+                self.paginadeci4_campo_ReverseMode.lettura.setText('False')
+            if tmp[9].value:
+                self.paginadeci4_campo_SaveModes.lettura.setText('True')
+            else:
+                self.paginadeci4_campo_SaveModes.lettura.setText('False')
+            self.paginadeci4_campo_Sequence_R.setText(str(tmp[10].value))
+            self.paginadeci4_campo_State.setText(str(tmp[11].value))
+            self.paginadeci4_campo_Status.setText(str(tmp[12].value))
+            if tmp[13].value:
+                self.paginadeci4_campo_StatusMode.setChecked(1)
+                self.paginagenerale_4modalita.setText('Status')
+            else:
+                self.paginadeci4_campo_StatusMode.setChecked(0)
+        except:
+            self.paginadeci4_campo_BunchNumberEnd_R.setText('#####')
+            self.paginadeci4_campo_BunchNumberStart_R.setText('#####')
+            self.paginagenerale_4modalita.setText('#####')
+            self.paginadeci4_campo_DelayOffset_R.setText('#####')
+            self.paginadeci4_campo_Sequence_R.setText('#####')
+            self.paginadeci4_campo_State.setText('#####')
+            self.paginadeci4_campo_Status.setText('#####')
+            self.paginadeci4_campo_MaxNumCycles_R.setText('#####')
+            self.paginadeci4_campo_DelayMode.setChecked(0)
+            self.paginadeci4_campo_StatusMode.setChecked(0)
+            self.paginadeci4_campo_EnableStaticTriggerShift.lettura.setText('UNKNOW')
+            self.paginadeci4_campo_InfiniteCycle.lettura.setText('UNKNOW')
+            self.paginadeci4_campo_PolarityMode.lettura.setText('UNKNOW')
+            self.paginadeci4_campo_ReverseMode.lettura.setText('UNKNOW')
+            self.paginadeci4_campo_SaveModes.lettura.setText('UNKNOW')
+        ##
+        try:
+            tmp = devicelist['5'].read_attributes(['BunchNumberEnd', 'BunchNumberStart', 'DelayMode', 'DelayOffset', 'EnableStaticTriggerShift', 'InfiniteCycle', 'MaxNumCycles', 'PolarityMode', 'ReverseMode', 'SaveModes', 'Sequence', 'State', 'Status', 'StatusMode'])
+            self.paginadeci5_campo_BunchNumberEnd_R.setText(str(tmp[0].value))
+            self.paginadeci5_campo_BunchNumberStart_R.setText(str(tmp[1].value))
+            if tmp[2].value:
+                self.paginadeci5_campo_DelayMode.setChecked(1)
+                self.paginagenerale_5modalita.setText('Delay')
+            else:
+                self.paginadeci5_campo_DelayMode.setChecked(0)
+            self.paginadeci5_campo_DelayOffset_R.setText(str(tmp[3].value))
+            if tmp[4].value:
+                self.paginadeci5_campo_EnableStaticTriggerShift.lettura.setText('True')
+            else:
+                self.paginadeci5_campo_EnableStaticTriggerShift.lettura.setText('False')
+            if tmp[5].value:
+                self.paginadeci5_campo_InfiniteCycle.lettura.setText('True')
+            else:
+                self.paginadeci5_campo_InfiniteCycle.lettura.setText('False')
+            self.paginadeci5_campo_MaxNumCycles_R.setText(str(tmp[6].value))
+            if tmp[7].value:
+                self.paginadeci5_campo_PolarityMode.lettura.setText('True')
+            else:
+                self.paginadeci5_campo_PolarityMode.lettura.setText('False')
+            if tmp[8].value:
+                self.paginadeci5_campo_ReverseMode.lettura.setText('True')
+            else:
+                self.paginadeci5_campo_ReverseMode.lettura.setText('False')
+            if tmp[9].value:
+                self.paginadeci5_campo_SaveModes.lettura.setText('True')
+            else:
+                self.paginadeci5_campo_SaveModes.lettura.setText('False')
+            self.paginadeci5_campo_Sequence_R.setText(str(tmp[10].value))
+            self.paginadeci5_campo_State.setText(str(tmp[11].value))
+            self.paginadeci5_campo_Status.setText(str(tmp[12].value))
+            if tmp[13].value:
+                self.paginadeci5_campo_StatusMode.setChecked(1)
+                self.paginagenerale_5modalita.setText('Status')
+            else:
+                self.paginadeci5_campo_StatusMode.setChecked(0)
+        except:
+            self.paginadeci5_campo_BunchNumberEnd_R.setText('#####')
+            self.paginadeci5_campo_BunchNumberStart_R.setText('#####')
+            self.paginagenerale_5modalita.setText('#####')
+            self.paginadeci5_campo_DelayOffset_R.setText('#####')
+            self.paginadeci5_campo_Sequence_R.setText('#####')
+            self.paginadeci5_campo_State.setText('#####')
+            self.paginadeci5_campo_Status.setText('#####')
+            self.paginadeci5_campo_MaxNumCycles_R.setText('#####')
+            self.paginadeci5_campo_DelayMode.setChecked(0)
+            self.paginadeci5_campo_StatusMode.setChecked(0)
+            self.paginadeci5_campo_EnableStaticTriggerShift.lettura.setText('UNKNOW')
+            self.paginadeci5_campo_InfiniteCycle.lettura.setText('UNKNOW')
+            self.paginadeci5_campo_PolarityMode.lettura.setText('UNKNOW')
+            self.paginadeci5_campo_ReverseMode.lettura.setText('UNKNOW')
+            self.paginadeci5_campo_SaveModes.lettura.setText('UNKNOW')
+
+    def accendi1(self):
+        if self.paginadeci1_campo_BunchNumber.radiopositive.isChecked():
+            devicelist['1'].command_inout('Start', 1)
+        else:
+            devicelist['1'].command_inout('Start', 0)
+
+    def accendi2(self):
+        if self.paginadeci2_campo_BunchNumber.radiopositive.isChecked():
+            devicelist['2'].command_inout('Start', 1)
+        else:
+            devicelist['2'].command_inout('Start', 0)
+
+    def accendi3(self):
+        if self.paginadeci3_campo_BunchNumber.radiopositive.isChecked():
+            devicelist['3'].command_inout('Start', 1)
+        else:
+            devicelist['3'].command_inout('Start', 0)
+
+    def accendi4(self):
+        if self.paginadeci4_campo_BunchNumber.radiopositive.isChecked():
+            devicelist['4'].command_inout('Start', 1)
+        else:
+            devicelist['4'].command_inout('Start', 0)
+
+    def accendi5(self):
+        if self.paginadeci5_campo_BunchNumber.radiopositive.isChecked():
+            devicelist['5'].command_inout('Start', 1)
+        else:
+            devicelist['5'].command_inout('Start', 0)
+
+    def spegni1(self):
+        devicelist['1'].command_inout('Stop')
+
+    def spegni2(self):
+        devicelist['2'].command_inout('Stop')
+
+    def spegni3(self):
+        devicelist['3'].command_inout('Stop')
+
+    def spegni4(self):
+        devicelist['4'].command_inout('Stop')
+
+    def spegni5(self):
+        devicelist['5'].command_inout('Stop')
+
+    def applica1(self):
+        try:
+            BunchNumberEnd_new = float(str(self.paginadeci1_campo_BunchNumberEnd_W.text()))
+            devicelist['1'].write_attribute('BunchNumberEnd', BunchNumberEnd_new)
+        except:
+            print('not float ' + str(self.paginadeci1_campo_BunchNumberEnd_W.text()))
+        try:
+            BunchNumberStart_new = int(str(self.paginadeci1_campo_BunchNumberStart_W.text()))
+            devicelist['1'].write_attribute('BunchNumberStart', BunchNumberStart_new)
+        except:
+            print('not float ' + str(self.paginadeci1_campo_BunchNumberStart_W.text()))
+        try:
+            DelayOffset_new = float(str(self.paginadeci1_campo_DelayOffset_W.text()))
+            devicelist['1'].write_attribute('DelayOffset', DelayOffset_new)
+        except:
+            print('not float ' + str(self.paginadeci1_campo_DelayOffset_W.text()))
+        try:
+            MaxNumCycles_new = float(str(self.paginadeci1_campo_MaxNumCycles_W.text()))
+            devicelist['1'].write_attribute('MaxNumCycles', MaxNumCycles_new)
+        except:
+            print('not float ' + str(self.paginadeci1_campo_MaxNumCycles_W.text()))
+        try:
+            tmp = str(self.paginadeci1_campo_Sequence_W.text()).replace('[', '').replace(']','')
+            Sequence_new = [int(aa) for aa in tmp.split(',')]
+            devicelist['1'].write_attribute('Sequence', Sequence_new)
+        except:
+            print('not float ' + str(self.paginadeci1_campo_Sequence_W.text()))
+        if self.paginadeci1_campo_DelayMode.isChecked():
+            DelayMode_new = True
+        else:
+            DelayMode_new = False
+        try:
+            devicelist['1'].write_attribute('DelayMode', DelayMode_new)
+        except:
+            print('Error DelayMode')
+        if self.paginadeci1_campo_StatusMode.isChecked():
+            StatusMode_new = True
+        else:
+            StatusMode_new = False
+        try:
+            devicelist['1'].write_attribute('StatusMode', StatusMode_new)
+        except:
+            print('Error StatusMode')
+        if self.paginadeci1_campo_EnableStaticTriggerShift.radiopositive.isChecked():
+            EnableStaticTriggerShift_new = True
+        else:
+            EnableStaticTriggerShift_new = False
+        try:
+            devicelist['1'].write_attribute('EnableStaticTriggerShift', EnableStaticTriggerShift_new)
+        except:
+            print('Error EnableStaticTriggerShift')
+        if self.paginadeci1_campo_PolarityMode.radiopositive.isChecked():
+            PolarityMode_new = True
+        else:
+            PolarityMode_new = False
+        try:
+            devicelist['1'].write_attribute('PolarityMode', PolarityMode_new)
+        except:
+            print('Error PolarityMode')
+        if self.paginadeci1_campo_ReverseMode.radiopositive.isChecked():
+            ReverseMode_new = True
+        else:
+            ReverseMode_new = False
+        try:
+            devicelist['1'].write_attribute('ReverseMode', ReverseMode_new)
+        except:
+            print('Error ReverseMode')
+        if self.paginadeci1_campo_SaveModes.radiopositive.isChecked():
+            SaveModes_new = True
+        else:
+            SaveModes_new = False
+        try:
+            devicelist['1'].write_attribute('SaveModes', SaveModes_new)
+        except:
+            print('Error SaveModes')
+        if self.paginadeci1_campo_InfiniteCycle.radiopositive.isChecked():
+            InfiniteCycle_new = True
+        else:
+            InfiniteCycle_new = False
+        try:
+            devicelist['1'].write_attribute('InfiniteCycle', InfiniteCycle_new)
+        except:
+            print('Error InfiniteCycle')
+        print('applica1 DONE')
+
+    def applica2(self):
+        try:
+            BunchNumberEnd_new = float(str(self.paginadeci2_campo_BunchNumberEnd_W.text()))
+            devicelist['2'].write_attribute('BunchNumberEnd', BunchNumberEnd_new)
+        except:
+            print('not float ' + str(self.paginadeci2_campo_BunchNumberEnd_W.text()))
+        try:
+            BunchNumberStart_new = float(str(self.paginadeci2_campo_BunchNumberStart_W.text()))
+            devicelist['2'].write_attribute('BunchNumberStart', BunchNumberStart_new)
+        except:
+            print('not float ' + str(self.paginadeci2_campo_BunchNumberStart_W.text()))
+        try:
+            DelayOffset_new = float(str(self.paginadeci2_campo_DelayOffset_W.text()))
+            devicelist['2'].write_attribute('DelayOffset', DelayOffset_new)
+        except:
+            print('not float ' + str(self.paginadeci2_campo_DelayOffset_W.text()))
+        try:
+            MaxNumCycles_new = float(str(self.paginadeci2_campo_MaxNumCycles_W.text()))
+            devicelist['2'].write_attribute('MaxNumCycles', MaxNumCycles_new)
+        except:
+            print('not float ' + str(self.paginadeci2_campo_MaxNumCycles_W.text()))
+        try:
+            tmp = str(self.paginadeci2_campo_Sequence_W.text()).replace('[', '').replace(']','')
+            Sequence_new = [int(aa) for aa in tmp.split(',')]
+            devicelist['2'].write_attribute('Sequence', Sequence_new)
+        except:
+            print('not float ' + str(self.paginadeci2_campo_Sequence_W.text()))
+        if self.paginadeci2_campo_DelayMode.isChecked():
+            DelayMode_new = True
+        else:
+            DelayMode_new = False
+        try:
+            devicelist['2'].write_attribute('DelayMode', DelayMode_new)
+        except:
+            print('Error DelayMode')
+        if self.paginadeci2_campo_StatusMode.isChecked():
+            StatusMode_new = True
+        else:
+            StatusMode_new = False
+        try:
+            devicelist['2'].write_attribute('StatusMode', StatusMode_new)
+        except:
+            print('Error StatusMode')
+        if self.paginadeci2_campo_EnableStaticTriggerShift.radiopositive.isChecked():
+            EnableStaticTriggerShift_new = True
+        else:
+            EnableStaticTriggerShift_new = False
+        try:
+            devicelist['2'].write_attribute('EnableStaticTriggerShift', EnableStaticTriggerShift_new)
+        except:
+            print('Error EnableStaticTriggerShift')
+        if self.paginadeci2_campo_PolarityMode.radiopositive.isChecked():
+            PolarityMode_new = True
+        else:
+            PolarityMode_new = False
+        try:
+            devicelist['2'].write_attribute('PolarityMode', PolarityMode_new)
+        except:
+            print('Error PolarityMode')
+        if self.paginadeci2_campo_ReverseMode.radiopositive.isChecked():
+            ReverseMode_new = True
+        else:
+            ReverseMode_new = False
+        try:
+            devicelist['2'].write_attribute('ReverseMode', ReverseMode_new)
+        except:
+            print('Error ReverseMode')
+        if self.paginadeci2_campo_SaveModes.radiopositive.isChecked():
+            SaveModes_new = True
+        else:
+            SaveModes_new = False
+        try:
+            devicelist['2'].write_attribute('SaveModes', SaveModes_new)
+        except:
+            print('Error SaveModes')
+        if self.paginadeci2_campo_InfiniteCycle.radiopositive.isChecked():
+            InfiniteCycle_new = True
+        else:
+            InfiniteCycle_new = False
+        try:
+            devicelist['2'].write_attribute('InfiniteCycle', InfiniteCycle_new)
+        except:
+            print('Error InfiniteCycle')
+        print('applica2 DONE')
+
+    def applica3(self):
+        try:
+            BunchNumberEnd_new = float(str(self.paginadeci3_campo_BunchNumberEnd_W.text()))
+            devicelist['3'].write_attribute('BunchNumberEnd', BunchNumberEnd_new)
+        except:
+            print('not float ' + str(self.paginadeci3_campo_BunchNumberEnd_W.text()))
+        try:
+            BunchNumberStart_new = float(str(self.paginadeci3_campo_BunchNumberStart_W.text()))
+            devicelist['3'].write_attribute('BunchNumberStart', BunchNumberStart_new)
+        except:
+            print('not float ' + str(self.paginadeci3_campo_BunchNumberStart_W.text()))
+        try:
+            DelayOffset_new = float(str(self.paginadeci3_campo_DelayOffset_W.text()))
+            devicelist['3'].write_attribute('DelayOffset', DelayOffset_new)
+        except:
+            print('not float ' + str(self.paginadeci3_campo_DelayOffset_W.text()))
+        try:
+            MaxNumCycles_new = float(str(self.paginadeci3_campo_MaxNumCycles_W.text()))
+            devicelist['3'].write_attribute('MaxNumCycles', MaxNumCycles_new)
+        except:
+            print('not float ' + str(self.paginadeci3_campo_MaxNumCycles_W.text()))
+        try:
+            tmp = str(self.paginadeci3_campo_Sequence_W.text()).replace('[', '').replace(']','')
+            Sequence_new = [int(aa) for aa in tmp.split(',')]
+            devicelist['3'].write_attribute('Sequence', Sequence_new)
+        except:
+            print('not float ' + str(self.paginadeci3_campo_Sequence_W.text()))
+        if self.paginadeci3_campo_DelayMode.isChecked():
+            DelayMode_new = True
+        else:
+            DelayMode_new = False
+        try:
+            devicelist['3'].write_attribute('DelayMode', DelayMode_new)
+        except:
+            print('Error DelayMode')
+        if self.paginadeci3_campo_StatusMode.isChecked():
+            StatusMode_new = True
+        else:
+            StatusMode_new = False
+        try:
+            devicelist['3'].write_attribute('StatusMode', StatusMode_new)
+        except:
+            print('Error StatusMode')
+        if self.paginadeci3_campo_EnableStaticTriggerShift.radiopositive.isChecked():
+            EnableStaticTriggerShift_new = True
+        else:
+            EnableStaticTriggerShift_new = False
+        try:
+            devicelist['3'].write_attribute('EnableStaticTriggerShift', EnableStaticTriggerShift_new)
+        except:
+            print('Error EnableStaticTriggerShift')
+        if self.paginadeci3_campo_PolarityMode.radiopositive.isChecked():
+            PolarityMode_new = True
+        else:
+            PolarityMode_new = False
+        try:
+            devicelist['3'].write_attribute('PolarityMode', PolarityMode_new)
+        except:
+            print('Error PolarityMode')
+        if self.paginadeci3_campo_ReverseMode.radiopositive.isChecked():
+            ReverseMode_new = True
+        else:
+            ReverseMode_new = False
+        try:
+            devicelist['3'].write_attribute('ReverseMode', ReverseMode_new)
+        except:
+            print('Error ReverseMode')
+        if self.paginadeci3_campo_SaveModes.radiopositive.isChecked():
+            SaveModes_new = True
+        else:
+            SaveModes_new = False
+        try:
+            devicelist['3'].write_attribute('SaveModes', SaveModes_new)
+        except:
+            print('Error SaveModes')
+        if self.paginadeci3_campo_InfiniteCycle.radiopositive.isChecked():
+            InfiniteCycle_new = True
+        else:
+            InfiniteCycle_new = False
+        try:
+            devicelist['3'].write_attribute('InfiniteCycle', InfiniteCycle_new)
+        except:
+            print('Error InfiniteCycle')
+        print('applica3 DONE')
+
+    def applica4(self):
+        try:
+            BunchNumberEnd_new = float(str(self.paginadeci4_campo_BunchNumberEnd_W.text()))
+            devicelist['4'].write_attribute('BunchNumberEnd', BunchNumberEnd_new)
+        except:
+            print('not float ' + str(self.paginadeci4_campo_BunchNumberEnd_W.text()))
+        try:
+            BunchNumberStart_new = float(str(self.paginadeci4_campo_BunchNumberStart_W.text()))
+            devicelist['4'].write_attribute('BunchNumberStart', BunchNumberStart_new)
+        except:
+            print('not float ' + str(self.paginadeci4_campo_BunchNumberStart_W.text()))
+        try:
+            DelayOffset_new = float(str(self.paginadeci4_campo_DelayOffset_W.text()))
+            devicelist['4'].write_attribute('DelayOffset', DelayOffset_new)
+        except:
+            print('not float ' + str(self.paginadeci4_campo_DelayOffset_W.text()))
+        try:
+            MaxNumCycles_new = float(str(self.paginadeci4_campo_MaxNumCycles_W.text()))
+            devicelist['4'].write_attribute('MaxNumCycles', MaxNumCycles_new)
+        except:
+            print('not float ' + str(self.paginadeci4_campo_MaxNumCycles_W.text()))
+        try:
+            tmp = str(self.paginadeci4_campo_Sequence_W.text()).replace('[', '').replace(']','')
+            Sequence_new = [int(aa) for aa in tmp.split(',')]
+            devicelist['4'].write_attribute('Sequence', Sequence_new)
+        except:
+            print('not float ' + str(self.paginadeci4_campo_Sequence_W.text()))
+        if self.paginadeci4_campo_DelayMode.isChecked():
+            DelayMode_new = True
+        else:
+            DelayMode_new = False
+        try:
+            devicelist['4'].write_attribute('DelayMode', DelayMode_new)
+        except:
+            print('Error DelayMode')
+        if self.paginadeci4_campo_StatusMode.isChecked():
+            StatusMode_new = True
+        else:
+            StatusMode_new = False
+        try:
+            devicelist['4'].write_attribute('StatusMode', StatusMode_new)
+        except:
+            print('Error StatusMode')
+        if self.paginadeci4_campo_EnableStaticTriggerShift.radiopositive.isChecked():
+            EnableStaticTriggerShift_new = True
+        else:
+            EnableStaticTriggerShift_new = False
+        try:
+            devicelist['4'].write_attribute('EnableStaticTriggerShift', EnableStaticTriggerShift_new)
+        except:
+            print('Error EnableStaticTriggerShift')
+        if self.paginadeci4_campo_PolarityMode.radiopositive.isChecked():
+            PolarityMode_new = True
+        else:
+            PolarityMode_new = False
+        try:
+            devicelist['4'].write_attribute('PolarityMode', PolarityMode_new)
+        except:
+            print('Error PolarityMode')
+        if self.paginadeci4_campo_ReverseMode.radiopositive.isChecked():
+            ReverseMode_new = True
+        else:
+            ReverseMode_new = False
+        try:
+            devicelist['4'].write_attribute('ReverseMode', ReverseMode_new)
+        except:
+            print('Error ReverseMode')
+        if self.paginadeci4_campo_SaveModes.radiopositive.isChecked():
+            SaveModes_new = True
+        else:
+            SaveModes_new = False
+        try:
+            devicelist['4'].write_attribute('SaveModes', SaveModes_new)
+        except:
+            print('Error SaveModes')
+        if self.paginadeci4_campo_InfiniteCycle.radiopositive.isChecked():
+            InfiniteCycle_new = True
+        else:
+            InfiniteCycle_new = False
+        try:
+            devicelist['4'].write_attribute('InfiniteCycle', InfiniteCycle_new)
+        except:
+            print('Error InfiniteCycle')
+        print('applica4 DONE')
+
+    def applica5(self):
+        try:
+            BunchNumberEnd_new = float(str(self.paginadeci5_campo_BunchNumberEnd_W.text()))
+            devicelist['5'].write_attribute('BunchNumberEnd', BunchNumberEnd_new)
+        except:
+            print('not float ' + str(self.paginadeci5_campo_BunchNumberEnd_W.text()))
+        try:
+            BunchNumberStart_new = float(str(self.paginadeci5_campo_BunchNumberStart_W.text()))
+            devicelist['5'].write_attribute('BunchNumberStart', BunchNumberStart_new)
+        except:
+            print('not float ' + str(self.paginadeci5_campo_BunchNumberStart_W.text()))
+        try:
+            DelayOffset_new = float(str(self.paginadeci5_campo_DelayOffset_W.text()))
+            devicelist['5'].write_attribute('DelayOffset', DelayOffset_new)
+        except:
+            print('not float ' + str(self.paginadeci5_campo_DelayOffset_W.text()))
+        try:
+            MaxNumCycles_new = float(str(self.paginadeci5_campo_MaxNumCycles_W.text()))
+            devicelist['5'].write_attribute('MaxNumCycles', MaxNumCycles_new)
+        except:
+            print('not float ' + str(self.paginadeci5_campo_MaxNumCycles_W.text()))
+        try:
+            tmp = str(self.paginadeci5_campo_Sequence_W.text()).replace('[', '').replace(']','')
+            Sequence_new = [int(aa) for aa in tmp.split(',')]
+            devicelist['5'].write_attribute('Sequence', Sequence_new)
+        except:
+            print('not float ' + str(self.paginadeci5_campo_Sequence_W.text()))
+        if self.paginadeci5_campo_DelayMode.isChecked():
+            DelayMode_new = True
+        else:
+            DelayMode_new = False
+        try:
+            devicelist['5'].write_attribute('DelayMode', DelayMode_new)
+        except:
+            print('Error DelayMode')
+        if self.paginadeci5_campo_StatusMode.isChecked():
+            StatusMode_new = True
+        else:
+            StatusMode_new = False
+        try:
+            devicelist['5'].write_attribute('StatusMode', StatusMode_new)
+        except:
+            print('Error StatusMode')
+        if self.paginadeci5_campo_EnableStaticTriggerShift.radiopositive.isChecked():
+            EnableStaticTriggerShift_new = True
+        else:
+            EnableStaticTriggerShift_new = False
+        try:
+            devicelist['5'].write_attribute('EnableStaticTriggerShift', EnableStaticTriggerShift_new)
+        except:
+            print('Error EnableStaticTriggerShift')
+        if self.paginadeci5_campo_PolarityMode.radiopositive.isChecked():
+            PolarityMode_new = True
+        else:
+            PolarityMode_new = False
+        try:
+            devicelist['5'].write_attribute('PolarityMode', PolarityMode_new)
+        except:
+            print('Error PolarityMode')
+        if self.paginadeci5_campo_ReverseMode.radiopositive.isChecked():
+            ReverseMode_new = True
+        else:
+            ReverseMode_new = False
+        try:
+            devicelist['5'].write_attribute('ReverseMode', ReverseMode_new)
+        except:
+            print('Error ReverseMode')
+        if self.paginadeci5_campo_SaveModes.radiopositive.isChecked():
+            SaveModes_new = True
+        else:
+            SaveModes_new = False
+        try:
+            devicelist['5'].write_attribute('SaveModes', SaveModes_new)
+        except:
+            print('Error SaveModes')
+        if self.paginadeci5_campo_InfiniteCycle.radiopositive.isChecked():
+            InfiniteCycle_new = True
+        else:
+            InfiniteCycle_new = False
+        try:
+            devicelist['5'].write_attribute('InfiniteCycle', InfiniteCycle_new)
+        except:
+            print('Error InfiniteCycle')
+        print('applica5 DONE')
+
+
+    def sceltadelay(self):
+        tmp = self.sender()
+        print(tmp.chiave)
+        devicelist[tmp.chiave].write_attribute('DelayMode', 1)
+        devicelist[tmp.chiave].write_attribute('InfiniteCycle', 0)
+        devicelist[tmp.chiave].write_attribute('InfiniteCycle', 1)
+
+    def sceltastatus(self):
+        tmp = self.sender()
+        devicelist[tmp.chiave].write_attribute('StatusMode', 1)
+        devicelist[tmp.chiave].write_attribute('InfiniteCycle', 0)
+        devicelist[tmp.chiave].write_attribute('InfiniteCycle', 1)
+
+
+class LineEditRO(QLineEdit):
+    def __init__(self):
+        super(LineEditRO, self).__init__()
+        self.setReadOnly(1)
+        self.setStyleSheet("background-color: rgb(200, 200, 200)")
+
+
+class DoppiaScelta(QFrame):
+    def __init__(self, testo, chi, cosa):
+        super(DoppiaScelta, self).__init__()
+        self.label = QLabel(testo)
+        self.chiave = chi
+        self.attribrutto = cosa
+        self.lettura = LineEditRO()
+        self.radiopositive = QRadioButton('on')
+        self.radionegative = QRadioButton('off')
+        self.radionegative.setChecked(1)
+        dopsce_lo = QHBoxLayout()
+        dopsce_lo.addWidget(self.label)
+        dopsce_lo.addWidget(self.lettura)
+        dopsce_lo.addWidget(self.radiopositive)
+        dopsce_lo.addWidget(self.radionegative)
+        self.setLayout(dopsce_lo)
+
+    def fallo_true(self):
+        devicelist[self.chiave].write_attribute(self.attribrutto, 1)
+
+    def fallo_false(self):
+        devicelist[self.chiave].write_attribute(self.attribrutto, 0)
+
+
+class DoppiaSceltanofun(QFrame):
+    def __init__(self, testo):
+        super(DoppiaSceltanofun, self).__init__()
+        self.label = QLabel(testo)
+        self.radiopositive = QRadioButton('on')
+        self.radionegative = QRadioButton('off')
+        self.radionegative.setChecked(1)
+        dopsce_lo = QHBoxLayout()
+        dopsce_lo.addWidget(self.label)
+        dopsce_lo.addWidget(self.radiopositive)
+        dopsce_lo.addWidget(self.radionegative)
+        self.setLayout(dopsce_lo)
+
+
+if __name__ == '__main__':
+    app = QApplication([])
+    window = Finestra()
+    window.show()
+    app.exec_()
-- 
GitLab