--- ./configure.ac	2006-12-21 14:37:32.000000000 +0800
+++ /home/walte/Projects/ircp-tray/./configure.ac	2006-12-23 10:57:50.000000000 +0800
@@ -2,11 +2,11 @@
 
 AM_CONFIG_HEADER(config.h)
 
-AM_INIT_AUTOMAKE(ircp-tray, 0.7.0)
+AM_INIT_AUTOMAKE(ircp-tray, 0.7)
 
 AM_MAINTAINER_MODE
 
-AC_PROG_INTLTOOL([0.30])
+IT_PROG_INTLTOOL([0.35.0])
 
 AC_PROG_CC
 AC_ISC_POSIX
@@ -32,8 +32,6 @@
 
 #AC_DEFINE_UNQUOTED(GNOME_ICONDIR, "${prefix}/share/pixmaps", "definition of GNOME_ICONDIR")
 
-#ALL_LINGUAS="zh_CN"
-
 GETTEXT_PACKAGE=ircp-tray
 AC_SUBST(GETTEXT_PACKAGE)
 AM_GLIB_GNU_GETTEXT
--- ./ChangeLog	2006-12-21 14:37:32.000000000 +0800
+++ /home/walte/Projects/ircp-tray/./ChangeLog	2006-12-23 11:02:51.000000000 +0800
@@ -1,3 +1,10 @@
+2006-12-06 Yang Hong <yanghong@ccoss.com.cn>
+
+	* Merged Blue's branche -r3:11 for code clean
+	* Added i18n in sendfile.[ch]
+	* New translation: zh_CN
+	* Imported new eggtrayicon for transparent support from libegg cvs
+
 2006-12-21 Xin Zhen <xinzhen@pub.minidns.net>
 	* "Quit" menu item added
 	* Crash on showing log when no log available. Fixed
--- ./src/sendfile.h	2005-03-19 03:22:39.000000000 +0800
+++ /home/walte/Projects/ircp-tray/./src/sendfile.h	2006-12-23 10:18:52.000000000 +0800
@@ -2,13 +2,13 @@
 
 void sendfile_onclick(GtkMenuItem *menuitem, gpointer user_data);
 void sendfile_launch_dialog();
-void        sendfile_ondragdrop                  (GtkWidget *widget,
-                                            GdkDragContext *drag_context,
-                                            gint x,
-                                            gint y,
-                                            GtkSelectionData *data,
-                                            guint info,
-                                            guint time,
-                                            gpointer user_data);
+void sendfile_ondragdrop (GtkWidget *widget,
+		GdkDragContext *drag_context,
+		gint x,
+		gint y,
+		GtkSelectionData *data,
+		guint info,
+		guint time,
+		gpointer user_data);
 
 void version_onclick(GtkMenuItem *menuitem, gpointer user_data);
--- ./src/eggtrayicon.h	2005-03-19 03:22:39.000000000 +0800
+++ /home/walte/Projects/ircp-tray/./src/eggtrayicon.h	2006-12-23 10:11:23.000000000 +0800
@@ -22,7 +22,9 @@
 #define __EGG_TRAY_ICON_H__
 
 #include <gtk/gtkplug.h>
+#ifdef GDK_WINDOWING_X11
 #include <gdk/gdkx.h>
+#endif
 
 G_BEGIN_DECLS
 
@@ -42,12 +44,13 @@
 
   guint stamp;
   
+#ifdef GDK_WINDOWING_X11
   Atom selection_atom;
   Atom manager_atom;
   Atom system_tray_opcode_atom;
   Atom orientation_atom;
   Window manager_window;
-
+#endif
   GtkOrientation orientation;
 };
 
--- ./src/savefiledlg.c	2006-12-21 14:34:58.000000000 +0800
+++ /home/walte/Projects/ircp-tray/./src/savefiledlg.c	2006-12-23 09:35:15.000000000 +0800
@@ -26,11 +26,6 @@
 	GtkWidget *widget, *box;
 	char* path;
 
-	/*dialog->dialogbox = gtk_dialog_new_with_buttons ("Incoming File Transfer Request",
-                                         NULL,
-                                         GTK_DIALOG_MODAL,
-                                         GTK_STOCK_OK,GTK_RESPONSE_OK,
-                                         NULL);*/
 	dialog->dialogbox = gtk_message_dialog_new(NULL,
 					GTK_DIALOG_MODAL,
 					GTK_MESSAGE_QUESTION,
@@ -38,14 +33,6 @@
 					"Incoming File Transfer Request");
 
 	gtk_window_set_title(GTK_WINDOW(dialog->dialogbox), titlebar);
-	//gtk_container_set_border_width (GTK_CONTAINER (dialog->dialogbox), 10);
-	//gtk_box_set_spacing(GTK_BOX(GTK_DIALOG(dialog->dialogbox)->vbox), 10);
-
-
-	//widget = gtk_label_new("A remote IrDA device is attempting to send you a file. Do you want to accept it?");
-	//gtk_label_set_line_wrap(widget, TRUE);
-	//gtk_container_add (GTK_CONTAINER (GTK_DIALOG(dialog->dialogbox)->vbox),
-        //              widget);
 
 	gtk_dialog_set_default_response(GTK_DIALOG(dialog->dialogbox),
 						GTK_RESPONSE_OK);
--- ./src/app.c	2006-12-08 16:58:05.000000000 +0800
+++ /home/walte/Projects/ircp-tray/./src/app.c	2006-12-23 10:51:56.000000000 +0800
@@ -20,7 +20,7 @@
 
 #include <config.h>
 #include "app.h"
-//#include "menus.h"
+#include <glib/gi18n.h>
 #include <gtk/gtkmenu.h>
 #include "eggtrayicon.h"
 #include "resources.h"
@@ -39,94 +39,50 @@
 static GtkWidget * show_device_info_cb( void *data );
 static GtkWidget * show_log_file( void *data );
 
-#define _(a) a
-
 GtkWidget* 
 ircptray_app_new(const gchar* message, 
-              const gchar* geometry,
-              GSList* greet)
+		const gchar* geometry,
+		GSList* greet)
 {
-  GtkWidget* app = NULL;
-  GtkWidget* button;
-  GtkWidget* label;
-  GtkWidget* status;
-  GtkWidget* frame;
-
-  /*** gnomehello-widgets */
-  //app = gnome_app_new(PACKAGE, _("IRCP Tray"));
-
-  frame = gtk_frame_new(NULL);
-
-  //button = gtk_button_new();
-
-  //label  = gtk_label_new(message ? message : _("Hello, World!"));
-
-  //gtk_window_set_policy(GTK_WINDOW(app), TRUE, TRUE, FALSE);
-  //gtk_window_set_default_size(GTK_WINDOW(app), 250, 350);
-  //gtk_window_set_wmclass(GTK_WINDOW(app), "ircptray", "IRCP-Tray");
-
-  gtk_frame_set_shadow_type(GTK_FRAME(frame), GTK_SHADOW_IN);
-  gtk_frame_set_label(GTK_FRAME(frame), PACKAGE);
-
-  //gtk_container_set_border_width(GTK_CONTAINER(button), 10);
-
-  //gtk_container_add(GTK_CONTAINER(button), label);
-
-  //gtk_container_add(GTK_CONTAINER(frame), button);
-
-  //gnome_app_set_contents(GNOME_APP(app), frame);
-
-  //status = gnome_appbar_new(FALSE, TRUE, GNOME_PREFERENCES_NEVER);
-
-  //gnome_app_set_statusbar(GNOME_APP(app), status);
+	GtkWidget* app = NULL;
+	GtkWidget* button;
+	GtkWidget* label;
+	GtkWidget* status;
+	GtkWidget* frame;
 
-  //hello_install_menus_and_toolbar(app);
+	frame = gtk_frame_new(NULL);
 
-  /* gnomehello-widgets ***/
-  
-  /*** gnomehello-signals */
-  /*g_signal_connect(G_OBJECT(app),
-                   "delete_event",
-                   G_CALLBACK(delete_event_cb),
-                   NULL);*/
+	gtk_frame_set_shadow_type(GTK_FRAME(frame), GTK_SHADOW_IN);
+	gtk_frame_set_label(GTK_FRAME(frame), PACKAGE);
 
-  /*g_signal_connect(G_OBJECT(button),
-                   "clicked",
-                   G_CALLBACK(button_click_cb),
-                   label);*/
-                   
-  /* gnomehello-signals ***/
-
-  /* gnomehello-geometry ***/
-  if (geometry != NULL) 
-    {
-      if (!gtk_window_parse_geometry (GTK_WINDOW(app), geometry)) 
-        {
-          g_error(_("Could not parse geometry string `%s'"), geometry);
-        }
-    }
+	if (geometry != NULL) 
+	{
+		if (!gtk_window_parse_geometry (GTK_WINDOW(app), geometry)) 
+		{
+			g_error(_("Could not parse geometry string `%s'"), geometry);
+		}
+	}
 
-  app_list = g_slist_prepend(app_list, app);
+	app_list = g_slist_prepend(app_list, app);
 
 	//sanity check
 	if(!irda_check()) //no irda support
 	{
 		GtkWidget* dialog;
 
-		dialog = gtk_message_dialog_new(NULL,
-						GTK_DIALOG_MODAL,
-						GTK_MESSAGE_ERROR,
-						GTK_BUTTONS_CLOSE,
-						"You don't seem to have IrDA support in your kernel, quit.",
-						NULL);
+		dialog = gtk_message_dialog_new (NULL,
+				GTK_DIALOG_MODAL,
+				GTK_MESSAGE_ERROR,
+				GTK_BUTTONS_CLOSE,
+				"You don't seem to have IrDA support in your kernel, quit.",
+				NULL);
+
 		gtk_dialog_run(GTK_DIALOG(dialog));
 		return dialog;
 	}
 
 	trayicon_init();
-
 	recvfile_listen(TRUE);
-	
 	discoverer_startpoll();
 
 	return app;
@@ -141,41 +97,38 @@
 static char* TrayIconFileName = ICON_TRAY_INACTIVE;
 
 static gboolean trayicon_onclick(GtkWidget *widget,
-                                            GdkEventButton *event,
-                                            gpointer user_data)
+                                            		  GdkEventButton *event,
+                                            		  gpointer user_data)
 {
 	if(event->button == 3) //right click
 		gtk_menu_popup(GTK_MENU(user_data), NULL, NULL, NULL,
-				NULL, event->button,
-				gtk_get_current_event_time());
+									 NULL, event->button,
+									 gtk_get_current_event_time());
 	else if(event->button == 1) //left click
 		sendfile_launch_dialog();
 }
 
-static GtkTargetEntry target_table[] =
-{
-    {"text/uri-list",	0, 0},
-    //{"STRING",		0, 1},
-    //{"text/plain",	0, 2}
-};
+static GtkTargetEntry target_table[] ={"text/uri-list",0, 0};
 
 static const guint n_targets = sizeof(target_table) / sizeof(target_table[0]);
 
 static void trayicon_init()
 {
-    GtkWidget* icon;
-    GtkWidget* label;
-    GtkWidget* menu, *menuitem;
-    GtkWidget* eventbox;
-    unsigned long rc;
-                                                                            
-    TrayIcon = egg_tray_icon_new("ircp-tray");
-                                                                                
+	GtkWidget* icon;
+	GtkWidget* label;
+	GtkWidget* menu, *menuitem;
+	GtkWidget* eventbox;
+	unsigned long rc;
+
+
+
+	TrayIcon = egg_tray_icon_new(_("ircp-tray"));
+
 	//building icon popup menu
 	menu = gtk_menu_new();
 	menuitem = gtk_menu_item_new();
 	label = gtk_label_new("");
-	gtk_label_set_markup(GTK_LABEL(label), "<b>Transfer Files...</b>");
+	gtk_label_set_markup(GTK_LABEL(label), _("<b>Transfer Files...</b>"));
 	gtk_container_add(GTK_CONTAINER(menuitem), label);
 	g_signal_connect(G_OBJECT(menuitem),
 			"activate",
@@ -183,32 +136,32 @@
 			NULL);
 	gtk_container_add(GTK_CONTAINER(menu), menuitem);
 
-	IconPopMenuItem = menuitem = gtk_menu_item_new_with_label("Get Devices Info...");
+	IconPopMenuItem = menuitem = gtk_menu_item_new_with_label(_("Get Devices Info..."));
 	gtk_container_add(GTK_CONTAINER(menu), menuitem);
 	g_signal_connect(G_OBJECT(menuitem),
-                        "activate",
-                        G_CALLBACK(show_device_info_cb),
-                        NULL);
+			"activate",
+			G_CALLBACK(show_device_info_cb),
+			NULL);
 	gtk_widget_set_sensitive(menuitem, FALSE);
 
-	menuitem = gtk_menu_item_new_with_label("Show logs...");
+	menuitem = gtk_menu_item_new_with_label(_("Show logs..."));
 	gtk_container_add(GTK_CONTAINER(menu), menuitem);
-        g_signal_connect(G_OBJECT(menuitem),
-                        "activate",
-                        G_CALLBACK(show_log_file),
-                        NULL);
+	g_signal_connect(G_OBJECT(menuitem),
+			"activate",
+			G_CALLBACK(show_log_file),
+			NULL);
 
 	menuitem = gtk_separator_menu_item_new();
 	gtk_container_add(GTK_CONTAINER(menu), menuitem);
 
-	menuitem = gtk_menu_item_new_with_label("About version "VERSION);
+	menuitem = gtk_menu_item_new_with_label(_("About"));
 	gtk_container_add(GTK_CONTAINER(menu), menuitem);
 	g_signal_connect(G_OBJECT(menuitem),
 			"activate",
 			G_CALLBACK(version_onclick),
 			NULL);
 
-	menuitem = gtk_menu_item_new_with_label("Quit");
+	menuitem = gtk_menu_item_new_with_label(_("Quit"));
 	gtk_container_add(GTK_CONTAINER(menu), menuitem);
 	g_signal_connect(G_OBJECT(menuitem),
 			"activate",
@@ -222,9 +175,9 @@
 	eventbox = gtk_event_box_new();
 	gtk_container_add(GTK_CONTAINER(eventbox), GTK_WIDGET(TrayIconImage));
 	g_signal_connect(G_OBJECT(eventbox),
-                   "button-press-event",
-                   G_CALLBACK(trayicon_onclick),
-                   menu);
+			"button-press-event",
+			G_CALLBACK(trayicon_onclick),
+			menu);
 
 	gtk_container_add(GTK_CONTAINER(TrayIcon), eventbox);
 
@@ -235,14 +188,16 @@
 			target_table,
 			n_targets,
 			GDK_ACTION_COPY
-		);
+			);
 
 	//tooltips
-	TrayToolTips = gtk_tooltips_new               ();
-	gtk_tooltips_set_tip(TrayToolTips, GTK_WIDGET(TrayIcon), "Infrared File Transfer", "ircp-tray");
-	g_signal_connect(G_OBJECT(TrayIcon), "drag_data_received",
-				G_CALLBACK(sendfile_ondragdrop), NULL);
-	
+	TrayToolTips = gtk_tooltips_new();
+	gtk_tooltips_set_tip(TrayToolTips, TrayIcon, _("Infrared File Transfer"),_("ircp-tray"));
+	g_signal_connect(G_OBJECT(TrayIcon), 
+			"drag_data_received",
+			G_CALLBACK(sendfile_ondragdrop), 
+			NULL);
+
 	gtk_widget_show_all(GTK_WIDGET(TrayIcon));
 }
 
@@ -285,13 +240,13 @@
 							NULL, NULL);
 	}
 	TrayIconAnimationRefCount++;
-	printf("animation start %d\n", TrayIconAnimationRefCount);
+	printf(_("animation start %d\n"), TrayIconAnimationRefCount);
 }
 
 void trayicon_animation_stop()
 {
 	TrayIconAnimationRefCount--;
-	printf("animation stop %d\n", TrayIconAnimationRefCount);
+	printf(_("animation stop %d\n"), TrayIconAnimationRefCount);
 	
 	if(TrayIconAnimationRefCount == 0) {//destroy timer
 		g_source_remove(TrayIconTimerId);
@@ -301,7 +256,7 @@
 
 void version_onclick(GtkMenuItem *menuitem, gpointer user_data)
 {
-	struct SaveFileDialog* dialog;
+	//struct SaveFileDialog* dialog;
 
 	char* authors[] = {
 		"Xin Zhen <xinzhen@pub.minidns.net>",
@@ -312,82 +267,66 @@
 		NULL
 	};
 	
-	/*{
-		struct _dev_info *devices;
-        struct _dev_info *p;
-		int numdev, i;
-		devices = irda_get_hints( &numdev );
-        if ( numdev <= 0 )
-                printf("none remote device found\n");
-		p = devices;
-        i = 0;
-        while ( p ) {
-			printf("name: %s, hint0 %x, hint1 %x\n",
-					p->name, p->hints[0], p->hints[1]);
-			p = p->next;
-		}
-		
-		free_dev_info(devices);
-	}*/
+
 #if GTK_MAJOR_VERSION >= 2 && GTK_MINOR_VERSION >= 6
-	gtk_show_about_dialog(GTK_WINDOW(TrayIcon), "authors", authors,
-				"comments", "A utility for IrDA OBEX beaming and receiving",
-				"copyright", "Xin Zhen (LoneStar) <xinzhen@pub.minidns.net>",
+	gtk_show_about_dialog(TrayIcon, "authors", authors,
+				"comments", _("A utility for IrDA OBEX beaming and receiving"),
+				"copyright", _("Xin Zhen (LoneStar) <xinzhen@pub.minidns.net>"),
 				"version", VERSION,
 				"website", "http://www.gnome-cn.org/resources/ircp-tray/",
 				NULL);
 #endif
-	/*dialog = savefile_dialog_new("About Ircp-Tray");
-	savefile_dialog_run (dialog);
-	savefile_dialog_destroy (dialog);*/
+
 }
 
 char* config_get_lastsavedir()
 {
-		char* lastsavedir = NULL;
-		char* configfilename;
+	char* lastsavedir = NULL;
+	char* configfilename;
 
 #if GTK_MAJOR_VERSION >= 2 && GTK_MINOR_VERSION >= 6
-		struct GKeyFile* config;
+	struct GKeyFile* config;
 
-		configfilename = malloc(strlen(g_get_home_dir())+11);
-		sprintf(configfilename, "%s/.ircp-tray", g_get_home_dir());
+	configfilename = malloc(strlen(g_get_home_dir())+11);
+	sprintf(configfilename, "%s/.ircp-tray", g_get_home_dir());
 
-		config = g_key_file_new();
-		g_key_file_load_from_file(config, configfilename,
-			G_KEY_FILE_KEEP_COMMENTS | G_KEY_FILE_KEEP_TRANSLATIONS, NULL);
-		lastsavedir = g_key_file_get_string(config, "General", "LastSaveDir",
-						NULL);
-		g_key_file_free(config);
-		free(configfilename);
+	config = g_key_file_new();
+	g_key_file_load_from_file(config, configfilename,
+			G_KEY_FILE_KEEP_COMMENTS | G_KEY_FILE_KEEP_TRANSLATIONS, 
+			NULL);
+	lastsavedir = g_key_file_get_string(config, "General", "LastSaveDir",NULL);
+	g_key_file_free(config);
+	free(configfilename);
 #endif
-		return lastsavedir;
+	return lastsavedir;
 }
 
 void config_set_lastsavedir(char* dir)
 {
-		char* configfilename;
+	char* configfilename;
 #if GTK_MAJOR_VERSION >= 2 && GTK_MINOR_VERSION >= 6
-		struct GKeyFile* config;
-		char* configstr;
-		FILE *configfile;
-		
-		configfilename = malloc(strlen(g_get_home_dir())+11);
-		sprintf(configfilename, "%s/.ircp-tray", g_get_home_dir());
+	struct GKeyFile* config;
+	char* configstr;
+	FILE *configfile;
+
+	configfilename = malloc(strlen(g_get_home_dir())+11);
+	sprintf(configfilename, "%s/.ircp-tray", g_get_home_dir());
+
+	config = g_key_file_new();
+	g_key_file_load_from_file(config, 
+			configfilename,
+			G_KEY_FILE_KEEP_COMMENTS | G_KEY_FILE_KEEP_TRANSLATIONS, 
+			NULL);
+	g_key_file_set_string(config, "General", "LastSaveDir", dir);
+	configstr = g_key_file_to_data(config, NULL, NULL);
 
-		config = g_key_file_new();
-		g_key_file_load_from_file(config, configfilename,
-			G_KEY_FILE_KEEP_COMMENTS | G_KEY_FILE_KEEP_TRANSLATIONS, NULL);
-		g_key_file_set_string(config, "General", "LastSaveDir", dir);
-		configstr = g_key_file_to_data(config, NULL, NULL);
-		
-		configfile = fopen(configfilename, "w");
-		fprintf(configfile, configstr);
-		fclose(configfile);
-		
-		free(configstr);
-		free(configfilename);
-		g_key_file_free(config);
+	configfile = fopen(configfilename, "w");
+	fprintf(configfile, configstr);
+	fclose(configfile);
+
+	free(configstr);
+	free(configfilename);
+	g_key_file_free(config);
 #endif
 }
 
@@ -396,11 +335,11 @@
 	char* logfile;
 	FILE* fp;
 	char filename[] = "/.ircp-tray-log";
-        char tmstr[16];
-        time_t tm = time(NULL);
+	char tmstr[16];
+	int tm = time(NULL);
 
 	printf("%s\n", message);
-        strftime(tmstr, 16, "%X", localtime(&tm));
+	strftime(tmstr, 16, "%X", localtime(&tm));
 
 	logfile = malloc(strlen(g_get_home_dir())+strlen(filename)+1);
 	sprintf(logfile, "%s%s", g_get_home_dir(), filename);
@@ -430,7 +369,7 @@
 		if(strncmp(discoverer_name, list->dev[0].info,
 				discoverer_name_len) != 0) { //new device discovered
 			char tooltips[discoverer_name_len+32];
-			sprintf(tooltips, "%s: Remote device discovered: %s", tmstr,
+			sprintf(tooltips, _("%s: Remote device discovered: %s"), tmstr,
 											list->dev[0].info);
 			printf("%s\n", tooltips);
 			trayicon_set_text(tooltips);
@@ -440,22 +379,22 @@
 			discoverer_name[discoverer_name_len-1] = '\0';
 			discoverer_hints[0] = list->dev[0].hints[0];
 			discoverer_hints[1] = list->dev[0].hints[1];
-			sprintf(tooltips, "Infrared File Transfer: %s", discoverer_name);
+			sprintf(tooltips, _("Infrared File Transfer: %s"), discoverer_name);
 			gtk_tooltips_set_tip(TrayToolTips, GTK_WIDGET(TrayIcon), tooltips, "ircp-tray");
 		        gtk_widget_set_sensitive(IconPopMenuItem, TRUE);
 		}
-	} else
-	{
+	} 
+	else{
 		if(strlen(discoverer_name)) {
 			char byemsg[128];
-			sprintf(byemsg, "%s: Remote device %s disconnected", tmstr,
+			sprintf(byemsg, _("%s: Remote device %s disconnected"), tmstr,
 						discoverer_name);
 			printf("%s\n", byemsg);
 			trayicon_set_text(byemsg);
 			discoverer_name[0] = '\0';
 			trayicon_set_icon(ICON_TRAY_INACTIVE);
-			gtk_tooltips_set_tip(TrayToolTips, GTK_WIDGET(TrayIcon), "Infrared File Transfer",
-								"ircp-tray");
+			gtk_tooltips_set_tip(TrayToolTips, TrayIcon, _("Infrared File Transfer"),
+						"ircp-tray");
                         gtk_widget_set_sensitive(IconPopMenuItem, FALSE);
 		}
 	}
@@ -464,7 +403,7 @@
 
 void discoverer_startpoll()
 {
-	printf("start polling of devices in range, interval %d milliseconds\n",
+	printf(_("start polling of devices in range, interval %d milliseconds\n"),
 				discoverer_poll_interval);
 	discoverer_name[0] = '\0';
 	discoverer_poll_timer = g_timeout_add(discoverer_poll_interval, discoverer_do, 0);
@@ -491,7 +430,7 @@
 	if (response == GTK_RESPONSE_CLOSE) {
 		gtk_widget_destroy (GTK_WIDGET (dialog));
 		dialog = 0;
-		printf("on_dialog_response\n");
+		printf(_("on_dialog_response\n"));
 	}
 }
 
@@ -529,7 +468,7 @@
 	};
 
 	devices = irda_get_hints( &numdev );
-	printf("numdev %d\n", numdev);
+	printf(_("numdev %d\n"), numdev);
 	if ( numdev <= 0 )
 		return 0;
 
@@ -539,8 +478,6 @@
 	//gtk_window_set_resizable (GTK_WINDOW (info), FALSE);
 	gtk_window_set_destroy_with_parent (GTK_WINDOW (info), TRUE);
 	gtk_dialog_set_default_response (GTK_DIALOG (info), GTK_RESPONSE_CLOSE);
- 
-
 
 	vbox1 =  GTK_DIALOG (info)->vbox;
 	gtk_widget_show (vbox1);
@@ -555,9 +492,10 @@
 		label1 = gtk_label_new (_(labels[i]));
 		gtk_widget_show (label1);
 		gtk_table_attach (GTK_TABLE (table1), label1, 0, 1, i, i+1,
-				  (GtkAttachOptions) (GTK_FILL),
-				  (GtkAttachOptions) (0), 5, 0);
-		gtk_label_set_justify (GTK_LABEL (label1), GTK_JUSTIFY_LEFT);
+				 	(GtkAttachOptions) (GTK_FILL),
+				  	(GtkAttachOptions) (0), 5, 0);
+		gtk_label_set_justify (GTK_LABEL (label1), 
+					       GTK_JUSTIFY_LEFT);
 		gtk_misc_set_alignment (GTK_MISC (label1), 0, 0.5);
 		i++;
 	}
@@ -569,9 +507,10 @@
 		label1 = gtk_label_new( p->name );
 		gtk_widget_show (label1);
 		gtk_table_attach (GTK_TABLE (table1), label1, i+1, i+2, 0, 1,
-				  (GtkAttachOptions) (GTK_FILL),
-				  (GtkAttachOptions) (0), 5, 0);
-		gtk_label_set_justify (GTK_LABEL (label1), GTK_JUSTIFY_LEFT);
+				 	(GtkAttachOptions) (GTK_FILL),
+				 	(GtkAttachOptions) (0), 5, 0);
+		gtk_label_set_justify (GTK_LABEL (label1), 
+					       GTK_JUSTIFY_LEFT);
 		gtk_misc_set_alignment (GTK_MISC (label1), 0, 0.5);
 		
 		y = 1;
@@ -588,20 +527,14 @@
 
 			gtk_widget_show (ck1);
 			gtk_table_attach (GTK_TABLE (table1), ck1, i+1, i+2, y, y+1,
-					  (GtkAttachOptions) (GTK_FILL),
-					  (GtkAttachOptions) (0), 5, 0);
+					  	(GtkAttachOptions) (GTK_FILL),
+					  	(GtkAttachOptions) (0), 5, 0);
 			y++;
 		}
 		p = p->next;
 		i++;
 	}
 
-	/*p = devices;
-	while ( p ) {
-		devices = p->next;
-		free( p );
-		p = devices;
-	}*/
 	free_dev_info(devices);
 
 	/* Create close button */
@@ -614,9 +547,10 @@
 	gtk_dialog_add_action_widget (GTK_DIALOG (info), close, GTK_RESPONSE_CLOSE);
 	GTK_WIDGET_SET_FLAGS (close, GTK_CAN_DEFAULT);
 
-	g_signal_connect (GTK_OBJECT (info), "response",
-			    GTK_SIGNAL_FUNC (on_dialog_response),
-			    NULL);
+	g_signal_connect (GTK_OBJECT (info), 
+				   "response",
+			    	   GTK_SIGNAL_FUNC (on_dialog_response),
+			    	   NULL);
 
 	gtk_widget_show(info);
 	
@@ -627,12 +561,13 @@
 {
 	GtkWidget* window, *control;
 	GtkTextBuffer* text;
+
 	char* logfile;
-	char* content;
 	FILE* fp;
+	char *content;
+	char filename[] = "/.ircp-tray-log";
 	int len;
 
-	char filename[] = "/.ircp-tray-log";
         logfile = malloc(strlen(g_get_home_dir())+strlen(filename)+1);
         sprintf(logfile, "%s%s", g_get_home_dir(), filename);
 	content = malloc(64 * 1024);
--- ./src/sendfile.c	2005-11-11 15:31:33.000000000 +0800
+++ /home/walte/Projects/ircp-tray/./src/sendfile.c	2006-12-23 10:33:54.000000000 +0800
@@ -1,3 +1,5 @@
+#include "config.h"
+#include <glib/gi18n.h>
 #include <errno.h>
 
 #include "sendfile.h"
@@ -7,88 +9,45 @@
 char* filename_to_utf8(const char* filename);
 void log_file(const char*);
 
-/*void ircp_info_cb(int event, char *param)
-{
-	if (event == IRCP_EV_ERR)
-		printf("INFO: %d: %s\n", errno, strerror(errno));
-	else
-		printf("INFO: %s\n", param);
-}*/
 
 void ircp_info_cb(int event, char *param)
 {
 	DEBUG(4, "\n");
 	switch (event) {
-
-	case IRCP_EV_ERRMSG:
-		printf("Error: %s\n", param);
-		break;
-
-	case IRCP_EV_ERR:
-		printf("failed. %d: %s\n", errno, strerror(errno));
-		break;
-	case IRCP_EV_OK:
-		printf("done\n");
-		break;
-
-
-	case IRCP_EV_CONNECTING:
-		printf("Connecting...");
-		break;
-	case IRCP_EV_DISCONNECTING:
-		printf("Disconnecting...");
-		break;
-	case IRCP_EV_SENDING:
-		printf("Sending %s...", param);
-		break;
-	case IRCP_EV_RECEIVING:
-		printf("Receiving %s...", param);
-		break;
-
-	case IRCP_EV_LISTENING:
-		printf("Waiting for incoming connection\n");
-		break;
-
-	case IRCP_EV_CONNECTIND:
-		printf("Incoming connection\n");
-		break;
-	case IRCP_EV_DISCONNECTIND:
-		printf("Disconnecting\n");
-		break;
-
-
-
+		case IRCP_EV_ERRMSG:
+			printf(_("Error: %s\n"), param);
+			break;
+		case IRCP_EV_ERR:
+			printf(_("failed. %d: %s\n"), errno, strerror(errno));
+			break;
+		case IRCP_EV_OK:
+			printf(_("done\n"));
+			break;
+		case IRCP_EV_CONNECTING:
+			printf(_("Connecting..."));
+			break;
+		case IRCP_EV_DISCONNECTING:
+			printf(_("Disconnecting..."));
+			break;
+		case IRCP_EV_SENDING:
+			printf(_("Sending %s..."), param);
+			break;
+		case IRCP_EV_RECEIVING:
+			printf(_("Receiving %s..."), param);
+			break;
+		case IRCP_EV_LISTENING:
+			printf(_("Waiting for incoming connection\n"));
+			break;
+
+		case IRCP_EV_CONNECTIND:
+			printf(_("Incoming connection\n"));
+			break;
+		case IRCP_EV_DISCONNECTIND:
+			printf(_("Disconnecting\n"));
+			break;
 	}
 }
 
-/*struct SendProgressContext {
-	GtkWidget* window;
-	GtkWidget* progressbar;
-
-	ircp_client_t* ircp_client;
-};
-
-void send_progress_destroy(struct SendProgressContext* ctx)
-{
-	if(!ctx)
-		return;
-	
-	if(ctx->window)
-		gtk_widget_destroy(ctx->window);
-
-	close(ctx->ircp_client->fd);
-	ircp_cli_disconnect(ctx->ircp_client);
-	ircp_cli_close(ctx->ircp_client);
-	free(ctx);
-}*/
-
-
-/*
-send_session::
-new()
-destroy()
-*/
-
 struct SendSession {
 	struct ProgressWindow* window;
 	ircp_client_t* ircp_client;
@@ -99,9 +58,9 @@
 
 void send_session_destroy(struct SendSession* sess);
 static gboolean send_session_onrecv(GIOChannel *source,
-                                             GIOCondition condition,
-                                             gpointer data);
-	
+		GIOCondition condition,
+		gpointer data);
+
 //called from tray icon menu click
 struct SendSession* send_session_new(char* filename)
 {
@@ -113,12 +72,12 @@
 	//create the context
 	sendsess = (struct SendSession*)malloc(sizeof(struct SendSession));
 
-	printf("beam file %s\n", filename);
+	printf(_("beam file %s\n"), filename);
 
 	//create socket
 	sendsess->ircp_client = ircp_cli_open(ircp_info_cb);
 	if(sendsess->ircp_client == NULL) {
-		printf("Error opening ircp-client\n");
+		printf(_("Error opening ircp-client\n"));
 		free(sendsess);
 		return;
 	}
@@ -130,7 +89,7 @@
 		GtkWidget* dialog;
 
 		unistr = g_locale_to_utf8(strerror(errno), -1, NULL, NULL, NULL);
-		snprintf(msgbuf, 1024, "Unable to connect remote, %s", unistr);
+		snprintf(msgbuf, 1024, _("Unable to connect remote, %s"), unistr);
 		free(unistr);
 		dialog = gtk_message_dialog_new(NULL, 0, GTK_MESSAGE_ERROR, GTK_BUTTONS_OK, msgbuf);
 		gtk_dialog_run(GTK_DIALOG(dialog));
@@ -142,7 +101,7 @@
 	}
 
 	remote_u = filename_to_utf8(filename);
-	printf("utf8 name: %s\n", remote_u);
+	printf(_("utf8 name: %s\n"), remote_u);
 
 	//create progress window and show it
 	sendsess->window = progress_window_new(remote_u, send_session_destroy, sendsess);
@@ -163,7 +122,7 @@
 	ret = ircp_put_file_a(sendsess->ircp_client, filename, remotename);
 	free(remote_u);
 	
-	printf("ircp_put_file_a returns %d\n", ret);
+	printf(_("ircp_put_file_a returns %d\n"), ret);
 	trayicon_animation_start();
 	if(ret != 0)
 		send_session_destroy(sendsess);
@@ -194,7 +153,7 @@
 	close(sess->ircp_client->fd);
 	ircp_cli_close(sess->ircp_client);
 	logtext = malloc(strlen(sess->filename_u)+30);
-	sprintf(logtext, "send %s %s", sess->filename_u,
+	sprintf(logtext, _("send %s %s"), sess->filename_u,
 			reason);
 	log_file(logtext);
 	free(logtext);
@@ -211,11 +170,10 @@
 		
 	ret = cli_sync_request_continue(sess->ircp_client);
 	
-	//printf("send_session_onrecv request return %d\n", ret);
 	if(ret != 0) {
 		GtkWidget* dialog;
 		GtkMessageType type;
-		printf("send session quit. finished %d, success %d\n", 
+		printf(_("send session quit. finished %d, success %d\n"), 
 				sess->ircp_client->finished,
 				sess->ircp_client->success);
 		if (sess->ircp_client->success)
@@ -230,10 +188,10 @@
 
 		if (sess->ircp_client->success)
 			gtk_message_dialog_format_secondary_text(dialog,
-						"File was sent successfully");
+						_("File was sent successfully"));
 		else
 			gtk_message_dialog_format_secondary_text(dialog,
-						"File beaming was aborted by remote");
+						_("File beaming was aborted by remote"));
 		
 		gtk_dialog_run(GTK_DIALOG(dialog));
 		gtk_widget_destroy (dialog);
@@ -251,11 +209,11 @@
 	GtkWidget *dialog;
 	gboolean result;
 	dialog = gtk_message_dialog_new(NULL,
-								GTK_DIALOG_MODAL,
-								GTK_MESSAGE_QUESTION,
-								GTK_BUTTONS_OK_CANCEL,
-								"It seems no active device around here, Do you still want to continue?\n"
-								"OK to proceed");
+			GTK_DIALOG_MODAL,
+			GTK_MESSAGE_QUESTION,
+			GTK_BUTTONS_OK_CANCEL,
+			_("It seems no active device around here, Do you still want to continue?\n"
+			"OK to proceed"));
 	result = (gtk_dialog_run (GTK_DIALOG (dialog)) == GTK_RESPONSE_OK);
 	gtk_widget_destroy (dialog);
 	return result;
@@ -272,7 +230,7 @@
 			return;
 	}
 
-	dialog = gtk_file_chooser_dialog_new ("Select File to Beam",
+	dialog = gtk_file_chooser_dialog_new (_("Select File to Beam"),
 				      NULL,
 				      GTK_FILE_CHOOSER_ACTION_OPEN,
 				      GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
@@ -293,7 +251,7 @@
 		send_session_new(filename);
 		g_free (filename);
 	}else
-		printf("sendfile dialog quit\n");
+		printf(_("sendfile dialog quit\n"));
 
 	  gtk_widget_destroy (dialog);
 }
@@ -304,42 +262,31 @@
 	return;
 }
 
-void        sendfile_ondragdrop                  (GtkWidget *widget,
-                                            GdkDragContext *drag_context,
-                                            gint x,
-                                            gint y,
-                                            GtkSelectionData *data,
-                                            guint info,
-                                            guint time,
-                                            gpointer user_data)
+void sendfile_ondragdrop (GtkWidget *widget,
+		GdkDragContext *drag_context,
+		gint x,
+		gint y,
+		GtkSelectionData *data,
+		guint info,
+		guint time,
+		gpointer user_data)
 {
 	char** strlist;
 	char** fileiter;
 	char* filename;
 	char* filename_u;
 	char* end;
-	//gtk_drag_finish (drag_context, FALSE, FALSE, time);
-	//printf("Drop\n%s %d\n", data->data, data->length);
-	printf("drop: ");
 
-	//strlist = g_uri_list_extract_uris (data->data);
+	printf(_("drop: "));
+
 	end = strchr(data->data, '\r');
 	if(end)
 		*end = 0;
-	
+
 	filename = g_filename_from_uri(data->data, NULL, NULL);
-	printf("f:%s\n", filename?filename:"NULL");
+	printf(_("f:%s\n"), filename?filename:"NULL");
 
-/*	for (fileiter = strlist; fileiter != NULL; fileiter++) {
-		char* filename = *fileiter;
-		printf("%s\n", filename);*/
-		send_session_new(filename);
-		/*free(filename);
-		//break;
-	}*/
-	//if(urllist)
+	send_session_new(filename);
 	free(filename);
-	//free(filename_u);
 	gtk_drag_finish (drag_context, TRUE, FALSE, time);
-	//g_strfreev(strlist);
 }
--- ./src/recvfile.c	2006-12-08 17:01:04.000000000 +0800
+++ /home/walte/Projects/ircp-tray/./src/recvfile.c	2006-12-23 09:35:13.000000000 +0800
@@ -153,25 +153,6 @@
 
 	if(RecvFilePgswin)
 		progress_window_update(RecvFilePgswin, srv->finishedsize, srv->filelength);
-	
-		/*if(srv->filelength>0)
-			gtk_progress_bar_set_fraction(
-				GTK_PROGRESS_BAR(RecvFilePgswin->progressbar),
-				(gdouble)srv->finishedsize / srv->filelength);
-		else
-			gtk_progress_bar_pulse(
-				GTK_PROGRESS_BAR(RecvFilePgswin->progressbar));*/
-
-	/*if(srv->filename && srv->fd < 0) {
-		recvfile_launch_dialog(srv->filename, &srv->fd);
-		if(srv->fd<0) {
-			perror("No file open for writing, quit");
-			srv->finished = TRUE;
-			srv->success = FALSE;
-		} else
-			RecvFilePgswin = progress_window_new(srv->filename,
-					NULL, NULL);
-	}*/
 
 	if(srv->fd >= 0 && !RecvFilePgswin) {
 		char* utf8;
@@ -181,22 +162,6 @@
 		free(utf8);
 		trayicon_animation_start();
 	}
-
-	/*if(srv->object) {
-		recvfile_launch_dialog(&srv->fd);
-		if(srv->fd<0) {
-			perror("Target file open failed");
-			OBEX_ObjectSetRsp(srv->object, 
-					OBEX_RSP_FORBIDDEN,OBEX_RSP_FORBIDDEN);
-			srv->finished = TRUE;
-			srv->success = FALSE;
-		} else
-			OBEX_ObjectSetRsp(srv->object, OBEX_RSP_CONTINUE, OBEX_RSP_SUCCESS);
-
-		OBEX_ObjectReadStream(srv->obexhandle,
-				srv->object, NULL);
-		srv->object = NULL;
-	}*/
 	
 	if(srv->finished) {
 		GtkWidget* dialog;
@@ -266,16 +231,8 @@
 
 	*fd = -1;
 
-	/*dialog = gtk_file_chooser_dialog_new ("Incoming file transfer save to",
-				NULL,
-				GTK_FILE_CHOOSER_ACTION_SAVE,
-				GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
-				GTK_STOCK_SAVE, GTK_RESPONSE_ACCEPT,
-				NULL);*/
 	dialog = savefile_dialog_new("Incoming File Transfer", RemoteName);
 
-	/*gtk_file_chooser_set_current_name(
-		GTK_FILE_CHOOSER(dialog), filename);*/
 	savefile_dialog_set_current_name(dialog, filename_u);
 	//savefile_dialog_set_current_folder(dialog, "/home/xinzhen/Desktop");
 
--- ./src/hello.c	2006-12-21 14:37:32.000000000 +0800
+++ /home/walte/Projects/ircp-tray/./src/hello.c	2006-12-23 10:05:37.000000000 +0800
@@ -18,201 +18,42 @@
  * USA
  */
 
-/*** gnomehello */
-
 #include <config.h>
 #include <glib-object.h>
-//#include <gnome.h>
 #include <gtk/gtk.h>
 #include <libintl.h>
 #include <locale.h>
-
+#include <glib/gi18n.h>
 #include "app.h"
 #include "resources.h"
 
 
-//static void session_die(GnomeClient* client, gpointer client_data);
-
-/*static gint save_session(GnomeClient *client, gint phase, 
-                         GnomeSaveStyle save_style,
-                         gint is_shutdown, GnomeInteractStyle interact_style,
-                         gint is_fast, gpointer client_data);
-*/
-
-/*** gnomehello-popttable */
 static int greet_mode = FALSE;
 static char* message  = NULL;
 static char* geometry = NULL;
 
-/*struct poptOption options[] = {
-  {
-    "greet",
-    'g',
-    POPT_ARG_NONE,
-    &greet_mode,
-    0,
-    N_("Say hello to specific people listed on the command line"),
-    NULL
-  },
-  { 
-    "message",
-    'm',
-    POPT_ARG_STRING,
-    &message,
-    0,
-    N_("Specify a message other than \"Hello, World!\""),
-    N_("MESSAGE")
-  },
-  { 
-    "geometry",
-    '\0',
-    POPT_ARG_STRING,
-    &geometry,
-    0,
-    N_("Specify the geometry of the main window"),
-    N_("GEOMETRY")
-  },
-  {
-    NULL,
-    '\0',
-    0,
-    NULL,
-    0,
-    NULL,
-    NULL
-  }
-};*/
-/* gnomehello-popttable ***/
-
 int 
 main(int argc, char** argv)
 {
-  /*** gnomehello-parsing */
-  GtkWidget* app;
-  //GnomeProgram *gnome_hello;
-//  GnomeClient* client;
-  //GValue value = {0,};
-  //poptContext pctx; 
-  GSList* greet = NULL;
-  char** args;
-  int i;
-
-  setlocale (LC_ALL, "");
-  bindtextdomain(GETTEXT_PACKAGE, LOCALE_DIR);  
-  bind_textdomain_codeset(GETTEXT_PACKAGE, "UTF-8");
-  textdomain(GETTEXT_PACKAGE);
-
-  /*gnome_hello = gnome_program_init(PACKAGE, VERSION, LIBGNOMEUI_MODULE,
-				   argc, argv, 
-				   GNOME_PARAM_POPT_TABLE, options, 
-				   GNOME_PARAM_APP_DATADIR,DATADIR, NULL);
-  */
+	GtkWidget* app;
+
+	GSList* greet = NULL;
+	char** args;
+	int i;
+
+	bindtextdomain(GETTEXT_PACKAGE, LOCALE_DIR);  
+	bind_textdomain_codeset(GETTEXT_PACKAGE, "UTF-8");
+	textdomain(GETTEXT_PACKAGE);
 
 	gtk_init(&argc, &argv);
 
-  //gnome_window_icon_set_default_from_file (WIN_ICON);
 	gtk_window_set_default_icon_from_file(WIN_ICON, NULL);
 
-  //g_value_init (&value, G_TYPE_POINTER);
-  //g_object_get_property (G_OBJECT(gnome_hello), 
-  //			   GNOME_PARAM_POPT_CONTEXT, &value);
-  
-  //(poptContext)pctx = g_value_get_pointer (&value);
-
-  /* Argument parsing */
-  //args = (char **) poptGetArgs(pctx);
-
-  /*if (greet_mode && args)
-    {
-      i = 0;
-      while (args[i] != NULL) 
-        {
-          greet = g_slist_prepend(greet, args[i]);
-          ++i;
-        } 
-      /* Put them in order */ 
-   /*   greet = g_slist_reverse(greet); 
-    }
-  else if (greet_mode && args == NULL)
-    {
-      g_error(_("You must specify someone to greet."));
-    }
-  else if (args != NULL)
-    {
-      g_error(_("Command line arguments are only allowed with --greet."));
-    }
-  else
-    { 
-      g_assert(!greet_mode && args == NULL);
-    }*/
-
-  //poptFreeContext(pctx); 
-  /* gnomehello-parsing ***/
-
-  /* Session Management */
-  
-  /*** gnomehello-client */
-  //client = gnome_master_client ();
-  //g_signal_connect (G_OBJECT (client), "save_yourself",
-  //                    G_CALLBACK (save_session), argv[0]);
-  //g_signal_connect (G_OBJECT (client), "die",
-  //                    G_CALLBACK (session_die), NULL);
-  /* gnomehello-client ***/
-
-  
-  /* Main app */
-
-  app = ircptray_app_new(message, geometry, greet);
-
-  //g_slist_free(greet);
-
-  /*** gnomehello-main */
-  //if(args)
-//	gtk_widget_show_all(app);
+	app = ircptray_app_new(message, geometry, greet);
 
-  if(!app)
-	gtk_main();
+	if(!app)
+		gtk_main();
 
-  return 0;
-  /* gnomehello-main ***/
+	return 0;
 }
 
-/*** gnomehello-save-session */
-/*static gint
-save_session (GnomeClient *client, gint phase, GnomeSaveStyle save_style,
-              gint is_shutdown, GnomeInteractStyle interact_style,
-              gint is_fast, gpointer client_data)
-{
-  gchar** argv;
-  guint argc;
-*/
-  /* allocate 0-filled, so it will be NULL-terminated */
-/*  argv = g_malloc0(sizeof(gchar*)*4);
-  argc = 1;
-
-  argv[0] = client_data;
-
-  if (message)
-    {
-      argv[1] = "--message";
-      argv[2] = message;
-      argc = 3;
-    }
-  
-  gnome_client_set_clone_command (client, argc, argv);
-  gnome_client_set_restart_command (client, argc, argv);
-
-  return TRUE;
-}*/
-/* gnomehello-save-session ***/
-
-/*** gnomehello-session-die */
-/*static void
-session_die(GnomeClient* client, gpointer client_data)
-{
-  gtk_main_quit ();
-}*/
-/* gnomehello-session-die ***/
-
-/* gnomehello ***/
-
--- ./src/eggtrayicon.c	2005-03-19 03:22:39.000000000 +0800
+++ /home/walte/Projects/ircp-tray/./src/eggtrayicon.c	2006-12-23 10:11:20.000000000 +0800
@@ -1,7 +1,6 @@
 /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
 /* eggtrayicon.c
  * Copyright (C) 2002 Anders Carlsson <andersca@gnu.org>
- * Copyright (C) 2003, 2004 Jean-Yves Lefort <jylefort@brutele.be>
  *
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Lesser General Public
@@ -19,14 +18,29 @@
  * Boston, MA 02111-1307, USA.
  */
 
-#include "config.h"
+#include <config.h>
 #include <string.h>
-#include <glib/gi18n-lib.h>
+#include <libintl.h>
 
 #include "eggtrayicon.h"
 
+#include <gdkconfig.h>
+#if defined (GDK_WINDOWING_X11)
 #include <gdk/gdkx.h>
 #include <X11/Xatom.h>
+#elif defined (GDK_WINDOWING_WIN32)
+#include <gdk/gdkwin32.h>
+#endif
+
+#ifndef EGG_COMPILATION
+#ifndef _
+#define _(x) dgettext (GETTEXT_PACKAGE, x)
+#define N_(x) x
+#endif
+#else
+#define _(x) x
+#define N_(x) x
+#endif
 
 #define SYSTEM_TRAY_REQUEST_DOCK    0
 #define SYSTEM_TRAY_BEGIN_MESSAGE   1
@@ -53,7 +67,14 @@
 static void egg_tray_icon_realize   (GtkWidget *widget);
 static void egg_tray_icon_unrealize (GtkWidget *widget);
 
-static void egg_tray_icon_update_manager_window (EggTrayIcon *icon);
+static void egg_tray_icon_add (GtkContainer *container,
+			       GtkWidget    *widget);
+
+#ifdef GDK_WINDOWING_X11
+static void egg_tray_icon_update_manager_window    (EggTrayIcon *icon,
+						    gboolean     dock_if_realized);
+static void egg_tray_icon_manager_window_destroyed (EggTrayIcon *icon);
+#endif
 
 GType
 egg_tray_icon_get_type (void)
@@ -95,6 +116,7 @@
 {
   GObjectClass *gobject_class = (GObjectClass *)klass;
   GtkWidgetClass *widget_class = (GtkWidgetClass *)klass;
+  GtkContainerClass *container_class = (GtkContainerClass *)klass;
 
   parent_class = g_type_class_peek_parent (klass);
 
@@ -103,6 +125,8 @@
   widget_class->realize   = egg_tray_icon_realize;
   widget_class->unrealize = egg_tray_icon_unrealize;
 
+  container_class->add = egg_tray_icon_add;
+
   g_object_class_install_property (gobject_class,
 				   PROP_ORIENTATION,
 				   g_param_spec_enum ("orientation",
@@ -111,6 +135,14 @@
 						      GTK_TYPE_ORIENTATION,
 						      GTK_ORIENTATION_HORIZONTAL,
 						      G_PARAM_READABLE));
+
+#if defined (GDK_WINDOWING_X11)
+  /* Nothing */
+#elif defined (GDK_WINDOWING_WIN32)
+  g_warning ("Port eggtrayicon to Win32");
+#else
+  g_warning ("Port eggtrayicon to this GTK+ backend");
+#endif
 }
 
 static void
@@ -132,6 +164,8 @@
     }
 }
 
+#ifdef GDK_WINDOWING_X11
+
 static void
 egg_tray_icon_get_orientation_property (EggTrayIcon *icon)
 {
@@ -194,7 +228,7 @@
       xev->xclient.message_type == icon->manager_atom &&
       xev->xclient.data.l[1] == icon->selection_atom)
     {
-      egg_tray_icon_update_manager_window (icon);
+      egg_tray_icon_update_manager_window (icon, TRUE);
     }
   else if (xev->xany.window == icon->manager_window)
     {
@@ -205,16 +239,18 @@
 	}
       if (xev->xany.type == DestroyNotify)
 	{
-	  egg_tray_icon_update_manager_window (icon);
+	  egg_tray_icon_manager_window_destroyed (icon);
 	}
     }
-  
   return GDK_FILTER_CONTINUE;
 }
 
+#endif  
+
 static void
 egg_tray_icon_unrealize (GtkWidget *widget)
 {
+#ifdef GDK_WINDOWING_X11
   EggTrayIcon *icon = EGG_TRAY_ICON (widget);
   GdkWindow *root_window;
 
@@ -234,8 +270,11 @@
 
   if (GTK_WIDGET_CLASS (parent_class)->unrealize)
     (* GTK_WIDGET_CLASS (parent_class)->unrealize) (widget);
+#endif
 }
 
+#ifdef GDK_WINDOWING_X11
+
 static void
 egg_tray_icon_send_manager_message (EggTrayIcon *icon,
 				    long         message,
@@ -277,21 +316,15 @@
 }
 
 static void
-egg_tray_icon_update_manager_window (EggTrayIcon *icon)
+egg_tray_icon_update_manager_window (EggTrayIcon *icon,
+				     gboolean     dock_if_realized)
 {
   Display *xdisplay;
   
-  xdisplay = GDK_DISPLAY_XDISPLAY (gtk_widget_get_display (GTK_WIDGET (icon)));
-  
   if (icon->manager_window != None)
-    {
-      GdkWindow *gdkwin;
+    return;
 
-      gdkwin = gdk_window_lookup_for_display (gtk_widget_get_display (GTK_WIDGET (icon)),
-					      icon->manager_window);
-      
-      gdk_window_remove_filter (gdkwin, egg_tray_icon_manager_filter, icon);
-    }
+  xdisplay = GDK_DISPLAY_XDISPLAY (gtk_widget_get_display (GTK_WIDGET (icon)));
   
   XGrabServer (xdisplay);
   
@@ -314,16 +347,66 @@
       
       gdk_window_add_filter (gdkwin, egg_tray_icon_manager_filter, icon);
 
-      /* Send a request that we'd like to dock */
-      egg_tray_icon_send_dock_request (icon);
+      if (dock_if_realized && GTK_WIDGET_REALIZED (icon))
+	egg_tray_icon_send_dock_request (icon);
 
       egg_tray_icon_get_orientation_property (icon);
     }
 }
 
 static void
+egg_tray_icon_manager_window_destroyed (EggTrayIcon *icon)
+{
+  GdkWindow *gdkwin;
+  
+  g_return_if_fail (icon->manager_window != None);
+
+  gdkwin = gdk_window_lookup_for_display (gtk_widget_get_display (GTK_WIDGET (icon)),
+					  icon->manager_window);
+      
+  gdk_window_remove_filter (gdkwin, egg_tray_icon_manager_filter, icon);
+
+  icon->manager_window = None;
+
+  egg_tray_icon_update_manager_window (icon, TRUE);
+}
+
+#endif
+
+static gboolean
+transparent_expose_event (GtkWidget *widget, GdkEventExpose *event, gpointer user_data)
+{
+  gdk_window_clear_area (widget->window, event->area.x, event->area.y,
+			 event->area.width, event->area.height);
+  return FALSE;
+}
+
+static void
+make_transparent_again (GtkWidget *widget, GtkStyle *previous_style,
+			gpointer user_data)
+{
+  gdk_window_set_back_pixmap (widget->window, NULL, TRUE);
+}
+
+static void
+make_transparent (GtkWidget *widget, gpointer user_data)
+{
+  if (GTK_WIDGET_NO_WINDOW (widget) || GTK_WIDGET_APP_PAINTABLE (widget))
+    return;
+
+  gtk_widget_set_app_paintable (widget, TRUE);
+  gtk_widget_set_double_buffered (widget, FALSE);
+  gdk_window_set_back_pixmap (widget->window, NULL, TRUE);
+  g_signal_connect (widget, "expose_event",
+		    G_CALLBACK (transparent_expose_event), NULL);
+  g_signal_connect_after (widget, "style_set",
+			  G_CALLBACK (make_transparent_again), NULL);
+}	
+
+static void
 egg_tray_icon_realize (GtkWidget *widget)
 {
+#ifdef GDK_WINDOWING_X11
   EggTrayIcon *icon = EGG_TRAY_ICON (widget);
   GdkScreen *screen;
   GdkDisplay *display;
@@ -334,6 +417,8 @@
   if (GTK_WIDGET_CLASS (parent_class)->realize)
     GTK_WIDGET_CLASS (parent_class)->realize (widget);
 
+  make_transparent (widget, NULL);
+
   screen = gtk_widget_get_screen (widget);
   display = gdk_screen_get_display (screen);
   xdisplay = gdk_x11_display_get_xdisplay (display);
@@ -355,25 +440,23 @@
 					"_NET_SYSTEM_TRAY_ORIENTATION",
 					False);
 
-  egg_tray_icon_update_manager_window (icon);
+  egg_tray_icon_update_manager_window (icon, FALSE);
+  egg_tray_icon_send_dock_request (icon);
 
   root_window = gdk_screen_get_root_window (screen);
   
   /* Add a root window filter so that we get changes on MANAGER */
   gdk_window_add_filter (root_window,
 			 egg_tray_icon_manager_filter, icon);
+#endif
 }
 
-EggTrayIcon *
-egg_tray_icon_new_for_xscreen (Screen *xscreen, const char *name)
+static void
+egg_tray_icon_add (GtkContainer *container, GtkWidget *widget)
 {
-  GdkDisplay *display;
-  GdkScreen *screen;
-
-  display = gdk_x11_lookup_xdisplay (DisplayOfScreen (xscreen));
-  screen = gdk_display_get_screen (display, XScreenNumberOfScreen (xscreen));
-
-  return egg_tray_icon_new_for_screen (screen, name);
+  g_signal_connect (widget, "realize",
+		    G_CALLBACK (make_transparent), NULL);
+  GTK_CONTAINER_CLASS (parent_class)->add (container, widget);
 }
 
 EggTrayIcon *
@@ -402,17 +485,20 @@
   g_return_val_if_fail (timeout >= 0, 0);
   g_return_val_if_fail (message != NULL, 0);
 		     
+#ifdef GDK_WINDOWING_X11
   if (icon->manager_window == None)
     return 0;
+#endif
 
   if (len < 0)
     len = strlen (message);
 
   stamp = icon->stamp++;
   
+#ifdef GDK_WINDOWING_X11
   /* Get ready to send the message */
   egg_tray_icon_send_manager_message (icon, SYSTEM_TRAY_BEGIN_MESSAGE,
-				      (Window)gtk_plug_get_id (GTK_PLUG (icon)),
+				      icon->manager_window,
 				      timeout, len, stamp);
 
   /* Now to send the actual message */
@@ -425,7 +511,7 @@
       xdisplay = GDK_DISPLAY_XDISPLAY (gtk_widget_get_display (GTK_WIDGET (icon)));
       
       ev.type = ClientMessage;
-      ev.window = (Window)gtk_plug_get_id (GTK_PLUG (icon));
+      ev.window = icon->manager_window;
       ev.format = 8;
       ev.message_type = XInternAtom (xdisplay,
 				     "_NET_SYSTEM_TRAY_MESSAGE_DATA", False);
@@ -446,6 +532,7 @@
       XSync (xdisplay, False);
     }
   gdk_error_trap_pop ();
+#endif
 
   return stamp;
 }
@@ -456,10 +543,11 @@
 {
   g_return_if_fail (EGG_IS_TRAY_ICON (icon));
   g_return_if_fail (id > 0);
-  
+#ifdef GDK_WINDOWING_X11  
   egg_tray_icon_send_manager_message (icon, SYSTEM_TRAY_CANCEL_MESSAGE,
 				      (Window)gtk_plug_get_id (GTK_PLUG (icon)),
 				      id, 0, 0);
+#endif
 }
 
 GtkOrientation
--- ./src/ircp_client.c	2005-03-19 03:22:39.000000000 +0800
+++ /home/walte/Projects/ircp-tray/./src/ircp_client.c	2006-12-23 09:35:17.000000000 +0800
@@ -146,8 +146,6 @@
 	cli->finished = FALSE;
 	OBEX_Request(cli->obexhandle, object);
 
-	//ret = OBEX_HandleInput(cli->obexhandle, 20);
-	//DEBUG(4, "ret = %d\n", ret);
 
 	if (ret <= 0)
 		return -1; //error
@@ -453,24 +451,6 @@
 		return -1;
 	}
 	
-	/* This is a directory. CD into it */
-/*	if(S_ISDIR(statbuf.st_mode)) {
-		char *newrealdir = NULL;
-		char *dirname;
-		
-		chdir(name);
-		name = ".";
-		
-		/* Get real name of new wd, extract last part of and do setpath to it */
-/*		newrealdir = getcwd(NULL, 0);
-		dirname = strrchr(newrealdir, '/') + 1;
-		if(strlen(dirname) != 0)
-			ircp_setpath(cli, dirname, FALSE);
-		
-		free(newrealdir);
-	}
-	
-	ret = visit_all_files(name, ircp_visit, cli);*/
 
 	// Strip /'s before sending file
 	remotename = strrchr(name, '/');
--- ./src/irda_misc.c	2005-10-05 04:56:39.000000000 +0800
+++ /home/walte/Projects/ircp-tray/./src/irda_misc.c	2006-12-23 09:35:17.000000000 +0800
@@ -32,7 +32,6 @@
 #  include <openobex/obex.h>
 #endif
 
-//#include "girda_app.h"
 #include "irda_misc.h"
 #define _(x) x
 
--- ./src/dirtraverse.c	2005-03-19 03:22:39.000000000 +0800
+++ /home/walte/Projects/ircp-tray/./src/dirtraverse.c	2006-12-23 09:35:16.000000000 +0800
@@ -116,36 +116,3 @@
 	return ret;
 }
 
-#if 0
-int visit(int action, char *name, char *path, void *userdata)
-{
-	switch(action) {
-	case VISIT_FILE:
-		printf("Visiting %s\n", filename);
-		break;
-
-	case VISIT_GOING_DEEPER:
-		printf("Going deeper %s\n", filename);
-		break;
-
-	case VISIT_GOING_UP:
-		printf("Going up\n");
-		break;
-	default:
-		printf("going %d\n", action);
-	}
-	return 1;
-}
-
-
-//
-//
-//
-int main(int argc, char *argv[])
-{
-//	visit_all_files("Makefile", visit);
-//	visit_all_files("/usr/local/apache/", visit);
-	visit_all_files("testdir", visit);
-	return 0;
-}
-#endif
diff -Nur po/LINGUAS /home/walte/Projects/ircp-tray/po/LINGUAS
--- po/LINGUAS	1970-01-01 08:00:00.000000000 +0800
+++ /home/walte/Projects/ircp-tray/po/LINGUAS	2006-12-23 10:00:20.000000000 +0800
@@ -0,0 +1 @@
+zh_CN
diff -Nur po/zh_CN.po /home/walte/Projects/ircp-tray/po/zh_CN.po
--- po/zh_CN.po	1970-01-01 08:00:00.000000000 +0800
+++ /home/walte/Projects/ircp-tray/po/zh_CN.po	2006-12-23 10:56:29.000000000 +0800
@@ -0,0 +1,296 @@
+# Chinese/Simplified translation of ircp-tray.
+# Copyright (C) 2006 THE ircp-tray'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the ircp-tray package.
+# yangh <yanghong@ccoss.com.cn>, 2006.
+# , fuzzy
+# 
+# 
+msgid ""
+msgstr ""
+"Project-Id-Version: ircp-tray 0.7\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2006-12-23 10:55+0800\n"
+"PO-Revision-Date: 2006-12-23 10:53+0800\n"
+"Last-Translator: yangh <yanghong@ccoss.com.cn>\n"
+"Language-Team: Chinese/Simplified <i18n-translation@lists.linux.net.cn>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../src/app.c:62
+#, c-format
+msgid "Could not parse geometry string `%s'"
+msgstr "无法解析几何字串 '%s'"
+
+#: ../src/app.c:125 ../src/app.c:195
+msgid "ircp-tray"
+msgstr ""
+
+#: ../src/app.c:131
+msgid "<b>Transfer Files...</b>"
+msgstr "<b>传送文件...</b>"
+
+#: ../src/app.c:139
+msgid "Get Devices Info..."
+msgstr "获取设备信息..."
+
+#: ../src/app.c:147
+msgid "Show logs..."
+msgstr "显示日志..."
+
+#: ../src/app.c:157
+msgid "About"
+msgstr "关于"
+
+#: ../src/app.c:164
+msgid "Quit"
+msgstr "退出"
+
+#: ../src/app.c:195 ../src/app.c:396
+msgid "Infrared File Transfer"
+msgstr "红外线文件传输工具"
+
+#: ../src/app.c:243
+#, c-format
+msgid "animation start %d\n"
+msgstr ""
+
+#: ../src/app.c:249
+#, c-format
+msgid "animation stop %d\n"
+msgstr ""
+
+#: ../src/app.c:273
+msgid "A utility for IrDA OBEX beaming and receiving"
+msgstr "一个用于在 IrDA OBEX 上接收和发送文件的工具"
+
+#: ../src/app.c:274
+msgid "Xin Zhen (LoneStar) <xinzhen@pub.minidns.net>"
+msgstr ""
+
+#: ../src/app.c:372
+#, c-format
+msgid "%s: Remote device discovered: %s"
+msgstr "%：发现远程设备：%s"
+
+#: ../src/app.c:382
+#, c-format
+msgid "Infrared File Transfer: %s"
+msgstr "红外文件传输工具：%s"
+
+#: ../src/app.c:390
+#, c-format
+msgid "%s: Remote device %s disconnected"
+msgstr "%s：远程设备 %s 已经断开"
+
+#: ../src/app.c:406
+#, c-format
+msgid "start polling of devices in range, interval %d milliseconds\n"
+msgstr "开始轮询红外发射器可见范围之内的设备，间隔 %d 微秒\n"
+
+#: ../src/app.c:433
+#, c-format
+msgid "on_dialog_response\n"
+msgstr ""
+
+#: ../src/app.c:452
+msgid "Hints"
+msgstr "提示"
+
+#: ../src/app.c:453
+msgid "PNP"
+msgstr ""
+
+#: ../src/app.c:454
+msgid "PDA"
+msgstr ""
+
+#: ../src/app.c:455
+msgid "COMPUTER"
+msgstr ""
+
+#: ../src/app.c:456
+msgid "PRINTER"
+msgstr ""
+
+#: ../src/app.c:457
+msgid "MODEM"
+msgstr ""
+
+#: ../src/app.c:458
+msgid "FAX"
+msgstr ""
+
+#: ../src/app.c:459
+msgid "LAN"
+msgstr ""
+
+#: ../src/app.c:460
+msgid "EXTENSION"
+msgstr ""
+
+#: ../src/app.c:461
+msgid "TELEPHONY"
+msgstr ""
+
+#: ../src/app.c:462
+msgid "FILESERVER"
+msgstr ""
+
+#: ../src/app.c:463
+msgid "COMM"
+msgstr ""
+
+#: ../src/app.c:464
+msgid "MESSAGE"
+msgstr ""
+
+#: ../src/app.c:465
+msgid "HTTP"
+msgstr ""
+
+#: ../src/app.c:466
+msgid "OBEX"
+msgstr ""
+
+#: ../src/app.c:471
+#, c-format
+msgid "numdev %d\n"
+msgstr ""
+
+#. data->info_window = info;
+#: ../src/app.c:477
+msgid "info"
+msgstr ""
+
+#: ../src/eggtrayicon.c:133
+msgid "Orientation"
+msgstr ""
+
+#: ../src/eggtrayicon.c:134
+msgid "The orientation of the tray."
+msgstr ""
+
+#: ../src/irda_misc.c:51 ../src/irda_misc.c:99 ../src/irda_misc.c:149
+msgid ", "
+msgstr ""
+
+#: ../src/sendfile.c:18
+#, c-format
+msgid "Error: %s\n"
+msgstr ""
+
+#: ../src/sendfile.c:21
+#, c-format
+msgid "failed. %d: %s\n"
+msgstr ""
+
+#: ../src/sendfile.c:24
+#, c-format
+msgid "done\n"
+msgstr "完成\n"
+
+#: ../src/sendfile.c:27
+#, c-format
+msgid "Connecting..."
+msgstr "正在连接..."
+
+#: ../src/sendfile.c:30
+#, c-format
+msgid "Disconnecting..."
+msgstr "正在断开连接..."
+
+#: ../src/sendfile.c:33
+#, c-format
+msgid "Sending %s..."
+msgstr "正在发送 %s..."
+
+#: ../src/sendfile.c:36
+#, c-format
+msgid "Receiving %s..."
+msgstr "正在接收 %s..."
+
+#: ../src/sendfile.c:39
+#, c-format
+msgid "Waiting for incoming connection\n"
+msgstr "等待连接请求\n"
+
+#: ../src/sendfile.c:43
+#, c-format
+msgid "Incoming connection\n"
+msgstr "收到连接请求\n"
+
+#: ../src/sendfile.c:46
+#, c-format
+msgid "Disconnecting\n"
+msgstr "正在断开\n"
+
+#: ../src/sendfile.c:75
+#, c-format
+msgid "beam file %s\n"
+msgstr "发送文件 %s\n"
+
+#: ../src/sendfile.c:80
+#, c-format
+msgid "Error opening ircp-client\n"
+msgstr "打开 ircp 客户端时出错\n"
+
+#: ../src/sendfile.c:92
+#, c-format
+msgid "Unable to connect remote, %s"
+msgstr "无法连接到远程设备，%s"
+
+#: ../src/sendfile.c:104
+#, c-format
+msgid "utf8 name: %s\n"
+msgstr ""
+
+#: ../src/sendfile.c:125
+#, c-format
+msgid "ircp_put_file_a returns %d\n"
+msgstr ""
+
+#: ../src/sendfile.c:156
+#, c-format
+msgid "send %s %s"
+msgstr "发送 %s %s"
+
+#: ../src/sendfile.c:176
+#, c-format
+msgid "send session quit. finished %d, success %d\n"
+msgstr "发送会话退出。己完成 %d，成功 %d\n"
+
+#: ../src/sendfile.c:191
+msgid "File was sent successfully"
+msgstr "文件已经发送成功。"
+
+#: ../src/sendfile.c:194
+msgid "File beaming was aborted by remote"
+msgstr "远程设备文件中断了文件传送。"
+
+#: ../src/sendfile.c:215
+msgid ""
+"It seems no active device around here, Do you still want to continue?\n"
+"OK to proceed"
+msgstr "没有发现可用的设备，你仍然要继续吗？\n"
+"点确定继续"
+
+#: ../src/sendfile.c:233
+msgid "Select File to Beam"
+msgstr "选择要发送的文件"
+
+#: ../src/sendfile.c:254
+#, c-format
+msgid "sendfile dialog quit\n"
+msgstr "发送文件对话框退出。\n"
+
+#: ../src/sendfile.c:280
+#, c-format
+msgid "drop: "
+msgstr ""
+
+#: ../src/sendfile.c:287
+#, c-format
+msgid "f:%s\n"
+msgstr ""
+
