initial commit

This commit is contained in:
2022-06-28 11:30:02 +02:00
commit 869ef989dc
3 changed files with 312 additions and 0 deletions
View File
+40
View File
@@ -0,0 +1,40 @@
from enum import IntEnum
class ElogSLS:
def __init__(self):
self.category = self.Category(0)
self.domain = self.Domain(0)
self.system = self.System(0)
class Category(IntEnum):
INFO = 0
MEASUREMENT = 1
class Domain(IntEnum):
NONE = 0
INJECTOR = 1
LINAC1 = 2
LINAC2 = 3
LINAC3 = 4
ARAMIS = 5
ARAMIS_BEAMLINES = 6
ATHOS = 7
ATHOS_BEAMLINES = 8
class System(IntEnum):
NONE = 0
BEAMDYNAMICS = 1
CONTROLS = 2
DIAGNOSTICS = 3
ELECTRICSUPPLY = 4
INSERTIONDEVICES = 5
LASER = 6
MAGNETPOWERSUPPLIES = 7
OPERATION = 8
RF = 9
SAFETY = 10
VACUUM = 11
WATERCOOLING = 11
OTHER = 12
UNKNOWN = 13
+272
View File
@@ -0,0 +1,272 @@
""" Gui header for SLS
"""
from qtpy.QtCore import Qt
from qtpy.QtGui import QFont
from qtpy.QtWidgets import (QGridLayout, QGroupBox, QHBoxLayout, QLabel,
QVBoxLayout, QWidget)
from caqtwidgets.pvwidgets import CAQLabel
from pyqtacc.bdbase.enumkind import UserMode
class GUIHeader(QWidget):
""" GUI Header Class
"""
def __init__(self, parent, user_mode=UserMode.OPERATION, extended=True):
super(GUIHeader, self).__init__()
self.parent = parent
self.appname = parent.appname
self.title = parent.title
self.settings = parent.settings
self.user_mode = user_mode
self.current_user_mode = user_mode
self.extended = extended
self.cafe = parent.cafe
self.cyca = parent.cyca
self.input_parameters = parent.input_parameters
self.input_labels = parent.input_labels
self.expert_parameters = parent.expert_parameters
self.expert_labels = parent.expert_labels
self.pct_status = None
self.orbit_status = None
self.machine_status = None
self.font_gui = QFont("sans serif")
self.font_gui.setPointSize(11)
self.font_pts10 = QFont("sans serif")
self.font_pts10.setPointSize(10)
self.widget_height = self.settings.data["StyleGuide"]["widgetHeight"]
self.extra_height = self.settings.data["StyleGuide"]["extraGroupHeight"]
pvlist = []
for pv in self.settings.data["OpMsg"].values():
pvlist.append(pv)
for pv in self.settings.data["PCT"].values():
pvlist.append(pv)
for pv in self.settings.data["OFB"].values():
pvlist.append(pv)
self.cafe.openPrepare()
self.cafe.open(pvlist)
self.cafe.openNowAndWait(0.4)
self.cafe.printDisconnected()
self.station_width = 200 #default
self.station_height = 100
self.hor_layout = QHBoxLayout()
self.hor_layout.addWidget(self.status_widget())
self.hor_layout.addWidget(self.pct_widget())
self.hor_layout.addWidget(self.orbit_widget())
self.hor_layout.setSpacing(10)
self.hor_layout.setAlignment(Qt.AlignLeft)
self.hor_layout.setContentsMargins(5, 0, 5, 0)
self.header_wgt = QGroupBox()
self.header_wgt.setObjectName(self.user_mode.name)
self.header_wgt.setLayout(self.hor_layout)
self.header_wgt.setFixedHeight(110)
title = "SLS {0}".format(self.user_mode.name)
if self.title:
title += ": {0}".format(self.title)
self.header_wgt.setTitle(title)
def reset_operation_mode(self):
""" Reset header colors to application operation mode
"""
self.change_operation_mode(user_mode=self.user_mode)
def change_operation_mode(self, user_mode=UserMode.OPERATION):
""" Different operation modes have different color schemes
"""
self.header_wgt.setObjectName(user_mode.name)
self.header_wgt.setTitle(self.header_wgt.title().replace(
self.current_user_mode.name, user_mode.name))
self.header_wgt.style().polish(self.header_wgt)
self.current_user_mode = user_mode
def status_widget(self):
""" QGroupBox encompassing machine status info
"""
station = QGroupBox()
station.setObjectName("MACHINE")
station.setAlignment(Qt.AlignHCenter | Qt.AlignTop)
station.setFlat(False)
station.setTitle("Status")
date = CAQLabel(self, pv_name=self.settings.data["OpMsg"]["pvDate1"])
date.setFixedHeight(self.widget_height)
date.setFixedWidth(140)
uptime = CAQLabel(self, pv_name=self.settings.data["OpMsg"]["upTime"],
show_units=True, prefix=" Up")
uptime.setFixedHeight(self.widget_height)
uptime.setFixedWidth(110)
uptime.setAlignment(Qt.AlignCenter)
message = CAQLabel(
self, pv_name=self.settings.data["OpMsg"]["pvMsg1"])
message.setFixedHeight(self.widget_height)
message.setFixedWidth(uptime.width() + date.width() + 15)
grid_layout = QGridLayout()
grid_layout.addWidget(date, 0, 0, 1, 1, Qt.AlignCenter)
grid_layout.addWidget(uptime, 0, 1, 1, 1, Qt.AlignRight)
grid_layout.addWidget(message, 1, 0, 1, 2, Qt.AlignCenter)
grid_layout.setVerticalSpacing(0)
grid_layout.setHorizontalSpacing(0)
grid_layout.setContentsMargins(2, 9, 2, 0)
station.setLayout(grid_layout)
station.setFixedHeight(uptime.height() + date.height() +
self.extra_height)
station.setFixedWidth(uptime.width() + date.width() + 23)
self.machine_status = station
return self.machine_status
def pct_widget(self):
ipct_widget = QGroupBox()
ipct_widget.setAlignment(Qt.AlignHCenter)
ipct_widget.setFlat(False)
ipct_widget.setTitle("PCT")
ipct_layout_outer = QHBoxLayout()
ipct_layout_inner = QVBoxLayout()
ipct_widget_inner = QWidget()
ipct_current = CAQLabel(
self, pv_name=self.settings.data["PCT"]["current"], precision=3,
show_units=True)
ipct_cur_roc = CAQLabel(
self, pv_name=self.settings.data["PCT"]["curROC"], show_units=True,
prefix="ROC")
ipct_tau = CAQLabel(
self, pv_name=self.settings.data["PCT"]["tauHour"], show_units=True,
prefix="Tau")
ipct_inj = CAQLabel(self, pv_name=self.settings.data["PCT"]["injRate"],
show_units=True, prefix="Inj")
ipct_current.setFixedHeight(self.widget_height)
ipct_current.setMinimumWidth(160)
ipct_cur_roc.setFixedHeight(self.widget_height)
ipct_cur_roc.setMinimumWidth(160)
ipct_tau.setFixedHeight(self.widget_height)
ipct_tau.setMinimumWidth(150)
ipct_inj.setFixedHeight(self.widget_height)
ipct_inj.setMinimumWidth(150)
ipct_layout_inner.addWidget(ipct_current, stretch=0,
alignment=Qt.AlignLeft)
ipct_layout_inner.addWidget(ipct_cur_roc, stretch=0,
alignment=Qt.AlignLeft)
ipct_layout_inner.setSpacing(0)
ipct_layout_inner.setContentsMargins(2, 9, 2, 0)
ipct_widget_inner.setLayout(ipct_layout_inner)
ipct_layout_inner2 = QVBoxLayout()
ipct_widget_inner2 = QWidget()
ipct_layout_inner2.addWidget(ipct_tau, stretch=0,
alignment=Qt.AlignLeft)
ipct_layout_inner2.addWidget(ipct_inj, stretch=0,
alignment=Qt.AlignLeft)
ipct_layout_inner2.setSpacing(0)
ipct_widget_inner2.setLayout(ipct_layout_inner2)
ipct_layout_inner2.setContentsMargins(2, 9, 2, 0)
ipct_layout_outer.addWidget(ipct_widget_inner, stretch=0,
alignment=Qt.AlignCenter)
ipct_layout_outer.addWidget(ipct_widget_inner2, stretch=0,
alignment=Qt.AlignCenter)
ipct_layout_outer.setSpacing(0)
ipct_widget.setLayout(ipct_layout_outer)
ipct_layout_outer.setContentsMargins(0, 0, 0, 0)
ipct_widget.setObjectName("PCT")
ipct_widget.setFixedHeight(self.machine_status.height())
ipct_widget.setFixedWidth(320)
return ipct_widget
def orbit_widget(self):
orbit_widget = QGroupBox()
orbit_widget.setAlignment(Qt.AlignHCenter)
orbit_widget.setFlat(False)
orbit_widget.setTitle("Orbit")
orbit_layout_outer = QVBoxLayout()
orbit_layout_inner = QHBoxLayout()
orbit_layout_inner2 = QHBoxLayout()
orbit_widget_inner = QWidget()
orbit_widget_inner2 = QWidget()
orbit_xrms = CAQLabel(self, pv_name=self.settings.data["OFB"]["xrms"],
show_units=True)
orbit_yrms = CAQLabel(self, pv_name=self.settings.data["OFB"]["yrms"],
show_units=True)
orbit_xmean = CAQLabel(self, pv_name=self.settings.data["OFB"]["xmean"],
show_units=True)
orbit_ymean = CAQLabel(self, pv_name=self.settings.data["OFB"]["ymean"],
show_units=True)
orbit_xrms.setFixedHeight(self.widget_height)
orbit_xrms.setMinimumWidth(110)
orbit_yrms.setFixedHeight(self.widget_height)
orbit_yrms.setMinimumWidth(110)
orbit_xmean.setFixedHeight(self.widget_height)
orbit_xmean.setMinimumWidth(110)
orbit_ymean.setFixedHeight(self.widget_height)
orbit_ymean.setMinimumWidth(110)
x_label = QLabel('\u27E8x\u27E9:')
x_label.setFixedHeight(self.widget_height)
x_label.setFont(self.font_pts10)
y_label = QLabel('\u27E8y\u27E9:')
y_label.setFixedHeight(self.widget_height)
y_label.setFont(self.font_pts10)
x_pm = QLabel(' \u00B1 ')
x_pm.setFixedHeight(self.widget_height)
x_pm.setFont(self.font_pts10)
y_pm = QLabel(' \u00B1 ')
y_pm.setFixedHeight(self.widget_height)
y_pm.setFont(self.font_pts10)
orbit_layout_inner.addWidget(x_label, stretch=0,
alignment=Qt.AlignRight)
orbit_layout_inner.addWidget(orbit_xmean, stretch=0,
alignment=Qt.AlignLeft)
orbit_layout_inner.addWidget(x_pm, stretch=0, alignment=Qt.AlignCenter)
orbit_layout_inner.addWidget(orbit_xrms, stretch=0,
alignment=Qt.AlignLeft)
orbit_layout_inner.setSpacing(0)
orbit_layout_inner.setContentsMargins(9, 9, 9, 0)
orbit_widget_inner.setLayout(orbit_layout_inner)
orbit_layout_inner2.addWidget(y_label, stretch=0,
alignment=Qt.AlignRight)
orbit_layout_inner2.addWidget(orbit_ymean, stretch=0,
alignment=Qt.AlignLeft)
orbit_layout_inner2.addWidget(y_pm, stretch=0,
alignment=Qt.AlignCenter)
orbit_layout_inner2.addWidget(orbit_yrms, stretch=0,
alignment=Qt.AlignLeft)
orbit_layout_inner2.setSpacing(0)
orbit_layout_inner2.setContentsMargins(9, 0, 9, 0)
orbit_widget_inner2.setLayout(orbit_layout_inner2)
orbit_layout_outer.setContentsMargins(0, 0, 0, 0)
orbit_layout_outer.addWidget(orbit_widget_inner, stretch=0,
alignment=Qt.AlignLeft)
orbit_layout_outer.addWidget(orbit_widget_inner2, stretch=0,
alignment=Qt.AlignLeft)
orbit_layout_outer.setSpacing(0)
orbit_widget.setLayout(orbit_layout_outer)
orbit_widget.setObjectName("ORBIT")
orbit_widget.setFixedHeight(self.machine_status.height())
orbit_widget.setFixedWidth(280)
return orbit_widget