2 * Copyright (C) 2007 Kevin Ollivier <kevino@theolliviers.com>
6 * Redistribution and use in source and binary forms, with or without
7 * modification, are permitted provided that the following conditions
9 * 1. Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer.
11 * 2. Redistributions in binary form must reproduce the above copyright
12 * notice, this list of conditions and the following disclaimer in the
13 * documentation and/or other materials provided with the distribution.
15 * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
16 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
17 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
18 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR
19 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
20 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
21 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
22 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
23 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
25 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31 #include "wx/wxprec.h"
37 class WebViewFrameData;
45 #if WXMAKINGDLL_WEBKIT
46 #define WXDLLIMPEXP_WEBKIT WXEXPORT
47 #elif defined(WXUSINGDLL_WEBKIT)
48 #define WXDLLIMPEXP_WEBKIT WXIMPORT
50 #define WXDLLIMPEXP_WEBKIT
54 #define WXDLLIMPEXP_WEBKIT
57 class WXDLLIMPEXP_WEBKIT wxWebView : public wxScrolledWindow
59 // ChromeClientWx needs to get the Page* stored by the wxWebView
60 // for the createWindow function.
61 friend class WebCore::ChromeClientWx;
66 %pythonAppend wxWebView "self._setOORInfo(self)"
68 wxWebView(wxWindow* parent, int id = wxID_ANY,
69 const wxPoint& point = wxDefaultPosition,
70 const wxSize& size = wxDefaultSize,
71 WebViewFrameData* data = NULL); // For wxWebView internal data passing
77 void LoadURL(wxString url);
91 //bool CanGetPageSource();
92 wxString GetPageSource();
93 void SetPageSource(const wxString& source, const wxString& baseUrl = wxEmptyString);
95 wxString GetInnerText();
96 wxString GetAsMarkup();
97 wxString GetExternalRepresentation();
99 wxString RunScript(const wxString& javascript);
101 bool CanIncreaseTextSize() const;
102 void IncreaseTextSize();
103 bool CanDecreaseTextSize() const;
104 void DecreaseTextSize();
105 void MakeEditable(bool enable);
106 bool IsEditable() const { return m_isEditable; }
108 wxString GetPageTitle() const { return m_title; }
109 void SetPageTitle(const wxString& title) { m_title = title; }
113 // event handlers (these functions should _not_ be virtual)
114 void OnPaint(wxPaintEvent& event);
115 void OnSize(wxSizeEvent& event);
116 void OnMouseEvents(wxMouseEvent& event);
117 void OnKeyEvents(wxKeyEvent& event);
118 void OnSetFocus(wxFocusEvent& event);
119 void OnKillFocus(wxFocusEvent& event);
120 void OnActivate(wxActivateEvent& event);
123 // any class wishing to process wxWindows events must use this macro
125 DECLARE_EVENT_TABLE()
127 float m_textMagnifier;
129 bool m_isInitialized;
130 bool m_beingDestroyed;
131 WebViewPrivate* m_impl;
136 // ----------------------------------------------------------------------------
138 // ----------------------------------------------------------------------------
141 wxWEBVIEW_LOAD_STARTED = 1,
142 wxWEBVIEW_LOAD_NEGOTIATING = 2,
143 wxWEBVIEW_LOAD_REDIRECTING = 4,
144 wxWEBVIEW_LOAD_TRANSFERRING = 8,
145 wxWEBVIEW_LOAD_STOPPED = 16,
146 wxWEBVIEW_LOAD_FAILED = 32,
147 wxWEBVIEW_LOAD_DL_COMPLETED = 64,
148 wxWEBVIEW_LOAD_DOC_COMPLETED = 128,
149 wxWEBVIEW_LOAD_ONLOAD_HANDLED = 256,
150 wxWEBVIEW_LOAD_WINDOW_OBJECT_CLEARED = 512
154 wxWEBVIEW_NAV_LINK_CLICKED = 1,
155 wxWEBVIEW_NAV_BACK_NEXT = 2,
156 wxWEBVIEW_NAV_FORM_SUBMITTED = 4,
157 wxWEBVIEW_NAV_RELOAD = 8,
158 wxWEBVIEW_NAV_FORM_RESUBMITTED = 16,
159 wxWEBVIEW_NAV_OTHER = 32
162 class WXDLLIMPEXP_WEBKIT wxWebViewDOMElementInfo
165 wxWebViewDOMElementInfo();
167 ~wxWebViewDOMElementInfo() { }
169 wxString GetTagName() const { return m_tagName; }
170 void SetTagName(const wxString& name) { m_tagName = name; }
172 bool IsSelected() const { return m_isSelected; }
173 void SetSelected(bool sel) { m_isSelected = sel; }
175 wxString GetText() const { return m_text; }
176 void SetText(const wxString& text) { m_text = text; }
178 wxString GetImageSrc() const { return m_imageSrc; }
179 void SetImageSrc(const wxString& src) { m_imageSrc = src; }
181 wxString GetLink() const { return m_link; }
182 void SetLink(const wxString& link) { m_link = link; }
193 class WXDLLIMPEXP_WEBKIT wxWebViewBeforeLoadEvent : public wxCommandEvent
196 DECLARE_DYNAMIC_CLASS( wxWebViewBeforeLoadEvent )
200 bool IsCancelled() const { return m_cancelled; }
201 void Cancel(bool cancel = true) { m_cancelled = cancel; }
202 wxString GetURL() const { return m_url; }
203 void SetURL(const wxString& url) { m_url = url; }
204 void SetNavigationType(int navType) { m_navType = navType; }
205 int GetNavigationType() const { return m_navType; }
207 wxWebViewBeforeLoadEvent( wxWindow* win = (wxWindow*) NULL );
208 wxEvent *Clone(void) const { return new wxWebViewBeforeLoadEvent(*this); }
216 class WXDLLIMPEXP_WEBKIT wxWebViewLoadEvent : public wxCommandEvent
219 DECLARE_DYNAMIC_CLASS( wxWebViewLoadEvent )
223 int GetState() const { return m_state; }
224 void SetState(const int state) { m_state = state; }
225 wxString GetURL() const { return m_url; }
226 void SetURL(const wxString& url) { m_url = url; }
228 wxWebViewLoadEvent( wxWindow* win = (wxWindow*) NULL );
229 wxEvent *Clone(void) const { return new wxWebViewLoadEvent(*this); }
236 class WXDLLIMPEXP_WEBKIT wxWebViewNewWindowEvent : public wxCommandEvent
239 DECLARE_DYNAMIC_CLASS( wxWebViewNewWindowEvent )
243 wxString GetURL() const { return m_url; }
244 void SetURL(const wxString& url) { m_url = url; }
246 wxWebViewNewWindowEvent( wxWindow* win = static_cast<wxWindow*>(NULL));
247 wxEvent *Clone(void) const { return new wxWebViewNewWindowEvent(*this); }
253 class WXDLLIMPEXP_WEBKIT wxWebViewRightClickEvent : public wxCommandEvent
256 DECLARE_DYNAMIC_CLASS( wxWebViewRightClickEvent )
260 wxWebViewRightClickEvent( wxWindow* win = static_cast<wxWindow*>(NULL));
261 wxEvent *Clone(void) const { return new wxWebViewRightClickEvent(*this); }
263 wxWebViewDOMElementInfo GetInfo() const { return m_info; }
264 void SetInfo(wxWebViewDOMElementInfo info) { m_info = info; }
266 wxPoint GetPosition() const { return m_position; }
267 void SetPosition(wxPoint pos) { m_position = pos; }
270 wxWebViewDOMElementInfo m_info;
274 class WXDLLIMPEXP_WEBKIT wxWebViewConsoleMessageEvent : public wxCommandEvent
277 DECLARE_DYNAMIC_CLASS( wxWebViewConsoleMessageEvent )
281 wxString GetMessage() const { return m_message; }
282 void SetMessage(const wxString& message) { m_message = message; }
284 unsigned int GetLineNumber() const { return m_lineNumber; }
285 void SetLineNumber(unsigned int lineNumber) { m_lineNumber = lineNumber; }
287 wxString GetSourceID() const { return m_sourceID; }
288 void SetSourceID(const wxString& sourceID) { m_sourceID = sourceID; }
290 wxWebViewConsoleMessageEvent( wxWindow* win = (wxWindow*) NULL );
291 wxEvent *Clone(void) const { return new wxWebViewConsoleMessageEvent(*this); }
294 unsigned int m_lineNumber;
299 typedef void (wxEvtHandler::*wxWebViewLoadEventFunction)(wxWebViewLoadEvent&);
300 typedef void (wxEvtHandler::*wxWebViewBeforeLoadEventFunction)(wxWebViewBeforeLoadEvent&);
301 typedef void (wxEvtHandler::*wxWebViewNewWindowEventFunction)(wxWebViewNewWindowEvent&);
302 typedef void (wxEvtHandler::*wxWebViewRightClickEventFunction)(wxWebViewRightClickEvent&);
303 typedef void (wxEvtHandler::*wxWebViewConsoleMessageEventFunction)(wxWebViewConsoleMessageEvent&);
306 BEGIN_DECLARE_EVENT_TYPES()
307 DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_WEBKIT, wxEVT_WEBVIEW_BEFORE_LOAD, wxID_ANY)
308 DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_WEBKIT, wxEVT_WEBVIEW_LOAD, wxID_ANY)
309 DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_WEBKIT, wxEVT_WEBVIEW_NEW_WINDOW, wxID_ANY)
310 DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_WEBKIT, wxEVT_WEBVIEW_RIGHT_CLICK, wxID_ANY)
311 DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_WEBKIT, wxEVT_WEBVIEW_CONSOLE_MESSAGE, wxID_ANY)
312 END_DECLARE_EVENT_TYPES()
315 #define EVT_WEBVIEW_LOAD(func) \
316 DECLARE_EVENT_TABLE_ENTRY( wxEVT_WEBVIEW_LOAD, \
319 (wxObjectEventFunction) \
320 (wxWebViewLoadEventFunction) & func, \
321 static_cast<wxObject*>(NULL)),
323 #define EVT_WEBVIEW_BEFORE_LOAD(func) \
324 DECLARE_EVENT_TABLE_ENTRY( wxEVT_WEBVIEW_BEFORE_LOAD, \
327 (wxObjectEventFunction) \
328 (wxWebViewBeforeLoadEventFunction) & func, \
329 static_cast<wxObject*>(NULL)),
331 #define EVT_WEBVIEW_NEW_WINDOW(func) \
332 DECLARE_EVENT_TABLE_ENTRY( wxEVT_WEBVIEW_NEW_WINDOW, \
335 (wxObjectEventFunction) \
336 (wxWebViewNewWindowEventFunction) & func, \
337 static_cast<wxObject*>(NULL)),
339 #define EVT_WEBVIEW_RIGHT_CLICK(func) \
340 DECLARE_EVENT_TABLE_ENTRY( wxEVT_WEBVIEW_RIGHT_CLICK, \
343 (wxObjectEventFunction) \
344 (wxWebViewRightClickEventFunction) & func, \
345 static_cast<wxObject*>(NULL)),
347 #define EVT_WEBVIEW_CONSOLE_MESSAGE(func) \
348 DECLARE_EVENT_TABLE_ENTRY( wxEVT_WEBVIEW_CONSOLE_MESSAGE, \
351 (wxObjectEventFunction) \
352 (wxWebViewConsoleMessageEventFunction) & func, \
353 static_cast<wxObject*>(NULL)),
355 #endif // ifndef WXWEBVIEW_H