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 getfilter: filelist, filterused = PyMcaFileDialogs.getFileList(self.parent, filetypelist=fileTypeList, mode="OPEN", message=message, currentdir=wdir, getfilter=True, single=False, native=True) else: filelist = PyMcaFileDialogs.getFileList(self.parent, filetypelist=fileTypeList, mode="OPEN", message=message, currentdir=wdir, getfilter=False, single=False, native=True) if not(len(filelist)): return [] PyMcaDirs.inputDir = os.path.dirname(filelist[0]) if PyMcaDirs.outputDir is None: PyMcaDirs.outputDir = os.path.dirname(filelist[0]) if getfilter: return filelist, filterused else: return filelist
def browseFitConfiguration(self): if self._inputDir is None: self._inputDir = PyMcaDirs.inputDir elif os.path.exists(self._inputDir): PyMcaDirs.inputDir = self._inputDir filetypes = ["Configuration Files (*.cfg)"] if self._inputDir is None: self._inputDir = PyMcaDirs.inputDir elif os.path.exists(self._inputDir): PyMcaDirs.inputDir = self._inputDir message = "Select a Simple Fit Configuration File" mode = "OPEN" getfilter = False currentfilter = None #self._lastInputFileFilter fileList = PyMcaFileDialogs.getFileList(self, filetypelist=filetypes, message=message, mode=mode, getfilter=getfilter, single=True, currentfilter=currentfilter) if not len(fileList): return self._inputDir = os.path.dirname(fileList[0]) self.setFitConfigurationFile(fileList[0]) self.raise_()
def _getOutputTiffFilename(self): fileTypes = "TIFF Files (*.tif *.tiff *.TIF *.TIFF)" message = "Enter output filename" wdir = PyMcaDirs.outputDir filename = PyMcaFileDialogs.getFileList(self, message=message, mode="SAVE", currentdir=wdir, filetypelist=[fileTypes], getfilter=False, single=True) if len(filename): filename = filename[0] if len(filename): try: fname = qt.safe_str(filename) if fname.endswith('.tif') or\ fname.endswith('.tiff') or\ fname.endswith('.TIF') or\ fname.endswith('.TIFF'): return fname else: return fname + ".tif" except UnicodeEncodeError: msg = qt.QMessageBox(self) msg.setWindowTitle("Encoding error") msg.setIcon(qt.QMessageBox.Critical) msg.setText("Please use ASCII characters in file name and path") msg.exec_() return ""
def _getOutputTiffFilename(self): fileTypes = "TIFF Files (*.tif *.tiff *.TIF *.TIFF)" message = "Enter output filename" wdir = PyMcaDirs.outputDir filename = PyMcaFileDialogs.getFileList(self, message=message, mode="SAVE", currentdir=wdir, filetypelist=[fileTypes], getfilter=False, single=True) if len(filename): filename = filename[0] if len(filename): try: fname = qt.safe_str(filename) if fname.endswith('.tif') or\ fname.endswith('.tiff') or\ fname.endswith('.TIF') or\ fname.endswith('.TIFF'): return fname else: return fname + ".tif" except UnicodeEncodeError: msg = qt.QMessageBox(self) msg.setWindowTitle("Encoding error") msg.setIcon(qt.QMessageBox.Critical) msg.setText( "Please use ASCII characters in file name and path") msg.exec_() return ""
def _loadSlot(self): if self.inputDir is None: if self.inputDir is not None: self.inputDir = self.outputDir else: self.inputDir = PyMcaDirs.inputDir wdir = self.inputDir if not os.path.exists(wdir): wdir = os.getcwd() filename = PyMcaFileDialogs.getFileList(self, filetypelist=["Transmission table files (*.csv)", "Transmission table files (*)"], mode="OPEN", message="Choose 2-column transmission table file", currentdir=wdir, single=True) if len(filename): filename = qt.safe_str(filename[0]) if len(filename): try: self.loadTransmissionTable(filename) self.inputDir = os.path.dirname(filename) PyMcaDirs.inputDir = self.inputDir except: msg = qt.QMessageBox(self) msg.setIcon(qt.QMessageBox.Critical) msg.setText("Error transmission table: %s" % (sys.exc_info()[1])) msg.exec() return
def loadButtonClicked(self): if self.inputDir is None: if self.inputDir is not None: self.inputDir = self.outputDir else: self.inputDir = PyMcaDirs.inputDir wdir = self.inputDir if not os.path.exists(wdir): wdir = os.getcwd() filename = PyMcaFileDialogs.getFileList( self, filetypelist=["Energy table files (*.csv)"], mode="OPEN", message="Choose energy table file", currentdir=wdir, single=True) if len(filename): filename = qt.safe_str(filename[0]) if len(filename): try: self.loadEnergyTableParameters(filename) self.inputDir = os.path.dirname(filename) PyMcaDirs.inputDir = self.inputDir except: msg = qt.QMessageBox(self) msg.setIcon(qt.QMessageBox.Critical) msg.setText("Error loading energy table: %s" % (sys.exc_info()[1])) msg.exec_()
def loadButtonClicked(self): if self.inputDir is None: if self.inputDir is not None: self.inputDir = self.outputDir else: self.inputDir = PyMcaDirs.inputDir wdir = self.inputDir if not os.path.exists(wdir): wdir = os.getcwd() filename = PyMcaFileDialogs.getFileList(self, filetypelist=["Energy table files (*.csv)"], mode="OPEN", message="Choose energy table file", currentdir=wdir, single=True) if len(filename): filename = qt.safe_str(filename[0]) if len(filename): try: self.loadEnergyTableParameters(filename) self.inputDir = os.path.dirname(filename) PyMcaDirs.inputDir = self.inputDir except: msg = qt.QMessageBox(self) msg.setIcon(qt.QMessageBox.Critical) msg.setText("Error loading energy table: %s" % (sys.exc_info()[1])) msg.exec_()
def saveSignal(self): fileList = PyMcaFileDialogs.getFileList(self, filetypelist=['cfg file (*.cfg)'], mode="SAVE", single=True, getfilter=False) if len(fileList): self.saveConfiguration(fileList[0])
def browseConfigurationFile(self): f = PyMcaFileDialogs.getFileList(parent=self, filetypelist=["Configuration files (*.cfg)"], message="Open a fit configuration file", mode="OPEN", single=True) if len(f): self._configLine.setText(f[0])
def saveImage(self): filelist = PyMcaFileDialogs.getFileList( parent=self, filetypelist=["Image files (*.png)"], message="Please give output file name", mode="SAVE", getfilter=False) if len(filelist): self.glWidget.saveImage(filelist[0])
def _saveSlot(self): if self.outputDir is None: if self.inputDir is not None: self.outputDir = self.inputDir else: self.outputDir = PyMcaDirs.outputDir wdir = self.outputDir format_list = ['";"-separated CSV *.csv', '","-separated CSV *.csv', '"tab"-separated CSV *.csv'] if self.outputFilter is None: self.outputFilter = format_list[0] outfile, filterused = PyMcaFileDialogs.getFileList(self, filetypelist=format_list, mode="SAVE", message="Output File Selection", currentdir=wdir, currentfilter=self.outputFilter, getfilter=True, single=True) if len(outfile): outputFile = qt.safe_str(outfile[0]) else: return self.outputFilter = qt.safe_str(filterused) filterused = self.outputFilter.split() try: self.outputDir = os.path.dirname(outputFile) PyMcaDirs.outputDir = os.path.dirname(outputFile) except: self.outputDir = "." if not outputFile.endswith('.csv'): outputFile += '.csv' #always overwrite if "," in filterused[0]: csv = "," elif ";" in filterused[0]: csv = ";" else: csv = "\t" ddict = self.getTransmissionTable() x = ddict["energy"] y = ddict["transmission"] try: ArraySave.saveXY(x, y, outputFile, xlabel="Energy", ylabel="Transmission", csv=True, csvseparator=csv) except IOError: msg = qt.QMessageBox(self) msg.setIcon(qt.QMessageBox.Critical) msg.setText("Input Output Error: %s" % (sys.exc_info()[1])) msg.exec() return
def load(self): fileList = PyMcaFileDialogs.getFileList(parent=self, filetypelist=["Fit files (*.cfg)"], message="Select a fit configuration file", mode="OPEN", getfilter=False, single=True) if len(fileList): d = ConfigDict.ConfigDict() d.read(fileList[0]) self.setParameters(d)
def browseFile(self): filelist = PyMcaFileDialogs.getFileList(self, filetypelist=['HDF5 files (*.h5)'], message="Please enter output file", mode="SAVE", single=True) if len(filelist): name = filelist[0] if not name.endswith('.h5'): name = name + ".h5" self.fileName.setText(name)
def getObject3DInstance(config=None): #for the time being a former configuration #for serializing purposes is not implemented #I do the import here for the case PyMca is not installed #because the modules could be instanstiated without using #this method try: from PyMca5.PyMcaIO import EDFStack from PyMca5.PyMcaIO import TiffStack except ImportError: import EDFStack import TiffStack fileTypeList = [ 'EDF Z Stack (*edf *ccd)', 'EDF X Stack (*edf *ccd)', 'TIFF Stack (*tif *tiff)' ] old = PyMcaFileDialogs.PyMcaDirs.nativeFileDialogs * 1 PyMcaFileDialogs.PyMcaDirs.nativeFileDialogs = False fileList, filterUsed = PyMcaFileDialogs.getFileList( parent=None, filetypelist=fileTypeList, message="Please select the object file(s)", mode="OPEN", getfilter=True) PyMcaFileDialogs.PyMcaDirs.nativeFileDialogs = old if not len(fileList): return None if filterUsed == fileTypeList[0]: fileindex = 2 else: fileindex = 1 #file index is irrelevant in case of an actual 3D stack. filename = fileList[0] legend = os.path.basename(filename) if filterUsed == fileTypeList[2]: #TIFF stack = TiffStack.TiffStack(dtype=numpy.float32, imagestack=False) stack.loadFileList(fileList, fileindex=1) elif len(fileList) == 1: stack = EDFStack.EDFStack(dtype=numpy.float32, imagestack=False) stack.loadIndexedStack(filename, fileindex=fileindex) else: stack = EDFStack.EDFStack(dtype=numpy.float32, imagestack=False) stack.loadFileList(fileList, fileindex=fileindex) if stack is None: raise IOError("Problem reading stack.") object3D = Object3DStack(name=legend) object3D.setStack(stack) return object3D
def _loadImageFiles(self): fileTypeList = ["PNG Files (*png)", "JPEG Files (*jpg *jpeg)", "IMAGE Files (*)", "DAT Files (*dat)", "CSV Files (*csv)", "EDF Files (*edf)", "EDF Files (*ccd)", "EDF Files (*)", 'HDF5 Files (*.h5 *.nxs *.hdf *.hdf5)'] filenamelist, filefilter = PyMcaFileDialogs.getFileList(parent=None, filetypelist=fileTypeList, message="Open image file", getfilter=True, single=False, currentfilter=None) if not filenamelist: return filefilter = filefilter.split()[0].lower() extension = qt.safe_str(os.path.splitext(filenamelist[0])[1]).lower() if (filefilter in ["edf"]) or \ (extension in [".edf", ".tif"]): imagenames, imagelist = self._readImageListEdf(filenamelist) if imagenames: try: self._createStackPluginWindowEdf(imagenames, imagelist) except AttributeError: self._createStackPluginWindow(imagenames, imagelist) elif (filefilter in ["hdf5"]) or \ (extension in [".h5", ".nxs", ".hdf", ".hdf5"]): imagenames, imagelist = self._readImageListHdf5(filenamelist) if imagenames: try: self._createStackPluginWindowHdf5(imagenames, imagelist) except AttributeError: self._createStackPluginWindow(imagenames, imagelist) elif extension in [".csv", ".dat"]: imagenames, imagelist = self._readImageListSpec(filenamelist) if imagenames: try: self._createStackPluginWindowSpec(imagenames, imagelist) except AttributeError: self._createStackPluginWindow(imagenames, imagelist) else: imagenames, imagelist = self._readImageListQImageReadable(filenamelist) if imagenames: try: self._createStackPluginWindowQImage(imagenames, imagelist) except AttributeError: self._createStackPluginWindow(imagenames, imagelist)
def getObject3DInstance(config=None): #for the time being a former configuration #for serializing purposes is not implemented #I do the import here for the case PyMca is not installed #because the modules could be instanstiated without using #this method try: from PyMca5.PyMcaIO import EDFStack from PyMca5.PyMcaIO import TiffStack except ImportError: import EDFStack import TiffStack fileTypeList = ['EDF Z Stack (*edf *ccd)', 'EDF X Stack (*edf *ccd)', 'TIFF Stack (*tif *tiff)'] old = PyMcaFileDialogs.PyMcaDirs.nativeFileDialogs * 1 PyMcaFileDialogs.PyMcaDirs.nativeFileDialogs = False fileList, filterUsed = PyMcaFileDialogs.getFileList( parent=None, filetypelist=fileTypeList, message="Please select the object file(s)", mode="OPEN", getfilter=True) PyMcaFileDialogs.PyMcaDirs.nativeFileDialogs = old if not len(fileList): return None if filterUsed == fileTypeList[0]: fileindex = 2 else: fileindex = 1 #file index is irrelevant in case of an actual 3D stack. filename = fileList[0] legend = os.path.basename(filename) if filterUsed == fileTypeList[2]: #TIFF stack = TiffStack.TiffStack(dtype=numpy.float32, imagestack=False) stack.loadFileList(fileList, fileindex=1) elif len(fileList) == 1: stack = EDFStack.EDFStack(dtype=numpy.float32, imagestack=False) stack.loadIndexedStack(filename, fileindex=fileindex) else: stack = EDFStack.EDFStack(dtype=numpy.float32, imagestack=False) stack.loadFileList(fileList, fileindex=fileindex) if stack is None: raise IOError("Problem reading stack.") object3D = Object3DStack(name=legend) object3D.setStack(stack) return object3D
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 getfilter: filelist, filterused = PyMcaFileDialogs.getFileList( self.parent, filetypelist=fileTypeList, mode="OPEN", message=message, currentdir=wdir, getfilter=True, single=False, native=True) else: filelist = PyMcaFileDialogs.getFileList(self.parent, filetypelist=fileTypeList, mode="OPEN", message=message, currentdir=wdir, getfilter=False, single=False, native=True) if not (len(filelist)): return [] PyMcaDirs.inputDir = os.path.dirname(filelist[0]) if PyMcaDirs.outputDir is None: PyMcaDirs.outputDir = os.path.dirname(filelist[0]) if getfilter: return filelist, filterused else: return filelist
def saveParameters(self, fname=None): if fname is None: fname = PyMcaFileDialogs.getFileList(self, filetypelist=["Configuration (*.ini)", "Configuration (*.cfg)"], message="Please enter output file name", mode="SAVE", getfilter=False, single=True) if len(fname): fname = fname[0] else: return ddict = ConfigDict.ConfigDict() ddict["XASParameters"] = self.getParameters() ddict.write(fname)
def loadParameters(self, fname=None): if fname is None: fname = PyMcaFileDialogs.getFileList(self, filetypelist=["Configuration (*.ini)", "Configuration (*.cfg)", "All files (*)"], message="Please set input file name", mode="OPEN", getfilter=False, single=True) if len(fname): fname = fname[0] else: return d = ConfigDict.ConfigDict() d.read(fname) self.setParameters(d["XASParameters"])
def browseOutputDirectory(self): if self._outputDir is None: self._outputDir = PyMcaDirs.outputDir elif os.path.exists(self._outputDir): PyMcaDirs.inputDir = self._outputDir message = "Select a Simple Fit Configuration File" mode = "OPEN" fileList = PyMcaFileDialogs.getExistingDirectory(self, message=message, mode=mode) if not len(fileList): return if type(fileList) != type([]): fileList = [fileList] self._outputDir = os.path.dirname(fileList[0]) self.setOutputDirectory(fileList[0]) self.raise_()
def funevent(self, item): item = str(item) if item in self.specfit.theorylist: self.specfit.settheory(item) else: filelist = PyMcaFileDialogs.getFileList( self, message="Select python module with your function(s)", filetypelist=["Python Files (*.py)", "All Files (*)"], mode="OPEN", single=True, getfilter=False) if not len(filelist): functionsfile = "" else: functionsfile = filelist[0] 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 getObject3DInstance(config=None): fileTypeList = [ 'Picture Files (*jpg *jpeg *tif *tiff *png)', 'EDF Files (*edf)', 'EDF Files (*ccd)', 'ADSC Files (*img)', 'EDF Files (*)' ] fileList, filterUsed = PyMcaFileDialogs.getFileList( parent=None, filetypelist=fileTypeList, message="Please select one object data file", mode="OPEN", getfilter=True) if not len(fileList): return fname = fileList[0] if filterUsed.split()[0] == "Picture": qimage = qt.QImage(fname) if qimage.isNull(): msg = qt.QMessageBox(self) msg.setIcon(qt.QMessageBox.Critical) msg.setText("Cannot read file %s as an image" % fname) msg.exec_() return object3D = Object3DPixmap(os.path.basename(fname)) object3D.setQImage(qimage) return object3D if filterUsed.split()[0] in ["EDF", "ADSC"]: edf = EdfFile.EdfFile(fname) data = edf.GetData(0) if True: object3D = Object3DPixmap(os.path.basename(fname)) object3D.setImageData(data) else: (image, size, minmax) = spslut.transform(data, (1, 0), (spslut.LINEAR, 3.0), "RGBX", spslut.TEMP, 1, (0, 1), (0, 255), 1) object3D = Object3DPixmap(os.path.basename(fname)) object3D.setPixmap(image, size[0], size[1], xmirror=False, ymirror=False) return object3D return None
def browseList(self): if self._inputDir is None: self._inputDir = PyMcaDirs.inputDir elif os.path.exists(self._inputDir): PyMcaDirs.inputDir = self._inputDir filetypes = ["Mca Files (*.mca)", "Edf Files (*.edf)"] if HDF5SUPPORT: filetypes.append("HDF5 Files(*.nxs *.h5 *.hdf)") filetypes.append("SPEC Files (*.spec)") filetypes.append("SPEC Files (*.dat)") filetypes.append("All files (*)") message = "Open a set of files" mode = "OPEN" getfilter = True currentfilter = self._lastInputFileFilter fileList, fileFilter = PyMcaFileDialogs.getFileList( self, filetypelist=filetypes, message=message, mode=mode, getfilter=getfilter, single=False, currentfilter=currentfilter) if not len(fileList): return else: self._lastInputFileFilter = fileFilter self._inputDir = os.path.dirname(fileList[0]) if (QTVERSION < '4.2.0') or (not len(self._fileList)): self.setFileList(fileList) self.raise_() return msg = qt.QMessageBox() msg.setWindowTitle("Append or replace") msg.setIcon(qt.QMessageBox.Information) msg.setText("Do you want to delete current file list?") msg.setStandardButtons(qt.QMessageBox.Yes | qt.QMessageBox.No) answer = msg.exec() if answer == qt.QMessageBox.Yes: append = False else: append = True self.setFileList(fileList, append=append) self.raise_()
def funevent(self,item): item=str(item) if item in self.specfit.theorylist: self.specfit.settheory(item) else: filelist = PyMcaFileDialogs.getFileList(self, message="Select python module with your function(s)", filetypelist=["Python Files (*.py)", "All Files (*)"], mode="OPEN", single=True, getfilter=False) if not len(filelist): functionsfile = "" else: functionsfile = filelist[0] 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 browseList(self): if self._inputDir is None: self._inputDir = PyMcaDirs.inputDir elif os.path.exists(self._inputDir): PyMcaDirs.inputDir = self._inputDir filetypes = ["Mca Files (*.mca)", "Edf Files (*.edf)"] if HDF5SUPPORT: filetypes.append("HDF5 Files(*.nxs *.h5 *.hdf)") filetypes.append("SPEC Files (*.spec)") filetypes.append("SPEC Files (*.dat)") filetypes.append("All files (*)") message = "Open a set of files" mode = "OPEN" getfilter = True currentfilter = self._lastInputFileFilter fileList, fileFilter = PyMcaFileDialogs.getFileList(self, filetypelist=filetypes, message=message, mode=mode, getfilter=getfilter, single=False, currentfilter=currentfilter) if not len(fileList): return else: self._lastInputFileFilter = fileFilter self._inputDir = os.path.dirname(fileList[0]) if (QTVERSION < '4.2.0') or (not len(self._fileList)): self.setFileList(fileList) self.raise_() return msg = qt.QMessageBox() msg.setWindowTitle("Append or replace") msg.setIcon(qt.QMessageBox.Information) msg.setText("Do you want to delete current file list?") msg.setStandardButtons(qt.QMessageBox.Yes|qt.QMessageBox.No) answer=msg.exec_() if answer == qt.QMessageBox.Yes: append = False else: append = True self.setFileList(fileList, append=append) self.raise_()
def getObject3DInstance(config=None): fileTypeList = ['Picture Files (*jpg *jpeg *tif *tiff *png)', 'EDF Files (*edf)', 'EDF Files (*ccd)', 'ADSC Files (*img)', 'EDF Files (*)'] fileList, filterUsed = PyMcaFileDialogs.getFileList( parent=None, filetypelist=fileTypeList, message="Please select one object data file", mode="OPEN", getfilter=True) if not len(fileList): return fname = fileList[0] if filterUsed.split()[0] == "Picture": qimage = qt.QImage(fname) if qimage.isNull(): msg = qt.QMessageBox(self) msg.setIcon(qt.QMessageBox.Critical) msg.setText("Cannot read file %s as an image" % fname) msg.exec_() return object3D = Object3DPixmap(os.path.basename(fname)) object3D.setQImage(qimage) return object3D if filterUsed.split()[0] in ["EDF", "ADSC"]: edf = EdfFile.EdfFile(fname) data = edf.GetData(0) if True: object3D = Object3DPixmap(os.path.basename(fname)) object3D.setImageData(data) else: (image,size,minmax)= spslut.transform(data, (1,0), (spslut.LINEAR,3.0), "RGBX", spslut.TEMP, 1, (0, 1), (0, 255), 1) object3D = Object3DPixmap(os.path.basename(fname)) object3D.setPixmap(image, size[0], size[1], xmirror = False, ymirror = False) return object3D return None
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" filelist = PyMcaFileDialogs.getFileList(parent=self, filetypelist=fileTypeList, message=message, currentdir=wdir, mode="OPEN", single=False) if filelist: PyMcaDirs.inputDir = os.path.dirname(filelist[0]) return filelist else: return []
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" filelist = PyMcaFileDialogs.getFileList(parent=self, filetypelist=fileTypeList, message=message, currentdir=wdir, mode="OPEN", single=False) if not len(filelist): return [] PyMcaDirs.inputDir = os.path.dirname(filelist[0]) return filelist
def replace1DAxisWithASCII(self): stack = self.getStackDataObject() mcaIndex = stack.info.get('McaIndex', -1) nPoints = stack.data.shape[mcaIndex] fileList = PyMcaFileDialogs.getFileList(None, filetypelist=["ASCII files (*)"], message="Select ASCII file", mode="OPEN", getfilter=False, single=True) if not len(fileList): return filename = fileList[0] data = numpy.loadtxt(filename) data.shape = -1 if data.size != nPoints: raise ValueError("Number of read values not equal to %d" % nPoints) else: stack.x = [data] self.setStack(stack, mcaindex=mcaIndex)
def getObject3DInstance(config=None): #for the time being a former configuration #for serializing purposes is not implemented #I do the import here for the case PyMca is not installed #because the modules could be instanstiated without using #this method try: from PyMca5.PyMcaIO import EdfFile except ImportError: import EdfFile fileTypeList = ['EDF Files (*edf)', 'EDF Files (*ccd)', 'ADSC Files (*img)', 'All Files (*)'] old = PyMcaFileDialogs.PyMcaDirs.nativeFileDialogs * 1 PyMcaFileDialogs.PyMcaDirs.nativeFileDialogs = False fileList, filterUsed = PyMcaFileDialogs.getFileList( parent=None, filetypelist=fileTypeList, message="Please select one object data file", mode="OPEN", getfilter=True) PyMcaFileDialogs.PyMcaDirs.nativeFileDialogs = old if not len(fileList): return None if filterUsed == fileTypeList[0]: fileindex = 2 else: fileindex = 1 #file index is irrelevant in case of an actual 3D stack. filename = fileList[0] legend = os.path.basename(filename) edf = EdfFile.EdfFile(filename, access='rb') data = edf.GetData(0).astype(numpy.float32) object3D = Object3DMesh(os.path.basename(filename)) object3D.setData(data, z=data[:]) return object3D
def getObject3DInstance(config=None): #for the time being a former configuration #for serializing purposes is not implemented #I do the import here for the case PyMca is not installed #because the modules could be instanstiated without using #this method try: from PyMca5.PyMcaIO import EDFStack except ImportError: import EDFStack fileTypeList = ['Chimera Stack (*cmp)', 'Chimera Stack (*)'] old = PyMcaFileDialogs.PyMcaDirs.nativeFileDialogs * 1 #PyMcaFileDialogs.PyMcaDirs.nativeFileDialogs = False fileList, filterUsed = PyMcaFileDialogs.getFileList( parent=None, filetypelist=fileTypeList, message="Please select the object file(s)", mode="OPEN", getfilter=True) PyMcaFileDialogs.PyMcaDirs.nativeFileDialogs = old if not len(fileList): return None if filterUsed == fileTypeList[0]: fileindex = 2 else: fileindex = 1 #file index is irrelevant in case of an actual 3D stack. filename = fileList[0] legend = os.path.basename(filename) f = h5py.File(filename) stack = f['Image']['data'].value f = None if stack is None: raise IOError("Problem reading stack.") object3D = ChimeraStack(name=legend) object3D.setStack(stack) return object3D
def browseOutputDir(self): f = PyMcaFileDialogs.getExistingDirectory( parent=self, message="Please select output directory", mode="OPEN") if len(f): self._outLine.setText(f)
def saveButtonClicked(self): energylist, weightlist, flaglist, scatterlist = self.table.getParameters() if self.outputDir is None: if self.inputDir is not None: self.outputDir = self.inputDir else: self.outputDir = PyMcaDirs.outputDir wdir = self.outputDir format_list = ['";"-separated CSV *.csv', '","-separated CSV *.csv', '"tab"-separated CSV *.csv'] if self.outputFilter is None: self.outputFilter = format_list[0] outfile, filterused = PyMcaFileDialogs.getFileList(self, filetypelist=format_list, mode="SAVE", message="Output File Selection", currentdir=wdir, currentfilter=self.outputFilter, getfilter=True, single=True) if len(outfile): outputFile = qt.safe_str(outfile[0]) else: return self.outputFilter = qt.safe_str(filterused) filterused = self.outputFilter.split() try: self.outputDir = os.path.dirname(outputFile) PyMcaDirs.outputDir = os.path.dirname(outputFile) except: self.outputDir = "." if not outputFile.endswith('.csv'): outputFile += '.csv' #always overwrite if os.path.exists(outputFile): os.remove(outputFile) try: if sys.version < "3.0.0": ffile=open(outputFile,'wb') else: ffile=open(outputFile,'w') except IOError: msg = qt.QMessageBox(self) msg.setIcon(qt.QMessageBox.Critical) msg.setText("Input Output Error: %s" % (sys.exc_info()[1])) msg.exec_() return if "," in filterused[0]: csv = "," elif ";" in filterused[0]: csv = ";" else: csv = "\t" ffile.write('"energy"%s"weight"%s"flag"%s"scatter"\n' % (csv, csv, csv)) #write the scatter lines in first instance alreadysaved = [] for i in range(len(energylist)): if (energylist[i] is not None) and \ (scatterlist[i] == 1): ffile.write("%f%s%f%s%d%s%d\n" % \ (energylist[i], csv, weightlist[i], csv, flaglist[i], csv, scatterlist[i])) alreadysaved.append(i) for i in range(len(energylist)): if energylist[i] is not None: if i not in alreadysaved: ffile.write("%f%s%f%s%d%s%d\n" % \ (energylist[i], csv, weightlist[i], csv, flaglist[i], csv, scatterlist[i])) ffile.close()
def _loadImageFiles(self): if self.getStackDataObject() is None: return getfilter = True fileTypeList = [ "PNG Files (*png)", "JPEG Files (*jpg *jpeg)", "IMAGE Files (*)", "EDF Files (*edf)", "EDF Files (*ccd)", "EDF Files (*)", ] message = "Open image file" filenamelist, filefilter = PyMcaFileDialogs.getFileList( parent=None, filetypelist=fileTypeList, message=message, getfilter=getfilter, single=False, currentfilter=None, ) if len(filenamelist) < 1: return imagelist = [] imagenames = [] mask = self.getStackSelectionMask() if mask is None: r, n = self.getStackROIImagesAndNames() shape = r[0].shape else: shape = mask.shape if filefilter.split()[0] in ["EDF"]: for filename in filenamelist: # read the edf file edf = EDFStack.EdfFileDataSource.EdfFileDataSource(filename) # the list of images keylist = edf.getSourceInfo()["KeyList"] if len(keylist) < 1: msg = qt.QMessageBox(None) msg.setIcon(qt.QMessageBox.Critical) msg.setText("Cannot read image from file") msg.exec_() return for key in keylist: # get the data dataObject = edf.getDataObject(key) data = dataObject.data if data.shape[0] not in shape: continue if data.shape[1] not in shape: continue imagename = dataObject.info.get("Title", "") if imagename != "": imagename += " " imagename += os.path.basename(filename) + " " + key imagelist.append(data) imagenames.append(imagename) if len(imagelist) == 0: msg = qt.QMessageBox(None) msg.setIcon(qt.QMessageBox.Critical) msg.setText("Cannot read a valid image from the file") msg.exec_() return crop = False self.widget = StackPluginResultsWindow.StackPluginResultsWindow(parent=None, usetab=False) self.widget.buildAndConnectImageButtonBox() self.widget.sigMaskImageWidgetSignal.connect(self.mySlot) self.widget.setStackPluginResults(imagelist, image_names=imagenames) self._showWidget() return else: # Try pure Image formats for filename in filenamelist: image = qt.QImage(filename) if image.isNull(): msg = qt.QMessageBox(self) msg.setIcon(qt.QMessageBox.Critical) msg.setText("Cannot read file %s as an image" % filename) msg.exec_() return imagelist.append(image) imagenames.append(os.path.basename(filename)) if len(imagelist) == 0: msg = qt.QMessageBox(None) msg.setIcon(qt.QMessageBox.Critical) msg.setText("Cannot read a valid image from the file") msg.exec_() return self.widget = ExternalImagesWindow.ExternalImagesWindow( parent=None, rgbwidget=None, selection=True, colormap=True, imageicons=True, standalonesave=True ) self.widget.buildAndConnectImageButtonBox() self.widget.sigMaskImageWidgetSignal.connect(self.mySlot) self.widget.setImageData(None) self.widget.setQImageList(imagelist, shape[1], shape[0], clearmask=False, data=None, imagenames=imagenames) # data=self.__stackImageData) self._showWidget() return
def _shiftFromFile(self): stack = self.getStackDataObject() if stack is None: return data = stack.data mcaIndex = stack.info.get("McaIndex") if not (mcaIndex in [0, -1, 2]): raise IndexError("1D index must be 0, 2, or -1") filefilter = ["HDF5 Files (*.h5 *.nxs *.hdf)", "CSV 2-column (*.csv)", "ASCII 2-column (*)"] filename, ffilter = PyMcaFileDialogs.getFileList( parent=None, filetypelist=filefilter, message="Load", mode="OPEN", single=True, getfilter=True, currentfilter=filefilter[0], ) if len(filename): if DEBUG: print("file name = %s file filter = %s" % (filename, ffilter)) else: if DEBUG: print("nothing selected") return filename = filename[0] if ffilter.startswith("HDF5"): # browse self.__hdf5Dialog = qt.QDialog() self.__hdf5Dialog.setWindowTitle("Select your data set by a double click") self.__hdf5Dialog.mainLayout = qt.QVBoxLayout(self.__hdf5Dialog) self.__hdf5Dialog.mainLayout.setContentsMargins(0, 0, 0, 0) self.__hdf5Dialog.mainLayout.setSpacing(0) fileModel = HDF5Widget.FileModel() fileView = HDF5Widget.HDF5Widget(fileModel) hdf5File = fileModel.openFile(filename) shiftsDataset = None fileView.sigHDF5WidgetSignal.connect(self._hdf5WidgetSlot) self.__hdf5Dialog.mainLayout.addWidget(fileView) self.__hdf5Dialog.resize(400, 200) ret = self.__hdf5Dialog.exec_() if not ret: return shifts = hdf5File[self.__shitfsDataset].value hdf5File.close() else: sf = specfilewrapper.Specfile(filename) nScans = len(sf) targetScan = None for scan in sf: if scan.lines() == data.shape[stack.info["McaIndex"]]: targetScan = scan break if targetScan is None: scan = None sf = None raise IOError("Number of read lines does not match stack shape") shifts = targetScan.data() targetScan = None scan = None sf = None if shifts.shape[0] == 3 and shifts.shape[1] == data.shape[stack.info["McaIndex"]]: # one column was added (point number) shifts = shifts[1:].T filename = None if not isinstance(data, numpy.ndarray): filefilter = ["HDF5 Files (*.h5)"] filename = PyMcaFileDialogs.getFileList( parent=None, filetypelist=filefilter, message="Select output file", mode="SAVE", single=True, getfilter=False, currentfilter=filefilter[0], ) if len(filename): filename = filename[0] if DEBUG: print("file name = %s" % filename) else: raise IOError("No output file selected") if filename is not None: self.__hdf5 = self.initializeHDF5File(filename) crop = False if DEBUG: result = self.shiftStack(stack, shifts, crop=crop, filename=filename) else: result = self.__shiftStack(stack, shifts, crop=crop, filename=filename) if result is not None: # exception occurred raise Exception(result[1], result[2], result[3]) if filename is not None: hdf = self.__hdf5 alignmentGroup = hdf["/entry_000/Alignment"] outputShifts = self.getHDF5BufferIntoGroup( alignmentGroup, shape=(stack.data.shape[mcaIndex], 2), name="shifts", dtype=numpy.float32 ) outputShifts[:, :] = shifts attributes = {"interpretation": "image"} # fill the axes information dataGroup = hdf["/entry_000/Data"] if mcaIndex == 0: reference_shape = data[0].shape else: reference_shape = data.shape[0], data.shape[1] try: activeCurve = self.getActiveCurve() if activeCurve is None: activeCurve = self.getAllCurves()[0] x, y, legend, info = activeCurve dataGroup[info["xlabel"]] = numpy.array(x, dtype=numpy.float32) dataGroup[info["xlabel"]].attrs["axis"] = numpy.int32(1) axesAttribute = "%s:dim_1:dim_2" % info["xlabel"] except: if DEBUG: raise dataGroup["dim_0"] = numpy.arange(stack.data.shape[mcaIndex]).astype(numpy.float32) dataGroup["dim_0"].attrs["axis"] = numpy.int32(1) axesAttribute = "dim_0:dim_1:dim_2" dataGroup["dim_1"] = numpy.arange(reference_shape[0]).astype(numpy.float32) dataGroup["dim_1"].attrs["axis"] = numpy.int32(2) dataGroup["dim_2"] = numpy.arange(reference_shape[1]).astype(numpy.float32) dataGroup["dim_2"].attrs["axis"] = numpy.int32(3) dim2 = numpy.arange(reference_shape[1]).astype(numpy.float32) dataGroup["data"].attrs["axes"] = axesAttribute self.finishHDF5File(hdf) else: self.setStack(stack)
def _loadImageFiles(self): if self.getStackDataObject() is None: return getfilter = True fileTypeList = ["PNG Files (*png)", "JPEG Files (*jpg *jpeg)", "IMAGE Files (*)", "DAT Files (*dat)", "CSV Files (*csv)", "EDF Files (*edf)", "EDF Files (*ccd)", "EDF Files (*)"] message = "Open image file" filenamelist, filefilter = PyMcaFileDialogs.getFileList(parent=None, filetypelist=fileTypeList, message=message, getfilter=getfilter, single=False, currentfilter=None) if len(filenamelist) < 1: return imagelist = [] imagenames= [] mask = self.getStackSelectionMask() if mask is None: r, n = self.getStackROIImagesAndNames() shape = r[0].shape else: shape = mask.shape extension = qt.safe_str(os.path.splitext(filenamelist[0])[1]) if (filefilter.split()[0] in ["EDF"]) or \ (extension.upper() in [".EDF", ".TIF"]): for filename in filenamelist: #read the edf file edf = EDFStack.EdfFileDataSource.EdfFileDataSource(filename) #the list of images keylist = edf.getSourceInfo()['KeyList'] if len(keylist) < 1: msg = qt.QMessageBox(None) msg.setIcon(qt.QMessageBox.Critical) msg.setText("Cannot read image from file") msg.exec_() return for key in keylist: #get the data dataObject = edf.getDataObject(key) data = dataObject.data if data.shape[0] not in shape: continue if data.shape[1] not in shape: continue imagename = dataObject.info.get('Title', "") if imagename != "": imagename += " " imagename += os.path.basename(filename)+" "+key imagelist.append(data) imagenames.append(imagename) if len(imagelist) == 0: msg = qt.QMessageBox(None) msg.setIcon(qt.QMessageBox.Critical) msg.setText("Cannot read a valid image from the file") msg.exec_() return crop = False self.widget = StackPluginResultsWindow.StackPluginResultsWindow(parent=None, usetab=False) self.widget.buildAndConnectImageButtonBox() self.widget.sigMaskImageWidgetSignal.connect(self.mySlot) self.widget.setStackPluginResults(imagelist, image_names=imagenames) self._showWidget() return elif extension.lower() in [".csv", ".dat"]: # what to do if more than one file selected ? from PyMca5.PyMca import specfilewrapper as Specfile sf = Specfile.Specfile(filenamelist[0]) scan = sf[0] labels = scan.alllabels() data = scan.data() scan = None sf = None if "column" in labels: offset = labels.index("column") ncols = int(data[offset].max() + 1) offset += 1 else: raise IOError("Only images exported as csv supported") imagelist = [] imagenames= [] for i in range(offset, len(labels)): if labels[i].startswith("s("): continue tmpData = data[i] tmpData.shape = -1, ncols imagelist.append(tmpData) imagenames.append(labels[i]) crop = False self.widget = StackPluginResultsWindow.StackPluginResultsWindow(parent=None, usetab=False) self.widget.buildAndConnectImageButtonBox() self.widget.sigMaskImageWidgetSignal.connect(self.mySlot) self.widget.setStackPluginResults(imagelist, image_names=imagenames) self._showWidget() return else: #Try pure Image formats for filename in filenamelist: image = qt.QImage(filename) if image.isNull(): msg = qt.QMessageBox(None) msg.setIcon(qt.QMessageBox.Critical) msg.setText("Cannot read file %s as an image" % filename) msg.exec_() return imagelist.append(image) imagenames.append(os.path.basename(filename)) if len(imagelist) == 0: msg = qt.QMessageBox(None) msg.setIcon(qt.QMessageBox.Critical) msg.setText("Cannot read a valid image from the file") msg.exec_() return self.widget = ExternalImagesWindow.ExternalImagesWindow(parent=None, rgbwidget=None, selection=True, colormap=True, imageicons=True, standalonesave=True) self.widget.buildAndConnectImageButtonBox() self.widget.sigMaskImageWidgetSignal.connect(self.mySlot) self.widget.setImageData(None) self.widget.setQImageList(imagelist, shape[1], shape[0], clearmask=False, data=None, imagenames=imagenames) #data=self.__stackImageData) self._showWidget() return
def _loadImageFiles(self): if self.getStackDataObject() is None: return getfilter = True fileTypeList = [ "PNG Files (*png)", "JPEG Files (*jpg *jpeg)", "IMAGE Files (*)", "EDF Files (*edf)", "EDF Files (*ccd)", "EDF Files (*)" ] message = "Open image file" filenamelist, filefilter = PyMcaFileDialogs.getFileList( parent=None, filetypelist=fileTypeList, message=message, getfilter=getfilter, single=False, currentfilter=None) if len(filenamelist) < 1: return imagelist = [] imagenames = [] mask = self.getStackSelectionMask() if mask is None: r, n = self.getStackROIImagesAndNames() shape = r[0].shape else: shape = mask.shape if filefilter.split()[0] in ["EDF"]: for filename in filenamelist: #read the edf file edf = EDFStack.EdfFileDataSource.EdfFileDataSource(filename) #the list of images keylist = edf.getSourceInfo()['KeyList'] if len(keylist) < 1: msg = qt.QMessageBox(None) msg.setIcon(qt.QMessageBox.Critical) msg.setText("Cannot read image from file") msg.exec_() return for key in keylist: #get the data dataObject = edf.getDataObject(key) data = dataObject.data if data.shape[0] not in shape: continue if data.shape[1] not in shape: continue imagename = dataObject.info.get('Title', "") if imagename != "": imagename += " " imagename += os.path.basename(filename) + " " + key imagelist.append(data) imagenames.append(imagename) if len(imagelist) == 0: msg = qt.QMessageBox(None) msg.setIcon(qt.QMessageBox.Critical) msg.setText("Cannot read a valid image from the file") msg.exec_() return crop = False self.widget = StackPluginResultsWindow.StackPluginResultsWindow( parent=None, usetab=False) self.widget.buildAndConnectImageButtonBox() self.widget.sigMaskImageWidgetSignal.connect(self.mySlot) self.widget.setStackPluginResults(imagelist, image_names=imagenames) self._showWidget() return else: #Try pure Image formats for filename in filenamelist: image = qt.QImage(filename) if image.isNull(): msg = qt.QMessageBox(self) msg.setIcon(qt.QMessageBox.Critical) msg.setText("Cannot read file %s as an image" % filename) msg.exec_() return imagelist.append(image) imagenames.append(os.path.basename(filename)) if len(imagelist) == 0: msg = qt.QMessageBox(None) msg.setIcon(qt.QMessageBox.Critical) msg.setText("Cannot read a valid image from the file") msg.exec_() return self.widget = ExternalImagesWindow.ExternalImagesWindow( parent=None, rgbwidget=None, selection=True, colormap=True, imageicons=True, standalonesave=True) self.widget.buildAndConnectImageButtonBox() self.widget.sigMaskImageWidgetSignal.connect(self.mySlot) self.widget.setImageData(None) self.widget.setQImageList(imagelist, shape[1], shape[0], clearmask=False, data=None, imagenames=imagenames) #data=self.__stackImageData) self._showWidget() return
def browseOutputDir(self): fileList = PyMcaFileDialogs.getExistingDirectory(parent=self, message="Please select output directory", mode="OPEN") if len(fileList): self._outdirLine.setText(fileList)
def _loadImageFiles(self): if self.getStackDataObject() is None: return getfilter = True fileTypeList = [ "PNG Files (*png)", "JPEG Files (*jpg *jpeg)", "IMAGE Files (*)", "DAT Files (*dat)", "CSV Files (*csv)", "EDF Files (*edf)", "EDF Files (*ccd)", "EDF Files (*)" ] message = "Open image file" filenamelist, filefilter = PyMcaFileDialogs.getFileList( parent=None, filetypelist=fileTypeList, message=message, getfilter=getfilter, single=False, currentfilter=None) if len(filenamelist) < 1: return imagelist = [] imagenames = [] mask = self.getStackSelectionMask() if mask is None: r, n = self.getStackROIImagesAndNames() shape = r[0].shape else: shape = mask.shape extension = qt.safe_str(os.path.splitext(filenamelist[0])[1]) if (filefilter.split()[0] in ["EDF"]) or \ (extension.upper() in [".EDF", ".TIF"]): for filename in filenamelist: #read the edf file edf = EDFStack.EdfFileDataSource.EdfFileDataSource(filename) #the list of images keylist = edf.getSourceInfo()['KeyList'] if len(keylist) < 1: msg = qt.QMessageBox(None) msg.setIcon(qt.QMessageBox.Critical) msg.setText("Cannot read image from file") msg.exec_() return for key in keylist: #get the data dataObject = edf.getDataObject(key) data = dataObject.data if data.shape[0] not in shape: continue if data.shape[1] not in shape: continue imagename = dataObject.info.get('Title', "") if imagename != "": imagename += " " imagename += os.path.basename(filename) + " " + key imagelist.append(data) imagenames.append(imagename) if len(imagelist) == 0: msg = qt.QMessageBox(None) msg.setIcon(qt.QMessageBox.Critical) msg.setText("Cannot read a valid image from the file") msg.exec_() return crop = False self.widget = StackPluginResultsWindow.StackPluginResultsWindow( parent=None, usetab=False) self.widget.buildAndConnectImageButtonBox() self.widget.sigMaskImageWidgetSignal.connect(self.mySlot) self.widget.setStackPluginResults(imagelist, image_names=imagenames) self._showWidget() return elif extension.lower() in [".csv", ".dat"]: # what to do if more than one file selected ? from PyMca5.PyMca import specfilewrapper as Specfile sf = Specfile.Specfile(filenamelist[0]) scan = sf[0] labels = scan.alllabels() data = scan.data() scan = None sf = None if "column" in labels: offset = labels.index("column") ncols = int(data[offset].max() + 1) offset += 1 else: raise IOError("Only images exported as csv supported") imagelist = [] imagenames = [] for i in range(offset, len(labels)): if labels[i].startswith("s("): continue tmpData = data[i] tmpData.shape = -1, ncols imagelist.append(tmpData) imagenames.append(labels[i]) crop = False self.widget = StackPluginResultsWindow.StackPluginResultsWindow( parent=None, usetab=False) self.widget.buildAndConnectImageButtonBox() self.widget.sigMaskImageWidgetSignal.connect(self.mySlot) self.widget.setStackPluginResults(imagelist, image_names=imagenames) self._showWidget() return else: #Try pure Image formats for filename in filenamelist: image = qt.QImage(filename) if image.isNull(): msg = qt.QMessageBox(None) msg.setIcon(qt.QMessageBox.Critical) msg.setText("Cannot read file %s as an image" % filename) msg.exec_() return imagelist.append(image) imagenames.append(os.path.basename(filename)) if len(imagelist) == 0: msg = qt.QMessageBox(None) msg.setIcon(qt.QMessageBox.Critical) msg.setText("Cannot read a valid image from the file") msg.exec_() return self.widget = ExternalImagesWindow.ExternalImagesWindow( parent=None, rgbwidget=None, selection=True, colormap=True, imageicons=True, standalonesave=True) self.widget.buildAndConnectImageButtonBox() self.widget.sigMaskImageWidgetSignal.connect(self.mySlot) self.widget.setImageData(None) self.widget.setQImageList(imagelist, shape[1], shape[0], clearmask=False, data=None, imagenames=imagenames) #data=self.__stackImageData) self._showWidget() return
def saveButtonClicked(self): energylist, weightlist, flaglist, scatterlist = self.table.getParameters( ) if self.outputDir is None: if self.inputDir is not None: self.outputDir = self.inputDir else: self.outputDir = PyMcaDirs.outputDir wdir = self.outputDir format_list = [ '";"-separated CSV *.csv', '","-separated CSV *.csv', '"tab"-separated CSV *.csv' ] if self.outputFilter is None: self.outputFilter = format_list[0] outfile, filterused = PyMcaFileDialogs.getFileList( self, filetypelist=format_list, mode="SAVE", message="Output File Selection", currentdir=wdir, currentfilter=self.outputFilter, getfilter=True, single=True) if len(outfile): outputFile = qt.safe_str(outfile[0]) else: return self.outputFilter = qt.safe_str(filterused) filterused = self.outputFilter.split() try: self.outputDir = os.path.dirname(outputFile) PyMcaDirs.outputDir = os.path.dirname(outputFile) except: self.outputDir = "." if not outputFile.endswith('.csv'): outputFile += '.csv' #always overwrite if os.path.exists(outputFile): os.remove(outputFile) try: if sys.version < "3.0.0": ffile = open(outputFile, 'wb') else: ffile = open(outputFile, 'w') except IOError: msg = qt.QMessageBox(self) msg.setIcon(qt.QMessageBox.Critical) msg.setText("Input Output Error: %s" % (sys.exc_info()[1])) msg.exec_() return if "," in filterused[0]: csv = "," elif ";" in filterused[0]: csv = ";" else: csv = "\t" ffile.write('"energy"%s"weight"%s"flag"%s"scatter"\n' % (csv, csv, csv)) #write the scatter lines in first instance alreadysaved = [] for i in range(len(energylist)): if (energylist[i] is not None) and \ (scatterlist[i] == 1): ffile.write("%f%s%f%s%d%s%d\n" % \ (energylist[i], csv, weightlist[i], csv, flaglist[i], csv, scatterlist[i])) alreadysaved.append(i) for i in range(len(energylist)): if energylist[i] is not None: if i not in alreadysaved: ffile.write("%f%s%f%s%d%s%d\n" % \ (energylist[i], csv, weightlist[i], csv, flaglist[i], csv, scatterlist[i])) ffile.close()