From f0e2de981a71c1f25b11872125dfa3f900017b77 Mon Sep 17 00:00:00 2001 From: William Jon McCann Date: Fri, 28 May 2004 16:14:07 +0000 Subject: Remove e-shell-about-box. 2004-05-28 William Jon McCann * Makefile.am (evolution_SOURCES): Remove e-shell-about-box. * e-shell-window-commands.c (command_about_box, about_box_new): Use GNOME about box. svn path=/trunk/; revision=26122 --- shell/ChangeLog | 7 + shell/Makefile.am | 2 - shell/e-shell-about-box.c | 534 ---------------------------------------- shell/e-shell-about-box.h | 62 ----- shell/e-shell-window-commands.c | 224 +++++++++++++++-- 5 files changed, 209 insertions(+), 620 deletions(-) delete mode 100644 shell/e-shell-about-box.c delete mode 100644 shell/e-shell-about-box.h (limited to 'shell') diff --git a/shell/ChangeLog b/shell/ChangeLog index 94ec81826b..6478efb4c2 100644 --- a/shell/ChangeLog +++ b/shell/ChangeLog @@ -1,3 +1,10 @@ +2004-05-28 William Jon McCann + + * Makefile.am (evolution_SOURCES): Remove e-shell-about-box. + + * e-shell-window-commands.c (command_about_box, about_box_new): + Use GNOME about box. + 2004-05-27 Rodney Dawes * Makefile.am (EXTRA_DIST): Add $(error_i18n) for "make dist" diff --git a/shell/Makefile.am b/shell/Makefile.am index 4f63855222..fa3c86f9ff 100644 --- a/shell/Makefile.am +++ b/shell/Makefile.am @@ -136,8 +136,6 @@ evolution_SOURCES = \ e-corba-config-page.h \ e-history.c \ e-history.h \ - e-shell-about-box.c \ - e-shell-about-box.h \ e-shell-constants.h \ e-shell-folder-title-bar.c \ e-shell-folder-title-bar.h \ diff --git a/shell/e-shell-about-box.c b/shell/e-shell-about-box.c deleted file mode 100644 index 750061a453..0000000000 --- a/shell/e-shell-about-box.c +++ /dev/null @@ -1,534 +0,0 @@ -/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */ -/* e-shell-about-box.c - * - * Copyright (C) 2001, 2002, 2003 Ximian, Inc. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of version 2 of the GNU General Public - * License as published by the Free Software Foundation. - * - * This program 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. - * - * You should have received a copy of the GNU General Public - * License along with this program; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - * - * Author: Ettore Perazzoli - */ - -#ifdef HAVE_CONFIG_H -#include -#endif - -#include "e-shell-about-box.h" - -#include - -#include -#include - - -#define PARENT_TYPE gtk_event_box_get_type () -static GtkEventBoxClass *parent_class = NULL; - -/* must be in utf8, the weird breaking of escaped strings - is so the hex escape strings dont swallow too many chars */ -static const char *text[] = { - "", - "Evolution " VERSION, - "Copyright \xC2\xA9 1999 - 2004 Novell, Inc.", - "", - N_("Brought to you by"), - "", - "Darin Adler", - "Arturo Espinosa Aldama", - "H\xC3\xA9" "ctor Garc\xC3\xAD" "a \xC3\x81" "lvarez", - "Jes\xC3\xBA" "s Bravo \xC3\x81" "lvarez", - "Seth Alves", - "Marius Andreiana", - "Sean Atkinson", - "Szabolcs BAN", - "Timur Bakeyev", - "Martin Baulig", - "Frank Belew", - "Dan Berger", - "Jacob Berkman", - "Matt Bissiri", - "Jonathan Blandford", - "Richard Boulton", - "Robert Brady", - "Kevin Breit", - "Martha Burke", - "Dave Camp", - "Ian Campbell", - "Anders Carlsson", - "Damon Chaplin", - "Abel Cheung", - "Zbigniew Chyla", - "Clifford R. Conover", - "Sam Creasey", - "Frederic Crozat", - "Wayne Davis", - "Rodney Dawes", - "Jos Dehaes", - "Fatih Demir", - "Arik Devens", - "Anna Marie Dirks", - "Bob Doan", - "Radek Doul\xC3\xADk", - "Edd Dumbill", - "Larry Ewing", - "Gilbert Fang", - "Francisco Javier F. Serrador", - "Nuno Ferreira", - "Valek Filippov", - "Nat Friedman", - "Sean Gao", - "Jeff Garzik", - "Nike Gerdts", - "Grzegorz Goawski", - "Jody Goldberg", - "Pablo Gonzalo del Campo", - "Mark Gordon", - "Kenny Graunke", - "Alex Graveley", - "Bertrand Guiheneuf", - "Jean-Noel Guiheneuf", - "Mikael Hallendal", - "Raja R Harinath", - "Heath Harrelson", - "Taylor Hayward", - "Jon K Hellan", - "Martin Hicks", - "Iain Holmes", - "Max Horn", - "Greg Hudson", - "Richard Hult", - "Andreas Hyden", - "Miguel de Icaza", - "Hans Petter Jansson", - "Jack Jia", - "Wang Jian", - "Sanshao Jiang", - "Benjamin Kahn", - "Yanko Kaneti", - "Lauris Kaplinski", - "Jeremy Katz", - "Mike Kestner", - "Christian Kreibich", - "Nicholas J Kreucher", - "Ronald Kuetemeier", - "Tuomas Kuosmanen", - "Mathieu Lacage", - "Christopher J. Lahey", - "Eneko Lacunza", - "Miles Lane", - "Jason Leach", - "Elliot Lee", - "Ji Lee", - "Timothy Lee", - "T\xC3\xB5" "ivo Leedj\xC3\xA4" "rv", - "Richard Li", - "Matthew Loper", - "Duarte Loreto", - "Harry Lu", - "Michael MacDonald", - "Duncan Mak", - "Kjartan Maraas", - "Gerardo Marin", - "Matt Martin", - "Carlos Perell\xC3\xB3" " Mar\xC3\xAD" "n", - "Dietmar Maurer", - "Mike McEwan", - "Alastair McKinstry", - "Michael Meeks", - "Federico Mena", - "Christophe Merlet", - "Michael M. Morrison", - "Rodrigo Moya", - "Steve Murphy", - "Yukihiro Nakai", - "Martin Norb\xC3\xA4" "ck", - "Tomas Ogren", - "Ismael Olea", - "Eskil Heyn Olsen", - "Sergey Panov", - "Gediminas Paulauskas", - "Jesse Pavel", - "Havoc Pennington", - "Ettore Perazzoli", - "Petta Pietikainen", - "Herbert V. Riedel", - "Ariel Rios", - "JP Rosevear", - "Cody Russell", - "Changwoo Ryu", - "Pablo Saratxaga", - "Carsten Schaar", - "Joe Shaw", - "Timo Sirainen", - "Craig Small", - "Maciej Stachowiak", - "Jeffrey Stedfast", - "Jakub Steiner", - "Russell Steinthal", - "Vadim Strizhevsky", - "Yuri Syrota", - "Jason Tackaberry", - "Peter Teichman", - "Chris Toshok", - "Tom Tromey", - "Jon Trowbridge", - "Andrew T. Veliath", - "Gustavo Maciel Dias Vieira", - "Luis Villa", - "Stanislav Visnovsky", - "Aaron Weber", - "Dave West", - "Peter Williams", - "Matt Wilson", - "Matthew Wilson", - "Dan Winship", - "Jeremy Wise", - "Leon Zhang", - "Philip Zhao", - "Jukka Zitting", - "Michael Zucchi" -}; -#define NUM_TEXT_LINES (sizeof (text) / sizeof (*text)) - -struct _EShellAboutBoxPrivate { - GdkPixmap *pixmap; - GdkPixmap *text_background_pixmap; - GdkGC *clipped_gc; - int text_y_offset; - int timeout_id; - const gchar **permuted_text; -}; - - -#define ANIMATION_DELAY 40 - -#define WIDTH 400 -#define HEIGHT 200 - -#define TEXT_Y_OFFSET 57 -#define TEXT_X_OFFSET 60 -#define TEXT_WIDTH (WIDTH - 2 * TEXT_X_OFFSET) -#define TEXT_HEIGHT 90 - -#define IMAGE_PATH EVOLUTION_IMAGES "/about-box.png" - - - -static void -permute_names (EShellAboutBox *about_box) -{ - EShellAboutBoxPrivate *priv = about_box->priv; - gint i, j; - - srandom (time (NULL)); - - for (i = 6; i < NUM_TEXT_LINES-1; ++i) { - const gchar *tmp; - j = i + random () % (NUM_TEXT_LINES - i); - if (i != j) { - tmp = priv->permuted_text[i]; - priv->permuted_text[i] = priv->permuted_text[j]; - priv->permuted_text[j] = tmp; - } - } -} - -/* The callback. */ - -static int -timeout_callback (void *data) -{ - EShellAboutBox *about_box; - EShellAboutBoxPrivate *priv; - GdkRectangle redraw_rect; - GtkWidget *widget; - PangoContext *context; - PangoFontMetrics *metrics; - PangoLayout *layout; - int line_height; - int first_line; - int y; - int i; - - about_box = E_SHELL_ABOUT_BOX (data); - priv = about_box->priv; - - widget = GTK_WIDGET (about_box); - - context = gtk_widget_get_pango_context (widget); - metrics = pango_context_get_metrics (context, gtk_widget_get_style (GTK_WIDGET (about_box))->font_desc, - pango_context_get_language (context)); - line_height = PANGO_PIXELS (pango_font_metrics_get_ascent (metrics) - + pango_font_metrics_get_descent (metrics)); - pango_font_metrics_unref (metrics); - - if (priv->text_y_offset < TEXT_HEIGHT) { - y = TEXT_Y_OFFSET + (TEXT_HEIGHT - priv->text_y_offset); - first_line = 0; - } else { - y = TEXT_Y_OFFSET - ((priv->text_y_offset - TEXT_HEIGHT) % line_height); - first_line = (priv->text_y_offset - TEXT_HEIGHT) / line_height; - } - - gdk_draw_pixmap (priv->pixmap, priv->clipped_gc, priv->text_background_pixmap, - 0, 0, - TEXT_X_OFFSET, TEXT_Y_OFFSET, TEXT_WIDTH, TEXT_HEIGHT); - - layout = pango_layout_new (context); - - for (i = 0; i < TEXT_HEIGHT / line_height + 3; i ++) { - const char *line; - int width; - int x; - - if (first_line + i >= NUM_TEXT_LINES) - break; - - if (*priv->permuted_text[first_line + i] == '\0') - line = ""; - else - line = _(priv->permuted_text[first_line + i]); - - pango_layout_set_text (layout, line, -1); - pango_layout_get_pixel_size (layout, &width, NULL); - x = TEXT_X_OFFSET + (TEXT_WIDTH - width) / 2; - gdk_draw_layout (priv->pixmap, priv->clipped_gc, x, y, layout); - - y += line_height; - } - - redraw_rect.x = TEXT_X_OFFSET; - redraw_rect.y = TEXT_Y_OFFSET; - redraw_rect.width = TEXT_WIDTH; - redraw_rect.height = TEXT_HEIGHT; - gdk_window_invalidate_rect (widget->window, &redraw_rect, FALSE); - gdk_window_process_updates (widget->window, FALSE); - - priv->text_y_offset ++; - if (priv->text_y_offset > line_height * NUM_TEXT_LINES + TEXT_HEIGHT) { - priv->text_y_offset = 0; - permute_names (about_box); - } - - g_object_unref (layout); - - return TRUE; -} - - -/* GObject methods. */ - -static void -impl_dispose (GObject *object) -{ - EShellAboutBox *about_box; - EShellAboutBoxPrivate *priv; - - about_box = E_SHELL_ABOUT_BOX (object); - priv = about_box->priv; - - if (priv->pixmap != NULL) { - gdk_pixmap_unref (priv->pixmap); - priv->pixmap = NULL; - } - - if (priv->text_background_pixmap != NULL) { - gdk_pixmap_unref (priv->text_background_pixmap); - priv->text_background_pixmap = NULL; - } - - if (priv->clipped_gc != NULL) { - gdk_gc_unref (priv->clipped_gc); - priv->clipped_gc = NULL; - } - - (* G_OBJECT_CLASS (parent_class)->dispose) (object); -} - -static void -impl_finalize (GObject *object) -{ - EShellAboutBox *about_box; - EShellAboutBoxPrivate *priv; - - about_box = E_SHELL_ABOUT_BOX (object); - priv = about_box->priv; - - if (priv->timeout_id != -1) - g_source_remove (priv->timeout_id); - - g_free (priv->permuted_text); - - g_free (priv); - - (* G_OBJECT_CLASS (parent_class)->finalize) (object); -} - - -/* GtkWidget methods. */ - -static void -impl_size_request (GtkWidget *widget, - GtkRequisition *requisition) -{ - requisition->width = WIDTH; - requisition->height = HEIGHT; -} - -static void -impl_realize (GtkWidget *widget) -{ - EShellAboutBox *about_box; - EShellAboutBoxPrivate *priv; - GdkPixbuf *background_pixbuf; - GdkRectangle clip_rectangle; - - (* GTK_WIDGET_CLASS (parent_class)->realize) (widget); - - about_box = E_SHELL_ABOUT_BOX (widget); - priv = about_box->priv; - - background_pixbuf = gdk_pixbuf_new_from_file (IMAGE_PATH, NULL); - g_assert (background_pixbuf != NULL); - g_assert (gdk_pixbuf_get_width (background_pixbuf) == WIDTH); - g_assert (gdk_pixbuf_get_height (background_pixbuf) == HEIGHT); - - g_assert (priv->pixmap == NULL); - priv->pixmap = gdk_pixmap_new (widget->window, WIDTH, HEIGHT, -1); - - gdk_pixbuf_render_to_drawable (background_pixbuf, priv->pixmap, widget->style->black_gc, - 0, 0, 0, 0, WIDTH, HEIGHT, - GDK_RGB_DITHER_MAX, 0, 0); - - g_assert (priv->clipped_gc == NULL); - priv->clipped_gc = gdk_gc_new (widget->window); - gdk_gc_copy (priv->clipped_gc, widget->style->black_gc); - - clip_rectangle.x = TEXT_X_OFFSET; - clip_rectangle.y = TEXT_Y_OFFSET; - clip_rectangle.width = TEXT_WIDTH; - clip_rectangle.height = TEXT_HEIGHT; - gdk_gc_set_clip_rectangle (priv->clipped_gc, & clip_rectangle); - - priv->text_background_pixmap = gdk_pixmap_new (widget->window, clip_rectangle.width, clip_rectangle.height, -1); - gdk_pixbuf_render_to_drawable (background_pixbuf, priv->text_background_pixmap, widget->style->black_gc, - TEXT_X_OFFSET, TEXT_Y_OFFSET, - 0, 0, TEXT_WIDTH, TEXT_HEIGHT, - GDK_RGB_DITHER_MAX, 0, 0); - - g_assert (priv->timeout_id == -1); - priv->timeout_id = g_timeout_add (ANIMATION_DELAY, timeout_callback, about_box); - - g_object_unref (background_pixbuf); -} - -static void -impl_unrealize (GtkWidget *widget) -{ - EShellAboutBox *about_box; - EShellAboutBoxPrivate *priv; - - about_box = E_SHELL_ABOUT_BOX (widget); - priv = about_box->priv; - - (* GTK_WIDGET_CLASS (parent_class)->unrealize) (widget); - - g_assert (priv->clipped_gc != NULL); - gdk_gc_unref (priv->clipped_gc); - priv->clipped_gc = NULL; - - g_assert (priv->pixmap != NULL); - gdk_pixmap_unref (priv->pixmap); - priv->pixmap = NULL; - - if (priv->timeout_id != -1) { - g_source_remove (priv->timeout_id); - priv->timeout_id = -1; - } -} - -static int -impl_expose_event (GtkWidget *widget, - GdkEventExpose *event) -{ - EShellAboutBoxPrivate *priv; - - if (! GTK_WIDGET_DRAWABLE (widget)) - return FALSE; - - priv = E_SHELL_ABOUT_BOX (widget)->priv; - - gdk_draw_pixmap (widget->window, widget->style->black_gc, - priv->pixmap, - event->area.x, event->area.y, - event->area.x, event->area.y, - event->area.width, event->area.height); - - return TRUE; -} - - -static void -class_init (GObjectClass *object_class) -{ - GtkWidgetClass *widget_class; - - parent_class = g_type_class_ref(PARENT_TYPE); - - object_class->dispose = impl_dispose; - object_class->finalize = impl_finalize; - - widget_class = GTK_WIDGET_CLASS (object_class); - widget_class->size_request = impl_size_request; - widget_class->realize = impl_realize; - widget_class->unrealize = impl_unrealize; - widget_class->expose_event = impl_expose_event; -} - -static void -init (EShellAboutBox *shell_about_box) -{ - EShellAboutBoxPrivate *priv; - gint i; - - priv = g_new (EShellAboutBoxPrivate, 1); - priv->pixmap = NULL; - priv->text_background_pixmap = NULL; - priv->clipped_gc = NULL; - priv->timeout_id = -1; - priv->text_y_offset = 0; - - priv->permuted_text = g_new (const gchar *, NUM_TEXT_LINES); - for (i = 0; i < NUM_TEXT_LINES; ++i) { - priv->permuted_text[i] = text[i]; - } - - shell_about_box->priv = priv; - - permute_names (shell_about_box); -} - - -GtkWidget * -e_shell_about_box_new (void) -{ - EShellAboutBox *about_box; - - about_box = g_object_new (e_shell_about_box_get_type (), NULL); - - return GTK_WIDGET (about_box); -} - - -E_MAKE_TYPE (e_shell_about_box, "EShellAboutBox", EShellAboutBox, class_init, init, GTK_TYPE_EVENT_BOX) diff --git a/shell/e-shell-about-box.h b/shell/e-shell-about-box.h deleted file mode 100644 index 301120c190..0000000000 --- a/shell/e-shell-about-box.h +++ /dev/null @@ -1,62 +0,0 @@ -/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */ -/* e-shell-about-box.h - * - * Copyright (C) 2001 Ximian, Inc. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of version 2 of the GNU General Public - * License as published by the Free Software Foundation. - * - * This program 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. - * - * You should have received a copy of the GNU General Public - * License along with this program; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - * - * Author: Ettore Perazzoli - */ - -#ifndef _E_SHELL_ABOUT_BOX_H_ -#define _E_SHELL_ABOUT_BOX_H_ - -#include - -#ifdef __cplusplus -extern "C" { -#pragma } -#endif /* __cplusplus */ - -#define E_TYPE_SHELL_ABOUT_BOX (e_shell_about_box_get_type ()) -#define E_SHELL_ABOUT_BOX(obj) (GTK_CHECK_CAST ((obj), E_TYPE_SHELL_ABOUT_BOX, EShellAboutBox)) -#define E_SHELL_ABOUT_BOX_CLASS(klass) (GTK_CHECK_CLASS_CAST ((klass), E_TYPE_SHELL_ABOUT_BOX, EShellAboutBoxClass)) -#define E_IS_SHELL_ABOUT_BOX(obj) (GTK_CHECK_TYPE ((obj), E_TYPE_SHELL_ABOUT_BOX)) -#define E_IS_SHELL_ABOUT_BOX_CLASS(klass) (GTK_CHECK_CLASS_TYPE ((obj), E_TYPE_SHELL_ABOUT_BOX)) - - -typedef struct _EShellAboutBox EShellAboutBox; -typedef struct _EShellAboutBoxPrivate EShellAboutBoxPrivate; -typedef struct _EShellAboutBoxClass EShellAboutBoxClass; - -struct _EShellAboutBox { - GtkEventBox parent; - - EShellAboutBoxPrivate *priv; -}; - -struct _EShellAboutBoxClass { - GtkEventBoxClass parent_class; -}; - - -GtkType e_shell_about_box_get_type (void); -GtkWidget *e_shell_about_box_new (void); - -#ifdef __cplusplus -} -#endif /* __cplusplus */ - -#endif /* _E_SHELL_ABOUT_BOX_H_ */ diff --git a/shell/e-shell-window-commands.c b/shell/e-shell-window-commands.c index a581314f8f..f39ae5f7d8 100644 --- a/shell/e-shell-window-commands.c +++ b/shell/e-shell-window-commands.c @@ -36,6 +36,8 @@ #include "e-util/e-dialog-utils.h" #include "e-util/e-passwords.h" +#include + #include #include #include @@ -129,15 +131,204 @@ command_submit_bug (BonoboUIComponent *uih, e_notice (NULL, GTK_MESSAGE_ERROR, _("Bug buddy could not be run.")); } -static int -about_box_event_callback (GtkWidget *widget, - GdkEvent *event, - GtkWidget **widget_pointer) +static GtkWidget * +about_box_new (void) { - gtk_widget_destroy (GTK_WIDGET (*widget_pointer)); - *widget_pointer = NULL; + GtkWidget *about_box = NULL; + GdkPixbuf *pixbuf = NULL; + char copyright[1024]; + char *filename = NULL; + + /* must be in utf8, the weird breaking of escaped strings + is so the hex escape strings dont swallow too many chars */ + static const char *authors[] = { + "Darin Adler", + "Arturo Espinosa Aldama", + "H\xC3\xA9" "ctor Garc\xC3\xAD" "a \xC3\x81" "lvarez", + "Jes\xC3\xBA" "s Bravo \xC3\x81" "lvarez", + "Seth Alves", + "Marius Andreiana", + "Sean Atkinson", + "Szabolcs BAN", + "Timur Bakeyev", + "Martin Baulig", + "Frank Belew", + "Dan Berger", + "Jacob Berkman", + "Matt Bissiri", + "Jonathan Blandford", + "Richard Boulton", + "Robert Brady", + "Kevin Breit", + "Martha Burke", + "Dave Camp", + "Ian Campbell", + "Anders Carlsson", + "Damon Chaplin", + "Abel Cheung", + "Zbigniew Chyla", + "Clifford R. Conover", + "Sam Creasey", + "Frederic Crozat", + "Wayne Davis", + "Rodney Dawes", + "Jos Dehaes", + "Fatih Demir", + "Arik Devens", + "Anna Marie Dirks", + "Bob Doan", + "Radek Doul\xC3\xADk", + "Edd Dumbill", + "Larry Ewing", + "Gilbert Fang", + "Francisco Javier F. Serrador", + "Nuno Ferreira", + "Valek Filippov", + "Nat Friedman", + "Sean Gao", + "Jeff Garzik", + "Nike Gerdts", + "Grzegorz Goawski", + "Jody Goldberg", + "Pablo Gonzalo del Campo", + "Mark Gordon", + "Kenny Graunke", + "Alex Graveley", + "Bertrand Guiheneuf", + "Jean-Noel Guiheneuf", + "Mikael Hallendal", + "Raja R Harinath", + "Heath Harrelson", + "Taylor Hayward", + "Jon K Hellan", + "Martin Hicks", + "Iain Holmes", + "Max Horn", + "Greg Hudson", + "Richard Hult", + "Andreas Hyden", + "Miguel de Icaza", + "Hans Petter Jansson", + "Jack Jia", + "Wang Jian", + "Sanshao Jiang", + "Benjamin Kahn", + "Yanko Kaneti", + "Lauris Kaplinski", + "Jeremy Katz", + "Mike Kestner", + "Christian Kreibich", + "Nicholas J Kreucher", + "Ronald Kuetemeier", + "Tuomas Kuosmanen", + "Mathieu Lacage", + "Christopher J. Lahey", + "Eneko Lacunza", + "Miles Lane", + "Jason Leach", + "Elliot Lee", + "Ji Lee", + "Timothy Lee", + "T\xC3\xB5" "ivo Leedj\xC3\xA4" "rv", + "Richard Li", + "Matthew Loper", + "Duarte Loreto", + "Harry Lu", + "Michael MacDonald", + "Duncan Mak", + "Kjartan Maraas", + "Garardo Marin", + "Matt Martin", + "Carlos Perell\xC3\xB3" " Mar\xC3\xAD" "n", + "Dietmar Maurer", + "William Jon McCann", + "Mike McEwan", + "Alastair McKinstry", + "Michael Meeks", + "Federico Mena", + "Christophe Merlet", + "Michael M. Morrison", + "Rodrigo Moya", + "Steve Murphy", + "Yukihiro Nakai", + "Martin Norb\xC3\xA4" "ck", + "Tomas Ogren", + "Ismael Olea", + "Eskil Heyn Olsen", + "Sergey Panov", + "Gediminas Paulauskas", + "Jesse Pavel", + "Havoc Pennington", + "Ettore Perazzoli", + "Petta Pietikainen", + "Herbert V. Riedel", + "Ariel Rios", + "JP Rosevear", + "Cody Russell", + "Changwoo Ryu", + "Pablo Saratxaga", + "Carsten Schaar", + "Joe Shaw", + "Timo Sirainen", + "Craig Small", + "Maciej Stachowiak", + "Jeffrey Stedfast", + "Jakub Steiner", + "Russell Steinthal", + "Vadim Strizhevsky", + "Yuri Syrota", + "Jason Tackaberry", + "Peter Teichman", + "Chris Toshok", + "Tom Tromey", + "Jon Trowbridge", + "Andrew T. Veliath", + "Gustavo Maciel Dias Vieira", + "Luis Villa", + "Stanislav Visnovsky", + "Aaron Weber", + "Dave West", + "Peter Williams", + "Matt Wilson", + "Matthew Wilson", + "Dan Winship", + "Jeremy Wise", + "Leon Zhang", + "Philip Zhao", + "Jukka Zitting", + "Michael Zucchi", + NULL + }; + + static const char *documentors[] = { + "Aaron Weber", + "David Trowbridge", + NULL }; + + static const char *translator_credits = "The GNOME Translation Project"; + - return TRUE; + g_sprintf (copyright, "Copyright \xC2\xA9 1999 - 2004 Novell, Inc."); + + filename = g_build_filename (EVOLUTION_DATADIR, "pixmaps", + "evolution-1.5.png", NULL); + if (filename != NULL) { + pixbuf = gdk_pixbuf_new_from_file (filename, NULL); + g_free (filename); + } + + about_box = gnome_about_new ("Evolution", + VERSION, + copyright, + _("Groupware Suite"), + authors, documentors, + translator_credits, + pixbuf); + + if (pixbuf != NULL) + g_object_unref (pixbuf); + + return GTK_WIDGET (about_box); } static void @@ -146,30 +337,19 @@ command_about_box (BonoboUIComponent *uih, const char *path) { static GtkWidget *about_box_window = NULL; - GtkWidget *about_box; if (about_box_window != NULL) { gdk_window_raise (about_box_window->window); return; } - about_box = e_shell_about_box_new (); - gtk_widget_show (about_box); - - about_box_window = gtk_window_new (GTK_WINDOW_TOPLEVEL); - gtk_window_set_type_hint (GTK_WINDOW (about_box_window), GDK_WINDOW_TYPE_HINT_DIALOG); + about_box_window = about_box_new (); - gtk_window_set_resizable (GTK_WINDOW (about_box_window), FALSE); - g_signal_connect (about_box_window, "key_press_event", - G_CALLBACK (about_box_event_callback), &about_box_window); - g_signal_connect (about_box_window, "button_press_event", - G_CALLBACK (about_box_event_callback), &about_box_window); - g_signal_connect (about_box_window, "delete_event", - G_CALLBACK (about_box_event_callback), &about_box_window); + g_signal_connect (G_OBJECT (about_box_window), "destroy", + G_CALLBACK (gtk_widget_destroyed), &about_box_window); gtk_window_set_transient_for (GTK_WINDOW (about_box_window), GTK_WINDOW (window)); - gtk_window_set_title (GTK_WINDOW (about_box_window), _("About Evolution")); - gtk_container_add (GTK_CONTAINER (about_box_window), about_box); + gtk_widget_show (about_box_window); } -- cgit