tazpkg annotate tazpkg-notification.c @ rev 937
modules/get: make wget progress metter working again
Now, Busybox v. 1.26 make the difference whether it outputs progress meter to the file or to the tty (libbb/progress.c).
Bug report: http://forum.slitaz.org/topic/two-issues-with-tazpkg-934
Now, Busybox v. 1.26 make the difference whether it outputs progress meter to the file or to the tty (libbb/progress.c).
Bug report: http://forum.slitaz.org/topic/two-issues-with-tazpkg-934
author | Aleksej Bobylev <al.bobylev@gmail.com> |
---|---|
date | Fri Jan 27 12:13:57 2017 +0200 (2017-01-27) |
parents | |
children |
rev | line source |
---|---|
al@899 | 1 /* |
al@899 | 2 * tazpkg-notification: part of TazPkg - SliTaz package manager. |
al@899 | 3 * Show Freedesktop notification (with action buttons). |
al@899 | 4 * |
al@899 | 5 * Based on the sources provided in the libnotify / tests. |
al@899 | 6 * Copyright(C) 2004 Mike Hearn <mike@navi.cx> - LGPL 2.1 |
al@899 | 7 * |
al@899 | 8 * I have no skills in C. This program may have bugs. |
al@899 | 9 * Aleksej Bobylev <al.bobylev@gmail.com>, 2016 |
al@899 | 10 * |
al@899 | 11 * Commandline arguments: |
al@899 | 12 * 1 : Notification body text |
al@899 | 13 * [2]: Urgency flag: |
al@899 | 14 * 0 or absent: normal urgency |
al@899 | 15 * 1: critical urgency |
al@899 | 16 * [3]: Button label for first action |
al@899 | 17 * [4]: Button label for second action |
al@899 | 18 * |
al@899 | 19 * Output: |
al@899 | 20 * 1: If first button was pressed |
al@899 | 21 * 2: If second button was pressed |
al@899 | 22 */ |
al@899 | 23 |
al@899 | 24 #include <libnotify/notify.h> |
al@899 | 25 #include <stdio.h> |
al@899 | 26 #include <unistd.h> |
al@899 | 27 #include <stdlib.h> |
al@899 | 28 #include <string.h> |
al@899 | 29 |
al@899 | 30 static GMainLoop *loop; |
al@899 | 31 |
al@899 | 32 static void |
al@899 | 33 _handle_closed (GObject * obj) |
al@899 | 34 { |
al@899 | 35 printf ("\n"); |
al@899 | 36 g_object_unref (obj); |
al@899 | 37 g_main_loop_quit (loop); |
al@899 | 38 } |
al@899 | 39 |
al@899 | 40 static void |
al@899 | 41 action1_callback (NotifyNotification *n, const char *action) |
al@899 | 42 { |
al@899 | 43 g_assert (action != NULL); |
al@899 | 44 g_assert (strcmp (action, "act1") == 0); |
al@899 | 45 |
al@899 | 46 printf ("1"); |
al@899 | 47 |
al@899 | 48 notify_notification_close (n, NULL); |
al@899 | 49 |
al@899 | 50 g_main_loop_quit (loop); |
al@899 | 51 } |
al@899 | 52 static void |
al@899 | 53 action2_callback (NotifyNotification *n, const char *action) |
al@899 | 54 { |
al@899 | 55 g_assert (action != NULL); |
al@899 | 56 g_assert (strcmp (action, "act2") == 0); |
al@899 | 57 |
al@899 | 58 printf ("2"); |
al@899 | 59 |
al@899 | 60 notify_notification_close (n, NULL); |
al@899 | 61 |
al@899 | 62 g_main_loop_quit (loop); |
al@899 | 63 } |
al@899 | 64 |
al@899 | 65 |
al@899 | 66 int |
al@899 | 67 main (int argc, char **argv) |
al@899 | 68 { |
al@899 | 69 NotifyNotification *n; |
al@899 | 70 |
al@899 | 71 if (!notify_init ("TazPkg Notification")) |
al@899 | 72 exit (1); |
al@899 | 73 |
al@899 | 74 loop = g_main_loop_new (NULL, FALSE); |
al@899 | 75 |
al@899 | 76 if (argc < 3 || strcmp (argv[2], "0") == 0) { |
al@899 | 77 n = notify_notification_new ("TazPkg", argv[1], "dialog-information"); |
al@899 | 78 } else { |
al@899 | 79 n = notify_notification_new ("TazPkg", argv[1], "dialog-warning"); |
al@899 | 80 notify_notification_set_urgency (n, NOTIFY_URGENCY_CRITICAL); |
al@899 | 81 notify_notification_set_timeout (n, NOTIFY_EXPIRES_NEVER); |
al@899 | 82 } |
al@899 | 83 |
al@899 | 84 notify_notification_set_hint (n, "transient", g_variant_new_boolean (TRUE)); |
al@899 | 85 |
al@899 | 86 if (argc >= 4) |
al@899 | 87 notify_notification_add_action (n, "act1", argv[3], (NotifyActionCallback) action1_callback, NULL, NULL); |
al@899 | 88 if (argc >= 5) |
al@899 | 89 notify_notification_add_action (n, "act2", argv[4], (NotifyActionCallback) action2_callback, NULL, NULL); |
al@899 | 90 |
al@899 | 91 g_signal_connect (G_OBJECT (n), "closed", G_CALLBACK (_handle_closed), NULL); |
al@899 | 92 |
al@899 | 93 if (!notify_notification_show (n, NULL)) |
al@899 | 94 return 1; |
al@899 | 95 |
al@899 | 96 g_main_loop_run (loop); |
al@899 | 97 |
al@899 | 98 return 0; |
al@899 | 99 } |