Exemple #1
0
 def __init__(self, parent=None, configuration=None):
     qt.QDialog.__init__(self, parent)
     self.setWindowTitle("Set print size preferences")
     if configuration is None:
         configuration = {"xOffset": 0.0,
                          "yOffset": 0.0,
                          "width": 0.5,
                          "height": 0.5,
                          "units": "page",
                          "keepAspectRatio": True}
     layout = qt.QVBoxLayout(self)
     layout.setContentsMargins(0, 0, 0, 0)
     layout.setSpacing(0)
     self.configurationWidget = ObjectPrintConfigurationWidget(self)
     hbox = qt.QWidget(self)
     hboxLayout = qt.QHBoxLayout(hbox)
     self.okButton = qt.QPushButton(hbox)
     self.okButton.setText("Accept")
     self.okButton.setAutoDefault(False)
     self.rejectButton = qt.QPushButton(hbox)
     self.rejectButton.setText("Dismiss")
     self.rejectButton.setAutoDefault(False)
     self.okButton.clicked.connect(self.accept)
     self.rejectButton.clicked.connect(self.reject)
     hboxLayout.setContentsMargins(0, 0, 0, 0)
     hboxLayout.setSpacing(2)
     hboxLayout.addWidget(qt.HorizontalSpacer(hbox))
     hboxLayout.addWidget(self.okButton)
     hboxLayout.addWidget(self.rejectButton)
     hboxLayout.addWidget(qt.HorizontalSpacer(hbox))
     layout.addWidget(self.configurationWidget)
     layout.addWidget(hbox)
     self.setPrintConfiguration(configuration)
Exemple #2
0
    def __init__(self, parent=None, stack=False, actions=True):
        qt.QWidget.__init__(self, parent)
        if stack in [None, False]:
            file_browser = False
        else:
            file_browser = True
        self.mainLayout = qt.QVBoxLayout(self)
        self.mainLayout.setContentsMargins(2, 2, 2, 2)
        self.mainLayout.setSpacing(2)

        self.parametersWidget = SimpleFitBatchParameters(self)
        self.getParameters = self.parametersWidget.getParameters
        self.mainLayout.addWidget(self.parametersWidget)
        if actions:
            self.actionsBox = qt.QWidget(self)
            self.actionsBox.mainLayout = qt.QHBoxLayout(self.actionsBox)
            self.actionsBox.mainLayout.setContentsMargins(2, 2, 2, 2)
            self.actionsBox.mainLayout.setSpacing(2)
            self.closeButton = qt.QPushButton(self.actionsBox)
            self.closeButton.setText("Close")
            self.startButton = qt.QPushButton(self.actionsBox)
            self.startButton.setText("Start")
            self.actionsBox.mainLayout.addWidget(
                qt.HorizontalSpacer(self.actionsBox))
            self.actionsBox.mainLayout.addWidget(self.closeButton)
            self.actionsBox.mainLayout.addWidget(
                qt.HorizontalSpacer(self.actionsBox))
            self.actionsBox.mainLayout.addWidget(self.startButton)
            self.actionsBox.mainLayout.addWidget(
                qt.HorizontalSpacer(self.actionsBox))
            self.mainLayout.addWidget(self.actionsBox)
            self.closeButton.clicked.connect(self.close)
Exemple #3
0
    def __init__(self, parent=None, name="McaSimpleFit", specfit=None, fl=0):
        qt.QWidget.__init__(self, parent)
        self.setWindowTitle(name)
        if specfit is None:
            self.specfit = Specfit.Specfit()
        else:
            self.specfit = specfit
        layout = qt.QVBoxLayout(self)
        ##############
        self.headerlabel = qt.QLabel(self)
        self.headerlabel.setAlignment(qt.Qt.AlignHCenter)
        self.setheader('<b>Fit of XXXXXXXXXX from Channel XXXXX to XXXX<\b>')
        ##############
        defaultFunctions = "SpecfitFunctions.py"
        if not os.path.exists(defaultFunctions):
            defaultFunctions = os.path.join(os.path.dirname(__file__),
                                            defaultFunctions)
        self.specfit.importfun(defaultFunctions)
        self.specfit.settheory('Area Gaussians')
        self.specfit.setbackground('Linear')

        fitconfig = {}
        fitconfig.update(self.specfit.fitconfig)
        fitconfig['WeightFlag'] = 1
        fitconfig['McaMode'] = 1
        self.specfit.configure(**fitconfig)
        self.specfitGui = SpecfitGui.SpecfitGui(self,
                                                config=1,
                                                status=1,
                                                buttons=0,
                                                specfit=self.specfit,
                                                eh=self.specfit.eh)

        layout.addWidget(self.headerlabel)
        layout.addWidget(self.specfitGui)

        hbox = qt.QWidget(self)
        hboxLayout = qt.QHBoxLayout(hbox)
        self.estimatebutton = qt.QPushButton(hbox)
        self.estimatebutton.setText("Estimate")
        hs1 = qt.HorizontalSpacer(hbox)
        self.fitbutton = qt.QPushButton(hbox)
        self.fitbutton.setText("Fit Again!")
        self.dismissbutton = qt.QPushButton(hbox)
        self.dismissbutton.setText("Dismiss")
        self.estimatebutton.clicked.connect(self.estimate)
        self.fitbutton.clicked.connect(self.fit)
        self.dismissbutton.clicked.connect(self.dismiss)
        self.specfitGui.sigSpecfitGuiSignal.connect(self.__anasignal)
        hs2 = qt.HorizontalSpacer(hbox)
        hboxLayout.addWidget(hs1)
        hboxLayout.addWidget(self.estimatebutton)
        hboxLayout.addWidget(self.fitbutton)
        hboxLayout.addWidget(self.dismissbutton)
        hboxLayout.addWidget(hs2)
        layout.addWidget(hbox)
        self.estimatebutton.hide()
Exemple #4
0
 def __buildActions(self):
     box = qt.QHBox(self)
     qt.HorizontalSpacer(box)
     self.__dismissButton = qt.QPushButton(box)
     qt.HorizontalSpacer(box)
     self.__dismissButton.setText("Close")
     self.__startButton   = qt.QPushButton(box)
     qt.HorizontalSpacer(box)
     self.__startButton.setText("Start")
     self.__dismissButton.clicked.connect(self.close)
     self.__startButton.clicked.connect(self.start)
Exemple #5
0
 def addButtons(self):
     self.actions = 1
     self.buttonsBox = qt.QWidget(self)
     l = qt.QHBoxLayout(self.buttonsBox)
     l.setAutoAdd(1)
     qt.HorizontalSpacer(self.buttonsBox)
     self.pauseButton = qt.QPushButton(self.buttonsBox)
     qt.HorizontalSpacer(self.buttonsBox)
     self.pauseButton.setText("Pause")
     self.abortButton   = qt.QPushButton(self.buttonsBox)
     qt.HorizontalSpacer(self.buttonsBox)
     self.abortButton.setText("Abort")
     self.update()
Exemple #6
0
 def __buildActions(self):
     box = qt.QWidget(self)
     boxLayout = qt.QHBoxLayout(box)
     boxLayout.addWidget(qt.HorizontalSpacer(box))
     self.__dismissButton = qt.QPushButton(box)
     boxLayout.addWidget(self.__dismissButton)
     boxLayout.addWidget(qt.HorizontalSpacer(box))
     self.__dismissButton.setText("Close")
     self.__startButton = qt.QPushButton(box)
     boxLayout.addWidget(self.__startButton)
     boxLayout.addWidget(qt.HorizontalSpacer(box))
     self.__startButton.setText("Start")
     self.mainLayout.addWidget(box)
     self.__dismissButton.clicked.connect(self.close)
     self.__startButton.clicked.connect(self.start)
Exemple #7
0
 def __init__(self, parent=None):
     qt.QDialog.__init__(self, parent)
     self.setWindowTitle("FFT Alignment Dialog")
     self.mainLayout = qt.QVBoxLayout(self)
     self.mainLayout.setContentsMargins(0, 0, 0, 0)
     self.parametersWidget = FFTAlignmentWindow(self)
     self.mainLayout.addWidget(self.parametersWidget)
     hbox = qt.QWidget(self)
     hboxLayout = qt.QHBoxLayout(hbox)
     hboxLayout.setContentsMargins(0, 0, 0, 0)
     hboxLayout.setSpacing(0)
     self.okButton = qt.QPushButton(hbox)
     self.okButton.setText("OK")
     self.okButton.setAutoDefault(False)
     self.dismissButton = qt.QPushButton(hbox)
     self.dismissButton.setText("Cancel")
     self.dismissButton.setAutoDefault(False)
     hboxLayout.addWidget(self.okButton)
     hboxLayout.addWidget(qt.HorizontalSpacer(hbox))
     hboxLayout.addWidget(self.dismissButton)
     self.mainLayout.addWidget(hbox)
     self.dismissButton.clicked.connect(self.reject)
     self.okButton.clicked.connect(self.accept)
     self.setStack = self.parametersWidget.setStack
     self.setDummyStack()
    def build(self):
        self.mainLayout = qt.QGridLayout(self)
        self.mainLayout.setContentsMargins(0, 0, 0, 0)
        self.mainLayout.setSpacing(0)

        label = qt.QLabel("Number of matrix iterations to perfom:")
        self._nIterations = qt.QSpinBox(self)
        self._nIterations.setMinimum(1)
        self._nIterations.setMaximum(5)
        self._nIterations.setValue(3)
        self.mainLayout.addWidget(label, 0, 0)
        self.mainLayout.addWidget(qt.HorizontalSpacer(self), 1, 0)
        self.mainLayout.addWidget(self._nIterations, 0, 2)

        label = qt.QLabel("Layer in wich the algorithm is to be applied:")
        self._layerOptions = qt.QComboBox(self)
        self._layerOptions.addItem("Auto")
        self.mainLayout.addWidget(label, 1, 0)
        #self.mainLayout.addWidget(qt.HorizontalSpacer(self), 1, 0)
        self.mainLayout.addWidget(self._layerOptions, 1, 2)

        label = qt.QLabel("Completing material to be used:")
        materialList = list(Elements.Material.keys())
        materialList.sort()
        a = ["-"]
        for key in materialList:
            a.append(key)
        self._materialOptions = MyQComboBox(self, options=a)
        self._materialOptions.addItem("-")
        self.mainLayout.addWidget(label, 2, 0)
        self.mainLayout.addWidget(self._materialOptions, 2, 2)
        self._table = IterationTable(self)
        self.mainLayout.addWidget(self._table, 3, 0, 5, 5)

        self.mainLayout.addWidget(qt.VerticalSpacer(self), 10, 0)
Exemple #9
0
 def __init__(self, parent, data, x=None):
     qt.QDialog.__init__(self, parent)
     self.setWindowTitle("Savitzky-Golay Configuration Dialog")
     self.mainLayout = qt.QVBoxLayout(self)
     self.mainLayout.setContentsMargins(10, 10, 10, 10)
     self.mainLayout.setSpacing(2)
     self.__image = False
     if len(data.shape) == 2:
         spectrum = data.ravel()
     else:
         spectrum = data
     self.parametersWidget = SGWindow(self, spectrum, image=False, x=x)
     self.graph = self.parametersWidget.graph
     self.mainLayout.addWidget(self.parametersWidget)
     hbox = qt.QWidget(self)
     hboxLayout = qt.QHBoxLayout(hbox)
     hboxLayout.setContentsMargins(0, 0, 0, 0)
     hboxLayout.setSpacing(0)
     self.okButton = qt.QPushButton(hbox)
     self.okButton.setText("OK")
     self.okButton.setAutoDefault(False)
     self.dismissButton = qt.QPushButton(hbox)
     self.dismissButton.setText("Cancel")
     self.dismissButton.setAutoDefault(False)
     hboxLayout.addWidget(self.okButton)
     hboxLayout.addWidget(qt.HorizontalSpacer(hbox))
     hboxLayout.addWidget(self.dismissButton)
     self.mainLayout.addWidget(hbox)
     self.dismissButton.clicked.connect(self.reject)
     self.okButton.clicked.connect(self.accept)
Exemple #10
0
 def __init__(self, parent=None):
     qt.QDialog.__init__(self, parent)
     self.setWindowTitle("Strip and SNIP Configuration Window")
     self.mainLayout = qt.QVBoxLayout(self)
     self.mainLayout.setContentsMargins(0, 0, 0, 0)
     self.mainLayout.setSpacing(2)
     self.parametersWidget = StripBackgroundWidget(self)
     self.setData = self.parametersWidget.setData
     self.getParameters = self.parametersWidget.getParameters
     self.setParameters = self.parametersWidget.setParameters
     self.mainLayout.addWidget(self.parametersWidget)
     hbox = qt.QWidget(self)
     hboxLayout = qt.QHBoxLayout(hbox)
     hboxLayout.setContentsMargins(0, 0, 0, 0)
     hboxLayout.setSpacing(2)
     self.okButton = qt.QPushButton(hbox)
     self.okButton.setText("OK")
     self.okButton.setAutoDefault(False)
     self.dismissButton = qt.QPushButton(hbox)
     self.dismissButton.setText("Cancel")
     self.dismissButton.setAutoDefault(False)
     hboxLayout.addWidget(qt.HorizontalSpacer(hbox))
     hboxLayout.addWidget(self.okButton)
     hboxLayout.addWidget(self.dismissButton)
     self.mainLayout.addWidget(hbox)
     self.dismissButton.clicked.connect(self.reject)
     self.okButton.clicked.connect(self.accept)
Exemple #11
0
    def __init__(self, parent=None):
        qt.QWidget.__init__(self, parent)
        self.mainLayout = qt.QGridLayout(self)
        self.mainLayout.setContentsMargins(2, 2, 2, 2)
        self.mainLayout.setSpacing(2)
        font = qt.QFont(self.font())
        font.setBold(True)

        #Function handling
        self.functionLabel = qt.QLabel(self)
        self.functionLabel.setFont(font)
        self.functionLabel.setText("Function:")
        self.addFunctionButton = qt.QPushButton(self)
        self.addFunctionButton.setText("ADD")

        #fit function
        self.fitFunctionLabel = qt.QLabel(self)
        self.fitFunctionLabel.setFont(font)
        self.fitFunctionLabel.setText("Fit:")
        self.fitFunctionCombo = qt.QComboBox(self)
        self.fitFunctionCombo.addItem(qt.safe_str("None"))
        self.fitFunctionCombo.setSizeAdjustPolicy(
            qt.QComboBox.AdjustToContents)
        self.fitFunctionCombo.setMinimumWidth(100)

        #background function
        self.backgroundLabel = qt.QLabel(self)
        self.backgroundLabel.setFont(font)
        self.backgroundLabel.setText("Background:")
        self.backgroundCombo = qt.QComboBox(self)
        self.backgroundCombo.addItem(qt.safe_str("None"))
        self.backgroundCombo.setSizeAdjustPolicy(qt.QComboBox.AdjustToContents)
        self.backgroundCombo.setMinimumWidth(100)

        #arrange everything
        self.mainLayout.addWidget(self.functionLabel, 0, 0)
        self.mainLayout.addWidget(self.addFunctionButton, 0, 1)
        self.mainLayout.addWidget(qt.HorizontalSpacer(self), 0, 2)
        self.mainLayout.addWidget(self.fitFunctionLabel, 0, 3)
        self.mainLayout.addWidget(self.fitFunctionCombo, 0, 4)
        self.mainLayout.addWidget(qt.HorizontalSpacer(self), 0, 5)
        self.mainLayout.addWidget(self.backgroundLabel, 0, 6)
        self.mainLayout.addWidget(self.backgroundCombo, 0, 7)

        self.configureButton = qt.QPushButton(self)
        self.configureButton.setText("CONFIGURE")
        self.mainLayout.addWidget(self.configureButton, 0, 8)
Exemple #12
0
    def __init__(self, parent=None):
        qt.QDialog.__init__(self, parent)
        self.setWindowTitle("Fit Strategy Configuration Window")
        self.mainLayout = qt.QVBoxLayout(self)
        self.mainLayout.setContentsMargins(0, 0, 0, 0)
        self.mainLayout.setSpacing(2)
        self.handlerWidget = StrategyHandlerWidget(self)

        # mimic behavior
        self.setFitConfiguration = self.handlerWidget.setFitConfiguration
        self.getParameters = self.handlerWidget.getParameters
        self.setParameters = self.handlerWidget.setParameters

        # the actions
        hbox = qt.QWidget(self)
        hboxLayout = qt.QHBoxLayout(hbox)
        hboxLayout.setContentsMargins(0, 0, 0, 0)
        hboxLayout.setSpacing(2)
        self.loadButton = qt.QPushButton(hbox)
        self.loadButton.setText("Load")
        self.loadButton.setAutoDefault(False)
        self.loadButton.setToolTip(
            "Read the strategy parameters from other fit configuration file")
        self.okButton = qt.QPushButton(hbox)
        self.okButton.setText("OK")
        self.okButton.setAutoDefault(False)
        self.dismissButton = qt.QPushButton(hbox)
        self.dismissButton.setText("Cancel")
        self.dismissButton.setAutoDefault(False)
        hboxLayout.addWidget(self.loadButton)
        hboxLayout.addWidget(qt.HorizontalSpacer(hbox))
        hboxLayout.addWidget(self.okButton)
        hboxLayout.addWidget(self.dismissButton)
        hboxLayout.addWidget(qt.HorizontalSpacer(hbox))

        # layout
        self.mainLayout.addWidget(self.handlerWidget)
        self.mainLayout.addWidget(hbox)

        # connect
        self.loadButton.clicked.connect(self.load)
        self.dismissButton.clicked.connect(self.reject)
        self.okButton.clicked.connect(self.accept)
Exemple #13
0
 def __init__(self, parent=None, current="", curves=[]):
     qt.QDialog.__init__(self, parent)
     self.setWindowTitle("Rename Curve %s" % current)
     self.curves = curves
     layout = qt.QVBoxLayout(self)
     self.lineEdit = qt.QLineEdit(self)
     self.lineEdit.setText(current)
     self.hbox = qt.QWidget(self)
     self.hboxLayout = qt.QHBoxLayout(self.hbox)
     self.hboxLayout.addWidget(qt.HorizontalSpacer(self.hbox))
     self.okButton = qt.QPushButton(self.hbox)
     self.okButton.setText('OK')
     self.hboxLayout.addWidget(self.okButton)
     self.cancelButton = qt.QPushButton(self.hbox)
     self.cancelButton.setText('Dismiss')
     self.hboxLayout.addWidget(self.cancelButton)
     self.hboxLayout.addWidget(qt.HorizontalSpacer(self.hbox))
     layout.addWidget(self.lineEdit)
     layout.addWidget(self.hbox)
     self.okButton.clicked.connect(self.preAccept)
     self.cancelButton.clicked.connect(self.reject)
    def __init__(self, parent=None, n=1):
        qt.QWidget.__init__(self, parent)
        self.mainLayout = qt.QHBoxLayout(self)
        self.mainLayout.setContentsMargins(0, 0, 0, 0)
        self.mainLayout.setSpacing(0)
        self.firstButton = qt.QPushButton(self)
        self.firstButton.setIcon(qt.QIcon(qt.QPixmap(icon_first)))
        self.previousButton = qt.QPushButton(self)
        self.previousButton.setIcon(qt.QIcon(qt.QPixmap(icon_previous)))
        self.lineEdit = qt.QLineEdit(self)
        self.lineEdit.setFixedWidth(self.lineEdit.fontMetrics().width('%05d' %
                                                                      n))
        validator = qt.QIntValidator(1, n, self.lineEdit)
        self.lineEdit.setText("1")
        self._oldIndex = 0
        self.lineEdit.setValidator(validator)
        self.label = qt.QLabel(self)
        self.label.setText("of %d" % n)
        self.nextButton = qt.QPushButton(self)
        self.nextButton.setIcon(qt.QIcon(qt.QPixmap(icon_next)))
        self.lastButton = qt.QPushButton(self)
        self.lastButton.setIcon(qt.QIcon(qt.QPixmap(icon_last)))

        self.mainLayout.addWidget(qt.HorizontalSpacer(self))
        self.mainLayout.addWidget(self.firstButton)
        self.mainLayout.addWidget(self.previousButton)
        self.mainLayout.addWidget(self.lineEdit)
        self.mainLayout.addWidget(self.label)
        self.mainLayout.addWidget(self.nextButton)
        self.mainLayout.addWidget(self.lastButton)
        self.mainLayout.addWidget(qt.HorizontalSpacer(self))

        self.firstButton.clicked.connect(self._firstClicked)
        self.previousButton.clicked.connect(self._previousClicked)
        self.nextButton.clicked.connect(self._nextClicked)
        self.lastButton.clicked.connect(self._lastClicked)
        self.lineEdit.editingFinished.connect(self._textChangedSlot)
Exemple #15
0
    def __init__(self, parent, legends, motorValues):
        """
        legends         List contains Plotnames
        motorValues     List contains names and values of the motors
        """
        qt.QWidget.__init__(self, parent)
        self.setWindowTitle("Motor Info Plugin")
        if len(legends) != len(motorValues):
            print(
                'Consistency error: legends and motorValues do not have same length!'
            )
        self.numCurves = len(legends)
        # Buttons
        self.buttonAddColumn = qt.QPushButton("Add", self)
        self.buttonDeleteColumn = qt.QPushButton("Del", self)
        self.buttonUpdate = qt.QPushButton(
            qt.QIcon(qt.QPixmap(IconDict["reload"])), '', self)
        # Table
        self.table = MotorInfoTable(self, self.numCurves, 4, legends,
                                    motorValues)

        # Layout
        self.mainLayout = qt.QGridLayout(self)
        self.mainLayout.setContentsMargins(1, 1, 1, 1)
        self.mainLayout.setSpacing(2)
        self.buttonLayout = qt.QHBoxLayout(None)
        self.buttonLayout.setSpacing(1)
        # Add widgets to layour
        self.mainLayout.addWidget(self.table, 0, 0)
        self.mainLayout.addLayout(self.buttonLayout, 1, 0)
        self.buttonLayout.addWidget(self.buttonUpdate)
        self.buttonLayout.addWidget(self.buttonAddColumn)
        self.buttonLayout.addWidget(self.buttonDeleteColumn)
        self.buttonLayout.addWidget(qt.HorizontalSpacer(self))
        self.resize(700, 400)
        # Create shortcuts
        self.updateShortCut = qt.QShortcut(qt.QKeySequence('F5'), self)
        self.addColShortCut = qt.QShortcut(qt.QKeySequence('Ctrl++'), self)
        self.delColShortCut = qt.QShortcut(qt.QKeySequence('Ctrl+-'), self)
        # Make connections
        self.buttonAddColumn.clicked.connect(self.table.addColumn)
        self.buttonDeleteColumn.clicked.connect(self.table.delColumn)
        self.addColShortCut.activated.connect(self.table.addColumn)
        self.delColShortCut.activated.connect(self.table.delColumn)
Exemple #16
0
    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)
Exemple #17
0
    def __init__(self, parent, ddict, llist, plugin):
        qt.QDialog.__init__(self, parent)
        self.setWindowTitle('Alignment Window')

        nCols = 2
        nRows = len(ddict)
        self.plugin = plugin

        # Buttons
        buttonSave = qt.QPushButton('Save')
        buttonSave.setToolTip('Shortcut: CTRL+S\n'
                             +'Save shifts to file')
        buttonSave.setShortcut(qt.Qt.CTRL + qt.Qt.Key_S)
        buttonLoad = qt.QPushButton('Load')
        buttonLoad.setToolTip('Shortcut: CTRL+O\n'
                             +'Load shifts from file')
        buttonLoad.setShortcut(qt.Qt.CTRL + qt.Qt.Key_O)
        buttonStore = qt.QPushButton('Store')
        buttonStore.setToolTip('Shortcut: ALT+S\n'
                              +'Store shifts in memory.\n')
        buttonStore.setShortcut(qt.Qt.ALT + qt.Qt.Key_S)
        buttonApply = qt.QPushButton('Apply')
        buttonApply.setToolTip('Shortcut: CTRL+Return\n'
                              +'Apply shift to curves present'
                              +' in the plot window')
        buttonApply.setShortcut(qt.Qt.CTRL + qt.Qt.Key_Return)
        buttonCancel = qt.QPushButton('Cancel')
        buttonCancel.setToolTip('Shortcut: ESC\n'
                               +'Closes the window')
        buttonCalc = qt.QPushButton('Calculate')
        buttonCalc.setToolTip('Shortcut: F5')
        buttonCalc.setShortcut(qt.Qt.Key_F5)

        # Table
        self.shiftTab = qt.QTableWidget(nRows, nCols)
        self.shiftTab.verticalHeader().hide()
        self.shiftTab.horizontalHeader().setStretchLastSection(True)
        self.shiftTab.setHorizontalHeaderLabels(['Legend','Shift'])

        # Shift Method selector
        self.shiftMethodComboBox = qt.QComboBox()
        self.shiftMethodComboBox.addItems(
            ['Shift x-range',
            'Inverse FFT shift'])
        shiftMethodToolTip =\
            ('Select the method that shifts the spectra\n\n'
            +'Shift x-range:\n'
            +'     Directly applies the shift to the data\'s\n'
            +'     x-range\n'
            +'Inverse FFT shift:\n'
            +'     Shifts the spectra by multiplying a\n'
            +'     phase factor to their Fourier transform. The result is\n'
            +'     transformed back to real space. Recommended for data with\n'
            +'     resp. regions with constant background.')
        self.shiftMethodComboBox.setToolTip(shiftMethodToolTip)

        # Alignment Method selector
        self.alignmentMethodComboBox = qt.QComboBox()
        self.alignmentMethodComboBox.addItems(
            ['FFT',
             'MAX',
             'FIT',
             'FIT DRV'])
        alignmentMethodToolTip =\
            ('Select the method used to calculate the shift is calculated.\n\n'
            +'FFT:\n'
            +'     Calculates the correlation between two curves using its\n'
            +'     Fourier transform. The shift is proportional to the distance of\n'
            +'     the correlation function\'s maxima.\n'
            +'MAX:\n'
            +'     Determines the shift as the distance between the maxima of\n'
            +'     two peaks\n'
            +'FIT:\n'
            +'     Guesses the most prominent feature in a spectrum and tries\n'
            +'     to fit it with a Gaussian peak. Before the fit is perform, the\n'
            +'     background is substracted. The shift is given by the difference\n'
            +'     of the center of mass between two peaks.\n'
            +'FIT DRV:\n'
            +'     Like FIT, but the fit is performed on the derivate of the\n'
            +'     spectrum. Recommended procedure for XAFS data.')
        self.alignmentMethodComboBox.setToolTip(alignmentMethodToolTip)

        # Fill table with data
        self.setDict(llist, ddict)
        self.shiftTab.resizeColumnToContents(self._colLegend)
        self.shiftTab.resizeColumnToContents(self._colShiftLegend)

        #Layouts
        topLayout = qt.QHBoxLayout()
        topLayout.addWidget(buttonCalc)
        topLayout.addWidget(qt.HorizontalSpacer())
        topLayout.addWidget(qt.QLabel('Alignment method:'))
        topLayout.addWidget(self.alignmentMethodComboBox)
        topLayout.addWidget(qt.QLabel('Shift method:'))
        topLayout.addWidget(self.shiftMethodComboBox)

        buttonLayout = qt.QHBoxLayout()
        buttonLayout.addWidget(buttonSave)
        buttonLayout.addWidget(buttonLoad)
        buttonLayout.addWidget(qt.HorizontalSpacer())
        buttonLayout.addWidget(buttonApply)
        buttonLayout.addWidget(buttonStore)
        buttonLayout.addWidget(buttonCancel)

        mainLayout = qt.QVBoxLayout()
        mainLayout.addLayout(topLayout)
        mainLayout.addWidget(self.shiftTab)
        mainLayout.addLayout(buttonLayout)
        mainLayout.setContentsMargins(1,1,1,1)
        self.setLayout(mainLayout)

        # Connects
        self.shiftTab.cellChanged.connect(self.validateInput)
        buttonApply.clicked.connect(self.accept)
        buttonCancel.clicked.connect(self.reject)
        buttonStore.clicked.connect(self.store)
        buttonSave.clicked.connect(self.saveDict)
        buttonLoad.clicked.connect(self.loadDict)

        # ..to Plugin instance
        buttonCalc.clicked.connect(self._triggerCalculateShiftClickedSlot)
        self.alignmentMethodComboBox.activated['QString'].\
                            connect(self.triggerCalculateShift)
Exemple #18
0
    def __init__(self,
                 parent=None,
                 energy=None,
                 threshold=None,
                 useviewer=None,
                 name="Peak Identifier"):
        qt.QWidget.__init__(self, parent)
        self.setWindowTitle(name)
        self.setWindowIcon(qt.QIcon(qt.QPixmap(IconDict['gioconda16'])))

        if energy is None: energy = 5.9
        if threshold is None: threshold = 0.030
        if useviewer is None: useviewer = 0
        self.__useviewer = useviewer

        layout = qt.QVBoxLayout(self)
        #heading
        self.__energyHBox = qt.QWidget(self)
        hbox = self.__energyHBox
        hbox.layout = qt.QHBoxLayout(hbox)
        hbox.layout.setContentsMargins(0, 0, 0, 0)
        hbox.layout.setSpacing(0)
        layout.addWidget(hbox)
        hbox.layout.addWidget(qt.HorizontalSpacer(hbox))

        l1 = qt.QLabel(hbox)
        l1.setText('<b><nobr>Energy (keV)</nobr></b>')
        hbox.layout.addWidget(l1)
        self.energy = MyQLineEdit(hbox)
        self.energy.setText("%.3f" % energy)
        self.energy._validator = qt.CLocaleQDoubleValidator(self.energy)
        self.energy.setValidator(self.energy._validator)
        self.energy.setToolTip('Press enter to validate your energy')
        hbox.layout.addWidget(self.energy)
        hbox.layout.addWidget(qt.HorizontalSpacer(hbox))
        self.energy.editingFinished.connect(self._energySlot)
        #parameters
        self.__hbox2 = qt.QWidget(self)
        hbox2 = self.__hbox2

        layout.addWidget(hbox2)
        hbox2.layout = qt.QHBoxLayout(hbox2)
        hbox2.layout.setContentsMargins(0, 0, 0, 0)
        hbox2.layout.setSpacing(0)
        font = hbox2.font()
        font.setBold(1)
        hbox2.setFont(font)

        l2 = qt.QLabel(hbox2)
        l2.setText('Energy Threshold (eV)')
        self.threshold = qt.QSpinBox(hbox2)
        self.threshold.setMinimum(0)
        self.threshold.setMaximum(1000)
        self.threshold.setValue(int(threshold * 1000))
        self.k = qt.QCheckBox(hbox2)
        self.k.setText('K')
        self.k.setChecked(1)
        self.l1 = qt.QCheckBox(hbox2)
        self.l1.setText('L1')
        self.l1.setChecked(1)
        self.l2 = qt.QCheckBox(hbox2)
        self.l2.setText('L2')
        self.l2.setChecked(1)
        self.l3 = qt.QCheckBox(hbox2)
        self.l3.setText('L3')
        self.l3.setChecked(1)
        self.m = qt.QCheckBox(hbox2)
        self.m.setText('M')
        self.m.setChecked(1)
        self.threshold.valueChanged[int].connect(self._thresholdSlot)
        self.k.clicked.connect(self.mySlot)
        self.l1.clicked.connect(self.mySlot)
        self.l2.clicked.connect(self.mySlot)
        self.l3.clicked.connect(self.mySlot)
        self.m.clicked.connect(self.mySlot)

        hbox2.layout.addWidget(l2)
        hbox2.layout.addWidget(self.threshold)
        hbox2.layout.addWidget(self.k)
        hbox2.layout.addWidget(self.l1)
        hbox2.layout.addWidget(self.l2)
        hbox2.layout.addWidget(self.l3)
        hbox2.layout.addWidget(self.m)

        if self.__useviewer:
            self.__browsertext = qt.QTextEdit(self)
            layout.addWidget(self.__browsertext)
        self.setEnergy(energy)
    def configureFilter(self):
        if self._widget is None:
            # construct a widget
            msg = qt.QDialog()
            msg.setWindowTitle("Deglitch Configuration")
            msgLayout = qt.QGridLayout()
            buttonLayout = qt.QHBoxLayout()

            inpThreshold = qt.QDoubleSpinBox()
            inpThreshold.setRange(0.,10.)
            inpThreshold.setSingleStep(.1)
            inpThreshold.setValue(self.threshold)
            inpThreshold.setToolTip('Increase width for broad spikes')

            inpWidth = qt.QSpinBox()
            inpWidth.setRange(1,101)
            inpWidth.setSingleStep(2)
            inpWidth.setValue(self.width)
            inpWidth.setToolTip('Set low threshold for multiple spikes of different markedness')

            labelWidth = qt.QLabel('Width (must be odd)')
            labelThreshold = qt.QLabel('Threshold (multiple of deviation)')
            buttonOK = qt.QPushButton('Ok')
            buttonOK.clicked.connect(msg.accept)
            buttonCancel = qt.QPushButton('Cancel')
            buttonCancel.clicked.connect(msg.reject)

            allActiveBG = qt.QButtonGroup()
            buttonAll = qt.QCheckBox('Apply to All')
            buttonActive = qt.QCheckBox('Apply to Active')
            allActiveBG.addButton(buttonAll, 0)
            allActiveBG.addButton(buttonActive, 1)
            buttonActive.setChecked(True)

            buttonLayout.addWidget(qt.HorizontalSpacer())
            buttonLayout.addWidget(buttonOK)
            buttonLayout.addWidget(buttonCancel)

            msgLayout.addWidget(labelWidth,0,0)
            msgLayout.addWidget(inpWidth,0,1)
            msgLayout.addWidget(labelThreshold,1,0)
            msgLayout.addWidget(inpThreshold,1,1)
            msgLayout.addWidget(buttonActive,2,0)
            msgLayout.addWidget(buttonAll,2,1)
            msgLayout.addLayout(buttonLayout,3,0,1,2)
            msg.setLayout(msgLayout)
            msg.inputWidth = inpWidth
            msg.inputThreshold = inpThreshold
            msg.applyToAll =  buttonAll
            self._widget = msg
            self._widget.buttonActive = buttonActive
            self._widget.buttonAll = buttonAll
        if self._widget.exec():
            self.threshold = float(self._widget.inputThreshold.value())
            self.width = int(self._widget.inputWidth.value())
            if not (self.width%2):
                self.width += 1
            if self._widget.buttonAll.isChecked():
                _logger.debug('AllChecked')
                self.removeSpikesAll()
            elif self._widget.buttonActive.isChecked():
                _logger.debug('ActiveChecked')
                self.removeSpikesActive()
Exemple #20
0
    def _buildToolBar(self,
                      selection=False,
                      colormap=False,
                      imageicons=False,
                      standalonesave=True,
                      standalonezoom=True,
                      profileselection=False,
                      aspect=False,
                      polygon=False):
        self.solidCircleIcon = qt.QIcon(qt.QPixmap(IconDict["solidcircle"]))
        self.solidEllipseIcon = qt.QIcon(qt.QPixmap(IconDict["solidellipse"]))
        self.colormapIcon = qt.QIcon(qt.QPixmap(IconDict["colormap"]))
        self.selectionIcon = qt.QIcon(qt.QPixmap(IconDict["normal"]))
        self.zoomResetIcon = qt.QIcon(qt.QPixmap(IconDict["zoomreset"]))
        self.polygonIcon = qt.QIcon(qt.QPixmap(IconDict["polygon"]))
        self.printIcon = qt.QIcon(qt.QPixmap(IconDict["fileprint"]))
        self.saveIcon = qt.QIcon(qt.QPixmap(IconDict["filesave"]))
        self.xAutoIcon = qt.QIcon(qt.QPixmap(IconDict["xauto"]))
        self.yAutoIcon = qt.QIcon(qt.QPixmap(IconDict["yauto"]))
        self.hFlipIcon = qt.QIcon(qt.QPixmap(IconDict["gioconda16mirror"]))
        self.imageIcon = qt.QIcon(qt.QPixmap(IconDict["image"]))
        self.eraseSelectionIcon = qt.QIcon(qt.QPixmap(IconDict["eraseselect"]))
        self.rectSelectionIcon = qt.QIcon(qt.QPixmap(IconDict["boxselect"]))
        self.brushSelectionIcon = qt.QIcon(qt.QPixmap(IconDict["brushselect"]))
        self.brushIcon = qt.QIcon(qt.QPixmap(IconDict["brush"]))
        self.additionalIcon = qt.QIcon(qt.QPixmap(
            IconDict["additionalselect"]))
        self.hLineIcon = qt.QIcon(qt.QPixmap(IconDict["horizontal"]))
        self.vLineIcon = qt.QIcon(qt.QPixmap(IconDict["vertical"]))
        self.lineIcon = qt.QIcon(qt.QPixmap(IconDict["diagonal"]))
        self.copyIcon = silx_icons.getQIcon("edit-copy")

        self.toolBar = qt.QWidget(self)
        self.toolBarLayout = qt.QHBoxLayout(self.toolBar)
        self.toolBarLayout.setContentsMargins(0, 0, 0, 0)
        self.toolBarLayout.setSpacing(0)
        self.mainLayout.addWidget(self.toolBar)
        #Autoscale
        if standalonezoom:
            tb = self._addToolButton(self.zoomResetIcon, self.__zoomReset,
                                     'Auto-Scale the Graph')
        else:
            tb = self._addToolButton(self.zoomResetIcon, None,
                                     'Auto-Scale the Graph')
        self.zoomResetToolButton = tb
        #y Autoscale
        tb = self._addToolButton(self.yAutoIcon,
                                 self._yAutoScaleToggle,
                                 'Toggle Autoscale Y Axis (On/Off)',
                                 toggle=True,
                                 state=True)
        tb.setDown(True)

        self.yAutoScaleToolButton = tb
        tb.setDown(True)

        #x Autoscale
        tb = self._addToolButton(self.xAutoIcon,
                                 self._xAutoScaleToggle,
                                 'Toggle Autoscale X Axis (On/Off)',
                                 toggle=True,
                                 state=True)
        self.xAutoScaleToolButton = tb
        tb.setDown(True)

        #Aspect ratio
        if aspect:
            self.aspectButton = self._addToolButton(self.solidCircleIcon,
                                                    self._aspectButtonSignal,
                                                    'Keep data aspect ratio',
                                                    toggle=False)
            self.aspectButton.setChecked(False)

        #colormap
        if colormap:
            tb = self._addToolButton(self.colormapIcon, None,
                                     'Change Colormap')
            self.colormapToolButton = tb

        #flip
        tb = self._addToolButton(self.hFlipIcon, None, 'Flip Horizontal')
        self.hFlipToolButton = tb

        #save
        if standalonesave:
            tb = self._addToolButton(self.saveIcon, self._saveIconSignal,
                                     'Save Graph')
        else:
            tb = self._addToolButton(self.saveIcon, None, 'Save')
        self.saveToolButton = tb

        self.copyToolButton = self._addToolButton(self.copyIcon,
                                                  self._copyIconSignal,
                                                  "Copy graph to clipboard")

        #Selection
        if selection:
            tb = self._addToolButton(self.selectionIcon,
                                     None,
                                     'Toggle Selection Mode',
                                     toggle=True,
                                     state=False)
            tb.setDown(False)
            self.selectionToolButton = tb
        #image selection icons
        if imageicons:
            tb = self._addToolButton(self.imageIcon, None, 'Reset')
            self.imageToolButton = tb

            tb = self._addToolButton(self.eraseSelectionIcon, None,
                                     'Erase Selection')
            self.eraseSelectionToolButton = tb

            tb = self._addToolButton(self.rectSelectionIcon, None,
                                     'Rectangular Selection')
            self.rectSelectionToolButton = tb

            tb = self._addToolButton(self.brushSelectionIcon, None,
                                     'Brush Selection')
            self.brushSelectionToolButton = tb

            tb = self._addToolButton(self.brushIcon, None, 'Select Brush')
            self.brushToolButton = tb

            if polygon:
                tb = self._addToolButton(
                    self.polygonIcon, None,
                    'Polygon selection\nRight click to finish')
                self.polygonSelectionToolButton = tb

            tb = self._addToolButton(self.additionalIcon, None,
                                     'Additional Selections Menu')
            self.additionalSelectionToolButton = tb
        else:
            if polygon:
                tb = self._addToolButton(
                    self.polygonIcon, None,
                    'Polygon selection\nRight click to finish')
                self.polygonSelectionToolButton = tb
            self.imageToolButton = None
        #picker selection
        self._pickerSelectionButtons = []
        if profileselection:
            self._profileSelection = True
            self._polygonSelection = False
            self._pickerSelectionButtons = []
            if self._profileSelection:
                tb = self._addToolButton(self.hLineIcon,
                                         self._hLineProfileClicked,
                                         'Horizontal Profile Selection',
                                         toggle=True,
                                         state=False)
                self.hLineProfileButton = tb
                self._pickerSelectionButtons.append(tb)

                tb = self._addToolButton(self.vLineIcon,
                                         self._vLineProfileClicked,
                                         'Vertical Profile Selection',
                                         toggle=True,
                                         state=False)
                self.vLineProfileButton = tb
                self._pickerSelectionButtons.append(tb)

                tb = self._addToolButton(self.lineIcon,
                                         self._lineProfileClicked,
                                         'Line Profile Selection',
                                         toggle=True,
                                         state=False)
                self.lineProfileButton = tb
                self._pickerSelectionButtons.append(tb)

                self._pickerSelectionWidthLabel = qt.QLabel(self.toolBar)
                self._pickerSelectionWidthLabel.setText("W:")
                self.toolBar.layout().addWidget(
                    self._pickerSelectionWidthLabel)
                self._pickerSelectionWidthValue = qt.QSpinBox(self.toolBar)
                self._pickerSelectionWidthValue.setMinimum(0)
                self._pickerSelectionWidthValue.setMaximum(1000)
                self._pickerSelectionWidthValue.setValue(1)
                self.toolBar.layout().addWidget(
                    self._pickerSelectionWidthValue)
                #tb = self._addToolButton(None,
                #                     self._lineProfileClicked,
                #                     'Line Profile Selection',
                #                     toggle=True,
                #                     state=False)
                #tb.setText = "W:"
                #self.lineWidthProfileButton = tb
                #self._pickerSelectionButtons.append(tb)
            if self._polygonSelection:
                _logger.info("Polygon selection not implemented yet")
        #hide profile selection buttons
        if imageicons:
            for button in self._pickerSelectionButtons:
                button.hide()

        self.infoWidget = qt.QWidget(self.toolBar)
        self.infoWidget.mainLayout = qt.QHBoxLayout(self.infoWidget)
        self.infoWidget.mainLayout.setContentsMargins(0, 0, 0, 0)
        self.infoWidget.mainLayout.setSpacing(0)
        self.infoWidget.label = qt.QLabel(self.infoWidget)
        self.infoWidget.label.setText("X = ???? Y = ???? Z = ????")
        self.infoWidget.mainLayout.addWidget(self.infoWidget.label)
        self.toolBarLayout.addWidget(self.infoWidget)
        self.infoWidget.hide()

        self.toolBarLayout.addWidget(qt.HorizontalSpacer(self.toolBar))

        # ---print
        self.printPreview = SingletonPrintPreviewToolButton(parent=self,
                                                            plot=self.graph)
        self.printPreview.setIcon(self.printIcon)
        self.toolBarLayout.addWidget(self.printPreview)
Exemple #21
0
    def build(self,comments="True",height=3):
        layout = qt.QVBoxLayout(self)
        layout.setContentsMargins(0, 0, 0, 0)
        layout.setSpacing(0)
        self.__comments = comments
        commentsHBox   = qt.QWidget(self)
        layout.addWidget(commentsHBox)
        commentsHBoxLayout = qt.QHBoxLayout(commentsHBox)
        commentsHBoxLayout.setContentsMargins(0, 0, 0, 0)
        commentsHBoxLayout.setSpacing(0)

        tableContainer = qt.QWidget(commentsHBox)
        commentsHBoxLayout.addWidget(tableContainer)
        tableContainerLayout = qt.QVBoxLayout(tableContainer)
        tableContainerLayout.setContentsMargins(0, 0, 0, 0)
        tableContainerLayout.setSpacing(0)
        self.__hboxTableContainer = qt.QWidget(tableContainer)
        hbox = self.__hboxTableContainer
        tableContainerLayout.addWidget(hbox)
        hboxLayout = qt.QHBoxLayout(hbox)
        hboxLayout.setContentsMargins(0, 0, 0, 0)
        hboxLayout.setSpacing(0)
        numberLabel  = qt.QLabel(hbox)
        hboxLayout.addWidget(numberLabel)
        numberLabel.setText("Number  of  Compounds:")
        numberLabel.setAlignment(qt.Qt.AlignVCenter)
        self.__numberSpin  = qt.QSpinBox(hbox)
        hboxLayout.addWidget(self.__numberSpin)
        self.__numberSpin.setMinimum(1)
        self.__numberSpin.setMaximum(100)
        self.__numberSpin.setValue(1)
        self.__table = qt.QTableWidget(tableContainer)
        self.__table.setRowCount(1)
        self.__table.setColumnCount(2)
        tableContainerLayout.addWidget(self.__table)
        self.__table.setMinimumHeight((height)*self.__table.horizontalHeader().sizeHint().height())
        self.__table.setMaximumHeight((height)*self.__table.horizontalHeader().sizeHint().height())
        self.__table.setMinimumWidth(1*self.__table.sizeHint().width())
        self.__table.setMaximumWidth(1*self.__table.sizeHint().width())
        #self.__table.setSizePolicy(qt.QSizePolicy(qt.QSizePolicy.Fixed,qt.QSizePolicy.Fixed))
        labels = ["Material", "Mass Fraction"]
        for i in range(len(labels)):
            item = self.__table.horizontalHeaderItem(i)
            if item is None:
                item = qt.QTableWidgetItem(labels[i],qt.QTableWidgetItem.Type)
            self.__table.setHorizontalHeaderItem(i,item)
        self.__table.setSelectionMode(qt.QTableWidget.NoSelection)
        if self.__comments:
            vbox = qt.QWidget(commentsHBox)
            commentsHBoxLayout.addWidget(vbox)
            vboxLayout = qt.QVBoxLayout(vbox)

            #default thickness and density
            self.__gridVBox = qt.QWidget(vbox)
            grid = self.__gridVBox
            vboxLayout.addWidget(grid)
            gridLayout = qt.QGridLayout(grid)
            gridLayout.setContentsMargins(11, 11, 11, 11)
            gridLayout.setSpacing(4)

            densityLabel  = qt.QLabel(grid)
            gridLayout.addWidget(densityLabel, 0, 0)
            densityLabel.setText("Default Density (g/cm3):")
            densityLabel.setAlignment(qt.Qt.AlignVCenter)
            self.__densityLine  = qt.QLineEdit(grid)
            validator = qt.QDoubleValidator(self.__densityLine)
            self.__densityLine.setValidator(validator)

            self.__densityLine.setReadOnly(False)
            gridLayout.addWidget(self.__densityLine, 0, 1)

            thicknessLabel  = qt.QLabel(grid)
            gridLayout.addWidget(thicknessLabel, 1, 0)
            thicknessLabel.setText("Default  Thickness  (cm):")
            thicknessLabel.setAlignment(qt.Qt.AlignVCenter)
            self.__thicknessLine  = qt.QLineEdit(grid)
            validator = qt.QDoubleValidator(self.__thicknessLine)
            self.__thicknessLine.setValidator(validator)

            gridLayout.addWidget(self.__thicknessLine, 1, 1)
            self.__thicknessLine.setReadOnly(False)
            self.__densityLine.editingFinished[()].connect( \
                         self.__densitySlot)
            self.__thicknessLine.editingFinished[()].connect( \
                     self.__thicknessSlot)

            self.__transmissionButton = qt.QPushButton(grid)
            self.__transmissionButton.setText('Material Transmission')
            gridLayout.addWidget(self.__transmissionButton, 2, 0)
            self.__massAttButton = qt.QPushButton(grid)
            self.__massAttButton.setText('Mass Att. Coefficients')
            gridLayout.addWidget(self.__massAttButton, 2, 1)
            self.__transmissionButton.setAutoDefault(False)
            self.__massAttButton.setAutoDefault(False)

            self.__transmissionButton.clicked.connect(
                         self.__transmissionSlot)
            self.__massAttButton.clicked.connect(
                         self.__massAttSlot)
            vboxLayout.addWidget(qt.VerticalSpacer(vbox))

        if self.__comments:
            #comment
            nameHBox       = qt.QWidget(self)
            nameHBoxLayout = qt.QHBoxLayout(nameHBox)
            nameLabel      = qt.QLabel(nameHBox)
            nameHBoxLayout.addWidget(nameLabel)
            nameLabel.setText("Material Name/Comment:")
            nameLabel.setAlignment(qt.Qt.AlignVCenter)
            nameHBoxLayout.addWidget(qt.HorizontalSpacer(nameHBox))
            self.__nameLine  = qt.QLineEdit(nameHBox)
            self.__nameLine.editingFinished[()].connect(self.__nameLineSlot)
            nameHBoxLayout.addWidget(self.__nameLine)
            self.__nameLine.setReadOnly(False)
            longtext="En un lugar de La Mancha, de cuyo nombre no quiero acordarme ..."
            self.__nameLine.setFixedWidth(self.__nameLine.fontMetrics().width(longtext))
            layout.addWidget(nameHBox)

        self.__numberSpin.valueChanged[int].connect(self.__numberSpinChanged)
        self.__table.cellChanged[int,int].connect(self.__tableSlot)
        self.__table.cellEntered[int,int].connect(self.__tableSlot2)
Exemple #22
0
    def __createInfoWidget(self, symbol=""):
        #Dock window like widget
        frame = qt.QWidget(self.splitter)
        layout = qt.QVBoxLayout(frame)
        layout.setContentsMargins(0, 0, 0, 0)
        layout.setSpacing(0)

        #The dock functionnality
        toolbar = qt.QWidget(frame)
        layout.addWidget(toolbar)
        layout1 = qt.QHBoxLayout(toolbar)
        layout1.setContentsMargins(0, 0, 0, 0)
        layout1.setSpacing(0)

        # --- the line
        self.line1 = Line(toolbar)
        self.line1.setFrameShape(qt.QFrame.HLine)
        self.line1.setFrameShadow(qt.QFrame.Sunken)
        self.line1.setFrameShape(qt.QFrame.HLine)
        layout1.addWidget(self.line1)

        # --- the close button
        self.closelabel = PixmapLabel(toolbar)
        self.closelabel.setPixmap(qt.QPixmap(CLOSE_ICON))
        layout1.addWidget(self.closelabel)
        self.closelabel.setSizePolicy(
            qt.QSizePolicy(qt.QSizePolicy.Fixed, qt.QSizePolicy.Fixed))

        # --- connections
        self.line1.sigLineDoubleClickEvent.connect(self.infoReparent)
        self.closelabel.sigPixmapLabelMousePressEvent.connect(self.infoToggle)

        # --- The text edit widget
        w = qt.QWidget(frame)
        layout.addWidget(w)
        l = qt.QVBoxLayout(w)
        l.setContentsMargins(0, 0, 0, 0)
        l.setSpacing(0)

        hbox = qt.QWidget(w)
        hbox.layout = qt.QHBoxLayout(hbox)
        hbox.layout.setContentsMargins(0, 0, 0, 0)
        hbox.layout.setSpacing(0)
        l.addWidget(hbox)
        hbox.layout.addWidget(qt.HorizontalSpacer(hbox))
        l1 = qt.QLabel(hbox)
        l1.setText('<b><nobr>Excitation Energy (keV)</nobr></b>')
        self.energy = MyQLineEdit(hbox)
        self.energy.setFixedWidth(self.energy.fontMetrics().width('#####.###'))
        self.energy.setText("")
        hbox.layout.addWidget(l1)
        hbox.layout.addWidget(self.energy)
        hbox.layout.addWidget(qt.HorizontalSpacer(hbox))
        self.energy.editingFinished[()].connect(self._energySlot)

        #if both signals are emitted and there is an error then we are in an
        #endless loop
        #self.connect(self.energy, qt.SIGNAL('focusOut'), self._energySlot)

        self.infoText = qt.QTextEdit(w)
        self.infoText.setReadOnly(1)
        self.infoText.clear()
        self.infoText.insertHtml(self.html.gethtml(symbol))
        l.addWidget(self.infoText)
        w.show()
        self.infoWidget = frame
        frame.show()
Exemple #23
0
    def __init__(self, parent=None, name="ScanFit", specfit=None, fl=0):
        #fl=qt.Qt.WDestructiveClose):
        qt.QWidget.__init__(self, parent)
        self.setWindowTitle(name)

        if specfit is None:
            self.specfit = Specfit.Specfit()
        else:
            self.specfit = specfit
        self.info = None
        layout = qt.QVBoxLayout(self)
        layout.setContentsMargins(0, 0, 0, 0)
        layout.setSpacing(0)
        ##############
        self.headerlabel = qt.QLabel(self)
        self.headerlabel.setAlignment(qt.Qt.AlignHCenter)
        self.setHeader('<b>Fit of XXXXXXXXXX from X XXXXX to XXXX<\b>')
        ##############
        if not len(self.specfit.theorylist):
            funsFile = "SpecfitFunctions.py"
            if not os.path.exists(funsFile):
                funsFile = os.path.join(os.path.dirname(Specfit.__file__),
                                        funsFile)
            self.specfit.importfun(funsFile)
        if 'Area Gaussians' not in self.specfit.theorylist:
            funsFile = "SpecfitFunctions.py"
            if not os.path.exists(funsFile):
                funsFile = os.path.join(os.path.dirname(Specfit.__file__),
                                        funsFile)
            self.specfit.importfun(funsFile)
        self.specfit.settheory('Area Gaussians')
        self.specfit.setbackground('Linear')
        fitconfig = {}
        fitconfig.update(self.specfit.fitconfig)
        fitconfig['WeightFlag'] = 0
        fitconfig['ForcePeakPresence'] = 1
        fitconfig['McaMode'] = 0
        self.specfit.configure(**fitconfig)
        self.specfitGui = SpecfitGui.SpecfitGui(self,
                                                config=1,
                                                status=1,
                                                buttons=0,
                                                specfit=self.specfit,
                                                eh=self.specfit.eh)
        #self.specfitGui.updateGui(configuration=fitconfig)
        #self.setdata = self.specfit.setdata

        self.specfitGui.guiconfig.MCACheckBox.setEnabled(1)
        palette = self.specfitGui.guiconfig.MCACheckBox.palette()
        ##############
        hbox = qt.QWidget(self)
        hboxlayout = qt.QHBoxLayout(hbox)
        hboxlayout.setContentsMargins(0, 0, 0, 0)
        hboxlayout.setSpacing(0)
        self.estimatebutton = qt.QPushButton(hbox)
        self.estimatebutton.setText("Estimate")
        self.fitbutton = qt.QPushButton(hbox)
        self.fitbutton.setText("Fit")
        hboxlayout.addWidget(self.estimatebutton)
        hboxlayout.addWidget(qt.HorizontalSpacer(hbox))
        hboxlayout.addWidget(self.fitbutton)

        self.dismissbutton = qt.QPushButton(hbox)
        self.dismissbutton.setText("Dismiss")
        self.estimatebutton.clicked.connect(self.estimate)
        self.fitbutton.clicked.connect(self.fit)
        self.dismissbutton.clicked.connect(self.dismiss)
        self.specfitGui.sigSpecfitGuiSignal.connect(self._specfitGuiSignal)
        hboxlayout.addWidget(qt.HorizontalSpacer(hbox))
        hboxlayout.addWidget(self.dismissbutton)
        layout.addWidget(self.headerlabel)
        layout.addWidget(self.specfitGui)
        layout.addWidget(hbox)
    def __init__(self, parent=None):
        qt.QGroupBox.__init__(self, parent)
        self.setTitle("Function Definition")
        self.mainLayout = qt.QGridLayout(self)
        self.mainLayout.setContentsMargins(2, 2, 2, 2)
        self.mainLayout.setSpacing(2)

        row = 0

        #actual fit function
        self.fitFunctionCheckBox = qt.QCheckBox(self)
        self.fitFunctionCheckBox.setText("Fit Function to be used")
        self.fitFunctionCombo = qt.QComboBox(self)
        self.fitFunctionCombo.addItem(str("None"))
        self.fitFunctionCombo.activated[int].connect( \
                self._fitFunctionComboActivated)
        self.fitFunctionSetupButton = qt.QPushButton(self)
        self.fitFunctionSetupButton.setText('SETUP')
        self.fitFunctionSetupButton.setAutoDefault(False)
        self.fitFunctionSetupButton.hide()

        self.mainLayout.addWidget(self.fitFunctionCheckBox, row, 0)
        self.mainLayout.addWidget(qt.HorizontalSpacer(self), row, 1)
        self.mainLayout.addWidget(self.fitFunctionSetupButton, row, 2)
        self.mainLayout.addWidget(self.fitFunctionCombo, row, 3)
        row += 1

        #background
        self.backgroundCheckBox = qt.QCheckBox(self)
        self.backgroundCheckBox.setText("Background function")
        self.backgroundCombo = qt.QComboBox(self)
        self.backgroundCombo.addItem(str("None"))
        self.backgroundCombo.activated[int].connect( \
            self._backgroundComboActivated)

        self.backgroundSetupButton = qt.QPushButton(self)
        self.backgroundSetupButton.setText('SETUP')
        self.backgroundSetupButton.setAutoDefault(False)
        self.backgroundSetupButton.hide()

        self.mainLayout.addWidget(self.backgroundCheckBox, row, 0)
        self.mainLayout.addWidget(qt.HorizontalSpacer(self), row, 1)
        self.mainLayout.addWidget(self.backgroundSetupButton, row, 2)
        self.mainLayout.addWidget(self.backgroundCombo, row, 3)
        row += 1

        #stripping
        self.stripCheckBox = qt.QCheckBox(self)
        self.stripCheckBox.setText(
            "Non-analytical (or estimation) background algorithm")
        self.stripCombo = qt.QComboBox(self)
        self.stripCombo.addItem(str("Strip"))
        self.stripCombo.addItem(str("SNIP"))
        self.stripSetupButton = qt.QPushButton(self)
        self.stripSetupButton.setText('SETUP')
        self.stripSetupButton.setAutoDefault(False)
        self.stripCombo.activated[int].connect(self._stripComboActivated)

        self.mainLayout.addWidget(self.stripCheckBox, row, 0)
        self.mainLayout.addWidget(qt.HorizontalSpacer(self), row, 1)
        self.mainLayout.addWidget(self.stripSetupButton, row, 2)
        self.mainLayout.addWidget(self.stripCombo, row, 3)
        row += 1

        self.snipWidthLabel = qt.QLabel(self)
        self.snipWidthLabel.setText(str("SNIP Background Width"))
        self.snipWidthSpin = qt.QSpinBox(self)
        self.snipWidthSpin.setMinimum(1)
        self.snipWidthSpin.setMaximum(300)
        self.snipWidthSpin.setValue(10)
        self.mainLayout.addWidget(self.snipWidthLabel, row, 0)
        self.mainLayout.addWidget(self.snipWidthSpin, row, 3)
        row += 1

        self.stripWidthLabel = qt.QLabel(self)
        self.stripWidthLabel.setText(str("Strip Background Width"))
        self.stripWidthSpin = qt.QSpinBox(self)
        self.stripWidthSpin.setMinimum(1)
        self.stripWidthSpin.setMaximum(100)
        self.stripWidthSpin.setValue(4)
        self.mainLayout.addWidget(self.stripWidthLabel, row, 0)
        self.mainLayout.addWidget(self.stripWidthSpin, row, 3)
        row += 1

        self.stripIterLabel = qt.QLabel(self)
        self.stripIterLabel.setText(str("Strip Background Iterations"))
        self.stripIterSpin = qt.QSpinBox(self)
        self.stripIterSpin.setMinimum(0)
        self.stripIterSpin.setMaximum(100000)
        self.stripIterSpin.setValue(5000)
        self.mainLayout.addWidget(self.stripIterLabel, row, 0)
        self.mainLayout.addWidget(self.stripIterSpin, row, 3)
        row += 1

        self.stripFilterLabel = qt.QLabel(self)
        text = str("Strip Background Smoothing Width (Savitsky-Golay)")
        self.stripFilterLabel.setText(text)
        self.stripFilterSpin = qt.QSpinBox(self)
        self.stripFilterSpin.setMinimum(0)
        self.stripFilterSpin.setMaximum(40)
        self.stripFilterSpin.setSingleStep(2)
        self.mainLayout.addWidget(self.stripFilterLabel, row, 0)
        self.mainLayout.addWidget(self.stripFilterSpin, row, 3)
        row += 1

        #anchors
        self.anchorsContainer = qt.QWidget(self)
        anchorsContainerLayout = qt.QHBoxLayout(self.anchorsContainer)
        anchorsContainerLayout.setContentsMargins(2, 2, 2, 2)
        anchorsContainerLayout.setSpacing(2)
        self.stripAnchorsCheckBox = qt.QCheckBox(self.anchorsContainer)
        self.stripAnchorsCheckBox.setText(str("Strip Background use Anchors"))
        anchorsContainerLayout.addWidget(self.stripAnchorsCheckBox)
        self.stripAnchorsList = []
        for i in range(4):
            anchor = qt.QLineEdit(self.anchorsContainer)
            anchor._v = qt.QDoubleValidator(anchor)
            anchor.setValidator(anchor._v)
            anchor.setText("0.0")
            anchorsContainerLayout.addWidget(anchor)
            self.stripAnchorsList.append(anchor)
        self.mainLayout.addWidget(self.anchorsContainer, row, 0, 1, 4)
        row += 1

        #signals
        self.fitFunctionSetupButton.clicked.connect(self.setupFitFunction)
        self.backgroundSetupButton.clicked.connect(self.setupBackground)
        self.stripSetupButton.clicked.connect(self.setupStrip)
Exemple #25
0
    def build(self, table, orientation, thickness, density, size=None):
        if size is None: size = "medium"
        layout = qt.QHBoxLayout(self)

        if table:
            #the material definition
            matBox = qt.QWidget(self)
            layout.addWidget(matBox)
            matBoxLayout = qt.QVBoxLayout(matBox)
            self.materialEditor = MaterialEditor.MaterialEditor(matBox,
                                                                comments=False,
                                                                height=7)
            matBoxLayout.addWidget(self.materialEditor)
            matBoxLayout.addWidget(qt.VerticalSpacer(matBox))
        else:
            self.materialEditor = None

        #the matrix definition
        sampleBox = qt.QWidget(self)
        layout.addWidget(sampleBox)
        if orientation == "vertical":
            sampleBoxLayout = qt.QVBoxLayout(sampleBox)
        else:
            sampleBoxLayout = qt.QHBoxLayout(sampleBox)

        #the image
        if orientation == "vertical":
            labelHBox = qt.QWidget(sampleBox)
            sampleBoxLayout.addWidget(labelHBox)
            labelHBoxLayout = qt.QHBoxLayout(labelHBox)
            labelHBoxLayout.addWidget(qt.HorizontalSpacer(labelHBox))
            label = MatrixImage.MatrixImage(labelHBox, size=size)
            labelHBoxLayout.addWidget(label)
            labelHBoxLayout.addWidget(qt.HorizontalSpacer(labelHBox))
        else:
            labelHBox = qt.QWidget(sampleBox)
            sampleBoxLayout.addWidget(labelHBox)
            labelHBoxLayout = qt.QVBoxLayout(labelHBox)
            labelHBoxLayout.setContentsMargins(0, 0, 0, 0)
            labelHBoxLayout.setSpacing(4)
            label = MatrixImage.MatrixImage(labelHBox, size=size)
            labelHBoxLayout.addWidget(label)
        if orientation != "vertical":
            labelHBoxLayout.addWidget(qt.VerticalSpacer(labelHBox))
        self.imageLabel = label
        #the input fields container
        self.__gridSampleBox = qt.QWidget(sampleBox)
        grid = self.__gridSampleBox
        sampleBoxLayout.addWidget(grid)
        if QTVERSION < '4.0.0':
            gridLayout = qt.QGridLayout(grid, 6, 2, 11, 4)
        else:
            gridLayout = qt.QGridLayout(grid)
            gridLayout.setContentsMargins(11, 11, 11, 11)
            gridLayout.setSpacing(4)

        #the angles
        angle1Label = qt.QLabel(grid)
        angle1Label.setText("Incoming Angle (deg.):")
        self.__angle1Line = MyQLineEdit(grid)
        self.__angle1Line.setReadOnly(False)

        angle2Label = qt.QLabel(grid)
        angle2Label.setText("Outgoing Angle (deg.):")
        self.__angle2Line = MyQLineEdit(grid)
        self.__angle2Line.setReadOnly(False)

        self.__angle3Label = qt.QCheckBox(grid)
        self.__angle3Label.setText("Scattering Angle (deg.):")
        self.__angle3Line = MyQLineEdit(grid)
        self.__angle3Line.setReadOnly(False)
        self.__angle3Line.setDisabled(True)
        if QTVERSION < '4.0.0':
            angle1Label.setAlignment(qt.QLabel.WordBreak | \
                                     qt.QLabel.AlignVCenter)
            angle2Label.setAlignment(qt.QLabel.WordBreak | \
                                     qt.QLabel.AlignVCenter)
        else:
            angle1Label.setAlignment(qt.Qt.AlignVCenter)
            angle2Label.setAlignment(qt.Qt.AlignVCenter)

        self.__angle3Label.setChecked(0)

        gridLayout.addWidget(angle1Label, 0, 0)
        gridLayout.addWidget(self.__angle1Line, 0, 1)
        gridLayout.addWidget(angle2Label, 1, 0)
        gridLayout.addWidget(self.__angle2Line, 1, 1)
        gridLayout.addWidget(self.__angle3Label, 2, 0)
        gridLayout.addWidget(self.__angle3Line, 2, 1)

        rowoffset = 3
        #thickness and density
        if density:
            densityLabel = qt.QLabel(grid)
            densityLabel.setText("Sample Density (g/cm3):")
            if QTVERSION < '4.0.0':
                densityLabel.setAlignment(qt.QLabel.WordBreak | \
                                          qt.QLabel.AlignVCenter)
            else:
                densityLabel.setAlignment(qt.Qt.AlignVCenter)
            self.__densityLine = MyQLineEdit(grid)
            self.__densityLine.setReadOnly(False)
            gridLayout.addWidget(densityLabel, rowoffset, 0)
            gridLayout.addWidget(self.__densityLine, rowoffset, 1)
            rowoffset = rowoffset + 1
        else:
            self.__densityLine = None

        if thickness:
            thicknessLabel = qt.QLabel(grid)
            thicknessLabel.setText("Sample Thickness   (cm):")
            if QTVERSION < '4.0.0':
                thicknessLabel.setAlignment(qt.QLabel.WordBreak | \
                                            qt.QLabel.AlignVCenter)
            else:
                thicknessLabel.setAlignment(qt.Qt.AlignVCenter)
            self.__thicknessLine = MyQLineEdit(grid)
            self.__thicknessLine.setReadOnly(False)
            gridLayout.addWidget(thicknessLabel, rowoffset, 0)
            gridLayout.addWidget(self.__thicknessLine, rowoffset, 1)
            rowoffset = rowoffset + 1
        else:
            self.__thicknessLine = None

        gridLayout.addWidget(qt.VerticalSpacer(grid), rowoffset, 0)
        gridLayout.addWidget(qt.VerticalSpacer(grid), rowoffset, 1)

        self.__angle1Line.sigMyQLineEditSignal.connect(self.__angle1Slot)
        self.__angle2Line.sigMyQLineEditSignal.connect(self.__angle2Slot)
        self.__angle3Line.sigMyQLineEditSignal.connect(self.__angle3Slot)
        if self.__densityLine is not None:
            self.__densityLine.sigMyQLineEditSignal.connect(self.__densitySlot)
        if self.__thicknessLine is not None:
            self.__thicknessLine.sigMyQLineEditSignal.connect(
                self.__thicknessSlot)
        self.__angle3Label.clicked.connect(self.__angle3LabelSlot)

        if orientation == "vertical":
            sampleBoxLayout.addWidget(qt.VerticalSpacer(sampleBox))
Exemple #26
0
    def __init__(self, parent=None, name=None):
        super(McaROIWidget, self).__init__(parent)
        if name is not None:
            self.setWindowTitle(name)
        layout = qt.QVBoxLayout(self)
        layout.setContentsMargins(0, 0, 0, 0)
        layout.setSpacing(0)
        ##############
        self.headerLabel = qt.QLabel(self)
        self.headerLabel.setAlignment(qt.Qt.AlignHCenter)
        self.setHeader('<b>Channel ROIs of XXXXXXXXXX<\b>')
        layout.addWidget(self.headerLabel)
        ##############
        self.mcaROITable = McaROITable(self)
        rheight = self.mcaROITable.horizontalHeader().sizeHint().height()
        self.mcaROITable.setMinimumHeight(4 * rheight)
        #self.mcaROITable.setMaximumHeight(4*rheight)
        self.fillFromROIDict = self.mcaROITable.fillFromROIDict
        self.addROI = self.mcaROITable.addROI
        self.getROIListAndDict = self.mcaROITable.getROIListAndDict
        layout.addWidget(self.mcaROITable)
        self.roiDir = None
        #################

        hbox = qt.QWidget(self)
        hboxlayout = qt.QHBoxLayout(hbox)
        hboxlayout.setContentsMargins(0, 0, 0, 0)
        hboxlayout.setSpacing(0)

        hboxlayout.addWidget(qt.HorizontalSpacer(hbox))

        self.addButton = qt.QPushButton(hbox)
        self.addButton.setText("Add ROI")
        self.delButton = qt.QPushButton(hbox)
        self.delButton.setText("Delete ROI")
        self.resetButton = qt.QPushButton(hbox)
        self.resetButton.setText("Reset")

        hboxlayout.addWidget(self.addButton)
        hboxlayout.addWidget(self.delButton)
        hboxlayout.addWidget(self.resetButton)
        hboxlayout.addWidget(qt.HorizontalSpacer(hbox))

        self.loadButton = qt.QPushButton(hbox)
        self.loadButton.setText("Load")
        self.saveButton = qt.QPushButton(hbox)
        self.saveButton.setText("Save")
        hboxlayout.addWidget(self.loadButton)
        hboxlayout.addWidget(self.saveButton)
        layout.setStretchFactor(self.headerLabel, 0)
        layout.setStretchFactor(self.mcaROITable, 1)
        layout.setStretchFactor(hbox, 0)

        layout.addWidget(hbox)

        self.addButton.clicked.connect(self._add)
        self.delButton.clicked.connect(self._del)
        self.resetButton.clicked.connect(self._reset)

        self.loadButton.clicked.connect(self._load)
        self.saveButton.clicked.connect(self._save)
        self.mcaROITable.sigMcaROITableSignal.connect(self._forward)
    def build(self):
        layout = qt.QVBoxLayout(self)
        layout.setContentsMargins(0, 0, 0, 0)
        layout.setSpacing(0)
        buttonGroup = qt.QGroupBox(self)
        buttonGroup.layout = qt.QVBoxLayout(buttonGroup)
        buttonGroup.layout.setContentsMargins(0, 0, 0, 0)
        buttonGroup.layout.setSpacing(0)
        layout.addWidget(buttonGroup)
        self.fluxCheckBox = qt.QCheckBox(buttonGroup)
        self.fluxCheckBox.setText("From fundamental parameters")
        wf = qt.QWidget(buttonGroup)
        wf.layout = qt.QHBoxLayout(wf)
        wf.layout.setContentsMargins(0, 0, 0, 0)
        wf.layout.setSpacing(0)
        wf.layout.addWidget(qt.HorizontalSpacer(wf))
        self.fundamentalWidget = FundamentalWidget(wf)
        wf.layout.addWidget(self.fundamentalWidget)
        wf.layout.addWidget(qt.HorizontalSpacer(wf))
        self.matrixCheckBox = qt.QCheckBox(buttonGroup)
        self.matrixCheckBox.setText("From matrix composition")
        self.fluxCheckBox.setChecked(True)

        wm = qt.QWidget(buttonGroup)
        wm.layout = qt.QHBoxLayout(wm)
        wm.layout.setContentsMargins(0, 0, 0, 0)
        wm.layout.setSpacing(0)
        wm.layout.addWidget(qt.HorizontalSpacer(wm))
        referenceLabel = qt.QLabel(wm)
        wm.layout.addWidget(referenceLabel)
        referenceLabel.setText("Matrix Reference Element:")
        #self.referenceCombo=MyQComboBox(wm)
        #self.referenceCombo=qt.QComboBox(wm)
        #self.referenceCombo.setEditable(True)
        #self.referenceCombo.insertItem('Auto')
        self.referenceLine = MyQLineEdit(wm)
        wm.layout.addWidget(self.referenceLine)
        self.referenceLine.setFixedWidth(
            self.referenceLine.fontMetrics().width('#######'))

        wm.layout.addWidget(qt.HorizontalSpacer(wm))
        self.referenceLine.sigMyQLineEditSignal.connect( \
                     self._referenceLineSlot)
        buttonGroup.layout.addWidget(self.fluxCheckBox)
        buttonGroup.layout.addWidget(wf)
        buttonGroup.layout.addWidget(self.matrixCheckBox)
        buttonGroup.layout.addWidget(wm)

        #self.fundamentalWidget.setEnabled(False)
        self.attenuatorsCheckBox = qt.QCheckBox(self)
        self.attenuatorsCheckBox.setText(
            "Consider attenuators in calculations")
        self.attenuatorsCheckBox.setDisabled(True)
        #Multilayer secondary excitation
        self.secondaryCheckBox = qt.QCheckBox(self)
        self.secondaryCheckBox.setText("Consider secondary excitation")
        self.tertiaryCheckBox = qt.QCheckBox(self)
        self.tertiaryCheckBox.setText("Consider tertiary excitation")
        layout.addWidget(self.attenuatorsCheckBox)
        layout.addWidget(self.secondaryCheckBox)
        layout.addWidget(self.tertiaryCheckBox)
        #XRFMC secondary excitation
        if XRFMC_FLAG:
            self.xrfmcCheckBox = qt.QCheckBox(self)
            self.xrfmcCheckBox.setText(
                "use Monte Carlo code to correct higher order excitations")
            layout.addWidget(self.xrfmcCheckBox)

        #mM checkbox
        self.mMolarCheckBox = qt.QCheckBox(self)
        self.mMolarCheckBox.setText(
            "Elemental mM concentrations (assuming 1 l of solution is 1000 * matrix_density grams)"
        )
        layout.addWidget(self.mMolarCheckBox)

        layout.addWidget(qt.VerticalSpacer(self))
        buttonGroup.show()
        self.fluxCheckBox.clicked.connect(self._fluxCheckBoxSlot)
        self.matrixCheckBox.clicked.connect(self.checkBoxSlot)
        self.attenuatorsCheckBox.clicked.connect(self.checkBoxSlot)
        self.secondaryCheckBox.clicked.connect(self._secondaryCheckBoxSlot)
        self.tertiaryCheckBox.clicked.connect(self._tertiaryCheckBoxSlot)
        if XRFMC_FLAG:
            self.xrfmcCheckBox.clicked.connect(self._xrfmcCheckBoxSlot)

        self.mMolarCheckBox.clicked.connect(self.checkBoxSlot)

        self.fundamentalWidget.flux.sigMyQLineEditSignal.connect( \
            self._mySignal)
        self.fundamentalWidget.area.sigMyQLineEditSignal.connect( \
            self._mySignal)
        self.fundamentalWidget.time.sigMyQLineEditSignal.connect( \
            self._mySignal)
        self.fundamentalWidget.distance.sigMyQLineEditSignal.connect( \
            self._mySignal)
        self.fundamentalWidget.autoTimeCheckBox.clicked.connect( \
                self.__autoTimeSlot)
Exemple #28
0
    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)
Exemple #29
0
    def __init__(self, parent=None):
        qt.QWidget.__init__(self, parent)
        FitParamFormLayout = qt.QVBoxLayout(self)
        FitParamFormLayout.setContentsMargins(11, 11, 11, 11)
        FitParamFormLayout.setSpacing(6)
        self.mainTab = qt.QTabWidget(self)
        self.tabFit = qt.QWidget()
        tabFitLayout = qt.QVBoxLayout(self.tabFit)
        tabFitLayout.setContentsMargins(11, 11, 11, 11)
        tabFitLayout.setSpacing(6)
        layout5 = Q3GridLayout(None)
        #,1,1,
        layout5.setContentsMargins(11, 11, 11, 11)
        layout5.setSpacing(6)

        self.functionCombo = qt.QComboBox(self.tabFit)
        self.functionCombo.insertItem = self.functionCombo.addItem

        self.functionLabel = qt.QLabel(self.tabFit)
        self.functionLabel.setText("Fit Function")
        self.functionCombo.insertItem(str("Mca Hypermet"))
        self.functionCombo.insertItem(str("Mca Pseudo-Voigt"))

        self.snipWidthLabel = qt.QLabel(self.tabFit)
        self.snipWidthLabel.setText(str("SNIP Background Width"))

        self.stripWidthLabel = qt.QLabel(self.tabFit)
        self.stripWidthLabel.setText(str("Strip Background Width"))
        self.stripIterValue = qt.QLineEdit(self.tabFit)

        self.chi2Label = qt.QLabel(self.tabFit)
        self.chi2Label.setText(str("Minimum chi^2 difference (%)"))

        self.chi2Value = qt.QLineEdit(self.tabFit)

        self.linearFitFlagCheck = qt.QCheckBox(self.tabFit)
        self.linearFitFlagCheck.setText(
            str("Perform a Linear Fit Fixing non-linear Parameters to Initial Values"
                ))

        self.strategyCheckBox = qt.QCheckBox(self.tabFit)
        self.strategyCheckBox.setText(
            str("Perform a fit using the selected strategy"))
        self.strategyCombo = qt.QComboBox(self.tabFit)
        self.strategyCombo.addItem(str("Single Layer"))
        self.strategySetupButton = qt.QPushButton(self.tabFit)
        self.strategySetupButton.setText('SETUP')
        self.strategySetupButton.setAutoDefault(False)

        self.mainTab.addTab(self.tabFit, str("FIT"))

        self.lastLabel = qt.QLabel(self.tabFit)
        lastLabel_font = qt.QFont(self.lastLabel.font())
        lastLabel_font.setItalic(1)
        self.lastLabel.setFont(lastLabel_font)
        self.lastLabel.setText(str("Last channel :"))
        self.lastLabel.setAlignment(QLabelAlignVCenter | QLabelAlignRight)

        self.regionCheck = qt.QCheckBox(self.tabFit)
        self.regionCheck.setText(str("Limit fitting region to :"))

        self.topLine = qt.QFrame(self.tabFit)
        self.topLine.setFrameShape(qt.QFrame.HLine)
        self.topLine.setFrameShadow(qt.QFrame.Sunken)
        self.topLine.setFrameShape(qt.QFrame.HLine)

        ##########
        self.weightLabel = qt.QLabel(self.tabFit)
        self.weightLabel.setText("Statistical weighting of data")
        self.weightCombo = qt.QComboBox(self.tabFit)
        self.weightCombo.insertItem = self.weightCombo.addItem

        self.weightCombo.insertItem(str("NO Weight"))
        self.weightCombo.insertItem(str("Poisson (1/Y)"))
        #self.weightCombo.insertItem(str("Poisson (1/Y2)"))

        ##########
        self.iterLabel = qt.QLabel(self.tabFit)
        self.iterLabel.setText(str("Number of fit iterations"))

        self.contCombo = qt.QComboBox(self.tabFit)
        self.contCombo.insertItem = self.contCombo.addItem

        self.contCombo.insertItem(str("NO Continuum"))
        self.contCombo.insertItem(str("Constant"))
        self.contCombo.insertItem(str("Linear"))
        self.contCombo.insertItem(str("Parabolic"))
        self.contCombo.insertItem(str("Linear Polynomial"))
        self.contCombo.insertItem(str("Exp. Polynomial"))

        self.stripCombo = qt.QComboBox(self.tabFit)
        self.stripCombo.insertItem = self.stripCombo.addItem

        self.stripComboLabel = qt.QLabel(self.tabFit)
        self.stripComboLabel.setText(
            "Non-analytical (or estimation) background algorithm")
        self.stripCombo.insertItem(str("Strip"))
        self.stripCombo.insertItem(str("SNIP"))
        self.stripCombo.activated[int].connect(self._stripComboActivated)

        self.snipWidthSpin = Q3SpinBox(self.tabFit)
        self.snipWidthSpin.setMaxValue(300)
        self.snipWidthSpin.setMinValue(0)

        self.stripWidthSpin = Q3SpinBox(self.tabFit)
        self.stripWidthSpin.setMaxValue(100)
        self.stripWidthSpin.setMinValue(1)

        self.orderSpin = Q3SpinBox(self.tabFit)
        self.orderSpin.setMaxValue(10)
        self.orderSpin.setMinValue(1)

        maxnchannel = 16384 * 4

        self.maxSpin = Q3SpinBox(self.tabFit)
        self.maxSpin.setMaxValue(maxnchannel)
        self.maxSpin.setLineStep(128)

        self.minSpin = Q3SpinBox(self.tabFit)
        self.minSpin.setMaxValue(maxnchannel)
        self.minSpin.setLineStep(128)

        self.stripIterLabel = qt.QLabel(self.tabFit)
        self.stripIterLabel.setText(str("Strip Background Iterations"))

        self.iterSpin = Q3SpinBox(self.tabFit)
        self.iterSpin.setMinValue(1)

        self.stripFilterLabel = qt.QLabel(self.tabFit)
        self.stripFilterLabel.setText(
            str("Strip Background Smoothing Width (Savitsky-Golay)"))

        self.stripFilterSpin = Q3SpinBox(self.tabFit)
        self.stripFilterSpin.setMinValue(1)
        self.stripFilterSpin.setMaxValue(40)
        self.stripFilterSpin.setLineStep(2)

        ########
        self.anchorsContainer = qt.QWidget(self.tabFit)
        anchorsContainerLayout = qt.QHBoxLayout(self.anchorsContainer)
        anchorsContainerLayout.setContentsMargins(0, 0, 0, 0)
        anchorsContainerLayout.setSpacing(2)
        self.stripAnchorsFlagCheck = qt.QCheckBox(self.anchorsContainer)
        self.stripAnchorsFlagCheck.setText(str("Strip Background use Anchors"))
        anchorsContainerLayout.addWidget(self.stripAnchorsFlagCheck)

        self.stripAnchorsList = []
        for i in range(4):
            anchorSpin = Q3SpinBox(self.anchorsContainer)
            anchorSpin.setMinValue(0)
            anchorSpin.setMaxValue(maxnchannel)
            anchorsContainerLayout.addWidget(anchorSpin)
            self.stripAnchorsList.append(anchorSpin)
        #######

        self.firstLabel = qt.QLabel(self.tabFit)
        firstLabel_font = qt.QFont(self.firstLabel.font())
        firstLabel_font.setItalic(1)
        self.firstLabel.setFont(firstLabel_font)
        self.firstLabel.setText(str("First channel :"))
        self.firstLabel.setAlignment(qt.Qt.AlignVCenter | qt.Qt.AlignRight)

        self.typeLabel = qt.QLabel(self.tabFit)
        self.typeLabel.setText(str("Continuum type"))

        self.orderLabel = qt.QLabel(self.tabFit)
        self.orderLabel.setText(str("Polynomial order"))

        self.bottomLine = qt.QFrame(self.tabFit)
        self.bottomLine.setFrameShape(qt.QFrame.HLine)
        self.bottomLine.setFrameShadow(qt.QFrame.Sunken)
        self.bottomLine.setFrameShape(qt.QFrame.HLine)

        layout5.addMultiCellWidget(self.functionLabel, 0, 0, 0, 1)
        layout5.addMultiCellWidget(self.functionCombo, 0, 0, 3, 4)

        layout5.addMultiCellWidget(self.typeLabel, 1, 1, 0, 1)
        layout5.addMultiCellWidget(self.contCombo, 1, 1, 3, 4)

        layout5.addMultiCellWidget(self.orderLabel, 2, 2, 0, 1)
        layout5.addMultiCellWidget(self.orderSpin, 2, 2, 3, 4)

        layout5.addMultiCellWidget(self.stripComboLabel, 3, 3, 0, 1)
        self.stripSetupButton = qt.QPushButton(self.tabFit)
        self.stripSetupButton.setText('SETUP')
        self.stripSetupButton.setAutoDefault(False)
        layout5.addWidget(self.stripCombo, 3, 3)
        layout5.addWidget(self.stripSetupButton, 3, 4)

        layout5.addMultiCellWidget(self.snipWidthLabel, 4, 4, 0, 1)
        layout5.addMultiCellWidget(self.snipWidthSpin, 4, 4, 3, 4)

        layout5.addMultiCellWidget(self.stripWidthLabel, 5, 5, 0, 1)
        layout5.addMultiCellWidget(self.stripWidthSpin, 5, 5, 3, 4)

        layout5.addMultiCellWidget(self.stripIterLabel, 6, 6, 0, 1)
        layout5.addMultiCellWidget(self.stripIterValue, 6, 6, 3, 4)

        layout5.addMultiCellWidget(self.stripFilterLabel, 7, 7, 0, 1)
        layout5.addMultiCellWidget(self.stripFilterSpin, 7, 7, 3, 4)

        layout5.addMultiCellWidget(self.anchorsContainer, 8, 8, 0, 4)

        layout5.addWidget(self.weightLabel, 9, 0)
        layout5.addMultiCellWidget(self.weightCombo, 9, 9, 3, 4)

        layout5.addWidget(self.iterLabel, 10, 0)
        layout5.addWidget(qt.HorizontalSpacer(self.tabFit), 10, 1)
        layout5.addMultiCellWidget(self.iterSpin, 10, 10, 3, 4)

        layout5.addWidget(self.chi2Label, 11, 0)
        layout5.addMultiCellWidget(self.chi2Value, 11, 11, 3, 4)

        layout5.addMultiCellWidget(self.strategyCheckBox, 12, 12, 0, 4)
        layout5.addWidget(self.strategyCombo, 12, 3)
        layout5.addWidget(self.strategySetupButton, 12, 4)
        layout5.addMultiCellWidget(self.linearFitFlagCheck, 13, 13, 0, 4)

        layout5.addMultiCellWidget(self.topLine, 14, 15, 0, 4)

        layout5.addMultiCellWidget(self.minSpin, 15, 16, 4, 4)

        layout5.addWidget(self.regionCheck, 16, 0)
        layout5.addMultiCellWidget(self.firstLabel, 16, 16, 2, 3)

        layout5.addMultiCellWidget(self.lastLabel, 17, 17, 2, 3)
        layout5.addWidget(self.maxSpin, 17, 4)
        layout5.addMultiCellWidget(self.bottomLine, 18, 18, 0, 4)

        tabFitLayout.addLayout(layout5)

        includeWidget = qt.QWidget(self.tabFit)
        includeLayout = Q3GridLayout(includeWidget)
        includeLayout.setContentsMargins(0, 0, 0, 0)
        includeLayout.setSpacing(3)

        self.stepCheck = qt.QCheckBox(includeWidget)
        self.stepCheck.setText(str("Step tail"))

        includeLayout.addWidget(self.stepCheck, 2, 2)

        self.escapeCheck = qt.QCheckBox(includeWidget)
        self.escapeCheck.setText(str("Escape peaks"))

        includeLayout.addWidget(self.escapeCheck, 1, 1)

        self.includeLabel = qt.QLabel(includeWidget)
        includeLabel_font = qt.QFont(self.includeLabel.font())
        includeLabel_font.setBold(1)
        self.includeLabel.setFont(includeLabel_font)
        self.includeLabel.setText(str("Include:"))

        includeLayout.addWidget(self.includeLabel, 0, 0)

        self.sumCheck = qt.QCheckBox(includeWidget)
        self.sumCheck.setText(str("Pile-up peaks"))

        includeLayout.addWidget(self.sumCheck, 1, 2)

        self.scatterCheck = qt.QCheckBox(includeWidget)
        self.scatterCheck.setText(str("Scattering peaks"))

        includeLayout.addWidget(self.scatterCheck, 1, 3)

        self.stripCheck = qt.QCheckBox(includeWidget)
        self.stripCheck.setText(str("Stripping"))

        includeLayout.addWidget(self.stripCheck, 1, 0)

        self.longCheck = qt.QCheckBox(includeWidget)
        self.longCheck.setText(str("Long tail"))

        includeLayout.addWidget(self.longCheck, 2, 1)

        self.shortCheck = qt.QCheckBox(includeWidget)
        self.shortCheck.setText(str("Short tail"))

        includeLayout.addWidget(self.shortCheck, 2, 0)
        #tabFitLayout.addLayout(includeLayout)
        layout5.addMultiCellWidget(includeWidget, 18, 19, 0, 4)

        spacer_2 = qt.QSpacerItem(20, 40,\
                                  qt.QSizePolicy.Minimum,\
                                  qt.QSizePolicy.Expanding)
        tabFitLayout.addItem(spacer_2)

        #self.mainTab.addTab(self.tabFit,str("FIT"))
        self.tabDetector = qt.QWidget()
        tabDetectorLayout = qt.QVBoxLayout(self.tabDetector)
        tabDetectorLayout.setContentsMargins(11, 11, 11, 11)
        tabDetectorLayout.setSpacing(6)

        detLayout = Q3GridLayout(None)
        detLayout.setContentsMargins(0, 0, 0, 0)
        detLayout.setSpacing(2)
        self.elementCombo = qt.QComboBox(self.tabDetector)

        self.elementCombo.insertItem(0, str("Si"))
        self.elementCombo.insertItem(1, str("Ge"))
        self.elementCombo.insertItem(2, str("Cd1Te1"))
        self.elementCombo.insertItem(3, str("Hg1I2"))
        self.elementCombo.insertItem(4, str("Ga1As1"))
        self.elementCombo.setEnabled(1)
        self.elementCombo.setDuplicatesEnabled(0)

        detLayout.addWidget(self.elementCombo, 0, 3)

        self.elementLabel = qt.QLabel(self.tabDetector)
        self.elementLabel.setText(str("Detector Composition"))

        detLayout.addWidget(self.elementLabel, 0, 0)
        self.escapeLabel = qt.QLabel(self.tabDetector)
        self.escapeLabel.setText(str("Maximum Number of Escape energies"))
        detLayout.addMultiCellWidget(self.escapeLabel, 3, 4, 0, 0)

        #self.intensityValue0 = QLineEdit(self.tabDetector,"intensityValue0")
        #self.intensityValue0.setText(str("1.0"))
        #self.intensityValue0.setReadOnly(1)
        self.nEscapeThreshold = Q3SpinBox(self.tabDetector)
        self.nEscapeThreshold.setMaxValue(20)
        self.nEscapeThreshold.setMinValue(1)
        self.nEscapeThreshold.setValue(4)
        #detLayout.addWidget(self.intensityValue0,3,3)
        detLayout.addWidget(self.nEscapeThreshold, 3, 3)
        spacer_4 = qt.QSpacerItem(89, 20,\
                                  qt.QSizePolicy.Expanding,
                                  qt.QSizePolicy.Minimum)
        detLayout.addItem(spacer_4, 3, 1)
        tabDetectorLayout.addLayout(detLayout)

        self.calibLine = qt.QFrame(self.tabDetector)
        self.calibLine.setFrameShape(qt.QFrame.HLine)
        self.calibLine.setFrameShadow(qt.QFrame.Sunken)
        self.calibLine.setFrameShape(qt.QFrame.HLine)
        tabDetectorLayout.addWidget(self.calibLine)

        layout5_2 = Q3GridLayout(None)
        layout5_2.setContentsMargins(11, 11, 11, 11)
        layout5_2.setSpacing(2)
        self.zeroError = qt.QLineEdit(self.tabDetector)

        layout5_2.addWidget(self.zeroError, 1, 5)

        self.sumfacSepLabel = qt.QLabel(self.tabDetector)
        sumfacSepLabel_font = qt.QFont(self.sumfacSepLabel.font())
        sumfacSepLabel_font.setBold(1)
        self.sumfacSepLabel.setFont(sumfacSepLabel_font)
        self.sumfacSepLabel.setText(str("+/-"))

        layout5_2.addWidget(self.sumfacSepLabel, 5, 4)

        self.noiseLabel = qt.QLabel(self.tabDetector)
        self.noiseLabel.setText(str("Detector noise (keV)"))

        layout5_2.addWidget(self.noiseLabel, 3, 0)

        self.gainCheck = qt.QCheckBox(self.tabDetector)
        self.gainCheck.setText(str(""))

        layout5_2.addWidget(self.gainCheck, 2, 2)

        self.gainLabel = qt.QLabel(self.tabDetector)
        self.gainLabel.setText(str("Spectrometer gain (keV/ch)"))

        layout5_2.addWidget(self.gainLabel, 2, 0)

        self.sumfacLabel = qt.QLabel(self.tabDetector)
        self.sumfacLabel.setText(str("Pile-up Factor"))

        layout5_2.addWidget(self.sumfacLabel, 5, 0)

        self.noiseError = qt.QLineEdit(self.tabDetector)

        layout5_2.addWidget(self.noiseError, 3, 5)

        self.zeroValue = qt.QLineEdit(self.tabDetector)

        layout5_2.addWidget(self.zeroValue, 1, 3)

        self.fanoSepLabel = qt.QLabel(self.tabDetector)
        fanoSepLabel_font = qt.QFont(self.fanoSepLabel.font())
        fanoSepLabel_font.setBold(1)
        self.fanoSepLabel.setFont(fanoSepLabel_font)
        self.fanoSepLabel.setText(str("+/-"))

        layout5_2.addWidget(self.fanoSepLabel, 4, 4)

        self.fanoError = qt.QLineEdit(self.tabDetector)

        layout5_2.addWidget(self.fanoError, 4, 5)

        self.zeroSepLabel = qt.QLabel(self.tabDetector)
        zeroSepLabel_font = qt.QFont(self.zeroSepLabel.font())
        zeroSepLabel_font.setBold(1)
        self.zeroSepLabel.setFont(zeroSepLabel_font)
        self.zeroSepLabel.setText(str("+/-"))

        layout5_2.addWidget(self.zeroSepLabel, 1, 4)

        self.valueLabel = qt.QLabel(self.tabDetector)
        valueLabel_font = qt.QFont(self.valueLabel.font())
        valueLabel_font.setItalic(1)
        self.valueLabel.setFont(valueLabel_font)
        self.valueLabel.setText(str("Value"))
        self.valueLabel.setAlignment(qt.Qt.AlignCenter)

        layout5_2.addWidget(self.valueLabel, 0, 3)
        layout5_2.addWidget(qt.HorizontalSpacer(self.tabDetector), 1, 1)

        self.noiseValue = qt.QLineEdit(self.tabDetector)

        layout5_2.addWidget(self.noiseValue, 3, 3)

        self.fanoValue = qt.QLineEdit(self.tabDetector)

        layout5_2.addWidget(self.fanoValue, 4, 3)

        self.zeroLabel = qt.QLabel(self.tabDetector)
        self.zeroLabel.setText(str("Spectrometer zero (keV)"))

        layout5_2.addWidget(self.zeroLabel, 1, 0)

        self.sumfacError = qt.QLineEdit(self.tabDetector)

        layout5_2.addWidget(self.sumfacError, 5, 5)

        self.noiseSepLabel = qt.QLabel(self.tabDetector)
        noiseSepLabel_font = qt.QFont(self.noiseSepLabel.font())
        noiseSepLabel_font.setBold(1)
        self.noiseSepLabel.setFont(noiseSepLabel_font)
        self.noiseSepLabel.setText(str("+/-"))

        layout5_2.addWidget(self.noiseSepLabel, 3, 4)

        self.sumfacCheck = qt.QCheckBox(self.tabDetector)
        self.sumfacCheck.setText(str(""))

        layout5_2.addWidget(self.sumfacCheck, 5, 2)

        self.noiseCheck = qt.QCheckBox(self.tabDetector)
        self.noiseCheck.setText(str(""))

        layout5_2.addWidget(self.noiseCheck, 3, 2)

        self.errorLabel = qt.QLabel(self.tabDetector)
        errorLabel_font = qt.QFont(self.errorLabel.font())
        errorLabel_font.setItalic(1)
        self.errorLabel.setFont(errorLabel_font)
        self.errorLabel.setText(str("Delta "))
        self.errorLabel.setAlignment(QLabelAlignCenter)

        layout5_2.addWidget(self.errorLabel, 0, 5)

        self.fixedLabel = qt.QLabel(self.tabDetector)
        fixedLabel_font = qt.QFont(self.fixedLabel.font())
        fixedLabel_font.setItalic(1)
        self.fixedLabel.setFont(fixedLabel_font)
        self.fixedLabel.setText(str("Fixed "))
        self.fixedLabel.setAlignment(qt.Qt.AlignVCenter)

        layout5_2.addWidget(self.fixedLabel, 0, 2)

        self.zeroCheck = qt.QCheckBox(self.tabDetector)
        self.zeroCheck.setText(str(""))

        layout5_2.addWidget(self.zeroCheck, 1, 2)

        self.sumfacValue = qt.QLineEdit(self.tabDetector, )

        layout5_2.addWidget(self.sumfacValue, 5, 3)

        self.fanoLabel = qt.QLabel(self.tabDetector)
        self.fanoLabel.setText(str("Fano factor (Si ~ 0.12, Ge ~ 0.1)"))

        layout5_2.addWidget(self.fanoLabel, 4, 0)

        self.gainValue = qt.QLineEdit(self.tabDetector)

        layout5_2.addWidget(self.gainValue, 2, 3)

        self.gainSepLabel = qt.QLabel(self.tabDetector)
        gainSepLabel_font = qt.QFont(self.gainSepLabel.font())
        gainSepLabel_font.setBold(1)
        self.gainSepLabel.setFont(gainSepLabel_font)
        self.gainSepLabel.setText(str("+/-"))

        layout5_2.addWidget(self.gainSepLabel, 2, 4)

        self.fanoCheck = qt.QCheckBox(self.tabDetector)
        self.fanoCheck.setText(str(""))

        layout5_2.addWidget(self.fanoCheck, 4, 2)

        self.gainError = qt.QLineEdit(self.tabDetector)

        layout5_2.addWidget(self.gainError, 2, 5)

        self.ignoreSpectrumCalibration = qt.QCheckBox(self.tabDetector)
        ignoreToolTip = "If checked, the starting calibration parameters "
        ignoreToolTip += "will not be replaced by the input spectrum "
        ignoreToolTip += "ones.\n"
        self.ignoreSpectrumCalibration.setToolTip(ignoreToolTip)
        ignoreText = "Ignore calibration from input data"
        self.ignoreSpectrumCalibration.setText(ignoreText)
        self.ignoreSpectrumCalibration.setChecked(False)
        layout5_2.addWidget(self.ignoreSpectrumCalibration, 6, 0)

        tabDetectorLayout.addLayout(layout5_2)
        spacer_6 = qt.QSpacerItem(20, 2,\
                                  qt.QSizePolicy.Minimum,\
                                  qt.QSizePolicy.Expanding)
        tabDetectorLayout.addItem(spacer_6)
        self.mainTab.addTab(self.tabDetector, str("DETECTOR"))
        self.TabBeam = qt.QWidget()
        self.mainTab.addTab(self.TabBeam, str("BEAM"))

        self.TabPeaks = qt.QWidget()
        self.mainTab.addTab(self.TabPeaks, str("PEAKS"))

        self.tabPeakShape = qt.QWidget()
        tabPeakShapeLayout = Q3GridLayout(self.tabPeakShape)
        tabPeakShapeLayout.setContentsMargins(11, 11, 11, 11)
        tabPeakShapeLayout.setSpacing(2)

        spacer_7 = qt.QSpacerItem(20, 90,\
                                  qt.QSizePolicy.Minimum,\
                                  qt.QSizePolicy.Expanding)
        tabPeakShapeLayout.addItem(spacer_7, 8, 0)

        self.staLabel = qt.QLabel(self.tabPeakShape)
        self.staLabel.setText(str("Short Tail Area"))

        tabPeakShapeLayout.addWidget(self.staLabel, 2, 0)
        spacer_8 = qt.QSpacerItem(59, 20,\
                                  qt.QSizePolicy.Expanding,\
                                  qt.QSizePolicy.Minimum)
        tabPeakShapeLayout.addItem(spacer_8, 1, 1)

        self.fixedLabel_2 = qt.QLabel(self.tabPeakShape)
        fixedLabel_2_font = qt.QFont(self.fixedLabel_2.font())
        fixedLabel_2_font.setItalic(1)
        self.fixedLabel_2.setFont(fixedLabel_2_font)
        self.fixedLabel_2.setText(str("Fixed"))
        self.fixedLabel_2.setAlignment(QLabelAlignVCenter)

        tabPeakShapeLayout.addWidget(self.fixedLabel_2, 1, 2)

        self.staCheck = qt.QCheckBox(self.tabPeakShape)
        self.staCheck.setText(str(""))

        tabPeakShapeLayout.addWidget(self.staCheck, 2, 2)

        self.valueLabel_2 = qt.QLabel(self.tabPeakShape)
        valueLabel_2_font = qt.QFont(self.valueLabel_2.font())
        valueLabel_2_font.setItalic(1)
        self.valueLabel_2.setFont(valueLabel_2_font)
        self.valueLabel_2.setText(str("Value"))
        self.valueLabel_2.setAlignment(QLabelAlignCenter)

        tabPeakShapeLayout.addWidget(self.valueLabel_2, 1, 3)

        self.staValue = qt.QLineEdit(self.tabPeakShape)

        tabPeakShapeLayout.addWidget(self.staValue, 2, 3)

        self.staSep = qt.QLabel(self.tabPeakShape)
        staSep_font = qt.QFont(self.staSep.font())
        staSep_font.setBold(1)
        self.staSep.setFont(staSep_font)
        self.staSep.setText(str("+/-"))

        tabPeakShapeLayout.addWidget(self.staSep, 2, 4)

        self.errorLabel_2 = qt.QLabel(self.tabPeakShape)
        errorLabel_2_font = qt.QFont(self.errorLabel_2.font())
        errorLabel_2_font.setItalic(1)
        self.errorLabel_2.setFont(errorLabel_2_font)
        self.errorLabel_2.setText(str("Error"))
        self.errorLabel_2.setAlignment(QLabelAlignCenter)

        tabPeakShapeLayout.addWidget(self.errorLabel_2, 1, 5)

        self.staError = qt.QLineEdit(self.tabPeakShape)

        tabPeakShapeLayout.addWidget(self.staError, 2, 5)

        self.stsError = qt.QLineEdit(self.tabPeakShape)

        tabPeakShapeLayout.addWidget(self.stsError, 3, 5)

        self.stsSep = qt.QLabel(self.tabPeakShape)
        stsSep_font = qt.QFont(self.stsSep.font())
        stsSep_font.setBold(1)
        self.stsSep.setFont(stsSep_font)
        self.stsSep.setText(str("+/-"))

        tabPeakShapeLayout.addWidget(self.stsSep, 3, 4)

        self.stsValue = qt.QLineEdit(self.tabPeakShape)

        tabPeakShapeLayout.addWidget(self.stsValue, 3, 3)

        self.stsCheck = qt.QCheckBox(self.tabPeakShape)
        self.stsCheck.setText(str(""))

        tabPeakShapeLayout.addWidget(self.stsCheck, 3, 2)

        self.stsLabel = qt.QLabel(self.tabPeakShape)
        self.stsLabel.setText(str("Short Tail Slope"))

        tabPeakShapeLayout.addWidget(self.stsLabel, 3, 0)

        self.ltaLabel = qt.QLabel(self.tabPeakShape)
        self.ltaLabel.setText(str("Long Tail Area"))

        tabPeakShapeLayout.addWidget(self.ltaLabel, 4, 0)

        self.ltaCheck = qt.QCheckBox(self.tabPeakShape)
        self.ltaCheck.setText(str(""))

        tabPeakShapeLayout.addWidget(self.ltaCheck, 4, 2)

        self.ltaValue = qt.QLineEdit(self.tabPeakShape)

        tabPeakShapeLayout.addWidget(self.ltaValue, 4, 3)

        self.ltaSep = qt.QLabel(self.tabPeakShape)
        ltaSep_font = qt.QFont(self.ltaSep.font())
        ltaSep_font.setBold(1)
        self.ltaSep.setFont(ltaSep_font)
        self.ltaSep.setText(str("+/-"))

        tabPeakShapeLayout.addWidget(self.ltaSep, 4, 4)

        self.ltaError = qt.QLineEdit(self.tabPeakShape)

        tabPeakShapeLayout.addWidget(self.ltaError, 4, 5)

        self.ltsError = qt.QLineEdit(self.tabPeakShape)

        tabPeakShapeLayout.addWidget(self.ltsError, 5, 5)

        self.ltsSep = qt.QLabel(self.tabPeakShape)
        ltsSep_font = qt.QFont(self.ltsSep.font())
        ltsSep_font.setBold(1)
        self.ltsSep.setFont(ltsSep_font)
        self.ltsSep.setText(str("+/-"))

        tabPeakShapeLayout.addWidget(self.ltsSep, 5, 4)

        self.ltsValue = qt.QLineEdit(self.tabPeakShape)

        tabPeakShapeLayout.addWidget(self.ltsValue, 5, 3)

        self.ltsCheck = qt.QCheckBox(self.tabPeakShape)
        self.ltsCheck.setText(str(""))

        tabPeakShapeLayout.addWidget(self.ltsCheck, 5, 2)

        self.ltsLabel = qt.QLabel(self.tabPeakShape)
        self.ltsLabel.setText(str("Long Tail Slope"))

        tabPeakShapeLayout.addWidget(self.ltsLabel, 5, 0)

        # Step Height
        self.shLabel = qt.QLabel(self.tabPeakShape)
        self.shLabel.setText(str("Step Height"))

        tabPeakShapeLayout.addWidget(self.shLabel, 6, 0)

        self.shCheck = qt.QCheckBox(self.tabPeakShape)
        self.shCheck.setText(str(""))

        tabPeakShapeLayout.addWidget(self.shCheck, 6, 2)

        self.shValue = qt.QLineEdit(self.tabPeakShape)

        tabPeakShapeLayout.addWidget(self.shValue, 6, 3)

        self.shSep = qt.QLabel(self.tabPeakShape)
        shSep_font = qt.QFont(self.shSep.font())
        shSep_font.setBold(1)
        self.shSep.setFont(shSep_font)
        self.shSep.setText(str("+/-"))

        tabPeakShapeLayout.addWidget(self.shSep, 6, 4)

        self.shError = qt.QLineEdit(self.tabPeakShape)

        tabPeakShapeLayout.addWidget(self.shError, 6, 5)

        # Pseudo-Voigt Eta Factor
        self.etaLabel = qt.QLabel(self.tabPeakShape)
        self.etaLabel.setText(str("Pseudo-Voigt Eta"))

        tabPeakShapeLayout.addWidget(self.etaLabel, 7, 0)

        self.etaCheck = qt.QCheckBox(self.tabPeakShape)
        self.etaCheck.setText(str(""))

        tabPeakShapeLayout.addWidget(self.etaCheck, 7, 2)

        self.etaValue = qt.QLineEdit(self.tabPeakShape)

        tabPeakShapeLayout.addWidget(self.etaValue, 7, 3)

        self.etaSep = qt.QLabel(self.tabPeakShape)
        etaSep_font = qt.QFont(self.etaSep.font())
        etaSep_font.setBold(1)
        self.etaSep.setFont(etaSep_font)
        self.etaSep.setText(str("+/-"))

        tabPeakShapeLayout.addWidget(self.etaSep, 7, 4)

        self.etaError = qt.QLineEdit(self.tabPeakShape)

        tabPeakShapeLayout.addWidget(self.etaError, 7, 5)

        self.mainTab.addTab(self.tabPeakShape, str("PEAK SHAPE"))

        FitParamFormLayout.addWidget(self.mainTab)

        self.setTabOrder(self.mainTab, self.elementCombo)
        self.setTabOrder(self.zeroCheck, self.zeroValue)
        self.setTabOrder(self.zeroValue, self.zeroError)
        self.setTabOrder(self.zeroError, self.gainCheck)
        self.setTabOrder(self.gainCheck, self.gainValue)
        self.setTabOrder(self.gainValue, self.gainError)
        self.setTabOrder(self.gainError, self.noiseCheck)
        self.setTabOrder(self.noiseCheck, self.noiseValue)
        self.setTabOrder(self.noiseValue, self.noiseError)
        self.setTabOrder(self.noiseError, self.fanoCheck)
        self.setTabOrder(self.fanoCheck, self.fanoValue)
        self.setTabOrder(self.fanoValue, self.fanoError)
        self.setTabOrder(self.fanoError, self.staCheck)
        self.setTabOrder(self.staCheck, self.staValue)
        self.setTabOrder(self.staValue, self.staError)
        self.setTabOrder(self.staError, self.stsCheck)
        self.setTabOrder(self.stsCheck, self.stsValue)
        self.setTabOrder(self.stsValue, self.stsError)
        self.setTabOrder(self.stsError, self.ltaCheck)
        self.setTabOrder(self.ltaCheck, self.ltaValue)
        self.setTabOrder(self.ltaValue, self.ltaError)
        self.setTabOrder(self.ltaError, self.ltsCheck)
        self.setTabOrder(self.ltsCheck, self.ltsValue)
        self.setTabOrder(self.ltsValue, self.ltsError)
        self.setTabOrder(self.ltsError, self.shCheck)
        self.setTabOrder(self.shCheck, self.shValue)
        self.setTabOrder(self.shValue, self.shError)
        self.setTabOrder(self.shError, self.contCombo)
        self.setTabOrder(self.contCombo, self.stripCombo)
        self.setTabOrder(self.stripCombo, self.iterSpin)
        self.setTabOrder(self.iterSpin, self.chi2Value)
        self.setTabOrder(self.chi2Value, self.regionCheck)
        self.setTabOrder(self.regionCheck, self.minSpin)
        self.setTabOrder(self.minSpin, self.maxSpin)
        self.setTabOrder(self.maxSpin, self.stripCheck)
        self.setTabOrder(self.stripCheck, self.escapeCheck)
        self.setTabOrder(self.escapeCheck, self.sumCheck)
        self.setTabOrder(self.sumCheck, self.scatterCheck)
        self.setTabOrder(self.scatterCheck, self.shortCheck)
        self.setTabOrder(self.shortCheck, self.longCheck)
        self.setTabOrder(self.longCheck, self.stepCheck)
        self._stripComboActivated(0)
    def __init__(self, parent=None):
        qt.QGroupBox.__init__(self, parent)
        self.setTitle("Fit Control")
        self.mainLayout = qt.QGridLayout(self)
        self.mainLayout.setContentsMargins(2, 2, 2, 2)
        self.mainLayout.setSpacing(2)

        row = 0
        #linear fit
        self.fitAlgorithmLabel = qt.QLabel(self)
        self.fitAlgorithmLabel.setText("Fit algorithm")
        self.fitAlgorithmCombo = qt.QComboBox(self)
        self.fitAlgorithmCombo.addItem(str("Levenberg-Marquardt"))
        self.fitAlgorithmCombo.addItem(str("Linear Fit"))

        self.mainLayout.addWidget(self.fitAlgorithmLabel, row, 0)
        self.mainLayout.addWidget(qt.HorizontalSpacer(self), row, 1)
        self.mainLayout.addWidget(self.fitAlgorithmCombo, row, 3)
        row += 1

        #weighting
        self.weightLabel = qt.QLabel(self)
        self.weightLabel.setText("Statistical weighting of data")
        self.weightCombo = qt.QComboBox(self)
        self.weightCombo.addItem(str("NO Weight"))
        self.weightCombo.addItem(str("Poisson (1/Y)"))

        self.mainLayout.addWidget(self.weightLabel, row, 0)
        self.mainLayout.addWidget(qt.HorizontalSpacer(self), row, 1)
        self.mainLayout.addWidget(self.weightCombo, row, 3)
        row += 1

        #function estimation policy
        self.functionEstimationLabel = qt.QLabel(self)
        self.functionEstimationLabel.setText("Function estimation policy")
        self.functionEstimationCombo = qt.QComboBox(self)
        self.functionEstimationCombo.addItem(str("Use configuration"))
        self.functionEstimationCombo.addItem(str("Estimate once"))
        self.functionEstimationCombo.addItem(str("Estimate always"))
        self.functionEstimationCombo.setCurrentIndex(2)

        self.mainLayout.addWidget(self.functionEstimationLabel, row, 0)
        self.mainLayout.addWidget(self.functionEstimationCombo, row, 3)
        row += 1

        #background estimation policy
        self.backgroundEstimationLabel = qt.QLabel(self)
        text = "Background estimation policy"
        self.backgroundEstimationLabel.setText(text)
        self.backgroundEstimationCombo = qt.QComboBox(self)
        self.backgroundEstimationCombo.addItem(str("Use configuration"))
        self.backgroundEstimationCombo.addItem(str("Estimate once"))
        self.backgroundEstimationCombo.addItem(str("Estimate always"))
        self.backgroundEstimationCombo.setCurrentIndex(2)

        self.mainLayout.addWidget(self.backgroundEstimationLabel, row, 0)
        self.mainLayout.addWidget(self.backgroundEstimationCombo, row, 3)
        row += 1

        #number of iterations
        self.iterLabel = qt.QLabel(self)
        self.iterLabel.setText(str("Maximum number of fit iterations"))
        self.iterSpin = qt.QSpinBox(self)
        self.iterSpin.setMinimum(1)
        self.iterSpin.setMaximum(10000)
        self.iterSpin.setValue(10)
        self.mainLayout.addWidget(self.iterLabel, row, 0)
        self.mainLayout.addWidget(qt.HorizontalSpacer(self), row, 1)
        self.mainLayout.addWidget(self.iterSpin, row, 3)
        row += 1

        #chi square handling
        self.chi2Label = qt.QLabel(self)
        self.chi2Label.setText(str("Minimum chi^2 difference (%)"))
        if 0:
            self.chi2Value = qt.QLineEdit(self)
            self.chi2Value._v = qt.QDoubleValidator(self.chi2Value)
            self.chi2Value.setValidator(self.chi2Value._v)
            self.chi2Value.setText(str("0.001"))
        else:
            self.chi2Value = qt.QDoubleSpinBox(self)
            self.chi2Value.setDecimals(4)
            self.chi2Value.setMinimum(0.0001)
            self.chi2Value.setMaximum(100.)
            self.chi2Value.setSingleStep(0.0001)
            self.chi2Value.setValue(0.001)

        self.mainLayout.addWidget(self.chi2Label, row, 0)
        self.mainLayout.addWidget(qt.HorizontalSpacer(self), row, 1)
        self.mainLayout.addWidget(self.chi2Value, row, 3)
        row += 1

        #fitting region
        self.regionTopLine = qt.QFrame(self)
        self.regionTopLine.setFrameShape(qt.QFrame.HLine)
        self.regionTopLine.setFrameShadow(qt.QFrame.Sunken)
        self.regionTopLine.setFrameShape(qt.QFrame.HLine)

        self.regionCheckBox = qt.QCheckBox(self)
        self.regionCheckBox.setText(str("Limit fitting region to :"))

        self.firstLabel = qt.QLabel(self)
        firstLabel_font = qt.QFont(self.firstLabel.font())
        firstLabel_font.setItalic(1)
        self.firstLabel.setFont(firstLabel_font)
        self.firstLabel.setText(str("First X Value "))
        self.firstLabel.setAlignment(qt.Qt.AlignVCenter | qt.Qt.AlignRight)
        self.firstValue = qt.QLineEdit(self)
        self.firstValue._v = qt.QDoubleValidator(self.firstValue)
        self.firstValue.setValidator(self.firstValue._v)
        self.firstValue.setText(str("0."))

        self.lastLabel = qt.QLabel(self)
        lastLabel_font = qt.QFont(self.lastLabel.font())
        lastLabel_font.setItalic(1)
        self.lastLabel.setFont(lastLabel_font)
        self.lastLabel.setText(str("Last X Value "))
        self.lastLabel.setAlignment(qt.Qt.AlignVCenter | qt.Qt.AlignRight)
        self.lastValue = qt.QLineEdit(self)
        self.lastValue._v = qt.QDoubleValidator(self.lastValue)
        self.lastValue.setValidator(self.lastValue._v)
        self.lastValue.setText(str("1000."))

        self.regionBottomLine = qt.QFrame(self)
        self.regionBottomLine.setFrameShape(qt.QFrame.HLine)
        self.regionBottomLine.setFrameShadow(qt.QFrame.Sunken)
        self.regionBottomLine.setFrameShape(qt.QFrame.HLine)

        self.mainLayout.addWidget(self.regionTopLine, row, 0, 1, 4)
        row += 1
        self.mainLayout.addWidget(self.regionCheckBox, row, 0)
        self.mainLayout.addWidget(self.firstLabel, row, 1)
        self.mainLayout.addWidget(self.firstValue, row, 3)
        row += 1
        self.mainLayout.addWidget(self.lastLabel, row, 1)
        self.mainLayout.addWidget(self.lastValue, row, 3)
        row += 1
        self.mainLayout.addWidget(self.regionBottomLine, row, 0, 1, 4)
        row += 1