106 lines
3.2 KiB
C
106 lines
3.2 KiB
C
|
|
||
|
|
||
|
#ifndef FILEFIELD_H
|
||
|
#define FILEFIELD_H
|
||
|
|
||
|
#include "tcommon.h"
|
||
|
#include <QWidget>
|
||
|
#include <QFileDialog>
|
||
|
#include "tfilepath.h"
|
||
|
#include "toonzqt/lineedit.h"
|
||
|
|
||
|
#undef DVAPI
|
||
|
#undef DVVAR
|
||
|
#ifdef TOONZQT_EXPORTS
|
||
|
#define DVAPI DV_EXPORT_API
|
||
|
#define DVVAR DV_EXPORT_VAR
|
||
|
#else
|
||
|
#define DVAPI DV_IMPORT_API
|
||
|
#define DVVAR DV_IMPORT_VAR
|
||
|
#endif
|
||
|
|
||
|
// forward declaration
|
||
|
class QPushButton;
|
||
|
|
||
|
//=============================================================================
|
||
|
|
||
|
namespace DVGui
|
||
|
{
|
||
|
|
||
|
//=============================================================================
|
||
|
/*! \class DVGui::FileField
|
||
|
\brief The FileField class provides an object to manage file browser.
|
||
|
|
||
|
Inherits \b QWidget.
|
||
|
|
||
|
The object FileField is composed of two part, a field \b LineEdit and a
|
||
|
button \b QPushButton. Click button to open a directory browser popup
|
||
|
that is used to choose a directory.
|
||
|
You can set in constructor default path.
|
||
|
Maximum height object is fixed to \b DVGui::WidgetHeight.
|
||
|
By default dialog permit user to select only folder, but using setFileMode()
|
||
|
you can indicate what the user may select in the file dialog, folder or file;
|
||
|
you can also set file type using setFilters().
|
||
|
*/
|
||
|
class DVAPI FileField : public QWidget
|
||
|
{
|
||
|
Q_OBJECT
|
||
|
|
||
|
LineEdit *m_field;
|
||
|
QStringList m_filters;
|
||
|
QFileDialog::FileMode m_fileMode;
|
||
|
QString m_windowTitle;
|
||
|
|
||
|
protected: //used in the child class for CleanupSettings
|
||
|
QPushButton *m_fileBrowseButton;
|
||
|
QString m_lastSelectedPath;
|
||
|
|
||
|
public:
|
||
|
/* N.B. Vedi il commento della classe BrowserPopupController in filebrowserpopup.cpp*/
|
||
|
class BrowserPopupController
|
||
|
{
|
||
|
public:
|
||
|
BrowserPopupController() {}
|
||
|
virtual ~BrowserPopupController() {}
|
||
|
virtual bool isExecute() { return true; };
|
||
|
virtual QString getPath() { return QString(); };
|
||
|
virtual void openPopup(QStringList, bool, QString){};
|
||
|
};
|
||
|
|
||
|
static BrowserPopupController *m_browserPopupController;
|
||
|
|
||
|
FileField(QWidget *parent = 0, QString path = QString(), bool readOnly = false);
|
||
|
~FileField() {}
|
||
|
|
||
|
/*! Set what the user may select in the file dialog:
|
||
|
\li QFileDialog::DirectoryOnly show only directory.
|
||
|
\li QFileDialog::AnyFile, QFileDialog::ExistingFile, QFileDialog::Directory, QFileDialog::ExistingFiles
|
||
|
show directory and file. */
|
||
|
void setFileMode(const QFileDialog::FileMode &fileMode);
|
||
|
/*! Set file type in dialog popup. */
|
||
|
void setFilters(const QStringList &filters);
|
||
|
void setValidator(const QValidator *v) { m_field->setValidator(v); }
|
||
|
QString getPath();
|
||
|
void setPath(const QString &path);
|
||
|
|
||
|
static void setBrowserPopupController(BrowserPopupController *controller);
|
||
|
static BrowserPopupController *getBrowserPopupController();
|
||
|
|
||
|
protected slots:
|
||
|
/*! Open a static file dialog popup to browse and choose directories. If a
|
||
|
directory is seleceted and choose, set field to this directory. */
|
||
|
//reimplemented in the "save in" filefield in CleanupSettings
|
||
|
virtual void browseDirectory();
|
||
|
|
||
|
signals:
|
||
|
/*! This signal is emitted when path in field change, or by field edit or by
|
||
|
browse popup. */
|
||
|
void pathChanged();
|
||
|
};
|
||
|
|
||
|
//-----------------------------------------------------------------------------
|
||
|
} //namespace DVGui
|
||
|
//-----------------------------------------------------------------------------
|
||
|
|
||
|
#endif // FILEFIELD_H
|