From a0a23749f3d13106820f06f0485f39648ad7de91 Mon Sep 17 00:00:00 2001
From: Lorenzo Pivetta <lorenzo.pivetta@elettra.eu>
Date: Wed, 3 Jun 2020 15:25:44 +0200
Subject: [PATCH] Initial import

---
 Makefile              |   18 +
 src/laser-hdb-list.py | 1154 +++++++++++++++++++++++++++++++++++++++++
 2 files changed, 1172 insertions(+)
 create mode 100644 Makefile
 create mode 100644 src/laser-hdb-list.py

diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..9683044
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,18 @@
+NAME = laser-hdb-list-gui
+MAIN = laser-hdb-list.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/laser-hdb-list.py b/src/laser-hdb-list.py
new file mode 100644
index 0000000..488338b
--- /dev/null
+++ b/src/laser-hdb-list.py
@@ -0,0 +1,1154 @@
+#!/usr/bin/python 
+
+import PyTango
+import os
+from PyQt4.QtCore import *
+from PyQt4.QtGui import *
+import sys
+
+dizionariostadard = {}
+
+class MainWindow(QDialog):
+    def __init__(self, parent=None):
+        super(MainWindow, self).__init__(parent)
+        # parte sopra - bottoni
+        self.bottone_PILgeneranuovalista = QPushButton('Generate new PIL list')
+        self.bottone_PILgeneranuovalista.clicked.connect(self.vaidipil)
+        self.bottone_LHLgeneranuovalista = QPushButton('Generate new LHL list')
+        self.bottone_LHLgeneranuovalista.clicked.connect(self.vaidilhl)
+        self.bottone_SLgeneranuovalista = QPushButton('Generate new SL list')
+        self.bottone_SLgeneranuovalista.clicked.connect(self.vaidisl)
+        self.bottone_SLUgeneranuovalista = QPushButton('Generate new SLU list')
+        self.bottone_SLUgeneranuovalista.clicked.connect(self.vaidislu)
+        self.bottone_modificalista = QPushButton('load and change existent list')
+        self.bottone_modificalista.clicked.connect(self.vaidilista)
+        lo_bottoni = QGridLayout()
+        lo_bottoni.addWidget(self.bottone_PILgeneranuovalista, 0, 0, 1, 1)
+        lo_bottoni.addWidget(self.bottone_LHLgeneranuovalista, 0, 1, 1, 1)
+        lo_bottoni.addWidget(self.bottone_SLgeneranuovalista, 0, 2, 1, 1)
+        lo_bottoni.addWidget(self.bottone_SLUgeneranuovalista, 0, 3, 1, 1)
+        lo_bottoni.addWidget(self.bottone_modificalista, 1, 0, 1, 4)
+        # parte lista device e contesti
+        self.spaziolistadevice = QTableWidget()
+        self.spaziolistadevice.setColumnCount(1)
+        self.spaziolistadevice.cellClicked.connect(self.visualizzalistaattributi)
+        self.spaziolistadevice.hide()
+        self.etichettacontesti = QLabel('Context:')
+        self.etichettacontesti.hide()
+        self.PILcontesti_SHUTDOWN = QCheckBox('SHUTDOWN')
+        self.PILcontesti_SHUTDOWN.stateChanged.connect(lambda :self.applicacontesto('SHUTDOWN'))
+        self.PILcontesti_SHUTDOWN.hide()
+        self.PILcontesti_ALLIN = QCheckBox('ALLIN')
+        self.PILcontesti_ALLIN.stateChanged.connect(lambda :self.applicacontesto('ALLIN'))
+        self.PILcontesti_ALLIN.hide()
+        self.PILcontesti_LASER_ON = QCheckBox('LASER_ON')
+        self.PILcontesti_LASER_ON.stateChanged.connect(lambda :self.applicacontesto('LASER_ON'))
+        self.PILcontesti_LASER_ON.hide()
+        self.PILcontesti_LASER_ON_DOUBLE_PULSE = QCheckBox('LASER_ON_DOUBLE_PULSE')
+        self.PILcontesti_LASER_ON_DOUBLE_PULSE.stateChanged.connect(lambda :self.applicacontesto('LASER_ON_DOUBLE_PULSE'))
+        self.PILcontesti_LASER_ON_DOUBLE_PULSE.hide()
+        self.LHLcontesti_SHUTDOWN = QCheckBox('SHUTDOWN')
+        self.LHLcontesti_SHUTDOWN.stateChanged.connect(lambda :self.applicacontesto('SHUTDOWN'))
+        self.LHLcontesti_SHUTDOWN.hide()
+        self.LHLcontesti_ALLIN = QCheckBox('ALLIN')
+        self.LHLcontesti_ALLIN.stateChanged.connect(lambda :self.applicacontesto('ALLIN'))
+        self.LHLcontesti_ALLIN.hide()
+        self.LHLcontesti_LASER_ON = QCheckBox('LASER_ON')
+        self.LHLcontesti_LASER_ON.stateChanged.connect(lambda :self.applicacontesto('LASER_ON'))
+        self.LHLcontesti_LASER_ON.hide()
+        self.LHLcontesti_LASER_ON_DOUBLE_PULSE = QCheckBox('LASER_ON_DOUBLE_PULSE')
+        self.LHLcontesti_LASER_ON_DOUBLE_PULSE.stateChanged.connect(lambda :self.applicacontesto('LASER_ON_DOUBLE_PULSE'))
+        self.LHLcontesti_LASER_ON_DOUBLE_PULSE.hide()
+        self.SLcontesti_SHUTDOWN = QCheckBox('SHUTDOWN')
+        self.SLcontesti_SHUTDOWN.stateChanged.connect(lambda :self.applicacontesto('SHUTDOWN'))
+        self.SLcontesti_SHUTDOWN.hide()
+        self.SLcontesti_ALLIN = QCheckBox('ALLIN')
+        self.SLcontesti_ALLIN.stateChanged.connect(lambda :self.applicacontesto('ALLIN'))
+        self.SLcontesti_ALLIN.hide()
+        self.SLcontesti_ELITE1_THG_FEL1 = QCheckBox('ELITE1_THG_FEL1')
+        self.SLcontesti_ELITE1_THG_FEL1.stateChanged.connect(lambda :self.applicacontesto('ELITE1_THG_FEL1'))
+        self.SLcontesti_ELITE1_THG_FEL1.hide()
+        self.SLcontesti_ELITE1_OPA_FEL1 = QCheckBox('ELITE1_OPA_FEL1')
+        self.SLcontesti_ELITE1_OPA_FEL1.stateChanged.connect(lambda :self.applicacontesto('ELITE1_OPA_FEL1'))
+        self.SLcontesti_ELITE1_OPA_FEL1.hide()
+        self.SLcontesti_ELITE2_THG_FEL2 = QCheckBox('ELITE2_THG_FEL2')
+        self.SLcontesti_ELITE2_THG_FEL2.stateChanged.connect(lambda :self.applicacontesto('ELITE2_THG_FEL2'))
+        self.SLcontesti_ELITE2_THG_FEL2.hide()
+        self.SLcontesti_ELITE2_OPA_FEL2 = QCheckBox('ELITE2_OPA_FEL2')
+        self.SLcontesti_ELITE2_OPA_FEL2.stateChanged.connect(lambda :self.applicacontesto('ELITE2_OPA_FEL2'))
+        self.SLcontesti_ELITE2_OPA_FEL2.hide()
+        self.SLcontesti_ELITE1_THG_FEL1_ELITE2_SLU = QCheckBox('ELITE1_THG_FEL1_ELITE2_SLU')
+        self.SLcontesti_ELITE1_THG_FEL1_ELITE2_SLU.stateChanged.connect(lambda :self.applicacontesto('ELITE1_THG_FEL1_ELITE2_SLU'))
+        self.SLcontesti_ELITE1_THG_FEL1_ELITE2_SLU.hide()
+        self.SLcontesti_ELITE1_OPA_FEL1_ELITE2_SLU = QCheckBox('ELITE1_OPA_FEL1_ELITE2_SLU')
+        self.SLcontesti_ELITE1_OPA_FEL1_ELITE2_SLU.stateChanged.connect(lambda :self.applicacontesto('ELITE1_OPA_FEL1_ELITE2_SLU'))
+        self.SLcontesti_ELITE1_OPA_FEL1_ELITE2_SLU.hide()
+        self.SLcontesti_ELITE2_THG_FEL2_ELITE1_SLU = QCheckBox('ELITE2_THG_FEL2_ELITE1_SLU')
+        self.SLcontesti_ELITE2_THG_FEL2_ELITE1_SLU.stateChanged.connect(lambda :self.applicacontesto('ELITE2_THG_FEL2_ELITE1_SLU'))
+        self.SLcontesti_ELITE2_THG_FEL2_ELITE1_SLU.hide()
+        self.SLcontesti_ELITE2_OPA_FEL2_ELITE1_SLU = QCheckBox('ELITE2_OPA_FEL2_ELITE1_SLU')
+        self.SLcontesti_ELITE2_OPA_FEL2_ELITE1_SLU.stateChanged.connect(lambda :self.applicacontesto('ELITE2_OPA_FEL2_ELITE1_SLU'))
+        self.SLcontesti_ELITE2_OPA_FEL2_ELITE1_SLU.hide()
+        self.SLUcontesti_SHUTDOWN = QCheckBox('SHUTDOWN')
+        self.SLUcontesti_SHUTDOWN.stateChanged.connect(lambda :self.applicacontesto('SHUTDOWN'))
+        self.SLUcontesti_SHUTDOWN.hide()
+        self.SLUcontesti_ALLIN = QCheckBox('ALLIN')
+        self.SLUcontesti_ALLIN.stateChanged.connect(lambda :self.applicacontesto('ALLIN'))
+        self.SLUcontesti_ALLIN.hide()
+        self.SLUcontesti_ELITE1_TOTEM = QCheckBox('ELITE1_TOTEM')
+        self.SLUcontesti_ELITE1_TOTEM.stateChanged.connect(lambda :self.applicacontesto('ELITE1_TOTEM'))
+        self.SLUcontesti_ELITE1_TOTEM.hide()
+        self.SLUcontesti_ELITE1_TIMER = QCheckBox('ELITE1_TIMER')
+        self.SLUcontesti_ELITE1_TIMER.stateChanged.connect(lambda :self.applicacontesto('ELITE1_TIMER'))
+        self.SLUcontesti_ELITE1_TIMER.hide()
+        self.SLUcontesti_ELITE1_TIMEX = QCheckBox('ELITE1_TIMEX')
+        self.SLUcontesti_ELITE1_TIMEX.stateChanged.connect(lambda :self.applicacontesto('ELITE1_TIMEX'))
+        self.SLUcontesti_ELITE1_TIMEX.hide()
+        self.SLUcontesti_ELITE1_DIPROI = QCheckBox('ELITE1_DIPROI')
+        self.SLUcontesti_ELITE1_DIPROI.stateChanged.connect(lambda :self.applicacontesto('ELITE1_DIPROI'))
+        self.SLUcontesti_ELITE1_DIPROI.hide()
+        self.SLUcontesti_ELITE1_LDM = QCheckBox('ELITE1_LDM')
+        self.SLUcontesti_ELITE1_LDM.stateChanged.connect(lambda :self.applicacontesto('ELITE1_LDM'))
+        self.SLUcontesti_ELITE1_LDM.hide()
+        self.SLUcontesti_ELITE1_MAGNEDYN = QCheckBox('ELITE1_MAGNEDYN')
+        self.SLUcontesti_ELITE1_MAGNEDYN.stateChanged.connect(lambda :self.applicacontesto('ELITE1_MAGNEDYN'))
+        self.SLUcontesti_ELITE1_MAGNEDYN.hide()
+        self.SLUcontesti_ELITE2_TOTEM = QCheckBox('ELITE2_TOTEM')
+        self.SLUcontesti_ELITE2_TOTEM.stateChanged.connect(lambda :self.applicacontesto('ELITE2_TOTEM'))
+        self.SLUcontesti_ELITE2_TOTEM.hide()
+        self.SLUcontesti_ELITE2_TIMER = QCheckBox('ELITE2_TIMER')
+        self.SLUcontesti_ELITE2_TIMER.stateChanged.connect(lambda :self.applicacontesto('ELITE2_TIMER'))
+        self.SLUcontesti_ELITE2_TIMER.hide()
+        self.SLUcontesti_ELITE2_TIMEX = QCheckBox('ELITE2_TIMEX')
+        self.SLUcontesti_ELITE2_TIMEX.stateChanged.connect(lambda :self.applicacontesto('ELITE2_TIMEX'))
+        self.SLUcontesti_ELITE2_TIMEX.hide()
+        self.SLUcontesti_ELITE2_DIPROI = QCheckBox('ELITE2_DIPROI')
+        self.SLUcontesti_ELITE2_DIPROI.stateChanged.connect(lambda :self.applicacontesto('ELITE2_DIPROI'))
+        self.SLUcontesti_ELITE2_DIPROI.hide()
+        self.SLUcontesti_ELITE2_LDM = QCheckBox('ELITE2_LDM')
+        self.SLUcontesti_ELITE2_LDM.stateChanged.connect(lambda :self.applicacontesto('ELITE2_LDM'))
+        self.SLUcontesti_ELITE2_LDM.hide()
+        self.SLUcontesti_ELITE2_MAGNEDYN = QCheckBox('ELITE2_MAGNEDYN')
+        self.SLUcontesti_ELITE2_MAGNEDYN.stateChanged.connect(lambda :self.applicacontesto('ELITE2_MAGNEDYN'))
+        self.SLUcontesti_ELITE2_MAGNEDYN.hide()
+        lo_device = QGridLayout()
+        lo_device.addWidget(self.spaziolistadevice, 0, 0, 8, 3)
+        lo_device.addWidget(self.etichettacontesti, 0, 4, 1, 2)
+        lo_device.addWidget(self.PILcontesti_SHUTDOWN, 1, 4, 1, 1)
+        lo_device.addWidget(self.PILcontesti_ALLIN, 1, 5, 1, 1)
+        lo_device.addWidget(self.PILcontesti_LASER_ON, 2, 4, 1, 1)
+        lo_device.addWidget(self.PILcontesti_LASER_ON_DOUBLE_PULSE, 3, 4, 1, 1)
+        lo_device.addWidget(self.LHLcontesti_SHUTDOWN, 1, 4, 1, 1)
+        lo_device.addWidget(self.LHLcontesti_ALLIN, 1, 5, 1, 1)
+        lo_device.addWidget(self.LHLcontesti_LASER_ON, 2, 4, 1, 1)
+        lo_device.addWidget(self.LHLcontesti_LASER_ON_DOUBLE_PULSE, 3, 4, 1, 1)
+        lo_device.addWidget(self.SLcontesti_SHUTDOWN, 1, 4, 1, 1)
+        lo_device.addWidget(self.SLcontesti_ALLIN, 1, 5, 1, 1)
+        lo_device.addWidget(self.SLcontesti_ELITE1_THG_FEL1, 2, 4, 1, 1)
+        lo_device.addWidget(self.SLcontesti_ELITE1_OPA_FEL1, 3, 4, 1, 1)
+        lo_device.addWidget(self.SLcontesti_ELITE2_THG_FEL2, 4, 4, 1, 1)
+        lo_device.addWidget(self.SLcontesti_ELITE2_OPA_FEL2, 5, 4, 1, 1)
+        lo_device.addWidget(self.SLcontesti_ELITE1_THG_FEL1_ELITE2_SLU, 2, 5, 1, 1)
+        lo_device.addWidget(self.SLcontesti_ELITE1_OPA_FEL1_ELITE2_SLU, 3, 5, 1, 1)
+        lo_device.addWidget(self.SLcontesti_ELITE2_THG_FEL2_ELITE1_SLU, 4, 5, 1, 1)
+        lo_device.addWidget(self.SLcontesti_ELITE2_OPA_FEL2_ELITE1_SLU, 5, 5, 1, 1)
+        lo_device.addWidget(self.SLUcontesti_SHUTDOWN, 1, 4, 1, 1)
+        lo_device.addWidget(self.SLUcontesti_ALLIN, 1, 5, 1, 1)
+        lo_device.addWidget(self.SLUcontesti_ELITE1_TOTEM, 2, 4, 1, 1)
+        lo_device.addWidget(self.SLUcontesti_ELITE1_TIMER, 3, 4, 1, 1)
+        lo_device.addWidget(self.SLUcontesti_ELITE1_TIMEX, 4, 4, 1, 1)
+        lo_device.addWidget(self.SLUcontesti_ELITE1_DIPROI, 5, 4, 1, 1)
+        lo_device.addWidget(self.SLUcontesti_ELITE1_LDM, 6, 4, 1, 1)
+        lo_device.addWidget(self.SLUcontesti_ELITE1_MAGNEDYN, 7, 4, 1, 1)
+        lo_device.addWidget(self.SLUcontesti_ELITE2_TOTEM, 2, 5, 1, 1)
+        lo_device.addWidget(self.SLUcontesti_ELITE2_TIMER, 3, 5, 1, 1)
+        lo_device.addWidget(self.SLUcontesti_ELITE2_TIMEX, 4, 5, 1, 1)
+        lo_device.addWidget(self.SLUcontesti_ELITE2_DIPROI, 5, 5, 1, 1)
+        lo_device.addWidget(self.SLUcontesti_ELITE2_LDM, 6, 5, 1, 1)
+        lo_device.addWidget(self.SLUcontesti_ELITE2_MAGNEDYN, 7, 5, 1, 1)
+        # parte lista attributi e valori
+        self.spaziolistaattributi = QTableWidget()
+        self.spaziolistaattributi.setColumnCount(6)
+        self.spaziolistaattributi.cellChanged.connect(self.modificacampotabellaattributi)
+        self.spaziolistaattributi.cellClicked.connect(self.visualizzacontesti)
+        self.spaziolistaattributi.setMinimumHeight(150)
+        self.spaziolistaattributi.hide()
+        #self.eliminarigaattributo = QPushButton('Delete row')
+        #self.eliminarigaattributo.clicked.connect(self.feliminarigaattributo)
+        #self.eliminarigaattributo.hide()
+        self.aggiungirigaattributo = QPushButton('Add row')
+        self.aggiungirigaattributo.clicked.connect(self.faggiungirigaattributo)
+        self.aggiungirigaattributo.hide()
+        lo_attributo = QGridLayout()
+        lo_attributo.addWidget(self.spaziolistaattributi, 0, 0, 1, 4)
+        lo_attributo.addWidget(self.aggiungirigaattributo, 1, 0, 1, 4)
+        #lo_attributo.addWidget(self.eliminarigaattributo, 1, 2, 1, 2)
+        # parte salva
+        self.bottone_generalista = QPushButton('PRINT LIST FILE')
+        self.bottone_generalista.clicked.connect(self.generalista)
+        #layout generale
+        lo_pannello = QVBoxLayout()
+        lo_pannello.addLayout(lo_bottoni)
+        lo_pannello.addLayout(lo_device)
+        lo_pannello.addLayout(lo_attributo)
+        lo_pannello.addWidget(self.bottone_generalista)
+        self.setLayout(lo_pannello)
+        self.show()
+        self.setWindowTitle("HDB list CONFIGURATOR")
+        # carico gli standard
+        os.chdir('/home/lfo/data/hdbliste')
+        manopola = open('hdbstandards.txt')
+        testo = manopola.readlines()
+        manopola.close()
+        for indice in range(len(testo)):
+            if testo[indice][0] == '-':
+                #print(testo[indice][0] + str(indice) + ' chiave')
+                chiave = testo[indice].replace('-', '').replace('\r\n', '')
+                dizionariostadard[chiave] = []
+            elif testo[indice][0].isalpha() and (testo[indice][0] != '-' or testo[indice][0] != '#'):
+                #print(testo[indice][0] + str(indice) + ' attributo')
+                tmp = testo[indice].replace('\r\n', '')
+                #print(tmp)
+                valore1 = tmp.split(',')[0] #attributo
+                valore2 = tmp.split(',')[1].split(':')[1].replace(' ', '') #sogliaassoluta
+                valore3 = tmp.split(',')[2].split(':')[1].replace(' ', '') #sogliarelativa
+                valore4 = tmp.split(',')[3].split(':')[1].replace(' ', '') #sogliaperiodo
+                valore5 = tmp.split(',')[4].split('=')[1].replace(' ', '') #contesti
+                valore6 = tmp.split(',')[5].split('=')[1].replace(' ', '') #tempocancellamento
+                dizionariostadard[chiave].append([valore1, valore2, valore3, valore4, valore5, valore6])
+        #print(dizionariostadard)
+
+    def vaidilista(self):
+        print('')
+        os.chdir('/home/lfo/data/hdbliste')
+        filename = QFileDialog.getOpenFileName() #/home/lfo/data/hdbliste
+        #print(filename)
+        manopola = open(filename, 'r')
+        tmp = manopola.readlines()
+        manopola.close()
+        # verifica archiviatore
+        print(tmp[0].split('/'))
+        archivitore = tmp[0].split('/')[3]
+        #print(archivitore)
+        if archivitore == 'pil':
+            self.spaziolistadevice.show()
+            self.etichettacontesti.show()
+            self.PILcontesti_SHUTDOWN.show()
+            self.PILcontesti_ALLIN.show()
+            self.PILcontesti_LASER_ON.show()
+            self.PILcontesti_LASER_ON_DOUBLE_PULSE.show()
+            self.LHLcontesti_SHUTDOWN.hide()
+            self.LHLcontesti_ALLIN.hide()
+            self.LHLcontesti_LASER_ON.hide()
+            self.LHLcontesti_LASER_ON_DOUBLE_PULSE.hide()
+            self.SLcontesti_SHUTDOWN.hide()
+            self.SLcontesti_ALLIN.hide()
+            self.SLcontesti_ELITE1_THG_FEL1.hide()
+            self.SLcontesti_ELITE1_OPA_FEL1.hide()
+            self.SLcontesti_ELITE2_THG_FEL2.hide()
+            self.SLcontesti_ELITE2_OPA_FEL2.hide()
+            self.SLcontesti_ELITE1_THG_FEL1_ELITE2_SLU.hide()
+            self.SLcontesti_ELITE1_OPA_FEL1_ELITE2_SLU.hide()
+            self.SLcontesti_ELITE2_THG_FEL2_ELITE1_SLU.hide()
+            self.SLcontesti_ELITE2_OPA_FEL2_ELITE1_SLU.hide()
+            self.SLUcontesti_SHUTDOWN.hide()
+            self.SLUcontesti_ALLIN.hide()
+            self.SLUcontesti_ELITE1_TOTEM.hide()
+            self.SLUcontesti_ELITE1_TIMER.hide()
+            self.SLUcontesti_ELITE1_TIMEX.hide()
+            self.SLUcontesti_ELITE1_DIPROI.hide()
+            self.SLUcontesti_ELITE1_LDM.hide()
+            self.SLUcontesti_ELITE1_MAGNEDYN.hide()
+            self.SLUcontesti_ELITE2_TOTEM.hide()
+            self.SLUcontesti_ELITE2_TIMER.hide()
+            self.SLUcontesti_ELITE2_TIMEX.hide()
+            self.SLUcontesti_ELITE2_DIPROI.hide()
+            self.SLUcontesti_ELITE2_LDM.hide()
+            self.SLUcontesti_ELITE2_MAGNEDYN.hide()
+            self.spaziolistaattributi.hide()
+            self.aggiungirigaattributo.hide()
+        elif archivitore == 'lhl':
+            self.spaziolistadevice.show()
+            self.etichettacontesti.show()
+            self.PILcontesti_SHUTDOWN.hide()
+            self.PILcontesti_ALLIN.hide()
+            self.PILcontesti_LASER_ON.hide()
+            self.PILcontesti_LASER_ON_DOUBLE_PULSE.hide()
+            self.LHLcontesti_SHUTDOWN.show()
+            self.LHLcontesti_ALLIN.show()
+            self.LHLcontesti_LASER_ON.show()
+            self.LHLcontesti_LASER_ON_DOUBLE_PULSE.show()
+            self.SLcontesti_SHUTDOWN.hide()
+            self.SLcontesti_ALLIN.hide()
+            self.SLcontesti_ELITE1_THG_FEL1.hide()
+            self.SLcontesti_ELITE1_OPA_FEL1.hide()
+            self.SLcontesti_ELITE2_THG_FEL2.hide()
+            self.SLcontesti_ELITE2_OPA_FEL2.hide()
+            self.SLcontesti_ELITE1_THG_FEL1_ELITE2_SLU.hide()
+            self.SLcontesti_ELITE1_OPA_FEL1_ELITE2_SLU.hide()
+            self.SLcontesti_ELITE2_THG_FEL2_ELITE1_SLU.hide()
+            self.SLcontesti_ELITE2_OPA_FEL2_ELITE1_SLU.hide()
+            self.SLUcontesti_SHUTDOWN.hide()
+            self.SLUcontesti_ALLIN.hide()
+            self.SLUcontesti_ELITE1_TOTEM.hide()
+            self.SLUcontesti_ELITE1_TIMER.hide()
+            self.SLUcontesti_ELITE1_TIMEX.hide()
+            self.SLUcontesti_ELITE1_DIPROI.hide()
+            self.SLUcontesti_ELITE1_LDM.hide()
+            self.SLUcontesti_ELITE1_MAGNEDYN.hide()
+            self.SLUcontesti_ELITE2_TOTEM.hide()
+            self.SLUcontesti_ELITE2_TIMER.hide()
+            self.SLUcontesti_ELITE2_TIMEX.hide()
+            self.SLUcontesti_ELITE2_DIPROI.hide()
+            self.SLUcontesti_ELITE2_LDM.hide()
+            self.SLUcontesti_ELITE2_MAGNEDYN.hide()
+            self.spaziolistaattributi.hide()
+            self.aggiungirigaattributo.hide()
+        elif archivitore == 'sl':
+            self.spaziolistadevice.show()
+            self.etichettacontesti.show()
+            self.PILcontesti_SHUTDOWN.hide()
+            self.PILcontesti_ALLIN.hide()
+            self.PILcontesti_LASER_ON.hide()
+            self.PILcontesti_LASER_ON_DOUBLE_PULSE.hide()
+            self.LHLcontesti_SHUTDOWN.hide()
+            self.LHLcontesti_ALLIN.hide()
+            self.LHLcontesti_LASER_ON.hide()
+            self.LHLcontesti_LASER_ON_DOUBLE_PULSE.hide()
+            self.SLcontesti_SHUTDOWN.show()
+            self.SLcontesti_ALLIN.show()
+            self.SLcontesti_ELITE1_THG_FEL1.show()
+            self.SLcontesti_ELITE1_OPA_FEL1.show()
+            self.SLcontesti_ELITE2_THG_FEL2.show()
+            self.SLcontesti_ELITE2_OPA_FEL2.show()
+            self.SLcontesti_ELITE1_THG_FEL1_ELITE2_SLU.show()
+            self.SLcontesti_ELITE1_OPA_FEL1_ELITE2_SLU.show()
+            self.SLcontesti_ELITE2_THG_FEL2_ELITE1_SLU.show()
+            self.SLcontesti_ELITE2_OPA_FEL2_ELITE1_SLU.show()
+            self.SLUcontesti_SHUTDOWN.hide()
+            self.SLUcontesti_ALLIN.hide()
+            self.SLUcontesti_ELITE1_TOTEM.hide()
+            self.SLUcontesti_ELITE1_TIMER.hide()
+            self.SLUcontesti_ELITE1_TIMEX.hide()
+            self.SLUcontesti_ELITE1_DIPROI.hide()
+            self.SLUcontesti_ELITE1_LDM.hide()
+            self.SLUcontesti_ELITE1_MAGNEDYN.hide()
+            self.SLUcontesti_ELITE2_TOTEM.hide()
+            self.SLUcontesti_ELITE2_TIMER.hide()
+            self.SLUcontesti_ELITE2_TIMEX.hide()
+            self.SLUcontesti_ELITE2_DIPROI.hide()
+            self.SLUcontesti_ELITE2_LDM.hide()
+            self.SLUcontesti_ELITE2_MAGNEDYN.hide()
+            self.spaziolistaattributi.hide()
+            self.aggiungirigaattributo.hide()
+        elif archivitore == 'slu':
+            self.spaziolistadevice.show()
+            self.etichettacontesti.show()
+            self.PILcontesti_SHUTDOWN.hide()
+            self.PILcontesti_ALLIN.hide()
+            self.PILcontesti_LASER_ON.hide()
+            self.PILcontesti_LASER_ON_DOUBLE_PULSE.hide()
+            self.LHLcontesti_SHUTDOWN.hide()
+            self.LHLcontesti_ALLIN.hide()
+            self.LHLcontesti_LASER_ON.hide()
+            self.LHLcontesti_LASER_ON_DOUBLE_PULSE.hide()
+            self.SLcontesti_SHUTDOWN.hide()
+            self.SLcontesti_ALLIN.hide()
+            self.SLcontesti_ELITE1_THG_FEL1.hide()
+            self.SLcontesti_ELITE1_OPA_FEL1.hide()
+            self.SLcontesti_ELITE2_THG_FEL2.hide()
+            self.SLcontesti_ELITE2_OPA_FEL2.hide()
+            self.SLcontesti_ELITE1_THG_FEL1_ELITE2_SLU.hide()
+            self.SLcontesti_ELITE1_OPA_FEL1_ELITE2_SLU.hide()
+            self.SLcontesti_ELITE2_THG_FEL2_ELITE1_SLU.hide()
+            self.SLcontesti_ELITE2_OPA_FEL2_ELITE1_SLU.hide()
+            self.SLUcontesti_SHUTDOWN.show()
+            self.SLUcontesti_ALLIN.show()
+            self.SLUcontesti_ELITE1_TOTEM.show()
+            self.SLUcontesti_ELITE1_TIMER.show()
+            self.SLUcontesti_ELITE1_TIMEX.show()
+            self.SLUcontesti_ELITE1_DIPROI.show()
+            self.SLUcontesti_ELITE1_LDM.show()
+            self.SLUcontesti_ELITE1_MAGNEDYN.show()
+            self.SLUcontesti_ELITE2_TOTEM.show()
+            self.SLUcontesti_ELITE2_TIMER.show()
+            self.SLUcontesti_ELITE2_TIMEX.show()
+            self.SLUcontesti_ELITE2_DIPROI.show()
+            self.SLUcontesti_ELITE2_LDM.show()
+            self.SLUcontesti_ELITE2_MAGNEDYN.show()
+            self.spaziolistaattributi.hide()
+            self.aggiungirigaattributo.hide()
+        # creo "matrice dati" e tabella per show
+        self.contenitore = []
+        altro = []
+        dizionariodicomodoattributi = {}
+        dizionariodicomodostrategie = {}
+        for indice in range(len(tmp)):
+            #print(tmp[indice])
+            tmp2 = tmp[indice].replace('tango://srv-tango-srf.fcs.elettra.trieste.it:20000/','').replace(';ttl=0','').replace('\n','').split(',')
+            #print(tmp3)
+            parametro1 = '1' #abilitato
+            parametro2 = archivitore #nome dell'archivitore (tipo pil)
+            parametro3 = tmp2[0].split('/')[0]+'/'+tmp2[0].split('/')[1]+'/'+tmp2[0].split('/')[2] #indirizzo del dispositivo (tipo pil/timing/tmu_pil.01)
+            parametro4 = tmp2[0].split('/')[3] #nome attributo (tipo State)
+            tmp3 = PyTango.DeviceProxy(parametro3)
+            parametro5 = tmp3.info().dev_class #classe dispositivo
+            parametro6 = tmp2[1].split(':')[1].replace(' ','') #sogliaassoluta
+            parametro7 = tmp2[2].split(':')[1].replace(' ','') #sogliarelativa
+            parametro8 = tmp2[3].split(':')[1].replace(' ','') #sogliatemporale
+            parametro9 = tmp[indice].split(',')[-1].split(';')[0].split('=')[1].replace(' ','')#contesti
+            parametro10 = tmp[indice].split(',')[-1].split(';')[1].split('=')[1].replace(' ','').replace('\n','')#time to live
+            self.contenitore.append(elementodalog(parametro1, parametro2, parametro3, parametro4, parametro5, parametro6, parametro7, parametro8, parametro9, parametro10))
+            print(str(indice) + ' ' + parametro9)
+        #print(len(self.contenitore))
+        # popolo il pannello
+        listadevicevisualizzati = []
+        for indice in range(len(self.contenitore)):
+            if self.contenitore[indice].dispositivo not in listadevicevisualizzati:
+                #print(len(listadevicevisualizzati))
+                listadevicevisualizzati.append(self.contenitore[indice].dispositivo)
+                self.spaziolistadevice.insertRow(0)
+                self.spaziolistadevice.setItem(0, 0, QTableWidgetItem(self.contenitore[indice].dispositivo))
+                #print(indice)
+        #print(self.spaziolistadevice.rowCount())
+        self.spaziolistadevice.setHorizontalHeaderLabels(['device'])
+        header = self.spaziolistadevice.horizontalHeader()
+        header.setResizeMode(0, QHeaderView.Stretch)
+        self.spaziolistadevice.resizeColumnsToContents()
+        #print('fatto')
+
+    def vaidipil(self):
+        #scenografia - mostra parte device
+        self.spaziolistadevice.show()
+        self.etichettacontesti.show()
+        self.PILcontesti_SHUTDOWN.show()
+        self.PILcontesti_ALLIN.show()
+        self.PILcontesti_LASER_ON.show()
+        self.PILcontesti_LASER_ON_DOUBLE_PULSE.show()
+        self.LHLcontesti_SHUTDOWN.hide()
+        self.LHLcontesti_ALLIN.hide()
+        self.LHLcontesti_LASER_ON.hide()
+        self.LHLcontesti_LASER_ON_DOUBLE_PULSE.hide()
+        self.SLcontesti_SHUTDOWN.hide()
+        self.SLcontesti_ALLIN.hide()
+        self.SLcontesti_ELITE1_THG_FEL1.hide()
+        self.SLcontesti_ELITE1_OPA_FEL1.hide()
+        self.SLcontesti_ELITE2_THG_FEL2.hide()
+        self.SLcontesti_ELITE2_OPA_FEL2.hide()
+        self.SLcontesti_ELITE1_THG_FEL1_ELITE2_SLU.hide()
+        self.SLcontesti_ELITE1_OPA_FEL1_ELITE2_SLU.hide()
+        self.SLcontesti_ELITE2_THG_FEL2_ELITE1_SLU.hide()
+        self.SLcontesti_ELITE2_OPA_FEL2_ELITE1_SLU.hide()
+        self.SLUcontesti_SHUTDOWN.hide()
+        self.SLUcontesti_ALLIN.hide()
+        self.SLUcontesti_ELITE1_TOTEM.hide()
+        self.SLUcontesti_ELITE1_TIMER.hide()
+        self.SLUcontesti_ELITE1_TIMEX.hide()
+        self.SLUcontesti_ELITE1_DIPROI.hide()
+        self.SLUcontesti_ELITE1_LDM.hide()
+        self.SLUcontesti_ELITE1_MAGNEDYN.hide()
+        self.SLUcontesti_ELITE2_TOTEM.hide()
+        self.SLUcontesti_ELITE2_TIMER.hide()
+        self.SLUcontesti_ELITE2_TIMEX.hide()
+        self.SLUcontesti_ELITE2_DIPROI.hide()
+        self.SLUcontesti_ELITE2_LDM.hide()
+        self.SLUcontesti_ELITE2_MAGNEDYN.hide()
+        self.spaziolistaattributi.hide()
+        self.aggiungirigaattributo.hide()
+        #per test
+        #manopola = open('hdblista_pil.txt')
+        #tmp = manopola.readlines()
+        #manopola.close()
+        # su fermi
+        db = PyTango.Database()
+        domain = 'pil'
+        family = '*'
+        member = '*'
+        dev = []
+        tmp = []
+        for d in db.get_device_domain(domain + '/' + family + '/' + member):
+            #print '-', d
+            for f in db.get_device_family(d + '/' + family + '/' '*'):
+                #print '  -', f
+                for m in db.get_device_member(d + '/' + f + '/' + member):
+                    #print '    -', m
+                    try:
+                        name = d + '/' + f + '/' + m
+                        dev.append(PyTango.DeviceProxy(name))
+                        tmp.append(name + ' ' + dev[-1].info().dev_class)
+                        #print name + ' ' + tmp[-1]
+                        ##maniglia = open('hdblista_pil' + d + '.txt', 'w')
+                        ##maniglia.writelines(tmp)
+                        ##maniglia.close()
+                    except PyTango.DevFailed, e:
+                        print e
+        #print(tmp)
+        # creo "matrice dati" e tabella per show
+        self.contenitore = []
+        for indice in range(len(tmp)):
+            print(tmp[indice].split(' ')[1])
+            if dizionariostadard.has_key(tmp[indice].split(' ')[1]):
+                #print(dizionariostadard[tmp[indice].split(' ')[1]])
+                for indice2 in range(len(dizionariostadard[tmp[indice].split(' ')[1]])):
+                    #print(dizionariostadard[tmp[indice].split(' ')[1]][indice2])
+                    parametro1 = '1' #abilitato
+                    parametro2 = domain #nome dell'archivitore (tipo pil)
+                    parametro3 = tmp[indice].split(' ')[0] #indirizzo del dispositivo (tipo pil/timing/tmu_pil.01)
+                    parametro4 = dizionariostadard[tmp[indice].split(' ')[1]][indice2][0] #nome attributo (tipo State)
+                    parametro5 = tmp[indice].split(' ')[1] #classe dispositivo
+                    parametro6 = dizionariostadard[tmp[indice].split(' ')[1]][indice2][1] #sogliaassoluta
+                    parametro7 = dizionariostadard[tmp[indice].split(' ')[1]][indice2][2] #sogliarelativa
+                    parametro8 = dizionariostadard[tmp[indice].split(' ')[1]][indice2][3] #sogliatemporale
+                    parametro9 = dizionariostadard[tmp[indice].split(' ')[1]][indice2][4] #contesti
+                    parametro10 = dizionariostadard[tmp[indice].split(' ')[1]][indice2][5] #time to live
+                    self.contenitore.append(elementodalog(parametro1, parametro2, parametro3, parametro4, parametro5, parametro6, parametro7, parametro8, parametro9, parametro10))
+        listadevicevisualizzati = []
+        for indice in range(len(self.contenitore)):
+            if self.contenitore[indice].dispositivo not in listadevicevisualizzati:
+                #print(len(listadevicevisualizzati))
+                listadevicevisualizzati.append(self.contenitore[indice].dispositivo)
+                self.spaziolistadevice.insertRow(0)
+                self.spaziolistadevice.setItem(0, 0, QTableWidgetItem(self.contenitore[indice].dispositivo))
+        #print(self.spaziolistadevice.rowCount())
+        self.spaziolistadevice.setHorizontalHeaderLabels(['device'])
+        header = self.spaziolistadevice.horizontalHeader()
+        header.setResizeMode(0, QHeaderView.Stretch)
+        self.spaziolistadevice.resizeColumnsToContents()
+
+    def vaidilhl(self):
+        #scenografia - mostra parte device
+        self.spaziolistadevice.show()
+        self.etichettacontesti.show()
+        self.PILcontesti_SHUTDOWN.hide()
+        self.PILcontesti_ALLIN.hide()
+        self.PILcontesti_LASER_ON.hide()
+        self.PILcontesti_LASER_ON_DOUBLE_PULSE.hide()
+        self.LHLcontesti_SHUTDOWN.show()
+        self.LHLcontesti_ALLIN.show()
+        self.LHLcontesti_LASER_ON.show()
+        self.LHLcontesti_LASER_ON_DOUBLE_PULSE.show()
+        self.SLcontesti_SHUTDOWN.hide()
+        self.SLcontesti_ALLIN.hide()
+        self.SLcontesti_ELITE1_THG_FEL1.hide()
+        self.SLcontesti_ELITE1_OPA_FEL1.hide()
+        self.SLcontesti_ELITE2_THG_FEL2.hide()
+        self.SLcontesti_ELITE2_OPA_FEL2.hide()
+        self.SLcontesti_ELITE1_THG_FEL1_ELITE2_SLU.hide()
+        self.SLcontesti_ELITE1_OPA_FEL1_ELITE2_SLU.hide()
+        self.SLcontesti_ELITE2_THG_FEL2_ELITE1_SLU.hide()
+        self.SLcontesti_ELITE2_OPA_FEL2_ELITE1_SLU.hide()
+        self.SLUcontesti_SHUTDOWN.hide()
+        self.SLUcontesti_ALLIN.hide()
+        self.SLUcontesti_ELITE1_TOTEM.hide()
+        self.SLUcontesti_ELITE1_TIMER.hide()
+        self.SLUcontesti_ELITE1_TIMEX.hide()
+        self.SLUcontesti_ELITE1_DIPROI.hide()
+        self.SLUcontesti_ELITE1_LDM.hide()
+        self.SLUcontesti_ELITE1_MAGNEDYN.hide()
+        self.SLUcontesti_ELITE2_TOTEM.hide()
+        self.SLUcontesti_ELITE2_TIMER.hide()
+        self.SLUcontesti_ELITE2_TIMEX.hide()
+        self.SLUcontesti_ELITE2_DIPROI.hide()
+        self.SLUcontesti_ELITE2_LDM.hide()
+        self.SLUcontesti_ELITE2_MAGNEDYN.hide()
+        self.spaziolistaattributi.hide()
+        self.aggiungirigaattributo.hide()
+        #per test
+        #manopola = open('hdblista_lhl.txt')
+        #tmp = manopola.readlines()
+        #manopola.close()
+        # su fermi
+        db = PyTango.Database()
+        domain = 'lhl'
+        family = '*'
+        member = '*'
+        dev = []
+        tmp = []
+        for d in db.get_device_domain(domain + '/' + family + '/' + member):
+            #print '-', d
+            for f in db.get_device_family(d + '/' + family + '/' '*'):
+                #print '  -', f
+                for m in db.get_device_member(d + '/' + f + '/' + member):
+                    #print '    -', m
+                    try:
+                        name = d + '/' + f + '/' + m
+                        dev.append(PyTango.DeviceProxy(name))
+                        tmp.append(name + ' ' + dev[-1].info().dev_class)
+                        #print name + ' ' + tmp[-1]
+                        ##maniglia = open('hdblista_lhl' + d + '.txt', 'w')
+                        ##maniglia.writelines(tmp)
+                        ##maniglia.close()
+                    except PyTango.DevFailed, e:
+                        print e
+        #print(tmp)
+        # creo "matrice dati" e tabella per show
+        self.contenitore = []
+        for indice in range(len(tmp)):
+            print(tmp[indice].split(' ')[1])
+            if dizionariostadard.has_key(tmp[indice].split(' ')[1]):
+                #print(dizionariostadard[tmp[indice].split(' ')[1]])
+                for indice2 in range(len(dizionariostadard[tmp[indice].split(' ')[1]])):
+                    #print(dizionariostadard[tmp[indice].split(' ')[1]][indice2])
+                    parametro1 = '1' #abilitato
+                    parametro2 = domain #nome dell'archivitore (tipo pil)
+                    parametro3 = tmp[indice].split(' ')[0] #indirizzo del dispositivo (tipo pil/timing/tmu_pil.01)
+                    parametro4 = dizionariostadard[tmp[indice].split(' ')[1]][indice2][0] #nome attributo (tipo State)
+                    parametro5 = tmp[indice].split(' ')[1] #classe dispositivo
+                    parametro6 = dizionariostadard[tmp[indice].split(' ')[1]][indice2][1] #sogliaassoluta
+                    parametro7 = dizionariostadard[tmp[indice].split(' ')[1]][indice2][2] #sogliarelativa
+                    parametro8 = dizionariostadard[tmp[indice].split(' ')[1]][indice2][3] #sogliatemporale
+                    parametro9 = dizionariostadard[tmp[indice].split(' ')[1]][indice2][4] #contesti
+                    parametro10 = dizionariostadard[tmp[indice].split(' ')[1]][indice2][5] #time to live
+                    self.contenitore.append(elementodalog(parametro1, parametro2, parametro3, parametro4, parametro5, parametro6, parametro7, parametro8, parametro9, parametro10))
+        listadevicevisualizzati = []
+        for indice in range(len(self.contenitore)):
+            if self.contenitore[indice].dispositivo not in listadevicevisualizzati:
+                #print(len(listadevicevisualizzati))
+                listadevicevisualizzati.append(self.contenitore[indice].dispositivo)
+                self.spaziolistadevice.insertRow(0)
+                self.spaziolistadevice.setItem(0, 0, QTableWidgetItem(self.contenitore[indice].dispositivo))
+        #print(self.spaziolistadevice.rowCount())
+        self.spaziolistadevice.setHorizontalHeaderLabels(['device'])
+        header = self.spaziolistadevice.horizontalHeader()
+        header.setResizeMode(0, QHeaderView.Stretch)
+        self.spaziolistadevice.resizeColumnsToContents()
+
+    def vaidisl(self):
+        #scenografia - mostra parte device
+        self.spaziolistadevice.show()
+        self.etichettacontesti.show()
+        self.PILcontesti_SHUTDOWN.hide()
+        self.PILcontesti_ALLIN.hide()
+        self.PILcontesti_LASER_ON.hide()
+        self.PILcontesti_LASER_ON_DOUBLE_PULSE.hide()
+        self.LHLcontesti_SHUTDOWN.hide()
+        self.LHLcontesti_ALLIN.hide()
+        self.LHLcontesti_LASER_ON.hide()
+        self.LHLcontesti_LASER_ON_DOUBLE_PULSE.hide()
+        self.SLcontesti_SHUTDOWN.show()
+        self.SLcontesti_ALLIN.show()
+        self.SLcontesti_ELITE1_THG_FEL1.show()
+        self.SLcontesti_ELITE1_OPA_FEL1.show()
+        self.SLcontesti_ELITE2_THG_FEL2.show()
+        self.SLcontesti_ELITE2_OPA_FEL2.show()
+        self.SLcontesti_ELITE1_THG_FEL1_ELITE2_SLU.show()
+        self.SLcontesti_ELITE1_OPA_FEL1_ELITE2_SLU.show()
+        self.SLcontesti_ELITE2_THG_FEL2_ELITE1_SLU.show()
+        self.SLcontesti_ELITE2_OPA_FEL2_ELITE1_SLU.show()
+        self.SLUcontesti_SHUTDOWN.hide()
+        self.SLUcontesti_ALLIN.hide()
+        self.SLUcontesti_ELITE1_TOTEM.hide()
+        self.SLUcontesti_ELITE1_TIMER.hide()
+        self.SLUcontesti_ELITE1_TIMEX.hide()
+        self.SLUcontesti_ELITE1_DIPROI.hide()
+        self.SLUcontesti_ELITE1_LDM.hide()
+        self.SLUcontesti_ELITE1_MAGNEDYN.hide()
+        self.SLUcontesti_ELITE2_TOTEM.hide()
+        self.SLUcontesti_ELITE2_TIMER.hide()
+        self.SLUcontesti_ELITE2_TIMEX.hide()
+        self.SLUcontesti_ELITE2_DIPROI.hide()
+        self.SLUcontesti_ELITE2_LDM.hide()
+        self.SLUcontesti_ELITE2_MAGNEDYN.hide()
+        self.spaziolistaattributi.hide()
+        self.aggiungirigaattributo.hide()
+        #per test
+        #manopola = open('hdblista_sl.txt')
+        #tmp = manopola.readlines()
+        #manopola.close()
+        # su fermi
+        db = PyTango.Database()
+        domain = 'sl'
+        family = '*'
+        member = '*'
+        dev = []
+        tmp = []
+        for d in db.get_device_domain(domain + '/' + family + '/' + member):
+            #print '-', d
+            for f in db.get_device_family(d + '/' + family + '/' '*'):
+                #print '  -', f
+                for m in db.get_device_member(d + '/' + f + '/' + member):
+                    #print '    -', m
+                    try:
+                        name = d + '/' + f + '/' + m
+                        dev.append(PyTango.DeviceProxy(name))
+                        tmp.append(name + ' ' + dev[-1].info().dev_class)
+                        #print name + ' ' + tmp[-1]
+                        ##maniglia = open('hdblista_sl' + d + '.txt', 'w')
+                        ##maniglia.writelines(tmp)
+                        ##maniglia.close()
+                    except PyTango.DevFailed, e:
+                        print e
+        #print(tmp)
+        # creo "matrice dati" e tabella per show
+        self.contenitore = []
+        for indice in range(len(tmp)):
+            print(tmp[indice].split(' ')[1])
+            if dizionariostadard.has_key(tmp[indice].split(' ')[1]):
+                #print(dizionariostadard[tmp[indice].split(' ')[1]])
+                for indice2 in range(len(dizionariostadard[tmp[indice].split(' ')[1]])):
+                    #print(dizionariostadard[tmp[indice].split(' ')[1]][indice2])
+                    parametro1 = '1' #abilitato
+                    parametro2 = domain #nome dell'archivitore (tipo pil)
+                    parametro3 = tmp[indice].split(' ')[0] #indirizzo del dispositivo (tipo pil/timing/tmu_pil.01)
+                    parametro4 = dizionariostadard[tmp[indice].split(' ')[1]][indice2][0] #nome attributo (tipo State)
+                    parametro5 = tmp[indice].split(' ')[1] #classe dispositivo
+                    parametro6 = dizionariostadard[tmp[indice].split(' ')[1]][indice2][1] #sogliaassoluta
+                    parametro7 = dizionariostadard[tmp[indice].split(' ')[1]][indice2][2] #sogliarelativa
+                    parametro8 = dizionariostadard[tmp[indice].split(' ')[1]][indice2][3] #sogliatemporale
+                    parametro9 = dizionariostadard[tmp[indice].split(' ')[1]][indice2][4] #contesti
+                    parametro10 = dizionariostadard[tmp[indice].split(' ')[1]][indice2][5] #time to live
+                    self.contenitore.append(elementodalog(parametro1, parametro2, parametro3, parametro4, parametro5, parametro6, parametro7, parametro8, parametro9, parametro10))
+        listadevicevisualizzati = []
+        for indice in range(len(self.contenitore)):
+            if self.contenitore[indice].dispositivo not in listadevicevisualizzati:
+                #print(len(listadevicevisualizzati))
+                listadevicevisualizzati.append(self.contenitore[indice].dispositivo)
+                self.spaziolistadevice.insertRow(0)
+                self.spaziolistadevice.setItem(0, 0, QTableWidgetItem(self.contenitore[indice].dispositivo))
+        #print(self.spaziolistadevice.rowCount())
+        self.spaziolistadevice.setHorizontalHeaderLabels(['device'])
+        header = self.spaziolistadevice.horizontalHeader()
+        header.setResizeMode(0, QHeaderView.Stretch)
+        self.spaziolistadevice.resizeColumnsToContents()
+
+    def vaidislu(self):
+        #scenografia - mostra parte device
+        self.spaziolistadevice.show()
+        self.etichettacontesti.show()
+        self.PILcontesti_SHUTDOWN.hide()
+        self.PILcontesti_ALLIN.hide()
+        self.PILcontesti_LASER_ON.hide()
+        self.PILcontesti_LASER_ON_DOUBLE_PULSE.hide()
+        self.LHLcontesti_SHUTDOWN.hide()
+        self.LHLcontesti_ALLIN.hide()
+        self.LHLcontesti_LASER_ON.hide()
+        self.LHLcontesti_LASER_ON_DOUBLE_PULSE.hide()
+        self.SLcontesti_SHUTDOWN.hide()
+        self.SLcontesti_ALLIN.hide()
+        self.SLcontesti_ELITE1_THG_FEL1.hide()
+        self.SLcontesti_ELITE1_OPA_FEL1.hide()
+        self.SLcontesti_ELITE2_THG_FEL2.hide()
+        self.SLcontesti_ELITE2_OPA_FEL2.hide()
+        self.SLcontesti_ELITE1_THG_FEL1_ELITE2_SLU.hide()
+        self.SLcontesti_ELITE1_OPA_FEL1_ELITE2_SLU.hide()
+        self.SLcontesti_ELITE2_THG_FEL2_ELITE1_SLU.hide()
+        self.SLcontesti_ELITE2_OPA_FEL2_ELITE1_SLU.hide()
+        self.SLUcontesti_SHUTDOWN.show()
+        self.SLUcontesti_ALLIN.show()
+        self.SLUcontesti_ELITE1_TOTEM.show()
+        self.SLUcontesti_ELITE1_TIMER.show()
+        self.SLUcontesti_ELITE1_TIMEX.show()
+        self.SLUcontesti_ELITE1_DIPROI.show()
+        self.SLUcontesti_ELITE1_LDM.show()
+        self.SLUcontesti_ELITE1_MAGNEDYN.show()
+        self.SLUcontesti_ELITE2_TOTEM.show()
+        self.SLUcontesti_ELITE2_TIMER.show()
+        self.SLUcontesti_ELITE2_TIMEX.show()
+        self.SLUcontesti_ELITE2_DIPROI.show()
+        self.SLUcontesti_ELITE2_LDM.show()
+        self.SLUcontesti_ELITE2_MAGNEDYN.show()
+        self.spaziolistaattributi.hide()
+        self.aggiungirigaattributo.hide()
+        #per test
+        #manopola = open('hdblista_slu.txt')
+        #tmp = manopola.readlines()
+        #manopola.close()
+        # su fermi
+        db = PyTango.Database()
+        domain = 'slu'
+        family = '*'
+        member = '*'
+        dev = []
+        tmp = []
+        for d in db.get_device_domain(domain + '/' + family + '/' + member):
+            #print '-', d
+            for f in db.get_device_family(d + '/' + family + '/' '*'):
+                #print '  -', f
+                for m in db.get_device_member(d + '/' + f + '/' + member):
+                    #print '    -', m
+                    try:
+                        name = d + '/' + f + '/' + m
+                        dev.append(PyTango.DeviceProxy(name))
+                        tmp.append(name + ' ' + dev[-1].info().dev_class)
+                        #print name + ' ' + tmp[-1]
+                        ##maniglia = open('hdblista_slu' + d + '.txt', 'w')
+                        ##maniglia.writelines(tmp)
+                        ##maniglia.close()
+                    except PyTango.DevFailed, e:
+                        print e
+        #print(tmp)
+        # creo "matrice dati" e tabella per show
+        self.contenitore = []
+        for indice in range(len(tmp)):
+            print(tmp[indice].split(' ')[1])
+            if dizionariostadard.has_key(tmp[indice].split(' ')[1]):
+                #print(dizionariostadard[tmp[indice].split(' ')[1]])
+                for indice2 in range(len(dizionariostadard[tmp[indice].split(' ')[1]])):
+                    #print(dizionariostadard[tmp[indice].split(' ')[1]][indice2])
+                    parametro1 = '1' #abilitato
+                    parametro2 = domain #nome dell'archivitore (tipo pil)
+                    parametro3 = tmp[indice].split(' ')[0] #indirizzo del dispositivo (tipo pil/timing/tmu_pil.01)
+                    parametro4 = dizionariostadard[tmp[indice].split(' ')[1]][indice2][0] #nome attributo (tipo State)
+                    parametro5 = tmp[indice].split(' ')[1] #classe dispositivo
+                    parametro6 = dizionariostadard[tmp[indice].split(' ')[1]][indice2][1] #sogliaassoluta
+                    parametro7 = dizionariostadard[tmp[indice].split(' ')[1]][indice2][2] #sogliarelativa
+                    parametro8 = dizionariostadard[tmp[indice].split(' ')[1]][indice2][3] #sogliatemporale
+                    parametro9 = dizionariostadard[tmp[indice].split(' ')[1]][indice2][4] #contesti
+                    parametro10 = dizionariostadard[tmp[indice].split(' ')[1]][indice2][5] #time to live
+                    self.contenitore.append(elementodalog(parametro1, parametro2, parametro3, parametro4, parametro5, parametro6, parametro7, parametro8, parametro9, parametro10))
+        listadevicevisualizzati = []
+        for indice in range(len(self.contenitore)):
+            if self.contenitore[indice].dispositivo not in listadevicevisualizzati:
+                #print(len(listadevicevisualizzati))
+                listadevicevisualizzati.append(self.contenitore[indice].dispositivo)
+                self.spaziolistadevice.insertRow(0)
+                self.spaziolistadevice.setItem(0, 0, QTableWidgetItem(self.contenitore[indice].dispositivo))
+        #print(self.spaziolistadevice.rowCount())
+        self.spaziolistadevice.setHorizontalHeaderLabels(['device'])
+        header = self.spaziolistadevice.horizontalHeader()
+        header.setResizeMode(0, QHeaderView.Stretch)
+        self.spaziolistadevice.resizeColumnsToContents()
+
+    def visualizzalistaattributi(self):
+        print('funzione visualizzalistaattributi')
+        indice = self.spaziolistadevice.currentRow()
+        discriminatore = self.spaziolistadevice.currentItem().text() #riga device chiamante
+        self.spaziolistaattributi.setRowCount(0)
+        self.aggiungirigaattributo.show()
+        self.spaziolistaattributi.show()
+        for indice in range(len(self.contenitore)):
+            if self.contenitore[indice].dispositivo == discriminatore:
+                self.spaziolistaattributi.insertRow(0)
+                self.spaziolistaattributi.setItem(0, 0, QTableWidgetItem(str(self.contenitore[indice].abilitato)))
+                self.spaziolistaattributi.setItem(0, 1, QTableWidgetItem(self.contenitore[indice].attributo))
+                self.spaziolistaattributi.setItem(0, 2, QTableWidgetItem(self.contenitore[indice].sogliaassoluta))
+                self.spaziolistaattributi.setItem(0, 3, QTableWidgetItem(self.contenitore[indice].sogliarelativa))
+                self.spaziolistaattributi.setItem(0, 4, QTableWidgetItem(self.contenitore[indice].sogliatemporale))
+                self.spaziolistaattributi.setItem(0, 5, QTableWidgetItem(self.contenitore[indice].cancellamidopo))
+                #self.spaziolistaattributi.setItem(0, 6, QTableWidgetItem(str(indice)))
+        self.spaziolistaattributi.setHorizontalHeaderLabels(['Enabled', 'name', 'absolute', 'relative', 'time', 'ttl'])
+        header = self.spaziolistaattributi.horizontalHeader()
+        header.setResizeMode(0, QHeaderView.ResizeToContents)
+        header.setResizeMode(1, QHeaderView.Stretch)
+        header.setResizeMode(2, QHeaderView.ResizeToContents)
+        header.setResizeMode(3, QHeaderView.ResizeToContents)
+        header.setResizeMode(4, QHeaderView.ResizeToContents)
+        header.setResizeMode(5, QHeaderView.ResizeToContents)
+        #header.setResizeMode(6, QHeaderView.ResizeToContents)
+        self.spaziolistaattributi.resizeColumnsToContents()
+
+    def visualizzacontesti(self):
+        print('funzione visualizzacontesti')
+        #print('visualizzacontesti')
+        indice = self.spaziolistaattributi.currentRow()
+        #print(indice)
+        discriminatoreattributo = self.spaziolistaattributi.item(indice, 1).text()
+        #print(discriminatoreattributo)
+        discriminatoredevice = self.spaziolistadevice.currentItem().text()
+        #print(discriminatoredevice)
+        for indice in range(len(self.contenitore)):
+            if self.contenitore[indice].dispositivo == discriminatoredevice and self.contenitore[indice].attributo == discriminatoreattributo:
+                tmp = self.contenitore[indice].contesti.split('|')
+                #print(tmp)
+                if self.contenitore[indice].archiviatore == 'pil':
+                    if 'SHUTDOWN' in tmp:
+                        self.PILcontesti_SHUTDOWN.setChecked(1)
+                    else:
+                        self.PILcontesti_SHUTDOWN.setChecked(0)
+                    if 'ALLIN' in tmp:
+                        self.PILcontesti_ALLIN.setChecked(1)
+                    else:
+                        self.PILcontesti_ALLIN.setChecked(0)
+                    if 'LASER_ON' in tmp:
+                        self.PILcontesti_LASER_ON.setChecked(1)
+                    else:
+                        self.PILcontesti_LASER_ON.setChecked(0)
+                    if 'LASER_ON_DOUBLE_PULSE' in tmp:
+                        self.PILcontesti_LASER_ON_DOUBLE_PULSE.setChecked(1)
+                    else:
+                        self.PILcontesti_LASER_ON_DOUBLE_PULSE.setChecked(0)
+                elif self.contenitore[indice].archiviatore == 'lhl':
+                    if 'SHUTDOWN' in tmp:
+                        self.LHLcontesti_SHUTDOWN.setChecked(1)
+                    else:
+                        self.LHLcontesti_SHUTDOWN.setChecked(0)
+                    if 'ALLIN' in tmp:
+                        self.LHLcontesti_ALLIN.setChecked(1)
+                    else:
+                        self.LHLcontesti_ALLIN.setChecked(0)
+                    if 'LASER_ON' in tmp:
+                        self.LHLcontesti_LASER_ON.setChecked(1)
+                    else:
+                        self.LHLcontesti_LASER_ON.setChecked(0)
+                    if 'LASER_ON_DOUBLE_PULSE' in tmp:
+                        self.LHLcontesti_LASER_ON_DOUBLE_PULSE.setChecked(1)
+                    else:
+                        self.LHLcontesti_LASER_ON_DOUBLE_PULSE.setChecked(0)
+                elif self.contenitore[indice].archiviatore == 'sl':
+                    if 'SHUTDOWN' in tmp:
+                        self.SLcontesti_SHUTDOWN.setChecked(1)
+                    else:
+                        self.SLcontesti_SHUTDOWN.setChecked(0)
+                    if 'ALLIN' in tmp:
+                        self.SLcontesti_ALLIN.setChecked(1)
+                    else:
+                        self.SLcontesti_ALLIN.setChecked(0)
+                    if 'ELITE1_THG_FEL1' in tmp:
+                        self.SLcontesti_ELITE1_THG_FEL1.setChecked(1)
+                    else:
+                        self.SLcontesti_ELITE1_THG_FEL1.setChecked(0)
+                    if 'ELITE1_OPA_FEL1' in tmp:
+                        self.SLcontesti_ELITE1_OPA_FEL1.setChecked(1)
+                    else:
+                        self.SLcontesti_ELITE1_OPA_FEL1.setChecked(0)
+                    if 'ELITE2_THG_FEL2' in tmp:
+                        self.SLcontesti_ELITE2_THG_FEL2.setChecked(1)
+                    else:
+                        self.SLcontesti_ELITE2_THG_FEL2.setChecked(0)
+                    if 'ELITE2_OPA_FEL2' in tmp:
+                        self.SLcontesti_ELITE2_OPA_FEL2.setChecked(1)
+                    else:
+                        self.SLcontesti_ELITE2_OPA_FEL2.setChecked(0)
+                    if 'ELITE1_THG_FEL1_ELITE2_SLU' in tmp:
+                        self.SLcontesti_ELITE1_THG_FEL1_ELITE2_SLU.setChecked(1)
+                    else:
+                        self.SLcontesti_ELITE1_THG_FEL1_ELITE2_SLU.setChecked(0)
+                    if 'ELITE1_OPA_FEL1_ELITE2_SLU' in tmp:
+                        self.SLcontesti_ELITE1_OPA_FEL1_ELITE2_SLU.setChecked(1)
+                    else:
+                        self.SLcontesti_ELITE1_OPA_FEL1_ELITE2_SLU.setChecked(0)
+                    if 'ELITE2_THG_FEL2_ELITE1_SLU' in tmp:
+                        self.SLcontesti_ELITE2_THG_FEL2_ELITE1_SLU.setChecked(1)
+                    else:
+                        self.SLcontesti_ELITE2_THG_FEL2_ELITE1_SLU.setChecked(0)
+                    if 'ELITE2_OPA_FEL2_ELITE1_SLU' in tmp:
+                        self.SLcontesti_ELITE2_OPA_FEL2_ELITE1_SLU.setChecked(1)
+                    else:
+                        self.SLcontesti_ELITE2_OPA_FEL2_ELITE1_SLU.setChecked(0)
+
+                elif self.contenitore[indice].archiviatore == 'slu':
+                    if 'SHUTDOWN' in tmp:
+                        self.SLUcontesti_SHUTDOWN.setChecked(1)
+                    else:
+                        self.SLUcontesti_SHUTDOWN.setChecked(0)
+                    if 'ALLIN' in tmp:
+                        self.SLUcontesti_ALLIN.setChecked(1)
+                    else:
+                        self.SLUcontesti_ALLIN.setChecked(0)
+                    if 'ELITE1_TOTEM' in tmp:
+                        self.SLUcontesti_ELITE1_TOTEM.setChecked(1)
+                    else:
+                        self.SLUcontesti_ELITE1_TOTEM.setChecked(0)
+                    if 'ELITE1_TIMER' in tmp:
+                        self.SLUcontesti_ELITE1_TIMER.setChecked(1)
+                    else:
+                        self.SLUcontesti_ELITE1_TIMER.setChecked(0)
+                    if 'ELITE1_TIMEX' in tmp:
+                        self.SLUcontesti_ELITE1_TIMEX.setChecked(1)
+                    else:
+                        self.SLUcontesti_ELITE1_TIMEX.setChecked(0)
+                    if 'ELITE1_DIPROI' in tmp:
+                        self.SLUcontesti_ELITE1_DIPROI.setChecked(1)
+                    else:
+                        self.SLUcontesti_ELITE1_DIPROI.setChecked(0)
+                    if 'ELITE1_LDM' in tmp:
+                        self.SLUcontesti_ELITE1_LDM.setChecked(1)
+                    else:
+                        self.SLUcontesti_ELITE1_LDM.setChecked(0)
+                    if 'ELITE1_MAGNEDYN' in tmp:
+                        self.SLUcontesti_ELITE1_MAGNEDYN.setChecked(1)
+                    else:
+                        self.SLUcontesti_ELITE1_MAGNEDYN.setChecked(0)
+                    if 'ELITE2_TOTEM' in tmp:
+                        self.SLUcontesti_ELITE2_TOTEM.setChecked(1)
+                    else:
+                        self.SLUcontesti_ELITE2_TOTEM.setChecked(0)
+                    if 'ELITE2_TIMER' in tmp:
+                        self.SLUcontesti_ELITE2_TIMER.setChecked(1)
+                    else:
+                        self.SLUcontesti_ELITE2_TIMER.setChecked(0)
+                    if 'ELITE2_TIMEX' in tmp:
+                        self.SLUcontesti_ELITE2_TIMEX.setChecked(1)
+                    else:
+                        self.SLUcontesti_ELITE2_TIMEX.setChecked(0)
+                    if 'ELITE2_DIPROI' in tmp:
+                        self.SLUcontesti_ELITE2_DIPROI.setChecked(1)
+                    else:
+                        self.SLUcontesti_ELITE2_DIPROI.setChecked(0)
+                    if 'ELITE2_LDM' in tmp:
+                        self.SLUcontesti_ELITE2_LDM.setChecked(1)
+                    else:
+                        self.SLUcontesti_ELITE2_LDM.setChecked(0)
+                    if 'ELITE2_MAGNEDYN' in tmp:
+                        self.SLUcontesti_ELITE2_MAGNEDYN.setChecked(1)
+                    else:
+                        self.SLUcontesti_ELITE2_MAGNEDYN.setChecked(0)
+
+    #def handleItemClicked(self, item):
+        #stato = item.checkState()
+        ##print(stato)
+        #sender = self.sender()
+        #riga = int(sender.currentRow())
+        #colonna = int(sender.currentColumn())
+        #try:
+            #superindice = self.spaziolistaattributi.item(riga, 6).text()
+            #ndispositivo = int(superindice.split(',')[0])
+            #nattributo = int(superindice.split(',')[1])
+            #if stato == 2:
+                #self.contenitore[ndispositivo].attributi[nattributo].abilitato = 1
+            #elif stato == 1:
+                #self.contenitore[ndispositivo].attributi[nattributo].abilitato = 1
+            #elif stato == 0:
+                #self.contenitore[ndispositivo].attributi[nattributo].abilitato = 0
+        #except AttributeError:
+            #a=1
+            ##print(type(self.spaziolistaattributi.item(riga, colonna)))
+
+    def applicacontesto(self, argomento):
+        print('funzione applicacontesto')
+        discriminatore1 = str(self.spaziolistadevice.currentItem().text())
+        discriminatore2 = str(self.spaziolistaattributi.item(self.spaziolistaattributi.currentRow(), 1).text())
+        for indice in range(len(self.contenitore)):
+            if self.contenitore[indice].dispositivo == discriminatore1 and self.contenitore[indice].attributo == discriminatore2:
+                tmp = self.contenitore[indice].contesti.split('|')
+                if self.sender().isChecked():
+                    if argomento in tmp:
+                        print('applicacontesto argomento in tmp')
+                    else:
+                        tmp.append(argomento)
+                        self.contenitore[indice].contesti = '|'.join(tmp)
+                else:
+                    if argomento in tmp:
+                        tmp.pop(tmp.index(argomento))
+                        self.contenitore[indice].contesti = '|'.join(tmp)
+
+    def modificacampotabellaattributi(self):
+        print('funzione modificacampotabellaattributi')
+        sender = self.sender()
+        riga = int(sender.currentRow())
+        colonna = int(sender.currentColumn())
+        argomentonuovo = str(self.spaziolistaattributi.item(riga, colonna).text())
+        discriminatore1 = str(self.spaziolistadevice.currentItem().text())
+        discriminatore2 = str(self.spaziolistaattributi.item(riga, 1).text())
+        #print(discriminatore1)
+        #print(discriminatore2)
+        for indice in range(len(self.contenitore)):
+            if self.contenitore[indice].dispositivo == discriminatore1 and self.contenitore[indice].attributo == discriminatore2:
+                #print(indice)
+                if colonna == 0:
+                    argomentovecchio = self.contenitore[indice].abilitato
+                    self.contenitore[indice].abilitato = argomentonuovo
+                elif colonna == 1:
+                    argomentovecchio = self.contenitore[indice].attributo
+                    self.contenitore[indice].attributo = argomentonuovo
+                elif colonna == 2:
+                    argomentovecchio = self.contenitore[indice].sogliaassoluta
+                    self.contenitore[indice].sogliaassoluta = argomentonuovo
+                elif colonna == 3:
+                    argomentovecchio = self.contenitore[indice].sogliarelativa
+                    self.contenitore[indice].sogliarelativa = argomentonuovo
+                elif colonna == 4:
+                    argomentovecchio = self.contenitore[indice].sogliatemporale
+                    self.contenitore[indice].sogliatemporale = argomentonuovo
+                elif colonna == 5:
+                    argomentovecchio = self.contenitore[indice].cancellamidopo
+                    self.contenitore[indice].cancellamidopo = argomentonuovo
+                else:
+                    argomentovecchio = 'orrore'
+
+    def faggiungirigaattributo(self):
+        print('funzione faggiungirigaattributo')
+        attributoinprova, ok = QInputDialog.getText(self, 'Add row', 'Enter attribute name, please:')
+        if ok:
+            try:
+                discriminatore = str(self.spaziolistadevice.currentItem().text())
+                tmp = PyTango.AttributeProxy(str(discriminatore + '/' + attributoinprova))
+                #print('fatto')
+            except:
+                ok = False
+                msg = QMessageBox()
+                msg.setIcon(QMessageBox.Warning)
+                msg.setText(discriminatore + '/' + attributoinprova + " NOT FOUND!!")
+                msg.exec_()
+                #print('malemalemale')
+        if ok:
+            indice = self.spaziolistaattributi.rowCount()
+            self.spaziolistaattributi.insertRow(indice)
+            self.spaziolistaattributi.setItem(indice, 0, QTableWidgetItem('1'))
+            self.spaziolistaattributi.setItem(indice, 1, QTableWidgetItem(attributoinprova))
+            self.spaziolistaattributi.setItem(indice, 2, QTableWidgetItem('None'))
+            self.spaziolistaattributi.setItem(indice, 3, QTableWidgetItem('None'))
+            self.spaziolistaattributi.setItem(indice, 4, QTableWidgetItem('None'))
+            self.spaziolistaattributi.setItem(indice, 5, QTableWidgetItem('0'))
+            parametro2 = discriminatore.split('/')[0]
+            #print(parametro2)
+            parametro5 = PyTango.DeviceProxy(discriminatore).info().dev_class
+            #print(parametro5)
+            self.contenitore.append(elementodalog(1, parametro2, discriminatore, attributoinprova, parametro5, 'None', 'None', 'None', 'ALLIN', '0'))
+
+    def generalista(self):
+        print('funzione generalista')
+        prologo = 'tango://srv-tango-srf.fcs.elettra.trieste.it:20000/'
+        #, ABSOLUTE: None, RELATIVE: None, PERIOD: None, strategy=ALLIN;ttl=0'
+        listone = []
+        attibuti_nok =[]
+        for indice in range(len(self.contenitore)):
+            if self.contenitore[indice].abilitato == '1' or self.contenitore[indice].abilitato == 1:
+                #controllo sintassi contesti
+                #if self.contenitore[indice].contesti[0] == '|' or self.contenitore[indice].contesti[-1] == '|':
+                    #self.contenitore[indice].contesti[0].strip('|')
+                try:
+                    #tmp = PyTango.AttributeProxy(self.contenitore[indice].indirizzo + '/' + self.contenitore[indice].attributi[indice2].nome)
+                    elemento = prologo + self.contenitore[indice].dispositivo + '/' + self.contenitore[indice].attributo + ', ABSOLUTE: ' + self.contenitore[indice].sogliaassoluta + ', RELATIVE: ' + self.contenitore[indice].sogliarelativa + ', PERIOD: ' + self.contenitore[indice].sogliatemporale + ', strategy=' + self.contenitore[indice].contesti + '; ttl=' + self.contenitore[indice].cancellamidopo + '\n'
+                    listone.append(elemento)
+                except PyTango.WrongNameSyntax:
+                    attibuti_nok.append(self.contenitore[indice].indirizzo + '/' + self.contenitore[indice].attributi[indice2].nome +'\n')
+        if len(attibuti_nok) == 0:
+            #print(listone)
+            d = self.contenitore[0].archiviatore
+            maniglia = open('/home/lfo/data/hdbliste/hdbNUOVAlista_' + d + '.txt', 'w')
+            maniglia.writelines(listone)
+            maniglia.close()
+        else:
+            #messaggio errore con attributi attibuti_nok
+            print(attibuti_nok)
+
+class elementodalog:
+    def __init__(self, argomento1, argomento2, argomento3, argomento4, argomento5, argomento6, argomento7, argomento8, argomento9, argomento10):
+        self.abilitato = argomento1 #es. '1'
+        self.archiviatore = argomento2 #es. 'pil'
+        self.dispositivo = argomento3 #es. pil/timing/tmu_pil.01
+        self.attributo = argomento4 #es. 'State'
+        self.classe = argomento5 #es. 'Keithley2701'
+        self.sogliaassoluta = argomento6 #es. '0.01'
+        self.sogliarelativa = argomento7 #es. '10'
+        self.sogliatemporale = argomento8 #es. '3600000'
+        self.contesti = argomento9 #es. 'ALLIN|LASER_ON'
+        self.cancellamidopo = argomento10 #es. '31536000000'
+
+
+#####################################################################################
+if __name__ == '__main__':
+    app = QApplication([])
+    try:
+        tmpdim = sys.argv[1]
+        tmpdim = tmpdim.split('x')
+        dimensione = [float(tmpdim[0]), float(tmpdim[1])]
+    except:
+        screen = QDesktopWidget().screenGeometry()
+        larghezzaaltezza = [screen.width(), screen.height()]
+        print(larghezzaaltezza)
+        if max(larghezzaaltezza) > 3000:
+            dimensione = max(larghezzaaltezza)*0.38
+        elif max(larghezzaaltezza) > 2000:
+            dimensione = max(larghezzaaltezza)*0.6
+        elif max(larghezzaaltezza) > 1000:
+            dimensione = max(larghezzaaltezza)*0.7
+        else:
+            dimensione = max(larghezzaaltezza)*2
+    font_pannello = QFont("Arial", round(dimensione/100.0), -1, False)
+    app.setFont(font_pannello)
+    window = MainWindow()
+#    window.resize(larghezzaaltezza[0]/6, larghezzaaltezza[1]/6)
+    window.show()
+    app.exec_()
-- 
GitLab