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);
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) {
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();
}
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;
DEC_PYCALLBACK__STRING(OnSetTitle);
DEC_PYCALLBACK__CELLINTINT(OnCellMouseHover);
DEC_PYCALLBACK__CELLINTINTME(OnCellClicked);
+ DEC_PYCALLBACK_BOOL_STRING(OnOpeningURL);
PYPRIVATE;
};
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);
}