def __init__(self, parent=None, configuration=None): qt.QDialog.__init__(self, parent) self.setWindowTitle("Set print size preferences") if configuration is None: configuration = {"xOffset": 0.0, "yOffset": 0.0, "width": 0.5, "height": 0.5, "units": "page", "keepAspectRatio": True} layout = qt.QVBoxLayout(self) layout.setContentsMargins(0, 0, 0, 0) layout.setSpacing(0) self.configurationWidget = ObjectPrintConfigurationWidget(self) hbox = qt.QWidget(self) hboxLayout = qt.QHBoxLayout(hbox) self.okButton = qt.QPushButton(hbox) self.okButton.setText("Accept") self.okButton.setAutoDefault(False) self.rejectButton = qt.QPushButton(hbox) self.rejectButton.setText("Dismiss") self.rejectButton.setAutoDefault(False) self.okButton.clicked.connect(self.accept) self.rejectButton.clicked.connect(self.reject) hboxLayout.setContentsMargins(0, 0, 0, 0) hboxLayout.setSpacing(2) hboxLayout.addWidget(qt.HorizontalSpacer(hbox)) hboxLayout.addWidget(self.okButton) hboxLayout.addWidget(self.rejectButton) hboxLayout.addWidget(qt.HorizontalSpacer(hbox)) layout.addWidget(self.configurationWidget) layout.addWidget(hbox) self.setPrintConfiguration(configuration)
def __init__(self, parent=None, stack=False, actions=True): qt.QWidget.__init__(self, parent) if stack in [None, False]: file_browser = False else: file_browser = True self.mainLayout = qt.QVBoxLayout(self) self.mainLayout.setContentsMargins(2, 2, 2, 2) self.mainLayout.setSpacing(2) self.parametersWidget = SimpleFitBatchParameters(self) self.getParameters = self.parametersWidget.getParameters self.mainLayout.addWidget(self.parametersWidget) if actions: self.actionsBox = qt.QWidget(self) self.actionsBox.mainLayout = qt.QHBoxLayout(self.actionsBox) self.actionsBox.mainLayout.setContentsMargins(2, 2, 2, 2) self.actionsBox.mainLayout.setSpacing(2) self.closeButton = qt.QPushButton(self.actionsBox) self.closeButton.setText("Close") self.startButton = qt.QPushButton(self.actionsBox) self.startButton.setText("Start") self.actionsBox.mainLayout.addWidget( qt.HorizontalSpacer(self.actionsBox)) self.actionsBox.mainLayout.addWidget(self.closeButton) self.actionsBox.mainLayout.addWidget( qt.HorizontalSpacer(self.actionsBox)) self.actionsBox.mainLayout.addWidget(self.startButton) self.actionsBox.mainLayout.addWidget( qt.HorizontalSpacer(self.actionsBox)) self.mainLayout.addWidget(self.actionsBox) self.closeButton.clicked.connect(self.close)
def __init__(self, parent=None, name="McaSimpleFit", specfit=None, fl=0): qt.QWidget.__init__(self, parent) self.setWindowTitle(name) if specfit is None: self.specfit = Specfit.Specfit() else: self.specfit = specfit layout = qt.QVBoxLayout(self) ############## self.headerlabel = qt.QLabel(self) self.headerlabel.setAlignment(qt.Qt.AlignHCenter) self.setheader('<b>Fit of XXXXXXXXXX from Channel XXXXX to XXXX<\b>') ############## defaultFunctions = "SpecfitFunctions.py" if not os.path.exists(defaultFunctions): defaultFunctions = os.path.join(os.path.dirname(__file__), defaultFunctions) self.specfit.importfun(defaultFunctions) self.specfit.settheory('Area Gaussians') self.specfit.setbackground('Linear') fitconfig = {} fitconfig.update(self.specfit.fitconfig) fitconfig['WeightFlag'] = 1 fitconfig['McaMode'] = 1 self.specfit.configure(**fitconfig) self.specfitGui = SpecfitGui.SpecfitGui(self, config=1, status=1, buttons=0, specfit=self.specfit, eh=self.specfit.eh) layout.addWidget(self.headerlabel) layout.addWidget(self.specfitGui) hbox = qt.QWidget(self) hboxLayout = qt.QHBoxLayout(hbox) self.estimatebutton = qt.QPushButton(hbox) self.estimatebutton.setText("Estimate") hs1 = qt.HorizontalSpacer(hbox) self.fitbutton = qt.QPushButton(hbox) self.fitbutton.setText("Fit Again!") self.dismissbutton = qt.QPushButton(hbox) self.dismissbutton.setText("Dismiss") self.estimatebutton.clicked.connect(self.estimate) self.fitbutton.clicked.connect(self.fit) self.dismissbutton.clicked.connect(self.dismiss) self.specfitGui.sigSpecfitGuiSignal.connect(self.__anasignal) hs2 = qt.HorizontalSpacer(hbox) hboxLayout.addWidget(hs1) hboxLayout.addWidget(self.estimatebutton) hboxLayout.addWidget(self.fitbutton) hboxLayout.addWidget(self.dismissbutton) hboxLayout.addWidget(hs2) layout.addWidget(hbox) self.estimatebutton.hide()
def __buildActions(self): box = qt.QHBox(self) qt.HorizontalSpacer(box) self.__dismissButton = qt.QPushButton(box) qt.HorizontalSpacer(box) self.__dismissButton.setText("Close") self.__startButton = qt.QPushButton(box) qt.HorizontalSpacer(box) self.__startButton.setText("Start") self.__dismissButton.clicked.connect(self.close) self.__startButton.clicked.connect(self.start)
def addButtons(self): self.actions = 1 self.buttonsBox = qt.QWidget(self) l = qt.QHBoxLayout(self.buttonsBox) l.setAutoAdd(1) qt.HorizontalSpacer(self.buttonsBox) self.pauseButton = qt.QPushButton(self.buttonsBox) qt.HorizontalSpacer(self.buttonsBox) self.pauseButton.setText("Pause") self.abortButton = qt.QPushButton(self.buttonsBox) qt.HorizontalSpacer(self.buttonsBox) self.abortButton.setText("Abort") self.update()
def __buildActions(self): box = qt.QWidget(self) boxLayout = qt.QHBoxLayout(box) boxLayout.addWidget(qt.HorizontalSpacer(box)) self.__dismissButton = qt.QPushButton(box) boxLayout.addWidget(self.__dismissButton) boxLayout.addWidget(qt.HorizontalSpacer(box)) self.__dismissButton.setText("Close") self.__startButton = qt.QPushButton(box) boxLayout.addWidget(self.__startButton) boxLayout.addWidget(qt.HorizontalSpacer(box)) self.__startButton.setText("Start") self.mainLayout.addWidget(box) self.__dismissButton.clicked.connect(self.close) self.__startButton.clicked.connect(self.start)
def __init__(self, parent=None): qt.QDialog.__init__(self, parent) self.setWindowTitle("FFT Alignment Dialog") self.mainLayout = qt.QVBoxLayout(self) self.mainLayout.setContentsMargins(0, 0, 0, 0) self.parametersWidget = FFTAlignmentWindow(self) self.mainLayout.addWidget(self.parametersWidget) hbox = qt.QWidget(self) hboxLayout = qt.QHBoxLayout(hbox) hboxLayout.setContentsMargins(0, 0, 0, 0) hboxLayout.setSpacing(0) self.okButton = qt.QPushButton(hbox) self.okButton.setText("OK") self.okButton.setAutoDefault(False) self.dismissButton = qt.QPushButton(hbox) self.dismissButton.setText("Cancel") self.dismissButton.setAutoDefault(False) hboxLayout.addWidget(self.okButton) hboxLayout.addWidget(qt.HorizontalSpacer(hbox)) hboxLayout.addWidget(self.dismissButton) self.mainLayout.addWidget(hbox) self.dismissButton.clicked.connect(self.reject) self.okButton.clicked.connect(self.accept) self.setStack = self.parametersWidget.setStack self.setDummyStack()
def build(self): self.mainLayout = qt.QGridLayout(self) self.mainLayout.setContentsMargins(0, 0, 0, 0) self.mainLayout.setSpacing(0) label = qt.QLabel("Number of matrix iterations to perfom:") self._nIterations = qt.QSpinBox(self) self._nIterations.setMinimum(1) self._nIterations.setMaximum(5) self._nIterations.setValue(3) self.mainLayout.addWidget(label, 0, 0) self.mainLayout.addWidget(qt.HorizontalSpacer(self), 1, 0) self.mainLayout.addWidget(self._nIterations, 0, 2) label = qt.QLabel("Layer in wich the algorithm is to be applied:") self._layerOptions = qt.QComboBox(self) self._layerOptions.addItem("Auto") self.mainLayout.addWidget(label, 1, 0) #self.mainLayout.addWidget(qt.HorizontalSpacer(self), 1, 0) self.mainLayout.addWidget(self._layerOptions, 1, 2) label = qt.QLabel("Completing material to be used:") materialList = list(Elements.Material.keys()) materialList.sort() a = ["-"] for key in materialList: a.append(key) self._materialOptions = MyQComboBox(self, options=a) self._materialOptions.addItem("-") self.mainLayout.addWidget(label, 2, 0) self.mainLayout.addWidget(self._materialOptions, 2, 2) self._table = IterationTable(self) self.mainLayout.addWidget(self._table, 3, 0, 5, 5) self.mainLayout.addWidget(qt.VerticalSpacer(self), 10, 0)
def __init__(self, parent, data, x=None): qt.QDialog.__init__(self, parent) self.setWindowTitle("Savitzky-Golay Configuration Dialog") self.mainLayout = qt.QVBoxLayout(self) self.mainLayout.setContentsMargins(10, 10, 10, 10) self.mainLayout.setSpacing(2) self.__image = False if len(data.shape) == 2: spectrum = data.ravel() else: spectrum = data self.parametersWidget = SGWindow(self, spectrum, image=False, x=x) self.graph = self.parametersWidget.graph self.mainLayout.addWidget(self.parametersWidget) hbox = qt.QWidget(self) hboxLayout = qt.QHBoxLayout(hbox) hboxLayout.setContentsMargins(0, 0, 0, 0) hboxLayout.setSpacing(0) self.okButton = qt.QPushButton(hbox) self.okButton.setText("OK") self.okButton.setAutoDefault(False) self.dismissButton = qt.QPushButton(hbox) self.dismissButton.setText("Cancel") self.dismissButton.setAutoDefault(False) hboxLayout.addWidget(self.okButton) hboxLayout.addWidget(qt.HorizontalSpacer(hbox)) hboxLayout.addWidget(self.dismissButton) self.mainLayout.addWidget(hbox) self.dismissButton.clicked.connect(self.reject) self.okButton.clicked.connect(self.accept)
def __init__(self, parent=None): qt.QDialog.__init__(self, parent) self.setWindowTitle("Strip and SNIP Configuration Window") self.mainLayout = qt.QVBoxLayout(self) self.mainLayout.setContentsMargins(0, 0, 0, 0) self.mainLayout.setSpacing(2) self.parametersWidget = StripBackgroundWidget(self) self.setData = self.parametersWidget.setData self.getParameters = self.parametersWidget.getParameters self.setParameters = self.parametersWidget.setParameters self.mainLayout.addWidget(self.parametersWidget) hbox = qt.QWidget(self) hboxLayout = qt.QHBoxLayout(hbox) hboxLayout.setContentsMargins(0, 0, 0, 0) hboxLayout.setSpacing(2) self.okButton = qt.QPushButton(hbox) self.okButton.setText("OK") self.okButton.setAutoDefault(False) self.dismissButton = qt.QPushButton(hbox) self.dismissButton.setText("Cancel") self.dismissButton.setAutoDefault(False) hboxLayout.addWidget(qt.HorizontalSpacer(hbox)) hboxLayout.addWidget(self.okButton) hboxLayout.addWidget(self.dismissButton) self.mainLayout.addWidget(hbox) self.dismissButton.clicked.connect(self.reject) self.okButton.clicked.connect(self.accept)
def __init__(self, parent=None): qt.QWidget.__init__(self, parent) self.mainLayout = qt.QGridLayout(self) self.mainLayout.setContentsMargins(2, 2, 2, 2) self.mainLayout.setSpacing(2) font = qt.QFont(self.font()) font.setBold(True) #Function handling self.functionLabel = qt.QLabel(self) self.functionLabel.setFont(font) self.functionLabel.setText("Function:") self.addFunctionButton = qt.QPushButton(self) self.addFunctionButton.setText("ADD") #fit function self.fitFunctionLabel = qt.QLabel(self) self.fitFunctionLabel.setFont(font) self.fitFunctionLabel.setText("Fit:") self.fitFunctionCombo = qt.QComboBox(self) self.fitFunctionCombo.addItem(qt.safe_str("None")) self.fitFunctionCombo.setSizeAdjustPolicy( qt.QComboBox.AdjustToContents) self.fitFunctionCombo.setMinimumWidth(100) #background function self.backgroundLabel = qt.QLabel(self) self.backgroundLabel.setFont(font) self.backgroundLabel.setText("Background:") self.backgroundCombo = qt.QComboBox(self) self.backgroundCombo.addItem(qt.safe_str("None")) self.backgroundCombo.setSizeAdjustPolicy(qt.QComboBox.AdjustToContents) self.backgroundCombo.setMinimumWidth(100) #arrange everything self.mainLayout.addWidget(self.functionLabel, 0, 0) self.mainLayout.addWidget(self.addFunctionButton, 0, 1) self.mainLayout.addWidget(qt.HorizontalSpacer(self), 0, 2) self.mainLayout.addWidget(self.fitFunctionLabel, 0, 3) self.mainLayout.addWidget(self.fitFunctionCombo, 0, 4) self.mainLayout.addWidget(qt.HorizontalSpacer(self), 0, 5) self.mainLayout.addWidget(self.backgroundLabel, 0, 6) self.mainLayout.addWidget(self.backgroundCombo, 0, 7) self.configureButton = qt.QPushButton(self) self.configureButton.setText("CONFIGURE") self.mainLayout.addWidget(self.configureButton, 0, 8)
def __init__(self, parent=None): qt.QDialog.__init__(self, parent) self.setWindowTitle("Fit Strategy Configuration Window") self.mainLayout = qt.QVBoxLayout(self) self.mainLayout.setContentsMargins(0, 0, 0, 0) self.mainLayout.setSpacing(2) self.handlerWidget = StrategyHandlerWidget(self) # mimic behavior self.setFitConfiguration = self.handlerWidget.setFitConfiguration self.getParameters = self.handlerWidget.getParameters self.setParameters = self.handlerWidget.setParameters # the actions hbox = qt.QWidget(self) hboxLayout = qt.QHBoxLayout(hbox) hboxLayout.setContentsMargins(0, 0, 0, 0) hboxLayout.setSpacing(2) self.loadButton = qt.QPushButton(hbox) self.loadButton.setText("Load") self.loadButton.setAutoDefault(False) self.loadButton.setToolTip( "Read the strategy parameters from other fit configuration file") self.okButton = qt.QPushButton(hbox) self.okButton.setText("OK") self.okButton.setAutoDefault(False) self.dismissButton = qt.QPushButton(hbox) self.dismissButton.setText("Cancel") self.dismissButton.setAutoDefault(False) hboxLayout.addWidget(self.loadButton) hboxLayout.addWidget(qt.HorizontalSpacer(hbox)) hboxLayout.addWidget(self.okButton) hboxLayout.addWidget(self.dismissButton) hboxLayout.addWidget(qt.HorizontalSpacer(hbox)) # layout self.mainLayout.addWidget(self.handlerWidget) self.mainLayout.addWidget(hbox) # connect self.loadButton.clicked.connect(self.load) self.dismissButton.clicked.connect(self.reject) self.okButton.clicked.connect(self.accept)
def __init__(self, parent=None, current="", curves=[]): qt.QDialog.__init__(self, parent) self.setWindowTitle("Rename Curve %s" % current) self.curves = curves layout = qt.QVBoxLayout(self) self.lineEdit = qt.QLineEdit(self) self.lineEdit.setText(current) self.hbox = qt.QWidget(self) self.hboxLayout = qt.QHBoxLayout(self.hbox) self.hboxLayout.addWidget(qt.HorizontalSpacer(self.hbox)) self.okButton = qt.QPushButton(self.hbox) self.okButton.setText('OK') self.hboxLayout.addWidget(self.okButton) self.cancelButton = qt.QPushButton(self.hbox) self.cancelButton.setText('Dismiss') self.hboxLayout.addWidget(self.cancelButton) self.hboxLayout.addWidget(qt.HorizontalSpacer(self.hbox)) layout.addWidget(self.lineEdit) layout.addWidget(self.hbox) self.okButton.clicked.connect(self.preAccept) self.cancelButton.clicked.connect(self.reject)
def __init__(self, parent=None, n=1): qt.QWidget.__init__(self, parent) self.mainLayout = qt.QHBoxLayout(self) self.mainLayout.setContentsMargins(0, 0, 0, 0) self.mainLayout.setSpacing(0) self.firstButton = qt.QPushButton(self) self.firstButton.setIcon(qt.QIcon(qt.QPixmap(icon_first))) self.previousButton = qt.QPushButton(self) self.previousButton.setIcon(qt.QIcon(qt.QPixmap(icon_previous))) self.lineEdit = qt.QLineEdit(self) self.lineEdit.setFixedWidth(self.lineEdit.fontMetrics().width('%05d' % n)) validator = qt.QIntValidator(1, n, self.lineEdit) self.lineEdit.setText("1") self._oldIndex = 0 self.lineEdit.setValidator(validator) self.label = qt.QLabel(self) self.label.setText("of %d" % n) self.nextButton = qt.QPushButton(self) self.nextButton.setIcon(qt.QIcon(qt.QPixmap(icon_next))) self.lastButton = qt.QPushButton(self) self.lastButton.setIcon(qt.QIcon(qt.QPixmap(icon_last))) self.mainLayout.addWidget(qt.HorizontalSpacer(self)) self.mainLayout.addWidget(self.firstButton) self.mainLayout.addWidget(self.previousButton) self.mainLayout.addWidget(self.lineEdit) self.mainLayout.addWidget(self.label) self.mainLayout.addWidget(self.nextButton) self.mainLayout.addWidget(self.lastButton) self.mainLayout.addWidget(qt.HorizontalSpacer(self)) self.firstButton.clicked.connect(self._firstClicked) self.previousButton.clicked.connect(self._previousClicked) self.nextButton.clicked.connect(self._nextClicked) self.lastButton.clicked.connect(self._lastClicked) self.lineEdit.editingFinished.connect(self._textChangedSlot)
def __init__(self, parent, legends, motorValues): """ legends List contains Plotnames motorValues List contains names and values of the motors """ qt.QWidget.__init__(self, parent) self.setWindowTitle("Motor Info Plugin") if len(legends) != len(motorValues): print( 'Consistency error: legends and motorValues do not have same length!' ) self.numCurves = len(legends) # Buttons self.buttonAddColumn = qt.QPushButton("Add", self) self.buttonDeleteColumn = qt.QPushButton("Del", self) self.buttonUpdate = qt.QPushButton( qt.QIcon(qt.QPixmap(IconDict["reload"])), '', self) # Table self.table = MotorInfoTable(self, self.numCurves, 4, legends, motorValues) # Layout self.mainLayout = qt.QGridLayout(self) self.mainLayout.setContentsMargins(1, 1, 1, 1) self.mainLayout.setSpacing(2) self.buttonLayout = qt.QHBoxLayout(None) self.buttonLayout.setSpacing(1) # Add widgets to layour self.mainLayout.addWidget(self.table, 0, 0) self.mainLayout.addLayout(self.buttonLayout, 1, 0) self.buttonLayout.addWidget(self.buttonUpdate) self.buttonLayout.addWidget(self.buttonAddColumn) self.buttonLayout.addWidget(self.buttonDeleteColumn) self.buttonLayout.addWidget(qt.HorizontalSpacer(self)) self.resize(700, 400) # Create shortcuts self.updateShortCut = qt.QShortcut(qt.QKeySequence('F5'), self) self.addColShortCut = qt.QShortcut(qt.QKeySequence('Ctrl++'), self) self.delColShortCut = qt.QShortcut(qt.QKeySequence('Ctrl+-'), self) # Make connections self.buttonAddColumn.clicked.connect(self.table.addColumn) self.buttonDeleteColumn.clicked.connect(self.table.delColumn) self.addColShortCut.activated.connect(self.table.addColumn) self.delColShortCut.activated.connect(self.table.delColumn)
def __init__(self, parent=None, options=[1, 2, 3, 4, 5, 10]): qt.QDialog.__init__(self, parent) self.setWindowTitle("NNMA Configuration Dialog") self.mainLayout = qt.QVBoxLayout(self) self.mainLayout.setContentsMargins(11, 11, 11, 11) self.mainLayout.setSpacing(0) self.infoButton = qt.QPushButton(self) self.infoButton.setAutoDefault(False) self.infoButton.setText('About NNMA') self.mainLayout.addWidget(self.infoButton) self.infoButton.clicked.connect(self._showInfo) # self.methodOptions = qt.QGroupBox(self) self.methodOptions.setTitle('NNMA Method to use') self.methods = [ 'RRI', 'NNSC', 'NMF', 'SNMF', 'NMFKL', 'FNMAI', 'ALS', 'FastHALS', 'GDCLS' ] self.methodOptions.mainLayout = qt.QGridLayout(self.methodOptions) self.methodOptions.mainLayout.setContentsMargins(0, 0, 0, 0) self.methodOptions.mainLayout.setSpacing(2) self.buttonGroup = qt.QButtonGroup(self.methodOptions) i = 0 for item in self.methods: rButton = qt.QRadioButton(self.methodOptions) self.methodOptions.mainLayout.addWidget(rButton, 0, i) #self.l.setAlignment(rButton, qt.Qt.AlignHCenter) if i == 1: rButton.setChecked(True) rButton.setText(item) self.buttonGroup.addButton(rButton) self.buttonGroup.setId(rButton, i) i += 1 self.buttonGroup.buttonPressed[int].connect(self._slot) self.mainLayout.addWidget(self.methodOptions) # NNMA configuration parameters self.nnmaConfiguration = qt.QGroupBox(self) self.nnmaConfiguration.setTitle('NNMA Configuration') self.nnmaConfiguration.mainLayout = qt.QGridLayout( self.nnmaConfiguration) self.nnmaConfiguration.mainLayout.setContentsMargins(0, 0, 0, 0) self.nnmaConfiguration.mainLayout.setSpacing(2) label = qt.QLabel(self.nnmaConfiguration) label.setText('Tolerance (0<eps<1000:') self._tolerance = qt.QLineEdit(self.nnmaConfiguration) validator = qt.QDoubleValidator(self._tolerance) self._tolerance.setValidator(validator) self._tolerance._validator = validator self._tolerance.setText("0.001") self.nnmaConfiguration.mainLayout.addWidget(label, 0, 0) self.nnmaConfiguration.mainLayout.addWidget(self._tolerance, 0, 1) label = qt.QLabel(self.nnmaConfiguration) label.setText('Maximum iterations:') self._maxIterations = qt.QSpinBox(self.nnmaConfiguration) self._maxIterations.setMinimum(1) self._maxIterations.setMaximum(1000) self._maxIterations.setValue(100) self.nnmaConfiguration.mainLayout.addWidget(label, 1, 0) self.nnmaConfiguration.mainLayout.addWidget(self._maxIterations, 1, 1) self.mainLayout.addWidget(self.nnmaConfiguration) #built in speed options self.speedOptions = qt.QGroupBox(self) self.speedOptions.setTitle("Speed Options") self.speedOptions.mainLayout = qt.QGridLayout(self.speedOptions) self.speedOptions.mainLayout.setContentsMargins(0, 0, 0, 0) self.speedOptions.mainLayout.setSpacing(2) labelPC = qt.QLabel(self) labelPC.setText("Number of PC:") self.nPC = qt.QSpinBox(self.speedOptions) self.nPC.setMinimum(0) self.nPC.setValue(10) self.nPC.setMaximum(40) self.binningLabel = qt.QLabel(self.speedOptions) self.binningLabel.setText("Spectral Binning:") self.binningCombo = qt.QComboBox(self.speedOptions) for option in options: self.binningCombo.addItem("%d" % option) self.speedOptions.mainLayout.addWidget(labelPC, 0, 0) self.speedOptions.mainLayout.addWidget(self.nPC, 0, 1) #self.speedOptions.mainLayout.addWidget(qt.HorizontalSpacer(self), 0, 2) self.speedOptions.mainLayout.addWidget(self.binningLabel, 1, 0) self.speedOptions.mainLayout.addWidget(self.binningCombo, 1, 1) self.binningCombo.setEnabled(True) #the OK button hbox = qt.QWidget(self) hboxLayout = qt.QHBoxLayout(hbox) hboxLayout.setContentsMargins(0, 0, 0, 0) hboxLayout.setSpacing(0) self.okButton = qt.QPushButton(hbox) self.okButton.setAutoDefault(False) self.okButton.setText("Accept") hboxLayout.addWidget(qt.HorizontalSpacer(hbox)) hboxLayout.addWidget(self.okButton) self.dismissButton = qt.QPushButton(hbox) self.dismissButton.setAutoDefault(False) self.dismissButton.setText("Dismiss") hboxLayout.addWidget(qt.HorizontalSpacer(hbox)) hboxLayout.addWidget(self.dismissButton) hboxLayout.addWidget(qt.HorizontalSpacer(hbox)) self.mainLayout.addWidget(self.speedOptions) self.mainLayout.addWidget(hbox) self.okButton.clicked.connect(self.accept) self.dismissButton.clicked.connect(self.reject) self._infoDocument = qt.QTextEdit() self._infoDocument.setReadOnly(True) self._infoDocument.setText(NNMAModule.__doc__) self._infoDocument.hide() self.mainLayout.addWidget(self._infoDocument)
def __init__(self, parent, ddict, llist, plugin): qt.QDialog.__init__(self, parent) self.setWindowTitle('Alignment Window') nCols = 2 nRows = len(ddict) self.plugin = plugin # Buttons buttonSave = qt.QPushButton('Save') buttonSave.setToolTip('Shortcut: CTRL+S\n' +'Save shifts to file') buttonSave.setShortcut(qt.Qt.CTRL + qt.Qt.Key_S) buttonLoad = qt.QPushButton('Load') buttonLoad.setToolTip('Shortcut: CTRL+O\n' +'Load shifts from file') buttonLoad.setShortcut(qt.Qt.CTRL + qt.Qt.Key_O) buttonStore = qt.QPushButton('Store') buttonStore.setToolTip('Shortcut: ALT+S\n' +'Store shifts in memory.\n') buttonStore.setShortcut(qt.Qt.ALT + qt.Qt.Key_S) buttonApply = qt.QPushButton('Apply') buttonApply.setToolTip('Shortcut: CTRL+Return\n' +'Apply shift to curves present' +' in the plot window') buttonApply.setShortcut(qt.Qt.CTRL + qt.Qt.Key_Return) buttonCancel = qt.QPushButton('Cancel') buttonCancel.setToolTip('Shortcut: ESC\n' +'Closes the window') buttonCalc = qt.QPushButton('Calculate') buttonCalc.setToolTip('Shortcut: F5') buttonCalc.setShortcut(qt.Qt.Key_F5) # Table self.shiftTab = qt.QTableWidget(nRows, nCols) self.shiftTab.verticalHeader().hide() self.shiftTab.horizontalHeader().setStretchLastSection(True) self.shiftTab.setHorizontalHeaderLabels(['Legend','Shift']) # Shift Method selector self.shiftMethodComboBox = qt.QComboBox() self.shiftMethodComboBox.addItems( ['Shift x-range', 'Inverse FFT shift']) shiftMethodToolTip =\ ('Select the method that shifts the spectra\n\n' +'Shift x-range:\n' +' Directly applies the shift to the data\'s\n' +' x-range\n' +'Inverse FFT shift:\n' +' Shifts the spectra by multiplying a\n' +' phase factor to their Fourier transform. The result is\n' +' transformed back to real space. Recommended for data with\n' +' resp. regions with constant background.') self.shiftMethodComboBox.setToolTip(shiftMethodToolTip) # Alignment Method selector self.alignmentMethodComboBox = qt.QComboBox() self.alignmentMethodComboBox.addItems( ['FFT', 'MAX', 'FIT', 'FIT DRV']) alignmentMethodToolTip =\ ('Select the method used to calculate the shift is calculated.\n\n' +'FFT:\n' +' Calculates the correlation between two curves using its\n' +' Fourier transform. The shift is proportional to the distance of\n' +' the correlation function\'s maxima.\n' +'MAX:\n' +' Determines the shift as the distance between the maxima of\n' +' two peaks\n' +'FIT:\n' +' Guesses the most prominent feature in a spectrum and tries\n' +' to fit it with a Gaussian peak. Before the fit is perform, the\n' +' background is substracted. The shift is given by the difference\n' +' of the center of mass between two peaks.\n' +'FIT DRV:\n' +' Like FIT, but the fit is performed on the derivate of the\n' +' spectrum. Recommended procedure for XAFS data.') self.alignmentMethodComboBox.setToolTip(alignmentMethodToolTip) # Fill table with data self.setDict(llist, ddict) self.shiftTab.resizeColumnToContents(self._colLegend) self.shiftTab.resizeColumnToContents(self._colShiftLegend) #Layouts topLayout = qt.QHBoxLayout() topLayout.addWidget(buttonCalc) topLayout.addWidget(qt.HorizontalSpacer()) topLayout.addWidget(qt.QLabel('Alignment method:')) topLayout.addWidget(self.alignmentMethodComboBox) topLayout.addWidget(qt.QLabel('Shift method:')) topLayout.addWidget(self.shiftMethodComboBox) buttonLayout = qt.QHBoxLayout() buttonLayout.addWidget(buttonSave) buttonLayout.addWidget(buttonLoad) buttonLayout.addWidget(qt.HorizontalSpacer()) buttonLayout.addWidget(buttonApply) buttonLayout.addWidget(buttonStore) buttonLayout.addWidget(buttonCancel) mainLayout = qt.QVBoxLayout() mainLayout.addLayout(topLayout) mainLayout.addWidget(self.shiftTab) mainLayout.addLayout(buttonLayout) mainLayout.setContentsMargins(1,1,1,1) self.setLayout(mainLayout) # Connects self.shiftTab.cellChanged.connect(self.validateInput) buttonApply.clicked.connect(self.accept) buttonCancel.clicked.connect(self.reject) buttonStore.clicked.connect(self.store) buttonSave.clicked.connect(self.saveDict) buttonLoad.clicked.connect(self.loadDict) # ..to Plugin instance buttonCalc.clicked.connect(self._triggerCalculateShiftClickedSlot) self.alignmentMethodComboBox.activated['QString'].\ connect(self.triggerCalculateShift)
def __init__(self, parent=None, energy=None, threshold=None, useviewer=None, name="Peak Identifier"): qt.QWidget.__init__(self, parent) self.setWindowTitle(name) self.setWindowIcon(qt.QIcon(qt.QPixmap(IconDict['gioconda16']))) if energy is None: energy = 5.9 if threshold is None: threshold = 0.030 if useviewer is None: useviewer = 0 self.__useviewer = useviewer layout = qt.QVBoxLayout(self) #heading self.__energyHBox = qt.QWidget(self) hbox = self.__energyHBox hbox.layout = qt.QHBoxLayout(hbox) hbox.layout.setContentsMargins(0, 0, 0, 0) hbox.layout.setSpacing(0) layout.addWidget(hbox) hbox.layout.addWidget(qt.HorizontalSpacer(hbox)) l1 = qt.QLabel(hbox) l1.setText('<b><nobr>Energy (keV)</nobr></b>') hbox.layout.addWidget(l1) self.energy = MyQLineEdit(hbox) self.energy.setText("%.3f" % energy) self.energy._validator = qt.CLocaleQDoubleValidator(self.energy) self.energy.setValidator(self.energy._validator) self.energy.setToolTip('Press enter to validate your energy') hbox.layout.addWidget(self.energy) hbox.layout.addWidget(qt.HorizontalSpacer(hbox)) self.energy.editingFinished.connect(self._energySlot) #parameters self.__hbox2 = qt.QWidget(self) hbox2 = self.__hbox2 layout.addWidget(hbox2) hbox2.layout = qt.QHBoxLayout(hbox2) hbox2.layout.setContentsMargins(0, 0, 0, 0) hbox2.layout.setSpacing(0) font = hbox2.font() font.setBold(1) hbox2.setFont(font) l2 = qt.QLabel(hbox2) l2.setText('Energy Threshold (eV)') self.threshold = qt.QSpinBox(hbox2) self.threshold.setMinimum(0) self.threshold.setMaximum(1000) self.threshold.setValue(int(threshold * 1000)) self.k = qt.QCheckBox(hbox2) self.k.setText('K') self.k.setChecked(1) self.l1 = qt.QCheckBox(hbox2) self.l1.setText('L1') self.l1.setChecked(1) self.l2 = qt.QCheckBox(hbox2) self.l2.setText('L2') self.l2.setChecked(1) self.l3 = qt.QCheckBox(hbox2) self.l3.setText('L3') self.l3.setChecked(1) self.m = qt.QCheckBox(hbox2) self.m.setText('M') self.m.setChecked(1) self.threshold.valueChanged[int].connect(self._thresholdSlot) self.k.clicked.connect(self.mySlot) self.l1.clicked.connect(self.mySlot) self.l2.clicked.connect(self.mySlot) self.l3.clicked.connect(self.mySlot) self.m.clicked.connect(self.mySlot) hbox2.layout.addWidget(l2) hbox2.layout.addWidget(self.threshold) hbox2.layout.addWidget(self.k) hbox2.layout.addWidget(self.l1) hbox2.layout.addWidget(self.l2) hbox2.layout.addWidget(self.l3) hbox2.layout.addWidget(self.m) if self.__useviewer: self.__browsertext = qt.QTextEdit(self) layout.addWidget(self.__browsertext) self.setEnergy(energy)
def configureFilter(self): if self._widget is None: # construct a widget msg = qt.QDialog() msg.setWindowTitle("Deglitch Configuration") msgLayout = qt.QGridLayout() buttonLayout = qt.QHBoxLayout() inpThreshold = qt.QDoubleSpinBox() inpThreshold.setRange(0.,10.) inpThreshold.setSingleStep(.1) inpThreshold.setValue(self.threshold) inpThreshold.setToolTip('Increase width for broad spikes') inpWidth = qt.QSpinBox() inpWidth.setRange(1,101) inpWidth.setSingleStep(2) inpWidth.setValue(self.width) inpWidth.setToolTip('Set low threshold for multiple spikes of different markedness') labelWidth = qt.QLabel('Width (must be odd)') labelThreshold = qt.QLabel('Threshold (multiple of deviation)') buttonOK = qt.QPushButton('Ok') buttonOK.clicked.connect(msg.accept) buttonCancel = qt.QPushButton('Cancel') buttonCancel.clicked.connect(msg.reject) allActiveBG = qt.QButtonGroup() buttonAll = qt.QCheckBox('Apply to All') buttonActive = qt.QCheckBox('Apply to Active') allActiveBG.addButton(buttonAll, 0) allActiveBG.addButton(buttonActive, 1) buttonActive.setChecked(True) buttonLayout.addWidget(qt.HorizontalSpacer()) buttonLayout.addWidget(buttonOK) buttonLayout.addWidget(buttonCancel) msgLayout.addWidget(labelWidth,0,0) msgLayout.addWidget(inpWidth,0,1) msgLayout.addWidget(labelThreshold,1,0) msgLayout.addWidget(inpThreshold,1,1) msgLayout.addWidget(buttonActive,2,0) msgLayout.addWidget(buttonAll,2,1) msgLayout.addLayout(buttonLayout,3,0,1,2) msg.setLayout(msgLayout) msg.inputWidth = inpWidth msg.inputThreshold = inpThreshold msg.applyToAll = buttonAll self._widget = msg self._widget.buttonActive = buttonActive self._widget.buttonAll = buttonAll if self._widget.exec(): self.threshold = float(self._widget.inputThreshold.value()) self.width = int(self._widget.inputWidth.value()) if not (self.width%2): self.width += 1 if self._widget.buttonAll.isChecked(): _logger.debug('AllChecked') self.removeSpikesAll() elif self._widget.buttonActive.isChecked(): _logger.debug('ActiveChecked') self.removeSpikesActive()
def _buildToolBar(self, selection=False, colormap=False, imageicons=False, standalonesave=True, standalonezoom=True, profileselection=False, aspect=False, polygon=False): self.solidCircleIcon = qt.QIcon(qt.QPixmap(IconDict["solidcircle"])) self.solidEllipseIcon = qt.QIcon(qt.QPixmap(IconDict["solidellipse"])) self.colormapIcon = qt.QIcon(qt.QPixmap(IconDict["colormap"])) self.selectionIcon = qt.QIcon(qt.QPixmap(IconDict["normal"])) self.zoomResetIcon = qt.QIcon(qt.QPixmap(IconDict["zoomreset"])) self.polygonIcon = qt.QIcon(qt.QPixmap(IconDict["polygon"])) self.printIcon = qt.QIcon(qt.QPixmap(IconDict["fileprint"])) self.saveIcon = qt.QIcon(qt.QPixmap(IconDict["filesave"])) self.xAutoIcon = qt.QIcon(qt.QPixmap(IconDict["xauto"])) self.yAutoIcon = qt.QIcon(qt.QPixmap(IconDict["yauto"])) self.hFlipIcon = qt.QIcon(qt.QPixmap(IconDict["gioconda16mirror"])) self.imageIcon = qt.QIcon(qt.QPixmap(IconDict["image"])) self.eraseSelectionIcon = qt.QIcon(qt.QPixmap(IconDict["eraseselect"])) self.rectSelectionIcon = qt.QIcon(qt.QPixmap(IconDict["boxselect"])) self.brushSelectionIcon = qt.QIcon(qt.QPixmap(IconDict["brushselect"])) self.brushIcon = qt.QIcon(qt.QPixmap(IconDict["brush"])) self.additionalIcon = qt.QIcon(qt.QPixmap( IconDict["additionalselect"])) self.hLineIcon = qt.QIcon(qt.QPixmap(IconDict["horizontal"])) self.vLineIcon = qt.QIcon(qt.QPixmap(IconDict["vertical"])) self.lineIcon = qt.QIcon(qt.QPixmap(IconDict["diagonal"])) self.copyIcon = silx_icons.getQIcon("edit-copy") self.toolBar = qt.QWidget(self) self.toolBarLayout = qt.QHBoxLayout(self.toolBar) self.toolBarLayout.setContentsMargins(0, 0, 0, 0) self.toolBarLayout.setSpacing(0) self.mainLayout.addWidget(self.toolBar) #Autoscale if standalonezoom: tb = self._addToolButton(self.zoomResetIcon, self.__zoomReset, 'Auto-Scale the Graph') else: tb = self._addToolButton(self.zoomResetIcon, None, 'Auto-Scale the Graph') self.zoomResetToolButton = tb #y Autoscale tb = self._addToolButton(self.yAutoIcon, self._yAutoScaleToggle, 'Toggle Autoscale Y Axis (On/Off)', toggle=True, state=True) tb.setDown(True) self.yAutoScaleToolButton = tb tb.setDown(True) #x Autoscale tb = self._addToolButton(self.xAutoIcon, self._xAutoScaleToggle, 'Toggle Autoscale X Axis (On/Off)', toggle=True, state=True) self.xAutoScaleToolButton = tb tb.setDown(True) #Aspect ratio if aspect: self.aspectButton = self._addToolButton(self.solidCircleIcon, self._aspectButtonSignal, 'Keep data aspect ratio', toggle=False) self.aspectButton.setChecked(False) #colormap if colormap: tb = self._addToolButton(self.colormapIcon, None, 'Change Colormap') self.colormapToolButton = tb #flip tb = self._addToolButton(self.hFlipIcon, None, 'Flip Horizontal') self.hFlipToolButton = tb #save if standalonesave: tb = self._addToolButton(self.saveIcon, self._saveIconSignal, 'Save Graph') else: tb = self._addToolButton(self.saveIcon, None, 'Save') self.saveToolButton = tb self.copyToolButton = self._addToolButton(self.copyIcon, self._copyIconSignal, "Copy graph to clipboard") #Selection if selection: tb = self._addToolButton(self.selectionIcon, None, 'Toggle Selection Mode', toggle=True, state=False) tb.setDown(False) self.selectionToolButton = tb #image selection icons if imageicons: tb = self._addToolButton(self.imageIcon, None, 'Reset') self.imageToolButton = tb tb = self._addToolButton(self.eraseSelectionIcon, None, 'Erase Selection') self.eraseSelectionToolButton = tb tb = self._addToolButton(self.rectSelectionIcon, None, 'Rectangular Selection') self.rectSelectionToolButton = tb tb = self._addToolButton(self.brushSelectionIcon, None, 'Brush Selection') self.brushSelectionToolButton = tb tb = self._addToolButton(self.brushIcon, None, 'Select Brush') self.brushToolButton = tb if polygon: tb = self._addToolButton( self.polygonIcon, None, 'Polygon selection\nRight click to finish') self.polygonSelectionToolButton = tb tb = self._addToolButton(self.additionalIcon, None, 'Additional Selections Menu') self.additionalSelectionToolButton = tb else: if polygon: tb = self._addToolButton( self.polygonIcon, None, 'Polygon selection\nRight click to finish') self.polygonSelectionToolButton = tb self.imageToolButton = None #picker selection self._pickerSelectionButtons = [] if profileselection: self._profileSelection = True self._polygonSelection = False self._pickerSelectionButtons = [] if self._profileSelection: tb = self._addToolButton(self.hLineIcon, self._hLineProfileClicked, 'Horizontal Profile Selection', toggle=True, state=False) self.hLineProfileButton = tb self._pickerSelectionButtons.append(tb) tb = self._addToolButton(self.vLineIcon, self._vLineProfileClicked, 'Vertical Profile Selection', toggle=True, state=False) self.vLineProfileButton = tb self._pickerSelectionButtons.append(tb) tb = self._addToolButton(self.lineIcon, self._lineProfileClicked, 'Line Profile Selection', toggle=True, state=False) self.lineProfileButton = tb self._pickerSelectionButtons.append(tb) self._pickerSelectionWidthLabel = qt.QLabel(self.toolBar) self._pickerSelectionWidthLabel.setText("W:") self.toolBar.layout().addWidget( self._pickerSelectionWidthLabel) self._pickerSelectionWidthValue = qt.QSpinBox(self.toolBar) self._pickerSelectionWidthValue.setMinimum(0) self._pickerSelectionWidthValue.setMaximum(1000) self._pickerSelectionWidthValue.setValue(1) self.toolBar.layout().addWidget( self._pickerSelectionWidthValue) #tb = self._addToolButton(None, # self._lineProfileClicked, # 'Line Profile Selection', # toggle=True, # state=False) #tb.setText = "W:" #self.lineWidthProfileButton = tb #self._pickerSelectionButtons.append(tb) if self._polygonSelection: _logger.info("Polygon selection not implemented yet") #hide profile selection buttons if imageicons: for button in self._pickerSelectionButtons: button.hide() self.infoWidget = qt.QWidget(self.toolBar) self.infoWidget.mainLayout = qt.QHBoxLayout(self.infoWidget) self.infoWidget.mainLayout.setContentsMargins(0, 0, 0, 0) self.infoWidget.mainLayout.setSpacing(0) self.infoWidget.label = qt.QLabel(self.infoWidget) self.infoWidget.label.setText("X = ???? Y = ???? Z = ????") self.infoWidget.mainLayout.addWidget(self.infoWidget.label) self.toolBarLayout.addWidget(self.infoWidget) self.infoWidget.hide() self.toolBarLayout.addWidget(qt.HorizontalSpacer(self.toolBar)) # ---print self.printPreview = SingletonPrintPreviewToolButton(parent=self, plot=self.graph) self.printPreview.setIcon(self.printIcon) self.toolBarLayout.addWidget(self.printPreview)
def build(self,comments="True",height=3): layout = qt.QVBoxLayout(self) layout.setContentsMargins(0, 0, 0, 0) layout.setSpacing(0) self.__comments = comments commentsHBox = qt.QWidget(self) layout.addWidget(commentsHBox) commentsHBoxLayout = qt.QHBoxLayout(commentsHBox) commentsHBoxLayout.setContentsMargins(0, 0, 0, 0) commentsHBoxLayout.setSpacing(0) tableContainer = qt.QWidget(commentsHBox) commentsHBoxLayout.addWidget(tableContainer) tableContainerLayout = qt.QVBoxLayout(tableContainer) tableContainerLayout.setContentsMargins(0, 0, 0, 0) tableContainerLayout.setSpacing(0) self.__hboxTableContainer = qt.QWidget(tableContainer) hbox = self.__hboxTableContainer tableContainerLayout.addWidget(hbox) hboxLayout = qt.QHBoxLayout(hbox) hboxLayout.setContentsMargins(0, 0, 0, 0) hboxLayout.setSpacing(0) numberLabel = qt.QLabel(hbox) hboxLayout.addWidget(numberLabel) numberLabel.setText("Number of Compounds:") numberLabel.setAlignment(qt.Qt.AlignVCenter) self.__numberSpin = qt.QSpinBox(hbox) hboxLayout.addWidget(self.__numberSpin) self.__numberSpin.setMinimum(1) self.__numberSpin.setMaximum(100) self.__numberSpin.setValue(1) self.__table = qt.QTableWidget(tableContainer) self.__table.setRowCount(1) self.__table.setColumnCount(2) tableContainerLayout.addWidget(self.__table) self.__table.setMinimumHeight((height)*self.__table.horizontalHeader().sizeHint().height()) self.__table.setMaximumHeight((height)*self.__table.horizontalHeader().sizeHint().height()) self.__table.setMinimumWidth(1*self.__table.sizeHint().width()) self.__table.setMaximumWidth(1*self.__table.sizeHint().width()) #self.__table.setSizePolicy(qt.QSizePolicy(qt.QSizePolicy.Fixed,qt.QSizePolicy.Fixed)) labels = ["Material", "Mass Fraction"] for i in range(len(labels)): item = self.__table.horizontalHeaderItem(i) if item is None: item = qt.QTableWidgetItem(labels[i],qt.QTableWidgetItem.Type) self.__table.setHorizontalHeaderItem(i,item) self.__table.setSelectionMode(qt.QTableWidget.NoSelection) if self.__comments: vbox = qt.QWidget(commentsHBox) commentsHBoxLayout.addWidget(vbox) vboxLayout = qt.QVBoxLayout(vbox) #default thickness and density self.__gridVBox = qt.QWidget(vbox) grid = self.__gridVBox vboxLayout.addWidget(grid) gridLayout = qt.QGridLayout(grid) gridLayout.setContentsMargins(11, 11, 11, 11) gridLayout.setSpacing(4) densityLabel = qt.QLabel(grid) gridLayout.addWidget(densityLabel, 0, 0) densityLabel.setText("Default Density (g/cm3):") densityLabel.setAlignment(qt.Qt.AlignVCenter) self.__densityLine = qt.QLineEdit(grid) validator = qt.QDoubleValidator(self.__densityLine) self.__densityLine.setValidator(validator) self.__densityLine.setReadOnly(False) gridLayout.addWidget(self.__densityLine, 0, 1) thicknessLabel = qt.QLabel(grid) gridLayout.addWidget(thicknessLabel, 1, 0) thicknessLabel.setText("Default Thickness (cm):") thicknessLabel.setAlignment(qt.Qt.AlignVCenter) self.__thicknessLine = qt.QLineEdit(grid) validator = qt.QDoubleValidator(self.__thicknessLine) self.__thicknessLine.setValidator(validator) gridLayout.addWidget(self.__thicknessLine, 1, 1) self.__thicknessLine.setReadOnly(False) self.__densityLine.editingFinished[()].connect( \ self.__densitySlot) self.__thicknessLine.editingFinished[()].connect( \ self.__thicknessSlot) self.__transmissionButton = qt.QPushButton(grid) self.__transmissionButton.setText('Material Transmission') gridLayout.addWidget(self.__transmissionButton, 2, 0) self.__massAttButton = qt.QPushButton(grid) self.__massAttButton.setText('Mass Att. Coefficients') gridLayout.addWidget(self.__massAttButton, 2, 1) self.__transmissionButton.setAutoDefault(False) self.__massAttButton.setAutoDefault(False) self.__transmissionButton.clicked.connect( self.__transmissionSlot) self.__massAttButton.clicked.connect( self.__massAttSlot) vboxLayout.addWidget(qt.VerticalSpacer(vbox)) if self.__comments: #comment nameHBox = qt.QWidget(self) nameHBoxLayout = qt.QHBoxLayout(nameHBox) nameLabel = qt.QLabel(nameHBox) nameHBoxLayout.addWidget(nameLabel) nameLabel.setText("Material Name/Comment:") nameLabel.setAlignment(qt.Qt.AlignVCenter) nameHBoxLayout.addWidget(qt.HorizontalSpacer(nameHBox)) self.__nameLine = qt.QLineEdit(nameHBox) self.__nameLine.editingFinished[()].connect(self.__nameLineSlot) nameHBoxLayout.addWidget(self.__nameLine) self.__nameLine.setReadOnly(False) longtext="En un lugar de La Mancha, de cuyo nombre no quiero acordarme ..." self.__nameLine.setFixedWidth(self.__nameLine.fontMetrics().width(longtext)) layout.addWidget(nameHBox) self.__numberSpin.valueChanged[int].connect(self.__numberSpinChanged) self.__table.cellChanged[int,int].connect(self.__tableSlot) self.__table.cellEntered[int,int].connect(self.__tableSlot2)
def __createInfoWidget(self, symbol=""): #Dock window like widget frame = qt.QWidget(self.splitter) layout = qt.QVBoxLayout(frame) layout.setContentsMargins(0, 0, 0, 0) layout.setSpacing(0) #The dock functionnality toolbar = qt.QWidget(frame) layout.addWidget(toolbar) layout1 = qt.QHBoxLayout(toolbar) layout1.setContentsMargins(0, 0, 0, 0) layout1.setSpacing(0) # --- the line self.line1 = Line(toolbar) self.line1.setFrameShape(qt.QFrame.HLine) self.line1.setFrameShadow(qt.QFrame.Sunken) self.line1.setFrameShape(qt.QFrame.HLine) layout1.addWidget(self.line1) # --- the close button self.closelabel = PixmapLabel(toolbar) self.closelabel.setPixmap(qt.QPixmap(CLOSE_ICON)) layout1.addWidget(self.closelabel) self.closelabel.setSizePolicy( qt.QSizePolicy(qt.QSizePolicy.Fixed, qt.QSizePolicy.Fixed)) # --- connections self.line1.sigLineDoubleClickEvent.connect(self.infoReparent) self.closelabel.sigPixmapLabelMousePressEvent.connect(self.infoToggle) # --- The text edit widget w = qt.QWidget(frame) layout.addWidget(w) l = qt.QVBoxLayout(w) l.setContentsMargins(0, 0, 0, 0) l.setSpacing(0) hbox = qt.QWidget(w) hbox.layout = qt.QHBoxLayout(hbox) hbox.layout.setContentsMargins(0, 0, 0, 0) hbox.layout.setSpacing(0) l.addWidget(hbox) hbox.layout.addWidget(qt.HorizontalSpacer(hbox)) l1 = qt.QLabel(hbox) l1.setText('<b><nobr>Excitation Energy (keV)</nobr></b>') self.energy = MyQLineEdit(hbox) self.energy.setFixedWidth(self.energy.fontMetrics().width('#####.###')) self.energy.setText("") hbox.layout.addWidget(l1) hbox.layout.addWidget(self.energy) hbox.layout.addWidget(qt.HorizontalSpacer(hbox)) self.energy.editingFinished[()].connect(self._energySlot) #if both signals are emitted and there is an error then we are in an #endless loop #self.connect(self.energy, qt.SIGNAL('focusOut'), self._energySlot) self.infoText = qt.QTextEdit(w) self.infoText.setReadOnly(1) self.infoText.clear() self.infoText.insertHtml(self.html.gethtml(symbol)) l.addWidget(self.infoText) w.show() self.infoWidget = frame frame.show()
def __init__(self, parent=None, name="ScanFit", specfit=None, fl=0): #fl=qt.Qt.WDestructiveClose): qt.QWidget.__init__(self, parent) self.setWindowTitle(name) if specfit is None: self.specfit = Specfit.Specfit() else: self.specfit = specfit self.info = None layout = qt.QVBoxLayout(self) layout.setContentsMargins(0, 0, 0, 0) layout.setSpacing(0) ############## self.headerlabel = qt.QLabel(self) self.headerlabel.setAlignment(qt.Qt.AlignHCenter) self.setHeader('<b>Fit of XXXXXXXXXX from X XXXXX to XXXX<\b>') ############## if not len(self.specfit.theorylist): funsFile = "SpecfitFunctions.py" if not os.path.exists(funsFile): funsFile = os.path.join(os.path.dirname(Specfit.__file__), funsFile) self.specfit.importfun(funsFile) if 'Area Gaussians' not in self.specfit.theorylist: funsFile = "SpecfitFunctions.py" if not os.path.exists(funsFile): funsFile = os.path.join(os.path.dirname(Specfit.__file__), funsFile) self.specfit.importfun(funsFile) self.specfit.settheory('Area Gaussians') self.specfit.setbackground('Linear') fitconfig = {} fitconfig.update(self.specfit.fitconfig) fitconfig['WeightFlag'] = 0 fitconfig['ForcePeakPresence'] = 1 fitconfig['McaMode'] = 0 self.specfit.configure(**fitconfig) self.specfitGui = SpecfitGui.SpecfitGui(self, config=1, status=1, buttons=0, specfit=self.specfit, eh=self.specfit.eh) #self.specfitGui.updateGui(configuration=fitconfig) #self.setdata = self.specfit.setdata self.specfitGui.guiconfig.MCACheckBox.setEnabled(1) palette = self.specfitGui.guiconfig.MCACheckBox.palette() ############## hbox = qt.QWidget(self) hboxlayout = qt.QHBoxLayout(hbox) hboxlayout.setContentsMargins(0, 0, 0, 0) hboxlayout.setSpacing(0) self.estimatebutton = qt.QPushButton(hbox) self.estimatebutton.setText("Estimate") self.fitbutton = qt.QPushButton(hbox) self.fitbutton.setText("Fit") hboxlayout.addWidget(self.estimatebutton) hboxlayout.addWidget(qt.HorizontalSpacer(hbox)) hboxlayout.addWidget(self.fitbutton) self.dismissbutton = qt.QPushButton(hbox) self.dismissbutton.setText("Dismiss") self.estimatebutton.clicked.connect(self.estimate) self.fitbutton.clicked.connect(self.fit) self.dismissbutton.clicked.connect(self.dismiss) self.specfitGui.sigSpecfitGuiSignal.connect(self._specfitGuiSignal) hboxlayout.addWidget(qt.HorizontalSpacer(hbox)) hboxlayout.addWidget(self.dismissbutton) layout.addWidget(self.headerlabel) layout.addWidget(self.specfitGui) layout.addWidget(hbox)
def __init__(self, parent=None): qt.QGroupBox.__init__(self, parent) self.setTitle("Function Definition") self.mainLayout = qt.QGridLayout(self) self.mainLayout.setContentsMargins(2, 2, 2, 2) self.mainLayout.setSpacing(2) row = 0 #actual fit function self.fitFunctionCheckBox = qt.QCheckBox(self) self.fitFunctionCheckBox.setText("Fit Function to be used") self.fitFunctionCombo = qt.QComboBox(self) self.fitFunctionCombo.addItem(str("None")) self.fitFunctionCombo.activated[int].connect( \ self._fitFunctionComboActivated) self.fitFunctionSetupButton = qt.QPushButton(self) self.fitFunctionSetupButton.setText('SETUP') self.fitFunctionSetupButton.setAutoDefault(False) self.fitFunctionSetupButton.hide() self.mainLayout.addWidget(self.fitFunctionCheckBox, row, 0) self.mainLayout.addWidget(qt.HorizontalSpacer(self), row, 1) self.mainLayout.addWidget(self.fitFunctionSetupButton, row, 2) self.mainLayout.addWidget(self.fitFunctionCombo, row, 3) row += 1 #background self.backgroundCheckBox = qt.QCheckBox(self) self.backgroundCheckBox.setText("Background function") self.backgroundCombo = qt.QComboBox(self) self.backgroundCombo.addItem(str("None")) self.backgroundCombo.activated[int].connect( \ self._backgroundComboActivated) self.backgroundSetupButton = qt.QPushButton(self) self.backgroundSetupButton.setText('SETUP') self.backgroundSetupButton.setAutoDefault(False) self.backgroundSetupButton.hide() self.mainLayout.addWidget(self.backgroundCheckBox, row, 0) self.mainLayout.addWidget(qt.HorizontalSpacer(self), row, 1) self.mainLayout.addWidget(self.backgroundSetupButton, row, 2) self.mainLayout.addWidget(self.backgroundCombo, row, 3) row += 1 #stripping self.stripCheckBox = qt.QCheckBox(self) self.stripCheckBox.setText( "Non-analytical (or estimation) background algorithm") self.stripCombo = qt.QComboBox(self) self.stripCombo.addItem(str("Strip")) self.stripCombo.addItem(str("SNIP")) self.stripSetupButton = qt.QPushButton(self) self.stripSetupButton.setText('SETUP') self.stripSetupButton.setAutoDefault(False) self.stripCombo.activated[int].connect(self._stripComboActivated) self.mainLayout.addWidget(self.stripCheckBox, row, 0) self.mainLayout.addWidget(qt.HorizontalSpacer(self), row, 1) self.mainLayout.addWidget(self.stripSetupButton, row, 2) self.mainLayout.addWidget(self.stripCombo, row, 3) row += 1 self.snipWidthLabel = qt.QLabel(self) self.snipWidthLabel.setText(str("SNIP Background Width")) self.snipWidthSpin = qt.QSpinBox(self) self.snipWidthSpin.setMinimum(1) self.snipWidthSpin.setMaximum(300) self.snipWidthSpin.setValue(10) self.mainLayout.addWidget(self.snipWidthLabel, row, 0) self.mainLayout.addWidget(self.snipWidthSpin, row, 3) row += 1 self.stripWidthLabel = qt.QLabel(self) self.stripWidthLabel.setText(str("Strip Background Width")) self.stripWidthSpin = qt.QSpinBox(self) self.stripWidthSpin.setMinimum(1) self.stripWidthSpin.setMaximum(100) self.stripWidthSpin.setValue(4) self.mainLayout.addWidget(self.stripWidthLabel, row, 0) self.mainLayout.addWidget(self.stripWidthSpin, row, 3) row += 1 self.stripIterLabel = qt.QLabel(self) self.stripIterLabel.setText(str("Strip Background Iterations")) self.stripIterSpin = qt.QSpinBox(self) self.stripIterSpin.setMinimum(0) self.stripIterSpin.setMaximum(100000) self.stripIterSpin.setValue(5000) self.mainLayout.addWidget(self.stripIterLabel, row, 0) self.mainLayout.addWidget(self.stripIterSpin, row, 3) row += 1 self.stripFilterLabel = qt.QLabel(self) text = str("Strip Background Smoothing Width (Savitsky-Golay)") self.stripFilterLabel.setText(text) self.stripFilterSpin = qt.QSpinBox(self) self.stripFilterSpin.setMinimum(0) self.stripFilterSpin.setMaximum(40) self.stripFilterSpin.setSingleStep(2) self.mainLayout.addWidget(self.stripFilterLabel, row, 0) self.mainLayout.addWidget(self.stripFilterSpin, row, 3) row += 1 #anchors self.anchorsContainer = qt.QWidget(self) anchorsContainerLayout = qt.QHBoxLayout(self.anchorsContainer) anchorsContainerLayout.setContentsMargins(2, 2, 2, 2) anchorsContainerLayout.setSpacing(2) self.stripAnchorsCheckBox = qt.QCheckBox(self.anchorsContainer) self.stripAnchorsCheckBox.setText(str("Strip Background use Anchors")) anchorsContainerLayout.addWidget(self.stripAnchorsCheckBox) self.stripAnchorsList = [] for i in range(4): anchor = qt.QLineEdit(self.anchorsContainer) anchor._v = qt.QDoubleValidator(anchor) anchor.setValidator(anchor._v) anchor.setText("0.0") anchorsContainerLayout.addWidget(anchor) self.stripAnchorsList.append(anchor) self.mainLayout.addWidget(self.anchorsContainer, row, 0, 1, 4) row += 1 #signals self.fitFunctionSetupButton.clicked.connect(self.setupFitFunction) self.backgroundSetupButton.clicked.connect(self.setupBackground) self.stripSetupButton.clicked.connect(self.setupStrip)
def build(self, table, orientation, thickness, density, size=None): if size is None: size = "medium" layout = qt.QHBoxLayout(self) if table: #the material definition matBox = qt.QWidget(self) layout.addWidget(matBox) matBoxLayout = qt.QVBoxLayout(matBox) self.materialEditor = MaterialEditor.MaterialEditor(matBox, comments=False, height=7) matBoxLayout.addWidget(self.materialEditor) matBoxLayout.addWidget(qt.VerticalSpacer(matBox)) else: self.materialEditor = None #the matrix definition sampleBox = qt.QWidget(self) layout.addWidget(sampleBox) if orientation == "vertical": sampleBoxLayout = qt.QVBoxLayout(sampleBox) else: sampleBoxLayout = qt.QHBoxLayout(sampleBox) #the image if orientation == "vertical": labelHBox = qt.QWidget(sampleBox) sampleBoxLayout.addWidget(labelHBox) labelHBoxLayout = qt.QHBoxLayout(labelHBox) labelHBoxLayout.addWidget(qt.HorizontalSpacer(labelHBox)) label = MatrixImage.MatrixImage(labelHBox, size=size) labelHBoxLayout.addWidget(label) labelHBoxLayout.addWidget(qt.HorizontalSpacer(labelHBox)) else: labelHBox = qt.QWidget(sampleBox) sampleBoxLayout.addWidget(labelHBox) labelHBoxLayout = qt.QVBoxLayout(labelHBox) labelHBoxLayout.setContentsMargins(0, 0, 0, 0) labelHBoxLayout.setSpacing(4) label = MatrixImage.MatrixImage(labelHBox, size=size) labelHBoxLayout.addWidget(label) if orientation != "vertical": labelHBoxLayout.addWidget(qt.VerticalSpacer(labelHBox)) self.imageLabel = label #the input fields container self.__gridSampleBox = qt.QWidget(sampleBox) grid = self.__gridSampleBox sampleBoxLayout.addWidget(grid) if QTVERSION < '4.0.0': gridLayout = qt.QGridLayout(grid, 6, 2, 11, 4) else: gridLayout = qt.QGridLayout(grid) gridLayout.setContentsMargins(11, 11, 11, 11) gridLayout.setSpacing(4) #the angles angle1Label = qt.QLabel(grid) angle1Label.setText("Incoming Angle (deg.):") self.__angle1Line = MyQLineEdit(grid) self.__angle1Line.setReadOnly(False) angle2Label = qt.QLabel(grid) angle2Label.setText("Outgoing Angle (deg.):") self.__angle2Line = MyQLineEdit(grid) self.__angle2Line.setReadOnly(False) self.__angle3Label = qt.QCheckBox(grid) self.__angle3Label.setText("Scattering Angle (deg.):") self.__angle3Line = MyQLineEdit(grid) self.__angle3Line.setReadOnly(False) self.__angle3Line.setDisabled(True) if QTVERSION < '4.0.0': angle1Label.setAlignment(qt.QLabel.WordBreak | \ qt.QLabel.AlignVCenter) angle2Label.setAlignment(qt.QLabel.WordBreak | \ qt.QLabel.AlignVCenter) else: angle1Label.setAlignment(qt.Qt.AlignVCenter) angle2Label.setAlignment(qt.Qt.AlignVCenter) self.__angle3Label.setChecked(0) gridLayout.addWidget(angle1Label, 0, 0) gridLayout.addWidget(self.__angle1Line, 0, 1) gridLayout.addWidget(angle2Label, 1, 0) gridLayout.addWidget(self.__angle2Line, 1, 1) gridLayout.addWidget(self.__angle3Label, 2, 0) gridLayout.addWidget(self.__angle3Line, 2, 1) rowoffset = 3 #thickness and density if density: densityLabel = qt.QLabel(grid) densityLabel.setText("Sample Density (g/cm3):") if QTVERSION < '4.0.0': densityLabel.setAlignment(qt.QLabel.WordBreak | \ qt.QLabel.AlignVCenter) else: densityLabel.setAlignment(qt.Qt.AlignVCenter) self.__densityLine = MyQLineEdit(grid) self.__densityLine.setReadOnly(False) gridLayout.addWidget(densityLabel, rowoffset, 0) gridLayout.addWidget(self.__densityLine, rowoffset, 1) rowoffset = rowoffset + 1 else: self.__densityLine = None if thickness: thicknessLabel = qt.QLabel(grid) thicknessLabel.setText("Sample Thickness (cm):") if QTVERSION < '4.0.0': thicknessLabel.setAlignment(qt.QLabel.WordBreak | \ qt.QLabel.AlignVCenter) else: thicknessLabel.setAlignment(qt.Qt.AlignVCenter) self.__thicknessLine = MyQLineEdit(grid) self.__thicknessLine.setReadOnly(False) gridLayout.addWidget(thicknessLabel, rowoffset, 0) gridLayout.addWidget(self.__thicknessLine, rowoffset, 1) rowoffset = rowoffset + 1 else: self.__thicknessLine = None gridLayout.addWidget(qt.VerticalSpacer(grid), rowoffset, 0) gridLayout.addWidget(qt.VerticalSpacer(grid), rowoffset, 1) self.__angle1Line.sigMyQLineEditSignal.connect(self.__angle1Slot) self.__angle2Line.sigMyQLineEditSignal.connect(self.__angle2Slot) self.__angle3Line.sigMyQLineEditSignal.connect(self.__angle3Slot) if self.__densityLine is not None: self.__densityLine.sigMyQLineEditSignal.connect(self.__densitySlot) if self.__thicknessLine is not None: self.__thicknessLine.sigMyQLineEditSignal.connect( self.__thicknessSlot) self.__angle3Label.clicked.connect(self.__angle3LabelSlot) if orientation == "vertical": sampleBoxLayout.addWidget(qt.VerticalSpacer(sampleBox))
def __init__(self, parent=None, name=None): super(McaROIWidget, self).__init__(parent) if name is not None: self.setWindowTitle(name) layout = qt.QVBoxLayout(self) layout.setContentsMargins(0, 0, 0, 0) layout.setSpacing(0) ############## self.headerLabel = qt.QLabel(self) self.headerLabel.setAlignment(qt.Qt.AlignHCenter) self.setHeader('<b>Channel ROIs of XXXXXXXXXX<\b>') layout.addWidget(self.headerLabel) ############## self.mcaROITable = McaROITable(self) rheight = self.mcaROITable.horizontalHeader().sizeHint().height() self.mcaROITable.setMinimumHeight(4 * rheight) #self.mcaROITable.setMaximumHeight(4*rheight) self.fillFromROIDict = self.mcaROITable.fillFromROIDict self.addROI = self.mcaROITable.addROI self.getROIListAndDict = self.mcaROITable.getROIListAndDict layout.addWidget(self.mcaROITable) self.roiDir = None ################# hbox = qt.QWidget(self) hboxlayout = qt.QHBoxLayout(hbox) hboxlayout.setContentsMargins(0, 0, 0, 0) hboxlayout.setSpacing(0) hboxlayout.addWidget(qt.HorizontalSpacer(hbox)) self.addButton = qt.QPushButton(hbox) self.addButton.setText("Add ROI") self.delButton = qt.QPushButton(hbox) self.delButton.setText("Delete ROI") self.resetButton = qt.QPushButton(hbox) self.resetButton.setText("Reset") hboxlayout.addWidget(self.addButton) hboxlayout.addWidget(self.delButton) hboxlayout.addWidget(self.resetButton) hboxlayout.addWidget(qt.HorizontalSpacer(hbox)) self.loadButton = qt.QPushButton(hbox) self.loadButton.setText("Load") self.saveButton = qt.QPushButton(hbox) self.saveButton.setText("Save") hboxlayout.addWidget(self.loadButton) hboxlayout.addWidget(self.saveButton) layout.setStretchFactor(self.headerLabel, 0) layout.setStretchFactor(self.mcaROITable, 1) layout.setStretchFactor(hbox, 0) layout.addWidget(hbox) self.addButton.clicked.connect(self._add) self.delButton.clicked.connect(self._del) self.resetButton.clicked.connect(self._reset) self.loadButton.clicked.connect(self._load) self.saveButton.clicked.connect(self._save) self.mcaROITable.sigMcaROITableSignal.connect(self._forward)
def build(self): layout = qt.QVBoxLayout(self) layout.setContentsMargins(0, 0, 0, 0) layout.setSpacing(0) buttonGroup = qt.QGroupBox(self) buttonGroup.layout = qt.QVBoxLayout(buttonGroup) buttonGroup.layout.setContentsMargins(0, 0, 0, 0) buttonGroup.layout.setSpacing(0) layout.addWidget(buttonGroup) self.fluxCheckBox = qt.QCheckBox(buttonGroup) self.fluxCheckBox.setText("From fundamental parameters") wf = qt.QWidget(buttonGroup) wf.layout = qt.QHBoxLayout(wf) wf.layout.setContentsMargins(0, 0, 0, 0) wf.layout.setSpacing(0) wf.layout.addWidget(qt.HorizontalSpacer(wf)) self.fundamentalWidget = FundamentalWidget(wf) wf.layout.addWidget(self.fundamentalWidget) wf.layout.addWidget(qt.HorizontalSpacer(wf)) self.matrixCheckBox = qt.QCheckBox(buttonGroup) self.matrixCheckBox.setText("From matrix composition") self.fluxCheckBox.setChecked(True) wm = qt.QWidget(buttonGroup) wm.layout = qt.QHBoxLayout(wm) wm.layout.setContentsMargins(0, 0, 0, 0) wm.layout.setSpacing(0) wm.layout.addWidget(qt.HorizontalSpacer(wm)) referenceLabel = qt.QLabel(wm) wm.layout.addWidget(referenceLabel) referenceLabel.setText("Matrix Reference Element:") #self.referenceCombo=MyQComboBox(wm) #self.referenceCombo=qt.QComboBox(wm) #self.referenceCombo.setEditable(True) #self.referenceCombo.insertItem('Auto') self.referenceLine = MyQLineEdit(wm) wm.layout.addWidget(self.referenceLine) self.referenceLine.setFixedWidth( self.referenceLine.fontMetrics().width('#######')) wm.layout.addWidget(qt.HorizontalSpacer(wm)) self.referenceLine.sigMyQLineEditSignal.connect( \ self._referenceLineSlot) buttonGroup.layout.addWidget(self.fluxCheckBox) buttonGroup.layout.addWidget(wf) buttonGroup.layout.addWidget(self.matrixCheckBox) buttonGroup.layout.addWidget(wm) #self.fundamentalWidget.setEnabled(False) self.attenuatorsCheckBox = qt.QCheckBox(self) self.attenuatorsCheckBox.setText( "Consider attenuators in calculations") self.attenuatorsCheckBox.setDisabled(True) #Multilayer secondary excitation self.secondaryCheckBox = qt.QCheckBox(self) self.secondaryCheckBox.setText("Consider secondary excitation") self.tertiaryCheckBox = qt.QCheckBox(self) self.tertiaryCheckBox.setText("Consider tertiary excitation") layout.addWidget(self.attenuatorsCheckBox) layout.addWidget(self.secondaryCheckBox) layout.addWidget(self.tertiaryCheckBox) #XRFMC secondary excitation if XRFMC_FLAG: self.xrfmcCheckBox = qt.QCheckBox(self) self.xrfmcCheckBox.setText( "use Monte Carlo code to correct higher order excitations") layout.addWidget(self.xrfmcCheckBox) #mM checkbox self.mMolarCheckBox = qt.QCheckBox(self) self.mMolarCheckBox.setText( "Elemental mM concentrations (assuming 1 l of solution is 1000 * matrix_density grams)" ) layout.addWidget(self.mMolarCheckBox) layout.addWidget(qt.VerticalSpacer(self)) buttonGroup.show() self.fluxCheckBox.clicked.connect(self._fluxCheckBoxSlot) self.matrixCheckBox.clicked.connect(self.checkBoxSlot) self.attenuatorsCheckBox.clicked.connect(self.checkBoxSlot) self.secondaryCheckBox.clicked.connect(self._secondaryCheckBoxSlot) self.tertiaryCheckBox.clicked.connect(self._tertiaryCheckBoxSlot) if XRFMC_FLAG: self.xrfmcCheckBox.clicked.connect(self._xrfmcCheckBoxSlot) self.mMolarCheckBox.clicked.connect(self.checkBoxSlot) self.fundamentalWidget.flux.sigMyQLineEditSignal.connect( \ self._mySignal) self.fundamentalWidget.area.sigMyQLineEditSignal.connect( \ self._mySignal) self.fundamentalWidget.time.sigMyQLineEditSignal.connect( \ self._mySignal) self.fundamentalWidget.distance.sigMyQLineEditSignal.connect( \ self._mySignal) self.fundamentalWidget.autoTimeCheckBox.clicked.connect( \ self.__autoTimeSlot)
def __init__(self, parent=None, options=[1, 2, 3, 4, 5, 10], regions=False, index=-1): qt.QDialog.__init__(self, parent) self.setWindowTitle("PCA Configuration Dialog") self.mainLayout = qt.QVBoxLayout(self) self.mainLayout.setContentsMargins(11, 11, 11, 11) self.mainLayout.setSpacing(0) self.methodOptions = qt.QGroupBox(self) self.methodOptions.setTitle('PCA Method to use') self.methods = ['Covariance', 'Expectation Max.', 'Cov. Multiple Arrays'] self.functions = [PCAModule.numpyPCA, PCAModule.expectationMaximizationPCA, PCAModule.multipleArrayPCA] self.methodOptions.mainLayout = qt.QGridLayout(self.methodOptions) self.methodOptions.mainLayout.setContentsMargins(0, 0, 0, 0) self.methodOptions.mainLayout.setSpacing(2) #this does not seem to bring any advantage if 0: self.methods.append("Covariance Numpy") self.functions.append(PCAModule.numpyPCA) if MDP and (index != 0): #self.methods.append("MDP (PCA + ICA)") self.methods.append("MDP (SVD float32)") self.methods.append("MDP (SVD float64)") self.methods.append("MDP ICA (float32)") self.methods.append("MDP ICA (float64)") self.functions.append(PCAModule.mdpPCASVDFloat32) self.functions.append(PCAModule.mdpPCASVDFloat64) self.functions.append(PCAModule.mdpICAFloat32) self.functions.append(PCAModule.mdpICAFloat64) self.buttonGroup = qt.QButtonGroup(self.methodOptions) i = 0 for item in self.methods: rButton = qt.QRadioButton(self.methodOptions) self.methodOptions.mainLayout.addWidget(rButton, 0, i) #self.l.setAlignment(rButton, qt.Qt.AlignHCenter) if i == 1: rButton.setChecked(True) rButton.setText(item) self.buttonGroup.addButton(rButton) self.buttonGroup.setId(rButton, i) i += 1 self.buttonGroup.buttonPressed[int].connect(self._slot) self.mainLayout.addWidget(self.methodOptions) #built in speed options self.speedOptions = qt.QGroupBox(self) self.speedOptions.setTitle("Speed Options") self.speedOptions.mainLayout = qt.QGridLayout(self.speedOptions) self.speedOptions.mainLayout.setContentsMargins(0, 0, 0, 0) self.speedOptions.mainLayout.setSpacing(2) labelPC = qt.QLabel(self) labelPC.setText("Number of PC:") self.nPC = qt.QSpinBox(self.speedOptions) self.nPC.setMinimum(0) self.nPC.setValue(10) self.nPC.setMaximum(40) self.binningLabel = qt.QLabel(self.speedOptions) self.binningLabel.setText("Spectral Binning:") self.binningCombo = qt.QComboBox(self.speedOptions) for option in options: self.binningCombo.addItem("%d" % option) self.speedOptions.mainLayout.addWidget(labelPC, 0, 0) self.speedOptions.mainLayout.addWidget(self.nPC, 0, 1) #self.speedOptions.mainLayout.addWidget(qt.HorizontalSpacer(self), 0, 2) self.speedOptions.mainLayout.addWidget(self.binningLabel, 1, 0) self.speedOptions.mainLayout.addWidget(self.binningCombo, 1, 1) self.binningCombo.setEnabled(False) self.binningCombo.activated[int].connect( \ self._updatePlotFromBinningCombo) if regions: self.__regions = True self.__addRegionsWidget() else: self.__regions = False #the optional plot self.graph = None #the OK button hbox = qt.QWidget(self) hboxLayout = qt.QHBoxLayout(hbox) hboxLayout.setContentsMargins(0, 0, 0, 0) hboxLayout.setSpacing(0) self.okButton = qt.QPushButton(hbox) self.okButton.setText("Accept") self.okButton.setAutoDefault(False) hboxLayout.addWidget(qt.HorizontalSpacer(hbox)) hboxLayout.addWidget(self.okButton) hboxLayout.addWidget(qt.HorizontalSpacer(hbox)) self.mainLayout.addWidget(self.speedOptions) if regions: self.mainLayout.addWidget(self.regionsWidget) self.mainLayout.addWidget(hbox) if self.graph is not None: self.mainLayout.addWidget(self.graph) self.okButton.clicked.connect(self.accept)
def __init__(self, parent=None): qt.QWidget.__init__(self, parent) FitParamFormLayout = qt.QVBoxLayout(self) FitParamFormLayout.setContentsMargins(11, 11, 11, 11) FitParamFormLayout.setSpacing(6) self.mainTab = qt.QTabWidget(self) self.tabFit = qt.QWidget() tabFitLayout = qt.QVBoxLayout(self.tabFit) tabFitLayout.setContentsMargins(11, 11, 11, 11) tabFitLayout.setSpacing(6) layout5 = Q3GridLayout(None) #,1,1, layout5.setContentsMargins(11, 11, 11, 11) layout5.setSpacing(6) self.functionCombo = qt.QComboBox(self.tabFit) self.functionCombo.insertItem = self.functionCombo.addItem self.functionLabel = qt.QLabel(self.tabFit) self.functionLabel.setText("Fit Function") self.functionCombo.insertItem(str("Mca Hypermet")) self.functionCombo.insertItem(str("Mca Pseudo-Voigt")) self.snipWidthLabel = qt.QLabel(self.tabFit) self.snipWidthLabel.setText(str("SNIP Background Width")) self.stripWidthLabel = qt.QLabel(self.tabFit) self.stripWidthLabel.setText(str("Strip Background Width")) self.stripIterValue = qt.QLineEdit(self.tabFit) self.chi2Label = qt.QLabel(self.tabFit) self.chi2Label.setText(str("Minimum chi^2 difference (%)")) self.chi2Value = qt.QLineEdit(self.tabFit) self.linearFitFlagCheck = qt.QCheckBox(self.tabFit) self.linearFitFlagCheck.setText( str("Perform a Linear Fit Fixing non-linear Parameters to Initial Values" )) self.strategyCheckBox = qt.QCheckBox(self.tabFit) self.strategyCheckBox.setText( str("Perform a fit using the selected strategy")) self.strategyCombo = qt.QComboBox(self.tabFit) self.strategyCombo.addItem(str("Single Layer")) self.strategySetupButton = qt.QPushButton(self.tabFit) self.strategySetupButton.setText('SETUP') self.strategySetupButton.setAutoDefault(False) self.mainTab.addTab(self.tabFit, str("FIT")) self.lastLabel = qt.QLabel(self.tabFit) lastLabel_font = qt.QFont(self.lastLabel.font()) lastLabel_font.setItalic(1) self.lastLabel.setFont(lastLabel_font) self.lastLabel.setText(str("Last channel :")) self.lastLabel.setAlignment(QLabelAlignVCenter | QLabelAlignRight) self.regionCheck = qt.QCheckBox(self.tabFit) self.regionCheck.setText(str("Limit fitting region to :")) self.topLine = qt.QFrame(self.tabFit) self.topLine.setFrameShape(qt.QFrame.HLine) self.topLine.setFrameShadow(qt.QFrame.Sunken) self.topLine.setFrameShape(qt.QFrame.HLine) ########## self.weightLabel = qt.QLabel(self.tabFit) self.weightLabel.setText("Statistical weighting of data") self.weightCombo = qt.QComboBox(self.tabFit) self.weightCombo.insertItem = self.weightCombo.addItem self.weightCombo.insertItem(str("NO Weight")) self.weightCombo.insertItem(str("Poisson (1/Y)")) #self.weightCombo.insertItem(str("Poisson (1/Y2)")) ########## self.iterLabel = qt.QLabel(self.tabFit) self.iterLabel.setText(str("Number of fit iterations")) self.contCombo = qt.QComboBox(self.tabFit) self.contCombo.insertItem = self.contCombo.addItem self.contCombo.insertItem(str("NO Continuum")) self.contCombo.insertItem(str("Constant")) self.contCombo.insertItem(str("Linear")) self.contCombo.insertItem(str("Parabolic")) self.contCombo.insertItem(str("Linear Polynomial")) self.contCombo.insertItem(str("Exp. Polynomial")) self.stripCombo = qt.QComboBox(self.tabFit) self.stripCombo.insertItem = self.stripCombo.addItem self.stripComboLabel = qt.QLabel(self.tabFit) self.stripComboLabel.setText( "Non-analytical (or estimation) background algorithm") self.stripCombo.insertItem(str("Strip")) self.stripCombo.insertItem(str("SNIP")) self.stripCombo.activated[int].connect(self._stripComboActivated) self.snipWidthSpin = Q3SpinBox(self.tabFit) self.snipWidthSpin.setMaxValue(300) self.snipWidthSpin.setMinValue(0) self.stripWidthSpin = Q3SpinBox(self.tabFit) self.stripWidthSpin.setMaxValue(100) self.stripWidthSpin.setMinValue(1) self.orderSpin = Q3SpinBox(self.tabFit) self.orderSpin.setMaxValue(10) self.orderSpin.setMinValue(1) maxnchannel = 16384 * 4 self.maxSpin = Q3SpinBox(self.tabFit) self.maxSpin.setMaxValue(maxnchannel) self.maxSpin.setLineStep(128) self.minSpin = Q3SpinBox(self.tabFit) self.minSpin.setMaxValue(maxnchannel) self.minSpin.setLineStep(128) self.stripIterLabel = qt.QLabel(self.tabFit) self.stripIterLabel.setText(str("Strip Background Iterations")) self.iterSpin = Q3SpinBox(self.tabFit) self.iterSpin.setMinValue(1) self.stripFilterLabel = qt.QLabel(self.tabFit) self.stripFilterLabel.setText( str("Strip Background Smoothing Width (Savitsky-Golay)")) self.stripFilterSpin = Q3SpinBox(self.tabFit) self.stripFilterSpin.setMinValue(1) self.stripFilterSpin.setMaxValue(40) self.stripFilterSpin.setLineStep(2) ######## self.anchorsContainer = qt.QWidget(self.tabFit) anchorsContainerLayout = qt.QHBoxLayout(self.anchorsContainer) anchorsContainerLayout.setContentsMargins(0, 0, 0, 0) anchorsContainerLayout.setSpacing(2) self.stripAnchorsFlagCheck = qt.QCheckBox(self.anchorsContainer) self.stripAnchorsFlagCheck.setText(str("Strip Background use Anchors")) anchorsContainerLayout.addWidget(self.stripAnchorsFlagCheck) self.stripAnchorsList = [] for i in range(4): anchorSpin = Q3SpinBox(self.anchorsContainer) anchorSpin.setMinValue(0) anchorSpin.setMaxValue(maxnchannel) anchorsContainerLayout.addWidget(anchorSpin) self.stripAnchorsList.append(anchorSpin) ####### self.firstLabel = qt.QLabel(self.tabFit) firstLabel_font = qt.QFont(self.firstLabel.font()) firstLabel_font.setItalic(1) self.firstLabel.setFont(firstLabel_font) self.firstLabel.setText(str("First channel :")) self.firstLabel.setAlignment(qt.Qt.AlignVCenter | qt.Qt.AlignRight) self.typeLabel = qt.QLabel(self.tabFit) self.typeLabel.setText(str("Continuum type")) self.orderLabel = qt.QLabel(self.tabFit) self.orderLabel.setText(str("Polynomial order")) self.bottomLine = qt.QFrame(self.tabFit) self.bottomLine.setFrameShape(qt.QFrame.HLine) self.bottomLine.setFrameShadow(qt.QFrame.Sunken) self.bottomLine.setFrameShape(qt.QFrame.HLine) layout5.addMultiCellWidget(self.functionLabel, 0, 0, 0, 1) layout5.addMultiCellWidget(self.functionCombo, 0, 0, 3, 4) layout5.addMultiCellWidget(self.typeLabel, 1, 1, 0, 1) layout5.addMultiCellWidget(self.contCombo, 1, 1, 3, 4) layout5.addMultiCellWidget(self.orderLabel, 2, 2, 0, 1) layout5.addMultiCellWidget(self.orderSpin, 2, 2, 3, 4) layout5.addMultiCellWidget(self.stripComboLabel, 3, 3, 0, 1) self.stripSetupButton = qt.QPushButton(self.tabFit) self.stripSetupButton.setText('SETUP') self.stripSetupButton.setAutoDefault(False) layout5.addWidget(self.stripCombo, 3, 3) layout5.addWidget(self.stripSetupButton, 3, 4) layout5.addMultiCellWidget(self.snipWidthLabel, 4, 4, 0, 1) layout5.addMultiCellWidget(self.snipWidthSpin, 4, 4, 3, 4) layout5.addMultiCellWidget(self.stripWidthLabel, 5, 5, 0, 1) layout5.addMultiCellWidget(self.stripWidthSpin, 5, 5, 3, 4) layout5.addMultiCellWidget(self.stripIterLabel, 6, 6, 0, 1) layout5.addMultiCellWidget(self.stripIterValue, 6, 6, 3, 4) layout5.addMultiCellWidget(self.stripFilterLabel, 7, 7, 0, 1) layout5.addMultiCellWidget(self.stripFilterSpin, 7, 7, 3, 4) layout5.addMultiCellWidget(self.anchorsContainer, 8, 8, 0, 4) layout5.addWidget(self.weightLabel, 9, 0) layout5.addMultiCellWidget(self.weightCombo, 9, 9, 3, 4) layout5.addWidget(self.iterLabel, 10, 0) layout5.addWidget(qt.HorizontalSpacer(self.tabFit), 10, 1) layout5.addMultiCellWidget(self.iterSpin, 10, 10, 3, 4) layout5.addWidget(self.chi2Label, 11, 0) layout5.addMultiCellWidget(self.chi2Value, 11, 11, 3, 4) layout5.addMultiCellWidget(self.strategyCheckBox, 12, 12, 0, 4) layout5.addWidget(self.strategyCombo, 12, 3) layout5.addWidget(self.strategySetupButton, 12, 4) layout5.addMultiCellWidget(self.linearFitFlagCheck, 13, 13, 0, 4) layout5.addMultiCellWidget(self.topLine, 14, 15, 0, 4) layout5.addMultiCellWidget(self.minSpin, 15, 16, 4, 4) layout5.addWidget(self.regionCheck, 16, 0) layout5.addMultiCellWidget(self.firstLabel, 16, 16, 2, 3) layout5.addMultiCellWidget(self.lastLabel, 17, 17, 2, 3) layout5.addWidget(self.maxSpin, 17, 4) layout5.addMultiCellWidget(self.bottomLine, 18, 18, 0, 4) tabFitLayout.addLayout(layout5) includeWidget = qt.QWidget(self.tabFit) includeLayout = Q3GridLayout(includeWidget) includeLayout.setContentsMargins(0, 0, 0, 0) includeLayout.setSpacing(3) self.stepCheck = qt.QCheckBox(includeWidget) self.stepCheck.setText(str("Step tail")) includeLayout.addWidget(self.stepCheck, 2, 2) self.escapeCheck = qt.QCheckBox(includeWidget) self.escapeCheck.setText(str("Escape peaks")) includeLayout.addWidget(self.escapeCheck, 1, 1) self.includeLabel = qt.QLabel(includeWidget) includeLabel_font = qt.QFont(self.includeLabel.font()) includeLabel_font.setBold(1) self.includeLabel.setFont(includeLabel_font) self.includeLabel.setText(str("Include:")) includeLayout.addWidget(self.includeLabel, 0, 0) self.sumCheck = qt.QCheckBox(includeWidget) self.sumCheck.setText(str("Pile-up peaks")) includeLayout.addWidget(self.sumCheck, 1, 2) self.scatterCheck = qt.QCheckBox(includeWidget) self.scatterCheck.setText(str("Scattering peaks")) includeLayout.addWidget(self.scatterCheck, 1, 3) self.stripCheck = qt.QCheckBox(includeWidget) self.stripCheck.setText(str("Stripping")) includeLayout.addWidget(self.stripCheck, 1, 0) self.longCheck = qt.QCheckBox(includeWidget) self.longCheck.setText(str("Long tail")) includeLayout.addWidget(self.longCheck, 2, 1) self.shortCheck = qt.QCheckBox(includeWidget) self.shortCheck.setText(str("Short tail")) includeLayout.addWidget(self.shortCheck, 2, 0) #tabFitLayout.addLayout(includeLayout) layout5.addMultiCellWidget(includeWidget, 18, 19, 0, 4) spacer_2 = qt.QSpacerItem(20, 40,\ qt.QSizePolicy.Minimum,\ qt.QSizePolicy.Expanding) tabFitLayout.addItem(spacer_2) #self.mainTab.addTab(self.tabFit,str("FIT")) self.tabDetector = qt.QWidget() tabDetectorLayout = qt.QVBoxLayout(self.tabDetector) tabDetectorLayout.setContentsMargins(11, 11, 11, 11) tabDetectorLayout.setSpacing(6) detLayout = Q3GridLayout(None) detLayout.setContentsMargins(0, 0, 0, 0) detLayout.setSpacing(2) self.elementCombo = qt.QComboBox(self.tabDetector) self.elementCombo.insertItem(0, str("Si")) self.elementCombo.insertItem(1, str("Ge")) self.elementCombo.insertItem(2, str("Cd1Te1")) self.elementCombo.insertItem(3, str("Hg1I2")) self.elementCombo.insertItem(4, str("Ga1As1")) self.elementCombo.setEnabled(1) self.elementCombo.setDuplicatesEnabled(0) detLayout.addWidget(self.elementCombo, 0, 3) self.elementLabel = qt.QLabel(self.tabDetector) self.elementLabel.setText(str("Detector Composition")) detLayout.addWidget(self.elementLabel, 0, 0) self.escapeLabel = qt.QLabel(self.tabDetector) self.escapeLabel.setText(str("Maximum Number of Escape energies")) detLayout.addMultiCellWidget(self.escapeLabel, 3, 4, 0, 0) #self.intensityValue0 = QLineEdit(self.tabDetector,"intensityValue0") #self.intensityValue0.setText(str("1.0")) #self.intensityValue0.setReadOnly(1) self.nEscapeThreshold = Q3SpinBox(self.tabDetector) self.nEscapeThreshold.setMaxValue(20) self.nEscapeThreshold.setMinValue(1) self.nEscapeThreshold.setValue(4) #detLayout.addWidget(self.intensityValue0,3,3) detLayout.addWidget(self.nEscapeThreshold, 3, 3) spacer_4 = qt.QSpacerItem(89, 20,\ qt.QSizePolicy.Expanding, qt.QSizePolicy.Minimum) detLayout.addItem(spacer_4, 3, 1) tabDetectorLayout.addLayout(detLayout) self.calibLine = qt.QFrame(self.tabDetector) self.calibLine.setFrameShape(qt.QFrame.HLine) self.calibLine.setFrameShadow(qt.QFrame.Sunken) self.calibLine.setFrameShape(qt.QFrame.HLine) tabDetectorLayout.addWidget(self.calibLine) layout5_2 = Q3GridLayout(None) layout5_2.setContentsMargins(11, 11, 11, 11) layout5_2.setSpacing(2) self.zeroError = qt.QLineEdit(self.tabDetector) layout5_2.addWidget(self.zeroError, 1, 5) self.sumfacSepLabel = qt.QLabel(self.tabDetector) sumfacSepLabel_font = qt.QFont(self.sumfacSepLabel.font()) sumfacSepLabel_font.setBold(1) self.sumfacSepLabel.setFont(sumfacSepLabel_font) self.sumfacSepLabel.setText(str("+/-")) layout5_2.addWidget(self.sumfacSepLabel, 5, 4) self.noiseLabel = qt.QLabel(self.tabDetector) self.noiseLabel.setText(str("Detector noise (keV)")) layout5_2.addWidget(self.noiseLabel, 3, 0) self.gainCheck = qt.QCheckBox(self.tabDetector) self.gainCheck.setText(str("")) layout5_2.addWidget(self.gainCheck, 2, 2) self.gainLabel = qt.QLabel(self.tabDetector) self.gainLabel.setText(str("Spectrometer gain (keV/ch)")) layout5_2.addWidget(self.gainLabel, 2, 0) self.sumfacLabel = qt.QLabel(self.tabDetector) self.sumfacLabel.setText(str("Pile-up Factor")) layout5_2.addWidget(self.sumfacLabel, 5, 0) self.noiseError = qt.QLineEdit(self.tabDetector) layout5_2.addWidget(self.noiseError, 3, 5) self.zeroValue = qt.QLineEdit(self.tabDetector) layout5_2.addWidget(self.zeroValue, 1, 3) self.fanoSepLabel = qt.QLabel(self.tabDetector) fanoSepLabel_font = qt.QFont(self.fanoSepLabel.font()) fanoSepLabel_font.setBold(1) self.fanoSepLabel.setFont(fanoSepLabel_font) self.fanoSepLabel.setText(str("+/-")) layout5_2.addWidget(self.fanoSepLabel, 4, 4) self.fanoError = qt.QLineEdit(self.tabDetector) layout5_2.addWidget(self.fanoError, 4, 5) self.zeroSepLabel = qt.QLabel(self.tabDetector) zeroSepLabel_font = qt.QFont(self.zeroSepLabel.font()) zeroSepLabel_font.setBold(1) self.zeroSepLabel.setFont(zeroSepLabel_font) self.zeroSepLabel.setText(str("+/-")) layout5_2.addWidget(self.zeroSepLabel, 1, 4) self.valueLabel = qt.QLabel(self.tabDetector) valueLabel_font = qt.QFont(self.valueLabel.font()) valueLabel_font.setItalic(1) self.valueLabel.setFont(valueLabel_font) self.valueLabel.setText(str("Value")) self.valueLabel.setAlignment(qt.Qt.AlignCenter) layout5_2.addWidget(self.valueLabel, 0, 3) layout5_2.addWidget(qt.HorizontalSpacer(self.tabDetector), 1, 1) self.noiseValue = qt.QLineEdit(self.tabDetector) layout5_2.addWidget(self.noiseValue, 3, 3) self.fanoValue = qt.QLineEdit(self.tabDetector) layout5_2.addWidget(self.fanoValue, 4, 3) self.zeroLabel = qt.QLabel(self.tabDetector) self.zeroLabel.setText(str("Spectrometer zero (keV)")) layout5_2.addWidget(self.zeroLabel, 1, 0) self.sumfacError = qt.QLineEdit(self.tabDetector) layout5_2.addWidget(self.sumfacError, 5, 5) self.noiseSepLabel = qt.QLabel(self.tabDetector) noiseSepLabel_font = qt.QFont(self.noiseSepLabel.font()) noiseSepLabel_font.setBold(1) self.noiseSepLabel.setFont(noiseSepLabel_font) self.noiseSepLabel.setText(str("+/-")) layout5_2.addWidget(self.noiseSepLabel, 3, 4) self.sumfacCheck = qt.QCheckBox(self.tabDetector) self.sumfacCheck.setText(str("")) layout5_2.addWidget(self.sumfacCheck, 5, 2) self.noiseCheck = qt.QCheckBox(self.tabDetector) self.noiseCheck.setText(str("")) layout5_2.addWidget(self.noiseCheck, 3, 2) self.errorLabel = qt.QLabel(self.tabDetector) errorLabel_font = qt.QFont(self.errorLabel.font()) errorLabel_font.setItalic(1) self.errorLabel.setFont(errorLabel_font) self.errorLabel.setText(str("Delta ")) self.errorLabel.setAlignment(QLabelAlignCenter) layout5_2.addWidget(self.errorLabel, 0, 5) self.fixedLabel = qt.QLabel(self.tabDetector) fixedLabel_font = qt.QFont(self.fixedLabel.font()) fixedLabel_font.setItalic(1) self.fixedLabel.setFont(fixedLabel_font) self.fixedLabel.setText(str("Fixed ")) self.fixedLabel.setAlignment(qt.Qt.AlignVCenter) layout5_2.addWidget(self.fixedLabel, 0, 2) self.zeroCheck = qt.QCheckBox(self.tabDetector) self.zeroCheck.setText(str("")) layout5_2.addWidget(self.zeroCheck, 1, 2) self.sumfacValue = qt.QLineEdit(self.tabDetector, ) layout5_2.addWidget(self.sumfacValue, 5, 3) self.fanoLabel = qt.QLabel(self.tabDetector) self.fanoLabel.setText(str("Fano factor (Si ~ 0.12, Ge ~ 0.1)")) layout5_2.addWidget(self.fanoLabel, 4, 0) self.gainValue = qt.QLineEdit(self.tabDetector) layout5_2.addWidget(self.gainValue, 2, 3) self.gainSepLabel = qt.QLabel(self.tabDetector) gainSepLabel_font = qt.QFont(self.gainSepLabel.font()) gainSepLabel_font.setBold(1) self.gainSepLabel.setFont(gainSepLabel_font) self.gainSepLabel.setText(str("+/-")) layout5_2.addWidget(self.gainSepLabel, 2, 4) self.fanoCheck = qt.QCheckBox(self.tabDetector) self.fanoCheck.setText(str("")) layout5_2.addWidget(self.fanoCheck, 4, 2) self.gainError = qt.QLineEdit(self.tabDetector) layout5_2.addWidget(self.gainError, 2, 5) self.ignoreSpectrumCalibration = qt.QCheckBox(self.tabDetector) ignoreToolTip = "If checked, the starting calibration parameters " ignoreToolTip += "will not be replaced by the input spectrum " ignoreToolTip += "ones.\n" self.ignoreSpectrumCalibration.setToolTip(ignoreToolTip) ignoreText = "Ignore calibration from input data" self.ignoreSpectrumCalibration.setText(ignoreText) self.ignoreSpectrumCalibration.setChecked(False) layout5_2.addWidget(self.ignoreSpectrumCalibration, 6, 0) tabDetectorLayout.addLayout(layout5_2) spacer_6 = qt.QSpacerItem(20, 2,\ qt.QSizePolicy.Minimum,\ qt.QSizePolicy.Expanding) tabDetectorLayout.addItem(spacer_6) self.mainTab.addTab(self.tabDetector, str("DETECTOR")) self.TabBeam = qt.QWidget() self.mainTab.addTab(self.TabBeam, str("BEAM")) self.TabPeaks = qt.QWidget() self.mainTab.addTab(self.TabPeaks, str("PEAKS")) self.tabPeakShape = qt.QWidget() tabPeakShapeLayout = Q3GridLayout(self.tabPeakShape) tabPeakShapeLayout.setContentsMargins(11, 11, 11, 11) tabPeakShapeLayout.setSpacing(2) spacer_7 = qt.QSpacerItem(20, 90,\ qt.QSizePolicy.Minimum,\ qt.QSizePolicy.Expanding) tabPeakShapeLayout.addItem(spacer_7, 8, 0) self.staLabel = qt.QLabel(self.tabPeakShape) self.staLabel.setText(str("Short Tail Area")) tabPeakShapeLayout.addWidget(self.staLabel, 2, 0) spacer_8 = qt.QSpacerItem(59, 20,\ qt.QSizePolicy.Expanding,\ qt.QSizePolicy.Minimum) tabPeakShapeLayout.addItem(spacer_8, 1, 1) self.fixedLabel_2 = qt.QLabel(self.tabPeakShape) fixedLabel_2_font = qt.QFont(self.fixedLabel_2.font()) fixedLabel_2_font.setItalic(1) self.fixedLabel_2.setFont(fixedLabel_2_font) self.fixedLabel_2.setText(str("Fixed")) self.fixedLabel_2.setAlignment(QLabelAlignVCenter) tabPeakShapeLayout.addWidget(self.fixedLabel_2, 1, 2) self.staCheck = qt.QCheckBox(self.tabPeakShape) self.staCheck.setText(str("")) tabPeakShapeLayout.addWidget(self.staCheck, 2, 2) self.valueLabel_2 = qt.QLabel(self.tabPeakShape) valueLabel_2_font = qt.QFont(self.valueLabel_2.font()) valueLabel_2_font.setItalic(1) self.valueLabel_2.setFont(valueLabel_2_font) self.valueLabel_2.setText(str("Value")) self.valueLabel_2.setAlignment(QLabelAlignCenter) tabPeakShapeLayout.addWidget(self.valueLabel_2, 1, 3) self.staValue = qt.QLineEdit(self.tabPeakShape) tabPeakShapeLayout.addWidget(self.staValue, 2, 3) self.staSep = qt.QLabel(self.tabPeakShape) staSep_font = qt.QFont(self.staSep.font()) staSep_font.setBold(1) self.staSep.setFont(staSep_font) self.staSep.setText(str("+/-")) tabPeakShapeLayout.addWidget(self.staSep, 2, 4) self.errorLabel_2 = qt.QLabel(self.tabPeakShape) errorLabel_2_font = qt.QFont(self.errorLabel_2.font()) errorLabel_2_font.setItalic(1) self.errorLabel_2.setFont(errorLabel_2_font) self.errorLabel_2.setText(str("Error")) self.errorLabel_2.setAlignment(QLabelAlignCenter) tabPeakShapeLayout.addWidget(self.errorLabel_2, 1, 5) self.staError = qt.QLineEdit(self.tabPeakShape) tabPeakShapeLayout.addWidget(self.staError, 2, 5) self.stsError = qt.QLineEdit(self.tabPeakShape) tabPeakShapeLayout.addWidget(self.stsError, 3, 5) self.stsSep = qt.QLabel(self.tabPeakShape) stsSep_font = qt.QFont(self.stsSep.font()) stsSep_font.setBold(1) self.stsSep.setFont(stsSep_font) self.stsSep.setText(str("+/-")) tabPeakShapeLayout.addWidget(self.stsSep, 3, 4) self.stsValue = qt.QLineEdit(self.tabPeakShape) tabPeakShapeLayout.addWidget(self.stsValue, 3, 3) self.stsCheck = qt.QCheckBox(self.tabPeakShape) self.stsCheck.setText(str("")) tabPeakShapeLayout.addWidget(self.stsCheck, 3, 2) self.stsLabel = qt.QLabel(self.tabPeakShape) self.stsLabel.setText(str("Short Tail Slope")) tabPeakShapeLayout.addWidget(self.stsLabel, 3, 0) self.ltaLabel = qt.QLabel(self.tabPeakShape) self.ltaLabel.setText(str("Long Tail Area")) tabPeakShapeLayout.addWidget(self.ltaLabel, 4, 0) self.ltaCheck = qt.QCheckBox(self.tabPeakShape) self.ltaCheck.setText(str("")) tabPeakShapeLayout.addWidget(self.ltaCheck, 4, 2) self.ltaValue = qt.QLineEdit(self.tabPeakShape) tabPeakShapeLayout.addWidget(self.ltaValue, 4, 3) self.ltaSep = qt.QLabel(self.tabPeakShape) ltaSep_font = qt.QFont(self.ltaSep.font()) ltaSep_font.setBold(1) self.ltaSep.setFont(ltaSep_font) self.ltaSep.setText(str("+/-")) tabPeakShapeLayout.addWidget(self.ltaSep, 4, 4) self.ltaError = qt.QLineEdit(self.tabPeakShape) tabPeakShapeLayout.addWidget(self.ltaError, 4, 5) self.ltsError = qt.QLineEdit(self.tabPeakShape) tabPeakShapeLayout.addWidget(self.ltsError, 5, 5) self.ltsSep = qt.QLabel(self.tabPeakShape) ltsSep_font = qt.QFont(self.ltsSep.font()) ltsSep_font.setBold(1) self.ltsSep.setFont(ltsSep_font) self.ltsSep.setText(str("+/-")) tabPeakShapeLayout.addWidget(self.ltsSep, 5, 4) self.ltsValue = qt.QLineEdit(self.tabPeakShape) tabPeakShapeLayout.addWidget(self.ltsValue, 5, 3) self.ltsCheck = qt.QCheckBox(self.tabPeakShape) self.ltsCheck.setText(str("")) tabPeakShapeLayout.addWidget(self.ltsCheck, 5, 2) self.ltsLabel = qt.QLabel(self.tabPeakShape) self.ltsLabel.setText(str("Long Tail Slope")) tabPeakShapeLayout.addWidget(self.ltsLabel, 5, 0) # Step Height self.shLabel = qt.QLabel(self.tabPeakShape) self.shLabel.setText(str("Step Height")) tabPeakShapeLayout.addWidget(self.shLabel, 6, 0) self.shCheck = qt.QCheckBox(self.tabPeakShape) self.shCheck.setText(str("")) tabPeakShapeLayout.addWidget(self.shCheck, 6, 2) self.shValue = qt.QLineEdit(self.tabPeakShape) tabPeakShapeLayout.addWidget(self.shValue, 6, 3) self.shSep = qt.QLabel(self.tabPeakShape) shSep_font = qt.QFont(self.shSep.font()) shSep_font.setBold(1) self.shSep.setFont(shSep_font) self.shSep.setText(str("+/-")) tabPeakShapeLayout.addWidget(self.shSep, 6, 4) self.shError = qt.QLineEdit(self.tabPeakShape) tabPeakShapeLayout.addWidget(self.shError, 6, 5) # Pseudo-Voigt Eta Factor self.etaLabel = qt.QLabel(self.tabPeakShape) self.etaLabel.setText(str("Pseudo-Voigt Eta")) tabPeakShapeLayout.addWidget(self.etaLabel, 7, 0) self.etaCheck = qt.QCheckBox(self.tabPeakShape) self.etaCheck.setText(str("")) tabPeakShapeLayout.addWidget(self.etaCheck, 7, 2) self.etaValue = qt.QLineEdit(self.tabPeakShape) tabPeakShapeLayout.addWidget(self.etaValue, 7, 3) self.etaSep = qt.QLabel(self.tabPeakShape) etaSep_font = qt.QFont(self.etaSep.font()) etaSep_font.setBold(1) self.etaSep.setFont(etaSep_font) self.etaSep.setText(str("+/-")) tabPeakShapeLayout.addWidget(self.etaSep, 7, 4) self.etaError = qt.QLineEdit(self.tabPeakShape) tabPeakShapeLayout.addWidget(self.etaError, 7, 5) self.mainTab.addTab(self.tabPeakShape, str("PEAK SHAPE")) FitParamFormLayout.addWidget(self.mainTab) self.setTabOrder(self.mainTab, self.elementCombo) self.setTabOrder(self.zeroCheck, self.zeroValue) self.setTabOrder(self.zeroValue, self.zeroError) self.setTabOrder(self.zeroError, self.gainCheck) self.setTabOrder(self.gainCheck, self.gainValue) self.setTabOrder(self.gainValue, self.gainError) self.setTabOrder(self.gainError, self.noiseCheck) self.setTabOrder(self.noiseCheck, self.noiseValue) self.setTabOrder(self.noiseValue, self.noiseError) self.setTabOrder(self.noiseError, self.fanoCheck) self.setTabOrder(self.fanoCheck, self.fanoValue) self.setTabOrder(self.fanoValue, self.fanoError) self.setTabOrder(self.fanoError, self.staCheck) self.setTabOrder(self.staCheck, self.staValue) self.setTabOrder(self.staValue, self.staError) self.setTabOrder(self.staError, self.stsCheck) self.setTabOrder(self.stsCheck, self.stsValue) self.setTabOrder(self.stsValue, self.stsError) self.setTabOrder(self.stsError, self.ltaCheck) self.setTabOrder(self.ltaCheck, self.ltaValue) self.setTabOrder(self.ltaValue, self.ltaError) self.setTabOrder(self.ltaError, self.ltsCheck) self.setTabOrder(self.ltsCheck, self.ltsValue) self.setTabOrder(self.ltsValue, self.ltsError) self.setTabOrder(self.ltsError, self.shCheck) self.setTabOrder(self.shCheck, self.shValue) self.setTabOrder(self.shValue, self.shError) self.setTabOrder(self.shError, self.contCombo) self.setTabOrder(self.contCombo, self.stripCombo) self.setTabOrder(self.stripCombo, self.iterSpin) self.setTabOrder(self.iterSpin, self.chi2Value) self.setTabOrder(self.chi2Value, self.regionCheck) self.setTabOrder(self.regionCheck, self.minSpin) self.setTabOrder(self.minSpin, self.maxSpin) self.setTabOrder(self.maxSpin, self.stripCheck) self.setTabOrder(self.stripCheck, self.escapeCheck) self.setTabOrder(self.escapeCheck, self.sumCheck) self.setTabOrder(self.sumCheck, self.scatterCheck) self.setTabOrder(self.scatterCheck, self.shortCheck) self.setTabOrder(self.shortCheck, self.longCheck) self.setTabOrder(self.longCheck, self.stepCheck) self._stripComboActivated(0)
def __init__(self, parent=None): qt.QGroupBox.__init__(self, parent) self.setTitle("Fit Control") self.mainLayout = qt.QGridLayout(self) self.mainLayout.setContentsMargins(2, 2, 2, 2) self.mainLayout.setSpacing(2) row = 0 #linear fit self.fitAlgorithmLabel = qt.QLabel(self) self.fitAlgorithmLabel.setText("Fit algorithm") self.fitAlgorithmCombo = qt.QComboBox(self) self.fitAlgorithmCombo.addItem(str("Levenberg-Marquardt")) self.fitAlgorithmCombo.addItem(str("Linear Fit")) self.mainLayout.addWidget(self.fitAlgorithmLabel, row, 0) self.mainLayout.addWidget(qt.HorizontalSpacer(self), row, 1) self.mainLayout.addWidget(self.fitAlgorithmCombo, row, 3) row += 1 #weighting self.weightLabel = qt.QLabel(self) self.weightLabel.setText("Statistical weighting of data") self.weightCombo = qt.QComboBox(self) self.weightCombo.addItem(str("NO Weight")) self.weightCombo.addItem(str("Poisson (1/Y)")) self.mainLayout.addWidget(self.weightLabel, row, 0) self.mainLayout.addWidget(qt.HorizontalSpacer(self), row, 1) self.mainLayout.addWidget(self.weightCombo, row, 3) row += 1 #function estimation policy self.functionEstimationLabel = qt.QLabel(self) self.functionEstimationLabel.setText("Function estimation policy") self.functionEstimationCombo = qt.QComboBox(self) self.functionEstimationCombo.addItem(str("Use configuration")) self.functionEstimationCombo.addItem(str("Estimate once")) self.functionEstimationCombo.addItem(str("Estimate always")) self.functionEstimationCombo.setCurrentIndex(2) self.mainLayout.addWidget(self.functionEstimationLabel, row, 0) self.mainLayout.addWidget(self.functionEstimationCombo, row, 3) row += 1 #background estimation policy self.backgroundEstimationLabel = qt.QLabel(self) text = "Background estimation policy" self.backgroundEstimationLabel.setText(text) self.backgroundEstimationCombo = qt.QComboBox(self) self.backgroundEstimationCombo.addItem(str("Use configuration")) self.backgroundEstimationCombo.addItem(str("Estimate once")) self.backgroundEstimationCombo.addItem(str("Estimate always")) self.backgroundEstimationCombo.setCurrentIndex(2) self.mainLayout.addWidget(self.backgroundEstimationLabel, row, 0) self.mainLayout.addWidget(self.backgroundEstimationCombo, row, 3) row += 1 #number of iterations self.iterLabel = qt.QLabel(self) self.iterLabel.setText(str("Maximum number of fit iterations")) self.iterSpin = qt.QSpinBox(self) self.iterSpin.setMinimum(1) self.iterSpin.setMaximum(10000) self.iterSpin.setValue(10) self.mainLayout.addWidget(self.iterLabel, row, 0) self.mainLayout.addWidget(qt.HorizontalSpacer(self), row, 1) self.mainLayout.addWidget(self.iterSpin, row, 3) row += 1 #chi square handling self.chi2Label = qt.QLabel(self) self.chi2Label.setText(str("Minimum chi^2 difference (%)")) if 0: self.chi2Value = qt.QLineEdit(self) self.chi2Value._v = qt.QDoubleValidator(self.chi2Value) self.chi2Value.setValidator(self.chi2Value._v) self.chi2Value.setText(str("0.001")) else: self.chi2Value = qt.QDoubleSpinBox(self) self.chi2Value.setDecimals(4) self.chi2Value.setMinimum(0.0001) self.chi2Value.setMaximum(100.) self.chi2Value.setSingleStep(0.0001) self.chi2Value.setValue(0.001) self.mainLayout.addWidget(self.chi2Label, row, 0) self.mainLayout.addWidget(qt.HorizontalSpacer(self), row, 1) self.mainLayout.addWidget(self.chi2Value, row, 3) row += 1 #fitting region self.regionTopLine = qt.QFrame(self) self.regionTopLine.setFrameShape(qt.QFrame.HLine) self.regionTopLine.setFrameShadow(qt.QFrame.Sunken) self.regionTopLine.setFrameShape(qt.QFrame.HLine) self.regionCheckBox = qt.QCheckBox(self) self.regionCheckBox.setText(str("Limit fitting region to :")) self.firstLabel = qt.QLabel(self) firstLabel_font = qt.QFont(self.firstLabel.font()) firstLabel_font.setItalic(1) self.firstLabel.setFont(firstLabel_font) self.firstLabel.setText(str("First X Value ")) self.firstLabel.setAlignment(qt.Qt.AlignVCenter | qt.Qt.AlignRight) self.firstValue = qt.QLineEdit(self) self.firstValue._v = qt.QDoubleValidator(self.firstValue) self.firstValue.setValidator(self.firstValue._v) self.firstValue.setText(str("0.")) self.lastLabel = qt.QLabel(self) lastLabel_font = qt.QFont(self.lastLabel.font()) lastLabel_font.setItalic(1) self.lastLabel.setFont(lastLabel_font) self.lastLabel.setText(str("Last X Value ")) self.lastLabel.setAlignment(qt.Qt.AlignVCenter | qt.Qt.AlignRight) self.lastValue = qt.QLineEdit(self) self.lastValue._v = qt.QDoubleValidator(self.lastValue) self.lastValue.setValidator(self.lastValue._v) self.lastValue.setText(str("1000.")) self.regionBottomLine = qt.QFrame(self) self.regionBottomLine.setFrameShape(qt.QFrame.HLine) self.regionBottomLine.setFrameShadow(qt.QFrame.Sunken) self.regionBottomLine.setFrameShape(qt.QFrame.HLine) self.mainLayout.addWidget(self.regionTopLine, row, 0, 1, 4) row += 1 self.mainLayout.addWidget(self.regionCheckBox, row, 0) self.mainLayout.addWidget(self.firstLabel, row, 1) self.mainLayout.addWidget(self.firstValue, row, 3) row += 1 self.mainLayout.addWidget(self.lastLabel, row, 1) self.mainLayout.addWidget(self.lastValue, row, 3) row += 1 self.mainLayout.addWidget(self.regionBottomLine, row, 0, 1, 4) row += 1