import os from PyQt4 import QtGui, QtCore, uic from labels import cm base_dir = os.path.dirname(os.path.realpath(__file__)) class SERWindow(QtGui.QWidget): def __init__(self, main_window, parent=None): QtGui.QWidget.__init__(self, parent) uic.loadUi("%s/ui/ser.ui" % base_dir, self) self.main_window = main_window self.units = self.main_window.units self.addAttribute = lambda dev, attr: self.main_window.addAttribute(dev, attr) self.list_layout = QtGui.QVBoxLayout() self.ContentFrame.setLayout(self.list_layout) self.liberas = {} def addLibera(self, dev): print "[ INFO]: SER: add Libera %s" % dev libera = SERWidget(self.main_window, dev) self.connect(self, QtCore.SIGNAL("update"), libera.update) self.liberas[dev] = libera self.list_layout.addWidget(libera) def update(self, cache): self.emit(QtCore.SIGNAL("update"), cache) def showEvent(self, evt): self.emit(QtCore.SIGNAL("show")) evt.accept() def hideEvent(self, evt): self.emit(QtCore.SIGNAL("hide")) evt.accept() class SERWidget(QtGui.QWidget): def __init__(self, main_window, device, parent=None): QtGui.QWidget.__init__(self, parent) uic.loadUi("%s/ui/serwidget.ui" % base_dir, self) self.main_window = main_window self.units = self.main_window.units self.addAttribute = lambda dev, attr: self.main_window.addAttribute(dev, attr) self.device = device self.IDLabel.setText(device) self.M1IDLabel.setModel(device, "GdxSERM1Id") self.M1OffLabel.setModel(device, "GdxSERM1Output") self.M1OffLabel.setColorMap(cm.SER_OFF) self.M1ManualLabel.setModel(device, "GdxSERM1Output") self.M1ManualLabel.setColorMap(cm.SER_MANUAL) self.M1FOFBLabel.setModel(device, "GdxSERM1Output") self.M1FOFBLabel.setColorMap(cm.SER_FOFB) self.M1FOFBValueLabel.setModel(device, "GdxSERM1FOFB") self.M2IDLabel.setModel(device, "GdxSERM2Id") self.M2OffLabel.setModel(device, "GdxSERM2Output") self.M2OffLabel.setColorMap(cm.SER_OFF) self.M2ManualLabel.setModel(device, "GdxSERM2Output") self.M2ManualLabel.setColorMap(cm.SER_MANUAL) self.M2FOFBLabel.setModel(device, "GdxSERM2Output") self.M2FOFBLabel.setColorMap(cm.SER_FOFB) self.M2FOFBValueLabel.setModel(device, "GdxSERM2FOFB") self.M3IDLabel.setModel(device, "GdxSERM3Id") self.M3OffLabel.setModel(device, "GdxSERM3Output") self.M3OffLabel.setColorMap(cm.SER_OFF) self.M3ManualLabel.setModel(device, "GdxSERM3Output") self.M3ManualLabel.setColorMap(cm.SER_MANUAL) self.M3FOFBLabel.setModel(device, "GdxSERM3Output") self.M3FOFBLabel.setColorMap(cm.SER_FOFB) self.M3FOFBValueLabel.setModel(device, "GdxSERM3FOFB") self.M4IDLabel.setModel(device, "GdxSERM4Id") self.M4OffLabel.setModel(device, "GdxSERM4Output") self.M4OffLabel.setColorMap(cm.SER_OFF) self.M4ManualLabel.setModel(device, "GdxSERM4Output") self.M4ManualLabel.setColorMap(cm.SER_MANUAL) self.M4FOFBLabel.setModel(device, "GdxSERM4Output") self.M4FOFBLabel.setColorMap(cm.SER_FOFB) self.M4FOFBValueLabel.setModel(device, "GdxSERM4FOFB") self.connect(self.M1ManualSpinBox, QtCore.SIGNAL("editingFinished()"), self.setM1) self.connect(self.M2ManualSpinBox, QtCore.SIGNAL("editingFinished()"), self.setM2) self.connect(self.M3ManualSpinBox, QtCore.SIGNAL("editingFinished()"), self.setM3) self.connect(self.M4ManualSpinBox, QtCore.SIGNAL("editingFinished()"), self.setM4) def update(self, cache): self.emit(QtCore.SIGNAL("update"), cache) def setM1(self): self.setMagnet(1, self.M1ManualSpinBox.value()) def setM2(self): self.setMagnet(2, self.M2ManualSpinBox.value()) def setM3(self): self.setMagnet(3, self.M3ManualSpinBox.value()) def setM4(self): self.setMagnet(4, self.M4ManualSpinBox.value()) def setMagnet(self, mid, value): self.main_window.devices[self.device].write_attribute("GdxSERM%dManual" % mid, value)