1 /////////////////////////////////////////////////////////////////////////////
2 // Name: include/wx/msw/webviewie.h
3 // Purpose: wxMSW IE wxWebView backend
4 // Author: Marianne Gagnon
6 // Copyright: (c) 2010 Marianne Gagnon, Steven Lamerton
7 // Licence: wxWindows licence
8 /////////////////////////////////////////////////////////////////////////////
17 #include "wx/control.h"
18 #include "wx/webview.h"
19 #include "wx/msw/ole/automtn.h"
20 #include "wx/msw/ole/activex.h"
21 #include "wx/sharedptr.h"
22 #include "wx/vector.h"
24 struct IHTMLDocument2
;
26 class WXDLLIMPEXP_WEB wxWebViewIE
: public wxWebView
32 wxWebViewIE(wxWindow
* parent
,
34 const wxString
& url
= wxWebViewDefaultURLStr
,
35 const wxPoint
& pos
= wxDefaultPosition
,
36 const wxSize
& size
= wxDefaultSize
,
38 const wxString
& name
= wxWebViewNameStr
)
40 Create(parent
, id
, url
, pos
, size
, style
, name
);
43 bool Create(wxWindow
* parent
,
45 const wxString
& url
= wxWebViewDefaultURLStr
,
46 const wxPoint
& pos
= wxDefaultPosition
,
47 const wxSize
& size
= wxDefaultSize
,
49 const wxString
& name
= wxWebViewNameStr
);
51 virtual void LoadUrl(const wxString
& url
);
52 virtual void LoadHistoryItem(wxSharedPtr
<wxWebHistoryItem
> item
);
53 virtual wxVector
<wxSharedPtr
<wxWebHistoryItem
> > GetBackwardHistory();
54 virtual wxVector
<wxSharedPtr
<wxWebHistoryItem
> > GetForwardHistory();
56 virtual bool CanGoForward();
57 virtual bool CanGoBack();
58 virtual void GoBack();
59 virtual void GoForward();
60 virtual void ClearHistory();
61 virtual void EnableHistory(bool enable
= true);
63 virtual void Reload(wxWebViewReloadFlags flags
= wxWEB_VIEW_RELOAD_DEFAULT
);
65 virtual wxString
GetPageSource();
66 virtual wxString
GetPageText();
68 virtual bool IsBusy();
69 virtual wxString
GetCurrentURL();
70 virtual wxString
GetCurrentTitle();
72 virtual void SetZoomType(wxWebViewZoomType
);
73 virtual wxWebViewZoomType
GetZoomType() const;
74 virtual bool CanSetZoomType(wxWebViewZoomType
) const;
78 virtual void SetPage(const wxString
& html
, const wxString
& baseUrl
);
80 virtual wxWebViewZoom
GetZoom();
81 virtual void SetZoom(wxWebViewZoom zoom
);
84 virtual bool CanCut();
85 virtual bool CanCopy();
86 virtual bool CanPaste();
91 //Undo / redo functionality
92 virtual bool CanUndo();
93 virtual bool CanRedo();
98 virtual void SetEditable(bool enable
= true);
99 virtual bool IsEditable();
102 virtual void SelectAll();
103 virtual bool HasSelection();
104 virtual void DeleteSelection();
105 virtual wxString
GetSelectedText();
106 virtual wxString
GetSelectedSource();
109 // ---- IE-specific methods
111 // FIXME: I seem to be able to access remote webpages even in offline mode...
112 bool IsOfflineMode();
113 void SetOfflineMode(bool offline
);
115 wxWebViewZoom
GetIETextZoom();
116 void SetIETextZoom(wxWebViewZoom level
);
118 wxWebViewZoom
GetIEOpticalZoom();
119 void SetIEOpticalZoom(wxWebViewZoom level
);
121 void onActiveXEvent(wxActiveXEvent
& evt
);
122 void onEraseBg(wxEraseEvent
&) {}
124 DECLARE_EVENT_TABLE();
127 wxActiveXContainer
* m_container
;
128 wxAutomationObject m_ie
;
129 IWebBrowser2
* m_webBrowser
;
131 bool m_canNavigateBack
;
132 bool m_canNavigateForward
;
134 //We store the current zoom type;
135 wxWebViewZoomType m_zoomType
;
137 /** The "Busy" property of IWebBrowser2 does not always return busy when
138 * we'd want it to; this variable may be set to true in cases where the
139 * Busy property is false but should be true.
142 //We manage our own history, the history list contains the history items
143 //which are added as documentcomplete events arrive, unless we are loading
144 //an item from the history. The position is stored as an int, and reflects
145 //where we are in the history list.
146 wxVector
<wxSharedPtr
<wxWebHistoryItem
> > m_historyList
;
147 int m_historyPosition
;
148 bool m_historyLoadingFromList
;
149 bool m_historyEnabled
;
151 //Generic helper functions for IHtmlDocument commands
152 bool CanExecCommand(wxString command
);
153 void ExecCommand(wxString command
);
154 IHTMLDocument2
* GetDocument();
158 #endif // wxUSE_WEBVIEW_IE
160 #endif // wxWebViewIE_H