diff options
author | Xan Lopez <xlopez@igalia.com> | 2011-08-29 21:49:08 +0800 |
---|---|---|
committer | Xan Lopez <xlopez@igalia.com> | 2011-08-29 21:49:08 +0800 |
commit | 540c0c0ac46399462dfad2c3fd0a50a412882307 (patch) | |
tree | e030bf92f223f7b35e30b3e06a430b9a82e8d9ba /src | |
parent | e6785d3ccc5a5a7c933a50b1a224fc01ee741c9c (diff) | |
download | gsoc2013-epiphany-540c0c0ac46399462dfad2c3fd0a50a412882307.tar.gz gsoc2013-epiphany-540c0c0ac46399462dfad2c3fd0a50a412882307.tar.zst gsoc2013-epiphany-540c0c0ac46399462dfad2c3fd0a50a412882307.zip |
Show a notification when the newly created web-app is ready to be used
This will probably go away in 3.4 when the new dash design is
introduced, but for now it's the best we have.
Diffstat (limited to 'src')
-rw-r--r-- | src/ephy-main.c | 6 | ||||
-rw-r--r-- | src/window-commands.c | 35 |
2 files changed, 39 insertions, 2 deletions
diff --git a/src/ephy-main.c b/src/ephy-main.c index c74b2e7ef..19b4100f8 100644 --- a/src/ephy-main.c +++ b/src/ephy-main.c @@ -35,6 +35,7 @@ #include "eggsmclient.h" #include <libxml/xmlversion.h> +#include <libnotify/notify.h> #include <glib/gi18n.h> @@ -261,6 +262,8 @@ main (int argc, */ LIBXML_TEST_VERSION; + notify_init (PACKAGE); + /* If we're given -remote arguments, translate them */ if (argc >= 2 && strcmp (argv[1], "-remote") == 0) { const char *opening, *closing; @@ -463,6 +466,9 @@ main (int argc, /* Shutdown */ g_object_unref (ephy_shell); + if (notify_is_initted ()) + notify_uninit (); + ephy_file_save_accels (); ephy_state_save (); ephy_settings_shutdown (); diff --git a/src/window-commands.c b/src/window-commands.c index 341ea4014..3cdbcf686 100644 --- a/src/window-commands.c +++ b/src/window-commands.c @@ -58,6 +58,7 @@ #include <gtk/gtk.h> #include <glib/gi18n.h> #include <webkit/webkit.h> +#include <libnotify/notify.h> static void page_setup_done_cb (GtkPageSetup *setup, @@ -503,6 +504,20 @@ fill_default_application_title (EphyApplicationDialogData *data) gtk_entry_set_text (GTK_ENTRY (data->entry), title); } +static void +notify_launch_cb (NotifyNotification *notification, + char *action, + gpointer user_data) +{ + char * desktop_file = user_data; + /* A gross hack to be able to launch epiphany from within + * Epiphany. Might be a good idea to figure out a better + * solution... */ + g_unsetenv (EPHY_UUID_ENVVAR); + ephy_file_launch_desktop_file (desktop_file, NULL, 0, NULL); + g_free (desktop_file); +} + void window_cmd_file_save_as_application (GtkAction *action, EphyWindow *window) @@ -558,14 +573,30 @@ window_cmd_file_save_as_application (GtkAction *action, if (response == GTK_RESPONSE_OK) { char *desktop_file; + char *message; + NotifyNotification *notification; /* Create Web Application, including a new profile and .desktop file. */ desktop_file = ephy_web_view_create_web_application (view, gtk_entry_get_text (GTK_ENTRY (data->entry)), gtk_image_get_pixbuf (GTK_IMAGE (data->image))); - /* TODO: show a notification when the app is totally - * created and ready to be launched */ + message = g_strdup_printf (_("The application '%s' is ready to be used"), + gtk_entry_get_text (GTK_ENTRY (data->entry))); + + notification = notify_notification_new (message, + NULL, NULL); + g_free (message); + notify_notification_add_action (notification, "launch", _("Launch"), + (NotifyActionCallback)notify_launch_cb, + g_path_get_basename (desktop_file), + NULL); + notify_notification_set_icon_from_pixbuf (notification, gtk_image_get_pixbuf (GTK_IMAGE (data->image))); + notify_notification_set_timeout (notification, NOTIFY_EXPIRES_DEFAULT); + notify_notification_set_urgency (notification, NOTIFY_URGENCY_LOW); + notify_notification_set_hint (notification, "transient", g_variant_new_boolean (TRUE)); + notify_notification_show (notification, NULL); + g_free (desktop_file); } |