Slicer 5.9
Slicer is a multi-platform, free and open source software package for visualization and medical image computing
Loading...
Searching...
No Matches
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 = qSlicerIO::IOProperties()) = 0;
70
74 Q_INVOKABLE static QStringList nameFilters(qSlicerIO::IOFileType fileType = QString("NoFile"));
75
80 Q_INVOKABLE virtual bool isMimeDataAccepted(const QMimeData* mimeData) const;
81
87 Q_INVOKABLE virtual void dropEvent(QDropEvent* event);
88
92 virtual QStringList loadedNodes() const;
93
94private:
95 // Q_DECLARE_PRIVATE(qSlicerFileDialog);
96 Q_DISABLE_COPY(qSlicerFileDialog);
97};
98
100
101class qSlicerStandardFileDialogPrivate;
102class ctkFileDialog;
103
104//------------------------------------------------------------------------------
105class Q_SLICER_BASE_QTGUI_EXPORT qSlicerStandardFileDialog : public qSlicerFileDialog
106{
107 Q_OBJECT
109 Q_PROPERTY(QString description READ description WRITE setDescription)
112 Q_PROPERTY(IOAction action READ action WRITE setAction)
113
114public:
115 qSlicerStandardFileDialog(QObject* parent = nullptr);
117
120 qSlicerIO::IOFileType fileType() const override;
121 virtual void setFileType(qSlicerIO::IOFileType fileType);
122
125 QString description() const override;
126 virtual void setDescription(const QString& description);
127
134
135 bool exec(const qSlicerIO::IOProperties& ioProperties = qSlicerIO::IOProperties()) override;
136
138 Q_INVOKABLE static QStringList getOpenFileName(qSlicerIO::IOProperties ioProperties = qSlicerIO::IOProperties());
139 Q_INVOKABLE static QString getExistingDirectory(qSlicerIO::IOProperties ioProperties = qSlicerIO::IOProperties());
140
142 QStringList loadedNodes() const override;
143
144protected:
145 static ctkFileDialog* createFileDialog(const qSlicerIO::IOProperties& ioProperties = qSlicerIO::IOProperties(), QWidget* parent = nullptr);
146
147 qSlicerIOOptions* options(const qSlicerIO::IOProperties& ioProperties) const;
148
149protected:
150 QScopedPointer<qSlicerStandardFileDialogPrivate> d_ptr;
151
152private:
153 Q_DECLARE_PRIVATE(qSlicerStandardFileDialog);
154 Q_DISABLE_COPY(qSlicerStandardFileDialog);
155};
156
157#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)