]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/gtk/webview_webkit.h
Don't define __STRICT_ANSI__, we should build both with and without it.
[wxWidgets.git] / include / wx / gtk / webview_webkit.h
index 6d8de612771b3b80476ae46975b966dcf410b3de..6e8bb8be7a74de22c3144fff947c19f30e709189 100644 (file)
@@ -2,7 +2,6 @@
 // Name:        include/gtk/wx/webview.h
 // Purpose:     GTK webkit backend for web view component
 // Author:      Robert Roebling, Marianne Gagnon
-// Id:          $Id$
 // Copyright:   (c) 2010 Marianne Gagnon, 1998 Robert Roebling
 // Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 #ifndef _WX_GTK_WEBKITCTRL_H_
 #define _WX_GTK_WEBKITCTRL_H_
 
-#include "wx/setup.h"
+#include "wx/defs.h"
 
-#if wxUSE_WEBVIEW_WEBKIT && defined(__WXGTK__)
+#if wxUSE_WEBVIEW && wxUSE_WEBVIEW_WEBKIT && defined(__WXGTK__)
 
-#include "webkit/webkit.h"
 #include "wx/sharedptr.h"
 #include "wx/webview.h"
 
+typedef struct _WebKitWebView WebKitWebView;
+
 //-----------------------------------------------------------------------------
 // wxWebViewWebKit
 //-----------------------------------------------------------------------------
 
-class WXDLLIMPEXP_WEB wxWebViewWebKit : public wxWebView
+class WXDLLIMPEXP_WEBVIEW wxWebViewWebKit : public wxWebView
 {
 public:
-    wxWebViewWebKit() { Init(); }
+    wxWebViewWebKit();
 
     wxWebViewWebKit(wxWindow *parent,
            wxWindowID id = wxID_ANY,
@@ -34,8 +34,6 @@ public:
            const wxSize& size = wxDefaultSize, long style = 0,
            const wxString& name = wxWebViewNameStr)
     {
-        Init();
-
         Create(parent, id, url, pos, size, style, name);
     }
 
@@ -46,6 +44,8 @@ public:
            const wxSize& size = wxDefaultSize, long style = 0,
            const wxString& name = wxWebViewNameStr);
 
+    virtual ~wxWebViewWebKit();
+
     virtual bool Enable( bool enable = true );
 
     // implementation
@@ -54,79 +54,68 @@ public:
     static wxVisualAttributes
     GetClassDefaultAttributes(wxWindowVariant variant = wxWINDOW_VARIANT_NORMAL);
 
-    // helper to allow access to protected member from GTK callback
-    void MoveWindow(int x, int y, int width, int height)
-    {
-        DoMoveWindow(x, y, width, height);
-    }
-
-    void ZoomIn();
-    void ZoomOut();
-    void SetWebkitZoom(float level);
-    float GetWebkitZoom();
-
     virtual void Stop();
-    virtual void LoadUrl(const wxString& url);
+    virtual void LoadURL(const wxString& url);
     virtual void GoBack();
     virtual void GoForward();
-    virtual void Reload(wxWebViewReloadFlags flags = wxWEB_VIEW_RELOAD_DEFAULT);
-    virtual bool CanGoBack();
-    virtual bool CanGoForward();
+    virtual void Reload(wxWebViewReloadFlags flags = wxWEBVIEW_RELOAD_DEFAULT);
+    virtual bool CanGoBack() const;
+    virtual bool CanGoForward() const;
     virtual void ClearHistory();
+    virtual void EnableContextMenu(bool enable = true);
     virtual void EnableHistory(bool enable = true);
-    virtual wxVector<wxSharedPtr<wxWebHistoryItem> > GetBackwardHistory();
-    virtual wxVector<wxSharedPtr<wxWebHistoryItem> > GetForwardHistory();
-    virtual void LoadHistoryItem(wxSharedPtr<wxWebHistoryItem> item);
-    virtual wxString GetCurrentURL();
-    virtual wxString GetCurrentTitle();
-    virtual wxString GetPageSource();
-    virtual wxString GetPageText();
-    //We do not want to hide the other overloads
-    using wxWebView::SetPage;
-    virtual void SetPage(const wxString& html, const wxString& baseUrl);
+    virtual wxVector<wxSharedPtr<wxWebViewHistoryItem> > GetBackwardHistory();
+    virtual wxVector<wxSharedPtr<wxWebViewHistoryItem> > GetForwardHistory();
+    virtual void LoadHistoryItem(wxSharedPtr<wxWebViewHistoryItem> item);
+    virtual wxString GetCurrentURL() const;
+    virtual wxString GetCurrentTitle() const;
+    virtual wxString GetPageSource() const;
+    virtual wxString GetPageText() const;
     virtual void Print();
-    virtual bool IsBusy();
+    virtual bool IsBusy() const;
 
     void SetZoomType(wxWebViewZoomType);
     wxWebViewZoomType GetZoomType() const;
     bool CanSetZoomType(wxWebViewZoomType) const;
-    virtual wxWebViewZoom GetZoom();
+    virtual wxWebViewZoom GetZoom() const;
     virtual void SetZoom(wxWebViewZoom);
 
     //Clipboard functions
-    virtual bool CanCut();
-    virtual bool CanCopy();
-    virtual bool CanPaste();
+    virtual bool CanCut() const;
+    virtual bool CanCopy() const;
+    virtual bool CanPaste() const;
     virtual void Cut();
     virtual void Copy();
     virtual void Paste();
 
     //Undo / redo functionality
-    virtual bool CanUndo();
-    virtual bool CanRedo();
+    virtual bool CanUndo() const;
+    virtual bool CanRedo() const;
     virtual void Undo();
     virtual void Redo();
 
+    //Find function
+    virtual long Find(const wxString& text, int flags = wxWEBVIEW_FIND_DEFAULT);
+
     //Editing functions
     virtual void SetEditable(bool enable = true);
-    virtual bool IsEditable();
+    virtual bool IsEditable() const;
 
     //Selection
     virtual void DeleteSelection();
-    virtual bool HasSelection();
+    virtual bool HasSelection() const;
     virtual void SelectAll();
-    virtual wxString GetSelectedText();
-    virtual wxString GetSelectedSource();
+    virtual wxString GetSelectedText() const;
+    virtual wxString GetSelectedSource() const;
     virtual void ClearSelection();
 
     virtual void RunScript(const wxString& javascript);
-    
-    //Virtual Filesystem Support
-    virtual void RegisterHandler(wxWebHandler* WXUNUSED(handler)) {};
 
-    /** FIXME: hack to work around signals being received too early */
-    bool m_ready;
+    //Virtual Filesystem Support
+    virtual void RegisterHandler(wxSharedPtr<wxWebViewHandler> handler);
+    virtual wxVector<wxSharedPtr<wxWebViewHandler> > GetHandlers() { return m_handlerList; }
 
+    virtual void* GetNativeBackend() const { return m_web_view; }
 
     /** TODO: check if this can be made private
      * The native control has a getter to check for busy state, but except in
@@ -136,22 +125,59 @@ public:
      */
     bool m_busy;
 
+    wxString m_vfsurl;
+
+    //We use this flag to stop recursion when we load a page from the navigation
+    //callback, mainly when loading a VFS page
+    bool m_guard;
+
 protected:
+    virtual void DoSetPage(const wxString& html, const wxString& baseUrl);
 
     virtual GdkWindow *GTKGetWindow(wxArrayGdkWindows& windows) const;
 
 private:
 
+    void ZoomIn();
+    void ZoomOut();
+    void SetWebkitZoom(float level);
+    float GetWebkitZoom() const;
+
+    //Find helper function
+    void FindClear();
+
     // focus event handler: calls GTKUpdateBitmap()
     void GTKOnFocus(wxFocusEvent& event);
 
-    GtkWidget *web_view;
-    gint m_historyLimit;
+    WebKitWebView *m_web_view;
+    int m_historyLimit;
+
+    wxVector<wxSharedPtr<wxWebViewHandler> > m_handlerList;
 
-    // FIXME: try to get DECLARE_DYNAMIC_CLASS macros & stuff right
-    //DECLARE_DYNAMIC_CLASS(wxWebViewWebKit)
+    //variables used for Find()
+    int m_findFlags;
+    wxString m_findText;
+    int m_findPosition;
+    int m_findCount;
+
+    wxDECLARE_DYNAMIC_CLASS(wxWebViewWebKit);
+};
+
+class WXDLLIMPEXP_WEBVIEW wxWebViewFactoryWebKit : public wxWebViewFactory
+{
+public:
+    virtual wxWebView* Create() { return new wxWebViewWebKit; }
+    virtual wxWebView* Create(wxWindow* parent,
+                              wxWindowID id,
+                              const wxString& url = wxWebViewDefaultURLStr,
+                              const wxPoint& pos = wxDefaultPosition,
+                              const wxSize& size = wxDefaultSize,
+                              long style = 0,
+                              const wxString& name = wxWebViewNameStr)
+    { return new wxWebViewWebKit(parent, id, url, pos, size, style, name); }
 };
 
-#endif // if wxHAVE_WEB_BACKEND_GTK_WEBKIT
+
+#endif // wxUSE_WEBVIEW && wxUSE_WEBVIEW_WEBKIT && defined(__WXGTK__)
 
 #endif