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#include "WebKitDefines.h"
38#include "WebSettings.h"
39
40class WebViewPrivate;
41class WebViewFrameData;
42class wxWebFrame;
43
44typedef struct OpaqueJSContext* JSGlobalContextRef;
45typedef struct OpaqueJSValue* JSObjectRef;
46
47namespace WebCore {
48    class ChromeClientWx;
49    class FrameLoaderClientWx;
50}
51
52#ifndef SWIG
53extern WXDLLIMPEXP_WEBKIT const wxChar* wxWebViewNameStr;
54#endif
55
56static const int defaultCacheCapacity = 8192 * 1024; // mirrors Cache.cpp
57
58class WXDLLIMPEXP_WEBKIT wxWebViewCachePolicy
59{
60public:
61    wxWebViewCachePolicy(unsigned minDead = 0, unsigned maxDead = defaultCacheCapacity, unsigned totalCapacity = defaultCacheCapacity)
62        : m_minDeadCapacity(minDead)
63        , m_maxDeadCapacity(maxDead)
64        , m_capacity(totalCapacity)
65    {}
66
67    ~wxWebViewCachePolicy() {}
68
69    unsigned GetCapacity() const { return m_capacity; }
70    void SetCapacity(int capacity) { m_capacity = capacity; }
71
72    unsigned GetMinDeadCapacity() const { return m_minDeadCapacity; }
73    void SetMinDeadCapacity(unsigned minDeadCapacity) { m_minDeadCapacity = minDeadCapacity; }
74
75    unsigned GetMaxDeadCapacity() const { return m_maxDeadCapacity; }
76    void SetMaxDeadCapacity(unsigned maxDeadCapacity) { m_maxDeadCapacity = maxDeadCapacity; }
77
78protected:
79    unsigned m_capacity;
80    unsigned m_minDeadCapacity;
81    unsigned m_maxDeadCapacity;
82};
83
84
85// copied from WebKit/mac/Misc/WebKitErrors[Private].h
86enum {
87    WebKitErrorCannotShowMIMEType =                             100,
88    WebKitErrorCannotShowURL =                                  101,
89    WebKitErrorFrameLoadInterruptedByPolicyChange =             102,
90    WebKitErrorCannotUseRestrictedPort = 103,
91    WebKitErrorCannotFindPlugIn =                               200,
92    WebKitErrorCannotLoadPlugIn =                               201,
93    WebKitErrorJavaUnavailable =                                202,
94};
95
96enum wxProxyType {
97    HTTP,
98    Socks4,
99    Socks4A,
100    Socks5,
101    Socks5Hostname
102};
103
104class WXDLLIMPEXP_WEBKIT wxWebView : public wxWindow
105{
106    // ChromeClientWx needs to get the Page* stored by the wxWebView
107    // for the createWindow function.
108    friend class WebCore::ChromeClientWx;
109    friend class WebCore::FrameLoaderClientWx;
110
111public:
112    // ctor(s)
113#if SWIG
114    %pythonAppend wxWebView    "self._setOORInfo(self)"
115    %pythonAppend wxWebView()  ""
116#endif
117
118    wxWebView(wxWindow* parent, int id = wxID_ANY,
119              const wxPoint& point = wxDefaultPosition,
120              const wxSize& size = wxDefaultSize,
121              long style = 0,
122              const wxString& name = wxWebViewNameStr); // For wxWebView internal data passing
123#if SWIG
124    %rename(PreWebView) wxWebView();
125#else
126    wxWebView();
127#endif
128
129    bool Create(wxWindow* parent, int id = wxID_ANY,
130                const wxPoint& point = wxDefaultPosition,
131                const wxSize& size = wxDefaultSize,
132                long style = 0,
133                const wxString& name = wxWebViewNameStr); // For wxWebView internal data passing
134
135#ifndef SWIG
136    virtual ~wxWebView();
137#endif
138
139    void LoadURL(const wxString& url);
140    bool GoBack();
141    bool GoForward();
142    void Stop();
143    void Reload();
144
145    bool CanGoBack();
146    bool CanGoForward();
147
148    bool CanCut();
149    bool CanCopy();
150    bool CanPaste();
151
152    void Cut();
153    void Copy();
154    void Paste();
155
156    //bool CanGetPageSource();
157    wxString GetPageSource();
158    void SetPageSource(const wxString& source, const wxString& baseUrl = wxEmptyString);
159
160    wxString GetInnerText();
161    wxString GetAsMarkup();
162    wxString GetExternalRepresentation();
163
164    void SetTransparent(bool transparent);
165    bool IsTransparent() const;
166
167    wxString RunScript(const wxString& javascript);
168
169    bool FindString(const wxString& string, bool forward = true,
170        bool caseSensitive = false, bool wrapSelection = true,
171        bool startInSelection = true);
172
173    bool CanIncreaseTextSize() const;
174    void IncreaseTextSize();
175    bool CanDecreaseTextSize() const;
176    void DecreaseTextSize();
177    void ResetTextSize();
178    void MakeEditable(bool enable);
179    bool IsEditable() const { return m_isEditable; }
180
181    wxString GetPageTitle() const { return m_title; }
182    void SetPageTitle(const wxString& title) { m_title = title; }
183
184    wxWebFrame* GetMainFrame() { return m_mainFrame; }
185
186    wxWebViewDOMElementInfo HitTest(const wxPoint& pos) const;
187
188    bool ShouldClose() const;
189
190    static void SetCachePolicy(const wxWebViewCachePolicy& cachePolicy);
191    static wxWebViewCachePolicy GetCachePolicy();
192
193    void SetMouseWheelZooms(bool mouseWheelZooms) { m_mouseWheelZooms = mouseWheelZooms; }
194    bool GetMouseWheelZooms() const { return m_mouseWheelZooms; }
195
196    static void SetDatabaseDirectory(const wxString& databaseDirectory);
197    static wxString GetDatabaseDirectory();
198
199    static void SetProxyInfo(const wxString& host = wxEmptyString,
200                             unsigned long port = 0,
201                             wxProxyType type = HTTP,
202                             const wxString& username = wxEmptyString,
203                             const wxString& password = wxEmptyString);
204
205    wxWebSettings GetWebSettings();
206    wxWebKitParseMode GetParseMode() const;
207
208protected:
209
210    // event handlers (these functions should _not_ be virtual)
211    void OnPaint(wxPaintEvent& event);
212    void OnSize(wxSizeEvent& event);
213    void OnMouseEvents(wxMouseEvent& event);
214    void OnContextMenuEvents(wxContextMenuEvent& event);
215    void OnMenuSelectEvents(wxCommandEvent& event);
216    void OnKeyEvents(wxKeyEvent& event);
217    void OnSetFocus(wxFocusEvent& event);
218    void OnKillFocus(wxFocusEvent& event);
219
220private:
221    // any class wishing to process wxWindows events must use this macro
222#ifndef SWIG
223    DECLARE_EVENT_TABLE()
224    DECLARE_DYNAMIC_CLASS(wxWebView)
225#endif
226    float m_textMagnifier;
227    bool m_isEditable;
228    bool m_isInitialized;
229    bool m_beingDestroyed;
230    bool m_mouseWheelZooms;
231    WebViewPrivate* m_impl;
232    wxWebFrame* m_mainFrame;
233    wxString m_title;
234
235};
236
237// ----------------------------------------------------------------------------
238// Web Kit Events
239// ----------------------------------------------------------------------------
240
241enum {
242    wxWEBVIEW_LOAD_STARTED = 1,
243    wxWEBVIEW_LOAD_NEGOTIATING = 2,
244    wxWEBVIEW_LOAD_REDIRECTING = 4,
245    wxWEBVIEW_LOAD_TRANSFERRING = 8,
246    wxWEBVIEW_LOAD_STOPPED = 16,
247    wxWEBVIEW_LOAD_FAILED = 32,
248    wxWEBVIEW_LOAD_DL_COMPLETED = 64,
249    wxWEBVIEW_LOAD_DOC_COMPLETED = 128,
250    wxWEBVIEW_LOAD_ONLOAD_HANDLED = 256,
251    wxWEBVIEW_LOAD_WINDOW_OBJECT_CLEARED = 512
252};
253
254enum {
255    wxWEBVIEW_NAV_LINK_CLICKED = 1,
256    wxWEBVIEW_NAV_BACK_NEXT = 2,
257    wxWEBVIEW_NAV_FORM_SUBMITTED = 4,
258    wxWEBVIEW_NAV_RELOAD = 8,
259    wxWEBVIEW_NAV_FORM_RESUBMITTED = 16,
260    wxWEBVIEW_NAV_OTHER = 32
261};
262
263class WXDLLIMPEXP_WEBKIT wxWebViewBeforeLoadEvent : public wxCommandEvent
264{
265#ifndef SWIG
266    DECLARE_DYNAMIC_CLASS( wxWebViewBeforeLoadEvent )
267#endif
268
269public:
270    bool IsCancelled() const { return m_cancelled; }
271    void Cancel(bool cancel = true) { m_cancelled = cancel; }
272    wxString GetURL() const { return m_url; }
273    void SetURL(const wxString& url) { m_url = url; }
274    void SetNavigationType(int navType) { m_navType = navType; }
275    int GetNavigationType() const { return m_navType; }
276
277    wxWebViewBeforeLoadEvent( wxWindow* win = (wxWindow*) NULL );
278    wxEvent *Clone(void) const { return new wxWebViewBeforeLoadEvent(*this); }
279
280private:
281    bool m_cancelled;
282    wxString m_url;
283    int m_navType;
284};
285
286class WXDLLIMPEXP_WEBKIT wxWebViewLoadEvent : public wxCommandEvent
287{
288#ifndef SWIG
289    DECLARE_DYNAMIC_CLASS( wxWebViewLoadEvent )
290#endif
291
292public:
293    int GetState() const { return m_state; }
294    void SetState(const int state) { m_state = state; }
295    wxString GetURL() const { return m_url; }
296    void SetURL(const wxString& url) { m_url = url; }
297
298    wxWebViewLoadEvent( wxWindow* win = (wxWindow*) NULL );
299    wxEvent *Clone(void) const { return new wxWebViewLoadEvent(*this); }
300
301private:
302    int m_state;
303    wxString m_url;
304};
305
306class WXDLLIMPEXP_WEBKIT wxWebKitWindowFeatures
307{
308public:
309    wxWebKitWindowFeatures()
310        : menuBarVisible(true)
311        , statusBarVisible(true)
312        , toolBarVisible(true)
313        , locationBarVisible(true)
314        , scrollbarsVisible(true)
315        , resizable(true)
316        , fullscreen(false)
317        , dialog(false)
318    { }
319
320    bool menuBarVisible;
321    bool statusBarVisible;
322    bool toolBarVisible;
323    bool locationBarVisible;
324    bool scrollbarsVisible;
325    bool resizable;
326    bool fullscreen;
327    bool dialog;
328};
329
330class WXDLLIMPEXP_WEBKIT wxWebViewNewWindowEvent : public wxCommandEvent
331{
332#ifndef SWIG
333    DECLARE_DYNAMIC_CLASS( wxWebViewNewWindowEvent )
334#endif
335
336public:
337    wxString GetURL() const { return m_url; }
338    void SetURL(const wxString& url) { m_url = url; }
339    wxString GetTargetName() const { return m_targetName; }
340    void SetTargetName(const wxString& name) { m_targetName = name; }
341    wxWebView* GetWebView() { return m_webView; }
342    void SetWebView(wxWebView* webView) { m_webView = webView; }
343    wxWebKitWindowFeatures GetWindowFeatures() { return m_features; }
344    void SetWindowFeatures(wxWebKitWindowFeatures features) { m_features = features; }
345
346    wxWebViewNewWindowEvent( wxWindow* win = static_cast<wxWindow*>(NULL));
347    wxEvent *Clone(void) const { return new wxWebViewNewWindowEvent(*this); }
348
349private:
350    wxWebView* m_webView;
351    wxWebKitWindowFeatures m_features;
352    wxString m_url;
353    wxString m_targetName;
354};
355
356class WXDLLIMPEXP_WEBKIT wxWebViewRightClickEvent : public wxCommandEvent
357{
358#ifndef SWIG
359    DECLARE_DYNAMIC_CLASS( wxWebViewRightClickEvent )
360#endif
361
362public:
363    wxWebViewRightClickEvent( wxWindow* win = static_cast<wxWindow*>(NULL));
364    wxEvent *Clone(void) const { return new wxWebViewRightClickEvent(*this); }
365
366    wxWebViewDOMElementInfo GetInfo() const { return m_info; }
367    void SetInfo(wxWebViewDOMElementInfo info) { m_info = info; }
368
369    wxPoint GetPosition() const { return m_position; }
370    void SetPosition(wxPoint pos) { m_position = pos; }
371
372private:
373    wxWebViewDOMElementInfo m_info;
374    wxPoint m_position;
375};
376
377// copied from page/Console.h
378enum wxWebViewConsoleMessageLevel {
379    TipMessageLevel,
380    LogMessageLevel,
381    WarningMessageLevel,
382    ErrorMessageLevel
383};
384
385class WXDLLIMPEXP_WEBKIT wxWebViewConsoleMessageEvent : public wxCommandEvent
386{
387#ifndef SWIG
388    DECLARE_DYNAMIC_CLASS( wxWebViewConsoleMessageEvent )
389#endif
390
391public:
392    wxString GetMessage() const { return m_message; }
393    void SetMessage(const wxString& message) { m_message = message; }
394
395    unsigned int GetLineNumber() const { return m_lineNumber; }
396    void SetLineNumber(unsigned int lineNumber) { m_lineNumber = lineNumber; }
397
398    wxString GetSourceID() const { return m_sourceID; }
399    void SetSourceID(const wxString& sourceID) { m_sourceID = sourceID; }
400
401    wxWebViewConsoleMessageEvent( wxWindow* win = (wxWindow*) NULL );
402    wxEvent *Clone(void) const { return new wxWebViewConsoleMessageEvent(*this); }
403
404    wxWebViewConsoleMessageLevel GetLevel() const { return m_level; }
405    void SetLevel(wxWebViewConsoleMessageLevel level) { m_level = level; }
406
407private:
408    unsigned int m_lineNumber;
409    wxString m_message;
410    wxString m_sourceID;
411    wxWebViewConsoleMessageLevel m_level;
412};
413
414class WXDLLIMPEXP_WEBKIT wxWebViewAlertEvent : public wxCommandEvent
415{
416#ifndef SWIG
417    DECLARE_DYNAMIC_CLASS( wxWebViewAlertEvent )
418#endif
419
420public:
421    wxString GetMessage() const { return m_message; }
422    void SetMessage(const wxString& message) { m_message = message; }
423
424    wxWebViewAlertEvent( wxWindow* win = (wxWindow*) NULL );
425    wxEvent *Clone(void) const { return new wxWebViewAlertEvent(*this); }
426
427private:
428    wxString m_message;
429};
430
431class WXDLLIMPEXP_WEBKIT wxWebViewConfirmEvent : public wxWebViewAlertEvent
432{
433#ifndef SWIG
434    DECLARE_DYNAMIC_CLASS( wxWebViewConfirmEvent )
435#endif
436
437public:
438    int GetReturnCode() const { return m_returnCode; }
439    void SetReturnCode(int code) { m_returnCode = code; }
440
441    wxWebViewConfirmEvent( wxWindow* win = (wxWindow*) NULL );
442    wxEvent *Clone(void) const { return new wxWebViewConfirmEvent(*this); }
443
444private:
445    int m_returnCode;
446};
447
448class WXDLLIMPEXP_WEBKIT wxWebViewPromptEvent : public wxWebViewConfirmEvent
449{
450#ifndef SWIG
451    DECLARE_DYNAMIC_CLASS( wxWebViewPromptEvent )
452#endif
453
454public:
455    wxString GetResponse() const { return m_response; }
456    void SetResponse(const wxString& response) { m_response = response; }
457
458    wxWebViewPromptEvent( wxWindow* win = (wxWindow*) NULL );
459    wxEvent *Clone(void) const { return new wxWebViewPromptEvent(*this); }
460
461private:
462    wxString m_response;
463};
464
465class WXDLLIMPEXP_WEBKIT wxWebViewReceivedTitleEvent : public wxCommandEvent
466{
467#ifndef SWIG
468    DECLARE_DYNAMIC_CLASS( wxWebViewReceivedTitleEvent )
469#endif
470
471public:
472    wxString GetTitle() const { return m_title; }
473    void SetTitle(const wxString& title) { m_title = title; }
474
475    wxWebViewReceivedTitleEvent( wxWindow* win = static_cast<wxWindow*>(NULL));
476    wxEvent *Clone(void) const { return new wxWebViewReceivedTitleEvent(*this); }
477
478private:
479    wxString m_title;
480};
481
482class WXDLLIMPEXP_WEBKIT wxWebViewWindowObjectClearedEvent : public wxCommandEvent
483{
484#ifndef SWIG
485    DECLARE_DYNAMIC_CLASS( wxWebViewWindowObjectClearedEvent )
486#endif
487
488public:
489    JSGlobalContextRef GetJSContext() const { return m_jsContext; }
490    void SetJSContext(JSGlobalContextRef context) { m_jsContext = context; }
491
492    JSObjectRef GetWindowObject() const { return m_windowObject; }
493    void SetWindowObject(JSObjectRef object) { m_windowObject = object; }
494
495    wxWebViewWindowObjectClearedEvent( wxWindow* win = static_cast<wxWindow*>(NULL));
496    wxEvent *Clone(void) const { return new wxWebViewWindowObjectClearedEvent(*this); }
497
498private:
499    JSGlobalContextRef m_jsContext;
500    JSObjectRef m_windowObject;
501};
502
503typedef void (wxEvtHandler::*wxWebViewLoadEventFunction)(wxWebViewLoadEvent&);
504typedef void (wxEvtHandler::*wxWebViewBeforeLoadEventFunction)(wxWebViewBeforeLoadEvent&);
505typedef void (wxEvtHandler::*wxWebViewNewWindowEventFunction)(wxWebViewNewWindowEvent&);
506typedef void (wxEvtHandler::*wxWebViewRightClickEventFunction)(wxWebViewRightClickEvent&);
507typedef void (wxEvtHandler::*wxWebViewConsoleMessageEventFunction)(wxWebViewConsoleMessageEvent&);
508typedef void (wxEvtHandler::*wxWebViewAlertEventFunction)(wxWebViewAlertEvent&);
509typedef void (wxEvtHandler::*wxWebViewConfirmEventFunction)(wxWebViewConfirmEvent&);
510typedef void (wxEvtHandler::*wxWebViewPromptEventFunction)(wxWebViewPromptEvent&);
511typedef void (wxEvtHandler::*wxWebViewReceivedTitleEventFunction)(wxWebViewReceivedTitleEvent&);
512typedef void (wxEvtHandler::*wxWebViewWindowObjectClearedFunction)(wxWebViewWindowObjectClearedEvent&);
513
514#define wxWebViewLoadEventHandler(func) \
515    (wxObjectEventFunction)(wxEventFunction)wxStaticCastEvent(wxWebViewLoadEventFunction, &func)
516#define wxWebViewBeforeLoadEventHandler(func) \
517    (wxObjectEventFunction)(wxEventFunction)wxStaticCastEvent(wxWebViewBeforeLoadEventFunction, &func)
518#define wxWebViewNewWindowEventHandler(func) \
519    (wxObjectEventFunction)(wxEventFunction)wxStaticCastEvent(wxWebViewNewWindowEventFunction, &func)
520#define wxWebViewRightClickEventHandler(func) \
521    (wxObjectEventFunction)(wxEventFunction)wxStaticCastEvent(wxWebViewRightClickEventFunction, &func)
522#define wxWebViewConsoleMessageEventHandler(func) \
523    (wxObjectEventFunction)(wxEventFunction)wxStaticCastEvent(wxWebViewConsoleMessageEventFunction, &func)
524#define wxWebViewAlertEventHandler(func) \
525    (wxObjectEventFunction)(wxEventFunction)wxStaticCastEvent(wxWebViewAlertEventFunction, &func)
526#define wxWebViewConfirmEventHandler(func) \
527    (wxObjectEventFunction)(wxEventFunction)wxStaticCastEvent(wxWebViewConfirmEventFunction, &func)
528#define wxWebViewPromptEventHandler(func) \
529    (wxObjectEventFunction)(wxEventFunction)wxStaticCastEvent(wxWebViewPromptEventFunction, &func)
530#define wxWebViewReceivedTitleEventHandler(func) \
531    (wxObjectEventFunction)(wxEventFunction)wxStaticCastEvent(wxWebViewReceivedTitleEventFunction, &func)
532#define wxWebViewWindowObjectClearedEventHandler(func) \
533    (wxObjectEventFunction)(wxEventFunction)wxStaticCastEvent(wxWebViewWindowObjectClearedFunction, &func)
534
535#ifndef SWIG
536BEGIN_DECLARE_EVENT_TYPES()
537    DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_WEBKIT, wxEVT_WEBVIEW_BEFORE_LOAD, wxID_ANY)
538    DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_WEBKIT, wxEVT_WEBVIEW_LOAD, wxID_ANY)
539    DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_WEBKIT, wxEVT_WEBVIEW_NEW_WINDOW, wxID_ANY)
540    DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_WEBKIT, wxEVT_WEBVIEW_RIGHT_CLICK, wxID_ANY)
541    DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_WEBKIT, wxEVT_WEBVIEW_CONSOLE_MESSAGE, wxID_ANY)
542    DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_WEBKIT, wxEVT_WEBVIEW_JS_ALERT, wxID_ANY)
543    DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_WEBKIT, wxEVT_WEBVIEW_JS_CONFIRM, wxID_ANY)
544    DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_WEBKIT, wxEVT_WEBVIEW_JS_PROMPT, wxID_ANY)
545    DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_WEBKIT, wxEVT_WEBVIEW_RECEIVED_TITLE, wxID_ANY)
546    DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_WEBKIT, wxEVT_WEBVIEW_WINDOW_OBJECT_CLEARED, wxID_ANY)
547END_DECLARE_EVENT_TYPES()
548#endif
549
550#define EVT_WEBVIEW_LOAD(winid, func)                       \
551            DECLARE_EVENT_TABLE_ENTRY( wxEVT_WEBVIEW_LOAD, \
552                            winid, \
553                            wxID_ANY, \
554                            (wxObjectEventFunction)   \
555                            (wxWebViewLoadEventFunction) & func, \
556                            static_cast<wxObject*>(NULL)),
557
558#define EVT_WEBVIEW_BEFORE_LOAD(winid, func)                       \
559            DECLARE_EVENT_TABLE_ENTRY( wxEVT_WEBVIEW_BEFORE_LOAD, \
560                            winid, \
561                            wxID_ANY, \
562                            (wxObjectEventFunction)   \
563                            (wxWebViewBeforeLoadEventFunction) & func, \
564                            static_cast<wxObject*>(NULL)),
565
566#define EVT_WEBVIEW_NEW_WINDOW(winid, func)                       \
567            DECLARE_EVENT_TABLE_ENTRY( wxEVT_WEBVIEW_NEW_WINDOW, \
568                            winid, \
569                            wxID_ANY, \
570                            (wxObjectEventFunction)   \
571                            (wxWebViewNewWindowEventFunction) & func, \
572                            static_cast<wxObject*>(NULL)),
573
574#define EVT_WEBVIEW_RIGHT_CLICK(winid, func)                       \
575            DECLARE_EVENT_TABLE_ENTRY( wxEVT_WEBVIEW_RIGHT_CLICK, \
576                            winid, \
577                            wxID_ANY, \
578                            (wxObjectEventFunction)   \
579                            (wxWebViewRightClickEventFunction) & func, \
580                            static_cast<wxObject*>(NULL)),
581
582#define EVT_WEBVIEW_CONSOLE_MESSAGE(winid, func)                       \
583            DECLARE_EVENT_TABLE_ENTRY( wxEVT_WEBVIEW_CONSOLE_MESSAGE, \
584                            winid, \
585                            wxID_ANY, \
586                            (wxObjectEventFunction)   \
587                            (wxWebViewConsoleMessageEventFunction) & func, \
588                            static_cast<wxObject*>(NULL)),
589
590#define EVT_WEBVIEW_JS_ALERT(winid, func)                       \
591            DECLARE_EVENT_TABLE_ENTRY( wxEVT_WEBVIEW_JS_ALERT, \
592                            winid, \
593                            wxID_ANY, \
594                            (wxObjectEventFunction)   \
595                            (wxWebViewAlertEventFunction) & func, \
596                            static_cast<wxObject*>(NULL)),
597
598#define EVT_WEBVIEW_JS_CONFIRM(winid, func)                       \
599            DECLARE_EVENT_TABLE_ENTRY( wxEVT_WEBVIEW_JS_CONFIRM, \
600                            winid, \
601                            wxID_ANY, \
602                            (wxObjectEventFunction)   \
603                            (wxWebViewConfirmEventFunction) & func, \
604                            static_cast<wxObject*>(NULL)),
605
606#define EVT_WEBVIEW_JS_PROMPT(winid, func)                       \
607            DECLARE_EVENT_TABLE_ENTRY( wxEVT_WEBVIEW_JS_PROMPT, \
608                            winid, \
609                            wxID_ANY, \
610                            (wxObjectEventFunction)   \
611                            (wxWebViewPromptEventFunction) & func, \
612                            static_cast<wxObject*>(NULL)),
613
614#define EVT_WEBVIEW_RECEIVED_TITLE(winid, func)                       \
615            DECLARE_EVENT_TABLE_ENTRY( wxEVT_WEBVIEW_RECEIVED_TITLE, \
616                            winid, \
617                            wxID_ANY, \
618                            (wxObjectEventFunction)   \
619                            (wxWebViewReceivedTitleEventFunction) & func, \
620                            static_cast<wxObject*>(NULL)),
621
622#define EVT_WEBVIEW_WINDOW_OBJECT_CLEARED(winid, func)                       \
623            DECLARE_EVENT_TABLE_ENTRY( wxEVT_WEBVIEW_WINDOW_OBJECT_CLEARED, \
624                            winid, \
625                            wxID_ANY, \
626                            (wxObjectEventFunction)   \
627                            (wxWebViewWindowObjectClearedFunction) & func, \
628                            static_cast<wxObject*>(NULL)),
629
630#endif // ifndef WXWEBVIEW_H
631