Beispiel #1
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)
Beispiel #2
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)
Beispiel #3
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
Beispiel #4
0
        def _applyconfig(self):
            sender_text = self.sender().text()
            if 'Standby' in sender_text:
                config_name = 'standby'
            elif 'TurnOff' in sender_text:
                config_name = 'turnoff'

            ans = QMessageBox.question(
                self, 'Are you Sure?',
                "Do you really want to apply the Configuration '" +
                config_name + "' to the machine?", QMessageBox.Yes,
                QMessageBox.Cancel)
            if ans != QMessageBox.Yes:
                return

            current, ok = QInputDialog.getDouble(
                self,
                'Enter value: ', 'Enter FilaPS standby current [A]\n'
                'or cancel to not set it: ',
                value=0.7,
                min=0.0,
                max=1.5,
                decimals=3)
            if ok:
                fila_pv = _PV(_prefix + 'LI-01:EG-FilaPS:currentoutsoft',
                              connection_timeout=0.05)
                fila_pv.get()  # force connection
                if fila_pv.connected:
                    fila_pv.put(current)
                else:
                    QMessageBox.warning(
                        self, 'Message',
                        'Could not connect to LI-01:EG-FilaPS!')

            client = ConfigDBClient()

            WinClass = create_window_from_widget(
                SelectAndApplyPVsWidget, 'Select PVs to Apply Standby')
            wind = WinClass(self, client)
            wind.widget.settingFinished.connect(wind.close)
            wind.widget.fill_config('global_config', config_name)
            wind.exec_()
Beispiel #5
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
Beispiel #6
0
import sys
import argparse as _argparse

import qtawesome as qta

from siriuspy.envars import VACA_PREFIX
from siriushla.util import get_appropriate_color
from siriushla.sirius_application import SiriusApplication
from siriushla.as_ap_monitor import SiriusMonitor
from siriushla.widgets.windows import create_window_from_widget

parser = _argparse.ArgumentParser(description="Run Sirius Monitor Interface.")
parser.add_argument('-p',
                    "--prefix",
                    type=str,
                    default=VACA_PREFIX,
                    help="Define the prefix for the PVs in the window.")
args = parser.parse_args()

app = SiriusApplication()
color = get_appropriate_color(section='AS')
icon = qta.icon('mdi.monitor-dashboard', color=color)
window = create_window_from_widget(SiriusMonitor,
                                   title='Sirius Monitor',
                                   icon=icon,
                                   is_main=True,
                                   withscroll=True,
                                   min_width=96)
app.open_window(window, parent=None, prefix=args.prefix)
sys.exit(app.exec_())
Beispiel #7
0
parser = _argparse.ArgumentParser(
    description="Run Interface of Specified Screen.")
parser.add_argument('scrn_sel', type=str, help='Select a section.')
parser.add_argument('-p',
                    "--prefix",
                    type=str,
                    default=VACA_PREFIX,
                    help="Define the prefix for the PVs in the window.")
args = parser.parse_args()

os.environ['EPICS_CA_MAX_ARRAY_BYTES'] = '200000000'
app = SiriusApplication()

scrn_sel = PVName(args.scrn_sel)
prefix = args.prefix

if scrn_sel.dev == 'Scrn':
    window = create_window_from_widget(IndividualScrn,
                                       title='Screen View: ' + scrn_sel,
                                       is_main=True)
    kwargs = dict(prefix=prefix, scrn=scrn_sel)
else:
    window = create_window_from_widget(SelectScrns,
                                       title='Select a Screen',
                                       is_main=True)
    kwargs = dict(prefix=prefix, sec=scrn_sel)

app.open_window(window, parent=None, **kwargs)
sys.exit(app.exec_())
Beispiel #8
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
Beispiel #9
0
    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;
            }""")
Beispiel #10
0
from siriuspy.envars import VACA_PREFIX

parser = _argparse.ArgumentParser(description="Run SOFB HLA Interface.")
parser.add_argument('-p',
                    "--prefix",
                    type=str,
                    default=VACA_PREFIX,
                    help="Define the prefix for the PVs in the window.")
parser.add_argument('-m',
                    '--matrix',
                    action='store_true',
                    default=False,
                    help="Choose whether to show matrix widget")
args = parser.parse_args()

app = SiriusApplication()
if args.matrix:
    window = create_window_from_widget(
        ShowMatrixWidget,
        'Response Matrix',
        icon=qta.icon('fa5s.hammer', color=util.get_appropriate_color('TB')),
        is_main=True)
    app.open_window(window,
                    parent=None,
                    device='TB-Glob:AP-SOFB',
                    prefix=args.prefix,
                    acc='TB')
else:
    app.open_window(MainWindow, parent=None, prefix=args.prefix, acc='TB')
sys.exit(app.exec_())
Beispiel #11
0
                    help="Show Antennas or Positions  (default= 'Positions').",
                    choices=('Positions', 'Antennas'))
parser.add_argument('-p',
                    "--prefix",
                    type=str,
                    default=VACA_PREFIX,
                    help="Define the prefix for the PVs in the window.")
args = parser.parse_args()

app = SiriusApplication()
pv = _PVName(args.bpm_sel)
kwargs = dict()
if pv.dev in ('BPM', 'PBPM'):
    icon = qta.icon('mdi.currency-sign', color=get_appropriate_color(pv.sec))
    window = create_window_from_widget(BPMMain,
                                       title=args.bpm_sel,
                                       is_main=True,
                                       icon=icon)
    kwargs.update(dict(prefix=args.prefix, bpm=pv))
else:
    sec = args.bpm_sel.upper()
    bpms_names = BPMSearch.get_names(filters={'sec': sec, 'dev': 'BPM'})
    icon = qta.icon('mdi.currency-sign', color=get_appropriate_color(sec))
    if args.window == 'Monitor':
        clas = SelectBPMs
        icon = get_monitor_icon('mdi.currency-sign',
                                color=get_appropriate_color(sec))
    elif args.window == 'SPass':
        clas = SinglePassSummary
    else:
        clas = MultiTurnSummary
        kwargs['mode'] = args.mode
#!/usr/bin/env python-sirius
"""PS Monitor."""

import sys
import argparse as _argparse
from siriushla.sirius_application import SiriusApplication
from siriuspy.envars import VACA_PREFIX
from siriushla.as_ps_diag import PSMonitor
from siriushla.widgets.windows import create_window_from_widget

parser = _argparse.ArgumentParser(description="Run PS Monitor Interface.")
parser.add_argument('-p',
                    "--prefix",
                    type=str,
                    default=VACA_PREFIX,
                    help="Define the prefix for the PVs in the window.")
args = parser.parse_args()

app = SiriusApplication()
window = create_window_from_widget(PSMonitor,
                                   title='PS & PU Monitor',
                                   is_main=True,
                                   withscroll=True,
                                   min_width=56)
app.open_window(window, parent=None, prefix=args.prefix)
sys.exit(app.exec_())
Beispiel #13
0
    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
Beispiel #14
0
#!/usr/bin/env python-sirius
"""Linac MPS Monitor."""
import sys
import argparse as _argparse
from siriushla.sirius_application import SiriusApplication
from siriuspy.envars import VACA_PREFIX
from siriushla.widgets.windows import create_window_from_widget
from siriushla.li_ap_mps import MPSMonitor

parser = _argparse.ArgumentParser(
    description="Run Linac MPS Monitor Interface.")
parser.add_argument('-p',
                    "--prefix",
                    type=str,
                    default=VACA_PREFIX,
                    help="Define the prefix for the PVs in the window.")
args = parser.parse_args()

app = SiriusApplication()
window = create_window_from_widget(MPSMonitor,
                                   title='LI MPS Monitor',
                                   is_main=True,
                                   withscroll=True,
                                   min_width=25)
app.open_window(window, parent=None, prefix=args.prefix)
sys.exit(app.exec_())
Beispiel #15
0
    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()
from siriushla.as_ti_control import TimingMain, MonitorWindow
from siriushla.util import get_appropriate_color, get_monitor_icon

parser = _argparse.ArgumentParser(description="Run Timing HLA Interface.")
parser.add_argument('-p',
                    "--prefix",
                    type=str,
                    default=VACA_PREFIX,
                    help="Define the prefix for the PVs in the window.")
parser.add_argument('-t',
                    "--type",
                    type=str,
                    default='main',
                    choices=('main', 'monitor'),
                    help="Whether to open monitor window.")
args = parser.parse_args()

app = SiriusApplication(None, sys.argv)
if args.type.lower() == 'main':
    app.open_window(TimingMain, parent=None, prefix=args.prefix)
else:
    icon = get_monitor_icon('mdi.timer', color=get_appropriate_color('AS'))
    window = create_window_from_widget(MonitorWindow,
                                       title='Timing Monitor',
                                       icon=icon,
                                       is_main=True,
                                       withscroll=True,
                                       min_width=25)
    app.open_window(window, parent=None, prefix=args.prefix)
sys.exit(app.exec_())
Beispiel #17
0
#!/usr/bin/env python-sirius
"""IT Timing Application."""

import sys as _sys
import argparse as _argparse
from siriuspy.envars import VACA_PREFIX
import qtawesome as qta
from siriushla.sirius_application import SiriusApplication
from siriushla.widgets.windows import create_window_from_widget
from siriushla.li_eg_control import ITTIWidget

parser = _argparse.ArgumentParser(description="Run IT Timing Interface.")
parser.add_argument('-p',
                    "--prefix",
                    type=str,
                    default=VACA_PREFIX,
                    help="Define the prefix for the PVs in the window.")
args = parser.parse_args()
prefix = args.prefix + ('-' if args.prefix else '')

app = SiriusApplication()
window = create_window_from_widget(ITTIWidget,
                                   title='IT Timing Control',
                                   icon=qta.icon('mdi.timer'),
                                   is_main=True)
app.open_window(window, parent=None, prefix=prefix, is_main=True)
_sys.exit(app.exec_())
Beispiel #18
0
#!/usr/bin/env python-sirius
"""Open Window of emittance measurement in Linac."""

import sys
import argparse as _argparse
from siriushla.sirius_application import SiriusApplication
from siriuspy.envars import VACA_PREFIX
from siriushla.as_ap_measure import EmittanceMeasure
from siriushla.widgets.windows import create_window_from_widget

parser = _argparse.ArgumentParser(
    description="Run Interface of emittance measurement in Linac.")
parser.add_argument('-p',
                    "--prefix",
                    type=str,
                    default=VACA_PREFIX,
                    help="Define the prefix for the PVs in the window.")
args = parser.parse_args()

app = SiriusApplication()
MyWindow = create_window_from_widget(EmittanceMeasure,
                                     title='Linac Emittance Measure',
                                     is_main=True)
app.open_window(MyWindow, parent=None, place='LI')
sys.exit(app.exec_())
Beispiel #19
0
#!/usr/bin/env python-sirius
"""RAD Monitor."""

import sys as sys
import argparse as argparse
import qtawesome as qta
from siriushla.util import get_appropriate_color
from siriuspy.envars import VACA_PREFIX
from siriushla.sirius_application import SiriusApplication
from siriushla.as_ap_radmon import RadTotDoseMonitor
from siriushla.widgets.windows import create_window_from_widget

parser = argparse.ArgumentParser(description="Run RAD Monitor.")
parser.add_argument('-p',
                    "--prefix",
                    type=str,
                    default=VACA_PREFIX,
                    help="Define the prefix for the PVs in the window.")
args = parser.parse_args()

app = SiriusApplication()
icon = qta.icon('fa5s.radiation', color=get_appropriate_color('AS'))
window = create_window_from_widget(RadTotDoseMonitor,
                                   'RAD: Total Dose Monitor',
                                   is_main=True,
                                   withscroll=True,
                                   icon=icon)
app.open_window(window, parent=None, prefix=args.prefix)
sys.exit(app.exec_())
Beispiel #20
0
    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;}""")
Beispiel #21
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)
Beispiel #22
0
"""Open Window of energy measurement in LI."""

import os
import sys
import argparse as _argparse
import qtawesome as qta
from siriuspy.envars import VACA_PREFIX
import siriushla.util as _util
from siriushla.sirius_application import SiriusApplication
from siriushla.as_ap_measure import EnergyMeasure
from siriushla.widgets.windows import create_window_from_widget


# Linac image is very large! (2448 X 2050)
os.environ['EPICS_CA_MAX_ARRAY_BYTES'] = '21000000'

parser = _argparse.ArgumentParser(
    description="Run Interface of energy measurement in LI.")
parser.add_argument(
    '-p', "--prefix", type=str, default=VACA_PREFIX,
    help="Define the prefix for the PVs in the window.")
args = parser.parse_args()

app = SiriusApplication()
icon = qta.icon(
        'mdi.gauge', color=_util.get_appropriate_color('LI'))
MyWindow = create_window_from_widget(
    EnergyMeasure, title='Linac Energy Measure', is_main=True, icon=icon)
app.open_window(MyWindow)
sys.exit(app.exec_())
#!/usr/bin/env python-sirius
"""Open Window to control SI Scrapers widgets."""

import sys
import argparse as _argparse
from siriushla.sirius_application import SiriusApplication
from siriuspy.envars import VACA_PREFIX
from siriushla.si_di_scraps import ScrapersView
from siriushla.widgets.windows import create_window_from_widget

parser = _argparse.ArgumentParser(
    description="Run Interface to control SI Scrapers widgets.")
parser.add_argument('-p',
                    "--prefix",
                    type=str,
                    default=VACA_PREFIX,
                    help="Define the prefix for the PVs in the window.")
args = parser.parse_args()

app = SiriusApplication()
prefix = args.prefix
window = create_window_from_widget(ScrapersView,
                                   title='SI Scrapers View',
                                   is_main=True)
app.open_window(window, parent=None, prefix=prefix)
sys.exit(app.exec_())
#!/usr/bin/env python-sirius

"""Open Window to control TB Slits widgets."""

import sys
import argparse as _argparse
from siriushla.sirius_application import SiriusApplication
from siriuspy.envars import VACA_PREFIX
from siriushla.tb_di_slits import SlitsView
from siriushla.widgets.windows import create_window_from_widget


parser = _argparse.ArgumentParser(
    description="Run Interface to control TB Slits widgets.")
parser.add_argument(
    '-p', "--prefix", type=str, default=VACA_PREFIX,
    help="Define the prefix for the PVs in the window.")
args = parser.parse_args()

app = SiriusApplication()
prefix = args.prefix
window = create_window_from_widget(
    SlitsView, title='TB Slits View', is_main=True)
app.open_window(window, parent=None, prefix=prefix)
sys.exit(app.exec_())
Beispiel #25
0
    def _setupSettingsLayout(self):
        label_CamEnbl = QLabel('Enable:', self)
        hbox_CamEnbl = create_propty_layout(parent=self,
                                            prefix=self.cam_prefix,
                                            propty='Enbl',
                                            propty_type='enbldisabl',
                                            width=3)

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

        label_Conn = QLabel('Connection:', self)
        hbox_Conn = create_propty_layout(parent=self,
                                         prefix=self.cam_prefix,
                                         propty='Connection',
                                         propty_type='mon')

        label_Reset = QLabel('Reset Camera:', self)
        self.pb_dtl = PyDMPushButton(
            label='',
            icon=qta.icon('fa5s.sync'),
            parent=self,
            pressValue=1,
            init_channel=self.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;}")

        flay_sts = QFormLayout()
        flay_sts.setSpacing(6)
        flay_sts.setFormAlignment(Qt.AlignHCenter)
        flay_sts.setLabelAlignment(Qt.AlignRight)
        flay_sts.addRow(label_CamEnbl, hbox_CamEnbl)
        flay_sts.addRow(label_FrameCnt, hbox_FrameCnt)
        flay_sts.addRow(label_Conn, hbox_Conn)
        flay_sts.addRow(label_Reset, self.pb_dtl)

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

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

        label_ExpTime = QLabel('Exp. 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'
                                         })

        flay_ctrl = QFormLayout()
        flay_ctrl.setSpacing(6)
        flay_ctrl.setFormAlignment(Qt.AlignHCenter)
        flay_ctrl.setLabelAlignment(Qt.AlignRight)
        flay_ctrl.addRow(label_AcqMode, hbox_AcqMode)
        flay_ctrl.addRow(label_AcqPeriod, hbox_AcqPeriod)
        flay_ctrl.addRow(label_ExpTime, hbox_ExpTime)
        flay_ctrl.addRow(label_Gain, hbox_Gain)

        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)
        MyWindow = create_window_from_widget(BaslerCamSettings,
                                             title=self.device +
                                             ' Settings Details',
                                             is_main=True)
        util.connect_window(self.pb_details,
                            MyWindow,
                            parent=self,
                            prefix=self.prefix,
                            device=self.device)

        lay = QHBoxLayout()
        lay.setSpacing(20)
        lay.addLayout(flay_sts)
        lay.addLayout(flay_ctrl)
        lay.addWidget(self.pb_details, alignment=Qt.AlignTop)
        return lay
Beispiel #26
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()
Beispiel #27
0
#!/usr/bin/env python-sirius
"""Linac MPS Controller"""
import sys
import argparse as _argparse

from siriuspy.envars import VACA_PREFIX
from siriushla.sirius_application import SiriusApplication
from siriushla.widgets.windows import create_window_from_widget
from siriushla.li_ap_mps import MPSControl

parser = _argparse.ArgumentParser(
    description="Run Linac MPS Control Interface.")
parser.add_argument('-p',
                    "--prefix",
                    type=str,
                    default=VACA_PREFIX,
                    help="Define the prefix for the PVs in the window.")
args = parser.parse_args()

app = SiriusApplication()
window = create_window_from_widget(MPSControl,
                                   title='LI MPS Control',
                                   is_main=True,
                                   withscroll=True,
                                   min_width=67)
app.open_window(window, parent=None, prefix=args.prefix)
sys.exit(app.exec_())