wxWidgets/interface/wx/notifmsg.h
Vadim Zeitlin afbf46a317 Implement wxNotificationMessage using libnotify in wxGTK.
Use libnotify -- if detected by configure -- to provide native notifications
in wxGTK. Our API maps to libnotify one in rather straightforward way, we
might consider extending it to cover more of libnotify functionality
(categories, user-defined icons and, especially, actions) later.

Also update the dialogs sample to show another kind of notification and the
documentation to clarify the behaviour of various methods.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@72218 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2012-07-27 15:36:54 +00:00

115 lines
3.9 KiB
Objective-C

/////////////////////////////////////////////////////////////////////////////
// Name: notifmsg.h
// Purpose: interface of wxNotificationMessage
// Author: wxWidgets team
// RCS-ID: $Id$
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
/**
@class wxNotificationMessage
This class allows to show the user a message non intrusively.
Currently it is implemented natively for Windows and GTK and uses
(non-modal) dialogs for the display of the notifications under the other
platforms.
Notice that this class is not a window and so doesn't derive from wxWindow.
@library{wxadv}
@category{misc}
*/
class wxNotificationMessage : public wxEvtHandler
{
public:
/// Possible values for Show() timeout.
enum
{
Timeout_Auto = -1, ///< Notification will be hidden automatically.
Timeout_Never = 0 ///< Notification will never time out.
};
/**
Default constructor, use SetParent(), SetTitle() and SetMessage() to
initialize the object before showing it.
*/
wxNotificationMessage();
/**
Create a notification object with the given attributes.
See SetTitle(), SetMessage(), SetParent() and SetFlags() for the
description of the corresponding parameters.
*/
wxNotificationMessage(const wxString& title, const wxString& message = wxEmptyString,
wxWindow* parent = NULL, int flags = wxICON_INFORMATION);
/**
Destructor does not hide the notification.
The notification can continue to be shown even after the C++ object was
destroyed, call Close() explicitly if it needs to be hidden.
*/
virtual ~wxNotificationMessage();
/**
Hides the notification.
Returns @true if it was hidden or @false if it couldn't be done
(e.g. on some systems automatically hidden notifications can't be
hidden manually).
*/
virtual bool Close();
/**
This parameter can be currently used to specify the icon to show in the
notification.
Valid values are @c wxICON_INFORMATION, @c wxICON_WARNING and
@c wxICON_ERROR (notice that @c wxICON_QUESTION is not allowed here).
Some implementations of this class may not support the icons.
*/
void SetFlags(int flags);
/**
Set the main text of the notification.
This should be a more detailed description than the title but still limited
to reasonable length (not more than 256 characters).
*/
void SetMessage(const wxString& message);
/**
Set the parent for this notification: the notification will be associated with
the top level parent of this window or, if this method is not called, with the
main application window by default.
*/
void SetParent(wxWindow* parent);
/**
Set the title, it must be a concise string (not more than 64 characters), use
SetMessage() to give the user more details.
*/
void SetTitle(const wxString& title);
/**
Show the notification to the user and hides it after @a timeout seconds
are elapsed.
Special values @c Timeout_Auto and @c Timeout_Never can be used here,
notice that you shouldn't rely on @a timeout being exactly respected
because the current platform may only support default timeout value
and also because the user may be able to close the notification.
@note When using native notifications in wxGTK, the timeout is ignored
for the notifications with @c wxICON_WARNING or @c wxICON_ERROR
flags, they always remain shown unless they're explicitly hidden by
the user, i.e. behave as if Timeout_Auto were given.
@return @false if an error occurred.
*/
virtual bool Show(int timeout = Timeout_Auto);
};