-
Notifications
You must be signed in to change notification settings - Fork 542
/
qSlicerScriptedFileWriter.h
104 lines (78 loc) · 3.51 KB
/
qSlicerScriptedFileWriter.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
/*==============================================================================
Program: 3D Slicer
Copyright (c) Kitware Inc.
See COPYRIGHT.txt
or http://www.slicer.org/copyright/copyright.txt for details.
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
This file was originally developed by Jean-Christophe Fillion-Robin, Kitware Inc.
and was partially funded by NIH grant 3P41RR013218-12S1
==============================================================================*/
#ifndef __qSlicerScriptedFileWriter_h
#define __qSlicerScriptedFileWriter_h
// Slicer includes
#include "qSlicerFileWriter.h"
#include "qSlicerBaseQTCoreExport.h"
// Forward Declare PyObject*
#ifndef PyObject_HEAD
struct _object;
typedef _object PyObject;
#endif
class qSlicerScriptedFileWriterPrivate;
class Q_SLICER_BASE_QTCORE_EXPORT qSlicerScriptedFileWriter
: public qSlicerFileWriter
{
Q_OBJECT
/// This property allows the writer to report back what nodes it was able to write
Q_PROPERTY(QStringList writtenNodes READ writtenNodes WRITE setWrittenNodes)
public:
typedef qSlicerFileWriter Superclass;
qSlicerScriptedFileWriter(QObject* parent = nullptr);
~qSlicerScriptedFileWriter() override;
QString pythonSource()const;
/// \warning Setting the source is a no-op. See detailed comment in the source code.
/// If missingClassIsExpected is true (default) then missing class is expected and not treated as an error.
bool setPythonSource(const QString& filePath, const QString& className = QLatin1String(""), bool missingClassIsExpected = true);
/// Convenience method allowing to retrieve the associated scripted instance
Q_INVOKABLE PyObject* self() const;
/// Reimplemented to propagate to python methods
/// \sa qSlicerIO::description()
QString description()const override;
/// Reimplemented to propagate to python methods
/// \sa qSlicerIO::fileType()
IOFileType fileType()const override;
/// Reimplemented to propagate to python methods
/// \sa qSlicerFileWriter::canWriteObject()
bool canWriteObject(vtkObject* object)const override;
/// Reimplemented to propagate to python methods
/// \sa qSlicerFileWriter::canWriteObjectConfidence()
double canWriteObjectConfidence(vtkObject* object)const override;
/// Reimplemented to propagate to python methods
/// \sa qSlicerFileWriter::extensions()
QStringList extensions(vtkObject* object)const override;
/// Reimplemented to propagate to python methods
/// \sa qSlicerFileWriter::write()
bool write(const qSlicerIO::IOProperties& properties) override;
/// Added so node writers can report back written nodes
/// \sa qSlicerFileWriter::writtenNodes()
void addWrittenNode(const QString& writtenNode);
/// Reimplemented to support python methods and q_property
/// Exposes setWrittenNodes, which is protected in superclass
/// \sa qSlicerFileWriter::writtenNodes()
/// \sa qSlicerFileReader::loadedNodes()
QStringList writtenNodes()const override {
return Superclass::writtenNodes();
};
void setWrittenNodes(const QStringList& nodes) override {
Superclass::setWrittenNodes(nodes);
};
protected:
QScopedPointer<qSlicerScriptedFileWriterPrivate> d_ptr;
private:
Q_DECLARE_PRIVATE(qSlicerScriptedFileWriter);
Q_DISABLE_COPY(qSlicerScriptedFileWriter);
};
#endif