def do_search(self): # For each widget inside the results frame, lets destroy them for widget in self.frmLT_result.findChildren(QWidget): widget.setParent(None) widget.deleteLater() for widget in self.frmBO_result.findChildren(QWidget): widget.setParent(None) widget.deleteLater() for widget in self.frmSR_result.findChildren(QWidget): widget.setParent(None) widget.deleteLater() for widget in self.frmDCL_result.findChildren(QWidget): widget.setParent(None) widget.deleteLater() # Grab the filter text filter_text = self.txt_filter.text() # For every entry in the dataset... for entry in self.BBB_PS_list: # Check if they match our filter if filter_text.upper() not in entry.upper(): continue # Create macros list dict_macro_BBB = { "PS_CON": entry, "PYTHON": "python" if platform.system() == "Windows" else "python3" } for i in range(1, len(self.BBB_PS_list[entry]) + 1): dict_macro_BBB["PS{}".format(i)] = self.BBB_PS_list[entry][i - 1] # Create a PyDMEmbeddedDisplay for this entry disp = PyDMEmbeddedDisplay(parent=self) PyDMApplication.instance().close_widget_connections(disp) disp.macros = json.dumps(dict_macro_BBB) disp.filename = 'PS_Controller.ui' disp.setMinimumWidth(700) disp.setMinimumHeight(40) disp.setMaximumHeight(100) # Add the Embedded Display to the Results Layout if "DCL" in entry: self.resultsDCL_layout.addWidget(disp) elif "SI" in entry: self.resultsSR_layout.addWidget(disp) elif "BO" in entry: self.resultsBO_layout.addWidget(disp) elif ("TB" in entry) or ("TS" in entry): self.resultsLT_layout.addWidget(disp) PyDMApplication.instance().establish_widget_connections(disp)
def __init__(self, parent=None, args=[], macros=None): super(TableDisplay, self).__init__(parent=parent, args=args, macros=macros) table_batch = len(devices) * 8 # if len(devices) * 8 < 30 else 30 horizontal_header_labels = [ 'Channel Name', 'Device Name', 'Device Alpha', 'Temperature', 'Temperature Raw' ] self.tdc = MBTempTableDataController( self.table, devices=devices, table_batch=table_batch, horizontal_header_labels=horizontal_header_labels) self.tfFilter.editingFinished.connect( lambda: self.filter(self.tfFilter.text())) self.btnNavLeft.clicked.connect(lambda: self.update_navbar(False)) self.btnNavLeft.setIcon(IconFont().icon('arrow-left')) self.btnNavRight.clicked.connect(lambda: self.update_navbar(True)) self.btnNavRight.setIcon(IconFont().icon('arrow-right')) PyDMApplication.instance().hide_nav_bar = True
def __init__(self, parent=None, args=None, macros=None): super(TableDisplay, self).__init__(parent=parent, args=args, macros=macros) table_batch = 0 for device in DEVICES: if not device.enable: continue for channel in device.channels: if not channel.enable: continue table_batch += 1 horizontal_header_labels = [ "Channel Name", "Device Name", "Device Alpha", "Temperature", ] # "Temperature Raw",] self.tdc = MBTempTableDataController( self.table, devices=DEVICES, table_batch=table_batch, horizontal_header_labels=horizontal_header_labels, ) self.tfFilter.editingFinished.connect( lambda: self.filter(self.tfFilter.text())) self.TempMax.valueChanged.connect( lambda: self.tdc.update_TempMaxMin(Maximum=self.TempMax.value())) self.TempMin.valueChanged.connect( lambda: self.tdc.update_TempMaxMin(Minimum=self.TempMin.value())) self.btnNavLeft.clicked.connect(lambda: self.update_navbar(False)) self.btnNavLeft.setIcon(IconFont().icon("arrow-left")) self.btnNavRight.clicked.connect(lambda: self.update_navbar(True)) self.btnNavRight.setIcon(IconFont().icon("arrow-right")) PyDMApplication.instance().hide_nav_bar = True
def __init__(self, parent=None, macros=None, args=None, average="Gamma Detectors"): super().__init__(parent=parent, args=args, macros=macros, ui_filename=OVERVIEW_UI) self.setWindowTitle("Overview of Time Bases") self.alpha = [0, 0, 0, 0, 0] # Initially doesn't show none graph self.average = average self.groups = ["{:0>2d}".format(sec) for sec in range(1, 21)] self.x = numpy.arange(len(self.groups)) self.width = 0.185 self.dict_pvs_tb = {} self.dict_macro_gamma = {} self.gamma_1 = [0] * 20 self.gamma_2 = [0] * 20 self.gamma_3 = [0] * 20 self.gamma_4 = [0] * 20 self.gamma_5 = [0] * 20 self.fig, self.ax = plt.subplots(figsize=(12, 8)) # self.fig.canvas.set_window_title("Overview") # self.fig.subplots_adjust(left=0.05, bottom=0.08, right=0.95, top=0.95) # Adjustments of graphics plt.subplots_adjust(left=0.1) # self.fig.text(0.03, 0.25, "Control of\n Graphic", ha="center") self.ani = FuncAnimation(fig=self.fig, func=self.animate, interval=10000) self.animate() self.checkButtons_setting() plt.show() if self.average == "Gamma Detectors": # If user chose 'Counting - Overview' for PV in range(1, 21): for s_sec in range(2): self.dict_pvs_tb["valueTB{}{}".format( PV, counters[s_sec] )] = "ca://SI-{:0>2d}{}:CO-Counter:TimeBase-SP".format( PV, counters[s_sec]) if PV != 20: self.dict_pvs_tb["valueTB{}M1".format( PV )] = "ca://SI-{:0>2d}M1:CO-Counter:TimeBase-SP".format(PV + 1) else: self.dict_pvs_tb["valueTB{}M1".format( PV)] = "ca://SI-01M1:CO-Counter:TimeBase-SP" for location in range(1, 21): for s_sec in range(len(Det_Location)): self.dict_macro_gamma["DET{}".format( s_sec)] = "SI-{:0>2d}{}:CO-Gamma".format( location, Det_Location[s_sec]) if s_sec < 3: self.dict_macro_gamma["TimeBase{}".format( s_sec)] = "{}".format( self.dict_pvs_tb["valueTB{}{}".format( location, counters[s_sec])]) a = PyDMChannel( address="ca://SI-{:0>2d}{}:CO-Gamma:Count-Mon".format( location, Det_Location[s_sec]), value_slot=partial(self.plot, location=location, det=s_sec), ) # Connect to Counting PVs a.connect() self.disp = PyDMEmbeddedDisplay( parent=self) # Creates the window of Time Bases PyDMApplication.instance().close_widget_connections(self.disp) self.disp.macros = json.dumps(self.dict_macro_gamma) self.disp.filename = LAYOUT_OVERVIEW_UI self.disp.setMinimumWidth(300) self.disp.setMinimumHeight(140) self.verticalLayout.addWidget(self.disp) PyDMApplication.instance().establish_widget_connections( self.disp) else: # If user chose some Average for location in range(1, 21): for s_sec in range(len(Det_Location)): a = PyDMChannel( address="ca://SI-{:0>2d}{}:CO-Gamma:{}-Mon".format( location, Det_Location[s_sec], self.average), value_slot=partial(self.plot, location=location, det=s_sec), ) # Connect to Averages PVs a.connect()