diff -r 000000000000 -r 4f2f89ce4247 WebKit/wx/WebFrame.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WebKit/wx/WebFrame.h Fri Sep 17 09:02:29 2010 +0300 @@ -0,0 +1,160 @@ +/* + * Copyright (C) 2007 Kevin Ollivier + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY + * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef WXWEBFRAME_H +#define WXWEBFRAME_H + +#include "wx/wxprec.h" +#ifndef WX_PRECOMP + #include "wx/wx.h" +#endif + +#include "WebKitDefines.h" + +class WebFramePrivate; +class WebViewFrameData; +class wxWebView; + +namespace WebCore { + class ChromeClientWx; + class FrameLoaderClientWx; + class EditorClientWx; + class Frame; +} + +class WXDLLIMPEXP_WEBKIT wxWebViewDOMElementInfo +{ +public: + wxWebViewDOMElementInfo(); + + ~wxWebViewDOMElementInfo() { } + + wxString GetTagName() const { return m_tagName; } + void SetTagName(const wxString& name) { m_tagName = name; } + + bool IsSelected() const { return m_isSelected; } + void SetSelected(bool sel) { m_isSelected = sel; } + + wxString GetText() const { return m_text; } + void SetText(const wxString& text) { m_text = text; } + + wxString GetImageSrc() const { return m_imageSrc; } + void SetImageSrc(const wxString& src) { m_imageSrc = src; } + + wxString GetLink() const { return m_link; } + void SetLink(const wxString& link) { m_link = link; } + +private: + void* m_domElement; + bool m_isSelected; + wxString m_tagName; + wxString m_text; + wxString m_imageSrc; + wxString m_link; +}; + +// based on enums in WebCore/dom/Document.h +enum wxWebKitParseMode { Compat, AlmostStrict, Strict, NoDocument }; + +class WXDLLIMPEXP_WEBKIT wxWebFrame +{ + // ChromeClientWx needs to get the Page* stored by the wxWebView + // for the createWindow function. + friend class WebCore::ChromeClientWx; + friend class WebCore::FrameLoaderClientWx; + friend class WebCore::EditorClientWx; + friend class wxWebView; + +public: + wxWebFrame(wxWebView* container, wxWebFrame* parent = NULL, WebViewFrameData* data = NULL); + + ~wxWebFrame(); + + void LoadURL(const wxString& url); + bool GoBack(); + bool GoForward(); + void Stop(); + void Reload(); + + bool CanGoBack(); + bool CanGoForward(); + + bool CanCut(); + bool CanCopy(); + bool CanPaste(); + + void Cut(); + void Copy(); + void Paste(); + + bool CanUndo(); + bool CanRedo(); + + void Undo(); + void Redo(); + + wxString GetPageSource(); + void SetPageSource(const wxString& source, const wxString& baseUrl = wxEmptyString); + + wxString GetInnerText(); + wxString GetAsMarkup(); + wxString GetExternalRepresentation(); + + wxString RunScript(const wxString& javascript); + + bool FindString(const wxString& string, bool forward = true, + bool caseSensitive = false, bool wrapSelection = true, + bool startInSelection = true); + + bool CanIncreaseTextSize() const; + void IncreaseTextSize(); + bool CanDecreaseTextSize() const; + void DecreaseTextSize(); + void ResetTextSize(); + void MakeEditable(bool enable); + bool IsEditable() const { return m_isEditable; } + + WebCore::Frame* GetFrame(); + + wxWebViewDOMElementInfo HitTest(const wxPoint& post) const; + + bool ShouldClose() const; + + wxWebKitParseMode GetParseMode() const; + + void GrantUniversalAccess(); + +private: + float m_textMagnifier; + bool m_isEditable; + bool m_isInitialized; + bool m_beingDestroyed; + WebFramePrivate* m_impl; + +}; + +#endif // ifndef WXWEBFRAME_H