Slicer 5.9
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
qSlicerFileDialog.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 Julien Finet, Kitware Inc.
17 and was partially funded by NIH grant 3P41RR013218-12S1
18
19==============================================================================*/
20
21#ifndef __qSlicerFileDialog_h
22#define __qSlicerFileDialog_h
23
24// Qt includes
25#include <QObject>
26#include <QStringList>
27class QMimeData;
28class QDropEvent;
29
30// CTK includes
31#include <ctkPimpl.h>
32
33// Slicer includes
34#include "qSlicerIO.h"
35#include "qSlicerBaseQTGUIExport.h"
36
39//class qSlicerFileDialogPrivate;
41
42//------------------------------------------------------------------------------
43class Q_SLICER_BASE_QTGUI_EXPORT qSlicerFileDialog : public QObject
44{
45 Q_OBJECT
46 Q_ENUMS(IOAction)
47 Q_PROPERTY(QString description READ description)
48 Q_PROPERTY(QStringList loadedNodes READ loadedNodes)
49
50public:
51 typedef QObject Superclass;
52 qSlicerFileDialog(QObject* parent =nullptr);
53 ~qSlicerFileDialog() override;
54
55 virtual qSlicerIO::IOFileType fileType()const = 0;
56
59 virtual QString description()const = 0;
60
62 {
65 };
69 Q_INVOKABLE virtual bool exec(const qSlicerIO::IOProperties& ioProperties =
71
75 Q_INVOKABLE static QStringList nameFilters(qSlicerIO::IOFileType fileType =
76 QString("NoFile"));
77
82 Q_INVOKABLE virtual bool isMimeDataAccepted(const QMimeData*mimeData)const;
83
89 Q_INVOKABLE virtual void dropEvent(QDropEvent *event);
90
94 virtual QStringList loadedNodes()const;
95private:
96// Q_DECLARE_PRIVATE(qSlicerFileDialog);
97 Q_DISABLE_COPY(qSlicerFileDialog);
98};
99
101
102class qSlicerStandardFileDialogPrivate;
103class ctkFileDialog;
104
105//------------------------------------------------------------------------------
106class Q_SLICER_BASE_QTGUI_EXPORT qSlicerStandardFileDialog
107: public qSlicerFileDialog
108{
109 Q_OBJECT
111 Q_PROPERTY(QString description READ description WRITE setDescription)
114 Q_PROPERTY(IOAction action READ action WRITE setAction)
115
116public:
117 qSlicerStandardFileDialog(QObject* parent=nullptr);
119
122 qSlicerIO::IOFileType fileType()const override;
123 virtual void setFileType(qSlicerIO::IOFileType fileType);
124
127 QString description() const override;
128 virtual void setDescription(const QString& description);
129
136
137 bool exec(const qSlicerIO::IOProperties& ioProperties =
138 qSlicerIO::IOProperties()) override;
139
141 Q_INVOKABLE static QStringList getOpenFileName(qSlicerIO::IOProperties ioProperties =
142 qSlicerIO::IOProperties());
143 Q_INVOKABLE static QString getExistingDirectory(qSlicerIO::IOProperties ioProperties =
144 qSlicerIO::IOProperties());
145
147 QStringList loadedNodes()const override;
148
149protected:
150 static ctkFileDialog* createFileDialog(const qSlicerIO::IOProperties& ioProperties =
151 qSlicerIO::IOProperties(), QWidget* parent = nullptr);
152
153 qSlicerIOOptions* options(const qSlicerIO::IOProperties& ioProperties)const;
154
155protected:
156 QScopedPointer<qSlicerStandardFileDialogPrivate> d_ptr;
157
158private:
159 Q_DECLARE_PRIVATE(qSlicerStandardFileDialog);
160 Q_DISABLE_COPY(qSlicerStandardFileDialog);
161};
162
163#endif
virtual Q_INVOKABLE bool exec(const qSlicerIO::IOProperties &ioProperties=qSlicerIO::IOProperties())=0
virtual Q_INVOKABLE void dropEvent(QDropEvent *event)
static Q_INVOKABLE QStringList nameFilters(qSlicerIO::IOFileType fileType=QString("NoFile"))
virtual QStringList loadedNodes() const
virtual Q_INVOKABLE bool isMimeDataAccepted(const QMimeData *mimeData) const
qSlicerFileDialog(QObject *parent=nullptr)
virtual qSlicerFileDialog::IOAction action() const =0
virtual qSlicerIO::IOFileType fileType() const =0
Base class for qSlicerFileReader and qSlicerFileWriter.
Definition qSlicerIO.h:44
QString IOFileType
Definition qSlicerIO.h:52
QVariantMap IOProperties
Definition qSlicerIO.h:53
static Q_INVOKABLE QString getExistingDirectory(qSlicerIO::IOProperties ioProperties=qSlicerIO::IOProperties())
qSlicerIO::IOFileType fileType
qSlicerStandardFileDialog(QObject *parent=nullptr)
virtual void setDescription(const QString &description)
QStringList loadedNodes() const override
Return the list of nodes created by exec().
virtual void setFileType(qSlicerIO::IOFileType fileType)
bool exec(const qSlicerIO::IOProperties &ioProperties=qSlicerIO::IOProperties()) override
static Q_INVOKABLE QStringList getOpenFileName(qSlicerIO::IOProperties ioProperties=qSlicerIO::IOProperties())
Properties available with IOProperties: fileMode, multipleFiles, fileType.
void setAction(IOAction action)
static ctkFileDialog * createFileDialog(const qSlicerIO::IOProperties &ioProperties=qSlicerIO::IOProperties(), QWidget *parent=nullptr)
QScopedPointer< qSlicerStandardFileDialogPrivate > d_ptr
qSlicerIOOptions * options(const qSlicerIO::IOProperties &ioProperties) const
Q_DECLARE_METATYPE(qSlicerExtensionsManagerModel::ServerAPI)