#ifndef _WX_WEB_VIEW_H_
#define _WX_WEB_VIEW_H_
-#include "wx/defs.h"
+#include "wx/setup.h"
#if wxUSE_WEB
#include <wx/control.h>
#include <wx/event.h>
#include <wx/sstream.h>
+#include "wx/sharedptr.h"
+#include "wx/vector.h"
+
+class WXDLLIMPEXP_WEB wxWebHistoryItem
+{
+public:
+ wxWebHistoryItem(const wxString& url, const wxString& title) :
+ m_url(url), m_title(title) {}
+ wxString GetUrl() { return m_url; }
+ wxString GetTitle() { return m_title; }
+
+private:
+ wxString m_url, m_title;
+};
/**
* Zoom level in web view component
enum wxWebNavigationError
{
/** Connection error (timeout, etc.) */
- wxWEB_NAV_ERR_CONNECTION = 1,
+ wxWEB_NAV_ERR_CONNECTION,
/** Invalid certificate */
- wxWEB_NAV_ERR_CERTIFICATE = 2,
+ wxWEB_NAV_ERR_CERTIFICATE,
/** Authentication required */
- wxWEB_NAV_ERR_AUTH = 3,
+ wxWEB_NAV_ERR_AUTH,
/** Other security error */
- wxWEB_NAV_ERR_SECURITY = 4,
+ wxWEB_NAV_ERR_SECURITY,
/** Requested resource not found */
- wxWEB_NAV_ERR_NOT_FOUND = 5,
+ wxWEB_NAV_ERR_NOT_FOUND,
/** Invalid request/parameters (e.g. bad URL, bad protocol,
* unsupported resource type) */
- wxWEB_NAV_ERR_REQUEST = 6,
+ wxWEB_NAV_ERR_REQUEST,
/** The user cancelled (e.g. in a dialog) */
- wxWEB_NAV_ERR_USER_CANCELLED = 7,
+ wxWEB_NAV_ERR_USER_CANCELLED,
/** Another (exotic) type of error that didn't fit in other categories*/
- wxWEB_NAV_ERR_OTHER = 8
+ wxWEB_NAV_ERR_OTHER
};
/** Type of refresh */
enum wxWebViewReloadFlags
{
/** Default reload, will access cache */
- wxWEB_VIEW_RELOAD_DEFAULT = 0,
+ wxWEB_VIEW_RELOAD_DEFAULT,
/** Reload the current view without accessing the cache */
wxWEB_VIEW_RELOAD_NO_CACHE
};
* engine for the current platform*/
wxWEB_VIEW_BACKEND_DEFAULT,
- /** The OSX-native WebKit web engine */
- wxWEB_VIEW_BACKEND_OSX_WEBKIT,
-
- /** The GTK port of the WebKit engine */
- wxWEB_VIEW_BACKEND_GTK_WEBKIT,
+ /** The WebKit web engine */
+ wxWEB_VIEW_BACKEND_WEBKIT,
/** Use Microsoft Internet Explorer as web engine */
wxWEB_VIEW_BACKEND_IE
*/
virtual void LoadUrl(const wxString& url) = 0;
+ virtual void ClearHistory() = 0;
+ virtual void EnableHistory(bool enable = true) = 0;
+ virtual wxVector<wxSharedPtr<wxWebHistoryItem> > GetBackwardHistory() = 0;
+ virtual wxVector<wxSharedPtr<wxWebHistoryItem> > GetForwardHistory() = 0;
+ virtual void LoadHistoryItem(wxSharedPtr<wxWebHistoryItem> item) = 0;
+
/**
* Stop the current page loading process, if any.
* May trigger an error event of type wxWEB_NAV_ERR_USER_CANCELLED.
// virtual bool IsOfflineMode() = 0; // maybe?
// virtual void SetOfflineMode(bool offline) = 0; // maybe?
- // TODO: offer API to control the opening of new frames
- // (through <a target="..."> as well as through javascript), OR
- // provide a behavior consistent across ports.
- // - OSX : I receive an event for new frames opened with HTML target, and
- // currently block them all.
- // - IE : The DISPID_NEWWINDOW2 event looks like it should work, but I
- // receive way too many of them. A new IE instance opens.
- // - GTK : All frame open requests are blocked. A slot exists that I could
- // connect to to be notified if ever needed
-
/**
* Opens a print dialog so that the user may print the currently
* displayed page.
* Returns whether the web control is currently busy (e.g. loading a page)
*/
virtual bool IsBusy() = 0;
+
+ //Clipboard functions
+ virtual bool CanCut() = 0;
+ virtual bool CanCopy() = 0;
+ virtual bool CanPaste() = 0;
+ virtual void Cut() = 0;
+ virtual void Copy() = 0;
+ virtual void Paste() = 0;
+
+ //Undo / redo functionality
+ virtual bool CanUndo() = 0;
+ virtual bool CanRedo() = 0;
+ virtual void Undo() = 0;
+ virtual void Redo() = 0;
};
class WXDLLIMPEXP_WEB wxWebNavigationEvent : public wxCommandEvent
wxDECLARE_EXPORTED_EVENT( WXDLLIMPEXP_WEB, wxEVT_COMMAND_WEB_VIEW_NAVIGATED, wxWebNavigationEvent );
wxDECLARE_EXPORTED_EVENT( WXDLLIMPEXP_WEB, wxEVT_COMMAND_WEB_VIEW_LOADED, wxWebNavigationEvent );
wxDECLARE_EXPORTED_EVENT( WXDLLIMPEXP_WEB, wxEVT_COMMAND_WEB_VIEW_ERROR, wxWebNavigationEvent );
+wxDECLARE_EXPORTED_EVENT( WXDLLIMPEXP_WEB, wxEVT_COMMAND_WEB_VIEW_NEWWINDOW, wxWebNavigationEvent );
typedef void (wxEvtHandler::*wxWebNavigationEventFunction)
(wxWebNavigationEvent&);
wx__DECLARE_EVT1(wxEVT_COMMAND_WEB_VIEW_ERROR, id, \
wxHtmlNavigatingEventHandler(fn))
+#define EVT_WEB_VIEW_NEWWINDOW(id, fn) \
+ wx__DECLARE_EVT1(wxEVT_COMMAND_WEB_VIEW_NEWWINDOW, id, \
+ wxHtmlNavigatingEventHandler(fn))
+
#endif // wxUSE_WEB
#endif // _WX_WEB_VIEW_H_