| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192 |
- /////////////////////////////////////////////////////////////////////////////
- // Name: taskbar.h
- // Purpose: interface of wxTaskBarIcon
- // Author: wxWidgets team
- // Licence: wxWindows licence
- /////////////////////////////////////////////////////////////////////////////
- /**
- On OSX Cocoa the taskbar icon can be in the doc or in the status area.
- This enumeration can be used to select which will be instantiated.
- */
- enum wxTaskBarIconType
- {
- wxTBI_DOCK,
- wxTBI_CUSTOM_STATUSITEM,
- wxTBI_DEFAULT_TYPE
- };
- /**
- @class wxTaskBarIconEvent
- The event class used by wxTaskBarIcon.
- For a list of the event macros meant to be used with wxTaskBarIconEvent,
- please look at wxTaskBarIcon description.
- @library{wxadv}
- @category{events}
- */
- class wxTaskBarIconEvent : public wxEvent
- {
- public:
- /**
- Constructor.
- */
- wxTaskBarIconEvent(wxEventType evtType, wxTaskBarIcon *tbIcon);
- };
- /**
- @class wxTaskBarIcon
- This class represents a taskbar icon.
- A taskbar icon is an icon that appears in the 'system tray' and responds to
- mouse clicks, optionally with a tooltip above it to help provide information.
- @section taskbaricon_xnote X Window System Note
- Under X Window System, the window manager must support either the
- "System Tray Protocol" (see http://freedesktop.org/wiki/Specifications/systemtray-spec)
- by freedesktop.org (WMs used by modern desktop environments such as GNOME >= 2,
- KDE >= 3 and XFCE >= 4 all do) or the older methods used in GNOME 1.2 and KDE 1 and 2.
- If it doesn't, the icon will appear as a toplevel window on user's desktop.
- Because not all window managers have system tray, there's no guarantee that
- wxTaskBarIcon will work correctly under X Window System and so the applications
- should use it only as an optional component of their user interface.
- The user should be required to explicitly enable the taskbar icon on Unix,
- it shouldn't be on by default.
- @beginEventEmissionTable{wxTaskBarIconEvent}
- Note that not all ports are required to send these events and so it's better
- to override wxTaskBarIcon::CreatePopupMenu() if all that the application does
- is that it shows a popup menu in reaction to mouse click.
- @event{EVT_TASKBAR_MOVE(func)}
- Process a @c wxEVT_TASKBAR_MOVE event.
- @event{EVT_TASKBAR_LEFT_DOWN(func)}
- Process a @c wxEVT_TASKBAR_LEFT_DOWN event.
- @event{EVT_TASKBAR_LEFT_UP(func)}
- Process a @c wxEVT_TASKBAR_LEFT_UP event.
- @event{EVT_TASKBAR_RIGHT_DOWN(func)}
- Process a @c wxEVT_TASKBAR_RIGHT_DOWN event.
- @event{EVT_TASKBAR_RIGHT_UP(func)}
- Process a @c wxEVT_TASKBAR_RIGHT_UP event.
- @event{EVT_TASKBAR_LEFT_DCLICK(func)}
- Process a @c wxEVT_TASKBAR_LEFT_DCLICK event.
- @event{EVT_TASKBAR_RIGHT_DCLICK(func)}
- Process a @c wxEVT_TASKBAR_RIGHT_DCLICK event.
- @event{EVT_TASKBAR_CLICK(func)}
- This is a synonym for either EVT_TASKBAR_RIGHT_DOWN or UP depending on
- the platform, use this event macro to catch the event which should result
- in the menu being displayed on the current platform.
- @endEventTable
- @library{wxadv}
- @category{misc}
- */
- class wxTaskBarIcon : public wxEvtHandler
- {
- public:
- /**
- Default constructor. The iconType is only applicable on wxOSX_Cocoa.
- */
- wxTaskBarIcon(wxTaskBarIconType iconType = wxTBI_DEFAULT_TYPE);
- /**
- Destroys the wxTaskBarIcon object, removing the icon if not already removed.
- */
- virtual ~wxTaskBarIcon();
- /**
- This method is similar to wxWindow::Destroy and can be used to schedule
- the task bar icon object for the delayed destruction: it will be deleted
- during the next event loop iteration, which allows the task bar
- icon to process any pending events for it before being destroyed.
- */
- void Destroy();
- /**
- Returns @true if SetIcon() was called with no subsequent RemoveIcon().
- */
- bool IsIconInstalled() const;
- /**
- Returns @true if the object initialized successfully.
- */
- bool IsOk() const;
- /**
- Pops up a menu at the current mouse position.
- The events can be handled by a class derived from wxTaskBarIcon.
- @note
- It is recommended to override CreatePopupMenu() callback instead of
- calling this method from event handler, because some ports (e.g. wxCocoa)
- may not implement PopupMenu() and mouse click events at all.
- */
- virtual bool PopupMenu(wxMenu* menu);
- /**
- Removes the icon previously set with SetIcon().
- */
- virtual bool RemoveIcon();
- /**
- Sets the icon, and optional tooltip text.
- */
- virtual bool SetIcon(const wxIcon& icon,
- const wxString& tooltip = wxEmptyString);
- /**
- Returns true if system tray is available in the desktop environment the
- app runs under.
- On Windows and Mac OS X, the tray is always available and this function
- simply returns true.
- On Unix, X11 environment may or may not provide the tray, depending on
- user's desktop environment. Most modern desktops support the tray via
- the System Tray Protocol by freedesktop.org
- (http://freedesktop.org/wiki/Specifications/systemtray-spec).
- @note Tray availability may change during application's lifetime
- under X11 and so applications shouldn't cache the result.
- @note wxTaskBarIcon supports older GNOME 1.2 and KDE 1/2 methods of
- adding icons to tray, but they are unreliable and this method
- doesn't detect them.
- @since 2.9.0
- */
- static bool IsAvailable();
- protected:
- /**
- This method is called by the library when the user requests popup menu
- (on Windows and Unix platforms, this is when the user right-clicks the icon).
- Override this function in order to provide popup menu associated with the icon.
- If CreatePopupMenu() returns @NULL (this happens by default), no menu is shown,
- otherwise the menu is displayed and then deleted by the library as soon as the
- user dismisses it.
- The events can be handled by a class derived from wxTaskBarIcon.
- */
- virtual wxMenu* CreatePopupMenu();
- };
- wxEventType wxEVT_TASKBAR_MOVE;
- wxEventType wxEVT_TASKBAR_LEFT_DOWN;
- wxEventType wxEVT_TASKBAR_LEFT_UP;
- wxEventType wxEVT_TASKBAR_RIGHT_DOWN;
- wxEventType wxEVT_TASKBAR_RIGHT_UP;
- wxEventType wxEVT_TASKBAR_LEFT_DCLICK;
- wxEventType wxEVT_TASKBAR_RIGHT_DCLICK;
- wxEventType wxEVT_TASKBAR_CLICK;
- wxEventType wxEVT_TASKBAR_BALLOON_TIMEOUT;
- wxEventType wxEVT_TASKBAR_BALLOON_CLICK;
|