Slicer  4.11
Slicer is a multi-platform, free and open source software package for visualization and medical image computing
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
qSlicerIOManager.h
Go to the documentation of this file.
1 #ifndef __qSlicerIOManager_h
2 #define __qSlicerIOManager_h
3 
4 // Qt includes
5 #include <QList>
6 #include <QString>
7 #include <QUrl>
8 
9 // CTK includes
10 #include <ctkVTKObject.h>
11 
12 // SlicerQ includes
13 #include "qSlicerApplication.h"
14 #include "qSlicerCoreIOManager.h"
15 #include "qSlicerFileDialog.h"
16 
17 #include "qSlicerBaseQTGUIExport.h"
18 
20 class QDragEnterEvent;
21 class QDropEvent;
22 class QWidget;
23 
24 class qSlicerIOManagerPrivate;
25 
26 class Q_SLICER_BASE_QTGUI_EXPORT qSlicerIOManager : public qSlicerCoreIOManager
27 {
28  Q_OBJECT;
29  QVTK_OBJECT;
30 public:
32  qSlicerIOManager(QObject* parent = nullptr);
33  ~qSlicerIOManager() override;
34 
45  Q_INVOKABLE bool openDialog(qSlicerIO::IOFileType fileType,
48  vtkCollection* loadedNodes = nullptr);
49 
50  void addHistory(const QString& path);
51  const QStringList& history()const;
52 
53  void setFavorites(const QList<QUrl>& urls);
54  const QList<QUrl>& favorites()const;
55 
58  void registerDialog(qSlicerFileDialog* dialog);
59 
64  Q_INVOKABLE bool loadNodes(const qSlicerIO::IOFileType& fileType, const qSlicerIO::IOProperties& parameters,
65  vtkCollection* loadedNodes = nullptr, vtkMRMLMessageCollection* userMessages = nullptr) override;
69  bool loadNodes(const QList<qSlicerIO::IOProperties>& files, vtkCollection* loadedNodes = nullptr,
70  vtkMRMLMessageCollection* userMessages = nullptr) override;
71 
75  void dragEnterEvent(QDragEnterEvent *event);
76 
83  void dropEvent(QDropEvent *event);
84 
85 public slots:
86 
87  void openScreenshotDialog();
88  void openSceneViewsDialog();
89  bool openLoadSceneDialog();
90  bool openAddSceneDialog();
91  inline bool openAddDataDialog();
92  inline bool openAddDataDialog(QString fileName);
93  inline bool openAddVolumeDialog();
94  inline bool openAddVolumesDialog();
95  inline bool openAddModelDialog();
96  inline bool openAddScalarOverlayDialog();
97  inline bool openAddTransformDialog();
98  inline bool openAddColorTableDialog();
99  inline bool openAddFiducialDialog();
100  inline bool openAddMarkupsDialog();
101  inline bool openAddFiberBundleDialog();
102  inline bool openSaveDataDialog();
103 
104 protected slots:
105  void updateProgressDialog();
106  void execDelayedFileDialog();
107 
108 protected:
109  friend class qSlicerFileDialog;
111 protected:
112  QScopedPointer<qSlicerIOManagerPrivate> d_ptr;
113 
114 private:
115  Q_DECLARE_PRIVATE(qSlicerIOManager);
116  Q_DISABLE_COPY(qSlicerIOManager);
117 };
118 
119 //------------------------------------------------------------------------------
121 {
122  qSlicerIO::IOProperties ioProperties;
123  ioProperties["fileName"] = fileName;
124  return this->openDialog(QString("NoFile"), qSlicerFileDialog::Read, ioProperties);
125 }
126 
127 //------------------------------------------------------------------------------
129 {
130  return this->openDialog(QString("NoFile"), qSlicerFileDialog::Read);
131 }
132 
133 //-----------------------------------------------------------------------------
135 {
136  return this->openDialog(QString("VolumeFile"), qSlicerFileDialog::Read);
137 }
138 
139 //-----------------------------------------------------------------------------
141 {
142  qSlicerIO::IOProperties ioProperties;
143  ioProperties["multipleFiles"] = true;
144  return this->openDialog(QString("VolumeFile"), qSlicerFileDialog::Read, ioProperties);
145 }
146 
147 //-----------------------------------------------------------------------------
149 {
150  return this->openDialog(QString("ModelFile"), qSlicerFileDialog::Read);
151 }
152 
153 //-----------------------------------------------------------------------------
155 {
156  return this->openDialog(QString("ScalarOverlayFile"), qSlicerFileDialog::Read);
157 }
158 
159 //-----------------------------------------------------------------------------
161 {
162  return this->openDialog(QString("TransformFile"), qSlicerFileDialog::Read);
163 }
164 
165 //-----------------------------------------------------------------------------
167 {
168  return this->openDialog(QString("ColorTableFile"), qSlicerFileDialog::Read);
169 }
170 
171 //-----------------------------------------------------------------------------
173 {
174  return this->openDialog(QString("FiducialListFile"), qSlicerFileDialog::Read);
175 }
176 
177 //-----------------------------------------------------------------------------
179 {
180  return this->openDialog(QString("MarkupsFiducials"), qSlicerFileDialog::Read);
181 }
182 
183 //-----------------------------------------------------------------------------
185 {
186  return this->openDialog(QString("FiberBundleFile"), qSlicerFileDialog::Read);
187 }
188 
189 //------------------------------------------------------------------------------
191 {
192  return this->openDialog(QString("NoFile"), qSlicerFileDialog::Write);
193 }
194 
195 #endif
Q_INVOKABLE bool openDialog(qSlicerIO::IOFileType fileType, qSlicerFileDialog::IOAction action, qSlicerIO::IOProperties ioProperties=qSlicerIO::IOProperties(), vtkCollection *loadedNodes=nullptr)
QScopedPointer< qSlicerIOManagerPrivate > d_ptr
const QList< qSlicerFileReader * > & readers() const
Returns the list of registered readers.
bool openAddScalarOverlayDialog()
bool openAddFiberBundleDialog()
QString IOFileType
Definition: qSlicerIO.h:52
virtual Q_INVOKABLE bool loadNodes(const qSlicerIO::IOFileType &fileType, const qSlicerIO::IOProperties &parameters, vtkCollection *loadedNodes=nullptr, vtkMRMLMessageCollection *userMessages=nullptr)
qSlicerCoreIOManager Superclass
bool openAddColorTableDialog()