Files
wxWidgets/wxPython/src/webkit.i
Robin Dunn 7aa69ab26b fixes for non-Mac platforms
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@42136 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2006-10-19 23:11:49 +00:00

299 lines
8.3 KiB
OpenEdge ABL

/////////////////////////////////////////////////////////////////////////////
// Name: webkit.i
// Purpose: Embedding Apple's WebKit in wxWidgets
//
// Author: Robin Dunn / Kevin Ollivier
//
// Created: 18-Oct-2004
// RCS-ID: $Id$
// Copyright: (c) 2004 by Total Control Software
// Licence: wxWindows license
/////////////////////////////////////////////////////////////////////////////
%define DOCSTRING
"wx.webkit.WebKitCtrl for Mac OSX."
%enddef
%module(package="wx", docstring=DOCSTRING) webkit
%{
#include "wx/wxPython/wxPython.h"
#include "wx/wxPython/pyclasses.h"
#include "wx/wxPython/pyistream.h"
#ifdef __WXMAC__ // avoid a bug in Carbon headers
#define scalb scalbn
#endif
#if wxUSE_WEBKIT
#include "wx/html/webkit.h"
#endif
%}
//---------------------------------------------------------------------------
%import core.i
%pythoncode { wx = _core }
%pythoncode { __docfilter__ = wx.__DocFilter(globals()) }
//---------------------------------------------------------------------------
// Put some wx default wxChar* values into wxStrings.
MAKE_CONST_WXSTRING_NOSWIG(EmptyString);
MAKE_CONST_WXSTRING2(WebKitNameStr, wxT("webkitctrl"))
%{
#if !wxUSE_WEBKIT
// a dummy class for ports that don't have wxWebKitCtrl
class wxWebKitCtrl : public wxControl
{
public:
wxWebKitCtrl(wxWindow *parent,
wxWindowID winID,
const wxString& strURL,
const wxPoint& pos = wxDefaultPosition,
const wxSize& size = wxDefaultSize, long style = 0,
const wxValidator& validator = wxDefaultValidator,
const wxString& name = wxPyWebKitNameStr)
{ wxPyRaiseNotImplemented(); }
wxWebKitCtrl() { wxPyRaiseNotImplemented(); }
bool Create(wxWindow *parent,
wxWindowID winID,
const wxString& strURL,
const wxPoint& pos = wxDefaultPosition,
const wxSize& size = wxDefaultSize, long style = 0,
const wxValidator& validator = wxDefaultValidator,
const wxString& name = wxPyWebKitNameStr)
{ return false; }
void LoadURL(const wxString &url) {}
bool CanGoBack() { return false; }
bool CanGoForward() { return false; }
bool GoBack() { return false; }
bool GoForward() { return false; }
void Reload() {}
void Stop() {}
bool CanGetPageSource() { return false; }
wxString GetPageSource() { return wxEmptyString; }
void SetPageSource(wxString& source, const wxString& baseUrl = wxEmptyString) {}
wxString GetPageURL() { return wxEmptyString; }
wxString GetPageTitle() { return wxEmptyString; }
wxString GetSelection() { return wxEmptyString; }
bool CanIncreaseTextSize() { return false; }
void IncreaseTextSize() { }
bool CanDecreaseTextSize() { return false; }
void DecreaseTextSize() { }
void Print(bool showPrompt=false) { }
void MakeEditable(bool enable=true) { }
bool IsEditable() { return false; }
wxString RunScript(const wxString& javascript) { return wxEmptyString; }
void SetScrollPos(int pos) { }
int GetScrollPos() { return 0; }
};
enum {
wxWEBKIT_STATE_START = 0,
wxWEBKIT_STATE_NEGOTIATING = 0,
wxWEBKIT_STATE_REDIRECTING = 0,
wxWEBKIT_STATE_TRANSFERRING = 0,
wxWEBKIT_STATE_STOP = 0,
wxWEBKIT_STATE_FAILED = 0,
wxEVT_WEBKIT_STATE_CHANGED = 0,
wxEVT_WEBKIT_BEFORE_LOAD = 0
};
enum {
wxWEBKIT_NAV_LINK_CLICKED = 0,
wxWEBKIT_NAV_BACK_NEXT = 0,
wxWEBKIT_NAV_FORM_SUBMITTED = 0,
wxWEBKIT_NAV_RELOAD = 0,
wxWEBKIT_NAV_FORM_RESUBMITTED = 0,
wxWEBKIT_NAV_OTHER = 0
};
class wxWebKitStateChangedEvent : public wxCommandEvent
{
public:
wxWebKitStateChangedEvent( wxWindow* win = NULL )
{ wxPyRaiseNotImplemented(); }
int GetState() { return 0; }
void SetState(const int state) {}
wxString GetURL() { return wxEmptyString; }
void SetURL(const wxString& url) {}
};
class wxWebKitBeforeLoadEvent : public wxCommandEvent
{
public:
bool IsCancelled() { return false; }
void Cancel(bool cancel = true) { }
wxString GetURL() { return wxEmptyString; }
void SetURL(const wxString& url) { }
void SetNavigationType(int navType) { }
int GetNavigationType() { return 0; }
wxWebKitBeforeLoadEvent( wxWindow* win = (wxWindow*) NULL ) { wxPyRaiseNotImplemented(); }
};
#endif
%}
// Now define it for SWIG, using either the real class or the dummy above.
MustHaveApp(wxWebKitCtrl);
class wxWebKitCtrl : public wxControl
{
public:
%pythonAppend wxWebKitCtrl "self._setOORInfo(self)"
%pythonAppend wxWebKitCtrl() ""
wxWebKitCtrl(wxWindow *parent,
wxWindowID winID = -1,
const wxString& strURL = wxPyEmptyString,
const wxPoint& pos = wxDefaultPosition,
const wxSize& size = wxDefaultSize, long style = 0,
const wxValidator& validator = wxDefaultValidator,
const wxString& name = wxPyWebKitNameStr);
%RenameCtor(PreWebKitCtrl, wxWebKitCtrl());
bool Create(wxWindow *parent,
wxWindowID winID = -1,
const wxString& strURL = wxPyEmptyString,
const wxPoint& pos = wxDefaultPosition,
const wxSize& size = wxDefaultSize, long style = 0,
const wxValidator& validator = wxDefaultValidator,
const wxString& name = wxPyWebKitNameStr);
void LoadURL(const wxString &url);
bool CanGoBack();
bool CanGoForward();
bool GoBack();
bool GoForward();
void Reload();
void Stop();
bool CanGetPageSource();
wxString GetPageSource();
void SetPageSource(wxString& source, const wxString& baseUrl = wxPyEmptyString);
wxString GetPageURL();
wxString GetPageTitle();
wxString GetSelection();
bool CanIncreaseTextSize();
void IncreaseTextSize();
bool CanDecreaseTextSize();
void DecreaseTextSize();
void Print(bool showPrompt=false);
void MakeEditable(bool enable=true);
bool IsEditable();
wxString RunScript(const wxString& javascript);
void SetScrollPos(int pos);
int GetScrollPos();
%property(PageSource, GetPageSource, SetPageSource, doc="See `GetPageSource` and `SetPageSource`");
%property(PageTitle, GetPageTitle, doc="See `GetPageTitle`");
%property(PageURL, GetPageURL, doc="See `GetPageURL`");
%property(ScrollPos, GetScrollPos, SetScrollPos, doc="See `GetScrollPos and SetScrollPos`");
%property(Selection, GetSelection, doc="See `GetSelection`");
};
//---------------------------------------------------------------------------
enum {
wxWEBKIT_STATE_START,
wxWEBKIT_STATE_NEGOTIATING,
wxWEBKIT_STATE_REDIRECTING,
wxWEBKIT_STATE_TRANSFERRING,
wxWEBKIT_STATE_STOP,
wxWEBKIT_STATE_FAILED,
};
enum {
wxWEBKIT_NAV_LINK_CLICKED,
wxWEBKIT_NAV_BACK_NEXT,
wxWEBKIT_NAV_FORM_SUBMITTED,
wxWEBKIT_NAV_RELOAD,
wxWEBKIT_NAV_FORM_RESUBMITTED,
wxWEBKIT_NAV_OTHER
};
%constant wxEventType wxEVT_WEBKIT_STATE_CHANGED;
%constant wxEventType wxEVT_WEBKIT_BEFORE_LOAD;
class wxWebKitBeforeLoadEvent : public wxCommandEvent
{
public:
bool IsCancelled();
void Cancel(bool cancel = true);
wxString GetURL();
void SetURL(const wxString& url);
void SetNavigationType(int navType);
int GetNavigationType();
wxWebKitBeforeLoadEvent( wxWindow* win = (wxWindow*) NULL );
%property(NavigationType, GetNavigationType, SetNavigationType, doc="See `GetNavigationType` and `SetNavigationType`");
%property(URL, GetURL, SetURL, doc="See `GetURL` and `SetURL`");
};
class wxWebKitStateChangedEvent : public wxCommandEvent
{
public:
wxWebKitStateChangedEvent( wxWindow* win = NULL );
int GetState();
void SetState(const int state);
wxString GetURL();
void SetURL(const wxString& url);
%property(State, GetState, SetState, doc="See `GetState` and `SetState`");
%property(URL, GetURL, SetURL, doc="See `GetURL` and `SetURL`");
};
%pythoncode %{
EVT_WEBKIT_STATE_CHANGED = wx.PyEventBinder(wxEVT_WEBKIT_STATE_CHANGED)
EVT_WEBKIT_BEFORE_LOAD = wx.PyEventBinder(wxEVT_WEBKIT_BEFORE_LOAD)
%}
//---------------------------------------------------------------------------
%init %{
%}
//---------------------------------------------------------------------------