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