Unreviewed, rolling out r96108, r96111, r96113, and r96116.
[WebKit-https.git] / Source / 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 "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     void OnMouseCaptureLost(wxMouseCaptureLostEvent&);
245     
246 private:
247     // any class wishing to process wxWindows events must use this macro
248 #ifndef SWIG
249     DECLARE_EVENT_TABLE()
250     DECLARE_DYNAMIC_CLASS(wxWebView)
251 #endif
252     float m_textMagnifier;
253     bool m_isInitialized;
254     bool m_beingDestroyed;
255     bool m_mouseWheelZooms;
256     WebViewPrivate* m_impl;
257     wxWebFrame* m_mainFrame;
258     wxString m_title;
259     
260 };
261
262 // ----------------------------------------------------------------------------
263 // Web Kit Events
264 // ----------------------------------------------------------------------------
265
266 enum {
267     wxWEBVIEW_LOAD_STARTED = 1,
268     wxWEBVIEW_LOAD_NEGOTIATING = 2,
269     wxWEBVIEW_LOAD_REDIRECTING = 4,
270     wxWEBVIEW_LOAD_TRANSFERRING = 8,
271     wxWEBVIEW_LOAD_STOPPED = 16,
272     wxWEBVIEW_LOAD_FAILED = 32,
273     wxWEBVIEW_LOAD_DL_COMPLETED = 64,
274     wxWEBVIEW_LOAD_DOC_COMPLETED = 128,
275     wxWEBVIEW_LOAD_ONLOAD_HANDLED = 256,
276     wxWEBVIEW_LOAD_WINDOW_OBJECT_CLEARED = 512
277 };
278
279 enum {
280     wxWEBVIEW_NAV_LINK_CLICKED = 1,
281     wxWEBVIEW_NAV_BACK_NEXT = 2,
282     wxWEBVIEW_NAV_FORM_SUBMITTED = 4,
283     wxWEBVIEW_NAV_RELOAD = 8,
284     wxWEBVIEW_NAV_FORM_RESUBMITTED = 16,
285     wxWEBVIEW_NAV_OTHER = 32
286 };
287
288 class WXDLLIMPEXP_WEBKIT wxWebViewBeforeLoadEvent : public wxCommandEvent
289 {
290 #ifndef SWIG
291     DECLARE_DYNAMIC_CLASS( wxWebViewBeforeLoadEvent )
292 #endif
293
294 public:
295     bool IsCancelled() const { return m_cancelled; }
296     void Cancel(bool cancel = true) { m_cancelled = cancel; }
297     wxString GetURL() const { return m_url; }
298     void SetURL(const wxString& url) { m_url = url; }
299     void SetNavigationType(int navType) { m_navType = navType; }
300     int GetNavigationType() const { return m_navType; }
301     wxWebFrame* GetFrame() const { return m_frame; }
302     void SetFrame(wxWebFrame* frame) { m_frame = frame; }
303
304     wxWebViewBeforeLoadEvent( wxWindow* win = (wxWindow*) NULL );
305     wxEvent *Clone(void) const { return new wxWebViewBeforeLoadEvent(*this); }
306
307 private:
308     bool m_cancelled;
309     wxString m_url;
310     int m_navType;
311     wxWebFrame* m_frame;
312 };
313
314 class WXDLLIMPEXP_WEBKIT wxWebViewLoadEvent : public wxCommandEvent
315 {
316 #ifndef SWIG
317     DECLARE_DYNAMIC_CLASS( wxWebViewLoadEvent )
318 #endif
319
320 public:
321     int GetState() const { return m_state; }
322     void SetState(const int state) { m_state = state; }
323     wxString GetURL() const { return m_url; }
324     void SetURL(const wxString& url) { m_url = url; }
325     wxWebFrame* GetFrame() const { return m_frame; }
326     void SetFrame(wxWebFrame* frame) { m_frame = frame; }
327
328     wxWebViewLoadEvent( wxWindow* win = (wxWindow*) NULL );
329     wxEvent *Clone(void) const { return new wxWebViewLoadEvent(*this); }
330
331 private:
332     int m_state;
333     wxString m_url;
334     wxWebFrame* m_frame;
335 };
336
337 class WXDLLIMPEXP_WEBKIT wxWebKitWindowFeatures
338 {
339 public:
340     wxWebKitWindowFeatures()
341         : menuBarVisible(true)
342         , statusBarVisible(true)
343         , toolBarVisible(true)
344         , locationBarVisible(true)
345         , scrollbarsVisible(true)
346         , resizable(true)
347         , fullscreen(false)
348         , dialog(false)
349     { }
350
351     bool menuBarVisible;
352     bool statusBarVisible;
353     bool toolBarVisible;
354     bool locationBarVisible;
355     bool scrollbarsVisible;
356     bool resizable;
357     bool fullscreen;
358     bool dialog;
359 };
360
361 class WXDLLIMPEXP_WEBKIT wxWebViewNewWindowEvent : public wxCommandEvent
362 {
363 #ifndef SWIG
364     DECLARE_DYNAMIC_CLASS( wxWebViewNewWindowEvent )
365 #endif
366
367 public:
368     wxString GetURL() const { return m_url; }
369     void SetURL(const wxString& url) { m_url = url; }
370     wxString GetTargetName() const { return m_targetName; }
371     void SetTargetName(const wxString& name) { m_targetName = name; }
372     wxWebView* GetWebView() { return m_webView; }
373     void SetWebView(wxWebView* webView) { m_webView = webView; }
374     wxWebKitWindowFeatures GetWindowFeatures() { return m_features; }
375     void SetWindowFeatures(wxWebKitWindowFeatures features) { m_features = features; }
376     wxWebFrame* GetFrame() const { return m_frame; }
377     void SetFrame(wxWebFrame* frame) { m_frame = frame; }
378
379     wxWebViewNewWindowEvent( wxWindow* win = static_cast<wxWindow*>(NULL));
380     wxEvent *Clone(void) const { return new wxWebViewNewWindowEvent(*this); }
381
382 private:
383     wxWebView* m_webView;
384     wxWebFrame* m_frame;
385     wxWebKitWindowFeatures m_features;
386     wxString m_url;
387     wxString m_targetName;
388 };
389
390 class WXDLLIMPEXP_WEBKIT wxWebViewRightClickEvent : public wxCommandEvent
391 {
392 #ifndef SWIG
393     DECLARE_DYNAMIC_CLASS( wxWebViewRightClickEvent )
394 #endif
395
396 public:
397     wxWebViewRightClickEvent( wxWindow* win = static_cast<wxWindow*>(NULL));
398     wxEvent *Clone(void) const { return new wxWebViewRightClickEvent(*this); }
399     
400     wxWebViewDOMElementInfo GetInfo() const { return m_info; }
401     void SetInfo(wxWebViewDOMElementInfo info) { m_info = info; }
402     
403     wxPoint GetPosition() const { return m_position; }
404     void SetPosition(wxPoint pos) { m_position = pos; }
405
406 private:
407     wxWebViewDOMElementInfo m_info;
408     wxPoint m_position;
409 };
410
411 // copied from page/Console.h
412 enum wxWebViewConsoleMessageLevel {
413     TipMessageLevel,
414     LogMessageLevel,
415     WarningMessageLevel,
416     ErrorMessageLevel
417 };
418
419 class WXDLLIMPEXP_WEBKIT wxWebViewConsoleMessageEvent : public wxCommandEvent
420 {
421 #ifndef SWIG
422     DECLARE_DYNAMIC_CLASS( wxWebViewConsoleMessageEvent )
423 #endif
424
425 public:
426     wxString GetMessage() const { return m_message; }
427     void SetMessage(const wxString& message) { m_message = message; }
428     
429     unsigned int GetLineNumber() const { return m_lineNumber; }
430     void SetLineNumber(unsigned int lineNumber) { m_lineNumber = lineNumber; }
431     
432     wxString GetSourceID() const { return m_sourceID; }
433     void SetSourceID(const wxString& sourceID) { m_sourceID = sourceID; }
434
435     wxWebViewConsoleMessageEvent( wxWindow* win = (wxWindow*) NULL );
436     wxEvent *Clone(void) const { return new wxWebViewConsoleMessageEvent(*this); }
437
438     wxWebViewConsoleMessageLevel GetLevel() const { return m_level; }
439     void SetLevel(wxWebViewConsoleMessageLevel level) { m_level = level; }
440
441 private:
442     unsigned int m_lineNumber;
443     wxString m_message;
444     wxString m_sourceID;
445     wxWebViewConsoleMessageLevel m_level;
446 };
447
448 class WXDLLIMPEXP_WEBKIT wxWebViewAlertEvent : public wxCommandEvent
449 {
450 #ifndef SWIG
451     DECLARE_DYNAMIC_CLASS( wxWebViewAlertEvent )
452 #endif
453
454 public:
455     wxString GetMessage() const { return m_message; }
456     void SetMessage(const wxString& message) { m_message = message; }
457
458     wxWebViewAlertEvent( wxWindow* win = (wxWindow*) NULL );
459     wxEvent *Clone(void) const { return new wxWebViewAlertEvent(*this); }
460
461 private:
462     wxString m_message;
463 };
464
465 class WXDLLIMPEXP_WEBKIT wxWebViewConfirmEvent : public wxWebViewAlertEvent
466 {
467 #ifndef SWIG
468     DECLARE_DYNAMIC_CLASS( wxWebViewConfirmEvent )
469 #endif
470
471 public:   
472     int GetReturnCode() const { return m_returnCode; }
473     void SetReturnCode(int code) { m_returnCode = code; }
474
475     wxWebViewConfirmEvent( wxWindow* win = (wxWindow*) NULL );
476     wxEvent *Clone(void) const { return new wxWebViewConfirmEvent(*this); }
477
478 private:
479     int m_returnCode;
480 };
481
482 class WXDLLIMPEXP_WEBKIT wxWebViewPromptEvent : public wxWebViewConfirmEvent
483 {
484 #ifndef SWIG
485     DECLARE_DYNAMIC_CLASS( wxWebViewPromptEvent )
486 #endif
487
488 public:   
489     wxString GetResponse() const { return m_response; }
490     void SetResponse(const wxString& response) { m_response = response; }
491
492     wxWebViewPromptEvent( wxWindow* win = (wxWindow*) NULL );
493     wxEvent *Clone(void) const { return new wxWebViewPromptEvent(*this); }
494
495 private:
496     wxString m_response;
497 };
498
499 class WXDLLIMPEXP_WEBKIT wxWebViewReceivedTitleEvent : public wxCommandEvent
500 {
501 #ifndef SWIG
502     DECLARE_DYNAMIC_CLASS( wxWebViewReceivedTitleEvent )
503 #endif
504
505 public:
506     wxString GetTitle() const { return m_title; }
507     void SetTitle(const wxString& title) { m_title = title; }
508
509     wxWebFrame* GetFrame() const { return m_frame; }
510     void SetFrame(wxWebFrame* frame) { m_frame = frame; }
511
512     wxWebViewReceivedTitleEvent( wxWindow* win = static_cast<wxWindow*>(NULL));
513     wxEvent *Clone(void) const { return new wxWebViewReceivedTitleEvent(*this); }
514
515 private:
516     wxString m_title;
517     wxWebFrame* m_frame;
518 };
519
520 class WXDLLIMPEXP_WEBKIT wxWebViewWindowObjectClearedEvent : public wxCommandEvent
521 {
522 #ifndef SWIG
523     DECLARE_DYNAMIC_CLASS( wxWebViewWindowObjectClearedEvent )
524 #endif
525
526 public:
527     JSGlobalContextRef GetJSContext() const { return m_jsContext; }
528     void SetJSContext(JSGlobalContextRef context) { m_jsContext = context; }
529     
530     JSObjectRef GetWindowObject() const { return m_windowObject; }
531     void SetWindowObject(JSObjectRef object) { m_windowObject = object; }
532
533     wxWebViewWindowObjectClearedEvent( wxWindow* win = static_cast<wxWindow*>(NULL));
534     wxEvent *Clone(void) const { return new wxWebViewWindowObjectClearedEvent(*this); }
535
536 private:
537     JSGlobalContextRef m_jsContext;
538     JSObjectRef m_windowObject;
539 };
540
541 class WXDLLIMPEXP_WEBKIT wxWebViewContentsChangedEvent : public wxCommandEvent {
542 #ifndef SWIG
543     DECLARE_DYNAMIC_CLASS(wxWebViewContentsChangedEvent)
544 #endif
545
546 public:
547     wxWebViewContentsChangedEvent(wxWindow* win = static_cast<wxWindow*>(0));
548     wxEvent *Clone(void) const { return new wxWebViewContentsChangedEvent(*this); }
549 };
550
551 class WXDLLIMPEXP_WEBKIT wxWebViewSelectionChangedEvent : public wxCommandEvent {
552 #ifndef SWIG
553     DECLARE_DYNAMIC_CLASS(wxWebViewSelectionChangedEvent)
554 #endif
555
556 public:
557     wxWebViewSelectionChangedEvent(wxWindow* win = static_cast<wxWindow*>(0));
558     wxEvent *Clone(void) const { return new wxWebViewSelectionChangedEvent(*this); }
559 };
560
561 class WXDLLIMPEXP_WEBKIT wxWebViewPrintFrameEvent : public wxCommandEvent {
562 #ifndef SWIG
563     DECLARE_DYNAMIC_CLASS(wxWebViewPrintFrameEvent)
564 #endif
565     
566 public:
567     wxWebViewPrintFrameEvent(wxWindow* win = 0);
568     wxEvent *Clone(void) const { return new wxWebViewPrintFrameEvent(*this); }
569     
570     wxWebFrame* GetWebFrame() { return m_webFrame; }
571     void SetWebFrame(wxWebFrame* frame) { m_webFrame = frame; }
572 private:
573     wxWebFrame* m_webFrame;
574 };
575
576 typedef void (wxEvtHandler::*wxWebViewLoadEventFunction)(wxWebViewLoadEvent&);
577 typedef void (wxEvtHandler::*wxWebViewBeforeLoadEventFunction)(wxWebViewBeforeLoadEvent&);
578 typedef void (wxEvtHandler::*wxWebViewNewWindowEventFunction)(wxWebViewNewWindowEvent&);
579 typedef void (wxEvtHandler::*wxWebViewRightClickEventFunction)(wxWebViewRightClickEvent&);
580 typedef void (wxEvtHandler::*wxWebViewConsoleMessageEventFunction)(wxWebViewConsoleMessageEvent&);
581 typedef void (wxEvtHandler::*wxWebViewAlertEventFunction)(wxWebViewAlertEvent&);
582 typedef void (wxEvtHandler::*wxWebViewConfirmEventFunction)(wxWebViewConfirmEvent&);
583 typedef void (wxEvtHandler::*wxWebViewPromptEventFunction)(wxWebViewPromptEvent&);
584 typedef void (wxEvtHandler::*wxWebViewReceivedTitleEventFunction)(wxWebViewReceivedTitleEvent&);
585 typedef void (wxEvtHandler::*wxWebViewWindowObjectClearedFunction)(wxWebViewWindowObjectClearedEvent&);
586 typedef void (wxEvtHandler::*wxWebViewContentsChangedFunction)(wxWebViewContentsChangedEvent&);
587 typedef void (wxEvtHandler::*wxWebViewSelectionChangedFunction)(wxWebViewSelectionChangedEvent&);
588 typedef void (wxEvtHandler::*wxWebViewPrintFrameFunction)(wxWebViewPrintFrameEvent&);
589
590 #define wxWebViewLoadEventHandler(func) \
591     (wxObjectEventFunction)(wxEventFunction)wxStaticCastEvent(wxWebViewLoadEventFunction, &func)
592 #define wxWebViewBeforeLoadEventHandler(func) \
593     (wxObjectEventFunction)(wxEventFunction)wxStaticCastEvent(wxWebViewBeforeLoadEventFunction, &func)
594 #define wxWebViewNewWindowEventHandler(func) \
595     (wxObjectEventFunction)(wxEventFunction)wxStaticCastEvent(wxWebViewNewWindowEventFunction, &func)
596 #define wxWebViewRightClickEventHandler(func) \
597     (wxObjectEventFunction)(wxEventFunction)wxStaticCastEvent(wxWebViewRightClickEventFunction, &func)
598 #define wxWebViewConsoleMessageEventHandler(func) \
599     (wxObjectEventFunction)(wxEventFunction)wxStaticCastEvent(wxWebViewConsoleMessageEventFunction, &func)
600 #define wxWebViewAlertEventHandler(func) \
601     (wxObjectEventFunction)(wxEventFunction)wxStaticCastEvent(wxWebViewAlertEventFunction, &func)
602 #define wxWebViewConfirmEventHandler(func) \
603     (wxObjectEventFunction)(wxEventFunction)wxStaticCastEvent(wxWebViewConfirmEventFunction, &func)
604 #define wxWebViewPromptEventHandler(func) \
605     (wxObjectEventFunction)(wxEventFunction)wxStaticCastEvent(wxWebViewPromptEventFunction, &func)
606 #define wxWebViewReceivedTitleEventHandler(func) \
607     (wxObjectEventFunction)(wxEventFunction)wxStaticCastEvent(wxWebViewReceivedTitleEventFunction, &func)
608 #define wxWebViewWindowObjectClearedEventHandler(func) \
609     (wxObjectEventFunction)(wxEventFunction)wxStaticCastEvent(wxWebViewWindowObjectClearedFunction, &func)
610 #define wxWebViewContentsChangedEventHandler(func) \
611     (wxObjectEventFunction)(wxEventFunction)wxStaticCastEvent(wxWebViewContentsChangedEventFunction, &func)
612 #define wxWebViewSelectionChangedEventHandler(func) \
613     (wxObjectEventFunction)(wxEventFunction)wxStaticCastEvent(wxWebViewSelectionChangedEventFunction, &func)
614 #define wxWebViewPrintFrameEventHandler(func) \
615     (wxObjectEventFunction)(wxEventFunction)wxStaticCastEvent(wxWebViewPrintFrameEventFunction, &func)
616
617 #ifndef SWIG
618 BEGIN_DECLARE_EVENT_TYPES()
619     DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_WEBKIT, wxEVT_WEBVIEW_BEFORE_LOAD, wxID_ANY)
620     DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_WEBKIT, wxEVT_WEBVIEW_LOAD, wxID_ANY)
621     DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_WEBKIT, wxEVT_WEBVIEW_NEW_WINDOW, wxID_ANY)
622     DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_WEBKIT, wxEVT_WEBVIEW_RIGHT_CLICK, wxID_ANY)
623     DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_WEBKIT, wxEVT_WEBVIEW_CONSOLE_MESSAGE, wxID_ANY)
624     DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_WEBKIT, wxEVT_WEBVIEW_JS_ALERT, wxID_ANY)
625     DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_WEBKIT, wxEVT_WEBVIEW_JS_CONFIRM, wxID_ANY)
626     DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_WEBKIT, wxEVT_WEBVIEW_JS_PROMPT, wxID_ANY)
627     DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_WEBKIT, wxEVT_WEBVIEW_RECEIVED_TITLE, wxID_ANY)
628     DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_WEBKIT, wxEVT_WEBVIEW_WINDOW_OBJECT_CLEARED, wxID_ANY)
629     DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_WEBKIT, wxEVT_WEBVIEW_CONTENTS_CHANGED, wxID_ANY)
630     DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_WEBKIT, wxEVT_WEBVIEW_SELECTION_CHANGED, wxID_ANY)
631     DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_WEBKIT, wxEVT_WEBVIEW_PRINT_FRAME, wxID_ANY)
632 END_DECLARE_EVENT_TYPES()
633 #endif
634
635 #define EVT_WEBVIEW_LOAD(winid, func)                       \
636             DECLARE_EVENT_TABLE_ENTRY( wxEVT_WEBVIEW_LOAD, \
637                             winid, \
638                             wxID_ANY, \
639                             (wxObjectEventFunction)   \
640                             (wxWebViewLoadEventFunction) & func, \
641                             static_cast<wxObject*>(NULL)),
642                             
643 #define EVT_WEBVIEW_BEFORE_LOAD(winid, func)                       \
644             DECLARE_EVENT_TABLE_ENTRY( wxEVT_WEBVIEW_BEFORE_LOAD, \
645                             winid, \
646                             wxID_ANY, \
647                             (wxObjectEventFunction)   \
648                             (wxWebViewBeforeLoadEventFunction) & func, \
649                             static_cast<wxObject*>(NULL)),
650                             
651 #define EVT_WEBVIEW_NEW_WINDOW(winid, func)                       \
652             DECLARE_EVENT_TABLE_ENTRY( wxEVT_WEBVIEW_NEW_WINDOW, \
653                             winid, \
654                             wxID_ANY, \
655                             (wxObjectEventFunction)   \
656                             (wxWebViewNewWindowEventFunction) & func, \
657                             static_cast<wxObject*>(NULL)),
658
659 #define EVT_WEBVIEW_RIGHT_CLICK(winid, func)                       \
660             DECLARE_EVENT_TABLE_ENTRY( wxEVT_WEBVIEW_RIGHT_CLICK, \
661                             winid, \
662                             wxID_ANY, \
663                             (wxObjectEventFunction)   \
664                             (wxWebViewRightClickEventFunction) & func, \
665                             static_cast<wxObject*>(NULL)),
666                             
667 #define EVT_WEBVIEW_CONSOLE_MESSAGE(winid, func)                       \
668             DECLARE_EVENT_TABLE_ENTRY( wxEVT_WEBVIEW_CONSOLE_MESSAGE, \
669                             winid, \
670                             wxID_ANY, \
671                             (wxObjectEventFunction)   \
672                             (wxWebViewConsoleMessageEventFunction) & func, \
673                             static_cast<wxObject*>(NULL)),
674
675 #define EVT_WEBVIEW_JS_ALERT(winid, func)                       \
676             DECLARE_EVENT_TABLE_ENTRY( wxEVT_WEBVIEW_JS_ALERT, \
677                             winid, \
678                             wxID_ANY, \
679                             (wxObjectEventFunction)   \
680                             (wxWebViewAlertEventFunction) & func, \
681                             static_cast<wxObject*>(NULL)),
682                             
683 #define EVT_WEBVIEW_JS_CONFIRM(winid, func)                       \
684             DECLARE_EVENT_TABLE_ENTRY( wxEVT_WEBVIEW_JS_CONFIRM, \
685                             winid, \
686                             wxID_ANY, \
687                             (wxObjectEventFunction)   \
688                             (wxWebViewConfirmEventFunction) & func, \
689                             static_cast<wxObject*>(NULL)),
690                             
691 #define EVT_WEBVIEW_JS_PROMPT(winid, func)                       \
692             DECLARE_EVENT_TABLE_ENTRY( wxEVT_WEBVIEW_JS_PROMPT, \
693                             winid, \
694                             wxID_ANY, \
695                             (wxObjectEventFunction)   \
696                             (wxWebViewPromptEventFunction) & func, \
697                             static_cast<wxObject*>(NULL)),
698                             
699 #define EVT_WEBVIEW_RECEIVED_TITLE(winid, func)                       \
700             DECLARE_EVENT_TABLE_ENTRY( wxEVT_WEBVIEW_RECEIVED_TITLE, \
701                             winid, \
702                             wxID_ANY, \
703                             (wxObjectEventFunction)   \
704                             (wxWebViewReceivedTitleEventFunction) & func, \
705                             static_cast<wxObject*>(NULL)),
706                             
707 #define EVT_WEBVIEW_WINDOW_OBJECT_CLEARED(winid, func)                       \
708             DECLARE_EVENT_TABLE_ENTRY( wxEVT_WEBVIEW_WINDOW_OBJECT_CLEARED, \
709                             winid, \
710                             wxID_ANY, \
711                             (wxObjectEventFunction)   \
712                             (wxWebViewWindowObjectClearedFunction) & func, \
713                             static_cast<wxObject*>(NULL)),
714
715 #define EVT_WEBVIEW_CONTENTS_CHANGED(winid, func)                       \
716             DECLARE_EVENT_TABLE_ENTRY(wxEVT_WEBVIEW_CONTENTS_CHANGED, \
717                             winid, \
718                             wxID_ANY, \
719                             (wxObjectEventFunction)   \
720                             (wxWebViewContentsChangedEventFunction) & func, \
721                             static_cast<wxObject*>(0)),
722                             
723 #define EVT_WEBVIEW_SELECTION_CHANGED(winid, func)                       \
724             DECLARE_EVENT_TABLE_ENTRY(wxEVT_WEBVIEW_SELECTION_CHANGED, \
725                             winid, \
726                             wxID_ANY, \
727                             (wxObjectEventFunction)   \
728                             (wxWebViewSelectionChangedEventFunction) & func, \
729                             static_cast<wxObject*>(0)),
730
731 #define EVT_WEBVIEW_PRINT_FRAME(winid, func)                       \
732             DECLARE_EVENT_TABLE_ENTRY(wxEVT_WEBVIEW_PRINT_FRAME, \
733                             winid, \
734                             wxID_ANY, \
735                             (wxObjectEventFunction)   \
736                             (wxWebViewPrintFrameEventFunction) & func, \
737                             static_cast<wxObject*>(0)),
738                             
739 #endif // ifndef WXWEBVIEW_H