medDataReaderWriter::Reader medDataReaderWriter::reader(const QString& path) {
    QList<QString> readers = medAbstractDataFactory::instance()->readers();

    if (readers.size()==0) {
#if 0
        emit showError(tr("No reader plugin"),5000);
        emit failure(this);
#endif
        return Reader();
    }

    const QFileInfo& fi(path);
    const QString&   filename = fi.filePath();

    //  Store the last reader.

    static Reader dreader;

    if (!dreader.isNull() && dreader->canRead(filename))
        return dreader;

    for (int i=0;i<readers.size();++i) {
        dreader = medAbstractDataFactory::instance()->readerSmartPointer(readers[i]);
        if (dreader->canRead(filename)) {
            dreader->enableDeferredDeletion(false);
            return dreader;
        }
    }
    return dreader = Reader();
}