Source code for siriushla.as_di_bpms.main

from qtpy.QtCore import Qt
from qtpy.QtWidgets import QHBoxLayout, QVBoxLayout, QPushButton, QLabel
from siriushla import util
from siriushla.widgets import PyDMLedMultiChannel
from siriushla.widgets.windows import create_window_from_widget
from siriushla.as_di_bpms.base import BaseWidget, CustomGroupBox
from siriushla.as_di_bpms.settings import ParamsSettings
from siriushla.as_di_bpms.monit import MonitData
from siriushla.as_di_bpms.trig_acq_config import BPMGENAcquisition, \
    BPMPMAcquisition, PBPMGENAcquisition, PBPMPMAcquisition
from siriushla.si_ap_orbintlk import BPMOrbIntlkDetailWindow


[docs] class BPMMain(BaseWidget): def __init__(self, parent=None, prefix='', bpm=''): super().__init__(parent=parent, prefix=prefix, bpm=bpm) self.setupui()
[docs] def setupui(self): self.layoutv = QVBoxLayout(self) lab = QLabel('<h2>'+self.bpm+'</h2>', self, alignment=Qt.AlignCenter) self.layoutv.addWidget(lab) self.layoutv.addSpacing(30) grpbx = CustomGroupBox('BPM General Status', self) hbl = QHBoxLayout(grpbx) hbl.addSpacing(10) hbl.addStretch() if not self.is_pbpm: chan2vals = {'RFFEasyn.CNCT': 1, 'ClksLocked-Mon': 1} chan2vals = {self.get_pvname(k): v for k, v in chan2vals.items()} led = PyDMLedMultiChannel(self, channels2values=chan2vals) hbl.addWidget(led) hbl.addSpacing(10) hbl.addStretch() pbt = QPushButton('Open Settings') Window = create_window_from_widget( ParamsSettings, title=self.bpm+': Settings') util.connect_window( pbt, Window, parent=grpbx, prefix=self.prefix, bpm=self.bpm) hbl.addWidget(pbt) hbl.addSpacing(10) hbl.addStretch() self.layoutv.addWidget(grpbx) self.layoutv.addSpacing(20) self.layoutv.addStretch() grpbx = CustomGroupBox('Triggered Acquisitions', self) hbl = QHBoxLayout(grpbx) hbl.addSpacing(10) hbl.addStretch() pbt = QPushButton('General') Window = PBPMGENAcquisition if self.is_pbpm else BPMGENAcquisition util.connect_window( pbt, Window, parent=grpbx, prefix=self.prefix, bpm=self.bpm) hbl.addWidget(pbt) hbl.addSpacing(10) hbl.addStretch() pbt = QPushButton('PostMortem') Window = PBPMPMAcquisition if self.is_pbpm else BPMPMAcquisition util.connect_window( pbt, Window, parent=grpbx, prefix=self.prefix, bpm=self.bpm) hbl.addWidget(pbt) hbl.addSpacing(10) hbl.addStretch() self.layoutv.addWidget(grpbx) self.layoutv.addSpacing(20) self.layoutv.addStretch() grpbx = self._create_formlayout_groupbox('Monitoring', ( ('PosX-Mon', 'Position X'), ('PosY-Mon', 'Position Y'), ('PosQ-Mon', 'Position Q'), ('Sum-Mon', 'Sum'))) hbl = QHBoxLayout() hbl.addStretch() pbt = QPushButton('Open Graphics', grpbx) hbl.addWidget(pbt) hbl.addStretch() Window = create_window_from_widget( MonitData, title=self.bpm+': Monit Data') util.connect_window( pbt, Window, parent=grpbx, prefix=self.prefix, bpm=self.bpm) grpbx.layoutf.addRow(hbl) grpbx.layoutf.setSpacing(10) self.layoutv.addWidget(grpbx) self.layoutv.addSpacing(20) self.layoutv.addStretch() if self.bpm.sec not in ['TB', 'BO', 'TS']: grpbx = CustomGroupBox('Orbit Interlock', self) hbl = QHBoxLayout(grpbx) pbt = QPushButton('Open Interlock Settings', grpbx) util.connect_window( pbt, BPMOrbIntlkDetailWindow, parent=grpbx, prefix=self.prefix, device=self.bpm) hbl.addStretch() hbl.addWidget(pbt) hbl.addStretch() self.layoutv.addWidget(grpbx) self.layoutv.addSpacing(20) self.layoutv.addStretch()