X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/8ba4faba4de4af7613911d83263b9470e5bb1207..48afbebbf784d5d83fde445b0629731dbf3d6b16:/include/wx/osx/webview_webkit.h diff --git a/include/wx/osx/webview_webkit.h b/include/wx/osx/webview_webkit.h index ae985910a4..8733618c08 100644 --- a/include/wx/osx/webview_webkit.h +++ b/include/wx/osx/webview_webkit.h @@ -15,20 +15,19 @@ #include "wx/setup.h" -#if wxUSE_WEBVIEW_WEBKIT && (defined(__WXOSX_COCOA__) \ - || defined(__WXOSX_CARBON__)) +#if wxUSE_WEBVIEW && wxUSE_WEBVIEW_WEBKIT && (defined(__WXOSX_COCOA__) \ + || defined(__WXOSX_CARBON__)) #include "wx/control.h" #include "wx/webview.h" +#include "wx/osx/core/objcid.h" + // ---------------------------------------------------------------------------- // Web Kit Control // ---------------------------------------------------------------------------- -class wxMacControl; -class wxWidgetCocoaImpl; - -class WXDLLIMPEXP_WEB wxWebViewWebKit : public wxWebView +class WXDLLIMPEXP_WEBVIEW wxWebViewWebKit : public wxWebView { public: wxDECLARE_DYNAMIC_CLASS(wxWebViewWebKit); @@ -51,91 +50,89 @@ public: const wxString& name = wxWebViewNameStr); virtual ~wxWebViewWebKit(); - void InternalLoadURL(const wxString &url); - - virtual bool CanGoBack(); - virtual bool CanGoForward(); + virtual bool CanGoBack() const; + virtual bool CanGoForward() const; virtual void GoBack(); virtual void GoForward(); - virtual void Reload(wxWebViewReloadFlags flags = wxWEB_VIEW_RELOAD_DEFAULT); + virtual void Reload(wxWebViewReloadFlags flags = wxWEBVIEW_RELOAD_DEFAULT); virtual void Stop(); - virtual wxString GetPageSource(); - virtual wxString GetPageText() { return ""; } - virtual void SetPageTitle(const wxString& title) { m_pageTitle = title; } - virtual wxString GetPageTitle(){ return m_pageTitle; } - - //We do not want to hide the other overloads - using wxWebView::SetPage; - virtual void SetPage(const wxString& html, const wxString& baseUrl); + virtual wxString GetPageSource() const; + virtual wxString GetPageText() const; virtual void Print(); - virtual void LoadUrl(const wxString& url); - virtual wxString GetCurrentURL(); - virtual wxString GetCurrentTitle(); - virtual wxWebViewZoom GetZoom(); + virtual void LoadURL(const wxString& url); + virtual wxString GetCurrentURL() const; + virtual wxString GetCurrentTitle() const; + virtual wxWebViewZoom GetZoom() const; virtual void SetZoom(wxWebViewZoom zoom); virtual void SetZoomType(wxWebViewZoomType zoomType); virtual wxWebViewZoomType GetZoomType() const; virtual bool CanSetZoomType(wxWebViewZoomType type) const; - virtual bool IsBusy() { return m_busy; } - + virtual bool IsBusy() const { return m_busy; } + //History functions - virtual void ClearHistory() {} + virtual void ClearHistory(); virtual void EnableHistory(bool enable = true); - virtual wxVector > GetBackwardHistory() - { return wxVector >(); } - virtual wxVector > GetForwardHistory() - { return wxVector >(); } - virtual void LoadHistoryItem(wxSharedPtr WXUNUSED(item)) {} - + virtual wxVector > GetBackwardHistory(); + virtual wxVector > GetForwardHistory(); + virtual void LoadHistoryItem(wxSharedPtr item); + //Undo / redo functionality - virtual bool CanUndo() { return false; } - virtual bool CanRedo() { return false; } - virtual void Undo() {} - virtual void Redo() {} + 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) + { + wxUnusedVar(text); + wxUnusedVar(flags); + return wxNOT_FOUND; + } //Clipboard functions - virtual bool CanCut() { return false; } - virtual bool CanCopy() { return false; } - virtual bool CanPaste() { return false; } + virtual bool CanCut() const { return true; } + virtual bool CanCopy() const { return true; } + virtual bool CanPaste() const { return true; } virtual void Cut(); virtual void Copy(); virtual void Paste(); - + //Editing functions virtual void SetEditable(bool enable = true); - virtual bool IsEditable(); - + virtual bool IsEditable() const; + //Selection virtual void DeleteSelection(); - virtual bool HasSelection() { return false; }; - virtual void SelectAll() {}; - virtual wxString GetSelectedText(); - virtual wxString GetSelectedSource() { return ""; } - virtual void ClearSelection() {} - + virtual bool HasSelection() const; + virtual void SelectAll(); + virtual wxString GetSelectedText() const; + virtual wxString GetSelectedSource() const; + virtual void ClearSelection(); + void RunScript(const wxString& javascript); - + //Virtual Filesystem Support - virtual void RegisterHandler(wxWebHandler* WXUNUSED(handler)) {}; + virtual void RegisterHandler(wxSharedPtr handler); + + virtual void* GetNativeBackend() const { return m_webView; } // ---- methods not from the parent (common) interface - bool CanGetPageSource(); + bool CanGetPageSource() const; void SetScrollPos(int pos); int GetScrollPos(); - wxString GetSelection(); - - bool CanIncreaseTextSize(); + bool CanIncreaseTextSize() const; void IncreaseTextSize(); - bool CanDecreaseTextSize(); + bool CanDecreaseTextSize() const; void DecreaseTextSize(); - float GetWebkitZoom(); + float GetWebkitZoom() const; void SetWebkitZoom(float zoom); // don't hide base class virtuals @@ -152,6 +149,8 @@ public: bool m_busy; protected: + virtual void DoSetPage(const wxString& html, const wxString& baseUrl); + DECLARE_EVENT_TABLE() void MacVisibilityChanged(); @@ -160,21 +159,29 @@ private: wxWindowID m_windowID; wxString m_pageTitle; - struct objc_object *m_webView; + wxObjCID m_webView; // we may use this later to setup our own mouse events, // so leave it in for now. void* m_webKitCtrlEventHandler; //It should be WebView*, but WebView is an Objective-C class //TODO: look into using DECLARE_WXCOCOA_OBJC_CLASS rather than this. - -#if wxOSX_USE_CARBON - wxMacControl *m_peer; -#else - wxWidgetCocoaImpl *m_peer; -#endif }; -#endif // wxUSE_WEBKIT +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 // wxUSE_WEBVIEW && wxUSE_WEBVIEW_WEBKIT #endif // _WX_WEBKIT_H_