1 ///////////////////////////////////////////////////////////////////////////// 2 // Name: wx/taskbar.h 3 // Purpose: wxTaskBarIcon base header and class 4 // Author: Julian Smart 5 // Modified by: 6 // Created: 7 // Copyright: (c) Julian Smart 8 // RCS-ID: $Id: taskbar.h 53135 2008-04-12 02:31:04Z VZ $ 9 // Licence: wxWindows licence 10 ///////////////////////////////////////////////////////////////////////////// 11 12 #ifndef _WX_TASKBAR_H_BASE_ 13 #define _WX_TASKBAR_H_BASE_ 14 15 #include "wx/defs.h" 16 17 #ifdef wxHAS_TASK_BAR_ICON 18 19 #include "wx/event.h" 20 21 class WXDLLIMPEXP_FWD_ADV wxTaskBarIconEvent; 22 23 // ---------------------------------------------------------------------------- 24 // wxTaskBarIconBase: define wxTaskBarIcon interface 25 // ---------------------------------------------------------------------------- 26 27 class WXDLLIMPEXP_ADV wxTaskBarIconBase : public wxEvtHandler 28 { 29 public: wxTaskBarIconBase()30 wxTaskBarIconBase() { } 31 32 // Operations: 33 virtual bool SetIcon(const wxIcon& icon, 34 const wxString& tooltip = wxEmptyString) = 0; 35 virtual bool RemoveIcon() = 0; 36 virtual bool PopupMenu(wxMenu *menu) = 0; 37 38 protected: 39 // creates menu to be displayed when user clicks on the icon CreatePopupMenu()40 virtual wxMenu *CreatePopupMenu() { return NULL; } 41 42 private: 43 // default events handling, calls CreatePopupMenu: 44 void OnRightButtonDown(wxTaskBarIconEvent& event); 45 46 DECLARE_EVENT_TABLE() 47 DECLARE_NO_COPY_CLASS(wxTaskBarIconBase) 48 }; 49 50 51 // ---------------------------------------------------------------------------- 52 // now include the actual class declaration 53 // ---------------------------------------------------------------------------- 54 55 #if defined(__WXPALMOS__) 56 #include "wx/palmos/taskbar.h" 57 #elif defined(__WXMSW__) 58 #include "wx/msw/taskbar.h" 59 #elif defined(__WXGTK__) || defined(__WXX11__) || defined(__WXMOTIF__) 60 #include "wx/unix/taskbarx11.h" 61 #elif defined (__WXMAC__) && defined(__WXMAC_OSX__) 62 #include "wx/mac/taskbarosx.h" 63 #elif defined (__WXCOCOA__) 64 #include "wx/cocoa/taskbar.h" 65 #endif 66 67 // ---------------------------------------------------------------------------- 68 // wxTaskBarIcon events 69 // ---------------------------------------------------------------------------- 70 71 class WXDLLIMPEXP_ADV wxTaskBarIconEvent : public wxEvent 72 { 73 public: wxTaskBarIconEvent(wxEventType evtType,wxTaskBarIcon * tbIcon)74 wxTaskBarIconEvent(wxEventType evtType, wxTaskBarIcon *tbIcon) 75 : wxEvent(wxID_ANY, evtType) 76 { 77 SetEventObject(tbIcon); 78 } 79 Clone()80 virtual wxEvent *Clone() const { return new wxTaskBarIconEvent(*this); } 81 82 private: 83 DECLARE_NO_ASSIGN_CLASS(wxTaskBarIconEvent) 84 }; 85 86 typedef void (wxEvtHandler::*wxTaskBarIconEventFunction)(wxTaskBarIconEvent&); 87 88 BEGIN_DECLARE_EVENT_TYPES() 89 DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_ADV,wxEVT_TASKBAR_MOVE,1550) 90 DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_ADV,wxEVT_TASKBAR_LEFT_DOWN,1551) 91 DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_ADV,wxEVT_TASKBAR_LEFT_UP,1552) 92 DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_ADV,wxEVT_TASKBAR_RIGHT_DOWN,1553) 93 DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_ADV,wxEVT_TASKBAR_RIGHT_UP,1554) 94 DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_ADV,wxEVT_TASKBAR_LEFT_DCLICK,1555) 95 DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_ADV,wxEVT_TASKBAR_RIGHT_DCLICK,1556) 96 END_DECLARE_EVENT_TYPES() 97 98 #define wxTaskBarIconEventHandler(func) \ 99 (wxObjectEventFunction)(wxEventFunction)wxStaticCastEvent(wxTaskBarIconEventFunction, &func) 100 101 #define wx__DECLARE_TASKBAREVT(evt, fn) \ 102 wx__DECLARE_EVT0(wxEVT_TASKBAR_ ## evt, wxTaskBarIconEventHandler(fn)) 103 104 #define EVT_TASKBAR_MOVE(fn) wx__DECLARE_TASKBAREVT(MOVE, fn) 105 #define EVT_TASKBAR_LEFT_DOWN(fn) wx__DECLARE_TASKBAREVT(LEFT_DOWN, fn) 106 #define EVT_TASKBAR_LEFT_UP(fn) wx__DECLARE_TASKBAREVT(LEFT_UP, fn) 107 #define EVT_TASKBAR_RIGHT_DOWN(fn) wx__DECLARE_TASKBAREVT(RIGHT_DOWN, fn) 108 #define EVT_TASKBAR_RIGHT_UP(fn) wx__DECLARE_TASKBAREVT(RIGHT_UP, fn) 109 #define EVT_TASKBAR_LEFT_DCLICK(fn) wx__DECLARE_TASKBAREVT(LEFT_DCLICK, fn) 110 #define EVT_TASKBAR_RIGHT_DCLICK(fn) wx__DECLARE_TASKBAREVT(RIGHT_DCLICK, fn) 111 112 // taskbar menu is shown on right button press under all platforms except MSW 113 // where it's shown on right button release, using this event type and macro 114 // allows to write code which works correctly on all platforms 115 #ifdef __WXMSW__ 116 #define wxEVT_TASKBAR_CLICK wxEVT_TASKBAR_RIGHT_UP 117 #else 118 #define wxEVT_TASKBAR_CLICK wxEVT_TASKBAR_RIGHT_DOWN 119 #endif 120 #define EVT_TASKBAR_CLICK(fn) wx__DECLARE_TASKBAREVT(CLICK, fn) 121 122 #endif // wxHAS_TASK_BAR_ICON 123 124 #endif // _WX_TASKBAR_H_BASE_ 125