Updates for recent changes to wx, and some other little tweaks and fixes.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@13899 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
		| @@ -73,6 +73,27 @@ enum { | ||||
| }; | ||||
|  | ||||
|  | ||||
| enum { | ||||
|     wxHW_SCROLLBAR_NEVER, | ||||
|     wxHW_SCROLLBAR_AUTO, | ||||
| }; | ||||
|  | ||||
|  | ||||
| // enums for wxHtmlWindow::OnOpeningURL | ||||
| enum wxHtmlOpeningStatus | ||||
| { | ||||
|     wxHTML_OPEN, | ||||
|     wxHTML_BLOCK, | ||||
|     wxHTML_REDIRECT | ||||
| }; | ||||
|  | ||||
| enum wxHtmlURLType | ||||
| { | ||||
|     wxHTML_URL_PAGE, | ||||
|     wxHTML_URL_IMAGE, | ||||
|     wxHTML_URL_OTHER | ||||
| }; | ||||
|  | ||||
| //--------------------------------------------------------------------------- | ||||
|  | ||||
| class wxHtmlLinkInfo : public wxObject { | ||||
| @@ -127,9 +148,7 @@ public: | ||||
|     void PushTagHandler(wxHtmlTagHandler* handler, wxString tags); | ||||
|     void PopTagHandler(); | ||||
|  | ||||
|     // Returns TRUE if the parser is allowed to open given URL (may be forbidden | ||||
|     // for security reasons) | ||||
|     virtual bool CanOpenURL(const wxString& url) const { return TRUE; } | ||||
|     // virtual wxFSFile *OpenURL(wxHtmlURLType type, const wxString& url) const; | ||||
|  | ||||
|     // void AddText(const char* txt) = 0; | ||||
|     // void AddTag(const wxHtmlTag& tag); | ||||
| @@ -427,10 +446,14 @@ public: | ||||
|     void OnLinkClicked(const wxHtmlLinkInfo& link); | ||||
|     void base_OnLinkClicked(const wxHtmlLinkInfo& link); | ||||
|  | ||||
|      wxHtmlOpeningStatus OnOpeningURL(wxHtmlURLType type, | ||||
|                                       const wxString& url, | ||||
|                                       wxString *redirect) const; | ||||
|  | ||||
|     DEC_PYCALLBACK__STRING(OnSetTitle); | ||||
|     DEC_PYCALLBACK__CELLINTINT(OnCellMouseHover); | ||||
|     DEC_PYCALLBACK__CELLINTINTME(OnCellClicked); | ||||
|     DEC_PYCALLBACK_BOOL_STRING(OnOpeningURL); | ||||
| //     DEC_PYCALLBACK_BOOL_STRING(OnOpeningURL); | ||||
|     PYPRIVATE; | ||||
| }; | ||||
|  | ||||
| @@ -438,7 +461,7 @@ IMPLEMENT_ABSTRACT_CLASS( wxPyHtmlWindow, wxHtmlWindow ); | ||||
| IMP_PYCALLBACK__STRING(wxPyHtmlWindow, wxHtmlWindow, OnSetTitle); | ||||
| IMP_PYCALLBACK__CELLINTINT(wxPyHtmlWindow, wxHtmlWindow, OnCellMouseHover); | ||||
| IMP_PYCALLBACK__CELLINTINTME(wxPyHtmlWindow, wxHtmlWindow, OnCellClicked); | ||||
| IMP_PYCALLBACK_BOOL_STRING(wxPyHtmlWindow, wxHtmlWindow, OnOpeningURL); | ||||
| // IMP_PYCALLBACK_BOOL_STRING(wxPyHtmlWindow, wxHtmlWindow, OnOpeningURL); | ||||
|  | ||||
|  | ||||
| void wxPyHtmlWindow::OnLinkClicked(const wxHtmlLinkInfo& link) { | ||||
| @@ -457,6 +480,40 @@ void wxPyHtmlWindow::base_OnLinkClicked(const wxHtmlLinkInfo& link) { | ||||
|     wxHtmlWindow::OnLinkClicked(link); | ||||
| } | ||||
|  | ||||
|  | ||||
| wxHtmlOpeningStatus wxPyHtmlWindow::OnOpeningURL(wxHtmlURLType type, | ||||
|                                                  const wxString& url, | ||||
|                                                  wxString *redirect) const { | ||||
|     bool found; | ||||
|     wxHtmlOpeningStatus rval; | ||||
|     wxPyBeginBlockThreads(); | ||||
|     if ((found = wxPyCBH_findCallback(m_myInst, "OnOpeningURL"))) { | ||||
|         PyObject* ro; | ||||
|         ro = wxPyCBH_callCallbackObj(m_myInst, Py_BuildValue("(is)", type, url.c_str())); | ||||
|         if (PyString_Check(ro) | ||||
| #if PYTHON_API_VERSION >= 1009 | ||||
|             || PyUnicode_Check(ro) | ||||
| #endif | ||||
|             ) { | ||||
|             PyObject* str = PyObject_Str(ro); | ||||
|             *redirect = PyString_AsString(str); | ||||
|             Py_DECREF(str); | ||||
|             rval = wxHTML_REDIRECT; | ||||
|         } | ||||
|         else { | ||||
|             PyObject* num = PyNumber_Int(ro); | ||||
|             rval = (wxHtmlOpeningStatus)PyInt_AsLong(num); | ||||
|             Py_DECREF(num); | ||||
|         } | ||||
|         Py_DECREF(ro); | ||||
|     } | ||||
|     wxPyEndBlockThreads(); | ||||
|     if (! found) | ||||
|         rval = wxHtmlWindow::OnOpeningURL(type, url, redirect); | ||||
|     return rval; | ||||
| } | ||||
|  | ||||
|  | ||||
| %} | ||||
|  | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user