def __init__(self, parent=None, macros=None, **kwargs): super().__init__(parent=parent, macros=macros, ui_filename=COMPLETE_UI) self.setup_icons() self.btnErr.filenames = [ERR_MAIN] self.btnWarn.filenames = [WARN_MAIN] self.btnSysHistory.filenames = [ALARM_MAIN] self.btnSysHistory.base_macros = {'P': macros['P'], 'T': 'Sys'} self.btnModHistory.filenames = [ALARM_MAIN] self.btnModHistory.base_macros = {'P': macros['P'], 'T': 'Mod'} # Warning Groups self.ch_mod_std_warn_report = PyDMChannel( address='ca://' + macros['P'] + ':Mod-StdWarnGroup-Mon', value_slot=self.get_mod_std_warn_report) self.ch_mod_std_warn_report.connect() self.ch_sys_std_warn_report = PyDMChannel( address='ca://' + macros['P'] + ':Sys-StdWarnGroup-Mon', value_slot=self.get_sys_std_warn_report) self.ch_sys_std_warn_report.connect() self.ch_mod_ext_warn_report = PyDMChannel( address='ca://' + macros['P'] + ':Mod-ExtWarnGroup-Mon', value_slot=self.get_mod_ext_warn_report) self.ch_mod_ext_warn_report.connect() self.ch_sys_ext_warn_report = PyDMChannel( address='ca://' + macros['P'] + ':Sys-ExtWarnGroup-Mon', value_slot=self.get_sys_ext_warn_report) self.ch_sys_ext_warn_report.connect() # Error Groups self.ch_mod_std_error_report = PyDMChannel( address='ca://' + macros['P'] + ':Mod-StdErrGroup-Mon', value_slot=self.get_mod_std_error_report) self.ch_mod_std_error_report.connect() self.ch_sys_std_error_report = PyDMChannel( address='ca://' + macros['P'] + ':Sys-StdErrGroup-Mon', value_slot=self.get_sys_std_error_report) self.ch_sys_std_error_report.connect() self.ch_mod_ext_error_report = PyDMChannel( address='ca://' + macros['P'] + ':Mod-ExtErrGroup-Mon', value_slot=self.get_mod_ext_error_report) self.ch_mod_std_error_report.connect() self.ch_sys_ext_error_report = PyDMChannel( address='ca://' + macros['P'] + ':Sys-ExtErrGroup-Mon', value_slot=self.get_sys_ext_error_report) self.ch_sys_ext_error_report.connect()
def initializeCamera(self, new_camera): new_camera = str(new_camera) self._color_map_limit_sliders_need_config = True self.times = np.zeros(10) self.old_timestamp = 0 self.image_width = 0 #current width (width of ROI) self.image_max_width = 0 #full width. Only used to reset ROI to full. self.image_max_height = 0 #full height. Only used to reset ROI to full. self.image_data = np.zeros(0) self._average_counter = 0 self._average_buffer = np.ndarray(0) self._needs_auto_range = True self.imageChannel = self.cameras[new_camera]["image"] self.widthChannel = self.cameras[new_camera][ "roi_width"] or self.cameras[new_camera]["max_width"] self.maxWidthChannel = self.cameras[new_camera]["max_width"] self.maxHeightChannel = self.cameras[new_camera]["max_height"] self.roiXChannel = self.cameras[new_camera]["roi_x"] self.roiYChannel = self.cameras[new_camera]["roi_y"] self.roiWidthChannel = self.cameras[new_camera]["roi_width"] self.roiHeightChannel = self.cameras[new_camera]["roi_height"] self._channels = [ PyDMChannel(address=self.imageChannel, connection_slot=self.connectionStateChanged, waveform_slot=self.receiveImageWaveform, severity_slot=self.alarmSeverityChanged), PyDMChannel(address=self.widthChannel, value_slot=self.receiveImageWidth), PyDMChannel(address=self.maxWidthChannel, value_slot=self.receiveMaxWidth), PyDMChannel(address=self.maxHeightChannel, value_slot=self.receiveMaxHeight) ] if self.roiXChannel and self.roiYChannel and self.roiWidthChannel and self.roiHeightChannel: self._channels.extend([ PyDMChannel(address=self.roiXChannel, value_slot=self.receiveRoiX, value_signal=self.roi_x_signal, write_access_slot=self.roiWriteAccessChanged), PyDMChannel(address=self.roiYChannel, value_slot=self.receiveRoiY, value_signal=self.roi_y_signal), PyDMChannel(address=self.roiWidthChannel, value_slot=self.receiveRoiWidth, value_signal=self.roi_w_signal), PyDMChannel(address=self.roiHeightChannel, value_slot=self.receiveRoiHeight, value_signal=self.roi_h_signal) ]) self.ui.roiXLineEdit.setEnabled(True) self.ui.roiYLineEdit.setEnabled(True) self.ui.roiWLineEdit.setEnabled(True) self.ui.roiHLineEdit.setEnabled(True) else: self.ui.roiXLineEdit.clear() self.ui.roiXLineEdit.setEnabled(False) self.ui.roiYLineEdit.clear() self.ui.roiYLineEdit.setEnabled(False) self.ui.roiWLineEdit.clear() self.ui.roiWLineEdit.setEnabled(False) self.ui.roiHLineEdit.clear() self.ui.roiHLineEdit.setEnabled(False)
class Regatron(Display): def __init__(self, parent=None, macros=None, **kwargs): super().__init__(parent=parent, macros=macros, ui_filename=COMPLETE_UI) self.setup_icons() self.btnErr.filenames = [ERR_MAIN] self.btnWarn.filenames = [WARN_MAIN] self.btnSysHistory.filenames = [ALARM_MAIN] self.btnSysHistory.base_macros = {'P': macros['P'], 'T': 'Sys'} self.btnModHistory.filenames = [ALARM_MAIN] self.btnModHistory.base_macros = {'P': macros['P'], 'T': 'Mod'} # Warning Groups self.ch_mod_std_warn_report = PyDMChannel( address='ca://' + macros['P'] + ':Mod-StdWarnGroup-Mon', value_slot=self.get_mod_std_warn_report) self.ch_mod_std_warn_report.connect() self.ch_sys_std_warn_report = PyDMChannel( address='ca://' + macros['P'] + ':Sys-StdWarnGroup-Mon', value_slot=self.get_sys_std_warn_report) self.ch_sys_std_warn_report.connect() self.ch_mod_ext_warn_report = PyDMChannel( address='ca://' + macros['P'] + ':Mod-ExtWarnGroup-Mon', value_slot=self.get_mod_ext_warn_report) self.ch_mod_ext_warn_report.connect() self.ch_sys_ext_warn_report = PyDMChannel( address='ca://' + macros['P'] + ':Sys-ExtWarnGroup-Mon', value_slot=self.get_sys_ext_warn_report) self.ch_sys_ext_warn_report.connect() # Error Groups self.ch_mod_std_error_report = PyDMChannel( address='ca://' + macros['P'] + ':Mod-StdErrGroup-Mon', value_slot=self.get_mod_std_error_report) self.ch_mod_std_error_report.connect() self.ch_sys_std_error_report = PyDMChannel( address='ca://' + macros['P'] + ':Sys-StdErrGroup-Mon', value_slot=self.get_sys_std_error_report) self.ch_sys_std_error_report.connect() self.ch_mod_ext_error_report = PyDMChannel( address='ca://' + macros['P'] + ':Mod-ExtErrGroup-Mon', value_slot=self.get_mod_ext_error_report) self.ch_mod_std_error_report.connect() self.ch_sys_ext_error_report = PyDMChannel( address='ca://' + macros['P'] + ':Sys-ExtErrGroup-Mon', value_slot=self.get_sys_ext_error_report) self.ch_sys_ext_error_report.connect() # Warning def get_mod_ext_warn_report(self, value): self.lblModGenWarnExt.setText('\n'.join( get_report(value, EXTENDED_MAP, "Module extended"))) def get_sys_ext_warn_report(self, value): self.lblSysGenWarnExt.setText('\n'.join( get_report(value, EXTENDED_MAP, "System extended"))) def get_mod_std_warn_report(self, value): self.lblModGenWarnStd.setText('\n'.join( get_report(value, STANDARD_MAP, "Module standard"))) def get_sys_std_warn_report(self, value): self.lblSysGenWarnStd.setText('\n'.join( get_report(value, STANDARD_MAP, "System standard"))) # Error def get_mod_std_error_report(self, value): self.lblModGenErrStd.setText('\n'.join( get_report(value, STANDARD_MAP, "Module standard"))) def get_mod_ext_error_report(self, value): self.lblModGenErrExt.setText('\n'.join( get_report(value, EXTENDED_MAP, "Module extended"))) def get_sys_std_error_report(self, value): self.lblSysGenErrStd.setText('\n'.join( get_report(value, STANDARD_MAP, "System standard"))) def get_sys_ext_error_report(self, value): self.lblSysGenErrExt.setText('\n'.join( get_report(value, EXTENDED_MAP, "System extended"))) def setup_icons(self): REFRESH_ICON = IconFont().icon('refresh') # Overview self.btnSstate.setIcon(REFRESH_ICON) self.btnSCtrlMode.setIcon(REFRESH_ICON) self.btnMState.setIcon(REFRESH_ICON) self.btnMCtrlMode.setIcon(REFRESH_ICON) self.btnActIFace.setIcon(REFRESH_ICON) self.btnSave.setIcon(IconFont().icon('download')) self.btnClear.setIcon(IconFont().icon('eraser')) # Module self.btnMMV.setIcon(REFRESH_ICON) self.btnMMC.setIcon(REFRESH_ICON) self.btnMMinC.setIcon(REFRESH_ICON) self.btnMMP.setIcon(REFRESH_ICON) self.btnMMinV.setIcon(REFRESH_ICON) self.btnMMinP.setIcon(REFRESH_ICON) self.btnMRes.setIcon(REFRESH_ICON) self.btnNomDCV.setIcon(REFRESH_ICON) self.btnDCV.setIcon(REFRESH_ICON) self.btnMOV.setIcon(REFRESH_ICON) self.btnMOC.setIcon(REFRESH_ICON) self.btnMOP.setIcon(REFRESH_ICON) self.btnMVPRb.setIcon(REFRESH_ICON) self.btnMVLQ4Rb.setIcon(REFRESH_ICON) self.btnMCPRb.setIcon(REFRESH_ICON) self.btnMCQLRb.setIcon(REFRESH_ICON) self.btnMPPRb.setIcon(REFRESH_ICON) self.btnMPLQRb.setIcon(REFRESH_ICON) self.btnMRPRb.setIcon(REFRESH_ICON) # System self.PyDMPushButton_17.setIcon(REFRESH_ICON) self.PyDMPushButton_18.setIcon(REFRESH_ICON) self.PyDMPushButton_19.setIcon(REFRESH_ICON) self.PyDMPushButton_20.setIcon(REFRESH_ICON) self.PyDMPushButton_21.setIcon(REFRESH_ICON) self.PyDMPushButton_22.setIcon(REFRESH_ICON) self.PyDMPushButton_23.setIcon(REFRESH_ICON) self.PyDMPushButton_28.setIcon(REFRESH_ICON) self.PyDMPushButton_29.setIcon(REFRESH_ICON) self.PyDMPushButton_45.setIcon(REFRESH_ICON) self.PyDMPushButton_46.setIcon(REFRESH_ICON) self.PyDMPushButton_47.setIcon(REFRESH_ICON) self.PyDMPushButton_48.setIcon(REFRESH_ICON) self.PyDMPushButton_49.setIcon(REFRESH_ICON) self.PyDMPushButton_57.setIcon(REFRESH_ICON) self.PyDMPushButton_71.setIcon(REFRESH_ICON) self.PyDMPushButton_73.setIcon(REFRESH_ICON) # Advanced self.PyDMPushButton_41.setIcon(REFRESH_ICON) self.PyDMPushButton_50.setIcon(REFRESH_ICON) self.PyDMPushButton_51.setIcon(REFRESH_ICON) self.PyDMPushButton_52.setIcon(REFRESH_ICON)