summaryrefslogtreecommitdiff
path: root/src/notification.c
diff options
context:
space:
mode:
authorLucas Rocha <lucasr@gnome.org>2006-03-23 03:43:23 +0000
committerLucas Almeida Rocha <lucasr@src.gnome.org>2006-03-23 03:43:23 +0000
commite919741e641a82d7eb99dd5f0463c7006024c474 (patch)
treed1aeddc4ee98e0e3c16c0bb5d8bcc944d2d106aa /src/notification.c
parent168e2625b937d1acfc1f1d8dab82b4bb838053bf (diff)
Implement the "message" command on notification icon with libnotify
2006-03-22 Lucas Rocha <lucasr@gnome.org> Implement the "message" command on notification icon with libnotify bubbles. Patch from Davyd Madeley <davyd@madeley.id.au>. * configure.in: add libnotify checking. * src/notification.c (zenity_notification_handle_stdin, zenity_notification): initialize libnotify and implement "message" command.
Diffstat (limited to 'src/notification.c')
-rw-r--r--src/notification.c39
1 files changed, 38 insertions, 1 deletions
diff --git a/src/notification.c b/src/notification.c
index 26600cb..6d5f8dd 100644
--- a/src/notification.c
+++ b/src/notification.c
@@ -26,6 +26,11 @@
#include <glade/glade.h>
#include <time.h>
#include <string.h>
+
+#ifdef HAVE_LIBNOTIFY
+#include <libnotify/notify.h>
+#endif
+
#include "zenity.h"
#include "eggtrayicon.h"
#include "util.h"
@@ -182,7 +187,33 @@ zenity_notification_handle_stdin (GIOChannel *channel,
g_warning ("Could not load notification icon : %s", value);
}
} else if (!strcmp (command, "message")) {
- g_warning ("haven't implemented message support yet");
+#ifdef HAVE_LIBNOTIFY
+ /* display a notification bubble */
+ if (notify_is_initted ()) {
+ GError *error = NULL;
+ NotifyNotification *n;
+ GdkPixbuf *icon;
+
+ n = notify_notification_new (g_strcompress (value), NULL, NULL,
+ GTK_WIDGET (tray_icon));
+
+ icon = gtk_image_get_pixbuf (GTK_IMAGE (icon_image));
+
+ notify_notification_set_icon_from_pixbuf (n, icon);
+
+ notify_notification_show (n, &error);
+ if (error) {
+ g_warning (error->message);
+ g_error_free (error);
+ }
+
+ g_object_unref (G_OBJECT (n));
+ } else {
+#else
+ { /* this brace is for balance */
+#endif
+ g_warning ("Notification framework not available");
+ }
} else if (!strcmp (command, "tooltip")) {
gtk_tooltips_set_tip (tooltips, icon_event_box, value, value);
} else if (!strcmp (command, "visible")) {
@@ -275,6 +306,12 @@ zenity_notification (ZenityData *data, ZenityNotificationData *notification_data
G_CALLBACK (zenity_notification_icon_press_callback), data);
}
+#ifdef HAVE_LIBNOTIFY
+ /* create the notification widget */
+ if (!notify_is_initted ())
+ notify_init (_("Zenity notification"));
+#endif
+
gtk_widget_show_all (GTK_WIDGET (tray_icon));
/* Does nothing at the moment */