/* * 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 class WebFramePrivate; class WebViewFrameData; class wxWebView; namespace WebCore { class ChromeClientWx; class FrameLoaderClientWx; class EditorClientWx; class Frame; } #ifndef SWIG #if !wxCHECK_VERSION(2,9,0) && wxCHECK_GCC_VERSION(4,0) #define WXDLLIMPEXP_WEBKIT __attribute__ ((visibility("default"))) #elif WXMAKINGDLL_WEBKIT #define WXDLLIMPEXP_WEBKIT WXEXPORT #elif defined(WXUSINGDLL_WEBKIT) #define WXDLLIMPEXP_WEBKIT WXIMPORT #endif #else #define WXDLLIMPEXP_WEBKIT #endif // SWIG 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; }; 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; } wxString GetPageTitle() const { return m_title; } void SetPageTitle(const wxString& title) { m_title = title; } WebCore::Frame* GetFrame(); wxWebViewDOMElementInfo HitTest(const wxPoint& post) const; private: float m_textMagnifier; bool m_isEditable; bool m_isInitialized; bool m_beingDestroyed; WebFramePrivate* m_impl; wxString m_title; }; #endif // ifndef WXWEBFRAME_H