This makes wxWebView consistent with the rest of the toolkit. Closes #15013 git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@73453 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
112 lines
3.5 KiB
C++
112 lines
3.5 KiB
C++
/////////////////////////////////////////////////////////////////////////////
|
|
// Name: webview.cpp
|
|
// Purpose: Common interface and events for web view component
|
|
// Author: Marianne Gagnon
|
|
// Id: $Id$
|
|
// Copyright: (c) 2010 Marianne Gagnon, 2011 Steven Lamerton
|
|
// Licence: wxWindows licence
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
|
|
// For compilers that support precompilation, includes "wx.h".
|
|
#include "wx/wxprec.h"
|
|
|
|
#if wxUSE_WEBVIEW
|
|
|
|
#if defined(__BORLANDC__)
|
|
#pragma hdrstop
|
|
#endif
|
|
|
|
#include "wx/webview.h"
|
|
|
|
#if defined(__WXOSX_COCOA__) || defined(__WXOSX_CARBON__)
|
|
#include "wx/osx/webview_webkit.h"
|
|
#elif defined(__WXGTK__)
|
|
#include "wx/gtk/webview_webkit.h"
|
|
#elif defined(__WXMSW__)
|
|
#include "wx/msw/webview_ie.h"
|
|
#endif
|
|
|
|
// DLL options compatibility check:
|
|
#include "wx/app.h"
|
|
WX_CHECK_BUILD_OPTIONS("wxWEBVIEW")
|
|
|
|
extern WXDLLIMPEXP_DATA_WEBVIEW(const char) wxWebViewNameStr[] = "wxWebView";
|
|
extern WXDLLIMPEXP_DATA_WEBVIEW(const char) wxWebViewDefaultURLStr[] = "about:blank";
|
|
extern WXDLLIMPEXP_DATA_WEBVIEW(const char) wxWebViewBackendIE[] = "wxWebViewIE";
|
|
extern WXDLLIMPEXP_DATA_WEBVIEW(const char) wxWebViewBackendWebKit[] = "wxWebViewWebKit";
|
|
|
|
#ifdef __WXMSW__
|
|
extern WXDLLIMPEXP_DATA_WEBVIEW(const char) wxWebViewBackendDefault[] = "wxWebViewIE";
|
|
#else
|
|
extern WXDLLIMPEXP_DATA_WEBVIEW(const char) wxWebViewBackendDefault[] = "wxWebViewWebKit";
|
|
#endif
|
|
|
|
wxIMPLEMENT_ABSTRACT_CLASS(wxWebView, wxControl);
|
|
wxIMPLEMENT_DYNAMIC_CLASS(wxWebViewEvent, wxCommandEvent);
|
|
|
|
wxDEFINE_EVENT( wxEVT_COMMAND_WEBVIEW_NAVIGATING, wxWebViewEvent );
|
|
wxDEFINE_EVENT( wxEVT_COMMAND_WEBVIEW_NAVIGATED, wxWebViewEvent );
|
|
wxDEFINE_EVENT( wxEVT_COMMAND_WEBVIEW_LOADED, wxWebViewEvent );
|
|
wxDEFINE_EVENT( wxEVT_COMMAND_WEBVIEW_ERROR, wxWebViewEvent );
|
|
wxDEFINE_EVENT( wxEVT_COMMAND_WEBVIEW_NEWWINDOW, wxWebViewEvent );
|
|
wxDEFINE_EVENT( wxEVT_COMMAND_WEBVIEW_TITLE_CHANGED, wxWebViewEvent );
|
|
|
|
wxStringWebViewFactoryMap wxWebView::m_factoryMap;
|
|
|
|
// static
|
|
wxWebView* wxWebView::New(const wxString& backend)
|
|
{
|
|
wxStringWebViewFactoryMap::iterator iter = FindFactory(backend);
|
|
|
|
if(iter == m_factoryMap.end())
|
|
return NULL;
|
|
else
|
|
return (*iter).second->Create();
|
|
}
|
|
|
|
// static
|
|
wxWebView* wxWebView::New(wxWindow* parent, wxWindowID id, const wxString& url,
|
|
const wxPoint& pos, const wxSize& size,
|
|
const wxString& backend, long style,
|
|
const wxString& name)
|
|
{
|
|
wxStringWebViewFactoryMap::iterator iter = FindFactory(backend);
|
|
|
|
if(iter == m_factoryMap.end())
|
|
return NULL;
|
|
else
|
|
return (*iter).second->Create(parent, id, url, pos, size, style, name);
|
|
|
|
}
|
|
|
|
// static
|
|
void wxWebView::RegisterFactory(const wxString& backend,
|
|
wxSharedPtr<wxWebViewFactory> factory)
|
|
{
|
|
m_factoryMap[backend] = factory;
|
|
}
|
|
|
|
// static
|
|
wxStringWebViewFactoryMap::iterator wxWebView::FindFactory(const wxString &backend)
|
|
{
|
|
// Initialise the map if needed
|
|
if(m_factoryMap.empty())
|
|
InitFactoryMap();
|
|
|
|
return m_factoryMap.find(backend);
|
|
}
|
|
|
|
// static
|
|
void wxWebView::InitFactoryMap()
|
|
{
|
|
#ifdef __WXMSW__
|
|
RegisterFactory(wxWebViewBackendIE, wxSharedPtr<wxWebViewFactory>
|
|
(new wxWebViewFactoryIE));
|
|
#else
|
|
RegisterFactory(wxWebViewBackendWebKit, wxSharedPtr<wxWebViewFactory>
|
|
(new wxWebViewFactoryWebKit));
|
|
#endif
|
|
}
|
|
|
|
#endif // wxUSE_WEBVIEW
|