#define DEC_PYCALLBACK__DCRECTSIZET_constpure(CBNAME) \
void CBNAME(wxDC& a, const wxRect& b, size_t c) const;
-
#define IMP_PYCALLBACK__DCRECTSIZET_constpure(CLASS, PCLASS, CBNAME) \
void CLASS::CBNAME(wxDC& a, const wxRect& b, size_t c) const { \
bool found; \
- wxPyBlock_t blocked = wxPyBeginBlockThreads(); \
+ 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); \
wxPyEndBlockThreads(blocked); \
} \
-//---------------------------------------------------------------------------
+
#define DEC_PYCALLBACK__DCRECTSIZET_const(CBNAME) \
void CBNAME(wxDC& a, const wxRect& b, size_t c) const
-
#define IMP_PYCALLBACK__DCRECTSIZET_const(CLASS, PCLASS, CBNAME) \
void CLASS::CBNAME(wxDC& a, const wxRect& b, size_t c) const { \
bool found; \
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) \
wxString CBNAME(size_t a) const
//
// the base class version doesn't do anything
// 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
IMP_PYCALLBACK__DCRECTSIZET_constpure(wxPyVListBox, wxVListBox, OnDrawItem);
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);
%}
// change the background colour of the selected cells
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;
};
// this function may be overridden to decorate HTML returned by OnGetItem()
DEC_PYCALLBACK_STRING_SIZET(OnGetItemMarkup);
+ // These are from wxVListBox
+ DEC_PYCALLBACK__DCRECTSIZET2_const(OnDrawSeparator);
+ DEC_PYCALLBACK__DCRECTSIZET_const(OnDrawBackground);
+
// TODO:
// // 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
IMP_PYCALLBACK_STRING_SIZET_pure(wxPyHtmlListBox, wxHtmlListBox, OnGetItem);
IMP_PYCALLBACK_STRING_SIZET (wxPyHtmlListBox, wxHtmlListBox, OnGetItemMarkup);
+IMP_PYCALLBACK__DCRECTSIZET2_const (wxPyHtmlListBox, wxHtmlListBox, OnDrawSeparator);
+IMP_PYCALLBACK__DCRECTSIZET_const (wxPyHtmlListBox, wxHtmlListBox, OnDrawBackground);
%}