def makeBottomMenu(self): try: self.pushbutton.setParent(None) except: pass self.pushbutton = QtWidgets.QPushButton('Menu') self.pushbutton.setStyleSheet( "height: 13px;padding:3px;color: #FFFFFF;") menu = QtWidgets.QMenu() menu.addAction('Save Window as Svg', self.exportSvg) menu.addAction('Open Stepper Controller', self.newStepperController) #Theme self.themeAction = QtWidgets.QWidgetAction(menu) themes = [ a.split('.qss')[0] for a in os.listdir(path["themes"]) if '.qss' in a ] self.themeBox = QtWidgets.QComboBox() self.themeBox.addItems(themes) self.themeBox.currentIndexChanged['QString'].connect(self.setTheme) self.themeAction.setDefaultWidget(self.themeBox) menu.addAction(self.themeAction) self.pushbutton.setMenu(menu) self.userApplication = QtWidgets.QCheckBox("User App") self.userApplication.toggled['bool'].connect(self.jumpToApplication) self.statusBar.addPermanentWidget(self.userApplication) self.hexUploadButton = QtWidgets.QPushButton("Upload Hex") self.hexUploadButton.clicked.connect(self.uploadHex) self.statusBar.addPermanentWidget(self.hexUploadButton) self.speedbutton = QtWidgets.QComboBox() self.speedbutton.addItems(['Slow', 'Fast', 'Ultra']) self.speedbutton.setCurrentIndex(1) self.speedbutton.currentIndexChanged['int'].connect(self.setSpeed) self.statusBar.addPermanentWidget(self.speedbutton) self.statusBar.addPermanentWidget(self.pushbutton)
def __init__(self, parent=None,**kwargs): super(AppWindow, self).__init__(parent) self.setupUi(self) self.setTheme("default") #self.setTheme("material2") self.statusBar = self.statusBar() self.splash = kwargs.get('splash',None) global app self.fileBrowser = fileBrowser(thumbnail_directory = 'MCA_thumbnails',app=app, clickCallback = self.loadPlot,recordToHistory = self.recordToHistory, loadList = self.loadList) self.saveLayout.addWidget(self.fileBrowser) #Calibration Menu & storage self.calibrationEnabled = False self.calPoly = np.poly1d([1,0]) self.calPolyInv = np.poly1d([1,0]) self.calibrationMenu = QtWidgets.QMenu() self.y=[]; self.y2=[]; self.spectrumTime = time.time() self.offlineData = True self._browserPath = '.' self.saved={} self.thumbList={} self.markers=[] # PLOT creation self.createMainPlot() #self.createMainPlot('w','k') #Region Widget #self.regionLayout.setAlignment(QtCore.Qt.AlignTop) self.regionWindow = regionPopup.AppWindow(self,insertRegion=self.insertRegion,getData = self.getData,hltime = self.halflifeTime,changeDirectory = self.changeDirectory,enablePeriodicSpectrumSaving = self.enablePeriodicSpectrumSaving ) self.regionWindow.widgetLayout.setAlignment(QtCore.Qt.AlignTop) self.addDockWidget(QtCore.Qt.RightDockWidgetArea, self.regionWindow) #self.regionWindow.setFloating(True) self.regionWindow.close() #Spectrum History Widget self.historyWindow = historyPopup.AppWindow(self,regions = self.regionWindow.regions) self.addDockWidget(QtCore.Qt.RightDockWidgetArea, self.historyWindow) self.historyWindow.setFloating(True) #self.historyWindow.close() #Define some keyboard shortcuts for ease of use self.shortcutActions={} self.shortcuts={"+":self.summation,"s":self.start,"f":self.fit,"u":self.load,"r":self.insertRegion,"g":self.fitWithTail,"t":self.fitWithTail,"h":self.historyWindow.show,"Ctrl+S":self.save,"o":self.selectDevice} for a in self.shortcuts: shortcut = QtWidgets.QShortcut(QtGui.QKeySequence(a), self) shortcut.activated.connect(self.shortcuts[a]) self.shortcutActions[a] = shortcut # exporter self.exporter = PQG_ImageExporter(self.plot.plotItem)# pg.exporters.ImageExporter(self.plot.plotItem) #Auto-Update Menu self.autoUpdateMenu = QtGui.QMenu() #self.autoUpdateMenu.addAction("Interval",self.setAutoUpdateTime) self.autoUpdateTimerAction = QtWidgets.QWidgetAction(self.autoUpdateMenu) self.autoUpdateTimerInterval = QtWidgets.QSpinBox() self.autoUpdateTimerInterval.setMinimum(5);self.autoUpdateTimerInterval.setMaximum(3600);self.autoUpdateTimerInterval.setValue(constants.AUTOUPDATE_INTERVAL); self.autoUpdateTimerInterval.setSuffix(' S'); self.autoUpdateTimerInterval.valueChanged['int'].connect(self.setAutoUpdateInterval) self.autoUpdateTimerAction.setDefaultWidget(self.autoUpdateTimerInterval) self.autoUpdateMenu.addAction(self.autoUpdateTimerAction) self.autoUpdateSettings.setMenu(self.autoUpdateMenu) self.calibWindow = calPopup.AppWindow(self,application=self.setCalibration) self.splash.showMessage("<h2><font color='Black'>Connecting...</font></h2>", QtCore.Qt.AlignLeft, QtCore.Qt.black) self.splash.pbar.setValue(7) self.initializeCommunications() self.pending = { 'status':myTimer(constants.STATUS_UPDATE_INTERVAL), 'update':myTimer(constants.AUTOUPDATE_INTERVAL), 'current':myTimer(constants.CURRENT_UPDATE_INTERVAL), 'temperature':myTimer(constants.TEMPERATURE_UPDATE_INTERVAL), 'halflife':myTimer(self.regionWindow.decayInterval.value()), 'datadump':myTimer(self.regionWindow.saveAllInterval.value()*60) #convert minutes to seconds } self.temperature = decayTools.temperatureHandler() self.startTime = time.time() self.timer = QtCore.QTimer() self.timer.timeout.connect(self.updateEverything) self.timer.start(200) #Auto-Detector self.shortlist=MCALib.getFreePorts(None) self.deviceSelector.setList(self.shortlist,self.p) #self.loadPlot('DATA/212Bi.csv') #self.showGammaMarkers('137Cs') #self.loadPlot('DATA/eu152.dat') #self.loadList('DATA/list_sample.csv') self.splash.showMessage("<h2><font color='Black'>Ready!</font></h2>", QtCore.Qt.AlignLeft, QtCore.Qt.black) self.splash.pbar.setValue(8)
def makeBottomMenu(self): try:self.pushbutton.setParent(None) except:pass self.pushbutton = QtWidgets.QPushButton('Menu') menu = QtWidgets.QMenu() menu.addAction(self.controlDock.toggleViewAction()) menu.addAction(self.historyWindow.toggleViewAction()) menu.addAction('Set Square Wave', self.sqr1) if self.version_number>=2.0: menu.addAction('Set Threshold', self.set_threshold) menu.addSeparator() self.plotColorAction = QtWidgets.QAction('Light Theme', menu, checkable=True) self.plotColorAction.triggered.connect(self.setPlotColor) menu.addAction(self.plotColorAction) self.removeCalBox = QtWidgets.QAction('File Load: Remove Calibration', menu, checkable=True) self.removeCalBox.triggered.connect(menu.show) menu.addAction(self.removeCalBox) #self.pileUpAction = QtWidgets.QAction('PileUp Reject', menu, checkable=True) #self.pileUpAction.triggered.connect(self.pileUpRejection) #self.pileUpAction.triggered.connect(menu.show) #menu.addAction(self.pileUpAction) self.coincidencegate = QtWidgets.QAction('External Gate', menu, checkable=True) self.coincidencegate.triggered.connect(self.externalGate) self.coincidencegate.triggered.connect(menu.show) menu.addAction(self.coincidencegate) menu.addAction('Set Window Opacity', self.setOpacity) menu.addAction('Save Window as Svg', self.exportSvg) #Theme self.themeAction = QtWidgets.QWidgetAction(menu) themes = [a.split('.qss')[0] for a in os.listdir(path["themes"]) if '.qss' in a] self.themeBox = QtWidgets.QComboBox(); self.themeBox.addItems(themes) self.themeBox.currentIndexChanged['QString'].connect(self.setTheme) self.themeAction.setDefaultWidget(self.themeBox) menu.addAction(self.themeAction) #Alpha Markers self.markerAction = QtWidgets.QWidgetAction(menu) self.markerBox = QtWidgets.QComboBox(); self.markerBox.addItems(['Add Alpha Energy Guides']+list(constants.ALPHAS.keys())) self.markerBox.currentIndexChanged['QString'].connect(self.showAlphaMarkers) self.markerAction.setDefaultWidget(self.markerBox) menu.addAction(self.markerAction) #Gamma Markers self.markerActionG = QtWidgets.QWidgetAction(menu) self.markerBoxG = QtWidgets.QComboBox(); self.markerBoxG.addItems(['Add Gamma Energy Guides']+list(constants.GAMMAS.keys())) self.markerBoxG.currentIndexChanged['QString'].connect(self.showGammaMarkers) self.markerActionG.setDefaultWidget(self.markerBoxG) menu.addAction(self.markerActionG) #Graph Colour self.traceRow = traceRowWidget(self.curve) self.colAction = QtWidgets.QWidgetAction(menu) self.colAction.setDefaultWidget(self.traceRow) menu.addAction(self.colAction) #TRACE2 self.traceRow2 = traceRowWidget(self.curve2) self.colAction2 = QtWidgets.QWidgetAction(menu) self.colAction2.setDefaultWidget(self.traceRow2) menu.addAction(self.colAction2) # Quit menu.addAction('Exit', self.askBeforeQuit) self.pushbutton.setMenu(menu) self.extraLayout.addWidget(self.pushbutton) #self.statusBar.addPermanentWidget(self.pushbutton) self.deviceSelector = self.portSelectionDialog()