diff -urN storm_0.3/CONTROL/conffiles storm_0.5.2/CONTROL/conffiles
--- storm_0.3/CONTROL/conffiles	Wed Jan  2 19:29:46 2002
+++ storm_0.5.2/CONTROL/conffiles	Mon Feb 25 18:01:50 2002
@@ -1,9 +0,0 @@
-/usr/local/share/storm/config/sync
-/usr/local/share/storm/config/pop3
-/usr/local/share/storm/config/smtp
-/usr/local/share/storm/config/sig
-/usr/local/share/storm/mail/Inbox
-/usr/local/share/storm/mail/Outbox
-/usr/local/share/storm/data/notes.xml
-/usr/local/share/storm/data/contacts.xml
-/usr/local/share/storm/data/appointments.xml
diff -urN storm_0.3/CONTROL/control storm_0.5.2/CONTROL/control
--- storm_0.3/CONTROL/control	Wed Jan  2 19:08:18 2002
+++ storm_0.5.2/CONTROL/control	Wed Feb 27 10:01:34 2002
@@ -1,8 +1,15 @@
-Package: storm 
-Section: comm 
+Package: storm
+Provides: storm
+Section: comm
 Priority: optional
-Version: 0.3
+Version: 0.5.2
 Architecture: arm
-Maintainer: DamienTanner (dctanner@xoasis.com)
-Depends: python
-Description: Storm is the all-in-one PIM. Its current features are Today, Inbox, Calendar, Contacts and Notes. The Inbox module can either sync with your hosts mbox or collect mail via POP3. Other data like contacts is stored as in the xml format.
+Maintainer: Damien Tanner (dctanner@xoasis.com)
+Depends: python, rsync, libgtk1.2, ipaqalarm, dtmfdial, mixmodule, madplay, h3600-utils
+Suggests: ipaq-sleep
+Description: Storm is the all-in-one PIM. 
+ Its current features are Today, Inbox, Calendar, Contacts and Notes.
+ .
+ The Inbox module can either sync with your hosts mbox or collect mail 
+ via POP3.  Other data like contacts is stored as in the xml format. 
+ Version 0.5.x now includes a reworked Calendar and new Tasks module.
diff -urN storm_0.3/CONTROL/postinst storm_0.5.2/CONTROL/postinst
--- storm_0.3/CONTROL/postinst	Wed Dec 31 19:00:00 1969
+++ storm_0.5.2/CONTROL/postinst	Mon Feb 25 18:01:50 2002
@@ -0,0 +1,120 @@
+#! /bin/sh
+
+# migrate away from /usr/local/share/storm/ and /usr/share/storm/:
+if [ -d /usr/local/share/storm/data ]; then
+  cp -f /usr/local/share/storm/data/* /usr/share/storm/data/ 2> /dev/null
+  rm -rf /usr/local/share/storm/data/
+fi
+
+if [ -d /usr/local/share/storm/config ]; then
+  cp -f /usr/local/share/storm/config/* /usr/share/storm/config/ 2> /dev/null
+  rm -rf /usr/local/share/storm/config/
+fi
+
+if [ -d /usr/local/share/storm/maildir ]; then
+  cp -f /usr/local/share/storm/maildir/* /usr/share/storm/maildir/ 2> /dev/null
+  rm -rf /usr/local/share/storm/maildir/
+fi
+
+# safety net:
+if [ ! -d /usr/share/storm.backup         ]; then mkdir /usr/share/storm.backup/         ; fi
+if [ ! -d /usr/share/storm.backup/data    ]; then mkdir /usr/share/storm.backup/data/    ; fi
+if [ ! -d /usr/share/storm.backup/config  ]; then mkdir /usr/share/storm.backup/config/  ; fi
+if [ ! -d /usr/share/storm.backup/maildir ]; then mkdir /usr/share/storm.backup/maildir/ ; fi
+
+if [ -d /usr/share/storm/data ]; then
+  cp -r /usr/share/storm/data/* /usr/share/storm.backup/data/ 2> /dev/null
+fi
+
+if [ -d /usr/share/storm/config ]; then
+  cp -r /usr/share/storm/config/* /usr/share/storm.backup/config/ 2> /dev/null
+fi
+
+if [ -d /usr/share/storm/config ]; then
+  cp -r /usr/share/storm/maildir/* /usr/share/storm.backup/maildir/ 2> /dev/null
+fi
+
+# move old config to new location and change /usr/local/share to
+# /usr/share if needed in that file:
+if [ ! -d /root/.storm ]; then
+    if [ -e /root/.storm ]; then
+	sed -e 's/\/usr\/local\/share/\/usr\/share/' /root/.storm > /root/.stormrc
+	rm -f /root/.storm
+    fi
+fi
+# (if the file /root/.storm doesn't exist, then let it create by storm.py)
+
+    
+# create dirs in root's home if needed:
+if [ ! -d /root/.storm             ]; then mkdir /root/.storm/             ; fi
+if [ ! -d /root/.storm/data        ]; then mkdir /root/.storm/data/        ; fi
+if [ ! -d /root/.storm/config      ]; then mkdir /root/.storm/config/      ; fi
+if [ ! -d /root/Maildir            ]; then mkdir /root/Maildir/            ; fi
+if [ ! -d /root/Maildir/Inbox      ]; then mkdir /root/Maildir/Inbox/      ; fi
+if [ ! -d /root/Maildir/Inbox/new  ]; then mkdir /root/Maildir/Inbox/new/  ; fi
+if [ ! -d /root/Maildir/Inbox/cur  ]; then mkdir /root/Maildir/Inbox/cur/  ; fi
+if [ ! -d /root/Maildir/Inbox/tmp  ]; then mkdir /root/Maildir/Inbox/tmp/  ; fi
+if [ ! -d /root/Maildir/Outbox     ]; then mkdir /root/Maildir/Outbox/     ; fi
+if [ ! -d /root/Maildir/Outbox/new ]; then mkdir /root/Maildir/Outbox/new/ ; fi
+if [ ! -d /root/Maildir/Outbox/cur ]; then mkdir /root/Maildir/Outbox/cur/ ; fi
+if [ ! -d /root/Maildir/Outbox/tmp ]; then mkdir /root/Maildir/Outbox/tmp/ ; fi
+
+# move to root's home dir (since only root was able to write to
+# /usr/share/storm/* anyway)...
+
+# !!! [ -d /usr/share/storm/data ] will always be true !!!
+if [ -d /usr/share/storm/data ]; then
+  cp -f /usr/share/storm/data/* /root/.storm/data/ 2> /dev/null
+  rm -f /usr/share/storm/data/*                    2> /dev/null
+  # copy back the alarm again... *sigh*:
+  cp -f /usr/share/storm/data/templates/alarm.mp3 /usr/share/storm/data/alarm.mp3
+  # ...and remove it in the user's home:
+  rm -f /root/.storm/data/alarm.mp3
+fi
+
+# !!! same here
+if [ -d /usr/share/storm/config ]; then
+  cp -f /usr/share/storm/config/* /root/.storm/config/ 2> /dev/null
+  rm -f /usr/share/storm/config/*                      2> /dev/null
+fi
+
+# !!! same here
+if [ -d /usr/share/storm/maildir ]; then
+  cp -f /usr/share/storm/maildir/templates/testmessage /root/Maildir/Inbox/new/
+  cp -f /usr/share/storm/maildir/Inbox/new/*  /root/Maildir/Inbox/new/  2> /dev/null
+  cp -f /usr/share/storm/maildir/Inbox/cur/*  /root/Maildir/Inbox/cur/  2> /dev/null
+  cp -f /usr/share/storm/maildir/Outbox/new/* /root/Maildir/Outbox/new/ 2> /dev/null
+  cp -f /usr/share/storm/maildir/Outbox/cur/* /root/Maildir/Outbox/cur/ 2> /dev/null
+  rm -f /usr/share/storm/maildir/* 2> /dev/null
+fi
+
+
+# Don't delete the whole /usr/local/share/storm, the user might
+# have own stuff there...
+rm -rf /usr/local/share/storm/modules/
+
+# just remove it, be it a symlink or a regular file
+# (test is just too clumsy)...
+rm -f /usr/bin/storm
+ln -s /usr/share/storm/storm.py /usr/bin/storm
+
+rm -f /usr/bin/storm-alarm
+ln -s /usr/share/storm/storm-alarm.py /usr/bin/storm-alarm
+
+# create the menu item:
+echo "?package(storm):needs=\"x11\" section=\"PIM\" title=\"Storm\" command=\"/usr/bin/storm\"" > /usr/lib/menu/storm
+
+if [ -x /usr/bin/update-menus ]; then
+  update-menus
+fi
+
+echo ""
+echo "Thanks for installing Storm!"
+echo ""
+echo "# Note: Your data and config now reside in ~/.storm/"
+echo "# while your mails are in ~/Maildir/ (they have been migrated for you)."
+echo "# User config is in ~/.stormrc."
+echo "# Backups can be found in /usr/share/storm.backup/ in case you need them."
+echo "# *If* you need them (or if they are not there),"
+echo "# be sure to file a bug on"
+echo "# http://sourceforge.net/tracker/?group_id=44543&atid=440083"
diff -urN storm_0.3/root/.storm storm_0.5.2/root/.storm
--- storm_0.3/root/.storm	Wed Jan  2 19:09:17 2002
+++ storm_0.5.2/root/.storm	Wed Dec 31 19:00:00 1969
@@ -1,3 +0,0 @@
-Your Name
-youemail@mydomain.com
-/usr/local/share/storm
diff -urN storm_0.3/root/.storm~ storm_0.5.2/root/.storm~
--- storm_0.3/root/.storm~	Mon Dec 31 22:11:54 2001
+++ storm_0.5.2/root/.storm~	Wed Dec 31 19:00:00 1969
@@ -1,3 +0,0 @@
-Your Name
-youemail@mydomain.com
-/root/Storm
diff -urN storm_0.3/usr/bin/storm storm_0.5.2/usr/bin/storm
--- storm_0.3/usr/bin/storm	Wed Jan  2 19:14:12 2002
+++ storm_0.5.2/usr/bin/storm	Wed Dec 31 19:00:00 1969
@@ -1,2361 +0,0 @@
-#!/usr/bin/env python
-# Storm mini Evolution clone by Damien Tanner (dctanner@xoasis.com)
-
-from gtk import *
-import string, rfc822, re, os, time, poplib, smtplib
-
-# main class for the gui, other classes handle diffrent sub functions such as Mail and Contacts
-class Storm:
-	def __init__(self):
-		# our main gtk window
-		self.window = GtkWindow(WINDOW_TOPLEVEL)
-		self.window.connect("delete_event", self.quit)
-		self.window.set_title("Storm v0.3")
-		self.window.set_usize(240, 280)
-
-		# read storm config file
-		self.get_config()
-		# start by importing the other classes
-		self.contacts = Contacts(self)
-		self.mail = Mail(self)
-		self.calendar = Calendar(self)
-		self.notes = Notes(self)
-		self.sync = Sync(self)
-		self.prefs = Prefs(self)
-		self.today = Today(self)
-		
-		# Main vBox
-		self.vbox = GtkVBox()
-		self.window.add(self.vbox)
-		self.vbox.show()
-
-		# Menus
-
-		self.menubar = GtkMenuBar()		# Main menu bar
-		self.vbox.pack_start(self.menubar, expand=FALSE)
-		self.menubar.show()
-
-		# File menu
-
-		file_menuitem = GtkMenuItem("File")
-		self.menubar.append(file_menuitem)
-		file_menuitem.show()
-		
-		file_menu = GtkMenu()
-		# add some sub menus
-		new_menuitem = GtkMenuItem("New")
-		file_menu.append(new_menuitem)
-		new_menuitem.show()
-
-		prefs_menuitem = GtkMenuItem("Prefs")
-		prefs_menuitem.connect("activate", self.prefs.show_config)
-		file_menu.append(prefs_menuitem)
-		prefs_menuitem.show()
-
-		exit_menuitem = GtkMenuItem("Exit")
-		exit_menuitem.connect("activate", self.quit)
-		file_menu.append(exit_menuitem)
-		exit_menuitem.show()
-
-		new_menu = GtkMenu()
-		# add some sub menus
-		new_message_menuitem = GtkMenuItem("Message")
-		new_message_menuitem.connect("activate", self.mail.new_message)
-		new_menu.append(new_message_menuitem)
-		new_message_menuitem.show()
-
-		# Sync menu
-
-		sync_menuitem = GtkMenuItem("Sync")
-		self.menubar.append(sync_menuitem)
-		sync_menuitem.show()
-
-		sync_menu = GtkMenu()
-		# add some sub menus
-		sync_mail_menuitem = GtkMenuItem("Mail")
-		sync_menu.append(sync_mail_menuitem)
-		sync_mail_menuitem.show()
-
-		mail_menu = GtkMenu()
-		# add some sub menus
-		mail_host_menuitem = GtkMenuItem("Host")
-		mail_host_menuitem.connect("activate", self.sync.host)
-		mail_menu.append(mail_host_menuitem)
-		mail_host_menuitem.show()
-		mail_pop_menuitem = GtkMenuItem("POP3")
-		mail_pop_menuitem.connect("activate", self.sync.pop3)
-		mail_menu.append(mail_pop_menuitem)
-		mail_pop_menuitem.show()
-		mail_smtp_menuitem = GtkMenuItem("SMTP")
-		mail_smtp_menuitem.connect("activate", self.sync.smtp)
-		mail_menu.append(mail_smtp_menuitem)
-		mail_smtp_menuitem.show()
-
-		# arrange menus
-		file_menu.show()
-		new_menu.show()
-		sync_menu.show()
-		file_menuitem.set_submenu(file_menu)
-		new_menuitem.set_submenu(new_menu)
-		sync_mail_menuitem.set_submenu(mail_menu)
-		sync_menuitem.set_submenu(sync_menu)
-
-		# make the toobar
-		self.toolbar = GtkToolbar(ORIENTATION_HORIZONTAL, TOOLBAR_ICONS)
-		self.toolbar.set_button_relief(RELIEF_NONE)
-		self.toolbar.set_space_size(10)
-		self.vbox.pack_start(self.toolbar, expand=FALSE)
-		self.toolbar.show()
-
-		# make our notbook
-		self.notebook = GtkNotebook()
-		self.notebook.show()
-		self.notebook.set_show_tabs(FALSE)
-		self.notebook.set_show_border(FALSE)
-		# add it to the vbox
-		self.vbox.pack_start(self.notebook)
-		# add a load of pages to it
-		self.notebook.add(self.today.frame)
-		self.notebook.add(self.mail.frame)
-		self.notebook.add(self.calendar.frame)
-		self.notebook.add(self.contacts.frame)
-		self.notebook.add(self.notes.frame)
-
-		# add the evolution pixmaps to the toolbar
-		pix, mask = create_pixmap_from_xpm(self.window, None, self.config[2] + "/pixmaps/evolution-today.xpm")
-		self.toolbar.append_item(None, 'Today', None, GtkPixmap(pix, mask), self.show_today)
-
-		pix, mask = create_pixmap_from_xpm(self.window, None, self.config[2] + "/pixmaps/evolution-inbox.xpm")
-		self.toolbar.append_item(None, 'Inbox', None, GtkPixmap(pix, mask), self.show_mail)
-
-		pix, mask = create_pixmap_from_xpm(self.window, None, self.config[2] + "/pixmaps/evolution-calender.xpm")
-		self.toolbar.append_item(None, 'Calendar', None, GtkPixmap(pix, mask), self.show_calendar)
-
-		pix, mask = create_pixmap_from_xpm(self.window, None, self.config[2] + "/pixmaps/evolution-contacts.xpm")
-		self.toolbar.append_item(None, 'Contacts', None, GtkPixmap(pix, mask), self.show_contacts)
-
-		pix, mask = create_pixmap_from_xpm(self.window, None, self.config[2] + "/pixmaps/evolution-notes.xpm")
-		self.toolbar.append_item(None, 'Notes', None, GtkPixmap(pix, mask), self.show_notes)
-
-	def show_today(self, *args):
-		self.notebook.set_page(0)
-
-	def show_mail(self, *args):
-		self.notebook.set_page(1)
-
-	def show_calendar(self, *args):
-		self.notebook.set_page(2)
-
-	def show_contacts(self, *args):
-		self.notebook.set_page(3)
-
-	def show_notes(self, *args):
-		self.notebook.set_page(4)
-
-	def get_config(self):
-		# open up the storm config file
-		file = open(os.environ['HOME'] + '/.storm', 'r')
-		# read it
-		lines = file.readlines()
-		# assign varivles to the different lines
-		self.config = []
-		for line in lines:
-			line = string.strip(line)
-			self.config.append(line)
-
-	def mainloop(self):
-		# start up storm
-		self.window.show()
-		mainloop()
-
-	def quit(self, *args):
-		self.calendar.exit()
-		self.notes.exit()
-		# quit storm
-		mainquit()
-
-class Mail:
-	def __init__(self, parent):
-		self.parent = parent
-		self.config = self.parent.config
-		self.window = self.parent.window
-		self.cmap = self.window.get_colormap()
-		self.parent = parent
-
-		# start the gui
-
-		frame = GtkVBox()
-		frame.show()
-
-		hbox1 = GtkHBox()
-		frame.pack_start(hbox1, expand=FALSE)
-		hbox1.show()
-
-		self.menubar = GtkMenuBar()
-		self.menubar.set_shadow_type(SHADOW_NONE)
-		hbox1.pack_start(self.menubar, FALSE, FALSE, 2)
-		self.menubar.show()
-
-		self.current_folder_menuitem = GtkMenuItem("Inbox")
-		self.menubar.append(self.current_folder_menuitem)
-		self.current_folder_menuitem.show()
-
-		self.current_folder = "Inbox"
-
-		self.folders_menu = GtkMenu()
-		self.current_folder_menuitem.set_submenu(self.folders_menu)
-		self.folders_menu.show()
-		for self.folder in os.listdir(self.config[2] + '/mail'):
-			folder_menuitem = GtkMenuItem(self.folder)
-			folder_menuitem.connect("activate", self.select_folder, self.folder)
-			self.folders_menu.append(folder_menuitem)
-			folder_menuitem.show()
-
-		hsep = GtkHSeparator()
-		hbox1.pack_start(hsep)
-		hsep.show()
-
-		headers = []
-		vbox = GtkVBox()
-		frame.pack_start(vbox)
-		vbox.show()
-		# make the toobar
-		toolbar = GtkToolbar(ORIENTATION_HORIZONTAL, TOOLBAR_ICONS)
-		toolbar.set_button_relief(RELIEF_NONE)
-		toolbar.set_space_size(10)
-		vbox.pack_start(toolbar, expand=FALSE)
-		toolbar.show()
-		# add the evolution pixmaps to the toolbar
-		pix, mask = create_pixmap_from_xpm(self.window, None, self.config[2] + "/pixmaps/read.xpm")
-		toolbar.append_item(None, 'Read selected message', None, GtkPixmap(pix, mask), self.read_message)
-
-		pix, mask = create_pixmap_from_xpm(self.window, None, self.config[2] + "/pixmaps/new.xpm")
-		toolbar.append_item(None, 'Compose a new message', None, GtkPixmap(pix, mask), self.new_message)
-
-		pix, mask = create_pixmap_from_xpm(self.window, None, self.config[2] + "/pixmaps/edit.xpm")
-		toolbar.append_item(None, 'Edit the selected message', None, GtkPixmap(pix, mask), self.edit_message)
-
-		pix, mask = create_pixmap_from_xpm(self.window, None, self.config[2] + "/pixmaps/reply.xpm")
-		toolbar.append_item(None, 'Reply to the select message', None, GtkPixmap(pix, mask), self.reply_message)
-
-		pix, mask = create_pixmap_from_xpm(self.window, None, self.config[2] + "/pixmaps/trash.xpm")
-		toolbar.append_item(None, 'Delete the selected message', None, GtkPixmap(pix, mask), self.delete_message)
-
-		cscroll = GtkScrolledWindow()
-		cscroll.set_policy(POLICY_AUTOMATIC, POLICY_AUTOMATIC)
-		vbox.pack_start(cscroll)
-		cscroll.show()
-
-		clist=GtkCList(3)
-		cscroll.add(clist)
-		clist.connect("select_row" , self.select_message)
-		clist.set_flags(CAN_FOCUS)
-		clist.set_usize(-1, -1)
-		clist.set_column_title(0, "From")
-		clist.set_column_title(1, "Subject")
-		clist.set_column_title(2, "Date")
-		clist.set_column_width(0, 80)
-		clist.set_column_width(1, 80)
-		clist.set_column_width(2, 35)
-		clist.set_selection_mode(SELECTION_SINGLE)
-		clist.column_titles_hide()
-		clist.show()
-		self.clist=clist
-		frame.show()
-		self.frame=frame
-
-		self.read_mbox()
-		self.selected_message = ''
-
-	def select_folder(self, *args):
-		self.current_folder = args[1]
-		self.current_folder_menuitem.remove_submenu()
-		self.current_folder_menuitem.hide()
-		self.current_folder_menuitem = GtkMenuItem(self.current_folder)
-		self.menubar.append(self.current_folder_menuitem)
-		self.current_folder_menuitem.show()
-		self.current_folder_menuitem.set_submenu(self.folders_menu)
-		self.read_mbox()
-
-	def read_mbox(self):
-		# regexp for parsing mbox mail files
-		# open the mbox mail file
-		file = open(self.config[2] + '/mail/' + self.current_folder, 'r')
-		# read it
-		mbox_data = file.read()
-		# then split it up into the seperate messages
-		mbox_data = string.strip(mbox_data)
-		if mbox_data != '':
-			raw_messages = string.split(mbox_data, "\nFrom ")
-		else:
-			raw_messages = []
-
-		# then add the headers to the clist
-		self.messages = []
-		self.mbox_headers = []
-		clist_color = self.cmap.alloc("grey87");
-		x = 0
-		v = 0
-		self.clist.clear()
-		for message in raw_messages:
-			# take off the mbox header
-			mbox_header = string.split(message, "\n", 1)
-			self.mbox_headers.append(mbox_header[0])
-			# add it to the messages array
-			self.messages.append(mbox_header[1])
-			# split the header from the main message
-			message_header = string.split(mbox_header[1], "\n\n", 1)
-			# write the headers to a temp file
-			tmp_file = open("/tmp/storm.tmp", 'w')
-			tmp_file.write(message_header[0])
-			tmp_file.close()
-			tmp_file = open("/tmp/storm.tmp", 'r')
-			# then read the headers
-			header = rfc822.Message(tmp_file)
-			mfrom = header.getheader("From")
-			mdate = header.getheader("Date")
-			msubject = header.getheader("Subject")
-			tmp_file.close()
-			# and finnaly add it to the clist
-			if msubject == None:
-				theheaders = [mfrom, '', mdate]
-			else:
-				theheaders = [mfrom, msubject, mdate]
-			self.clist.append(theheaders)
-			if v == 0:
-				self.clist.set_background(x, clist_color)
-				v = 1
-			else:
-				v = 0
-			x = x + 1
-
-	def select_message(self, *args):
-		self.selected_message = args[1]
-
-	def new_message(self, *args):
-		self.do_message("new")
-
-	def reply_message(self, *args):
-		self.do_message("reply")
-
-	def edit_message(self, *args):
-		self.do_message("edit")
-
-	def read_message(self, *args):
-		if self.selected_message != '':
-			self.do_message("read")
-
-	def delete_message(self, *args):
-		self.clist.remove(self.selected_message)
-		del self.messages[self.selected_message]
-		self.update_mbox()
-		self.parent.today.update_today()
-
-	def delete_read_message(self, *args):
-		self.read_window.hide()
-		self.clist.remove(self.selected_message)
-		del self.messages[self.selected_message]
-		self.update_mbox()
-		self.parent.today.update_today()
-
-	def send_message(self, *args):
-		thedate = time.strftime("%a, %m %b %Y %X", time.gmtime(time.time()))
-		thedate = string.strip(thedate)
-		to_text = self.to_entry.get_text()
-		from_text = self.from_entry.get_text()
-		subject_text = self.subject_entry.get_text()
-		message_text = self.message_text.get_chars(0, -1)
-		file = open(self.config[2] + '/mail/Outbox', 'a')
-		file.write("\nFrom " + self.config[1] + " " + thedate + "\n" + "To: " + to_text + "\n" + "Subject: " + subject_text + "\n" + "From: " + from_text + "\n" + "Reply-To: " + self.config[1] + "\n" + "Date: " + thedate + "\n\n" + message_text + "\n")
-		self.read_window.hide()
-
-	def update_mbox(self, *args):
-		mbox_file = open(self.config[2] + '/mail/' + self.current_folder, 'w')
-		x = 0
-		while x < len(self.messages):
-			if x > 0:
-				mbox_file.write("From " + self.mbox_headers[x] + "\n" + self.messages[x] + "\n\n")
-			else:
-				mbox_file.write(self.mbox_headers[x] + "\n" + self.messages[x] + "\n\n")
-			x = x + 1
-		mbox_file.close()
-
-	def save_edited_message(self, *args):
-		thedate = self.clist.get_text(self.selected_message, 2)
-		to_text = self.to_entry.get_text()
-		from_text = self.from_entry.get_text()
-		subject_text = self.subject_entry.get_text()
-		message_text = self.message_text.get_chars(0, -1)
-		self.messages[self.selected_message] =  "To: " + to_text + "\n" + "Subject: " + subject_text + "\n" + "From: " + from_text + "\n" + "Reply-To: " + from_text + "\n" + "Date: " + thedate + "\n\n" + message_text
-		self.read_window.hide()
-		self.update_mbox()
-
-	def new_contact(self, *args):
-		to = self.to_entry.get_text()
-		to = string.strip(to)
-		to_re = re.compile('^["]?(.*)["]?[ ]?<(.*)>$')
-		data = re.findall(to_re, to)
-		self.parent.contacts.do_contact("new", data[0][0], data[0][1])
-
-	def select_to(self, *args):
-		# our main gtk window
-		window = GtkWindow(WINDOW_TOPLEVEL)
-		self.select_name_window = window
-		window.connect("delete_event", window.hide)
-		window.set_title("Storm - Contacts")
-		window.set_usize(200, 200)
-		window.show()
-
-		scroll = GtkScrolledWindow()
-		scroll.set_policy(POLICY_NEVER, POLICY_ALWAYS)
-		window.add(scroll)
-		scroll.show()
-
-		clist = GtkCList(2)
-		self.select_name_clist = clist
-		scroll.add(clist)
-		clist.connect("select_row" , self.select_name_return)
-		clist.set_flags(CAN_FOCUS)
-		clist.set_sort_column(0)
-		clist.set_usize(-1, -1)
-		clist.set_column_title(0, "Name")
-		clist.set_column_width(0, 80)
-		clist.set_column_title(1, "Email")
-		clist.set_column_width(1, 80)
-		clist.set_selection_mode(SELECTION_SINGLE)
-		clist.column_titles_show()
-		clist.show()
-		self.parent.contacts.update_list(clist)
-
-	def select_name_return(self, *args):
-		x = args[1]
-		self.to_entry.set_text('"' + self.parent.contacts.contact[x][0] + '" <' + self.parent.contacts.contact[x][1] + '>')
-		self.select_name_window.hide()
-
-	def do_message(self, mtype):
-		if mtype != "new":
-			# get the message and its headers etc.
-			message_header = string.split(self.messages[self.selected_message], "\n\n", 1)
-			# write the headers to a temp file
-			tmp_file = open("/tmp/storm.tmp", 'w')
-			tmp_file.write(message_header[0])
-			tmp_file.close()
-			tmp_file = open("/tmp/storm.tmp", 'r')
-			# then read the headers
-			header = rfc822.Message(tmp_file)
-			mfrom = header.getheader("From")
-			mto = header.getheader("To")
-			mdate = header.getheader("Date")
-			msubject = header.getheader("Subject")
-			tmp_file.close()
-
-		# our main gtk window
-		window = GtkWindow(WINDOW_TOPLEVEL)
-		self.read_window = window
-		window.connect("delete_event", window.hide)
-		if mtype != "new":
-			window.set_title("Storm - " + msubject)
-		else:
-			window.set_title("Storm - Message")
-		window.set_usize(240, 300)
-		window.show()
-
-		vbox = GtkVBox()
-		window.add(vbox)
-		vbox.show()
-
-		# make the toobar
-		toolbar = GtkToolbar(ORIENTATION_HORIZONTAL, TOOLBAR_ICONS)
-		toolbar.set_button_relief(RELIEF_NONE)
-		toolbar.set_space_size(10)
-		vbox.pack_start(toolbar, expand=FALSE)
-		toolbar.show()
-		# add the evolution pixmaps to the toolbar
-		if mtype == "read":
-			pix, mask = create_pixmap_from_xpm(window, None, self.config[2] + "/pixmaps/reply.xpm")
-			toolbar.append_item(None, 'Reply to the current message', None, GtkPixmap(pix, mask), self.reply_message)
-
-			pix, mask = create_pixmap_from_xpm(window, None, self.config[2] + "/pixmaps/trash.xpm")
-			toolbar.append_item(None, 'Delete the current message', None, GtkPixmap(pix, mask), self.delete_read_message)
-		elif mtype == "edit":
-			pix, mask = create_pixmap_from_xpm(window, None, self.config[2] + "/pixmaps/save.xpm")
-			toolbar.append_item(None, 'Delete the current message', None, GtkPixmap(pix, mask), self.save_edited_message)
-		else:
-			pix, mask = create_pixmap_from_xpm(window, None, self.config[2] + "/pixmaps/send.xpm")
-			toolbar.append_item(None, 'Send the current message', None, GtkPixmap(pix, mask), self.send_message)
-
-		pix, mask = create_pixmap_from_xpm(window, None, self.config[2] + "/pixmaps/cancel.xpm")
-		toolbar.append_item(None, 'Close this window', None, GtkPixmap(pix, mask), window.hide)
-
-		to_hbox = GtkHBox()
-		vbox.pack_start(to_hbox, expand=FALSE)
-		to_hbox.show()
-		to_button = GtkButton()
-		to_hbox.pack_start(to_button, expand=FALSE)
-		to_button.show()
-		message_tips = GtkTooltips()
-		if mtype == "read" or mtype == "edit":
-			message_tips.set_tip(to_button, 'Add contact to address book')
-			to_button.connect("clicked", self.new_contact)
-			pix, mask = create_pixmap_from_xpm(window, None, self.config[2] + "/pixmaps/contacts-add.xpm")
-			to_pixmap = GtkPixmap(pix, mask)
-		else:
-			message_tips.set_tip(to_button, 'Select a recipient from the address book')
-			to_button.connect("clicked", self.select_to)
-			pix, mask = create_pixmap_from_xpm(window, None, self.config[2] + "/pixmaps/contacts.xpm")
-			to_pixmap = GtkPixmap(pix, mask)
-		to_button.add(to_pixmap)
-		to_pixmap.show()
-		to_entry = GtkEntry()
-		if mtype == "read":
-			to_entry.set_editable(FALSE)
-			to_entry.set_text(mfrom)
-		elif mtype == "reply":
-			to_entry.set_editable(TRUE)
-			to_entry.set_text(mfrom)
-		if mtype == "edit":
-			to_entry.set_editable(TRUE)
-			to_entry.set_text(mto)
-		else:
-			to_entry.set_editable(TRUE)
-		to_hbox.pack_start(to_entry)
-		to_entry.show()
-		self.to_entry = to_entry
-		from_entry = GtkEntry()
-		if mtype == "read":
-			from_entry.set_editable(FALSE)
-			from_entry.set_text(mdate)
-		elif mtype == "reply" or mtype == "new":
-			from_entry.set_editable(TRUE)
-			from_entry.set_text('"' + self.config[0] + '" <' + self.config[1] + '>')
-		if mtype == "edit":
-			from_entry.set_editable(TRUE)
-			from_entry.set_text(mfrom)
-		else:
-			from_entry.set_editable(TRUE)
-		vbox.pack_start(from_entry, expand=FALSE)
-		from_entry.show()
-		self.from_entry = from_entry
-
-		subject_entry = GtkEntry()
-		if mtype == "read":
-			subject_entry.set_editable(FALSE)
-			subject_entry.set_text(msubject)
-		if mtype == "edit":
-			subject_entry.set_editable(TRUE)
-			subject_entry.set_text(msubject)
-		elif mtype == "reply":
-			subject_entry.set_editable(TRUE)
-			subject_entry.set_text('Re: ' + msubject)
-		else:
-			subject_entry.set_editable(TRUE)
-		vbox.pack_start(subject_entry, expand=FALSE)
-		subject_entry.show()
-		self.subject_entry = subject_entry
-		scroll = GtkScrolledWindow()
-		scroll.set_policy(POLICY_NEVER, POLICY_ALWAYS)
-		vbox.pack_start(scroll)
-		scroll.show()
-
-		text = GtkText()
-		self.message_text = text
-		if mtype == "read":
-			text.set_editable(FALSE)
-		else:
-			text.set_editable(TRUE)
-		scroll.add(text)
-		text.show()
-		text.freeze()
-		if mtype == "read" or mtype == "edit":
-			text.insert(None, None, None, message_header[1])
-		elif mtype == "reply":
-			sig_file = open(self.config[2] + '/config/sig', 'r')
-			sig = sig_file.read()
-			sig_file.close()
-
-			o_lines = string.split(message_header[1], '\n')
-			m_text = ''
-			for o_line in o_lines:
-				m_text = m_text + '> ' + o_line + '\n'
-			m_text_head = '\n> -----Original Message-----\n> From: ' + mfrom + '\n> Subject: ' + msubject + '\n> Date: ' + mdate + '\n> \n'
-			text.insert(None, None, None, '\n\n' + sig + '\n' + m_text_head + m_text)
-		elif mtype == "new":
-			sig_file = open(self.config[2] + '/config/sig', 'r')
-			sig = sig_file.read()
-			sig_file.close()
-			text.insert(None, None, None, '\n\n' + sig)
-		vadjust = scroll.get_vadjustment()
-		vadjust.set_value(0)
-		text.thaw()
-
-class Today:
-	def __init__(self, parent):
-		self.parent = parent
-		self.config = self.parent.config
-		self.window = self.parent.window
-
-		date = time.strftime("%d %m %y", time.gmtime(time.time()))
-		self.day, self.month, self.year = string.split(date)
-
-		frame = GtkFrame()
-		frame.set_usize(-1, -1)
-		frame.set_shadow_type("GTK_SHADOW_ETCHED_IN")
-		frame.set_label("Today")
-		frame.set_label_align(0, -1)
-
-		vbox1=GtkVBox()
-		frame.add(vbox1)
-		vbox1.set_usize(-1, -1)
-		vbox1.set_homogeneous(FALSE)
-		vbox1.set_spacing(0)
-		hbox1=GtkHBox()
-		vbox1.pack_start(hbox1, TRUE, TRUE, 0)
-		hbox1.set_usize(-1, -1)
-		hbox1.set_homogeneous(FALSE)
-		hbox1.set_spacing(0)
-		pix, mask = create_pixmap_from_xpm(self.window, None, self.config[2] + "/pixmaps/evolution-today.xpm")
-		today_pixmap=GtkPixmap(pix, mask)
-		hbox1.pack_start(today_pixmap, FALSE, FALSE, 0)
-		today_pixmap.set_usize(-1, -1)
-		today_pixmap.set_alignment(0.5, 0.5)
-		today_pixmap.set_padding(5, 0)
-		today_pixmap.show()
-		self.today_pixmap=today_pixmap
-		today_label=GtkLabel()
-		hbox1.pack_start(today_label, FALSE, FALSE, 0)
-		today_label.set_usize(-1, -1)
-		date_file = open(self.config[2] + "/config/lastsync", 'r')
-		thedate = date_file.read()
-		date_file.close()
-		today_label.set_text("Last syncronized:\n" + thedate)
-		today_label.set_justify(JUSTIFY_LEFT)
-		today_label.set_alignment(0.5, 0.5)
-		today_label.set_padding(0, 0)
-		today_label.show()
-		self.today_label=today_label
-		hbox1.show()
-		self.hbox1=hbox1
-		hbox2=GtkHBox()
-		vbox1.pack_start(hbox2, TRUE, TRUE, 0)
-		hbox2.set_usize(-1, -1)
-		hbox2.set_homogeneous(FALSE)
-		hbox2.set_spacing(0)
-		pix, mask = create_pixmap_from_xpm(self.window, None, self.config[2] + "/pixmaps/evolution-inbox.xpm")
-		inbox_pixmap=GtkPixmap(pix, mask)
-		hbox2.pack_start(inbox_pixmap, FALSE, FALSE, 0)
-		inbox_pixmap.set_usize(-1, -1)
-		inbox_pixmap.set_alignment(0.5, 0.5)
-		inbox_pixmap.set_padding(5, 0)
-		inbox_pixmap.show()
-		self.inbox_pixmap=inbox_pixmap
-		inbox_label=GtkLabel()
-		hbox2.pack_start(inbox_label, FALSE, FALSE, 0)
-		inbox_label.set_usize(-1, -1)
-		inbox_label.set_justify(JUSTIFY_LEFT)
-		inbox_label.set_alignment(0.5, 0.5)
-		inbox_label.set_padding(0, 0)
-		inbox_label.show()
-		self.inbox_label=inbox_label
-		hbox2.show()
-		self.hbox2=hbox2
-		hbox3=GtkHBox()
-		vbox1.pack_start(hbox3, TRUE, TRUE, 0)
-		hbox3.set_usize(-1, -1)
-		hbox3.set_homogeneous(FALSE)
-		hbox3.set_spacing(0)
-		pix, mask = create_pixmap_from_xpm(self.window, None, self.config[2] + "/pixmaps/evolution-calender.xpm")
-		calendar_pixmap=GtkPixmap(pix, mask)
-		hbox3.pack_start(calendar_pixmap, FALSE, FALSE, 0)
-		calendar_pixmap.set_usize(-1, -1)
-		calendar_pixmap.set_alignment(0.5, 0.5)
-		calendar_pixmap.set_padding(5, 0)
-		calendar_pixmap.show()
-		self.calendar_pixmap=calendar_pixmap
-
-		hbox3.show()
-		self.hbox3=hbox3
-		vbox1.show()
-		self.vbox1=vbox1
-
-		self.update_today(1)
-
-		frame.show()
-		self.frame = frame
-
-	def update_today(self, arg=0):
-		num_messages = len(self.parent.mail.messages)
-		file = open(self.config[2] + '/mail/Outbox', 'r')
-		outbox_data = file.read()
-		outbox_data = string.strip(outbox_data)
-		if outbox_data != '':
-			outbox_messages = string.split(outbox_data, "\nFrom ")
-			outbox_len = str(len(outbox_messages))
-		else:
-			outbox_len = '0'
-		self.inbox_label.set_text("Inbox: " + str(num_messages) + "\nOutbox: " + outbox_len)
-
-		if arg == 0:
-			self.calendar_vbox.hide()
-		calendar_vbox = GtkVBox()
-		calendar_vbox.set_homogeneous(TRUE)
-		self.hbox3.pack_start(calendar_vbox, FALSE, FALSE, 0)
-		calendar_vbox.show()
-		self.calendar_vbox = calendar_vbox
-		x = 0
-		while x < len(self.parent.calendar.appoint_summary):
-			if self.parent.calendar.appoint_date_day[x] == self.day and self.parent.calendar.appoint_date_month[x] == self.month and self.parent.calendar.appoint_date_year[x] == self.year and self.parent.calendar.appoint_done[x] == "no":
-				calendar_text = self.parent.calendar.appoint_time_hour[x] + ':' + self.parent.calendar.appoint_time_minute[x] + '\t' + self.parent.calendar.appoint_summary[x]
-				calendar_button = GtkButton(calendar_text)
-				calendar_button.connect("clicked", self.show_appointment, x)
-				calendar_vbox.pack_start(calendar_button, FALSE, FALSE, 0)
-				calendar_button.set_relief(RELIEF_NONE)
-				calendar_button.show()
-			x = x +1
-
-	def show_appointment(self, *args):
-		self.parent.calendar.selected_appointment = args[1]
-		self.parent.calendar.select_appointment(None, args[1])
-		self.parent.show_calendar()
-
-class Notes:
-	def __init__(self, parent):
-		self.parent = parent
-		self.config = self.parent.config
-		self.window = self.parent.window
-
-		frame=GtkFrame()
-		self.frame = frame
-		frame.set_usize(-1, -1)
-		frame.set_shadow_type("GTK_SHADOW_ETCHED_IN")
-		frame.set_label("Notes")
-		frame.set_label_align(0, -1)
-		frame.show()
-
-		vpaned = GtkVPaned()
-		frame.add(vpaned)
-		vpaned.show()
-
-		vbox = GtkVBox()
-		vpaned.pack1(vbox)
-		vbox.show()
-
-		# make the toobar
-		toolbar = GtkToolbar(ORIENTATION_HORIZONTAL, TOOLBAR_ICONS)
-		toolbar.set_button_relief(RELIEF_NONE)
-		toolbar.set_space_size(10)
-		vbox.pack_start(toolbar, expand=FALSE)
-		toolbar.show()
-		# add the evolution pixmaps to the toolbar
-		pix, mask = create_pixmap_from_xpm(self.window, None, self.config[2] + "/pixmaps/new.xpm")
-		toolbar.append_item(None, 'Make a new note', None, GtkPixmap(pix, mask), self.new_note)
-
-		pix, mask = create_pixmap_from_xpm(self.window, None, self.config[2] + "/pixmaps/trash.xpm")
-		toolbar.append_item(None, 'Delete the selected note', None, GtkPixmap(pix, mask), self.delete_note)
-
-		cscroll = GtkScrolledWindow()
-		cscroll.set_policy(POLICY_AUTOMATIC, POLICY_AUTOMATIC)
-		vbox.pack_start(cscroll)
-		cscroll.show()
-
-		clist=GtkCList(2)
-		cscroll.add(clist)
-		clist.connect("select_row" , self.select_note)
-		clist.set_flags(CAN_FOCUS)
-		clist.set_usize(-1, 87)
-		clist.set_column_title(0, "Title")
-		clist.set_column_width(0, 180)
-		clist.set_column_title(1, "Blank")
-		clist.set_column_width(1, 1)
-		clist.set_selection_mode(SELECTION_SINGLE)
-		clist.column_titles_hide()
-		clist.show()
-		self.clist=clist
-
-		scroll = GtkScrolledWindow()
-		scroll.set_policy(POLICY_NEVER, POLICY_ALWAYS)
-		self.scroll = scroll
-		vpaned.pack2(scroll)
-		scroll.show()
-
-		text = GtkText()
-		text.connect("changed", self.text_changed)
-		self.text = text
-		text.set_editable(TRUE)
-		scroll.add(text)
-		text.show()
-
-		self.update_list()
-
-	def update_list(self):
-		xml = XmlParse()
-		notes_text = xml.parse_xml_file(self.config[2] + '/data/notes.xml', 'note')
-		self.note = []
-		self.clist.freeze()
-		for note_text in notes_text:
-			tmp = string.split(note_text, '\n', 1)
-			if tmp[0] == '':
-				note_title = '<no title>'
-			else:
-				note_title = tmp[0]
-
-			self.clist.append([note_title, ''])
-			self.note.append(note_text)
-		self.clist.thaw()
-
-	def select_note(self, *args):
-		self.selected_note = args[1]
-		self.freeze_text = 1
-		self.text.freeze()
-		self.text.delete_text(0, -1)
-		self.text.insert(None,None,None,self.note[self.selected_note])
-		self.text.thaw()
-		self.freeze_text = 0
-		self.text.set_position(len(self.note[self.selected_note]))
-		self.text.grab_focus()
-
-	def new_note(self, *args):
-		self.clist.append(['<no title>', ''])
-		self.note.append('')
-		self.selected_note = len(self.note) - 1
-		self.clist.select_row(self.selected_note, 0)
-		self.text.grab_focus()
-
-	def delete_note(self, *args):
-		del self.note[self.selected_note]
-		self.clist.remove(self.selected_note)
-		self.freeze_text = 1
-		self.text.delete_text(0, -1)
-		self.freeze_text = 0
-
-	def text_changed(self, *args):
-		if self.freeze_text == 0:
-			txt = self.text.get_chars(0, -1)
-			tmp = string.split(txt, '\n', 1)
-			self.clist.set_text(self.selected_note, 0, tmp[0])
-			self.note[self.selected_note] = txt
-
-	def exit(self):
-		file = open(self.config[2] + '/data/notes.xml', 'w')
-		for note in self.note:
-			file.write('<note>' + note + '</note>\n\n')
-		file.close()
-
-class Contacts:
-	def __init__(self, parent):
-		self.parent = parent
-		self.config = self.parent.config
-		self.window = self.parent.window
-		self.cmap = self.window.get_colormap()
-
-		frame=GtkFrame()
-		frame.set_usize(-1, -1)
-		frame.set_shadow_type("GTK_SHADOW_ETCHED_IN")
-		frame.set_label("Contacts")
-		frame.set_label_align(0, -1)
-
-		vpaned = GtkVPaned()
-		frame.add(vpaned)
-		vpaned.show()
-
-		vbox = GtkVBox()
-		vpaned.pack1(vbox)
-		vbox.show()
-
-		# make the toobar
-		toolbar = GtkToolbar(ORIENTATION_HORIZONTAL, TOOLBAR_ICONS)
-		toolbar.set_button_relief(RELIEF_NONE)
-		toolbar.set_space_size(10)
-		vbox.pack_start(toolbar, expand=FALSE)
-		toolbar.show()
-		# add the evolution pixmaps to the toolbar
-		pix, mask = create_pixmap_from_xpm(self.window, None, self.config[2] + "/pixmaps/new.xpm")
-		toolbar.append_item(None, 'Create a new contact', None, GtkPixmap(pix, mask), self.new_contact)
-
-		pix, mask = create_pixmap_from_xpm(self.window, None, self.config[2] + "/pixmaps/edit.xpm")
-		toolbar.append_item(None, 'Edit the selected contact', None, GtkPixmap(pix, mask), self.edit_contact)
-
-		pix, mask = create_pixmap_from_xpm(self.window, None, self.config[2] + "/pixmaps/trash.xpm")
-		toolbar.append_item(None, 'Delete the selected contact', None, GtkPixmap(pix, mask), self.delete_contact)
-
-		cscroll = GtkScrolledWindow()
-		cscroll.set_policy(POLICY_AUTOMATIC, POLICY_AUTOMATIC)
-		vbox.pack_start(cscroll)
-		cscroll.show()
-
-		clist=GtkCList(2)
-		cscroll.add(clist)
-		clist.connect("select_row" , self.select_contact)
-		clist.set_flags(CAN_FOCUS)
-		clist.set_usize(-1, 87)
-		clist.set_column_title(0, "Name")
-		clist.set_column_title(1, "Email")
-		clist.set_column_width(0, 100)
-		clist.set_column_width(1, 80)
-		clist.set_selection_mode(SELECTION_SINGLE)
-		clist.column_titles_hide()
-		clist.show()
-		self.clist=clist
-		frame.show()
-		self.frame=frame
-
-		scroll = GtkScrolledWindow()
-		scroll.set_policy(POLICY_NEVER, POLICY_ALWAYS)
-		self.scroll = scroll
-		vpaned.pack2(scroll)
-		scroll.show()
-
-		text = GtkText()
-		self.text = text
-		text.set_editable(FALSE)
-		scroll.add(text)
-		text.show()
-
-		xml = XmlParse()
-		self.xml_contacts = xml.parse_xml_file(self.config[2] + '/data/contacts.xml', 'contact')
-
-		self.contact = []
-		for xml_contact in self.xml_contacts:
-			self.contact.append([xml.xml_get_text(xml_contact, "name"), xml.xml_get_text(xml_contact, "nickname"), xml.xml_get_text(xml_contact, "dob"), xml.xml_get_text(xml_contact, "address"), xml.xml_get_text(xml_contact, "email"), xml.xml_get_text(xml_contact, "website"), xml.xml_get_text(xml_contact, "phone"), xml.xml_get_text(xml_contact, "notes")])
-		self.update_list(self.clist)
-
-	def update_list(self, clist):
-		x = 0
-		v = 0
-		clist_color = self.cmap.alloc("grey87");
-		self.contact.sort(lambda x, y: cmp(x[0], y[0]))
-		clist.clear()
-		while x < len(self.contact):
-			headers = [self.contact[x][0], self.contact[x][4]]
-			clist.append(headers)
-			if v == 0:
-				clist.set_background(x, clist_color)
-				v = 1
-			else:
-				v = 0
-			x = x + 1
-
-	def select_contact(self, *args):
-		self.text.freeze()
-		self.text.delete_text(0, -1)
-		self.selected_contact = args[1]
-		if self.contact[self.selected_contact][0] != "":
-			self.text.insert(None,None,None,"Name: " + self.contact[self.selected_contact][0] + "\n")
-		if self.contact[self.selected_contact][4] != "":
-			self.text.insert(None,None,None,"Email: " + self.contact[self.selected_contact][4] + "\n")
-		if self.contact[self.selected_contact][1] != "":
-			self.text.insert(None,None,None,"Nickname: " + self.contact[self.selected_contact][1] + "\n")
-		if self.contact[self.selected_contact][6] != "":
-			self.text.insert(None,None,None,"Phone: " + self.contact[self.selected_contact][6] + "\n")
-		if self.contact[self.selected_contact][5] != "":
-			self.text.insert(None,None,None,"Website: " + self.contact[self.selected_contact][5] + "\n")
-		if self.contact[self.selected_contact][2] != "":
-			self.text.insert(None,None,None,"Birtday: " + self.contact[self.selected_contact][2] + "\n")
-		if self.contact[self.selected_contact][3] != "":
-			self.text.insert(None,None,None,"Address: " + self.contact[self.selected_contact][3] + "\n")
-		if self.contact[self.selected_contact][7] != "":
-			self.text.insert(None,None,None,"Notes: " + self.contact[self.selected_contact][7] + "\n")
-		vadjust = self.scroll.get_vadjustment()
-		vadjust.set_value(0)
-		self.text.thaw()
-
-	def new_contact(self, *args):
-		self.do_contact("new")
-
-	def edit_contact(self, *args):
-		self.do_contact("edit")
-
-	def delete_contact(self, *args):
-		del self.contact[self.selected_contact]
-		self.text.delete_text(0, -1)
-		self.update_list(self.clist)
-		self.update_xml()
-
-	def save_contact(self, *args):
-		self.contact.append([self.name_entry.get_text(), self.nickname_entry.get_text(), self.birthday_entry.get_text(), self.address_text.get_chars(0, -1), self.email_entry.get_text(), self.website_entry.get_text(), self.phone_entry.get_text(), self.notes_text.get_chars(0, -1)])
-		self.update_list(self.clist)
-		self.contact_window.hide()
-		self.update_xml()
-
-	def save_edited_contact(self, *args):
-		self.contact[self.selected_contact][0] = self.name_entry.get_text()
-		self.contact[self.selected_contact][1] = self.nickname_entry.get_text()
-		self.contact[self.selected_contact][2] = self.birthday_entry.get_text()
-		self.contact[self.selected_contact][3] = self.address_text.get_chars(0, -1)
-		self.contact[self.selected_contact][4] = self.email_entry.get_text()
-		self.contact[self.selected_contact][5] = self.website_entry.get_text()
-		self.contact[self.selected_contact][6] = self.phone_entry.get_text()
-		self.contact[self.selected_contact][7] = self.notes_text.get_chars(0, -1)
-		self.update_list(self.clist)
-		self.select_contact(None, self.selected_contact)
-		self.contact_window.hide()
-		self.update_xml()
-
-	def do_contact(self, type, cname='', cemail=''):
-		# our main gtk window
-		window = GtkWindow(WINDOW_TOPLEVEL)
-		self.contact_window = window
-		window.connect("delete_event", window.hide)
-		window.set_title("Storm - Contact")
-		window.set_usize(240, 300)
-		window.show()
-
-		vbox = GtkVBox()
-		window.add(vbox)
-		vbox.show()
-
-		# make the toobar
-		toolbar = GtkToolbar(ORIENTATION_HORIZONTAL, TOOLBAR_ICONS)
-		toolbar.set_button_relief(RELIEF_NONE)
-		toolbar.set_space_size(10)
-		vbox.pack_start(toolbar, expand=FALSE)
-		toolbar.show()
-		# add the evolution pixmaps to the toolbar
-		if type == "edit":
-			pix, mask = create_pixmap_from_xpm(self.window, None, self.config[2] + "/pixmaps/save.xpm")
-			toolbar.append_item(None, 'Save the current contact', None, GtkPixmap(pix, mask), self.save_edited_contact)
-		else:
-			pix, mask = create_pixmap_from_xpm(self.window, None, self.config[2] + "/pixmaps/save.xpm")
-			toolbar.append_item(None, 'Save the current contact', None, GtkPixmap(pix, mask), self.save_contact)
-
-		pix, mask = create_pixmap_from_xpm(self.window, None, self.config[2] + "/pixmaps/cancel.xpm")
-		toolbar.append_item(None, 'Close this window', None, GtkPixmap(pix, mask), window.hide)
-
-		table1=GtkTable(8, 2)
-		vbox.pack_start(table1)
-		table1.set_usize(-1, -1)
-		table1.set_row_spacings(0)
-		table1.set_col_spacings(0)
-		label2=GtkLabel()
-		table1.attach(label2, 0, 1, 1, 2, FILL, 0, 0, 0)
-		label2.set_usize(-1, -1)
-		label2.set_text("Email")
-		label2.set_justify(JUSTIFY_CENTER)
-		label2.set_alignment(0, 0.5)
-		label2.set_padding(0, 0)
-		label2.show()
-		self.label2=label2
-		label3=GtkLabel()
-		table1.attach(label3, 0, 1, 2, 3, FILL, 0, 0, 0)
-		label3.set_usize(-1, -1)
-		label3.set_text("Nickname")
-		label3.set_justify(JUSTIFY_CENTER)
-		label3.set_alignment(0, 0.5)
-		label3.set_padding(0, 0)
-		label3.show()
-		self.label3=label3
-		label4=GtkLabel()
-		table1.attach(label4, 0, 1, 3, 4, FILL, 0, 0, 0)
-		label4.set_usize(-1, -1)
-		label4.set_text("Birthday")
-		label4.set_justify(JUSTIFY_CENTER)
-		label4.set_alignment(0, 0.5)
-		label4.set_padding(0, 0)
-		label4.show()
-		self.label4=label4
-		label5=GtkLabel()
-		table1.attach(label5, 0, 1, 4, 5, FILL, 0, 0, 0)
-		label5.set_usize(-1, -1)
-		label5.set_text("Website")
-		label5.set_justify(JUSTIFY_CENTER)
-		label5.set_alignment(0, 0.5)
-		label5.set_padding(0, 0)
-		label5.show()
-		self.label5=label5
-		label6=GtkLabel()
-		table1.attach(label6, 0, 1, 5, 6, FILL, 0, 0, 0)
-		label6.set_usize(-1, -1)
-		label6.set_text("Phone")
-		label6.set_justify(JUSTIFY_CENTER)
-		label6.set_alignment(0, 0.5)
-		label6.set_padding(0, 0)
-		label6.show()
-		self.label6=label6
-		label7=GtkLabel()
-		table1.attach(label7, 0, 1, 6, 7, FILL, 0, 0, 0)
-		label7.set_usize(-1, -1)
-		label7.set_text("Address")
-		label7.set_justify(JUSTIFY_CENTER)
-		label7.set_alignment(0, 0.5)
-		label7.set_padding(0, 0)
-		label7.show()
-		self.label7=label7
-		label8=GtkLabel()
-		table1.attach(label8, 0, 1, 7, 8, FILL, 0, 0, 0)
-		label8.set_usize(-1, -1)
-		label8.set_text("Notes")
-		label8.set_justify(JUSTIFY_CENTER)
-		label8.set_alignment(0, 0.5)
-		label8.set_padding(0, 0)
-		label8.show()
-		self.label8=label8
-		name_entry=GtkEntry()
-		table1.attach(name_entry, 1, 2, 0, 1, EXPAND, 0, 0, 0)
-		name_entry.set_flags(CAN_FOCUS)
-		name_entry.set_usize(170, -1)
-		name_entry.set_editable(TRUE)
-		name_entry.set_visibility(TRUE)
-		name_entry.set_max_length(0)
-		if type == "edit":
-			name_entry.set_text(self.contact[self.selected_contact][0])
-		else:
-			name_entry.set_text(cname)
-		name_entry.show()
-		self.name_entry=name_entry
-		email_entry=GtkEntry()
-		table1.attach(email_entry, 1, 2, 1, 2, EXPAND, 0, 0, 0)
-		email_entry.set_flags(CAN_FOCUS)
-		email_entry.set_usize(170, -1)
-		email_entry.set_editable(TRUE)
-		email_entry.set_visibility(TRUE)
-		email_entry.set_max_length(0)
-		if type == "edit":
-			email_entry.set_text(self.contact[self.selected_contact][4])
-		else:
-			email_entry.set_text(cemail)
-		email_entry.show()
-		self.email_entry=email_entry
-		nickname_entry=GtkEntry()
-		table1.attach(nickname_entry, 1, 2, 2, 3, EXPAND, 0, 0, 0)
-		nickname_entry.set_flags(CAN_FOCUS)
-		nickname_entry.set_usize(170, -1)
-		nickname_entry.set_editable(TRUE)
-		nickname_entry.set_visibility(TRUE)
-		nickname_entry.set_max_length(0)
-		if type == "edit":
-			nickname_entry.set_text(self.contact[self.selected_contact][1])
-		nickname_entry.show()
-		self.nickname_entry=nickname_entry
-		birthday_entry=GtkEntry()
-		table1.attach(birthday_entry, 1, 2, 3, 4, EXPAND, 0, 0, 0)
-		birthday_entry.set_flags(CAN_FOCUS)
-		birthday_entry.set_usize(170, -1)
-		birthday_entry.set_editable(TRUE)
-		birthday_entry.set_visibility(TRUE)
-		birthday_entry.set_max_length(0)
-		if type == "edit":
-			birthday_entry.set_text(self.contact[self.selected_contact][2])
-		birthday_entry.show()
-		self.birthday_entry=birthday_entry
-		website_entry=GtkEntry()
-		table1.attach(website_entry, 1, 2, 4, 5, EXPAND, 0, 0, 0)
-		website_entry.set_flags(CAN_FOCUS)
-		website_entry.set_usize(170, -1)
-		website_entry.set_editable(TRUE)
-		website_entry.set_visibility(TRUE)
-		website_entry.set_max_length(0)
-		if type == "edit":
-			website_entry.set_text(self.contact[self.selected_contact][5])
-		website_entry.show()
-		self.website_entry=website_entry
-		phone_entry=GtkEntry()
-		table1.attach(phone_entry, 1, 2, 5, 6, EXPAND, 0, 0, 0)
-		phone_entry.set_flags(CAN_FOCUS)
-		phone_entry.set_usize(170, -1)
-		phone_entry.set_editable(TRUE)
-		phone_entry.set_visibility(TRUE)
-		phone_entry.set_max_length(0)
-		if type == "edit":
-			phone_entry.set_text(self.contact[self.selected_contact][6])
-		phone_entry.show()
-		self.phone_entry=phone_entry
-		scrolledwindow1=GtkScrolledWindow()
-		table1.attach(scrolledwindow1, 1, 2, 6, 7, FILL, FILL, 0, 0)
-		scrolledwindow1.set_usize(170, 60)
-		scrolledwindow1.set_policy(POLICY_NEVER, POLICY_AUTOMATIC)
-		address_text=GtkText()
-		scrolledwindow1.add(address_text)
-		address_text.set_flags(CAN_FOCUS)
-		address_text.set_usize(170, 60)
-		address_text.set_editable(TRUE)
-		if type == "edit":
-			address_text.insert(None,None,None,self.contact[self.selected_contact][3])
-		address_text.show()
-		self.address_text=address_text
-		scrolledwindow1.show()
-		self.scrolledwindow1=scrolledwindow1
-		scrolledwindow2=GtkScrolledWindow()
-		table1.attach(scrolledwindow2, 1, 2, 7, 8, FILL, FILL, 0, 0)
-		scrolledwindow2.set_usize(170, 60)
-		scrolledwindow2.set_policy(POLICY_NEVER, POLICY_AUTOMATIC)
-		notes_text=GtkText()
-		scrolledwindow2.add(notes_text)
-		notes_text.set_flags(CAN_FOCUS)
-		notes_text.set_usize(170, 60)
-		notes_text.set_editable(TRUE)
-		if type == "edit":
-			notes_text.insert(None,None,None,self.contact[self.selected_contact][7])
-		notes_text.show()
-		self.notes_text=notes_text
-		scrolledwindow2.show()
-		self.scrolledwindow2=scrolledwindow2
-		label1=GtkLabel()
-		table1.attach(label1, 0, 1, 0, 1, FILL, 0, 0, 0)
-		label1.set_usize(-1, -1)
-		label1.set_text("Name")
-		label1.set_justify(JUSTIFY_CENTER)
-		label1.set_alignment(0, 0.5)
-		label1.set_padding(0, 0)
-		label1.show()
-		self.label1=label1
-		table1.show()
-		self.table1=table1
-
-	def update_xml(self):
-		file = open(self.config[2] + '/data/contacts.xml', 'w')
-		x = 0
-		while x < len(self.contact):
-			file.write('<contact>\n<name>' + self.contact[x][0] + '</name>\n<nickname>' + self.contact[x][1] + '</nickname>\n<dob>' + self.contact[x][2] + '</dob>\n<address>' + self.contact[x][3] + '</address>\n<email>' + self.contact[x][4] + '</email>\n<website>' + self.contact[x][5] + '</website>\n<phone>' + self.contact[x][6] + '</phone>\n<notes>' + self.contact[x][7] + '</notes>\n</contact>\n\n')
-			x = x + 1
-		file.close
-
-class Calendar:
-	def __init__(self, parent):
-		self.parent = parent
-		self.config = self.parent.config
-		self.window = self.parent.window
-		self.cmap = self.window.get_colormap()
-		date = time.strftime("%d %m %y %l %M", time.gmtime(time.time()))
-		self.day, self.month, self.year, self.hour, self.minute = string.split(date)
-
-		frame=GtkFrame()
-		frame.set_usize(-1, -1)
-		frame.set_shadow_type("GTK_SHADOW_ETCHED_IN")
-		frame.set_label("Calendar")
-		frame.set_label_align(0, -1)
-		frame.show()
-		self.frame=frame
-		frame.show()
-
-		vpaned = GtkVPaned()
-		frame.add(vpaned)
-		vpaned.show()
-		self.vpaned = vpaned
-
-		vbox = GtkVBox()
-		vpaned.pack1(vbox)
-		vbox.show()
-
-		hbox = GtkHBox()
-		vbox.pack_start(hbox, expand=FALSE)
-		hbox.show()
-
-		# make the toobar
-		toolbar2 = GtkToolbar(ORIENTATION_HORIZONTAL, TOOLBAR_ICONS)
-		toolbar2.set_button_relief(RELIEF_NONE)
-		toolbar2.set_space_size(10)
-		hbox.pack_start(toolbar2, fill=TRUE)
-		# add the evolution pixmaps to the toolbar
-		pix, mask = create_pixmap_from_xpm(self.window, None, self.config[2] + "/pixmaps/new.xpm")
-		toolbar2.append_item(None, 'Create a new appointment', None, GtkPixmap(pix, mask), self.new_appointment)
-
-		pix, mask = create_pixmap_from_xpm(self.window, None, self.config[2] + "/pixmaps/edit.xpm")
-		toolbar2.append_item(None, 'Edit the selected appointment', None, GtkPixmap(pix, mask), self.edit_appointment)
-
-		pix, mask = create_pixmap_from_xpm(self.window, None, self.config[2] + "/pixmaps/trash.xpm")
-		toolbar2.append_item(None, 'Delete the selected appointment', None, GtkPixmap(pix, mask), self.delete_appointment)
-
-		toolbar2.show()
-
-		# make the toobar
-		toolbar3 = GtkToolbar(ORIENTATION_HORIZONTAL, TOOLBAR_ICONS)
-		toolbar3.set_button_relief(RELIEF_NONE)
-		toolbar3.set_space_size(10)
-		hbox.pack_start(toolbar3, fill=TRUE)
-		# add the evolution pixmaps to the toolbar
-		pix, mask = create_pixmap_from_xpm(self.window, None, self.config[2] + "/pixmaps/tick.xpm")
-		toolbar3.append_item(None, 'Set the selected appointment as Completed', None, GtkPixmap(pix, mask), self.done_appointment)
-
-		pix, mask = create_pixmap_from_xpm(self.window, None, self.config[2] + "/pixmaps/cancel.xpm")
-		toolbar3.append_item(None, 'Set the selected appointment as Not yet Completed', None, GtkPixmap(pix, mask), self.cancel_appointment)
-		toolbar3.show()
-
-		cscroll = GtkScrolledWindow()
-		cscroll.set_policy(POLICY_AUTOMATIC, POLICY_AUTOMATIC)
-		vbox.pack_start(cscroll)
-		cscroll.show()
-
-		clist=GtkCList(3)
-		cscroll.add(clist)
-		clist.connect("select_row" , self.select_appointment)
-		clist.set_flags(CAN_FOCUS)
-		clist.set_usize(-1, 87)
-		clist.set_column_title(0, "Status")
-		clist.set_column_title(1, "summary")
-		clist.set_column_title(2, "Date")
-		clist.set_column_width(0, 16)
-		clist.set_column_width(1, 90)
-		clist.set_column_width(2, 80)
-		clist.set_selection_mode(SELECTION_SINGLE)
-		clist.column_titles_hide()
-		clist.show()
-		self.clist = clist
-
-		scroll = GtkScrolledWindow()
-		scroll.set_policy(POLICY_NEVER, POLICY_ALWAYS)
-		self.scroll = scroll
-		vpaned.pack2(scroll)
-		scroll.show()
-
-		text = GtkText()
-		text.set_editable(FALSE)
-		scroll.add(text)
-		text.show()
-		self.text = text
-
-		self.update_list()
-
-	def select_appointment(self, *args):
-		self.text.freeze()
-		self.text.delete_text(0, -1)
-		self.selected_appointment = args[1]
-		self.text.insert(None,None,None,'Summary: ' + self.appoint_summary[self.selected_appointment] + '\nDate\Time: ' + self.appoint_time_hour[self.selected_appointment] + ':' + self.appoint_time_minute[self.selected_appointment] + ' ' + self.appoint_date_day[self.selected_appointment] + '/' + self.appoint_date_month[self.selected_appointment] + '/' + self.appoint_date_year[self.selected_appointment] + '\n')
-		if self.appoint_name[self.selected_appointment] != "":
-			self.text.insert(None,None,None,'Person: ' + self.appoint_name[self.selected_appointment] + '\n')
-		if self.appoint_place[self.selected_appointment] != "":
-			self.text.insert(None,None,None,'Place: ' + self.appoint_place[self.selected_appointment] + '\n')
-		if self.appoint_descrip[self.selected_appointment] != "":
-			self.text.insert(None,None,None,'Description: ' + self.appoint_descrip[self.selected_appointment] + '\n')
-		vadjust = self.scroll.get_vadjustment()
-		vadjust.set_value(0)
-		self.text.thaw()
-
-	def update_list(self):
-		xml = XmlParse()
-		self.xml_appointments = xml.parse_xml_file(self.config[2] + '/data/appointments.xml', 'appointment')
-		self.appoint_summary = []
-		self.appoint_time_hour = []
-		self.appoint_time_minute = []
-		self.appoint_date_day = []
-		self.appoint_date_month = []
-		self.appoint_date_year = []
-		self.appoint_name = []
-		self.appoint_place = []
-		self.appoint_descrip = []
-		self.appoint_done = []
-
-		x = 0
-		v = 0
-		self.clist.clear()
-		clist_color = self.cmap.alloc("grey87");
-		for xml_appointment in self.xml_appointments:
-			self.appoint_summary.append(xml.xml_get_text(xml_appointment, "summary"))
-			self.appoint_time_hour.append(xml.xml_get_text(xml_appointment, "time-hour"))
-			self.appoint_time_minute.append(xml.xml_get_text(xml_appointment, "time-minute"))
-			self.appoint_date_day.append(xml.xml_get_text(xml_appointment, "date-day"))
-			self.appoint_date_month.append(xml.xml_get_text(xml_appointment, "date-month"))
-			self.appoint_date_year.append(xml.xml_get_text(xml_appointment, "date-year"))
-			self.appoint_name.append(xml.xml_get_text(xml_appointment, "name"))
-			self.appoint_place.append(xml.xml_get_text(xml_appointment, "place"))
-			self.appoint_descrip.append(xml.xml_get_text(xml_appointment, "description"))
-			self.appoint_done.append(xml.xml_get_text(xml_appointment, "done"))
-
-			thedate = self.appoint_time_hour[x] + ':' + self.appoint_time_minute[x] + ' ' + self.appoint_date_day[x] + '/' + self.appoint_date_month[x] + '/' + self.appoint_date_year[x]
-			headers = ['', self.appoint_summary[x], thedate]
-			self.clist.append(headers)
-			if v == 0:
-				self.clist.set_background(x, clist_color)
-				v = 1
-			else:
-				v = 0
-			x = x + 1
-
-		row_count = 0
-		while row_count < len(self.appoint_summary):
-			if self.appoint_done[row_count] == "yes":
-				pix, mask = create_pixmap_from_xpm(self.window, None, self.config[2] + "/pixmaps/tick.xpm")
-			else:
-				pix, mask = create_pixmap_from_xpm(self.window, None, self.config[2] + "/pixmaps/blank.xpm")
-   			self.clist.set_pixmap(row_count, 0, pix, mask)
-			row_count = row_count + 1
-
-	def new_appointment(self, *args):
-		self.do_appointment("new")
-
-	def edit_appointment(self, *args):
-		self.do_appointment("edit")
-
-	def delete_appointment(self, *args):
-		del self.appoint_summary[self.selected_appointment]
-		del self.appoint_time_hour[self.selected_appointment]
-		del self.appoint_time_minute[self.selected_appointment]
-		del self.appoint_date_day[self.selected_appointment]
-		del self.appoint_date_month[self.selected_appointment]
-		del self.appoint_date_year[self.selected_appointment]
-		del self.appoint_name[self.selected_appointment]
-		del self.appoint_place[self.selected_appointment]
-		del self.appoint_descrip[self.selected_appointment]
-		del self.appoint_done[self.selected_appointment]
-		self.text.delete_text(0, -1)
-		self.clist.remove(self.selected_appointment)
-		self.update_xml()
-		self.parent.today.update_today()
-
-	def done_appointment(self, *args):
-		pix, mask = create_pixmap_from_xpm(self.window, None, self.config[2] + "/pixmaps/tick.xpm")
-		self.clist.set_pixmap(self.selected_appointment, 0, pix, mask)
-		self.appoint_done[self.selected_appointment] = "yes"
-		self.parent.today.update_today()
-
-	def cancel_appointment(self, *args):
-		pix, mask = create_pixmap_from_xpm(self.window, None, self.config[2] + "/pixmaps/blank.xpm")
-		self.clist.set_pixmap(self.selected_appointment, 0, pix, mask)
-		self.appoint_done[self.selected_appointment] = "no"
-		self.parent.today.update_today()
-
-	def save_appointment(self, *args):
-		self.appoint_summary.append(self.summary_entry.get_text())
-		self.appoint_time_hour.append(self.time_combo_hour.entry.get_text())
-		self.appoint_time_minute.append(self.time_combo_minute.entry.get_text())
-		self.appoint_date_day.append(self.date_combo_day.entry.get_text())
-		self.appoint_date_month.append(self.date_combo_month.entry.get_text())
-		self.appoint_date_year.append(self.date_entry_year.get_text())
-		self.appoint_name.append(self.name_entry.get_text())
-		self.appoint_place.append(self.place_entry.get_text())
-		self.appoint_descrip.append(self.description_text.get_chars(0, -1))
-		self.appoint_done.append("no")
-		self.update_xml()
-		self.update_list()
-		self.appointment_window.hide()
-		self.parent.today.update_today()
-
-	def save_edited_appointment(self, *args):
-		self.appoint_summary[self.selected_appointment] = self.summary_entry.get_text()
-		self.appoint_time_hour[self.selected_appointment] = self.time_combo_hour.entry.get_text()
-		self.appoint_time_minute[self.selected_appointment] = self.time_combo_minute.entry.get_text()
-		self.appoint_date_day[self.selected_appointment] = self.date_combo_day.entry.get_text()
-		self.appoint_date_month[self.selected_appointment] = self.date_combo_month.entry.get_text()
-		self.appoint_date_year[self.selected_appointment] = self.date_entry_year.get_text()
-		self.appoint_name[self.selected_appointment] = self.name_entry.get_text()
-		self.appoint_place[self.selected_appointment] = self.place_entry.get_text()
-		self.appoint_descrip[self.selected_appointment] = self.description_text.get_chars(0, -1)
-		self.update_xml()
-		self.update_list()
-		self.select_appointment(None, self.selected_appointment)
-		self.appointment_window.hide()
-		self.parent.today.update_today()
-
-	def do_appointment(self, type):
-		# our main gtk window
-		window = GtkWindow(WINDOW_TOPLEVEL)
-		self.appointment_window = window
-		window.connect("delete_event", window.hide)
-		window.set_title("Storm - Appointment")
-		window.set_usize(240, 300)
-		window.show()
-
-		vbox = GtkVBox()
-		window.add(vbox)
-		vbox.show()
-
-		# make the toobar
-		toolbar = GtkToolbar(ORIENTATION_HORIZONTAL, TOOLBAR_ICONS)
-		toolbar.set_button_relief(RELIEF_NONE)
-		toolbar.set_space_size(10)
-		vbox.pack_start(toolbar, expand=FALSE)
-		toolbar.show()
-		# add the evolution pixmaps to the toolbar
-		if type == "edit":
-			pix, mask = create_pixmap_from_xpm(self.window, None, self.config[2] + "/pixmaps/save.xpm")
-			toolbar.append_item(None, 'Save the current appointment', None, GtkPixmap(pix, mask), self.save_edited_appointment)
-		else:
-			pix, mask = create_pixmap_from_xpm(self.window, None, self.config[2] + "/pixmaps/save.xpm")
-			toolbar.append_item(None, 'Save the current appointment', None, GtkPixmap(pix, mask), self.save_appointment)
-
-		pix, mask = create_pixmap_from_xpm(self.window, None, self.config[2] + "/pixmaps/cancel.xpm")
-		toolbar.append_item(None, 'Close this window', None, GtkPixmap(pix, mask), window.hide)
-
-		table1=GtkTable(6, 2)
-		vbox.pack_start(table1)
-		table1.show()
-		table1.set_usize(-1, -1)
-		table1.set_row_spacings(0)
-		table1.set_col_spacings(0)
-		label1=GtkLabel()
-		table1.attach(label1, 0, 1, 0, 1, FILL, 0, 0, 0)
-		label1.set_usize(-1, -1)
-		label1.set_text("Summary")
-		label1.set_justify(JUSTIFY_CENTER)
-		label1.set_alignment(0, 0.5)
-		label1.set_padding(0, 0)
-		label1.show()
-		self.label1=label1
-		label2=GtkLabel()
-		table1.attach(label2, 0, 1, 1, 2, FILL, 0, 0, 0)
-		label2.set_usize(-1, -1)
-		label2.set_text("Time")
-		label2.set_justify(JUSTIFY_CENTER)
-		label2.set_alignment(0, 0.5)
-		label2.set_padding(0, 0)
-		label2.show()
-		self.label2=label2
-
-		appointment_tips = GtkTooltips()
-
-		label3=GtkButton("Date")
-		appointment_tips.set_tip(label3, 'Select date from calendar')
-		label3.connect("clicked", self.select_date_from_calendar)
-		table1.attach(label3, 0, 1, 2, 3, FILL, 0, 0, 0)
-		label3.show()
-		self.label3=label3
-		label4=GtkLabel()
-		table1.attach(label4, 0, 1, 3, 4, FILL, 0, 0, 0)
-		label4.set_usize(-1, -1)
-		label4.set_text("Name")
-		label4.set_justify(JUSTIFY_CENTER)
-		label4.set_alignment(0, 0.5)
-		label4.set_padding(0, 0)
-		label4.show()
-		self.label4=label4
-		label5=GtkLabel()
-		table1.attach(label5, 0, 1, 4, 5, FILL, 0, 0, 0)
-		label5.set_usize(-1, -1)
-		label5.set_text("Place")
-		label5.set_justify(JUSTIFY_CENTER)
-		label5.set_alignment(0, 0.5)
-		label5.set_padding(0, 0)
-		label5.show()
-		self.label5=label5
-		label6=GtkLabel()
-		table1.attach(label6, 0, 1, 5, 6, FILL, 0, 0, 0)
-		label6.set_usize(-1, -1)
-		label6.set_text("Description")
-		label6.set_justify(JUSTIFY_CENTER)
-		label6.set_alignment(0, 0.5)
-		label6.set_padding(0, 0)
-		label6.show()
-		self.label6=label6
-
-		summary_entry=GtkEntry()
-		table1.attach(summary_entry, 1, 2, 0, 1, EXPAND, 0, 0, 0)
-		summary_entry.set_flags(CAN_FOCUS)
-		summary_entry.set_usize(169, -1)
-		summary_entry.set_editable(TRUE)
-		summary_entry.set_visibility(TRUE)
-		summary_entry.set_max_length(0)
-		if type == "edit":
-			summary_entry.set_text(self.appoint_summary[self.selected_appointment])
-		summary_entry.show()
-		self.summary_entry=summary_entry
-
-		time_hbox = GtkHBox()
-		table1.attach(time_hbox, 1, 2, 1, 2, EXPAND|FILL, 0, 0, 0)
-		time_hbox.show()
-
-		time_combo_hour = GtkCombo()
-		time_combo_hour.set_usize(45, -1)
-		time_hbox.pack_start(time_combo_hour, expand=FALSE)
-		time_hours = []
-		t = 0
-		for t in range (1,25):
-			time_hours.append(string.rjust(str(t), 2).replace(' ', '0'))
-		time_combo_hour.set_popdown_strings(time_hours)
-		if type == "edit":
-			time_combo_hour.entry.set_text(self.appoint_time_hour[self.selected_appointment])
-		else:
-			time_combo_hour.entry.set_text(string.rjust(self.hour, 2).replace(' ', '0'))
-		time_combo_hour.show()
-		self.time_combo_hour = time_combo_hour
-
-		time_combo_minute = GtkCombo()
-		time_combo_minute.set_usize(45, -1)
-		time_hbox.pack_start(time_combo_minute, expand=FALSE)
-		time_minutes = []
-		t = 0
-		for t in range (0,60):
-			time_minutes.append(string.rjust(str(t), 2).replace(' ', '0'))
-		time_combo_minute.set_popdown_strings(time_minutes)
-		if type == "edit":
-			time_combo_minute.entry.set_text(self.appoint_time_minute[self.selected_appointment])
-		else:
-			time_combo_minute.entry.set_text(string.rjust(self.minute, 2).replace(' ', '0'))
-		time_combo_minute.show()
-		self.time_combo_minute = time_combo_minute
-
-		date_hbox = GtkHBox()
-		table1.attach(date_hbox, 1, 2, 2, 3, EXPAND|FILL, 0, 0, 0)
-		date_hbox.show()
-
-		date_combo_day = GtkCombo()
-		date_combo_day.set_usize(45, -1)
-		date_hbox.pack_start(date_combo_day, expand=FALSE)
-		date_days = []
-		t = 0
-		for t in range (1,31):
-			date_days.append(string.rjust(str(t), 2).replace(' ', '0'))
-		date_combo_day.set_popdown_strings(date_days)
-		if type == "edit":
-			date_combo_day.entry.set_text(self.appoint_date_day[self.selected_appointment])
-		else:
-			date_combo_day.entry.set_text(str(self.day))
-		date_combo_day.show()
-		self.date_combo_day = date_combo_day
-
-		date_combo_month = GtkCombo()
-		date_combo_month.set_usize(45, -1)
-		date_hbox.pack_start(date_combo_month, expand=FALSE)
-		date_months = []
-		t = 0
-		for t in range (1,12):
-			date_months.append(string.rjust(str(t), 2).replace(' ', '0'))
-		date_combo_month.set_popdown_strings(date_months)
-		if type == "edit":
-			date_combo_month.entry.set_text(self.appoint_date_month[self.selected_appointment])
-		else:
-			date_combo_month.entry.set_text(str(self.month))
-		date_combo_month.show()
-		self.date_combo_month = date_combo_month
-
-		date_entry_year = GtkEntry()
-		date_entry_year.set_usize(25, -1)
-		date_hbox.pack_start(date_entry_year, expand=FALSE)
-		if type == "edit":
-			date_entry_year.set_text(self.appoint_date_year[self.selected_appointment])
-		else:
-			date_entry_year.set_text(str(self.year))
-		date_entry_year.show()
-		self.date_entry_year = date_entry_year
-
-		name_hbox = GtkHBox()
-		table1.attach(name_hbox, 1, 2, 3, 4, EXPAND|FILL, 0, 0, 0)
-		name_hbox.show()
-
-		name_button = GtkButton()
-		appointment_tips.set_tip(name_button, 'Select a name from contacts')
-		name_hbox.pack_start(name_button, expand=FALSE)
-		name_button.connect("clicked", self.select_name)
-		pix, mask = create_pixmap_from_xpm(window, None, self.config[2] + "/pixmaps/contacts.xpm")
-		name_pixmap = GtkPixmap(pix, mask)
-		name_button.add(name_pixmap)
-		name_button.show()
-		name_pixmap.show()
-
-		name_entry=GtkEntry()
-		name_hbox.pack_start(name_entry, expand=FALSE)
-		name_entry.set_flags(CAN_FOCUS)
-		name_entry.set_usize(150, -1)
-		name_entry.set_editable(TRUE)
-		name_entry.set_visibility(TRUE)
-		name_entry.set_max_length(0)
-		if type == "edit":
-			name_entry.set_text(self.appoint_name[self.selected_appointment])
-		name_entry.show()
-		self.name_entry=name_entry
-
-		place_entry=GtkEntry()
-		table1.attach(place_entry, 1, 2, 4, 5, EXPAND, 0, 0, 0)
-		place_entry.set_flags(CAN_FOCUS)
-		place_entry.set_usize(169, -1)
-		place_entry.set_editable(TRUE)
-		place_entry.set_visibility(TRUE)
-		place_entry.set_max_length(0)
-		if type == "edit":
-			place_entry.set_text(self.appoint_place[self.selected_appointment])
-		place_entry.show()
-		self.place_entry=place_entry
-
-		scrolledwindow1=GtkScrolledWindow()
-		table1.attach(scrolledwindow1, 1, 2, 5, 6, FILL, FILL, 0, 0)
-		scrolledwindow1.set_usize(165, 70)
-		scrolledwindow1.set_policy(POLICY_NEVER, POLICY_AUTOMATIC)
-		description_text=GtkText()
-		scrolledwindow1.add(description_text)
-		description_text.set_flags(CAN_FOCUS)
-		description_text.set_usize(165, 70)
-		description_text.set_editable(TRUE)
-		if type == "edit":
-			description_text.insert(None,None,None,self.appoint_descrip[self.selected_appointment])
-		description_text.show()
-		self.description_text=description_text
-		scrolledwindow1.show()
-		self.scrolledwindow1=scrolledwindow1
-
-	def select_date_from_calendar(self, *args):
-		# our main gtk window
-		window = GtkWindow(WINDOW_TOPLEVEL)
-		self.calendar_select_window = window
-		window.connect("delete_event", window.hide)
-		window.set_title("Storm - Calendar")
-		window.set_usize(200, 140)
-		window.show()
-
-		calendar = GtkCalendar()
-		calendar.connect("day-selected-double-click", self.change_date)
-		window.add(calendar)
-		calendar.show()
-		self.select_calendar = calendar
-
-	def change_date(self, *args):
-		year, month, day = self.select_calendar.get_date()
-		month = month + 1
-		year = str(year)
-		year = year[-2:]
-		self.date_combo_day.entry.set_text(string.rjust(str(day), 2).replace(' ', '0'))
-		self.date_combo_month.entry.set_text(string.rjust(str(month), 2).replace(' ', '0'))
-		self.date_entry_year.set_text(string.rjust(year, 2).replace(' ', '0'))
-		self.calendar_select_window.hide()
-
-	def update_xml(self):
-		file = open(self.config[2] + '/data/appointments.xml', 'w')
-		x = 0
-		while x < len(self.appoint_summary):
-			file.write('<appointment>\n<summary>' + self.appoint_summary[x] + '</summary>\n<time-hour>' + self.appoint_time_hour[x] + '</time-hour>\n<time-minute>' + self.appoint_time_minute[x] + '</time-minute>\n<date-day>' + self.appoint_date_day[x] + '</date-day>\n<date-month>' + self.appoint_date_month[x] + '</date-month>\n<date-year>' + self.appoint_date_year[x] + '</date-year>\n<name>' + self.appoint_name[x] + '</name>\n<place>' + self.appoint_place[x] + '</place>\n<description>' + self.appoint_descrip[x] + '</description>\n<done>no</done>\n</appointment>\n\n')
-			x = x + 1
-		file.close
-
-	def select_name(self, *args):
-		# our main gtk window
-		window = GtkWindow(WINDOW_TOPLEVEL)
-		self.select_name_window = window
-		window.connect("delete_event", window.hide)
-		window.set_title("Storm - Contacts")
-		window.set_usize(200, 200)
-		window.show()
-
-		scroll = GtkScrolledWindow()
-		scroll.set_policy(POLICY_NEVER, POLICY_ALWAYS)
-		window.add(scroll)
-		scroll.show()
-
-		clist = GtkCList(2)
-		self.select_name_clist = clist
-		scroll.add(clist)
-		clist.connect("select_row" , self.select_name_return)
-		clist.set_flags(CAN_FOCUS)
-		clist.set_sort_column(0)
-		clist.set_usize(-1, -1)
-		clist.set_column_title(0, "Name")
-		clist.set_column_width(0, 80)
-		clist.set_column_title(1, "Email")
-		clist.set_column_width(1, 80)
-		clist.set_selection_mode(SELECTION_SINGLE)
-		clist.column_titles_show()
-		clist.show()
-		self.parent.contacts.update_list(clist)
-
-	def select_name_return(self, *args):
-		x = args[1]
-		self.name_entry.set_text(self.parent.contacts.contact[x][0])
-		self.select_name_window.hide()
-
-	def exit(self):
-		x = 0
-		while x < len(self.appoint_done):
-			if self.appoint_done[x] == "yes":
-				self.selected_appointment = x
-				self.delete_appointment()
-			x = x + 1
-
-class Sync:
-	def __init__(self, parent):
-		self.parent = parent
-		self.config = self.parent.config
-		self.window = self.parent.window
-
-	def host(self, *args):
-		# our main gtk window
-		window = GtkWindow(WINDOW_TOPLEVEL)
-		window.connect("delete_event", window.hide)
-		window.set_title("Storm - Sync")
-		window.set_usize(200, -1)
-		window.show()
-
-		hbox = GtkHBox()
-		window.add(hbox)
-		hbox.show()
-
-		pix, mask = create_pixmap_from_xpm(self.window, None, self.config[2] + "/pixmaps/send-receive.xpm")
-		pixmap = GtkPixmap(pix, mask)
-		hbox.pack_start(pixmap)
-		pixmap.show()
-
-		label = GtkLabel()
-		hbox.pack_start(label)
-		label.set_text("Syncronizing with Host...")
-		label.show()
-
-		config_file = open(self.config[2] + '/config/sync')
-		lines = config_file.readlines()
-		sync_config = []
-		for cline in lines:
-			sync_config.append(string.strip(cline))
-		config_file.close()
-
-		while events_pending(): mainiteration()
-		self.parent.mail.clist.freeze()
-		self.parent.mail.clist.clear()
-		os.system("rsync -e ssh " + sync_config[0] + "@" + sync_config[1] + ":" + sync_config[2] + " " + self.config[2] + "/mail/Inbox")
-		self.parent.mail.read_mbox()
-		os.system("rsync -e ssh " + self.config[2] + "/mail/Outbox " + sync_config[0] + "@" + sync_config[1] + ":" + sync_config[3])
-		os.system("rm " + self.config[2] + "/mail/Outbox")
-		os.system("touch " + self.config[2] + "/mail/Outbox")
-		self.parent.mail.clist.thaw()
-		thedate = os.popen("date").read()
-		thedate = string.strip(thedate)
-		date_file = open(self.config[2] + "/config/lastsync", 'w')
-		date_file.write(thedate)
-		date_file.close()
-		self.parent.today.update_today()
-		window.hide()
-
-	def pop3(self, *args):
-		# our main gtk window
-		window = GtkWindow(WINDOW_TOPLEVEL)
-		window.connect("delete_event", window.hide)
-		window.set_title("Storm - POP3")
-		window.set_usize(200, -1)
-		window.show()
-
-		hbox = GtkHBox()
-		window.add(hbox)
-		hbox.show()
-
-		pix, mask = create_pixmap_from_xpm(self.window, None, self.config[2] + "/pixmaps/send-receive.xpm")
-		pixmap = GtkPixmap(pix, mask)
-		hbox.pack_start(pixmap)
-		pixmap.show()
-
-		label = GtkLabel()
-		hbox.pack_start(label)
-		label.set_text("Retrieving POP3 Messages...")
-		label.show()
-
-		while events_pending(): mainiteration()
-
-		config_file = open(self.config[2] + '/config/pop3', 'r')
-		lines = config_file.readlines()
-		pop3_config = []
-		for cline in lines:
-			pop3_config.append(string.strip(cline))
-		config_file.close()
-
-		pop3 = poplib.POP3(pop3_config[2])
-		pop3.user(pop3_config[0])
-		pop3.pass_(pop3_config[1])
-		messages = pop3.list()
-		if len(messages[1]) != 0:
-			mbox = open(self.config[2] + '/mail/Inbox', 'a')
-			for message in messages[1]:
-				if len(messages[1]) == 0:
-					break
-				tmp_file = open("/tmp/storm.tmp", 'w')
-				message_num = string.split(message)
-				data = pop3.retr(message_num[0])
-				raw_message = ''
-				for line in data[1]:
-					raw_message = raw_message + line + '\n'
-				m_headers = string.split(raw_message, '\n\n', 1)
-				tmp_file.write(m_headers[0])
-				tmp_file.close()
-				tmp_file = open("/tmp/storm.tmp", 'r')
-				# then read the headers
-				header = rfc822.Message(tmp_file)
-				mfrom = header.getheader("From")
-				mdate = header.getheader("Date")
-				tmp_file.close()
-				if string.find(mfrom, '<') != -1:
-					from_re = re.compile('^["]?(.*)["]?[ ]?<(.*)>$')
-					from_parts = re.findall(from_re, mfrom)
-					mfrom = from_parts[0][0]
-				# write the mbox header and the rest of the message to our inbox
-				mbox.write("From " + mfrom + " " + mdate + "\n" + raw_message + "\n")
-				tmp_file.close()
-			mbox.close()
-		pop3.quit()
-
-		self.parent.mail.read_mbox()
-		self.parent.today.update_today()
-		window.hide()
-
-	def smtp(self, *args):
-		# our main gtk window
-		window = GtkWindow(WINDOW_TOPLEVEL)
-		window.connect("delete_event", window.hide)
-		window.set_title("Storm - SMTP")
-		window.set_usize(200, -1)
-		window.show()
-
-		hbox = GtkHBox()
-		window.add(hbox)
-		hbox.show()
-
-		pix, mask = create_pixmap_from_xpm(self.window, None, self.config[2] + "/pixmaps/send-receive.xpm")
-		pixmap = GtkPixmap(pix, mask)
-		hbox.pack_start(pixmap)
-		pixmap.show()
-
-		label = GtkLabel()
-		hbox.pack_start(label)
-		label.set_text("Sending Messages...")
-		label.show()
-
-		while events_pending(): mainiteration()
-
-		config_file = open(self.config[2] + '/config/smtp', 'r')
-		lines = config_file.readlines()
-		smtp_config = []
-		for cline in lines:
-			smtp_config.append(string.strip(cline))
-		config_file.close()
-		while events_pending(): mainiteration()
-
-		file = open(self.config[2] + "/mail/Outbox", 'r')
-		outbox_data = file.read()
-		outbox_data = string.strip(outbox_data)
-		file.close()
-		while events_pending(): mainiteration()
-
-		if outbox_data != '':
-			raw_messages = string.split(outbox_data, "\nFrom ")
-		else:
-			raw_messages = []
-
-		try:
-			smtp = smtplib.SMTP(smtp_config[0])
-			smtp.helo()
-			while events_pending(): mainiteration()
-		except smtplib.SMTPConnectError:
-			label.set_text("Error connecting to SMTP server")
-			time.sleep(1)
-			while events_pending(): mainiteration()
-			window.hide()
-		except:
-			label.set_text("Error connecting to SMTP server")
-			time.sleep(1)
-			while events_pending(): mainiteration()
-			window.hide()
-
-		x = 0
-		for message in raw_messages:
-			message = string.split(message, '\n', 1)
-			message_header = string.split(message[1], "\n\n", 1)
-			# write the headers to a temp file
-			tmp_file = open("/tmp/storm.tmp", 'w')
-			tmp_file.write(message_header[0])
-			tmp_file.close()
-			tmp_file = open("/tmp/storm.tmp", 'r')
-			# then read the headers
-			header = rfc822.Message(tmp_file)
-			mfrom = header.getheader("From")
-			mto = header.getheader("To")
-			tmp_file.close()
-			try:
-				smtp.sendmail(mfrom, mto, message[1])
-				del raw_messages[x]
-				while events_pending(): mainiteration()
-			except smtplib.SMTPRecipientsRefused:
-				label.set_text("Error sending message to " + mto)
-				time.sleep(1)
-				while events_pending(): mainiteration()
-			label.set_text("Sending Messages...")
-			while events_pending(): mainiteration()
-			x = x + 1
-		try:
-			smtp.quit()
-			while events_pending(): mainiteration()
-		except:
-			pass
-
-		file = open(self.config[2] + "/mail/Outbox", 'w')
-		for message in raw_messages:
-			file.write("\nFrom " + message)
-		file.close()
-		self.parent.today.update_today()
-		window.hide()
-
-class Prefs:
-	def __init__(self, parent):
-		self.parent = parent
-		self.config = self.parent.config
-		self.window = self.parent.window
-
-	def show_config(self, *args):
-		# our main gtk window
-		window = GtkWindow(WINDOW_TOPLEVEL)
-		self.config_window = window
-		window.connect("delete_event", window.hide)
-		window.set_title("Storm - Prefs")
-		window.set_usize(200, 300)
-		window.show()
-
-		vbox = GtkVBox()
-		window.add(vbox)
-		vbox.show()
-
-		storm_file = open(os.environ['HOME'] + '/.storm', 'r')
-		raw = storm_file.read()
-		storm_config = string.split(raw, '\n')
-		storm_file.close()
-		self.storm_config = storm_config
-		sync_file = open(self.config[2] + '/config/sync', 'r')
-		raw = sync_file.read()
-		sync_config = string.split(raw, '\n')
-		sync_file.close()
-		pop3_file = open(self.config[2] + '/config/pop3', 'r')
-		raw = pop3_file.read()
-		pop3_config = string.split(raw, '\n')
-		pop3_file.close()
-		smtp_file = open(self.config[2] + '/config/smtp', 'r')
-		raw = smtp_file.read()
-		smtp_config = string.split(raw, '\n')
-		smtp_file.close()
-		sig_file = open(self.config[2] + '/config/sig', 'r')
-		sig = sig_file.read()
-		sig_file.close()
-
-		toolbar = GtkToolbar(ORIENTATION_HORIZONTAL, TOOLBAR_ICONS)
-		toolbar.set_button_relief(RELIEF_NONE)
-		toolbar.set_space_size(10)
-		vbox.pack_start(toolbar, expand=FALSE)
-		toolbar.show()
-		# add the evolution pixmaps to the toolbar
-		pix, mask = create_pixmap_from_xpm(self.window, None, self.config[2] + "/pixmaps/save.xpm")
-		toolbar.append_item(None, 'Save preferences', None, GtkPixmap(pix, mask), self.save_config)
-
-		pix, mask = create_pixmap_from_xpm(self.window, None, self.config[2] + "/pixmaps/cancel.xpm")
-		toolbar.append_item(None, 'Close this window', None, GtkPixmap(pix, mask), window.hide)
-
-		scrolledwindow1=GtkScrolledWindow()
-		vbox.pack_start(scrolledwindow1)
-		scrolledwindow1.set_usize(-1, -1)
-		scrolledwindow1.set_policy(POLICY_NEVER, POLICY_ALWAYS)
-		viewport1=GtkViewport()
-		scrolledwindow1.add_with_viewport(viewport1)
-		viewport1.set_usize(-1, -1)
-		vbox1=GtkVBox()
-		viewport1.add(vbox1)
-		vbox1.set_usize(-1, -1)
-		vbox1.set_homogeneous(FALSE)
-		vbox1.set_spacing(0)
-		frame1=GtkFrame()
-		vbox1.pack_start(frame1, TRUE, TRUE, 0)
-		frame1.set_usize(-1, -1)
-		frame1.set_shadow_type("GTK_SHADOW_ETCHED_IN")
-		frame1.set_label("Mail")
-		frame1.set_label_align(0, -1)
-		table1=GtkTable(2, 3)
-		frame1.add(table1)
-		table1.set_usize(-1, -1)
-		table1.set_row_spacings(0)
-		table1.set_col_spacings(0)
-		label1=GtkLabel()
-		table1.attach(label1, 0, 1, 0, 1, FILL, 0, 0, 0)
-		label1.set_usize(-1, -1)
-		label1.set_text("Name")
-		label1.set_justify(JUSTIFY_CENTER)
-		label1.set_alignment(0, 0.5)
-		label1.set_padding(0, 0)
-		label1.show()
-		self.label1=label1
-		label2=GtkLabel()
-		table1.attach(label2, 0, 1, 1, 2, FILL, 0, 0, 0)
-		label2.set_usize(-1, -1)
-		label2.set_text("Email")
-		label2.set_justify(JUSTIFY_CENTER)
-		label2.set_alignment(0, 0.5)
-		label2.set_padding(0, 0)
-		label2.show()
-		self.label2=label2
-		label11=GtkLabel()
-		table1.attach(label11, 0, 1, 2, 3, FILL, 0, 0, 0)
-		label11.set_usize(-1, -1)
-		label11.set_text("Signature ")
-		label11.set_justify(JUSTIFY_CENTER)
-		label11.set_alignment(0, 0.5)
-		label11.set_padding(0, 0)
-		label11.show()
-		self.label11=label11
-		entry1=GtkEntry()
-		table1.attach(entry1, 1, 2, 0, 1, EXPAND, 0, 0, 0)
-		entry1.set_flags(CAN_FOCUS)
-		entry1.set_usize(110, -1)
-		entry1.set_editable(TRUE)
-		entry1.set_visibility(TRUE)
-		entry1.set_max_length(0)
-		entry1.set_text(storm_config[0])
-		entry1.show()
-		self.entry1=entry1
-		entry2=GtkEntry()
-		table1.attach(entry2, 1, 2, 1, 2, EXPAND, 0, 0, 0)
-		entry2.set_flags(CAN_FOCUS)
-		entry2.set_usize(110, -1)
-		entry2.set_editable(TRUE)
-		entry2.set_visibility(TRUE)
-		entry2.set_max_length(0)
-		entry2.set_text(storm_config[1])
-		entry2.show()
-		self.entry2=entry2
-		scroll1 = GtkScrolledWindow()
-		table1.attach(scroll1, 1, 2, 2, 3)
-		scroll1.set_usize(110, -1)
-		scroll1.set_policy(POLICY_NEVER, POLICY_AUTOMATIC)
-		scroll1.show()
-		self.scroll1 = scroll1
-		text1 = GtkText()
-		scroll1.add(text1)
-		text1.set_usize(-1, -1)
-		text1.set_editable(TRUE)
-		text1.insert(None, None, None,sig)
-		text1.show()
-		self.text1 = text1
-		table1.show()
-		self.table1=table1
-		frame1.show()
-		self.frame1=frame1
-		frame2=GtkFrame()
-		vbox1.pack_start(frame2, TRUE, TRUE, 0)
-		frame2.set_usize(-1, -1)
-		frame2.set_shadow_type("GTK_SHADOW_ETCHED_IN")
-		frame2.set_label("Sync")
-		frame2.set_label_align(0, -1)
-		table2=GtkTable(4, 2)
-		frame2.add(table2)
-		table2.set_usize(-1, -1)
-		table2.set_row_spacings(0)
-		table2.set_col_spacings(0)
-		label3=GtkLabel()
-		table2.attach(label3, 0, 1, 0, 1, FILL, 0, 0, 0)
-		label3.set_usize(-1, -1)
-		label3.set_text("Username")
-		label3.set_justify(JUSTIFY_CENTER)
-		label3.set_alignment(0, 0.5)
-		label3.set_padding(0, 0)
-		label3.show()
-		self.label3=label3
-		label4=GtkLabel()
-		table2.attach(label4, 0, 1, 1, 2, FILL, 0, 0, 0)
-		label4.set_usize(-1, -1)
-		label4.set_text("Host IP")
-		label4.set_justify(JUSTIFY_CENTER)
-		label4.set_alignment(0, 0.5)
-		label4.set_padding(0, 0)
-		label4.show()
-		self.label4=label4
-		label5=GtkLabel()
-		table2.attach(label5, 0, 1, 2, 3, FILL, 0, 0, 0)
-		label5.set_usize(-1, -1)
-		label5.set_text("Incoming")
-		label5.set_justify(JUSTIFY_CENTER)
-		label5.set_alignment(0, 0.5)
-		label5.set_padding(0, 0)
-		label5.show()
-		self.label5=label5
-		label6=GtkLabel()
-		table2.attach(label6, 0, 1, 3, 4, FILL, 0, 0, 0)
-		label6.set_usize(-1, -1)
-		label6.set_text("Outgoing")
-		label6.set_justify(JUSTIFY_CENTER)
-		label6.set_alignment(0, 0.5)
-		label6.set_padding(0, 0)
-		label6.show()
-		self.label6=label6
-		entry4=GtkEntry()
-		table2.attach(entry4, 1, 2, 1, 2, EXPAND, 0, 0, 0)
-		entry4.set_flags(CAN_FOCUS)
-		entry4.set_usize(100, -1)
-		entry4.set_editable(TRUE)
-		entry4.set_visibility(TRUE)
-		entry4.set_max_length(0)
-		entry4.set_text(sync_config[1])
-		entry4.show()
-		self.entry4=entry4
-		entry5=GtkEntry()
-		table2.attach(entry5, 1, 2, 2, 3, EXPAND, 0, 0, 0)
-		entry5.set_flags(CAN_FOCUS)
-		entry5.set_usize(100, -1)
-		entry5.set_editable(TRUE)
-		entry5.set_visibility(TRUE)
-		entry5.set_max_length(0)
-		entry5.set_text(sync_config[2])
-		entry5.show()
-		self.entry5=entry5
-		entry6=GtkEntry()
-		table2.attach(entry6, 1, 2, 3, 4, EXPAND, 0, 0, 0)
-		entry6.set_flags(CAN_FOCUS)
-		entry6.set_usize(100, -1)
-		entry6.set_editable(TRUE)
-		entry6.set_visibility(TRUE)
-		entry6.set_max_length(0)
-		entry6.set_text(sync_config[3])
-		entry6.show()
-		self.entry6=entry6
-		entry3=GtkEntry()
-		table2.attach(entry3, 1, 2, 0, 1, EXPAND, 0, 0, 0)
-		entry3.set_flags(CAN_FOCUS)
-		entry3.set_usize(100, -1)
-		entry3.set_editable(TRUE)
-		entry3.set_visibility(TRUE)
-		entry3.set_max_length(0)
-		entry3.set_text(sync_config[0])
-		entry3.show()
-		self.entry3=entry3
-		table2.show()
-		self.table2=table2
-		frame2.show()
-		self.frame2=frame2
-		frame3=GtkFrame()
-		vbox1.pack_start(frame3, TRUE, TRUE, 0)
-		frame3.set_usize(-1, -1)
-		frame3.set_shadow_type("GTK_SHADOW_ETCHED_IN")
-		frame3.set_label("POP3")
-		frame3.set_label_align(0, -1)
-		table3=GtkTable(3, 2)
-		frame3.add(table3)
-		table3.set_usize(-1, -1)
-		table3.set_row_spacings(0)
-		table3.set_col_spacings(0)
-		label7=GtkLabel()
-		table3.attach(label7, 0, 1, 0, 1, FILL, 0, 0, 0)
-		label7.set_usize(-1, -1)
-		label7.set_text("Username")
-		label7.set_justify(JUSTIFY_CENTER)
-		label7.set_alignment(0, 0.5)
-		label7.set_padding(0, 0)
-		label7.show()
-		self.label7=label7
-		label8=GtkLabel()
-		table3.attach(label8, 0, 1, 1, 2, FILL, 0, 0, 0)
-		label8.set_usize(-1, -1)
-		label8.set_text("Password")
-		label8.set_justify(JUSTIFY_CENTER)
-		label8.set_alignment(0, 0.5)
-		label8.set_padding(0, 0)
-		label8.show()
-		self.label8=label8
-		label9=GtkLabel()
-		table3.attach(label9, 0, 1, 2, 3, FILL, 0, 0, 0)
-		label9.set_usize(-1, -1)
-		label9.set_text("Server")
-		label9.set_justify(JUSTIFY_CENTER)
-		label9.set_alignment(0, 0.5)
-		label9.set_padding(0, 0)
-		label9.show()
-		self.label9=label9
-		entry7=GtkEntry()
-		table3.attach(entry7, 1, 2, 0, 1, EXPAND, 0, 0, 0)
-		entry7.set_flags(CAN_FOCUS)
-		entry7.set_usize(100, -1)
-		entry7.set_editable(TRUE)
-		entry7.set_visibility(TRUE)
-		entry7.set_max_length(0)
-		entry7.set_text(pop3_config[0])
-		entry7.show()
-		self.entry7=entry7
-		entry8=GtkEntry()
-		table3.attach(entry8, 1, 2, 1, 2, EXPAND, 0, 0, 0)
-		entry8.set_flags(CAN_FOCUS)
-		entry8.set_usize(100, -1)
-		entry8.set_editable(TRUE)
-		entry8.set_visibility(TRUE)
-		entry8.set_max_length(0)
-		entry8.set_text(pop3_config[1])
-		entry8.show()
-		self.entry8=entry8
-		entry9=GtkEntry()
-		table3.attach(entry9, 1, 2, 2, 3, EXPAND, 0, 0, 0)
-		entry9.set_flags(CAN_FOCUS)
-		entry9.set_usize(100, -1)
-		entry9.set_editable(TRUE)
-		entry9.set_visibility(TRUE)
-		entry9.set_max_length(0)
-		entry9.set_text(pop3_config[2])
-		entry9.show()
-		self.entry9=entry9
-		table3.show()
-		self.table3=table3
-		frame3.show()
-		self.frame3=frame3
-		frame4=GtkFrame()
-		vbox1.pack_start(frame4, TRUE, TRUE, 0)
-		frame4.set_usize(-1, -1)
-		frame4.set_shadow_type("GTK_SHADOW_ETCHED_IN")
-		frame4.set_label("SMTP")
-		frame4.set_label_align(0, -1)
-		table4=GtkTable(1, 2)
-		frame4.add(table4)
-		table4.set_usize(-1, -1)
-		table4.set_row_spacings(0)
-		table4.set_col_spacings(0)
-		label12=GtkLabel()
-		table4.attach(label12, 0, 1, 0, 1, FILL, 0, 0, 0)
-		label12.set_usize(-1, -1)
-		label12.set_text("Server")
-		label12.set_justify(JUSTIFY_CENTER)
-		label12.set_alignment(0, 0.5)
-		label12.set_padding(0, 0)
-		label12.show()
-		self.label12=label12
-		entry12=GtkEntry()
-		table4.attach(entry12, 1, 2, 0, 1, EXPAND, 0, 0, 0)
-		entry12.set_flags(CAN_FOCUS)
-		entry12.set_usize(100, -1)
-		entry12.set_editable(TRUE)
-		entry12.set_visibility(TRUE)
-		entry12.set_max_length(0)
-		entry12.set_text(smtp_config[0])
-		entry12.show()
-		self.entry12=entry12
-		table4.show()
-		self.table4=table4
-		frame4.show()
-		self.frame4=frame4
-		vbox1.show()
-		self.vbox1=vbox1
-		viewport1.show()
-		self.viewport1=viewport1
-		scrolledwindow1.show()
-		self.scrolledwindow1=scrolledwindow1
-
-	def save_config(self, *args):
-		text1 = self.entry1.get_text()
-		text2 = self.entry2.get_text()
-		text3 = self.entry3.get_text()
-		text4 = self.entry4.get_text()
-		text5 = self.entry5.get_text()
-		text6 = self.entry6.get_text()
-		text7 = self.entry7.get_text()
-		text8 = self.entry8.get_text()
-		text9 = self.entry9.get_text()
-		text12 = self.entry12.get_text()
-		storm_file = open(os.environ['HOME'] + '/.storm', 'w')
-		storm_file.write(text1 + '\n' + text2 + '\n' + self.storm_config[2])
-		storm_file.close()
-		sync_file = open(self.config[2] + '/config/sync', 'w')
-		sync_file.write(text3 + '\n' + text4 + '\n' + text5 + '\n' + text6)
-		sync_file.close()
-		pop3_file = open(self.config[2] + '/config/pop3', 'w')
-		pop3_file.write(text7 + '\n' + text8 + '\n' + text9)
-		pop3_file.close()
-		smtp_file = open(self.config[2] + '/config/smtp', 'w')
-		smtp_file.write(text12)
-		smtp_file.close()
-		sig_file = open(self.config[2] + '/config/sig', 'w')
-		sig = sig_file.write(self.text1.get_chars(0, -1))
-		sig_file.close()
-		self.config_window.hide()
-
-class XmlParse:
-	def __init__(self):
-		pass
-
-	def xml_get_text(self, xml_source, tag):
-		second_level = re.compile('<'+tag+'>([0-9A-Za-z \t\n\r<>\.@\-:/\\\]*?)</'+tag+'>')
-		xml_output = re.findall(second_level, xml_source)
-		return xml_output[0]
-
-	def parse_xml_file(self, xml_file, first_tag):
-		# regexp for xml
-		self.first_level = re.compile('<'+first_tag+'>([0-9A-Za-z \t\n\r<>\.@\-:/\\\-_]*?)</'+first_tag+'>')
-		# contacts xml file
-		self.xml_file = xml_file
-
-		# open and read the xml file
-		file = open(self.xml_file, 'r')
-		xml_source = file.read()
-		file.close()
-
-		# get the data for each contact
-		xml_output = re.findall(self.first_level, xml_source)
-		return xml_output
-
-storm = Storm()
-storm.mainloop()
diff -urN storm_0.3/usr/lib/menu/storm storm_0.5.2/usr/lib/menu/storm
--- storm_0.3/usr/lib/menu/storm	Mon Dec 31 22:27:10 2001
+++ storm_0.5.2/usr/lib/menu/storm	Wed Dec 31 19:00:00 1969
@@ -1 +0,0 @@
-?package(storm):needs="x11" section="PIM" title="Storm" command="/usr/bin/storm"
diff -urN storm_0.3/usr/lib/python2.0/poplib.py storm_0.5.2/usr/lib/python2.0/poplib.py
--- storm_0.3/usr/lib/python2.0/poplib.py	Mon Dec 31 22:14:31 2001
+++ storm_0.5.2/usr/lib/python2.0/poplib.py	Wed Dec 31 19:00:00 1969
@@ -1,322 +0,0 @@
-"""A POP3 client class.
-
-Based on the J. Myers POP3 draft, Jan. 96
-"""
-
-# Author: David Ascher <david_ascher@brown.edu>
-#         [heavily stealing from nntplib.py]
-# Updated: Piers Lauder <piers@cs.su.oz.au> [Jul '97]
-# String method conversion and test jig improvements by ESR, February 2001.
-
-# Example (see the test function at the end of this file)
-
-# Imports
-
-import re, socket
-
-__all__ = ["POP3","error_proto"]
-
-# Exception raised when an error or invalid response is received:
-
-class error_proto(Exception): pass
-
-# Standard Port
-POP3_PORT = 110
-
-# Line terminators (we always output CRLF, but accept any of CRLF, LFCR, LF)
-CR = '\r'
-LF = '\n'
-CRLF = CR+LF
-
-
-class POP3:
-
-    """This class supports both the minimal and optional command sets.
-    Arguments can be strings or integers (where appropriate)
-    (e.g.: retr(1) and retr('1') both work equally well.
-
-    Minimal Command Set:
-            USER name               user(name)
-            PASS string             pass_(string)
-            STAT                    stat()
-            LIST [msg]              list(msg = None)
-            RETR msg                retr(msg)
-            DELE msg                dele(msg)
-            NOOP                    noop()
-            RSET                    rset()
-            QUIT                    quit()
-
-    Optional Commands (some servers support these):
-            RPOP name               rpop(name)
-            APOP name digest        apop(name, digest)
-            TOP msg n               top(msg, n)
-            UIDL [msg]              uidl(msg = None)
-
-    Raises one exception: 'error_proto'.
-
-    Instantiate with:
-            POP3(hostname, port=110)
-
-    NB:     the POP protocol locks the mailbox from user
-            authorization until QUIT, so be sure to get in, suck
-            the messages, and quit, each time you access the
-            mailbox.
-
-            POP is a line-based protocol, which means large mail
-            messages consume lots of python cycles reading them
-            line-by-line.
-
-            If it's available on your mail server, use IMAP4
-            instead, it doesn't suffer from the two problems
-            above.
-    """
-
-
-    def __init__(self, host, port = POP3_PORT):
-        self.host = host
-        self.port = port
-        self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
-        self.sock.connect((self.host, self.port))
-        self.file = self.sock.makefile('rb')
-        self._debugging = 0
-        self.welcome = self._getresp()
-
-
-    def _putline(self, line):
-        #if self._debugging > 1: print '*put*', `line`
-        self.sock.send('%s%s' % (line, CRLF))
-
-
-    # Internal: send one command to the server (through _putline())
-
-    def _putcmd(self, line):
-        #if self._debugging: print '*cmd*', `line`
-        self._putline(line)
-
-
-    # Internal: return one line from the server, stripping CRLF.
-    # This is where all the CPU time of this module is consumed.
-    # Raise error_proto('-ERR EOF') if the connection is closed.
-
-    def _getline(self):
-        line = self.file.readline()
-        #if self._debugging > 1: print '*get*', `line`
-        if not line: raise error_proto('-ERR EOF')
-        octets = len(line)
-        # server can send any combination of CR & LF
-        # however, 'readline()' returns lines ending in LF
-        # so only possibilities are ...LF, ...CRLF, CR...LF
-        if line[-2:] == CRLF:
-            return line[:-2], octets
-        if line[0] == CR:
-            return line[1:-1], octets
-        return line[:-1], octets
-
-
-    # Internal: get a response from the server.
-    # Raise 'error_proto' if the response doesn't start with '+'.
-
-    def _getresp(self):
-        resp, o = self._getline()
-        #if self._debugging > 1: print '*resp*', `resp`
-        c = resp[:1]
-        if c != '+':
-            raise error_proto(resp)
-        return resp
-
-
-    # Internal: get a response plus following text from the server.
-
-    def _getlongresp(self):
-        resp = self._getresp()
-        list = []; octets = 0
-        line, o = self._getline()
-        while line != '.':
-            if line[:2] == '..':
-                o = o-1
-                line = line[1:]
-            octets = octets + o
-            list.append(line)
-            line, o = self._getline()
-        return resp, list, octets
-
-
-    # Internal: send a command and get the response
-
-    def _shortcmd(self, line):
-        self._putcmd(line)
-        return self._getresp()
-
-
-    # Internal: send a command and get the response plus following text
-
-    def _longcmd(self, line):
-        self._putcmd(line)
-        return self._getlongresp()
-
-
-    # These can be useful:
-
-    def getwelcome(self):
-        return self.welcome
-
-
-    def set_debuglevel(self, level):
-        self._debugging = level
-
-
-    # Here are all the POP commands:
-
-    def user(self, user):
-        """Send user name, return response
-
-        (should indicate password required).
-        """
-        return self._shortcmd('USER %s' % user)
-
-
-    def pass_(self, pswd):
-        """Send password, return response
-
-        (response includes message count, mailbox size).
-
-        NB: mailbox is locked by server from here to 'quit()'
-        """
-        return self._shortcmd('PASS %s' % pswd)
-
-
-    def stat(self):
-        """Get mailbox status.
-
-        Result is tuple of 2 ints (message count, mailbox size)
-        """
-        retval = self._shortcmd('STAT')
-        rets = retval.split()
-        #if self._debugging: print '*stat*', `rets`
-        numMessages = int(rets[1])
-        sizeMessages = int(rets[2])
-        return (numMessages, sizeMessages)
-
-
-    def list(self, which=None):
-        """Request listing, return result.
-
-        Result without a message number argument is in form
-        ['response', ['mesg_num octets', ...]].
-
-        Result when a message number argument is given is a
-        single response: the "scan listing" for that message.
-        """
-        if which:
-            return self._shortcmd('LIST %s' % which)
-        return self._longcmd('LIST')
-
-
-    def retr(self, which):
-        """Retrieve whole message number 'which'.
-
-        Result is in form ['response', ['line', ...], octets].
-        """
-        return self._longcmd('RETR %s' % which)
-
-
-    def dele(self, which):
-        """Delete message number 'which'.
-
-        Result is 'response'.
-        """
-        return self._shortcmd('DELE %s' % which)
-
-
-    def noop(self):
-        """Does nothing.
-
-        One supposes the response indicates the server is alive.
-        """
-        return self._shortcmd('NOOP')
-
-
-    def rset(self):
-        """Not sure what this does."""
-        return self._shortcmd('RSET')
-
-
-    def quit(self):
-        """Signoff: commit changes on server, unlock mailbox, close connection."""
-        try:
-            resp = self._shortcmd('QUIT')
-        except error_proto, val:
-            resp = val
-        self.file.close()
-        self.sock.close()
-        del self.file, self.sock
-        return resp
-
-    #__del__ = quit
-
-
-    # optional commands:
-
-    def rpop(self, user):
-        """Not sure what this does."""
-        return self._shortcmd('RPOP %s' % user)
-
-
-    timestamp = re.compile(r'\+OK.*(<[^>]+>)')
-
-    def apop(self, user, secret):
-        """Authorisation
-
-        - only possible if server has supplied a timestamp in initial greeting.
-
-        Args:
-                user    - mailbox user;
-                secret  - secret shared between client and server.
-
-        NB: mailbox is locked by server from here to 'quit()'
-        """
-        m = self.timestamp.match(self.welcome)
-        if not m:
-            raise error_proto('-ERR APOP not supported by server')
-        import md5
-        digest = md5.new(m.group(1)+secret).digest()
-        digest = ''.join(map(lambda x:'%02x'%ord(x), digest))
-        return self._shortcmd('APOP %s %s' % (user, digest))
-
-
-    def top(self, which, howmuch):
-        """Retrieve message header of message number 'which'
-        and first 'howmuch' lines of message body.
-
-        Result is in form ['response', ['line', ...], octets].
-        """
-        return self._longcmd('TOP %s %s' % (which, howmuch))
-
-
-    def uidl(self, which=None):
-        """Return message digest (unique id) list.
-
-        If 'which', result contains unique id for that message
-        in the form 'response mesgnum uid', otherwise result is
-        the list ['response', ['mesgnum uid', ...], octets]
-        """
-        if which:
-            return self._shortcmd('UIDL %s' % which)
-        return self._longcmd('UIDL')
-
-
-if __name__ == "__main__":
-    import sys
-    a = POP3(sys.argv[1])
-    print a.getwelcome()
-    a.user(sys.argv[2])
-    a.pass_(sys.argv[3])
-    a.list()
-    (numMsgs, totalSize) = a.stat()
-    for i in range(1, numMsgs + 1):
-        (header, msg, octets) = a.retr(i)
-        print "Message ", `i`, ':'
-        for line in msg:
-            print '   ' + line
-        print '-----------------------'
-    a.quit()
diff -urN storm_0.3/usr/lib/python2.0/smtplib.py storm_0.5.2/usr/lib/python2.0/smtplib.py
--- storm_0.3/usr/lib/python2.0/smtplib.py	Mon Dec 31 22:14:40 2001
+++ storm_0.5.2/usr/lib/python2.0/smtplib.py	Mon Feb 25 18:01:50 2002
@@ -1,4 +1,4 @@
-#! /usr/bin/env python
+#! /usr/bin/python
 
 '''SMTP/ESMTP client class.
 
@@ -232,9 +232,7 @@
         if self.debuglevel > 0: print 'send:', `str`
         if self.sock:
             try:
-                sendptr = 0
-                while sendptr < len(str):
-                    sendptr = sendptr + self.sock.send(str[sendptr:])
+                self.sock.sendall(str)
             except socket.error:
                 raise SMTPServerDisconnected('Server not connected')
         else:
diff -urN storm_0.3/usr/local/share/storm/config/lastsync storm_0.5.2/usr/local/share/storm/config/lastsync
--- storm_0.3/usr/local/share/storm/config/lastsync	Wed Jan  2 19:30:54 2002
+++ storm_0.5.2/usr/local/share/storm/config/lastsync	Wed Dec 31 19:00:00 1969
@@ -1 +0,0 @@
- 
diff -urN storm_0.3/usr/local/share/storm/config/lastsync~ storm_0.5.2/usr/local/share/storm/config/lastsync~
--- storm_0.3/usr/local/share/storm/config/lastsync~	Wed Jan  2 19:16:08 2002
+++ storm_0.5.2/usr/local/share/storm/config/lastsync~	Wed Dec 31 19:00:00 1969
@@ -1 +0,0 @@
-Mon Dec 31 15:08:09 GMT 2001
diff -urN storm_0.3/usr/local/share/storm/config/pop3 storm_0.5.2/usr/local/share/storm/config/pop3
--- storm_0.3/usr/local/share/storm/config/pop3	Wed Jan  2 19:16:08 2002
+++ storm_0.5.2/usr/local/share/storm/config/pop3	Wed Dec 31 19:00:00 1969
@@ -1,3 +0,0 @@
-userane
-dctanner
-server
\ No newline at end of file
diff -urN storm_0.3/usr/local/share/storm/config/sig storm_0.5.2/usr/local/share/storm/config/sig
--- storm_0.3/usr/local/share/storm/config/sig	Wed Jan  2 19:16:08 2002
+++ storm_0.5.2/usr/local/share/storm/config/sig	Wed Dec 31 19:00:00 1969
@@ -1 +0,0 @@
-dctanner.
\ No newline at end of file
diff -urN storm_0.3/usr/local/share/storm/config/smtp storm_0.5.2/usr/local/share/storm/config/smtp
--- storm_0.3/usr/local/share/storm/config/smtp	Wed Jan  2 19:16:08 2002
+++ storm_0.5.2/usr/local/share/storm/config/smtp	Wed Dec 31 19:00:00 1969
@@ -1 +0,0 @@
-localhost
\ No newline at end of file
diff -urN storm_0.3/usr/local/share/storm/config/sync storm_0.5.2/usr/local/share/storm/config/sync
--- storm_0.3/usr/local/share/storm/config/sync	Wed Jan  2 19:16:08 2002
+++ storm_0.5.2/usr/local/share/storm/config/sync	Wed Dec 31 19:00:00 1969
@@ -1,4 +0,0 @@
-username
-ip
-incomming
-outgoing
\ No newline at end of file
diff -urN storm_0.3/usr/local/share/storm/mail/Inbox storm_0.5.2/usr/local/share/storm/mail/Inbox
--- storm_0.3/usr/local/share/storm/mail/Inbox	Wed Jan  2 19:16:08 2002
+++ storm_0.5.2/usr/local/share/storm/mail/Inbox	Wed Dec 31 19:00:00 1969
@@ -1 +0,0 @@
-
diff -urN storm_0.3/usr/local/share/storm/pixmaps/back.xpm storm_0.5.2/usr/local/share/storm/pixmaps/back.xpm
--- storm_0.3/usr/local/share/storm/pixmaps/back.xpm	Wed Jan  2 19:16:08 2002
+++ storm_0.5.2/usr/local/share/storm/pixmaps/back.xpm	Wed Dec 31 19:00:00 1969
@@ -1,89 +0,0 @@
-/* XPM */
-static char * back_xpm[] = {
-"16 16 70 1",
-" 	c None",
-".	c #234E33",
-"+	c #1E472E",
-"@	c #224B31",
-"#	c #214A30",
-"$	c #C1CECC",
-"%	c #DBEADF",
-"&	c #AFBEBA",
-"*	c #1B422A",
-"=	c #1B4029",
-"-	c #245135",
-";	c #C0D1C9",
-">	c #227D37",
-",	c #90BD9F",
-"'	c #BFD0C8",
-")	c #163321",
-"!	c #173A23",
-"~	c #224B30",
-"{	c #43BA5C",
-"]	c #3BB057",
-"^	c #2F9645",
-"/	c #BDCEC7",
-"(	c #153220",
-"_	c #7BA08A",
-":	c #42B75B",
-"<	c #3FAF57",
-"[	c #143D29",
-"}	c #0B281E",
-"|	c #1E4335",
-"1	c #38774E",
-"2	c #143120",
-"3	c #C2DBCA",
-"4	c #88AB9C",
-"5	c #9DC6AA",
-"6	c #36A34D",
-"7	c #123926",
-"8	c #050E0D",
-"9	c #081914",
-"0	c #0F2417",
-"a	c #CFE0D4",
-"b	c #2A8F3D",
-"c	c #0D3525",
-"d	c #0A1F18",
-"e	c #040B06",
-"f	c #B2D1BC",
-"g	c #3E9951",
-"h	c #259039",
-"i	c #041714",
-"j	c #030C0B",
-"k	c #0D2419",
-"l	c #0A1910",
-"m	c #468166",
-"n	c #5AA77B",
-"o	c #5AB975",
-"p	c #55AE72",
-"q	c #071112",
-"r	c #03090A",
-"s	c #14311F",
-"t	c #000000",
-"u	c #010003",
-"v	c #020005",
-"w	c #03080A",
-"x	c #10211F",
-"y	c #000001",
-"z	c #162D26",
-"A	c #050B0C",
-"B	c #090F10",
-"C	c #142724",
-"D	c #050D0E",
-"E	c #050A0C",
-"                ",
-"                ",
-"        .++     ",
-"      @#$%&*=   ",
-"-    #;%>>>,')  ",
-"!-  ~%>>{]^>>/( ",
-"!_-#%>:<[}}|1>2 ",
-"!345>678    9->0",
-"!ab>6c       d>e",
-"!fgh>i       jkl",
-"!mnop>9      qr ",
-"stuuvuuu    wxy ",
-"           8zA  ",
-"          BCD   ",
-"        yEy     ",
-"                "};
diff -urN storm_0.3/usr/local/share/storm/pixmaps/blank.xpm storm_0.5.2/usr/local/share/storm/pixmaps/blank.xpm
--- storm_0.3/usr/local/share/storm/pixmaps/blank.xpm	Wed Jan  2 19:16:08 2002
+++ storm_0.5.2/usr/local/share/storm/pixmaps/blank.xpm	Wed Dec 31 19:00:00 1969
@@ -1,5 +0,0 @@
-/* XPM */
-static char * back_xpm[] = {
-"16 16 70 1",
-" 	c None",
-"c"};
diff -urN storm_0.3/usr/local/share/storm/pixmaps/cancel.xpm storm_0.5.2/usr/local/share/storm/pixmaps/cancel.xpm
--- storm_0.3/usr/local/share/storm/pixmaps/cancel.xpm	Wed Jan  2 19:16:08 2002
+++ storm_0.5.2/usr/local/share/storm/pixmaps/cancel.xpm	Wed Dec 31 19:00:00 1969
@@ -1,27 +0,0 @@
-/* XPM */
-static char * cancel_xpm[] = {
-"16 16 8 1",
-" 	c None",
-".	c #000000",
-"+	c #C46D74",
-"@	c #9F3C44",
-"#	c #B5444E",
-"$	c #BD5A62",
-"%	c #7B2D34",
-"&	c #8C343C",
-"                ",
-"     ..      .  ",
-"    .+@.    .#. ",
-"    .##.   .$#. ",
-"     .#@. .$#%. ",
-"     .##..$#&.  ",
-"      .####@.   ",
-"      .####.    ",
-"     .$###.     ",
-"    .$####.     ",
-"   .$#&..#&.    ",
-"  .+#&. .@#.    ",
-"  .#&.   .#@.   ",
-"   ..    .@#.   ",
-"          ..    ",
-"                "};
diff -urN storm_0.3/usr/local/share/storm/pixmaps/contacts-add.xpm storm_0.5.2/usr/local/share/storm/pixmaps/contacts-add.xpm
--- storm_0.3/usr/local/share/storm/pixmaps/contacts-add.xpm	Wed Jan  2 19:16:08 2002
+++ storm_0.5.2/usr/local/share/storm/pixmaps/contacts-add.xpm	Wed Dec 31 19:00:00 1969
@@ -1,66 +0,0 @@
-/* XPM */
-static char * contacts_add_xpm[] = {
-"16 16 47 1",
-" 	c None",
-".	c #000000",
-"+	c #FF3838",
-"@	c #EA3333",
-"#	c #BDBDBD",
-"$	c #FFFFFF",
-"%	c #C92C2C",
-"&	c #F8F8F8",
-"*	c #C9B49B",
-"=	c #8E7151",
-"-	c #876E51",
-";	c #BAB1A5",
-">	c #F3F3F3",
-",	c #A88D6E",
-"'	c #DFD0BF",
-")	c #5E432B",
-"!	c #7E6C5B",
-"~	c #EEDFCC",
-"{	c #F4EEE6",
-"]	c #765E45",
-"^	c #736251",
-"/	c #EAE8E3",
-"(	c #FAFAFA",
-"_	c #7590AE",
-":	c #C1665A",
-"<	c #445B71",
-"[	c #D7D6D3",
-"}	c #ADADAD",
-"|	c #4B6983",
-"1	c #9DB8D2",
-"2	c #486481",
-"3	c #314E6C",
-"4	c #667A8D",
-"5	c #5F7C96",
-"6	c #5D7A95",
-"7	c #4D6B87",
-"8	c #3B556D",
-"9	c #344A60",
-"0	c #999999",
-"a	c #9B9B9B",
-"b	c #EDEDED",
-"c	c #C7C7C7",
-"d	c #5D5D5D",
-"e	c #787878",
-"f	c #E0DDD6",
-"g	c #A3A3A3",
-"h	c #918E85",
-"          ....  ",
-"          .++.  ",
-" ..........@+...",
-".#$$$$$$.%@@@++.",
-".$&*=-;$.%%@@@+.",
-".$>,')!$...%@...",
-".$>~{]^$$$.%%./.",
-".$(_:<[$}$..../.",
-".$|1234$$$$$$$/.",
-".$56789$0abc$$/.",
-".$$$$$$$$$$$$$/.",
-".$$d$d$e$a$c$$f.",
-".g///////////fh.",
-" .............. ",
-"                ",
-"                "};
diff -urN storm_0.3/usr/local/share/storm/pixmaps/contacts.xpm storm_0.5.2/usr/local/share/storm/pixmaps/contacts.xpm
--- storm_0.3/usr/local/share/storm/pixmaps/contacts.xpm	Wed Jan  2 19:16:08 2002
+++ storm_0.5.2/usr/local/share/storm/pixmaps/contacts.xpm	Wed Dec 31 19:00:00 1969
@@ -1,69 +0,0 @@
-/* XPM */
-static char * contacts_xpm[] = {
-"16 16 50 1",
-" 	c None",
-".	c #000000",
-"+	c #BDBDBD",
-"@	c #FFFFFF",
-"#	c #A3A3A3",
-"$	c #F8F8F8",
-"%	c #C9B49B",
-"&	c #8E7151",
-"*	c #876E51",
-"=	c #BAB1A5",
-"-	c #FDFDFD",
-";	c #FBFBFB",
-">	c #EAE8E3",
-",	c #F3F3F3",
-"'	c #A88D6E",
-")	c #DFD0BF",
-"!	c #5E432B",
-"~	c #7E6C5B",
-"{	c #313131",
-"]	c #575757",
-"^	c #FCFCFC",
-"/	c #555555",
-"(	c #EEDFCC",
-"_	c #F4EEE6",
-":	c #765E45",
-"<	c #736251",
-"[	c #FAFAFA",
-"}	c #7590AE",
-"|	c #C1665A",
-"1	c #445B71",
-"2	c #D7D6D3",
-"3	c #ADADAD",
-"4	c #9B9B9B",
-"5	c #4B6983",
-"6	c #9DB8D2",
-"7	c #486481",
-"8	c #314E6C",
-"9	c #667A8D",
-"0	c #5F7C96",
-"a	c #5D7A95",
-"b	c #4D6B87",
-"c	c #3B556D",
-"d	c #344A60",
-"e	c #999999",
-"f	c #EDEDED",
-"g	c #C7C7C7",
-"h	c #5D5D5D",
-"i	c #787878",
-"j	c #E0DDD6",
-"k	c #918E85",
-"                ",
-"                ",
-" .............. ",
-".+@@@@@@@@@@@@#.",
-".@$%&*=@-@;@@@>.",
-".@,')!~@{]^/-@>.",
-".@,(_:<@@@@@@@>.",
-".@[}|12@3@43@@>.",
-".@56789@@@@@@@>.",
-".@0abcd@e4fg@@>.",
-".@@@@@@@@@@@@@>.",
-".@@h@h@i@4@g@@j.",
-".#>>>>>>>>>>>jk.",
-" .............. ",
-"                ",
-"                "};
diff -urN storm_0.3/usr/local/share/storm/pixmaps/edit.xpm storm_0.5.2/usr/local/share/storm/pixmaps/edit.xpm
--- storm_0.3/usr/local/share/storm/pixmaps/edit.xpm	Wed Jan  2 19:16:08 2002
+++ storm_0.5.2/usr/local/share/storm/pixmaps/edit.xpm	Wed Dec 31 19:00:00 1969
@@ -1,84 +0,0 @@
-/* XPM */
-static char * 16_edit_xpm[] = {
-"16 16 65 1",
-" 	c None",
-".	c #000000",
-"+	c #FDFDFD",
-"@	c #E2E2E2",
-"#	c #BAA88F",
-"$	c #836B4E",
-"%	c #FEFEFE",
-"&	c #FCFCFC",
-"*	c #FBFBFB",
-"=	c #E5E5E5",
-"-	c #C5A985",
-";	c #DC9E55",
-">	c #9E6233",
-",	c #FFFFFF",
-"'	c #F2F2F2",
-")	c #D9D9D9",
-"!	c #E4E4E4",
-"~	c #C3A783",
-"{	c #DD9D53",
-"]	c #A76631",
-"^	c #EEEEEE",
-"/	c #D4D4D4",
-"(	c #FAFAFA",
-"_	c #7B7B7B",
-":	c #C5AA88",
-"<	c #A86631",
-"[	c #DCDCDC",
-"}	c #F0F0F0",
-"|	c #5E5E5E",
-"1	c #C3A47A",
-"2	c #DD9D52",
-"3	c #A66430",
-"4	c #D5D5D5",
-"5	c #6A6A6A",
-"6	c #C2A174",
-"7	c #DC9B4E",
-"8	c #A96630",
-"9	c #6E6E6E",
-"0	c #D8D8D8",
-"a	c #D6D6D6",
-"b	c #9F9F9F",
-"c	c #BEA686",
-"d	c #DD9D51",
-"e	c #AA682F",
-"f	c #F5F5F5",
-"g	c #DDDDDD",
-"h	c #F9F9F9",
-"i	c #7A7A7A",
-"j	c #BCAC9B",
-"k	c #A86E3F",
-"l	c #797979",
-"m	c #F4F4F4",
-"n	c #F3F3F3",
-"o	c #DFDFDF",
-"p	c #7C7C7C",
-"q	c #4F4F4F",
-"r	c #6C6C6C",
-"s	c #EAEAEA",
-"t	c #F8F8F8",
-"u	c #F6F6F6",
-"v	c #F7F7F7",
-"w	c #EBEBEB",
-"x	c #ECECEC",
-"y	c #E0E0E0",
-"z	c #E8E8E8",
-"       ..    .. ",
-"     ..+@.  .#$.",
-"   ..%+&*=..-;>.",
-" ..,%+')*!.~{]. ",
-".,%%^/)*(_:{<.  ",
-".%%)[**}|123.   ",
-" .+'*}456789.   ",
-" .&*0abcde.fg.  ",
-"  .((hijklfmno. ",
-"  .(hpq.rfmnsg. ",
-"   .tilufm^oo.  ",
-"   .vuufwoo..   ",
-"    .uxyo..     ",
-"    .zg..       ",
-"     ..         ",
-"                "};
diff -urN storm_0.3/usr/local/share/storm/pixmaps/evolution-calender.xpm storm_0.5.2/usr/local/share/storm/pixmaps/evolution-calender.xpm
--- storm_0.3/usr/local/share/storm/pixmaps/evolution-calender.xpm	Wed Jan  2 19:16:08 2002
+++ storm_0.5.2/usr/local/share/storm/pixmaps/evolution-calender.xpm	Wed Dec 31 19:00:00 1969
@@ -1,288 +0,0 @@
-/* XPM */
-static char * evolution_calender_xpm[] = {
-"32 32 253 2",
-"  	c None",
-". 	c #FFFFFF",
-"+ 	c #FEFEFE",
-"@ 	c #FBFBFB",
-"# 	c #CFCFCF",
-"$ 	c #DCDCDC",
-"% 	c #F7F7F7",
-"& 	c #E3E3E3",
-"* 	c #524C56",
-"= 	c #403843",
-"- 	c #D2D2D2",
-"; 	c #F2E3E7",
-"> 	c #DCBEC5",
-", 	c #D0D0D0",
-"' 	c #C4C4C4",
-") 	c #F3F3F3",
-"! 	c #716972",
-"~ 	c #847B8C",
-"{ 	c #B1B2B0",
-"] 	c #8E8E8E",
-"^ 	c #5A565B",
-"/ 	c #464048",
-"( 	c #5D5C5B",
-"_ 	c #888886",
-": 	c #FEFBFC",
-"< 	c #CB8099",
-"[ 	c #DAA2B6",
-"} 	c #A8888D",
-"| 	c #EBE3E3",
-"1 	c #8A848B",
-"2 	c #A29BA7",
-"3 	c #FAFAFB",
-"4 	c #F7F7F8",
-"5 	c #F3F2F4",
-"6 	c #FCFCFC",
-"7 	c #E8E8E8",
-"8 	c #484847",
-"9 	c #AAA9AB",
-"0 	c #2C2530",
-"a 	c #403644",
-"b 	c #B8B6B9",
-"c 	c #595A57",
-"d 	c #D4D4D4",
-"e 	c #F9F9F9",
-"f 	c #F7EEF0",
-"g 	c #D7A8B6",
-"h 	c #C77C95",
-"i 	c #BF6B86",
-"j 	c #DFBFC6",
-"k 	c #FBF9F9",
-"l 	c #AAA6AB",
-"m 	c #372E38",
-"n 	c #BBB5BF",
-"o 	c #ECEBED",
-"p 	c #EFEDEF",
-"q 	c #E0DEE2",
-"r 	c #F5F5F5",
-"s 	c #959595",
-"t 	c #353535",
-"u 	c #8A898B",
-"v 	c #2A232D",
-"w 	c #3E3543",
-"x 	c #A8A6A9",
-"y 	c #3F3F3D",
-"z 	c #696969",
-"A 	c #E6E6E6",
-"B 	c #F7F0F2",
-"C 	c #ECD4DB",
-"D 	c #FDFBFC",
-"E 	c #F4E7EB",
-"F 	c #DDBCC4",
-"G 	c #F6F1F1",
-"H 	c #C7C4C7",
-"I 	c #443A44",
-"J 	c #594C62",
-"K 	c #C9C5CC",
-"L 	c #EEEDF0",
-"M 	c #D8D8D8",
-"N 	c #A7A7A7",
-"O 	c #A4A2A4",
-"P 	c #29222B",
-"Q 	c #3F3441",
-"R 	c #ADAAAE",
-"S 	c #A6A6A6",
-"T 	c #CCCCCC",
-"U 	c #D8D6D8",
-"V 	c #554C55",
-"W 	c #65596E",
-"X 	c #D5D2D8",
-"Y 	c #F8F8F8",
-"Z 	c #F4F4F4",
-"` 	c #EBEBEB",
-" .	c #EAEAEA",
-"..	c #C2C0C2",
-"+.	c #3D3340",
-"@.	c #B9B6BA",
-"#.	c #C2C2C2",
-"$.	c #CECECE",
-"%.	c #E1E1E1",
-"&.	c #F2F2F2",
-"*.	c #F6F6F6",
-"=.	c #E7E6E7",
-"-.	c #645C64",
-";.	c #706577",
-">.	c #DCDADE",
-",.	c #E5E5E5",
-"'.	c #E7E7E7",
-").	c #F1F1F1",
-"!.	c #D6D6D6",
-"~.	c #BCBDBC",
-"{.	c #9B9B9B",
-"].	c #4B4A4A",
-"^.	c #51504F",
-"/.	c #A09F9F",
-"(.	c #FAFAFA",
-"_.	c #EDEDED",
-":.	c #EEEEEE",
-"<.	c #7C767C",
-"[.	c #7C7283",
-"}.	c #BBBBBB",
-"|.	c #E9E9E9",
-"1.	c #CECECD",
-"2.	c #D0D1D0",
-"3.	c #B8B8B7",
-"4.	c #5D595E",
-"5.	c #49444A",
-"6.	c #424142",
-"7.	c #282728",
-"8.	c #C3C3C3",
-"9.	c #FFFEFF",
-"0.	c #ECECEC",
-"a.	c #E0E0E0",
-"b.	c #9A949A",
-"c.	c #2F262E",
-"d.	c #8B8290",
-"e.	c #FBFAFB",
-"f.	c #C5C5C5",
-"g.	c #A5A5A4",
-"h.	c #C4C4C3",
-"i.	c #9C999D",
-"j.	c #2A232B",
-"k.	c #3E3440",
-"l.	c #A29CA3",
-"m.	c #777576",
-"n.	c #696869",
-"o.	c #EFEFEF",
-"p.	c #D1D1D1",
-"q.	c #E2E2E2",
-"r.	c #C1BDC0",
-"s.	c #332932",
-"t.	c #8F8694",
-"u.	c #DFDFDF",
-"v.	c #BFBFBF",
-"w.	c #3C3D3C",
-"x.	c #888888",
-"y.	c #928F93",
-"z.	c #2A232C",
-"A.	c #3E3441",
-"B.	c #979198",
-"C.	c #676666",
-"D.	c #242424",
-"E.	c #F8F8F9",
-"F.	c #F9F9FA",
-"G.	c #DEDBDD",
-"H.	c #362C35",
-"I.	c #B4AEB7",
-"J.	c #E2E0E4",
-"K.	c #F2F1F3",
-"L.	c #EBEAED",
-"M.	c #F1F0F2",
-"N.	c #F6F6F7",
-"O.	c #B0AFAF",
-"P.	c #868387",
-"Q.	c #3F3340",
-"R.	c #8A838B",
-"S.	c #A0A0A0",
-"T.	c #848484",
-"U.	c #DDDDDD",
-"V.	c #F2F2F3",
-"W.	c #F4F4F5",
-"X.	c #433942",
-"Y.	c #C4C0C7",
-"Z.	c #F0EFF1",
-"`.	c #E0DDE2",
-" +	c #EAE9EC",
-".+	c #CFCBD2",
-"++	c #F3F2F3",
-"@+	c #E5E3E7",
-"#+	c #FDFDFD",
-"$+	c #706B70",
-"%+	c #2D262F",
-"&+	c #423643",
-"*+	c #766D77",
-"=+	c #ADADAD",
-"-+	c #C9C9C9",
-";+	c #F5F5F6",
-">+	c #F7F6F7",
-",+	c #625A61",
-"'+	c #56495D",
-")+	c #DEDBDF",
-"!+	c #E9E7EB",
-"~+	c #F8F7F9",
-"{+	c #716C71",
-"]+	c #2E2630",
-"^+	c #817883",
-"/+	c #888187",
-"(+	c #55485C",
-"_+	c #D7D5D8",
-":+	c #D7D4D8",
-"<+	c #D6D4D8",
-"[+	c #C4C0C5",
-"}+	c #ADA8AF",
-"|+	c #9B949C",
-"1+	c #817982",
-"2+	c #4A414A",
-"3+	c #342B35",
-"4+	c #453946",
-"5+	c #645866",
-"6+	c #887F89",
-"7+	c #948C95",
-"8+	c #ADA8AE",
-"9+	c #A9A4A9",
-"0+	c #A8A3A8",
-"a+	c #B6B2B6",
-"b+	c #D3D1D3",
-"c+	c #D4D1D4",
-"d+	c #E3E1E2",
-"e+	c #AEAAAD",
-"f+	c #32292F",
-"g+	c #4F4356",
-"h+	c #493D4F",
-"i+	c #433948",
-"j+	c #3E3542",
-"k+	c #3B323F",
-"l+	c #39303D",
-"m+	c #39303C",
-"n+	c #39303B",
-"o+	c #362D37",
-"p+	c #342C36",
-"q+	c #352D37",
-"r+	c #372E39",
-"s+	c #3B303C",
-"t+	c #453947",
-"u+	c #4D404E",
-"v+	c #463A47",
-"w+	c #413542",
-"x+	c #3F3440",
-"y+	c #382F38",
-"z+	c #362D36",
-"A+	c #352B35",
-"B+	c #372D36",
-"C+	c #382E36",
-"D+	c #372D35",
-"                                                                ",
-"                                                                ",
-"                                                                ",
-"                                                                ",
-"                                                                ",
-"                                                                ",
-"                                                                ",
-"                . . . . . .     . . + + . .                     ",
-"        @ # $ . . . . . % & * = - % . . . ; > , ' ) !           ",
-"      ~ @ # # . . . . . { ] ^ / ( _ . . . : < [ } | 1           ",
-"      2 . 3 4 5 . . 6 7 8 9 0 a b c d e f g h i j k l m         ",
-"      n 6 o p q . . r s t u v w x y z A B C D E F G H I         ",
-"    J K 4 L . . . . 6 M N O P Q R S T ) . . . . . . U V         ",
-"    W X . @ Y Z ` A A 7  ...P +.@.#.$.%.A  .&.Z *.Y =.-.        ",
-"    ;.>.,.'.7 ` ).Y . + !.~.{.].^./.6 . + (.) _.:.:.Z <.        ",
-"    [.o }.|.. . . . . 1.2.3.4.5.6.7.8.. 9.9.. . 0.a._.b.c.      ",
-"    d.e.f.M . . . . 6 g.h.i.j.k.l.m.n.o.@ @ . . Z p.q.r.s.      ",
-"    t.. u.|.. . . . v.w.x.y.z.A.B.C.D.v.E.F.. . .  .. G.H.      ",
-"    I.+ J.K.L.M.N.+ o.O.#.P.z.Q.R.S.T.U.V.W.. . . . . . X.      ",
-"    Y.Z.`. +.+++@++ #+r 0.$+%+&+*+=+-+0.;+>+. . . . . . ,+      ",
-"  '+)+!+~+. . . . . . + #+{+]+&+^+U.0.@ . . . . . . . . /+      ",
-"  (+>+. _+:+<+[+}+}+}+|+1+2+3+4+5+6+7+8+9+0+a+b+b+c+d+. e+f+    ",
-"  g+h+i+w j+k+l+m+n+o+p+q+r+s+t+u+v+w+x+y+z+A+B+B+B+B+C+D+D+    ",
-"                                                                ",
-"                                                                ",
-"                                                                ",
-"                                                                ",
-"                                                                ",
-"                                                                ",
-"                                                                ",
-"                                                                ",
-"                                                                "};
diff -urN storm_0.3/usr/local/share/storm/pixmaps/evolution-contacts.xpm storm_0.5.2/usr/local/share/storm/pixmaps/evolution-contacts.xpm
--- storm_0.3/usr/local/share/storm/pixmaps/evolution-contacts.xpm	Wed Jan  2 19:16:08 2002
+++ storm_0.5.2/usr/local/share/storm/pixmaps/evolution-contacts.xpm	Wed Dec 31 19:00:00 1969
@@ -1,197 +0,0 @@
-/* XPM */
-static char * evolution_contacts_xpm[] = {
-"32 32 162 2",
-"  	c None",
-". 	c #FFFFFF",
-"+ 	c #FDFDFD",
-"@ 	c #D8D8D8",
-"# 	c #AFAFAF",
-"$ 	c #B5B5B5",
-"% 	c #EDEDED",
-"& 	c #CECECE",
-"* 	c #C2C2C2",
-"= 	c #D7D7D7",
-"- 	c #D6D6D6",
-"; 	c #FEFEFE",
-"> 	c #F4F4F4",
-", 	c #E1E1E1",
-"' 	c #D9D9D9",
-") 	c #EFEFEF",
-"! 	c #F8F8F8",
-"~ 	c #D2D2D2",
-"{ 	c #D3D3D3",
-"] 	c #C0C0C0",
-"^ 	c #DEDEDE",
-"/ 	c #CBCBCB",
-"( 	c #E8E8E8",
-"_ 	c #5A5A5A",
-": 	c #595959",
-"< 	c #747474",
-"[ 	c #CFCFCF",
-"} 	c #C7C7C7",
-"| 	c #A8A8A8",
-"1 	c #E4E4E4",
-"2 	c #5C5C5C",
-"3 	c #878787",
-"4 	c #FBFBFB",
-"5 	c #FCFCFC",
-"6 	c #C4C4C4",
-"7 	c #7A7A7A",
-"8 	c #757575",
-"9 	c #4E4E4E",
-"0 	c #4A4A4A",
-"a 	c #505050",
-"b 	c #767676",
-"c 	c #8C9296",
-"d 	c #A8B2B7",
-"e 	c #9FA9AE",
-"f 	c #555859",
-"g 	c #0A0A0A",
-"h 	c #121212",
-"i 	c #141414",
-"j 	c #1E1E1E",
-"k 	c #323232",
-"l 	c #363636",
-"m 	c #464646",
-"n 	c #4A4C4C",
-"o 	c #A9B4B9",
-"p 	c #BFC5C7",
-"q 	c #494C4D",
-"r 	c #1B1C1C",
-"s 	c #393939",
-"t 	c #232323",
-"u 	c #161616",
-"v 	c #000000",
-"w 	c #383C3E",
-"x 	c #CAD0D4",
-"y 	c #565758",
-"z 	c #1B0F12",
-"A 	c #34161C",
-"B 	c #F7F7F7",
-"C 	c #CDCDCD",
-"D 	c #AAAAAA",
-"E 	c #848484",
-"F 	c #656565",
-"G 	c #3F3F3F",
-"H 	c #191919",
-"I 	c #323435",
-"J 	c #C6CACD",
-"K 	c #373A3B",
-"L 	c #311E22",
-"M 	c #4D262E",
-"N 	c #CCCCCC",
-"O 	c #4B4B4B",
-"P 	c #A6A7A7",
-"Q 	c #282929",
-"R 	c #372125",
-"S 	c #502B33",
-"T 	c #290F14",
-"U 	c #0E0E0E",
-"V 	c #7E7E7E",
-"W 	c #4F4F4F",
-"X 	c #392227",
-"Y 	c #4E2A32",
-"Z 	c #34141B",
-"` 	c #4D3036",
-" .	c #45252C",
-"..	c #39161E",
-"+.	c #260E12",
-"@.	c #A4979B",
-"#.	c #CBC3C6",
-"$.	c #F5F3F3",
-"%.	c #F2F2F2",
-"&.	c #5C4046",
-"*.	c #47222B",
-"=.	c #33141B",
-"-.	c #2C1117",
-";.	c #2F1019",
-">.	c #6F585E",
-",.	c #B29CA0",
-"'.	c #6F5056",
-").	c #33141A",
-"!.	c #38161E",
-"~.	c #36161C",
-"{.	c #220C11",
-"].	c #34111A",
-"^.	c #4E151F",
-"/.	c #631824",
-"(.	c #6F1A27",
-"_.	c #781C29",
-":.	c #771B28",
-"<.	c #741B27",
-"[.	c #6F1A26",
-"}.	c #6A1924",
-"|.	c #5E1823",
-"1.	c #684E53",
-"2.	c #421A23",
-"3.	c #31141A",
-"4.	c #2A1016",
-"5.	c #321319",
-"6.	c #1B0A0D",
-"7.	c #B17B86",
-"8.	c #99515D",
-"9.	c #893844",
-"0.	c #7A1E2B",
-"a.	c #791C29",
-"b.	c #711E2B",
-"c.	c #7C5E65",
-"d.	c #38161D",
-"e.	c #34151B",
-"f.	c #32141A",
-"g.	c #250E13",
-"h.	c #230C11",
-"i.	c #C398A2",
-"j.	c #BF8F9A",
-"k.	c #B17983",
-"l.	c #8B3B47",
-"m.	c #742A36",
-"n.	c #66444C",
-"o.	c #35151C",
-"p.	c #2D1217",
-"q.	c #210C11",
-"r.	c #1E0A0E",
-"s.	c #18080B",
-"t.	c #C199A3",
-"u.	c #A2636E",
-"v.	c #832E3B",
-"w.	c #712B37",
-"x.	c #673C45",
-"y.	c #3F1921",
-"z.	c #230D11",
-"A.	c #1C090D",
-"B.	c #86404C",
-"C.	c #66232E",
-"D.	c #472229",
-"E.	c #2F1117",
-"                                                                ",
-"                                                                ",
-"                                                                ",
-"                                                                ",
-"                                        .                       ",
-"                      + . . . . @ # $ % .                       ",
-"                  & * * = - ; > , = ' ) .                       ",
-"                ! ~ { ] ~ ' . > ^ - / (                         ",
-"          _ _ _ : : : : _ _ < [ } | | 1                         ",
-"          _ _ _ _ _ _ _ _ _ 2 3 % 4 5 5                         ",
-"            _ _ _ _ _ _ _ _ _ _ 6 + . .                         ",
-"              _ _ _ _ _ _ _ _ _ 7 1 . . 8 9 9 9 9               ",
-"                  0 9 a _ _ _ _ _ b c d e f 9                   ",
-"                  g h i j j k l m n o p q r                     ",
-"                  s t u v v v v v w x y z A                     ",
-"                B 1 C ] D E F G H I J K L M                     ",
-"            . . . . . . . . . . N O P Q R S T                   ",
-"          . . . . . . . . . . . 9 U V W X Y Z                   ",
-"              . . . . . . . ;           `  ...+.                ",
-"                  @.#.$.. . %.          &.*.=.-.                ",
-"                  ;.;.;.>.,.            '.).!.~.{.              ",
-"                  ;.].^./.(._.:.<.[.}.|.1.2.3.4.5.6.            ",
-"                    7.8.9.0.a.a.a.a.a.b.c.d.e.f.g.h.            ",
-"                        i.j.k.l.a.a.a.m.n.o.p.q.r.s.            ",
-"                              t.u.v.a.w.x.y.z.A.                ",
-"                                  B.a.C.D.E.                    ",
-"                                                                ",
-"                                                                ",
-"                                                                ",
-"                                                                ",
-"                                                                ",
-"                                                                "};
diff -urN storm_0.3/usr/local/share/storm/pixmaps/evolution-inbox.xpm storm_0.5.2/usr/local/share/storm/pixmaps/evolution-inbox.xpm
--- storm_0.3/usr/local/share/storm/pixmaps/evolution-inbox.xpm	Wed Jan  2 19:16:08 2002
+++ storm_0.5.2/usr/local/share/storm/pixmaps/evolution-inbox.xpm	Wed Dec 31 19:00:00 1969
@@ -1,181 +0,0 @@
-/* XPM */
-static char * evolution_inbox_xpm[] = {
-"32 32 146 2",
-"  	c None",
-". 	c #CDCDCD",
-"+ 	c #CACACA",
-"@ 	c #E3E3E3",
-"# 	c #E7E7E7",
-"$ 	c #EAEAEA",
-"% 	c #F0F0F0",
-"& 	c #F7F7F7",
-"* 	c #FAFAFA",
-"= 	c #FBFBFB",
-"- 	c #FDFDFD",
-"; 	c #FFFFFF",
-"> 	c #FEFEFE",
-", 	c #F9F9F9",
-"' 	c #F8F8F8",
-") 	c #F3F3F3",
-"! 	c #979797",
-"~ 	c #FCFCFC",
-"{ 	c #F6F6F6",
-"] 	c #F1F1F1",
-"^ 	c #EFEFEF",
-"/ 	c #EEEEEE",
-"( 	c #ECECEC",
-"_ 	c #E5E5E5",
-": 	c #A7A7A7",
-"< 	c #5D5D5D",
-"[ 	c #F2F2F2",
-"} 	c #EBEBEB",
-"| 	c #E9E9E9",
-"1 	c #D8D8D8",
-"2 	c #848484",
-"3 	c #444444",
-"4 	c #404040",
-"5 	c #A9A9A9",
-"6 	c #BDBDBD",
-"7 	c #F5F5F5",
-"8 	c #EDEDED",
-"9 	c #DEDEDE",
-"0 	c #CCCCCC",
-"a 	c #797979",
-"b 	c #414141",
-"c 	c #5A5A5A",
-"d 	c #3D3D3D",
-"e 	c #BEBEBE",
-"f 	c #999999",
-"g 	c #9D9D9D",
-"h 	c #C1C1C1",
-"i 	c #E0E0E0",
-"j 	c #E4E4E4",
-"k 	c #E2E2E2",
-"l 	c #C5C5C5",
-"m 	c #4F4F4F",
-"n 	c #1F1F1F",
-"o 	c #7E7E7E",
-"p 	c #8C8C8C",
-"q 	c #BABABA",
-"r 	c #DFDFDF",
-"s 	c #898989",
-"t 	c #9F9F9F",
-"u 	c #C9C9C9",
-"v 	c #E1E1E1",
-"w 	c #DCDCDC",
-"x 	c #DADADA",
-"y 	c #D3D3D3",
-"z 	c #BBBBBB",
-"A 	c #626262",
-"B 	c #363636",
-"C 	c #676767",
-"D 	c #6B6B6B",
-"E 	c #E8E8E8",
-"F 	c #909090",
-"G 	c #686868",
-"H 	c #777777",
-"I 	c #D4D4D4",
-"J 	c #DBDBDB",
-"K 	c #D6D6D6",
-"L 	c #A8A8A8",
-"M 	c #666666",
-"N 	c #8D8D8D",
-"O 	c #B1B1B1",
-"P 	c #808080",
-"Q 	c #AFAFAF",
-"R 	c #878787",
-"S 	c #646464",
-"T 	c #6F6F6F",
-"U 	c #929292",
-"V 	c #D1D1D1",
-"W 	c #5B5B5B",
-"X 	c #494949",
-"Y 	c #9C9C9C",
-"Z 	c #B2B2B2",
-"` 	c #B7B7B7",
-" .	c #2A2A2A",
-"..	c #E6E6E6",
-"+.	c #B8B8B8",
-"@.	c #A0A0A0",
-"#.	c #B6B6B6",
-"$.	c #9B9B9B",
-"%.	c #838383",
-"&.	c #7C7C7C",
-"*.	c #939393",
-"=.	c #787878",
-"-.	c #949494",
-";.	c #A3A3A3",
-">.	c #C0C0C0",
-",.	c #AAAAAA",
-"'.	c #3B3B3B",
-").	c #CECECE",
-"!.	c #BCBCBC",
-"~.	c #C6C6C6",
-"{.	c #B4B4B4",
-"].	c #B9B9B9",
-"^.	c #C2C2C2",
-"/.	c #585858",
-"(.	c #D7D7D7",
-"_.	c #CBCBCB",
-":.	c #CFCFCF",
-"<.	c #9E9E9E",
-"[.	c #AEAEAE",
-"}.	c #B0B0B0",
-"|.	c #F4F4F4",
-"1.	c #D9D9D9",
-"2.	c #D2D2D2",
-"3.	c #C8C8C8",
-"4.	c #959595",
-"5.	c #8F8F8F",
-"6.	c #6A6A6A",
-"7.	c #DDDDDD",
-"8.	c #C7C7C7",
-"9.	c #C4C4C4",
-"0.	c #6E6E6E",
-"a.	c #D0D0D0",
-"b.	c #C3C3C3",
-"c.	c #ADADAD",
-"d.	c #8E8E8E",
-"e.	c #707070",
-"f.	c #2C2C2C",
-"g.	c #A2A2A2",
-"h.	c #616161",
-"i.	c #D5D5D5",
-"j.	c #BFBFBF",
-"k.	c #4B4B4B",
-"l.	c #383838",
-"m.	c #B3B3B3",
-"n.	c #767676",
-"o.	c #A1A1A1",
-"                                                                ",
-"                                                                ",
-"                                                                ",
-"                                                                ",
-"                                                                ",
-"                                                . +             ",
-"        @ # $ % & * = - ; ; ; > - - = * * * , , ' ) !           ",
-"    ; ; ; ; ; ; ; ; > - ~ = * , { { ) ] ^ / ( $ _ : <           ",
-"    ^ ~ ; ; > > ~ = , ' { { ) [ % ^ ( } | # @ 1 2 3 4           ",
-"    5 6 } - = * ' { 7 ) ] ] / 8 } $ # _ @ 9 0 a b c d           ",
-"    6 e f g h i 7 ) % 8 ( } | # j k i 9 1 l m n o p c           ",
-"    q , r 6 s p t u [ % # _ @ v r w x y z A B C ! t D           ",
-"      = & ] E + F G H g I @ v J K I + L B b M N : O P           ",
-"      ^ , ) ^ _ I Q R S T U e x 9 V t W X D o Y Z ` N  .        ",
-"      w ' [ / ( ..w +.@.#.$.%.&.N *.m =.f -.U ;.z >.,.'.        ",
-"      ).& % 8 } | j V !.# x + Z U &.2 @.q ~.{.@.].^.Z /.        ",
-"        7 ) } | # j u v # 9 (.y u e q h _._.:.>.<.[.}.S         ",
-"        |.) | # _ 1.K $ r J 1 K 2.).u _._.3.l 3.z 4.5.6.        ",
-"        = [ .._ 7.. $ v J 1 K I V :.)._.8.9.h 6 z !.&.0.        ",
-"        $ [ | @ a.7...x (.K I 2.:.0 u 3.b.q O c.Y d.e.f.        ",
-"        8.) $ I I | x (.I y V :.8.b.!.c.g.N M h.                ",
-"        @.7 ..+ # i (.i.2.. b.j.}.Y p k.l.                      ",
-"          ( i.x r a.0 e m.g.n.0.                                ",
-"          ).u (.~.z {.a b                                       ",
-"          o.g.=.C                                               ",
-"                                                                ",
-"                                                                ",
-"                                                                ",
-"                                                                ",
-"                                                                ",
-"                                                                ",
-"                                                                "};
diff -urN storm_0.3/usr/local/share/storm/pixmaps/evolution-notes.xpm storm_0.5.2/usr/local/share/storm/pixmaps/evolution-notes.xpm
--- storm_0.3/usr/local/share/storm/pixmaps/evolution-notes.xpm	Wed Jan  2 19:16:08 2002
+++ storm_0.5.2/usr/local/share/storm/pixmaps/evolution-notes.xpm	Wed Dec 31 19:00:00 1969
@@ -1,357 +0,0 @@
-/* XPM */
-static char * evolution_notes_xpm[] = {
-"32 32 322 2",
-"  	c None",
-". 	c #F8D932",
-"+ 	c #FADD3C",
-"@ 	c #FADE44",
-"# 	c #FBE14D",
-"$ 	c #FBE255",
-"% 	c #F8E15A",
-"& 	c #F9DA2F",
-"* 	c #FADC36",
-"= 	c #FADD3E",
-"- 	c #E9CF41",
-"; 	c #FADF4D",
-"> 	c #EDD652",
-", 	c #FBE45E",
-"' 	c #FBE667",
-") 	c #FCE76F",
-"! 	c #FCE878",
-"~ 	c #FAE880",
-"{ 	c #FAE986",
-"] 	c #FAEA8D",
-"^ 	c #F5D62E",
-"/ 	c #F5D732",
-"( 	c #FADB34",
-"_ 	c #FADC3A",
-": 	c #FADE42",
-"< 	c #DEC540",
-"[ 	c #C6B240",
-"} 	c #E4CD50",
-"| 	c #C7B44D",
-"1 	c #E1CE5E",
-"2 	c #E6D369",
-"3 	c #F9E77D",
-"4 	c #FBEB8C",
-"5 	c #FCED93",
-"6 	c #FCED9B",
-"7 	c #FAEB9A",
-"8 	c #DECC82",
-"9 	c #F8D92F",
-"0 	c #F7D930",
-"a 	c #F8D933",
-"b 	c #DEC32F",
-"c 	c #DDC231",
-"d 	c #FBDD3C",
-"e 	c #FBDE43",
-"f 	c #CCB63D",
-"g 	c #9D8C32",
-"h 	c #ECD34E",
-"i 	c #9F8F38",
-"j 	c #B8A849",
-"k 	c #C5B557",
-"l 	c #CBBC66",
-"m 	c #D4C674",
-"n 	c #FBEC96",
-"o 	c #FCEE9F",
-"p 	c #E2CF81",
-"q 	c #AB8B43",
-"r 	c #7F5915",
-"s 	c #F9DA2E",
-"t 	c #FADB32",
-"u 	c #FADB37",
-"v 	c #DEC432",
-"w 	c #D5BB32",
-"x 	c #AB9629",
-"y 	c #A6922B",
-"z 	c #BBA635",
-"A 	c #C9B33F",
-"B 	c #AA983A",
-"C 	c #A7963B",
-"D 	c #DAC554",
-"E 	c #D1BF56",
-"F 	c #FAE772",
-"G 	c #FAE97E",
-"H 	c #F6E686",
-"I 	c #E9D781",
-"J 	c #BFA962",
-"K 	c #917633",
-"L 	c #583908",
-"M 	c #593A08",
-"N 	c #603E09",
-"O 	c #6C460A",
-"P 	c #85550C",
-"Q 	c #84560C",
-"R 	c #F7E160",
-"S 	c #FBDD3A",
-"T 	c #FBDD3D",
-"U 	c #C1AB30",
-"V 	c #968526",
-"W 	c #9B892A",
-"X 	c #BEA937",
-"Y 	c #F8DD50",
-"Z 	c #FAE057",
-"` 	c #EAD35B",
-" .	c #E4D15E",
-"..	c #F6E26C",
-"+.	c #F1DB66",
-"@.	c #B19232",
-"#.	c #A88D35",
-"$.	c #987E32",
-"%.	c #806523",
-"&.	c #4F3607",
-"*.	c #4B3206",
-"=.	c #4A3006",
-"-.	c #4F3407",
-";.	c #65410A",
-">.	c #7E520C",
-",.	c #A87D0E",
-"'.	c #F2E083",
-").	c #EBDA80",
-"!.	c #F2D94C",
-"~.	c #F6D83C",
-"{.	c #EDD03C",
-"].	c #EED344",
-"^.	c #FAE050",
-"/.	c #FAE25A",
-"(.	c #FAE365",
-"_.	c #FAE46C",
-":.	c #FAE675",
-"<.	c #F8E578",
-"[.	c #DAC45E",
-"}.	c #91751F",
-"|.	c #75580D",
-"1.	c #644A0B",
-"2.	c #4E3607",
-"3.	c #432C06",
-"4.	c #412B06",
-"5.	c #4B3106",
-"6.	c #523507",
-"7.	c #624009",
-"8.	c #7B570A",
-"9.	c #A7800D",
-"0.	c #B7900F",
-"a.	c #EEDE85",
-"b.	c #F1E082",
-"c.	c #E9D77A",
-"d.	c #E7D266",
-"e.	c #E5C027",
-"f.	c #E8C02B",
-"g.	c #E8C843",
-"h.	c #EBD158",
-"i.	c #E9D164",
-"j.	c #E7D168",
-"k.	c #DDC766",
-"l.	c #AA903C",
-"m.	c #7E6319",
-"n.	c #644A0A",
-"o.	c #573D08",
-"p.	c #493106",
-"q.	c #412A05",
-"r.	c #402A05",
-"s.	c #452D06",
-"t.	c #4C3107",
-"u.	c #5B3B08",
-"v.	c #624108",
-"w.	c #8E6A0B",
-"x.	c #A57D0C",
-"y.	c #A27C0C",
-"z.	c #9E780C",
-"A.	c #E4D482",
-"B.	c #F0DF82",
-"C.	c #F4E387",
-"D.	c #EEDC7D",
-"E.	c #E8D679",
-"F.	c #D8BA47",
-"G.	c #C39718",
-"H.	c #B08010",
-"I.	c #93660C",
-"J.	c #80590B",
-"K.	c #6E4B09",
-"L.	c #644408",
-"M.	c #583A08",
-"N.	c #513607",
-"O.	c #523607",
-"P.	c #503507",
-"Q.	c #4C3207",
-"R.	c #5E3D09",
-"S.	c #664409",
-"T.	c #8D660B",
-"U.	c #A07B0C",
-"V.	c #9E770B",
-"W.	c #98720B",
-"X.	c #936F0A",
-"Y.	c #AA840D",
-"Z.	c #F0DD80",
-"`.	c #F1DF81",
-" +	c #EEDC7F",
-".+	c #E7D67C",
-"++	c #D9C261",
-"@+	c #BF9322",
-"#+	c #AA7810",
-"$+	c #97680D",
-"%+	c #865B0B",
-"&+	c #7B520B",
-"*+	c #724B0A",
-"=+	c #6B460A",
-"-+	c #68440A",
-";+	c #71490A",
-">+	c #7D570B",
-",+	c #9D780D",
-"'+	c #A27B0C",
-")+	c #9B750B",
-"!+	c #8E6C09",
-"~+	c #A17D0C",
-"{+	c #97790C",
-"]+	c #E8D77E",
-"^+	c #EDDB7E",
-"/+	c #EFD