예제 #1
0
 def initIcons(self):
     self.Icons = {}
     for (name, icon) in IconDict.items():
         pixmap = qt.QPixmap(icon)
         if QTVERSION < '4.0.0':
             self.Icons[name] = qt.QIconSet(pixmap)
         else:
             self.Icons[name] = qt.QIcon(pixmap)
예제 #2
0
 def focusOutEvent(self, event):
     # TODO remove ?
     if 0:
         self.setPaletteBackgroundColor(qt.QColor('white'))
         if QTVERSION < '4.0.0':
             self.emit(qt.SIGNAL("returnPressed()"), ())
         else:
             self.emit(qt.SIGNAL("returnPressed()"))
예제 #3
0
 def closeEvent(self, event):
     qt.QWidget.closeEvent(self, event)
     ddict = {}
     ddict['event'] = 'closed'
     if QTVERSION < '4.0.0':
         self.emit(qt.PYSIGNAL('closed'), (ddict,))
     else:
         self.emit(qt.SIGNAL('closed'), ddict)
예제 #4
0
 def closeEvent(self, event):
     QTable.closeEvent(self, event)
     ddict = {}
     ddict['event'] = 'closed'
     if qt.qVersion() < '4.0.0':
         self.emit(qt.PYSIGNAL('closed'), (ddict, ))
     else:
         self.emit(qt.SIGNAL('closed'), ddict)
예제 #5
0
 def __init__(self, parent=None, name=None):
     qt.QLineEdit.__init__(self, parent)
     if QTVERSION < '4.0.0':
         qt.QObject.connect(self, qt.SIGNAL("returnPressed()"),
                            self._mySignal)
     else:
         qt.QObject.connect(self, qt.SIGNAL("editingFinished()"),
                            self._mySignal)
예제 #6
0
 def _addGraphDialogButton(self):
     self.graphDialog.okButton = qt.QPushButton(self.graphDialog)
     self.graphDialog.okButton.setText('OK')
     self.graphDialog.okButton.setAutoDefault(True)
     self.graphDialog.mainLayout.addWidget(self.graphDialog.okButton)
     self.graphDialog.connect(self.graphDialog.okButton,
                              qt.SIGNAL('clicked()'),
                              self.graphDialog.accept)
예제 #7
0
 def _mySignal(self):
     self.setPaletteBackgroundColor(qt.QColor('white'))
     ddict = {}
     ddict['event'] = "returnPressed"
     if QTVERSION < '4.0.0':
         self.emit(qt.PYSIGNAL("MyQLineEditSignal"), (ddict,))
     else:
         self.emit(qt.SIGNAL("MyQLineEditSignal"), ddict)
예제 #8
0
 def _sliderChanged(self, value):
     if DEBUG:
         print("DoubleSlider._sliderChanged()")
     ddict = self.__getDict()
     if QTVERSION < '4.0.0':
         self.emit(qt.PYSIGNAL("doubleSliderValueChanged"), (ddict, ))
     else:
         self.emit(qt.SIGNAL("doubleSliderValueChanged"), ddict)
예제 #9
0
    def __init__(self, parent=None, initdict = None):
        if qt.qVersion() < '4.0.0':
            qt.QWidget.__init__(self, parent, "TubeWidget",0)
        else:
            qt.QWidget.__init__(self, parent)

        self.l = qt.QVBoxLayout(self)
        self.l.setMargin(0)
        self.l.setSpacing(0)
        
        self.tubeWidget = TubeWidget(self, initdict = initdict)
        self.setParameters = self.tubeWidget.setParameters
        self.getParameters = self.tubeWidget.getParameters

        label = qt.QLabel(self)

        
        hbox = qt.QWidget(self)
        hboxl = qt.QHBoxLayout(hbox)
        hboxl.setMargin(0)
        hboxl.setSpacing(0)
        self.plotButton = qt.QPushButton(hbox)
        self.plotButton.setText("Plot Continuum")

        self.exportButton = qt.QPushButton(hbox)
        self.exportButton.setText("Export to Fit")

        #grid.addWidget(self.plotButton, 7, 1)
        #grid.addWidget(self.exportButton, 7, 3)
        
        hboxl.addWidget(self.plotButton)
        hboxl.addWidget(self.exportButton)

        self.l.addWidget(self.tubeWidget)

        f = label.font()
        f.setItalic(1)
        label.setFont(f)
        label.setAlignment(qt.Qt.AlignRight)
        label.setText("H. Ebel, X-Ray Spectrometry 28 (1999) 255-266    ")
        self.l.addWidget(label)
        
        self.l.addWidget(hbox)
        self.graph = None

        if HAS_QWT:
            self.connect(self.plotButton,
                     qt.SIGNAL("clicked()"),
                     self.plot)
        else:
            self.connect(self.plotButton,
                     qt.SIGNAL("clicked()"),
                     self.noQwtError)

        self.connect(self.exportButton,
                     qt.SIGNAL("clicked()"),
                     self._export)
예제 #10
0
 def display(self, model):
     app = qt.QApplication.instance()
     if not app:  # create QApplication if it doesnt exist
         app = qt.QApplication(sys.argv)
     tree = qt.QTreeView()
     tree.setModel(model)
     tree.show()
     app.exec_()
     return tree
예제 #11
0
 def __selection(self, peak):
     selection = []
     for key in self.peaklist:
         if self.buttondict[key].isSelected():
             selection.append(key)
     if QTVERSION < '4.0.0':
         self.emit(qt.PYSIGNAL("selectionChanged"), (selection, ))
     else:
         self.emit(qt.SIGNAL("selectionChanged"), (selection))
예제 #12
0
    def __init__(self, *args, **kw):
        QTable.__init__(self, *args)
        if QTVERSION < '4.0.0':
            self.setNumRows(1)
            self.setNumCols(1)
        else:
            self.setRowCount(1)
            self.setColumnCount(1)
        self.labels = [
            'Parameter', 'Estimation', 'Fit Value', 'Sigma', 'Restrains',
            'Min/Parame', 'Max/Factor/Delta/'
        ]
        self.code_options = [
            "FREE", "POSITIVE", "QUOTED", "FIXED", "FACTOR", "DELTA", "SUM",
            "IGNORE", "ADD", "SHOW"
        ]

        i = 0
        if 'labels' in kw:
            self.labels = []
            for label in kw['labels']:
                self.labels.append(label)
        else:
            self.labels = [
                'Position', 'Fit Area', 'MCA Area', 'Sigma', 'Fwhm', 'Chisq',
                'Region', 'XBegin', 'XEnd'
            ]
        if QTVERSION < '4.0.0':
            self.setNumCols(len(self.labels))
            for label in self.labels:
                qt.QHeader.setLabel(self.horizontalHeader(), i, label)
                self.adjustColumn(i)
                i = i + 1
        else:
            self.setColumnCount(len(self.labels))
            for label in self.labels:
                item = self.horizontalHeaderItem(i)
                if item is None:
                    item = qt.QTableWidgetItem(self.labels[i],
                                               qt.QTableWidgetItem.Type)
                    self.setHorizontalHeaderItem(i, item)
                item.setText(self.labels[i])
                self.resizeColumnToContents(i)
                i = i + 1

        self.regionlist = []
        self.regiondict = {}
        if QTVERSION < '4.0.0':
            self.verticalHeader().setClickEnabled(1)
            self.connect(self.verticalHeader(), qt.SIGNAL('clicked(int)'),
                         self.__myslot)
        else:
            if DEBUG:
                print("MCATABLE click on vertical header items?")
            self.connect(self, qt.SIGNAL('cellClicked(int, int)'),
                         self.__myslot)
        self.connect(self, qt.SIGNAL("selectionChanged()"), self.__myslot)
예제 #13
0
 def noQwtError(self):
     msg = qt.QMessageBox(self)
     msg.setIcon(qt.QMessageBox.Critical)
     msg.setText("This function needs PyQwt5 installed")
     if qt.qVersion() < '4.0.0':
         msg.exec_loop()
     else:
         msg.exec_()
     return
예제 #14
0
 def printFile():
     painter = qt.QPainter(printer)
     scene.render(
         painter, qt.QRectF(0, 0, printer.width(), printer.height()),
         qt.QRectF(page.rect().x(),
                   page.rect().y(),
                   page.rect().width(),
                   page.rect().height()), qt.Qt.KeepAspectRatio)
     painter.end()
예제 #15
0
    def __init__(self, parent=None, name=None, fl=0, keys=(), params=()):
        if QTVERSION < '4.0.0':
            qt.QWidget.__init__(self, parent, name, fl)

            if name == None:
                self.setName("RadioField")

            #self.resize(166,607)
            self.setSizePolicy(
                qt.QSizePolicy(1, 1, 0, 0,
                               self.sizePolicy().hasHeightForWidth()))
            self.setCaption(str("RadioField"))
            RadioFieldLayout = qt.QHBoxLayout(self, 11, 6, "RadioFieldLayout")
        else:
            qt.QWidget.__init__(self, parent)
            RadioFieldLayout = qt.QHBoxLayout(self)
            RadioFieldLayout.setMargin(11)
            RadioFieldLayout.setSpacing(6)

        self.RadioFieldBox = qt.QButtonGroup(self)
        if QTVERSION < '4.0.0':
            self.RadioFieldBox.setSizePolicy(
                qt.QSizePolicy(
                    1, 1, 0, 0,
                    self.RadioFieldBox.sizePolicy().hasHeightForWidth()))
        self.RadioFieldBox.setTitle(str(""))
        self.RadioFieldBox.setColumnLayout(0, qt.Qt.Vertical)
        self.RadioFieldBox.layout().setSpacing(6)
        self.RadioFieldBox.layout().setMargin(11)
        RadioFieldBoxLayout = qt.QVBoxLayout(self.RadioFieldBox.layout())
        RadioFieldBoxLayout.setAlignment(qt.Qt.AlignTop)
        Layout1 = qt.QVBoxLayout(None, 0, 6, "Layout1")

        self.dict = {}
        if type(keys) == TupleType:
            for key in keys:
                self.dict[key] = 1
        else:
            self.dict[keys] = 1
        self.RadioButton = []
        i = 0
        for text in params:
            self.RadioButton.append(
                qt.QRadioButton(self.RadioFieldBox, "RadioButton" + "%d" % i))
            self.RadioButton[-1].setSizePolicy(
                qt.QSizePolicy(
                    1, 1, 0, 0,
                    self.RadioButton[-1].sizePolicy().hasHeightForWidth()))
            self.RadioButton[-1].setText(str(text))
            Layout1.addWidget(self.RadioButton[-1])
            i = i + 1

        RadioFieldBoxLayout.addLayout(Layout1)
        RadioFieldLayout.addWidget(self.RadioFieldBox)
        self.RadioButton[0].setChecked(1)
        self.connect(self.RadioFieldBox, qt.SIGNAL("clicked(int)"),
                     self.setvalue)
예제 #16
0
def test():
    a = qt.QApplication(sys.argv)
    qt.QObject.connect(a, qt.SIGNAL("lastWindowClosed()"), a,
                       qt.SLOT("quit()"))
    w = ParametersTab()
    if QTVERSION < '4.0.0': a.setMainWidget(w)
    w.show()
    if 1:
        import specfile
        import Specfit
        import numpy
        sf = specfile.Specfile('02021201.dat')
        scan = sf.select('14')
        #sf=specfile.Specfile('02022101.dat')
        #scan=sf.select('11')
        mcadata = scan.mca(1)
        y = numpy.array(mcadata)
        #x=numpy.arange(len(y))
        x = numpy.arange(len(y)) * 0.0200511 - 0.003186
        fit = Specfit.Specfit()
        fit.setdata(x=x, y=y)
        fit.importfun("SpecfitFunctions.py")
        fit.settheory('Hypermet')
        fit.configure(Yscaling=1.,
                      WeightFlag=1,
                      PosFwhmFlag=1,
                      HeightAreaFlag=1,
                      FwhmPoints=50,
                      PositionFlag=1,
                      HypermetTails=1)
        fit.setbackground('Linear')
        if 0:
            # build a spectrum array
            f = open("spec.arsp", 'r')
            #read the spectrum data
            x = numpy.array([], numpy.float)
            y = numpy.array([], numpy.float)
            tmp = f.readline()[:-1]
            while (tmp != ""):
                tmpSeq = tmp.split()
                x = numpy.concatenate((x, [float(tmpSeq[0])]))
                y = numpy.concatenate((y, [float(tmpSeq[1])]))
                tmp = f.readline()[:-1]
            fit.setdata(x=x, y=y)
        if 1:
            mcaresult = fit.mcafit(x=x, xmin=x[70], xmax=x[500])
            w.fillfrommca(mcaresult)
        else:
            fit.estimate()
            fit.startfit()
            w.fillfromfit(fit.paramlist, current='Fit')
            w.removeview(view='Region 1')
    if QTVERSION < '4.0.0':
        a.exec_loop()
    else:
        a.exec_()
예제 #17
0
 def mouseDoubleClickEvent(self, event):
     if DEBUG:
         print("Double Click Event")
     ddict = {}
     ddict['event'] = "DoubleClick"
     ddict['data'] = event
     if qt.qVersion() < '4.0.0':
         self.emit(qt.PYSIGNAL("LineDoubleClickEvent"), (ddict, ))
     else:
         self.emit(qt.SIGNAL("LineDoubleClickEvent"), ddict)
예제 #18
0
def test():
    app = qt.QApplication([])
    w = QSelectorWidget()
    w.show()
    qt.QObject.connect(app, qt.SIGNAL("lastWindowClosed()"),
                       app, qt.SLOT("quit()"))
    if QTVERSION < '4.0.0':
        app.exec_loop()
    else:
        app.exec_()
예제 #19
0
 def mousePressEvent(self, event):
     if DEBUG:
         print("Mouse Press Event")
     ddict = {}
     ddict['event'] = "MousePress"
     ddict['data'] = event
     if qt.qVersion() < '4.0.0':
         self.emit(qt.PYSIGNAL("PixmapLabelMousePressEvent"), (ddict, ))
     else:
         self.emit(qt.SIGNAL("PixmapLabelMousePressEvent"), ddict)
예제 #20
0
    def start(self):
        self.emit(qt.SIGNAL("started"), ())
        import time
        for idx in range(30):
            self.logText.append("%d" % idx)
            qt.qApp.processEvents()
            time.sleep(.5)
            print(idx)

        self.emit(qt.SIGNAL("finished"), ())
예제 #21
0
 def recurse_dic_to_item(self, dic, parent):
     for k in dic:
         v = dic[k]
         if isinstance(v, dict):
             item = qt.QStandardItem(k + ':' + str(v))
             parent.appendRow(self.recurse_dic_to_item(v, item))
         else:
             item = qt.QStandardItem(k + ': ' + str(v))
             parent.appendRow(item)
     return parent
예제 #22
0
 def __setup(self):
     """
     """
     if self.printer is None:
         self.printer = qt.QPrinter()
     if self.printDialog is None:
         self.printDialog = qt.QPrintDialog(self.printer, self)
     if self.printDialog.exec_():
         self.printer.setFullPage(True)
         self.updatePrinter()
예제 #23
0
def test():
    app = qt.QApplication([])
    w = qt.QTextEdit()
    if len(sys.argv) > 1:
        log = ChangeLog(textfile=sys.argv[-1])
    else:
        log = ChangeLog(textfile='changelog.txt')
    w.setDocument(log)
    w.show()
    app.exec_()
예제 #24
0
        def __printps(self,text):
            printer = qt.QPrinter()
            if printer.setup(self):
                painter = qt.QPainter()
                if not(painter.begin(printer)):
                    return 0
            metrics = qt.QPaintDeviceMetrics(printer)
            dpiy    = metrics.logicalDpiY()
            margin  = int((2/2.54) * dpiy) #2cm margin
            body = qt.QRect(0.5*margin, margin, metrics.width()- 1 * margin, metrics.height() - 2 * margin)
            #text = self.mcatable.gettext()
            #html output -> print text
            richtext = qt.QSimpleRichText(text, qt.QFont(),
                                                qt.QString(""),
                                                #0,
                                                qt.QStyleSheet.defaultSheet(),
                                                qt.QMimeSourceFactory.defaultFactory(),
                                                body.height())
            view = qt.QRect(body)
            richtext.setWidth(painter,view.width())
            page = 1                
            while(1):
                richtext.draw(painter,body.left(),body.top(),
                              view,qt.QColorGroup())
                view.moveBy(0, body.height())
                painter.translate(0, -body.height())
                painter.drawText(view.right()  - painter.fontMetrics().width(qt.QString.number(page)),
                                 view.bottom() - painter.fontMetrics().ascent() + 5,qt.QString.number(page))
                if view.top() >= richtext.height():
                    break
                printer.newPage()
                page += 1

            #painter.flush()
            painter.end()
예제 #25
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.setMargin(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.setMargin(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.connect(self.closeButton, qt.SIGNAL('clicked()'), self.close)
예제 #26
0
 def _build(self):
     i = 0
     for key in self.keyList:
         label = qt.QLabel(self)
         label.setText(key)
         line = qt.QLineEdit(self)
         line.setReadOnly(True)
         self.mainLayout.addWidget(label, i, 0)
         self.mainLayout.addWidget(line, i, 1)
         self.keyDict[key] = (label, line)
         i += 1
예제 #27
0
    def _removeClicked(self):
        if DEBUG:
            print("Overwritten _removeClicked method")

        #get selected scan keys
        if QTVERSION < '4.0.0':
            scan_sel= [sn for sn in self.scans if self.list.findItem(sn,1).isSelected()]
        else:
            itemlist = self.list.selectedItems()
            scan_sel = [str(item.text(1)) for item in itemlist]

        #get selected counter keys
        cnt_sel = self.cntTable.getCounterSelection()
        mca_sel = self.mcaTable.getCurrentlySelectedMca()

        sel_list = []
        #build the appropriate selection for mca's
        for scan in scan_sel:
            for mca in mca_sel:
                sel = {}
                sel['SourceName'] = self.data.sourceName
                sel['SourceType'] = self.data.sourceType
                sel['Key'] = scan
                sel['Key'] += "."+mca
                sel['selection'] = None #for the future
                #sel['scanselection']  = False
                sel['legend'] = os.path.basename(sel['SourceName'][0]) +" "+sel['Key']
                sel_list.append(sel)
            if len(cnt_sel['cntlist']):
                if len(cnt_sel['y']): #if there is something to plot
                    sel = {}
                    sel['SourceName'] = self.data.sourceName
                    sel['SourceType'] = self.data.sourceType
                    sel['Key'] = scan
                    sel['selection'] = {}
                    if self.forceMcaBox.isChecked():
                        sel['scanselection']  = "MCA"
                    else:
                        sel['scanselection']  = True
                    sel['selection']['x'] = cnt_sel['x']
                    if len(sel['selection']['x']) == 2:
                        if self.meshBox.isChecked():
                            sel['selection']['selectiontype'] = "2D"
                    sel['selection']['y'] = cnt_sel['y'] 
                    sel['selection']['m'] = cnt_sel['m']
                    sel['selection']['cntlist'] = cnt_sel['cntlist']
                    sel['legend']    = os.path.basename(sel['SourceName'][0]) +" "+ sel['Key']
                    sel_list.append(sel)            
            
        if len(sel_list): 
            if QTVERSION < '4.0.0':
                self.emit(qt.PYSIGNAL("removeSelection"), (sel_list,))            
            else:
                self.emit(qt.SIGNAL("removeSelection"), sel_list)
예제 #28
0
 def __init__(self, parent=None, name=None, fl=0):
     qt.QComboBox.__init__(self, parent)
     self.setEditable(True)
     self._lineEdit = MyQLineEdit()
     self.setLineEdit(self._lineEdit)
     if QTVERSION < '4.0.0':
         self.connect(self._lineEdit,
                      qt.PYSIGNAL("MyQLineEditSignal"), self._mySlot)
     else:
         self.connect(self._lineEdit,
                      qt.SIGNAL("MyQLineEditSignal"), self._mySlot)
예제 #29
0
    def drawEllipse(self,x,y,r):

        self.Item = qt.QGraphicsEllipseItem(x-r/2,y-r/2,r,r)
        self.Item.setFlag(qt.QGraphicsItem.ItemIsMovable)

        pen = qt.QPen(qt.Qt.blue)
        pen.setWidth( 3 )
        brush = qt.QBrush(qt.QColor(0xFF, 0, 0, 0x00))
        self.Item.setBrush(brush)
        self.Item.setPen(pen)
        self.scene.addItem(self.Item)
예제 #30
0
    def __init__(self,
                 parent=None,
                 name=None,
                 modal=1,
                 fl=0,
                 sheets=(),
                 default=None,
                 nohelp=1,
                 nodefaults=1):
        TabSheets.TabSheets.__init__(self, parent, name, modal, fl, nohelp,
                                     nodefaults)
        if QTVERSION < '4.0.0':
            if name is not None: self.setCaption(str(name))
        else:
            if name is not None: self.setWindowTitle(str(name))
        self.sheets = {}
        self.sheetslist = []
        self.default = default
        self.output = {}
        self.output.update(self.default)
        ntabs = self.tabWidget.count()

        #remove anything not having to do with my sheets
        for i in range(ntabs):
            if QTVERSION < '4.0.0':
                page = self.tabWidget.page(0)
                self.tabWidget.removePage(page)
            else:
                self.tabWidget.setCurrentIndex(0)
                self.tabWidget.removeTab(self.tabWidget.currentIndex())

        for sheet in sheets:
            name = sheet['notetitle']
            a = FieldSheet(fields=sheet['fields'])
            self.sheets[name] = a
            a.setdefaults(self.default)
            self.sheetslist.append(name)
            self.tabWidget.addTab(self.sheets[name], str(name))
            if QTVERSION < '4.0.0':
                self.tabWidget.showPage(self.sheets[name])
            else:
                if QTVERSION < '4.2.0':
                    i = self.tabWidget.indexOf(self.sheets[name])
                    self.tabWidget.setCurrentIndex(i)
                else:
                    self.tabWidget.setCurrentWidget(self.sheets[name])
        #perform the binding to the buttons
        self.connect(self.buttonOk, qt.SIGNAL("clicked()"), self.myaccept)
        self.connect(self.buttonCancel, qt.SIGNAL("clicked()"), self.myreject)
        if not nodefaults:
            self.connect(self.buttonDefaults, qt.SIGNAL("clicked()"),
                         self.defaults)
        if not nohelp:
            self.connect(self.buttonHelp, qt.SIGNAL("clicked()"), self.myhelp)
예제 #31
0
 def getSaveFileName(parent, caption, directory, typeFilter=None, selectedFilter=None, options=None):
     dial = RixsSaveSpectraDialog(parent, caption, directory)
     dial.setAcceptMode(qt.QFileDialog.AcceptSave)
     singleFile = None
     comment = None
     fileNameList = []
     if dial.exec_():
         singleFile = dial.singleFile.isChecked()
         fileNameList = [qt.safe_str(fn) for fn in dial.selectedFiles()]
     return fileNameList, singleFile, comment