// qwebpage.sip generated by MetaSIP
//
// This file is part of the QtWebKit 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.


%If (Qt_4_4_0 -)
%ModuleCode
#include <qwebpage.h>
%End
%End

%If (Qt_4_4_0 -)

class QWebPage : QObject
{
%TypeHeaderCode
#include <qwebpage.h>
%End

public:
    enum NavigationType
    {
        NavigationTypeLinkClicked,
        NavigationTypeFormSubmitted,
        NavigationTypeBackOrForward,
        NavigationTypeReload,
        NavigationTypeFormResubmitted,
        NavigationTypeOther,
    };

    enum WebAction
    {
        NoWebAction,
        OpenLink,
        OpenLinkInNewWindow,
        OpenFrameInNewWindow,
        DownloadLinkToDisk,
        CopyLinkToClipboard,
        OpenImageInNewWindow,
        DownloadImageToDisk,
        CopyImageToClipboard,
        Back,
        Forward,
        Stop,
        Reload,
        Cut,
        Copy,
        Paste,
        Undo,
        Redo,
        MoveToNextChar,
        MoveToPreviousChar,
        MoveToNextWord,
        MoveToPreviousWord,
        MoveToNextLine,
        MoveToPreviousLine,
        MoveToStartOfLine,
        MoveToEndOfLine,
        MoveToStartOfBlock,
        MoveToEndOfBlock,
        MoveToStartOfDocument,
        MoveToEndOfDocument,
        SelectNextChar,
        SelectPreviousChar,
        SelectNextWord,
        SelectPreviousWord,
        SelectNextLine,
        SelectPreviousLine,
        SelectStartOfLine,
        SelectEndOfLine,
        SelectStartOfBlock,
        SelectEndOfBlock,
        SelectStartOfDocument,
        SelectEndOfDocument,
        DeleteStartOfWord,
        DeleteEndOfWord,
        SetTextDirectionDefault,
        SetTextDirectionLeftToRight,
        SetTextDirectionRightToLeft,
        ToggleBold,
        ToggleItalic,
        ToggleUnderline,
        InspectElement,
%If (Qt_4_5_0 -)
        InsertParagraphSeparator,
%End
%If (Qt_4_5_0 -)
        InsertLineSeparator,
%End
%If (Qt_4_5_0 -)
        SelectAll,
%End
%If (Qt_4_6_0 -)
        ReloadAndBypassCache,
%End
%If (Qt_4_6_0 -)
        PasteAndMatchStyle,
%End
%If (Qt_4_6_0 -)
        RemoveFormat,
%End
%If (Qt_4_6_0 -)
        ToggleStrikethrough,
%End
%If (Qt_4_6_0 -)
        ToggleSubscript,
%End
%If (Qt_4_6_0 -)
        ToggleSuperscript,
%End
%If (Qt_4_6_0 -)
        InsertUnorderedList,
%End
%If (Qt_4_6_0 -)
        InsertOrderedList,
%End
%If (Qt_4_6_0 -)
        Indent,
%End
%If (Qt_4_6_0 -)
        Outdent,
%End
%If (Qt_4_6_0 -)
        AlignCenter,
%End
%If (Qt_4_6_0 -)
        AlignJustified,
%End
%If (Qt_4_6_0 -)
        AlignLeft,
%End
%If (Qt_4_6_0 -)
        AlignRight,
%End
%If (Qt_4_7_0 -)
        StopScheduledPageRefresh,
%End
%If (Qt_4_8_0 -)
        CopyImageUrlToClipboard,
%End
%If (Qt_5_0_0 -)
        OpenLinkInThisWindow,
%End
    };

    enum FindFlag
    {
        FindBackward,
        FindCaseSensitively,
        FindWrapsAroundDocument,
%If (Qt_4_6_0 -)
        HighlightAllOccurrences,
%End
    };

    typedef QFlags<QWebPage::FindFlag> FindFlags;

    enum LinkDelegationPolicy
    {
        DontDelegateLinks,
        DelegateExternalLinks,
        DelegateAllLinks,
    };

    enum WebWindowType
    {
        WebBrowserWindow,
        WebModalDialog,
    };

    explicit QWebPage(QObject *parent /TransferThis/ = 0);
    virtual ~QWebPage();
    QWebFrame *mainFrame() const;
    QWebFrame *currentFrame() const;
    QWebHistory *history() const;
    QWebSettings *settings() const;
    void setView(QWidget *view /KeepReference/);
    QWidget *view() const;
    bool isModified() const;
    QUndoStack *undoStack() const;
    void setNetworkAccessManager(QNetworkAccessManager *manager /KeepReference/);
    QNetworkAccessManager *networkAccessManager() const;
    void setPluginFactory(QWebPluginFactory *factory /KeepReference/);
    QWebPluginFactory *pluginFactory() const;
    quint64 totalBytes() const;
    quint64 bytesReceived() const;
    QString selectedText() const;
    QAction *action(QWebPage::WebAction action) const;
    virtual void triggerAction(QWebPage::WebAction action, bool checked = false);
    QSize viewportSize() const;
    void setViewportSize(const QSize &size) const;
    virtual bool event(QEvent *);
    bool focusNextPrevChild(bool next);
    QVariant inputMethodQuery(Qt::InputMethodQuery property) const;
    bool findText(const QString &subString, QFlags<QWebPage::FindFlag> options = 0);
    void setForwardUnsupportedContent(bool forward);
    bool forwardUnsupportedContent() const;
    void setLinkDelegationPolicy(QWebPage::LinkDelegationPolicy policy);
    QWebPage::LinkDelegationPolicy linkDelegationPolicy() const;
    void setPalette(const QPalette &palette);
    QPalette palette() const;
    bool swallowContextMenuEvent(QContextMenuEvent *event);
    void updatePositionDependentActions(const QPoint &pos);

    enum Extension
    {
%If (Qt_4_5_0 -)
        ChooseMultipleFilesExtension,
%End
%If (Qt_4_6_0 -)
        ErrorPageExtension,
%End
    };

    class ExtensionOption
    {
%TypeHeaderCode
#include <qwebpage.h>
%End
    };

    class ExtensionReturn
    {
%TypeHeaderCode
#include <qwebpage.h>
%End
    };

    virtual bool extension(QWebPage::Extension extension, const QWebPage::ExtensionOption *option = 0, QWebPage::ExtensionReturn *output = 0);
%VirtualCatcherCode
        const sipTypeDef *option_type = sipType_QWebPage_ExtensionOption;
        const sipTypeDef *return_type = sipType_QWebPage_ExtensionReturn;
        
        #if QT_VERSION >= 0x040500
        if (a0 == QWebPage::ChooseMultipleFilesExtension)
        {
            option_type = sipType_QWebPage_ChooseMultipleFilesExtensionOption;
            return_type = sipType_QWebPage_ChooseMultipleFilesExtensionReturn;
        }
        #if QT_VERSION >= 0x040600
        else if (a0 == QWebPage::ErrorPageExtension)
        {
            option_type = sipType_QWebPage_ErrorPageExtensionOption;
            return_type = sipType_QWebPage_ErrorPageExtensionReturn;
        }
        #endif
        #endif
        
        PyObject *res_obj = sipCallMethod(&sipIsErr, sipMethod, "FDD",
                a0, sipType_QWebPage_Extension,
                a1, option_type, NULL,
                a2, return_type, NULL);
        
        if (res_obj)
        {
            sipParseResult(&sipIsErr, sipMethod, res_obj, "b", &sipRes);
            Py_DECREF(res_obj);
        }
        else
        {
            sipIsErr = 1;
        }
%End

    virtual bool supportsExtension(QWebPage::Extension extension) const;

signals:
    void loadFinished(bool ok);
    void loadProgress(int progress);
    void loadStarted();
    void linkHovered(const QString &link, const QString &title, const QString &textContent);
    void statusBarMessage(const QString &text);
    void selectionChanged();
    void frameCreated(QWebFrame *frame);
    void geometryChangeRequested(const QRect &geom);
    void repaintRequested(const QRect &dirtyRect);
    void scrollRequested(int dx, int dy, const QRect &scrollViewRect);
    void windowCloseRequested();
    void printRequested(QWebFrame *frame);
    void linkClicked(const QUrl &url);
    void toolBarVisibilityChangeRequested(bool visible);
    void statusBarVisibilityChangeRequested(bool visible);
    void menuBarVisibilityChangeRequested(bool visible);
    void unsupportedContent(QNetworkReply *reply);
    void downloadRequested(const QNetworkRequest &request);
    void microFocusChanged();

protected:
    virtual QWebPage *createWindow(QWebPage::WebWindowType type);
    virtual QObject *createPlugin(const QString &classid, const QUrl &url, const QStringList &paramNames, const QStringList &paramValues);
    virtual bool acceptNavigationRequest(QWebFrame *frame, const QNetworkRequest &request, QWebPage::NavigationType type);
    virtual QString chooseFile(QWebFrame *originatingFrame, const QString &oldFile);
    virtual void javaScriptAlert(QWebFrame *originatingFrame, const QString &msg);
    virtual bool javaScriptConfirm(QWebFrame *originatingFrame, const QString &msg);
    virtual bool javaScriptPrompt(QWebFrame *originatingFrame, const QString &msg, const QString &defaultValue, QString *result /Out/) /API=QString:2 - /;
    virtual bool javaScriptPrompt(QWebFrame *originatingFrame, const QString &msg, const QString &defaultValue, QString *result /Constrained/) /API=QString: - 2/;
    virtual void javaScriptConsoleMessage(const QString &message, int lineNumber, const QString &sourceID);
    virtual QString userAgentForUrl(const QUrl &url) const;

public:
%If (Qt_4_5_0 -)
    void setContentEditable(bool editable);
%End
%If (Qt_4_5_0 -)
    bool isContentEditable() const;
%End
%If (Qt_4_5_0 -)
    QMenu *createStandardContextMenu() /Factory/;
%End
%If (Qt_4_5_0 -)

    class ChooseMultipleFilesExtensionOption : QWebPage::ExtensionOption
    {
%TypeHeaderCode
#include <qwebpage.h>
%End

    public:
        QWebFrame *parentFrame;
        QStringList suggestedFileNames;
    };

%End
%If (Qt_4_5_0 -)

    class ChooseMultipleFilesExtensionReturn : QWebPage::ExtensionReturn
    {
%TypeHeaderCode
#include <qwebpage.h>
%End

    public:
        QStringList fileNames;
    };

%End

signals:
%If (Qt_4_5_0 -)
    void contentsChanged();
%End
%If (Qt_4_5_0 -)
    void databaseQuotaExceeded(QWebFrame *frame, QString databaseName);
%End
%If (Qt_4_5_0 -)
    void saveFrameStateRequested(QWebFrame *frame, QWebHistoryItem *item);
%End
%If (Qt_4_5_0 -)
    void restoreFrameStateRequested(QWebFrame *frame);
%End

public:
%If (Qt_4_6_0 -)
    QWebFrame *frameAt(const QPoint &pos) const;
%End
%If (Qt_4_6_0 -)
    QSize preferredContentsSize() const;
%End
%If (Qt_4_6_0 -)
    void setPreferredContentsSize(const QSize &size) const;
%End
%If (Qt_4_6_0 -)

    enum ErrorDomain
    {
        QtNetwork,
        Http,
        WebKit,
    };

%End
%If (Qt_4_6_0 -)

    class ErrorPageExtensionOption : QWebPage::ExtensionOption
    {
%TypeHeaderCode
#include <qwebpage.h>
%End

    public:
        QUrl url;
        QWebFrame *frame;
        QWebPage::ErrorDomain domain;
        int error;
        QString errorString;
    };

%End
%If (Qt_4_6_0 -)

    class ErrorPageExtensionReturn : QWebPage::ExtensionReturn
    {
%TypeHeaderCode
#include <qwebpage.h>
%End

    public:
        ErrorPageExtensionReturn();
        QString contentType;
        QString encoding;
        QUrl baseUrl;
        QByteArray content;
    };

%End
%If (Qt_5_0_0 -)
    virtual bool shouldInterruptJavaScript();
%End

public slots:
%If (Qt_4_6_0 - Qt_5_0_0)
    bool shouldInterruptJavaScript();
%End

public:
%If (Qt_4_8_0 -)

    enum PermissionPolicy
    {
        PermissionUnknown,
        PermissionGrantedByUser,
        PermissionDeniedByUser,
    };

%End
%If (Qt_4_8_0 -)

    enum Feature
    {
        Notifications,
        Geolocation,
    };

%End
%If (Qt_4_8_0 -)

    class ViewportAttributes
    {
%TypeHeaderCode
#include <qwebpage.h>
%End

    public:
        ViewportAttributes();
        ViewportAttributes(const QWebPage::ViewportAttributes &other);
        ~ViewportAttributes();
        qreal initialScaleFactor() const;
        qreal minimumScaleFactor() const;
        qreal maximumScaleFactor() const;
        qreal devicePixelRatio() const;
        bool isUserScalable() const;
        bool isValid() const;
%If (Qt_5_0_0 -)
        QSizeF size() const;
%End
%If (- Qt_5_0_0)
        QSize size() const;
%End
    };

%End
%If (Qt_4_8_0 -)
    bool hasSelection() const;
%End
%If (Qt_4_8_0 -)
    QString selectedHtml() const;
%End
%If (Qt_4_8_0 -)
    QWebPage::ViewportAttributes viewportAttributesForSize(const QSize &availableSize) const;
%End
%If (Qt_4_8_0 -)
    void setActualVisibleContentRect(const QRect &rect) const;
%End
%If (Qt_4_8_0 -)
    void setFeaturePermission(QWebFrame *frame, QWebPage::Feature feature, QWebPage::PermissionPolicy policy);
%End
%If (Qt_4_8_0 -)
    QStringList supportedContentTypes() const;
%End
%If (Qt_4_8_0 -)
    bool supportsContentType(const QString &mimeType) const;
%End

signals:
%If (Qt_5_0_0 -)
    void applicationCacheQuotaExceeded(QWebSecurityOrigin *origin, quint64 defaultOriginQuota, quint64 totalSpaceNeeded);
%End
%If (Qt_4_8_0 - Qt_5_0_0)
    void applicationCacheQuotaExceeded(QWebSecurityOrigin *origin, quint64 defaultOriginQuota);
%End
%If (Qt_4_8_0 -)
    void viewportChangeRequested();
%End
%If (Qt_4_8_0 -)
    void featurePermissionRequested(QWebFrame *frame, QWebPage::Feature feature);
%End
%If (Qt_4_8_0 -)
    void featurePermissionRequestCanceled(QWebFrame *frame, QWebPage::Feature feature);
%End
};

%End
%If (Qt_4_4_0 -)
QFlags<QWebPage::FindFlag> operator|(QWebPage::FindFlag f1, QFlags<QWebPage::FindFlag> f2);
%End
