| 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 |
|
| 40 |
class WebViewPrivate; |
| 41 |
class WebViewFrameData; |
| 42 |
class wxWebFrame; |
| 43 |
|
| 44 |
typedef struct OpaqueJSContext* JSGlobalContextRef; |
| 45 |
typedef struct OpaqueJSValue* JSObjectRef; |
| 46 |
|
| 47 |
namespace WebCore { |
| 48 |
class ChromeClientWx; |
| 49 |
class FrameLoaderClientWx; |
| 50 |
} |
| 51 |
|
| 52 |
#ifndef SWIG |
| 53 |
extern WXDLLIMPEXP_WEBKIT const wxChar* wxWebViewNameStr; |
| 54 |
#endif |
| 55 |
|
| 56 |
static const int defaultCacheCapacity = 8192 * 1024; // mirrors Cache.cpp |
| 57 |
|
| 58 |
class WXDLLIMPEXP_WEBKIT wxWebViewCachePolicy |
| 59 |
{ |
| 60 |
public: |
| 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 |
|
| 78 |
protected: |
| 79 |
unsigned m_capacity; |
| 80 |
unsigned m_minDeadCapacity; |
| 81 |
unsigned m_maxDeadCapacity; |
| 82 |
}; |
| 83 |
|
| 84 |
|
| 85 |
// copied from WebKit/mac/Misc/WebKitErrors[Private].h |
| 86 |
enum { |
| 87 |
WebKitErrorCannotShowMIMEType = 100, |
| 88 |
WebKitErrorCannotShowURL = 101, |
| 89 |
WebKitErrorFrameLoadInterruptedByPolicyChange = 102, |
| 90 |
WebKitErrorCannotUseRestrictedPort = 103, |
| 91 |
WebKitErrorCannotFindPlugIn = 200, |
| 92 |
WebKitErrorCannotLoadPlugIn = 201, |
| 93 |
WebKitErrorJavaUnavailable = 202, |
| 94 |
}; |
| 95 |
|
| 96 |
enum wxProxyType { |
| 97 |
HTTP, |
| 98 |
Socks4, |
| 99 |
Socks4A, |
| 100 |
Socks5, |
| 101 |
Socks5Hostname |
| 102 |
}; |
| 103 |
|
| 104 |
class 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 |
|
| 111 |
public: |
| 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 |
|
| 208 |
protected: |
| 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 |
|
| 220 |
private: |
| 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 |
|
| 241 |
enum { |
| 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 |
|
| 254 |
enum { |
| 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 |
|
| 263 |
class WXDLLIMPEXP_WEBKIT wxWebViewBeforeLoadEvent : public wxCommandEvent |
| 264 |
{ |
| 265 |
#ifndef SWIG |
| 266 |
DECLARE_DYNAMIC_CLASS( wxWebViewBeforeLoadEvent ) |
| 267 |
#endif |
| 268 |
|
| 269 |
public: |
| 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 |
|
| 280 |
private: |
| 281 |
bool m_cancelled; |
| 282 |
wxString m_url; |
| 283 |
int m_navType; |
| 284 |
}; |
| 285 |
|
| 286 |
class WXDLLIMPEXP_WEBKIT wxWebViewLoadEvent : public wxCommandEvent |
| 287 |
{ |
| 288 |
#ifndef SWIG |
| 289 |
DECLARE_DYNAMIC_CLASS( wxWebViewLoadEvent ) |
| 290 |
#endif |
| 291 |
|
| 292 |
public: |
| 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 |
|
| 301 |
private: |
| 302 |
int m_state; |
| 303 |
wxString m_url; |
| 304 |
}; |
| 305 |
|
| 306 |
class WXDLLIMPEXP_WEBKIT wxWebKitWindowFeatures |
| 307 |
{ |
| 308 |
public: |
| 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 |
|
| 330 |
class WXDLLIMPEXP_WEBKIT wxWebViewNewWindowEvent : public wxCommandEvent |
| 331 |
{ |
| 332 |
#ifndef SWIG |
| 333 |
DECLARE_DYNAMIC_CLASS( wxWebViewNewWindowEvent ) |
| 334 |
#endif |
| 335 |
|
| 336 |
public: |
| 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 |
|
| 349 |
private: |
| 350 |
wxWebView* m_webView; |
| 351 |
wxWebKitWindowFeatures m_features; |
| 352 |
wxString m_url; |
| 353 |
wxString m_targetName; |
| 354 |
}; |
| 355 |
|
| 356 |
class WXDLLIMPEXP_WEBKIT wxWebViewRightClickEvent : public wxCommandEvent |
| 357 |
{ |
| 358 |
#ifndef SWIG |
| 359 |
DECLARE_DYNAMIC_CLASS( wxWebViewRightClickEvent ) |
| 360 |
#endif |
| 361 |
|
| 362 |
public: |
| 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 |
|
| 372 |
private: |
| 373 |
wxWebViewDOMElementInfo m_info; |
| 374 |
wxPoint m_position; |
| 375 |
}; |
| 376 |
|
| 377 |
// copied from page/Console.h |
| 378 |
enum wxWebViewConsoleMessageLevel { |
| 379 |
TipMessageLevel, |
| 380 |
LogMessageLevel, |
| 381 |
WarningMessageLevel, |
| 382 |
ErrorMessageLevel |
| 383 |
}; |
| 384 |
|
| 385 |
class WXDLLIMPEXP_WEBKIT wxWebViewConsoleMessageEvent : public wxCommandEvent |
| 386 |
{ |
| 387 |
#ifndef SWIG |
| 388 |
DECLARE_DYNAMIC_CLASS( wxWebViewConsoleMessageEvent ) |
| 389 |
#endif |
| 390 |
|
| 391 |
public: |
| 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 |
|
| 407 |
private: |
| 408 |
unsigned int m_lineNumber; |
| 409 |
wxString m_message; |
| 410 |
wxString m_sourceID; |
| 411 |
wxWebViewConsoleMessageLevel m_level; |
| 412 |
}; |
| 413 |
|
| 414 |
class WXDLLIMPEXP_WEBKIT wxWebViewAlertEvent : public wxCommandEvent |
| 415 |
{ |
| 416 |
#ifndef SWIG |
| 417 |
DECLARE_DYNAMIC_CLASS( wxWebViewAlertEvent ) |
| 418 |
#endif |
| 419 |
|
| 420 |
public: |
| 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 |
|
| 427 |
private: |
| 428 |
wxString m_message; |
| 429 |
}; |
| 430 |
|
| 431 |
class WXDLLIMPEXP_WEBKIT wxWebViewConfirmEvent : public wxWebViewAlertEvent |
| 432 |
{ |
| 433 |
#ifndef SWIG |
| 434 |
DECLARE_DYNAMIC_CLASS( wxWebViewConfirmEvent ) |
| 435 |
#endif |
| 436 |
|
| 437 |
public: |
| 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 |
|
| 444 |
private: |
| 445 |
int m_returnCode; |
| 446 |
}; |
| 447 |
|
| 448 |
class WXDLLIMPEXP_WEBKIT wxWebViewPromptEvent : public wxWebViewConfirmEvent |
| 449 |
{ |
| 450 |
#ifndef SWIG |
| 451 |
DECLARE_DYNAMIC_CLASS( wxWebViewPromptEvent ) |
| 452 |
#endif |
| 453 |
|
| 454 |
public: |
| 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 |
|
| 461 |
private: |
| 462 |
wxString m_response; |
| 463 |
}; |
| 464 |
|
| 465 |
class WXDLLIMPEXP_WEBKIT wxWebViewReceivedTitleEvent : public wxCommandEvent |
| 466 |
{ |
| 467 |
#ifndef SWIG |
| 468 |
DECLARE_DYNAMIC_CLASS( wxWebViewReceivedTitleEvent ) |
| 469 |
#endif |
| 470 |
|
| 471 |
public: |
| 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 |
|
| 478 |
private: |
| 479 |
wxString m_title; |
| 480 |
}; |
| 481 |
|
| 482 |
class WXDLLIMPEXP_WEBKIT wxWebViewWindowObjectClearedEvent : public wxCommandEvent |
| 483 |
{ |
| 484 |
#ifndef SWIG |
| 485 |
DECLARE_DYNAMIC_CLASS( wxWebViewWindowObjectClearedEvent ) |
| 486 |
#endif |
| 487 |
|
| 488 |
public: |
| 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 |
|
| 498 |
private: |
| 499 |
JSGlobalContextRef m_jsContext; |
| 500 |
JSObjectRef m_windowObject; |
| 501 |
}; |
| 502 |
|
| 503 |
typedef void (wxEvtHandler::*wxWebViewLoadEventFunction)(wxWebViewLoadEvent&); |
| 504 |
typedef void (wxEvtHandler::*wxWebViewBeforeLoadEventFunction)(wxWebViewBeforeLoadEvent&); |
| 505 |
typedef void (wxEvtHandler::*wxWebViewNewWindowEventFunction)(wxWebViewNewWindowEvent&); |
| 506 |
typedef void (wxEvtHandler::*wxWebViewRightClickEventFunction)(wxWebViewRightClickEvent&); |
| 507 |
typedef void (wxEvtHandler::*wxWebViewConsoleMessageEventFunction)(wxWebViewConsoleMessageEvent&); |
| 508 |
typedef void (wxEvtHandler::*wxWebViewAlertEventFunction)(wxWebViewAlertEvent&); |
| 509 |
typedef void (wxEvtHandler::*wxWebViewConfirmEventFunction)(wxWebViewConfirmEvent&); |
| 510 |
typedef void (wxEvtHandler::*wxWebViewPromptEventFunction)(wxWebViewPromptEvent&); |
| 511 |
typedef void (wxEvtHandler::*wxWebViewReceivedTitleEventFunction)(wxWebViewReceivedTitleEvent&); |
| 512 |
typedef 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 |
| 536 |
BEGIN_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) |
| 547 |
END_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 |