Author: jhaitsma Date: Sat Feb 16 16:46:34 2008 New Revision: 1131 URL: http://svn.gnome.org/viewvc/tracker?rev=1131&view=rev
Log: 2008-02-16 Jaap Haitsma <[EMAIL PROTECTED]> * src/tracker-applet/tracker-applet.c: (create_context_menu), (statistics_menu_activated), (open_uri), (about_url_hook), (about_email_hook), (about_menu_activated), (main): Add about dialog to applet. Fixes bug #507339 Modified: trunk/ChangeLog trunk/src/tracker-applet/tracker-applet.c Modified: trunk/src/tracker-applet/tracker-applet.c ============================================================================== --- trunk/src/tracker-applet/tracker-applet.c (original) +++ trunk/src/tracker-applet/tracker-applet.c Sat Feb 16 16:46:34 2008 @@ -23,6 +23,7 @@ #include <stdlib.h> #include <strings.h> #include <string.h> +#include <glib.h> #include <glib/gi18n.h> #include <gdk/gdkkeysyms.h> #include <gtk/gtk.h> @@ -96,6 +97,7 @@ static void tray_icon_init (GTypeInstance *instance, gpointer g_class); static void tray_icon_clicked (GtkStatusIcon *icon, guint button, guint timestamp, gpointer data); static void preferences_menu_activated (GtkMenuItem *item, gpointer data); +static void about_menu_activated (GtkMenuItem *item, gpointer data); static void statistics_menu_activated (GtkMenuItem *item, gpointer data); static void quit_menu_activated (GtkMenuItem *item, gpointer data); @@ -226,6 +228,12 @@ g_signal_connect (G_OBJECT (item), "activate", G_CALLBACK (statistics_menu_activated), icon); gtk_menu_shell_append (GTK_MENU_SHELL (priv->menu), item); + item = (GtkWidget *)gtk_image_menu_item_new_with_mnemonic (_("_About")); + image = gtk_image_new_from_icon_name (GTK_STOCK_ABOUT, GTK_ICON_SIZE_MENU); + gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (item), image); + g_signal_connect (G_OBJECT (item), "activate", G_CALLBACK (about_menu_activated), icon); + gtk_menu_shell_append (GTK_MENU_SHELL (priv->menu), item); + item = gtk_separator_menu_item_new (); gtk_menu_shell_append (GTK_MENU_SHELL (priv->menu), item); @@ -1070,11 +1078,130 @@ "response", G_CALLBACK (stat_window_free), self); - gtk_widget_show_all (dialog); + gtk_widget_show_all (dialog); +} - +static void +open_uri(GtkWindow *parent, const char *uri) +{ + GtkWidget *dialog; + GdkScreen *screen; + GError *error = NULL; + gchar *cmdline; + + screen = gtk_window_get_screen (parent); + + cmdline = g_strconcat ("xdg-open ", uri, NULL); + + if (gdk_spawn_command_line_on_screen (screen, cmdline, &error) == FALSE) { + dialog = gtk_message_dialog_new (parent, GTK_DIALOG_DESTROY_WITH_PARENT, + GTK_MESSAGE_ERROR, GTK_BUTTONS_CLOSE, + error->message); + gtk_dialog_run (GTK_DIALOG (dialog)); + gtk_widget_destroy (dialog); + g_error_free (error); + } + + g_free (cmdline); } +static void +about_url_hook(GtkAboutDialog *dialog, const gchar *url, gpointer data) +{ + open_uri (GTK_WINDOW (dialog), url); +} + +static void +about_email_hook(GtkAboutDialog *dialog, const gchar *email, gpointer data) +{ + gchar *uri; + + uri = g_strconcat ("mailto:", email, NULL); + open_uri (GTK_WINDOW(dialog), uri); + g_free (uri); +} + +static void +about_menu_activated (GtkMenuItem *item, gpointer data) +{ + TrayIcon *self = TRAY_ICON (data); + TrayIconPrivate *priv = TRAY_ICON_GET_PRIVATE (self); + + const gchar *authors[] = { + "Jamie McCracken <jamiemcc at gnome.org>", + "Laurent Aguerreche <laurent.aguerreche at free fr>", + "Luca Ferretti <[EMAIL PROTECTED]>", + "Eugenio <me at eugesoftware com>", + "Michael Biebl <mbiebl at gmail com>", + "Edward Duffy <eduffy at gmail com>", + "Gergan Penkov <gergan at gmail com>", + "Deji Akingunola <dakingun gmail com>", + "Julien <julienc psychologie-fr org>", + "Tom <[EMAIL PROTECTED]>", + "Samuel Cormier-Iijima <sciyoshi at gmail com>", + "Eskil Bylund <eskil at letterboxes org>", + "Ulrik Mikaelsson <ulrik mikaelsson gmail com>", + "tobutaz <tobutaz gmail com>", + "Mikkel Kamstrup Erlandsen <mikkel kamstrup gmail com>", + "Baptiste Mille-Mathias <baptiste.millemathias gmail com>", + "Richard Quirk <[EMAIL PROTECTED]>", + "Marcus Fritzsch <fritschy at googlemail com>", + "Jedy Wang <Jedy Wang at Sun COM>", + "Anders Aagaard <aagaande at gmail com>", + "Fabien VALLON <fabien at sonappart net>", + "Jaime Frutos Morales <acidborg at gmail com>", + "Christoph Laimburg <christoph laimburg at rolmail net>", + NULL + }; + const gchar *documenters[] = { + NULL + }; + const gchar *license[] = { + N_("Tracker is free software; you can redistribute it and/or modify " + "it under the terms of the GNU General Public License as published by " + "the Free Software Foundation; either version 2 of the License, or " + "(at your option) any later version."), + N_("Tracker is distributed in the hope that it will be useful, " + "but WITHOUT ANY WARRANTY; without even the implied warranty of " + "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the " + "GNU General Public License for more details."), + N_("You should have received a copy of the GNU General Public License " + "along with Tracker; if not, write to the Free Software Foundation, Inc., " + "59 Temple Place, Suite 330, Boston, MA 02111-1307 USA") + }; + gchar *license_trans; + + license_trans = g_strjoin ("\n\n", _(license[0]), _(license[1]), + _(license[2]), NULL); + + /* Make URLs and email clickable in about dialog */ + gtk_about_dialog_set_url_hook (about_url_hook, NULL, NULL); + gtk_about_dialog_set_email_hook (about_email_hook, NULL, NULL); + + gtk_show_about_dialog (GTK_WINDOW (priv->window), + "version", VERSION, + "comments", _("Tracker is a tool designed to " + "extract information and metadata " + "about your personal data so that " + "it can be searched easily and quickly"), + "copyright", _("Copyright \xC2\xA9 2005-2008 " + "The Tracker authors"), + "license", license_trans, + "wrap-license", TRUE, + "authors", authors, + "documenters", documenters, + /* Translators should localize the following string + * which will be displayed at the bottom of the about + * box to give credit to the translator(s). + */ + "translator-credits", _("translator-credits"), + "logo-icon-name", "tracker", + "website", "http://www.tracker-project.org/", + "website-label", _("Tracker Web Site"), + NULL); + + g_free (license_trans); +} static void quit_menu_activated (GtkMenuItem *item, gpointer data) @@ -1121,6 +1248,9 @@ g_warning ("failed: notify_init()\n"); return EXIT_FAILURE; } + gtk_window_set_default_icon_name ("tracker"); + + g_set_application_name (_("Tracker")); /* set translatable strings here */ _______________________________________________ SVN-commits-list mailing list (read only) http://mail.gnome.org/mailman/listinfo/svn-commits-list Want to limit the commits to a few modules? Go to above URL, log in to edit your options and select the modules ('topics') you want. Module maintainer? It is possible to set the reply-to to your development mailing list. Email [EMAIL PROTECTED] if interested.