123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117 |
- /*=========================================================================
- Library: CTK
- Copyright (c) 2010 Kitware Inc.
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
- http://www.commontk.org/LICENSE
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
- =========================================================================*/
- #ifndef __ctkDirectoryButton_h
- #define __ctkDirectoryButton_h
- // Qt includes
- #include <QDir>
- #include <QFileDialog>
- // CTK includes
- #include <ctkPimpl.h>
- #include "CTKWidgetsExport.h"
- class ctkDirectoryButtonPrivate;
- /// ctkDirectoryButton is a QPushButton to select a directory path.
- /// The absolute path is displayed on the button. When clicked, a
- /// file dialog pops up to select a new directory path.
- /// \sa QPushButton, QDir
- class CTK_WIDGETS_EXPORT ctkDirectoryButton: public QWidget
- {
- Q_OBJECT
- Q_PROPERTY(QString directory READ directory WRITE setDirectory)
- Q_PROPERTY(QString caption READ caption WRITE setCaption)
- #if QT_VERSION >= 0x040700
- Q_PROPERTY(QFileDialog::Options options READ options WRITE setOptions)
- #else
- Q_PROPERTY(Options options READ options WRITE setOptions)
- // QFileDialog::Options is not a meta-type, we need to create our own.
- Q_FLAGS(Option Options);
- #endif
- public:
- #if QT_VERSION < 0x040700
- // QFileDialog::Options is not a meta-type, we need to create our own.
- enum Option
- {
- ShowDirsOnly = 0x00000001,
- DontResolveSymlinks = 0x00000002,
- DontConfirmOverwrite = 0x00000004,
- DontUseSheet = 0x00000008,
- DontUseNativeDialog = 0x00000010,
- ReadOnly = 0x00000020,
- HideNameFilterDetails = 0x00000040
- };
- Q_DECLARE_FLAGS(Options, Option)
- #endif
- /// Constructor
- /// Creates a default ctkDirectoryButton that points to the application
- /// current directory.
- ctkDirectoryButton(QWidget * parent = 0);
- /// Constructor
- /// Creates a ctkDirectoryButton that points to the given directory path
- ctkDirectoryButton(const QString& directory, QWidget * parent = 0);
- ctkDirectoryButton(const QIcon& icon, const QString& directory, QWidget * parent = 0);
- /// Set/get the current directory
- void setDirectory(const QString& directory);
- QString directory()const;
- ///
- /// The title of the file dialog used to select a new directory
- /// If caption is not set, internally use QWidget::tooltip()
- void setCaption(const QString& caption);
- const QString& caption()const;
- /// Options of the file dialog pop up.
- /// \sa QFileDialog::getExistingDirectory
- #if QT_VERSION >= 0x040700
- void setOptions(const QFileDialog::Options& options);
- const QFileDialog::Options& options()const;
- #else
- void setOptions(const Options& options);
- const Options& options()const;
- #endif
- public slots:
- /// browse() opens a pop up where the user can select a new directory for the
- /// button. browse() is automatically called when the button is clicked.
- void browse();
- signals:
- /// directoryChanged is emitted when the current directory changes.
- /// Programatically or by the user via the file dialog that pop up when
- /// clicking on the button.
- void directoryChanged(const QString&);
- /// directorySelected() is emitted anytime the current directory is set
- /// (even if the new directory is the same than the current value)
- void directorySelected(const QString&);
- private:
- CTK_DECLARE_PRIVATE(ctkDirectoryButton);
- };
- #if QT_VERSION < 0x040700
- Q_DECLARE_OPERATORS_FOR_FLAGS(ctkDirectoryButton::Options);
- #endif
- #endif
|