Source code for siriushlacon.regatron.main

#!/usr/bin/env python3
import json
import logging

from pydm import Display
from pydm.widgets.related_display_button import PyDMRelatedDisplayButton
from qtpy.QtGui import QPixmap
from qtpy.QtWidgets import QGridLayout

from siriushlacon.regatron.consts import REGATRON_UI, DATA_JSON, COMPLETE_MAIN
from siriushlacon.utils.consts import CNPEM_IMG, LNLS_IMG

logger = logging.getLogger()


[docs]def load_data(): data = None with open(DATA_JSON, "rb") as f: data = json.load(f) return data
[docs]def get_overview_detail(name): overview = PyDMRelatedDisplayButton(name) overview.macros = ['{"P":"' + name + '"}'] overview.filenames = [COMPLETE_MAIN] overview.openInNewWindow = True overview.showIcon = False return overview
[docs]class Launcher(Display): DIP = "DIP" QUA = "QUA" SEX = "SEX" def __init__(self, parent=None, macros=None, **kwargs): super().__init__(parent=parent, ui_filename=REGATRON_UI) self.logo_cnpem.setPixmap(QPixmap(CNPEM_IMG)) self.logo_lnls.setPixmap(QPixmap(LNLS_IMG)) self.data = load_data() self.layoutDipoles = QGridLayout() self.layoutQuadrupoles = QGridLayout() self.layoutSextupoles = QGridLayout() self.tabDipoles.setLayout(self.layoutDipoles) self.tabQuadrupoles.setLayout(self.layoutQuadrupoles) self.tabSextupoles.setLayout(self.layoutSextupoles) self.dipole = [] self.quadrupole = [] self.sextupole = [] for e in self.data: if e["type"] == self.QUA: self.quadrupole.append(e["pv"]) elif e["type"] == self.DIP: self.dipole.append(e["pv"]) elif e["type"] == self.SEX: self.sextupole.append(e["pv"]) self.render(self.layoutDipoles, self.dipole) self.render(self.layoutQuadrupoles, self.quadrupole) self.render(self.layoutSextupoles, self.sextupole)
[docs] def render(self, layout, data): i = 0 for name in data: overview = get_overview_detail(name) layout.addWidget(overview, i, 0) i += 1 layout.setRowStretch(len(data), 10)