def buildAndConnectActions(self): buts= qt.QGroupBox(self) buts.layout = qt.QHBoxLayout(buts) load= qt.QPushButton(buts) load.setAutoDefault(False) load.setText("Load") save= qt.QPushButton(buts) save.setAutoDefault(False) save.setText("Save") reject= qt.QPushButton(buts) reject.setAutoDefault(False) reject.setText("Cancel") accept= qt.QPushButton(buts) accept.setAutoDefault(False) accept.setText("OK") buts.layout.addWidget(load) buts.layout.addWidget(save) buts.layout.addWidget(reject) buts.layout.addWidget(accept) self.mainLayout.addWidget(buts) self.connect(load, qt.SIGNAL("clicked()"), self.load) self.connect(save, qt.SIGNAL("clicked()"), self.save) self.connect(reject, qt.SIGNAL("clicked()"), self.reject) self.connect(accept, qt.SIGNAL("clicked()"), self.accept)
def build(self): layout = qt.QVBoxLayout(self) layout.setMargin(0) layout.setSpacing(0) if QTVERSION < '4.0.0': buttonGroup = qt.QVButtonGroup("Estimate concentrations", self) buttonGroup.setExclusive(True) else: buttonGroup = qt.QGroupBox(self) buttonGroup.layout = qt.QVBoxLayout(buttonGroup) buttonGroup.layout.setMargin(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.setMargin(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.setMargin(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)) if QTVERSION < '4.0.0': self.connect(self.referenceLine, qt.PYSIGNAL("MyQLineEditSignal"), self._referenceLineSlot) self.connect(self.referenceLine, qt.PYSIGNAL("MyQLineEditSignal"), self._referenceLineSlot) else: self.connect(self.referenceLine, qt.SIGNAL("MyQLineEditSignal"), self._referenceLineSlot) self.connect(self.referenceLine, qt.SIGNAL("MyQLineEditSignal"), 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 from deeper matrix layers (non intralayer nor above layers)") layout.addWidget(self.attenuatorsCheckBox) layout.addWidget( self.secondaryCheckBox) #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() if QTVERSION < '4.0.0': self.connect(self.fluxCheckBox, qt.SIGNAL("clicked()"), self.checkBoxSlot) self.connect(self.matrixCheckBox, qt.SIGNAL("clicked()"), self.checkBoxSlot) else: self.connect(self.fluxCheckBox, qt.SIGNAL("clicked()"), self._fluxCheckBoxSlot) self.connect(self.matrixCheckBox, qt.SIGNAL("clicked()"), self.checkBoxSlot) self.connect(self.attenuatorsCheckBox, qt.SIGNAL("clicked()"), self.checkBoxSlot) if XRFMC_FLAG: self.connect(self.secondaryCheckBox, qt.SIGNAL("clicked()"), self._secondaryCheckBoxSlot) self.connect(self.xrfmcCheckBox, qt.SIGNAL("clicked()"), self._xrfmcCheckBoxSlot) else: self.connect(self.secondaryCheckBox, qt.SIGNAL("clicked()"), self.checkBoxSlot) self.connect(self.mMolarCheckBox, qt.SIGNAL("clicked()"), self.checkBoxSlot) if QTVERSION < '4.0.0': self.connect(self.fundamentalWidget.flux, qt.PYSIGNAL('MyQLineEditSignal'), self._mySignal) self.connect(self.fundamentalWidget.area, qt.PYSIGNAL('MyQLineEditSignal'), self._mySignal) self.connect(self.fundamentalWidget.time, qt.PYSIGNAL('MyQLineEditSignal'), self._mySignal) self.connect(self.fundamentalWidget.distance, qt.PYSIGNAL('MyQLineEditSignal'), self._mySignal) else: self.connect(self.fundamentalWidget.flux, qt.SIGNAL('MyQLineEditSignal'), self._mySignal) self.connect(self.fundamentalWidget.area, qt.SIGNAL('MyQLineEditSignal'), self._mySignal) self.connect(self.fundamentalWidget.time, qt.SIGNAL('MyQLineEditSignal'), self._mySignal) self.connect(self.fundamentalWidget.distance, qt.SIGNAL('MyQLineEditSignal'), self._mySignal)
def __init__(self, parent=None, options=[1, 2, 3, 4, 5, 10]): qt.QDialog.__init__(self, parent) if QTVERSION < '4.0.0': self.setCaption("NNMA Configuration Dialog") else: self.setWindowTitle("NNMA Configuration Dialog") self.mainLayout = qt.QVBoxLayout(self) self.mainLayout.setMargin(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.connect(self.infoButton, qt.SIGNAL('clicked()'), 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.setMargin(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.connect(self.buttonGroup, qt.SIGNAL('buttonPressed(QAbstractButton *)'), 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.setMargin(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.setMargin(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.setMargin(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.connect(self.okButton, qt.SIGNAL("clicked()"), self.accept) self.connect(self.dismissButton, qt.SIGNAL("clicked()"), 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=None): qt.QWidget.__init__(self, parent) self.mainLayout = qt.QGridLayout(self) self.mainLayout.setContentsMargins(0, 0, 0, 0) self.mainLayout.setSpacing(2) self.__parametersDict = self._getDefaultParameters() self.__defaultEdgeEnergy = None self._polynomOptions = [ 'Modif. Victoreen', 'Victoreen', 'Constant', 'Linear', 'Parabolic', 'Cubic' ] i = 0 edgeGroupBox = qt.QGroupBox(self) edgeGroupBoxLayout = qt.QGridLayout(edgeGroupBox) edgeGroupBox.setAlignment(qt.Qt.AlignHCenter) edgeGroupBox.setTitle('Edge Position') autoButton = qt.QRadioButton(edgeGroupBox) autoButton.setText('Auto') autoButton.setChecked(True) userButton = qt.QRadioButton(edgeGroupBox) userButton.setText('User') buttonGroup = qt.QButtonGroup(edgeGroupBox) buttonGroup.addButton(autoButton, 0) buttonGroup.addButton(userButton, 1) buttonGroup.setExclusive(True) userEnergy = qt.QLineEdit(edgeGroupBox) userEnergy.setEnabled(False) validator = qt.QDoubleValidator(userEnergy) userEnergy.setValidator(validator) edgeGroupBoxLayout.addWidget(autoButton, 0, 0) edgeGroupBoxLayout.addWidget(userButton, 1, 0) edgeGroupBoxLayout.addWidget(userEnergy, 1, 1) self.mainLayout.addWidget(edgeGroupBox, 0, 0, 2, 2) #create handles to the relevant widgets self.autoEdgeButton = autoButton self.userEdgeButton = userButton self.userEdgeEnergy = userEnergy # connect the signals self.connect(buttonGroup, qt.SIGNAL('buttonClicked(int)'), self._buttonClicked) self.connect(self.userEdgeEnergy, qt.SIGNAL('editingFinished()'), self._userEdgeEnergyEditingFinished) regionsGroupBox = qt.QGroupBox(self) regionsGroupBoxLayout = qt.QGridLayout(regionsGroupBox) regionsGroupBox.setAlignment(qt.Qt.AlignHCenter) regionsGroupBox.setTitle('Regions') i = 1 for text in ["Pre-edge Polynom:", "Post-edge Polynom:"]: label = qt.QLabel(regionsGroupBox) label.setText(text) regionsGroupBoxLayout.addWidget(label, i, 0) #self.mainLayout.addWidget(qt.HorizontalSpacer(self), i, 1) i += 1 i = 1 self.widgetDict = {} for key in ['pre_edge', 'post_edge']: self.widgetDict[key] = {} c = 1 w = PolynomSelector(regionsGroupBox, options=self._polynomOptions) self.connect(w, qt.SIGNAL('activated(int)'), self._regionParameterChanged) regionsGroupBoxLayout.addWidget(w, i, c) c += 1 self.widgetDict[key]['polynomial'] = w for text in ['delta xmin', 'delta xmax']: label = qt.QLabel(regionsGroupBox) label.setText(text) self.widgetDict[key][text] = qt.QLineEdit(regionsGroupBox) self.connect(self.widgetDict[key][text], qt.SIGNAL('editingFinished()'), self._regionParameterChanged) validator = qt.QDoubleValidator(self.widgetDict[key][text]) self.widgetDict[key][text].setValidator(validator) regionsGroupBoxLayout.addWidget(label, i, c) regionsGroupBoxLayout.addWidget(self.widgetDict[key][text], i, c + 1) c += 2 i += 1 self.mainLayout.addWidget(regionsGroupBox, 0, 2) self._updateParameters()
def __init__(self, parent=None, options=[1, 2, 3, 4, 5, 10], regions=False): qt.QDialog.__init__(self, parent) if QTVERSION < '4.0.0': self.setCaption("PCA Configuration Dialog") else: self.setWindowTitle("PCA Configuration Dialog") self.mainLayout = qt.QVBoxLayout(self) self.mainLayout.setMargin(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.setMargin(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: #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.connect(self.buttonGroup, qt.SIGNAL('buttonPressed(QAbstractButton *)'), 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.setMargin(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.connect(self.binningCombo, qt.SIGNAL("activated(int)"), self._updatePlotFromBinningCombo) if regions: self.__regions = True self.__addRegionsWidget() else: self.__regions = False #the optional plot self.scanWindow = None #the OK button hbox = qt.QWidget(self) hboxLayout = qt.QHBoxLayout(hbox) hboxLayout.setMargin(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.scanWindow is not None: self.mainLayout.addWidget(self.scanWindow) self.connect(self.okButton, qt.SIGNAL("clicked()"), self.accept)