1 /////////////////////////////////////////////////////////////////////////////
2 // Name: wx/html/webkit.h
3 // Purpose: wxWebKitCtrl - embeddable web kit control
4 // Author: Jethro Grassie / Kevin Ollivier
7 // Copyright: (c) Jethro Grassie / Kevin Ollivier
8 // Licence: wxWindows licence
9 /////////////////////////////////////////////////////////////////////////////
16 #if !defined(__WXMAC__) && !defined(__WXCOCOA__)
17 #error "wxWebKitCtrl not implemented for this platform"
20 #include "wx/control.h"
21 DECLARE_WXCOCOA_OBJC_CLASS(WebView
);
23 // ----------------------------------------------------------------------------
25 // ----------------------------------------------------------------------------
27 extern WXDLLIMPEXP_DATA_CORE(const char) wxWebKitCtrlNameStr
[];
29 class WXDLLIMPEXP_CORE wxWebKitCtrl
: public wxControl
32 DECLARE_DYNAMIC_CLASS(wxWebKitCtrl
)
35 wxWebKitCtrl(wxWindow
*parent
,
37 const wxString
& strURL
,
38 const wxPoint
& pos
= wxDefaultPosition
,
39 const wxSize
& size
= wxDefaultSize
, long style
= 0,
40 const wxValidator
& validator
= wxDefaultValidator
,
41 const wxString
& name
= wxWebKitCtrlNameStr
)
43 Create(parent
, winID
, strURL
, pos
, size
, style
, validator
, name
);
45 bool Create(wxWindow
*parent
,
47 const wxString
& strURL
,
48 const wxPoint
& pos
= wxDefaultPosition
,
49 const wxSize
& size
= wxDefaultSize
, long style
= 0,
50 const wxValidator
& validator
= wxDefaultValidator
,
51 const wxString
& name
= wxWebKitCtrlNameStr
);
52 virtual ~wxWebKitCtrl();
54 void LoadURL(const wxString
&url
);
62 bool CanGetPageSource();
63 wxString
GetPageSource();
64 void SetPageSource(const wxString
& source
, const wxString
& baseUrl
= wxEmptyString
);
65 wxString
GetPageURL(){ return m_currentURL
; }
66 void SetPageTitle(const wxString
& title
) { m_pageTitle
= title
; }
67 wxString
GetPageTitle(){ return m_pageTitle
; }
69 // since these worked in 2.6, add wrappers
70 void SetTitle(const wxString
& title
) { SetPageTitle(title
); }
71 wxString
GetTitle() { return GetPageTitle(); }
73 wxString
GetSelection();
75 bool CanIncreaseTextSize();
76 void IncreaseTextSize();
77 bool CanDecreaseTextSize();
78 void DecreaseTextSize();
80 void Print(bool showPrompt
= false);
82 void MakeEditable(bool enable
= true);
85 wxString
RunScript(const wxString
& javascript
);
87 void SetScrollPos(int pos
);
90 // don't hide base class virtuals
91 virtual void SetScrollPos( int orient
, int pos
, bool refresh
= true )
92 { return wxControl::SetScrollPos(orient
, pos
, refresh
); }
93 virtual int GetScrollPos( int orient
) const
94 { return wxControl::GetScrollPos(orient
); }
96 //we need to resize the webview when the control size changes
97 void OnSize(wxSizeEvent
&event
);
98 void OnMove(wxMoveEvent
&event
);
99 void OnMouseEvents(wxMouseEvent
&event
);
101 DECLARE_EVENT_TABLE()
102 void MacVisibilityChanged();
106 wxWindowID m_windowID
;
107 wxString m_currentURL
;
108 wxString m_pageTitle
;
110 WX_WebView m_webView
;
112 // we may use this later to setup our own mouse events,
113 // so leave it in for now.
114 void* m_webKitCtrlEventHandler
;
117 // ----------------------------------------------------------------------------
119 // ----------------------------------------------------------------------------
122 wxWEBKIT_STATE_START
= 1,
123 wxWEBKIT_STATE_NEGOTIATING
= 2,
124 wxWEBKIT_STATE_REDIRECTING
= 4,
125 wxWEBKIT_STATE_TRANSFERRING
= 8,
126 wxWEBKIT_STATE_STOP
= 16,
127 wxWEBKIT_STATE_FAILED
= 32
131 wxWEBKIT_NAV_LINK_CLICKED
= 1,
132 wxWEBKIT_NAV_BACK_NEXT
= 2,
133 wxWEBKIT_NAV_FORM_SUBMITTED
= 4,
134 wxWEBKIT_NAV_RELOAD
= 8,
135 wxWEBKIT_NAV_FORM_RESUBMITTED
= 16,
136 wxWEBKIT_NAV_OTHER
= 32
142 class WXDLLIMPEXP_CORE wxWebKitBeforeLoadEvent
: public wxCommandEvent
144 DECLARE_DYNAMIC_CLASS( wxWebKitBeforeLoadEvent
)
147 bool IsCancelled() { return m_cancelled
; }
148 void Cancel(bool cancel
= true) { m_cancelled
= cancel
; }
149 wxString
GetURL() { return m_url
; }
150 void SetURL(const wxString
& url
) { m_url
= url
; }
151 void SetNavigationType(int navType
) { m_navType
= navType
; }
152 int GetNavigationType() { return m_navType
; }
154 wxWebKitBeforeLoadEvent( wxWindow
* win
= NULL
);
155 wxEvent
*Clone(void) const { return new wxWebKitBeforeLoadEvent(*this); }
163 class WXDLLIMPEXP_CORE wxWebKitStateChangedEvent
: public wxCommandEvent
165 DECLARE_DYNAMIC_CLASS( wxWebKitStateChangedEvent
)
168 int GetState() { return m_state
; }
169 void SetState(const int state
) { m_state
= state
; }
170 wxString
GetURL() { return m_url
; }
171 void SetURL(const wxString
& url
) { m_url
= url
; }
173 wxWebKitStateChangedEvent( wxWindow
* win
= NULL
);
174 wxEvent
*Clone(void) const { return new wxWebKitStateChangedEvent(*this); }
182 class WXDLLIMPEXP_CORE wxWebKitNewWindowEvent
: public wxCommandEvent
184 DECLARE_DYNAMIC_CLASS( wxWebKitNewWindowEvent
)
186 wxString
GetURL() const { return m_url
; }
187 void SetURL(const wxString
& url
) { m_url
= url
; }
188 wxString
GetTargetName() const { return m_targetName
; }
189 void SetTargetName(const wxString
& name
) { m_targetName
= name
; }
191 wxWebKitNewWindowEvent( wxWindow
* win
= (wxWindow
*)(NULL
));
192 wxEvent
*Clone(void) const { return new wxWebKitNewWindowEvent(*this); }
196 wxString m_targetName
;
199 typedef void (wxEvtHandler::*wxWebKitStateChangedEventFunction
)(wxWebKitStateChangedEvent
&);
200 typedef void (wxEvtHandler::*wxWebKitBeforeLoadEventFunction
)(wxWebKitBeforeLoadEvent
&);
201 typedef void (wxEvtHandler::*wxWebKitNewWindowEventFunction
)(wxWebKitNewWindowEvent
&);
203 #define wxWebKitStateChangedEventHandler( func ) \
204 wxEVENT_HANDLER_CAST( wxWebKitStateChangedEventFunction, func )
206 #define wxWebKitBeforeLoadEventHandler( func ) \
207 wxEVENT_HANDLER_CAST( wxWebKitBeforeLoadEventFunction, func )
209 #define wxWebKitNewWindowEventHandler( func ) \
210 wxEVENT_HANDLER_CAST( wxWebKitNewWindowEventFunction, func )
212 wxDECLARE_EXPORTED_EVENT( WXDLLIMPEXP_CORE
, wxEVT_WEBKIT_STATE_CHANGED
, wxWebKitStateChangedEvent
);
213 wxDECLARE_EXPORTED_EVENT( WXDLLIMPEXP_CORE
, wxEVT_WEBKIT_BEFORE_LOAD
, wxWebKitBeforeLoadEvent
);
214 wxDECLARE_EXPORTED_EVENT( WXDLLIMPEXP_CORE
, wxEVT_WEBKIT_NEW_WINDOW
, wxWebKitNewWindowEvent
);
216 #define EVT_WEBKIT_STATE_CHANGED(func) \
217 wxDECLARE_EVENT_TABLE_ENTRY( wxEVT_WEBKIT_STATE_CHANGED, \
220 wxWebKitStateChangedEventHandler( func ), \
223 #define EVT_WEBKIT_BEFORE_LOAD(func) \
224 wxDECLARE_EVENT_TABLE_ENTRY( wxEVT_WEBKIT_BEFORE_LOAD, \
227 wxWebKitBeforeLoadEventHandler( func ), \
230 #define EVT_WEBKIT_NEW_WINDOW(func) \
231 wxDECLARE_EVENT_TABLE_ENTRY( wxEVT_WEBKIT_NEW_WINDOW, \
234 wxWebKitNewWindowEventHandler( func ), \
236 #endif // wxUSE_WEBKIT