header widget shows beam path

This commit is contained in:
2024-02-08 14:11:50 +01:00
parent 2e63860510
commit 7a9c7b02f5
3 changed files with 81 additions and 54 deletions

View File

@@ -9,7 +9,7 @@ cafe.monitor("MMAC3:STR:2")
pvd = cafe.getPVCache("MMAC3:STR:2")
pvd.show()
for i in range(0,100000):
for i in range(0,1000000):
pvd = cafe.getPVCache("MMAC3:STR:2")
if pvd.value[0] < 0.003:
pvd.show()

View File

@@ -58,6 +58,8 @@ class StartMain(BaseWindow):
self.title = _title
self.gui = AppGui(self)
#print(self.input_parameters)
def prepare_elog_message(self):

View File

@@ -60,10 +60,11 @@ class AppGui(QWidget):
self.input_labels = self.parent.input_labels
self.expert_parameters = self.parent.expert_parameters
self.gui_frame.expert_parameters_group.setFixedWidth(260)
self.gui_frame.expert_parameters_group.setFixedHeight(120)
self.gui_frame.operator_parameters_group.setFixedWidth(260)
#self.gui_frame.operator_parameters_group.setFixedHeight(260)
self.gui_frame.measurement_tab_wgt.setMinimumWidth(440)
self.gui_frame.measurement_tab_wgt.setFixedHeight(280)
self.gui_frame.operator_parameters_group.setFixedHeight(100)
self.gui_frame.measurement_tab_wgt.setFixedWidth(440)
self.gui_frame.measurement_tab_wgt.setFixedHeight(200)
#self.gui_frame.operator_wgt.setFixedHeight(240)
#self.gui_frame.expert_wgt.setFixedHeight(240)
@@ -74,18 +75,10 @@ class AppGui(QWidget):
#Overwrite default
self.gui_frame.central_tab_widget.tabBar().setTabText(0, "Control")
self.gui_frame.central_tab_widget.tabBar().setTabText(1, "IOC")
#self.gui_frame.results_wgt is the IOC tab widget
#wgt = self.gui_frame.results_wgt.layout().widget()
#wgt = self.gui_frame.central_tab_widget.widget(1)
#lay = self.gui_frame.central_tab_widget.widget(1).layout()
#self.gui_frame.results_wgt.layout().removeWidget(wgt)
#wgt.deleteLater()
#wgt = None
#self.gui_frame.central_tab_widget.widget(1).setLayout(self.reset_ioc_sm())
wgt = self.gui_frame.central_tab_widget.widget(1)
#print(dir(wgt))
lay = self.gui_frame.central_tab_widget.widget(1).layout()
#print(dir(lay))
'''
def deleteItemsOfLayout(layout):
@@ -113,21 +106,17 @@ class AppGui(QWidget):
self.gui_frame.results_wgt.setFixedWidth(1200)
self.gui_frame.results_wgt.setFixedHeight(400)
#wgt2 = self.gui_frame.results_tab_wgt.layout().widget()
#self.gui_frame.central_tab_widget.widget(1).layout().replaceWidget(wgt2, self.reset_ioc_sm())
self.gui_frame.results_wgt.setLayout(self.gui_frame.results_layout)
self.gui_frame.results_layout.addWidget(self.reset_ioc_sm(), 0, 0, 1, 1)
sec_prefix_list = [sub[0: sub.index("-")] for sub in self.sec_state_list]
sec_prefix_list = [
sub[0: sub.index("-")] for sub in self.sec_state_list]
self.gui_frame.results_layout.addWidget(self.reset_ioc_saving(sec_prefix_list), 0, 1, 1, 1)
self.gui_frame.results_layout.addWidget(
self.reset_ioc_saving(sec_prefix_list), 0, 1, 1, 1)
self.gui_frame.results_layout.setContentsMargins(40, 40, 40, 40)
#self.gui_frame.results_wgt.insertWidget(0, self.reset_ioc_sm())
#self.gui_frame.results_wgt.setLayout(self.reset_ioc_sm().layout())
self.expert_labels = self.parent.expert_labels
self.settings = self.parent.settings
@@ -139,7 +128,6 @@ class AppGui(QWidget):
#self.I_min = 0.002 HIPA
self.cafe.openPrepare()
self.cafe.open(['PRO-HUSH:LASTPWR','PRO-HUSH:TOTPWR',
'PRO:LASTSAVE', 'PPO-HUSH:TOTSAVE'])
@@ -147,11 +135,14 @@ class AppGui(QWidget):
self.cafe.openNowAndWait(0.1)
wgt = self.group_sector_qtabwidget()
self.magnet_tab_wgt = self.group_sector_qtabwidget()
self.gui_frame.measurement_layout.addWidget(
wgt, 0, 1, 6, 3, alignment=Qt.AlignTop)
self.magnet_tab_wgt, 0, 1, 6, 3, alignment=Qt.AlignTop)
self.magnet_tab_wgt.setCurrentIndex(1)
status_wgt = self.group_sector_status()
status_wgt.setFixedHeight(340)
self.gui_frame.measurement_layout.addWidget(
status_wgt, 2, 0, 2, 1, alignment=Qt.AlignTop) # | Qt.AlignHCenter)
@@ -175,7 +166,7 @@ class AppGui(QWidget):
g2_line = ["SH", "G2"]
g1_line = ["SH", "G1"]
sh_line = ["SH"]
try:
pv_master = self.settings.data["MASTER"]["status"]
self.mastership = self.cafe.getCache(pv_master)
@@ -191,31 +182,38 @@ class AppGui(QWidget):
# "Gantry 3": "G3", "OPTIS2": "O2"}
def receive_master_update(value, status, alarm_severity):
print("value", value, flush=True)
self.mastership = value
for key, wgt_val in self.gui_header.master_to_wgt.items():
master = self.gui_header.beam_current_wgt_group[wgt_val]
#print(key, wgt_val, "present object name", master.objectName(), flush=True)
#print(value)
if value in key:
master.setObjectName("ARAMIS")
master.style().polish(master)
self.gui_header.target_beamline = wgt_val
self.gui_header.timer.start(750)
self.gui_header.timer_count = 0
#print("NEW object name", master.objectName(), flush=True)
else:
if "BEAMLINE" not in master.objectName():
master.setObjectName("BEAMLINE")
master.style().polish(master)
#print("NEW object name", master.objectName(), flush=True)
self.gui_header.beam_current_wgt_dict[
wgt_val].trigger_monitor_str.emit(
self.sectorI_dict[wgt_val], 1, 0)
def enable_disable_beamline(sect, sector_line, value):
def reset_check_mini_post_sh():
#Redo "G2" in case first two elements
#are grayed by other beamlines
if "ON" in (self.sectorI_dict["G2"],
self.sectorI_dict["O2"],
self.sectorI_dict["PIF"]):
#self.sectorI_dict["G3"]):
self.gui_header.toSHOverlap("ON")
self.sectorI_dict[sect] = value
#print("sect/value", sect, value)
for sector in sector_line:
@@ -226,7 +224,6 @@ class AppGui(QWidget):
sector].standby_value_button.isEnabled():
self.table_sol_dict[
sector].standby_value_button.setEnabled(False)
print("DISABLE", sector)
if not is_master():
if self.table_sol_dict[
sector].restore_value_button.isEnabled():
@@ -244,7 +241,28 @@ class AppGui(QWidget):
self.table_sol_dict[
sector].restore_value_button.setEnabled(True)
_action = "OFF" if "Geschlossen" in self.sectorI_dict[
sector] else "ON"
if sector == "SH":
self.gui_header.toSH(_action)
elif sector == "G1":
self.gui_header.toG1(_action)
elif sector == "G2":
self.gui_header.toG2(_action)
reset_check_mini_post_sh()
elif sector == "O2":
self.gui_header.toO2(_action)
reset_check_mini_post_sh()
elif sector == "G3":
self.gui_header.toG3(_action)
elif sector == "PIF":
self.gui_header.toPIF(_action)
reset_check_mini_post_sh()
reset_check_mini_post_sh()
def receive_sh_update(value, status, alarm_severity):
enable_disable_beamline('SH', sh_line, value)
def receive_g1_update(value, status, alarm_severity):
@@ -288,6 +306,19 @@ class AppGui(QWidget):
receive_g1_update(pvd.value[0], pvd.alarmStatus, pvd.alarmSeverity)
pvd=self.cafe.getPVCache(self.settings.data["MASTER"]["status"], dt='str')
receive_master_update(pvd.value[0], pvd.alarmStatus, pvd.alarmSeverity)
@Slot()
def simulation_update(state):
if bool(state):
_color = self.gui_header.sim_color
else:
_color = self.gui_header.op_color
print("SIM STATE CHANGED", state, _color, flush=True)
self.gui_header.pf_off_color = _color
self.gui_header.color_pframe(_color)
print("SIM STATE CHANGED//", state, _color, flush=True)
self.gui_frame.simulation_checkbox.stateChanged.connect(simulation_update)
def receive_sec_state(handle, pv, pvdata):
pvsplit = pv.split("-")
@@ -377,7 +408,8 @@ class AppGui(QWidget):
qtot.setFont(fnt)
qgrid.addWidget(qtot, _row+1, 0, 1, 1)
qgrid.addWidget(
CAQLineEdit(self, pv_name="PRO-HUSH:LASTPWR", show_units=True),
CAQLineEdit(self, pv_name="PRO-HUSH:LASTPWR",
show_units=True),
_row+1, 1, 1, 1)
qgrid.addWidget(
CAQLineEdit(self, pv_name="PRO-HUSH:TOTPWR", show_units=True),
@@ -462,7 +494,7 @@ class AppGui(QWidget):
xstart = QDateTime(xdate)
qpinit = CAQLineEdit(self, pv_name=pv_pwr_last, show_units=False)
qpnow = CAQLineEdit(self, pv_name=pv_pwr_tot, show_units=False)
qpnow = CAQLineEdit(self, pv_name=pv_pwr_tot, show_units=False, notify_freq_hz=1)
qpsave = CAQLineEdit(self, pv_name=pv_pwr_saved, show_units=False)
qptotsave = CAQLineEdit(self, pv_name=pv_pwr_totsave, show_units=False)
@@ -474,8 +506,6 @@ class AppGui(QWidget):
#Time to allow cb_outtime to fire
time.sleep(0.2)
qptime.setFixedWidth(104)
#qtdis = QBasicTimer()
@@ -507,7 +537,8 @@ class AppGui(QWidget):
for sector in self.settings.data["header"][idx:idx_last]:
sector_wgt_dict[sector] = self.ca_table_sector_widget(sector=sector)
QApplication.processEvents()
sector_tab_widget = QTabWidget()
sector_tab_widget.setFont(self.font_gui)
sector_tab_widget.setStyleSheet("QTabBar {font-size: 12pt;}")
@@ -517,11 +548,7 @@ class AppGui(QWidget):
sector_tab_widget.addTab(sector_wgt_dict[sector], sector)
color = self.settings.data[sector]["color"]
sector_tab_widget.tabBar().setTabTextColor(i, QColor(color))
#sector_tab_widget.addTab(sector_wgt_dict["INJ2"], "RF")
#color = self.settings.data["INJ2"]["color"]
#sector_tab_widget.tabBar().setTabTextColor(
# len(self.settings.data["header"][idx:]), QColor(color))
return sector_tab_widget
@@ -609,8 +636,6 @@ class AppGui(QWidget):
QApplication.processEvents(QEventLoop.AllEvents, 1.0)
if not self.input_parameters['simulation']:
status, status_list, pv_list = _table.set_standby_values()
@@ -669,8 +694,8 @@ class AppGui(QWidget):
_delay = 0.09
pass
print(pv_dict['SOL:2'], flush=True)
print(_standby_values, flush=True)
#print(pv_dict['SOL:2'], flush=True)
#print(_standby_values, flush=True)
table_sol = CAQTableWidget(
self, pv_list=pv_dict['SOL:2'], show_units=True, notify_freq_hz=0,
notify_unison=False, scale_factor=1, show_timestamp=False,
@@ -694,14 +719,14 @@ class AppGui(QWidget):
self.table_sol_dict[sector] = table_sol
table_ist = CAQTableWidget(
self, pv_list=pv_dict['IST:2'], show_units=True, notify_freq_hz=2,
self, pv_list=pv_dict['IST:2'], show_units=True, notify_freq_hz=1,
notify_unison=True, scale_factor=1, show_timestamp=False,
init_column=False, pv_list_show=[False])
table_pwr = CAQTableWidget(
self, pv_list=pv_dict['PWR'], show_units=False, notify_freq_hz=0,
self, pv_list=pv_dict['PWR'], show_units=False, notify_freq_hz=1,
suffix = "kW",
notify_unison=False, scale_factor=0.001, show_timestamp=False,
notify_unison=True, scale_factor=0.001, show_timestamp=False,
init_column=True, init_list=pv_dict['PWR'], pv_list_show=[False])
table_pwr.init_value_button.setToolTip(