diff --git a/Makefile b/Makefile new file mode 100644 index 0000000000000000000000000000000000000000..676c03aa51bc648ca7c79e5d9e18215a6fc41e20 --- /dev/null +++ b/Makefile @@ -0,0 +1,18 @@ +NAME = laser-feedbacks-gui +MAIN = laser-feedbacks.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-feedbacks.py b/src/laser-feedbacks.py new file mode 100755 index 0000000000000000000000000000000000000000..74b10e41ea6eaa93fd147ae849d8d728a6ae2669 --- /dev/null +++ b/src/laser-feedbacks.py @@ -0,0 +1,697 @@ +#!/usr/bin/python + +##################### python3 errors ################################ +#Traceback (most recent call last): +# File "fermilaserfeedbacks_V2.py", line 580, in <module> +# window = MainWindow() +# File "fermilaserfeedbacks_V2.py", line 186, in __init__ +# mappa = devpil.items()[indice][1].adm_name().split('/') #dal tipo di device ricostruisco che bottoni mettere +#TypeError: 'dict_items' object does not support indexing +#Exception ignored in: <bound method MainWindow.__del__ of <__main__.MainWindow object at 0x7f89caa05288>> +#Traceback (most recent call last): +# File "fermilaserfeedbacks_V2.py", line 426, in __del__ +# self.timer.stop() +#AttributeError: 'MainWindow' object has no attribute 'timer' + + + +import os +import PyTango +from PyQt4.QtCore import * +from PyQt4.QtGui import * +import csv + +sogliauno = 70 +sogliadue = 90 + +dev = {} +dev['calendario_sl'] = PyTango.DeviceProxy('sl/laser/calendar_sl.01') +dev['calendario_slu'] = PyTango.DeviceProxy('slu/laser/calendar_slu.01') +selettore_sl = dev['calendario_sl'].activityNum +selettore_slu = dev['calendario_slu'].activityNum + +devpil = {} +devpil['pillegendtiming'] = PyTango.DeviceProxy('pil/feedback/fbdelay_pil.01') +devpil['pilrienergy'] = PyTango.DeviceProxy('pil/feedback/fb_energy_ir_pil.01') +devpil['feedbackcarica'] = PyTango.DeviceProxy('f/feedback/charge_fb.01') + +devlh = {} +devlh['lhpointing'] = PyTango.DeviceProxy('lhl/feedback/rtltf_lhl.01') +devlh['lhtransport'] = PyTango.DeviceProxy('lhl/feedback/rtltf_transport_lhl.01') + +devsl = {} +if selettore_sl == 1: #ELITE1_OPA_FEL1 + devsl['slelite1input'] = PyTango.DeviceProxy('sl/feedback/rtltf_osc.02') + devsl['slelite1output'] = PyTango.DeviceProxy('sl/feedback/rtltf_elite.01') + devsl['slelite1timing'] = PyTango.DeviceProxy('sl/feedback/fbdelay_sl.01') + devsl['fel1energyopa'] = PyTango.DeviceProxy('sl/feedback/fb_opa_energy_fel01.01') + devsl['fel1pointing'] = PyTango.DeviceProxy('sl/feedback/rtltf_fel01.01') +elif selettore_sl == 2: #ELITE1_OPA_FEL1_ELITE2_SLU + devsl['slelite1input'] = PyTango.DeviceProxy('sl/feedback/rtltf_osc.02') + devsl['slelite1output'] = PyTango.DeviceProxy('sl/feedback/rtltf_elite.01') + devsl['slelite1timing'] = PyTango.DeviceProxy('sl/feedback/fbdelay_sl.01') + devsl['slelite2input'] = PyTango.DeviceProxy('sl/feedback/rtltf_osc.01') + devsl['slelite2output'] = PyTango.DeviceProxy('sl/feedback/rtltf_elite.02') + devsl['slelite2timing'] = PyTango.DeviceProxy('sl/feedback/fbdelay_sl.02') + devsl['fel1energyopa'] = PyTango.DeviceProxy('sl/feedback/fb_opa_energy_fel01.01') + devsl['fel1pointing'] = PyTango.DeviceProxy('sl/feedback/rtltf_fel01.01') +elif selettore_sl == 3: #ELITE1_THG_FEL1 + devsl['slelite1input'] = PyTango.DeviceProxy('sl/feedback/rtltf_osc.02') + devsl['slelite1output'] = PyTango.DeviceProxy('sl/feedback/rtltf_elite.01') + devsl['slelite1timing'] = PyTango.DeviceProxy('sl/feedback/fbdelay_sl.01') + devsl['fel1pointing'] = PyTango.DeviceProxy('sl/feedback/rtltf_fel01.01') +elif selettore_sl == 4: #ELITE1_THG_FEL1_ELITE2_SLU + devsl['slelite1input'] = PyTango.DeviceProxy('sl/feedback/rtltf_osc.02') + devsl['slelite1output'] = PyTango.DeviceProxy('sl/feedback/rtltf_elite.01') + devsl['slelite1timing'] = PyTango.DeviceProxy('sl/feedback/fbdelay_sl.01') + devsl['slelite2input'] = PyTango.DeviceProxy('sl/feedback/rtltf_osc.01') + devsl['slelite2output'] = PyTango.DeviceProxy('sl/feedback/rtltf_elite.02') + devsl['slelite2timing'] = PyTango.DeviceProxy('sl/feedback/fbdelay_sl.02') + devsl['fel1pointing'] = PyTango.DeviceProxy('sl/feedback/rtltf_fel01.01') +elif selettore_sl == 5: #ELITE1_THGOPA_FEL1 + devsl['slelite1input'] = PyTango.DeviceProxy('sl/feedback/rtltf_osc.02') + devsl['slelite1output'] = PyTango.DeviceProxy('sl/feedback/rtltf_elite.01') + devsl['slelite1timing'] = PyTango.DeviceProxy('sl/feedback/fbdelay_sl.01') + devsl['fel1pointing'] = PyTango.DeviceProxy('sl/feedback/rtltf_fel01.01') + #feedback pointing thg +elif selettore_sl == 6: #ELITE1_THGOPA_FEL1_ELITE2_SLU + devsl['slelite1input'] = PyTango.DeviceProxy('sl/feedback/rtltf_osc.02') + devsl['slelite1output'] = PyTango.DeviceProxy('sl/feedback/rtltf_elite.01') + devsl['slelite1timing'] = PyTango.DeviceProxy('sl/feedback/fbdelay_sl.01') + devsl['slelite2input'] = PyTango.DeviceProxy('sl/feedback/rtltf_osc.01') + devsl['slelite2output'] = PyTango.DeviceProxy('sl/feedback/rtltf_elite.02') + devsl['slelite2timing'] = PyTango.DeviceProxy('sl/feedback/fbdelay_sl.02') + devsl['fel1pointing'] = PyTango.DeviceProxy('sl/feedback/rtltf_fel01.01') + #feedback pointing thg +elif selettore_sl == 7: #ELITE2_THG_FEL2 + devsl['slelite2input'] = PyTango.DeviceProxy('sl/feedback/rtltf_osc.01') + devsl['slelite2output'] = PyTango.DeviceProxy('sl/feedback/rtltf_elite.02') + devsl['slelite2timing'] = PyTango.DeviceProxy('sl/feedback/fbdelay_sl.02') + devsl['fel2pointing'] = PyTango.DeviceProxy('sl/feedback/rtltf_fel02.01') +elif selettore_sl == 8: #ELITE2_THG_FEL2_ELITE1_SLU + devsl['slelite2input'] = PyTango.DeviceProxy('sl/feedback/rtltf_osc.01') + devsl['slelite2output'] = PyTango.DeviceProxy('sl/feedback/rtltf_elite.02') + devsl['slelite2timing'] = PyTango.DeviceProxy('sl/feedback/fbdelay_sl.02') + devsl['slelite1input'] = PyTango.DeviceProxy('sl/feedback/rtltf_osc.02') + devsl['slelite1output'] = PyTango.DeviceProxy('sl/feedback/rtltf_elite.01') + devsl['slelite1timing'] = PyTango.DeviceProxy('sl/feedback/fbdelay_sl.01') + devsl['fel2pointing'] = PyTango.DeviceProxy('sl/feedback/rtltf_fel02.01') +elif selettore_sl == 9: #ELITE2_OPA_FEL2 + devsl['slelite2input'] = PyTango.DeviceProxy('sl/feedback/rtltf_osc.01') + devsl['slelite2output'] = PyTango.DeviceProxy('sl/feedback/rtltf_elite.02') + devsl['slelite2timing'] = PyTango.DeviceProxy('sl/feedback/fbdelay_sl.02') + devsl['fel2energyopa'] = PyTango.DeviceProxy('sl/feedback/fb_opa_energy_fel02.01') + devsl['fel2pointing'] = PyTango.DeviceProxy('sl/feedback/rtltf_fel02.01') +elif selettore_sl == 10: #ELITE2_OPA_FEL2_ELITE1_SLU + devsl['slelite2input'] = PyTango.DeviceProxy('sl/feedback/rtltf_osc.01') + devsl['slelite2output'] = PyTango.DeviceProxy('sl/feedback/rtltf_elite.02') + devsl['slelite2timing'] = PyTango.DeviceProxy('sl/feedback/fbdelay_sl.02') + devsl['slelite1input'] = PyTango.DeviceProxy('sl/feedback/rtltf_osc.02') + devsl['slelite1output'] = PyTango.DeviceProxy('sl/feedback/rtltf_elite.01') + devsl['slelite1timing'] = PyTango.DeviceProxy('sl/feedback/fbdelay_sl.01') + devsl['fel2energyopa'] = PyTango.DeviceProxy('sl/feedback/fb_opa_energy_fel02.01') + devsl['fel2pointing'] = PyTango.DeviceProxy('sl/feedback/rtltf_fel02.01') +elif selettore_sl == 11: #ELITE2_THG_FEL2_ELITE1_EEHG + devsl['slelite2input'] = PyTango.DeviceProxy('sl/feedback/rtltf_osc.01') + devsl['slelite2output'] = PyTango.DeviceProxy('sl/feedback/rtltf_elite.02') + devsl['slelite2timing'] = PyTango.DeviceProxy('sl/feedback/fbdelay_sl.02') + devsl['slelite1input'] = PyTango.DeviceProxy('sl/feedback/rtltf_osc.02') + devsl['slelite1output'] = PyTango.DeviceProxy('sl/feedback/rtltf_elite.01') + devsl['slelite1timing'] = PyTango.DeviceProxy('sl/feedback/fbdelay_sl.01') + devsl['fel2pointing'] = PyTango.DeviceProxy('sl/feedback/rtltf_fel02.01') + #feedback eehg +elif selettore_sl == 0: #SHUTDOWN + devsl = {} +else: + devsl['slelite1input'] = PyTango.DeviceProxy('sl/feedback/rtltf_osc.02') + devsl['slelite1output'] = PyTango.DeviceProxy('sl/feedback/rtltf_elite.01') + devsl['slelite1timing'] = PyTango.DeviceProxy('sl/feedback/fbdelay_sl.01') + devsl['slelite2input'] = PyTango.DeviceProxy('sl/feedback/rtltf_osc.01') + devsl['slelite2output'] = PyTango.DeviceProxy('sl/feedback/rtltf_elite.02') + devsl['slelite2timing'] = PyTango.DeviceProxy('sl/feedback/fbdelay_sl.02') + devsl['fel1energyopa'] = PyTango.DeviceProxy('sl/feedback/fb_opa_energy_fel01.01') + devsl['fel1pointing'] = PyTango.DeviceProxy('sl/feedback/rtltf_fel01.01') + devsl['fel2energyopa'] = PyTango.DeviceProxy('sl/feedback/fb_opa_energy_fel02.01') + devsl['fel2pointing'] = PyTango.DeviceProxy('sl/feedback/rtltf_fel02.01') +######################## FAST FEEDBACK +#devslu = {} +#devslu['slutotem'] = PyTango.DeviceProxy('slu/feedback/rtltf_totem_slu.01') +#if selettore_slu == 1: #ELITE2_TIMER +# devslu['sluelite2'] = PyTango.DeviceProxy('slu/feedback/rtltf_slr_slu.01') +# devslu['slutimer'] = PyTango.DeviceProxy('slu/feedback/rtltf_timer_slu.01') +#elif selettore_slu == 2: #ELITE2_TIMEX +# devslu['sluelite2'] = PyTango.DeviceProxy('slu/feedback/rtltf_slr_slu.01') +# devslu['slutimez'] = PyTango.DeviceProxy('slu/feedback/rtltf_timex_slu.01') +#elif selettore_slu == 3: #ELITE2_DIPRI +# devslu['sluelite2'] = PyTango.DeviceProxy('slu/feedback/rtltf_slr_slu.01') +# devslu['sludiproi'] = PyTango.DeviceProxy('slu/feedback/rtltf_diproi_slu.01') +#elif selettore_slu == 4: #ELITE2_LDM +# devslu['sluelite2'] = PyTango.DeviceProxy('slu/feedback/rtltf_slr_slu.01') +# devslu['sluldm'] = PyTango.DeviceProxy('slu/feedback/rtltf_ldm_slu.01') +#elif selettore_slu == 5: #ELITE2_TOTEM +# devslu['sluelite2'] = PyTango.DeviceProxy('slu/feedback/rtltf_slr_slu.01') +# devslu['slutotem'] = PyTango.DeviceProxy('slu/feedback/rtltf_totem_slu.01') +#elif selettore_slu == 6: #ELITE2_MAGNEDYN +# devslu['sluelite2'] = PyTango.DeviceProxy('slu/feedback/rtltf_slr_slu.01') +# devslu['slumagnedyn'] = PyTango.DeviceProxy('slu/feedback/rtltf_mag_slu.01') +#elif selettore_slu == 7: #ELITE1_TIMER +# devslu['slutimer'] = PyTango.DeviceProxy('slu/feedback/rtltf_timer_slu.01') +#elif selettore_slu == 8: #ELITE1_TIMEX +# devslu['slutimez'] = PyTango.DeviceProxy('slu/feedback/rtltf_timex_slu.01') +#elif selettore_slu == 9: #ELITE1_DIPRI +# devslu['sludiproi'] = PyTango.DeviceProxy('slu/feedback/rtltf_diproi_slu.01') +#elif selettore_slu == 10: #ELITE1_LDM +# devslu['sluldm'] = PyTango.DeviceProxy('slu/feedback/rtltf_ldm_slu.01') +#elif selettore_slu == 11: #ELITE1_TOTEM +# devslu['slutotem'] = PyTango.DeviceProxy('slu/feedback/rtltf_totem_slu.01') +#elif selettore_slu == 12: #ELITE1_MAGNEDYN +# devslu['slumagnedyn'] = PyTango.DeviceProxy('slu/feedback/rtltf_mag_slu.01') +#elif selettore_slu == 0: #SHUTDOWN +# devslu = {} +#else: +# devslu['sluelite2'] = PyTango.DeviceProxy('slu/feedback/rtltf_slr_slu.01') +# devslu['slutotem'] = PyTango.DeviceProxy('slu/feedback/rtltf_totem_slu.01') +# devslu['slutimer'] = PyTango.DeviceProxy('slu/feedback/rtltf_timer_slu.01') +# devslu['slutimez'] = PyTango.DeviceProxy('slu/feedback/rtltf_timex_slu.01') +# devslu['sludiproi'] = PyTango.DeviceProxy('slu/feedback/rtltf_diproi_slu.01') +# devslu['sluldm'] = PyTango.DeviceProxy('slu/feedback/rtltf_ldm_slu.01') +# devslu['slumagnedyn'] = PyTango.DeviceProxy('slu/feedback/rtltf_mag_slu.01') + +###################### MIMO FEEDBACK +devslu = {} +if selettore_slu == 1: #ELITE2_TIMER + devslu['slutimer'] = PyTango.DeviceProxy('slu/feedback/mimofb_tmr_slu.01') +elif selettore_slu == 2: #ELITE2_TIMEX + devslu['slutimez'] = PyTango.DeviceProxy('slu/feedback/mimofb_tmx_slu.01') +elif selettore_slu == 3: #ELITE2_DIPRI + devslu['sludiproi'] = PyTango.DeviceProxy('slu/feedback/mimofb_diproi_slu.01') +elif selettore_slu == 4: #ELITE2_LDM + devslu['sluldm'] = PyTango.DeviceProxy('slu/feedback/mimofb_ldm_slu.01') +elif selettore_slu == 5: #ELITE2_TOTEM + devslu['slutotem'] = PyTango.DeviceProxy('slu/feedback/mimofb_totem_slu.01') +elif selettore_slu == 6: #ELITE2_MAGNEDYN + devslu['slumagnedyn'] = PyTango.DeviceProxy('slu/feedback/mimofb_mag_slu.01') +elif selettore_slu == 7: #ELITE1_TIMER + devslu['slutimer'] = PyTango.DeviceProxy('slu/feedback/mimofb_tmr_slu.01') +elif selettore_slu == 8: #ELITE1_TIMEX + devslu['slutimez'] = PyTango.DeviceProxy('slu/feedback/mimofb_tmx_slu.01') +elif selettore_slu == 9: #ELITE1_DIPRI + devslu['sludiproi'] = PyTango.DeviceProxy('slu/feedback/mimofb_diproi_slu.01') +elif selettore_slu == 10: #ELITE1_LDM + devslu['sluldm'] = PyTango.DeviceProxy('slu/feedback/mimofb_ldm_slu.01') +elif selettore_slu == 11: #ELITE1_TOTEM + devslu['slutotem'] = PyTango.DeviceProxy('slu/feedback/mimofb_totem_slu.01') +elif selettore_slu == 12: #ELITE1_MAGNEDYN + devslu['slumagnedyn'] = PyTango.DeviceProxy('slu/feedback/mimofb_mag_slu.01') +elif selettore_slu == 0: #SHUTDOWN + devslu = {} +else: + devslu['slutimer'] = PyTango.DeviceProxy('slu/feedback/mimofb_tmr_slu.01') + devslu['slutimez'] = PyTango.DeviceProxy('slu/feedback/mimofb_tmx_slu.01') + devslu['sludiproi'] = PyTango.DeviceProxy('slu/feedback/mimofb_diproi_slu.01') + devslu['sluldm'] = PyTango.DeviceProxy('slu/feedback/mimofb_ldm_slu.01') + devslu['slumagnedyn'] = PyTango.DeviceProxy('slu/feedback/mimofb_mag_slu.01') + + + + + +#slu - esterni +#devslu['timer'] = PyTango.DeviceProxy('srv-tmr-srf:20000/tmr/slu/rtltf_tmr.01') +#devslu['timex'] = PyTango.DeviceProxy('srv-tmx-srf:20000/timex/slu/rtltf_timex.01') +#devslu['diproi'] = PyTango.DeviceProxy('srv-dpi-srf:20000/diproi/slu/rtltf_diproi.01') +#devslu['ldmthg'] = PyTango.DeviceProxy('srv-ldm-srf:20000/ldm/feedback/rtltf_ldm.01') +#devslu['ldmfund'] = PyTango.DeviceProxy('srv-ldm-srf:20000/ldm/feedback/rtltf_ldm.02') + + + +class MainWindow(QDialog): + def __init__(self, parent = None): + super(MainWindow, self).__init__(parent) + self.riquadrodiselezione = QGroupBox() + self.selezionetutti = QRadioButton("ALL") + self.selezionestandard = QRadioButton("Standard") + loselezione = QHBoxLayout() + loselezione.addWidget(self.selezionetutti) + loselezione.addWidget(self.selezionestandard) + self.riquadrodiselezione.setLayout(loselezione) + self.riquadrodipil = QGroupBox('PIL') + self.riquadrodipil.setStyleSheet("background-color: rgb(255, 255, 200)") + lopil = QGridLayout() + #print(len(devpil)) + for indice in range(len(devpil)): + mappa = devpil.items()[indice][1].adm_name().split('/') #dal tipo di device ricostruisco che bottoni mettere + if mappa[1] == 'rtltf-srv': + tmpnome = devpil.items()[indice][1].name().split('/') #leggo nome device + nomedicomodoperpannello = tmpnome[2].replace('.', '') #creo nome per elementi grafici del pannello + exec('self.' + nomedicomodoperpannello + '_bottone = QPushButton("' + tmpnome[2] + '")') # creo il tasto per lanciare il pannello + exec('self.' + nomedicomodoperpannello + '_bottone.clicked.connect(lambda: os.system("/runtime/bin/ftfmaster' + devpil.items()[indice][1].name() + ' --laser &"))') #creo comando apri pannello + exec('lopil.addWidget(self.' + nomedicomodoperpannello + '_bottone, ' + str(indice+1) + ', 0, 1, 1)') #schiaffo l'elemento grafico nel layout + exec('self.' + nomedicomodoperpannello + '_stato = QLineEdit("")') # creo il il campo per scrivere lo stato + exec('lopil.addWidget(self.' + nomedicomodoperpannello + '_stato, ' + str(indice+1) + ', 1, 1, 1)') #schiaffo l'elemento grafico nel layout + exec('self.' + nomedicomodoperpannello + '_percentuale = QLineEdit("%")') # creo il il campo per scrivere % + exec('lopil.addWidget(self.' + nomedicomodoperpannello + '_percentuale, ' + str(indice+1) + ', 2, 1, 1)') #schiaffo l'elemento grafico nel layout + #elif mappa[1] == 'dcf-srv': + #tmpnome = devpil.items()[indice][1].name().split('/') #leggo nome device + #nomedicomodoperpannello = tmpnome[2].replace('.', '') #creo nome per elementi grafici del pannello + #exec('self.' + nomedicomodoperpannello + '_state = QPushButton("' + tmpnome[2] + '")') # creo il tasto per lanciare il pannello + #exec('self.' + nomedicomodoperpannello + '_state.clicked.connect(lambda: os.system("/runtime/bin/fbdelay ' + devpil.items()[indice][1].name() +' &"))') #creo comando apri pannello + #exec('lopil.addWidget(self.' + nomedicomodoperpannello + '_state, ' + str(indice+1) + ', 0, 1, 1)') #schiaffo l'elemento grafico nel layout + #exec('self.' + nomedicomodoperpannello + '_percentuale = QLineEdit("%")') # creo il il campo per scrivere % + #exec('lopil.addWidget(self.' + nomedicomodoperpannello + '_percentuale, ' + str(indice+1) + ', 1, 1, 1)') #schiaffo l'elemento grafico nel layout + elif mappa[1] == 'mimofb-srv': + tmpnome = devpil.items()[indice][1].name().split('/') #leggo nome device + nomedicomodoperpannello = tmpnome[2].replace('.', '') #creo nome per elementi grafici del pannello + exec('self.' + nomedicomodoperpannello + '_bottone = QPushButton("' + tmpnome[2] + '")') # creo il tasto per lanciare il pannello + exec('self.' + nomedicomodoperpannello + '_bottone.clicked.connect(lambda: os.system("/runtime/bin/mimofb ' + devpil.items()[indice][1].name() +' &"))') #creo comando apri pannello + exec('lopil.addWidget(self.' + nomedicomodoperpannello + '_bottone, ' + str(indice+1) + ', 0, 1, 1)') #schiaffo l'elemento grafico nel layout + exec('self.' + nomedicomodoperpannello + '_stato = QLineEdit("")') # creo il il campo per scrivere lo stato + exec('lopil.addWidget(self.' + nomedicomodoperpannello + '_stato, ' + str(indice+1) + ', 1, 1, 1)') #schiaffo l'elemento grafico nel layout + exec('self.' + nomedicomodoperpannello + '_percentuale = QLineEdit("%")') # creo il il campo per scrivere % + exec('lopil.addWidget(self.' + nomedicomodoperpannello + '_percentuale, ' + str(indice+1) + ', 2, 1, 1)') #schiaffo l'elemento grafico nel layout + elif mappa[1] == 'sequencerconf-srv': + tmpnome = devpil.items()[indice][1].name().split('/') #leggo nome device + nomedicomodoperpannello = tmpnome[2].replace('.', '') #creo nome per elementi grafici del pannello + exec('self.' + nomedicomodoperpannello + '_bottone = QPushButton("' + tmpnome[2] + '")') # creo il tasto per lanciare il pannello + exec('self.' + nomedicomodoperpannello + '_bottone.clicked.connect(lambda: os.system("/usr/local/tango-8.1.2.c/bin/atkpanel ' + devpil.items()[indice][1].name() +' &"))') #creo comando apri pannello + exec('lopil.addWidget(self.' + nomedicomodoperpannello + '_bottone, ' + str(indice+1) + ', 0, 1, 1)') #schiaffo l'elemento grafico nel layout + exec('self.' + nomedicomodoperpannello + '_stato = QLineEdit("")') # creo il il campo per scrivere lo stato + exec('lopil.addWidget(self.' + nomedicomodoperpannello + '_stato, ' + str(indice+1) + ', 1, 1, 1)') #schiaffo l'elemento grafico nel layout + #exec('self.' + nomedicomodoperpannello + '_percentuale = QLineEdit("%")') # creo il il campo per scrivere % + #exec('lopil.addWidget(self.' + nomedicomodoperpannello + '_percentuale, ' + str(indice+1) + ', 2, 1, 1)') #schiaffo l'elemento grafico nel layout + #elif mappa[1] == 'lefb-srv': + #tmpnome = devpil.items()[indice][1].name().split('/') #leggo nome device + #nomedicomodoperpannello = tmpnome[2].replace('.', '') #creo nome per elementi grafici del pannello + #exec('self.' + nomedicomodoperpannello + '_state = QPushButton("' + tmpnome[2] + '")') # creo il tasto per lanciare il pannello + #exec('self.' + nomedicomodoperpannello + '_state.clicked.connect(lambda: os.system("/runtime/bin/lef ' + devpil.items()[indice][1].name() +' &"))') #creo comando apri pannello + #exec('lopil.addWidget(self.' + nomedicomodoperpannello + '_state, ' + str(indice+1) + ', 0, 1, 1)') #schiaffo l'elemento grafico nel layout + #exec('self.' + nomedicomodoperpannello + '_percentuale = QLineEdit("%")') # creo il il campo per scrivere % + #exec('lopil.addWidget(self.' + nomedicomodoperpannello + '_percentuale, ' + str(indice+1) + ', 1, 1, 1)') #schiaffo l'elemento grafico nel layout + self.riquadrodipil.setLayout(lopil) + self.riquadrodilhl = QGroupBox('LHL') + self.riquadrodilhl.setStyleSheet("background-color: rgb(255, 200, 200)") + lolh = QGridLayout() + #print(len(devlh)) + for indice in range(len(devlh)): + mappa = devlh.items()[indice][1].adm_name().split('/') #dal tipo di device ricostruisco che bottoni mettere + if mappa[1] == 'rtltf-srv': + tmpnome = devlh.items()[indice][1].name().split('/') #leggo nome device + nomedicomodoperpannello = tmpnome[2].replace('.', '') #creo nome per elementi grafici del pannello + exec('self.' + nomedicomodoperpannello + '_bottone = QPushButton("' + tmpnome[2] + '")') # creo il tasto per lanciare il pannello + exec('self.' + nomedicomodoperpannello + '_bottone.clicked.connect(lambda: os.system("/runtime/bin/ftfmaster ' + devlh.items()[indice][1].name() +' --laser &"))') #creo comando apri pannello + exec('lolh.addWidget(self.' + nomedicomodoperpannello + '_bottone, ' + str(indice+1) + ', 0, 1, 1)') #schiaffo l'elemento grafico nel layout + exec('self.' + nomedicomodoperpannello + '_stato = QLineEdit("")') # creo il il campo per scrivere lo stato + exec('lolh.addWidget(self.' + nomedicomodoperpannello + '_stato, ' + str(indice+1) + ', 1, 1, 1)') #schiaffo l'elemento grafico nel layout + exec('self.' + nomedicomodoperpannello + '_percentuale = QLineEdit("%")') # creo il il campo per scrivere % + exec('lolh.addWidget(self.' + nomedicomodoperpannello + '_percentuale, ' + str(indice+1) + ', 2, 1, 1)') #schiaffo l'elemento grafico nel layout + elif mappa[1] == 'dcf-srv': + tmpnome = devlh.items()[indice][1].name().split('/') #leggo nome device + nomedicomodoperpannello = tmpnome[2].replace('.', '') #creo nome per elementi grafici del pannello + exec('self.' + nomedicomodoperpannello + '_bottone = QPushButton("' + tmpnome[2] + '")') # creo il tasto per lanciare il pannello + exec('self.' + nomedicomodoperpannello + '_bottone.clicked.connect(lambda: os.system("/runtime/bin/fbdelay ' + devlh.items()[indice][1].name() +' &"))') #creo comando apri pannello + exec('lolh.addWidget(self.' + nomedicomodoperpannello + '_bottone, ' + str(indice+1) + ', 0, 1, 1)') #schiaffo l'elemento grafico nel layout + exec('self.' + nomedicomodoperpannello + '_stato = QLineEdit("")') # creo il il campo per scrivere lo stato + exec('lolh.addWidget(self.' + nomedicomodoperpannello + '_stato, ' + str(indice+1) + ', 1, 1, 1)') #schiaffo l'elemento grafico nel layout + exec('self.' + nomedicomodoperpannello + '_percentuale = QLineEdit("%")') # creo il il campo per scrivere % + exec('lolh.addWidget(self.' + nomedicomodoperpannello + '_percentuale, ' + str(indice+1) + ', 2, 1, 1)') #schiaffo l'elemento grafico nel layout + elif mappa[1] == 'mimofb-srv': + tmpnome = devlh.items()[indice][1].name().split('/') #leggo nome device + nomedicomodoperpannello = tmpnome[2].replace('.', '') #creo nome per elementi grafici del pannello + exec('self.' + nomedicomodoperpannello + '_bottone = QPushButton("' + tmpnome[2] + '")') # creo il tasto per lanciare il pannello + exec('self.' + nomedicomodoperpannello + '_bottone.clicked.connect(lambda: os.system("/runtime/bin/mimofb ' + devlh.items()[indice][1].name() +' &"))') #creo comando apri pannello + exec('lolh.addWidget(self.' + nomedicomodoperpannello + '_bottone, ' + str(indice+1) + ', 0, 1, 1)') #schiaffo l'elemento grafico nel layout + exec('self.' + nomedicomodoperpannello + '_stato = QLineEdit("")') # creo il il campo per scrivere lo stato + exec('lolh.addWidget(self.' + nomedicomodoperpannello + '_stato, ' + str(indice+1) + ', 1, 1, 1)') #schiaffo l'elemento grafico nel layout + exec('self.' + nomedicomodoperpannello + '_percentuale = QLineEdit("%")') # creo il il campo per scrivere % + exec('lolh.addWidget(self.' + nomedicomodoperpannello + '_percentuale, ' + str(indice+1) + ', 2, 1, 1)') #schiaffo l'elemento grafico nel layout + elif mappa[1] == 'sequencerconf-srv': + tmpnome = devlh.items()[indice][1].name().split('/') #leggo nome device + nomedicomodoperpannello = tmpnome[2].replace('.', '') #creo nome per elementi grafici del pannello + exec('self.' + nomedicomodoperpannello + '_bottone = QPushButton("' + tmpnome[2] + '")') # creo il tasto per lanciare il pannello + exec('self.' + nomedicomodoperpannello + '_bottone.clicked.connect(lambda: os.system("/usr/local/tango-8.1.2.c/bin/atkpanel ' + devlh.items()[indice][1].name() +' &"))') #creo comando apri pannello + exec('lolh.addWidget(self.' + nomedicomodoperpannello + '_bottone, ' + str(indice+1) + ', 0, 1, 1)') #schiaffo l'elemento grafico nel layout + exec('self.' + nomedicomodoperpannello + '_stato = QLineEdit("")') # creo il il campo per scrivere lo stato + exec('lolh.addWidget(self.' + nomedicomodoperpannello + '_stato, ' + str(indice+1) + ', 1, 1, 1)') #schiaffo l'elemento grafico nel layout + #exec('self.' + nomedicomodoperpannello + '_percentuale = QLineEdit("%")') # creo il il campo per scrivere % + #exec('lolh.addWidget(self.' + nomedicomodoperpannello + '_percentuale, ' + str(indice+1) + ', 2, 1, 1)') #schiaffo l'elemento grafico nel layout + elif mappa[1] == 'lefb-srv': + tmpnome = devlh.items()[indice][1].name().split('/') #leggo nome device + nomedicomodoperpannello = tmpnome[2].replace('.', '') #creo nome per elementi grafici del pannello + exec('self.' + nomedicomodoperpannello + '_bottone = QPushButton("' + tmpnome[2] + '")') # creo il tasto per lanciare il pannello + exec('self.' + nomedicomodoperpannello + '_bottone.clicked.connect(lambda: os.system("/runtime/bin/lef ' + devlh.items()[indice][1].name() +' &"))') #creo comando apri pannello + exec('lolh.addWidget(self.' + nomedicomodoperpannello + '_bottone, ' + str(indice+1) + ', 0, 1, 1)') #schiaffo l'elemento grafico nel layout + exec('self.' + nomedicomodoperpannello + '_stato = QLineEdit("")') # creo il il campo per scrivere lo stato + exec('lolh.addWidget(self.' + nomedicomodoperpannello + '_stato, ' + str(indice+1) + ', 1, 1, 1)') #schiaffo l'elemento grafico nel layout + exec('self.' + nomedicomodoperpannello + '_percentuale = QLineEdit("%")') # creo il il campo per scrivere % + exec('lolh.addWidget(self.' + nomedicomodoperpannello + '_percentuale, ' + str(indice+1) + ', 2, 1, 1)') #schiaffo l'elemento grafico nel layout + self.riquadrodilhl.setLayout(lolh) + self.riquadrodisl = QGroupBox('SEED') + self.riquadrodisl.setStyleSheet("background-color: rgb(200, 255, 255)") + losl = QGridLayout() + #print(len(devsl)) + for indice in range(len(devsl)): + mappa = devsl.items()[indice][1].adm_name().split('/') #dal tipo di device ricostruisco che bottoni mettere + if mappa[1] == 'rtltf-srv': + tmpnome = devsl.items()[indice][1].name().split('/') #leggo nome device + nomedicomodoperpannello = tmpnome[2].replace('.', '') #creo nome per elementi grafici del pannello + exec('self.' + nomedicomodoperpannello + '_bottone = QPushButton("' + tmpnome[2] + '")') # creo il tasto per lanciare il pannello + exec('self.' + nomedicomodoperpannello + '_bottone.clicked.connect(lambda: os.system("/runtime/bin/ftfmaster ' + devsl.items()[indice][1].name() + ' --laser &"))') #creo comando apri pannello + exec('losl.addWidget(self.' + nomedicomodoperpannello + '_bottone, ' + str(indice+1) + ', 0, 1, 1)') #schiaffo l'elemento grafico nel layout + exec('self.' + nomedicomodoperpannello + '_stato = QLineEdit("")') # creo il il campo per scrivere lo stato + exec('losl.addWidget(self.' + nomedicomodoperpannello + '_stato, ' + str(indice+1) + ', 1, 1, 1)') #schiaffo l'elemento grafico nel layout + exec('self.' + nomedicomodoperpannello + '_percentuale = QLineEdit("%")') # creo il il campo per scrivere % + exec('losl.addWidget(self.' + nomedicomodoperpannello + '_percentuale, ' + str(indice+1) + ', 2, 1, 1)') #schiaffo l'elemento grafico nel layout + elif mappa[1] == 'dcf-srv': + tmpnome = devsl.items()[indice][1].name().split('/') #leggo nome device + nomedicomodoperpannello = tmpnome[2].replace('.', '') #creo nome per elementi grafici del pannello + exec('self.' + nomedicomodoperpannello + '_bottone = QPushButton("' + tmpnome[2] + '")') # creo il tasto per lanciare il pannello + exec('self.' + nomedicomodoperpannello + '_bottone.clicked.connect(lambda: os.system("/runtime/bin/fbdelay ' + devsl.items()[indice][1].name() +' &"))') #creo comando apri pannello + exec('losl.addWidget(self.' + nomedicomodoperpannello + '_bottone, ' + str(indice+1) + ', 0, 1, 1)') #schiaffo l'elemento grafico nel layout + exec('self.' + nomedicomodoperpannello + '_stato = QLineEdit("")') # creo il il campo per scrivere lo stato + exec('losl.addWidget(self.' + nomedicomodoperpannello + '_stato, ' + str(indice+1) + ', 1, 1, 1)') #schiaffo l'elemento grafico nel layout + exec('self.' + nomedicomodoperpannello + '_percentuale = QLineEdit("%")') # creo il il campo per scrivere % + exec('losl.addWidget(self.' + nomedicomodoperpannello + '_percentuale, ' + str(indice+1) + ', 2, 1, 1)') #schiaffo l'elemento grafico nel layout + elif mappa[1] == 'mimofb-srv': + tmpnome = devsl.items()[indice][1].name().split('/') #leggo nome device + nomedicomodoperpannello = tmpnome[2].replace('.', '') #creo nome per elementi grafici del pannello + exec('self.' + nomedicomodoperpannello + '_bottone = QPushButton("' + tmpnome[2] + '")') # creo il tasto per lanciare il pannello + exec('self.' + nomedicomodoperpannello + '_bottone.clicked.connect(lambda: os.system("/runtime/bin/mimofb ' + devsl.items()[indice][1].name() +' &"))') #creo comando apri pannello + exec('losl.addWidget(self.' + nomedicomodoperpannello + '_bottone, ' + str(indice+1) + ', 0, 1, 1)') #schiaffo l'elemento grafico nel layout + exec('self.' + nomedicomodoperpannello + '_stato = QLineEdit("")') # creo il il campo per scrivere lo stato + exec('losl.addWidget(self.' + nomedicomodoperpannello + '_stato, ' + str(indice+1) + ', 1, 1, 1)') #schiaffo l'elemento grafico nel layout + exec('self.' + nomedicomodoperpannello + '_percentuale = QLineEdit("%")') # creo il il campo per scrivere % + exec('losl.addWidget(self.' + nomedicomodoperpannello + '_percentuale, ' + str(indice+1) + ', 2, 1, 1)') #schiaffo l'elemento grafico nel layout + elif mappa[1] == 'sequencerconf-srv': + tmpnome = devsl.items()[indice][1].name().split('/') #leggo nome device + nomedicomodoperpannello = tmpnome[2].replace('.', '') #creo nome per elementi grafici del pannello + exec('self.' + nomedicomodoperpannello + '_bottone = QPushButton("' + tmpnome[2] + '")') # creo il tasto per lanciare il pannello + exec('self.' + nomedicomodoperpannello + '_bottone.clicked.connect(lambda: os.system("/usr/local/tango-8.1.2.c/bin/atkpanel ' + devsl.items()[indice][1].name() +' &"))') #creo comando apri pannello + exec('losl.addWidget(self.' + nomedicomodoperpannello + '_bottone, ' + str(indice+1) + ', 0, 1, 1)') #schiaffo l'elemento grafico nel layout + exec('self.' + nomedicomodoperpannello + '_stato = QLineEdit("")') # creo il il campo per scrivere lo stato + exec('losl.addWidget(self.' + nomedicomodoperpannello + '_stato, ' + str(indice+1) + ', 1, 1, 1)') #schiaffo l'elemento grafico nel layout + #exec('self.' + nomedicomodoperpannello + '_percentuale = QLineEdit("%")') # creo il il campo per scrivere % + #exec('losl.addWidget(self.' + nomedicomodoperpannello + '_percentuale, ' + str(indice+1) + ', 2, 1, 1)') #schiaffo l'elemento grafico nel layout + elif mappa[1] == 'lefb-srv': + tmpnome = devsl.items()[indice][1].name().split('/') #leggo nome device + nomedicomodoperpannello = tmpnome[2].replace('.', '') #creo nome per elementi grafici del pannello + exec('self.' + nomedicomodoperpannello + '_bottone = QPushButton("' + tmpnome[2] + '")') # creo il tasto per lanciare il pannello + exec('self.' + nomedicomodoperpannello + '_bottone.clicked.connect(lambda: os.system("/runtime/bin/lef ' + devsl.items()[indice][1].name() +' &"))') #creo comando apri pannello + exec('losl.addWidget(self.' + nomedicomodoperpannello + '_bottone, ' + str(indice+1) + ', 0, 1, 1)') #schiaffo l'elemento grafico nel layout + exec('self.' + nomedicomodoperpannello + '_stato = QLineEdit("")') # creo il il campo per scrivere lo stato + exec('losl.addWidget(self.' + nomedicomodoperpannello + '_stato, ' + str(indice+1) + ', 1, 1, 1)') #schiaffo l'elemento grafico nel layout + exec('self.' + nomedicomodoperpannello + '_percentuale = QLineEdit("%")') # creo il il campo per scrivere % + exec('losl.addWidget(self.' + nomedicomodoperpannello + '_percentuale, ' + str(indice+1) + ', 2, 1, 1)') #schiaffo l'elemento grafico nel layout + self.riquadrodisl.setLayout(losl) + self.riquadrodislu = QGroupBox('SLU') + self.riquadrodislu.setStyleSheet("background-color: rgb(200, 255, 200)") + loslu = QGridLayout() + #print(len(devslu)) + for indice in range(len(devslu)): + mappa = devslu.items()[indice][1].adm_name().split('/') #dal tipo di device ricostruisco che bottoni mettere + #print(mappa) ######## DA SISTEMARE + if mappa[1] == 'rtltf-srv': + tmpnome = devslu.items()[indice][1].name().split('/') #leggo nome device + nomedicomodoperpannello = tmpnome[2].replace('.', '') #creo nome per elementi grafici del pannello + exec('self.' + nomedicomodoperpannello + '_bottone = QPushButton("' + tmpnome[2] + '")') # creo il tasto per lanciare il pannello + exec('self.' + nomedicomodoperpannello + '_bottone.clicked.connect(lambda: os.system("/runtime/bin/ftfmaster ' + devslu.items()[indice][1].name() + ' --laser &"))') #creo comando apri pannello + exec('loslu.addWidget(self.' + nomedicomodoperpannello + '_bottone, ' + str(indice+1) + ', 0, 1, 1)') #schiaffo l'elemento grafico nel layout + exec('self.' + nomedicomodoperpannello + '_stato = QLineEdit("")') # creo il il campo per scrivere lo stato + exec('loslu.addWidget(self.' + nomedicomodoperpannello + '_stato, ' + str(indice+1) + ', 1, 1, 1)') #schiaffo l'elemento grafico nel layout + exec('self.' + nomedicomodoperpannello + '_percentuale = QLineEdit("%")') # creo il il campo per scrivere % + exec('loslu.addWidget(self.' + nomedicomodoperpannello + '_percentuale, ' + str(indice+1) + ', 2, 1, 1)') #schiaffo l'elemento grafico nel layout + elif mappa[1] == 'dcf-srv': + tmpnome = devslu.items()[indice][1].name().split('/') #leggo nome device + nomedicomodoperpannello = tmpnome[2].replace('.', '') #creo nome per elementi grafici del pannello + exec('self.' + nomedicomodoperpannello + '_bottone = QPushButton("' + tmpnome[2] + '")') # creo il tasto per lanciare il pannello + exec('self.' + nomedicomodoperpannello + '_bottone.clicked.connect(lambda: os.system("/runtime/bin/fbdelay ' + devslu.items()[indice][1].name() +' &"))') #creo comando apri pannello + exec('loslu.addWidget(self.' + nomedicomodoperpannello + '_bottone, ' + str(indice+1) + ', 0, 1, 1)') #schiaffo l'elemento grafico nel layout + exec('self.' + nomedicomodoperpannello + '_stato = QLineEdit("")') # creo il il campo per scrivere lo stato + exec('loslu.addWidget(self.' + nomedicomodoperpannello + '_stato, ' + str(indice+1) + ', 1, 1, 1)') #schiaffo l'elemento grafico nel layout + exec('self.' + nomedicomodoperpannello + '_percentuale = QLineEdit("%")') # creo il il campo per scrivere % + exec('loslu.addWidget(self.' + nomedicomodoperpannello + '_percentuale, ' + str(indice+1) + ', 2, 1, 1)') #schiaffo l'elemento grafico nel layout + elif mappa[1] == 'mimofb-srv': + tmpnome = devslu.items()[indice][1].name().split('/') #leggo nome device + nomedicomodoperpannello = tmpnome[2].replace('.', '') #creo nome per elementi grafici del pannello + exec('self.' + nomedicomodoperpannello + '_bottone = QPushButton("' + tmpnome[2] + '")') # creo il tasto per lanciare il pannello + exec('self.' + nomedicomodoperpannello + '_bottone.clicked.connect(lambda: os.system("/runtime/bin/mimofb ' + devslu.items()[indice][1].name() +' &"))') #creo comando apri pannello + exec('loslu.addWidget(self.' + nomedicomodoperpannello + '_bottone, ' + str(indice+1) + ', 0, 1, 1)') #schiaffo l'elemento grafico nel layout + exec('self.' + nomedicomodoperpannello + '_stato = QLineEdit("")') # creo il il campo per scrivere lo stato + exec('loslu.addWidget(self.' + nomedicomodoperpannello + '_stato, ' + str(indice+1) + ', 1, 1, 1)') #schiaffo l'elemento grafico nel layout + exec('self.' + nomedicomodoperpannello + '_percentuale = QLineEdit("%")') # creo il il campo per scrivere % + exec('loslu.addWidget(self.' + nomedicomodoperpannello + '_percentuale, ' + str(indice+1) + ', 2, 1, 1)') #schiaffo l'elemento grafico nel layout + elif mappa[1] == 'sequencerconf-srv': + tmpnome = devslu.items()[indice][1].name().split('/') #leggo nome device + nomedicomodoperpannello = tmpnome[2].replace('.', '') #creo nome per elementi grafici del pannello + exec('self.' + nomedicomodoperpannello + '_bottone = QPushButton("' + tmpnome[2] + '")') # creo il tasto per lanciare il pannello + exec('self.' + nomedicomodoperpannello + '_bottone.clicked.connect(lambda: os.system("/usr/local/tango-8.1.2.c/bin/atkpanel ' + devslu.items()[indice][1].name() +' &"))') #creo comando apri pannello + exec('loslu.addWidget(self.' + nomedicomodoperpannello + '_bottone, ' + str(indice+1) + ', 0, 1, 1)') #schiaffo l'elemento grafico nel layout + exec('self.' + nomedicomodoperpannello + '_stato = QLineEdit("")') # creo il il campo per scrivere lo stato + exec('loslu.addWidget(self.' + nomedicomodoperpannello + '_stato, ' + str(indice+1) + ', 1, 1, 1)') #schiaffo l'elemento grafico nel layout + #exec('self.' + nomedicomodoperpannello + '_percentuale = QLineEdit("%")') # creo il il campo per scrivere % + #exec('loslu.addWidget(self.' + nomedicomodoperpannello + '_percentuale, ' + str(indice+1) + ', 2, 1, 1)') #schiaffo l'elemento grafico nel layout + elif mappa[1] == 'lefb-srv': + tmpnome = devslu.items()[indice][1].name().split('/') #leggo nome device + nomedicomodoperpannello = tmpnome[2].replace('.', '') #creo nome per elementi grafici del pannello + exec('self.' + nomedicomodoperpannello + '_bottone = QPushButton("' + tmpnome[2] + '")') # creo il tasto per lanciare il pannello + exec('self.' + nomedicomodoperpannello + '_bottone.clicked.connect(lambda: os.system("/runtime/bin/lef ' + devslu.items()[indice][1].name() +' &"))') #creo comando apri pannello + exec('loslu.addWidget(self.' + nomedicomodoperpannello + '_bottone, ' + str(indice+1) + ', 0, 1, 1)') #schiaffo l'elemento grafico nel layout + exec('self.' + nomedicomodoperpannello + '_stato = QLineEdit("")') # creo il il campo per scrivere lo stato + exec('loslu.addWidget(self.' + nomedicomodoperpannello + '_stato, ' + str(indice+1) + ', 1, 1, 1)') #schiaffo l'elemento grafico nel layout + exec('self.' + nomedicomodoperpannello + '_percentuale = QLineEdit("%")') # creo il il campo per scrivere % + exec('loslu.addWidget(self.' + nomedicomodoperpannello + '_percentuale, ' + str(indice+1) + ', 2, 1, 1)') #schiaffo l'elemento grafico nel layout + self.riquadrodislu.setLayout(loslu) + loglobale = QGridLayout() + #loglobale.addWidget(self.riquadrodiselezione, 0, 0, 1, 2) + loglobale.addWidget(self.riquadrodipil, 1, 0, 1, 1) + loglobale.addWidget(self.riquadrodilhl, 2, 0, 1, 1) + loglobale.addWidget(self.riquadrodisl, 1, 1, 3, 1) + loglobale.addWidget(self.riquadrodislu, 3, 0, 1, 1) + self.setLayout(loglobale) + #self.setMaximumWidth(750) + self.setWindowTitle("LASER FEEDBACKs") + self.show() + self.timer = QBasicTimer() + self.timer.start(2000, self) + + def timerEvent(self, event): + self.update() + pass + + #/runtime/bin/ftfmaster sl/feedback/rtltf_osc.02 -title Elite1_INPUT_pointing_Feedback_(rtltf_osc.02) --laser + + def __del__(self): + self.timer.stop() + pass + + def update(self): + #print('pil: ' + str(len(devpil)) + ', lhl: ' + str(len(devlh)) + ', sl: ' + str(len(devsl)) + ', slu: ' + str(len(devslu))) + chiavipil = devpil.keys() + for indice in range(len(chiavipil)): + if str(devpil[chiavipil[indice]]).split('(')[0] == 'MIMOFB': + percentuale = round(devpil[chiavipil[indice]].ActuatorMaxPercentage, 0) + exec('self.' + devpil.items()[indice][1].name().split('/')[2].replace('.', '') + '_percentuale.setText("' + str(percentuale) + ' % ")') + if percentuale <= sogliauno: + exec('self.' + devpil.items()[indice][1].name().split('/')[2].replace('.', '') + '_percentuale.setStyleSheet("background-color: #00ff00")') + elif percentuale > sogliauno and percentuale < sogliadue: + exec('self.' + devpil.items()[indice][1].name().split('/')[2].replace('.', '') + '_percentuale.setStyleSheet("background-color: #ffff00")') + elif percentuale >= sogliadue: + exec('self.' + devpil.items()[indice][1].name().split('/')[2].replace('.', '') + '_percentuale.setStyleSheet("background-color: #ff0000")') + elif str(devpil[chiavipil[indice]]).split('(')[0] == 'RTLTF': + percentuale = round(max(devpil[chiavipil[indice]].CorHorMax, devpil[chiavipil[indice]].CorVerMax), 0) + exec('self.' + devpil.items()[indice][1].name().split('/')[2].replace('.', '') + '_percentuale.setText("' + str(percentuale) + ' % ")') + if percentuale <= sogliauno: + exec('self.' + devpil.items()[indice][1].name().split('/')[2].replace('.', '') + '_percentuale.setStyleSheet("background-color: #00ff00")') + elif percentuale > sogliauno and percentuale < sogliadue: + exec('self.' + devpil.items()[indice][1].name().split('/')[2].replace('.', '') + '_percentuale.setStyleSheet("background-color: #ffff00")') + elif percentuale >= sogliadue: + exec('self.' + devpil.items()[indice][1].name().split('/')[2].replace('.', '') + '_percentuale.setStyleSheet("background-color: #ff0000")') + stato = str(devpil[chiavipil[indice]].state()) + exec('self.' + devpil.items()[indice][1].name().split('/')[2].replace('.', '') + '_stato.setText("' + stato + '")') + if stato == 'ON' or stato == 'RUNNING': + exec('self.' + devpil.items()[indice][1].name().split('/')[2].replace('.', '') + '_stato.setStyleSheet("background-color: #00ff00")') + elif stato == 'STANDBY' or stato == 'MOVING' or stato == 'WAITING': + exec('self.' + devpil.items()[indice][1].name().split('/')[2].replace('.', '') + '_stato.setStyleSheet("background-color: #ffff00")') + elif stato == 'OFF': + exec('self.' + devpil.items()[indice][1].name().split('/')[2].replace('.', '') + '_stato.setStyleSheet("background-color: #ffffff")') + else: + exec('self.' + devpil.items()[indice][1].name().split('/')[2].replace('.', '') + '_stato.setStyleSheet("background-color: #ff0000")') + + chiavilhl = devlh.keys() + for indice in range(len(chiavilhl)): + if str(devlh[chiavilhl[indice]]).split('(')[0] == 'MIMOFB': + percentuale = round(devlh[chiavilhl[indice]].ActuatorMaxPercentage, 0) + exec('self.' + devlh.items()[indice][1].name().split('/')[2].replace('.', '') + '_percentuale.setText("' + str(percentuale) + ' % ")') + if percentuale <= sogliauno: + exec('self.' + devlh.items()[indice][1].name().split('/')[2].replace('.', '') + '_percentuale.setStyleSheet("background-color: #00ff00")') + elif percentuale > sogliauno and percentuale < sogliadue: + exec('self.' + devlh.items()[indice][1].name().split('/')[2].replace('.', '') + '_percentuale.setStyleSheet("background-color: #ffff00")') + elif percentuale >= sogliadue: + exec('self.' + devlh.items()[indice][1].name().split('/')[2].replace('.', '') + '_percentuale.setStyleSheet("background-color: #ff0000")') + elif str(devlh[chiavilhl[indice]]).split('(')[0] == 'RTLTF': + percentuale = round(max(devlh[chiavilhl[indice]].CorHorMax, devlh[chiavilhl[indice]].CorVerMax), 0) + exec('self.' + devlh.items()[indice][1].name().split('/')[2].replace('.', '') + '_percentuale.setText("' + str(percentuale) + ' % ")') + if percentuale <= sogliauno: + exec('self.' + devlh.items()[indice][1].name().split('/')[2].replace('.', '') + '_percentuale.setStyleSheet("background-color: #00ff00")') + elif percentuale > sogliauno and percentuale < sogliadue: + exec('self.' + devlh.items()[indice][1].name().split('/')[2].replace('.', '') + '_percentuale.setStyleSheet("background-color: #ffff00")') + elif percentuale >= sogliadue: + exec('self.' + devlh.items()[indice][1].name().split('/')[2].replace('.', '') + '_percentuale.setStyleSheet("background-color: #ff0000")') + stato = str(devlh[chiavilhl[indice]].state()) + exec('self.' + devlh.items()[indice][1].name().split('/')[2].replace('.', '') + '_stato.setText("' + stato + '")') + if stato == 'ON' or stato == 'RUNNING': + exec('self.' + devlh.items()[indice][1].name().split('/')[2].replace('.', '') + '_stato.setStyleSheet("background-color: #00ff00")') + elif stato == 'STANDBY' or stato == 'MOVING' or stato == 'WAITING': + exec('self.' + devlh.items()[indice][1].name().split('/')[2].replace('.', '') + '_stato.setStyleSheet("background-color: #ffff00")') + elif stato == 'OFF': + exec('self.' + devlh.items()[indice][1].name().split('/')[2].replace('.', '') + '_stato.setStyleSheet("background-color: #ffffff")') + else: + exec('self.' + devlh.items()[indice][1].name().split('/')[2].replace('.', '') + '_stato.setStyleSheet("background-color: #ff0000")') + + chiavisl = devsl.keys() + for indice in range(len(chiavisl)): + if str(devsl[chiavisl[indice]]).split('(')[0] == 'MIMOFB': + percentuale = round(devsl[chiavisl[indice]].ActuatorMaxPercentage, 0) + exec('self.' + devsl.items()[indice][1].name().split('/')[2].replace('.', '') + '_percentuale.setText("' + str(percentuale) + ' % ")') + if percentuale <= sogliauno: + exec('self.' + devsl.items()[indice][1].name().split('/')[2].replace('.', '') + '_percentuale.setStyleSheet("background-color: #00ff00")') + elif percentuale > sogliauno and percentuale < sogliadue: + exec('self.' + devsl.items()[indice][1].name().split('/')[2].replace('.', '') + '_percentuale.setStyleSheet("background-color: #ffff00")') + elif percentuale >= sogliadue: + exec('self.' + devsl.items()[indice][1].name().split('/')[2].replace('.', '') + '_percentuale.setStyleSheet("background-color: #ff0000")') + elif str(devsl[chiavisl[indice]]).split('(')[0] == 'RTLTF': + percentuale = round(max(devsl[chiavisl[indice]].CorHorMax, devsl[chiavisl[indice]].CorVerMax), 0) + exec('self.' + devsl.items()[indice][1].name().split('/')[2].replace('.', '') + '_percentuale.setText("' + str(percentuale) + ' % ")') + if percentuale <= sogliauno: + exec('self.' + devsl.items()[indice][1].name().split('/')[2].replace('.', '') + '_percentuale.setStyleSheet("background-color: #00ff00")') + elif percentuale > sogliauno and percentuale < sogliadue: + exec('self.' + devsl.items()[indice][1].name().split('/')[2].replace('.', '') + '_percentuale.setStyleSheet("background-color: #ffff00")') + elif percentuale >= sogliadue: + exec('self.' + devsl.items()[indice][1].name().split('/')[2].replace('.', '') + '_percentuale.setStyleSheet("background-color: #ff0000")') + stato = str(devsl[chiavisl[indice]].state()) + exec('self.' + devsl.items()[indice][1].name().split('/')[2].replace('.', '') + '_stato.setText("' + stato + '")') + if stato == 'ON' or stato == 'RUNNING': + exec('self.' + devsl.items()[indice][1].name().split('/')[2].replace('.', '') + '_stato.setStyleSheet("background-color: #00ff00")') + elif stato == 'STANDBY' or stato == 'MOVING' or stato == 'WAITING': + exec('self.' + devsl.items()[indice][1].name().split('/')[2].replace('.', '') + '_stato.setStyleSheet("background-color: #ffff00")') + elif stato == 'OFF': + exec('self.' + devsl.items()[indice][1].name().split('/')[2].replace('.', '') + '_stato.setStyleSheet("background-color: #ffffff")') + else: + exec('self.' + devsl.items()[indice][1].name().split('/')[2].replace('.', '') + '_stato.setStyleSheet("background-color: #ff0000")') +################################## DA QUI + chiavislu = devslu.keys() + for indice in range(len(chiavislu)): + if str(devslu[chiavislu[indice]]).split('(')[0] == 'MIMOFB': + percentuale = round(devslu[chiavislu[indice]].ActuatorMaxPercentage, 0) + exec('self.' + devslu.items()[indice][1].name().split('/')[2].replace('.', '') + '_percentuale.setText("' + str(percentuale) + ' % ")') + if percentuale <= 60: + exec('self.' + devslu.items()[indice][1].name().split('/')[2].replace('.', '') + '_percentuale.setStyleSheet("background-color: #00ff00")') + elif percentuale > 60 and percentuale < 80: + exec('self.' + devslu.items()[indice][1].name().split('/')[2].replace('.', '') + '_percentuale.setStyleSheet("background-color: #ffff00")') + elif percentuale >= 80: + exec('self.' + devslu.items()[indice][1].name().split('/')[2].replace('.', '') + '_percentuale.setStyleSheet("background-color: #ff0000")') + elif str(devslu[chiavislu[indice]]).split('(')[0] == 'RTLTF': + percentuale = round(max(devslu[chiavislu[indice]].CorHorMax, devslu[chiavislu[indice]].CorVerMax), 0) + exec('self.' + devslu.items()[indice][1].name().split('/')[2].replace('.', '') + '_percentuale.setText("' + str(percentuale) + ' % ")') + if percentuale <= 60: + exec('self.' + devslu.items()[indice][1].name().split('/')[2].replace('.', '') + '_percentuale.setStyleSheet("background-color: #00ff00")') + elif percentuale > 60 and percentuale < 80: + exec('self.' + devslu.items()[indice][1].name().split('/')[2].replace('.', '') + '_percentuale.setStyleSheet("background-color: #ffff00")') + elif percentuale >= 80: + exec('self.' + devslu.items()[indice][1].name().split('/')[2].replace('.', '') + '_percentuale.setStyleSheet("background-color: #ff0000")') + stato = str(devslu[chiavislu[indice]].state()) + exec('self.' + devslu.items()[indice][1].name().split('/')[2].replace('.', '') + '_stato.setText("' + stato + '")') + if stato == 'ON' or stato == 'RUNNING': + exec('self.' + devslu.items()[indice][1].name().split('/')[2].replace('.', '') + '_stato.setStyleSheet("background-color: #00ff00")') + elif stato == 'STANDBY' or stato == 'MOVING' or stato == 'WAITING': + exec('self.' + devslu.items()[indice][1].name().split('/')[2].replace('.', '') + '_stato.setStyleSheet("background-color: #ffff00")') + elif stato == 'OFF': + exec('self.' + devslu.items()[indice][1].name().split('/')[2].replace('.', '') + '_stato.setStyleSheet("background-color: #ffffff")') + else: + exec('self.' + devslu.items()[indice][1].name().split('/')[2].replace('.', '') + '_stato.setStyleSheet("background-color: #ff0000")') + +############################ manca hide/show + +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_grande = QFont("Arial", round(dimensione/60.0), -1, False) + font_medio = QFont("Arial", round(dimensione/120.0), -1, False) + font_importante = QFont("Arial", round(dimensione/120.0), 1, True) + font_pannello = QFont("Arial", round(dimensione/140.0), -1, False) + app.setFont(font_pannello) + window = MainWindow() + window.resize(larghezzaaltezza[0]/3, larghezzaaltezza[1]/6) + window.show() + app.exec_() + + +#/runtime/bin/fbdelay pil/feedback/fbdelay_pil.01 -title Legend-MIRA_Delay_Feedback_(fbdelay_pil.01) +#/runtime/bin/lef pil/feedback/lef_ir.01 -title PIL_IR_Enegy_feedback_(lef_ir.01) +#/usr/local/tango-8.1.2.c/bin/atkpanel pil/sequence/seq_check_link_pil.01 +#/runtime/bin/mimofb f/feedback/charge_fb.01 -title "Charge feedback" + +#/runtime/bin/ftfmaster lhl/feedback/rtltf_lhl.01 -title LHL_Pointing_feedback_(rtltf_lhl.01) --laser +#/runtime/bin/ftfmaster lhl/feedback/rtltf_transport_lhl.01 -title LHL_Transport_feedback_(rtltf_transport_lhl.01) --laser + +#/runtime/bin/ftfmaster sl/feedback/rtltf_osc.01 -title Elite2_INPUT_pointing_Feedback_(rtltf_osc.01) +#/runtime/bin/ftfmaster sl/feedback/rtltf_osc.02 -title Elite1_INPUT_pointing_Feedback_(rtltf_osc.02) --laser +#/runtime/bin/ftfmaster sl/feedback/rtltf_elite.01 -title Elite1_pointing_feedback_(rtltf_elite.01) --laser +#/runtime/bin/ftfmaster sl/feedback/rtltf_elite.02 -title Elite2_pointing_feedback_(rtltf_elite.02) --laser +#/runtime/bin/ftfmaster sl/feedback/rtltf_fel01.01 -title FEL01_pointing_feedback_(rtltf_fel01.01) --laser +#/runtime/bin/ftfmaster sl/feedback/rtltf_fel02.01 -title FEL02_pointing_feedback_(rtltf_fel02.01) --laser +#/runtime/bin/ftfmaster sl/feedback/rtltf_th_sl.01 -title THG_T1_pointing_feedback_(rtltf_th_sl.01) --laser +#/runtime/bin/ftfmaster sl/feedback/rtltf_th_single_sl.01 -title THG_T1_single_pointing_feedback_(rtltf_th_single_sl.01) --laser +#/runtime/bin/ftfmaster sl/feedback/rtltf_opa_sl.01 -title OPA1_pointing_feedback_(rtltf_opa_sl.01) --laser +#/runtime/bin/fbdelay sl/feedback/fbdelay_sl.01 -title Elite1_Delay_Feedback_(fbdelay_sl.01) +#/runtime/bin/fbdelay sl/feedback/fbdelay_sl.02 -title Elite2_Timing_Feedback_(fbdelay_sl.02) +#/usr/local/tango-8.1.2.c/bin/atkpanel sl/sequence/seq_recover_rtltf_fel01.01 +#/usr/local/tango-8.1.2.c/bin/atkpanel sl/sequence/seq_recover_rtltf_fel02.01 +#/usr/local/tango-8.1.2.c/bin/atkpanel sl/sequence/seq_check_link_sl.01 +#/usr/local/tango-8.1.2.c/bin/atkpanel sl/sequence/seq_check_opa_fel01.01 +#/usr/local/tango-8.1.2.c/bin/atkpanel sl/sequence/seq_check_opa_fel02.01 +#/usr/local/tango-8.1.2.c/bin/atkpanel sl/sequence/seq_check_recover_rtltf_fel01.01 +#/usr/local/tango-8.1.2.c/bin/atkpanel sl/sequence/seq_check_recover_rtltf_fel02.01 +#/usr/local/tango-8.1.2.c/bin/atkpanel sl/sequence/seq_check_relax_rtltf_fel01.01 +#/usr/local/tango-8.1.2.c/bin/atkpanel sl/sequence/seq_check_relax_rtltf_fel02.01 +#/usr/local/tango-8.1.2.c/bin/atkpanel sl/sequence/seq_check_rtltf_elite.01 +#/usr/local/tango-8.1.2.c/bin/atkpanel sl/sequence/seq_check_rtltf_fel01.01 +#/usr/local/tango-8.1.2.c/bin/atkpanel sl/sequence/seq_check_rtltf_fel02.01 +#/runtime/bin/mimofb sl/feedback/fb_coarse_align_fel01.01 +#/runtime/bin/mimofb sl/feedback/fb_coarse_align_fel01.02 +#/runtime/bin/mimofb sl/feedback/fb_coarse_align_fel02.01 +#/runtime/bin/mimofb sl/feedback/fb_coarse_align_fel02.02 +#/runtime/bin/mimofb sl/feedback/fb_opa_energy_fel01.01 +#/runtime/bin/mimofb sl/feedback/fb_opa_energy_fel02.01 +#/runtime/bin/mimofb sl/feedback/fb_recover_rtltf_fel02.01 -title FEL02_coarse_alignment_tool_(fb_recover_rtltf_fel02.01)/runtime/bin/mimofb +#/runtime/bin/mimofb sl/feedback/fb_recover_rtltf_fel01.01 -title FEL01_coarse_alignment_tool_(fb_recover_rtltf_fel01.01) +#/runtime/bin/mimofb sl/feedback/fb_relax_rtltf_fel01.01 -title Relax FEL01_transverse_feedback_(fb_relax_rtltf_fel01.01) +#/runtime/bin/mimofb sl/feedback/fb_relax_rtltf_fel02.01 -title Relax FEL02_transverse_feedback_(fb_relax_rtltf_fel02.01) +#/runtime/bin/mimofb sl/feedback/fb_thg_energy_fel01.01 +#/runtime/bin/mimofb sl/feedback/fb_thg_energy_fel02.01 + +#/runtime/bin/ftfmaster slu/feedback/rtltf_slr_slu.01 -title ELITE2_for_SLU_traj_feedback_(rtltf_slr_slu.01) --laser +#/runtime/bin/ftfmaster slu/feedback/rtltf_totem_slu.01 -title TOTEM_traj_feedback_(rtltf_totem_slu.01) --laser +#/runtime/bin/ftfmaster slu/feedback/rtltf_ldm_slu.01 -title LDM_slu_feedback_(rtltf_ldm_slu.01) --laser +#/runtime/bin/ftfmaster slu/feedback/rtltf_diproi_slu.01 -title DIPROI_slu_feedback_(rtltf_diproi_slu.01) --laser +#/runtime/bin/ftfmaster slu/feedback/rtltf_timex_slu.01 -title TIMEX_slu_feedback_(rtltf_timex_slu.01) --laser +#/runtime/bin/ftfmaster slu/feedback/rtltf_timer_slu.01 -title TIMER_slu_feedback_(rtltf_timer_slu.01) --laser +#/runtime/bin/ftfmaster srv-tmr-srf:20000/tmr/slu/rtltf_tmr.01 +#/runtime/bin/ftfmaster srv-tmx-srf:20000/timex/slu/rtltf_timex.01 +#/runtime/bin/ftfmaster srv-dpi-srf:20000/diproi/slu/rtltf_diproi.01 +#/runtime/bin/ftfmaster srv-ldm-srf:20000/ldm/feedback/rtltf_ldm.01 +#/runtime/bin/ftfmaster srv-ldm-srf:20000/ldm/feedback/rtltf_ldm.02