Reviewed by Kevin Ollivier.
[WebKit.git] / WebKit / wx / WebView.h
1 /*
2  * Copyright (C) 2007 Kevin Ollivier <kevino@theolliviers.com>
3  *
4  * All rights reserved.
5  *
6  * Redistribution and use in source and binary forms, with or without
7  * modification, are permitted provided that the following conditions
8  * are met:
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.
14  *
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.
26  */
27  
28 #ifndef WXWEBVIEW_H
29 #define WXWEBVIEW_H
30
31 #include "wx/wxprec.h"
32 #ifndef WX_PRECOMP
33     #include "wx/wx.h"
34 #endif
35
36 #include "WebFrame.h"
37
38 class WebViewPrivate;
39 class WebViewFrameData;
40 class wxWebFrame;
41
42 typedef struct OpaqueJSContext* JSGlobalContextRef;
43 typedef struct OpaqueJSValue* JSObjectRef;
44
45 namespace WebCore {
46     class ChromeClientWx;
47     class FrameLoaderClientWx;
48 }
49
50 #ifndef SWIG
51
52 #if WXMAKINGDLL_WEBKIT
53 #define WXDLLIMPEXP_WEBKIT WXEXPORT
54 #elif defined(WXUSINGDLL_WEBKIT)
55 #define WXDLLIMPEXP_WEBKIT WXIMPORT
56 #else
57 #define WXDLLIMPEXP_WEBKIT
58 #endif
59
60 #else 
61 #define WXDLLIMPEXP_WEBKIT
62 #endif // SWIG
63
64 #ifndef SWIG
65 extern WXDLLIMPEXP_WEBKIT const wxChar* wxWebViewNameStr;
66 #endif
67
68 class WXDLLIMPEXP_WEBKIT wxWebView : public wxWindow
69 {
70     // ChromeClientWx needs to get the Page* stored by the wxWebView
71     // for the createWindow function. 
72     friend class WebCore::ChromeClientWx;
73     friend class WebCore::FrameLoaderClientWx;
74
75 public:
76     // ctor(s)
77 #if SWIG
78     %pythonAppend wxWebView    "self._setOORInfo(self)"
79     %pythonAppend wxWebView()  ""
80 #endif
81
82     wxWebView(wxWindow* parent, int id = wxID_ANY,
83               const wxPoint& point = wxDefaultPosition,
84               const wxSize& size = wxDefaultSize,
85               long style = 0,
86               const wxString& name = wxWebViewNameStr); // For wxWebView internal data passing
87 #if SWIG
88     %rename(PreWebView) wxWebView();
89 #else
90     wxWebView();
91 #endif
92     
93     bool Create(wxWindow* parent, int id = wxID_ANY,
94                 const wxPoint& point = wxDefaultPosition,
95                 const wxSize& size = wxDefaultSize,
96                 long style = 0,
97                 const wxString& name = wxWebViewNameStr); // For wxWebView internal data passing
98     
99 #ifndef SWIG
100     ~wxWebView();
101 #endif
102     
103     void LoadURL(const wxString& url);
104     bool GoBack();
105     bool GoForward();
106     void Stop();
107     void Reload();
108
109     bool CanGoBack();
110     bool CanGoForward();
111     
112     bool CanCut();
113     bool CanCopy();
114     bool CanPaste();
115     
116     void Cut();
117     void Copy();
118     void Paste();
119     
120     //bool CanGetPageSource();
121     wxString GetPageSource();
122     void SetPageSource(const wxString& source, const wxString& baseUrl = wxEmptyString);
123     
124     wxString GetInnerText();
125     wxString GetAsMarkup();
126     wxString GetExternalRepresentation();
127     
128     void SetTransparent(bool transparent);
129     bool IsTransparent() const;
130     
131     wxString RunScript(const wxString& javascript);
132
133     bool FindString(const wxString& string, bool forward = true,
134         bool caseSensitive = false, bool wrapSelection = true,
135         bool startInSelection = true);
136     
137     bool CanIncreaseTextSize() const;
138     void IncreaseTextSize();
139     bool CanDecreaseTextSize() const;
140     void DecreaseTextSize();
141     void MakeEditable(bool enable);
142     bool IsEditable() const { return m_isEditable; }
143
144     wxString GetPageTitle() const { return m_title; }
145     void SetPageTitle(const wxString& title) { m_title = title; }
146     
147     wxWebFrame* GetMainFrame() { return m_mainFrame; }
148
149     wxWebViewDOMElementInfo HitTest(const wxPoint& post) const;
150
151 protected:
152
153     // event handlers (these functions should _not_ be virtual)
154     void OnPaint(wxPaintEvent& event);
155     void OnSize(wxSizeEvent& event);
156     void OnMouseEvents(wxMouseEvent& event);
157     void OnContextMenuEvents(wxContextMenuEvent& event);
158     void OnMenuSelectEvents(wxCommandEvent& event);
159     void OnKeyEvents(wxKeyEvent& event);
160     void OnSetFocus(wxFocusEvent& event);
161     void OnKillFocus(wxFocusEvent& event);
162     void OnActivate(wxActivateEvent& event);
163     
164 private:
165     // any class wishing to process wxWindows events must use this macro
166 #ifndef SWIG
167     DECLARE_EVENT_TABLE()
168     DECLARE_DYNAMIC_CLASS(wxWebView)
169 #endif
170     float m_textMagnifier;
171     bool m_isEditable;
172     bool m_isInitialized;
173     bool m_beingDestroyed;
174     WebViewPrivate* m_impl;
175     wxWebFrame* m_mainFrame;
176     wxString m_title;
177     
178 };
179
180 // ----------------------------------------------------------------------------
181 // Web Kit Events
182 // ----------------------------------------------------------------------------
183
184 enum {
185     wxWEBVIEW_LOAD_STARTED = 1,
186     wxWEBVIEW_LOAD_NEGOTIATING = 2,
187     wxWEBVIEW_LOAD_REDIRECTING = 4,
188     wxWEBVIEW_LOAD_TRANSFERRING = 8,
189     wxWEBVIEW_LOAD_STOPPED = 16,
190     wxWEBVIEW_LOAD_FAILED = 32,
191     wxWEBVIEW_LOAD_DL_COMPLETED = 64,
192     wxWEBVIEW_LOAD_DOC_COMPLETED = 128,
193     wxWEBVIEW_LOAD_ONLOAD_HANDLED = 256,
194     wxWEBVIEW_LOAD_WINDOW_OBJECT_CLEARED = 512
195 };
196
197 enum {
198     wxWEBVIEW_NAV_LINK_CLICKED = 1,
199     wxWEBVIEW_NAV_BACK_NEXT = 2,
200     wxWEBVIEW_NAV_FORM_SUBMITTED = 4,
201     wxWEBVIEW_NAV_RELOAD = 8,
202     wxWEBVIEW_NAV_FORM_RESUBMITTED = 16,
203     wxWEBVIEW_NAV_OTHER = 32
204 };
205
206 class WXDLLIMPEXP_WEBKIT wxWebViewBeforeLoadEvent : public wxCommandEvent
207 {
208 #ifndef SWIG
209     DECLARE_DYNAMIC_CLASS( wxWebViewBeforeLoadEvent )
210 #endif
211
212 public:
213     bool IsCancelled() const { return m_cancelled; }
214     void Cancel(bool cancel = true) { m_cancelled = cancel; }
215     wxString GetURL() const { return m_url; }
216     void SetURL(const wxString& url) { m_url = url; }
217     void SetNavigationType(int navType) { m_navType = navType; }
218     int GetNavigationType() const { return m_navType; }
219
220     wxWebViewBeforeLoadEvent( wxWindow* win = (wxWindow*) NULL );
221     wxEvent *Clone(void) const { return new wxWebViewBeforeLoadEvent(*this); }
222
223 private:
224     bool m_cancelled;
225     wxString m_url;
226     int m_navType;
227 };
228
229 class WXDLLIMPEXP_WEBKIT wxWebViewLoadEvent : public wxCommandEvent
230 {
231 #ifndef SWIG
232     DECLARE_DYNAMIC_CLASS( wxWebViewLoadEvent )
233 #endif
234
235 public:
236     int GetState() const { return m_state; }
237     void SetState(const int state) { m_state = state; }
238     wxString GetURL() const { return m_url; }
239     void SetURL(const wxString& url) { m_url = url; }
240
241     wxWebViewLoadEvent( wxWindow* win = (wxWindow*) NULL );
242     wxEvent *Clone(void) const { return new wxWebViewLoadEvent(*this); }
243
244 private:
245     int m_state;
246     wxString m_url;
247 };
248
249 class WXDLLIMPEXP_WEBKIT wxWebViewNewWindowEvent : public wxCommandEvent
250 {
251 #ifndef SWIG
252     DECLARE_DYNAMIC_CLASS( wxWebViewNewWindowEvent )
253 #endif
254
255 public:
256     wxString GetURL() const { return m_url; }
257     void SetURL(const wxString& url) { m_url = url; }
258     wxString GetTargetName() const { return m_targetName; }
259     void SetTargetName(const wxString& name) { m_targetName = name; }
260
261     wxWebViewNewWindowEvent( wxWindow* win = static_cast<wxWindow*>(NULL));
262     wxEvent *Clone(void) const { return new wxWebViewNewWindowEvent(*this); }
263
264 private:
265     wxString m_url;
266     wxString m_targetName;
267 };
268
269 class WXDLLIMPEXP_WEBKIT wxWebViewRightClickEvent : public wxCommandEvent
270 {
271 #ifndef SWIG
272     DECLARE_DYNAMIC_CLASS( wxWebViewRightClickEvent )
273 #endif
274
275 public:
276     wxWebViewRightClickEvent( wxWindow* win = static_cast<wxWindow*>(NULL));
277     wxEvent *Clone(void) const { return new wxWebViewRightClickEvent(*this); }
278     
279     wxWebViewDOMElementInfo GetInfo() const { return m_info; }
280     void SetInfo(wxWebViewDOMElementInfo info) { m_info = info; }
281     
282     wxPoint GetPosition() const { return m_position; }
283     void SetPosition(wxPoint pos) { m_position = pos; }
284
285 private:
286     wxWebViewDOMElementInfo m_info;
287     wxPoint m_position;
288 };
289
290 class WXDLLIMPEXP_WEBKIT wxWebViewConsoleMessageEvent : public wxCommandEvent
291 {
292 #ifndef SWIG
293     DECLARE_DYNAMIC_CLASS( wxWebViewConsoleMessageEvent )
294 #endif
295
296 public:
297     wxString GetMessage() const { return m_message; }
298     void SetMessage(const wxString& message) { m_message = message; }
299     
300     unsigned int GetLineNumber() const { return m_lineNumber; }
301     void SetLineNumber(unsigned int lineNumber) { m_lineNumber = lineNumber; }
302     
303     wxString GetSourceID() const { return m_sourceID; }
304     void SetSourceID(const wxString& sourceID) { m_sourceID = sourceID; }
305
306     wxWebViewConsoleMessageEvent( wxWindow* win = (wxWindow*) NULL );
307     wxEvent *Clone(void) const { return new wxWebViewConsoleMessageEvent(*this); }
308
309 private:
310     unsigned int m_lineNumber;
311     wxString m_message;
312     wxString m_sourceID;
313 };
314
315 class WXDLLIMPEXP_WEBKIT wxWebViewAlertEvent : public wxCommandEvent
316 {
317 #ifndef SWIG
318     DECLARE_DYNAMIC_CLASS( wxWebViewAlertEvent )
319 #endif
320
321 public:
322     wxString GetMessage() const { return m_message; }
323     void SetMessage(const wxString& message) { m_message = message; }
324
325     wxWebViewAlertEvent( wxWindow* win = (wxWindow*) NULL );
326     wxEvent *Clone(void) const { return new wxWebViewAlertEvent(*this); }
327
328 private:
329     wxString m_message;
330 };
331
332 class WXDLLIMPEXP_WEBKIT wxWebViewConfirmEvent : public wxWebViewAlertEvent
333 {
334 #ifndef SWIG
335     DECLARE_DYNAMIC_CLASS( wxWebViewConfirmEvent )
336 #endif
337
338 public:   
339     int GetReturnCode() const { return m_returnCode; }
340     void SetReturnCode(int code) { m_returnCode = code; }
341
342     wxWebViewConfirmEvent( wxWindow* win = (wxWindow*) NULL );
343     wxEvent *Clone(void) const { return new wxWebViewConfirmEvent(*this); }
344
345 private:
346     int m_returnCode;
347 };
348
349 class WXDLLIMPEXP_WEBKIT wxWebViewPromptEvent : public wxWebViewConfirmEvent
350 {
351 #ifndef SWIG
352     DECLARE_DYNAMIC_CLASS( wxWebViewPromptEvent )
353 #endif
354
355 public:   
356     wxString GetResponse() const { return m_response; }
357     void SetResponse(const wxString& response) { m_response = response; }
358
359     wxWebViewPromptEvent( wxWindow* win = (wxWindow*) NULL );
360     wxEvent *Clone(void) const { return new wxWebViewPromptEvent(*this); }
361
362 private:
363     wxString m_response;
364 };
365
366 class WXDLLIMPEXP_WEBKIT wxWebViewReceivedTitleEvent : public wxCommandEvent
367 {
368 #ifndef SWIG
369     DECLARE_DYNAMIC_CLASS( wxWebViewReceivedTitleEvent )
370 #endif
371
372 public:
373     wxString GetTitle() const { return m_title; }
374     void SetTitle(const wxString& title) { m_title = title; }
375
376     wxWebViewReceivedTitleEvent( wxWindow* win = static_cast<wxWindow*>(NULL));
377     wxEvent *Clone(void) const { return new wxWebViewReceivedTitleEvent(*this); }
378
379 private:
380     wxString m_title;
381 };
382
383 class WXDLLIMPEXP_WEBKIT wxWebViewWindowObjectClearedEvent : public wxCommandEvent
384 {
385 #ifndef SWIG
386     DECLARE_DYNAMIC_CLASS( wxWebViewWindowObjectClearedEvent )
387 #endif
388
389 public:
390     JSGlobalContextRef GetJSContext() const { return m_jsContext; }
391     void SetJSContext(JSGlobalContextRef context) { m_jsContext = context; }
392     
393     JSObjectRef GetWindowObject() const { return m_windowObject; }
394     void SetWindowObject(JSObjectRef object) { m_windowObject = object; }
395
396     wxWebViewWindowObjectClearedEvent( wxWindow* win = static_cast<wxWindow*>(NULL));
397     wxEvent *Clone(void) const { return new wxWebViewWindowObjectClearedEvent(*this); }
398
399 private:
400     JSGlobalContextRef m_jsContext;
401     JSObjectRef m_windowObject;
402 };
403
404 typedef void (wxEvtHandler::*wxWebViewLoadEventFunction)(wxWebViewLoadEvent&);
405 typedef void (wxEvtHandler::*wxWebViewBeforeLoadEventFunction)(wxWebViewBeforeLoadEvent&);
406 typedef void (wxEvtHandler::*wxWebViewNewWindowEventFunction)(wxWebViewNewWindowEvent&);
407 typedef void (wxEvtHandler::*wxWebViewRightClickEventFunction)(wxWebViewRightClickEvent&);
408 typedef void (wxEvtHandler::*wxWebViewConsoleMessageEventFunction)(wxWebViewConsoleMessageEvent&);
409 typedef void (wxEvtHandler::*wxWebViewAlertEventFunction)(wxWebViewAlertEvent&);
410 typedef void (wxEvtHandler::*wxWebViewConfirmEventFunction)(wxWebViewConfirmEvent&);
411 typedef void (wxEvtHandler::*wxWebViewPromptEventFunction)(wxWebViewPromptEvent&);
412 typedef void (wxEvtHandler::*wxWebViewReceivedTitleEventFunction)(wxWebViewReceivedTitleEvent&);
413 typedef void (wxEvtHandler::*wxWebViewWindowObjectClearedFunction)(wxWebViewWindowObjectClearedEvent&);
414
415 #define wxWebViewLoadEventHandler(func) \
416     (wxObjectEventFunction)(wxEventFunction)wxStaticCastEvent(wxWebViewLoadEventFunction, &func)
417 #define wxWebViewBeforeLoadEventHandler(func) \
418     (wxObjectEventFunction)(wxEventFunction)wxStaticCastEvent(wxWebViewBeforeLoadEventFunction, &func)
419 #define wxWebViewNewWindowEventHandler(func) \
420     (wxObjectEventFunction)(wxEventFunction)wxStaticCastEvent(wxWebViewNewWindowEventFunction, &func)
421 #define wxWebViewRightClickEventHandler(func) \
422     (wxObjectEventFunction)(wxEventFunction)wxStaticCastEvent(wxWebViewRightClickEventFunction, &func)
423 #define wxWebViewConsoleMessageEventHandler(func) \
424     (wxObjectEventFunction)(wxEventFunction)wxStaticCastEvent(wxWebViewConsoleMessageEventFunction, &func)
425 #define wxWebViewAlertEventHandler(func) \
426     (wxObjectEventFunction)(wxEventFunction)wxStaticCastEvent(wxWebViewAlertEventFunction, &func)
427 #define wxWebViewConfirmEventHandler(func) \
428     (wxObjectEventFunction)(wxEventFunction)wxStaticCastEvent(wxWebViewConfirmEventFunction, &func)
429 #define wxWebViewPromptEventHandler(func) \
430     (wxObjectEventFunction)(wxEventFunction)wxStaticCastEvent(wxWebViewPromptEventFunction, &func)
431 #define wxWebViewReceivedTitleEventHandler(func) \
432     (wxObjectEventFunction)(wxEventFunction)wxStaticCastEvent(wxWebViewReceivedTitleEventFunction, &func)
433 #define wxWebViewWindowObjectClearedEventHandler(func) \
434     (wxObjectEventFunction)(wxEventFunction)wxStaticCastEvent(wxWebViewWindowObjectClearedFunction, &func)
435
436 #ifndef SWIG
437 BEGIN_DECLARE_EVENT_TYPES()
438     DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_WEBKIT, wxEVT_WEBVIEW_BEFORE_LOAD, wxID_ANY)
439     DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_WEBKIT, wxEVT_WEBVIEW_LOAD, wxID_ANY)
440     DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_WEBKIT, wxEVT_WEBVIEW_NEW_WINDOW, wxID_ANY)
441     DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_WEBKIT, wxEVT_WEBVIEW_RIGHT_CLICK, wxID_ANY)
442     DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_WEBKIT, wxEVT_WEBVIEW_CONSOLE_MESSAGE, wxID_ANY)
443     DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_WEBKIT, wxEVT_WEBVIEW_JS_ALERT, wxID_ANY)
444     DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_WEBKIT, wxEVT_WEBVIEW_JS_CONFIRM, wxID_ANY)
445     DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_WEBKIT, wxEVT_WEBVIEW_JS_PROMPT, wxID_ANY)
446     DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_WEBKIT, wxEVT_WEBVIEW_RECEIVED_TITLE, wxID_ANY)
447     DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_WEBKIT, wxEVT_WEBVIEW_WINDOW_OBJECT_CLEARED, wxID_ANY)
448 END_DECLARE_EVENT_TYPES()
449 #endif
450
451 #define EVT_WEBVIEW_LOAD(winid, func)                       \
452             DECLARE_EVENT_TABLE_ENTRY( wxEVT_WEBVIEW_LOAD, \
453                             winid, \
454                             wxID_ANY, \
455                             (wxObjectEventFunction)   \
456                             (wxWebViewLoadEventFunction) & func, \
457                             static_cast<wxObject*>(NULL)),
458                             
459 #define EVT_WEBVIEW_BEFORE_LOAD(winid, func)                       \
460             DECLARE_EVENT_TABLE_ENTRY( wxEVT_WEBVIEW_BEFORE_LOAD, \
461                             winid, \
462                             wxID_ANY, \
463                             (wxObjectEventFunction)   \
464                             (wxWebViewBeforeLoadEventFunction) & func, \
465                             static_cast<wxObject*>(NULL)),
466                             
467 #define EVT_WEBVIEW_NEW_WINDOW(winid, func)                       \
468             DECLARE_EVENT_TABLE_ENTRY( wxEVT_WEBVIEW_NEW_WINDOW, \
469                             winid, \
470                             wxID_ANY, \
471                             (wxObjectEventFunction)   \
472                             (wxWebViewNewWindowEventFunction) & func, \
473                             static_cast<wxObject*>(NULL)),
474
475 #define EVT_WEBVIEW_RIGHT_CLICK(winid, func)                       \
476             DECLARE_EVENT_TABLE_ENTRY( wxEVT_WEBVIEW_RIGHT_CLICK, \
477                             winid, \
478                             wxID_ANY, \
479                             (wxObjectEventFunction)   \
480                             (wxWebViewRightClickEventFunction) & func, \
481                             static_cast<wxObject*>(NULL)),
482                             
483 #define EVT_WEBVIEW_CONSOLE_MESSAGE(winid, func)                       \
484             DECLARE_EVENT_TABLE_ENTRY( wxEVT_WEBVIEW_CONSOLE_MESSAGE, \
485                             winid, \
486                             wxID_ANY, \
487                             (wxObjectEventFunction)   \
488                             (wxWebViewConsoleMessageEventFunction) & func, \
489                             static_cast<wxObject*>(NULL)),
490
491 #define EVT_WEBVIEW_JS_ALERT(winid, func)                       \
492             DECLARE_EVENT_TABLE_ENTRY( wxEVT_WEBVIEW_JS_ALERT, \
493                             winid, \
494                             wxID_ANY, \
495                             (wxObjectEventFunction)   \
496                             (wxWebViewAlertEventFunction) & func, \
497                             static_cast<wxObject*>(NULL)),
498                             
499 #define EVT_WEBVIEW_JS_CONFIRM(winid, func)                       \
500             DECLARE_EVENT_TABLE_ENTRY( wxEVT_WEBVIEW_JS_CONFIRM, \
501                             winid, \
502                             wxID_ANY, \
503                             (wxObjectEventFunction)   \
504                             (wxWebViewConfirmEventFunction) & func, \
505                             static_cast<wxObject*>(NULL)),
506                             
507 #define EVT_WEBVIEW_JS_PROMPT(winid, func)                       \
508             DECLARE_EVENT_TABLE_ENTRY( wxEVT_WEBVIEW_JS_PROMPT, \
509                             winid, \
510                             wxID_ANY, \
511                             (wxObjectEventFunction)   \
512                             (wxWebViewPromptEventFunction) & func, \
513                             static_cast<wxObject*>(NULL)),
514                             
515 #define EVT_WEBVIEW_RECEIVED_TITLE(winid, func)                       \
516             DECLARE_EVENT_TABLE_ENTRY( wxEVT_WEBVIEW_RECEIVED_TITLE, \
517                             winid, \
518                             wxID_ANY, \
519                             (wxObjectEventFunction)   \
520                             (wxWebViewReceivedTitleEventFunction) & func, \
521                             static_cast<wxObject*>(NULL)),
522                             
523 #define EVT_WEBVIEW_WINDOW_OBJECT_CLEARED(winid, func)                       \
524             DECLARE_EVENT_TABLE_ENTRY( wxEVT_WEBVIEW_WINDOW_OBJECT_CLEARED, \
525                             winid, \
526                             wxID_ANY, \
527                             (wxObjectEventFunction)   \
528                             (wxWebViewWindowObjectClearedFunction) & func, \
529                             static_cast<wxObject*>(NULL)),
530
531 #endif // ifndef WXWEBVIEW_H