[evolution-patches] Bug 127812: Make Evolution use the gnome-icon-theme (all modules)



This patch is a proposed fix for bug 127812.  It expands the role of
e-icon-factory from being a helper class in shell to being the
authoritative source for all icons inside Evolution.

It uses GnomeIconTheme to pull requested icons.  It affects all modules
that use icons (most of them).  This patch might change some of the
icons visibly -- in particular with the Tools->Settings... dialog.  If
an icon cannot be found, a blank placeholder icon is used instead, so
even though several of the icons are not present in gnome-icon-theme
(see bug 129294), Evolution is still usable.

The only unconverted section of Evolution is conduits.  To do so
requires a change in gnome-pilot, and I've filed a bug to deal with that
(bug 129958).  I feel that this is not a big deal though, and maybe
shouldn't hold up the committing of this patch.

Besides the attached diff file, the attached source code
(e-icon-factory.{c,h}) should be placed in the e-util directory and
e-icon-factory.{c,h} should be deleted from the shell directory.  In
addition, almost all the icons in the art module can be deleted.  Take a
look at the diff for changes to art/Makefile.am for details.

Please test it out and tell me what you think.  This is my first patch
to Evolution, so I am eager for tips.
? art-names.txt
? diff.diff
? errors.txt
? addressbook/backend/Makefile
? addressbook/backend/Makefile.in
? addressbook/backend/ebook/Makefile
? addressbook/backend/ebook/Makefile.in
? addressbook/backend/idl/Makefile
? addressbook/backend/idl/Makefile.in
? addressbook/backend/pas/Makefile
? addressbook/backend/pas/Makefile.in
? addressbook/gui/component/apps_evolution_addressbook-1.5.schemas
? calendar/cal-client/Makefile
? calendar/cal-client/Makefile.in
? calendar/cal-util/Makefile
? calendar/cal-util/Makefile.in
? calendar/cal-util/cal-util-marshal.c
? calendar/cal-util/cal-util-marshal.h
? calendar/common/Makefile
? calendar/common/Makefile.in
? calendar/gui/apps_evolution_calendar-1.5.schemas
? calendar/pcs/Makefile
? calendar/pcs/Makefile.in
? default_user/local/Junk/Makefile
? default_user/local/Junk/Makefile.in
? e-util/e-icon-factory.c
? e-util/e-icon-factory.h
? e-util/ename/Makefile
? e-util/ename/Makefile.in
? libical/Makefile
? libical/Makefile.in
? libical/aclocal.m4
? libical/autom4te.cache
? libical/config.h
? libical/config.h.in
? libical/config.log
? libical/config.status
? libical/configure
? libical/libtool
? libical/stamp-h
? libical/stamp-h.in
? libical/design-data/Makefile
? libical/design-data/Makefile.in
? libical/doc/Makefile
? libical/doc/Makefile.in
? libical/scripts/Makefile
? libical/scripts/Makefile.in
? libical/src/Makefile
? libical/src/Makefile.in
? libical/src/libical/Makefile
? libical/src/libical/Makefile.in
? libical/src/libical/icalversion.h
? libical/src/libicalvcal/Makefile
? libical/src/libicalvcal/Makefile.in
? libical/test-data/Makefile
? libical/test-data/Makefile.in
? libical/zoneinfo/Makefile
? libical/zoneinfo/Makefile.in
? libversit/Makefile
? libversit/Makefile.in
? libwombat/Makefile
? libwombat/Makefile.in
? mail/evolution-mail-1.5.schemas
? my-evolution/Makefile
? my-evolution/Makefile.in
? shell/apps_evolution_shell-1.5.schemas
? wombat/Makefile
? wombat/Makefile.in
Index: ChangeLog
===================================================================
RCS file: /cvs/gnome/evolution/ChangeLog,v
retrieving revision 1.1274
diff -u -r1.1274 ChangeLog
--- ChangeLog	15 Dec 2003 20:14:10 -0000	1.1274
+++ ChangeLog	25 Dec 2003 00:04:56 -0000
@@ -1,3 +1,8 @@
+2003-12-24  Michael Terry <mterry fastmail fm>
+
+	* data/evolution.desktop.in.in: Change icon name to be themeable.
+	Part of bug 127812.
+
 2003-12-15  Chris Toshok  <toshok ximian com>
 
 	* Makefile.am (ACLOCAL_AMFLAGS): remove.
Index: addressbook/ChangeLog
===================================================================
RCS file: /cvs/gnome/evolution/addressbook/ChangeLog,v
retrieving revision 1.1510
diff -u -r1.1510 ChangeLog
--- addressbook/ChangeLog	20 Dec 2003 01:05:11 -0000	1.1510
+++ addressbook/ChangeLog	25 Dec 2003 00:05:05 -0000
@@ -1,3 +1,31 @@
+2003-12-24  Michael Terry <mterry fastmail fm>
+
+	* gui/component/Makefile.am, gui/component/select-names/Makefile.am,
+	gui/contact-editor/Makefile.am, gui/contact-list-editor/Makefile.am,
+	gui/widgets/Makefile.am: Add e-util to include paths.  Part of bug
+	127812.
+
+	* gui/component/GNOME_Evolution_Addressbook.server.in.in,
+	gui/component/addressbook-component.c (impl__get_userCreatableItems),
+	gui/component/addressbook.c (set_status_message),
+	gui/component/ldap-config.glade,
+	gui/component/select-names/e-select-names-popup.c 
+	(populate_popup_contact),
+	gui/contact-editor/contact-editor.glade,
+	gui/contact-editor/e-contact-editor-address.c
+	(e_contact_editor_address_init),
+	gui/contact-editor/e-contact-editor-fullname.c
+	(e_contact_editor_fullname_init),
+	gui/contact-editor/e-contact-editor.c (e_contact_editor_init),
+	gui/contact-list-editor/contact-list-editor.glade,
+	gui/contact-list-editor/e-contact-list-editor.c
+	(e_contact_list_editor_init),
+	gui/merging/eab-contact-commit-duplicate-detected.glade,
+	gui/merging/eab-contact-duplicate-detected.glade,
+	gui/widgets/e-minicard.c (e_minicard_init, e_minicard_finalize): Use
+	gnome-icon-theme names for icons and e-icon-factory to look them up.
+	Part of bug 127812.
+
 2003-12-19  Hans Petter Jansson  <hpj ximian com>
 
 	* gui/component/addressbook-component.c (find_first_source): Impl.
Index: addressbook/gui/component/GNOME_Evolution_Addressbook.server.in.in
===================================================================
RCS file: /cvs/gnome/evolution/addressbook/gui/component/GNOME_Evolution_Addressbook.server.in.in,v
retrieving revision 1.12
diff -u -r1.12 GNOME_Evolution_Addressbook.server.in.in
--- addressbook/gui/component/GNOME_Evolution_Addressbook.server.in.in	6 Dec 2003 23:19:00 -0000	1.12
+++ addressbook/gui/component/GNOME_Evolution_Addressbook.server.in.in	25 Dec 2003 00:05:06 -0000
@@ -61,7 +61,7 @@
 
         <oaf_attribute name="evolution:button_label" type="string" _value="Contacts"/>
         <oaf_attribute name="evolution:button_sort_order" type="string" value="-9"/>
-        <oaf_attribute name="evolution:button_icon" type="string" value="evolution-contacts.png"/>
+        <oaf_attribute name="evolution:button_icon" type="string" value="stock_addressbook"/>
 
 </oaf_server>
 
@@ -108,7 +108,7 @@
                        _value="Manager your S/Mime certificates here"/>
                                                                                           
         <oaf_attribute name="evolution2:config_item:icon_name" type="string"
-                       value="pgp-signature-ok.png"/>
+                       value="stock_lock-ok"/>
                                                                                           
         <oaf_attribute name="evolution2:config_item:priority" type="string" value="-6"/>
                                                                                           
@@ -132,7 +132,7 @@
 		_value="Configure autocomple here"/>
 
 	<oaf_attribute name="evolution2:config_item:icon_name" type="string"
-		value="folder-settings.png"/>
+		value="stock_contact"/>
 
 	<oaf_attribute name="evolution2:config_item:priority" type="string" value="-9"/>
 
Index: addressbook/gui/component/Makefile.am
===================================================================
RCS file: /cvs/gnome/evolution/addressbook/gui/component/Makefile.am,v
retrieving revision 1.100
diff -u -r1.100 Makefile.am
--- addressbook/gui/component/Makefile.am	6 Dec 2003 23:19:00 -0000	1.100
+++ addressbook/gui/component/Makefile.am	25 Dec 2003 00:05:06 -0000
@@ -4,6 +4,7 @@
 	-DG_LOG_DOMAIN=\"evolution-addressbook\"		\
 	-I$(top_srcdir)						\
 	-I$(top_builddir)					\
+	-I$(top_srcdir)/e-util					\
 	-I$(top_srcdir)/shell					\
 	-I$(top_builddir)/shell					\
 	-I$(top_srcdir)/widgets/misc				\
Index: addressbook/gui/component/addressbook-component.c
===================================================================
RCS file: /cvs/gnome/evolution/addressbook/gui/component/addressbook-component.c,v
retrieving revision 1.101
diff -u -r1.101 addressbook-component.c
--- addressbook/gui/component/addressbook-component.c	20 Dec 2003 01:05:14 -0000	1.101
+++ addressbook/gui/component/addressbook-component.c	25 Dec 2003 00:05:06 -0000
@@ -286,14 +286,14 @@
 	list->_buffer[0].menuDescription = _("_Contact");
 	list->_buffer[0].tooltip = _("Create a new contact");
 	list->_buffer[0].menuShortcut = 'c';
-	list->_buffer[0].iconName = "evolution-contacts-mini.png";
+	list->_buffer[0].iconName = "stock_contact";
 
 	list->_buffer[1].id = "contact_list";
 	list->_buffer[1].description = _("New Contact List");
 	list->_buffer[1].menuDescription = _("Contact _List");
 	list->_buffer[1].tooltip = _("Create a new contact list");
 	list->_buffer[1].menuShortcut = 'l';
-	list->_buffer[1].iconName = "contact-list-16.png";
+	list->_buffer[1].iconName = "stock_contact-list";
 
 	return list;
 }
Index: addressbook/gui/component/addressbook.c
===================================================================
RCS file: /cvs/gnome/evolution/addressbook/gui/component/addressbook.c,v
retrieving revision 1.221
diff -u -r1.221 addressbook.c
--- addressbook/gui/component/addressbook.c	17 Dec 2003 20:30:44 -0000	1.221
+++ addressbook/gui/component/addressbook.c	25 Dec 2003 00:05:08 -0000
@@ -39,7 +39,7 @@
 #include <gal/util/e-util.h>
 
 #include "e-util/e-passwords.h"
-
+#include "e-icon-factory.h"
 #include "evolution-shell-component-utils.h"
 #include "e-activity-handler.h"
 #include "e-contact-editor.h"
@@ -55,7 +55,7 @@
 #include <libebook/e-book-async.h>
 
 /* This is used for the addressbook status bar */
-#define EVOLUTION_CONTACTS_PROGRESS_IMAGE "evolution-contacts-mini.png"
+#define EVOLUTION_CONTACTS_PROGRESS_IMAGE "stock_contact"
 static GdkPixbuf *progress_icon = NULL;
 
 #define d(x)
@@ -248,7 +248,7 @@
 		char *clientid = g_strdup_printf ("%p", view);
 
 		if (progress_icon == NULL)
-			progress_icon = gdk_pixbuf_new_from_file (EVOLUTION_IMAGESDIR "/" EVOLUTION_CONTACTS_PROGRESS_IMAGE, NULL);
+			progress_icon = e_icon_factory_get_icon (EVOLUTION_CONTACTS_PROGRESS_IMAGE, 16);
 
 		view->activity_id = e_activity_handler_operation_started (activity_handler, clientid,
 									  progress_icon, message, TRUE);
@@ -416,19 +416,19 @@
 };
 
 static EPixmap pixmaps [] = {
-	E_PIXMAP ("/menu/File/FileOps/ContactsSaveAsVCard", "save-as-16.png"),
-	E_PIXMAP ("/menu/File/Print/ContactsPrint", "print.xpm"),
-	E_PIXMAP ("/menu/File/Print/ContactsPrintPreview", "print-preview.xpm"),
-
-	E_PIXMAP ("/menu/EditPlaceholder/Edit/ContactsCut", "16_cut.png"),
-	E_PIXMAP ("/menu/EditPlaceholder/Edit/ContactsCopy", "16_copy.png"),
-	E_PIXMAP ("/menu/EditPlaceholder/Edit/ContactsPaste", "16_paste.png"),
-	E_PIXMAP ("/menu/EditPlaceholder/Edit/ContactDelete", "evolution-trash-mini.png"),
+	E_PIXMAP ("/menu/File/FileOps/ContactsSaveAsVCard", "stock_save-as", 16),
+	E_PIXMAP ("/menu/File/Print/ContactsPrint", "stock_print", 16),
+	E_PIXMAP ("/menu/File/Print/ContactsPrintPreview", "stock_print-preview", 16),
+
+	E_PIXMAP ("/menu/EditPlaceholder/Edit/ContactsCut", "stock_cut", 16),
+	E_PIXMAP ("/menu/EditPlaceholder/Edit/ContactsCopy", "stock_copy", 16),
+	E_PIXMAP ("/menu/EditPlaceholder/Edit/ContactsPaste", "stock_paste", 16),
+	E_PIXMAP ("/menu/EditPlaceholder/Edit/ContactDelete", "stock_delete", 16),
 
-	E_PIXMAP ("/menu/Tools/ComponentPlaceholder/ToolSearch", "search-16.png"),
+	E_PIXMAP ("/menu/Tools/ComponentPlaceholder/ToolSearch", "stock_search", 16),
 
-	E_PIXMAP ("/Toolbar/ContactsPrint", "buttons/print.png"),
-	E_PIXMAP ("/Toolbar/ContactDelete", "buttons/delete-message.png"),
+	E_PIXMAP ("/Toolbar/ContactsPrint", "stock_print", 24),
+	E_PIXMAP ("/Toolbar/ContactDelete", "stock_delete", 24),
 
 	E_PIXMAP_END
 };
Index: addressbook/gui/component/ldap-config.glade
===================================================================
RCS file: /cvs/gnome/evolution/addressbook/gui/component/ldap-config.glade,v
retrieving revision 1.17
diff -u -r1.17 ldap-config.glade
--- addressbook/gui/component/ldap-config.glade	1 Dec 2003 22:00:29 -0000	1.17
+++ addressbook/gui/component/ldap-config.glade	25 Dec 2003 00:05:15 -0000
@@ -935,7 +935,7 @@
 				<widget class="Custom" id="custom1">
 				  <property name="visible">True</property>
 				  <property name="creation_function">e_create_image_widget</property>
-				  <property name="string1">stock-edit-24.png</property>
+				  <property name="string1">stock_edit</property>
 				  <property name="int1">0</property>
 				  <property name="int2">0</property>
 				  <property name="last_modification_time">Fri, 25 Apr 2003 20:27:48 GMT</property>
Index: addressbook/gui/component/select-names/Makefile.am
===================================================================
RCS file: /cvs/gnome/evolution/addressbook/gui/component/select-names/Makefile.am,v
retrieving revision 1.51
diff -u -r1.51 Makefile.am
--- addressbook/gui/component/select-names/Makefile.am	6 Dec 2003 18:05:26 -0000	1.51
+++ addressbook/gui/component/select-names/Makefile.am	25 Dec 2003 00:05:15 -0000
@@ -27,6 +27,7 @@
 	-I$(top_builddir)				\
 	-I$(top_srcdir)/shell				\
 	-I$(top_builddir)/shell				\
+	-I$(top_srcdir)/e-util				\
 	-I$(top_srcdir)/widgets/e-text			\
 	-I$(top_srcdir)/widgets/e-table			\
 	-I$(top_srcdir)/addressbook/gui/minicard	\
Index: addressbook/gui/component/select-names/e-select-names-popup.c
===================================================================
RCS file: /cvs/gnome/evolution/addressbook/gui/component/select-names/e-select-names-popup.c,v
retrieving revision 1.29
diff -u -r1.29 e-select-names-popup.c
--- addressbook/gui/component/select-names/e-select-names-popup.c	21 Oct 2003 18:48:39 -0000	1.29
+++ addressbook/gui/component/select-names/e-select-names-popup.c	25 Dec 2003 00:05:16 -0000
@@ -45,9 +45,10 @@
 #include <addressbook/gui/contact-editor/e-contact-quick-add.h>
 #include "eab-gui-util.h"
 #include "e-select-names-popup.h"
+#include "e-icon-factory.h"
 
-#define LIST_ICON_FILENAME "contact-list-16.png"
-#define CONTACT_ICON_FILENAME "evolution-contacts-mini.png"
+#define LIST_ICON_NAME "stock_contact-list"
+#define CONTACT_ICON_NAME "stock_contact"
 
 typedef struct _PopupInfo PopupInfo;
 struct _PopupInfo {
@@ -190,6 +191,7 @@
 static void
 populate_popup_contact (GtkWidget *pop, gboolean list, PopupInfo *info)
 {
+	GdkPixbuf *pixbuf;
 	GtkWidget *image;
 	EContact *contact;
 	GtkWidget *menuitem;
@@ -297,9 +299,9 @@
 	gtk_widget_show (menuitem);
 	gtk_menu_shell_prepend (GTK_MENU_SHELL (pop), menuitem);
 
-	image = gtk_image_new_from_file (list
-					 ? EVOLUTION_IMAGESDIR "/" LIST_ICON_FILENAME
-					 : EVOLUTION_IMAGESDIR "/" CONTACT_ICON_FILENAME);
+	pixbuf = e_icon_factory_get_icon (list ? LIST_ICON_NAME : CONTACT_ICON_NAME, 16);
+	image = gtk_image_new_from_pixbuf (pixbuf);
+	g_object_unref (pixbuf);
 	gtk_widget_show (image);
 	menuitem = gtk_image_menu_item_new_with_label (eab_destination_get_name (info->dest));
 	gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menuitem),
Index: addressbook/gui/contact-editor/Makefile.am
===================================================================
RCS file: /cvs/gnome/evolution/addressbook/gui/contact-editor/Makefile.am,v
retrieving revision 1.55
diff -u -r1.55 Makefile.am
--- addressbook/gui/contact-editor/Makefile.am	6 Dec 2003 18:05:27 -0000	1.55
+++ addressbook/gui/contact-editor/Makefile.am	25 Dec 2003 00:05:16 -0000
@@ -5,6 +5,7 @@
 	-I$(top_builddir)/addressbook/backend		\
 	-I$(top_srcdir)/addressbook/gui/merging		\
 	-I$(top_srcdir)/widgets/e-table			\
+	-I$(top_srcdir)/e-util				\
 	-I$(top_builddir)/shell				\
 	-DEVOLUTION_GLADEDIR=\""$(gladedir)"\"		\
 	-DEVOLUTION_DATADIR=\""$(datadir)"\"		\
Index: addressbook/gui/contact-editor/contact-editor.glade
===================================================================
RCS file: /cvs/gnome/evolution/addressbook/gui/contact-editor/contact-editor.glade,v
retrieving revision 1.42
diff -u -r1.42 contact-editor.glade
--- addressbook/gui/contact-editor/contact-editor.glade	16 Dec 2003 23:29:21 -0000	1.42
+++ addressbook/gui/contact-editor/contact-editor.glade	25 Dec 2003 00:05:22 -0000
@@ -1156,7 +1156,7 @@
 		<widget class="Custom" id="custom1">
 		  <property name="visible">True</property>
 		  <property name="creation_function">e_create_image_widget</property>
-		  <property name="string1">malehead.png</property>
+		  <property name="string1">stock_person</property>
 		  <property name="string2"></property>
 		  <property name="int1">0</property>
 		  <property name="int2">0</property>
@@ -1176,7 +1176,7 @@
 		<widget class="Custom" id="custom2">
 		  <property name="visible">True</property>
 		  <property name="creation_function">e_create_image_widget</property>
-		  <property name="string1">cellphone.png</property>
+		  <property name="string1">stock_cell-phone</property>
 		  <property name="string2"></property>
 		  <property name="int1">0</property>
 		  <property name="int2">0</property>
@@ -1196,7 +1196,7 @@
 		<widget class="Custom" id="custom3">
 		  <property name="visible">True</property>
 		  <property name="creation_function">e_create_image_widget</property>
-		  <property name="string1">envelope.png</property>
+		  <property name="string1">stock_mail</property>
 		  <property name="string2"></property>
 		  <property name="int1">0</property>
 		  <property name="int2">0</property>
@@ -1216,7 +1216,7 @@
 		<widget class="Custom" id="custom4">
 		  <property name="visible">True</property>
 		  <property name="creation_function">e_create_image_widget</property>
-		  <property name="string1">house.png</property>
+		  <property name="string1">stock_home</property>
 		  <property name="string2"></property>
 		  <property name="int1">0</property>
 		  <property name="int2">0</property>
@@ -1236,7 +1236,7 @@
 		<widget class="Custom" id="custom10">
 		  <property name="visible">True</property>
 		  <property name="creation_function">e_create_image_widget</property>
-		  <property name="string1">globe.png</property>
+		  <property name="string1">stock_internet</property>
 		  <property name="string2"></property>
 		  <property name="int1">0</property>
 		  <property name="int2">0</property>
@@ -1377,7 +1377,7 @@
 		<widget class="Custom" id="custom6">
 		  <property name="visible">True</property>
 		  <property name="creation_function">e_create_image_widget</property>
-		  <property name="string1">briefcase.png</property>
+		  <property name="string1">stock_briefcase</property>
 		  <property name="string2"></property>
 		  <property name="int1">0</property>
 		  <property name="int2">0</property>
@@ -2028,7 +2028,7 @@
 		<widget class="Custom" id="custom7">
 		  <property name="visible">True</property>
 		  <property name="creation_function">e_create_image_widget</property>
-		  <property name="string1">briefcase.png</property>
+		  <property name="string1">stock_briefcase</property>
 		  <property name="string2"></property>
 		  <property name="int1">0</property>
 		  <property name="int2">0</property>
@@ -2048,7 +2048,7 @@
 		<widget class="Custom" id="custom8">
 		  <property name="visible">True</property>
 		  <property name="creation_function">e_create_image_widget</property>
-		  <property name="string1">malehead.png</property>
+		  <property name="string1">stock_person</property>
 		  <property name="string2"></property>
 		  <property name="int1">0</property>
 		  <property name="int2">0</property>
@@ -2102,7 +2102,7 @@
 		<widget class="Custom" id="custom9">
 		  <property name="visible">True</property>
 		  <property name="creation_function">e_create_image_widget</property>
-		  <property name="string1">globe.png</property>
+		  <property name="string1">stock_internet</property>
 		  <property name="string2"></property>
 		  <property name="int1">0</property>
 		  <property name="int2">0</property>
@@ -2197,7 +2197,7 @@
 		    <widget class="Custom" id="custom12">
 		      <property name="visible">True</property>
 		      <property name="creation_function">e_create_image_widget</property>
-		      <property name="string1">globe.png</property>
+		      <property name="string1">stock_internet</property>
 		      <property name="string2"></property>
 		      <property name="int1">0</property>
 		      <property name="int2">0</property>
Index: addressbook/gui/contact-editor/e-contact-editor-address.c
===================================================================
RCS file: /cvs/gnome/evolution/addressbook/gui/contact-editor/e-contact-editor-address.c,v
retrieving revision 1.28
diff -u -r1.28 e-contact-editor-address.c
--- addressbook/gui/contact-editor/e-contact-editor-address.c	11 Dec 2003 02:52:35 -0000	1.28
+++ addressbook/gui/contact-editor/e-contact-editor-address.c	25 Dec 2003 00:05:23 -0000
@@ -22,10 +22,10 @@
 #include <config.h>
 
 #include <e-contact-editor-address.h>
+#include "e-icon-factory.h"
 
 #include <glib.h>
 #include <libgnome/gnome-i18n.h>
-#include <libgnomeui/gnome-window-icon.h>
 #include <libgnome/gnome-util.h>
 #include <gal/widgets/e-gui-utils.h>
 #include <gtk/gtkcombo.h>
@@ -412,7 +412,7 @@
 {
 	GladeXML *gui;
 	GtkWidget *widget;
-	char *icon_path;
+	GList *icon_list;
 
 	gtk_dialog_add_buttons (GTK_DIALOG (e_contact_editor_address),
 				GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
@@ -439,9 +439,12 @@
 	gtk_box_pack_start (GTK_BOX (GTK_DIALOG (e_contact_editor_address)->vbox), widget, TRUE, TRUE, 0);
 	g_object_unref(widget);
 
-	icon_path = g_concat_dir_and_file (EVOLUTION_IMAGESDIR, "evolution-contacts-mini.png");
-	gnome_window_icon_set_from_file (GTK_WINDOW (e_contact_editor_address), icon_path);
-	g_free (icon_path);
+	icon_list = e_icon_factory_get_icon_list ("stock_contact");
+	if (icon_list) {
+		gtk_window_set_icon_list (GTK_WINDOW (e_contact_editor_address), icon_list);
+		g_list_foreach (icon_list, (GFunc) g_object_unref, NULL);
+		g_list_free (icon_list);
+	}
 }
 
 void
Index: addressbook/gui/contact-editor/e-contact-editor-fullname.c
===================================================================
RCS file: /cvs/gnome/evolution/addressbook/gui/contact-editor/e-contact-editor-fullname.c,v
retrieving revision 1.25
diff -u -r1.25 e-contact-editor-fullname.c
--- addressbook/gui/contact-editor/e-contact-editor-fullname.c	21 Oct 2003 18:48:45 -0000	1.25
+++ addressbook/gui/contact-editor/e-contact-editor-fullname.c	25 Dec 2003 00:05:24 -0000
@@ -21,7 +21,7 @@
 
 #include <config.h>
 #include "e-contact-editor-fullname.h"
-#include <libgnomeui/gnome-window-icon.h>
+#include "e-icon-factory.h"
 #include <libgnome/gnome-util.h>
 #include <libgnome/gnome-i18n.h>
 #include <gtk/gtkcombo.h>
@@ -103,7 +103,7 @@
 {
 	GladeXML *gui;
 	GtkWidget *widget;
-	char *icon_path;
+	GList *icon_list;
 
 	gtk_dialog_add_buttons (GTK_DIALOG (e_contact_editor_fullname),
 				GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
@@ -126,9 +126,12 @@
 	gtk_box_pack_start (GTK_BOX (GTK_DIALOG (e_contact_editor_fullname)->vbox), widget, TRUE, TRUE, 0);
 	g_object_unref(widget);
 
-	icon_path = g_concat_dir_and_file (EVOLUTION_IMAGESDIR, "evolution-contacts-mini.png");
-	gnome_window_icon_set_from_file (GTK_WINDOW (e_contact_editor_fullname), icon_path);
-	g_free (icon_path);
+	icon_list = e_icon_factory_get_icon_list ("stock_contact");
+	if (icon_list) {
+		gtk_window_set_icon_list (GTK_WINDOW (e_contact_editor_fullname), icon_list);
+		g_list_foreach (icon_list, (GFunc) g_object_unref, NULL);
+		g_list_free (icon_list);
+	}
 }
 
 void
Index: addressbook/gui/contact-editor/e-contact-editor.c
===================================================================
RCS file: /cvs/gnome/evolution/addressbook/gui/contact-editor/e-contact-editor.c,v
retrieving revision 1.159
diff -u -r1.159 e-contact-editor.c
--- addressbook/gui/contact-editor/e-contact-editor.c	18 Dec 2003 22:20:17 -0000	1.159
+++ addressbook/gui/contact-editor/e-contact-editor.c	25 Dec 2003 00:05:29 -0000
@@ -34,7 +34,6 @@
 #include <gtk/gtkentry.h>
 #include <gtk/gtklabel.h>
 #include <libgnomeui/gnome-popup-menu.h>
-#include <libgnomeui/gnome-window-icon.h>
 #include <libgnome/gnome-i18n.h>
 
 #include <bonobo/bonobo-ui-container.h>
@@ -65,6 +64,8 @@
 #include "e-contact-editor-fullname.h"
 #include "e-contact-editor-marshal.h"
 
+#include "e-icon-factory.h"
+
 /* Signal IDs */
 enum {
 	CONTACT_ADDED,
@@ -1356,17 +1357,17 @@
 };
 
 EPixmap pixmaps[] = {
-	E_PIXMAP ("/commands/ContactEditorSave", "save-16.png"),
-	E_PIXMAP ("/commands/ContactEditorSaveClose", "save-16.png"),
-	E_PIXMAP ("/commands/ContactEditorSaveAs", "save-as-16.png"),
-	E_PIXMAP ("/commands/ContactEditorDelete", "evolution-trash-mini.png"),
-	E_PIXMAP ("/commands/ContactEditorPrint", "print.xpm"),
+	E_PIXMAP ("/commands/ContactEditorSave", "stock_save", 16),
+	E_PIXMAP ("/commands/ContactEditorSaveClose", "stock_save", 16),
+	E_PIXMAP ("/commands/ContactEditorSaveAs", "stock_save-as", 16),
+	E_PIXMAP ("/commands/ContactEditorDelete", "stock_delete", 16),
+	E_PIXMAP ("/commands/ContactEditorPrint", "stock_print", 16),
 #if 0 /* Envelope printing is disabled for Evolution 1.0. */
-	E_PIXMAP ("/commands/ContactEditorPrintEnvelope", "print.xpm"),
+	E_PIXMAP ("/commands/ContactEditorPrintEnvelope", "stock_print", 16),
 #endif
-	E_PIXMAP ("/Toolbar/ContactEditorSaveClose", "buttons/save-24.png"),
-	E_PIXMAP ("/Toolbar/ContactEditorDelete", "buttons/delete-message.png"),
-	E_PIXMAP ("/Toolbar/ContactEditorPrint", "buttons/print.png"),
+	E_PIXMAP ("/Toolbar/ContactEditorSaveClose", "stock_save", 24),
+	E_PIXMAP ("/Toolbar/ContactEditorDelete", "stock_delete", 24),
+	E_PIXMAP ("/Toolbar/ContactEditorPrint", "stock_print", 24),
 
 	E_PIXMAP_END
 };
@@ -1447,7 +1448,7 @@
 	GtkWidget *bonobo_win;
 	GtkWidget *wants_html;
 	BonoboUIContainer *container;
-	char *icon_path;
+	GList *icon_list;
 
 	e_contact_editor->email_info = NULL;
 	e_contact_editor->phone_info = NULL;
@@ -1560,9 +1561,12 @@
 			    GTK_SIGNAL_FUNC (app_delete_event_cb), e_contact_editor);
 
 	/* set the icon */
-	icon_path = g_build_filename (EVOLUTION_IMAGESDIR, "evolution-contacts-mini.png", NULL);
-	gnome_window_icon_set_from_file (GTK_WINDOW (e_contact_editor->app), icon_path);
-	g_free (icon_path);
+	icon_list = e_icon_factory_get_icon_list ("stock_contact");
+	if (icon_list) {
+		gtk_window_set_icon_list (GTK_WINDOW (e_contact_editor->app), icon_list);
+		g_list_foreach (icon_list, (GFunc) g_object_unref, NULL);
+		g_list_free (icon_list);
+	}
 }
 
 void
Index: addressbook/gui/contact-list-editor/Makefile.am
===================================================================
RCS file: /cvs/gnome/evolution/addressbook/gui/contact-list-editor/Makefile.am,v
retrieving revision 1.21
diff -u -r1.21 Makefile.am
--- addressbook/gui/contact-list-editor/Makefile.am	6 Dec 2003 18:05:28 -0000	1.21
+++ addressbook/gui/contact-list-editor/Makefile.am	25 Dec 2003 00:05:30 -0000
@@ -5,6 +5,7 @@
 	-I$(top_builddir)/addressbook/backend		\
 	-I$(top_srcdir)/addressbook/gui/merging		\
 	-I$(top_srcdir)/addressbook/gui/contact-editor	\
+	-I$(top_srcdir)/e-util				\
 	-I$(top_builddir)/shell				\
 	-DEVOLUTION_GLADEDIR=\""$(gladedir)"\"		\
 	-DEVOLUTION_ETSPECDIR=\""$(etspecdir)"\"	\
Index: addressbook/gui/contact-list-editor/contact-list-editor.glade
===================================================================
RCS file: /cvs/gnome/evolution/addressbook/gui/contact-list-editor/contact-list-editor.glade,v
retrieving revision 1.9
diff -u -r1.9 contact-list-editor.glade
--- addressbook/gui/contact-list-editor/contact-list-editor.glade	21 Oct 2003 18:48:48 -0000	1.9
+++ addressbook/gui/contact-list-editor/contact-list-editor.glade	25 Dec 2003 00:05:30 -0000
@@ -81,7 +81,7 @@
 		<widget class="Custom" id="list-image">
 		  <property name="visible">True</property>
 		  <property name="creation_function">e_create_image_widget</property>
-		  <property name="string1">evolution-contacts-plain.png</property>
+		  <property name="string1">stock_addressbook</property>
 		  <property name="int1">0</property>
 		  <property name="int2">0</property>
 		  <property name="last_modification_time">Sat, 23 Jun 2001 05:59:21 GMT</property>
Index: addressbook/gui/contact-list-editor/e-contact-list-editor.c
===================================================================
RCS file: /cvs/gnome/evolution/addressbook/gui/contact-list-editor/e-contact-list-editor.c,v
retrieving revision 1.47
diff -u -r1.47 e-contact-list-editor.c
--- addressbook/gui/contact-list-editor/e-contact-list-editor.c	10 Dec 2003 03:02:40 -0000	1.47
+++ addressbook/gui/contact-list-editor/e-contact-list-editor.c	25 Dec 2003 00:05:33 -0000
@@ -21,11 +21,11 @@
 #include <config.h>
 
 #include "e-contact-list-editor.h"
+#include "e-icon-factory.h"
 
 #include <string.h>
 #include <glib.h>
 #include <libgnome/gnome-i18n.h>
-#include <libgnomeui/gnome-window-icon.h>
 #include <bonobo/bonobo-ui-container.h>
 #include <bonobo/bonobo-ui-util.h>
 #include <bonobo/bonobo-window.h>
@@ -231,8 +231,8 @@
 	GladeXML *gui;
 	GtkWidget *bonobo_win;
 	BonoboUIContainer *container;
-	char *icon_path;
 	GdkPixbuf *pixbuf;
+	GList *icon_list;
 
 	editor->image_buf = NULL;
 	editor->contact = NULL;
@@ -341,9 +341,12 @@
 			  G_CALLBACK (app_delete_event_cb), editor);
 
 	/* set the icon */
-	icon_path = g_build_filename (EVOLUTION_IMAGESDIR, "contact-list-16.png", NULL);
-	gnome_window_icon_set_from_file (GTK_WINDOW (editor->app), icon_path);
-	g_free (icon_path);
+	icon_list = e_icon_factory_get_icon_list ("stock_contact-list");
+	if (icon_list) {
+		gtk_window_set_icon_list (GTK_WINDOW (editor->app), icon_list);
+		g_list_foreach (icon_list, (GFunc) g_object_unref, NULL);
+		g_list_free (icon_list);
+	}
 }
 
 static void
@@ -583,18 +586,18 @@
 };
 
 static EPixmap pixmaps[] = {
-	E_PIXMAP ("/commands/ContactListEditorSave", "save-16.png"),
-	E_PIXMAP ("/commands/ContactListEditorSaveClose", "save-16.png"),
-	E_PIXMAP ("/commands/ContactListEditorSaveAs", "save-as-16.png"),
+	E_PIXMAP ("/commands/ContactListEditorSave", "stock_save", 16),
+	E_PIXMAP ("/commands/ContactListEditorSaveClose", "stock_save", 16),
+	E_PIXMAP ("/commands/ContactListEditorSaveAs", "stock_save-as", 16),
 
-	E_PIXMAP ("/commands/ContactListEditorDelete", "evolution-trash-mini.png"),
+	E_PIXMAP ("/commands/ContactListEditorDelete", "stock_delete", 16),
 #if 0 /* Envelope printing is disabled for Evolution 1.0. */
-	E_PIXMAP ("/commands/ContactListEditorPrint", "print.xpm"),
-	E_PIXMAP ("/commands/ContactListEditorPrintEnvelope", "print.xpm"),
+	E_PIXMAP ("/commands/ContactListEditorPrint", "stock_print", 16),
+	E_PIXMAP ("/commands/ContactListEditorPrintEnvelope", "stock_print", 16),
 #endif
-	E_PIXMAP ("/Toolbar/ContactListEditorSaveClose", "buttons/save-24.png"),
-	E_PIXMAP ("/Toolbar/ContactListEditorDelete", "buttons/delete-message.png"),
-	E_PIXMAP ("/Toolbar/ContactListEditorPrint", "buttons/print.png"),
+	E_PIXMAP ("/Toolbar/ContactListEditorSaveClose", "stock_save", 24),
+	E_PIXMAP ("/Toolbar/ContactListEditorDelete", "stock_delete", 24),
+	E_PIXMAP ("/Toolbar/ContactListEditorPrint", "stock_print", 24),
 
 	E_PIXMAP_END
 };
Index: addressbook/gui/merging/eab-contact-commit-duplicate-detected.glade
===================================================================
RCS file: /cvs/gnome/evolution/addressbook/gui/merging/eab-contact-commit-duplicate-detected.glade,v
retrieving revision 1.2
diff -u -r1.2 eab-contact-commit-duplicate-detected.glade
--- addressbook/gui/merging/eab-contact-commit-duplicate-detected.glade	21 Oct 2003 18:48:52 -0000	1.2
+++ addressbook/gui/merging/eab-contact-commit-duplicate-detected.glade	25 Dec 2003 00:05:34 -0000
@@ -182,7 +182,7 @@
 		<widget class="Custom" id="custom2">
 		  <property name="visible">True</property>
 		  <property name="creation_function">e_create_image_widget</property>
-		  <property name="string1">malehead.png</property>
+		  <property name="string1">stock_person</property>
 		  <property name="int1">0</property>
 		  <property name="int2">0</property>
 		  <property name="last_modification_time">Fri, 08 Jun 2001 00:18:39 GMT</property>
Index: addressbook/gui/merging/eab-contact-duplicate-detected.glade
===================================================================
RCS file: /cvs/gnome/evolution/addressbook/gui/merging/eab-contact-duplicate-detected.glade,v
retrieving revision 1.2
diff -u -r1.2 eab-contact-duplicate-detected.glade
--- addressbook/gui/merging/eab-contact-duplicate-detected.glade	21 Oct 2003 18:48:52 -0000	1.2
+++ addressbook/gui/merging/eab-contact-duplicate-detected.glade	25 Dec 2003 00:05:34 -0000
@@ -182,7 +182,7 @@
 		<widget class="Custom" id="custom2">
 		  <property name="visible">True</property>
 		  <property name="creation_function">e_create_image_widget</property>
-		  <property name="string1">malehead.png</property>
+		  <property name="string1">stock_person</property>
 		  <property name="int1">0</property>
 		  <property name="int2">0</property>
 		  <property name="last_modification_time">Fri, 08 Jun 2001 00:18:39 GMT</property>
Index: addressbook/gui/widgets/Makefile.am
===================================================================
RCS file: /cvs/gnome/evolution/addressbook/gui/widgets/Makefile.am,v
retrieving revision 1.67
diff -u -r1.67 Makefile.am
--- addressbook/gui/widgets/Makefile.am	6 Dec 2003 18:05:31 -0000	1.67
+++ addressbook/gui/widgets/Makefile.am	25 Dec 2003 00:05:34 -0000
@@ -10,6 +10,7 @@
 	-I$(top_srcdir)/addressbook/gui/contact-editor	\
 	-I$(top_srcdir)/addressbook/gui/merging		\
 	-I$(top_srcdir)/addressbook/gui/component	\
+	-I$(top_srcdir)/e-util				\
 	-I$(top_srcdir)/widgets/misc			\
 	-I$(top_builddir)/shell				\
 	$(EVOLUTION_ADDRESSBOOK_CFLAGS)
Index: addressbook/gui/widgets/e-minicard.c
===================================================================
RCS file: /cvs/gnome/evolution/addressbook/gui/widgets/e-minicard.c,v
retrieving revision 1.110
diff -u -r1.110 e-minicard.c
--- addressbook/gui/widgets/e-minicard.c	14 Nov 2003 00:38:47 -0000	1.110
+++ addressbook/gui/widgets/e-minicard.c	25 Dec 2003 00:05:36 -0000
@@ -39,6 +39,7 @@
 #include "e-minicard-label.h"
 #include "e-minicard-view.h"
 #include "e-contact-editor.h"
+#include "e-icon-factory.h"
 #include "util/eab-destination.h"
 
 static void e_minicard_init		(EMinicard		 *card);
@@ -69,7 +70,7 @@
 
 #define d(x)
 
-#define LIST_ICON_FILENAME "contact-list-16.png"
+#define LIST_ICON_NAME "stock_contact-list"
 
 #define E_MINICARD_FIELD(field) ((EMinicardField *)(field))
 
@@ -241,7 +242,7 @@
 
 	minicard->contact          = NULL;
 
-	minicard->list_icon_pixbuf = gdk_pixbuf_new_from_file (EVOLUTION_IMAGESDIR "/" LIST_ICON_FILENAME, NULL);
+	minicard->list_icon_pixbuf = e_icon_factory_get_icon (LIST_ICON_NAME, 16);
 	minicard->list_icon_size   = gdk_pixbuf_get_height (minicard->list_icon_pixbuf);
 
 	minicard->editor           = NULL;
@@ -432,6 +433,9 @@
 	
 	if (e_minicard->contact)
 		g_object_unref (e_minicard->contact);
+	
+	if (e_minicard->list_icon_pixbuf)
+		g_object_unref (e_minicard->list_icon_pixbuf);
 
 	if (G_OBJECT_CLASS (parent_class)->finalize)
 		(* G_OBJECT_CLASS (parent_class)->finalize) (object);
Index: art/ChangeLog
===================================================================
RCS file: /cvs/gnome/evolution/art/ChangeLog,v
retrieving revision 1.159
diff -u -r1.159 ChangeLog
--- art/ChangeLog	4 Dec 2003 17:08:30 -0000	1.159
+++ art/ChangeLog	25 Dec 2003 00:05:37 -0000
@@ -1,3 +1,8 @@
+2003-12-24  Michael Terry <mterry fastmail fm>
+
+	* Makefile.am: Remove almost all the icons, because they are now
+	outsourced to gnome-icon-theme.
+
 2003-12-04  Radek Doulik  <rodo ximian com>
 
 	* Makefile.am (buttons_DATA): added stock junk button and notjunk
Index: art/Makefile.am
===================================================================
RCS file: /cvs/gnome/evolution/art/Makefile.am,v
retrieving revision 1.110
diff -u -r1.110 Makefile.am
--- art/Makefile.am	4 Dec 2003 17:08:30 -0000	1.110
+++ art/Makefile.am	25 Dec 2003 00:05:37 -0000
@@ -1,272 +1,20 @@
 images_DATA = \
-	16_copy.png			\
-	16_customize.png		\
-	16_cut.png			\
-	16_paste.png			\
 	about-box.png			\
-	alarm.png			\
-	all_contacts.xpm		\
-	apply-filters-16.xpm		\
-	appointment-reminder.png	\
-	appointment-reminder-excl.png	\
 	bcg.png				\
-	briefcase.png       		\
-	butterfly.png			\
-	calendar-and-tasks-settings.png \
-	cellphone.png       		\
-	compose-message.png		\
-	composer-settings.png		\
-	configure_16_addressbook.xpm	\
-	configure_16_calendar.xpm	\
-	configure_16_folder.xpm		\
-	configure_16_mail.xpm		\
-	connect_to_url-16.xpm		\
-	contact-is-a-list.png		\
-	contact-list-16.png		\
-	copy_16_message.xpm		\
-	edit.xpm			\
-	empty.gif			\
-	encrypt.xpm			\
-	envelope.png        		\
-	es-appointments.png		\
-	es-weather.png			\
-	evolution-calendar-mini.png 	\
-	evolution-calendar.png 		\
-	evolution-contacts-mini.png 	\
-	evolution-contacts-plain.png 	\
-	evolution-contacts.png 		\
-	evolution-inbox-mini.png 	\
-	evolution-inbox.png 		\
-	evolution-notes-mini.png 	\
-	evolution-notes.png 		\
-	evolution-tasks-mini.png 	\
-	evolution-tasks.png 		\
-	evolution-today-mini.png	\
-	evolution-today.png 		\
-	evolution-trash-mini.png 	\
-	evolution-trash.png 		\
-	evolution-junk.png		\
-	evolution-junk-mini.png		\
-	executive-summary-bg.png	\
-	executive-summary-curve.png	\
-	info-bulb.png			\
-	faq-16.png			\
-	fetch-mail.png			\
-	find_contact.xpm		\
-	find_message.xpm		\
-	flag-for-followup-16.png	\
-	folder-copy-16.png		\
-	folder-move-16.png		\
-	folder-settings.png		\
-	folder.png			\
-	folder-mini.png			\
-	folder.xpm			\
-	font.png			\
-	forward.xpm			\
-	globe.png           		\
-	goto-16.png			\
-	hide_deleted_messages.xpm	\
-	hide_read_messages.xpm		\
-	hide_selected_messages.xpm	\
-	house.png           		\
-	ico-calendar.png		\
-	ico-mail.png			\
-	ico-rdf.png			\
-	ico-weather.png			\
-	import.png			\
-	import.xpm			\
-	inbox.png			\
-	inbox-mini.png			\
-	ldap-mini.png			\
-	ldap-settings.png		\
-	ldap.png			\
-	mail.png			\
-	mail-accounts-settings.png	\
-	mail-config-druid-account-name.png \
-	mail-config-druid-identity.png	\
-	mail-config-druid-receive.png	\
-	mail-config-druid-send.png	\
-	mail-config-druid.png		\
-	mail-new.xpm			\
-	mail-read.xpm			\
-	malehead.png			\
-	mark-as-important-16.png	\
-	meeting-request.png		\
-	meeting-request-16.png 		\
-	monkey-16.png			\
-	move_message.xpm		\
-	myevo-appointments.png		\
-	myevo-mail-summary.png		\
-	myevo-post-it.png		\
-	myweather-clouds.png		\
-	myweather-fog.png		\
-	myweather-rain.png		\
-	myweather-snow.png		\
-	myweather-storm.png		\
-	myweather-sun.png		\
-	myweather-suncloud.png		\
-	new-message.xpm			\
-	new_all_day_event.png		\
-	new_appointment.xpm		\
-	new_contact.xpm			\
-	new_task-16.png			\
 	offline.png			\
 	online.png			\
-	open-in-new-window-16.png 	\
-	outbox.png			\
-	outbox-mini.png			\
-	pattern.png			\
-	pgp-signature-bad.png 		\
-	pgp-signature-nokey.png 	\
-	pgp-signature-ok.png 		\
-	post-message-16.png		\
-	post-reply-24.png		\
-	print-preview.xpm		\
-	print.xpm			\
-	priority-high.xpm		\
-	public-folder.png		\
-	public-folder-mini.png		\
-	rdf.png				\
-	reply.xpm			\
-	reply_to_all.xpm		\
-	save-16.png			\
-	save-as-16.png			\
-	save.xpm			\
-	schedule-meeting-16.xpm		\
-	schedule-meeting-24.png		\
-	search-16.png			\
-	search-and-replace-16.png	\
-	send-16.png                     \
-	send-later-16.png		\
-	send-receive.xpm		\
-	service-close.png		\
-	service-configure.png		\
-	service-down-disabled.png	\
-	service-down.png		\
-	service-left-disabled.png	\
-	service-left.png		\
-	service-right-disabled.png	\
-	service-right.png		\
-	service-up-disabled.png		\
-	service-up.png			\
-	settings.png			\
-	settings-16.png			\
-	show_all_messages.xpm		\
 	splash.png			\
-	stock-edit-16.png		\
-	stock-edit-24.png		\
-	stock-junk-24.png		\
-	stock-notjunk-24.png		\
-	summary-settings.png		\
-	summary_preferences-16.png	\
-	talking-heads.png		\
-	task.png			\
-	task.xpm			\
-	thankyou.png			\
-	timezone-16.xpm			\
-	timezone-48.png 		\
-	undelete_message-16.png		\
-	wax-seal-broken.png		\
-	wax-seal.png			\
-	work_offline.xpm		\
-	work_online-16.png		\
-	working-16.png			\
 	world_map-960.png
 
-buttons_DATA = 				\
-	arrow-right-24.png		\
-	arrow-left-24.png		\
-	add-attachment.png		\
-	add-service.png			\
-	compose-message.png		\
-	copy-message.png		\
-	copy.png			\
-	cut.png				\
-	dayview.xpm			\
-	delete-message.png		\
-	fetch-mail.png			\
-	forward.png			\
-	goto-24.png  			\
-	listview.xpm			\
-	monthview.xpm  			\
-	move-message.png		\
-	next-message.png		\
-	new_appointment.png		\
-	new_task.png			\
-	paste.png			\
-	previous-message.png		\
-	print.png			\
-	print-preview-24.png		\
-	reply.png			\
-	reply-to-all.png		\
-	receive-24.png		\
-	save-24.png			\
-	send-24-receive.png		\
-	send-24.png		\
-	weekview.xpm  			\
-	workweekview.xpm		\
-	yearview.xpm
-
-glade_DATA = 					\
-	evolution.png				\
-	import.png				\
-	flag-for-followup-48.png		\
-	mail-config-druid-account-name.png	\
-	mail-config-druid-identity.png		\
-	mail-config-druid.png			\
-	mail-config-druid-receive.png		\
-	mail-config-druid-send.png		\
-	thankyou.png				\
-	timezone-48.png
-
 conduitsdir = $(imagesdir)/conduits
 conduits_DATA =				\
-	evo-16-address-conduit.png   	\
-	evo-16-todo-conduit.png     	\
-	evo-16-calendar-conduit.png  	\
 	evo-48-calendar-conduit.png	\
 	evo-48-address-conduit.png  	\
 	evo-48-todo-conduit.png
 
-install-data-local:
-	$(mkinstalldirs) $(DESTDIR)$(datadir)/pixmaps
-	$(INSTALL_DATA) $(srcdir)/evolution.png  $(DESTDIR)$(datadir)/pixmaps/evolution-$(BASE_VERSION).png
-if DEFAULT_BINARY
-	cd $(DESTDIR)$(datadir)/pixmaps && rm -f evolution.png && $(LN_S) evolution-$(BASE_VERSION).png evolution.png
-endif
-
 EXTRA_DIST = 				\
 	ChangeLog.pre-1-4		\
-	attachment.xpm			\
-	bell.xpm			\
-	check-filled.xpm		\
 	empty.xpm			\
-	evolution.png			\
 	jump.xpm			\
-	mail-need-reply.xpm		\
-	mail-new.xpm			\
-	mail-read.xpm			\
-	mail-replied.xpm		\
-	flag-for-followup.xpm		\
-	flag-for-followup-done.xpm	\
-	mark.xpm			\
-	priority-high.xpm		\
-	priority-low.xpm		\
-	recur.xpm			\
-	score-higher.xpm		\
-	score-highest.xpm		\
-	score-high.xpm			\
-	score-lower.xpm			\
-	score-lowest.xpm		\
-	score-low.xpm			\
-	score-normal.xpm		\
-	task-assigned-to.xpm		\
-	task-assigned.xpm		\
-	task-recurring.xpm		\
-	timezone-16.xpm			\
-	tree-expanded.xpm		\
-	tree-unexpanded.xpm		\
 	$(images_DATA)			\
-	$(buttons_DATA)			\
-	$(conduits_DATA)		\
-	$(glade_DATA)
+	$(conduits_DATA)
Index: calendar/ChangeLog
===================================================================
RCS file: /cvs/gnome/evolution/calendar/ChangeLog,v
retrieving revision 1.2027
diff -u -r1.2027 ChangeLog
--- calendar/ChangeLog	21 Dec 2003 17:05:14 -0000	1.2027
+++ calendar/ChangeLog	25 Dec 2003 00:05:50 -0000
@@ -1,3 +1,36 @@
+2003-12-24  Michael Terry <mterry fastmail fm>
+
+	* gui/Makefile.am, gui/alarm-notify/Makefile.am,
+	gui/dialogs/Makefile.am: Add e-util to include paths.  Part of bug
+	127812.
+
+	* gui/GNOME_Evolution_Calendar.server.in.in,
+	gui/calendar-commands.c,
+	gui/calendar-component.c (add_popup_menu_item, fill_popup_menu_cb,
+		impl__get_userCreatableItems),
+	gui/e-cal-view.c (e_calendar_view_set_status_message,
+		setup_popup_icons),
+	gui/e-calendar-table.c (e_calendar_table_set_status_message,
+		e_calendar_table_init),
+	gui/e-day-view-main-item.c (e_day_view_main_item_draw_day_event),
+	gui/e-day-view-top-item.c (e_day_view_top_item_draw_long_event),
+	gui/e-day-view.c (e_day_view_realize, e_day_view_unrealize),
+	gui/e-day-view.h,
+	gui/e-itip-control.c (write_error_html, write_html),
+	gui/e-timezone-entry.c (e_timezone_entry_init),
+	gui/e-week-view-event-item.c (e_week_view_event_item_draw_icons),
+	gui/e-week-view.c (e_week_view_realize, e_week_view_unrealize),
+	gui/e-week-view.h,
+	gui/tasks-component.c (add_popup_menu_item, fill_popup_menu_cb,
+		impl__get_userCreatableItems),
+	gui/alarm-notify/alarm-notify-dialog.c (write_html_heading,
+		alarm_notify_dialog),
+	gui/alarm-notify/alarm-queue.c (tray_icon_blink_cb,
+		display_notification),
+	gui/dialogs/comp-editor.c (make_icon_from_comp, set_icon_from_comp),
+	gui/dialogs/event-editor.c: Use gnome-icon-theme names for icons and
+	e-icon-factory to look them up.  Part of bug 127812.
+
 2003-12-21  JP Rosevear <jpr ximian com>
 
 	* gui/e-itip-control.[hc]: rewrite for new ecal api, cache all
Index: calendar/gui/GNOME_Evolution_Calendar.server.in.in
===================================================================
RCS file: /cvs/gnome/evolution/calendar/gui/GNOME_Evolution_Calendar.server.in.in,v
retrieving revision 1.11
diff -u -r1.11 GNOME_Evolution_Calendar.server.in.in
--- calendar/gui/GNOME_Evolution_Calendar.server.in.in	1 Dec 2003 22:14:20 -0000	1.11
+++ calendar/gui/GNOME_Evolution_Calendar.server.in.in	25 Dec 2003 00:05:51 -0000
@@ -44,7 +44,7 @@
 	<oaf_attribute name="name" type="string" _value="Evolution's Calendar component"/>
 
 	<oaf_attribute name="evolution:button_label" type="string" _value="Calendars"/>
-        <oaf_attribute name="evolution:button_icon" type="string" value="evolution-calendar.png"/>
+        <oaf_attribute name="evolution:button_icon" type="string" value="stock_calendar"/>
 	<oaf_attribute name="evolution:button_sort_order" type="string" value="-8"/>
 </oaf_server>
 
@@ -79,7 +79,7 @@
 	<oaf_attribute name="name" type="string" _value="Evolution's Tasks component"/>
 
 	<oaf_attribute name="evolution:button_label" type="string" _value="Tasks"/>
-        <oaf_attribute name="evolution:button_icon" type="string" value="evolution-tasks.png"/>
+        <oaf_attribute name="evolution:button_icon" type="string" value="stock_task-list"/>
 	<oaf_attribute name="evolution:button_sort_order" type="string" value="-8"/>
 </oaf_server>
 
@@ -129,7 +129,7 @@
 		       _value="Configure your timezone, Calendar and Task List here "/>
 
 	<oaf_attribute name="evolution2:config_item:icon_name" type="string"
-		       value="evolution-calendar.png"/>
+		       value="stock_calendar-and-tasks"/>
 
 	<oaf_attribute name="evolution2:config_item:type" type="stringv">
 		<item value="calendar"/>
Index: calendar/gui/Makefile.am
===================================================================
RCS file: /cvs/gnome/evolution/calendar/gui/Makefile.am,v
retrieving revision 1.289
diff -u -r1.289 Makefile.am
--- calendar/gui/Makefile.am	17 Dec 2003 17:20:58 -0000	1.289
+++ calendar/gui/Makefile.am	25 Dec 2003 00:05:51 -0000
@@ -64,6 +64,7 @@
 	-I$(top_builddir)/shell				\
 	-I$(top_srcdir)/shell				\
 	-I$(top_srcdir)					\
+	-I$(top_srcdir)/e-util				\
 	-I$(top_srcdir)/calendar			\
 	-I$(top_srcdir)/widgets				\
 	-I$(top_srcdir)/a11y/calendar			\
Index: calendar/gui/calendar-commands.c
===================================================================
RCS file: /cvs/gnome/evolution/calendar/gui/calendar-commands.c,v
retrieving revision 1.138
diff -u -r1.138 calendar-commands.c
--- calendar/gui/calendar-commands.c	19 Dec 2003 19:50:49 -0000	1.138
+++ calendar/gui/calendar-commands.c	25 Dec 2003 00:05:53 -0000
@@ -714,11 +714,11 @@
 
 static EPixmap pixmaps [] =
 {
-	E_PIXMAP ("/Toolbar/DayView",	      "buttons/dayview.xpm"),
-	E_PIXMAP ("/Toolbar/WorkWeekView",    "buttons/workweekview.xpm"),
-	E_PIXMAP ("/Toolbar/WeekView",	      "buttons/weekview.xpm"),
-	E_PIXMAP ("/Toolbar/MonthView",	      "buttons/monthview.xpm"),
-	E_PIXMAP ("/Toolbar/ListView",	      "buttons/listview.xpm"),
+	E_PIXMAP ("/Toolbar/DayView",	      "stock_calendar-view-day",       24),
+	E_PIXMAP ("/Toolbar/WorkWeekView",    "stock_calendar-view-work-week", 24),
+	E_PIXMAP ("/Toolbar/WeekView",	      "stock_calendar-view-week",      24),
+	E_PIXMAP ("/Toolbar/MonthView",	      "stock_calendar-view-month",     24),
+	E_PIXMAP ("/Toolbar/ListView",	      "stock_calendar-view-list",     24),
 
 	E_PIXMAP_END
 };
Index: calendar/gui/calendar-component.c
===================================================================
RCS file: /cvs/gnome/evolution/calendar/gui/calendar-component.c,v
retrieving revision 1.120
diff -u -r1.120 calendar-component.c
--- calendar/gui/calendar-component.c	21 Dec 2003 17:05:18 -0000	1.120
+++ calendar/gui/calendar-component.c	25 Dec 2003 00:05:55 -0000
@@ -43,6 +43,7 @@
 #include "dialogs/copy-source-dialog.h"
 #include "dialogs/event-editor.h"
 #include "widgets/misc/e-source-selector.h"
+#include "e-icon-factory.h"
 
 
 /* IDs for user creatable items */
@@ -307,19 +308,18 @@
 
 /* Callbacks.  */
 static void
-add_popup_menu_item (GtkMenu *menu, const char *label, const char *pixmap,
+add_popup_menu_item (GtkMenu *menu, const char *label, const char *icon_name,
 		     GCallback callback, gpointer user_data, gboolean sensitive)
 {
 	GtkWidget *item, *image;
+	GdkPixbuf *pixbuf;
 
-	if (pixmap) {
+	if (icon_name) {
 		item = gtk_image_menu_item_new_with_label (label);
 
 		/* load the image */
-		if (g_file_test (pixmap, G_FILE_TEST_EXISTS))
-			image = gtk_image_new_from_file (pixmap);
-		else
-			image = gtk_image_new_from_stock (pixmap, GTK_ICON_SIZE_MENU);
+		pixbuf = e_icon_factory_get_icon (icon_name, 16);
+		image = gtk_image_new_from_pixbuf (pixbuf);
 
 		if (image) {
 			gtk_widget_show (image);
@@ -435,12 +435,12 @@
 	sensitive = e_source_selector_peek_primary_selection (E_SOURCE_SELECTOR (comp->priv->source_selector)) ?
 		TRUE : FALSE;
 
-	add_popup_menu_item (menu, _("New Calendar"), EVOLUTION_IMAGESDIR "/evolution-calendar-mini.png",
+	add_popup_menu_item (menu, _("New Calendar"), "stock_calendar",
 			     G_CALLBACK (new_calendar_cb), comp, TRUE);
-	add_popup_menu_item (menu, _("Copy"), EVOLUTION_IMAGESDIR "/folder-copy-16.png",
+	add_popup_menu_item (menu, _("Copy"), "stock_folder-copy",
 			     G_CALLBACK (copy_calendar_cb), comp, sensitive);
 	add_popup_menu_item (menu, _("Rename"), NULL, G_CALLBACK (rename_calendar_cb), comp, sensitive);
-	add_popup_menu_item (menu, _("Delete"), GTK_STOCK_DELETE, G_CALLBACK (delete_calendar_cb), comp, sensitive);
+	add_popup_menu_item (menu, _("Delete"), "stock_delete", G_CALLBACK (delete_calendar_cb), comp, sensitive);
 }
 
 static void
@@ -623,28 +623,28 @@
 	list->_buffer[0].menuDescription = _("_Appointment");
 	list->_buffer[0].tooltip = _("Create a new appointment");
 	list->_buffer[0].menuShortcut = 'a';
-	list->_buffer[0].iconName = "new_appointment.xpm";
+	list->_buffer[0].iconName = "stock_new-appointment";
 
 	list->_buffer[1].id = CREATE_MEETING_ID;
 	list->_buffer[1].description = _("New meeting");
 	list->_buffer[1].menuDescription = _("M_eeting");
 	list->_buffer[1].tooltip = _("Create a new meeting request");
 	list->_buffer[1].menuShortcut = 'e';
-	list->_buffer[1].iconName = "meeting-request-16.png";
+	list->_buffer[1].iconName = "stock_new-meeting";
 
 	list->_buffer[2].id = CREATE_ALLDAY_EVENT_ID;
 	list->_buffer[2].description = _("New all day appointment");
 	list->_buffer[2].menuDescription = _("All _Day Appointment");
 	list->_buffer[2].tooltip = _("Create a new all-day appointment");
 	list->_buffer[2].menuShortcut = 'd';
-	list->_buffer[2].iconName = "new_all_day_event.png";
+	list->_buffer[2].iconName = "stock_new-24h-appointment";
 
 	list->_buffer[3].id = CREATE_CALENDAR_ID;
 	list->_buffer[3].description = _("New calendar");
 	list->_buffer[3].menuDescription = _("C_alendar");
 	list->_buffer[3].tooltip = _("Create a new calendar");
 	list->_buffer[3].menuShortcut = 'a';
-	list->_buffer[3].iconName = "evolution-calendar-mini.png";
+	list->_buffer[3].iconName = "stock_calendar";
 
 	return list;
 }
Index: calendar/gui/e-cal-view.c
===================================================================
RCS file: /cvs/gnome/evolution/calendar/gui/e-cal-view.c,v
retrieving revision 1.27
diff -u -r1.27 e-cal-view.c
--- calendar/gui/e-cal-view.c	16 Dec 2003 23:29:07 -0000	1.27
+++ calendar/gui/e-cal-view.c	25 Dec 2003 00:06:00 -0000
@@ -48,9 +48,10 @@
 #include "print.h"
 #include "goto.h"
 #include "ea-calendar.h"
+#include "e-icon-factory.h"
 
 /* Used for the status bar messages */
-#define EVOLUTION_CALENDAR_PROGRESS_IMAGE "evolution-calendar-mini.png"
+#define EVOLUTION_CALENDAR_PROGRESS_IMAGE "stock_calendar"
 static GdkPixbuf *progress_icon = NULL;
 
 struct _ECalendarViewPrivate {
@@ -515,7 +516,7 @@
 		char *client_id = g_strdup_printf ("%p", cal_view);
 
 		if (progress_icon == NULL)
-			progress_icon = gdk_pixbuf_new_from_file (EVOLUTION_IMAGESDIR "/" EVOLUTION_CALENDAR_PROGRESS_IMAGE, NULL);
+			progress_icon = e_icon_factory_get_icon (EVOLUTION_CALENDAR_PROGRESS_IMAGE, 16);
 
 		cal_view->priv->activity_id = e_activity_handler_operation_started (activity_handler, client_id, progress_icon, message, TRUE);
 
@@ -1233,6 +1234,7 @@
 
 	for (i = 0; context_menu[i].name; i++) {
 		GtkWidget *pixmap_widget = NULL;
+		GdkPixbuf *pixbuf;
 
 		if (!strcmp (context_menu[i].name, _("_Copy")))
 			pixmap_widget = gtk_image_new_from_stock (GTK_STOCK_COPY, GTK_ICON_SIZE_MENU);
@@ -1246,14 +1248,26 @@
 			pixmap_widget = gtk_image_new_from_stock (GTK_STOCK_HOME, GTK_ICON_SIZE_MENU);
 		else if (!strcmp (context_menu[i].name, _("_Go to Date...")))
 			pixmap_widget = gtk_image_new_from_stock (GTK_STOCK_JUMP_TO, GTK_ICON_SIZE_MENU);
-		else if (!strcmp (context_menu[i].name, _("New _Appointment...")))
-			pixmap_widget = gtk_image_new_from_file (EVOLUTION_IMAGESDIR "/new_appointment.xpm");
-		else if (!strcmp (context_menu[i].name, _("New All Day _Event")))
-			pixmap_widget = gtk_image_new_from_file (EVOLUTION_IMAGESDIR "/new_all_day_event.png");
-		else if (!strcmp (context_menu[i].name, _("New Meeting")))
-			pixmap_widget = gtk_image_new_from_file (EVOLUTION_IMAGESDIR "/meeting-request-16.png");
-		else if (!strcmp (context_menu[i].name, _("New Task")))
-			pixmap_widget = gtk_image_new_from_file (EVOLUTION_IMAGESDIR "/new_task-16.png");
+		else if (!strcmp (context_menu[i].name, _("New _Appointment..."))) {
+			pixbuf = e_icon_factory_get_icon ("stock_new-appointment", 16);
+			pixmap_widget = gtk_image_new_from_pixbuf (pixbuf);
+			gdk_pixbuf_unref (pixbuf);
+		}
+		else if (!strcmp (context_menu[i].name, _("New All Day _Event"))) {
+			pixbuf = e_icon_factory_get_icon ("stock_new-24h-appointment", 16);
+			pixmap_widget = gtk_image_new_from_pixbuf (pixbuf);
+			gdk_pixbuf_unref (pixbuf);
+		}
+		else if (!strcmp (context_menu[i].name, _("New Meeting"))) {
+			pixbuf = e_icon_factory_get_icon ("stock_new-meeting", 16);
+			pixmap_widget = gtk_image_new_from_pixbuf (pixbuf);
+			gdk_pixbuf_unref (pixbuf);
+		}
+		else if (!strcmp (context_menu[i].name, _("New Task"))) {
+			pixbuf = e_icon_factory_get_icon ("stock_task", 16);
+			pixmap_widget = gtk_image_new_from_pixbuf (pixbuf);
+			gdk_pixbuf_unref (pixbuf);
+		}
 		else if (!strcmp (context_menu[i].name, _("_Open")))
 			pixmap_widget = gtk_image_new_from_stock (GTK_STOCK_OPEN, GTK_ICON_SIZE_MENU);
 		else if (!strcmp (context_menu[i].name, _("_Paste")))
Index: calendar/gui/e-calendar-table.c
===================================================================
RCS file: /cvs/gnome/evolution/calendar/gui/e-calendar-table.c,v
retrieving revision 1.103
diff -u -r1.103 e-calendar-table.c
--- calendar/gui/e-calendar-table.c	16 Dec 2003 23:29:07 -0000	1.103
+++ calendar/gui/e-calendar-table.c	25 Dec 2003 00:06:00 -0000
@@ -51,14 +51,8 @@
 #include "e-cell-date-edit-text.h"
 #include "e-comp-editor-registry.h"
 #include "print.h"
+#include "e-icon-factory.h"
 
-/* Pixmaps. */
-#include "art/task.xpm"
-#include "art/task-recurring.xpm"
-#include "art/task-assigned.xpm"
-#include "art/task-assigned-to.xpm"
-
-#include "art/check-filled.xpm"
 
 extern ECompEditorRegistry *comp_editor_registry;
 
@@ -112,8 +106,8 @@
 
 /* The icons to represent the task. */
 #define E_CALENDAR_MODEL_NUM_ICONS	4
-static char** icon_xpm_data[E_CALENDAR_MODEL_NUM_ICONS] = {
-	task_xpm, task_recurring_xpm, task_assigned_xpm, task_assigned_to_xpm
+static const char* icon_names[E_CALENDAR_MODEL_NUM_ICONS] = {
+	"stock_task", "stock_task-recurring", "stock_task-assigned", "stock_task-assigned-to"
 };
 static GdkPixbuf* icon_pixbufs[E_CALENDAR_MODEL_NUM_ICONS] = { 0 };
 
@@ -485,15 +479,14 @@
 
 	if (!icon_pixbufs[0])
 		for (i = 0; i < E_CALENDAR_MODEL_NUM_ICONS; i++) {
-			icon_pixbufs[i] = gdk_pixbuf_new_from_xpm_data (
-				(const char **) icon_xpm_data[i]);
+			icon_pixbufs[i] = e_icon_factory_get_icon (icon_names[i], 16);
 		}
 
 	cell = e_cell_toggle_new (0, E_CALENDAR_MODEL_NUM_ICONS, icon_pixbufs);
 	e_table_extras_add_cell(extras, "icon", cell);
 	e_table_extras_add_pixbuf(extras, "icon", icon_pixbufs[0]);
 
-	pixbuf = gdk_pixbuf_new_from_xpm_data ((const char **) check_filled_xpm);
+	pixbuf = e_icon_factory_get_icon ("stock_check-filled", 16);
 	e_table_extras_add_pixbuf(extras, "complete", pixbuf);
 	gdk_pixbuf_unref(pixbuf);
 
@@ -1354,7 +1347,7 @@
 #endif
 
 /* Displays messages on the status bar */
-#define EVOLUTION_TASKS_PROGRESS_IMAGE "evolution-tasks-mini.png"
+#define EVOLUTION_TASKS_PROGRESS_IMAGE "stock_task-list"
 static GdkPixbuf *progress_icon = NULL;
 
 void
@@ -1371,9 +1364,9 @@
 		}
         } else if (cal_table->activity_id == 0) {
                 char *client_id = g_strdup_printf ("%p", cal_table);
-                                                                                
+                                 
                 if (progress_icon == NULL)
-                        progress_icon = gdk_pixbuf_new_from_file (EVOLUTION_IMAGESDIR "/" EVOLUTION_TASKS_PROGRESS_IMAGE, NULL);
+                        progress_icon = e_icon_factory_get_icon (EVOLUTION_TASKS_PROGRESS_IMAGE, 16);
 
                 cal_table->activity_id = e_activity_handler_operation_started (activity_handler, client_id,
 									       progress_icon, message, TRUE);
Index: calendar/gui/e-day-view-main-item.c
===================================================================
RCS file: /cvs/gnome/evolution/calendar/gui/e-day-view-main-item.c,v
retrieving revision 1.36
diff -u -r1.36 e-day-view-main-item.c
--- calendar/gui/e-day-view-main-item.c	7 Nov 2003 05:51:59 -0000	1.36
+++ calendar/gui/e-day-view-main-item.c	25 Dec 2003 00:06:02 -0000
@@ -644,15 +644,16 @@
 			max_icon_h = item_y + item_h - icon_y
 				- E_DAY_VIEW_EVENT_BORDER_HEIGHT;
 
-			gdk_gc_set_clip_origin (gc, icon_x, icon_y);
-			gdk_gc_set_clip_mask (gc, day_view->reminder_mask);
-			gdk_draw_pixmap (drawable, gc,
+			gdk_gc_set_clip_mask (gc, NULL);
+			gdk_draw_pixbuf (drawable, gc,
 					 day_view->reminder_icon,
 					 0, 0, icon_x, icon_y,
 					 MIN (E_DAY_VIEW_ICON_WIDTH,
 					      max_icon_w),
 					 MIN (E_DAY_VIEW_ICON_HEIGHT,
-					      max_icon_h));
+					      max_icon_h),
+					 GDK_RGB_DITHER_NORMAL,
+					 0, 0);
 			icon_x += icon_x_inc;
 			icon_y += icon_y_inc;
 		}
@@ -663,16 +664,16 @@
 			max_icon_h = item_y + item_h - icon_y
 				- E_DAY_VIEW_EVENT_BORDER_HEIGHT;
 
-			gdk_gc_set_clip_origin (gc, icon_x, icon_y);
-			gdk_gc_set_clip_mask (gc, day_view->recurrence_mask);
-			gdk_draw_pixmap (drawable, gc,
+			gdk_gc_set_clip_mask (gc, NULL);
+			gdk_draw_pixbuf (drawable, gc,
 					 day_view->recurrence_icon,
 					 0, 0, icon_x, icon_y,
 					 MIN (E_DAY_VIEW_ICON_WIDTH,
 					      max_icon_w),
 					 MIN (E_DAY_VIEW_ICON_HEIGHT,
-					      max_icon_h));
-
+					      max_icon_h),
+					 GDK_RGB_DITHER_NORMAL,
+					 0, 0);
 			icon_x += icon_x_inc;
 			icon_y += icon_y_inc;
 		}
@@ -683,15 +684,16 @@
 			max_icon_h = item_y + item_h - icon_y
 				- E_DAY_VIEW_EVENT_BORDER_HEIGHT;
 
-			gdk_gc_set_clip_origin (gc, icon_x, icon_y);
-			gdk_gc_set_clip_mask (gc, day_view->timezone_mask);
-			gdk_draw_pixmap (drawable, gc,
+			gdk_gc_set_clip_mask (gc, NULL);
+			gdk_draw_pixbuf (drawable, gc,
 					 day_view->timezone_icon,
 					 0, 0, icon_x, icon_y,
 					 MIN (E_DAY_VIEW_ICON_WIDTH,
 					      max_icon_w),
 					 MIN (E_DAY_VIEW_ICON_HEIGHT,
-					      max_icon_h));
+					      max_icon_h),
+					 GDK_RGB_DITHER_NORMAL,
+					 0, 0);
 			icon_x += icon_x_inc;
 			icon_y += icon_y_inc;
 		}
@@ -703,15 +705,16 @@
 			max_icon_h = item_y + item_h - icon_y
 				- E_DAY_VIEW_EVENT_BORDER_HEIGHT;
 
-			gdk_gc_set_clip_origin (gc, icon_x, icon_y);
-			gdk_gc_set_clip_mask (gc, day_view->meeting_mask);
-			gdk_draw_pixmap (drawable, gc,
+			gdk_gc_set_clip_mask (gc, NULL);
+			gdk_draw_pixbuf (drawable, gc,
 					 day_view->meeting_icon,
 					 0, 0, icon_x, icon_y,
 					 MIN (E_DAY_VIEW_ICON_WIDTH,
 					      max_icon_w),
 					 MIN (E_DAY_VIEW_ICON_HEIGHT,
-					      max_icon_h));
+					      max_icon_h),
+					 GDK_RGB_DITHER_NORMAL,
+					 0, 0);
 			icon_x += icon_x_inc;
 			icon_y += icon_y_inc;
 		}
Index: calendar/gui/e-day-view-top-item.c
===================================================================
RCS file: /cvs/gnome/evolution/calendar/gui/e-day-view-top-item.c,v
retrieving revision 1.39
diff -u -r1.39 e-day-view-top-item.c
--- calendar/gui/e-day-view-top-item.c	7 Nov 2003 05:51:59 -0000	1.39
+++ calendar/gui/e-day-view-top-item.c	25 Dec 2003 00:06:03 -0000
@@ -528,24 +528,26 @@
 		+ E_DAY_VIEW_ICON_Y_PAD - y;
 
 	if (icon_x <= max_icon_x && e_cal_component_has_recurrences (comp)) {
-		gdk_gc_set_clip_origin (gc, icon_x, icon_y);
-		gdk_gc_set_clip_mask (gc, day_view->recurrence_mask);
-		gdk_draw_pixmap (drawable, gc,
+		gdk_gc_set_clip_mask (gc, NULL);
+		gdk_draw_pixbuf (drawable, gc,
 				 day_view->recurrence_icon,
 				 0, 0, icon_x, icon_y,
 				 E_DAY_VIEW_ICON_WIDTH,
-				 E_DAY_VIEW_ICON_HEIGHT);
+				 E_DAY_VIEW_ICON_HEIGHT,
+				 GDK_RGB_DITHER_NORMAL,
+				 0, 0);
 		icon_x -= icon_x_inc;
 	}
 
 	if (icon_x <= max_icon_x && e_cal_component_has_alarms (comp)) {
-		gdk_gc_set_clip_origin (gc, icon_x, icon_y);
-		gdk_gc_set_clip_mask (gc, day_view->reminder_mask);
-		gdk_draw_pixmap (drawable, gc,
+		gdk_gc_set_clip_mask (gc, NULL);
+		gdk_draw_pixbuf (drawable, gc,
 				 day_view->reminder_icon,
 				 0, 0, icon_x, icon_y,
 				 E_DAY_VIEW_ICON_WIDTH,
-				 E_DAY_VIEW_ICON_HEIGHT);
+				 E_DAY_VIEW_ICON_HEIGHT,
+				 GDK_RGB_DITHER_NORMAL,
+				 0, 0);
 		icon_x -= icon_x_inc;
 	}
 
Index: calendar/gui/e-day-view.c
===================================================================
RCS file: /cvs/gnome/evolution/calendar/gui/e-day-view.c,v
retrieving revision 1.229
diff -u -r1.229 e-day-view.c
--- calendar/gui/e-day-view.c	9 Dec 2003 01:23:48 -0000	1.229
+++ calendar/gui/e-day-view.c	25 Dec 2003 00:06:18 -0000
@@ -71,12 +71,7 @@
 #include "e-day-view-layout.h"
 #include "e-day-view-main-item.h"
 #include "misc.h"
-
-/* Images */
-#include "art/bell.xpm"
-#include "art/recur.xpm"
-#include "art/timezone-16.xpm"
-#include "art/schedule-meeting-16.xpm"
+#include "e-icon-factory.h"
 
 /* The minimum amount of space wanted on each side of the date string. */
 #define E_DAY_VIEW_DATE_X_PAD	4
@@ -991,13 +986,13 @@
 	if (nfailed)
 		g_warning ("Failed to allocate all colors");
 
+	gdk_gc_set_colormap (day_view->main_gc, colormap);
 
 	/* Create the pixmaps. */
-	day_view->reminder_icon = gdk_pixmap_colormap_create_from_xpm_d (NULL, colormap, &day_view->reminder_mask, NULL, bell_xpm);
-	day_view->recurrence_icon = gdk_pixmap_colormap_create_from_xpm_d (NULL, colormap, &day_view->recurrence_mask, NULL, recur_xpm);
-	day_view->timezone_icon = gdk_pixmap_colormap_create_from_xpm_d (NULL, colormap, &day_view->timezone_mask, NULL, timezone_16_xpm);
-	day_view->meeting_icon = gdk_pixmap_colormap_create_from_xpm_d (NULL, colormap, &day_view->meeting_mask, NULL, schedule_meeting_16_xpm);
-
+	day_view->reminder_icon = e_icon_factory_get_icon ("stock_bell", E_DAY_VIEW_ICON_WIDTH);
+	day_view->recurrence_icon = e_icon_factory_get_icon ("stock_refresh", E_DAY_VIEW_ICON_WIDTH);
+	day_view->timezone_icon = e_icon_factory_get_icon ("stock_timezone", E_DAY_VIEW_ICON_WIDTH);
+	day_view->meeting_icon = e_icon_factory_get_icon ("stock_people", E_DAY_VIEW_ICON_WIDTH);
 
 
 	/* Set the canvas item colors. */
@@ -1059,10 +1054,14 @@
 	colormap = gtk_widget_get_colormap (widget);
 	gdk_colormap_free_colors (colormap, day_view->colors, E_DAY_VIEW_COLOR_LAST);
 
-	gdk_pixmap_unref (day_view->reminder_icon);
+	g_object_unref (day_view->reminder_icon);
 	day_view->reminder_icon = NULL;
-	gdk_pixmap_unref (day_view->recurrence_icon);
+	g_object_unref (day_view->recurrence_icon);
 	day_view->recurrence_icon = NULL;
+	g_object_unref (day_view->timezone_icon);
+	day_view->timezone_icon = NULL;
+	g_object_unref (day_view->meeting_icon);
+	day_view->meeting_icon = NULL;
 
 	if (GTK_WIDGET_CLASS (parent_class)->unrealize)
 		(*GTK_WIDGET_CLASS (parent_class)->unrealize)(widget);
Index: calendar/gui/e-day-view.h
===================================================================
RCS file: /cvs/gnome/evolution/calendar/gui/e-day-view.h,v
retrieving revision 1.56
diff -u -r1.56 e-day-view.h
--- calendar/gui/e-day-view.h	3 Dec 2003 15:38:28 -0000	1.56
+++ calendar/gui/e-day-view.h	25 Dec 2003 00:06:22 -0000
@@ -326,14 +326,10 @@
 	GdkGC *main_gc;
 
 	/* The icons. */
-	GdkPixmap *reminder_icon;
-	GdkBitmap *reminder_mask;
-	GdkPixmap *recurrence_icon;
-	GdkBitmap *recurrence_mask;
-	GdkPixmap *timezone_icon;
-	GdkBitmap *timezone_mask;
-	GdkPixmap *meeting_icon;
-	GdkBitmap *meeting_mask;
+	GdkPixbuf *reminder_icon;
+	GdkPixbuf *recurrence_icon;
+	GdkPixbuf *timezone_icon;
+	GdkPixbuf *meeting_icon;
 
 	/* Colors for drawing. */
 	GdkColor colors[E_DAY_VIEW_COLOR_LAST];
Index: calendar/gui/e-itip-control.c
===================================================================
RCS file: /cvs/gnome/evolution/calendar/gui/e-itip-control.c,v
retrieving revision 1.135
diff -u -r1.135 e-itip-control.c
--- calendar/gui/e-itip-control.c	21 Dec 2003 17:05:18 -0000	1.135
+++ calendar/gui/e-itip-control.c	25 Dec 2003 00:06:23 -0000
@@ -54,6 +54,7 @@
 #include "calendar-config.h"
 #include "itip-utils.h"
 #include "e-itip-control.h"
+#include "e-icon-factory.h"
 
 struct _EItipControlPrivate {
 	GtkWidget *html;
@@ -770,6 +771,7 @@
 {
 	EItipControlPrivate *priv;
 	GtkHTMLStream *html_stream;
+	gchar *filename;
 
 	priv = itip->priv;
 
@@ -787,7 +789,9 @@
 	/* The column for the image */
 	gtk_html_stream_printf (html_stream, "<tr><td width=48 align=\"center\" valign=\"top\" rowspan=\"8\">");
 	/* The image */
-	gtk_html_stream_printf (html_stream, "<img src=\"/meeting-request.png\"></td>");
+	filename = e_icon_factory_get_icon_filename ("stock_new-meeting", 48);
+	gtk_html_stream_printf (html_stream, "<img src=\"%s\"></td>", filename);
+	g_free (filename);
 
 	gtk_html_stream_printf (html_stream, "<td align=\"left\" valign=\"top\">");
 
@@ -820,6 +824,7 @@
 	const char *string;
 	gchar *html;
 	const gchar *const_html;
+	gchar *filename;
 
 	priv = itip->priv;
 
@@ -843,8 +848,9 @@
 	gtk_html_write (GTK_HTML (priv->html), html_stream, const_html, strlen(const_html));
 
 	/* The image */
-	const_html = "<img src=\"/meeting-request.png\"></td>";
-	gtk_html_write (GTK_HTML (priv->html), html_stream, const_html, strlen(const_html));
+	filename = e_icon_factory_get_icon_filename ("stock_new-meeting", 48);
+	gtk_html_stream_printf (html_stream, "<img src=\"%s\"></td>", filename);
+	g_free (filename);
 
 	const_html = "<td align=\"left\" valign=\"top\">";
 	gtk_html_write (GTK_HTML (priv->html), html_stream, const_html, strlen(const_html));
Index: calendar/gui/e-timezone-entry.c
===================================================================
RCS file: /cvs/gnome/evolution/calendar/gui/e-timezone-entry.c,v
retrieving revision 1.22
diff -u -r1.22 e-timezone-entry.c
--- calendar/gui/e-timezone-entry.c	8 Dec 2003 14:16:13 -0000	1.22
+++ calendar/gui/e-timezone-entry.c	25 Dec 2003 00:06:24 -0000
@@ -37,9 +37,7 @@
 #include <gal/util/e-util.h>
 #include <widgets/e-timezone-dialog/e-timezone-dialog.h>
 #include "e-timezone-entry.h"
-
-/* The timezone icon for the button. */
-#include "art/timezone-16.xpm"
+#include "e-icon-factory.h"
 
 struct _ETimezoneEntryPrivate {
 	/* The current timezone, set in e_timezone_entry_set_timezone()
@@ -115,10 +113,8 @@
 e_timezone_entry_init		(ETimezoneEntry	*tentry)
 {
 	ETimezoneEntryPrivate *priv;
-	GdkColormap *colormap;
-	GdkPixmap *timezone_icon;
-	GdkBitmap *timezone_mask;
-	GtkWidget *pixmap;
+	GtkWidget *gtk_image;
+	GdkPixbuf *gdk_pixbuf;
 
 	tentry->priv = priv = g_new0 (ETimezoneEntryPrivate, 1);
 
@@ -137,12 +133,12 @@
 	gtk_box_pack_start (GTK_BOX (tentry), priv->button, FALSE, FALSE, 6);
 	gtk_widget_show (priv->button);
 
-	colormap = gtk_widget_get_colormap (priv->button);
-	timezone_icon = gdk_pixmap_colormap_create_from_xpm_d (NULL, colormap, &timezone_mask, NULL, timezone_16_xpm);
-
-	pixmap = gtk_pixmap_new (timezone_icon, timezone_mask);
-	gtk_container_add (GTK_CONTAINER (priv->button), pixmap);
-	gtk_widget_show (pixmap);
+	gdk_pixbuf = e_icon_factory_get_icon ("stock_timezone", 16);
+	gtk_image = gtk_image_new_from_pixbuf (gdk_pixbuf);
+	gtk_container_add (GTK_CONTAINER (priv->button), gtk_image);
+	gtk_widget_show (gtk_image);
+	
+	g_object_unref (gdk_pixbuf);
 }
 
 
Index: calendar/gui/e-week-view-event-item.c
===================================================================
RCS file: /cvs/gnome/evolution/calendar/gui/e-week-view-event-item.c,v
retrieving revision 1.45
diff -u -r1.45 e-week-view-event-item.c
--- calendar/gui/e-week-view-event-item.c	7 Nov 2003 05:51:59 -0000	1.45
+++ calendar/gui/e-week-view-event-item.c	25 Dec 2003 00:06:26 -0000
@@ -642,35 +642,38 @@
 		icon_x -= icon_x_inc * num_icons;
 
 	if (draw_reminder_icon && icon_x + E_WEEK_VIEW_ICON_WIDTH <= x2) {
-		gdk_gc_set_clip_origin (gc, icon_x, icon_y);
-		gdk_gc_set_clip_mask (gc, week_view->reminder_mask);
-		gdk_draw_pixmap (drawable, gc,
+		gdk_gc_set_clip_mask (gc, NULL);
+		gdk_draw_pixbuf (drawable, gc,
 				 week_view->reminder_icon,
 				 0, 0, icon_x, icon_y,
 				 E_WEEK_VIEW_ICON_WIDTH,
-				 E_WEEK_VIEW_ICON_HEIGHT);
+				 E_WEEK_VIEW_ICON_HEIGHT,
+				 GDK_RGB_DITHER_NORMAL,
+				 0, 0);
 		icon_x += icon_x_inc;
 	}
 
 	if (draw_recurrence_icon && icon_x + E_WEEK_VIEW_ICON_WIDTH <= x2) {
-		gdk_gc_set_clip_origin (gc, icon_x, icon_y);
-		gdk_gc_set_clip_mask (gc, week_view->recurrence_mask);
-		gdk_draw_pixmap (drawable, gc,
+		gdk_gc_set_clip_mask (gc, NULL);
+		gdk_draw_pixbuf (drawable, gc,
 				 week_view->recurrence_icon,
 				 0, 0, icon_x, icon_y,
 				 E_WEEK_VIEW_ICON_WIDTH,
-				 E_WEEK_VIEW_ICON_HEIGHT);
+				 E_WEEK_VIEW_ICON_HEIGHT,
+				 GDK_RGB_DITHER_NORMAL,
+				 0, 0);
 		icon_x += icon_x_inc;
 	}
 
 	if (draw_timezone_icon && icon_x + E_WEEK_VIEW_ICON_WIDTH <= x2) {
-		gdk_gc_set_clip_origin (gc, icon_x, icon_y);
-		gdk_gc_set_clip_mask (gc, week_view->timezone_mask);
-		gdk_draw_pixmap (drawable, gc,
+		gdk_gc_set_clip_mask (gc, NULL);
+		gdk_draw_pixbuf (drawable, gc,
 				 week_view->timezone_icon,
 				 0, 0, icon_x, icon_y,
 				 E_WEEK_VIEW_ICON_WIDTH,
-				 E_WEEK_VIEW_ICON_HEIGHT);
+				 E_WEEK_VIEW_ICON_HEIGHT,
+				 GDK_RGB_DITHER_NORMAL,
+				 0, 0);
 		icon_x += icon_x_inc;
 	}
 
Index: calendar/gui/e-week-view.c
===================================================================
RCS file: /cvs/gnome/evolution/calendar/gui/e-week-view.c,v
retrieving revision 1.195
diff -u -r1.195 e-week-view.c
--- calendar/gui/e-week-view.c	17 Dec 2003 16:30:16 -0000	1.195
+++ calendar/gui/e-week-view.c	25 Dec 2003 00:06:34 -0000
@@ -68,11 +68,9 @@
 #include "e-week-view-main-item.h"
 #include "e-week-view-titles-item.h"
 #include "misc.h"
+#include "e-icon-factory.h"
 
 /* Images */
-#include "art/bell.xpm"
-#include "art/recur.xpm"
-#include "art/timezone-16.xpm"
 #include "art/jump.xpm"
 
 #define E_WEEK_VIEW_SMALL_FONT_PTSIZE 7
@@ -89,7 +87,6 @@
    we get from the server. */
 #define E_WEEK_VIEW_LAYOUT_TIMEOUT	100
 
-
 typedef struct {
 	EWeekView *week_view;
 	ECalModelComponent *comp_data;
@@ -545,11 +542,12 @@
 	if (nfailed)
 		g_warning ("Failed to allocate all colors");
 
+	gdk_gc_set_colormap (week_view->main_gc, colormap);
 
 	/* Create the pixmaps. */
-	week_view->reminder_icon = gdk_pixmap_colormap_create_from_xpm_d (NULL, colormap, &week_view->reminder_mask, NULL, bell_xpm);
-	week_view->recurrence_icon = gdk_pixmap_colormap_create_from_xpm_d (NULL, colormap, &week_view->recurrence_mask, NULL, recur_xpm);
-	week_view->timezone_icon = gdk_pixmap_colormap_create_from_xpm_d (NULL, colormap, &week_view->timezone_mask, NULL, timezone_16_xpm);
+	week_view->reminder_icon = e_icon_factory_get_icon ("stock_bell", E_WEEK_VIEW_ICON_WIDTH);
+	week_view->recurrence_icon = e_icon_factory_get_icon ("stock_refresh", E_WEEK_VIEW_ICON_WIDTH);
+	week_view->timezone_icon = e_icon_factory_get_icon ("stock_timezone", E_WEEK_VIEW_ICON_WIDTH);
 }
 
 
@@ -567,10 +565,12 @@
 	colormap = gtk_widget_get_colormap (widget);
 	gdk_colormap_free_colors (colormap, week_view->colors, E_WEEK_VIEW_COLOR_LAST);
 
-	gdk_pixmap_unref (week_view->reminder_icon);
+	g_object_unref (week_view->reminder_icon);
 	week_view->reminder_icon = NULL;
-	gdk_pixmap_unref (week_view->recurrence_icon);
+	g_object_unref (week_view->recurrence_icon);
 	week_view->recurrence_icon = NULL;
+	g_object_unref (week_view->timezone_icon);
+	week_view->timezone_icon = NULL;
 
 	if (GTK_WIDGET_CLASS (parent_class)->unrealize)
 		(*GTK_WIDGET_CLASS (parent_class)->unrealize)(widget);
Index: calendar/gui/e-week-view.h
===================================================================
RCS file: /cvs/gnome/evolution/calendar/gui/e-week-view.h,v
retrieving revision 1.50
diff -u -r1.50 e-week-view.h
--- calendar/gui/e-week-view.h	7 Nov 2003 05:52:00 -0000	1.50
+++ calendar/gui/e-week-view.h	25 Dec 2003 00:06:35 -0000
@@ -278,12 +278,9 @@
 	GdkGC *main_gc;
 
 	/* The icons. */
-	GdkPixmap *reminder_icon;
-	GdkBitmap *reminder_mask;
-	GdkPixmap *recurrence_icon;
-	GdkBitmap *recurrence_mask;
-	GdkPixmap *timezone_icon;
-	GdkBitmap *timezone_mask;
+	GdkPixbuf *reminder_icon;
+	GdkPixbuf *recurrence_icon;
+	GdkPixbuf *timezone_icon;
 
 	/* Colors for drawing. */
 	GdkColor colors[E_WEEK_VIEW_COLOR_LAST];
Index: calendar/gui/tasks-component.c
===================================================================
RCS file: /cvs/gnome/evolution/calendar/gui/tasks-component.c,v
retrieving revision 1.32
diff -u -r1.32 tasks-component.c
--- calendar/gui/tasks-component.c	21 Dec 2003 17:05:19 -0000	1.32
+++ calendar/gui/tasks-component.c	25 Dec 2003 00:06:36 -0000
@@ -44,6 +44,7 @@
 #include "dialogs/new-task-list.h"
 #include "dialogs/task-editor.h"
 #include "widgets/misc/e-source-selector.h"
+#include "e-icon-factory.h"
 
 
 #define CREATE_TASK_ID      "task"
@@ -280,19 +281,18 @@
 
 /* Callbacks.  */
 static void
-add_popup_menu_item (GtkMenu *menu, const char *label, const char *pixmap,
+add_popup_menu_item (GtkMenu *menu, const char *label, const char *icon_name,
 		     GCallback callback, gpointer user_data, gboolean sensitive)
 {
 	GtkWidget *item, *image;
+	GdkPixbuf *pixbuf;
 
-	if (pixmap) {
+	if (icon_name) {
 		item = gtk_image_menu_item_new_with_label (label);
 
 		/* load the image */
-		if (g_file_test (pixmap, G_FILE_TEST_EXISTS))
-			image = gtk_image_new_from_file (pixmap);
-		else
-			image = gtk_image_new_from_stock (pixmap, GTK_ICON_SIZE_MENU);
+		pixbuf = e_icon_factory_get_icon (icon_name, 16);
+		image = gtk_image_new_from_pixbuf (pixbuf);
 
 		if (image) {
 			gtk_widget_show (image);
@@ -408,13 +408,13 @@
 	sensitive = e_source_selector_peek_primary_selection (E_SOURCE_SELECTOR (component->priv->source_selector)) ?
 		TRUE : FALSE;
 
-	add_popup_menu_item (menu, _("New Task List"), EVOLUTION_IMAGESDIR "/evolution-tasks-mini.png",
+	add_popup_menu_item (menu, _("New Task List"), "stock_task-list",
 			     G_CALLBACK (new_task_list_cb), component, TRUE);
-	add_popup_menu_item (menu, _("Copy"), EVOLUTION_IMAGESDIR "/folder-copy-16.png",
+	add_popup_menu_item (menu, _("Copy"), "stock_folder-copy",
 			     G_CALLBACK (copy_task_list_cb), component, sensitive);
 	add_popup_menu_item (menu, _("Rename"), NULL, G_CALLBACK (rename_task_list_cb),
 			     component, sensitive);
-	add_popup_menu_item (menu, _("Delete"), GTK_STOCK_DELETE, G_CALLBACK (delete_task_list_cb),
+	add_popup_menu_item (menu, _("Delete"), "stock_delete", G_CALLBACK (delete_task_list_cb),
 			     component, sensitive);
 }
 
@@ -587,14 +587,14 @@
 	list->_buffer[0].menuDescription = _("_Task");
 	list->_buffer[0].tooltip = _("Create a new task");
 	list->_buffer[0].menuShortcut = 't';
-	list->_buffer[0].iconName = "new_task-16.png";
+	list->_buffer[0].iconName = "stock_task";
 
 	list->_buffer[1].id = CREATE_TASK_LIST_ID;
 	list->_buffer[1].description = _("New task list");
 	list->_buffer[1].menuDescription = _("_Task List");
 	list->_buffer[1].tooltip = _("Create a new task list");
 	list->_buffer[1].menuShortcut = 'n';
-	list->_buffer[1].iconName = "evolution-tasks-mini.png";
+	list->_buffer[1].iconName = "stock_task-list";
 
 	return list;
 }
Index: calendar/gui/alarm-notify/Makefile.am
===================================================================
RCS file: /cvs/gnome/evolution/calendar/gui/alarm-notify/Makefile.am,v
retrieving revision 1.37
diff -u -r1.37 Makefile.am
--- calendar/gui/alarm-notify/Makefile.am	17 Nov 2003 15:13:30 -0000	1.37
+++ calendar/gui/alarm-notify/Makefile.am	25 Dec 2003 00:06:37 -0000
@@ -20,6 +20,7 @@
 INCLUDES = 						\
 	-DG_LOG_DOMAIN=\"evolution-alarm-notify\"	\
 	-I$(top_srcdir)					\
+	-I$(top_srcdir)/e-util				\
 	-I$(top_srcdir)/widgets				\
 	-DEVOLUTION_GLADEDIR=\""$(gladedir)"\"		\
 	-DEVOLUTION_IMAGESDIR=\""$(imagesdir)"\"	\
Index: calendar/gui/alarm-notify/alarm-notify-dialog.c
===================================================================
RCS file: /cvs/gnome/evolution/calendar/gui/alarm-notify/alarm-notify-dialog.c,v
retrieving revision 1.25
diff -u -r1.25 alarm-notify-dialog.c
--- calendar/gui/alarm-notify/alarm-notify-dialog.c	20 Nov 2003 15:11:39 -0000	1.25
+++ calendar/gui/alarm-notify/alarm-notify-dialog.c	25 Dec 2003 00:06:37 -0000
@@ -31,7 +31,6 @@
 #if 0 
 #  include <libgnomeui/gnome-winhints.h>
 #endif
-#include <libgnomeui/gnome-window-icon.h>
 #include <glade/glade.h>
 #include <e-util/e-time-utils.h>
 #include <gtkhtml/gtkhtml.h>
@@ -40,6 +39,7 @@
 #include "alarm-notify-dialog.h"
 #include "config-data.h"
 #include "util.h"
+#include "e-icon-factory.h"
 
 
 GtkWidget *make_html_display (gchar *widget_name, char *s1, char *s2, int scroll, int shadow);
@@ -223,9 +223,14 @@
 	char *buf;
 	char *start, *end;
 	char *bg_path = "file://" EVOLUTION_IMAGESDIR "/bcg.png";
-	char *image_path = "file://" EVOLUTION_IMAGESDIR "/alarm.png";
+	gchar *image_path;
+	gchar *icon_path;
 	icaltimezone *current_zone;
 
+	icon_path = e_icon_factory_get_icon_filename ("stock_alarm", 48);
+	image_path = g_strdup_printf ("file://%s", icon_path);
+	g_free (icon_path);
+
 	/* Stringize the times */
 
 	current_zone = config_data_get_timezone ();
@@ -273,6 +278,7 @@
 
 	g_free (start);
 	g_free (end);
+	g_free (image_path);
 }
 
 /**
@@ -299,6 +305,7 @@
 	GtkHTMLStream *stream;
 	icaltimezone *current_zone;
 	char *buf, *title;
+	GList *icon_list;
 
 	g_return_val_if_fail (trigger != -1, NULL);
 
@@ -378,7 +385,13 @@
 		gtk_widget_realize (an->dialog);
 
 	gtk_window_stick (GTK_WINDOW (an->dialog));
-	gtk_window_set_icon_from_file (GTK_WINDOW (an->dialog), EVOLUTION_IMAGESDIR "/alarm.png", NULL);
+
+	icon_list = e_icon_factory_get_icon_list ("stock_alarm");
+	if (icon_list) {
+		gtk_window_set_icon_list (GTK_WINDOW (an->dialog), icon_list);
+		g_list_foreach (icon_list, (GFunc) g_object_unref, NULL);
+		g_list_free (icon_list);
+	}
 
 	gtk_widget_show (an->dialog);
 	return an;
Index: calendar/gui/alarm-notify/alarm-queue.c
===================================================================
RCS file: /cvs/gnome/evolution/calendar/gui/alarm-notify/alarm-queue.c,v
retrieving revision 1.49
diff -u -r1.49 alarm-queue.c
--- calendar/gui/alarm-notify/alarm-queue.c	17 Dec 2003 11:59:47 -0000	1.49
+++ calendar/gui/alarm-notify/alarm-queue.c	25 Dec 2003 00:06:39 -0000
@@ -49,6 +49,7 @@
 #include "config-data.h"
 #include "save.h"
 #include "util.h"
+#include "e-icon-factory.h"
 
 
 
@@ -818,14 +819,15 @@
 tray_icon_blink_cb (gpointer data)
 {
 	TrayIconData *tray_data = data;
-
-	/* FIXME: Use stock image equivalents when they become available */
+	GdkPixbuf *pixbuf;
 
 	tray_data->blink_state = tray_data->blink_state == TRUE ? FALSE : TRUE;
-	gtk_image_set_from_file (GTK_IMAGE (tray_data->image),
-				 tray_data->blink_state == TRUE ?
-				 EVOLUTION_IMAGESDIR "/appointment-reminder-excl.png" :
-				 EVOLUTION_IMAGESDIR "/appointment-reminder.png");
+	pixbuf = e_icon_factory_get_icon  (tray_data->blink_state == TRUE ?
+				 	   "stock_appointment-reminder-excl" :
+				 	   "stock_appointment-reminder",
+					   24);
+	gtk_image_set_from_pixbuf (GTK_IMAGE (tray_data->image), pixbuf);
+	gdk_pixbuf_unref (pixbuf);
 
 	return TRUE;
 }
@@ -846,6 +848,7 @@
 	ECalComponentText text;
 	char *str, *start_str, *end_str, *alarm_str;
 	icaltimezone *current_zone;
+	GdkPixbuf *pixbuf;
 
 	comp = cqa->alarms->comp;
 	qa = lookup_queued_alarm (cqa, alarm_id);
@@ -874,9 +877,10 @@
 	/* create the tray icon */
 	tooltips = gtk_tooltips_new ();
 
-	/* FIXME: Use stock image equivalent when it becomes available */
 	tray_icon = egg_tray_icon_new (qa->instance->auid);
-	image = gtk_image_new_from_file (EVOLUTION_IMAGESDIR "/appointment-reminder.png");
+	pixbuf = e_icon_factory_get_icon  ("stock_appointment-reminder", 24);
+	image = gtk_image_new_from_pixbuf (pixbuf);
+	gdk_pixbuf_unref (pixbuf);
 	ebox = gtk_event_box_new ();
 
 	gtk_widget_show (image);
Index: calendar/gui/dialogs/Makefile.am
===================================================================
RCS file: /cvs/gnome/evolution/calendar/gui/dialogs/Makefile.am,v
retrieving revision 1.56
diff -u -r1.56 Makefile.am
--- calendar/gui/dialogs/Makefile.am	24 Nov 2003 10:13:24 -0000	1.56
+++ calendar/gui/dialogs/Makefile.am	25 Dec 2003 00:06:40 -0000
@@ -20,6 +20,7 @@
 	-I$(top_builddir)/calendar/cal-client				\
 	-I$(top_builddir)/shell						\
 	-I$(top_srcdir)/shell						\
+	-I$(top_srcdir)/e-util						\
 	-DEVOLUTION_DATADIR=\""$(datadir)"\"				\
 	-DEVOLUTION_GLADEDIR=\""$(gladedir)"\"				\
 	-DEVOLUTION_IMAGESDIR=\""$(imagesdir)"\"			\
Index: calendar/gui/dialogs/comp-editor.c
===================================================================
RCS file: /cvs/gnome/evolution/calendar/gui/dialogs/comp-editor.c,v
retrieving revision 1.88
diff -u -r1.88 comp-editor.c
--- calendar/gui/dialogs/comp-editor.c	18 Dec 2003 02:41:52 -0000	1.88
+++ calendar/gui/dialogs/comp-editor.c	25 Dec 2003 00:06:42 -0000
@@ -33,7 +33,6 @@
 #include <libgnomeui/gnome-uidefs.h>
 #include <libgnomeui/gnome-dialog.h>
 #include <libgnomeui/gnome-dialog-util.h>
-#include <libgnomeui/gnome-window-icon.h>
 #include <libgnomeui/gnome-messagebox.h>
 #include <bonobo/bonobo-ui-container.h>
 #include <bonobo/bonobo-ui-util.h>
@@ -48,6 +47,7 @@
 #include "cancel-comp.h"
 #include "recur-comp.h"
 #include "comp-editor.h"
+#include "e-icon-factory.h"
 
 
 
@@ -121,18 +121,18 @@
 
 static EPixmap pixmaps [] =
 {
-	E_PIXMAP ("/menu/File/FileSave",			"save-16.png"),
-	E_PIXMAP ("/menu/File/FileSaveAndClose",		"save-16.png"),
-	E_PIXMAP ("/menu/File/FileSaveAs",			"save-as-16.png"),
-
-	E_PIXMAP ("/menu/File/FileDelete",			"evolution-trash-mini.png"),
-
-	E_PIXMAP ("/menu/File/FilePrint",			"print.xpm"),
-	E_PIXMAP ("/menu/File/FilePrintPreview",		"print-preview.xpm"),
-
-	E_PIXMAP ("/Toolbar/FileSaveAndClose",		        "buttons/save-24.png"),
-	E_PIXMAP ("/Toolbar/FilePrint",			        "buttons/print.png"),
-	E_PIXMAP ("/Toolbar/FileDelete",			"buttons/delete-message.png"),
+	E_PIXMAP ("/menu/File/FileSave",			"stock_save",          16),
+	E_PIXMAP ("/menu/File/FileSaveAndClose",		"stock_save",          16),
+	E_PIXMAP ("/menu/File/FileSaveAs",			"stock_save-as",       16),
+
+	E_PIXMAP ("/menu/File/FileDelete",			"stock_delete",        16),
+
+	E_PIXMAP ("/menu/File/FilePrint",			"stock_print",         16),
+	E_PIXMAP ("/menu/File/FilePrintPreview",		"stock_print-preview", 16),
+
+	E_PIXMAP ("/Toolbar/FileSaveAndClose",		        "stock_save",          24),
+	E_PIXMAP ("/Toolbar/FilePrint",			        "stock_print",         24),
+	E_PIXMAP ("/Toolbar/FileDelete",			"stock_delete",        24),
 
 	E_PIXMAP_END
 };
@@ -885,18 +885,18 @@
 	ECalComponentVType type;
 
 	if (!comp)
-		return EVOLUTION_IMAGESDIR "/evolution-calendar-mini.png";
+		return EVOLUTION_IMAGESDIR "stock_calendar";
 
 	type = e_cal_component_get_vtype (comp);
 	switch (type) {
 	case E_CAL_COMPONENT_EVENT:
-		return EVOLUTION_IMAGESDIR "/buttons/new_appointment.png";
+		return EVOLUTION_IMAGESDIR "stock_new-appointment";
 		break;
 	case E_CAL_COMPONENT_TODO:
-		return EVOLUTION_IMAGESDIR "/buttons/new_task.png";
+		return EVOLUTION_IMAGESDIR "stock_new-task";
 		break;
 	default:
-		return EVOLUTION_IMAGESDIR "/evolution-calendar-mini.png";
+		return EVOLUTION_IMAGESDIR "stock_calendar";
 	}
 }
 
@@ -929,11 +929,18 @@
 set_icon_from_comp (CompEditor *editor)
 {
 	CompEditorPrivate *priv;
-	const char *file;
+	const char *icon_name;
+	GList *icon_list;
 
 	priv = editor->priv;
-	file = make_icon_from_comp (priv->comp);
-	gnome_window_icon_set_from_file (GTK_WINDOW (editor), file);
+	icon_name = make_icon_from_comp (priv->comp);
+
+	icon_list = e_icon_factory_get_icon_list (icon_name);
+	if (icon_list) {
+		gtk_window_set_icon_list (GTK_WINDOW (editor), icon_list);
+		g_list_foreach (icon_list, (GFunc) g_object_unref, NULL);
+		g_list_free (icon_list);
+	}
 }
 
 static void
Index: calendar/gui/dialogs/event-editor.c
===================================================================
RCS file: /cvs/gnome/evolution/calendar/gui/dialogs/event-editor.c,v
retrieving revision 1.39
diff -u -r1.39 event-editor.c
--- calendar/gui/dialogs/event-editor.c	20 Nov 2003 15:11:40 -0000	1.39
+++ calendar/gui/dialogs/event-editor.c	25 Dec 2003 00:06:43 -0000
@@ -69,7 +69,7 @@
 static void model_row_delete_cb (GtkTreeModel *model, GtkTreePath *path, gpointer data);
 
 static EPixmap pixmaps [] = {
-	E_PIXMAP ("/Toolbar/Actions/ActionScheduleMeeting", "schedule-meeting-24.png"),
+	E_PIXMAP ("/Toolbar/Actions/ActionScheduleMeeting", "stock_people", 24),
 	E_PIXMAP_END
 };
 
Index: composer/ChangeLog
===================================================================
RCS file: /cvs/gnome/evolution/composer/ChangeLog,v
retrieving revision 1.589
diff -u -r1.589 ChangeLog
--- composer/ChangeLog	4 Dec 2003 17:24:22 -0000	1.589
+++ composer/ChangeLog	25 Dec 2003 00:06:48 -0000
@@ -1,3 +1,11 @@
+2003-12-24  Michael Terry <mterry fastmail fm>
+
+	* Makefile.am: Add e-util to include paths.  Part of bug 127812.
+
+	* e-msg-composer-select-file.c (run_selector),
+	e-msg-composer.c (create_composer): Use gnome-icon-theme names for
+	icons and e-icon-factory to look them up.  Part of bug 127812.
+
 2003-12-04  Jeffrey Stedfast  <fejj ximian com>
 
 	* e-msg-composer-hdrs.c (create_headers): Unifdef out the post-to
Index: composer/Makefile.am
===================================================================
RCS file: /cvs/gnome/evolution/composer/Makefile.am,v
retrieving revision 1.66
diff -u -r1.66 Makefile.am
--- composer/Makefile.am	26 Nov 2003 15:27:31 -0000	1.66
+++ composer/Makefile.am	25 Dec 2003 00:06:48 -0000
@@ -39,6 +39,7 @@
 INCLUDES =								\
 	-I$(top_srcdir)							\
 	-I$(top_builddir)						\
+	-I$(top_srcdir)/e-util						\
 	-I$(top_srcdir)/widgets						\
 	-I$(top_builddir)/widgets					\
 	-I$(top_srcdir)/camel					 	\
Index: composer/e-msg-composer-select-file.c
===================================================================
RCS file: /cvs/gnome/evolution/composer/e-msg-composer-select-file.c,v
retrieving revision 1.26
diff -u -r1.26 e-msg-composer-select-file.c
--- composer/e-msg-composer-select-file.c	6 Oct 2003 16:56:52 -0000	1.26
+++ composer/e-msg-composer-select-file.c	25 Dec 2003 00:06:48 -0000
@@ -34,9 +34,9 @@
 #include <gtk/gtksignal.h>
 
 #include <libgnomeui/gnome-uidefs.h>
-#include <libgnomeui/gnome-window-icon.h>
 
 #include "e-msg-composer-select-file.h"
+#include "e-icon-factory.h"
 
 static GtkFileSelection *
 run_selector(EMsgComposer *composer, const char *title, int multi, gboolean *showinline_p)
@@ -44,12 +44,20 @@
 	GtkFileSelection *selection;
 	GtkWidget *showinline = NULL;
 	char *path;
+	GList *icon_list;
 
 	selection = (GtkFileSelection *)gtk_file_selection_new(title);
 	gtk_window_set_transient_for((GtkWindow *)selection, (GtkWindow *)composer);
 	gtk_window_set_wmclass((GtkWindow *)selection, "fileselection", "Evolution:composer");
 	gtk_window_set_modal((GtkWindow *)selection, TRUE);
-	gnome_window_icon_set_from_file((GtkWindow *)selection, EVOLUTION_DATADIR "/images/evolution/compose-message.png");
+	
+	icon_list = e_icon_factory_get_icon_list ("stock_mail-compose");
+	if (icon_list) {
+		gtk_window_set_icon_list (GTK_WINDOW (selection), icon_list);
+		g_list_foreach (icon_list, (GFunc) g_object_unref, NULL);
+		g_list_free (icon_list);
+	}
+	
 	gtk_file_selection_set_select_multiple((GtkFileSelection *)selection, multi);
 
 	/* restore last path used */
Index: composer/e-msg-composer.c
===================================================================
RCS file: /cvs/gnome/evolution/composer/e-msg-composer.c,v
retrieving revision 1.425
diff -u -r1.425 e-msg-composer.c
--- composer/e-msg-composer.c	1 Dec 2003 15:20:49 -0000	1.425
+++ composer/e-msg-composer.c	25 Dec 2003 00:06:58 -0000
@@ -103,6 +103,7 @@
 #include "e-msg-composer-select-file.h"
 
 #include "evolution-shell-component-utils.h"
+#include "e-icon-factory.h"
 
 #include "Editor.h"
 #include "listener.h"
@@ -1935,13 +1936,13 @@
 };
 
 static EPixmap pixcache [] = {
-	E_PIXMAP ("/Toolbar/FileAttach", "buttons/add-attachment.png"),
-	E_PIXMAP ("/Toolbar/FileSend", "buttons/send-24.png"),
+	E_PIXMAP ("/Toolbar/FileAttach", "stock_attach", 24),
+	E_PIXMAP ("/Toolbar/FileSend", "stock_mail-send", 24),
 	
-/*	E_PIXMAP ("/menu/Insert/FileAttach", "buttons/add-attachment.png"), */
-	E_PIXMAP ("/commands/FileSend", "send-16.png"),
-	E_PIXMAP ("/commands/FileSave", "save-16.png"),
-	E_PIXMAP ("/commands/FileSaveAs", "save-as-16.png"),
+/*	E_PIXMAP ("/menu/Insert/FileAttach", "stock_attach", 24), */
+	E_PIXMAP ("/commands/FileSend", "stock_mail-send", 16),
+	E_PIXMAP ("/commands/FileSave", "stock_save", 16),
+	E_PIXMAP ("/commands/FileSaveAs", "stock_save-as", 16),
 	
 	E_PIXMAP_END
 };
@@ -2924,6 +2925,7 @@
 	CORBA_Environment ev;
 	GConfClient *gconf;
 	int vis;
+	GList *icon_list;
 	BonoboControlFrame *control_frame;
 	
 	composer = g_object_new (E_TYPE_MSG_COMPOSER, "win_name", _("Compose a message"), NULL);
@@ -2940,9 +2942,14 @@
 	
 	gtk_window_set_default_size (GTK_WINDOW (composer),
 				     DEFAULT_WIDTH, DEFAULT_HEIGHT);
-	gnome_window_icon_set_from_file (GTK_WINDOW (composer), EVOLUTION_IMAGESDIR
-					 "/compose-message.png");
-
+	
+	icon_list = e_icon_factory_get_icon_list ("stock_mail-compose");
+	if (icon_list) {
+		gtk_window_set_icon_list (GTK_WINDOW (composer), icon_list);
+		g_list_foreach (icon_list, (GFunc) g_object_unref, NULL);
+		g_list_free (icon_list);
+	}
+	
 	/* DND support */
 	gtk_drag_dest_set (GTK_WIDGET (composer), GTK_DEST_DEFAULT_ALL,
 			   drop_types, num_drop_types, GDK_ACTION_COPY);
Index: data/evolution.desktop.in.in
===================================================================
RCS file: /cvs/gnome/evolution/data/evolution.desktop.in.in,v
retrieving revision 1.2
diff -u -r1.2 evolution.desktop.in.in
--- data/evolution.desktop.in.in	1 Dec 2003 22:37:49 -0000	1.2
+++ data/evolution.desktop.in.in	25 Dec 2003 00:06:58 -0000
@@ -2,7 +2,7 @@
 _Name=Ximian Evolution (Unstable)
 _Comment=The Ximian Evolution Groupware Suite
 Exec=evolution- BASE_VERSION@
-Icon=evolution- BASE_VERSION@.png
+Icon=evolution
 Terminal=false
 Type=Application
 Categories=GNOME;Application;Office;X-Red-Hat-Base;
Index: e-util/ChangeLog
===================================================================
RCS file: /cvs/gnome/evolution/e-util/ChangeLog,v
retrieving revision 1.427
diff -u -r1.427 ChangeLog
--- e-util/ChangeLog	6 Dec 2003 18:15:20 -0000	1.427
+++ e-util/ChangeLog	25 Dec 2003 00:07:00 -0000
@@ -1,3 +1,11 @@
+2003-12-24  Michael Terry <mterry fastmail fm>
+
+	* Makefile.am: Add e-icon-factory.{c,h}.  Part of bug 127812.
+
+	* e-gui-utils.c (e_create_image_widget, e_icon_for_mime_type): Use
+	gnome-icon-theme names for icons and e-icon-factory to look them up.
+	Part of bug 127812.
+
 2003-12-06  JP Rosevear <jpr ximian com>
 
 	* Makefile.am: Remove hard coded disable deprecated flags
Index: e-util/Makefile.am
===================================================================
RCS file: /cvs/gnome/evolution/e-util/Makefile.am,v
retrieving revision 1.108
diff -u -r1.108 Makefile.am
--- e-util/Makefile.am	6 Dec 2003 18:15:20 -0000	1.108
+++ e-util/Makefile.am	25 Dec 2003 00:07:00 -0000
@@ -25,6 +25,7 @@
 	e-gui-utils.h				\
 	e-host-utils.h				\
 	e-html-utils.h				\
+	e-icon-factory.h			\
 	e-iterator.h				\
 	e-lang-utils.h				\
 	e-list-iterator.h			\
@@ -60,6 +61,7 @@
 	e-gui-utils.c				\
 	e-host-utils.c				\
 	e-html-utils.c				\
+	e-icon-factory.c			\
 	e-iterator.c				\
 	e-lang-utils.c				\
 	e-list-iterator.c			\
@@ -114,4 +116,4 @@
 CLEANFILES    = $(BUILT_SOURCES)
 
 dist-hook:
-	cd $(distdir); rm -f $(BUILT_SOURCES)
\ No newline at end of file
+	cd $(distdir); rm -f $(BUILT_SOURCES)
Index: e-util/e-gui-utils.c
===================================================================
RCS file: /cvs/gnome/evolution/e-util/e-gui-utils.c,v
retrieving revision 1.17
diff -u -r1.17 e-gui-utils.c
--- e-util/e-gui-utils.c	23 Jul 2003 14:55:52 -0000	1.17
+++ e-util/e-gui-utils.c	25 Dec 2003 00:07:00 -0000
@@ -14,6 +14,7 @@
 #include <string.h>
 
 #include "e-gui-utils.h"
+#include "e-icon-factory.h"
 
 #include <glib.h>
 #include <gtk/gtkalignment.h>
@@ -27,36 +28,38 @@
 
 #ifdef HAVE_LIBGNOMEUI_GNOME_ICON_LOOKUP_H
 #include <libgnomeui/gnome-icon-lookup.h>
-#else
-#include "art/empty.xpm"
 #endif
 
 GtkWidget *e_create_image_widget(gchar *name,
 				 gchar *string1, gchar *string2,
 				 gint int1, gint int2)
 {
-	char *filename;
 	GtkWidget *alignment = NULL;
 	if (string1) {
 		GtkWidget *w;
+		GdkPixbuf *pixbuf;
+
+		pixbuf = e_icon_factory_get_icon (string1, 48);
+
+		w = gtk_image_new_from_pixbuf (pixbuf);
+		g_object_unref (pixbuf);
 
-		if (*string1 == '/')
-			filename = g_strdup(string1);
-		else
-			filename = g_build_filename (EVOLUTION_IMAGES, string1, NULL);
+		gtk_misc_set_alignment (GTK_MISC (w), 0.5, 0.5);
 
-		w = gtk_image_new_from_file (filename);
+		if (int1)
+			int1 = 1;
+		if (int2)
+			int2 = 1;
 
 		alignment = gtk_widget_new(gtk_alignment_get_type(),
 					   "child", w,
 					   "xalign", (double) 0,
 					   "yalign", (double) 0,
-					   "xscale", (double) 0,
-					   "yscale", (double) 0,
+					   "xscale", (double) int1,
+					   "yscale", (double) int2,
 					   NULL);
 
 		gtk_widget_show_all (alignment);
-		g_free (filename);
 	}
 
 	return alignment;
@@ -159,7 +162,7 @@
 						      "document-icons/i-regular.png", TRUE, NULL);
 		if (!icon_path) {
 			g_warning ("Could not get any icon for %s!",mime_type);
-			return gdk_pixbuf_new_from_xpm_data((const char **)empty_xpm);
+			return e_icon_factory_get_icon (NULL, size_hint);
 		}
 	}
 #endif
Index: mail/ChangeLog
===================================================================
RCS file: /cvs/gnome/evolution/mail/ChangeLog,v
retrieving revision 1.2963
diff -u -r1.2963 ChangeLog
--- mail/ChangeLog	18 Dec 2003 19:13:32 -0000	1.2963
+++ mail/ChangeLog	25 Dec 2003 00:07:10 -0000
@@ -1,3 +1,32 @@
+2003-12-24  Michael Terry <mterry fastmail fm>
+
+	* Makefile.am: Add e-util to include paths.  Part of bug 127812.
+
+	* GNOME_Evolution_Mail.server.in.in,
+	em-account-prefs.c (em_account_prefs_class_init,
+		em_account_prefs_init, em_account_prefs_finalise),
+	em-account-prefs.h,
+	em-composer-prefs.c (em_composer_prefs_class_init,
+		em_composer_prefs_finalise, em_composer_prefs_construct),
+	em-composer-prefs.h,
+	em-folder-browser.c,
+	em-folder-tree.c (render_pixbuf),
+	em-folder-view.c,
+	em-format-html-display.c (efhd_xpkcs7mime_button),
+	em-format-html.c,
+	em-popup.c (em_popup_create_menu),
+	local-config.glade,
+	mail-component.c (impl__get_userCreatableItems),
+	mail-config-druid.c (mail_config_druid_new,
+		evolution_mail_config_wizard_new),
+	mail-config.glade,
+	mail-mt.c (do_op_status),
+	mail-send-recv.c (build_dialogue),
+	message-list.c (message_list_init_images),
+	message-tag-followup.c (construct),
+	message-tags.glade: Use gnome-icon-theme names for icons and
+	e-icon-factory to look them up.  Part of bug 127812.
+
 2003-12-18  Rodney Dawes  <dobey ximian com>
 
 	* em-message-browser.c (emmb_init): Merge in
Index: mail/GNOME_Evolution_Mail.server.in.in
===================================================================
RCS file: /cvs/gnome/evolution/mail/GNOME_Evolution_Mail.server.in.in,v
retrieving revision 1.16
diff -u -r1.16 GNOME_Evolution_Mail.server.in.in
--- mail/GNOME_Evolution_Mail.server.in.in	1 Dec 2003 22:14:33 -0000	1.16
+++ mail/GNOME_Evolution_Mail.server.in.in	25 Dec 2003 00:07:11 -0000
@@ -45,9 +45,9 @@
 
     <oaf_attribute name="evolution:button_label" type="string" _value="Mail"/>
     <oaf_attribute name="evolution:button_sort_order" type="string" value="-10"/>
-    <oaf_attribute name="evolution:button_icon" type="string" value="evolution-inbox.png"/>
+    <oaf_attribute name="evolution:button_icon" type="string" value="stock_mail"/>
 
-    <oaf_attribute name="evolution:component_icon" type="string" value="evolution-inbox.png"/>
+    <oaf_attribute name="evolution:component_icon" type="string" value="stock_mail"/>
     <oaf_attribute name="evolution:component_display_order" type="number" value="1"/>
 
     <oaf_attribute name="evolution:uri_schemas" type="stringv">
@@ -69,7 +69,7 @@
 		   _value="Evolution Mail component"/>
 
     <oaf_attribute name="evolution:shell_component_icon" type="string"
-		   value="evolution-inbox.png"/>
+		   value="stock_mail"/>
     <oaf_attribute name="evolution:shell_component_launch_order" type="number"
 		   value="1"/>
   </oaf_server>
@@ -124,7 +124,7 @@
 		   _value="Configure your email accounts here"/>
 
     <oaf_attribute name="evolution2:config_item:icon_name" type="string"
-		   value="mail-accounts-settings.png"/>
+		   value="stock_people"/>
 
     <oaf_attribute name="evolution2:config_item:type" type="stringv">
 	<item value="mail"/>
@@ -153,7 +153,7 @@
 		   _value="Configure mail preferences, including security and message display, here"/>
 
     <oaf_attribute name="evolution2:config_item:icon_name" type="string"
-		   value="mail-config-druid.png"/>
+		   value="stock_mail"/>
     
     <oaf_attribute name="evolution2:config_item:priority" type="string" value="-9"/>
     
@@ -178,7 +178,7 @@
 		   _value="Configure spell-checking, signatures, and the message composer here"/>
 
     <oaf_attribute name="evolution2:config_item:icon_name" type="string"
-		   value="composer-settings.png"/>
+		   value="stock_mail-compose"/>
     
     <oaf_attribute name="evolution2:config_item:priority" type="string" value="-8"/>
     
Index: mail/Makefile.am
===================================================================
RCS file: /cvs/gnome/evolution/mail/Makefile.am,v
retrieving revision 1.237
diff -u -r1.237 Makefile.am
--- mail/Makefile.am	11 Dec 2003 21:00:06 -0000	1.237
+++ mail/Makefile.am	25 Dec 2003 00:07:11 -0000
@@ -11,6 +11,7 @@
 	-I$(top_srcdir)/widgets/misc			\
 	-I$(top_srcdir)/camel				\
 	-I$(top_srcdir)					\
+	-I$(top_srcdir)/e-util				\
 	-I$(top_srcdir)/composer			\
 	-I$(top_builddir)/composer			\
 	-I$(top_builddir)/shell				\
Index: mail/em-account-prefs.c
===================================================================
RCS file: /cvs/gnome/evolution/mail/em-account-prefs.c,v
retrieving revision 1.2
diff -u -r1.2 em-account-prefs.c
--- mail/em-account-prefs.c	13 Nov 2003 22:33:02 -0000	1.2
+++ mail/em-account-prefs.c	25 Dec 2003 00:07:12 -0000
@@ -38,9 +38,8 @@
 #include "mail-ops.h"
 #include "mail-send-recv.h"
 
-#include "art/mark.xpm"
-
 #include "em-account-prefs.h"
+#include "e-icon-factory.h"
 
 
 static void em_account_prefs_class_init (EMAccountPrefsClass *class);
@@ -95,7 +94,7 @@
 	
 	/* setup static data */
 	disabled_pixbuf = NULL;
-	enabled_pixbuf = gdk_pixbuf_new_from_xpm_data ((const char **) mark_xpm);
+	enabled_pixbuf = e_icon_factory_get_icon ("stock_mark", 16);
 }
 
 static void
@@ -104,7 +103,7 @@
 	prefs->druid = NULL;
 	prefs->editor = NULL;
 	
-	gdk_pixbuf_render_pixmap_and_mask (enabled_pixbuf, &prefs->mark_pixmap, &prefs->mark_bitmap, 128);
+	prefs->mark_pixbuf = g_object_ref (enabled_pixbuf);
 }
 
 static void
@@ -123,8 +122,7 @@
 	EMAccountPrefs *prefs = (EMAccountPrefs *) obj;
 	
 	g_object_unref (prefs->gui);
-	gdk_pixmap_unref (prefs->mark_pixmap);
-	g_object_unref (prefs->mark_bitmap);
+	g_object_unref (prefs->mark_pixbuf);
 	
         G_OBJECT_CLASS (parent_class)->finalize (obj);
 }
Index: mail/em-account-prefs.h
===================================================================
RCS file: /cvs/gnome/evolution/mail/em-account-prefs.h,v
retrieving revision 1.3
diff -u -r1.3 em-account-prefs.h
--- mail/em-account-prefs.h	1 Dec 2003 22:14:33 -0000	1.3
+++ mail/em-account-prefs.h	25 Dec 2003 00:07:12 -0000
@@ -61,8 +61,7 @@
 	GtkWidget *druid;
 	GtkWidget *editor;
 	
-	GdkPixmap *mark_pixmap;
-	GdkBitmap *mark_bitmap;
+	GdkPixbuf *mark_pixbuf;
 	
 	GtkTreeView *table;
 	
Index: mail/em-composer-prefs.c
===================================================================
RCS file: /cvs/gnome/evolution/mail/em-composer-prefs.c,v
retrieving revision 1.1
diff -u -r1.1 em-composer-prefs.c
--- mail/em-composer-prefs.c	24 Oct 2003 19:31:22 -0000	1.1
+++ mail/em-composer-prefs.c	25 Dec 2003 00:07:15 -0000
@@ -41,11 +41,10 @@
 #include <gtk/gtktreeview.h>
 
 #include "widgets/misc/e-charset-picker.h"
+#include "e-icon-factory.h"
 
 #include "mail-config.h"
 
-#include "art/mark.xpm"
-
 
 #define d(x)
 
@@ -96,9 +95,7 @@
 static void
 em_composer_prefs_init (EMComposerPrefs *composer_prefs)
 {
-	composer_prefs->enabled_pixbuf = gdk_pixbuf_new_from_xpm_data ((const char **) mark_xpm);
-	gdk_pixbuf_render_pixmap_and_mask (composer_prefs->enabled_pixbuf,
-					   &composer_prefs->mark_pixmap, &composer_prefs->mark_bitmap, 128);
+	composer_prefs->enabled_pixbuf = e_icon_factory_get_icon ("stock_mark", 16);
 }
 
 static void
@@ -108,8 +105,6 @@
 	
 	g_object_unref (prefs->gui);
 	g_object_unref (prefs->enabled_pixbuf);
-	gdk_pixmap_unref (prefs->mark_pixmap);
-	g_object_unref (prefs->mark_bitmap);
 	
         G_OBJECT_CLASS (parent_class)->finalize (obj);
 }
@@ -869,7 +864,7 @@
 
 	prefs->spell_able_button = glade_xml_get_widget (gui, "buttonSpellCheckEnable");
 	info_pixmap = glade_xml_get_widget (gui, "pixmapSpellInfo");
-	gtk_image_set_from_file (GTK_IMAGE (info_pixmap), EVOLUTION_IMAGES "/info-bulb.png");	
+	gtk_image_set_from_stock (GTK_IMAGE (info_pixmap), GTK_STOCK_DIALOG_INFO, GTK_ICON_SIZE_BUTTON);
 	if (!spell_setup_check_options (prefs)) {
 		gtk_widget_hide (GTK_WIDGET (prefs->colour));
 		gtk_widget_hide (GTK_WIDGET (prefs->language));
Index: mail/em-composer-prefs.h
===================================================================
RCS file: /cvs/gnome/evolution/mail/em-composer-prefs.h,v
retrieving revision 1.3
diff -u -r1.3 em-composer-prefs.h
--- mail/em-composer-prefs.h	1 Dec 2003 22:14:33 -0000	1.3
+++ mail/em-composer-prefs.h	25 Dec 2003 00:07:15 -0000
@@ -80,8 +80,6 @@
 	char *language_str_orig;
 	GdkColor spell_error_color;
 	GdkColor spell_error_color_orig;
-	GdkPixmap *mark_pixmap;
-	GdkBitmap *mark_bitmap;
 	GdkPixbuf *enabled_pixbuf;
 	GtkWidget *spell_able_button;
 	
Index: mail/em-folder-browser.c
===================================================================
RCS file: /cvs/gnome/evolution/mail/em-folder-browser.c,v
retrieving revision 1.11
diff -u -r1.11 em-folder-browser.c
--- mail/em-folder-browser.c	11 Dec 2003 20:55:01 -0000	1.11
+++ mail/em-folder-browser.c	25 Dec 2003 00:07:17 -0000
@@ -686,12 +686,12 @@
 };
 
 static EPixmap emfb_pixmaps[] = {
-	E_PIXMAP ("/commands/ChangeFolderProperties", "configure_16_folder.xpm"),
-	E_PIXMAP ("/commands/ViewHideRead", "hide_read_messages.xpm"),
-	E_PIXMAP ("/commands/ViewHideSelected", "hide_selected_messages.xpm"),
-	E_PIXMAP ("/commands/ViewShowAll", "show_all_messages.xpm"),
+	E_PIXMAP ("/commands/ChangeFolderProperties", "stock_folder-properties", 16),
+	E_PIXMAP ("/commands/ViewHideRead", "stock_mail-hide-read", 16),
+	E_PIXMAP ("/commands/ViewHideSelected", "stock_mail-hide-selected", 16),
+	E_PIXMAP ("/commands/ViewShowAll", "stock_mail-show-all", 16),
 	
-	E_PIXMAP ("/commands/MailCompose", "new-message.xpm"),
+	E_PIXMAP ("/commands/MailCompose", "stock_mail-compose", 16),
 
 	E_PIXMAP_END
 };
Index: mail/em-folder-tree.c
===================================================================
RCS file: /cvs/gnome/evolution/mail/em-folder-tree.c,v
retrieving revision 1.43
diff -u -r1.43 em-folder-tree.c
--- mail/em-folder-tree.c	15 Dec 2003 00:09:47 -0000	1.43
+++ mail/em-folder-tree.c	25 Dec 2003 00:07:20 -0000
@@ -47,6 +47,7 @@
 #include "e-util/e-mktemp.h"
 #include "e-util/e-request.h"
 #include "e-util/e-dialog-utils.h"
+#include "e-icon-factory.h"
 
 #include "mail-mt.h"
 #include "mail-ops.h"
@@ -226,11 +227,11 @@
 	char *path;
 	
 	if (!initialised) {
-		folder_icons[FOLDER_ICON_NORMAL] = gdk_pixbuf_new_from_file (EVOLUTION_ICONSDIR "/folder-mini.png", NULL);
-		folder_icons[FOLDER_ICON_INBOX] = gdk_pixbuf_new_from_file (EVOLUTION_ICONSDIR "/inbox-mini.png", NULL);
-		folder_icons[FOLDER_ICON_OUTBOX] = gdk_pixbuf_new_from_file (EVOLUTION_ICONSDIR "/outbox-mini.png", NULL);
-		folder_icons[FOLDER_ICON_TRASH] = gdk_pixbuf_new_from_file (EVOLUTION_ICONSDIR "/evolution-trash-mini.png", NULL);
-		folder_icons[FOLDER_ICON_JUNK] = gdk_pixbuf_new_from_file (EVOLUTION_ICONSDIR "/evolution-junk-mini.png", NULL);
+		folder_icons[FOLDER_ICON_NORMAL] = e_icon_factory_get_icon ("stock_folder", 16);
+		folder_icons[FOLDER_ICON_INBOX] = e_icon_factory_get_icon ("stock_inbox", 16);
+		folder_icons[FOLDER_ICON_OUTBOX] = e_icon_factory_get_icon ("stock_outbox", 16);
+		folder_icons[FOLDER_ICON_TRASH] = e_icon_factory_get_icon ("stock_delete", 16);
+		folder_icons[FOLDER_ICON_JUNK] = e_icon_factory_get_icon ("stock_spam", 16);
 		initialised = TRUE;
 	}
 	
@@ -1494,16 +1495,16 @@
 
 	{ EM_POPUP_BAR, "10.emc" },
 #endif
-	{ EM_POPUP_ITEM, "10.emc.00", N_("_Copy"), G_CALLBACK (emft_popup_copy), NULL, "folder-copy-16.png", 0 },
-	{ EM_POPUP_ITEM, "10.emc.01", N_("_Move"), G_CALLBACK (emft_popup_move), NULL, "folder-move-16.png", 0 },
+	{ EM_POPUP_ITEM, "10.emc.00", N_("_Copy"), G_CALLBACK (emft_popup_copy), NULL, "stock_folder-copy", 0 },
+	{ EM_POPUP_ITEM, "10.emc.01", N_("_Move"), G_CALLBACK (emft_popup_move), NULL, "stock_folder-move", 0 },
 	
 	{ EM_POPUP_BAR, "20.emc" },
-	{ EM_POPUP_ITEM, "20.emc.00", N_("_New Folder..."), G_CALLBACK (emft_popup_new_folder), NULL, "folder-mini.png", 0 },
-	{ EM_POPUP_ITEM, "20.emc.01", N_("_Delete"), G_CALLBACK (emft_popup_delete_folder), NULL, "evolution-trash-mini.png", 0 },
+	{ EM_POPUP_ITEM, "20.emc.00", N_("_New Folder..."), G_CALLBACK (emft_popup_new_folder), NULL, "stock_folder", 0 },
+	{ EM_POPUP_ITEM, "20.emc.01", N_("_Delete"), G_CALLBACK (emft_popup_delete_folder), NULL, "stock_delete", 0 },
 	{ EM_POPUP_ITEM, "20.emc.01", N_("_Rename"), G_CALLBACK (emft_popup_rename_folder), NULL, NULL, 0 },
 	
 	{ EM_POPUP_BAR, "80.emc" },
-	{ EM_POPUP_ITEM, "80.emc.00", N_("_Properties..."), G_CALLBACK (emft_popup_properties), NULL, "configure_16_folder.xpm", 0 },
+	{ EM_POPUP_ITEM, "80.emc.00", N_("_Properties..."), G_CALLBACK (emft_popup_properties), NULL, "stock_folder-properties", 0 },
 };
 
 static gboolean
Index: mail/em-folder-view.c
===================================================================
RCS file: /cvs/gnome/evolution/mail/em-folder-view.c,v
retrieving revision 1.19
diff -u -r1.19 em-folder-view.c
--- mail/em-folder-view.c	11 Dec 2003 04:56:12 -0000	1.19
+++ mail/em-folder-view.c	25 Dec 2003 00:07:25 -0000
@@ -680,31 +680,31 @@
 static EMPopupItem emfv_popup_menu[] = {
 	{ EM_POPUP_ITEM, "00.emfv.00", N_("_Open"), G_CALLBACK(emfv_popup_open), NULL, NULL, 0 },
 	{ EM_POPUP_ITEM, "00.emfv.01", N_("_Edit as New Message..."), G_CALLBACK(emfv_popup_resend), NULL, NULL, EM_POPUP_SELECT_RESEND },
-	{ EM_POPUP_ITEM, "00.emfv.02", N_("_Save As..."), G_CALLBACK(emfv_popup_saveas), NULL, "save-as-16.png", 0 },
-	{ EM_POPUP_ITEM, "00.emfv.03", N_("_Print"), G_CALLBACK(emfv_popup_print), NULL, "print.xpm", 0 },
+	{ EM_POPUP_ITEM, "00.emfv.02", N_("_Save As..."), G_CALLBACK(emfv_popup_saveas), NULL, "stock_save-as", 0 },
+	{ EM_POPUP_ITEM, "00.emfv.03", N_("_Print"), G_CALLBACK(emfv_popup_print), NULL, "stock_print", 0 },
 
 	{ EM_POPUP_BAR, "10.emfv" },
-	{ EM_POPUP_ITEM, "10.emfv.00", N_("_Reply to Sender"), G_CALLBACK(emfv_popup_reply_sender), NULL, "reply.xpm", EM_POPUP_SELECT_ONE },
+	{ EM_POPUP_ITEM, "10.emfv.00", N_("_Reply to Sender"), G_CALLBACK(emfv_popup_reply_sender), NULL, "stock_mail-reply", EM_POPUP_SELECT_ONE },
 	{ EM_POPUP_ITEM, "10.emfv.01", N_("Reply to _List"), G_CALLBACK(emfv_popup_reply_list), NULL, NULL, EM_POPUP_SELECT_ONE|EM_POPUP_SELECT_MAILING_LIST },
-	{ EM_POPUP_ITEM, "10.emfv.02", N_("Reply to _All"), G_CALLBACK(emfv_popup_reply_all), NULL, "reply_to_all.xpm", EM_POPUP_SELECT_ONE },
-	{ EM_POPUP_ITEM, "10.emfv.03", N_("_Forward"), G_CALLBACK(emfv_popup_forward), NULL, "forward.xpm", EM_POPUP_SELECT_MANY },
+	{ EM_POPUP_ITEM, "10.emfv.02", N_("Reply to _All"), G_CALLBACK(emfv_popup_reply_all), NULL, "stock_mail-reply-to-all", EM_POPUP_SELECT_ONE },
+	{ EM_POPUP_ITEM, "10.emfv.03", N_("_Forward"), G_CALLBACK(emfv_popup_forward), NULL, "stock_mail-forward", EM_POPUP_SELECT_MANY },
 
 	{ EM_POPUP_BAR, "20.emfv", NULL, NULL, NULL, NULL, EM_POPUP_SELECT_FLAG_FOLLOWUP|EM_POPUP_SELECT_FLAG_COMPLETED|EM_POPUP_SELECT_FLAG_CLEAR },
-	{ EM_POPUP_ITEM, "20.emfv.00", N_("Follo_w Up..."), G_CALLBACK(emfv_popup_flag_followup), NULL, "flag-for-followup-16.png",  EM_POPUP_SELECT_FLAG_FOLLOWUP },
+	{ EM_POPUP_ITEM, "20.emfv.00", N_("Follo_w Up..."), G_CALLBACK(emfv_popup_flag_followup), NULL, "stock_mail-flag-for-followup",  EM_POPUP_SELECT_FLAG_FOLLOWUP },
 	{ EM_POPUP_ITEM, "20.emfv.01", N_("Fla_g Completed"), G_CALLBACK(emfv_popup_flag_completed), NULL, NULL, EM_POPUP_SELECT_FLAG_COMPLETED },
 	{ EM_POPUP_ITEM, "20.emfv.02", N_("Cl_ear Flag"), G_CALLBACK(emfv_popup_flag_clear), NULL, NULL, EM_POPUP_SELECT_FLAG_CLEAR },
 	
 	{ EM_POPUP_BAR, "30.emfv" },
-	{ EM_POPUP_ITEM, "30.emfv.00", N_("Mar_k as Read"), G_CALLBACK(emfv_popup_mark_read), NULL, "mail-read.xpm", EM_POPUP_SELECT_MARK_READ },
-	{ EM_POPUP_ITEM,  "30.emfv.01", N_("Mark as _Unread"), G_CALLBACK(emfv_popup_mark_unread), NULL, "mail-new.xpm", EM_POPUP_SELECT_MARK_UNREAD },
-	{ EM_POPUP_ITEM, "30.emfv.02", N_("Mark as _Important"), G_CALLBACK(emfv_popup_mark_important), NULL, "priority-high.xpm", EM_POPUP_SELECT_MARK_IMPORTANT },
+	{ EM_POPUP_ITEM, "30.emfv.00", N_("Mar_k as Read"), G_CALLBACK(emfv_popup_mark_read), NULL, "stock_mail-open", EM_POPUP_SELECT_MARK_READ },
+	{ EM_POPUP_ITEM,  "30.emfv.01", N_("Mark as _Unread"), G_CALLBACK(emfv_popup_mark_unread), NULL, "stock_mail-unread", EM_POPUP_SELECT_MARK_UNREAD },
+	{ EM_POPUP_ITEM, "30.emfv.02", N_("Mark as _Important"), G_CALLBACK(emfv_popup_mark_important), NULL, "stock-mail-priority-high", EM_POPUP_SELECT_MARK_IMPORTANT },
 	{ EM_POPUP_ITEM, "30.emfv.03", N_("_Mark as Unimportant"), G_CALLBACK(emfv_popup_mark_unimportant), NULL, NULL, EM_POPUP_SELECT_MARK_UNIMPORTANT },
 	{ EM_POPUP_ITEM, "30.emfv.04", N_("Mark as _Junk"), G_CALLBACK(emfv_popup_mark_junk), NULL, NULL, EM_POPUP_SELECT_MARK_JUNK },
 	{ EM_POPUP_ITEM, "30.emfv.05", N_("Mark as _Not Junk"), G_CALLBACK(emfv_popup_mark_nojunk), NULL, NULL, EM_POPUP_SELECT_MARK_NOJUNK },
 	
 	{ EM_POPUP_BAR, "40.emfv" },
-	{ EM_POPUP_ITEM, "40.emfv.00", N_("_Delete"), G_CALLBACK(emfv_popup_delete), NULL, "evolution-trash-mini.png", EM_POPUP_SELECT_DELETE },
-	{ EM_POPUP_ITEM, "40.emfv.01", N_("U_ndelete"), G_CALLBACK(emfv_popup_undelete), NULL, "undelete_message-16.png", EM_POPUP_SELECT_UNDELETE },
+	{ EM_POPUP_ITEM, "40.emfv.00", N_("_Delete"), G_CALLBACK(emfv_popup_delete), NULL, "stock_delete", EM_POPUP_SELECT_DELETE },
+	{ EM_POPUP_ITEM, "40.emfv.01", N_("U_ndelete"), G_CALLBACK(emfv_popup_undelete), NULL, "stock_undelete", EM_POPUP_SELECT_UNDELETE },
 
 	{ EM_POPUP_BAR, "50.emfv" },
 	{ EM_POPUP_ITEM, "50.emfv.00", N_("Mo_ve to Folder..."), G_CALLBACK(emfv_popup_move) },
@@ -1305,39 +1305,39 @@
 	BONOBO_UI_VERB_END
 };
 static EPixmap emfv_message_pixmaps[] = {
-	E_PIXMAP ("/commands/EditCut", "16_cut.png"),
-	E_PIXMAP ("/commands/EditCopy", "16_copy.png"),
-	E_PIXMAP ("/commands/EditPaste", "16_paste.png"),
-
-	E_PIXMAP ("/commands/PrintMessage", "print.xpm"),
-	E_PIXMAP ("/commands/PrintPreviewMessage", "print-preview.xpm"),
-	E_PIXMAP ("/commands/MessageDelete", "evolution-trash-mini.png"),
-	E_PIXMAP ("/commands/MessageUndelete", "undelete_message-16.png"),
-	E_PIXMAP ("/commands/MessageCopy", "copy_16_message.xpm"),
-	E_PIXMAP ("/commands/MessageMove", "move_message.xpm"),
-	E_PIXMAP ("/commands/MessageReplyAll", "reply_to_all.xpm"),
-	E_PIXMAP ("/commands/MessageReplySender", "reply.xpm"),
-	E_PIXMAP ("/commands/MessageForward", "forward.xpm"),
-	E_PIXMAP ("/commands/MessageApplyFilters", "apply-filters-16.xpm"),
-	E_PIXMAP ("/commands/MessageSearch", "search-16.png"),
-	E_PIXMAP ("/commands/MessageSaveAs", "save-as-16.png"),
-	E_PIXMAP ("/commands/MessageMarkAsRead", "mail-read.xpm"),
-	E_PIXMAP ("/commands/MessageMarkAsUnRead", "mail-new.xpm"),
-	E_PIXMAP ("/commands/MessageMarkAsImportant", "priority-high.xpm"),
-	E_PIXMAP ("/commands/MessageFollowUpFlag", "flag-for-followup-16.png"),
-	
-	E_PIXMAP ("/Toolbar/MailMessageToolbar/MessageReplySender", "buttons/reply.png"),
-	E_PIXMAP ("/Toolbar/MailMessageToolbar/MessageReplyAll", "buttons/reply-to-all.png"),
-	E_PIXMAP ("/Toolbar/MailMessageToolbar/MessageForward", "buttons/forward.png"),
-	E_PIXMAP ("/Toolbar/MailMessageToolbar/PrintMessage", "buttons/print.png"),
-	E_PIXMAP ("/Toolbar/MailMessageToolbar/MessageMove", "buttons/move-message.png"),
-	E_PIXMAP ("/Toolbar/MailMessageToolbar/MessageCopy", "buttons/copy-message.png"),
-	E_PIXMAP ("/Toolbar/MailMessageToolbar/MessageDelete", "buttons/delete-message.png"),
-	E_PIXMAP ("/Toolbar/MailMessageToolbar/MessageMarkAsJunk", "stock-junk-24.png"),
-	E_PIXMAP ("/Toolbar/MailMessageToolbar/MessageMarkAsNotJunk", "stock-notjunk-24.png"),
+	E_PIXMAP ("/commands/EditCut", "stock_cut", 16),
+	E_PIXMAP ("/commands/EditCopy", "stock_copy", 16),
+	E_PIXMAP ("/commands/EditPaste", "stock_paste", 16),
+
+	E_PIXMAP ("/commands/PrintMessage", "stock_print", 16),
+	E_PIXMAP ("/commands/PrintPreviewMessage", "stock_print-preview", 16),
+	E_PIXMAP ("/commands/MessageDelete", "stock_delete", 16),
+	E_PIXMAP ("/commands/MessageUndelete", "stock_undelete", 16),
+	E_PIXMAP ("/commands/MessageCopy", "stock_mail-copy", 16),
+	E_PIXMAP ("/commands/MessageMove", "stock_mail-move", 16),
+	E_PIXMAP ("/commands/MessageReplyAll", "stock_mail-reply-to-all", 16),
+	E_PIXMAP ("/commands/MessageReplySender", "stock_mail-reply", 16),
+	E_PIXMAP ("/commands/MessageForward", "stock_mail-forward", 16),
+	E_PIXMAP ("/commands/MessageApplyFilters", "stock_mail-filters-apply", 16),
+	E_PIXMAP ("/commands/MessageSearch", "stock_search", 16),
+	E_PIXMAP ("/commands/MessageSaveAs", "stock_save-as", 16),
+	E_PIXMAP ("/commands/MessageMarkAsRead", "stock_mail-open", 16),
+	E_PIXMAP ("/commands/MessageMarkAsUnRead", "stock_mail-unread", 16),
+	E_PIXMAP ("/commands/MessageMarkAsImportant", "stock_mail-priority-high", 16),
+	E_PIXMAP ("/commands/MessageFollowUpFlag", "stock_mail-flag-for-followup", 16),
+	
+	E_PIXMAP ("/Toolbar/MailMessageToolbar/MessageReplySender", "stock_mail-reply", 24),
+	E_PIXMAP ("/Toolbar/MailMessageToolbar/MessageReplyAll", "stock_mail-reply-to-all", 24),
+	E_PIXMAP ("/Toolbar/MailMessageToolbar/MessageForward", "stock_mail-forward", 24),
+	E_PIXMAP ("/Toolbar/MailMessageToolbar/PrintMessage", "stock_print", 24),
+	E_PIXMAP ("/Toolbar/MailMessageToolbar/MessageMove", "stock_mail-move", 24),
+	E_PIXMAP ("/Toolbar/MailMessageToolbar/MessageCopy", "stock_mail-copy", 24),
+	E_PIXMAP ("/Toolbar/MailMessageToolbar/MessageDelete", "stock_delete", 24),
+	E_PIXMAP ("/Toolbar/MailMessageToolbar/MessageMarkAsJunk", "stock_spam", 24),
+	E_PIXMAP ("/Toolbar/MailMessageToolbar/MessageMarkAsNotJunk", "stock_not-spam", 24),
 	
-	E_PIXMAP ("/Toolbar/MailNextButtons/MailNext", "buttons/next-message.png"),
-	E_PIXMAP ("/Toolbar/MailNextButtons/MailPrevious", "buttons/previous-message.png"),
+	E_PIXMAP ("/Toolbar/MailNextButtons/MailNext", "stock_next", 24),
+	E_PIXMAP ("/Toolbar/MailNextButtons/MailPrevious", "stock_previous", 24),
 
 	E_PIXMAP_END
 };
Index: mail/em-format-html-display.c
===================================================================
RCS file: /cvs/gnome/evolution/mail/em-format-html-display.c,v
retrieving revision 1.15
diff -u -r1.15 em-format-html-display.c
--- mail/em-format-html-display.c	16 Dec 2003 20:06:41 -0000	1.15
+++ mail/em-format-html-display.c	25 Dec 2003 00:07:28 -0000
@@ -72,6 +72,7 @@
 #include <e-util/e-msgport.h>
 #include <e-util/e-gui-utils.h>
 #include <e-util/e-dialog-utils.h>
+#include "e-icon-factory.h"
 
 #if defined(HAVE_NSS)
 #include "certificate-viewer.h"
@@ -601,18 +602,18 @@
 	const char *icon, *shortdesc, *description;
 } smime_sign_table[4] = {
 	{ NULL, N_("Unsigned"), N_("This message is not signed.  There is no guarantee the sender of the message is authentic.") },
-	{ "pgp-signature-ok.png",N_("Valid signature"), N_("This message is signed and is valid, the sender of this message is very likely who they claim to be.") },
-	{ "pgp-signature-bad.png", N_("Invalid signature"), N_("The signature of this message cannot be verified, it may have been altered in transit.") },
-	{ "pgp-signature-nokey.png", N_("Valid signature, cannot verify sender"), N_("This message is signed with a valid signature, but the sender of the message cannot be verified.") },
+	{ "stock_signature-ok", N_("Valid signature"), N_("This message is signed and is valid, the sender of this message is very likely who they claim to be.") },
+	{ "stock_signature-bad", N_("Invalid signature"), N_("The signature of this message cannot be verified, it may have been altered in transit.") },
+	{ "stock_signature", N_("Valid signature, cannot verify sender"), N_("This message is signed with a valid signature, but the sender of the message cannot be verified.") },
 };
 
 static const struct {
 	const char *icon, *shortdesc, *description;
 } smime_encrypt_table[4] = {
 	{ NULL, N_("Unencrypted"), N_("This message is not encrypted.  It's content may be viewed in transit across The Internet.") },
-	{ "pgp-signature-ok.png", N_("Encrypted, weak"), N_("This message is encrypted, but with a weak encryption algorithm.  It would be difficult, but not impossible for an outsider to view the content of this message in a practical amount of time.") },
-	{ "pgp-signature-ok.png", N_("Encrypted"), N_("This message is encrypted.  It would be difficult for an outsider to view the content of this message.") },
-	{ "pgp-signature-ok.png", N_("Encrypted, strong"), N_("This message is encrypted, with a strong encryption algorithm.  It would be very difficult for an outsider to view the content of this message in a practical amount of time.") },
+	{ "stock_lock-ok", N_("Encrypted, weak"), N_("This message is encrypted, but with a weak encryption algorithm.  It would be difficult, but not impossible for an outsider to view the content of this message in a practical amount of time.") },
+	{ "stock_lock-ok", N_("Encrypted"), N_("This message is encrypted.  It would be difficult for an outsider to view the content of this message.") },
+	{ "stock_lock-ok", N_("Encrypted, strong"), N_("This message is encrypted, with a strong encryption algorithm.  It would be very difficult for an outsider to view the content of this message in a practical amount of time.") },
 };
 
 struct _smime_pobject {
@@ -773,23 +774,17 @@
 	GtkWidget *icon, *button;
 	GdkPixbuf *pixbuf;
 	struct _smime_pobject *po = (struct _smime_pobject *)pobject;
-	char *file;
 	const char *name;
 
 	/* FIXME: need to have it based on encryption and signing too */
 	if (po->valid->sign.status == CAMEL_CIPHER_VALIDITY_SIGN_GOOD)
-		name = "pgp-signature-ok.png";
+		name = "stock_signature-ok";
 	else
-		name = "pgp-signature-bad.png";
+		name = "stock_signature-bad";
 
-	file = g_build_filename(EVOLUTION_ICONSDIR, name, NULL);
-	pixbuf = gdk_pixbuf_new_from_file(file, NULL);
-	g_free(file);
-	if (pixbuf == NULL)
-		return FALSE;
+	pixbuf = e_icon_factory_get_icon (name, 24);
 
-	/* wtf isn't this just scaled on disk? */
-	icon = gtk_image_new_from_pixbuf(gdk_pixbuf_scale_simple(pixbuf, 24, 24, GDK_INTERP_BILINEAR));
+	icon = gtk_image_new_from_pixbuf(pixbuf);
 	g_object_unref(pixbuf);
 	gtk_widget_show(icon);
 
Index: mail/em-format-html.c
===================================================================
RCS file: /cvs/gnome/evolution/mail/em-format-html.c,v
retrieving revision 1.20
diff -u -r1.20 em-format-html.c
--- mail/em-format-html.c	11 Dec 2003 23:47:32 -0000	1.20
+++ mail/em-format-html.c	25 Dec 2003 00:07:32 -0000
@@ -561,19 +561,19 @@
 static const struct {
 	const char *icon, *shortdesc;
 } smime_sign_table[4] = {
-	{ "pgp-signature-nokey.png", N_("Unsigned") },
-	{ "pgp-signature-ok.png", N_("Valid signature") },
-	{ "pgp-signature-bad.png", N_("Invalid signature") },
-	{ "pgp-signature-nokey.png", N_("Valid signature, cannot verify sender") },
+	{ NULL, N_("Unsigned") },
+	{ "stock_signature-ok", N_("Valid signature") },
+	{ "stock_signature-bad", N_("Invalid signature") },
+	{ "stock_signature", N_("Valid signature, cannot verify sender") },
 };
 
 static const struct {
 	const char *icon, *shortdesc;
 } smime_encrypt_table[4] = {
 	{ NULL, N_("Unencrypted") },
-	{ "pgp-signature-ok.png", N_("Encrypted, weak"),},
-	{ "pgp-signature-ok.png", N_("Encrypted") },
-	{ "pgp-signature-ok.png", N_("Encrypted, strong") },
+	{ "stock_lock-ok", N_("Encrypted, weak"),},
+	{ "stock_lock-ok", N_("Encrypted") },
+	{ "stock_lock-ok", N_("Encrypted, strong") },
 };
 
 /* TODO: this could probably be virtual on em-format-html
Index: mail/em-popup.c
===================================================================
RCS file: /cvs/gnome/evolution/mail/em-popup.c,v
retrieving revision 1.8
diff -u -r1.8 em-popup.c
--- mail/em-popup.c	3 Dec 2003 00:27:52 -0000	1.8
+++ mail/em-popup.c	25 Dec 2003 00:07:33 -0000
@@ -18,6 +18,7 @@
 #include "em-popup.h"
 #include "e-util/e-msgport.h"
 #include "em-utils.h"
+#include "e-icon-factory.h"
 
 #include <camel/camel-folder.h>
 #include <camel/camel-mime-message.h>
@@ -254,12 +255,12 @@
 		switch (item->type & EM_POPUP_TYPE_MASK) {
 		case EM_POPUP_ITEM:
 			if (item->image) {
-				char *path;
+				GdkPixbuf *pixbuf;
 				GtkWidget *image;
 
-				path = g_build_filename(EVOLUTION_IMAGES, (char *)item->image, NULL);
-				image = gtk_image_new_from_file(path);
-				g_free(path);
+				pixbuf = e_icon_factory_get_icon ((char *)item->image, 16);
+				image = gtk_image_new_from_pixbuf (pixbuf);
+				g_object_unref (pixbuf);
 
 				gtk_widget_show(image);
 				menuitem = (GtkMenuItem *)gtk_image_menu_item_new();
@@ -587,7 +588,7 @@
 static EMPopupItem emp_standard_select_popups[] = {
 	/*{ EM_POPUP_ITEM, "00.select.00", N_("_Open"), G_CALLBACK(emp_popup_open), NULL, NULL, 0 },*/
 	{ EM_POPUP_ITEM, "00.select.01", N_("_Edit as New Message..."), G_CALLBACK(emp_popup_resend), NULL, NULL, EM_POPUP_SELECT_RESEND },
-	{ EM_POPUP_ITEM, "00.select.02", N_("_Save As..."), G_CALLBACK(emp_popup_saveas), NULL, "save-as-16.png", 0 },	
+	{ EM_POPUP_ITEM, "00.select.02", N_("_Save As..."), G_CALLBACK(emp_popup_saveas), NULL, "stock_save-as", 0 },	
 };
 #endif
 
@@ -643,14 +644,14 @@
 }
 
 static EMPopupItem emp_standard_object_popups[] = {
-	{ EM_POPUP_ITEM, "00.part.00", N_("_Save As..."), G_CALLBACK(emp_part_popup_saveas), NULL, "save-as-16.png", 0 },
+	{ EM_POPUP_ITEM, "00.part.00", N_("_Save As..."), G_CALLBACK(emp_part_popup_saveas), NULL, "stock_save-as", 0 },
 	{ EM_POPUP_ITEM, "00.part.10", N_("Set as _Background"), G_CALLBACK(emp_part_popup_set_background), NULL, NULL, EM_POPUP_PART_IMAGE },
 	{ EM_POPUP_BAR, "10.part", NULL, NULL, NULL, NULL, EM_POPUP_PART_MESSAGE },
-	{ EM_POPUP_ITEM, "10.part.00", N_("_Reply to sender"), G_CALLBACK(emp_part_popup_reply_sender), NULL, "reply.xpm" , EM_POPUP_PART_MESSAGE },
+	{ EM_POPUP_ITEM, "10.part.00", N_("_Reply to sender"), G_CALLBACK(emp_part_popup_reply_sender), NULL, "stock_mail-reply" , EM_POPUP_PART_MESSAGE },
 	{ EM_POPUP_ITEM, "10.part.01", N_("Reply to _List"), G_CALLBACK(emp_part_popup_reply_list), NULL, NULL, EM_POPUP_PART_MESSAGE},
-	{ EM_POPUP_ITEM, "10.part.03", N_("Reply to _All"), G_CALLBACK(emp_part_popup_reply_all), NULL, "reply_to_all.xpm", EM_POPUP_PART_MESSAGE},
+	{ EM_POPUP_ITEM, "10.part.03", N_("Reply to _All"), G_CALLBACK(emp_part_popup_reply_all), NULL, "stock_mail-reply_to_all", EM_POPUP_PART_MESSAGE},
 	{ EM_POPUP_BAR, "20.part", NULL, NULL, NULL, NULL, EM_POPUP_PART_MESSAGE },
-	{ EM_POPUP_ITEM, "20.part.00", N_("_Forward"), G_CALLBACK(emp_part_popup_forward), NULL, "forward.xpm", EM_POPUP_PART_MESSAGE },
+	{ EM_POPUP_ITEM, "20.part.00", N_("_Forward"), G_CALLBACK(emp_part_popup_forward), NULL, "stock_mail-forward", EM_POPUP_PART_MESSAGE },
 
 };
 
Index: mail/local-config.glade
===================================================================
RCS file: /cvs/gnome/evolution/mail/local-config.glade,v
retrieving revision 1.10
diff -u -r1.10 local-config.glade
--- mail/local-config.glade	15 Apr 2003 17:29:17 -0000	1.10
+++ mail/local-config.glade	25 Dec 2003 00:07:34 -0000
@@ -65,24 +65,14 @@
 	  <property name="spacing">12</property>
 
 	  <child>
-	    <widget class="GtkAlignment" id="alignment2">
-	      <property name="visible">True</property>
-	      <property name="xalign">0.5</property>
-	      <property name="yalign">0</property>
-	      <property name="xscale">1</property>
-	      <property name="yscale">0</property>
-
-	      <child>
-		<widget class="GtkImage" id="pixmap1">
-		  <property name="visible">True</property>
-		  <property name="pixbuf">mail-config-druid.png</property>
-		  <property name="xalign">0.5</property>
-		  <property name="yalign">0.5</property>
-		  <property name="xpad">0</property>
-		  <property name="ypad">0</property>
-		</widget>
-	      </child>
-	    </widget>
+            <widget class="Custom" id="alignment2">
+              <property name="visible">True</property>
+              <property name="creation_function">e_create_image_widget</property>
+              <property name="string1">stock_mail-druid</property>
+              <property name="string2"></property>
+              <property name="int1">1</property>
+              <property name="int2">0</property>
+            </widget>
 	    <packing>
 	      <property name="padding">0</property>
 	      <property name="expand">True</property>
Index: mail/mail-component.c
===================================================================
RCS file: /cvs/gnome/evolution/mail/mail-component.c,v
retrieving revision 1.36
diff -u -r1.36 mail-component.c
--- mail/mail-component.c	10 Dec 2003 20:54:21 -0000	1.36
+++ mail/mail-component.c	25 Dec 2003 00:07:40 -0000
@@ -380,7 +380,7 @@
 	list->_buffer[0].menuDescription = _("_Mail Message");
 	list->_buffer[0].tooltip = _("Compose a new mail message");
 	list->_buffer[0].menuShortcut = 'm';
-	list->_buffer[0].iconName = "new-message.xpm";
+	list->_buffer[0].iconName = "stock_mail-compose";
 
 	return list;
 }
Index: mail/mail-config-druid.c
===================================================================
RCS file: /cvs/gnome/evolution/mail/mail-config-druid.c,v
retrieving revision 1.104
diff -u -r1.104 mail-config-druid.c
--- mail/mail-config-druid.c	2 Dec 2003 08:09:28 -0000	1.104
+++ mail/mail-config-druid.c	25 Dec 2003 00:07:41 -0000
@@ -50,6 +50,7 @@
 
 #include <evolution-wizard.h>
 #include <e-util/e-account.h>
+#include "e-icon-factory.h"
 
 typedef enum {
 	MAIL_CONFIG_WIZARD_PAGE_NONE = -1,
@@ -354,17 +355,14 @@
 		config_wizard_set_page (mcw, mcw->page + 1);
 }
 
-
-#define WIZARD_ICON(name) (EVOLUTION_IMAGES "/mail-config-druid-" name ".png")
-
 static struct {
-	const char *page_name, *title, *icon_path;
+	const char *page_name, *title, *icon_name;
 	void (*prepare_func) (MailConfigWizard *mcw);
 	gboolean (*back_func) (MailConfigWizard *mcw);
 	gboolean (*next_func) (MailConfigWizard *mcw);
 	const char *help_text;
 } wizard_pages[] = {
-	{ "identity_page", N_("Identity"), WIZARD_ICON ("identity"),
+	{ "identity_page", N_("Identity"), "stock_contact",
 	  identity_prepare, NULL, identity_next,
 	  N_("Please enter your name and email address below. "
 	     "The \"optional\" fields below do not need to be "
@@ -372,26 +370,26 @@
 	     "information in email you send.")
 	},
 
-	{ "source_page", N_("Receiving Mail"), WIZARD_ICON ("receive"),
+	{ "source_page", N_("Receiving Mail"), "stock_mail-receive",
 	  source_prepare, NULL, source_next,
 	  N_("Please enter information about your incoming "
 	     "mail server below. If you are not sure, ask your "
 	     "system administrator or Internet Service Provider.")
 	},
 
-	{ "extra_page", N_("Receiving Mail"), WIZARD_ICON ("receive"),
+	{ "extra_page", N_("Receiving Mail"), "stock_mail-receive",
 	  extra_prepare, NULL, NULL,
 	  N_("Please select among the following options")
 	},
 
-	{ "transport_page", N_("Sending Mail"), WIZARD_ICON ("send"),
+	{ "transport_page", N_("Sending Mail"), "stock_mail-send",
 	  transport_prepare, transport_back, transport_next,
 	  N_("Please enter information about the way you will "
 	     "send mail. If you are not sure, ask your system "
 	     "administrator or Internet Service Provider.")
 	},
 
-	{ "management_page", N_("Account Management"), WIZARD_ICON ("account-name"),
+	{ "management_page", N_("Account Management"), "stock_person",
 	  management_prepare, NULL, NULL,
 	  N_("You are almost done with the mail configuration "
 	     "process. The identity, incoming mail server and "
@@ -612,6 +610,7 @@
 {
 	MailConfigWizard *mcw;
 	GtkWidget *new, *page;
+	GdkPixbuf *icon;
 	int i;
 
 	mcw = config_wizard_new ();
@@ -623,6 +622,9 @@
 	for (i = 0; i < num_wizard_pages; i++) {
 		page = glade_xml_get_widget (mcw->gui->xml,
 					     wizard_pages[i].page_name);
+		icon = e_icon_factory_get_icon (wizard_pages[i].icon_name, 48);
+		gnome_druid_page_standard_set_logo (GNOME_DRUID_PAGE_STANDARD (page), icon);
+		g_object_unref (icon);
 		g_ptr_array_add (mcw->interior_pages, page);
 		gtk_box_pack_start (GTK_BOX (GNOME_DRUID_PAGE_STANDARD (page)->vbox),
 				    get_page (mcw->gui->xml, i),
@@ -747,7 +749,7 @@
 	
 	wizard = evolution_wizard_new ();
 	for (i = 0; i < MAIL_CONFIG_WIZARD_NUM_PAGES; i++) {
-		icon = gdk_pixbuf_new_from_file (wizard_pages[i].icon_path, NULL);
+		icon = e_icon_factory_get_icon (wizard_pages[i].icon_name, 48);
 		evolution_wizard_add_page (wizard, _(wizard_pages[i].title),
 					   icon, get_page (mcw->gui->xml, i));
 		g_object_unref (icon);
Index: mail/mail-config.glade
===================================================================
RCS file: /cvs/gnome/evolution/mail/mail-config.glade,v
retrieving revision 1.126
diff -u -r1.126 mail-config.glade
--- mail/mail-config.glade	11 Dec 2003 04:56:12 -0000	1.126
+++ mail/mail-config.glade	25 Dec 2003 00:07:57 -0000
@@ -33,7 +33,6 @@
 	<widget class="GnomeDruidPageStandard" id="identity_page">
 	  <property name="visible">True</property>
 	  <property name="title" translatable="yes">Identity</property>
-	  <property name="logo">mail-config-druid-identity.png</property>
 
 	  <child internal-child="vbox">
 	    <widget class="GtkVBox" id="druid_identity_vbox">
@@ -54,7 +53,6 @@
 	<widget class="GnomeDruidPageStandard" id="source_page">
 	  <property name="visible">True</property>
 	  <property name="title" translatable="yes">Receiving Email</property>
-	  <property name="logo">mail-config-druid-receive.png</property>
 
 	  <child internal-child="vbox">
 	    <widget class="GtkVBox" id="druid_source_vbox">
@@ -75,7 +73,6 @@
 	<widget class="GnomeDruidPageStandard" id="extra_page">
 	  <property name="visible">True</property>
 	  <property name="title" translatable="yes">Receiving Email</property>
-	  <property name="logo">mail-config-druid-receive.png</property>
 
 	  <child internal-child="vbox">
 	    <widget class="GtkVBox" id="druid_extra_vbox">
@@ -96,7 +93,6 @@
 	<widget class="GnomeDruidPageStandard" id="transport_page">
 	  <property name="visible">True</property>
 	  <property name="title" translatable="yes">Sending Email</property>
-	  <property name="logo">mail-config-druid-send.png</property>
 
 	  <child internal-child="vbox">
 	    <widget class="GtkVBox" id="druid_transport_vbox">
@@ -117,7 +113,6 @@
 	<widget class="GnomeDruidPageStandard" id="management_page">
 	  <property name="visible">True</property>
 	  <property name="title" translatable="yes">Account Management</property>
-	  <property name="logo">mail-config-druid-account-name.png</property>
 
 	  <child internal-child="vbox">
 	    <widget class="GtkVBox" id="druid_management_vbox">
Index: mail/mail-mt.c
===================================================================
RCS file: /cvs/gnome/evolution/mail/mail-mt.c,v
retrieving revision 1.76
diff -u -r1.76 mail-mt.c
--- mail/mail-mt.c	2 Dec 2003 04:13:18 -0000	1.76
+++ mail/mail-mt.c	25 Dec 2003 00:07:58 -0000
@@ -21,6 +21,7 @@
 #include "camel/camel-operation.h"
 
 #include "e-activity-handler.h"
+#include "e-icon-factory.h"
 
 #include "mail-config.h"
 #include "camel/camel-url.h"
@@ -51,9 +52,6 @@
 	int activity_id;
 };
 
-/* This is used for the mail status bar, cheap and easy */
-#include "art/mail-new.xpm"
-
 static GdkPixbuf *progress_icon = NULL;
 
 /* mail_msg stuff */
@@ -894,7 +892,7 @@
 			data->activity_state = 1;
 			
 			if (progress_icon == NULL)
-				progress_icon = gdk_pixbuf_new_from_xpm_data ((const char **)mail_new_xpm);
+				progress_icon = e_icon_factory_get_icon ("stock_mail-unread", 16);
 			
 			MAIL_MT_UNLOCK (mail_msg_lock);
 			if (msg->ops->describe_msg)
Index: mail/mail-send-recv.c
===================================================================
RCS file: /cvs/gnome/evolution/mail/mail-send-recv.c,v
retrieving revision 1.79
diff -u -r1.79 mail-send-recv.c
--- mail/mail-send-recv.c	17 Nov 2003 03:32:41 -0000	1.79
+++ mail/mail-send-recv.c	25 Dec 2003 00:08:00 -0000
@@ -32,7 +32,6 @@
 #include <gtk/gtkmain.h>
 #include <gtk/gtkdialog.h>
 #include <gtk/gtkstock.h>
-#include <libgnomeui/gnome-window-icon.h>
 
 #include "e-util/e-gtk-utils.h"
 
@@ -51,6 +50,7 @@
 #include "mail-ops.h"
 #include "mail-send-recv.h"
 #include "mail-folder-cache.h"
+#include "e-icon-factory.h"
 
 #define d(x)
 
@@ -302,12 +302,20 @@
 	char *pretty_url;
 	EAccount *account;
 	EIterator *iter;
+	GdkPixbuf *pixbuf;
+	GList *icon_list;
 	
 	gd = (GtkDialog *)send_recv_dialogue = gtk_dialog_new_with_buttons(_("Send & Receive Mail"), NULL, GTK_DIALOG_NO_SEPARATOR, NULL);
 	stop = (GtkButton *)e_gtk_button_new_with_icon(_("Cancel _All"), GTK_STOCK_CANCEL);
 	gtk_widget_show((GtkWidget *)stop);
 	gtk_dialog_add_action_widget(gd, (GtkWidget *)stop, GTK_RESPONSE_CANCEL);
-	gnome_window_icon_set_from_file (GTK_WINDOW (gd), EVOLUTION_ICONSDIR "/send-receive.xpm");
+	
+	icon_list = e_icon_factory_get_icon_list ("stock_mail-send-receive");
+	if (icon_list) {
+		gtk_window_set_icon_list (GTK_WINDOW (gd), icon_list);
+		g_list_foreach (icon_list, (GFunc) g_object_unref, NULL);
+		g_list_free (icon_list);
+	}
 	
 	num_sources = 0;
 	
@@ -375,7 +383,9 @@
 		} else if (info->timeout_id == 0)
 			info->timeout_id = g_timeout_add (STATUS_TIMEOUT, operation_status_timeout, info);
 		
-		recv_icon = gtk_image_new_from_file (EVOLUTION_BUTTONSDIR "/receive-24.png");
+		pixbuf = e_icon_factory_get_icon ("stock_mail-receive", 24);
+		recv_icon = gtk_image_new_from_pixbuf (pixbuf);
+		gdk_pixbuf_unref (pixbuf);
 		
 	       	pretty_url = format_url (source->url);
 		label = (GtkLabel *)gtk_label_new (pretty_url);
@@ -428,7 +438,9 @@
 		} else if (info->timeout_id == 0)
 			info->timeout_id = g_timeout_add (STATUS_TIMEOUT, operation_status_timeout, info);
 		
-		send_icon  = gtk_image_new_from_file (EVOLUTION_BUTTONSDIR "/send-24.png");
+		pixbuf = e_icon_factory_get_icon ("stock_mail-send", 24);
+		send_icon  = gtk_image_new_from_pixbuf (pixbuf);
+		gdk_pixbuf_unref (pixbuf);
 		
 		pretty_url = format_url (destination);
 		label = (GtkLabel *)gtk_label_new (pretty_url);
Index: mail/message-list.c
===================================================================
RCS file: /cvs/gnome/evolution/mail/message-list.c,v
retrieving revision 1.360
diff -u -r1.360 message-list.c
--- mail/message-list.c	12 Dec 2003 00:05:00 -0000	1.360
+++ mail/message-list.c	25 Dec 2003 00:08:06 -0000
@@ -61,22 +61,7 @@
 #include "mail-ops.h"
 
 #include "em-utils.h"
-
-#include "art/mail-new.xpm"
-#include "art/mail-read.xpm"
-#include "art/mail-replied.xpm"
-#include "art/attachment.xpm"
-#include "art/priority-high.xpm"
-#include "art/empty.xpm"
-#include "art/score-lowest.xpm"
-#include "art/score-lower.xpm"
-#include "art/score-low.xpm"
-#include "art/score-normal.xpm"
-#include "art/score-high.xpm"
-#include "art/score-higher.xpm"
-#include "art/score-highest.xpm"
-#include "art/flag-for-followup.xpm"
-#include "art/flag-for-followup-done.xpm"
+#include "e-icon-factory.h"
 
 /*#define TIMEIT */
 
@@ -166,28 +151,27 @@
 static guint message_list_signals [LAST_SIGNAL] = {0, };
 
 static struct {
-	char **image_base;
+	gchar *icon_name;
 	GdkPixbuf  *pixbuf;
 } states_pixmaps [] = {
-	{ mail_new_xpm,		NULL },
-	{ mail_read_xpm,	NULL },
-	{ mail_replied_xpm,	NULL },
-/* FIXME: Replace these with pixmaps for multiple_read and multiple_unread */
-    	{ mail_new_xpm,		NULL },
-    	{ mail_read_xpm,	NULL },
-	{ empty_xpm,		NULL },
-	{ attachment_xpm,	NULL },
-	{ priority_high_xpm,	NULL },
-	{ score_lowest_xpm,     NULL },
-	{ score_lower_xpm,      NULL },
-	{ score_low_xpm,        NULL },
-	{ score_normal_xpm,     NULL },
-	{ score_high_xpm,       NULL },
-	{ score_higher_xpm,     NULL },
-	{ score_highest_xpm,    NULL },
-	{ flag_for_followup_xpm,NULL },
-	{ flag_for_followup_done_xpm,NULL },
-	{ NULL,			NULL }
+	{ "stock_mail-unread",			NULL },
+	{ "stock_mail-open",			NULL },
+	{ "stock_mail-replied",			NULL },
+    	{ "stock_mail-multiple-unread",		NULL },
+    	{ "stock_mail-multiple-open",		NULL },
+	{ "",					NULL },
+	{ "stock_attach",			NULL },
+	{ "stock_mail-priority-high",		NULL },
+	{ "stock_score_lowest",			NULL },
+	{ "stock_score_lower",			NULL },
+	{ "stock_score_low",			NULL },
+	{ "stock_score_normal",			NULL },
+	{ "stock_score_high",			NULL },
+	{ "stock_score_higher",			NULL },
+	{ "stock_score_highest",		NULL },
+	{ "stock_mail-flag-for-followup",	NULL },
+	{ "stock_mail-flag-for-followup-done",	NULL },
+	{ NULL,					NULL }
 };
 
 /* FIXME: junk prefs */
@@ -1225,9 +1209,8 @@
 	if (states_pixmaps [0].pixbuf)
 		return;
 	
-	for (i = 0; states_pixmaps [i].image_base; i++){
-		states_pixmaps [i].pixbuf = gdk_pixbuf_new_from_xpm_data (
-			(const char **) states_pixmaps [i].image_base);
+	for (i = 0; states_pixmaps [i].icon_name; i++){
+		states_pixmaps [i].pixbuf = e_icon_factory_get_icon (states_pixmaps [i].icon_name, 16);
 	}
 }
 
Index: mail/message-tag-followup.c
===================================================================
RCS file: /cvs/gnome/evolution/mail/message-tag-followup.c,v
retrieving revision 1.26
diff -u -r1.26 message-tag-followup.c
--- mail/message-tag-followup.c	18 Sep 2003 17:05:21 -0000	1.26
+++ mail/message-tag-followup.c	25 Dec 2003 00:08:07 -0000
@@ -43,11 +43,11 @@
 #include <gconf/gconf.h>
 #include <gconf/gconf-client.h>
 
-#include <libgnomeui/gnome-window-icon.h>
 #include <libgnomeui/gnome-pixmap.h>
 
 #include "message-tag-followup.h"
 #include "mail-config.h"
+#include "e-icon-factory.h"
 
 static void message_tag_followup_class_init (MessageTagFollowUpClass *class);
 static void message_tag_followup_init (MessageTagFollowUp *followup);
@@ -276,10 +276,19 @@
 	GtkWidget *widget;
 	GList *strings;
 	GladeXML *gui;
+	GList *icon_list;
+	GdkPixbuf *pixbuf;
 	int i;
 	
 	gtk_window_set_title (GTK_WINDOW (editor), _("Flag to Follow Up"));
-	gnome_window_icon_set_from_file (GTK_WINDOW (editor), EVOLUTION_IMAGES "/flag-for-followup-16.png");
+	
+	icon_list = e_icon_factory_get_icon_list ("stock_mail-flag-for-followup");
+	if (icon_list) {
+		gtk_window_set_icon_list (GTK_WINDOW (editor), icon_list);
+		g_list_foreach (icon_list, (GFunc) g_object_unref, NULL);
+		g_list_free (icon_list);
+	}
+	
 	gtk_container_set_border_width (GTK_CONTAINER (editor), 6);
 	
 	gui = glade_xml_new (EVOLUTION_GLADEDIR "/message-tags.glade", "followup_editor", NULL);
@@ -291,7 +300,9 @@
 	gtk_box_set_child_packing (GTK_BOX (GTK_DIALOG (editor)->vbox), widget, TRUE, TRUE, 6, GTK_PACK_START);
 	
 	widget = glade_xml_get_widget (gui, "pixmap");
-	gtk_image_set_from_file ((GtkImage *)widget, EVOLUTION_GLADEDIR "/flag-for-followup-48.png");
+	pixbuf = e_icon_factory_get_icon ("stock_mail-flag-for-followup", 48);
+	gtk_image_set_from_pixbuf ((GtkImage *)widget, pixbuf);
+	g_object_unref (pixbuf);
 	
 	followup->message_list = GTK_TREE_VIEW (glade_xml_get_widget (gui, "message_list"));
 	model = gtk_list_store_new (2, G_TYPE_STRING, G_TYPE_STRING);
Index: mail/message-tags.glade
===================================================================
RCS file: /cvs/gnome/evolution/mail/message-tags.glade,v
retrieving revision 1.6
diff -u -r1.6 message-tags.glade
--- mail/message-tags.glade	11 Apr 2003 21:18:08 -0000	1.6
+++ mail/message-tags.glade	25 Dec 2003 00:08:08 -0000
@@ -69,13 +69,13 @@
 	      <property name="spacing">6</property>
 
 	      <child>
-		<widget class="GtkImage" id="pixmap">
+		<widget class="Custom" id="pixmap">
 		  <property name="visible">True</property>
-		  <property name="pixbuf">flag-for-followup-48.png</property>
-		  <property name="xalign">0.5</property>
-		  <property name="yalign">0.5</property>
-		  <property name="xpad">0</property>
-		  <property name="ypad">0</property>
+		  <property name="creation_function">e_create_image_widget</property>
+		  <property name="string1">stock_flag-for-followup</property>
+		  <property name="string2"></property>
+		  <property name="int1">0</property>
+		  <property name="int2">0</property>
 		</widget>
 		<packing>
 		  <property name="padding">0</property>
Index: shell/ChangeLog
===================================================================
RCS file: /cvs/gnome/evolution/shell/ChangeLog,v
retrieving revision 1.1359
diff -u -r1.1359 ChangeLog
--- shell/ChangeLog	14 Dec 2003 15:54:39 -0000	1.1359
+++ shell/ChangeLog	25 Dec 2003 00:08:11 -0000
@@ -1,3 +1,23 @@
+2003-12-24  Michael Terry <mterry fastmail fm>
+
+	* Makefile.am: Add e-util to include paths and remove
+	e-icon-factory.{c,h}.  Part of bug 127812.
+
+	* e-component-registry.c (query_components),
+	e-shell-importer.c (e_shell_importer_start_import),
+	e-shell-settings-dialog.c (load_pages),
+	e-shell-startup-wizard.c (make_timezone_page, make_importer_page),
+	e-shell-view-menu.c,
+	e-shell-window-commands.c,
+	e-splash.c (e_splash_construct),
+	e-user-creatable-items-handler.c (ensure_menu_items),
+	evolution-shell-component-utils.c (e_pixmaps_update),
+	evolution-shell-component-utils.h,
+	evolution-test-component.c (timeout_callback_1),
+	main.c (main),
+	importer/import.glade: Use gnome-icon-theme names for icons and
+	e-icon-factory to look them up.  Part of bug 127812.
+
 2003-12-14  JP Rosevear <jpr ximian com>
 
 	* e-user-creatable-items-handler.c (get_components_from_registry):
Index: shell/Makefile.am
===================================================================
RCS file: /cvs/gnome/evolution/shell/Makefile.am,v
retrieving revision 1.185
diff -u -r1.185 Makefile.am
--- shell/Makefile.am	6 Dec 2003 18:09:16 -0000	1.185
+++ shell/Makefile.am	25 Dec 2003 00:08:11 -0000
@@ -2,6 +2,7 @@
 
 INCLUDES =							\
 	-I$(top_srcdir)/widgets					\
+	-I$(top_srcdir)/e-util					\
 	-I$(top_srcdir)/widgets/misc				\
 	-I$(top_srcdir)						\
 	-DEVOLUTION_IMAGES=\""$(imagesdir)"\"			\
@@ -100,7 +101,6 @@
 eshellinclude_HEADERS = 			\
 	Evolution.h				\
 	e-activity-handler.h			\
-	e-icon-factory.h			\
 	e-shell-corba-icon-utils.h		\
 	e-shell-utils.h				\
 	e-task-bar.h				\
@@ -113,7 +113,6 @@
 	$(IDL_GENERATED)			\
 	$(MARSHAL_GENERATED)			\
 	e-activity-handler.c			\
-	e-icon-factory.c			\
 	e-shell-corba-icon-utils.c		\
 	e-shell-utils.c				\
 	evolution-config-control.c		\
Index: shell/e-component-registry.c
===================================================================
RCS file: /cvs/gnome/evolution/shell/e-component-registry.c,v
retrieving revision 1.43
diff -u -r1.43 e-component-registry.c
--- shell/e-component-registry.c	1 Dec 2003 22:14:42 -0000	1.43
+++ shell/e-component-registry.c	25 Dec 2003 00:08:12 -0000
@@ -27,7 +27,7 @@
 #include "e-component-registry.h"
 
 #include "e-shell-utils.h"
-
+#include "e-icon-factory.h"
 #include "e-util/e-lang-utils.h"
 
 #include <libgnome/gnome-i18n.h>
@@ -169,8 +169,7 @@
 		if (icon_name == NULL) {
 			icon = NULL;
 		} else {
-			char *full_path = e_shell_get_icon_path (icon_name, TRUE);
-			icon = gdk_pixbuf_new_from_file (full_path, NULL);
+			icon = e_icon_factory_get_icon (icon_name, 24);
 		}
 
 		sort_order_string = bonobo_server_info_prop_lookup (& info_list->_buffer[i],
Index: shell/e-shell-importer.c
===================================================================
RCS file: /cvs/gnome/evolution/shell/e-shell-importer.c,v
retrieving revision 1.61
diff -u -r1.61 e-shell-importer.c
--- shell/e-shell-importer.c	6 Dec 2003 18:09:17 -0000	1.61
+++ shell/e-shell-importer.c	25 Dec 2003 00:08:14 -0000
@@ -1166,10 +1166,13 @@
 	ImportData *data = g_new0 (ImportData, 1);
 	GtkWidget *html;
 	static gboolean dialog_open = FALSE;
+	GdkPixbuf *icon;
 
 	if (dialog_open) {
 		return;
 	}
+	
+	icon = e_icon_factory_get_icon ("stock_import", 48);
 
 	dialog_open = TRUE;
 	data->view = E_SHELL_VIEW (user_data);
@@ -1190,8 +1193,10 @@
 	gtk_button_set_label((GtkButton *)((GnomeDruid *)data->druid)->finish, _("_Import"));
 
 	data->start = GNOME_DRUID_PAGE_EDGE (glade_xml_get_widget (data->wizard, "page0"));
+	gnome_druid_page_edge_set_logo (data->start, icon);
 
 	data->typedialog = glade_xml_get_widget (data->wizard, "page1");
+	gnome_druid_page_standard_set_logo (data->typedialog, icon);
 	g_signal_connect (data->typedialog, "next",
 			  G_CALLBACK (next_type_page), data);
 	data->typepage = importer_type_page_new (data);
@@ -1202,6 +1207,7 @@
 	gtk_box_pack_start (GTK_BOX (GNOME_DRUID_PAGE_STANDARD (data->typedialog)->vbox), data->typepage->vbox, TRUE, TRUE, 0);
 
 	data->intelligent = glade_xml_get_widget (data->wizard, "page2-intelligent");
+	gnome_druid_page_standard_set_logo (data->intelligent, icon);
 	g_signal_connect (data->intelligent, "next",
 			  G_CALLBACK (next_intelligent_page), data);
 	g_signal_connect (data->intelligent, "back",
@@ -1218,6 +1224,7 @@
 	
 
 	data->filedialog = glade_xml_get_widget (data->wizard, "page2-file");
+	gnome_druid_page_standard_set_logo (data->filedialog, icon);
 	g_signal_connect_after (data->filedialog, "prepare",
 			  G_CALLBACK (prepare_file_page), data);
 	g_signal_connect (data->filedialog, "next",
@@ -1226,6 +1233,7 @@
 			  G_CALLBACK (back_file_page), data);
 
 	data->finish = GNOME_DRUID_PAGE_EDGE (glade_xml_get_widget (data->wizard, "page3"));
+	gnome_druid_page_edge_set_logo (data->finish, icon);
 	g_signal_connect (data->finish, "back",
 			  G_CALLBACK (back_finish_page), data);
 
@@ -1243,5 +1251,7 @@
 
 	g_object_weak_ref ((GObject *)data->dialog, import_druid_weak_notify, data);
 
+	g_object_unref (icon);
+
 	gtk_widget_show_all (data->dialog);
 }
Index: shell/e-shell-settings-dialog.c
===================================================================
RCS file: /cvs/gnome/evolution/shell/e-shell-settings-dialog.c,v
retrieving revision 1.27
diff -u -r1.27 e-shell-settings-dialog.c
--- shell/e-shell-settings-dialog.c	3 Nov 2003 20:15:50 -0000	1.27
+++ shell/e-shell-settings-dialog.c	25 Dec 2003 00:08:15 -0000
@@ -28,7 +28,7 @@
 #include "e-shell-settings-dialog.h"
 
 #include "e-corba-config-page.h"
-
+#include "e-icon-factory.h"
 #include "e-util/e-lang-utils.h"
 
 #include <gal/util/e-util.h>
@@ -204,11 +204,7 @@
 			if (g_path_is_absolute (icon_path)) {
 				icon = gdk_pixbuf_new_from_file (icon_path, NULL);
 			} else {
-				char *real_icon_path;
-
-				real_icon_path = g_build_filename (EVOLUTION_IMAGES, icon_path, NULL);
-				icon = gdk_pixbuf_new_from_file (real_icon_path, NULL);
-				g_free (real_icon_path);
+				icon = e_icon_factory_get_icon (icon_path, 48);
 			}
 		}
 
Index: shell/e-shell-startup-wizard.c
===================================================================
RCS file: /cvs/gnome/evolution/shell/e-shell-startup-wizard.c,v
retrieving revision 1.45
diff -u -r1.45 e-shell-startup-wizard.c
--- shell/e-shell-startup-wizard.c	1 Dec 2003 22:14:42 -0000	1.45
+++ shell/e-shell-startup-wizard.c	25 Dec 2003 00:08:16 -0000
@@ -31,7 +31,7 @@
 
 #include "e-timezone-dialog/e-timezone-dialog.h"
 #include "e-util/e-gtk-utils.h"
-
+#include "e-icon-factory.h"
 #include <gconf/gconf-client.h>
 
 #include <evolution-wizard.h>
@@ -493,6 +493,7 @@
 {
 	TimezoneDialogPage *page;
 	ETimezoneDialog *etd;
+	GdkPixbuf *pixbuf;
 	
 	g_return_val_if_fail (data != NULL, NULL);
 
@@ -500,6 +501,10 @@
 	page->page = glade_xml_get_widget (data->wizard, "timezone-page");
 	g_return_val_if_fail (page->page != NULL, NULL);
 
+	pixbuf = e_icon_factory_get_icon ("stock_timezone", 48);
+	gnome_druid_page_standard_set_logo (GNOME_DRUID_PAGE_STANDARD (page->page), pixbuf);
+	g_object_unref (pixbuf);
+
 	g_signal_connect_after (page->page, "prepare",
 				G_CALLBACK (prepare_timezone_page), data);
 	page->vbox = GTK_WIDGET (GNOME_DRUID_PAGE_STANDARD (page->page)->vbox);
@@ -716,6 +721,7 @@
 {
 	ImportDialogPage *page;
 	GtkWidget *label, *sep;
+	GdkPixbuf *pixbuf;
 	
 	g_return_val_if_fail (data != NULL, NULL);
 
@@ -723,6 +729,10 @@
 	page->page = glade_xml_get_widget (data->wizard, "import-page");
 	g_return_val_if_fail (page->page != NULL, NULL);
 
+	pixbuf = e_icon_factory_get_icon ("stock_mail-import", 48);
+	gnome_druid_page_standard_set_logo (GNOME_DRUID_PAGE_STANDARD (page->page), pixbuf);
+	g_object_unref (pixbuf);
+
 	g_signal_connect_after (page->page, "prepare",
 				G_CALLBACK (prepare_importer_page), data);
 	page->vbox = GNOME_DRUID_PAGE_STANDARD (page->page)->vbox;
Index: shell/e-shell-view-menu.c
===================================================================
RCS file: /cvs/gnome/evolution/shell/e-shell-view-menu.c,v
retrieving revision 1.141
diff -u -r1.141 e-shell-view-menu.c
--- shell/e-shell-view-menu.c	25 Mar 2003 15:48:33 -0000	1.141
+++ shell/e-shell-view-menu.c	25 Dec 2003 00:08:18 -0000
@@ -708,30 +708,30 @@
 };
 
 static EPixmap pixmaps [] = {
-	E_PIXMAP ("/commands/SendReceive",      "send-receive.xpm"),
+	E_PIXMAP ("/commands/SendReceive",      "stock_mail-send-receive", 16),
 
-	E_PIXMAP ("/menu/File/New/Folder",	"folder.xpm"),
-	E_PIXMAP ("/menu/File/Folder/Folder",	"folder.xpm"),
-	E_PIXMAP ("/menu/File/FileImporter",	"import.xpm"),
-	E_PIXMAP ("/menu/File/ToggleOffline",	"work_offline.xpm"),
+	E_PIXMAP ("/menu/File/New/Folder",	"stock_folder", 16),
+	E_PIXMAP ("/menu/File/Folder/Folder",	"stock_folder", 16),
+	E_PIXMAP ("/menu/File/FileImporter",	"stock_mail-import", 16),
+	E_PIXMAP ("/menu/File/ToggleOffline",	"stock_disconnect", 16),
 
-	E_PIXMAP ("/menu/Tools/Settings",       "settings-16.png"), 
+	E_PIXMAP ("/menu/Tools/Settings",       "gnome-settings", 16), 
 
-	E_PIXMAP ("/Toolbar/SendReceive",       "buttons/send-24-receive.png"),
+	E_PIXMAP ("/Toolbar/SendReceive",       "stock_mail-send-receive", 24),
 
-	E_PIXMAP ("/popups/NewPopup/Folder",    "folder.xpm"),
+	E_PIXMAP ("/popups/NewPopup/Folder",    "stock_folder", 16),
 
 	E_PIXMAP_END
 };
 
 static EPixmap offline_pixmaps [] = {
-	E_PIXMAP ("/menu/File/ToggleOffline", "work_offline.xpm"),
+	E_PIXMAP ("/menu/File/ToggleOffline", "stock_disconnect", 16),
 
 	E_PIXMAP_END
 };
 
 static EPixmap online_pixmaps [] = {
-	E_PIXMAP ("/menu/File/ToggleOffline", "work_online-16.png"),
+	E_PIXMAP ("/menu/File/ToggleOffline", "stock_connect", 16),
 	
 	E_PIXMAP_END
 };
Index: shell/e-shell-window-commands.c
===================================================================
RCS file: /cvs/gnome/evolution/shell/e-shell-window-commands.c,v
retrieving revision 1.5
diff -u -r1.5 e-shell-window-commands.c
--- shell/e-shell-window-commands.c	18 Nov 2003 01:05:55 -0000	1.5
+++ shell/e-shell-window-commands.c	25 Dec 2003 00:08:19 -0000
@@ -277,22 +277,22 @@
 };
 
 static EPixmap pixmaps [] = {
-	E_PIXMAP ("/commands/SendReceive", "send-receive.xpm"),
-	E_PIXMAP ("/Toolbar/SendReceive", "buttons/send-24-receive.png"),
-	E_PIXMAP ("/menu/File/FileImporter", "import.xpm"),
-	E_PIXMAP ("/menu/File/ToggleOffline", "work_offline.xpm"),
-	E_PIXMAP ("/menu/Tools/Settings", "settings-16.png"),
+	E_PIXMAP ("/commands/SendReceive", "stock_mail-send-receive", 16),
+	E_PIXMAP ("/Toolbar/SendReceive", "stock_mail-send-receive", 24),
+	E_PIXMAP ("/menu/File/FileImporter", "stock_mail-import", 16),
+	E_PIXMAP ("/menu/File/ToggleOffline", "stock_disconnect", 16),
+	E_PIXMAP ("/menu/Tools/Settings", "gnome-settings", 16),
 
 	E_PIXMAP_END
 };
 
 static EPixmap offline_pixmaps [] = {
-	E_PIXMAP ("/menu/File/ToggleOffline", "work_offline.xpm"),
+	E_PIXMAP ("/menu/File/ToggleOffline", "stock_disconnect", 16),
 	E_PIXMAP_END
 };
 
 static EPixmap online_pixmaps [] = {
-	E_PIXMAP ("/menu/File/ToggleOffline", "work_online-16.png"),
+	E_PIXMAP ("/menu/File/ToggleOffline", "stock_connect", 16),
 	E_PIXMAP_END
 };
 
Index: shell/e-splash.c
===================================================================
RCS file: /cvs/gnome/evolution/shell/e-splash.c,v
retrieving revision 1.33
diff -u -r1.33 e-splash.c
--- shell/e-splash.c	17 Jul 2003 17:09:37 -0000	1.33
+++ shell/e-splash.c	25 Dec 2003 00:08:19 -0000
@@ -27,12 +27,12 @@
 #include "e-splash.h"
 
 #include "e-util/e-gtk-utils.h"
+#include "e-icon-factory.h"
 
 #include <gtk/gtkframe.h>
 #include <gtk/gtkmain.h>
 #include <gtk/gtksignal.h>
 #include <libgnomecanvas/gnome-canvas-pixbuf.h>
-#include <libgnomeui/gnome-window-icon.h>
 #include <gal/util/e-util.h>
 
 
@@ -310,6 +310,7 @@
 	ESplashPrivate *priv;
 	GtkWidget *canvas, *frame;
 	int image_width, image_height;
+	GList *icon_list;
 
 	g_return_if_fail (splash != NULL);
 	g_return_if_fail (E_IS_SPLASH (splash));
@@ -351,7 +352,14 @@
 	gtk_window_set_resizable (GTK_WINDOW (splash), FALSE);
 	gtk_window_set_default_size (GTK_WINDOW (splash), image_width, image_height);
 	gtk_window_set_wmclass (GTK_WINDOW (splash), "evolution-splash", "Evolution");
-	gnome_window_icon_set_from_file (GTK_WINDOW (splash), EVOLUTION_DATADIR "/pixmaps/evolution.png");
+	
+	icon_list = e_icon_factory_get_icon_list ("evolution");
+	if (icon_list) {
+		gtk_window_set_icon_list (GTK_WINDOW (splash), icon_list);
+		g_list_foreach (icon_list, (GFunc) g_object_unref, NULL);
+		g_list_free (icon_list);
+	}
+	
 	gtk_window_set_title (GTK_WINDOW (splash), "Ximian Evolution");
 
 }
Index: shell/e-user-creatable-items-handler.c
===================================================================
RCS file: /cvs/gnome/evolution/shell/e-user-creatable-items-handler.c,v
retrieving revision 1.5
diff -u -r1.5 e-user-creatable-items-handler.c
--- shell/e-user-creatable-items-handler.c	14 Dec 2003 15:54:39 -0000	1.5
+++ shell/e-user-creatable-items-handler.c	25 Dec 2003 00:08:21 -0000
@@ -25,7 +25,7 @@
 #endif
 
 #include "e-user-creatable-items-handler.h"
-
+#include "e-icon-factory.h"
 #include "e-shell-utils.h"
 
 #include "widgets/misc/e-combo-button.h"
@@ -231,9 +231,7 @@
 				if (type->iconName == "") {
 					item->icon = NULL;
 				} else {
-					char *icon_path = e_shell_get_icon_path (type->iconName, TRUE);
-					item->icon = gdk_pixbuf_new_from_file (icon_path, NULL);
-					g_free (icon_path);
+					item->icon = e_icon_factory_get_icon (type->iconName, 16);
 				}
 
 				menu_items = g_slist_prepend (menu_items, item);
Index: shell/evolution-shell-component-utils.c
===================================================================
RCS file: /cvs/gnome/evolution/shell/evolution-shell-component-utils.c,v
retrieving revision 1.14
diff -u -r1.14 evolution-shell-component-utils.c
--- shell/evolution-shell-component-utils.c	25 Mar 2003 15:48:33 -0000	1.14
+++ shell/evolution-shell-component-utils.c	25 Dec 2003 00:08:21 -0000
@@ -24,7 +24,7 @@
 #endif
 
 #include "evolution-shell-component-utils.h"
-
+#include "e-icon-factory.h"
 #include "e-util/e-dialog-utils.h"
 
 #include <string.h>
@@ -53,23 +53,14 @@
 
 	for (i = 0; pixcache [i].path; i++) {
 		if (!pixcache [i].pixbuf) {
-			char *path;
 			GdkPixbuf *pixbuf;
 
-			path = g_build_filename (EVOLUTION_IMAGES, pixcache [i].fname, NULL);
-
-			pixbuf = gdk_pixbuf_new_from_file (path, NULL);
-			if (pixbuf == NULL) {
-				g_warning ("Cannot load image -- %s", path);
-			} else {
-				pixcache [i].pixbuf = bonobo_ui_util_pixbuf_to_xml (pixbuf);
-				g_object_unref (pixbuf);
-				bonobo_ui_component_set_prop (uic,
-					pixcache [i].path, "pixname",
-					pixcache [i].pixbuf, NULL);
-			}
-
-			g_free (path);
+			pixbuf = e_icon_factory_get_icon (pixcache [i].name, pixcache [i].size);
+			pixcache [i].pixbuf = bonobo_ui_util_pixbuf_to_xml (pixbuf);
+			g_object_unref (pixbuf);
+			bonobo_ui_component_set_prop (uic,
+				pixcache [i].path, "pixname",
+				pixcache [i].pixbuf, NULL);
 		} else {
 			bonobo_ui_component_set_prop (uic, pixcache [i].path,
 						      "pixname",
Index: shell/evolution-shell-component-utils.h
===================================================================
RCS file: /cvs/gnome/evolution/shell/evolution-shell-component-utils.h,v
retrieving revision 1.5
diff -u -r1.5 evolution-shell-component-utils.h
--- shell/evolution-shell-component-utils.h	4 Apr 2002 13:35:26 -0000	1.5
+++ shell/evolution-shell-component-utils.h	25 Dec 2003 00:08:21 -0000
@@ -31,12 +31,13 @@
 
 typedef struct _EPixmap {
 	const char *path;
-	const char *fname;
+	const char *name;
+	gint       size;
 	char       *pixbuf;
 } EPixmap;
 
-#define E_PIXMAP(path,fname)	{ (path), (fname), NULL }
-#define E_PIXMAP_END		{ NULL, NULL, NULL }
+#define E_PIXMAP(path,name,size)	{ (path), (name), (size), NULL }
+#define E_PIXMAP_END			{ NULL, NULL, 0, NULL }
 
 /* Takes an array of pixmaps, terminated by E_PIXMAP_END, and loads into uic */
 void e_pixmaps_update (BonoboUIComponent *uic, EPixmap *pixcache);
Index: shell/evolution-test-component.c
===================================================================
RCS file: /cvs/gnome/evolution/shell/evolution-test-component.c,v
retrieving revision 1.40
diff -u -r1.40 evolution-test-component.c
--- shell/evolution-test-component.c	6 Feb 2003 17:26:01 -0000	1.40
+++ shell/evolution-test-component.c	25 Dec 2003 00:08:23 -0000
@@ -26,6 +26,8 @@
 #include <config.h>
 #endif
 
+#include "e-icon-factory.h"
+
 #include "evolution-shell-component.h"
 
 #include "evolution-activity-client.h"
@@ -490,7 +492,7 @@
 
 #define NUM_ACTIVITIES 10
 
-	animated_icon[0] = gdk_pixbuf_new_from_file (EVOLUTION_IMAGES "outbox-mini.png", NULL);
+	animated_icon[0] = e_icon_factory_get_icon ("stock_outbox", TRUE);
 	animated_icon[1] = NULL;
 
 	g_assert (animated_icon[0] != NULL);
Index: shell/main.c
===================================================================
RCS file: /cvs/gnome/evolution/shell/main.c,v
retrieving revision 1.137
diff -u -r1.137 main.c
--- shell/main.c	3 Dec 2003 20:08:14 -0000	1.137
+++ shell/main.c	25 Dec 2003 00:08:24 -0000
@@ -50,7 +50,6 @@
 #include <libgnome/gnome-i18n.h>
 #include <libgnome/gnome-util.h>
 #include <libgnomeui/gnome-ui-init.h>
-#include <libgnomeui/gnome-window-icon.h>
 
 #include <bonobo/bonobo-main.h>
 #include <bonobo/bonobo-moniker-util.h>
@@ -545,6 +544,7 @@
 	poptContext popt_context;
 	const char **args;
 	char *evolution_directory;
+	GList *icon_list;
 
 	/* Make ElectricFence work.  */
 	free (malloc (10));
@@ -589,7 +589,12 @@
 	e_cursors_init ();
 	e_icon_factory_init ();
 
-	gnome_window_icon_set_default_from_file (EVOLUTION_IMAGES "/evolution-inbox.png");
+	icon_list = e_icon_factory_get_icon_list ("stock_mail");
+	if (icon_list) {
+		gtk_window_set_default_icon_list (icon_list);
+		g_list_foreach (icon_list, (GFunc) g_object_unref, NULL);
+		g_list_free (icon_list);
+	}
 
 	/* FIXME */
 	evolution_directory = g_build_filename (g_get_home_dir (), "evolution", NULL);
Index: shell/glade/evolution-startup-wizard.glade
===================================================================
RCS file: /cvs/gnome/evolution/shell/glade/evolution-startup-wizard.glade,v
retrieving revision 1.11
diff -u -r1.11 evolution-startup-wizard.glade
--- shell/glade/evolution-startup-wizard.glade	21 Apr 2003 19:36:00 -0000	1.11
+++ shell/glade/evolution-startup-wizard.glade	25 Dec 2003 00:08:24 -0000
@@ -36,7 +36,6 @@
 	<widget class="GnomeDruidPageStandard" id="timezone-page">
 	  <property name="visible">True</property>
 	  <property name="title" translatable="yes">Timezone </property>
-	  <property name="logo">timezone-48.png</property>
 
 	  <child internal-child="vbox">
 	    <widget class="GtkVBox" id="druid-vbox6">
@@ -57,7 +56,6 @@
 	<widget class="GnomeDruidPageStandard" id="import-page">
 	  <property name="visible">True</property>
 	  <property name="title" translatable="yes">Importing Files</property>
-	  <property name="logo">import.png</property>
 
 	  <child internal-child="vbox">
 	    <widget class="GtkVBox" id="druid-vbox7">
Index: shell/importer/import.glade
===================================================================
RCS file: /cvs/gnome/evolution/shell/importer/import.glade,v
retrieving revision 1.8
diff -u -r1.8 import.glade
--- shell/importer/import.glade	8 Apr 2003 15:33:02 -0000	1.8
+++ shell/importer/import.glade	25 Dec 2003 00:08:24 -0000
@@ -23,7 +23,6 @@
             <property name="text" translatable="yes">Welcome to the Evolution Import Assistant.
 With this assistant you will be guided through the process of
 importing external files into Evolution.</property>
-            <property name="logo_image">import.png</property>
             <property name="position">GNOME_EDGE_START</property>
             <property name="visible">yes</property>
           </widget>
@@ -32,7 +31,6 @@
         <child>
           <widget class="GnomeDruidPageStandard" id="page1">
             <property name="title" translatable="yes">Importer Type (step 1 of 3)</property>
-            <property name="logo">import.png</property>
             <property name="visible">yes</property>
 
             <child internal-child="vbox">
@@ -57,7 +55,6 @@
         <child>
           <widget class="GnomeDruidPageStandard" id="page2-file">
             <property name="title" translatable="yes">Select a File (step 2 of 3)</property>
-            <property name="logo">import.png</property>
             <property name="visible">yes</property>
 
             <child internal-child="vbox">
@@ -82,7 +79,6 @@
         <child>
           <widget class="GnomeDruidPageStandard" id="page2-intelligent">
             <property name="title" translatable="yes">Select Importers (step 2 of 3)</property>
-            <property name="logo">import.png</property>
             <property name="visible">yes</property>
 
             <child internal-child="vbox">
@@ -108,7 +104,6 @@
           <widget class="GnomeDruidPageEdge" id="page3">
             <property name="title" translatable="yes">Import File (step 3 of 3)</property>
             <property name="text" translatable="yes">Click &quot;Import&quot; to begin importing the file into Evolution. </property>
-            <property name="logo_image">import.png</property>
             <property name="position">GNOME_EDGE_FINISH</property>
             <property name="visible">yes</property>
           </widget>
Index: widgets/ChangeLog
===================================================================
RCS file: /cvs/gnome/evolution/widgets/ChangeLog,v
retrieving revision 1.113
diff -u -r1.113 ChangeLog
--- widgets/ChangeLog	17 Dec 2003 00:50:03 -0000	1.113
+++ widgets/ChangeLog	25 Dec 2003 00:08:25 -0000
@@ -1,3 +1,17 @@
+2003-12-24  Michael Terry <mterry fastmail fm>
+
+	* misc/Makefile.am: Add e-util to include paths.  Part of bug 127812.
+
+	* misc/e-combo-button.c (create_pixmap_widget_from_pixbuf): Removed.
+	(create_empty_pixmap_widget): Removed.
+	(create_empty_image_widget): Added, changed wording from pixmap to
+	image throughout file.
+
+	* misc/e-combo-button.c (create_empty_image_widget, set_icon),
+	misc/e-title-bar.c (button_realize_cb),
+	misc/e-url-entry.c (init): Use gnome-icon-theme names for
+	icons and e-icon-factory to look them up.  Part of bug 127812.
+
 2003-12-16  Hans Petter Jansson  <hpj ximian com>
 
 	* misc/e-source-option-menu.c (select_source_foreach_menu_item):
Index: widgets/misc/Makefile.am
===================================================================
RCS file: /cvs/gnome/evolution/widgets/misc/Makefile.am,v
retrieving revision 1.44
diff -u -r1.44 Makefile.am
--- widgets/misc/Makefile.am	6 Dec 2003 18:06:23 -0000	1.44
+++ widgets/misc/Makefile.am	25 Dec 2003 00:08:26 -0000
@@ -3,6 +3,7 @@
 
 INCLUDES =								\
 	-I$(top_srcdir)							\
+	-I$(top_srcdir)/e-util						\
 	-I$(top_srcdir)/widgets/shortcut-bar				\
 	-I$(top_srcdir)/a11y/widgets/					\
 	-DMAP_DIR=\""$(imagesdir)"\"					\
@@ -158,4 +159,4 @@
 	ChangeLog.pre-1-4
 
 dist-hook:
-	cd $(distdir); rm -f $(BUILT_SOURCES)
\ No newline at end of file
+	cd $(distdir); rm -f $(BUILT_SOURCES)
Index: widgets/misc/e-combo-button.c
===================================================================
RCS file: /cvs/gnome/evolution/widgets/misc/e-combo-button.c,v
retrieving revision 1.14
diff -u -r1.14 e-combo-button.c
--- widgets/misc/e-combo-button.c	23 Jul 2003 13:49:30 -0000	1.14
+++ widgets/misc/e-combo-button.c	25 Dec 2003 00:08:26 -0000
@@ -25,13 +25,13 @@
 #endif
 
 #include "e-combo-button.h"
-#include "art/empty.xpm"
+#include "e-icon-factory.h"
 
 #include <gtk/gtkarrow.h>
 #include <gtk/gtkhbox.h>
 #include <gtk/gtklabel.h>
 #include <gtk/gtkmain.h>
-#include <gtk/gtkpixmap.h>
+#include <gtk/gtkimage.h>
 #include <gtk/gtksignal.h>
 
 #include <gal/util/e-util.h>
@@ -40,9 +40,9 @@
 struct _EComboButtonPrivate {
 	GdkPixbuf *icon;
 
-	GtkWidget *icon_pixmap;
+	GtkWidget *icon_image;
 	GtkWidget *label;
-	GtkWidget *arrow_pixmap;
+	GtkWidget *arrow_image;
 	GtkWidget *hbox;
 
 	GtkMenu *menu;
@@ -68,35 +68,18 @@
 /* Utility functions.  */
 
 static GtkWidget *
-create_pixmap_widget_from_pixbuf (GdkPixbuf *pixbuf)
+create_empty_image_widget (void)
 {
-	GtkWidget *pixmap_widget;
-	GdkPixmap *pixmap;
-	GdkBitmap *mask;
-
-	gdk_pixbuf_render_pixmap_and_mask (pixbuf, &pixmap, &mask, 128);
-
-	pixmap_widget = gtk_pixmap_new (pixmap, mask);
-
-	gdk_pixmap_unref (pixmap);
-	g_object_unref (mask);
-
-	return pixmap_widget;
-}
-
-static GtkWidget *
-create_empty_pixmap_widget (void)
-{
-	GtkWidget *pixmap_widget;
+	GtkWidget *image_widget;
 	GdkPixbuf *pixbuf;
 
-	pixbuf = gdk_pixbuf_new_from_xpm_data ((const char **)empty_xpm);
+	pixbuf = e_icon_factory_get_icon (NULL, 16);
 
-	pixmap_widget = create_pixmap_widget_from_pixbuf (pixbuf);
+	image_widget = gtk_image_new_from_pixbuf (pixbuf);
 
 	g_object_unref (pixbuf);
 
-	return pixmap_widget;
+	return image_widget;
 }
 
 static void
@@ -104,8 +87,6 @@
 	  GdkPixbuf *pixbuf)
 {
 	EComboButtonPrivate *priv;
-	GdkPixmap *pixmap;
-	GdkBitmap *mask;
 
 	priv = combo_button->priv;
 
@@ -114,19 +95,15 @@
 
 	if (pixbuf == NULL) {
 		priv->icon = NULL;
-		gtk_widget_hide (priv->icon_pixmap);
+		gtk_widget_hide (priv->icon_image);
 		return;
 	}
 
 	priv->icon = g_object_ref (pixbuf);
+	
+	gtk_image_set_from_pixbuf (GTK_IMAGE (priv->icon_image), priv->icon);
 
-	gdk_pixbuf_render_pixmap_and_mask (pixbuf, &pixmap, &mask, 128);
-	gtk_pixmap_set (GTK_PIXMAP (priv->icon_pixmap), pixmap, mask);
-
-	gtk_widget_show (priv->icon_pixmap);
-
-	gdk_pixmap_unref (pixmap);
-	gdk_pixmap_unref (mask);
+	gtk_widget_show (priv->icon_image);
 }
 
 
@@ -152,7 +129,7 @@
 
 	separator_x = (priv->label->allocation.width
 		       + priv->label->allocation.x
-		       + priv->arrow_pixmap->allocation.x) / 2;
+		       + priv->arrow_image->allocation.x) / 2;
 
 	if (GTK_WIDGET_STATE (combo_button) == GTK_STATE_ACTIVE)
 		shadow_type = GTK_SHADOW_IN;
@@ -250,9 +227,9 @@
 	priv = combo_button->priv;
 
 	if (priv) {
-		if (priv->arrow_pixmap != NULL) {
-			gtk_widget_destroy (priv->arrow_pixmap);
-			priv->arrow_pixmap = NULL;
+		if (priv->arrow_image != NULL) {
+			gtk_widget_destroy (priv->arrow_image);
+			priv->arrow_image = NULL;
 		}
 		
 		if (priv->icon != NULL) {
@@ -285,7 +262,7 @@
 		GTK_BUTTON (widget)->button_down = TRUE;
 
 		if (event->button == 3 || 
-		    event->x >= priv->arrow_pixmap->allocation.x) {
+		    event->x >= priv->arrow_image->allocation.x) {
 			/* User clicked on the right side: pop up the menu.  */
 			gtk_button_pressed (GTK_BUTTON (widget));
 
@@ -424,19 +401,19 @@
 	gtk_container_add (GTK_CONTAINER (combo_button), priv->hbox);
 	gtk_widget_show (priv->hbox);
 
-	priv->icon_pixmap = create_empty_pixmap_widget ();
-	gtk_box_pack_start (GTK_BOX (priv->hbox), priv->icon_pixmap, TRUE, TRUE, 0);
-	gtk_widget_show (priv->icon_pixmap);
+	priv->icon_image = create_empty_image_widget ();
+	gtk_box_pack_start (GTK_BOX (priv->hbox), priv->icon_image, TRUE, TRUE, 0);
+	gtk_widget_show (priv->icon_image);
 
 	priv->label = gtk_label_new ("");
 	gtk_box_pack_start (GTK_BOX (priv->hbox), priv->label, TRUE, TRUE,
 			    2 * GTK_WIDGET (combo_button)->style->xthickness);
 	gtk_widget_show (priv->label);
 
-	priv->arrow_pixmap = gtk_arrow_new (GTK_ARROW_DOWN, GTK_SHADOW_NONE);
-	gtk_box_pack_start (GTK_BOX (priv->hbox), priv->arrow_pixmap, TRUE, TRUE,
+	priv->arrow_image = gtk_arrow_new (GTK_ARROW_DOWN, GTK_SHADOW_NONE);
+	gtk_box_pack_start (GTK_BOX (priv->hbox), priv->arrow_image, TRUE, TRUE,
 			    GTK_WIDGET (combo_button)->style->xthickness);
-	gtk_widget_show (priv->arrow_pixmap);
+	gtk_widget_show (priv->arrow_image);
 
 	priv->icon           = NULL;
 	priv->menu           = NULL;
Index: widgets/misc/e-title-bar.c
===================================================================
RCS file: /cvs/gnome/evolution/widgets/misc/e-title-bar.c,v
retrieving revision 1.13
diff -u -r1.13 e-title-bar.c
--- widgets/misc/e-title-bar.c	23 Jan 2003 19:30:48 -0000	1.13
+++ widgets/misc/e-title-bar.c	25 Dec 2003 00:08:27 -0000
@@ -28,14 +28,15 @@
 #include <gtk/gtkbutton.h>
 #include <gtk/gtkhbox.h>
 #include <gtk/gtklabel.h>
-#include <gtk/gtkpixmap.h>
 #include <gtk/gtksignal.h>
 #include <gtk/gtktypeutils.h>
+#include <gtk/gtkimage.h>
 
 #include <gal/util/e-util.h>
 #include "e-clipped-label.h"
 
 #include "e-title-bar.h"
+#include "e-icon-factory.h"
 
 
 enum {
@@ -46,84 +47,6 @@
 static guint signals[LAST_SIGNAL] = { 0 };
 
 
-/* The pixmaps.  */
-
-static char *close_xpm[] = {
-	"16 16 2 1",
-	" 	c none",
-	".	c #000000000000",
-        "                ",
-        "                ",
-        "                ",
-        "   ..      ..   ",
-        "   ...    ...   ",
-        "    ...  ...    ",
-        "     ......     ",
-        "      ....      ",
-        "      ....      ",
-        "     ......     ",
-        "    ...  ...    ",
-        "   ...    ...   ",
-        "   ..      ..   ",
-        "                ",
-        "                ",
-        "                "
-};
-
-static char *pin_xpm[] = {
-	"16 16 33 1",
-	" 	c None",
-	".	c #000000",
-	"+	c #74744D",
-	"@	c #B2B279",
-	"#	c #6C6C46",
-	"$	c #CACA9C",
-	"%	c #F4F4AD",
-	"&	c #85855A",
-	"*	c #B1B175",
-	"=	c #9A9A66",
-	"-	c #A9A98A",
-	";	c #B0B07B",
-	">	c #535353",
-	",	c #818181",
-	"'	c #B7B7B7",
-	")	c #D8D8D8",
-	"!	c #FFFFFF",
-	"~	c #EBEBA1",
-	"{	c #8A8A75",
-	"]	c #9F9F76",
-	"^	c #9E9E75",
-	"/	c #8A8A66",
-	"(	c #979770",
-	"_	c #6B6B46",
-	":	c #28281A",
-	"<	c #505034",
-	"[	c #666645",
-	"}	c #61614D",
-	"|	c #818155",
-	"1	c #4A4A31",
-	"2	c #4D4D34",
-	"3	c #6C6C48",
-	"4	c #5D5D3E",
-	"                ",
-	"                ",
-	"                ",
-	"      .     .   ",
-	"      ..   .+.  ",
-	"           #$   ",
-	" ......%&*=-;.  ",
-	".>,')!.~{]^/(.  ",
-	" ......_:<[}|.  ",
-	"      .1...23.  ",
-	"      ..   .4.  ",
-	"      .     .   ",
-	"                ",
-	"                ",
-	"                ",
-	"                "
-};
-	
-
 #define PARENT_TYPE GTK_TYPE_FRAME
 static GtkFrameClass *parent_class = NULL;
 
@@ -131,32 +54,32 @@
 	ETitleBarButtonMode button_mode;
 	GtkWidget *label;
 	GtkWidget *button;
-	GtkWidget *close_gtk_pixmap;
-	GtkWidget *pin_gtk_pixmap;
+	GtkWidget *close_gtk_image;
+	GtkWidget *pin_gtk_image;
 };
 
 
-/* Mode handling.  We put both the close and pin GtkPixmaps into an hbox in the
+/* Mode handling.  We put both the close and pin GtkImages into an hbox in the
    button, and hide one of them according to the mode.  */
 
 static void
-show_and_hide_pixmaps_according_to_mode (ETitleBar *title_bar)
+show_and_hide_images_according_to_mode (ETitleBar *title_bar)
 {
 	ETitleBarPrivate *priv;
 
 	priv = title_bar->priv;
 
-	if (priv->close_gtk_pixmap == NULL || priv->pin_gtk_pixmap == NULL)
+	if (priv->close_gtk_image == NULL || priv->pin_gtk_image == NULL)
 		return;
 
 	switch (priv->button_mode) {
 	case E_TITLE_BAR_BUTTON_MODE_PIN:
-		gtk_widget_hide (priv->close_gtk_pixmap);
-		gtk_widget_show (priv->pin_gtk_pixmap);
+		gtk_widget_hide (priv->close_gtk_image);
+		gtk_widget_show (priv->pin_gtk_image);
 		break;
 	case E_TITLE_BAR_BUTTON_MODE_CLOSE:
-		gtk_widget_hide (priv->pin_gtk_pixmap);
-		gtk_widget_show (priv->close_gtk_pixmap);
+		gtk_widget_hide (priv->pin_gtk_image);
+		gtk_widget_show (priv->close_gtk_image);
 		break;
 	default:
 		g_assert_not_reached ();
@@ -170,10 +93,8 @@
 button_realize_cb (GtkWidget *widget,
 		   gpointer data)
 {
-	GdkPixmap *close_pixmap;
-	GdkBitmap *close_mask;
-	GdkPixmap *pin_pixmap;
-	GdkBitmap *pin_mask;
+	GdkPixbuf *close_pixbuf;
+	GdkPixbuf *pin_pixbuf;
 	GtkWidget *hbox;
 	ETitleBar *title_bar;
 	ETitleBarPrivate *priv;
@@ -181,30 +102,26 @@
 	title_bar = E_TITLE_BAR (data);
 	priv = title_bar->priv;
 
-	if (priv->close_gtk_pixmap != NULL)
+	if (priv->close_gtk_image != NULL)
 		return;
 
-	close_pixmap = gdk_pixmap_create_from_xpm_d (GTK_WIDGET (priv->button)->window,
-						     &close_mask, NULL, close_xpm);
-	priv->close_gtk_pixmap = gtk_pixmap_new (close_pixmap, close_mask);
-
-	pin_pixmap = gdk_pixmap_create_from_xpm_d (GTK_WIDGET (priv->button)->window,
-						   &pin_mask, NULL, pin_xpm);
-	priv->pin_gtk_pixmap = gtk_pixmap_new (pin_pixmap, pin_mask);
+	close_pixbuf = e_icon_factory_get_icon ("stock_close", 16);
+	priv->close_gtk_image = gtk_image_new_from_pixbuf (close_pixbuf);
+
+	pin_pixbuf = e_icon_factory_get_icon ("stock_pin", 16);
+	priv->pin_gtk_image = gtk_image_new_from_pixbuf (pin_pixbuf);
 
 	hbox = gtk_hbox_new (TRUE, 0);
 	gtk_widget_show (hbox);
-	gtk_box_pack_start (GTK_BOX (hbox), priv->pin_gtk_pixmap, TRUE, TRUE, 0);
-	gtk_box_pack_start (GTK_BOX (hbox), priv->close_gtk_pixmap, TRUE, TRUE, 0);
+	gtk_box_pack_start (GTK_BOX (hbox), priv->pin_gtk_image, TRUE, TRUE, 0);
+	gtk_box_pack_start (GTK_BOX (hbox), priv->close_gtk_image, TRUE, TRUE, 0);
 
 	gtk_container_add (GTK_CONTAINER (priv->button), hbox);
 
-	gdk_pixmap_unref (close_pixmap);
-	g_object_unref (close_mask);
-	gdk_pixmap_unref (pin_pixmap);
-	g_object_unref (pin_mask);
+	g_object_unref (close_pixbuf);
+	g_object_unref (pin_pixbuf);
 
-	show_and_hide_pixmaps_according_to_mode (title_bar);
+	show_and_hide_images_according_to_mode (title_bar);
 }
 
 static void
@@ -286,8 +203,8 @@
 	priv->button_mode      = E_TITLE_BAR_BUTTON_MODE_CLOSE;
 	priv->label            = NULL;
 	priv->button           = NULL;
-	priv->close_gtk_pixmap = NULL;
-	priv->pin_gtk_pixmap   = NULL;
+	priv->close_gtk_image  = NULL;
+	priv->pin_gtk_image    = NULL;
 
 	title_bar->priv = priv;
 }
@@ -388,7 +305,7 @@
 		return;
 
 	priv->button_mode = button_mode;
-	show_and_hide_pixmaps_according_to_mode (title_bar);
+	show_and_hide_images_according_to_mode (title_bar);
 }
 
 ETitleBarButtonMode
Index: widgets/misc/e-url-entry.c
===================================================================
RCS file: /cvs/gnome/evolution/widgets/misc/e-url-entry.c,v
retrieving revision 1.8
diff -u -r1.8 e-url-entry.c
--- widgets/misc/e-url-entry.c	13 Jul 2003 19:29:03 -0000	1.8
+++ widgets/misc/e-url-entry.c	25 Dec 2003 00:08:27 -0000
@@ -28,6 +28,7 @@
 #include <gtk/gtk.h>
 #include <libgnome/gnome-url.h>
 #include "e-url-entry.h"
+#include "e-icon-factory.h"
 
 struct _EUrlEntryPrivate {
 	GtkWidget *entry;
@@ -92,6 +93,7 @@
 {
 	EUrlEntryPrivate *priv;
 	GtkWidget *pixmap;
+	GdkPixbuf *pixbuf;
 
 	priv = g_new0 (EUrlEntryPrivate, 1);
 	url_entry->priv = priv;
@@ -100,7 +102,9 @@
 	gtk_box_pack_start (GTK_BOX (url_entry), priv->entry, TRUE, TRUE, 0);
 	priv->button = gtk_button_new ();
 	gtk_box_pack_start (GTK_BOX (url_entry), priv->button, FALSE, FALSE, 0);
-	pixmap = gtk_image_new_from_file (MAP_DIR "/connect_to_url-16.xpm");
+	pixbuf = e_icon_factory_get_icon ("stock_connect-to-url", 16);
+	pixmap = gtk_image_new_from_pixbuf (pixbuf);
+	g_object_unref (pixbuf);
 	gtk_container_add (GTK_CONTAINER (priv->button), pixmap);
 	gtk_widget_show (pixmap);
 
/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
/* e-icon-factory.c - Icon factory for the Evolution components.
 *
 * Copyright (C) 2002 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>, Michael Terry <mterry fastmail fm>
 */

#ifdef HAVE_CONFIG_H
#include <config.h>
#endif

#include <string.h>
#include <libgnomeui/gnome-icon-theme.h>
#include "e-icon-factory.h"
#include "art/empty.xpm"


/* One icon.  Keep both a small (16x16) and a large (48x48) version around.  */
struct _Icon {
	char *name;
	GdkPixbuf *pixbuf_16;
	GdkPixbuf *pixbuf_24;
	GdkPixbuf *pixbuf_48;
};
typedef struct _Icon Icon;

/* Hash of all the icons.  */
static GHashTable     *name_to_icon = NULL;
static GnomeIconTheme *icon_theme   = NULL;
static GdkPixbuf      *empty_pixbuf = NULL;


/* Creating and destroying icons.  */

static Icon *
icon_new (const char *name,
	  GdkPixbuf *pixbuf_16,
	  GdkPixbuf *pixbuf_24,
	  GdkPixbuf *pixbuf_48)
{
	Icon *icon;

	icon = g_new (Icon, 1);
	icon->name      = g_strdup (name);
	icon->pixbuf_16 = pixbuf_16;
	icon->pixbuf_24 = pixbuf_24;
	icon->pixbuf_48 = pixbuf_48;

	if (pixbuf_16 != NULL)
		g_object_ref (pixbuf_16);
	if (pixbuf_24 != NULL)
		g_object_ref (pixbuf_24);
	if (pixbuf_48 != NULL)
		g_object_ref (pixbuf_48);

	return icon;
}

#if 0

/* (This is not currently used since we never prune icons out of the
   cache.)  */
static void
icon_free (Icon *icon)
{
	g_free (icon->name);

	if (icon->pixbuf_16 != NULL)
		g_object_unref (icon->pixbuf_16);
	if (icon->pixbuf_24 != NULL)
		g_object_unref (icon->pixbuf_24);
	if (icon->pixbuf_48 != NULL)
		g_object_unref (icon->pixbuf_48);

	g_free (icon);
}

#endif


/* Loading icons.  */

static Icon *
load_icon (const char *icon_name)
{
	GdkPixbuf *unscaled;
	GdkPixbuf *pixbuf_16;
	GdkPixbuf *pixbuf_24;
	GdkPixbuf *pixbuf_48;
	gchar *filename;
	Icon *icon;

	filename = gnome_icon_theme_lookup_icon (icon_theme, icon_name, 16, 
	                                         NULL, NULL);
	if (filename == NULL)
		return NULL;
	unscaled = gdk_pixbuf_new_from_file (filename, NULL);
	pixbuf_16 = gdk_pixbuf_scale_simple (unscaled, 16, 16, GDK_INTERP_BILINEAR);
	g_object_unref (unscaled);
	g_free (filename);
	
	filename = gnome_icon_theme_lookup_icon (icon_theme, icon_name, 24, 
	                                         NULL, NULL);
	if (filename == NULL)
		return NULL;
	unscaled = gdk_pixbuf_new_from_file (filename, NULL);
	pixbuf_24 = gdk_pixbuf_scale_simple (unscaled, 24, 24, GDK_INTERP_BILINEAR);
	g_object_unref (unscaled);
	g_free (filename);
	
	filename = gnome_icon_theme_lookup_icon (icon_theme, icon_name, 48, 
	                                         NULL, NULL);
	if (filename == NULL)
		return NULL;
	unscaled = gdk_pixbuf_new_from_file (filename, NULL);
	pixbuf_48 = gdk_pixbuf_scale_simple (unscaled, 48, 48, GDK_INTERP_BILINEAR);
	g_object_unref (unscaled);
	g_free (filename);

	icon = icon_new (icon_name, pixbuf_16, pixbuf_24, pixbuf_48);

	g_object_unref (pixbuf_16);
	g_object_unref (pixbuf_24);
	g_object_unref (pixbuf_48);

	return icon;
}


/* Public API.  */

void
e_icon_factory_init (void)
{
	if (name_to_icon != NULL) {
		/* Already initialized.  */
		return;
	}

	name_to_icon = g_hash_table_new (g_str_hash, g_str_equal);
	icon_theme   = gnome_icon_theme_new ();
	empty_pixbuf = gdk_pixbuf_new_from_xpm_data ((const char **) empty_xpm);
}

gchar *
e_icon_factory_get_icon_filename (const char *icon_name,
			          gint        icon_size)
{
	gchar *filename;
	
	g_return_val_if_fail (icon_name != NULL, NULL);
	g_return_val_if_fail (strcmp (icon_name, ""), NULL);
	
	filename = gnome_icon_theme_lookup_icon (icon_theme,
	                                         icon_name,
	                                         icon_size,
	                                         NULL,
	                                         NULL);
	
	return filename;
}

/* Loads the themed version of the icon name at the appropriate size.
   The returned icon is guaranteed to be the requested size and exist.  If
   the themed icon cannot be found, an empty icon is returned. */
GdkPixbuf *
e_icon_factory_get_icon (const char *icon_name,
			 gint        icon_size)
{
	if (icon_name != NULL && strcmp (icon_name, "")) {
		Icon *icon;

		icon = g_hash_table_lookup (name_to_icon, icon_name);
		if (icon == NULL) {
			icon = load_icon (icon_name);
			if (icon == NULL) {
				g_warning ("Icon not found -- %s", icon_name);

				/* Create an empty icon so that we don't keep spitting
				   out the same warning over and over, every time this
				   icon is requested.  */

				icon = icon_new (icon_name, NULL, NULL, NULL);
				g_hash_table_insert (name_to_icon, icon->name, icon);
			}
			else {
				g_hash_table_insert (name_to_icon, icon->name, icon);
			}
		}

		if (icon->pixbuf_16) {
			gchar *filename;
			GdkPixbuf *pixbuf, *scaled;
			
			switch (icon_size) {
			case 16:
				return g_object_ref (icon->pixbuf_16);
			
			case 24:
				return g_object_ref (icon->pixbuf_24);
			
			case 48:
				return g_object_ref (icon->pixbuf_48);
			
			default:
				/* Non-standard size.  Do a non-cached load. */
				
				filename = gnome_icon_theme_lookup_icon (icon_theme,
				                                         icon_name,
				                                         icon_size,
				                                         NULL,
				                                         NULL);
				if (filename == NULL)
					break;
				
				pixbuf = gdk_pixbuf_new_from_file (filename, NULL);
				g_free (filename);
				if (pixbuf == NULL)
					break;
				
				scaled = gdk_pixbuf_scale_simple (pixbuf, icon_size, icon_size, GDK_INTERP_BILINEAR);
				g_object_unref (pixbuf);
				
				return scaled;
			}
		}
	}
	
	/* icon not found -- create an empty icon */
	return gdk_pixbuf_scale_simple (empty_pixbuf, icon_size, icon_size, GDK_INTERP_NEAREST);
}

GList *
e_icon_factory_get_icon_list (const char *icon_name)
{
	if (icon_name != NULL && strcmp (icon_name, "")) {
		Icon *icon;

		icon = g_hash_table_lookup (name_to_icon, icon_name);
		if (icon == NULL) {
			icon = load_icon (icon_name);
			if (icon == NULL) {
				g_warning ("Icon not found -- %s", icon_name);

				/* Create an empty icon so that we don't keep spitting
				   out the same warning over and over, every time this
				   icon is requested.  */

				icon = icon_new (icon_name, NULL, NULL, NULL);
				g_hash_table_insert (name_to_icon, icon->name, icon);
			}
			else {
				g_hash_table_insert (name_to_icon, icon->name, icon);
			}
		}
		
		if (icon->pixbuf_16) {
			GList *list = NULL;
			
			list = g_list_append (list, g_object_ref (icon->pixbuf_16));
			list = g_list_append (list, g_object_ref (icon->pixbuf_24));
			list = g_list_append (list, g_object_ref (icon->pixbuf_48));
			
			return list;
		}
	}
	
	/* icons not found */
	return NULL;
}
/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
/* e-icon-factory.h - Icon factory for the Evolution shell.
 *
 * Copyright (C) 2002 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_ICON_FACTORY_H_
#define _E_ICON_FACTORY_H_

#include <gdk-pixbuf/gdk-pixbuf.h>

void       e_icon_factory_init              (void);

gchar     *e_icon_factory_get_icon_filename (const char *icon_name,
				             gint        icon_size);

GdkPixbuf *e_icon_factory_get_icon          (const char *icon_name,
				             gint        icon_size);

GList     *e_icon_factory_get_icon_list     (const char *icon_name);

#endif /* _E_ICON_FACTORY_H_ */

Attachment: signature.asc
Description: This is a digitally signed message part



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]