X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/3a0958b1657f6105b1efcf04032070143b87af80..8dba8632c5bcd64724e2e9e2d40e295555a0cb86:/wxPython/src/html.i diff --git a/wxPython/src/html.i b/wxPython/src/html.i index cd25bc6dd7..ec23d14d8c 100644 --- a/wxPython/src/html.i +++ b/wxPython/src/html.i @@ -172,9 +172,9 @@ public: void SetFontFixed(int x); int GetAlign(); void SetAlign(int a); - const wxColour& GetLinkColor(); + wxColour GetLinkColor(); void SetLinkColor(const wxColour& clr); - const wxColour& GetActualColor(); + wxColour GetActualColor(); void SetActualColor(const wxColour& clr); void SetLink(const wxString& link); wxFont* CreateCurrentFont(); @@ -212,8 +212,8 @@ IMP_PYCALLBACK_BOOL_TAG_pure(wxPyHtmlTagHandler, wxHtmlTagHandler, HandleTag); public: wxPyHtmlTagHandler(); - void _setSelf(PyObject* self, PyObject* _class); - %pragma(python) addtomethod = "__init__:self._setSelf(self, wxHtmlTagHandler)" + void _setCallbackInfo(PyObject* self, PyObject* _class); + %pragma(python) addtomethod = "__init__:self._setCallbackInfo(self, wxHtmlTagHandler)" void SetParser(wxHtmlParser *parser); wxHtmlParser* GetParser(); @@ -250,8 +250,8 @@ IMP_PYCALLBACK_BOOL_TAG_pure(wxPyHtmlWinTagHandler, wxHtmlWinTagHandler, HandleT public: wxPyHtmlWinTagHandler(); - void _setSelf(PyObject* self, PyObject* _class); - %pragma(python) addtomethod = "__init__:self._setSelf(self, wxHtmlWinTagHandler)" + void _setCallbackInfo(PyObject* self, PyObject* _class); + %pragma(python) addtomethod = "__init__:self._setCallbackInfo(self, wxHtmlWinTagHandler)" void SetParser(wxHtmlParser *parser); wxHtmlWinParser* GetParser(); @@ -273,25 +273,25 @@ public: } void OnExit() { - bool doSave = wxPyRestoreThread(); + wxPyBeginBlockThreads(); Py_DECREF(m_tagHandlerClass); m_tagHandlerClass = NULL; for (size_t x=0; x < m_objArray.GetCount(); x++) { PyObject* obj = (PyObject*)m_objArray.Item(x); Py_DECREF(obj); } - wxPySaveThread(doSave); + wxPyEndBlockThreads(); }; void FillHandlersTable(wxHtmlWinParser *parser) { // Wave our magic wand... (if it works it's a miracle! ;-) // First, make a new instance of the tag handler - bool doSave = wxPyRestoreThread(); + wxPyBeginBlockThreads(); PyObject* arg = Py_BuildValue("()"); PyObject* obj = PyInstance_New(m_tagHandlerClass, arg, NULL); Py_DECREF(arg); - wxPySaveThread(doSave); + wxPyEndBlockThreads(); // now figure out where it's C++ object is... wxPyHtmlWinTagHandler* thPtr; @@ -411,6 +411,7 @@ public: %{ class wxPyHtmlWindow : public wxHtmlWindow { + DECLARE_ABSTRACT_CLASS(wxPyHtmlWindow); public: wxPyHtmlWindow(wxWindow *parent, wxWindowID id = -1, const wxPoint& pos = wxDefaultPosition, @@ -418,31 +419,39 @@ public: long style = wxHW_SCROLLBAR_AUTO, const wxString& name = "htmlWindow") : wxHtmlWindow(parent, id, pos, size, style, name) {}; + wxPyHtmlWindow() : wxHtmlWindow() {}; void OnLinkClicked(const wxHtmlLinkInfo& link); void base_OnLinkClicked(const wxHtmlLinkInfo& link); DEC_PYCALLBACK__STRING(OnSetTitle); + DEC_PYCALLBACK__CELLINTINT(OnCellMouseHover); + DEC_PYCALLBACK__CELLINTINTME(OnCellClicked); PYPRIVATE; }; - +IMPLEMENT_ABSTRACT_CLASS( wxPyHtmlWindow, wxHtmlWindow ); IMP_PYCALLBACK__STRING(wxPyHtmlWindow, wxHtmlWindow, OnSetTitle); +IMP_PYCALLBACK__CELLINTINT(wxPyHtmlWindow, wxHtmlWindow, OnCellMouseHover); +IMP_PYCALLBACK__CELLINTINTME(wxPyHtmlWindow, wxHtmlWindow, OnCellClicked); + void wxPyHtmlWindow::OnLinkClicked(const wxHtmlLinkInfo& link) { - bool doSave = wxPyRestoreThread(); - if (wxPyCBH_findCallback(m_myInst, "OnLinkClicked")) { + bool found; + wxPyBeginBlockThreads(); + if ((found = wxPyCBH_findCallback(m_myInst, "OnLinkClicked"))) { PyObject* obj = wxPyConstructObject((void*)&link, "wxHtmlLinkInfo", 0); wxPyCBH_callCallback(m_myInst, Py_BuildValue("(O)", obj)); Py_DECREF(obj); } - else + wxPyEndBlockThreads(); + if (! found) wxHtmlWindow::OnLinkClicked(link); - wxPySaveThread(doSave); } void wxPyHtmlWindow::base_OnLinkClicked(const wxHtmlLinkInfo& link) { wxHtmlWindow::OnLinkClicked(link); } + %} @@ -454,15 +463,23 @@ public: wxSize& size = wxDefaultSize, int flags=wxHW_SCROLLBAR_AUTO, char* name = "htmlWindow"); + %name(wxPreHtmlWindow)wxPyHtmlWindow(); + + bool Create(wxWindow *parent, int id = -1, + wxPoint& pos = wxDefaultPosition, + wxSize& size = wxDefaultSize, + int flags=wxHW_SCROLLBAR_AUTO, + char* name = "htmlWindow"); - void _setSelf(PyObject* self, PyObject* _class); - %pragma(python) addtomethod = "__init__:self._setSelf(self, wxHtmlWindow)" - %pragma(python) addtomethod = "__init__:#wx._StdWindowCallbacks(self)" - %pragma(python) addtomethod = "__init__:#wx._StdOnScrollCallbacks(self)" + void _setCallbackInfo(PyObject* self, PyObject* _class); + %pragma(python) addtomethod = "__init__:self._setCallbackInfo(self, wxHtmlWindow)" + %pragma(python) addtomethod = "__init__:self._setOORInfo(self)" + %pragma(python) addtomethod = "wxPreHtmlWindow:val._setOORInfo(val)" bool SetPage(const wxString& source); bool LoadPage(const wxString& location); + bool AppendToPage(const wxString& source); wxString GetOpenedPage(); wxString GetOpenedAnchor(); wxString GetOpenedPageTitle(); @@ -496,6 +513,10 @@ public: void base_OnLinkClicked(const wxHtmlLinkInfo& link); void base_OnSetTitle(const char* title); + void base_OnCellMouseHover(wxHtmlCell *cell, wxCoord x, wxCoord y); + void base_OnCellClicked(wxHtmlCell *cell, + wxCoord x, wxCoord y, + const wxMouseEvent& event); }; // Static methods are mapped to stand-alone functions