def __init__(self, parent=None, nregions=10, limits=[0.0, 1000.]): qt.QGroupBox.__init__(self, parent) self.setTitle('Spectral Regions') self.mainLayout = qt.QGridLayout(self) self.mainLayout.setContentsMargins(0, 0, 0, 0) self.mainLayout.setSpacing(2) if nregions % 2: nregions += 1 self.nRegions = nregions self.regionList = [] self.__limits = [limits[0], limits[1]] # Nice hint -> What about: # self.regionList.extend([[limits[0], limits[1]] * self.nRegions) # instead of this loop with the useless i? for i in range(self.nRegions): self.regionList.append([limits[0], limits[1]]) self.nRegionsLabel = qt.QLabel(self) self.nRegionsLabel.setText("Number of Regions:") self.nRegionsSpinBox = qt.QSpinBox(self) self.nRegionsSpinBox.setMinimum(0) self.nRegionsSpinBox.setValue(0) self.nRegionsSpinBox.setMaximum(self.nRegions) self.mainLayout.addWidget(self.nRegionsLabel, 0, 0) self.mainLayout.addWidget(self.nRegionsSpinBox, 0, 1) self.nRegionsSpinBox.valueChanged[int].connect(self._regionsChanged) self.currentRegionLabel = qt.QLabel(self) self.currentRegionLabel.setText("Current Region:") self.currentRegionSpinBox = qt.QSpinBox(self) self.currentRegionSpinBox.setMinimum(1) self.currentRegionSpinBox.setValue(1) self.currentRegionSpinBox.setMaximum(1) self.mainLayout.addWidget(self.currentRegionLabel, 0, 2) self.mainLayout.addWidget(self.currentRegionSpinBox, 0, 3) self.currentRegionSpinBox.valueChanged[int].connect( self._currentRegionChanged) label = qt.QLabel(self) label.setText("From:") self.fromLine = qt.QLineEdit(self) self.fromLine.setText("%f" % limits[0]) self.fromLine._v = qt.CLocaleQDoubleValidator(self.fromLine) self.fromLine.setValidator(self.fromLine._v) self.mainLayout.addWidget(label, 0, 4) self.mainLayout.addWidget(self.fromLine, 0, 5) self.fromLine.editingFinished[()].connect(self._editingSlot) label = qt.QLabel(self) label.setText("To:") self.toLine = qt.QLineEdit(self) self.toLine.setText("%f" % limits[1]) self.toLine._v = qt.CLocaleQDoubleValidator(self.toLine) self.toLine.setValidator(self.toLine._v) self.mainLayout.addWidget(label, 0, 6) self.mainLayout.addWidget(self.toLine, 0, 7) self.toLine.editingFinished[()].connect(self._editingSlot) self._regionsChanged(0)
def __init__(self, value=None, *args, **kwargs): qt.QLineEdit.__init__(self, *args, **kwargs) self.setValidator(qt.CLocaleQDoubleValidator(None)) self.setFixedWidth(100) self.setAlignment(qt.Qt.AlignLeft) if value is not None: self.setValue(value)
def __init__(self, parent=None): qt.QWidget.__init__(self, parent) self.mainLayout = qt.QGridLayout(self) self.setContentsMargins(0, 0, 0, 0) self.imageLabel = qt.QLabel(self) self.imageLabel.setPixmap(qt.QPixmap(MatrixImage.image_medium)) self.angleWidgets = [] self.mainLayout.addWidget(self.imageLabel, 0, 0, 2, 2) i = 0 for item in ["Alpha In", "Alpha Out"]: label = qt.QLabel(self) label.setText(item + "(deg) :") lineEdit = qt.QLineEdit(self) validator = qt.CLocaleQDoubleValidator(lineEdit) lineEdit.setValidator(validator) lineEdit._v = validator lineEdit.setText("45.0") self.angleWidgets.append(lineEdit) self.mainLayout.addWidget(label, i, 3) self.mainLayout.addWidget(lineEdit, i, 4) i += 1
def __init__(self, parent, plugin): self._plugin = plugin qt.QDialog.__init__(self, parent) self.setWindowTitle('JSON-RPC Plugin') # Poll GUI pollLayout = qt.QFormLayout() pollGroup = qt.QGroupBox() pollGroup.setTitle('Client mode (Polling)') pollGroup.setLayout(pollLayout) pollUrlLabel = qt.QLabel("URL:") pollUrlLabel.setToolTip("The URL to download JSON-RPC file from\n" + "Supported protocols: http:, ftp: file:") self.pollUrlLineEdit = qt.QLineEdit(self._plugin.pollUrl) pollLayout.addRow(pollUrlLabel, self.pollUrlLineEdit) pollTimeoutLabel = qt.QLabel("Timeout (s):") pollTimeoutLabel.setToolTip( "The interval in seconds at which the plugin is polling the URL") self.pollTimeoutLineEdit = qt.QLineEdit(str(self._plugin.pollTimeout)) # Bounds timeout to avoid to small timeout self.pollTimeoutLineEdit.setValidator( qt.CLocaleQDoubleValidator(0.02, 1000.0, 2)) pollLayout.addRow(pollTimeoutLabel, self.pollTimeoutLineEdit) self.pollLoadBtn = qt.QPushButton(self.LOAD) pollLayout.addRow(self.pollLoadBtn) if self._plugin.isPollRunning(): pollBtnText = self.STOP_POLL else: pollBtnText = self.START_POLL self.pollBtn = qt.QPushButton(pollBtnText) pollLayout.addRow(self.pollBtn) # Server GUI serverLayout = qt.QFormLayout() serverGroup = qt.QGroupBox() serverGroup.setTitle('TCP Server mode') serverGroup.setLayout(serverLayout) serverPortLabel = qt.QLabel("TCP Port:") serverPortLabel.setToolTip( "The TCP port the server is listening to.\n" + "Ranging in [1024-65535]") self.serverPortLineEdit = qt.QLineEdit(str(self._plugin.serverPort)) # Bounds port to 'user' ports self.serverPortLineEdit.setValidator(qt.QIntValidator(1024, 65535)) serverLayout.addRow(serverPortLabel, self.serverPortLineEdit) if self._plugin.isServerRunning(): serverBtnText = self.STOP_SERVER else: serverBtnText = self.START_SERVER self.serverBtn = qt.QPushButton(serverBtnText) serverLayout.addRow(self.serverBtn) # Main layout closeBtn = qt.QPushButton('Close') mainLayout = qt.QVBoxLayout() mainLayout.addWidget(pollGroup) mainLayout.addWidget(serverGroup) mainLayout.addWidget(closeBtn) self.setLayout(mainLayout) # Signals self.pollTimeoutLineEdit.editingFinished.connect(self.pollTimeoutCB) self.pollUrlLineEdit.editingFinished.connect(self.pollUrlCB) self.serverPortLineEdit.editingFinished.connect(self.serverPortCB) self.pollLoadBtn.clicked.connect(self.pollLoadBtnCB) self.pollBtn.clicked.connect(self.pollBtnCB) self.serverBtn.clicked.connect(self.serverBtnCB) closeBtn.clicked.connect(self.accept)
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 __init__(self, parent=None, orientation="vertical"): qt.QWidget.__init__(self, parent) self.mainLayout = qt.QGridLayout(self) self.setContentsMargins(0, 0, 0, 0) # material materialLabel = qt.QLabel(self) materialLabel.setText("Enter material name or formula") self.materialWidget = qt.QComboBox(self) self.materialWidget.setEditable(True) i = 0 for key in Elements.Material.keys(): self.materialWidget.insertItem(i + 1, qstring(key)) i += 1 self.materialWidget.setEditText("Fe") self.editorButton = qt.QPushButton(self) self.editorButton.setText("Show/Hide Editor") self.editorButton.setAutoDefault(False) self.mainLayout.addWidget(materialLabel, 0, 0, 1, 3) self.mainLayout.addWidget(self.materialWidget, 0, 2) self.mainLayout.addWidget(self.editorButton, 0, 3) self.materialEditor = MaterialEditor.MaterialEditor(self) offset = 1 self.mainLayout.addWidget(self.materialEditor, offset, 0, 5, 4) offset += 5 #element elementLabel = qt.QLabel(self) elementLabel.setText("Element") elementWidget = qt.QComboBox(self) for i, symbol in enumerate(Elements.ElementList[2:]): elementWidget.insertItem(i + 1, qstring(symbol + "(%d)" % (i + 3))) edgeLabel = qt.QLabel(self) edgeLabel.setText("Edge") edgeWidget = qt.QComboBox(self) self.edgeWidget = edgeWidget self.elementWidget = elementWidget energyLabel = qt.QLabel(self) energyLabel.setText("Energy (eV)") self.energyWidget = qt.QLineEdit(self) self.energyWidget._validator = qt.CLocaleQDoubleValidator( self.energyWidget) self.energyWidget.setValidator(self.energyWidget._validator) if orientation.lower().startswith("v"): self.mainLayout.addWidget(elementLabel, 0, 0) self.mainLayout.addWidget(elementWidget, 0, 1) self.mainLayout.addWidget(edgeLabel, 1, 0) self.mainLayout.addWidget(edgeWidget, 1, 1) self.mainLayout.addWidget(energyLabel, 2, 0) self.mainLayout.addWidget(self.energyWidget, 2, 1) #self.mainLayout.addWidget(qt.HorizontalSpacer(self), 3, 2) else: self.mainLayout.addWidget(elementLabel, offset + 0, 0) self.mainLayout.addWidget(elementWidget, offset + 1, 0) self.mainLayout.addWidget(edgeLabel, offset + 0, 1) self.mainLayout.addWidget(edgeWidget, offset + 1, 1) self.mainLayout.addWidget(energyLabel, offset + 0, 2, 1, 2) self.mainLayout.addWidget(self.energyWidget, offset + 1, 2, 1, 2) #self.mainLayout.addWidget(qt.HorizontalSpacer(self), 0, 3) self.editorButton.clicked.connect(self.toggleEditor) self.toggleEditor() self._lastMaterial = "Fe" self.materialSignal("Fe") #self.elementWidget.setCurrentIndex(23) #self.elementSignal(23) #self.edgeWidget.setCurrentIndex(0) #self.edgeSignal(0) self.materialWidget.activated[qstring].connect(self.materialSignal) self.elementWidget.activated[qstring].connect(self.elementSignal) self.edgeWidget.activated["int"].connect(self.edgeSignal) self.energyWidget.editingFinished.connect(self.energySignal)
def __init__(self, parent = None): qt.QWidget.__init__(self, parent) self.mainLayout = qt.QVBoxLayout(self) self.gridWidget = qt.QWidget(self) self.gridLayout = qt.QGridLayout(self.gridWidget) self.gridLayout.setContentsMargins(0, 0, 0, 0) self.gridLayout.setSpacing(2) self.labelList = ['X Axis', 'Y Axis', 'N X Labels', 'N Y Labels', 'Origin', 'Interpolation', 'Colormap', 'Lin/Log Colormap', 'Colorbar', 'Contour', 'Contour Labels', 'Contour Label Format', 'Contour Levels', 'Contour Line Width', 'Image Background', 'X Pixel Size', 'Y Pixel Size', 'X Origin', 'Y Origin', 'Zoom X Min', 'Zoom X Max', 'Zoom Y Min', 'Zoom Y Max', 'Value Min', 'Value Max', 'Output dpi'] self.keyList = [] for label in self.labelList: self.keyList.append(label.lower().replace(' ','').replace('/',"")) self.comboBoxList = [] for i in range(len(self.labelList)): label = qt.QLabel(self) label.setText(self.labelList[i]) if self.labelList[i] in ['X Axis', 'Y Axis']: options = ['Off', 'On'] if self.labelList[i] in ['N X Labels', 'N Y Labels']: options = ['Auto', '1', '2', '3', '4', '5', '6', '7', '8', '9'] elif self.labelList[i] in ['Colormap']: options = ['Temperature','Grey', 'Yerg',\ 'Red', 'Green', 'Blue',\ 'Rainbow', 'Jet','Hot', 'Cool', 'Copper'] for candidate in ['spectral', 'Paired', 'Paired_r', 'PuBu', 'PuBu_r', 'RdBu', 'RdBu_r', 'gist_earth', 'gist_earth_r', 'Blues', 'Blues_r', 'YlGnBu', 'YlGnBu_r']: if hasattr(cm, candidate): options.append(candidate) elif self.labelList[i] in ['Lin/Log Colormap']: options = ['Linear','Logarithmic'] elif self.labelList[i] in ['Colorbar']: options = ['None', 'Vertical', 'Horizontal'] elif self.labelList[i] in ['Origin']: options = ['Lower', 'Upper'] elif self.labelList[i] in ['Interpolation']: options = ['Nearest', 'Bilinear'] elif self.labelList[i] in ['Contour']: options = ['Off', 'Line'] elif self.labelList[i] in ['Contour Labels']: options = ['On', 'Off'] elif self.labelList[i] in ['Contour Label Format']: options = ['%.3f', '%.2f', '%.1f', '%.0f', '%.1e', '%.2e', '%.3e'] elif self.labelList[i] in ['Contour Levels']: options = ["10", "9", "8", "7", "6", "5", "4", "3", "2", "1"] elif self.labelList[i] in ['Image Background']: options = ['Black', 'White', 'Grey'] if self.labelList[i] in ['Contour Levels']: line = qt.QSpinBox(self) line.setMinimum(1) line.setMaximum(1000) line.setValue(10) elif self.labelList[i] in ['Contour Line Width']: line = qt.QSpinBox(self) line.setMinimum(1) line.setMaximum(100) line.setValue(10) elif i <= self.labelList.index('Image Background'): line = SimpleComboBox(self, options) else: line = MyLineEdit(self) validator = qt.CLocaleQDoubleValidator(line) line.setValidator(validator) if 'Zoom' in self.labelList[i]: tip = "This zoom is in physical units.\n" tip += "This means pixel size corrected.\n" tip += "To disable zoom, just set both\n" tip += "limits to the same value." line.setToolTip(tip) line.setText('0.0') elif 'Origin' in self.labelList[i]: tip = "First pixel coordinates in physical units.\n" tip += "This means pixel size corrected.\n" line.setToolTip(tip) line.setText('0.0') elif 'Value' in self.labelList[i]: tip = "Clipping values of the data.\n" tip += "To disable clipping, just set both\n" tip += "limits to the same value." line.setToolTip(tip) line.setText('0.0') elif 'Output dpi' in self.labelList[i]: tip = "=Output file resolution." line.setToolTip(tip) line.setText("%d" % 100) else: line.setText('1.0') self.gridLayout.addWidget(label, i, 0) self.gridLayout.addWidget(line, i, 1) self.comboBoxList.append(line) self.mainLayout.addWidget(self.gridWidget) self.mainLayout.addWidget(qt.VerticalSpacer(self)) self.setPixmapMode(False)
def __init__(self, parent=None, options=[1, 2, 3, 4, 5, 10], regions=False): 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.CLocaleQDoubleValidator(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) 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.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) 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) 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 build(self, spacing=2): layout = qt.QHBoxLayout(self) layout.setContentsMargins(0, 0, 0, 0) layout.setSpacing(spacing) #column 0 c0 = qt.QWidget(self) c0.layout = qt.QVBoxLayout(c0) c0.layout.setContentsMargins(0, 0, 0, 0) c0.layout.setSpacing(spacing) c0l0 = qt.QLabel(c0) c0l0.setText("Flux (photons/s)") c0l1 = qt.QLabel(c0) c0l1.setText("Active Area (cm2)") c0.layout.addWidget(c0l0) c0.layout.addWidget(c0l1) #column 1 c1 = qt.QWidget(self) c1.layout = qt.QVBoxLayout(c1) c1.layout.setContentsMargins(0, 0, 0, 0) c1.layout.setSpacing(spacing) self.flux = MyQLineEdit(c1) self.flux.setValidator(qt.CLocaleQDoubleValidator(self.flux)) self.area = MyQLineEdit(c1) self.area.setValidator(qt.CLocaleQDoubleValidator(self.area)) c1.layout.addWidget(self.flux) c1.layout.addWidget(self.area) #column 2 c2 = qt.QWidget(self) c2.layout = qt.QVBoxLayout(c2) c2.layout.setContentsMargins(0, 0, 0, 0) c2.layout.setSpacing(spacing) c2l0 = qt.QLabel(c2) c2l0.setText("x time(seconds)") c2l1 = qt.QLabel(c2) c2l1.setText("distance (cm)") c2.layout.addWidget(c2l0) c2.layout.addWidget(c2l1) #column 3 c3 = qt.QWidget(self) c3.layout = qt.QGridLayout(c3) c3.layout.setContentsMargins(0, 0, 0, 0) c3.layout.setSpacing(spacing) self.time = MyQLineEdit(c3) self.time.setValidator(qt.CLocaleQDoubleValidator(self.time)) self.autoTimeCheckBox = qt.QCheckBox(c3) self.autoTimeCheckBox.setText("Use Automatic Factor") self.autoTimeCheckBox.setChecked(False) self.autoTimeCheckBox.setToolTip( "Attempt to read from the incoming data generating an error if factor not present" ) self.distance = MyQLineEdit(c3) self.distance.setValidator(qt.CLocaleQDoubleValidator(self.distance)) c3.layout.addWidget(self.time, 0, 0) c3.layout.addWidget(self.autoTimeCheckBox, 0, 1) c3.layout.addWidget(self.distance, 1, 0) layout.addWidget(c0) layout.addWidget(c1) layout.addWidget(c2) layout.addWidget(c3)
def buildToolMode(self, comments="True", height=3): layout = qt.QVBoxLayout(self) layout.setContentsMargins(0, 0, 0, 0) layout.setSpacing(0) self.__comments = comments grid = qt.QWidget(self) gridLayout = qt.QGridLayout(grid) gridLayout.setContentsMargins(11, 11, 11, 11) gridLayout.setSpacing(4) numberLabel = qt.QLabel(grid) numberLabel.setText("Number of Compounds:") numberLabel.setAlignment(qt.Qt.AlignVCenter) self.__numberSpin = qt.QSpinBox(grid) self.__numberSpin.setMinimum(1) self.__numberSpin.setMaximum(30) self.__numberSpin.setValue(1) tableContainer = qt.QWidget(self) tableContainerLayout = qt.QVBoxLayout(tableContainer) tableContainerLayout.setContentsMargins(0, 0, 0, 0) tableContainerLayout.setSpacing(0) self.__tableContainer = tableContainer 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()) 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) densityLabel = qt.QLabel(grid) densityLabel.setText("Density (g/cm3):") densityLabel.setAlignment(qt.Qt.AlignVCenter) self.__densityLine = qt.QLineEdit(grid) self.__densityLine.setText("1.0") validator = qt.CLocaleQDoubleValidator(self.__densityLine) self.__densityLine.setValidator(validator) self.__densityLine.setReadOnly(False) thicknessLabel = qt.QLabel(grid) thicknessLabel.setText("Thickness (cm):") thicknessLabel.setAlignment(qt.Qt.AlignVCenter) self.__thicknessLine = qt.QLineEdit(grid) self.__thicknessLine.setText("0.1") validator = qt.CLocaleQDoubleValidator(self.__thicknessLine) self.__thicknessLine.setValidator(validator) self.__thicknessLine.setReadOnly(False) self.__transmissionButton = qt.QPushButton(grid) self.__transmissionButton.setText('Material Transmission') self.__massAttButton = qt.QPushButton(grid) self.__massAttButton.setText('Mass Att. Coefficients') self.__transmissionButton.setAutoDefault(False) self.__massAttButton.setAutoDefault(False) nameHBox = qt.QWidget(grid) nameHBoxLayout = qt.QHBoxLayout(nameHBox) nameHBoxLayout.setContentsMargins(0, 0, 0, 0) nameHBoxLayout.setSpacing(0) nameLabel = qt.QLabel(nameHBox) nameLabel.setText("Name:") nameLabel.setAlignment(qt.Qt.AlignVCenter) self.__nameLine = qt.QLineEdit(nameHBox) self.__nameLine.setReadOnly(False) if self.__toolMode: toolTip = "Type your material name and press the ENTER key.\n" toolTip += "Fitting materials cannot be defined or redefined here.\n" toolTip += "Use the material editor of the advanced fit for it.\n" self.__nameLine.setToolTip(toolTip) nameHBoxLayout.addWidget(nameLabel) nameHBoxLayout.addWidget(self.__nameLine) gridLayout.addWidget(nameHBox, 0, 0, 1, 2) gridLayout.addWidget(numberLabel, 1, 0) gridLayout.addWidget(self.__numberSpin, 1, 1) gridLayout.addWidget(self.__tableContainer, 2, 0, 1, 2) gridLayout.addWidget(densityLabel, 3, 0) gridLayout.addWidget(self.__densityLine, 3, 1) gridLayout.addWidget(thicknessLabel, 4, 0) gridLayout.addWidget(self.__thicknessLine, 4, 1) gridLayout.addWidget(self.__transmissionButton, 5, 0) gridLayout.addWidget(self.__massAttButton, 5, 1) layout.addWidget(grid) layout.addWidget(qt.VerticalSpacer(self)) #build all the connections self.__nameLine.editingFinished[()].connect(self.__nameLineSlot) self.__numberSpin.valueChanged[int].connect(self.__numberSpinChanged) self.__table.cellChanged[int, int].connect(self.__tableSlot) self.__table.cellEntered[int, int].connect(self.__tableSlot2) self.__densityLine.editingFinished[()].connect(self.__densitySlot) self.__thicknessLine.editingFinished[()].connect(self.__thicknessSlot) self.__transmissionButton.clicked.connect(self.__transmissionSlot) self.__massAttButton.clicked.connect(self.__massAttSlot)
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.CLocaleQDoubleValidator(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.CLocaleQDoubleValidator(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().maxWidth() * len(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 __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.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.CLocaleQDoubleValidator(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 __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.CLocaleQDoubleValidator(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.CLocaleQDoubleValidator(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.CLocaleQDoubleValidator(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