def fillLine(self, row, entry): for column in range(len(self._types)): content = entry[column] if self._types[column].lower() == "checkbox": widget = self.cellWidget(row, column) if widget is None: widget = CheckBoxItem(self, row, column) self.setCellWidget(row, column, widget) widget.sigCheckBoxItemSignal.connect(self._checkBoxSlot) widget.setText(content) elif self._types[column].lower() == "radiobutton": widget = self.cellWidget(row, column) if widget is None: widget = RadioButtonItem(self, row, column) self.setCellWidget(row, column, widget) widget.sigRadioButtonItemSignal.connect( \ self._radioButtonSlot) if self._buttonGroups[column] is None: self._buttonGroups[column] = qt.QButtonGroup() widget.setChecked(True) self._buttonGroups[column].addButton(widget) widget.setText(content) else: # text item = self.item(row, column) if item is None: item = qt.QTableWidgetItem(content, qt.QTableWidgetItem.Type) item.setTextAlignment(qt.Qt.AlignHCenter | qt.Qt.AlignVCenter) self.setItem(row, column, item) # item is enabled and selectable item.setFlags(qt.Qt.ItemIsEnabled | qt.Qt.ItemIsSelectable) else: item.setText(content)
def __init__(self, parent=None, options=None): qt.QWidget.__init__(self, parent) self.mainLayout = qt.QGridLayout(self) self.mainLayout.setContentsMargins(0, 0, 0, 0) self.mainLayout.setSpacing(2) self.buttonGroup = qt.QButtonGroup(self) self.buttonList = [] i = 0 if options is None: optionList = ['SCAN', 'MCA'] else: optionList = options actionList = ['ADD', 'REMOVE', 'REPLACE'] for option in optionList: row = optionList.index(option) for action in actionList: col = actionList.index(action) button = qt.QPushButton(self) button.setText(action + " " + option) self.mainLayout.addWidget(button, row, col) self.buttonGroup.addButton(button) self.buttonList.append(button) if hasattr(self.buttonGroup, "idClicked"): self.buttonGroup.idClicked[int].connect(self.emitSignal) else: # deprecated _logger.debug("Using deprecated signal") self.buttonGroup.buttonClicked[int].connect(self.emitSignal)
def __init__(self, parent=None, name=None, fl=0, keys=(), params=()): if QTVERSION < '4.0.0': qt.QWidget.__init__(self, parent, name, fl) if name == None: self.setName("RadioField") #self.resize(166,607) self.setSizePolicy( qt.QSizePolicy(1, 1, 0, 0, self.sizePolicy().hasHeightForWidth())) self.setCaption(str("RadioField")) RadioFieldLayout = qt.QHBoxLayout(self, 11, 6, "RadioFieldLayout") else: qt.QWidget.__init__(self, parent) RadioFieldLayout = qt.QHBoxLayout(self) RadioFieldLayout.setContentsMargins(11, 11, 11, 11) RadioFieldLayout.setSpacing(6) self.RadioFieldBox = qt.QButtonGroup(self) if QTVERSION < '4.0.0': self.RadioFieldBox.setSizePolicy( qt.QSizePolicy( 1, 1, 0, 0, self.RadioFieldBox.sizePolicy().hasHeightForWidth())) self.RadioFieldBox.setTitle(str("")) self.RadioFieldBox.setColumnLayout(0, qt.Qt.Vertical) self.RadioFieldBox.layout().setSpacing(6) self.RadioFieldBox.layout().setContentsMargins(11, 11, 11, 11) RadioFieldBoxLayout = qt.QVBoxLayout(self.RadioFieldBox.layout()) RadioFieldBoxLayout.setAlignment(qt.Qt.AlignTop) Layout1 = qt.QVBoxLayout(None, 0, 6, "Layout1") self.dict = {} if type(keys) == TupleType: for key in keys: self.dict[key] = 1 else: self.dict[keys] = 1 self.RadioButton = [] i = 0 for text in params: self.RadioButton.append( qt.QRadioButton(self.RadioFieldBox, "RadioButton" + "%d" % i)) self.RadioButton[-1].setSizePolicy( qt.QSizePolicy( 1, 1, 0, 0, self.RadioButton[-1].sizePolicy().hasHeightForWidth())) self.RadioButton[-1].setText(str(text)) Layout1.addWidget(self.RadioButton[-1]) i = i + 1 RadioFieldBoxLayout.addLayout(Layout1) RadioFieldLayout.addWidget(self.RadioFieldBox) self.RadioButton[0].setChecked(1) self.RadioFieldBox.clicked[int].connect(self.setvalue)
def __init__(self, parent=None): qt.QWidget.__init__(self, parent) self.mainLayout = qt.QHBoxLayout(self) #self.mainLayout.setContentsMargins(0, 0, 0, 0) #self.mainLayout.setSpacing(0) self.buttonGroup = qt.QButtonGroup(self) i = 0 for text in ["1D data is first dimension", "1D data is last dimension"]: rButton = qt.QRadioButton(self) rButton.setText(text) self.mainLayout.addWidget(rButton) self.buttonGroup.addButton(rButton, i) i += 1 rButton.setChecked(True) self._stackIndex = -1 self.buttonGroup.buttonPressed.connect(self._slot)
def __init__(self, parent, caption, directory): qt.QFileDialog.__init__(self, parent, caption, directory, '') saveOptsGB = qt.QGroupBox('Save options', self) saveOptsBG = qt.QButtonGroup() self.singleFile = qt.QRadioButton('Save spectra in one single file', self) self.individualFiles = qt.QRadioButton('Save spectra in individual files', self) self.singleFile.setChecked(True) saveOptsBG.addButton(self.individualFiles) saveOptsBG.addButton(self.singleFile) saveOptsBG.setExclusive(True) # Only one button at a time can be checked mainLayout = self.layout() optsLayout = qt.QGridLayout() optsLayout.addWidget(self.individualFiles, 0, 0) optsLayout.addWidget(self.singleFile, 1, 0) saveOptsGB.setLayout(optsLayout) mainLayout.addWidget(saveOptsGB, 4, 0, 1, 3)
def __init__(self, parent=None, name="Colormap Dialog"): qt.QDialog.__init__(self, parent) self.setWindowTitle(name) self.title = name self.colormapList = ["Greyscale", "Reverse Grey", "Temperature", "Red", "Green", "Blue", "Many"] # histogramData is tupel(bins, counts) self.histogramData = None # default values self.dataMin = -10 self.dataMax = 10 self.minValue = 0 self.maxValue = 1 self.colormapIndex = 2 self.colormapType = 0 self.autoscale = False self.autoscale90 = False # main layout vlayout = qt.QVBoxLayout(self) vlayout.setContentsMargins(10, 10, 10, 10) vlayout.setSpacing(0) # layout 1 : -combo to choose colormap # -autoscale button # -autoscale 90% button hbox1 = qt.QWidget(self) hlayout1 = qt.QHBoxLayout(hbox1) vlayout.addWidget(hbox1) hlayout1.setContentsMargins(0, 0, 0, 0) hlayout1.setSpacing(10) # combo self.combo = qt.QComboBox(hbox1) for colormap in self.colormapList: self.combo.addItem(colormap) self.combo.activated[int].connect(self.colormapChange) hlayout1.addWidget(self.combo) # autoscale self.autoScaleButton = qt.QPushButton("Autoscale", hbox1) self.autoScaleButton.setCheckable(True) self.autoScaleButton.setAutoDefault(False) self.autoScaleButton.toggled[bool].connect(self.autoscaleChange) hlayout1.addWidget(self.autoScaleButton) # autoscale 90% self.autoScale90Button = qt.QPushButton("Autoscale 90%", hbox1) self.autoScale90Button.setCheckable(True) self.autoScale90Button.setAutoDefault(False) self.autoScale90Button.toggled[bool].connect(self.autoscale90Change) hlayout1.addWidget(self.autoScale90Button) # hlayout hbox0 = qt.QWidget(self) self.__hbox0 = hbox0 hlayout0 = qt.QHBoxLayout(hbox0) hlayout0.setContentsMargins(0, 0, 0, 0) hlayout0.setSpacing(0) vlayout.addWidget(hbox0) #hlayout0.addStretch(10) self.buttonGroup = qt.QButtonGroup() g1 = qt.QCheckBox(hbox0) g1.setText("Linear") g2 = qt.QCheckBox(hbox0) g2.setText("Logarithmic") g3 = qt.QCheckBox(hbox0) g3.setText("Gamma") self.buttonGroup.addButton(g1, 0) self.buttonGroup.addButton(g2, 1) self.buttonGroup.addButton(g3, 2) self.buttonGroup.setExclusive(True) if self.colormapType == 1: self.buttonGroup.button(1).setChecked(True) elif self.colormapType == 2: self.buttonGroup.button(2).setChecked(True) else: self.buttonGroup.button(0).setChecked(True) hlayout0.addWidget(g1) hlayout0.addWidget(g2) hlayout0.addWidget(g3) vlayout.addWidget(hbox0) self.buttonGroup.buttonClicked[int].connect(self.buttonGroupChange) vlayout.addSpacing(20) hboxlimits = qt.QWidget(self) hboxlimitslayout = qt.QHBoxLayout(hboxlimits) hboxlimitslayout.setContentsMargins(0, 0, 0, 0) hboxlimitslayout.setSpacing(0) self.slider = None vlayout.addWidget(hboxlimits) vboxlimits = qt.QWidget(hboxlimits) vboxlimitslayout = qt.QVBoxLayout(vboxlimits) vboxlimitslayout.setContentsMargins(0, 0, 0, 0) vboxlimitslayout.setSpacing(0) hboxlimitslayout.addWidget(vboxlimits) # hlayout 2 : - min label # - min texte hbox2 = qt.QWidget(vboxlimits) self.__hbox2 = hbox2 hlayout2 = qt.QHBoxLayout(hbox2) hlayout2.setContentsMargins(0, 0, 0, 0) hlayout2.setSpacing(0) #vlayout.addWidget(hbox2) vboxlimitslayout.addWidget(hbox2) hlayout2.addStretch(10) self.minLabel = qt.QLabel(hbox2) self.minLabel.setText("Minimum") hlayout2.addWidget(self.minLabel) hlayout2.addSpacing(5) hlayout2.addStretch(1) self.minText = MyQLineEdit(hbox2) self.minText.setFixedWidth(150) self.minText.setAlignment(qt.Qt.AlignRight) self.minText.returnPressed[()].connect(self.minTextChanged) hlayout2.addWidget(self.minText) # hlayout 3 : - min label # - min text hbox3 = qt.QWidget(vboxlimits) self.__hbox3 = hbox3 hlayout3 = qt.QHBoxLayout(hbox3) hlayout3.setContentsMargins(0, 0, 0, 0) hlayout3.setSpacing(0) #vlayout.addWidget(hbox3) vboxlimitslayout.addWidget(hbox3) hlayout3.addStretch(10) self.maxLabel = qt.QLabel(hbox3) self.maxLabel.setText("Maximum") hlayout3.addWidget(self.maxLabel) hlayout3.addSpacing(5) hlayout3.addStretch(1) self.maxText = MyQLineEdit(hbox3) self.maxText.setFixedWidth(150) self.maxText.setAlignment(qt.Qt.AlignRight) self.maxText.returnPressed[()].connect(self.maxTextChanged) hlayout3.addWidget(self.maxText) # Graph widget for color curve... self.c = PlotWidget(self, backend=None) self.c.setGraphXLabel("Data Values") self.c.setInteractiveMode('select') self.marge = (abs(self.dataMax) + abs(self.dataMin)) / 6.0 self.minmd = self.dataMin - self.marge self.maxpd = self.dataMax + self.marge self.c.setGraphXLimits(self.minmd, self.maxpd) self.c.setGraphYLimits(-11.5, 11.5) x = [self.minmd, self.dataMin, self.dataMax, self.maxpd] y = [-10, -10, 10, 10 ] self.c.addCurve(x, y, legend="ConstrainedCurve", color='black', symbol='o', linestyle='-') self.markers = [] self.__x = x self.__y = y labelList = ["","Min", "Max", ""] for i in range(4): if i in [1, 2]: draggable = True color = "blue" else: draggable = False color = "black" #TODO symbol legend = "%d" % i self.c.addXMarker(x[i], legend=legend, text=labelList[i], draggable=draggable, color=color) self.markers.append((legend, "")) self.c.setMinimumSize(qt.QSize(250,200)) vlayout.addWidget(self.c) self.c.sigPlotSignal.connect(self.chval) # colormap window can not be resized self.setFixedSize(vlayout.minimumSize())
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 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 __init__(self, parent=None): qt.QWidget.__init__(self, parent) self.setWindowTitle("FastXRFLinearFitWindow") self.setWindowIcon(qt.QIcon(qt.QPixmap(IconDict['gioconda16']))) self.mainLayout = qt.QGridLayout(self) self.mainLayout.setContentsMargins(0, 0, 0, 0) # configuration file configLabel = qt.QLabel(self) configLabel.setText("Fit Configuration File:") self._configLine = qt.QLineEdit(self) self._configLine.setReadOnly(True) self._configButton = qt.QPushButton(self) self._configButton.setText("Browse") self._configButton.setAutoDefault(False) self._configButton.clicked.connect(self.browseConfigurationFile) # output directory outdirLabel = qt.QLabel(self) outdirLabel.setText("Output dir:") self._outdirLine = qt.QLineEdit(self) self._outdirLine.setReadOnly(True) self._outdirButton = qt.QPushButton(self) self._outdirButton.setText('Browse') self._outdirButton.setAutoDefault(False) self._outdirButton.clicked.connect(self.browseOutputDir) # output root outrootLabel = qt.QLabel(self) outrootLabel.setText("Output root:") self._outrootLabel = outrootLabel self._outrootLine = qt.QLineEdit(self) self._outrootLine.setReadOnly(False) self._outrootLine.setText("IMAGES") # output entry outentryLabel = qt.QLabel(self) outentryLabel.setText("Output entry:") self._outentryLine = qt.QLineEdit(self) self._outentryLine.setReadOnly(False) self._outentryLine.setText("images") # output process outnameLabel = qt.QLabel(self) outnameLabel.setText("Output process:") self._outnameLabel = outnameLabel self._outnameLine = qt.QLineEdit(self) self._outnameLine.setText("fast_xrf_fit") # fit options boxLabel1 = qt.QLabel(self) boxLabel1.setText("Fit options:") self._boxContainer1 = qt.QWidget(self) self._boxContainerLayout1 = qt.QHBoxLayout(self._boxContainer1) self._boxContainerLayout1.setContentsMargins(0, 0, 0, 0) self._boxContainerLayout1.setSpacing(0) # save options boxLabel2 = qt.QLabel(self) boxLabel2.setText("Save options:") self._boxContainer2 = qt.QWidget(self) self._boxContainerLayout2 = qt.QHBoxLayout(self._boxContainer2) self._boxContainerLayout2.setContentsMargins(0, 0, 0, 0) self._boxContainerLayout2.setSpacing(0) # concentrations self._concentrationsBox = qt.QCheckBox(self._boxContainer1) self._concentrationsBox.setText("Concentrations") self._concentrationsBox.setChecked(False) self._concentrationsBox.setEnabled(True) # diagnostics self._diagnosticsBox = qt.QCheckBox(self._boxContainer1) self._diagnosticsBox.setText("Diagnostics") self._diagnosticsBox.setChecked(False) self._diagnosticsBox.setEnabled(hasH5py) # repeat fit on negative contributions self._fitAgainBox = qt.QCheckBox(self._boxContainer1) self._fitAgainBox.setText("Repeat fit on negative contributions") self._fitAgainBox.setChecked(True) self._fitAgainBox.setEnabled(True) text = "Fit of pixels with negative peak area\n" text += "contributions will be repeated.\n" text += "This can seriously slow down the process\n" text += "if your sample model is far from the truth." self._fitAgainBox.setToolTip(text) # generate tiff files self._tiffBox = qt.QCheckBox(self._boxContainer2) self._tiffBox.setText("TIFF") self._tiffBox.setChecked(False) self._tiffBox.setEnabled(True) # generate csv file self._csvBox = qt.QCheckBox(self._boxContainer2) self._csvBox.setText("CSV") self._csvBox.setChecked(False) self._csvBox.setEnabled(True) # generate dat file self._datBox = qt.QCheckBox(self._boxContainer2) self._datBox.setText("DAT") self._datBox.setChecked(False) self._datBox.setEnabled(True) # generate edf file self._edfBox = qt.QCheckBox(self._boxContainer2) self._edfBox.setText("EDF") self._edfBox.setChecked(True) self._edfBox.setEnabled(True) # generate hdf5 file self._h5Box = qt.QCheckBox(self._boxContainer2) self._h5Box.setText("HDF5") self._h5Box.setChecked(hasH5py) self._h5Box.setEnabled(hasH5py) self._h5Box.stateChanged.connect(self.toggleH5) self.toggleH5(hasH5py) # overwrite output self._overwriteBox = qt.QCheckBox(self._boxContainer2) self._overwriteBox.setText("Overwrite") self._overwriteBox.setChecked(True) self._overwriteBox.setEnabled(True) # generate mutipage file self._multipageBox = qt.QCheckBox(self._boxContainer2) self._multipageBox.setText("Multipage") self._multipageBox.setChecked(False) self._multipageBox.setEnabled(True) self._edfBox.stateChanged.connect(self.stateMultiPage) self._tiffBox.stateChanged.connect(self.stateMultiPage) self.stateMultiPage() self._boxContainerLayout1.addWidget(self._concentrationsBox) self._boxContainerLayout1.addWidget(self._fitAgainBox) self._boxContainerLayout1.addWidget(self._diagnosticsBox) self._boxContainerLayout2.addWidget(self._h5Box) self._boxContainerLayout2.addWidget(self._edfBox) self._boxContainerLayout2.addWidget(self._csvBox) self._boxContainerLayout2.addWidget(self._datBox) self._boxContainerLayout2.addWidget(self._tiffBox) self._boxContainerLayout2.addWidget(self._overwriteBox) self._boxContainerLayout2.addWidget(self._multipageBox) # weight method self._weightWidget = qt.QWidget(self) self._weightWidget.mainLayout = qt.QHBoxLayout(self._weightWidget) self._weightWidget.mainLayout.setContentsMargins(0, 0, 0, 0) self._weightWidget.mainLayout.setSpacing(0) self._weightButtonGroup = qt.QButtonGroup(self._weightWidget) i = 0 weightLabel = qt.QLabel(self) weightLabel.setText("Weight policy: ") for txt in [ "No Weight (Fastest)", "Average Weight (Fast)", "Individual Weights (slow)" ]: button = qt.QRadioButton(self._weightWidget) button.setText(txt) self._weightButtonGroup.addButton(button) self._weightButtonGroup.setId(button, i) self._weightWidget.mainLayout.addWidget(button) i += 1 self._weightButtonGroup.buttons()[0].setChecked(True) #self._weightWidget.mainLayout.addWidget(qt.HorizontalSpacer(self._weightWidget)) i = 0 self.mainLayout.addWidget(configLabel, i, 0) self.mainLayout.addWidget(self._configLine, i, 1) self.mainLayout.addWidget(self._configButton, i, 2) i += 1 self.mainLayout.addWidget(outdirLabel, i, 0) self.mainLayout.addWidget(self._outdirLine, i, 1) self.mainLayout.addWidget(self._outdirButton, i, 2) i += 1 self.mainLayout.addWidget(outrootLabel, i, 0) self.mainLayout.addWidget(self._outrootLine, i, 1) i += 1 self.mainLayout.addWidget(outentryLabel, i, 0) self.mainLayout.addWidget(self._outentryLine, i, 1) i += 1 self.mainLayout.addWidget(outnameLabel, i, 0) self.mainLayout.addWidget(self._outnameLine, i, 1) i += 1 self.mainLayout.addWidget(weightLabel, i, 0) self.mainLayout.addWidget(self._weightWidget, i, 1, 1, 1) i += 1 self.mainLayout.addWidget(boxLabel1, i, 0) self.mainLayout.addWidget(self._boxContainer1, i, 1, 1, 1) i += 1 self.mainLayout.addWidget(boxLabel2, i, 0) self.mainLayout.addWidget(self._boxContainer2, i, 1, 1, 1)
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): super(ObjectPrintConfigurationWidget, self).__init__(parent) self.mainLayout = qt.QGridLayout(self) self.mainLayout.setContentsMargins(0, 0, 0, 0) self.mainLayout.setSpacing(2) hbox = qt.QWidget() hboxLayout = qt.QHBoxLayout(hbox) hboxLayout.setContentsMargins(0, 0, 0, 0) hboxLayout.setSpacing(2) label = qt.QLabel(self) label.setText("Units") label.setAlignment(qt.Qt.AlignCenter) self._pageButton = qt.QRadioButton() self._pageButton.setText("Page") self._inchButton = qt.QRadioButton() self._inchButton.setText("Inches") self._cmButton = qt.QRadioButton() self._cmButton.setText("Centimeters") self._buttonGroup = qt.QButtonGroup(self) self._buttonGroup.addButton(self._pageButton) self._buttonGroup.addButton(self._inchButton) self._buttonGroup.addButton(self._cmButton) self._buttonGroup.setExclusive(True) # units self.mainLayout.addWidget(label, 0, 0, 1, 4) #self.mainLayout.addWidget(self._pageButton, 0, 1) #self.mainLayout.addWidget(self._inchButton, 0, 2) #self.mainLayout.addWidget(self._cmButton, 0, 3) hboxLayout.addWidget(self._pageButton) hboxLayout.addWidget(self._inchButton) hboxLayout.addWidget(self._cmButton) self.mainLayout.addWidget(hbox, 1, 0, 1, 4) self._pageButton.setChecked(True) # xOffset label = qt.QLabel(self) label.setText("X Offset:") self.mainLayout.addWidget(label, 2, 0) self._xOffset = qt.QLineEdit(self) validator = qt.CLocaleQDoubleValidator(None) self._xOffset.setValidator(validator) self._xOffset.setText("0.0") self.mainLayout.addWidget(self._xOffset, 2, 1) # yOffset label = qt.QLabel(self) label.setText("Y Offset:") self.mainLayout.addWidget(label, 2, 2) self._yOffset = qt.QLineEdit(self) validator = qt.CLocaleQDoubleValidator(None) self._yOffset.setValidator(validator) self._yOffset.setText("0.0") self.mainLayout.addWidget(self._yOffset, 2, 3) # width label = qt.QLabel(self) label.setText("Width:") self.mainLayout.addWidget(label, 3, 0) self._width = qt.QLineEdit(self) validator = qt.CLocaleQDoubleValidator(None) self._width.setValidator(validator) self._width.setText("0.5") self.mainLayout.addWidget(self._width, 3, 1) # height label = qt.QLabel(self) label.setText("Height:") self.mainLayout.addWidget(label, 3, 2) self._height = qt.QLineEdit(self) validator = qt.CLocaleQDoubleValidator(None) self._height.setValidator(validator) self._height.setText("0.5") self.mainLayout.addWidget(self._height, 3, 3) # aspect ratio self._aspect = qt.QCheckBox(self) self._aspect.setText("Keep screen aspect ratio") self._aspect.setChecked(True) self.mainLayout.addWidget(self._aspect, 4, 1, 1, 2)
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 = POLYNOM_OPTIONS 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.CLocaleQDoubleValidator(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 buttonGroup.buttonClicked[int].connect(self._buttonClicked) self.userEdgeEnergy.editingFinished.connect( 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) w.activated[int].connect(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.widgetDict[key][text].editingFinished.connect( \ self._regionParameterChanged) validator = qt.CLocaleQDoubleValidator( 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): qt.QWidget.__init__(self, parent) self.setWindowTitle("FastXRFLinearFitWindow") self.setWindowIcon(qt.QIcon(qt.QPixmap(IconDict['gioconda16']))) self.mainLayout = qt.QGridLayout(self) self.mainLayout.setContentsMargins(0, 0, 0, 0) # configuration file configLabel = qt.QLabel(self) configLabel.setText("Fit Configuration File:") self._configLine = qt.QLineEdit(self) self._configLine.setReadOnly(True) self._configButton = qt.QPushButton(self) self._configButton.setText("Browse") self._configButton.setAutoDefault(False) self._configButton.clicked.connect(self.browseConfigurationFile) # output directory outLabel = qt.QLabel(self) outLabel.setText("Output dir:") self._outLine = qt.QLineEdit(self) self._outLine.setReadOnly(True) self._outButton = qt.QPushButton(self) self._outButton.setText('Browse') self._outButton.setAutoDefault(False) self._outButton.clicked.connect(self.browseOutputDir) # output file name fileLabel = qt.QLabel(self) fileLabel.setText("Output file root:") self._fileLine = qt.QLineEdit(self) self._fileLine.setReadOnly(False) self._fileLine.setText("images") boxLabel = qt.QLabel(self) boxLabel.setText("Misc. flags:") self._boxContainer = qt.QWidget(self) self._boxContainerLayout = qt.QHBoxLayout(self._boxContainer) self._boxContainerLayout.setContentsMargins(0, 0, 0, 0) self._boxContainerLayout.setSpacing(0) # concentrations self._concentrationsBox = qt.QCheckBox(self._boxContainer) self._concentrationsBox.setText("calculate concentrations") self._concentrationsBox.setChecked(False) self._concentrationsBox.setEnabled(True) # repeat fit on negative contributions self._fitAgainBox = qt.QCheckBox(self._boxContainer) self._fitAgainBox.setText("Repeat fit on negative contributions") self._fitAgainBox.setChecked(True) self._fitAgainBox.setEnabled(True) text = "Fit of pixels with negative peak area\n" text += "contributions will be repeated.\n" text += "This can seriously slow down the process\n" text += "if your sample model is far from the truth." self._fitAgainBox.setToolTip(text) # generate tiff files self._tiffBox = qt.QCheckBox(self._boxContainer) self._tiffBox.setText("generate TIFF files") self._tiffBox.setChecked(False) self._tiffBox.setEnabled(True) self._boxContainerLayout.addWidget(self._concentrationsBox) self._boxContainerLayout.addWidget(self._fitAgainBox) self._boxContainerLayout.addWidget(self._tiffBox) # weight method self._weightWidget = qt.QWidget(self) self._weightWidget.mainLayout = qt.QHBoxLayout(self._weightWidget) self._weightWidget.mainLayout.setContentsMargins(0, 0, 0, 0) self._weightWidget.mainLayout.setSpacing(0) self._weightButtonGroup = qt.QButtonGroup(self._weightWidget) i = 0 weightLabel = qt.QLabel(self) weightLabel.setText("Weight policy: ") for txt in [ "No Weight (Fastest)", "Average Weight (Fast)", "Individual Weights (slow)" ]: button = qt.QRadioButton(self._weightWidget) button.setText(txt) self._weightButtonGroup.addButton(button) self._weightButtonGroup.setId(button, i) self._weightWidget.mainLayout.addWidget(button) i += 1 self._weightButtonGroup.buttons()[0].setChecked(True) #self._weightWidget.mainLayout.addWidget(qt.HorizontalSpacer(self._weightWidget)) self.mainLayout.addWidget(configLabel, 0, 0) self.mainLayout.addWidget(self._configLine, 0, 1) self.mainLayout.addWidget(self._configButton, 0, 2) self.mainLayout.addWidget(outLabel, 1, 0) self.mainLayout.addWidget(self._outLine, 1, 1) self.mainLayout.addWidget(self._outButton, 1, 2) self.mainLayout.addWidget(fileLabel, 2, 0) self.mainLayout.addWidget(self._fileLine, 2, 1) self.mainLayout.addWidget(weightLabel, 3, 0) self.mainLayout.addWidget(self._weightWidget, 3, 1, 1, 1) self.mainLayout.addWidget(boxLabel, 4, 0) self.mainLayout.addWidget(self._boxContainer, 4, 1, 1, 1)