コード例 #1
0
 def _connect_buttons(self, widget):
     w = widget.findChild(QPushButton, 'dclink_button')
     if w:
         psname = self._psname[0]
         dclinks = PSSearch.conv_psname_2_dclink(psname)
         if dclinks:
             dclink_type = PSSearch.conv_psname_2_psmodel(dclinks[0])
             if dclink_type != 'REGATRON_DCLink':
                 connect_window(w, PSDetailWindow, self, psname=dclinks)
             else:
                 if len(dclinks) > 1:
                     menu = QMenu(w)
                     for dcl in dclinks:
                         act = QAction(dcl, menu)
                         connect_newprocess(act, [
                             'sirius-hla-as-ps-regatron-individual', '-dev',
                             dcl
                         ],
                                            parent=self,
                                            is_pydm=True)
                         menu.addAction(act)
                     w.setMenu(menu)
                 else:
                     connect_newprocess(w, [
                         'sirius-hla-as-ps-regatron-individual', '-dev',
                         dclinks[0]
                     ],
                                        parent=self,
                                        is_pydm=True)
         else:
             w.setHidden(True)
コード例 #2
0
ファイル: ControlWindow.py プロジェクト: lnls-sirius/hla
 def _connect_buttons(self):
     """Connect buttons in the SummaryWidgets."""
     widgets = self.main_widget.findChildren(SummaryWidget)
     for widget in widgets:
         devname = widget.devname
         bt = widget.get_detail_button()
         connect_window(bt, PUDetailWindow, self, devname=devname)
コード例 #3
0
    def _setup_ui(self):
        self.central_widget = QWidget(self)
        self.central_widget.layout = QHBoxLayout(self.central_widget)
        self.central_widget.setLayout(self.central_widget.layout)
        self.setCentralWidget(self.central_widget)

        self.save_btn = QPushButton('Save', self)
        self.load_btn = QPushButton('Load', self)
        self.save_btn.setObjectName('SaveBtn')
        self.load_btn.setObjectName('LoadBtn')

        self.central_widget.layout.addWidget(self.save_btn)
        self.central_widget.layout.addWidget(self.load_btn)

        self.central_widget.setStyleSheet("""
        #SaveBtn, #LoadBtn {
            background: qlineargradient(x1:0 y1:0, x2:0 y2:1,
                                        stop:0 white, stop:1 lightgrey);
            height: 100%;
            border: 1px solid grey;
            padding: 0 5px 0 5px;
        }
        #SaveBtn:hover, #LoadBtn:hover {
            background: qlineargradient(x1:0 y1:0, x2:0 y2:1,
                                        stop:0 lightgrey, stop:1 white);
        }""")

        connect_window(self.save_btn,
                       ReadAndSaveConfig2ServerWindow,
                       self,
                       client=self._client)
        connect_window(self.load_btn,
                       LoadAndApplyConfig2MachineWindow,
                       self,
                       client=self._client)
コード例 #4
0
ファイル: HLPosAng.py プロジェクト: lnls-sirius/hla
    def _set_correctors_channels(self, corrs):
        self.centralwidget.pushButton_CH1.setText(corrs[0])
        _hlautil.connect_window(
            self.centralwidget.pushButton_CH1, _PSDetailWindow, self,
            psname=corrs[0])
        self.centralwidget.PyDMLabel_KickRBCH1.channel = (
            corrs[0].substitute(prefix=self._prefix, propty='Kick-RB'))

        self.centralwidget.pushButton_CH2.setText(corrs[1])
        if corrs[1].dis == 'PU':
            _hlautil.connect_window(
                self.centralwidget.pushButton_CH2, _PUDetailWindow, self,
                devname=corrs[1])
        else:
            _hlautil.connect_window(
                self.centralwidget.pushButton_CH2, _PSDetailWindow, self,
                psname=corrs[1])
        self.centralwidget.PyDMLabel_KickRBCH2.channel = (
            corrs[1].substitute(prefix=self._prefix, propty='Kick-RB'))

        self.centralwidget.pushButton_CV1.setText(corrs[2])
        _hlautil.connect_window(
            self.centralwidget.pushButton_CV1, _PSDetailWindow, self,
            psname=corrs[2])
        self.centralwidget.PyDMLabel_KickRBCV1.channel = (
            corrs[2].substitute(prefix=self._prefix, propty='Kick-RB'))

        self.centralwidget.pushButton_CV2.setText(corrs[3])
        _hlautil.connect_window(
            self.centralwidget.pushButton_CV2, _PSDetailWindow, self,
            psname=corrs[3])
        self.centralwidget.PyDMLabel_KickRBCV2.channel = (
            corrs[3].substitute(prefix=self._prefix, propty='Kick-RB'))
コード例 #5
0
ファイル: PSTrimWindow.py プロジェクト: lnls-sirius/hla
 def _setup_ui(self):
     self.setWindowTitle(self._devname + ' Trims')
     self.central_widget = QWidget()
     self.central_widget.layout = QVBoxLayout()
     self.central_widget.setLayout(self.central_widget.layout)
     self.setCentralWidget(self.central_widget)
     # Create family SummaryWidget
     self.fam_widget = SummaryWidget(
         name=self._devname, parent=self,
         visible_props=[
             'detail', 'state', 'intlk', 'setpoint', 'monitor',
             'strength_sp', 'strength_mon', 'trim'])
     self.fam_widget.get_trim_button().setVisible(False)
     # Connect family detail window
     fam_button = self.fam_widget.get_detail_button()
     connect_window(fam_button, PSDetailWindow, self, psname=self._devname)
     # Create SITrimFamControlWidget
     device = self._devname.split("-")[-1]
     self.trim_widget = SITrimFamControlWidget(
         trim=device, parent=self,
         orientation=SITrimFamControlWidget.HORIZONTAL)
     # Connect Trim detail buttons
     self._connect_buttons(self.trim_widget)
     # Add to layout
     self.central_widget.layout.addWidget(self.fam_widget)
     self.central_widget.layout.addWidget(self.trim_widget)
コード例 #6
0
    def setupui(self):
        if self.position:
            text = 'Positions'
            names = ('X', 'Y', 'Q', 'SUM')
            colors = ('blue', 'red', 'green', 'black')
        else:
            text = 'Antennas'
            names = ('A', 'B', 'C', 'D')
            colors = ('blue', 'red', 'green', 'magenta')

        vbl = QVBoxLayout(self)

        graph = GraphWave(self,
                          prefix=self.prefix,
                          bpm=self.bpm,
                          data_prefix=self.data_prefix)
        graph.setLabel('left', text='Amplitude', units='a.u.')
        graph.setLabel('bottom', text='Frequency', units='Hz')
        for name, cor in zip(names, colors):
            opts = dict(y_channel=self.get_pvname(name + 'FFTData-RB.AMP'),
                        x_channel=self.get_pvname(name + 'FFTFreq-RB.AVAL'),
                        name=text[:3] + name,
                        color=cor,
                        lineStyle=1,
                        lineWidth=1)  # NOTE: If > 1: very low performance
            graph.addChannel(**opts)
        vbl.addWidget(graph)

        graph = GraphWave(self,
                          prefix=self.prefix,
                          bpm=self.bpm,
                          data_prefix=self.data_prefix)
        graph.setLabel('left', text='Phase', units='rad')
        graph.setLabel('bottom', text='Frequency', units='Hz')
        for name, cor in zip(names, colors):
            opts = dict(y_channel=self.get_pvname(name + 'FFTData-RB.PHA'),
                        x_channel=self.get_pvname(name + 'FFTFreq-RB.AVAL'),
                        name=text[:3] + name,
                        color=cor,
                        lineStyle=1,
                        lineWidth=1)  # NOTE: If > 1: very low performance
            graph.addChannel(**opts)
        vbl.addWidget(graph)

        hbl = QHBoxLayout()
        hbl.addStretch()
        vbl.addItem(hbl)
        pb = QPushButton('Open FFT Config', self)
        hbl.addWidget(pb)
        hbl.addStretch()
        Window = create_window_from_widget(FFTConfig,
                                           title=self.bpm + ': FFT Config')
        util.connect_window(pb,
                            Window,
                            parent=self,
                            prefix=self.prefix,
                            bpm=self.bpm,
                            data_prefix=self.data_prefix,
                            position=self.position)
コード例 #7
0
    def _setupFamiliesLayout(self):
        lay = QGridLayout()

        lb_family = QLabel('<h4>Family</h4>', self, alignment=Qt.AlignCenter)
        lb_family.setStyleSheet('max-height:1.29em;')
        lay.addWidget(lb_family, 0, 1)

        lb_rbdesc = QLabel('<h4>'+self.intstrength+'-RB</h4>', self,
                           alignment=Qt.AlignCenter)
        lb_rbdesc.setStyleSheet('max-height:1.29em;')
        lay.addWidget(lb_rbdesc, 0, 2)

        if self.param == 'tune':
            lb_refdesc = QLabel('<h4>RefKL-Mon</h4>', self,
                                alignment=Qt.AlignCenter)
            lb_refdesc.setStyleSheet('max-height:1.29em;')
            lay.addWidget(lb_refdesc, 0, 3)

        lb_lastddesc = QLabel('<h4>'+self.intstrength_calcdesc+'</h4>', self,
                              alignment=Qt.AlignCenter)
        lb_lastddesc.setStyleSheet('max-height:1.29em;')
        lay.addWidget(lb_lastddesc, 0, 4)

        row = 1
        for fam in self.fams:
            dev_name = _PVName(self.acc+'-Fam:PS-'+fam)
            pref_name = dev_name.substitute(prefix=self.prefix)

            pbt = QPushButton(qta.icon('fa5s.list-ul'), '', self)
            pbt.setObjectName('pbt')
            pbt.setStyleSheet("""
                #pbt{
                    min-width:25px; max-width:25px;
                    min-height:25px; max-height:25px;
                    icon-size:20px;}""")
            _hlautil.connect_window(
                pbt, _PSDetailWindow, parent=self, psname=dev_name)
            lay.addWidget(pbt, row, 0)

            lb_name = QLabel(fam, self, alignment=Qt.AlignCenter)
            lay.addWidget(lb_name, row, 1)

            lb_rb = PyDMLabel(self, pref_name.substitute(
                propty=self.intstrength+'-RB'))
            lay.addWidget(lb_rb, row, 2)

            if self.param == 'tune':
                lb_ref = PyDMLabel(self, self.ioc_prefix.substitute(
                    propty='RefKL'+fam+'-Mon'))
                lay.addWidget(lb_ref, row, 3)

            lb_calc = PyDMLabel(self, self.ioc_prefix.substitute(
                propty=self.intstrength_calcpv.format(fam)))
            lay.addWidget(lb_calc, row, 4)
            row += 1
        return lay
コード例 #8
0
    def get_selection_lists_widget(self, parent):
        """."""
        sel_wid = QWidget(parent)
        sel_lay = QHBoxLayout(sel_wid)

        icon = qta.icon('fa5s.hammer', color=get_appropriate_color(self.acc))
        Window = create_window_from_widget(
            SelectionMatrix, title='Corrs and BPMs selection', icon=icon)
        btn = QPushButton('', sel_wid)
        btn.setObjectName('btn')
        btn.setIcon(qta.icon('fa5s.tasks'))
        btn.setToolTip('Open window to select BPMs and correctors')
        btn.setStyleSheet(
            '#btn{min-width:3.8em; max-width:3.8em;\
            min-height:2em; max-height:2em; icon-size:25px;}')
        connect_window(
            btn, Window, None, device=self.device,
            prefix=self.prefix, acc=self.acc)
        sel_lay.addWidget(btn)

        lay = QVBoxLayout()
        sel_lay.addStretch()
        sel_lay.addLayout(lay)

        hlay = QHBoxLayout()
        lay.addLayout(hlay)
        hlay.addWidget(SiriusEnumComboBox(
            sel_wid, self.devpref.substitute(propty='RespMatMode-Sel')))
        hlay.addWidget(SiriusLabel(
            sel_wid, self.devpref.substitute(propty='RespMatMode-Sts')))

        if self.acc in {'SI', 'BO'}:
            hlay = QHBoxLayout()
            lay.addLayout(hlay)
            pdm_chbx = PyDMCheckbox(
                sel_wid, self.devpref.substitute(propty='RFEnbl-Sel'))
            pdm_chbx.setText('use RF')
            pdm_led = SiriusLedState(
                sel_wid, self.devpref.substitute(propty='RFEnbl-Sts'))
            hlay.addWidget(pdm_chbx)
            hlay.addWidget(pdm_led)

        btn = QPushButton('', sel_wid)
        btn.setToolTip('Visualize RespMat')
        btn.setIcon(qta.icon('mdi.chart-line'))
        btn.setObjectName('btn')
        btn.setStyleSheet('#btn{max-width:40px; icon-size:40px;}')
        connect_newprocess(
            btn, [f'sirius-hla-{self.acc.lower():s}-ap-sofb.py', '--matrix'])
        sel_lay.addWidget(btn)

        return sel_wid
コード例 #9
0
    def _setupUi(self):
        vlay = QVBoxLayout(self)
        vlay.setSpacing(15)
        self.setLayout(vlay)

        lab = QLabel('<h2>Sirius DCCT List</h2>', alignment=Qt.AlignCenter)
        vlay.addWidget(lab)

        for dcct in self.dcct_list:
            pbt = QPushButton(dcct)
            pbt.setStyleSheet("""min-width:10em;""")
            util.connect_window(pbt,
                                DCCTMain,
                                parent=None,
                                prefix=self.prefix,
                                device=dcct)
            vlay.addWidget(pbt)
コード例 #10
0
ファイル: base.py プロジェクト: lnls-sirius/hla
    def _create_corr_summwidget(self, corr):
        """Create and return a corrector detail widget."""
        wid = QWidget()
        wid.setSizePolicy(QSzPlcy.Preferred, QSzPlcy.Maximum)
        lay = QGridLayout(wid)
        lay.setContentsMargins(0, 0, 0, 0)
        lay.setAlignment(Qt.AlignCenter)

        propty_sp = 'Current-SP' if corr.sec == 'LI' else 'Kick-SP'
        propty_mon = propty_sp.replace('SP', 'Mon')

        led = SiriusLedState(
            self, corr.substitute(prefix=self.prefix, propty='PwrState-Sts'))
        led.setStyleSheet("max-width:1.29em;")
        lay.addWidget(led, 1, 1)

        nickname = corr.get_nickname(sec=corr.sec == 'LI', dev=True)
        pb = QPushButton(nickname, self)
        if corr.dis == 'PU':
            util.connect_window(pb, PUDetailWindow, parent=self, devname=corr)
        else:
            util.connect_window(pb, PSDetailWindow, parent=self, psname=corr)
        pb.setStyleSheet("""
            min-width:6em; max-width:6em; min-height:1.29em;""")
        lay.addWidget(pb, 1, 2)

        sp_kick = PyDMSpinboxScrollbar(
            self, corr.substitute(prefix=self.prefix, propty=propty_sp))
        sp_kick.setStyleSheet("QDoubleSpinBox{min-width:4em; max-width:4em; }"
                              "QScrollBar{max-width:4em;}")
        sp_kick.spinbox.precisionFromPV = False
        sp_kick.spinbox.precision = 1
        sp_kick.scrollbar.limitsFromPV = True
        lay.addWidget(sp_kick, 1, 3, 2, 1)

        lb_kick = PyDMLabel(
            self, corr.substitute(prefix=self.prefix, propty=propty_mon))
        lb_kick.setStyleSheet("""
            min-width:5em; max-width:5em; min-height:1.29em;""")
        lb_kick.showUnits = True
        lb_kick.precisionFromPV = False
        lb_kick.precision = 1
        lb_kick.setAlignment(Qt.AlignCenter)
        lay.addWidget(lb_kick, 1, 4)
        return wid
コード例 #11
0
ファイル: PSControlWindow.py プロジェクト: lnls-sirius/hla
    def _connect_buttons(self, widget):
        for w in widget.get_summary_widgets():
            detail_bt = w.get_detail_button()
            psname = detail_bt.text()
            if not psname:
                psname = detail_bt.toolTip()
            psname = _PVName(psname)
            if PSSearch.conv_psname_2_psmodel(psname) == 'REGATRON_DCLink':
                connect_newprocess(
                    w,
                    ['sirius-hla-as-ps-regatron-individual', '-dev', psname],
                    parent=self,
                    is_pydm=True)
            else:
                connect_window(detail_bt, PSDetailWindow, self, psname=psname)

            trim_bt = w.get_trim_button()
            if trim_bt is not None:
                connect_window(trim_bt, PSTrimWindow, self, device=psname)
コード例 #12
0
 def _fill_dclink_container(self):
     self._dclink_is_filled = True
     self._dclink_container.layout().addWidget(
         SummaryHeader(self.dclinks[0], self.visible_props, self))
     for dclink_name in self.dclinks:
         w = SummaryWidget(dclink_name, self.visible_props, self)
         if self.dclinks_type == 'REGATRON_DCLink':
             connect_newprocess(w.detail_bt, [
                 'sirius-hla-as-ps-regatron-individual', '-dev', dclink_name
             ],
                                parent=self,
                                is_pydm=True)
         else:
             connect_window(w.detail_bt,
                            PSDetailWindow,
                            self,
                            psname=dclink_name)
         self._dclink_container.layout().addWidget(w)
         self.dclink_widgets.append(w)
コード例 #13
0
    def add_buttons_for_images(self):
        """."""
        grpbx = QGroupBox('Other Graphs', self)
        gdl = QGridLayout(grpbx)
        gdl.setSpacing(2)
        self.hbl_nameh.addWidget(grpbx)

        btn = QPushButton('Corrs', grpbx)
        gdl.addWidget(btn, 0, 0)
        Window = create_window_from_widget(CorrectorsWidget,
                                           title='Correctors')
        _util.connect_window(btn,
                             Window,
                             self,
                             device=self.device,
                             prefix=self.prefix,
                             acc=self.acc)

        if self.isring:
            btn = QPushButton('MTurn Orb', grpbx)
            gdl.addWidget(btn, 0, 1)
            Window = create_window_from_widget(MultiTurnWidget,
                                               title='Multi Turn')
            _util.connect_window(btn,
                                 Window,
                                 self,
                                 sigs=self.updater[0].raw_ref_sig,
                                 device=self.device,
                                 prefix=self.prefix,
                                 csorb=self._csorb)

            btn = QPushButton('MTurn Sum', grpbx)
            gdl.addWidget(btn, 0, 2)
            Window = create_window_from_widget(MultiTurnSumWidget,
                                               title='Multi Turn Sum')
            _util.connect_window(btn,
                                 Window,
                                 self,
                                 device=self.device,
                                 prefix=self.prefix,
                                 csorb=self._csorb)

        btn = QPushButton('SingPass Sum', grpbx)
        gdl.addWidget(btn, 0, 3)
        Window = create_window_from_widget(SinglePassSumWidget,
                                           title='Single Pass Sum')
        _util.connect_window(btn,
                             Window,
                             self,
                             device=self.device,
                             prefix=self.prefix,
                             csorb=self._csorb)
コード例 #14
0
ファイル: scrn_details.py プロジェクト: lnls-sirius/hla
    def _setupUi(self):
        label = QLabel('<h3>'+self.scrn_prefix+' Settings</h3>', self,
                       alignment=Qt.AlignCenter)

        gbox_general = QGroupBox('Low Level Devices Prefixes', self)
        gbox_general.setLayout(self._setupGeneralInfoLayout())

        gbox_cam = QGroupBox('Camera Settings', self)
        gbox_cam.setLayout(self._setupCamSettingsLayout())

        bt_cal = QPushButton('Screen Calibration', self)
        util.connect_window(bt_cal, _ScrnCalibrationSettings,
                            parent=self, prefix=self.prefix,
                            device=self.device)

        lay = QVBoxLayout()
        lay.setSpacing(15)
        lay.addWidget(label)
        lay.addWidget(gbox_general)
        lay.addWidget(gbox_cam)
        lay.addWidget(bt_cal, alignment=Qt.AlignRight)
        self.centralwidget.setLayout(lay)
コード例 #15
0
    def get_singular_values_widget(self, parent):
        """."""
        svs_wid = QWidget(parent)
        svs_lay = QGridLayout(svs_wid)

        wid = self.create_pair(svs_wid, 'MinSingValue')
        lbl = QLabel('Min. SV: ')
        svs_lay.addWidget(lbl, 0, 0)
        svs_lay.addWidget(wid, 0, 1)

        wid = self.create_pair(svs_wid, 'TikhonovRegConst')
        lbl = QLabel('Tikhonov: ')
        svs_lay.addWidget(lbl, 1, 0)
        svs_lay.addWidget(wid, 1, 1)

        lbl = QLabel('Nr Sing Vals')
        lbls = SiriusLabel(
            svs_wid, self.devpref.substitute(propty='NrSingValues-Mon'))
        btn = QPushButton('', svs_wid)
        btn.setToolTip('Check Singular Values')
        btn.setIcon(qta.icon('mdi.chart-line'))
        btn.setObjectName('btn')
        btn.setStyleSheet('#btn{max-width:30px; icon-size:30px;}')
        hbl = QHBoxLayout()
        hbl.addWidget(btn)
        hbl.addStretch()
        hbl.addWidget(lbl)
        hbl.addWidget(lbls)
        svs_lay.addLayout(hbl, 2, 0, 1, 2)

        Window = create_window_from_widget(
            SingularValues, title='Check Singular Values')
        connect_window(
            btn, Window, svs_wid, device=self.device, prefix=self.prefix)

        return svs_wid
コード例 #16
0
ファイル: HLPosAng.py プロジェクト: lnls-sirius/hla
    def _setupUi(self):
        cwt = QWidget(self)
        self.setCentralWidget(cwt)

        # label
        lab = QLabel(
            '<h3>'+self._tl+' Position and Angle Correction</h3>', cwt)
        lab.setStyleSheet("""
            min-height:1.55em; max-height: 1.55em;
            qproperty-alignment: 'AlignVCenter | AlignRight';
            background-color: qlineargradient(spread:pad, x1:1, y1:0.0227273,
                              x2:0, y2:0, stop:0 rgba(173, 190, 207, 255),
                              stop:1 rgba(213, 213, 213, 255));""")

        # apply button
        self.pb_updateref = PyDMPushButton(
            self, 'Update Reference', pressValue=1,
            init_channel=self.posang_prefix.substitute(
                propty='SetNewRefKick-Cmd'))
        self.pb_updateref.setStyleSheet(
            'min-height: 2.4em; max-height: 2.4em;')
        self.led_needrefupdt = SiriusLedAlert(
            self, self.posang_prefix.substitute(propty='NeedRefUpdate-Mon'))
        self.ch_needrefupdt = SiriusConnectionSignal(
            self.posang_prefix.substitute(propty='NeedRefUpdate-Mon'))
        self.ch_needrefupdt.new_value_signal[int].connect(
            self._handle_need_update_ref_led)
        self.led_needrefupdt.setStyleSheet(
            'QLed{min-width: 1.29em; max-width: 1.29em;}')
        box_ref = QHBoxLayout()
        box_ref.setContentsMargins(0, 0, 0, 0)
        box_ref.addWidget(self.pb_updateref)
        box_ref.addWidget(self.led_needrefupdt)

        # delta setters
        self.hgbox = QGroupBox('Horizontal', self)
        self.hgbox.setLayout(self._setupDeltaControlLayout('x'))

        self.vgbox = QGroupBox('Vertical', self)
        self.vgbox.setLayout(self._setupDeltaControlLayout('y'))

        # correctors
        self.corrgbox = QGroupBox('Correctors', self)
        self.corrgbox.setLayout(self._setupCorrectorsLayout())

        # status
        self.statgbox = QGroupBox('Correction Status', self)
        self.statgbox.setLayout(self._setupStatusLayout())

        glay = QGridLayout(cwt)
        glay.setHorizontalSpacing(12)
        glay.setVerticalSpacing(12)
        glay.addWidget(lab, 0, 0, 1, 2)
        glay.addLayout(box_ref, 1, 0, 1, 2)
        glay.addWidget(self.hgbox, 2, 0)
        glay.addWidget(self.vgbox, 2, 1)
        glay.addWidget(self.corrgbox, 3, 0, 1, 2)
        glay.addWidget(self.statgbox, 4, 0, 1, 2)

        # menu
        act_settings = self.menuBar().addAction('Settings')
        _hlautil.connect_window(act_settings, CorrParamsDetailWindow,
                                parent=self, tl=self._tl, prefix=self._prefix)

        # stlesheet
        self.setStyleSheet("""
            PyDMSpinbox{
                min-width: 5em; max-width: 5em;
            }
            PyDMLabel, PyDMSpinboxScrollbar{
                min-width: 6em; max-width: 6em;
            }
            QPushButton{
                min-width: 8em;
            }
            QLabel{
                min-height: 1.35em;
                qproperty-alignment: AlignCenter;
            }
        """)
コード例 #17
0
    def setupui(self):
        vbl = QVBoxLayout(self)
        lab = QLabel('<h2>' + self.bpm + ' Settings</h2>')
        lab.setAlignment(Qt.AlignCenter)
        vbl.addWidget(lab)
        vbl.addSpacing(10)

        hbl = QHBoxLayout()
        hbl.setSpacing(15)
        hbl.addStretch()
        grpbx = CustomGroupBox('Status', self)
        gdl = QGridLayout(grpbx)
        props = (('asyn.CNCT', 'Connected'), ('asyn.ENBL', 'Enabled'),
                 ('RFFEasyn.CNCT', 'RFFE Connected'),
                 ('RFFEasyn.ENBL', 'RFFE Enabled'), ('ADCAD9510PllStatus-Mon',
                                                     'Clock Synched'))
        for i, prop in enumerate(props):
            led = SiriusLedState(grpbx, init_channel=self.get_pvname(prop[0]))
            led.setOffColor(led.Red)
            lab = QLabel(prop[1], grpbx)
            gdl.addWidget(led, i, 0)
            gdl.addWidget(lab, i, 1)
        hbl.addWidget(grpbx)
        hbl.addStretch()

        grpbx = CustomGroupBox('Advanced Settings', self)
        vbl2 = QVBoxLayout(grpbx)
        vbl2.setSpacing(10)
        pbt = QPushButton('Software')
        Window = create_window_from_widget(AdvancedSettings,
                                           title=self.bpm +
                                           ': Advanced Settings')
        util.connect_window(pbt,
                            Window,
                            parent=grpbx,
                            prefix=self.prefix,
                            bpm=self.bpm)
        vbl2.addWidget(pbt)
        pbt = QPushButton('Hardware')
        Window = create_window_from_widget(HardwareSettings,
                                           title=self.bpm +
                                           ': Hardware Settings')
        util.connect_window(pbt,
                            Window,
                            parent=grpbx,
                            prefix=self.prefix,
                            bpm=self.bpm)
        vbl2.addWidget(pbt)
        hbl.addWidget(grpbx)
        hbl.addStretch()
        vbl.addItem(hbl)
        vbl.addSpacing(20)
        vbl.addStretch()

        grpbx = self._create_formlayout_groupbox(
            'Offset Parameters', (('PosQOffset-SP', 'Offset PosQ'),
                                  ('PosXOffset-SP', 'Offset PosX'),
                                  ('PosYOffset-SP', 'Offset PosY')))
        vbl.addWidget(grpbx)
        vbl.addSpacing(20)
        vbl.addStretch()
        grpbx = self._create_formlayout_groupbox('Gain Parameters',
                                                 (('PosKq-SP', 'Gain PosQ'),
                                                  ('PosKsum-SP', 'Gain Sum'),
                                                  ('PosKx-SP', 'Gain PosX'),
                                                  ('PosKy-SP', 'Gain PosY')))
        vbl.addWidget(grpbx)
        vbl.addSpacing(20)
        vbl.addStretch()
        grpbx = self._create_formlayout_groupbox(
            'Informations', (('INFOHarmonicNumber-SP', 'Harmonic Number'),
                             ('INFOFOFBRate-SP', 'FOFB Rate'),
                             ('INFOMONITRate-SP', 'Monitor Rate'),
                             ('INFOTBTRate-SP', 'TbT Rate'),
                             ('RFFEAtt-SP', 'RFFE Attenuation')))
        vbl.addWidget(grpbx)
        vbl.addSpacing(20)
        vbl.addStretch()
コード例 #18
0
    def setupui(self):
        gdl = QGridLayout(self)
        lab = QLabel('<h2>' + self.bpm + ' Advanced Settings</h2>')
        lab.setAlignment(Qt.AlignCenter)
        gdl.addWidget(lab, 0, 0, 1, 2)

        grpbx = self._create_formlayout_groupbox(
            'Monit', (('MonitEnable-Sel', 'Enable'),
                      ('MONITUpdtTime-SP', 'Update Time')))
        gdl.addWidget(grpbx, 1, 0)

        grpbx = self._create_formlayout_groupbox(
            'Switching',
            (('SwMode-Sel', 'Mode'), ('SwTagEn-Sel', 'Tag Enable'),
             ('SwDataMaskEn-Sel', 'Data Mask Enable'),
             ('SwDataMaskSamples-SP', 'Data Mask Samples'),
             ('SwDly-SP', 'Delay'), ('SwDivClk-SP', 'Division Clock')))
        gdl.addWidget(grpbx, 2, 0)

        grpbx = self._create_formlayout_groupbox(
            'RFFE',
            (('RFFEAtt-SP', 'Attenuation'),
             ('RFFEPidSpAC-SP', 'Pid Setpoint AC'),
             ('RFFEPidSpBD-SP', 'Pid Setpoint BD'),
             ('RFFEHeaterAC-SP', 'Heater AC'),
             ('RFFEHeaterBD-SP', 'Heater BD'), ('RFFEPidACKp-SP', 'Pid AC Kp'),
             ('RFFEPidBDKp-SP', 'Pid BD Kp'), ('RFFEPidACTi-SP', 'Pid AC Ti'),
             ('RFFEPidBDTi-SP', 'Pid BD Ti'), ('RFFEPidACTd-SP', 'Pid AC Td'),
             ('RFFEPidBDTd-SP', 'Pid BD Td')))
        gdl.addWidget(grpbx, 1, 1, 2, 1)

        grpbx = CustomGroupBox('Triggers Configuration', self)
        hbl = QHBoxLayout(grpbx)
        hbl.setSpacing(10)
        hbl.addStretch()
        pbt = QPushButton('Physical Triggers')
        Window = create_window_from_widget(PhysicalTriggers,
                                           title=self.bpm +
                                           ': Physical Triggers')
        util.connect_window(pbt,
                            Window,
                            parent=grpbx,
                            prefix=self.prefix,
                            bpm=self.bpm)
        hbl.addWidget(pbt)
        hbl.addStretch()
        pbt = QPushButton('ACQ Logical Triggers')
        Window = create_window_from_widget(LogicalTriggers,
                                           title=self.bpm +
                                           ': ACQ Logical Triggers')
        util.connect_window(pbt,
                            Window,
                            parent=grpbx,
                            prefix=self.prefix,
                            bpm=self.bpm,
                            trig_tp='')
        hbl.addWidget(pbt)
        hbl.addStretch()
        pbt = QPushButton('Post-Mortem Logical Triggers')
        Window = create_window_from_widget(LogicalTriggers,
                                           title=self.bpm +
                                           ': Post-Mortem Logical Triggers')
        util.connect_window(pbt,
                            Window,
                            parent=grpbx,
                            prefix=self.prefix,
                            bpm=self.bpm,
                            trig_tp='_PM')
        hbl.addWidget(pbt)
        hbl.addStretch()
        gdl.addWidget(grpbx, 3, 0, 1, 2)
コード例 #19
0
    def _setupCurrentSettingsWidget(self):
        self._ld_storedebeam = QLabel('Stored EBeam?', self)
        self._ld_storedebeam.setAlignment(Qt.AlignRight | Qt.AlignTrailing
                                          | Qt.AlignVCenter)
        self._led_storedebeam = SiriusLedState(
            self, self.devname.substitute(propty='StoredEBeam-Mon'))

        self._ld_dcctfault = QLabel('DCCT Fault Check:', self)
        self._ld_dcctfault.setAlignment(Qt.AlignRight | Qt.AlignTrailing
                                        | Qt.AlignVCenter)
        self._bt_dcctfault = PyDMStateButton(
            self, self.devname.substitute(propty='DCCTFltCheck-Sel'))
        self._bt_dcctfault.shape = PyDMStateButton.Rounded
        self._led_dcctfault = SiriusLedState(
            self, self.devname.substitute(propty='DCCTFltCheck-Sts'))

        self._ld_seldcct = QLabel('Select DCCT:', self)
        self._ld_seldcct.setAlignment(Qt.AlignRight | Qt.AlignTrailing
                                      | Qt.AlignVCenter)
        self._cb_seldcct = PyDMEnumComboBox(
            self, self.devname.substitute(propty='DCCT-Sel'))
        self._lb_seldcct = PyDMLabel(
            self, self.devname.substitute(propty='DCCT-Sts'))
        self._lb_seldcct.setAlignment(Qt.AlignCenter)
        self._lb_seldcct.precision = 0

        self._led_dcct13c4 = SiriusLedAlert(
            self,
            _PVName('SI-13C4:DI-DCCT:ReliableMeas-Mon').substitute(
                prefix=self.prefix))
        self._lb_dcct13c4 = QLabel('DCCT 13C4', self)
        self._lb_dcct13c4.setAlignment(Qt.AlignRight | Qt.AlignTrailing
                                       | Qt.AlignVCenter)
        self._pb_13c4_detail = QPushButton(self)
        self._pb_13c4_detail.setObjectName('DCCT13C4_dtl')
        self._pb_13c4_detail.setStyleSheet(
            "#DCCT13C4_dtl{min-width:25px; max-width:25px; icon-size:20px;}")
        self._pb_13c4_detail.setIcon(qta.icon('fa5s.ellipsis-h'))
        connect_window(self._pb_13c4_detail,
                       DCCTMain,
                       self,
                       prefix=self.prefix,
                       device='SI-13C4:DI-DCCT')
        hlay_dcct13c4 = QHBoxLayout()
        hlay_dcct13c4.addItem(
            QSpacerItem(1, 1, QSzPlcy.Expanding, QSzPlcy.Minimum))
        hlay_dcct13c4.addWidget(self._led_dcct13c4)
        hlay_dcct13c4.addWidget(self._lb_dcct13c4)
        hlay_dcct13c4.addItem(
            QSpacerItem(1, 1, QSzPlcy.Expanding, QSzPlcy.Minimum))
        hlay_dcct13c4.addWidget(self._pb_13c4_detail)
        hlay_dcct13c4.addItem(
            QSpacerItem(1, 1, QSzPlcy.Expanding, QSzPlcy.Minimum))

        self._led_dcct14c4 = SiriusLedAlert(
            self,
            _PVName('SI-14C4:DI-DCCT:ReliableMeas-Mon').substitute(
                prefix=self.prefix))
        self._lb_dcct14c4 = QLabel('DCCT 14C4', self)
        self._lb_dcct14c4.setAlignment(Qt.AlignRight | Qt.AlignTrailing
                                       | Qt.AlignVCenter)
        self._pb_14c4_detail = QPushButton(self)
        self._pb_14c4_detail.setObjectName('DCCT14C4_dtl')
        self._pb_14c4_detail.setStyleSheet(
            "#DCCT14C4_dtl{min-width:25px; max-width:25px; icon-size:20px;}")
        self._pb_14c4_detail.setIcon(qta.icon('fa5s.ellipsis-h'))
        connect_window(self._pb_14c4_detail,
                       DCCTMain,
                       self,
                       prefix=self.prefix,
                       device='SI-14C4:DI-DCCT')
        hlay_dcct14c4 = QHBoxLayout()
        hlay_dcct14c4.addItem(
            QSpacerItem(1, 1, QSzPlcy.Expanding, QSzPlcy.Minimum))
        hlay_dcct14c4.addWidget(self._led_dcct14c4)
        hlay_dcct14c4.addWidget(self._lb_dcct14c4)
        hlay_dcct14c4.addItem(
            QSpacerItem(1, 1, QSzPlcy.Expanding, QSzPlcy.Minimum))
        hlay_dcct14c4.addWidget(self._pb_14c4_detail)
        hlay_dcct14c4.addItem(
            QSpacerItem(1, 1, QSzPlcy.Expanding, QSzPlcy.Minimum))

        gbox = QGroupBox('Current Settings and Status', self)
        lay = QGridLayout(gbox)
        lay.addWidget(self._ld_storedebeam, 0, 0)
        lay.addWidget(self._led_storedebeam, 0, 1)
        lay.addWidget(self._ld_dcctfault, 1, 0)
        lay.addWidget(self._bt_dcctfault, 1, 1)
        lay.addWidget(self._led_dcctfault, 1, 2)
        lay.addWidget(self._ld_seldcct, 2, 0)
        lay.addWidget(self._cb_seldcct, 2, 1)
        lay.addWidget(self._lb_seldcct, 2, 2)
        lay.addItem(QSpacerItem(1, 1, QSzPlcy.Expanding, QSzPlcy.Minimum), 3,
                    0)
        lay.addLayout(hlay_dcct13c4, 4, 0, 1, 3)
        lay.addLayout(hlay_dcct14c4, 5, 0, 1, 3)
        lay.setColumnStretch(0, 2)
        lay.setColumnStretch(1, 1)
        lay.setColumnStretch(2, 1)
        return gbox
コード例 #20
0
ファイル: main.py プロジェクト: lnls-sirius/hla
    def _settingsLayout(self):
        label_CamEnbl = QLabel('Enable: ', self)
        hbox_CamEnbl = _create_propty_layout(parent=self,
                                             prefix=self.scrn_prefix,
                                             propty='CamEnbl',
                                             propty_type='enbldisabl')

        label_CamAcqPeriod = QLabel('Acquire\nPeriod [s]:', self)
        hbox_CamAcqPeriod = _create_propty_layout(parent=self,
                                                  prefix=self.scrn_prefix,
                                                  propty='CamAcqPeriod',
                                                  propty_type='sprb',
                                                  width=5.0)

        label_CamExposureTime = QLabel('Exposure\nTime [us]:', self)
        hbox_CamExposureTime = _create_propty_layout(parent=self,
                                                     prefix=self.scrn_prefix,
                                                     propty='CamExposureTime',
                                                     propty_type='sprb',
                                                     width=5.0)

        label_CamGain = QLabel('Gain[dB]:', self)
        hbox_CamGain = _create_propty_layout(parent=self,
                                             prefix=self.scrn_prefix,
                                             propty='CamGain',
                                             width=5.0,
                                             propty_type='sprb')

        label_AutoGain = QLabel('Auto Gain: ', self)
        self.pb_autogain = PyDMPushButton(
            label='',
            icon=qta.icon('mdi.auto-fix'),
            parent=self,
            pressValue=1,
            init_channel=self.scrn_prefix.substitute(propty='CamAutoGain-Cmd'))
        self.pb_autogain.setObjectName('autog')
        self.pb_autogain.setStyleSheet(
            "#autog{min-width:25px; max-width:25px; icon-size:20px;}")

        cam_prefix = SiriusPVName(self.scrn_prefix).substitute(dev='ScrnCam')
        label_Reset = QLabel('Reset: ', self)
        self.pb_dtl = PyDMPushButton(
            label='',
            icon=qta.icon('fa5s.sync'),
            parent=self,
            pressValue=1,
            init_channel=cam_prefix.substitute(propty='Rst-Cmd'))
        self.pb_dtl.setObjectName('reset')
        self.pb_dtl.setStyleSheet(
            "#reset{min-width:25px; max-width:25px; icon-size:20px;}")

        self.pb_details = QPushButton(qta.icon('fa5s.ellipsis-h'), '', self)
        self.pb_details.setToolTip('More settings')
        self.pb_details.setObjectName('detail')
        self.pb_details.setStyleSheet(
            "#detail{min-width:25px; max-width:25px; icon-size:20px;}")
        self.pb_details.setSizePolicy(QSzPlcy.Expanding, QSzPlcy.Preferred)
        util.connect_window(self.pb_details,
                            _ScrnSettingsDetails,
                            parent=self,
                            prefix=self.prefix,
                            device=self.device)

        hbox_aux = QHBoxLayout()
        hbox_aux.addWidget(self.pb_dtl, alignment=Qt.AlignLeft)
        hbox_aux.addWidget(self.pb_details, alignment=Qt.AlignRight)

        lay = QFormLayout()
        lay.setFormAlignment(Qt.AlignCenter)
        lay.addRow(label_CamEnbl, hbox_CamEnbl)
        lay.addRow(label_CamAcqPeriod, hbox_CamAcqPeriod)
        lay.addRow(label_CamExposureTime, hbox_CamExposureTime)
        lay.addRow(label_CamGain, hbox_CamGain)
        lay.addRow(label_AutoGain, self.pb_autogain)
        lay.addRow(label_Reset, hbox_aux)
        return lay
コード例 #21
0
ファイル: multiturn_data.py プロジェクト: lnls-sirius/hla
    def setupui(self):
        vbl = QVBoxLayout(self)
        self.stack = QStackedWidget(self)
        vbl.addWidget(self.stack)

        rbA = QRadioButton('Antennas', self)
        rbP = QRadioButton('Positions', self)
        rbA.toggled.connect(_part(self.toggle_button, 0))
        rbP.toggled.connect(_part(self.toggle_button, 1))
        self.radio_buttons.append(rbA)
        self.radio_buttons.append(rbP)
        rbA.setChecked(True)
        hbl = QHBoxLayout()
        hbl.addStretch()
        hbl.addWidget(rbA)
        hbl.addStretch()
        hbl.addWidget(rbP)
        hbl.addStretch()
        vbl.addItem(hbl)

        # ##### Antennas Widget ######
        stack1 = QWidget(self.stack)
        self.stack.addWidget(stack1)
        vbl = QVBoxLayout(stack1)

        graph = self.create_graph(stack1, False)
        vbl.addWidget(graph)
        stats = self.create_statistics(stack1, False)
        vbl.addWidget(stats)

        if not self.data_prefix.startswith('PM'):
            hbl2 = QHBoxLayout()
            hbl2.addStretch()
            vbl.addItem(hbl2)
            pb = QPushButton('Open FFT Data', stack1)
            hbl2.addWidget(pb)
            hbl2.addStretch()
            Window = create_window_from_widget(
                FFTData, title=self.bpm+': FFT Data')
            util.connect_window(
                pb, Window, parent=stack1, prefix=self.prefix,
                bpm=self.bpm, data_prefix=self.data_prefix, position=False)

        # ##### Position Widget ######
        stack2 = QWidget(self.stack)
        self.stack.addWidget(stack2)
        vbl = QVBoxLayout(stack2)

        graph = self.create_graph(stack2, True)
        vbl.addWidget(graph)
        stats = self.create_statistics(stack2, True)
        vbl.addWidget(stats)

        if not self.data_prefix.startswith('PM'):
            hbl2 = QHBoxLayout()
            hbl2.addStretch()
            vbl.addItem(hbl2)
            pb = QPushButton('Open FFT Data', stack2)
            hbl2.addWidget(pb)
            hbl2.addStretch()
            Window = create_window_from_widget(
                FFTData, title=self.bpm+': FFT Data')
            util.connect_window(
                pb, Window, parent=stack1, prefix=self.prefix,
                bpm=self.bpm, data_prefix=self.data_prefix, position=True)

        self.setStyleSheet("""
            #MultiTurnDataGraph{
                min-width:48em;
                min-height:24em;
            }
            QLabel{
                min-width:6em; max-width:6em;
                min-height:1.5em; max-height:1.5em;
            }""")
コード例 #22
0
ファイル: main.py プロジェクト: lnls-sirius/hla
    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()
        chan2vals = {
            'asyn.CNCT': 1,
            'asyn.ENBL': 1,
            'RFFEasyn.CNCT': 1,
            'RFFEasyn.ENBL': 1,
            'ADCAD9510PllStatus-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('MultiBunch/SinglePass')
        Window = create_window_from_widget(
            TriggeredAcquisition,
            title=self.bpm + ': MultiBunch/SinglePass Acquisitions')
        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 = create_window_from_widget(PostMortemAcquisition,
                                           title=self.bpm +
                                           ': PostMortem Acquisitions')
        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 'SI' in self.bpm:
            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()
コード例 #23
0
ファイル: settings.py プロジェクト: lnls-sirius/hla
    def _setupUi(self):
        lay = QVBoxLayout()
        lay.addWidget(
            QLabel('<h3>Settings</h3>',
                   self,
                   alignment=Qt.AlignHCenter | Qt.AlignBottom))
        lay.setStretch(0, 1)

        # Measure
        l_reliablemeas = QLabel('Reliability: ')
        self.led_ReliableMeas = SiriusLedAlert(
            self, self.dcct_prefix.substitute(propty='ReliableMeas-Mon'))

        l_curr = QLabel('Current [mA]: ', self, alignment=Qt.AlignRight)
        self.label_current = PyDMLabel(
            self, self.dcct_prefix.substitute(propty='Current-Mon'))
        self.led_StoredEBeam = SiriusLedState(
            self, self.dcct_prefix.substitute(propty='StoredEBeam-Mon'))
        hlay_current = QHBoxLayout()
        hlay_current.addWidget(self.label_current)
        hlay_current.addWidget(self.led_StoredEBeam)

        l_enbl = QLabel('Enable:', self)
        self.pydmstatebutton_Enbl = PyDMStateButton(
            self, self.dcct_prefix.substitute(propty='Enbl-Sel'))
        self.pydmstatebutton_Enbl.shape = 1
        self.led_Enbl = SiriusLedState(
            self, self.dcct_prefix.substitute(propty='Enbl-Sts'))
        hlay_enbl = QHBoxLayout()
        hlay_enbl.addWidget(self.pydmstatebutton_Enbl)
        hlay_enbl.addWidget(self.led_Enbl)

        l_meastrig = QLabel('Trigger Source:', self)
        self.pydmenumcombobox_MeasTrg = PyDMEnumComboBox(
            self, self.dcct_prefix.substitute(propty='MeasTrg-Sel'))
        self.pydmlabel_MeasTrg = PyDMLabel(
            self, self.dcct_prefix.substitute(propty='MeasTrg-Sts'))
        hlay_meastrig = QHBoxLayout()
        hlay_meastrig.addWidget(self.pydmenumcombobox_MeasTrg)
        hlay_meastrig.addWidget(self.pydmlabel_MeasTrg)

        if 'SI' in self.device:
            l_range = QLabel('Range: ', self)
            self.pydmenumcombobox_Range = PyDMEnumComboBox(
                self, self.dcct_prefix.substitute(propty='Range-Sel'))
            self.pydmlabel_Range = PyDMLabel(
                self, self.dcct_prefix.substitute(propty='Range-Sts'))
            hlay_range = QHBoxLayout()
            hlay_range.addWidget(self.pydmenumcombobox_Range)
            hlay_range.addWidget(self.pydmlabel_Range)
            hlay_range.setContentsMargins(0, 0, 0, 0)

        l_measmode = QLabel('Mode: ', self)
        self.pydmenumcombobox_MeasMode = PyDMEnumComboBox(
            self, self.dcct_prefix.substitute(propty='MeasMode-Sel'))
        self.pydmlabel_MeasMode = PyDMLabel(
            self, self.dcct_prefix.substitute(propty='MeasMode-Sts'))
        hlay_measmode = QHBoxLayout()
        hlay_measmode.addWidget(self.pydmenumcombobox_MeasMode)
        hlay_measmode.addWidget(self.pydmlabel_MeasMode)
        hlay_measmode.setContentsMargins(0, 0, 0, 0)

        glay_mode = QGridLayout()
        self.normalmode_widget = self._setupMeasSettingsWidget('Normal')
        self.fastmode_widget = self._setupMeasSettingsWidget('Fast')
        glay_mode.addWidget(self.normalmode_widget, 0, 0)
        glay_mode.addWidget(self.fastmode_widget, 0, 0)
        glay_mode.setContentsMargins(0, 0, 0, 0)
        self.mode_channel = SiriusConnectionSignal(
            self.dcct_prefix.substitute(propty='MeasMode-Sel'))
        self.mode_channel.new_value_signal.connect(self._showMeasModeSettings)

        # Details
        self.pb_details = QPushButton(qta.icon('fa5s.ellipsis-h'), '', self)
        self.pb_details.setToolTip('Open details')
        self.pb_details.setObjectName('detail')
        self.pb_details.setStyleSheet(
            "#detail{min-width:25px; max-width:25px; icon-size:20px;}")
        detail_window = create_window_from_widget(DCCTSettingsDetails,
                                                  title=self.device +
                                                  ' Settings Details')
        _hlautil.connect_window(self.pb_details,
                                detail_window,
                                self,
                                prefix=self.prefix,
                                device=self.device)

        gbox_gen = QGroupBox('Measure')
        glay_gen = QGridLayout(gbox_gen)
        glay_gen.setAlignment(Qt.AlignVCenter)
        glay_gen.addWidget(l_curr, 0, 0)
        glay_gen.addLayout(hlay_current, 0, 1)
        glay_gen.addWidget(l_reliablemeas, 1, 0)
        glay_gen.addWidget(self.led_ReliableMeas, 1, 1, alignment=Qt.AlignLeft)
        glay_gen.addWidget(l_enbl, 2, 0)
        glay_gen.addLayout(hlay_enbl, 2, 1)
        glay_gen.addWidget(l_meastrig, 3, 0)
        glay_gen.addLayout(hlay_meastrig, 3, 1)
        if 'SI' in self.device:
            glay_gen.addWidget(l_range, 4, 0)
            glay_gen.addLayout(hlay_range, 4, 1)
        glay_gen.addWidget(l_measmode, 5, 0)
        glay_gen.addLayout(hlay_measmode, 5, 1)
        glay_gen.addLayout(glay_mode, 6, 0, 1, 2)
        glay_gen.addWidget(self.pb_details,
                           7,
                           0,
                           1,
                           2,
                           alignment=Qt.AlignRight)
        gbox_gen.setStyleSheet("""
            .QLabel{
                qproperty-alignment: 'AlignVCenter | AlignRight';
                min-width: 6em;}
            PyDMLed{
                min-width: 6em;}""")
        lay.addWidget(gbox_gen)
        lay.setStretch(1, 7)

        # Trigger
        self.trigger_widget = QGroupBox('Trigger')
        hbl = QHBoxLayout(self.trigger_widget)
        hbl.addWidget(
            HLTriggerSimple(self.trigger_widget,
                            device=self.device.substitute(dis='TI'),
                            prefix=self.prefix))
        lay.addWidget(self.trigger_widget)
        lay.setStretch(2, 3)

        self.setLayout(lay)
        self.setStyleSheet("""
            QSpinBox, QComboBox, QPushButton,
            PyDMSpinbox, PyDMEnumComboBox, PyDMLabel{
                min-width:6em; max-width:6em;}
            .QLabel{max-height:1.5em;}""")
コード例 #24
0
ファイル: PSTrimWindow.py プロジェクト: lnls-sirius/hla
 def _connect_buttons(self, widget):
     for widget in widget.get_summary_widgets():
         psname = widget.devname
         detail_bt = widget.get_detail_button()
         connect_window(detail_bt, PSDetailWindow, self, psname=psname)
コード例 #25
0
ファイル: apu_control.py プロジェクト: lnls-sirius/hla
    def _statusWidget(self):
        self._ld_alarm = QLabel('Alarms', self, alignment=Qt.AlignCenter)
        self._led_alarm = SiriusLedAlert(
            self, self.dev_pref.substitute(propty='Alarm-Mon'))
        self._pb_alarmdetail = QPushButton(qta.icon('fa5s.ellipsis-h'), '',
                                           self)
        self._pb_alarmdetail.setObjectName('dtl')
        self._pb_alarmdetail.setStyleSheet(
            "#dtl{min-width:25px; max-width:25px; icon-size:20px;}")
        connect_window(self._pb_alarmdetail,
                       APUAlarmDetails,
                       self,
                       prefix=self._prefix,
                       device=self._device)

        self._ld_intlk = QLabel('Interlocks', self, alignment=Qt.AlignCenter)
        self._led_intlkresume = PyDMLedMultiChannel(
            self, {
                self.dev_pref.substitute(propty='IntlkInStop-Mon'): 0,
                self.dev_pref.substitute(propty='IntlkInEOpnGap-Mon'): 0,
                self.dev_pref.substitute(propty='IntlkOutPwrEnbld-Mon'): 1
            })
        self._pb_intlkdetail = QPushButton(qta.icon('fa5s.ellipsis-h'), '',
                                           self)
        self._pb_intlkdetail.setObjectName('dtl')
        self._pb_intlkdetail.setStyleSheet(
            "#dtl{min-width:25px; max-width:25px; icon-size:20px;}")
        connect_window(self._pb_intlkdetail,
                       APUInterlockDetails,
                       self,
                       prefix=self._prefix,
                       device=self._device)

        self._ld_hwsys = QLabel('Hardware\n&LowLevel',
                                self,
                                alignment=Qt.AlignCenter)
        self._led_hwsysresume = PyDMLedMultiChannel(
            self, {
                self.dev_pref.substitute(propty='StateHw-Mon'): {
                    'value': [0x4C, 0x3C],
                    'comp': 'in'
                },
                self.dev_pref.substitute(propty='State-Mon'): {
                    'value': [1, 4],
                    'comp': 'in'
                },
                self.dev_pref.substitute(propty='IsOperational-Mon'): 1
            })
        self._led_hwsysresume.offColor = PyDMLed.Yellow
        self._led_hwsysresume.onColor = PyDMLed.LightGreen
        self._pb_hwsysdetail = QPushButton(qta.icon('fa5s.ellipsis-h'), '',
                                           self)
        self._pb_hwsysdetail.setObjectName('dtl')
        self._pb_hwsysdetail.setStyleSheet(
            "#dtl{min-width:25px; max-width:25px; icon-size:20px;}")
        connect_window(self._pb_hwsysdetail,
                       APUHardLLDetails,
                       self,
                       prefix=self._prefix,
                       device=self._device)

        self._ld_reset = QLabel('Reset', self, alignment=Qt.AlignCenter)
        self._pb_reset = PyDMPushButton(self,
                                        label='',
                                        icon=qta.icon('fa5s.sync'))
        self._pb_reset.setToolTip('Reset active alarms.')
        self._pb_reset.channel = self.dev_pref.substitute(propty='DevCtrl-Cmd')
        self._pb_reset.pressValue = 2  # Reset
        self._pb_reset.setObjectName('Reset')
        self._pb_reset.setStyleSheet(
            '#Reset{min-width:30px; max-width:30px; icon-size:25px;}')

        gbox_alrmintlk = QGroupBox('Status')
        lay_alrmintlk = QGridLayout(gbox_alrmintlk)
        lay_alrmintlk.addWidget(self._pb_alarmdetail, 0, 0)
        lay_alrmintlk.addWidget(self._ld_alarm, 0, 1)
        lay_alrmintlk.addWidget(self._led_alarm, 0, 2)
        lay_alrmintlk.addWidget(self._pb_intlkdetail, 1, 0)
        lay_alrmintlk.addWidget(self._ld_intlk, 1, 1)
        lay_alrmintlk.addWidget(self._led_intlkresume, 1, 2)
        lay_alrmintlk.addWidget(self._pb_hwsysdetail, 2, 0)
        lay_alrmintlk.addWidget(self._ld_hwsys, 2, 1)
        lay_alrmintlk.addWidget(self._led_hwsysresume, 2, 2)
        lay_alrmintlk.addWidget(self._ld_reset, 3, 1)
        lay_alrmintlk.addWidget(self._pb_reset, 3, 2)
        return gbox_alrmintlk
コード例 #26
0
    def _setupUi(self):
        # status
        label_status = QLabel('Status: ',
                              self,
                              alignment=Qt.AlignRight | Qt.AlignVCenter)
        channels2values = {
            self.device.substitute(propty='ForceComplete-Mon'): 1,
            self.device.substitute(propty='NegativeDoneMov-Mon'): 1,
            self.device.substitute(propty='PositiveDoneMov-Mon'): 1
        }
        self.multiled_status = PyDMLedMultiChannel(self, channels2values)
        self.multiled_status.setStyleSheet('max-width: 1.29em;')

        self.pb_details = QPushButton(qta.icon('fa5s.ellipsis-h'), '', self)
        self.pb_details.setToolTip('Open details')
        self.pb_details.setObjectName('detail')
        self.pb_details.setStyleSheet(
            "#detail{min-width:25px; max-width:25px; icon-size:20px;}")
        util.connect_window(self.pb_details,
                            _DiffCtrlDetails,
                            parent=self,
                            prefix=self.prefix,
                            device=self.device)

        self.lb_descCtrl1 = QLabel('',
                                   self,
                                   alignment=Qt.AlignRight | Qt.AlignVCenter)
        self.sb_Ctrl1 = PyDMSpinbox(self)
        self.sb_Ctrl1.showStepExponent = False
        self.lb_Ctrl1 = PyDMLabel(self)
        self.lb_descCtrl2 = QLabel('',
                                   self,
                                   alignment=Qt.AlignRight | Qt.AlignVCenter)
        self.sb_Ctrl2 = PyDMSpinbox(self)
        self.sb_Ctrl2.showStepExponent = False
        self.lb_Ctrl2 = PyDMLabel(self)

        self.pb_open = PyDMPushButton(
            parent=self,
            label='Open',
            pressValue=1,
            init_channel=self.device.substitute(propty='Home-Cmd'))

        tmp_file = _substitute_in_file(
            _os.path.abspath(_os.path.dirname(__file__)) + '/ui_as_ap_dev' +
            self.orientation.lower() + 'mon.ui', {'PREFIX': self.prefix})
        self.dev_widget = loadUi(tmp_file)
        self.dev_widget.setObjectName('dev')
        self.dev_widget_scrarea = QScrollArea()
        self.dev_widget_scrarea.setObjectName('scrarea')
        self.dev_widget_scrarea.setStyleSheet(
            '#scrarea{background-color: transparent; max-width: 15em;}'
            '#dev{background-color:transparent;}')
        self.dev_widget_scrarea.setWidget(self.dev_widget)

        lay = QGridLayout(self)
        lay.setAlignment(Qt.AlignTop)
        lay.addWidget(label_status, 0, 0)
        lay.addWidget(self.multiled_status, 0, 1)
        lay.addWidget(self.pb_details, 0, 2, alignment=Qt.AlignRight)
        lay.addWidget(self.lb_descCtrl1, 1, 0)
        lay.addWidget(self.sb_Ctrl1, 1, 1)
        lay.addWidget(self.lb_Ctrl1, 1, 2)
        lay.addWidget(self.lb_descCtrl2, 2, 0)
        lay.addWidget(self.sb_Ctrl2, 2, 1)
        lay.addWidget(self.lb_Ctrl2, 2, 2)
        lay.addWidget(self.pb_open, 3, 1, 1, 2)
        lay.addWidget(self.dev_widget_scrarea, 0, 3, 4, 1)
コード例 #27
0
ファイル: orbit_acquisition.py プロジェクト: lnls-sirius/hla
    def _get_acq_commom_params_grpbx(self):
        grp_bx = QGroupBox('Common Parameters', self)
        fbl = QFormLayout(grp_bx)

        lbl = QLabel('Non-linear Corr.', grp_bx, alignment=Qt.AlignCenter)
        wid = self.create_pair_butled(grp_bx, 'PolyCalibration')
        fbl.addRow(lbl, wid)
        self._set_detailed([lbl, wid])

        lbl = QLabel('Channel Rate', grp_bx, alignment=Qt.AlignCenter)
        wid = self.create_pair_sel(grp_bx, 'TrigAcqChan')
        fbl.addRow(lbl, wid)

        lbl = QLabel('Trigger Type', grp_bx, alignment=Qt.AlignCenter)
        wid = self.create_pair_sel(grp_bx, 'TrigAcqTrigger')
        fbl.addRow(lbl, wid)
        self._set_detailed([lbl, wid])

        lbl = QLabel('Repeat', grp_bx, alignment=Qt.AlignCenter)
        wid = self.create_pair_butled(grp_bx, 'TrigAcqRepeat')
        fbl.addRow(lbl, wid)
        self._set_detailed([lbl, wid])

        if self.isring:
            lbl = QLabel('Nr of Shots', grp_bx, alignment=Qt.AlignCenter)
            wid = self.create_pair(grp_bx, 'TrigNrShots')
            fbl.addRow(lbl, wid)
            self._set_detailed([lbl, wid])

        lbl = QLabel('SamplesPre', grp_bx, alignment=Qt.AlignCenter)
        wid = self.create_pair(grp_bx, 'TrigNrSamplesPre')
        fbl.addRow(lbl, wid)
        lbl = QLabel('SamplesPost', grp_bx, alignment=Qt.AlignCenter)
        wid = self.create_pair(grp_bx, 'TrigNrSamplesPost')
        fbl.addRow(lbl, wid)

        lbl = QLabel('Acquisition:', grp_bx, alignment=Qt.AlignCenter)
        strt = PyDMPushButton(
            grp_bx,
            label='',
            init_channel=self.devpref.substitute(propty='TrigAcqCtrl-Sel'),
            pressValue=self._csorb.TrigAcqCtrl.Start)
        strt.setToolTip('Start Acquisition')
        strt.setIcon(qta.icon('fa5s.play'))
        strt.setObjectName('strt')
        strt.setStyleSheet(
            '#strt{min-width:25px; max-width:25px; icon-size:20px;}')
        stop = PyDMPushButton(
            grp_bx,
            label='',
            init_channel=self.devpref.substitute(propty='TrigAcqCtrl-Sel'),
            pressValue=self._csorb.TrigAcqCtrl.Stop)
        stop.setToolTip('Stop Acquisition')
        stop.setIcon(qta.icon('fa5s.stop'))
        stop.setObjectName('stop')
        stop.setStyleSheet(
            '#stop{min-width:25px; max-width:25px; icon-size:20px;}')
        abrt = PyDMPushButton(
            grp_bx,
            label='',
            init_channel=self.devpref.substitute(propty='TrigAcqCtrl-Sel'),
            pressValue=self._csorb.TrigAcqCtrl.Abort)
        abrt.setToolTip('Abort Acquisition')
        abrt.setIcon(qta.icon('fa5s.ban'))
        abrt.setObjectName('abrt')
        abrt.setStyleSheet(
            '#abrt{min-width:25px; max-width:25px; icon-size:20px;}')

        pdmlbl = PyDMLabel(grp_bx,
                           self.devpref.substitute(propty='TrigAcqCtrl-Sts'))
        pdmlbl.setObjectName('pdmlbl')
        pdmlbl.setStyleSheet('#pdmlbl{min-width:6em; max-width:6em;}')
        pdmlbl.setAlignment(Qt.AlignCenter)
        hbl = QHBoxLayout()
        fbl.addRow(hbl)
        hbl.addStretch()
        hbl.addWidget(lbl)
        hbl.addWidget(strt)
        hbl.addWidget(stop)
        hbl.addWidget(abrt)
        hbl.addWidget(pdmlbl)

        conf = PyDMPushButton(
            grp_bx,
            pressValue=1,
            init_channel=self.devpref.substitute(propty='TrigAcqConfig-Cmd'))
        conf.setToolTip('Resend Configurations')
        conf.setIcon(qta.icon('fa5s.sync'))
        conf.setObjectName('conf')
        conf.setStyleSheet(
            '#conf{min-width:25px; max-width:25px; icon-size:20px;}')

        sts = QPushButton('', grp_bx)
        sts.setIcon(qta.icon('fa5s.list-ul'))
        sts.setToolTip('Open Detailed Status View')
        sts.setObjectName('sts')
        sts.setStyleSheet(
            '#sts{min-width:25px; max-width:25px; icon-size:20px;}')
        Window = create_window_from_widget(StatusWidget, title='Orbit Status')
        connect_window(sts,
                       Window,
                       grp_bx,
                       device=self.device,
                       prefix=self.prefix,
                       acc=self.acc,
                       is_orb=True)

        pdm_led = SiriusLedAlert(
            grp_bx, self.devpref.substitute(propty='OrbStatus-Mon'))

        lbl = QLabel('Status:', grp_bx)
        hbl = QHBoxLayout()
        hbl.setSpacing(9)
        hbl.addStretch()
        hbl.addWidget(lbl)
        hbl.addWidget(pdm_led)
        hbl.addWidget(sts)
        hbl.addWidget(conf)
        fbl.addRow(hbl)

        return grp_bx
コード例 #28
0
    def _acquisitionWidget(self):
        label_CamEnbl = QLabel('Acquire Enable Status:', self)
        hbox_CamEnbl = create_propty_layout(parent=self,
                                            prefix=self.cam_prefix,
                                            propty='Enbl',
                                            propty_type='enbldisabl')

        label_FrameCnt = QLabel('Frame Count:', self)
        hbox_FrameCnt = create_propty_layout(parent=self,
                                             prefix=self.cam_prefix,
                                             propty='FrameCnt',
                                             propty_type='mon')

        label_AcqMode = QLabel('Acquire Mode:', self)
        hbox_AcqMode = create_propty_layout(parent=self,
                                            prefix=self.cam_prefix,
                                            propty='AcqMode',
                                            propty_type='enum')

        label_AcqPeriod = QLabel('Acquire Period [s]:', self)
        hbox_AcqPeriod = create_propty_layout(parent=self,
                                              prefix=self.cam_prefix,
                                              propty='AcqPeriod',
                                              propty_type='sprb')

        label_AcqPeriodLowLim = QLabel('Acquire Period Low Limit [s]:', self)
        hbox_AcqPeriodLowLim = create_propty_layout(parent=self,
                                                    prefix=self.cam_prefix,
                                                    propty='AcqPeriodLowLim',
                                                    propty_type='sprb')

        label_ExpMode = QLabel('Exposure Mode:', self)
        hbox_ExpMode = create_propty_layout(parent=self,
                                            prefix=self.cam_prefix,
                                            propty='ExposureMode',
                                            propty_type='enum')

        label_ExpTime = QLabel('Exposure Time [us]:', self)
        hbox_ExpTime = create_propty_layout(parent=self,
                                            prefix=self.cam_prefix,
                                            propty='ExposureTime',
                                            propty_type='sprb')

        label_Gain = QLabel('Gain [dB]:', self)
        hbox_Gain = create_propty_layout(parent=self,
                                         prefix=self.cam_prefix,
                                         propty='Gain',
                                         propty_type='sprb',
                                         cmd={
                                             'label': '',
                                             'pressValue': 1,
                                             'width': '25',
                                             'height': '25',
                                             'icon': qta.icon('mdi.auto-fix'),
                                             'icon-size': '20',
                                             'toolTip': 'Auto Gain',
                                             'name': 'AutoGain'
                                         })

        label_TransformType = QLabel('Transform Type:', self)
        hbox_TransformType = create_propty_layout(parent=self,
                                                  prefix=self.cam_prefix,
                                                  propty='TransformType',
                                                  propty_type='enum')

        label_BlackLevel = QLabel('Black Level [gray va]:', self)
        hbox_BlackLevel = create_propty_layout(parent=self,
                                               prefix=self.cam_prefix,
                                               propty='BlackLevel',
                                               propty_type='sprb')

        label_DebouncerPeriod = QLabel('Debouncer Period [us]:', self)
        hbox_DebouncerPeriod = create_propty_layout(parent=self,
                                                    prefix=self.cam_prefix,
                                                    propty='DebouncerPeriod',
                                                    propty_type='sprb')

        self.pb_advanced = QPushButton('Advanced', self)
        my_window = create_window_from_widget(
            BaslerCamAcqAdvSettings,
            is_main=False,
            title='Basler Camera Advanced Acquisition Settings')
        util.connect_window(self.pb_advanced,
                            my_window,
                            parent=self,
                            device=self.device,
                            prefix=self.prefix)
        hbox_adv = QHBoxLayout()
        hbox_adv.addWidget(self.pb_advanced, alignment=Qt.AlignRight)

        wid = QWidget()
        flay = QFormLayout(wid)
        flay.setLabelAlignment(Qt.AlignRight)
        flay.setFormAlignment(Qt.AlignHCenter)
        flay.addRow(label_CamEnbl, hbox_CamEnbl)
        flay.addRow(label_FrameCnt, hbox_FrameCnt)
        flay.addRow(label_AcqMode, hbox_AcqMode)
        flay.addRow(label_AcqPeriod, hbox_AcqPeriod)
        flay.addRow(label_AcqPeriodLowLim, hbox_AcqPeriodLowLim)
        flay.addRow(label_ExpMode, hbox_ExpMode)
        flay.addRow(label_ExpTime, hbox_ExpTime)
        flay.addRow(label_Gain, hbox_Gain)
        flay.addRow(label_BlackLevel, hbox_BlackLevel)
        flay.addRow(label_DebouncerPeriod, hbox_DebouncerPeriod)
        flay.addRow(label_TransformType, hbox_TransformType)
        flay.addRow(hbox_adv)
        return wid
コード例 #29
0
ファイル: HLPosAng.py プロジェクト: lnls-sirius/hla
    def _setupCorrectorsLayout(self):
        lay = QGridLayout()
        lay.setVerticalSpacing(9)
        lay.setHorizontalSpacing(9)

        label_kicksp = QLabel('<h4>Kick-SP</h4>', self)
        label_kickrb = QLabel('<h4>Kick-RB</h4>', self)
        label_kickref = QLabel('<h4>RefKick-Mon</h4>', self)
        lay.addWidget(label_kicksp, 0, 2)
        lay.addWidget(label_kickrb, 0, 3)
        lay.addWidget(label_kickref, 0, 4)

        idx = 1
        for corrid, corr in self.corrs.items():
            pbt = QPushButton(qta.icon('fa5s.list-ul'), '', self)
            pbt.setObjectName('pbt')
            pbt.setStyleSheet("""
                #pbt{
                    min-width:25px; max-width:25px;
                    min-height:25px; max-height:25px;
                    icon-size:20px;}
                """)
            if corr.dis == 'PU':
                _hlautil.connect_window(
                    pbt, _PUDetailWindow, self, devname=corr)
            else:
                _hlautil.connect_window(
                    pbt, _PSDetailWindow, self, psname=corr)
            lb_name = QLabel(corr, self)
            le_sp = PyDMSpinboxScrollbar(
                self, corr.substitute(prefix=self._prefix, propty='Kick-SP'))
            le_sp.spinbox.setAlignment(Qt.AlignCenter)
            le_sp.scrollbar.limitsFromPV = True
            lb_rb = PyDMLabel(self, corr.substitute(
                prefix=self._prefix, propty='Kick-RB'))
            lb_ref = PyDMLabel(self, self.posang_prefix.substitute(
                propty='RefKick'+corrid+'-Mon'))

            lay.addWidget(pbt, idx, 0, alignment=Qt.AlignTop)
            lay.addWidget(
                lb_name, idx, 1, alignment=Qt.AlignLeft | Qt.AlignTop)
            lay.addWidget(le_sp, idx, 2, alignment=Qt.AlignTop)
            lay.addWidget(lb_rb, idx, 3, alignment=Qt.AlignTop)
            lay.addWidget(lb_ref, idx, 4, alignment=Qt.AlignTop)
            idx += 1

        if self._tl == 'TB':
            pref = self._prefix + ('-' if self._prefix else '')
            lay.addItem(QSpacerItem(0, 8, QSzPlcy.Ignored, QSzPlcy.Fixed))

            label_voltsp = QLabel('<h4>Amplitude-SP</h4>', self)
            label_voltrb = QLabel('<h4>Amplitude-RB</h4>', self)
            lay.addWidget(label_voltsp, idx+2, 2)
            lay.addWidget(label_voltrb, idx+2, 3)

            lb_kly2_name = QLabel('Klystron 2', self)
            le_kly2_sp = PyDMSpinboxScrollbar(
                self, pref+'LA-RF:LLRF:KLY2:SET_AMP')
            le_kly2_sp.spinbox.precisionFromPV = False
            le_kly2_sp.spinbox.precision = 2
            le_kly2_sp.spinbox.setAlignment(Qt.AlignCenter)
            le_kly2_sp.scrollbar.limitsFromPV = True
            lb_kly2_rb = PyDMLabel(self, pref+'LA-RF:LLRF:KLY2:GET_AMP')
            lb_kly2_rb.precisionFromPV = False
            lb_kly2_rb.precision = 2
            lay.addWidget(lb_kly2_name, idx+3, 1,
                          alignment=Qt.AlignLeft | Qt.AlignTop)
            lay.addWidget(le_kly2_sp, idx+3, 2, alignment=Qt.AlignTop)
            lay.addWidget(lb_kly2_rb, idx+3, 3, alignment=Qt.AlignTop)
            self._kckr_name = _PVName('BO-01D:PU-InjKckr')
        else:
            self._kckr_name = _PVName('SI-01SA:PU-InjNLKckr')

        label_voltsp = QLabel('<h4>Voltage-SP</h4>', self)
        label_voltrb = QLabel('<h4>Voltage-RB</h4>', self)
        lay.addWidget(label_voltsp, idx+4, 2)
        lay.addWidget(label_voltrb, idx+4, 3)

        lay.addItem(QSpacerItem(0, 8, QSzPlcy.Ignored, QSzPlcy.Fixed))
        pb_kckr = QPushButton(qta.icon('fa5s.list-ul'), '', self)
        pb_kckr.setObjectName('pb')
        pb_kckr.setStyleSheet("""
            #pb{
                min-width:25px; max-width:25px;
                min-height:25px; max-height:25px;
                icon-size:20px;}
            """)
        lb_kckr_name = QLabel(self._kckr_name, self)
        _hlautil.connect_window(
            pb_kckr, _PUDetailWindow, self, devname=self._kckr_name)
        lb_kckr_sp = PyDMSpinboxScrollbar(
            self, self._kckr_name.substitute(
                prefix=self._prefix, propty='Voltage-SP'))
        lb_kckr_sp.scrollbar.limitsFromPV = True
        lb_kckr_rb = PyDMLabel(self, self._kckr_name.substitute(
            prefix=self._prefix, propty='Voltage-RB'))
        lay.addWidget(pb_kckr, idx+5, 0, alignment=Qt.AlignTop)
        lay.addWidget(
            lb_kckr_name, idx+5, 1, alignment=Qt.AlignLeft | Qt.AlignTop)
        lay.addWidget(lb_kckr_sp, idx+5, 2, alignment=Qt.AlignTop)
        lay.addWidget(lb_kckr_rb, idx+5, 3, alignment=Qt.AlignTop)
        return lay
コード例 #30
0
ファイル: injbo.py プロジェクト: lnls-sirius/hla
    def _setupScrnsCorrsWidget(self):
        # screens
        lay_screens = QVBoxLayout()
        lay_screens.setContentsMargins(0, 0, 0, 0)
        header_screens = self._create_headerline(
            (('', 0), ('Screen', 6.5), ('Cam', 3.5), ('Type-Sel', 5),
             ('Type-Sts', 5), ('', 0)))
        header_screens.setObjectName('header_screens')
        header_screens.setStyleSheet(
            '#header_screens {border-bottom: 2px solid gray;}')
        header_screens.layout().setContentsMargins(0, 9, 0, 9)
        header_screens.setSizePolicy(QSzPlcy.Preferred, QSzPlcy.Maximum)
        lay_screens.addWidget(header_screens)

        for idx, scrn_prefix in enumerate(self._scrns):
            scrn_prefix = SiriusPVName(scrn_prefix)
            w = self._create_scrn_summwidget(scrn_prefix, idx)
            w.layout().setContentsMargins(9, 9, 9, 9)
            lay_screens.addWidget(w)

        # correctors
        w_corr = QWidget()
        w_corr.setObjectName('w_corr')
        w_corr.setStyleSheet('#w_corr {border-left: 2px solid gray;}')
        lay_corr = QGridLayout(w_corr)
        lay_corr.setContentsMargins(0, 0, 0, 0)
        lay_corr.setVerticalSpacing(25)
        lay_corr.setHorizontalSpacing(15)
        lay_corr.setAlignment(Qt.AlignTop)
        header_corrs = self._create_headerline(
            (('', 0), ('', 1.29), ('', 5), ('Kick-SP', 5), ('Kick-Mon', 5),
             ('', 0), ('', 1.29), ('', 5), ('Kick-SP', 5), ('Kick-Mon',
                                                            5), ('', 0)))
        header_corrs.setObjectName('header_corrs')
        header_corrs.setStyleSheet(
            '#header_corrs {border-bottom: 2px solid gray;}')
        header_corrs.layout().setContentsMargins(0, 9, 0, 9)
        header_corrs.setSizePolicy(QSzPlcy.Preferred, QSzPlcy.Maximum)
        lay_corr.addWidget(header_corrs, 0, 0, 1, 2)

        for corr, row, col in (('TB-04:PS-CH-1', 1,
                                0), ('TB-04:PS-CH-2', 2,
                                     0), ('TB-04:PS-CV-1', 1,
                                          1), ('TB-04:PS-CV-2', 2,
                                               1), ('TB-04:PU-InjSept', 3, 0),
                               ('BO-01D:PU-InjKckr', 3, 1)):
            corr = SiriusPVName(corr)
            w = self._create_corr_summwidget(corr)
            w.layout().setContentsMargins(9, 9, 9, 9)
            lay_corr.addWidget(w, row, col)

        # posang
        posang_prefix = SiriusPVName('TB-Glob:AP-PosAng').substitute(
            prefix=self.prefix)

        w_posang = QWidget()
        w_posang.setSizePolicy(QSzPlcy.Preferred, QSzPlcy.Maximum)
        w_posang.setObjectName('w_posang')
        w_posang.setStyleSheet('#w_posang {border-top: 2px solid gray;}')
        lay_posang = QGridLayout(w_posang)
        lay_posang.setVerticalSpacing(9)
        lay_posang.setHorizontalSpacing(15)

        header_posang = self._create_headerline(
            (('', 0), ('', 1.29), ('Position and Angle Correction', 30), ('',
                                                                          0)))
        header_posang.setSizePolicy(QSzPlcy.Preferred, QSzPlcy.Maximum)
        lay_posang.addWidget(header_posang, 0, 0, 1, 2)

        self.pb_update_ref = PyDMPushButton(
            label='Update Reference',
            parent=self,
            init_channel=posang_prefix.substitute(propty='SetNewRefKick-Cmd'),
            pressValue=1)
        self.pb_update_ref.setStyleSheet('min-height: 2em;')
        lay_posang.addWidget(self.pb_update_ref, 1, 0, 1, 2)

        for col, title, axis in ((0, 'Horizontal', 'X'), (1, 'Vertical', 'Y')):
            lb_pos = QLabel('<h4>Δ' + axis.lower() + '</h4>',
                            self,
                            alignment=Qt.AlignRight)
            lb_pos.setSizePolicy(QSzPlcy.Maximum, QSzPlcy.Maximum)
            pos_sp = PyDMSpinbox(
                self,
                posang_prefix.substitute(propty='DeltaPos' + axis + '-SP'))
            pos_sp.setObjectName('pos_sp_' + axis.lower())
            pos_sp.showStepExponent = False
            pos_rb = PyDMLabel(
                self,
                posang_prefix.substitute(propty='DeltaPos' + axis + '-RB'))
            pos_rb.setObjectName('pos_rb_' + axis.lower())
            lb_ang = QLabel('<h4>Δ' + axis.lower() + '\'</h4>',
                            self,
                            alignment=Qt.AlignRight)
            lb_ang.setSizePolicy(QSzPlcy.Maximum, QSzPlcy.Maximum)
            ang_sp = PyDMSpinbox(
                self,
                posang_prefix.substitute(propty='DeltaAng' + axis + '-SP'))
            ang_sp.setObjectName('ang_sp_' + axis.lower())
            ang_sp.showStepExponent = False
            ang_rb = PyDMLabel(
                self,
                posang_prefix.substitute(propty='DeltaAng' + axis + '-RB'))
            ang_rb.setObjectName('ang_rb_' + axis.lower())
            gbox_posang = QGroupBox(title, self)
            axlay = QGridLayout(gbox_posang)
            axlay.addWidget(lb_pos, 0, 0)
            axlay.addWidget(pos_sp, 0, 1)
            axlay.addWidget(pos_rb, 0, 2)
            axlay.addWidget(lb_ang, 1, 0)
            axlay.addWidget(ang_sp, 1, 1)
            axlay.addWidget(ang_rb, 1, 2)
            lay_posang.addWidget(gbox_posang, 2, col)

        self.pb_posang_settings = QPushButton('Settings', self)
        util.connect_window(self.pb_posang_settings,
                            CorrParamsDetailWindow,
                            parent=self,
                            tl='TB',
                            prefix=self.prefix)
        lay_posang.addWidget(self.pb_posang_settings,
                             3,
                             0,
                             1,
                             2,
                             alignment=Qt.AlignRight)

        lay_posangref = QGridLayout()
        lay_posangref.setHorizontalSpacing(9)
        lay_posangref.setVerticalSpacing(9)
        lay_posangref.addWidget(
            QLabel('<h4>Reference Kicks</h4>', self, alignment=Qt.AlignCenter),
            0, 0, 1, 7)
        for corr in ('CH1', 'CH2', 'CV1', 'CV2'):
            lb_corr = PyDMLabel(self,
                                posang_prefix.substitute(propty=corr + '-Cte'))
            lb_corr.setStyleSheet('font-weight:bold;')
            lb_refkick = PyDMLabel(
                self,
                posang_prefix.substitute(propty='RefKick' + corr + '-Mon'))
            lb_refkick.showUnits = True
            col = 1 if 'CH' in corr else 4
            row = 0 if '1' in corr else 1
            lay_posangref.addWidget(lb_corr, row + 1, col)
            lay_posangref.addWidget(lb_refkick, row + 1, col + 1)
        lay_posangref.setColumnStretch(0, 1)
        lay_posangref.setColumnStretch(1, 3)
        lay_posangref.setColumnStretch(2, 3)
        lay_posangref.setColumnStretch(3, 1)
        lay_posangref.setColumnStretch(4, 3)
        lay_posangref.setColumnStretch(5, 3)
        lay_posangref.setColumnStretch(6, 1)
        lay_posang.addLayout(lay_posangref, 4, 0, 1, 2)

        lay_corr.addWidget(w_posang, 4, 0, 1, 2)

        lay_corr.setRowStretch(0, 1)
        lay_corr.setRowStretch(1, 2)
        lay_corr.setRowStretch(2, 2)
        lay_corr.setRowStretch(3, 2)
        lay_corr.setRowStretch(4, 10)

        lay = QHBoxLayout()
        lay.setContentsMargins(0, 0, 0, 0)
        lay.setSpacing(0)
        lay.addLayout(lay_screens)
        lay.addWidget(w_corr)
        self.corr_wid.setLayout(lay)