| /* |
| * 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" |
| #include "WebDOMWebKitAnimationList.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 ) |
| } |