Notes about implementing CreatePopupMenu for the future
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@27677 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -31,7 +31,7 @@ class wxTaskBarIcon : public wxEvtHandler
|
|||||||
public:
|
public:
|
||||||
wxTaskBarIcon() { wxPyRaiseNotImplemented(); }
|
wxTaskBarIcon() { wxPyRaiseNotImplemented(); }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
class wxTaskBarIconEvent : public wxEvent
|
class wxTaskBarIconEvent : public wxEvent
|
||||||
{
|
{
|
||||||
@@ -50,11 +50,53 @@ enum {
|
|||||||
wxEVT_TASKBAR_LEFT_DCLICK = 0,
|
wxEVT_TASKBAR_LEFT_DCLICK = 0,
|
||||||
wxEVT_TASKBAR_RIGHT_DCLICK = 0,
|
wxEVT_TASKBAR_RIGHT_DCLICK = 0,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
#else
|
||||||
|
// // Otherwise make a class that can virtualize CreatePopupMenu
|
||||||
|
// class wxPyTaskBarIcon : public wxTaskBarIcon
|
||||||
|
// {
|
||||||
|
// DECLARE_ABSTRACT_CLASS(wxPyTaskBarIcon);
|
||||||
|
// public:
|
||||||
|
// wxPyTaskBarIcon() : wxTaskBarIcon()
|
||||||
|
// {}
|
||||||
|
|
||||||
|
// wxMenu* CreatePopupMenu() {
|
||||||
|
// wxMenu *rval = NULL;
|
||||||
|
// bool found;
|
||||||
|
// bool blocked = wxPyBeginBlockThreads();
|
||||||
|
// if ((found = wxPyCBH_findCallback(m_myInst, "CreatePopupMenu"))) {
|
||||||
|
// PyObject* ro;
|
||||||
|
// wxMenu* ptr;
|
||||||
|
// ro = wxPyCBH_callCallbackObj(m_myInst, Py_BuildValue("()"));
|
||||||
|
// if (ro) {
|
||||||
|
// if (wxPyConvertSwigPtr(ro, (void **)&ptr, wxT("wxMenu")))
|
||||||
|
// rval = ptr;
|
||||||
|
// Py_DECREF(ro);
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// wxPyEndBlockThreads(blocked);
|
||||||
|
// if (! found)
|
||||||
|
// rval = wxTaskBarIcon::CreatePopupMenu();
|
||||||
|
// return rval;
|
||||||
|
// }
|
||||||
|
|
||||||
|
// PYPRIVATE;
|
||||||
|
// };
|
||||||
|
|
||||||
|
// IMPLEMENT_ABSTRACT_CLASS(wxPyTaskBarIcon, wxTaskBarIcon);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
%}
|
%}
|
||||||
|
|
||||||
|
|
||||||
|
// NOTE: TaskbarIcon has not yet been changed to be able to virtualize the
|
||||||
|
// 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 woudl be to turn CreatePopupMenu
|
||||||
|
// into an event...
|
||||||
|
|
||||||
MustHaveApp(wxTaskBarIcon);
|
MustHaveApp(wxTaskBarIcon);
|
||||||
|
|
||||||
@@ -75,11 +117,11 @@ public:
|
|||||||
#ifndef __WXMAC__
|
#ifndef __WXMAC__
|
||||||
bool IsOk() const;
|
bool IsOk() const;
|
||||||
%pythoncode { def __nonzero__(self): return self.IsOk() }
|
%pythoncode { def __nonzero__(self): return self.IsOk() }
|
||||||
|
|
||||||
bool IsIconInstalled() const;
|
bool IsIconInstalled() const;
|
||||||
|
|
||||||
bool SetIcon(const wxIcon& icon, const wxString& tooltip = wxPyEmptyString);
|
bool SetIcon(const wxIcon& icon, const wxString& tooltip = wxPyEmptyString);
|
||||||
bool RemoveIcon(void);
|
bool RemoveIcon();
|
||||||
bool PopupMenu(wxMenu *menu);
|
bool PopupMenu(wxMenu *menu);
|
||||||
#endif
|
#endif
|
||||||
};
|
};
|
||||||
@@ -111,6 +153,6 @@ EVT_TASKBAR_RIGHT_DOWN = wx.PyEventBinder ( wxEVT_TASKBAR_RIGHT_DOWN )
|
|||||||
EVT_TASKBAR_RIGHT_UP = wx.PyEventBinder ( wxEVT_TASKBAR_RIGHT_UP )
|
EVT_TASKBAR_RIGHT_UP = wx.PyEventBinder ( wxEVT_TASKBAR_RIGHT_UP )
|
||||||
EVT_TASKBAR_LEFT_DCLICK = wx.PyEventBinder ( wxEVT_TASKBAR_LEFT_DCLICK )
|
EVT_TASKBAR_LEFT_DCLICK = wx.PyEventBinder ( wxEVT_TASKBAR_LEFT_DCLICK )
|
||||||
EVT_TASKBAR_RIGHT_DCLICK = wx.PyEventBinder ( wxEVT_TASKBAR_RIGHT_DCLICK )
|
EVT_TASKBAR_RIGHT_DCLICK = wx.PyEventBinder ( wxEVT_TASKBAR_RIGHT_DCLICK )
|
||||||
}
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------
|
//---------------------------------------------------------------------------
|
||||||
|
Reference in New Issue
Block a user