X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/7eb8c6ee3e90554c94d05dc06e6826f832640927..11e3c6ef36393fb5863ea2f9601d8facd73acb12:/include/wx/html/webkit.h diff --git a/include/wx/html/webkit.h b/include/wx/html/webkit.h old mode 100755 new mode 100644 index f007cf5302..2fd45ff5df --- a/include/wx/html/webkit.h +++ b/include/wx/html/webkit.h @@ -1,5 +1,5 @@ ///////////////////////////////////////////////////////////////////////////// -// Name: webkit.h +// Name: wx/html/webkit.h // Purpose: wxWebKitCtrl - embeddable web kit control // Author: Jethro Grassie / Kevin Ollivier // Modified by: @@ -12,73 +12,107 @@ #ifndef _WX_WEBKIT_H #define _WX_WEBKIT_H -#ifdef __GNUG__ -#pragma interface "webkit.h" -#endif +#if wxUSE_WEBKIT #if !defined(__WXMAC__) && !defined(__WXCOCOA__) #error "wxWebKitCtrl not implemented for this platform" #endif -#ifdef __WXCOCOA -#include -#endif #include "wx/control.h" +DECLARE_WXCOCOA_OBJC_CLASS(WebView); // ---------------------------------------------------------------------------- // Web Kit Control // ---------------------------------------------------------------------------- -class wxWebKitCtrl : public wxControl +extern WXDLLIMPEXP_DATA_CORE(const char) wxWebKitCtrlNameStr[]; + +class WXDLLIMPEXP_CORE wxWebKitCtrl : public wxControl { public: - DECLARE_DYNAMIC_CLASS(wxWebKitCtrl) + DECLARE_DYNAMIC_CLASS(wxWebKitCtrl) - wxWebKitCtrl() {}; + wxWebKitCtrl() {} wxWebKitCtrl(wxWindow *parent, - wxWindowID winID, + wxWindowID winID, const wxString& strURL, const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, long style = 0, - const wxValidator& validator = wxDefaultValidator, - const wxString& name = wxT("webkitctrl")) + const wxSize& size = wxDefaultSize, long style = 0, + const wxValidator& validator = wxDefaultValidator, + const wxString& name = wxWebKitCtrlNameStr) { Create(parent, winID, strURL, pos, size, style, validator, name); - }; - bool Create(wxWindow *parent, + } + bool Create(wxWindow *parent, wxWindowID winID, const wxString& strURL, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = 0, const wxValidator& validator = wxDefaultValidator, - const wxString& name = wxT("webkitctrl")); - virtual ~wxWebKitCtrl(); - + const wxString& name = wxWebKitCtrlNameStr); + virtual ~wxWebKitCtrl(); + void LoadURL(const wxString &url); - + bool CanGoBack(); bool CanGoForward(); bool GoBack(); bool GoForward(); - void Reload(); + void Reload(); void Stop(); bool CanGetPageSource(); wxString GetPageSource(); - void SetPageSource(wxString& source, const wxString& baseUrl = wxEmptyString); - + void SetPageSource(const wxString& source, const wxString& baseUrl = wxEmptyString); + wxString GetPageURL(){ return m_currentURL; } + void SetPageTitle(const wxString& title) { m_pageTitle = title; } + wxString GetPageTitle(){ return m_pageTitle; } + + // since these worked in 2.6, add wrappers + void SetTitle(const wxString& title) { SetPageTitle(title); } + wxString GetTitle() { return GetPageTitle(); } + + wxString GetSelection(); + + bool CanIncreaseTextSize(); + void IncreaseTextSize(); + bool CanDecreaseTextSize(); + void DecreaseTextSize(); + + void Print(bool showPrompt = false); + + void MakeEditable(bool enable = true); + bool IsEditable(); + + wxString RunScript(const wxString& javascript); + + void SetScrollPos(int pos); + int GetScrollPos(); + + // don't hide base class virtuals + virtual void SetScrollPos( int orient, int pos, bool refresh = true ) + { return wxControl::SetScrollPos(orient, pos, refresh); } + virtual int GetScrollPos( int orient ) const + { return wxControl::GetScrollPos(orient); } + //we need to resize the webview when the control size changes - //void OnSize(wxSizeEvent &event); + void OnSize(wxSizeEvent &event); + void OnMove(wxMoveEvent &event); + void OnMouseEvents(wxMouseEvent &event); protected: - DECLARE_EVENT_TABLE() + DECLARE_EVENT_TABLE() + void MacVisibilityChanged(); private: wxWindow *m_parent; wxWindowID m_windowID; wxString m_currentURL; wxString m_pageTitle; - void* m_webView; - //It should be WebView, but WebView is Cocoa only, so any class which included - //this header would have to link to Cocoa, so for now use void* instead. + + WX_WebView m_webView; + + // we may use this later to setup our own mouse events, + // so leave it in for now. + void* m_webKitCtrlEventHandler; }; // ---------------------------------------------------------------------------- @@ -86,44 +120,121 @@ private: // ---------------------------------------------------------------------------- enum { - wxWEBKIT_STATE_START = 1, - wxWEBKIT_STATE_NEGOTIATING = 2, - wxWEBKIT_STATE_REDIRECTING = 4, - wxWEBKIT_STATE_TRANSFERRING = 8, - wxWEBKIT_STATE_STOP = 16, + wxWEBKIT_STATE_START = 1, + wxWEBKIT_STATE_NEGOTIATING = 2, + wxWEBKIT_STATE_REDIRECTING = 4, + wxWEBKIT_STATE_TRANSFERRING = 8, + wxWEBKIT_STATE_STOP = 16, wxWEBKIT_STATE_FAILED = 32 }; -class wxWebKitStateChangedEvent : public wxCommandEvent +enum { + wxWEBKIT_NAV_LINK_CLICKED = 1, + wxWEBKIT_NAV_BACK_NEXT = 2, + wxWEBKIT_NAV_FORM_SUBMITTED = 4, + wxWEBKIT_NAV_RELOAD = 8, + wxWEBKIT_NAV_FORM_RESUBMITTED = 16, + wxWEBKIT_NAV_OTHER = 32 + +}; + + + +class WXDLLIMPEXP_CORE wxWebKitBeforeLoadEvent : public wxCommandEvent +{ + DECLARE_DYNAMIC_CLASS( wxWebKitBeforeLoadEvent ) + +public: + bool IsCancelled() { return m_cancelled; } + void Cancel(bool cancel = true) { m_cancelled = cancel; } + wxString GetURL() { return m_url; } + void SetURL(const wxString& url) { m_url = url; } + void SetNavigationType(int navType) { m_navType = navType; } + int GetNavigationType() { return m_navType; } + + wxWebKitBeforeLoadEvent( wxWindow* win = NULL ); + wxEvent *Clone(void) const { return new wxWebKitBeforeLoadEvent(*this); } + +protected: + bool m_cancelled; + wxString m_url; + int m_navType; +}; + +class WXDLLIMPEXP_CORE wxWebKitStateChangedEvent : public wxCommandEvent { DECLARE_DYNAMIC_CLASS( wxWebKitStateChangedEvent ) public: - int GetState() { return m_state; } - void SetState(const int state) { m_state = state; } - wxString GetURL() { return m_url; } - void SetURL(const wxString& url) { m_url = url; } + int GetState() { return m_state; } + void SetState(const int state) { m_state = state; } + wxString GetURL() { return m_url; } + void SetURL(const wxString& url) { m_url = url; } - wxWebKitStateChangedEvent( wxWindow* win = (wxWindow*) NULL ); - wxEvent *Clone(void) const { return new wxWebKitStateChangedEvent(*this); } + wxWebKitStateChangedEvent( wxWindow* win = NULL ); + wxEvent *Clone(void) const { return new wxWebKitStateChangedEvent(*this); } protected: - int m_state; - wxString m_url; + int m_state; + wxString m_url; +}; + + +class WXDLLIMPEXP_CORE wxWebKitNewWindowEvent : public wxCommandEvent +{ + DECLARE_DYNAMIC_CLASS( wxWebKitNewWindowEvent ) +public: + wxString GetURL() const { return m_url; } + void SetURL(const wxString& url) { m_url = url; } + wxString GetTargetName() const { return m_targetName; } + void SetTargetName(const wxString& name) { m_targetName = name; } + + wxWebKitNewWindowEvent( wxWindow* win = (wxWindow*)(NULL)); + wxEvent *Clone(void) const { return new wxWebKitNewWindowEvent(*this); } + +private: + wxString m_url; + wxString m_targetName; }; typedef void (wxEvtHandler::*wxWebKitStateChangedEventFunction)(wxWebKitStateChangedEvent&); +typedef void (wxEvtHandler::*wxWebKitBeforeLoadEventFunction)(wxWebKitBeforeLoadEvent&); +typedef void (wxEvtHandler::*wxWebKitNewWindowEventFunction)(wxWebKitNewWindowEvent&); -BEGIN_DECLARE_EVENT_TYPES() - DECLARE_LOCAL_EVENT_TYPE(wxEVT_WEBKIT_STATE_CHANGED, -1) -END_DECLARE_EVENT_TYPES() +#define wxWebKitStateChangedEventHandler( func ) \ + wxEVENT_HANDLER_CAST( wxWebKitStateChangedEventFunction, func ) + +#define wxWebKitBeforeLoadEventHandler( func ) \ + wxEVENT_HANDLER_CAST( wxWebKitBeforeLoadEventFunction, func ) + +#define wxWebKitNewWindowEventHandler( func ) \ + wxEVENT_HANDLER_CAST( wxWebKitNewWindowEventFunction, func ) + +wxDECLARE_EXPORTED_EVENT( WXDLLIMPEXP_CORE, wxEVT_WEBKIT_STATE_CHANGED, wxWebKitStateChangedEvent ); +wxDECLARE_EXPORTED_EVENT( WXDLLIMPEXP_CORE, wxEVT_WEBKIT_BEFORE_LOAD, wxWebKitBeforeLoadEvent ); +wxDECLARE_EXPORTED_EVENT( WXDLLIMPEXP_CORE, wxEVT_WEBKIT_NEW_WINDOW, wxWebKitNewWindowEvent ); #define EVT_WEBKIT_STATE_CHANGED(func) \ - DECLARE_EVENT_TABLE_ENTRY( wxEVT_WEBKIT_STATE_CHANGED, \ - -1, \ - -1, \ - (wxObjectEventFunction) \ - (wxWebKitStateChangedEventFunction) & func, \ - (wxObject *) NULL ), - -#endif // _WX_WEBKIT_H_ + wxDECLARE_EVENT_TABLE_ENTRY( wxEVT_WEBKIT_STATE_CHANGED, \ + wxID_ANY, \ + wxID_ANY, \ + wxWebKitStateChangedEventHandler( func ), \ + NULL ), + +#define EVT_WEBKIT_BEFORE_LOAD(func) \ + wxDECLARE_EVENT_TABLE_ENTRY( wxEVT_WEBKIT_BEFORE_LOAD, \ + wxID_ANY, \ + wxID_ANY, \ + wxWebKitBeforeLoadEventHandler( func ), \ + NULL ), + +#define EVT_WEBKIT_NEW_WINDOW(func) \ + wxDECLARE_EVENT_TABLE_ENTRY( wxEVT_WEBKIT_NEW_WINDOW, \ + wxID_ANY, \ + wxID_ANY, \ + wxWebKitNewWindowEventHandler( func ), \ + NULL ), +#endif // wxUSE_WEBKIT + +#endif + // _WX_WEBKIT_H_