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_()
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_()
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)
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)
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)
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)
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_()
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()
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)
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)
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
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)
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
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
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)
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)
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
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_()
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')