def _setup_status_wid(self): status_layout = QFormLayout(self.status_wid) status_layout.setHorizontalSpacing(20) status_layout.setVerticalSpacing(20) for bit, label in enumerate(_cstime.Const.HLTrigStatusLabels): led = SiriusLedAlert(self, self.get_pvname('Status-Mon'), bit) lab = QLabel(label, self) status_layout.addRow(led, lab)
def setupUI(self): width, height = self.determine_dialog_dimensions() self.setMinimumSize(width, height) self.setSizePolicy(QSizePolicy.Fixed, QSizePolicy.Fixed) self.setWindowTitle("About Mantid Workbench") self.setStyleSheet(f"""QDialog {{ background-color: rgb(190, 230, 190); }} QLabel{{ font: {self.rescale_w(14)}px; }} QPushButton{{ font: {self.rescale_w(14)}px; }} QCommandLinkButton{{ font: {self.rescale_w(22)}px; background-color: rgba(255, 255, 255, 0); border-radius: {self.rescale_w(15)}px; }} QCommandLinkButton:hover {{ background-color: rgba(45, 105, 45, 40); }}""") # version label section at th etop parent_layout = QVBoxLayout() parent_layout.addSpacerItem(QSpacerItem(self.rescale_w(20),self.rescale_h(70),vPolicy=QSizePolicy.Fixed)) self.lbl_version.setText("version ") self.lbl_version.setIndent(self.rescale_w(115)) self.lbl_version.setStyleSheet(f"""color: rgb(215, 215, 215); font: {self.rescale_w(28)}pt; font-weight: bold; font-size: {self.rescale_w(28)}px""") parent_layout.addWidget(self.lbl_version) parent_layout.addSpacerItem(QSpacerItem(self.rescale_w(20),self.rescale_h(40), vPolicy=QSizePolicy.MinimumExpanding)) # split into the two columns two_box_layout = QHBoxLayout() # left side Welcome and Tutorial left_layout = QVBoxLayout() left_layout.setContentsMargins(self.rescale_w(5), 0, self.rescale_w(10), 0) left_layout.setSpacing(0) # welcome label lbl_welcome = QLabel() lbl_welcome.setStyleSheet(f"color: rgb(45, 105, 45); font-size: {self.rescale_w(28)}px;") lbl_welcome.setText("Welcome") left_layout.addWidget(lbl_welcome) # release notes self.setup_command_link_button(self.clb_release_notes, "Release Notes", ':/images/Notepad-Bloc-notes-icon-48x48.png') left_layout.addWidget(self.clb_release_notes) # sample datasets self.setup_command_link_button(self.clb_sample_datasets, "Sample Datasets", ':/images/download-icon-48x48.png') left_layout.addWidget(self.clb_sample_datasets) # Tutorials Label lbl_tutorials = QLabel() lbl_tutorials.setStyleSheet(f"color: rgb(45, 105, 45); font-size: {self.rescale_w(28)}px;") lbl_tutorials.setText("Tutorials") left_layout.addWidget(lbl_tutorials) # Mantid Introduction self.setup_command_link_button(self.clb_mantid_introduction, "Mantid Introduction", ':/images/Misc-Tutorial-icon-48x48.png') left_layout.addWidget(self.clb_mantid_introduction) # Introduction to python self.setup_command_link_button(self.clb_python_introduction, "Introduction to Python", ':/images/Python-icon-48x48.png') left_layout.addWidget(self.clb_python_introduction) # Python in Mantid self.setup_command_link_button(self.clb_python_in_mantid, "Python In Mantid", ':/images/Circle_cog_48x48.png') left_layout.addWidget(self.clb_python_in_mantid) # Extending Mantid with python self.setup_command_link_button(self.clb_extending_mantid, "Extending Mantid with Python", ':/images/Plugin-Python-icon-48x48.png') left_layout.addWidget(self.clb_extending_mantid) # right hand side Setup and facility icons right_layout = QVBoxLayout() right_layout.setSpacing(0) # personal setup grp_personal_setup = QGroupBox() grp_personal_setup.setStyleSheet(f"""QGroupBox {{ border: {self.rescale_w(3)}px solid rgb(38, 128, 20);; border-radius: {self.rescale_w(10)}px; background-color: rgb(240, 240, 240); }} QGroupBox QLabel{{ font: {self.rescale_w(12)}px; color: rgb(121, 121, 121); }} QGroupBox QComboBox{{ font: {self.rescale_w(12)}px; }} font: {self.rescale_w(12)}px; """) grp_personal_setup_layout = QVBoxLayout() grp_personal_setup_layout.setContentsMargins(self.rescale_w(9), self.rescale_h(1), self.rescale_w(9), self.rescale_h(9)) grp_personal_setup_layout.setSpacing(0) grp_personal_setup.setLayout(grp_personal_setup_layout) lbl_personal_setup = QLabel() lbl_personal_setup.setStyleSheet(f"color: rgb(38, 128, 20);\nfont-size: {self.rescale_w(18)}px;") lbl_personal_setup.setText("Personal Setup") lbl_personal_setup.setAlignment(Qt.AlignHCenter) grp_personal_setup_layout.addWidget(lbl_personal_setup) personal_setup_form_layout = QFormLayout() personal_setup_form_layout.setHorizontalSpacing(self.rescale_w(5)) personal_setup_form_layout.setVerticalSpacing(self.rescale_h(5)) personal_setup_form_layout.setLabelAlignment(Qt.AlignRight) # default Facility lbl_default_facilty = QLabel() lbl_default_facilty.setText("Default Facility") personal_setup_form_layout.addRow(lbl_default_facilty, self.cb_facility) # default instrument lbl_default_instrument = QLabel() lbl_default_instrument.setText("Default Instrument") personal_setup_form_layout.addRow(lbl_default_instrument, self.cb_instrument) # Set Data Directories lbl_mud = QLabel() lbl_mud.setText("Set data directories") self.pb_manage_user_directories.setText("Manage User Directories") personal_setup_form_layout.addRow(lbl_mud, self.pb_manage_user_directories) # Usage data lbl_allow_usage_data = QLabel() lbl_allow_usage_data.setText("Report Usage Data") usagelayout = QHBoxLayout() usagelayout.setContentsMargins(0, 0, 0, 0) self.chk_allow_usage_data.setChecked(True) self.chk_allow_usage_data.setStyleSheet(f"padding: {self.rescale_w(4)}px;") usagelayout.addWidget(self.chk_allow_usage_data) usagelayout.addSpacerItem(QSpacerItem(self.rescale_w(40), self.rescale_h(20), hPolicy=QSizePolicy.Expanding)) self.lbl_privacy_policy.setText(r'<html><head/><body><p>' r'<a href="https://www.mantidproject.org/MantidProject:Privacy_policy' r'#Usage_Data_recorded_in_Mantid">' r'<span style=" text-decoration: underline; color:#0000ff;">' r'Privacy Policy</span></a></p></body></html>') self.lbl_privacy_policy.setOpenExternalLinks(False) usagelayout.addWidget(self.lbl_privacy_policy) personal_setup_form_layout.addRow(lbl_allow_usage_data,usagelayout) grp_personal_setup_layout.addLayout(personal_setup_form_layout) right_layout.addWidget(grp_personal_setup) right_layout.addSpacerItem(QSpacerItem(self.rescale_w(20), self.rescale_h(40), vPolicy=QSizePolicy.Expanding)) # facility icons # Row one icon_layout_top = QHBoxLayout() icon_layout_top.setContentsMargins(0, self.rescale_h(10), 0, 0) icon_layout_top.setSpacing(0) icon_layout_top.addWidget(self.create_label_with_image(112, 50, ':/images/ISIS_Logo_Transparent.gif')) icon_layout_top.addSpacerItem(QSpacerItem(self.rescale_w(10), self.rescale_h(20), hPolicy=QSizePolicy.Fixed)) icon_layout_top.addWidget(self.create_label_with_image(94, 50, ':/images/ess_logo_transparent_small.png')) icon_layout_top.addSpacerItem(QSpacerItem(self.rescale_w(40), 20,hPolicy=QSizePolicy.Expanding)) right_layout.addLayout(icon_layout_top) # Row two icon_layout_middle = QHBoxLayout() icon_layout_middle.setContentsMargins(0, self.rescale_h(10), 0, 0) icon_layout_middle.setSpacing(0) icon_layout_middle.addWidget(self.create_label_with_image(200, 30, ':/images/Ornl_hfir_sns_logo_small.png')) icon_layout_middle.addSpacerItem(QSpacerItem(self.rescale_w(40), self.rescale_h(20), hPolicy=QSizePolicy.Expanding)) right_layout.addLayout(icon_layout_middle) # Row three icon_layout_bottom = QHBoxLayout() icon_layout_bottom.setContentsMargins(0, self.rescale_h(10), 0, 0) icon_layout_bottom.setSpacing(0) icon_layout_bottom.addWidget(self.create_label_with_image(110, 40, ':/images/Tessella_Logo_Transparent.gif')) icon_layout_bottom.addSpacerItem(QSpacerItem(self.rescale_w(10), self.rescale_h(20), hPolicy=QSizePolicy.Fixed)) icon_layout_bottom.addWidget(self.create_label_with_image(50, 50, ':/images/ILL_logo.png')) icon_layout_bottom.addSpacerItem(QSpacerItem(self.rescale_w(10), self.rescale_h(20), hPolicy=QSizePolicy.Fixed)) icon_layout_bottom.addWidget(self.create_label_with_image(92, 50, ':/images/CSNS_Logo_Short.png')) icon_layout_bottom.addSpacerItem(QSpacerItem(self.rescale_w(40), self.rescale_h(20), hPolicy=QSizePolicy.Expanding)) right_layout.addLayout(icon_layout_bottom) # end the two box layout two_box_layout.addLayout(left_layout) two_box_layout.addLayout(right_layout) parent_layout.addLayout(two_box_layout) # footer footer_layout = QHBoxLayout() # do not show again do_not_show_layout = QVBoxLayout() do_not_show_layout.setContentsMargins(self.rescale_w(15), 0, 0, 0) do_not_show_layout.setSpacing(self.rescale_w(2)) do_not_show_layout.addSpacerItem(QSpacerItem(1,self.rescale_h(1), vPolicy=QSizePolicy.Expanding)) lbl_update = QLabel() lbl_update.setMinimumSize(self.rescale_w(400),0) lbl_update.setStyleSheet("color: rgb(25,125,25);") lbl_update.setText('You can revisit this dialog by selecting "About" on the Help menu.') lbl_update.setAlignment(Qt.AlignBottom) do_not_show_layout.addWidget(lbl_update) do_not_show_checkbox_layout = QHBoxLayout() self.chk_do_not_show_until_next_release.setChecked(True) do_not_show_checkbox_layout.addWidget(self.chk_do_not_show_until_next_release) do_not_show_checkbox_layout.addSpacerItem(QSpacerItem(self.rescale_w(10), self.rescale_h(2), hPolicy=QSizePolicy.Fixed)) lbl_do_not_show = QLabel() lbl_do_not_show.setStyleSheet("color: rgb(25,125,25);") lbl_do_not_show.setText('Do not show again until next release') do_not_show_checkbox_layout.addWidget(lbl_do_not_show) do_not_show_checkbox_layout.addSpacerItem(QSpacerItem(self.rescale_w(40),10, hPolicy=QSizePolicy.Expanding)) do_not_show_layout.addLayout(do_not_show_checkbox_layout) footer_layout.addLayout(do_not_show_layout) # Close button close_button_layout = QVBoxLayout() close_button_layout.addSpacerItem(QSpacerItem(20,self.rescale_h(15), vPolicy=QSizePolicy.Expanding)) self.pb_close.setText("Close") self.pb_close.setDefault(True) close_button_layout.addWidget(self.pb_close) footer_layout.addLayout(close_button_layout) footer_layout.addSpacerItem(QSpacerItem(self.rescale_w(100), self.rescale_h(20), hPolicy=QSizePolicy.Fixed)) parent_layout.addLayout(footer_layout) self.setLayout(parent_layout) self.setAttribute(Qt.WA_DeleteOnClose, True)
def _setupUi(self): lay_temp1 = QFormLayout() lay_temp1.setHorizontalSpacing(9) lay_temp1.setVerticalSpacing(9) lay_temp1.setLabelAlignment(Qt.AlignRight) lay_temp1.setFormAlignment(Qt.AlignTop) lb_temp1 = QLabel('Cell and Coupler\nTemperatures\nPT100', self) lb_temp1.setStyleSheet( 'font-weight:bold; qproperty-alignment:AlignCenter;') lay_temp1.addRow(lb_temp1) lims = self.chs['Cav Sts']['Temp']['Cells Limits'] tooltip = 'Interlock limits: \nMin: ' + str(lims[0]) + \ '°C, Max: '+str(lims[1])+'°C' for idx, cell in enumerate(self.chs['Cav Sts']['Temp']['Cells']): lbl = PyDMLabel(self, self.prefix+cell[0]) lbl.showUnits = True lbl.setStyleSheet('min-width:3.5em; max-width:3.5em;') led = PyDMLedMultiChannel( self, {self.prefix+cell[0]: {'comp': 'wt', 'value': lims}, self.prefix+cell[0].replace('T-Mon', 'TUp-Mon'): 0, self.prefix+cell[0].replace('T-Mon', 'TDown-Mon'): 0}) led.setToolTip(tooltip) hbox = QHBoxLayout() hbox.setAlignment(Qt.AlignLeft) hbox.addWidget(lbl) hbox.addWidget(led) lay_temp1.addRow('Cell '+str(idx + 1)+': ', hbox) ch_coup = self.chs['Cav Sts']['Temp']['Coupler'][0] lims_coup = self.chs['Cav Sts']['Temp']['Coupler Limits'] lb_coup = PyDMLabel(self, self.prefix+ch_coup) lb_coup.setStyleSheet('min-width:3.5em; max-width:3.5em;') lb_coup.showUnits = True led_coup = PyDMLedMultiChannel( self, {self.prefix+ch_coup: {'comp': 'wt', 'value': lims_coup}, self.prefix+ch_coup.replace('T-Mon', 'TUp-Mon'): 0, self.prefix+ch_coup.replace('T-Mon', 'TDown-Mon'): 0}) led_coup.setToolTip( 'Interlock limits: \n' 'Min: '+str(lims_coup[0])+'°C, Max: '+str(lims_coup[1])+'°C') hb_coup = QHBoxLayout() hb_coup.setAlignment(Qt.AlignLeft) hb_coup.addWidget(lb_coup) hb_coup.addWidget(led_coup) lay_temp1.addRow('Coupler: ', hb_coup) lay_temp2 = QFormLayout() lay_temp2.setHorizontalSpacing(9) lay_temp2.setVerticalSpacing(9) lay_temp2.setLabelAlignment(Qt.AlignRight) lay_temp2.setFormAlignment(Qt.AlignTop | Qt.AlignHCenter) lb_temp2 = QLabel('Cell\nTemperatures\nThermostats', self) lb_temp2.setStyleSheet( 'font-weight:bold; qproperty-alignment:AlignCenter;') lay_temp2.addRow(lb_temp2) for idx, cell in enumerate(self.chs['Cav Sts']['Temp']['Cells']): led = SiriusLedAlert(self) led.setToolTip('Interlock limits:\nMax: 60°C') led.channel = self.prefix+cell[0].replace('T-Mon', 'Tms-Mon') lay_temp2.addRow('Cell '+str(idx + 1)+': ', led) lay_dtemp = QFormLayout() lay_dtemp.setHorizontalSpacing(9) lay_dtemp.setVerticalSpacing(9) lay_dtemp.setLabelAlignment(Qt.AlignRight) lay_dtemp.setFormAlignment(Qt.AlignTop | Qt.AlignHCenter) lb_dtemp = QLabel('Disc\nTemperatures\nThermostats', self) lb_dtemp.setStyleSheet( 'font-weight:bold; qproperty-alignment:AlignCenter;') lay_dtemp.addRow(lb_dtemp) for idx, disc in enumerate(self.chs['Cav Sts']['Temp']['Discs']): led = SiriusLedAlert(self) led.setToolTip('Interlock limits:\nMax: 60°C') led.channel = self.prefix+disc lay_dtemp.addRow('Disc '+str(idx)+': ', led) self.led_hdflwrt1 = SiriusLedAlert( self, self.prefix+self.chs['Cav Sts']['FlwRt'][0]) self.led_hdflwrt2 = SiriusLedAlert( self, self.prefix+self.chs['Cav Sts']['FlwRt'][1]) self.led_hdflwrt3 = SiriusLedAlert( self, self.prefix+self.chs['Cav Sts']['FlwRt'][2]) lay_flwrt = QFormLayout() lay_flwrt.setHorizontalSpacing(9) lay_flwrt.setVerticalSpacing(9) lay_flwrt.setLabelAlignment(Qt.AlignRight) lay_flwrt.setFormAlignment(Qt.AlignTop) lb_flwrf = QLabel('Flow Switches', self) lb_flwrf.setStyleSheet( 'font-weight:bold; qproperty-alignment:AlignCenter;') lay_flwrt.addRow(lb_flwrf) lay_flwrt.addRow('Flow Switch 1: ', self.led_hdflwrt1) lay_flwrt.addRow('Flow Switch 2: ', self.led_hdflwrt2) lay_flwrt.addRow('Flow Switch 3: ', self.led_hdflwrt3) self.led_couppressure = SiriusLedAlert( self, self.prefix+self.chs['Cav Sts']['Vac']['Coupler ok']) self.led_pressure = SiriusLedAlert(self) self.led_pressure.setToolTip('Interlock limits:\nMax: 5e-7mBar') self.led_pressure.channel = \ self.prefix+self.chs['Cav Sts']['Vac']['Cells ok'] lay_vac = QFormLayout() lay_vac.setHorizontalSpacing(9) lay_vac.setVerticalSpacing(9) lay_vac.setLabelAlignment(Qt.AlignRight) lay_vac.setFormAlignment(Qt.AlignTop) lb_vac = QLabel('Vacuum', self) lb_vac.setStyleSheet( 'font-weight:bold; qproperty-alignment:AlignCenter;') lay_flwrt.addRow(lb_vac) lay_vac.addRow('Pressure Sensor: ', self.led_couppressure) lay_vac.addRow('Vacuum: ', self.led_pressure) lbl = QLabel('Cavity - Detailed Status', self) lbl.setStyleSheet( 'font-weight:bold; qproperty-alignment:AlignCenter;') lay = QGridLayout(self) lay.setHorizontalSpacing(30) lay.setVerticalSpacing(20) lay.addWidget(lbl, 0, 0, 1, 4) lay.addLayout(lay_temp1, 1, 0, 2, 1) lay.addLayout(lay_temp2, 1, 1, 2, 1) lay.addLayout(lay_dtemp, 1, 2, 2, 1) lay.addLayout(lay_flwrt, 1, 3) lay.addLayout(lay_vac, 2, 3) self.setStyleSheet(""" PyDMLabel{ qproperty-alignment: AlignLeft; } QLed{ max-width: 1.29em; } .QLabel{ max-height:4em; qproperty-alignment: AlignRight; }""")
def get_auto_correction_widget(self, parent): """.""" auto_wid = QWidget(parent) vbl2 = QVBoxLayout(auto_wid) tabw = QTabWidget(auto_wid) vbl2.addWidget(tabw) # Add Main Tab gpbx = QWidget(tabw) gpbx_lay = QVBoxLayout(gpbx) tabw.addTab(gpbx, 'Main') fbl = QFormLayout() fbl.setHorizontalSpacing(9) gpbx_lay.addLayout(fbl) lbl = QLabel('Freq. [Hz]', gpbx) wid = self.create_pair(gpbx, 'LoopFreq') fbl.addRow(lbl, wid) lbl = QLabel('Max. Orb. Distortion [um]', gpbx) wid = self.create_pair(gpbx, 'LoopMaxOrbDistortion') fbl.addRow(lbl, wid) wid = QWidget(gpbx) wid.setLayout(QHBoxLayout()) pbtn = QPushButton('Loop Performance', wid) pbtn.setIcon(qta.icon('mdi.poll')) wid.layout().addStretch() wid.layout().addWidget(pbtn) icon = qta.icon( 'fa5s.hammer', color=_util.get_appropriate_color(self.acc)) wind = create_window_from_widget( PerformanceWidget, title='Loop Performance', icon=icon) _util.connect_window( pbtn, wind, self, device=self.device, prefix=self.prefix) fbl.addRow(wid) # Add PID Tab gpbx = QWidget(tabw) gpbx_lay = QGridLayout(gpbx) gpbx_lay.setSpacing(1) tabw.addTab(gpbx, 'PID') gpbx_lay.addWidget(QLabel('CH', gpbx), 1, 0) gpbx_lay.addWidget(QLabel('CV', gpbx), 2, 0) tmpl = 'LoopPID{:s}{:s}' pairs = [] for i, k in enumerate(('Kp', 'Ki', 'Kd'), 1): gpbx_lay.addWidget( QLabel(k, gpbx), 0, i, alignment=Qt.AlignCenter) pair = self.create_pair(wid, tmpl.format(k, 'CH'), is_vert=True) pairs.append(pair) gpbx_lay.addWidget(pair, 1, i) pair = self.create_pair(wid, tmpl.format(k, 'CV'), is_vert=True) pairs.append(pair) gpbx_lay.addWidget(pair, 2, i) if self.acc in {'SI', 'BO'}: pair = self.create_pair( wid, tmpl.format(k, 'RF'), is_vert=True) pairs.append(pair) gpbx_lay.addWidget(pair, 3, i) if self.acc in {'SI', 'BO'}: gpbx_lay.addWidget(QLabel('RF', gpbx), 3, 0) pbc = QPushButton('SP') pbc.setStyleSheet('max-width:2.2em;') gpbx_lay.addWidget(pbc, 0, 0) pbc.setCheckable(True) pbc.setChecked(False) pbc.toggled.connect( lambda x: pbc.setText('RB' if x else 'SP')) for pair in pairs: pair.rb_wid.setVisible(False) pbc.toggled.connect(pair.rb_wid.setVisible) pbc.toggled.connect(pair.sp_wid.setHidden) gpbx_lay.setRowStretch(4, 2) return auto_wid