activating DrawRectangle optimization
[wxWidgets.git] / include / wx / webview.h
index bede4d2ef9b4307b464bc4fac2ac14ffdb08fb70..050c31953e5092a42a0742984cf640021f7cde19 100644 (file)
@@ -10,9 +10,9 @@
 #ifndef _WX_WEB_VIEW_H_
 #define _WX_WEB_VIEW_H_
 
-#include "wx/setup.h"
+#include "wx/defs.h"
 
-#if wxUSE_WEB
+#if wxUSE_WEBVIEW
 
 #include "wx/control.h"
 #include "wx/event.h"
 #include "wx/sharedptr.h"
 #include "wx/vector.h"
 
-#include "wx/osx/webviewhistoryitem_webkit.h"
-#include "wx/gtk/webviewhistoryitem_webkit.h"
-#include "wx/msw/webviewhistoryitem_ie.h"
+#if defined(__WXOSX__)
+    #include "wx/osx/webviewhistoryitem_webkit.h"
+#elif defined(__WXGTK__)
+    #include "wx/gtk/webviewhistoryitem_webkit.h"
+#elif defined(__WXMSW__)
+    #include "wx/msw/webviewhistoryitem_ie.h"
+#else
+    #error "wxWebView not implemented on this platform."
+#endif
 
 class wxFSFile;
 class wxFileSystem;
@@ -59,7 +65,17 @@ enum wxWebViewReloadFlags
 {
     //Default, may access cache
     wxWEB_VIEW_RELOAD_DEFAULT,
-    wxWEB_VIEW_RELOAD_NO_CACHE 
+    wxWEB_VIEW_RELOAD_NO_CACHE
+};
+
+enum wxWebViewFindFlags
+{
+    wxWEB_VIEW_FIND_WRAP =             0x0001,
+    wxWEB_VIEW_FIND_ENTIRE_WORD =      0x0002,
+    wxWEB_VIEW_FIND_MATCH_CASE =       0x0004,
+    wxWEB_VIEW_FIND_HIGHLIGHT_RESULT = 0x0008,
+    wxWEB_VIEW_FIND_BACKWARDS =        0x0010,
+    wxWEB_VIEW_FIND_DEFAULT =          0
 };
 
 enum wxWebViewBackend
@@ -70,30 +86,32 @@ enum wxWebViewBackend
 };
 
 //Base class for custom scheme handlers
-class WXDLLIMPEXP_WEB wxWebViewHandler
+class WXDLLIMPEXP_WEBVIEW wxWebViewHandler
 {
 public:
     wxWebViewHandler(const wxString& scheme) : m_scheme(scheme) {}
+    virtual ~wxWebViewHandler() {}
     virtual wxString GetName() const { return m_scheme; }
     virtual wxFSFile* GetFile(const wxString &uri) = 0;
 private:
     wxString m_scheme;
 };
 
-extern WXDLLIMPEXP_DATA_WEB(const char) wxWebViewNameStr[];
-extern WXDLLIMPEXP_DATA_WEB(const char) wxWebViewDefaultURLStr[];
+extern WXDLLIMPEXP_DATA_WEBVIEW(const char) wxWebViewNameStr[];
+extern WXDLLIMPEXP_DATA_WEBVIEW(const char) wxWebViewDefaultURLStr[];
 
-class WXDLLIMPEXP_WEB wxWebView : public wxControl
+class WXDLLIMPEXP_WEBVIEW wxWebView : public wxControl
 {
 public:
+    virtual ~wxWebView() {}
 
     virtual bool Create(wxWindow* parent,
            wxWindowID id,
-           const wxString& url,
-           const wxPoint& pos,
-           const wxSize& size,
-           long style,
-           const wxString& name) = 0;
+           const wxString& url = wxWebViewDefaultURLStr,
+           const wxPoint& pos = wxDefaultPosition,
+           const wxSize& size = wxDefaultSize,
+           long style = 0,
+           const wxString& name = wxWebViewNameStr) = 0;
 
     static wxWebView* New(wxWebViewBackend backend = wxWEB_VIEW_BACKEND_DEFAULT);
     static wxWebView* New(wxWindow* parent,
@@ -113,18 +131,21 @@ public:
     virtual wxString GetPageText() const = 0;
     virtual bool IsBusy() const = 0;
     virtual bool IsEditable() const = 0;
-    virtual void LoadUrl(const wxString& url) = 0;
+    virtual void LoadURL(const wxString& url) = 0;
     virtual void Print() = 0;
     virtual void RegisterHandler(wxSharedPtr<wxWebViewHandler> handler) = 0;
     virtual void Reload(wxWebViewReloadFlags flags = wxWEB_VIEW_RELOAD_DEFAULT) = 0;
     virtual void RunScript(const wxString& javascript) = 0;
     virtual void SetEditable(bool enable = true) = 0;
-    virtual void SetPage(const wxString& html, const wxString& baseUrl) = 0;
-    virtual void SetPage(wxInputStream& html, wxString baseUrl)
+    void SetPage(const wxString& html, const wxString& baseUrl)
+    {
+        DoSetPage(html, baseUrl);
+    }
+    void SetPage(wxInputStream& html, wxString baseUrl)
     {
         wxStringOutputStream stream;
         stream.Write(html);
-        SetPage(stream.GetString(), baseUrl);
+        DoSetPage(stream.GetString(), baseUrl);
     }
     virtual void Stop() = 0;
 
@@ -168,49 +189,44 @@ public:
     virtual void Undo() = 0;
     virtual void Redo() = 0;
 
+    //Get the pointer to the underlying native engine.
+    virtual void* GetNativeBackend() const = 0;
+    //Find function
+    virtual long Find(const wxString& text, int flags = wxWEB_VIEW_FIND_DEFAULT) = 0;
+
+protected:
+    virtual void DoSetPage(const wxString& html, const wxString& baseUrl) = 0;
+
     wxDECLARE_ABSTRACT_CLASS(wxWebView);
 };
 
-class WXDLLIMPEXP_WEB wxWebViewEvent : public wxCommandEvent
+class WXDLLIMPEXP_WEBVIEW wxWebViewEvent : public wxNotifyEvent
 {
 public:
     wxWebViewEvent() {}
     wxWebViewEvent(wxEventType type, int id, const wxString url,
-                   const wxString target, bool canVeto)
-        : wxCommandEvent(type, id)
-    {
-        m_url = url;
-        m_target = target;
-        m_vetoed = false;
-        m_canVeto = canVeto;
-    }
+                   const wxString target)
+        : wxNotifyEvent(type, id), m_url(url), m_target(target)
+    {}
 
 
     const wxString& GetURL() const { return m_url; }
     const wxString& GetTarget() const { return m_target; }
 
     virtual wxEvent* Clone() const { return new wxWebViewEvent(*this); }
-
-    bool CanVeto() const { return m_canVeto; }
-    bool IsVetoed() const { return m_vetoed; }
-
-    void Veto() { wxASSERT(m_canVeto); m_vetoed = true; }
-
 private:
     wxString m_url;
     wxString m_target;
-    bool m_canVeto;
-    bool m_vetoed;
 
     wxDECLARE_DYNAMIC_CLASS_NO_ASSIGN(wxWebViewEvent);
 };
 
-wxDECLARE_EXPORTED_EVENT( WXDLLIMPEXP_WEB, wxEVT_COMMAND_WEB_VIEW_NAVIGATING, wxWebViewEvent );
-wxDECLARE_EXPORTED_EVENT( WXDLLIMPEXP_WEB, wxEVT_COMMAND_WEB_VIEW_NAVIGATED, wxWebViewEvent );
-wxDECLARE_EXPORTED_EVENT( WXDLLIMPEXP_WEB, wxEVT_COMMAND_WEB_VIEW_LOADED, wxWebViewEvent );
-wxDECLARE_EXPORTED_EVENT( WXDLLIMPEXP_WEB, wxEVT_COMMAND_WEB_VIEW_ERROR, wxWebViewEvent );
-wxDECLARE_EXPORTED_EVENT( WXDLLIMPEXP_WEB, wxEVT_COMMAND_WEB_VIEW_NEWWINDOW, wxWebViewEvent );
-wxDECLARE_EXPORTED_EVENT( WXDLLIMPEXP_WEB, wxEVT_COMMAND_WEB_VIEW_TITLE_CHANGED, wxWebViewEvent );
+wxDECLARE_EXPORTED_EVENT( WXDLLIMPEXP_WEBVIEW, wxEVT_COMMAND_WEB_VIEW_NAVIGATING, wxWebViewEvent );
+wxDECLARE_EXPORTED_EVENT( WXDLLIMPEXP_WEBVIEW, wxEVT_COMMAND_WEB_VIEW_NAVIGATED, wxWebViewEvent );
+wxDECLARE_EXPORTED_EVENT( WXDLLIMPEXP_WEBVIEW, wxEVT_COMMAND_WEB_VIEW_LOADED, wxWebViewEvent );
+wxDECLARE_EXPORTED_EVENT( WXDLLIMPEXP_WEBVIEW, wxEVT_COMMAND_WEB_VIEW_ERROR, wxWebViewEvent );
+wxDECLARE_EXPORTED_EVENT( WXDLLIMPEXP_WEBVIEW, wxEVT_COMMAND_WEB_VIEW_NEWWINDOW, wxWebViewEvent );
+wxDECLARE_EXPORTED_EVENT( WXDLLIMPEXP_WEBVIEW, wxEVT_COMMAND_WEB_VIEW_TITLE_CHANGED, wxWebViewEvent );
 
 typedef void (wxEvtHandler::*wxWebViewEventFunction)
              (wxWebViewEvent&);
@@ -230,7 +246,7 @@ typedef void (wxEvtHandler::*wxWebViewEventFunction)
     wx__DECLARE_EVT1(wxEVT_COMMAND_WEB_VIEW_LOADED, id, \
                      wxWebViewEventHandler(fn))
 
-#define EVT_WEB_VIEW_ERRROR(id, fn) \
+#define EVT_WEB_VIEW_ERROR(id, fn) \
     wx__DECLARE_EVT1(wxEVT_COMMAND_WEB_VIEW_ERROR, id, \
                      wxWebViewEventHandler(fn))
 
@@ -242,6 +258,6 @@ typedef void (wxEvtHandler::*wxWebViewEventFunction)
     wx__DECLARE_EVT1(wxEVT_COMMAND_WEB_VIEW_TITLE_CHANGED, id, \
                      wxWebViewEventHandler(fn))
 
-#endif // wxUSE_WEB
+#endif // wxUSE_WEBVIEW
 
 #endif // _WX_WEB_VIEW_H_