pqFileChooserWidget.h
Go to the documentation of this file.
1 // SPDX-FileCopyrightText: Copyright (c) Kitware Inc.
2 // SPDX-FileCopyrightText: Copyright (c) Sandia Corporation
3 // SPDX-License-Identifier: BSD-3-Clause
4 
5 #ifndef pqFileChooserWidget_h
6 #define pqFileChooserWidget_h
7 
8 #include "pqComponentsModule.h"
9 #include "pqQtDeprecated.h"
10 
11 #include <QString>
12 #include <QStringList>
13 #include <QWidget>
14 
15 class QLineEdit;
16 class pqServer;
17 
27 {
28  Q_OBJECT
29  Q_PROPERTY(QStringList filenames READ filenames WRITE setFilenames USER true)
30  Q_PROPERTY(QString singleFilename READ singleFilename WRITE setSingleFilename)
31  Q_PROPERTY(QString extension READ extension WRITE setExtension)
32  Q_PROPERTY(bool useDirectoryMode READ useDirectoryMode WRITE setUseDirectoryMode)
33  Q_PROPERTY(bool forceSingleFile READ forceSingleFile WRITE setForceSingleFile)
34  Q_PROPERTY(bool acceptAnyFile READ acceptAnyFile WRITE setAcceptAnyFile)
35 
36 public:
40  pqFileChooserWidget(QWidget* p = nullptr);
44  ~pqFileChooserWidget() override;
45 
49  QStringList filenames() const;
53  // this doesn't verify that any of the filenames being passed
54  // in are valid for the mode or actually exist on the server. That
55  // must be down be what ever calls this method
56  void setFilenames(const QStringList&);
57 
59 
63  QString singleFilename() const;
64  void setSingleFilename(const QString&);
66 
70  QString extension();
74  void setExtension(const QString&);
75 
79  bool forceSingleFile() { return this->ForceSingleFile; }
80  void setForceSingleFile(bool flag)
81  {
82  this->ForceSingleFile = flag;
83  this->setFilenames(this->filenames());
84  }
85 
89  bool useDirectoryMode() { return this->UseDirectoryMode; }
90  void setUseDirectoryMode(bool flag)
91  {
92  this->UseDirectoryMode = flag;
93  this->setFilenames(this->filenames());
94  }
95 
99  bool acceptAnyFile() { return this->AcceptAnyFile; }
100  void setAcceptAnyFile(bool flag)
101  {
102  this->AcceptAnyFile = flag;
103  this->setFilenames(this->filenames());
104  }
105 
107 
111  void setTitle(const QString& ttle) { this->Title = ttle; }
112  const QString& title() const { return this->Title; }
114 
119  void setServer(pqServer* server);
120  pqServer* server();
121 
126  static QStringList splitFilenames(const QString& filesString)
127  {
128  return filesString.split(";", PV_QT_SKIP_EMPTY_PARTS);
129  }
130  static QString joinFilenames(const QStringList& filesList) { return filesList.join(";"); }
131 
132 Q_SIGNALS:
137  void filenamesChanged(const QStringList&);
138  void filenameChanged(const QString&);
139 
140 protected Q_SLOTS:
144  void chooseFile();
148  void handleFileLineEditChanged(const QString& fileString);
149 
150 protected: // NOLINT(readability-redundant-access-specifiers)
151  QString Extension;
152  QLineEdit* LineEdit;
157  QStringList FilenameList;
159  QString Title;
160 
165  void emitFilenamesChanged(const QStringList& fileList);
166 };
167 
168 #endif // pqFileChooserWidget_h
static QString joinFilenames(const QStringList &filesList)
#define PQCOMPONENTS_EXPORT
void setTitle(const QString &ttle)
Get/set the title to use.
void setForceSingleFile(bool flag)
bool useDirectoryMode()
flag specifying whether this widget should use directory mode
static QStringList splitFilenames(const QString &filesString)
Converts between a list of file names and delimited string of filenames (which is shown in the line e...
void setUseDirectoryMode(bool flag)
void setAcceptAnyFile(bool flag)
#define PV_QT_SKIP_EMPTY_PARTS
#define const
Definition: zconf.h:238
const QString & title() const
Get/set the title to use.
bool acceptAnyFile()
flag specifying whether this widget should accept any file
input widget for files
pqServer (should be renamed to pqSession) is a pqServerManagerModelItem subclass that represents a vt...
Definition: pqServer.h:35