summaryrefslogtreecommitdiffstats
path: root/Source/WebKit/wx/bindings/python/webview.i
diff options
context:
space:
mode:
Diffstat (limited to 'Source/WebKit/wx/bindings/python/webview.i')
-rw-r--r--Source/WebKit/wx/bindings/python/webview.i182
1 files changed, 182 insertions, 0 deletions
diff --git a/Source/WebKit/wx/bindings/python/webview.i b/Source/WebKit/wx/bindings/python/webview.i
new file mode 100644
index 0000000..f1621b0
--- /dev/null
+++ b/Source/WebKit/wx/bindings/python/webview.i
@@ -0,0 +1,182 @@
+/*
+ * Copyright (C) 2007 Kevin Ollivier All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+%module webview
+
+%{
+#include "config.h"
+
+#include "wx/wxPython/wxPython.h"
+#include "wx/wxPython/pyclasses.h"
+#include "WebBrowserShell.h"
+#include "WebDOMSelection.h"
+#include "WebEdit.h"
+#include "WebFrame.h"
+#include "WebSettings.h"
+#include "WebView.h"
+
+#include "WebDOMAttr.h"
+#include "WebDOMCSSStyleDeclaration.h"
+#include "WebDOMDocument.h"
+#include "WebDOMDocumentFragment.h"
+#include "WebDOMDOMSelection.h"
+#include "WebDOMElement.h"
+#include "WebDOMEventListener.h"
+#include "WebDOMNamedNodeMap.h"
+#include "WebDOMNode.h"
+#include "WebDOMNodeList.h"
+#include "WebDOMObject.h"
+#include "WebDOMRange.h"
+
+#ifndef __WXMSW__
+PyObject* createDOMNodeSubtype(WebDOMNode* ptr, bool setThisOwn, bool isValueObject)
+{
+ //static wxPyTypeInfoHashMap* typeInfoCache = NULL;
+
+ //if (typeInfoCache == NULL)
+ // typeInfoCache = new wxPyTypeInfoHashMap;
+
+ swig_type_info* swigType = 0; //(*typeInfoCache)[name];
+ char* name = 0;
+ if (ptr) {
+ // it wasn't in the cache, so look it up from SWIG
+ switch (ptr->nodeType()) {
+ case WebDOMNode::WEBDOM_ELEMENT_NODE:
+ name = "WebDOMElement*";
+ break;
+ case WebDOMNode::WEBDOM_ATTRIBUTE_NODE:
+ name = "WebDOMAttr*";
+ break;
+ default:
+ name = "WebDOMNode*";
+ }
+ swigType = SWIG_TypeQuery(name);
+ if (swigType) {
+ if (isValueObject) {
+ return SWIG_Python_NewPointerObj(new WebDOMNode(*ptr), swigType, setThisOwn);
+ }
+
+ return SWIG_Python_NewPointerObj(ptr, swigType, setThisOwn);
+ }
+ // if it still wasn't found, try looking for a mapped name
+ //if (swigType) {
+ // and add it to the map if found
+ // (*typeInfoCache)[className] = swigType;
+ //}
+ }
+
+ Py_INCREF(Py_None);
+
+ return Py_None;
+}
+
+WebDOMString* createWebDOMString(PyObject* source)
+{
+ if (!PyString_Check(source) && !PyUnicode_Check(source)) {
+ PyErr_SetString(PyExc_TypeError, "String or Unicode type required");
+ return new WebDOMString();
+ }
+
+ char* tmpPtr;
+ Py_ssize_t tmpSize;
+
+ if (PyString_Check(source))
+ PyString_AsStringAndSize(source, &tmpPtr, &tmpSize);
+ else {
+ PyObject* str = PyUnicode_AsUTF8String(source);
+ PyString_AsStringAndSize(str, &tmpPtr, &tmpSize);
+ Py_DECREF(str);
+ }
+
+ WebDOMString temp = WebDOMString::fromUTF8(tmpPtr);
+
+ return new WebDOMString(temp);
+}
+
+#endif
+
+
+
+%}
+//---------------------------------------------------------------------------
+
+%import core.i
+%import windows.i
+
+#ifndef __WXMSW__
+%typemap(out) WebDOMNode* { $result = createDOMNodeSubtype($1, (bool)$owner, 0); }
+%typemap(out) WebDOMElement* { $result = createDOMNodeSubtype($1, (bool)$owner, 0); }
+%typemap(out) WebDOMNode { $result = createDOMNodeSubtype(&$1, (bool)$owner, 1); }
+%typemap(out) WebDOMElement { $result = createDOMNodeSubtype(&$1, (bool)$owner, 1); }
+%typemap(in) WebDOMString& { $1 = createWebDOMString($input); }
+%typemap(out) WebDOMString { $result = PyUnicode_DecodeUTF8($1.utf8().data(), $1.utf8().length(), NULL); }
+%typemap(out) WebDOMString& { $result = PyUnicode_DecodeUTF8($1.utf8().data(), $1.utf8().length(), NULL); }
+#endif
+
+MAKE_CONST_WXSTRING(WebViewNameStr);
+
+MustHaveApp(wxWebBrowserShell);
+MustHaveApp(wxWebFrame);
+MustHaveApp(wxWebView);
+
+%include WebKitDefines.h
+
+#ifndef __WXMSW__
+%include WebDOMObject.h
+%include WebDOMNode.h
+
+%include WebDOMAttr.h
+%include WebDOMDOMSelection.h
+%include WebDOMElement.h
+%include WebDOMNodeList.h
+%include WebDOMRange.h
+#endif
+
+%include WebBrowserShell.h
+%include WebDOMSelection.h
+%include WebEdit.h
+%include WebFrame.h
+%include WebSettings.h
+%include WebView.h
+
+%constant wxEventType wxEVT_WEBVIEW_BEFORE_LOAD;
+%constant wxEventType wxEVT_WEBVIEW_LOAD;
+%constant wxEventType wxEVT_WEBVIEW_NEW_WINDOW;
+%constant wxEventType wxEVT_WEBVIEW_RIGHT_CLICK;
+%constant wxEventType wxEVT_WEBVIEW_CONSOLE_MESSAGE;
+%constant wxEventType wxEVT_WEBVIEW_RECEIVED_TITLE;
+%constant wxEventType wxEVT_WEBVIEW_CONTENTS_CHANGED;
+%constant wxEventType wxEVT_WEBVIEW_SELECTION_CHANGED;
+
+%pythoncode {
+EVT_WEBVIEW_BEFORE_LOAD = wx.PyEventBinder( wxEVT_WEBVIEW_BEFORE_LOAD, 1 )
+EVT_WEBVIEW_LOAD = wx.PyEventBinder( wxEVT_WEBVIEW_LOAD, 1 )
+EVT_WEBVIEW_NEW_WINDOW = wx.PyEventBinder( wxEVT_WEBVIEW_NEW_WINDOW, 1 )
+EVT_WEBVIEW_RIGHT_CLICK = wx.PyEventBinder( wxEVT_WEBVIEW_RIGHT_CLICK, 1 )
+EVT_WEBVIEW_CONSOLE_MESSAGE = wx.PyEventBinder( wxEVT_WEBVIEW_CONSOLE_MESSAGE, 1 )
+EVT_WEBVIEW_RECEIVED_TITLE = wx.PyEventBinder( wxEVT_WEBVIEW_RECEIVED_TITLE, 1 )
+EVT_WEBVIEW_CONTENTS_CHANGED = wx.PyEventBinder( wxEVT_WEBVIEW_CONTENTS_CHANGED, 1 )
+EVT_WEBVIEW_SELECTION_CHANGED = wx.PyEventBinder( wxEVT_WEBVIEW_SELECTION_CHANGED, 1 )
+}