Slicer 5.11
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 <QRegularExpression>
31#include <QString>
32#include <QVariantMap>
33
34// CTK includes
35#include <ctkPimpl.h>
36
37// QtCore includes
38#include <qSlicerIO.h>
39#include "qSlicerBaseQTCoreExport.h"
40
42class vtkMRMLNode;
45class vtkCollection;
46class vtkObject;
47class qSlicerCoreIOManagerPrivate;
50class Q_SLICER_BASE_QTCORE_EXPORT qSlicerCoreIOManager : public QObject
51{
52 Q_OBJECT;
55
56public:
57 qSlicerCoreIOManager(QObject* parent = nullptr);
59
61 Q_INVOKABLE qSlicerIO::IOFileType fileType(const QString& file) const;
63 Q_INVOKABLE QList<qSlicerIO::IOFileType> fileTypes(const QString& file) const;
64
66 Q_INVOKABLE qSlicerIO::IOFileType fileTypeFromDescription(const QString& fileDescription) const;
67
71 Q_INVOKABLE QStringList fileDescriptions(const QString& file) const;
72
75 QStringList fileDescriptionsByType(const qSlicerIO::IOFileType fileType) const;
76
78 qSlicerFileWriter* writer(vtkObject* object, const QString& extension = QString()) const;
79
81 Q_INVOKABLE qSlicerIO::IOFileType fileWriterFileType(vtkObject* object, const QString& extension = QString()) const;
82
83 Q_INVOKABLE QStringList fileWriterDescriptions(const qSlicerIO::IOFileType& fileType) const;
84 Q_INVOKABLE QStringList fileWriterExtensions(vtkObject* object) const;
87 Q_INVOKABLE QStringList allWritableFileExtensions() const;
90 Q_INVOKABLE QStringList allReadableFileExtensions() const;
91
93 qSlicerIOOptions* fileOptions(const QString& fileDescription) const;
94
96 qSlicerIOOptions* fileWriterOptions(vtkObject* object, const QString& extension) const;
97
104
109 Q_INVOKABLE static QRegularExpression fileNameRegularExpression(const QString& extension = QString());
110
112 Q_INVOKABLE static QString forceFileNameValidCharacters(const QString& filename);
113
119 Q_INVOKABLE QString forceFileNameMaxLength(const QString& filename, int extensionLength, int maxLength = -1);
120
125
130 Q_INVOKABLE QString extractKnownExtension(const QString& fileName, vtkObject* object);
131
136 Q_INVOKABLE QString stripKnownExtension(const QString& fileName, vtkObject* object);
137
149 Q_INVOKABLE virtual bool loadNodes(const qSlicerIO::IOFileType& fileType,
150 const qSlicerIO::IOProperties& parameters,
151 vtkCollection* loadedNodes = nullptr,
152 vtkMRMLMessageCollection* userMessages = nullptr);
153
157 virtual bool loadNodes(const QList<qSlicerIO::IOProperties>& files, vtkCollection* loadedNodes = nullptr, vtkMRMLMessageCollection* userMessages = nullptr);
158
163 vtkMRMLNode* loadNodesAndGetFirst(qSlicerIO::IOFileType fileType, const qSlicerIO::IOProperties& parameters, vtkMRMLMessageCollection* userMessages = nullptr);
164
169 Q_INVOKABLE bool loadScene(const QString& fileName, bool clear = true, vtkMRMLMessageCollection* userMessages = nullptr);
170
174 Q_INVOKABLE bool loadFile(const QString& fileName, vtkMRMLMessageCollection* userMessages = nullptr);
175
185 Q_INVOKABLE bool saveNodes(qSlicerIO::IOFileType fileType,
186 const qSlicerIO::IOProperties& parameters,
187 vtkMRMLMessageCollection* userMessages = nullptr,
188 vtkMRMLScene* scene = nullptr);
189
198 Q_INVOKABLE bool exportNodes(const QList<qSlicerIO::IOProperties>& parameterMaps, bool hardenTransforms, vtkMRMLMessageCollection* userMessages = nullptr);
199
204 Q_INVOKABLE bool exportNodes(const QStringList& nodeIDs,
205 const QStringList& fileNames,
206 const qSlicerIO::IOProperties& commonParameterMap,
207 bool hardenTransforms,
208 vtkMRMLMessageCollection* userMessages = nullptr);
209
215 Q_INVOKABLE bool saveScene(const QString& fileName, QImage screenShot, vtkMRMLMessageCollection* userMessages = nullptr);
216
223 Q_INVOKABLE void addDefaultStorageNodes();
224
228
236 Q_INVOKABLE int registeredFileReaderCount(const qSlicerIO::IOFileType& fileType) const;
237 Q_INVOKABLE int registeredFileWriterCount(const qSlicerIO::IOFileType& fileType) const;
239
242
246 Q_INVOKABLE void emitNewFileLoaded(const QVariantMap& loadedFileParameters);
247
251 Q_INVOKABLE void emitFileSaved(const QVariantMap& savedFileParameters);
252
254 Q_INVOKABLE QString defaultSceneFileType() const;
255
269 Q_INVOKABLE bool examineFileInfoList(QFileInfoList& fileInfoList, QFileInfo& archetypeEntry, QString& readerDescription, qSlicerIO::IOProperties& ioProperties) const;
270
271public slots:
272
277
281
282signals:
283
289 void newFileLoaded(const qSlicerIO::IOProperties& loadedFileParameters);
290
295 void fileSaved(const qSlicerIO::IOProperties& savedFileParameters);
296
297protected:
300
304 QList<qSlicerFileWriter*> writers(const qSlicerIO::IOFileType& fileType) const;
305
307 QList<qSlicerFileReader*> readers(const qSlicerIO::IOFileType& fileType) const;
308 qSlicerFileReader* reader(const QString& ioDescription) const;
309
310protected:
311 QScopedPointer<qSlicerCoreIOManagerPrivate> d_ptr;
312
313private:
314 Q_DECLARE_PRIVATE(qSlicerCoreIOManager);
315 Q_DISABLE_COPY(qSlicerCoreIOManager);
316};
317
318#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)
static Q_INVOKABLE QRegularExpression fileNameRegularExpression(const QString &extension=QString())
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 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