2004-05-18 22:20:53 -04:00
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
|
|
// Name: webkit.h
|
|
|
|
// Purpose: wxWebKitCtrl - embeddable web kit control
|
|
|
|
// Author: Jethro Grassie / Kevin Ollivier
|
|
|
|
// Modified by:
|
|
|
|
// Created: 2004-4-16
|
|
|
|
// RCS-ID: $Id$
|
|
|
|
// Copyright: (c) Jethro Grassie / Kevin Ollivier
|
2004-05-23 16:53:33 -04:00
|
|
|
// Licence: wxWindows licence
|
2004-05-18 22:20:53 -04:00
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
|
|
#ifndef _WX_WEBKIT_H
|
|
|
|
#define _WX_WEBKIT_H
|
|
|
|
|
2004-05-24 17:50:00 -04:00
|
|
|
#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
|
2004-05-18 22:20:53 -04:00
|
|
|
#pragma interface "webkit.h"
|
|
|
|
#endif
|
|
|
|
|
2004-06-04 12:07:28 -04:00
|
|
|
#if wxUSE_WEBKIT
|
|
|
|
|
2004-05-18 22:20:53 -04:00
|
|
|
#if !defined(__WXMAC__) && !defined(__WXCOCOA__)
|
|
|
|
#error "wxWebKitCtrl not implemented for this platform"
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#ifdef __WXCOCOA
|
|
|
|
#include <WebKit/WebKit.h>
|
|
|
|
#endif
|
|
|
|
#include "wx/control.h"
|
|
|
|
|
|
|
|
// ----------------------------------------------------------------------------
|
|
|
|
// Web Kit Control
|
|
|
|
// ----------------------------------------------------------------------------
|
|
|
|
|
|
|
|
class wxWebKitCtrl : public wxControl
|
|
|
|
{
|
|
|
|
public:
|
2004-05-24 17:50:00 -04:00
|
|
|
DECLARE_DYNAMIC_CLASS(wxWebKitCtrl)
|
2004-05-18 22:20:53 -04:00
|
|
|
|
2004-05-24 17:50:00 -04:00
|
|
|
wxWebKitCtrl() {};
|
2004-05-18 22:20:53 -04:00
|
|
|
wxWebKitCtrl(wxWindow *parent,
|
2004-05-24 17:50:00 -04:00
|
|
|
wxWindowID winID,
|
2004-05-18 22:20:53 -04:00
|
|
|
const wxString& strURL,
|
|
|
|
const wxPoint& pos = wxDefaultPosition,
|
2004-05-24 17:50:00 -04:00
|
|
|
const wxSize& size = wxDefaultSize, long style = 0,
|
|
|
|
const wxValidator& validator = wxDefaultValidator,
|
|
|
|
const wxString& name = wxT("webkitctrl"))
|
2004-05-18 22:20:53 -04:00
|
|
|
{
|
|
|
|
Create(parent, winID, strURL, pos, size, style, validator, name);
|
|
|
|
};
|
2004-05-24 17:50:00 -04:00
|
|
|
bool Create(wxWindow *parent,
|
2004-05-18 22:20:53 -04:00
|
|
|
wxWindowID winID,
|
|
|
|
const wxString& strURL,
|
|
|
|
const wxPoint& pos = wxDefaultPosition,
|
|
|
|
const wxSize& size = wxDefaultSize, long style = 0,
|
|
|
|
const wxValidator& validator = wxDefaultValidator,
|
2004-05-24 17:00:07 -04:00
|
|
|
const wxString& name = wxT("webkitctrl"));
|
2004-05-24 17:50:00 -04:00
|
|
|
virtual ~wxWebKitCtrl();
|
2004-09-27 15:06:39 -04:00
|
|
|
|
2004-05-18 22:20:53 -04:00
|
|
|
void LoadURL(const wxString &url);
|
2004-09-27 15:06:39 -04:00
|
|
|
|
2004-05-18 22:20:53 -04:00
|
|
|
bool CanGoBack();
|
|
|
|
bool CanGoForward();
|
|
|
|
bool GoBack();
|
|
|
|
bool GoForward();
|
2004-09-27 15:06:39 -04:00
|
|
|
void Reload();
|
2004-05-18 22:20:53 -04:00
|
|
|
void Stop();
|
|
|
|
bool CanGetPageSource();
|
|
|
|
wxString GetPageSource();
|
2004-05-24 17:00:07 -04:00
|
|
|
void SetPageSource(wxString& source, const wxString& baseUrl = wxEmptyString);
|
2004-09-26 14:03:28 -04:00
|
|
|
|
2004-05-18 22:20:53 -04:00
|
|
|
//we need to resize the webview when the control size changes
|
2004-05-25 01:54:28 -04:00
|
|
|
void OnSize(wxSizeEvent &event);
|
2004-05-18 22:20:53 -04:00
|
|
|
protected:
|
2004-05-24 17:50:00 -04:00
|
|
|
DECLARE_EVENT_TABLE()
|
2004-05-31 22:53:49 -04:00
|
|
|
void MacVisibilityChanged();
|
2004-05-18 22:20:53 -04:00
|
|
|
|
|
|
|
private:
|
|
|
|
wxWindow *m_parent;
|
|
|
|
wxWindowID m_windowID;
|
|
|
|
wxString m_currentURL;
|
|
|
|
wxString m_pageTitle;
|
2004-09-30 17:00:18 -04:00
|
|
|
struct objc_object *m_webView;
|
|
|
|
//It should be WebView*, but WebView is an Objective-C class
|
|
|
|
//TODO: look into using DECLARE_WXCOCOA_OBJC_CLASS rather than this.
|
2004-05-18 22:20:53 -04:00
|
|
|
};
|
|
|
|
|
|
|
|
// ----------------------------------------------------------------------------
|
|
|
|
// Web Kit Events
|
|
|
|
// ----------------------------------------------------------------------------
|
|
|
|
|
|
|
|
enum {
|
2004-05-24 17:50:00 -04:00
|
|
|
wxWEBKIT_STATE_START = 1,
|
|
|
|
wxWEBKIT_STATE_NEGOTIATING = 2,
|
|
|
|
wxWEBKIT_STATE_REDIRECTING = 4,
|
|
|
|
wxWEBKIT_STATE_TRANSFERRING = 8,
|
|
|
|
wxWEBKIT_STATE_STOP = 16,
|
2004-05-18 22:20:53 -04:00
|
|
|
wxWEBKIT_STATE_FAILED = 32
|
|
|
|
};
|
|
|
|
|
|
|
|
class wxWebKitStateChangedEvent : public wxCommandEvent
|
|
|
|
{
|
|
|
|
DECLARE_DYNAMIC_CLASS( wxWebKitStateChangedEvent )
|
|
|
|
|
|
|
|
public:
|
2004-05-24 17:50:00 -04:00
|
|
|
int GetState() { return m_state; }
|
|
|
|
void SetState(const int state) { m_state = state; }
|
|
|
|
wxString GetURL() { return m_url; }
|
|
|
|
void SetURL(const wxString& url) { m_url = url; }
|
2004-05-18 22:20:53 -04:00
|
|
|
|
|
|
|
wxWebKitStateChangedEvent( wxWindow* win = (wxWindow*) NULL );
|
2004-05-24 17:50:00 -04:00
|
|
|
wxEvent *Clone(void) const { return new wxWebKitStateChangedEvent(*this); }
|
2004-05-18 22:20:53 -04:00
|
|
|
|
|
|
|
protected:
|
2004-05-24 17:50:00 -04:00
|
|
|
int m_state;
|
|
|
|
wxString m_url;
|
2004-05-18 22:20:53 -04:00
|
|
|
};
|
|
|
|
|
|
|
|
typedef void (wxEvtHandler::*wxWebKitStateChangedEventFunction)(wxWebKitStateChangedEvent&);
|
|
|
|
|
|
|
|
BEGIN_DECLARE_EVENT_TYPES()
|
2004-09-27 15:06:39 -04:00
|
|
|
DECLARE_LOCAL_EVENT_TYPE(wxEVT_WEBKIT_STATE_CHANGED, wxID_ANY)
|
2004-05-18 22:20:53 -04:00
|
|
|
END_DECLARE_EVENT_TYPES()
|
|
|
|
|
|
|
|
#define EVT_WEBKIT_STATE_CHANGED(func) \
|
|
|
|
DECLARE_EVENT_TABLE_ENTRY( wxEVT_WEBKIT_STATE_CHANGED, \
|
2004-09-27 15:06:39 -04:00
|
|
|
wxID_ANY, \
|
|
|
|
wxID_ANY, \
|
2004-05-18 22:20:53 -04:00
|
|
|
(wxObjectEventFunction) \
|
|
|
|
(wxWebKitStateChangedEventFunction) & func, \
|
|
|
|
(wxObject *) NULL ),
|
|
|
|
|
2004-06-04 12:07:28 -04:00
|
|
|
#endif // wxUSE_WEBKIT
|
|
|
|
|
2004-05-18 22:20:53 -04:00
|
|
|
#endif // _WX_WEBKIT_H_
|