KSeExpr  4.0.4.0
ExprFileDialog.h
Go to the documentation of this file.
1 // SPDX-FileCopyrightText: 2011-2019 Disney Enterprises, Inc.
2 // SPDX-License-Identifier: LicenseRef-Apache-2.0
3 // SPDX-FileCopyrightText: 2020 L. E. Segovia <amy@amyspark.me>
4 // SPDX-License-Identifier: GPL-3.0-or-later
5 
6 // NOTE: This is based on Dan's paint3d FileDialog
7 
8 #pragma once
9 
10 #include <QCheckBox>
11 #include <QComboBox>
12 #include <QFileDialog>
13 #include <QLabel>
14 #include <QLineEdit>
15 #include <QPixmap>
16 #include <QPushButton>
17 #include <QVBoxLayout>
18 #include <atomic>
19 
20 class ExprPreviewWidget : public QWidget
21 {
22 public:
23  ExprPreviewWidget(QWidget *parent);
24  void makePreview(const QString &path);
25  void reset()
26  {
27  _pm->setPixmap(QPixmap());
28  }
29 
30 private:
31  QLabel *_pm;
32 };
33 
34 class ExprFileDialog : public QFileDialog
35 {
36  Q_OBJECT
37 public:
38  ExprFileDialog(QWidget *parent = nullptr);
39  void addLookInEntries(const QStringList &paths);
40  void saveLookInEntries();
41  void restoreLookInEntries();
42  QString getOpenFileName(const QString &caption = QString(), const QString &startWith = QString(), const QString &filter = QString());
43  QString getExistingDirectory(const QString &caption = QString(), const QString &startWith = QString(), const QString &filter = QString());
44  QString getExistingOrNewDirectory(const QString &caption = QString(), const QString &startWith = QString(), const QString &filter = QString());
45  QStringList getOpenFileNames(const QString &caption = QString(), const QString &startWith = QString(), const QString &filter = QString());
46  QString getSaveFileName(const QString &caption = QString(), const QString &startWith = QString(), const QString &filter = QString());
47  void setPreview();
48  void resetPreview();
49  void addCheckBox(const QString &s);
50  void addFavoritesButton(const QString &dirname, const QString &linkname, const QString &linkdir);
51  bool checkBoxStatus();
52  void showCheckBox();
53  void hideCheckBox();
54  void addComboBox(const QString &s, const QStringList &sl);
55  void showComboBox();
56  void hideComboBox();
57  QComboBox *getComboBox()
58  {
59  return _combo;
60  }
61  void setButtonName(const QString &str);
62  void addSidebarShortcut(const QString &s);
63 
64 private Q_SLOTS:
65  void handleOk();
66  void editReturnPress();
67  void gotoFavorites();
68  void selChanged(const QString &path);
69  void resetDir()
70  {
71  if (!_temppath.isEmpty())
72  setDirectory(_temppath);
73  _temppath = QString();
74  }
75 
76 private:
78  QString _temppath;
79  QStringList _lookInList;
80  QLineEdit *_nameEdit {nullptr};
81  QPushButton *_okButton {nullptr};
82  std::atomic<bool> _createDir{};
83  ExprPreviewWidget *_pw {nullptr};
84  QCheckBox *_cb {nullptr};
85  QLabel *_combolabel {nullptr};
86  QComboBox *_combo {nullptr};
87 };
QString _workingDirectory
QStringList getOpenFileNames(const QString &caption=QString(), const QString &startWith=QString(), const QString &filter=QString())
QString getExistingDirectory(const QString &caption=QString(), const QString &startWith=QString(), const QString &filter=QString())
QString getExistingOrNewDirectory(const QString &caption=QString(), const QString &startWith=QString(), const QString &filter=QString())
void addLookInEntries(const QStringList &paths)
void addFavoritesButton(const QString &dirname, const QString &linkname, const QString &linkdir)
QComboBox * getComboBox()
ExprPreviewWidget * _pw
QComboBox * _combo
QLabel * _combolabel
void setButtonName(const QString &str)
void addComboBox(const QString &s, const QStringList &sl)
void addSidebarShortcut(const QString &s)
void restoreLookInEntries()
void addCheckBox(const QString &s)
QString getSaveFileName(const QString &caption=QString(), const QString &startWith=QString(), const QString &filter=QString())
QLineEdit * _nameEdit
std::atomic< bool > _createDir
QStringList _lookInList
QPushButton * _okButton
ExprFileDialog(QWidget *parent=nullptr)
QCheckBox * _cb
QString getOpenFileName(const QString &caption=QString(), const QString &startWith=QString(), const QString &filter=QString())
void selChanged(const QString &path)
void makePreview(const QString &path)
ExprPreviewWidget(QWidget *parent)