aboutsummaryrefslogtreecommitdiffstats
path: root/shell
diff options
context:
space:
mode:
Diffstat (limited to 'shell')
-rw-r--r--shell/ChangeLog7
-rw-r--r--shell/Makefile.am2
-rw-r--r--shell/e-shell-about-box.c534
-rw-r--r--shell/e-shell-about-box.h62
-rw-r--r--shell/e-shell-window-commands.c224
5 files changed, 209 insertions, 620 deletions
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 <mccann@jhu.edu>
+
+ * 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 <dobey@novell.com>
* 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 <ettore@ximian.com>
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include "e-shell-about-box.h"
-
-#include <gal/util/e-util.h>
-
-#include <gtk/gtkeventbox.h>
-#include <gdk-pixbuf/gdk-pixbuf.h>
-
-
-#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 <ettore@ximian.com>
- */
-
-#ifndef _E_SHELL_ABOUT_BOX_H_
-#define _E_SHELL_ABOUT_BOX_H_
-
-#include <gnome.h>
-
-#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 <glib/gprintf.h>
+
#include <libgnome/gnome-exec.h>
#include <libgnome/gnome-url.h>
#include <libgnome/gnome-i18n.h>
@@ -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);
}