#ifndef WebFrame_h
#define WebFrame_h
#include "wx/wxprec.h"
#ifndef WX_PRECOMP
#include "wx/wx.h"
#endif
#include "WebKitDefines.h"
class WebDOMElement;
class WebDOMNode;
#include "WebDOMSelection.h"
class Element;
class WebFramePrivate;
class WebViewFrameData;
namespace WebCore {
class ChromeClientWx;
class EditorClientWx;
class FrameLoaderClientWx;
class Frame;
}
namespace WebKit {
class WebView;
class WXDLLIMPEXP_WEBKIT WebViewDOMElementInfo
{
public:
WebViewDOMElementInfo();
WebViewDOMElementInfo(const WebViewDOMElementInfo& other);
~WebViewDOMElementInfo();
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; }
WebDOMNode* GetInnerNode() { return m_innerNode; }
void SetInnerNode(WebDOMNode* node) { m_innerNode = node; }
WebDOMElement* GetURLElement() { return m_urlElement; }
void SetURLElement(WebDOMElement* url) { m_urlElement = url; }
private:
WebDOMNode* m_innerNode;
WebDOMElement* m_urlElement;
bool m_isSelected;
wxString m_tagName;
wxString m_text;
wxString m_imageSrc;
wxString m_link;
};
enum WebKitCompatibilityMode { QuirksMode, LimitedQuirksMode, NoQuirksMode };
class WXDLLIMPEXP_WEBKIT WebFrame
{
public:
friend class WebCore::ChromeClientWx;
friend class WebCore::FrameLoaderClientWx;
friend class WebCore::EditorClientWx;
friend class WebView;
public:
WebFrame(WebView* container, WebFrame* parent = 0, WebViewFrameData* data = 0);
~WebFrame();
void LoadURL(const wxString& url);
wxString GetURL() const;
bool GoBack();
bool GoForward();
void Stop();
void Reload();
void Print(bool showDialog = true);
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 GetName();
wxString GetPageSource();
void SetPageSource(const wxString& source, const wxString& baseUrl = wxEmptyString, const wxString& mimetype = wxT("text/html"));
wxString GetInnerText();
wxString GetAsMarkup();
wxString GetExternalRepresentation();
WebKitSelection GetSelection();
wxString GetSelectionAsHTML();
wxString GetSelectionAsText();
wxString RunScript(const wxString& javascript);
bool ExecuteEditCommand(const wxString& command, const wxString& parameter = wxEmptyString);
EditState GetEditCommandState(const wxString& command) const;
wxString GetEditCommandValue(const wxString& command) const;
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;
WebCore::Frame* GetFrame();
WebViewDOMElementInfo HitTest(const wxPoint& post) const;
bool ShouldClose() const;
WebKitCompatibilityMode GetCompatibilityMode() const;
void GrantUniversalAccess();
private:
float m_textMagnifier;
bool m_isInitialized;
bool m_beingDestroyed;
WebFramePrivate* m_impl;
};
#ifndef SWIG
WebFrame* kit(WebCore::Frame*);
#endif
}
#endif // ifndef WebFrame_h