// qfiledialog.sip generated by MetaSIP
//
// This file is part of the QtGui Python extension module.
//
// Copyright (c) 2015 Riverbank Computing Limited <info@riverbankcomputing.com>
// 
// This file is part of PyQt4.
// 
// This file may be used under the terms of the GNU General Public License
// version 3.0 as published by the Free Software Foundation and appearing in
// the file LICENSE included in the packaging of this file.  Please review the
// following information to ensure the GNU General Public License version 3.0
// requirements will be met: http://www.gnu.org/copyleft/gpl.html.
// 
// If you do not wish to use this file under the terms of the GPL version 3.0
// then you may purchase a commercial license.  For more information contact
// info@riverbankcomputing.com.
// 
// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.


%ModuleCode
#include <qfiledialog.h>
%End

class QFileDialog : QDialog
{
%TypeHeaderCode
#include <qfiledialog.h>
%End

public:
    enum ViewMode
    {
        Detail,
        List,
    };

    enum FileMode
    {
        AnyFile,
        ExistingFile,
        Directory,
        ExistingFiles,
        DirectoryOnly,
    };

    enum AcceptMode
    {
        AcceptOpen,
        AcceptSave,
    };

    enum DialogLabel
    {
        LookIn,
        FileName,
        FileType,
        Accept,
        Reject,
    };

    enum Option
    {
        ShowDirsOnly,
        DontResolveSymlinks,
        DontConfirmOverwrite,
        DontUseSheet,
        DontUseNativeDialog,
%If (Qt_4_5_0 -)
        ReadOnly,
%End
%If (Qt_4_5_0 -)
        HideNameFilterDetails,
%End
%If (Qt_4_8_6 - Qt_5_0_0)
        DontUseCustomDirectoryIcons,
%End
    };

    typedef QFlags<QFileDialog::Option> Options;
%If (- Qt_4_2_0)
    QFileDialog(QWidget *parent /TransferThis/, Qt::WFlags f);
%End
%If (Qt_4_2_0 -)
    QFileDialog(QWidget *parent /TransferThis/, Qt::WindowFlags f);
%End
    QFileDialog(QWidget *parent /TransferThis/ = 0, const QString &caption /DocValue="Py_v3:''"/ = QString(), const QString &directory /DocValue="Py_v3:''"/ = QString(), const QString &filter /DocValue="Py_v3:''"/ = QString());
    virtual ~QFileDialog();
    void setDirectory(const QString &directory);
    void setDirectory(const QDir &adirectory);
    QDir directory() const;
    void selectFile(const QString &filename);
    QStringList selectedFiles() const;
%If (- Qt_5_0_0)
    void setFilter(const QString &filter);
%End
%If (- Qt_5_0_0)
    void setFilters(const QStringList &filters);
%End
%If (- Qt_5_0_0)
    QStringList filters() const;
%End
%If (- Qt_5_0_0)
    void selectFilter(const QString &filter);
%End
%If (- Qt_5_0_0)
    QString selectedFilter() const;
%End
    void setViewMode(QFileDialog::ViewMode mode);
    QFileDialog::ViewMode viewMode() const;
    void setFileMode(QFileDialog::FileMode mode);
    QFileDialog::FileMode fileMode() const;
    void setAcceptMode(QFileDialog::AcceptMode mode);
    QFileDialog::AcceptMode acceptMode() const;
    void setReadOnly(bool enabled);
    bool isReadOnly() const;
    void setResolveSymlinks(bool enabled);
    bool resolveSymlinks() const;
    void setConfirmOverwrite(bool enabled);
    bool confirmOverwrite() const;
    void setDefaultSuffix(const QString &suffix);
    QString defaultSuffix() const;
    void setHistory(const QStringList &paths);
    QStringList history() const;
    void setItemDelegate(QAbstractItemDelegate *delegate /KeepReference/);
    QAbstractItemDelegate *itemDelegate() const;
    void setIconProvider(QFileIconProvider *provider /KeepReference/);
    QFileIconProvider *iconProvider() const;
    void setLabelText(QFileDialog::DialogLabel label, const QString &text);
    QString labelText(QFileDialog::DialogLabel label) const;

signals:
    void currentChanged(const QString &path);
%If (Qt_4_3_0 -)
    void directoryEntered(const QString &directory);
%End
    void filesSelected(const QStringList &files);
%If (Qt_4_3_0 -)
    void filterSelected(const QString &filter);
%End
%If (Qt_4_5_0 -)
    void fileSelected(const QString &file);
%End

public:
    static QString getExistingDirectory(QWidget *parent = 0, const QString &caption /DocValue="Py_v3:''"/ = QString(), const QString &directory /DocValue="Py_v3:''"/ = QString(), QFlags<QFileDialog::Option> options = ShowDirsOnly) /ReleaseGIL/;
    static QString getOpenFileName(QWidget *parent = 0, const QString &caption /DocValue="Py_v3:''"/ = QString(), const QString &directory /DocValue="Py_v3:''"/ = QString(), const QString &filter /DocValue="Py_v3:''"/ = QString(), Options options = 0) /API=QString:2 - , ReleaseGIL/;
%MethodCode
        Py_BEGIN_ALLOW_THREADS
        
        // Pass a 0 filter return.
        sipRes = new QString(QFileDialog::getOpenFileName(a0, *a1, *a2, *a3, 0, *a4));
        
        Py_END_ALLOW_THREADS
%End

    static QString getOpenFileName(QWidget *parent = 0, const QString &caption /DocValue="Py_v3:''"/ = QString(), const QString &directory /DocValue="Py_v3:''"/ = QString(), const QString &filter /DocValue="Py_v3:''"/ = QString(), QString *selectedFilter = 0, QFlags<QFileDialog::Option> options = 0) /API=QString: - 2,ReleaseGIL/;
    static SIP_PYTUPLE getOpenFileNameAndFilter(QWidget *parent = 0, const QString &caption /DocValue="Py_v3:''"/ = QString(), const QString &directory /DocValue="Py_v3:''"/ = QString(), const QString &filter /DocValue="Py_v3:''"/ = QString(), const QString &initialFilter /DocValue="Py_v3:''"/ = QString(), Options options = 0) /DocType="Py_v3:(str, str);(QString, QString)", ReleaseGIL/;
%MethodCode
        QString *name;
        QString *filter = new QString(*a4);
        
        Py_BEGIN_ALLOW_THREADS
        
        name = new QString(QFileDialog::getOpenFileName(a0, *a1, *a2, *a3, filter, *a5));
        
        Py_END_ALLOW_THREADS
        
        PyObject *name_obj = sipConvertFromNewType(name, sipType_QString, NULL);
        PyObject *filter_obj = sipConvertFromNewType(filter, sipType_QString, NULL);
        
        if (name_obj && filter_obj)
        {
        #if PY_VERSION_HEX >= 0x02040000
            sipRes = PyTuple_Pack(2, name_obj, filter_obj);
        #else
            sipRes = Py_BuildValue("(OO)", name_obj, filter_obj);
        #endif
        }
        
        Py_XDECREF(name_obj);
        Py_XDECREF(filter_obj);
%End

    static QStringList getOpenFileNames(QWidget *parent = 0, const QString &caption /DocValue="Py_v3:''"/ = QString(), const QString &directory /DocValue="Py_v3:''"/ = QString(), const QString &filter /DocValue="Py_v3:''"/ = QString(), Options options = 0) /API=QString:2 - , ReleaseGIL/;
%MethodCode
        Py_BEGIN_ALLOW_THREADS
        
        // Pass a 0 filter return.
        sipRes = new QStringList(QFileDialog::getOpenFileNames(a0, *a1, *a2, *a3, 0, *a4));
        
        Py_END_ALLOW_THREADS
%End

    static QStringList getOpenFileNames(QWidget *parent = 0, const QString &caption /DocValue="Py_v3:''"/ = QString(), const QString &directory /DocValue="Py_v3:''"/ = QString(), const QString &filter /DocValue="Py_v3:''"/ = QString(), QString *selectedFilter = 0, QFlags<QFileDialog::Option> options = 0) /API=QString: - 2,ReleaseGIL/;
    static SIP_PYTUPLE getOpenFileNamesAndFilter(QWidget *parent = 0, const QString &caption /DocValue="Py_v3:''"/ = QString(), const QString &directory /DocValue="Py_v3:''"/ = QString(), const QString &filter /DocValue="Py_v3:''"/ = QString(), const QString &initialFilter /DocValue="Py_v3:''"/ = QString(), Options options = 0) /DocType="Py_v3:(str, str);(QString, QString)", ReleaseGIL/;
%MethodCode
        QStringList *names;
        QString *filter = new QString(*a4);
        
        Py_BEGIN_ALLOW_THREADS
        
        names = new QStringList(QFileDialog::getOpenFileNames(a0, *a1, *a2, *a3, filter, *a5));
        
        Py_END_ALLOW_THREADS
        
        PyObject *names_obj = sipConvertFromNewType(names, sipType_QStringList, NULL);
        PyObject *filter_obj = sipConvertFromNewType(filter, sipType_QString, NULL);
        
        if (names_obj && filter_obj)
        {
        #if PY_VERSION_HEX >= 0x02040000
            sipRes = PyTuple_Pack(2, names_obj, filter_obj);
        #else
            sipRes = Py_BuildValue("(OO)", names_obj, filter_obj);
        #endif
        }
        
        Py_XDECREF(names_obj);
        Py_XDECREF(filter_obj);
%End

    static QString getSaveFileName(QWidget *parent = 0, const QString &caption /DocValue="Py_v3:''"/ = QString(), const QString &directory /DocValue="Py_v3:''"/ = QString(), const QString &filter /DocValue="Py_v3:''"/ = QString(), Options options = 0) /API=QString:2 - , ReleaseGIL/;
%MethodCode
        Py_BEGIN_ALLOW_THREADS
        
        // Pass a 0 filter return.
        sipRes = new QString(QFileDialog::getSaveFileName(a0, *a1, *a2, *a3, 0, *a4));
        
        Py_END_ALLOW_THREADS
%End

    static QString getSaveFileName(QWidget *parent = 0, const QString &caption /DocValue="Py_v3:''"/ = QString(), const QString &directory /DocValue="Py_v3:''"/ = QString(), const QString &filter /DocValue="Py_v3:''"/ = QString(), QString *selectedFilter = 0, QFlags<QFileDialog::Option> options = 0) /API=QString: - 2,ReleaseGIL/;
    static SIP_PYTUPLE getSaveFileNameAndFilter(QWidget *parent = 0, const QString &caption /DocValue="Py_v3:''"/ = QString(), const QString &directory /DocValue="Py_v3:''"/ = QString(), const QString &filter /DocValue="Py_v3:''"/ = QString(), const QString &initialFilter /DocValue="Py_v3:''"/ = QString(), Options options = 0) /DocType="Py_v3:(str, str);(QString, QString)", ReleaseGIL/;
%MethodCode
        QString *name;
        QString *filter = new QString(*a4);
        
        Py_BEGIN_ALLOW_THREADS
        
        name = new QString(QFileDialog::getSaveFileName(a0, *a1, *a2, *a3, filter, *a5));
        
        Py_END_ALLOW_THREADS
        
        PyObject *name_obj = sipConvertFromNewType(name, sipType_QString, NULL);
        PyObject *filter_obj = sipConvertFromNewType(filter, sipType_QString, NULL);
        
        if (name_obj && filter_obj)
        {
        #if PY_VERSION_HEX >= 0x02040000
            sipRes = PyTuple_Pack(2, name_obj, filter_obj);
        #else
            sipRes = Py_BuildValue("(OO)", name_obj, filter_obj);
        #endif
        }
        
        Py_XDECREF(name_obj);
        Py_XDECREF(filter_obj);
%End

protected:
    virtual void done(int result);
    virtual void accept();
%If (Qt_4_3_0 -)
    virtual void changeEvent(QEvent *e);
%End

public:
%If (Qt_4_3_0 -)
    void setSidebarUrls(const QList<QUrl> &urls);
%End
%If (Qt_4_3_0 -)
    QList<QUrl> sidebarUrls() const;
%End
%If (Qt_4_3_0 -)
    QByteArray saveState() const;
%End
%If (Qt_4_3_0 -)
    bool restoreState(const QByteArray &state);
%End
%If (Qt_4_3_0 -)
    void setProxyModel(QAbstractProxyModel *model /Transfer/);
%End
%If (Qt_4_3_0 -)
    QAbstractProxyModel *proxyModel() const;
%End
%If (Qt_4_4_0 -)
    void setNameFilterDetailsVisible(bool enabled);
%End
%If (Qt_4_4_0 -)
    bool isNameFilterDetailsVisible() const;
%End
%If (Qt_4_4_0 -)
    void setNameFilter(const QString &filter);
%End
%If (Qt_4_4_0 -)
    void setNameFilters(const QStringList &filters);
%End
%If (Qt_4_4_0 -)
    QStringList nameFilters() const;
%End
%If (Qt_4_4_0 -)
    void selectNameFilter(const QString &filter);
%End
%If (Qt_4_4_0 -)
    QString selectedNameFilter() const;
%End
%If (Qt_4_4_0 -)
    QFlags<QDir::Filter> filter() const;
%End
%If (Qt_4_4_0 -)
    void setFilter(QFlags<QDir::Filter> filters);
%End
%If (Qt_4_5_0 -)
    void setOption(QFileDialog::Option option, bool on = true);
%End
%If (Qt_4_5_0 -)
    bool testOption(QFileDialog::Option option) const;
%End
%If (Qt_4_5_0 -)
    void setOptions(QFlags<QFileDialog::Option> options);
%End
%If (Qt_4_5_0 -)
    QFlags<QFileDialog::Option> options() const;
%End
%If (Qt_5_0_0 -)
    virtual void open();
%End
%If (Qt_4_5_0 - Qt_5_0_0)
    void open();
%End
%If (Qt_4_5_0 -)
    void open(SIP_RXOBJ_CON receiver, SIP_SLOT_CON() member) [void (QObject *receiver, const char *member)];
%End
%If (Qt_4_5_0 -)
    virtual void setVisible(bool visible);
%End

private:
    QFileDialog(const QFileDialog &);
};

QFlags<QFileDialog::Option> operator|(QFileDialog::Option f1, QFlags<QFileDialog::Option> f2);
