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
This commit is contained in:
Vadim Zeitlin
2012-07-27 15:36:54 +00:00
parent 5a92b56137
commit afbf46a317
13 changed files with 481 additions and 9 deletions

47
include/wx/gtk/notifmsg.h Normal file
View File

@@ -0,0 +1,47 @@
///////////////////////////////////////////////////////////////////////////////
// Name: wx/gtk/notifmsg.h
// Purpose: wxNotificationMessage for wxGTK.
// Author: Vadim Zeitlin
// Created: 2012-07-25
// RCS-ID: $Id$
// Copyright: (c) 2012 Vadim Zeitlin <vadim@wxwidgets.org>
// Licence: wxWindows licence
///////////////////////////////////////////////////////////////////////////////
#ifndef _WX_GTK_NOTIFMSG_H_
#define _WX_GTK_NOTIFMSG_H_
typedef struct _NotifyNotification NotifyNotification;
// ----------------------------------------------------------------------------
// wxNotificationMessage
// ----------------------------------------------------------------------------
class WXDLLIMPEXP_ADV wxNotificationMessage : public wxNotificationMessageBase
{
public:
wxNotificationMessage() { Init(); }
wxNotificationMessage(const wxString& title,
const wxString& message = wxString(),
wxWindow *parent = NULL,
int flags = wxICON_INFORMATION)
: wxNotificationMessageBase(title, message, parent, flags)
{
Init();
}
virtual ~wxNotificationMessage();
virtual bool Show(int timeout = Timeout_Auto);
virtual bool Close();
private:
void Init() { m_notification = NULL; }
NotifyNotification* m_notification;
wxDECLARE_NO_COPY_CLASS(wxNotificationMessage);
};
#endif // _WX_GTK_NOTIFMSG_H_

View File

@@ -127,13 +127,14 @@ private:
wxDECLARE_NO_COPY_CLASS(wxNotificationMessageBase);
};
#if defined(__WXGTK__) && (wxUSE_LIBHILDON || wxUSE_LIBHILDON2)
#include "wx/gtk/hildon/notifmsg.h"
/*
TODO: provide support for
- libnotify (Gnome)
- Growl (http://growl.info/, OS X)
TODO: Implement under OS X using notification centre (10.8+) or
Growl (http://growl.info/) for the previous versions.
*/
#if defined(__WXGTK__) && wxUSE_LIBNOTIFY
#include "wx/gtk/notifmsg.h"
#elif defined(__WXGTK__) && (wxUSE_LIBHILDON || wxUSE_LIBHILDON2)
#include "wx/gtk/hildon/notifmsg.h"
#elif defined(__WXMSW__) && wxUSE_TASKBARICON && wxUSE_TASKBARICON_BALLOONS
#include "wx/msw/notifmsg.h"
#else