Slicer 5.9
Slicer is a multi-platform, free and open source software package for visualization and medical image computing
Loading...
Searching...
No Matches
qSlicerCoreIOManager.h
Go to the documentation of this file.
1/*==============================================================================
2
3 Program: 3D Slicer
4
5 Copyright (c) Kitware Inc.
6
7 See COPYRIGHT.txt
8 or http://www.slicer.org/copyright/copyright.txt for details.
9
10 Unless required by applicable law or agreed to in writing, software
11 distributed under the License is distributed on an "AS IS" BASIS,
12 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 See the License for the specific language governing permissions and
14 limitations under the License.
15
16 This file was originally developed by Jean-Christophe Fillion-Robin, Kitware Inc.
17 and was partially funded by NIH grant 3P41RR013218-12S1
18
19==============================================================================*/
20
21#ifndef __qSlicerCoreIOManager_h
22#define __qSlicerCoreIOManager_h
23
24// Qt includes
25#include <QFileInfo>
26#include <QImage>
27#include <QList>
28#include <QMap>
29#include <QObject>
30#include <QString>
31#include <QVariantMap>
32
33// CTK includes
34#include <ctkPimpl.h>
35
36// QtCore includes
37#include <qSlicerIO.h>
38#include "qSlicerBaseQTCoreExport.h"
39
41class vtkMRMLNode;
44class vtkCollection;
45class vtkObject;
46class qSlicerCoreIOManagerPrivate;
49class Q_SLICER_BASE_QTCORE_EXPORT qSlicerCoreIOManager : public QObject
50{
51 Q_OBJECT;
54
55public:
56 qSlicerCoreIOManager(QObject* parent = nullptr);
58
60 Q_INVOKABLE qSlicerIO::IOFileType fileType(const QString& file) const;
62 Q_INVOKABLE QList<qSlicerIO::IOFileType> fileTypes(const QString& file) const;
63
65 Q_INVOKABLE qSlicerIO::IOFileType fileTypeFromDescription(const QString& fileDescription) const;
66
70 Q_INVOKABLE QStringList fileDescriptions(const QString& file) const;
71
74 QStringList fileDescriptionsByType(const qSlicerIO::IOFileType fileType) const;
75
77 qSlicerFileWriter* writer(vtkObject* object, const QString& extension = QString()) const;
78
80 Q_INVOKABLE qSlicerIO::IOFileType fileWriterFileType(vtkObject* object, const QString& extension = QString()) const;
81
82 Q_INVOKABLE QStringList fileWriterDescriptions(const qSlicerIO::IOFileType& fileType) const;
83 Q_INVOKABLE QStringList fileWriterExtensions(vtkObject* object) const;
86 Q_INVOKABLE QStringList allWritableFileExtensions() const;
89 Q_INVOKABLE QStringList allReadableFileExtensions() const;
90
92 qSlicerIOOptions* fileOptions(const QString& fileDescription) const;
93
95 qSlicerIOOptions* fileWriterOptions(vtkObject* object, const QString& extension) const;
96
103
108 Q_INVOKABLE static QRegExp fileNameRegExp(const QString& extension = QString());
109
111 Q_INVOKABLE static QString forceFileNameValidCharacters(const QString& filename);
112
118 Q_INVOKABLE QString forceFileNameMaxLength(const QString& filename, int extensionLength, int maxLength = -1);
119
124
129 Q_INVOKABLE QString extractKnownExtension(const QString& fileName, vtkObject* object);
130
135 Q_INVOKABLE QString stripKnownExtension(const QString& fileName, vtkObject* object);
136
148 Q_INVOKABLE virtual bool loadNodes(const qSlicerIO::IOFileType& fileType,
149 const qSlicerIO::IOProperties& parameters,
150 vtkCollection* loadedNodes = nullptr,
151 vtkMRMLMessageCollection* userMessages = nullptr);
152
156 virtual bool loadNodes(const QList<qSlicerIO::IOProperties>& files, vtkCollection* loadedNodes = nullptr, vtkMRMLMessageCollection* userMessages = nullptr);
157
162 vtkMRMLNode* loadNodesAndGetFirst(qSlicerIO::IOFileType fileType, const qSlicerIO::IOProperties& parameters, vtkMRMLMessageCollection* userMessages = nullptr);
163
168 Q_INVOKABLE bool loadScene(const QString& fileName, bool clear = true, vtkMRMLMessageCollection* userMessages = nullptr);
169
173 Q_INVOKABLE bool loadFile(const QString& fileName, vtkMRMLMessageCollection* userMessages = nullptr);
174
184 Q_INVOKABLE bool saveNodes(qSlicerIO::IOFileType fileType,
185 const qSlicerIO::IOProperties& parameters,
186 vtkMRMLMessageCollection* userMessages = nullptr,
187 vtkMRMLScene* scene = nullptr);
188
197 Q_INVOKABLE bool exportNodes(const QList<qSlicerIO::IOProperties>& parameterMaps, bool hardenTransforms, vtkMRMLMessageCollection* userMessages = nullptr);
198
203 Q_INVOKABLE bool exportNodes(const QStringList& nodeIDs,
204 const QStringList& fileNames,
205 const qSlicerIO::IOProperties& commonParameterMap,
206 bool hardenTransforms,
207 vtkMRMLMessageCollection* userMessages = nullptr);
208
214 Q_INVOKABLE bool saveScene(const QString& fileName, QImage screenShot, vtkMRMLMessageCollection* userMessages = nullptr);
215
222 Q_INVOKABLE void addDefaultStorageNodes();
223
227
235 Q_INVOKABLE int registeredFileReaderCount(const qSlicerIO::IOFileType& fileType) const;
236 Q_INVOKABLE int registeredFileWriterCount(const qSlicerIO::IOFileType& fileType) const;
238
241
245 Q_INVOKABLE void emitNewFileLoaded(const QVariantMap& loadedFileParameters);
246
250 Q_INVOKABLE void emitFileSaved(const QVariantMap& savedFileParameters);
251
253 Q_INVOKABLE QString defaultSceneFileType() const;
254
268 Q_INVOKABLE bool examineFileInfoList(QFileInfoList& fileInfoList, QFileInfo& archetypeEntry, QString& readerDescription, qSlicerIO::IOProperties& ioProperties) const;
269
270public slots:
271
276
280
281signals:
282
288 void newFileLoaded(const qSlicerIO::IOProperties& loadedFileParameters);
289
294 void fileSaved(const qSlicerIO::IOProperties& savedFileParameters);
295
296protected:
299
303 QList<qSlicerFileWriter*> writers(const qSlicerIO::IOFileType& fileType) const;
304
306 QList<qSlicerFileReader*> readers(const qSlicerIO::IOFileType& fileType) const;
307 qSlicerFileReader* reader(const QString& ioDescription) const;
308
309protected:
310 QScopedPointer<qSlicerCoreIOManagerPrivate> d_ptr;
311
312private:
313 Q_DECLARE_PRIVATE(qSlicerCoreIOManager);
314 Q_DISABLE_COPY(qSlicerCoreIOManager);
315};
316
317#endif
Q_INVOKABLE QStringList fileWriterExtensions(vtkObject *object) const
virtual Q_INVOKABLE bool loadNodes(const qSlicerIO::IOFileType &fileType, const qSlicerIO::IOProperties &parameters, vtkCollection *loadedNodes=nullptr, vtkMRMLMessageCollection *userMessages=nullptr)
Q_INVOKABLE QString completeSlicerWritableFileNameSuffix(vtkMRMLStorableNode *node) const
Q_INVOKABLE bool loadFile(const QString &fileName, vtkMRMLMessageCollection *userMessages=nullptr)
Q_INVOKABLE QString extractKnownExtension(const QString &fileName, vtkObject *object)
Q_INVOKABLE void emitFileSaved(const QVariantMap &savedFileParameters)
Q_INVOKABLE QStringList allReadableFileExtensions() const
void newFileLoaded(const qSlicerIO::IOProperties &loadedFileParameters)
Q_INVOKABLE bool loadScene(const QString &fileName, bool clear=true, vtkMRMLMessageCollection *userMessages=nullptr)
Q_INVOKABLE qSlicerIO::IOFileType fileWriterFileType(vtkObject *object, const QString &extension=QString()) const
Return the file type of the best file writer for the input VTK object.
Q_INVOKABLE QList< qSlicerIO::IOFileType > fileTypes(const QString &file) const
Return all supported file types for reading a file.
Q_INVOKABLE qSlicerIO::IOFileType fileTypeFromDescription(const QString &fileDescription) const
Return the most likely file description (SegmentationFile, TextFile, ...) for reading a file.
const QList< qSlicerFileReader * > & readers() const
Returns the list of registered readers.
const QList< qSlicerFileWriter * > & writers() const
Returns the list of registered writers.
Q_INVOKABLE QString stripKnownExtension(const QString &fileName, vtkObject *object)
void registerIO(qSlicerIO *io)
QScopedPointer< qSlicerCoreIOManagerPrivate > d_ptr
qSlicerFileWriter * writer(vtkObject *object, const QString &extension=QString()) const
Return best file writer for this object.
qSlicerFileReader * reader(const QString &ioDescription) const
void setDefaultMaximumFileNameLength(int)
Q_INVOKABLE QStringList fileDescriptions(const QString &file) const
static Q_INVOKABLE QRegExp fileNameRegExp(const QString &extension=QString())
static Q_INVOKABLE vtkMRMLStorageNode * createAndAddDefaultStorageNode(vtkMRMLStorableNode *node)
}@
vtkMRMLNode * loadNodesAndGetFirst(qSlicerIO::IOFileType fileType, const qSlicerIO::IOProperties &parameters, vtkMRMLMessageCollection *userMessages=nullptr)
void fileSaved(const qSlicerIO::IOProperties &savedFileParameters)
Q_INVOKABLE bool exportNodes(const QList< qSlicerIO::IOProperties > &parameterMaps, bool hardenTransforms, vtkMRMLMessageCollection *userMessages=nullptr)
qSlicerIOOptions * fileWriterOptions(vtkObject *object, const QString &extension) const
Return the file write options of the best file writer for the input VTK object.
Q_INVOKABLE void emitNewFileLoaded(const QVariantMap &loadedFileParameters)
Q_INVOKABLE qSlicerIO::IOFileType fileType(const QString &file) const
Return the most likely file type (SegmentationFile, TextFile, ...) for reading a file.
qSlicerIOOptions * fileOptions(const QString &fileDescription) const
Return the file read options for the best reader associated with a file type.
Q_INVOKABLE bool examineFileInfoList(QFileInfoList &fileInfoList, QFileInfo &archetypeEntry, QString &readerDescription, qSlicerIO::IOProperties &ioProperties) const
Q_INVOKABLE QStringList fileWriterDescriptions(const qSlicerIO::IOFileType &fileType) const
void setDefaultSceneFileType(QString)
QStringList fileDescriptionsByType(const qSlicerIO::IOFileType fileType) const
Q_INVOKABLE void addDefaultStorageNodes()
Q_INVOKABLE bool saveScene(const QString &fileName, QImage screenShot, vtkMRMLMessageCollection *userMessages=nullptr)
Q_INVOKABLE int registeredFileWriterCount(const qSlicerIO::IOFileType &fileType) const
qSlicerCoreIOManager(QObject *parent=nullptr)
Q_INVOKABLE QString forceFileNameMaxLength(const QString &filename, int extensionLength, int maxLength=-1)
static Q_INVOKABLE QString forceFileNameValidCharacters(const QString &filename)
Remove characters that are likely to cause problems in a filename.
Q_INVOKABLE int registeredFileReaderCount(const qSlicerIO::IOFileType &fileType) const
Q_INVOKABLE QStringList allWritableFileExtensions() const
Q_INVOKABLE bool saveNodes(qSlicerIO::IOFileType fileType, const qSlicerIO::IOProperties &parameters, vtkMRMLMessageCollection *userMessages=nullptr, vtkMRMLScene *scene=nullptr)
Base class for qSlicerFileReader and qSlicerFileWriter.
Definition qSlicerIO.h:44
Abstract Superclass for all specific types of MRML nodes.
A set of MRML Nodes that supports serialization and undo/redo.
MRML node to represent a 3D surface model.
A superclass for other storage nodes.
QMap< QString, QVariant > QVariantMap