Example #1
0
 def browseOutputDir(self):
     if self.outputDir is None:
         self.outputDir = PyMcaDirs.outputDir
     if not os.path.exists(self.outputDir):
         self.outputDir = os.getcwd()
     wdir = self.outputDir
     if QTVERSION < '4.0.0':
         outfile = qt.QFileDialog(self, "Output Directory Selection", 1)
         outfile.setMode(outfile.DirectoryOnly)
         outfile.setDir(wdir)
         ret = outfile.exec_loop()
     else:
         outfile = qt.QFileDialog(self)
         outfile.setWindowTitle("Output Directory Selection")
         outfile.setModal(1)
         outfile.setDirectory(wdir)
         outfile.setFileMode(outfile.DirectoryOnly)
         ret = outfile.exec_()
     if ret:
         if QTVERSION < '4.0.0':
             outdir = qt.safe_str(outfile.selectedFile())
         else:
             outdir = qt.safe_str(outfile.selectedFiles()[0])
         outfile.close()
         del outfile
         self.setOutputDir(outdir)
     else:
         # pyflakes http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=666494
         outfile.close()
         del outfile
     if QTVERSION < '4.0.0':
         self.raiseW()
     else:
         self.raise_()
Example #2
0
 def load(self):
     if PyMcaDirs.nativeFileDialogs:
         filedialog = qt.QFileDialog(self)
         filedialog.setFileMode(filedialog.ExistingFiles)
         filedialog.setWindowIcon(qt.QIcon(qt.QPixmap(Icons.IconDict["gioconda16"])))
         initdir = os.path.curdir
         if self.initDir is not None:
             if os.path.isdir(self.initDir):
                 initdir = self.initDir
         filename = filedialog.getOpenFileName(
                     self,
                     "Choose fit configuration file",
                     initdir,
                     "Fit configuration files (*.cfg)\nAll Files (*)")
         filename = qt.safe_str(filename)
         if len(filename):
             self.loadConfiguration(filename)
             self.initDir = os.path.dirname(filename)
     else:
         filedialog = qt.QFileDialog(self)
         filedialog.setFileMode(filedialog.ExistingFiles)
         filedialog.setWindowIcon(qt.QIcon(qt.QPixmap(Icons.IconDict["gioconda16"])))
         initdir = os.path.curdir
         if self.initDir is not None:
             if os.path.isdir(self.initDir):
                 initdir = self.initDir
         filename = filedialog.getOpenFileName(
                     self,
                     "Choose fit configuration file",
                     initdir,
                     "Fit configuration files (*.cfg)\nAll Files (*)")
         filename = qt.safe_str(filename)
         if len(filename):
             self.loadConfiguration(filename)
             self.initDir = os.path.dirname(filename)
 def browseList(self):
     if self.inputDir is None:
         self.inputDir = PyMcaDirs.inputDir
     if not os.path.exists(self.inputDir):
         self.inputDir = os.getcwd()
     wdir = self.inputDir
     filedialog = qt.QFileDialog(self)
     filedialog.setWindowTitle("Open a set of files")
     filedialog.setDirectory(wdir)
     filedialog.setFilters([
         "HDF5 Files (*.nxs *.h5 *.hdf)", "HDF5 Files (*.h5)",
         "HDF5 Files (*.hdf)", "HDF5 Files (*.nxs)", "HDF5 Files (*)"
     ])
     filedialog.setModal(1)
     filedialog.setFileMode(filedialog.ExistingFiles)
     ret = filedialog.exec_()
     if ret == qt.QDialog.Accepted:
         filelist0 = filedialog.selectedFiles()
     else:
         self.raise_()
         return
     filelist = []
     for f in filelist0:
         filelist.append(safe_str(f))
     if len(filelist):
         self.setFileList(filelist)
     PyMcaDirs.inputDir = os.path.dirname(filelist[0])
     self.inputDir = os.path.dirname(filelist[0])
     self.raise_()
Example #4
0
    def _browseList(self, filetypes="All Files (*)"):
        self.inputDir = xrfmc_dirs.inputDir
        if not os.path.exists(self.inputDir):
            self.inputDir =  os.getcwd()
        wdir = self.inputDir

        filedialog = qt.QFileDialog(self)
        filedialog.setWindowTitle("Open a set of files")
        filedialog.setDirectory(wdir)
        filedialog.setModal(1)
        filedialog.setFileMode(filedialog.ExistingFiles)

        if self.__maxNFiles == 1:
            filelist = qt.QFileDialog.getOpenFileName(self,
                        "Open a set of files",
                        wdir,
                        filetypes,
                        None)
            if len(filelist):
                filelist = [filelist]
        else:
            filelist = qt.QFileDialog.getOpenFileNames(self,
                        "Open a set of files",
                        wdir,
                        filetypes,
                        None)
        if len(filelist):
            filelist = map(str, filelist)
            self.setFileList(filelist)
Example #5
0
 def _save(self):
     if self.roiDir is None:
         self.roiDir = PyMcaDirs.outputDir
     elif not os.path.isdir(self.roiDir):
         self.roiDir = PyMcaDirs.outputDir
     outfile = qt.QFileDialog(self)
     outfile.setFilter('PyMca  *.ini')
     outfile.setFileMode(outfile.AnyFile)
     outfile.setAcceptMode(qt.QFileDialog.AcceptSave)
     outfile.setDirectory(self.roiDir)
     ret = outfile.exec_()
     if not ret:
         outfile.close()
         del outfile
         return
     # pyflakes bug http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=666494
     outputFile = qt.safe_str(outfile.selectedFiles()[0])
     extension = ".ini"
     outfile.close()
     del outfile
     if len(outputFile) < len(extension[:]):
         outputFile += extension[:]
     elif outputFile[-4:] != extension[:]:
         outputFile += extension[:]
     if os.path.exists(outputFile):
         try:
             os.remove(outputFile)
         except IOError:
             msg = qt.QMessageBox(self)
             msg.setIcon(qt.QMessageBox.Critical)
             msg.setText("Input Output Error: %s" % (sys.exc_info()[1]))
             msg.exec_()
             return
     self.roiDir = os.path.dirname(outputFile)
     self.save(outputFile)
Example #6
0
    def _browseList(self, filetypes="All Files (*)"):
        self.inputDir = xrfmc_dirs.inputDir
        if not os.path.exists(self.inputDir):
            self.inputDir =  os.getcwd()
        wdir = self.inputDir

        filedialog = qt.QFileDialog(self)
        if sys.platform == "darwin":
            filedialog.setWindowTitle("Select XMI-MSIM application bundle")
        else:
            filedialog.setWindowTitle("Select xmimsim-pymca executable")
        filedialog.setDirectory(wdir)
        filedialog.setModal(1)
        filedialog.setFileMode(filedialog.ExistingFiles)
        if sys.platform == 'darwin':
            filelist = filedialog.exec_()
            if filelist:
                filelist = filedialog.selectedFiles()
                filelist = filelist[0]
                xmimsim = os.path.join(qt.safe_str(filelist),
                                       "Contents",
                                       "Resources",
                                       "xmimsim-pymca")
                filelist = [xmimsim]
        else:
            filelist = qt.QFileDialog.getOpenFileName(self,
                        "Selec xmimsim-pymca executable",
                        wdir,
                        filetypes,
                        None)
            if len(filelist):
                filelist = [filelist]
        self.setFileList(filelist)
Example #7
0
 def save(self):
     if self.initDir is None:
         self.initDir = PyMcaDirs.outputDir
     if PyMcaDirs.nativeFileDialogs:
         filedialog = qt.QFileDialog(self)
         filedialog.setFileMode(filedialog.AnyFile)
         filedialog.setWindowIcon(qt.QIcon(qt.QPixmap(Icons.IconDict["gioconda16"])))
         initdir = os.path.curdir
         if self.initDir is not None:
             if os.path.isdir(self.initDir):
                 initdir = self.initDir
         filename = filedialog.getSaveFileName(
                     self,
                     "Enter output fit configuration file",
                     initdir,
                     "Fit configuration files (*.cfg)\nAll Files (*)")
         filename = qt.safe_str(filename)
         if len(filename):
             if len(filename) < 4:
                 filename = filename+".cfg"
             elif filename[-4:] != ".cfg":
                 filename = filename+".cfg"
             self.saveConfiguration(filename)
             self.initDir = os.path.dirname(filename)
     else:
         filedialog = qt.QFileDialog(self)
         filedialog.setFileMode(filedialog.AnyFile)
         filedialog.setWindowIcon(qt.QIcon(qt.QPixmap(Icons.IconDict["gioconda16"])))
         initdir = os.path.curdir
         if self.initDir is not None:
             if os.path.isdir(self.initDir):
                 initdir = self.initDir
         filename = filedialog.getSaveFileName(
                     self,
                     "Enter output fit configuration file",
                     initdir,
                     "Fit configuration files (*.cfg)\nAll Files (*)")
         filename = qt.safe_str(filename)
         if len(filename):
             if len(filename) < 4:
                 filename = filename+".cfg"
             elif filename[-4:] != ".cfg":
                 filename = filename+".cfg"
             self.saveConfiguration(filename)
             self.initDir = os.path.dirname(filename)
             PyMcaDirs.outputDir = os.path.dirname(filename)
Example #8
0
    def browseList(self):
        if self.inputDir is None: self.inputDir = PyMcaDirs.inputDir
        if not os.path.exists(self.inputDir):
            self.inputDir = os.getcwd()
        wdir = self.inputDir
        if QTVERSION < '4.0.0':
            filedialog = qt.QFileDialog(self, "Open a set of files", 1)
            filedialog.setMode(filedialog.ExistingFiles)
            filedialog.setDir(wdir)
            filedialog.setFilters(
                "Mca Files (*.mca)\nSpec Files (*.dat)\nAll Files (*)\n")
            if filedialog.exec_loop() == qt.QDialog.Accepted:
                filelist0 = filedialog.selectedFiles()
            else:
                self.raiseW()
                return
        else:
            filedialog = qt.QFileDialog(self)
            filedialog.setWindowTitle("Open a set of files")
            filedialog.setDirectory(wdir)
            filedialog.setFilters(
                ["Mca Files (*.mca)", "Spec Files (*.dat)", "All Files (*)"])
            filedialog.setModal(1)
            filedialog.setFileMode(filedialog.ExistingFiles)
            ret = filedialog.exec_()
            if ret == qt.QDialog.Accepted:
                filelist0 = filedialog.selectedFiles()
            else:
                self.raise_()
                return

        filelist = []
        for f in filelist0:
            filelist.append(qt.safe_str(f))
        if len(filelist):
            self.setFileList(filelist)
        if QTVERSION < '4.0.0':
            self.raiseW()
        else:
            self.raise_()
Example #9
0
 def browseConfig(self):
     filename = qt.QFileDialog(self, "Open a new fit config file", 1)
     filename.setMode(filename.ExistingFiles)
     filename.setFilters("Config Files (*.cfg)\nAll files (*)")
     if filename.exec_loop() == qt.QDialog.Accepted:
         filename = filename.selectedFile()
     else:
         self.raiseW()
         return
     filename = qt.safe_str(filename)
     if len(filename):
         self.setConfigFile(filename)
     self.raiseW()
Example #10
0
 def __openDirectory(self):
     wdir = ""
     outfile = qt.QFileDialog(self)
     outfile.setWindowTitle("Set Output Directory")
     outfile.setModal(1)
     outfile.setDirectory(wdir)
     outfile.setFileMode(outfile.DirectoryOnly)
     ret = outfile.exec_()
     directory = None
     if ret:
         directory = qt.safe_str(outfile.selectedFiles()[0])
         outfile.close()
     else:
         outfile.close()
     del outfile
     if directory is not None:
         self.directory.setText(directory)
Example #11
0
    def _browseList(self, filetypes="All Files (*)"):
        self.outputDir = xrfmc_dirs.outputDir
        if not os.path.exists(self.outputDir):
            self.outputDir =  os.getcwd()
        wdir = self.outputDir

        filedialog = qt.QFileDialog(self)
        filedialog.setWindowTitle("Open a set of files")
        filedialog.setDirectory(wdir)
        filedialog.setModal(1)
        filedialog.setFileMode(filedialog.DirectoryOnly)

        filelist = qt.QFileDialog.getExistingDirectory(self,
                    "Please select the output directory",
                    wdir)
        if len(filelist):
            filelist = [str(filelist)]
            self.setFileList(filelist)
Example #12
0
 def funevent(self,item):
     item=str(item)
     if item in self.specfit.theorylist:
         self.specfit.settheory(item)
     else:
         # TODO why this strange condition
         if 1:
             fn = qt.QFileDialog.getOpenFileName()
         else:
             dlg=qt.QFileDialog(qt.QString.null,qt.QString.null,self,None,1)
             dlg.show()            
             fn=dlg.selectedFile()
         if fn.isEmpty():
             functionsfile = ""
         else:
             functionsfile="%s" % fn
         if len(functionsfile):
             try:
                 if self.specfit.importfun(functionsfile):
                     qt.QMessageBox.critical(self, "ERROR",
                                             "Function not imported")
                     return
                 else:
                     #empty the ComboBox
                     n=self.guiconfig.FunComBox.count()
                     while(self.guiconfig.FunComBox.count()>1):
                       self.guiconfig.FunComBox.removeItem(1)
                     #and fill it again
                     for key in self.specfit.theorylist:
                         if QTVERSION < '4.0.0':
                             self.guiconfig.FunComBox.insertItem(str(key))
                         else:
                             self.guiconfig.FunComBox.addItem(str(key))
             except:
                 qt.QMessageBox.critical(self, "ERROR",
                                         "Function not imported")
         i=1+self.specfit.theorylist.index(self.specfit.fitconfig['fittheory'])
         if QTVERSION < '4.0.0':
             self.guiconfig.FunComBox.setCurrentItem(i)
         else:
             self.guiconfig.FunComBox.setCurrentIndex(i)
     self.__initialparameters()
     return
Example #13
0
 def _load(self):        
     if self.roiDir is None:
         self.roiDir = PyMcaDirs.inputDir
     elif not os.path.isdir(self.roiDir):
         self.roiDir = PyMcaDirs.inputDir
     outfile = qt.QFileDialog(self)
     outfile.setFilter('PyMca  *.ini')
     outfile.setFileMode(outfile.ExistingFile)
     outfile.setDirectory(self.roiDir)
     ret = outfile.exec_()
     if not ret:
         outfile.close()
         del outfile
         return
     # pyflakes bug http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=666494
     outputFile = qt.safe_str(outfile.selectedFiles()[0])
     outfile.close()
     del outfile
     self.roiDir = os.path.dirname(outputFile)
     self.load(outputFile)
Example #14
0
 def _getStackOfFiles(self):
     wdir = PyMcaDirs.inputDir
     fileTypeList = [
         "Batch Result Files (*dat)", "EDF Files (*edf)",
         "EDF Files (*ccd)", "TIFF Files (*tif *tiff *TIF *TIFF)",
         "Image Files (* jpg *jpeg *tif *tiff *png)", "All Files (*)"
     ]
     message = "Open ONE Batch result file or SEVERAL EDF files"
     #if (QTVERSION < '4.3.0') and (sys.platform != 'darwin'):
     if PyMcaDirs.nativeFileDialogs:
         filetypes = ""
         for filetype in fileTypeList:
             filetypes += filetype + "\n"
         filelist = qt.QFileDialog.getOpenFileNames(self, message, wdir,
                                                    filetypes)
         if not len(filelist): return []
     else:
         fdialog = qt.QFileDialog(self)
         fdialog.setModal(True)
         fdialog.setWindowTitle(message)
         strlist = QStringList()
         for filetype in fileTypeList:
             strlist.append(filetype.replace("(", "").replace(")", ""))
         fdialog.setFilters(strlist)
         fdialog.setFileMode(fdialog.ExistingFiles)
         fdialog.setDirectory(wdir)
         ret = fdialog.exec_()
         if ret == qt.QDialog.Accepted:
             filelist = fdialog.selectedFiles()
             fdialog.close()
             del fdialog
         else:
             fdialog.close()
             del fdialog
             return []
     filelist = [qt.safe_str(x) for x in filelist]
     if not len(filelist):
         return []
     PyMcaDirs.inputDir = os.path.dirname(filelist[0])
     filelist.sort()
     return filelist
Example #15
0
def getExistingDirectory(parent=None, message=None, mode=None):
    if message is None:
        message = "Please select a directory"
    if mode is None:
        mode = "OPEN"
    else:
        mode = mode.upper()
    if mode == "OPEN":
        wdir = PyMcaDirs.inputDir
    else:
        wdir = PyMcaDirs.outputDir
    if PyMcaDirs.nativeFileDialogs:
        outdir = qt.safe_str(
            qt.QFileDialog.getExistingDirectory(parent, message, wdir))
    else:
        outfile = qt.QFileDialog(parent)
        outfile.setWindowTitle("Output Directory Selection")
        outfile.setModal(1)
        outfile.setDirectory(wdir)
        outfile.setFileMode(outfile.DirectoryOnly)
        ret = outfile.exec_()
        if ret:
            outdir = qt.safe_str(outfile.selectedFiles()[0])
        else:
            outdir = ""
            outfile.close()
            del outfile
    if len(outdir):
        if mode == "OPEN":
            PyMcaDirs.inputDir = os.path.dirname(outdir)
            if PyMcaDirs.outputDir is None:
                PyMcaDirs.outputDir = os.path.dirname(outdir)
        else:
            PyMcaDirs.outputDir = os.path.dirname(outdir)
            if PyMcaDirs.inputDir is None:
                PyMcaDirs.inputDir = os.path.dirname(outdir)
    return outdir
Example #16
0
    def _saveIconSignal(self):
        self.saveDirectory = PyMcaDirs.outputDir

        fileTypeList = [
            "Image *.png", "Image *.jpg", "ZoomedImage *.png",
            "ZoomedImage *.jpg", "Widget *.png", "Widget *.jpg"
        ]

        outfile = qt.QFileDialog(self)
        outfile.setModal(1)
        if QTVERSION < '4.0.0':
            outfile.setCaption("Output File Selection")
            filterlist = fileTypeList[0]
            for f in fileTypeList:
                filterlist += "\n%s" % f
            outfile.setFilters(filterlist)
            outfile.setMode(outfile.AnyFile)
            outfile.setDir(self.saveDirectory)
            ret = outfile.exec_loop()
        else:
            outfile.setWindowTitle("Output File Selection")
            if hasattr(qt, "QStringList"):
                strlist = qt.QStringList()
            else:
                strlist = []
            for f in fileTypeList:
                strlist.append(f)
            outfile.setFilters(strlist)
            outfile.setFileMode(outfile.AnyFile)
            outfile.setAcceptMode(qt.QFileDialog.AcceptSave)
            outfile.setDirectory(self.saveDirectory)
            ret = outfile.exec_()

        if not ret: return
        filterused = qt.safe_str(outfile.selectedFilter()).split()
        filetype = filterused[0]
        extension = filterused[1]
        if QTVERSION < '4.0.0':
            outstr = qt.safe_str(outfile.selectedFile())
        else:
            outstr = qt.safe_str(outfile.selectedFiles()[0])
        try:
            outputFile = os.path.basename(outstr)
        except:
            outputFile = outstr
        outputDir = os.path.dirname(outstr)
        self.saveDirectory = outputDir
        PyMcaDirs.outputDir = outputDir

        #always overwrite for the time being
        if len(outputFile) < len(extension[1:]):
            outputFile += extension[1:]
        elif outputFile[-4:] != extension[1:]:
            outputFile += extension[1:]
        outputFile = os.path.join(outputDir, outputFile)
        if os.path.exists(outputFile):
            try:
                os.remove(outputFile)
            except:
                qt.QMessageBox.critical(self, "Save Error",
                                        "Cannot overwrite existing file")
                return

        if filetype.upper() == "IMAGE":
            self.saveGraphImage(outputFile, original=True)
        elif filetype.upper() == "ZOOMEDIMAGE":
            self.saveGraphImage(outputFile, original=False)
        else:
            self.saveGraphWidget(outputFile)
Example #17
0
    def openFile(self, filename=None,justloaded=None, specsession = False):
        if DEBUG:
            print("openfile = ",filename)
        staticDialog = False
        if not specsession:
            if justloaded is None: justloaded = True
            if filename is None:
                if self.lastInputDir is not None:
                    if not os.path.exists(self.lastInputDir):
                        self.lastInputDir = None
                wdir = self.lastInputDir
                if wdir is None:wdir = os.getcwd()
                if QTVERSION < '4.0.0':
                    filetypes = ""
                    for filetype in self.fileTypeList:
                        filetypes += filetype+"\n"
                    if sys.platform == 'win32':
                        filelist = qt.QFileDialog.getOpenFileNames(
                                    filetypes,
                                    wdir,
                                    self,
                                    "openFile",
                                    "Open a new EdfFile")
                    else:
                        filedialog = qt.QFileDialog(self,
                                                    "Open new EdfFile(s)",
                                                    1)
                        if self.lastInputDir is not None:
                            filedialog.setDir(self.lastInputDir)
                        filedialog.setMode(filedialog.ExistingFiles)
                        filedialog.setFilters(filetypes)           
                        if filedialog.exec_loop() == qt.QDialog.Accepted:
                            filelist= filedialog.selectedFiles()
                        else:
                            return              
                else:
                    #if sys.platform == 'win32':
                    #if (QTVERSION < '4.3.0') and (sys.platform != 'darwin'):
                    if (sys.version < '3.0') and PyMcaDirs.nativeFileDialogs:
                        filetypes = ""
                        for filetype in self.fileTypeList:
                            filetypes += filetype+"\n"
                        if sys.version < '3.0':
                            filelist = qt.QFileDialog.getOpenFileNames(self,
                                    "Open a new source file",
                                    wdir,
                                    filetypes,
                                    self.lastFileFilter)
                        else:
                            filelist, self.lastFileFilter =\
                                    qt.QFileDialog.getOpenFileNamesAndFilter(\
                                    self,
                                    "Open a new source file",
                                    wdir,
                                    filetypes,
                                    self.lastFileFilter)
                        staticDialog = True
                    else:
                        fdialog = qt.QFileDialog(self)
                        fdialog.setModal(True)
                        fdialog.setWindowTitle("Open a new source file")
                        if hasattr(qt, "QStringList"):
                            strlist = qt.QStringList()
                        else:
                            strlist = []
                        for filetype in self.fileTypeList:
                            strlist.append(filetype)
                        fdialog.setFilters(strlist)
                        fdialog.selectFilter(self.lastFileFilter)
                        fdialog.setFileMode(fdialog.ExistingFiles)
                        fdialog.setDirectory(wdir)
                        ret = fdialog.exec_()
                        if ret == qt.QDialog.Accepted:
                            filelist = fdialog.selectedFiles()
                            self.lastFileFilter = qt.safe_str(\
                                                    fdialog.selectedFilter())
                            fdialog.close()
                            del fdialog                        
                        else:
                            fdialog.close()
                            del fdialog
                            return            
                #filelist.sort()
                filename=[]
                for f in filelist:
                    filename.append(qt.safe_str(f))
                if not len(filename):
                    return
                if len(filename):
                    self.lastInputDir  = os.path.dirname(filename[0])
                    PyMcaDirs.inputDir = os.path.dirname(filename[0])
                    if staticDialog:
                        if len(filename[0]) > 3:
                            #figure out the selected filter
                            extension = filename[0][-3:]
                            self.lastFileFilter = self.fileTypeList[-1]
                            for fileFilter in self.fileTypeList:
                                if extension == fileFilter[-4:-1]:
                                    self.lastFileFilter = fileFilter
                                    break
                justloaded = True
            if justloaded:
                if type(filename) != type([]):
                    filename = [filename]
            if not os.path.exists(filename[0]):
                if '%' not in filename[0]:
                    raise IOError("File %s does not exist" % filename[0])

            #check if it is a stack
            if len(filename) > 1:
                key = "STACK from %s to %s" % (filename[0], filename[-1])
            else:
                key = os.path.basename(filename[0])
        else:
            key = filename
            if key not in sps.getspeclist():
                qt.QMessageBox.critical(self,
                                    "SPS Error", 
                                    "No shared memory source named %s" % key)
                return
        ddict = {}
        ddict["event"] = "NewSourceSelected"
        if key in self.mapCombo.keys():
            if self.mapCombo[key] == filename:
                #Reloaded event
                ddict["event"] = "SourceReloaded"
            else:
                i = 0
                while key in self.mapCombo.keys():
                    key += "_%d" % i
        ddict["combokey"]   = key
        ddict["sourcelist"] = filename
        self.mapCombo[key] = filename
        if ddict["event"] =="NewSourceSelected":
            nitems = self.fileCombo.count()
            if QTVERSION < '4.0.0':
                self.fileCombo.insertItem(key)
                self.fileCombo.setCurrentItem(nitems)
            else:
                self.fileCombo.insertItem(nitems, key)
                self.fileCombo.setCurrentIndex(nitems)
        else:
            if hasattr(qt, "QString"):
                nitem = self.fileCombo.findText(qt.QString(key))
            else:
                nitem = self.fileCombo.findText(key)
            self.fileCombo.setCurrentIndex(nitem)
        if QTVERSION < '4.0.0':
            self.emit(qt.PYSIGNAL("SourceSelectorSignal"), (ddict,))        
        else:
            self.emit(qt.SIGNAL("SourceSelectorSignal"), ddict)
Example #18
0
def getFileList(parent=None,
                filetypelist=None,
                message=None,
                mode=None,
                getfilter=None,
                single=False,
                currentfilter=None):
    if filetypelist is None:
        fileTypeList = ['All Files (*)']
    else:
        fileTypeList = filetypelist
    if currentfilter is None:
        currentfilter = filetypelist[0]
    if message is None:
        if single:
            message = "Please select one file"
        else:
            message = "Please select one or more files"
    if mode is None:
        mode = "OPEN"
    else:
        mode = mode.upper()
    if mode == "OPEN":
        wdir = PyMcaDirs.inputDir
    else:
        wdir = PyMcaDirs.outputDir
    if getfilter is None:
        getfilter = False
    if getfilter:
        if QTVERSION < '4.5.1':
            native_possible = False
        else:
            native_possible = True
    else:
        native_possible = True
    filterused = None
    if native_possible and PyMcaDirs.nativeFileDialogs:
        filetypes = currentfilter + "\n"
        for filetype in fileTypeList:
            if filetype != currentfilter:
                filetypes += filetype + "\n"
        if getfilter:
            if mode == "OPEN":
                if single:
                    filelist, filterused = qt.QFileDialog.getOpenFileNameAndFilter(
                        parent, message, wdir, filetypes)
                    filelist = [filelist]
                else:
                    filelist, filterused = qt.QFileDialog.getOpenFileNamesAndFilter(
                        parent, message, wdir, filetypes)
                filterused = qt.safe_str(filterused)
            else:
                filelist = qt.QFileDialog.getSaveFileNameAndFilter(
                    parent, message, wdir, filetypes)
                if len(filelist[0]):
                    filterused = qt.safe_str(filelist[1])
                    filelist = [filelist[0]]
                else:
                    filelist = []
        else:
            if mode == "OPEN":
                if single:
                    filelist = [
                        qt.QFileDialog.getOpenFileName(parent, message, wdir,
                                                       filetypes)
                    ]
                else:
                    filelist = qt.QFileDialog.getOpenFileNames(
                        parent, message, wdir, filetypes)
            else:
                filelist = qt.QFileDialog.getSaveFileName(
                    parent, message, wdir, filetypes)
                filelist = qt.safe_str(filelist)
                if len(filelist):
                    filelist = [filelist]
                else:
                    filelist = []
        if not len(filelist):
            if getfilter:
                return [], filterused
            else:
                return []
        else:
            sample = qt.safe_str(filelist[0])
            for filetype in fileTypeList:
                ftype = filetype.replace("(", "")
                ftype = ftype.replace(")", "")
                extensions = ftype.split()[2:]
                for extension in extensions:
                    if sample.endswith(extension[-3:]):
                        filterused = filetype
                        break
    else:
        fdialog = qt.QFileDialog(parent)
        fdialog.setModal(True)
        fdialog.setWindowTitle(message)
        if hasattr(qt, "QStringList"):
            strlist = qt.QStringList()
        else:
            strlist = []
        strlist.append(currentfilter)
        for filetype in fileTypeList:
            if filetype != currentfilter:
                strlist.append(filetype)
        fdialog.setFilters(strlist)
        if mode == "OPEN":
            fdialog.setFileMode(fdialog.ExistingFiles)
        else:
            fdialog.setAcceptMode(fdialog.AcceptSave)
            fdialog.setFileMode(fdialog.AnyFile)

        fdialog.setDirectory(wdir)
        if QTVERSION > '4.3.0':
            history = fdialog.history()
            if len(history) > 6:
                fdialog.setHistory(history[-6:])
        ret = fdialog.exec_()
        if ret != qt.QDialog.Accepted:
            fdialog.close()
            del fdialog
            if getfilter:
                return [], filterused
            else:
                return []
        else:
            filelist = fdialog.selectedFiles()
            if single:
                filelist = [filelist[0]]
            filterused = qt.safe_str(fdialog.selectedFilter())
            if mode != "OPEN":
                if "." in filterused:
                    extension = filterused.replace(")", "")
                    if "(" in extension:
                        extension = extension.split("(")[-1]
                    extensionList = extension.split()
                    txt = qt.safe_str(filelist[0])
                    for extension in extensionList:
                        extension = extension.split(".")[-1]
                        if extension != "*":
                            txt = qt.safe_str(filelist[0])
                            if txt.endswith(extension):
                                break
                            else:
                                txt = txt + "." + extension
                    filelist[0] = txt
            fdialog.close()
            del fdialog
    filelist = [qt.safe_str(x) for x in filelist]
    if not (len(filelist)):
        return []
    if mode == "OPEN":
        PyMcaDirs.inputDir = os.path.dirname(filelist[0])
        if PyMcaDirs.outputDir is None:
            PyMcaDirs.outputDir = os.path.dirname(filelist[0])
    else:
        PyMcaDirs.outputDir = os.path.dirname(filelist[0])
        if PyMcaDirs.inputDir is None:
            PyMcaDirs.inputDir = os.path.dirname(filelist[0])
    #do not sort file list
    #filelist.sort()
    if getfilter:
        return filelist, filterused
    else:
        return filelist
Example #19
0
    def _getFileList(self, fileTypeList, message=None, getfilter=None):
        if message is None:
            message = "Please select a file"
        if getfilter is None:
            getfilter = False
        wdir = PyMcaDirs.inputDir
        filterused = None
        if QTVERSION < '4.0.0':
            if sys.platform != 'darwin':
                filetypes = ""
                for filetype in fileTypeList:
                    filetypes += filetype + "\n"
                filelist = qt.QFileDialog.getOpenFileNames(
                    filetypes, wdir, self.parent, message, message)
                if not len(filelist):
                    if getfilter:
                        return [], filterused
                    else:
                        return []
        else:
            #if (QTVERSION < '4.3.0') and (sys.platform != 'darwin'):
            if (PyMcaDirs.nativeFileDialogs) and (not getfilter):
                filetypes = ""
                for filetype in fileTypeList:
                    filetypes += filetype + "\n"
                filelist = qt.QFileDialog.getOpenFileNames(
                    self.parent, message, wdir, filetypes)
                if not len(filelist):
                    if getfilter:
                        return [], filterused
                    else:
                        return []
                else:
                    sample = qt.safe_str(filelist[0])
                    for filetype in fileTypeList:
                        ftype = filetype.replace("(", "")
                        ftype = ftype.replace(")", "")
                        extensions = ftype.split()[2:]
                        for extension in extensions:
                            if sample.endswith(extension[-3:]):
                                filterused = filetype
                                break
            else:
                fdialog = qt.QFileDialog(self.parent)
                fdialog.setModal(True)
                fdialog.setWindowTitle(message)
                if hasattr(qt, "QStringList"):
                    strlist = qt.QStringList()
                else:
                    strlist = []
                for filetype in fileTypeList:
                    strlist.append(filetype)
                fdialog.setFilters(strlist)
                fdialog.setFileMode(fdialog.ExistingFiles)
                fdialog.setDirectory(wdir)
                if QTVERSION > '4.3.0':
                    history = fdialog.history()
                    if len(history) > 6:
                        fdialog.setHistory(history[-6:])
                ret = fdialog.exec_()
                if ret == qt.QDialog.Accepted:
                    filelist = fdialog.selectedFiles()
                    if getfilter:
                        filterused = qt.safe_str(fdialog.selectedFilter())
                    fdialog.close()
                    del fdialog
                else:
                    fdialog.close()
                    del fdialog
                    if getfilter:
                        return [], filterused
                    else:
                        return []
        if sys.version < '3.0':
            try:
                filelist = [qt.safe_str(x) for x in filelist]
            except UnicodeEncodeError:
                filelist = [unicode(x) for x in filelist]
        if not (len(filelist)):
            return []
        PyMcaDirs.inputDir = os.path.dirname(filelist[0])
        if PyMcaDirs.outputDir is None:
            PyMcaDirs.outputDir = os.path.dirname(filelist[0])

        #This should not be there in order to allow the user other choices
        #filelist.sort()
        if getfilter:
            return filelist, filterused
        else:
            return filelist
    def saveClicked(self):
        outfile = qt.QFileDialog(self)
        outfile.setModal(1)
        if self.lastOutputDir is None:
            self.lastOutputDir = PyMcaDirs.outputDir

        outfile.setWindowTitle("Output File Selection")
        if hasattr(qt, "QStringList"):
            strlist = qt.QStringList()
        else:
            strlist = []
        format_list = []
        format_list.append('Graphics PNG *.png')
        format_list.append('Graphics EPS *.eps')
        format_list.append('Graphics SVG *.svg')
        for f in format_list:
            strlist.append(f)
        outfile.setFilters(strlist)

        outfile.setFileMode(outfile.AnyFile)
        outfile.setAcceptMode(qt.QFileDialog.AcceptSave)
        outfile.setDirectory(self.lastOutputDir)
        ret = outfile.exec_()
        if ret:
            filterused = qt.safe_str(outfile.selectedFilter()).split()
            filedescription = filterused[0]
            filetype  = filterused[1]
            extension = filterused[2]
            try:
                outstr = qt.safe_str(outfile.selectedFiles()[0])
            except:
                msg = qt.QMessageBox(self)
                msg.setIcon(qt.QMessageBox.Critical)
                msg.setText("Error saving image: %s" % sys.exc_info()[1])
                msg.setWindowTitle('Matplotlib Save Image')
                msg.exec_()
            try:            
                outputDir  = os.path.dirname(outstr)
                self.lastOutputDir = outputDir
                PyMcaDirs.outputDir = outputDir
            except:
                outputDir  = "."
            try:            
                outputFile = os.path.basename(outstr)
            except:
                outputFile  = outstr
            outfile.close()
            del outfile
        else:
            outfile.close()
            del outfile
            return
        #always overwrite for the time being
        if len(outputFile) < len(extension[1:]):
            outputFile += extension[1:]
        elif outputFile[-4:] != extension[1:]:
            outputFile += extension[1:]

        finalFile = os.path.join(outputDir, outputFile)
        if os.path.exists(finalFile):
            try:
                os.remove(finalFile)
            except:
                msg = qt.QMessageBox(self)
                msg.setIcon(qt.QMessageBox.Critical)
                msg.setText("Cannot overwrite file: %s" % sys.exc_info()[1])
                msg.setWindowTitle('Matplotlib Save Image')
                msg.exec_()
                return
        try:
            self.imageWidget.print_figure(finalFile,
                                          edgecolor='w',
                                          facecolor='w',
                                          format=finalFile[-3:],
                                          dpi=self.imageWidget.config['outputdpi'])
        except:
            print("WARNING: trying to save using obsolete method")
            config = self.imageWidget.getParameters()
            try:
                s=PyMcaMatplotlibSave.PyMcaMatplotlibSaveImage(self.imageWidget.imageData)
                if self.imageWidget.pixmapImage is not None:
                    s.setPixmapImage(self.imageWidget.pixmapImage)
                s.setParameters(config)
                s.saveImage(finalFile)
            except:
                msg = qt.QMessageBox(self)
                msg.setIcon(qt.QMessageBox.Critical)
                msg.setText("Error saving file: %s" % sys.exc_info()[1])
                msg.setWindowTitle('Matplotlib Save Image')
                msg.exec_()
Example #21
0
    def __savesignal(self):
        if self.lastInputDir is None:
            self.lastInputDir = PyMcaDirs.outputDir
        if self.lastInputDir is not None:
            if not os.path.exists(self.lastInputDir):
                self.lastInputDir = None
        self.lastInputFilter = "Calibration files (*.calib)\n"
        if sys.platform == "win32":
            windir = self.lastInputDir
            if windir is None: windir = ""
            if qt.qVersion() < '4.0.0':
                filename = qt.safe_str(
                    qt.QFileDialog.getSaveFileName(
                        windir, self.lastInputFilter, self, "Save File",
                        "Save a new calibration file"))
            else:
                filename = qt.safe_str(
                    qt.QFileDialog.getSaveFileName(
                        self, "Save a new calibration file", windir,
                        self.lastInputFilter))
        else:
            if QTVERSION < '4.0.0':
                filename = qt.QFileDialog(self, "Save a new calibration file",
                                          1)
                filename.setFilters(self.lastInputFilter)
                if self.lastInputDir is not None:
                    filename.setDir(self.lastInputDir)
                filename.setMode(qt.QFileDialog.AnyFile)
                if filename.exec_loop() == qt.QDialog.Accepted:
                    #selectedfilter = qt.safe_str(filename.selectedFilter())
                    filename = qt.safe_str(filename.selectedFile())
                    #print selectedfilter
                else:
                    return
            else:
                windir = self.lastInputDir
                if windir is None: windir = os.getcwd()
                filename = qt.QFileDialog(self)
                filename.setWindowTitle("Save a new calibration file")
                filename.setModal(1)
                if hasattr(qt, "QStringList"):
                    strlist = qt.QStringList()
                else:
                    strlist = []
                tmp = [self.lastInputFilter.replace("\n", "")]
                for filetype in tmp:
                    strlist.append(filetype.replace("(", "").replace(")", ""))
                filename.setFilters(strlist)
                filename.setFileMode(qt.QFileDialog.AnyFile)
                filename.setDirectory(windir)
                ret = filename.exec_()
                if ret:
                    if len(filename.selectedFiles()):
                        filename = qt.safe_str(filename.selectedFiles()[0])
                    else:
                        return
                else:
                    return

        if not len(filename): return
        if len(filename) < 6:
            filename = filename + ".calib"
        elif filename[-6:] != ".calib":
            filename = filename + ".calib"
        self.lastInputDir = os.path.dirname(filename)
        PyMcaDirs.outputDir = os.path.dirname(filename)
        comboitem, combotext = self.calbox.getcurrent()
        self.__emitpysignal(button="CalibrationSave",
                            box=[comboitem, combotext],
                            line_edit=filename,
                            event='clicked')