import os from PyQt4 import QtGui, QtCore, uic from labels import cm base_dir = os.path.dirname(os.path.realpath(__file__)) class GroupingWindow(QtGui.QWidget): def __init__(self, main_window, parent=None): QtGui.QWidget.__init__(self, parent) uic.loadUi("%s/ui/grouping.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 = {} self.timeouts = [] self.connect(self.TimeoutSpinBox, QtCore.SIGNAL("editingFinished()"), self.setTimeout) def addLibera(self, dev): print "[ INFO]: grouping: add Libera %s" % dev libera = GroupingWidget(self.main_window, dev) self.connect(self, QtCore.SIGNAL("update"), libera.update) self.liberas[dev] = libera self.list_layout.addWidget(libera) self.addAttribute(dev, "GdxGroupingTimeout") def addGlobal(self, orbit, magnet): print "[ INFO]: grouping: global: orbit %s; magnet %s" % (orbit, magnet) w = GlobalWidget(self.main_window, orbit, magnet) self.connect(self, QtCore.SIGNAL("update"), w.update) self.list_layout.addWidget(w) def update(self, cache): self.emit(QtCore.SIGNAL("update"), cache) self.timeouts = [] for dev in self.liberas.keys(): self.timeouts.append(cache[dev]["GdxGroupingTimeout"]) to_set = set(self.timeouts) common_to = max(to_set, key=self.timeouts.count) self.TimeoutLabel.setText(str(common_to)) if len(to_set) > 1: self.WarningLabel.show() else: self.WarningLabel.hide() def showEvent(self, evt): self.emit(QtCore.SIGNAL("show")) evt.accept() def hideEvent(self, evt): self.emit(QtCore.SIGNAL("hide")) evt.accept() def setTimeout(self): for dev in self.liberas.keys(): self.main_window.devices[dev].write_attribute("GdxGroupingTimeout", self.TimeoutSpinBox.value()) class GroupingWidget(QtGui.QWidget): def __init__(self, main_window, device, parent=None): QtGui.QWidget.__init__(self, parent) uic.loadUi("%s/ui/groupingwidget.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.SFP3StatusLabel.setModel(device, "GdxSFP3Status") self.SFP4StatusLabel.setModel(device, "GdxSFP4Status") self.SFP3LaneUpFlag.setModel(device, "GdxSFP3Status", 0) self.SFP3ChannelUpFlag.setModel(device, "GdxSFP3Status", 1) self.SFP3IPLLFlag.setModel(device, "GdxSFP3Status", 2) self.SFP3EPLLFlag.setModel(device, "GdxSFP3Status", 3) self.SFP3SoftErrorFlag.setModel(device, "GdxSFP3Status", 4) self.SFP3HardErrorFlag.setModel(device, "GdxSFP3Status", 5) self.SFP4LaneUpFlag.setModel(device, "GdxSFP4Status", 0) self.SFP4ChannelUpFlag.setModel(device, "GdxSFP4Status", 1) self.SFP4IPLLFlag.setModel(device, "GdxSFP4Status", 2) self.SFP4EPLLFlag.setModel(device, "GdxSFP4Status", 3) self.SFP4SoftErrorFlag.setModel(device, "GdxSFP4Status", 4) self.SFP4HardErrorFlag.setModel(device, "GdxSFP4Status", 5) self.SFP3SoftErrorFlag.setColorMap(cm.RED_BOOL) self.SFP3HardErrorFlag.setColorMap(cm.RED_BOOL) self.SFP4SoftErrorFlag.setColorMap(cm.RED_BOOL) self.SFP4HardErrorFlag.setColorMap(cm.RED_BOOL) self.connect(self.ClearSFP3Button, QtCore.SIGNAL("clicked()"), lambda: self.clearStatus(3)) self.connect(self.ClearSFP4Button, QtCore.SIGNAL("clicked()"), lambda: self.clearStatus(4)) def update(self, cache): self.emit(QtCore.SIGNAL("update"), cache) def clearStatus(self, sfp): self.main_window.execute_ireg_command(self.device, "GdxSFP%dStatusClear" % sfp) class GlobalWidget(QtGui.QWidget): def __init__(self, main_window, orbit, magnet, parent=None): QtGui.QWidget.__init__(self, parent) uic.loadUi("%s/ui/globalwidget.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.orbit = orbit self.magnet = magnet self.GlobalOrbitIDLabel.setText(orbit) self.GlobalOrbitStateLabel.setModel(orbit, "GdxOrbitStatus") self.GlobalOrbitStateLabel.setColorMap(cm.GREEN_BOOL) self.GlobalMagnetIDLabel.setText(magnet) self.GlobalMagnetStateLabel.setModel(orbit, "GdxMagnetStatus") self.GlobalMagnetStateLabel.setColorMap(cm.GREEN_BOOL) self.connect(self.GlobalOrbitResetButton, QtCore.SIGNAL("clicked()"), self.resetGlobalOrbit) self.connect(self.GlobalMagnetResetButton, QtCore.SIGNAL("clicked()"), self.resetGlobalMagnet) def update(self, cache): self.emit(QtCore.SIGNAL("update"), cache) def resetGlobalOrbit(self): self.main_window.execute_ireg_command(self.orbit, "GdxOrbitReconnect") def resetGlobalMagnet(self): self.main_window.execute_ireg_command(self.magnet, "GdxMagnetReconnect")