Enable OnDrawSeparator and OnDrawBackground to be overridable in wx.HtmlListBox
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@38126 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -2241,11 +2241,10 @@ extern wxPyApp *wxPythonApp;
|
|||||||
#define DEC_PYCALLBACK__DCRECTSIZET_constpure(CBNAME) \
|
#define DEC_PYCALLBACK__DCRECTSIZET_constpure(CBNAME) \
|
||||||
void CBNAME(wxDC& a, const wxRect& b, size_t c) const;
|
void CBNAME(wxDC& a, const wxRect& b, size_t c) const;
|
||||||
|
|
||||||
|
|
||||||
#define IMP_PYCALLBACK__DCRECTSIZET_constpure(CLASS, PCLASS, CBNAME) \
|
#define IMP_PYCALLBACK__DCRECTSIZET_constpure(CLASS, PCLASS, CBNAME) \
|
||||||
void CLASS::CBNAME(wxDC& a, const wxRect& b, size_t c) const { \
|
void CLASS::CBNAME(wxDC& a, const wxRect& b, size_t c) const { \
|
||||||
bool found; \
|
bool found; \
|
||||||
wxPyBlock_t blocked = wxPyBeginBlockThreads(); \
|
wxPyBlock_t blocked = wxPyBeginBlockThreads(); \
|
||||||
if ((found = wxPyCBH_findCallback(m_myInst, #CBNAME))) { \
|
if ((found = wxPyCBH_findCallback(m_myInst, #CBNAME))) { \
|
||||||
PyObject* obj = wxPyMake_wxObject(&a,false); \
|
PyObject* obj = wxPyMake_wxObject(&a,false); \
|
||||||
PyObject* ro = wxPyConstructObject((void*)&b, wxT("wxRect"), 0); \
|
PyObject* ro = wxPyConstructObject((void*)&b, wxT("wxRect"), 0); \
|
||||||
@@ -2255,12 +2254,11 @@ extern wxPyApp *wxPythonApp;
|
|||||||
wxPyEndBlockThreads(blocked); \
|
wxPyEndBlockThreads(blocked); \
|
||||||
} \
|
} \
|
||||||
|
|
||||||
//---------------------------------------------------------------------------
|
|
||||||
|
|
||||||
#define DEC_PYCALLBACK__DCRECTSIZET_const(CBNAME) \
|
#define DEC_PYCALLBACK__DCRECTSIZET_const(CBNAME) \
|
||||||
void CBNAME(wxDC& a, const wxRect& b, size_t c) const
|
void CBNAME(wxDC& a, const wxRect& b, size_t c) const
|
||||||
|
|
||||||
|
|
||||||
#define IMP_PYCALLBACK__DCRECTSIZET_const(CLASS, PCLASS, CBNAME) \
|
#define IMP_PYCALLBACK__DCRECTSIZET_const(CLASS, PCLASS, CBNAME) \
|
||||||
void CLASS::CBNAME(wxDC& a, const wxRect& b, size_t c) const { \
|
void CLASS::CBNAME(wxDC& a, const wxRect& b, size_t c) const { \
|
||||||
bool found; \
|
bool found; \
|
||||||
@@ -2276,7 +2274,50 @@ extern wxPyApp *wxPythonApp;
|
|||||||
PCLASS::CBNAME(a,b,c); \
|
PCLASS::CBNAME(a,b,c); \
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//---------------------------------------------------------------------------
|
//---------------------------------------------------------------------------
|
||||||
|
// Same as the above set, but the wxRect is not const
|
||||||
|
|
||||||
|
#define DEC_PYCALLBACK__DCRECTSIZET2_constpure(CBNAME) \
|
||||||
|
void CBNAME(wxDC& a, wxRect& b, size_t c) const;
|
||||||
|
|
||||||
|
#define IMP_PYCALLBACK__DCRECTSIZET2_constpure(CLASS, PCLASS, CBNAME) \
|
||||||
|
void CLASS::CBNAME(wxDC& a, wxRect& b, size_t c) const { \
|
||||||
|
bool found; \
|
||||||
|
wxPyBlock_t blocked = wxPyBeginBlockThreads(); \
|
||||||
|
if ((found = wxPyCBH_findCallback(m_myInst, #CBNAME))) { \
|
||||||
|
PyObject* obj = wxPyMake_wxObject(&a,false); \
|
||||||
|
PyObject* ro = wxPyConstructObject((void*)&b, wxT("wxRect"), 0); \
|
||||||
|
wxPyCBH_callCallback(m_myInst, Py_BuildValue("(OOi)", obj, ro, (int)c)); \
|
||||||
|
Py_DECREF(obj); \
|
||||||
|
} \
|
||||||
|
wxPyEndBlockThreads(blocked); \
|
||||||
|
} \
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#define DEC_PYCALLBACK__DCRECTSIZET2_const(CBNAME) \
|
||||||
|
void CBNAME(wxDC& a, wxRect& b, size_t c) const
|
||||||
|
|
||||||
|
#define IMP_PYCALLBACK__DCRECTSIZET2_const(CLASS, PCLASS, CBNAME) \
|
||||||
|
void CLASS::CBNAME(wxDC& a, wxRect& b, size_t c) const { \
|
||||||
|
bool found; \
|
||||||
|
wxPyBlock_t blocked = wxPyBeginBlockThreads(); \
|
||||||
|
if ((found = wxPyCBH_findCallback(m_myInst, #CBNAME))) { \
|
||||||
|
PyObject* obj = wxPyMake_wxObject(&a,false); \
|
||||||
|
PyObject* ro = wxPyConstructObject((void*)&b, wxT("wxRect"), 0); \
|
||||||
|
wxPyCBH_callCallback(m_myInst, Py_BuildValue("(OOi)", obj, ro, (int)c)); \
|
||||||
|
Py_DECREF(obj); \
|
||||||
|
} \
|
||||||
|
wxPyEndBlockThreads(blocked); \
|
||||||
|
if (! found) \
|
||||||
|
PCLASS::CBNAME(a,b,c); \
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#define DEC_PYCALLBACK_STRING_SIZET(CBNAME) \
|
#define DEC_PYCALLBACK_STRING_SIZET(CBNAME) \
|
||||||
|
@@ -517,7 +517,7 @@ public:
|
|||||||
//
|
//
|
||||||
// the base class version doesn't do anything
|
// the base class version doesn't do anything
|
||||||
// virtual void OnDrawSeparator(wxDC& dc, wxRect& rect, size_t n) const;
|
// virtual void OnDrawSeparator(wxDC& dc, wxRect& rect, size_t n) const;
|
||||||
DEC_PYCALLBACK__DCRECTSIZET_constpure(OnDrawSeparator);
|
DEC_PYCALLBACK__DCRECTSIZET2_const(OnDrawSeparator);
|
||||||
|
|
||||||
|
|
||||||
// this method is used to draw the items background and, maybe, a border
|
// this method is used to draw the items background and, maybe, a border
|
||||||
@@ -538,7 +538,7 @@ IMPLEMENT_ABSTRACT_CLASS(wxPyVListBox, wxVListBox);
|
|||||||
|
|
||||||
IMP_PYCALLBACK__DCRECTSIZET_constpure(wxPyVListBox, wxVListBox, OnDrawItem);
|
IMP_PYCALLBACK__DCRECTSIZET_constpure(wxPyVListBox, wxVListBox, OnDrawItem);
|
||||||
IMP_PYCALLBACK_COORD_SIZET_constpure (wxPyVListBox, wxVListBox, OnMeasureItem);
|
IMP_PYCALLBACK_COORD_SIZET_constpure (wxPyVListBox, wxVListBox, OnMeasureItem);
|
||||||
IMP_PYCALLBACK__DCRECTSIZET_constpure(wxPyVListBox, wxVListBox, OnDrawSeparator);
|
IMP_PYCALLBACK__DCRECTSIZET2_const (wxPyVListBox, wxVListBox, OnDrawSeparator);
|
||||||
IMP_PYCALLBACK__DCRECTSIZET_const (wxPyVListBox, wxVListBox, OnDrawBackground);
|
IMP_PYCALLBACK__DCRECTSIZET_const (wxPyVListBox, wxVListBox, OnDrawBackground);
|
||||||
|
|
||||||
%}
|
%}
|
||||||
@@ -709,6 +709,8 @@ public:
|
|||||||
// change the background colour of the selected cells
|
// change the background colour of the selected cells
|
||||||
void SetSelectionBackground(const wxColour& col);
|
void SetSelectionBackground(const wxColour& col);
|
||||||
|
|
||||||
|
virtual void OnDrawSeparator(wxDC& dc, wxRect& rect, size_t n) const;
|
||||||
|
virtual void OnDrawBackground(wxDC& dc, const wxRect& rect, size_t n) const;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
@@ -745,6 +747,10 @@ public:
|
|||||||
// this function may be overridden to decorate HTML returned by OnGetItem()
|
// this function may be overridden to decorate HTML returned by OnGetItem()
|
||||||
DEC_PYCALLBACK_STRING_SIZET(OnGetItemMarkup);
|
DEC_PYCALLBACK_STRING_SIZET(OnGetItemMarkup);
|
||||||
|
|
||||||
|
// These are from wxVListBox
|
||||||
|
DEC_PYCALLBACK__DCRECTSIZET2_const(OnDrawSeparator);
|
||||||
|
DEC_PYCALLBACK__DCRECTSIZET_const(OnDrawBackground);
|
||||||
|
|
||||||
// TODO:
|
// TODO:
|
||||||
// // this method allows to customize the selection appearance: it may be used
|
// // this method allows to customize the selection appearance: it may be used
|
||||||
// // to specify the colour of the text which normally has the given colour
|
// // to specify the colour of the text which normally has the given colour
|
||||||
@@ -768,6 +774,8 @@ IMPLEMENT_ABSTRACT_CLASS(wxPyHtmlListBox, wxHtmlListBox)
|
|||||||
|
|
||||||
IMP_PYCALLBACK_STRING_SIZET_pure(wxPyHtmlListBox, wxHtmlListBox, OnGetItem);
|
IMP_PYCALLBACK_STRING_SIZET_pure(wxPyHtmlListBox, wxHtmlListBox, OnGetItem);
|
||||||
IMP_PYCALLBACK_STRING_SIZET (wxPyHtmlListBox, wxHtmlListBox, OnGetItemMarkup);
|
IMP_PYCALLBACK_STRING_SIZET (wxPyHtmlListBox, wxHtmlListBox, OnGetItemMarkup);
|
||||||
|
IMP_PYCALLBACK__DCRECTSIZET2_const (wxPyHtmlListBox, wxHtmlListBox, OnDrawSeparator);
|
||||||
|
IMP_PYCALLBACK__DCRECTSIZET_const (wxPyHtmlListBox, wxHtmlListBox, OnDrawBackground);
|
||||||
|
|
||||||
%}
|
%}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user