def _create_scrn_summwidget(self, scrn_device, scrn_idx): """Create and return a screen detail widget.""" cb_scrn = QCheckBox(scrn_device.get_nickname(dev=True), self) self._scrns_sel_bg.addButton(cb_scrn) self._scrns_sel_bg.setId(cb_scrn, scrn_idx) if scrn_idx == self._currScrn: cb_scrn.setChecked(True) cb_scrn.clicked.connect(self._setScrnWidget) cb_scrn.setStyleSheet(""" min-width:6.5em; max-width:6.5em; font-weight:bold;""") led_camenbl = SiriusLedState( self, scrn_device.substitute(prefix=self.prefix, propty='CamEnbl-Sts')) led_camenbl.setStyleSheet("min-width:3.2em; max-width:3.2em;") cb_scrntype = PyDMEnumComboBox( self, scrn_device.substitute(prefix=self.prefix, propty='ScrnType-Sel')) cb_scrntype.setSizePolicy(QSzPlcy.Minimum, QSzPlcy.Fixed) cb_scrntype.setStyleSheet("min-width:4.5em;max-width:4.5em;") lb_scrntype = PyDMLabel( self, scrn_device.substitute(prefix=self.prefix, propty='ScrnType-Sts')) lb_scrntype.setStyleSheet("min-width:4.5em; max-width:4.5em;") lb_scrntype.setAlignment(Qt.AlignCenter) led_scrntype = PyDMLed(self, scrn_device.substitute(prefix=self.prefix, propty='ScrnType-Sts'), color_list=[ PyDMLed.LightGreen, PyDMLed.Red, PyDMLed.Red, PyDMLed.Yellow ]) led_scrntype.shape = 2 led_scrntype.setStyleSheet("""min-width:4.5em; max-width:4.5em;""") wid = QWidget() lay = QGridLayout(wid) lay.setAlignment(Qt.AlignCenter) lay.addWidget(cb_scrn, 1, 1) lay.addWidget(led_camenbl, 1, 2) lay.addWidget(cb_scrntype, 1, 3) lay.addWidget(lb_scrntype, 1, 4) lay.addWidget(led_scrntype, 2, 4) return wid
class APUHardLLDetails(SiriusDialog): """APU Hardware and LowLevel Details Dialog.""" def __init__(self, parent=None, prefix='', device=''): super().__init__(parent) self._prefix = prefix self._device = _PVName(device) self.dev_pref = self._device.substitute(prefix=prefix) self.setObjectName('IDApp') self.setWindowTitle(device + ' Hardware and LowLevel Details') self._setupUi() def _setupUi(self): self._ld_stthw = QLabel('Hardware state', self) self._led_stthw = PyDMLedMultiChannel( self, channels2values={ self.dev_pref.substitute(propty='StateHw-Mon'): { 'value': [0x4C, 0x3C], 'comp': 'in' } }) # in [Op, Ready] self._led_stthw.offColor = PyDMLed.Yellow self._led_stthw.onColor = PyDMLed.LightGreen self._led_stthw.setObjectName('led') self._led_stthw.setStyleSheet('#led{max-width: 1.29em;}') self._led_stthw.setSizePolicy(QSzPlcy.Maximum, QSzPlcy.Preferred) self._lb_stthw = PyDMLabel( self, self.dev_pref.substitute(propty='StateHw-Mon')) self._ld_sttsys = QLabel('System state', self) self._led_sttsys = PyDMLedMultiChannel( self, channels2values={ self.dev_pref.substitute(propty='State-Mon'): { 'value': [1, 4], 'comp': 'in' } }) # in [Op, Standby] self._led_sttsys.offColor = PyDMLed.Yellow self._led_sttsys.onColor = PyDMLed.LightGreen self._led_sttsys.setObjectName('led') self._led_sttsys.setStyleSheet('#led{max-width: 1.29em;}') self._led_sttsys.setSizePolicy(QSzPlcy.Maximum, QSzPlcy.Preferred) self._lb_sttsys = PyDMLabel( self, self.dev_pref.substitute(propty='State-Mon')) self._ld_isopr = QLabel('Is operational', self) self._led_isopr = PyDMLed( self, self.dev_pref.substitute(propty='IsOperational-Mon')) self._led_isopr.offColor = PyDMLed.Red self._led_isopr.onColor = PyDMLed.LightGreen self._led_isopr.setStyleSheet('max-width: 1.29em;') self._led_isopr.setSizePolicy(QSzPlcy.Maximum, QSzPlcy.Preferred) lay_hwsys = QGridLayout(self) lay_hwsys.addWidget( QLabel('<h4>Hardware&&LowLevel</h4>', self, alignment=Qt.AlignCenter), 0, 0, 1, 3) lay_hwsys.addWidget(self._ld_stthw, 2, 0) lay_hwsys.addWidget(self._led_stthw, 2, 1) lay_hwsys.addWidget(self._lb_stthw, 2, 2) lay_hwsys.addWidget(self._ld_sttsys, 3, 0) lay_hwsys.addWidget(self._led_sttsys, 3, 1) lay_hwsys.addWidget(self._lb_sttsys, 3, 2) lay_hwsys.addWidget(self._ld_isopr, 4, 0) lay_hwsys.addWidget(self._led_isopr, 4, 1)