Overridable CreatePopupMenu in TaskBarIcon

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@29550 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Robin Dunn
2004-09-29 21:18:28 +00:00
parent 2596e9fb2c
commit 662bd31e12

View File

@@ -58,64 +58,58 @@ enum {
#else #else
// // Otherwise make a class that can virtualize CreatePopupMenu // Otherwise make a class that can virtualize CreatePopupMenu
// class wxPyTaskBarIcon : public wxTaskBarIcon class wxPyTaskBarIcon : public wxTaskBarIcon
// { {
// DECLARE_ABSTRACT_CLASS(wxPyTaskBarIcon); DECLARE_ABSTRACT_CLASS(wxPyTaskBarIcon);
// public: public:
// wxPyTaskBarIcon() : wxTaskBarIcon() wxPyTaskBarIcon() : wxTaskBarIcon()
// {} {}
// wxMenu* CreatePopupMenu() { wxMenu* CreatePopupMenu() {
// wxMenu *rval = NULL; wxMenu *rval = NULL;
// bool found; bool found;
// bool blocked = wxPyBeginBlockThreads(); bool blocked = wxPyBeginBlockThreads();
// if ((found = wxPyCBH_findCallback(m_myInst, "CreatePopupMenu"))) { if ((found = wxPyCBH_findCallback(m_myInst, "CreatePopupMenu"))) {
// PyObject* ro; PyObject* ro;
// wxMenu* ptr; wxMenu* ptr;
// ro = wxPyCBH_callCallbackObj(m_myInst, Py_BuildValue("()")); ro = wxPyCBH_callCallbackObj(m_myInst, Py_BuildValue("()"));
// if (ro) { if (ro) {
// if (wxPyConvertSwigPtr(ro, (void **)&ptr, wxT("wxMenu"))) if (wxPyConvertSwigPtr(ro, (void **)&ptr, wxT("wxMenu")))
// rval = ptr; rval = ptr;
// Py_DECREF(ro); Py_DECREF(ro);
// } }
// } }
// wxPyEndBlockThreads(blocked); wxPyEndBlockThreads(blocked);
// if (! found) if (! found)
// rval = wxTaskBarIcon::CreatePopupMenu(); rval = wxTaskBarIcon::CreatePopupMenu();
// return rval; return rval;
// } }
// PYPRIVATE; PYPRIVATE;
// }; };
// IMPLEMENT_ABSTRACT_CLASS(wxPyTaskBarIcon, wxTaskBarIcon); IMPLEMENT_ABSTRACT_CLASS(wxPyTaskBarIcon, wxTaskBarIcon);
#endif #endif
%} %}
// NOTE: TaskbarIcon has not yet been changed to be able to virtualize the MustHaveApp(wxPyTaskBarIcon);
// CreatePopupMenu method because it is just before a release and I worry that
// there will be a problem in this case with it holding a reference to itself
// (since it depends on the dtor for cleanup.) Better safe than sorry!
//
// Perhaps a better mechanism for wxPython would be to turn CreatePopupMenu
// into an event...
MustHaveApp(wxTaskBarIcon); %name(TaskBarIcon)class wxPyTaskBarIcon : public wxEvtHandler
class wxTaskBarIcon : public wxEvtHandler
{ {
public: public:
wxTaskBarIcon(); %pythonAppend wxPyTaskBarIcon "self._setCallbackInfo(self, TaskBarIcon, 0)"
~wxTaskBarIcon();
wxPyTaskBarIcon();
void _setCallbackInfo(PyObject* self, PyObject* _class, int incref);
%extend { %extend {
void Destroy() { void Destroy() {
#ifndef __WXMAC__
self->RemoveIcon(); self->RemoveIcon();
#endif delete self;
} }
} }