X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/7b7ac0ab51dd4571b752d14c7af2443839ff85bb..13b76aae87be64e978cd331615db8ba928347701:/wxPython/src/html.i?ds=sidebyside diff --git a/wxPython/src/html.i b/wxPython/src/html.i index 1b4f46ef92..497741dcc6 100644 --- a/wxPython/src/html.i +++ b/wxPython/src/html.i @@ -127,6 +127,9 @@ 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; } // void AddText(const char* txt) = 0; // void AddTag(const wxHtmlTag& tag); @@ -137,13 +140,13 @@ public: class wxHtmlWinParser : public wxHtmlParser { public: - wxHtmlWinParser(wxWindow *wnd); + wxHtmlWinParser(wxHtmlWindow *wnd = NULL); void SetDC(wxDC *dc); wxDC* GetDC(); int GetCharHeight(); int GetCharWidth(); - wxWindow* GetWindow(); + wxHtmlWindow* GetWindow(); //void SetFonts(wxString normal_face, wxString fixed_face, int *LIST); %addmethods { void SetFonts(wxString normal_face, wxString fixed_face, PyObject* sizes) { @@ -172,9 +175,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(); @@ -273,25 +276,25 @@ public: } void OnExit() { - wxPyTState* state = wxPyBeginBlockThreads(); + 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); } - wxPyEndBlockThreads(state); + 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 - wxPyTState* state = wxPyBeginBlockThreads(); + wxPyBeginBlockThreads(); PyObject* arg = Py_BuildValue("()"); PyObject* obj = PyInstance_New(m_tagHandlerClass, arg, NULL); Py_DECREF(arg); - wxPyEndBlockThreads(state); + wxPyEndBlockThreads(); // now figure out where it's C++ object is... wxPyHtmlWinTagHandler* thPtr; @@ -427,6 +430,7 @@ public: DEC_PYCALLBACK__STRING(OnSetTitle); DEC_PYCALLBACK__CELLINTINT(OnCellMouseHover); DEC_PYCALLBACK__CELLINTINTME(OnCellClicked); + DEC_PYCALLBACK_BOOL_STRING(OnOpeningURL); PYPRIVATE; }; @@ -434,17 +438,18 @@ 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); void wxPyHtmlWindow::OnLinkClicked(const wxHtmlLinkInfo& link) { bool found; - wxPyTState* state = wxPyBeginBlockThreads(); + 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); } - wxPyEndBlockThreads(state); + wxPyEndBlockThreads(); if (! found) wxHtmlWindow::OnLinkClicked(link); }