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 getDatasetDialog(filename=None, value=False, message=None): """ Simple dialog to select a dataset via a double click on the tree :param filename: Name of the HDF5 file :param value: If True returns dataset value instead of just the dataset """ if filename is None: from PyMca5.PyMca import PyMcaFileDialogs fileTypeList = ['HDF5 Files (*.h5 *.nxs *.hdf)', 'HDF5 Files (*)'] message = "Open HDF5 file" filenamelist, ffilter = PyMcaFileDialogs.getFileList( parent=None, filetypelist=fileTypeList, message=message, getfilter=True, single=True, currentfilter=None) if len(filenamelist) < 1: return None filename = filenamelist[0] if message is None: message = 'Select your item by a double click' hdf5Dialog = qt.QDialog() hdf5Dialog.setWindowTitle(message) hdf5Dialog.mainLayout = qt.QVBoxLayout(hdf5Dialog) hdf5Dialog.mainLayout.setContentsMargins(0, 0, 0, 0) hdf5Dialog.mainLayout.setSpacing(0) fileModel = FileModel() fileView = HDF5Widget(fileModel) hdf5File = fileModel.openFile(filename, "r") def _hdf5WidgetSlot(ddict): if ddict['event'] == "itemDoubleClicked": if ddict['type'].lower() in ['dataset']: hdf5Dialog._hdf5Datatset = ddict['name'] hdf5Dialog.accept() fileView.sigHDF5WidgetSignal.connect(_hdf5WidgetSlot) hdf5Dialog.mainLayout.addWidget(fileView) hdf5Dialog.resize(400, 200) ret = hdf5Dialog.exec_() if not ret: return None dataset = hdf5Dialog._hdf5Datatset hdf5Dialog = None if value: data = hdf5File[dataset].value # is it dangerous to close the file? hdf5File.close() else: data = hdf5File[dataset] return data
def getDatasetDialog(filename=None, value=False, message=None): """ Simple dialog to select a dataset via a double click on the tree :param filename: Name of the HDF5 file :param value: If True returns dataset value instead of just the dataset """ if filename is None: from PyMca5.PyMca import PyMcaFileDialogs fileTypeList = ['HDF5 Files (*.h5 *.nxs *.hdf)', 'HDF5 Files (*)'] message = "Open HDF5 file" filenamelist, ffilter = PyMcaFileDialogs.getFileList(parent=None, filetypelist=fileTypeList, message=message, getfilter=True, single=True, currentfilter=None) if len(filenamelist) < 1: return None filename = filenamelist[0] if message is None: message = 'Select your item by a double click' hdf5Dialog = qt.QDialog() hdf5Dialog.setWindowTitle(message) hdf5Dialog.mainLayout = qt.QVBoxLayout(hdf5Dialog) hdf5Dialog.mainLayout.setContentsMargins(0, 0, 0, 0) hdf5Dialog.mainLayout.setSpacing(0) fileModel = FileModel() fileView = HDF5Widget(fileModel) hdf5File = fileModel.openFile(filename, "r") def _hdf5WidgetSlot(ddict): if ddict['event'] == "itemDoubleClicked": if ddict['type'].lower() in ['dataset']: hdf5Dialog._hdf5Datatset = ddict['name'] hdf5Dialog.accept() fileView.sigHDF5WidgetSignal.connect(_hdf5WidgetSlot) hdf5Dialog.mainLayout.addWidget(fileView) hdf5Dialog.resize(400, 200) ret = hdf5Dialog.exec_() if not ret: return None dataset = hdf5Dialog._hdf5Datatset hdf5Dialog = None if value: data = hdf5File[dataset].value # is it dangerous to close the file? hdf5File.close() else: data = hdf5File[dataset] return data
def _loadExternalData(self): getfilter = True fileTypeList = ["EDF Files (*edf *ccd *tif)"] if HDF5: fileTypeList.append('HDF5 Files (*.h5 *.nxs *.hdf)') fileTypeList.append('ASCII Files (*)') fileTypeList.append("EDF Files (*)") message = "Open data file" filenamelist, ffilter = PyMcaFileDialogs.getFileList( parent=None, filetypelist=fileTypeList, message=message, getfilter=getfilter, single=True, currentfilter=None) if len(filenamelist) < 1: return filename = filenamelist[0] if ffilter.startswith('HDF5'): data = HDF5Widget.getDatasetDialog( filename, value=True, message='Select your data set by a double click') elif ffilter.startswith("EDF"): edf = EdfFile.EdfFile(filename, "rb") if edf.GetNumImages() > 1: # TODO: A dialog showing the different images # based on the external images browser needed print("WARNING: Taking first image") data = edf.GetData(0) edf = None elif ffilter.startswith("ASCII"): #data=numpy.loadtxt(filename) sf = specfilewrapper.Specfile(filename) targetScan = sf[0] data = numpy.array(targetScan.data().T, copy=True) targetScan = None sf = None return data
def _loadExternalData(self): getfilter = True fileTypeList = ["EDF Files (*edf *ccd *tif)"] if HDF5: fileTypeList.append('HDF5 Files (*.h5 *.nxs *.hdf *.hdf5)') fileTypeList.append('ASCII Files (*)') fileTypeList.append("EDF Files (*)") message = "Open data file" filenamelist, ffilter = PyMcaFileDialogs.getFileList(parent=None, filetypelist=fileTypeList, message=message, getfilter=getfilter, single=True, currentfilter=None) if len(filenamelist) < 1: return filename = filenamelist[0] if ffilter.startswith('HDF5'): data = HDF5Widget.getDatasetValueDialog( filename=filename, message='Select your data set by a double click') elif ffilter.startswith("EDF"): edf = EdfFile.EdfFile(filename, "rb") if edf.GetNumImages() > 1: # TODO: A dialog showing the different images # based on the external images browser needed _logger.warning("WARNING: Taking first image") data = edf.GetData(0) edf = None elif ffilter.startswith("ASCII"): #data=numpy.loadtxt(filename) sf = specfilewrapper.Specfile(filename) targetScan = sf[0] data = numpy.array(targetScan.data().T, copy=True) targetScan = None sf = None return data