Пример #1
0
 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 ""
Пример #2
0
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
Пример #3
0
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
Пример #5
0
 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