From a4cd6f37b9b655a0f31684982d3f27ad0f4d27a4 Mon Sep 17 00:00:00 2001
From: Yann Leboulanger <asterix@lagaule.org>
Date: Wed, 2 Mar 2005 22:34:16 +0000
Subject: [PATCH] merge tabbed_chat_window and chat_window no need to restart
 gajim to take into account the use_tabbed_window option (already opened
 windows are not concerned for the moment)

---
 plugins/gtkgui/gtkgui.glade | 1191 +++++++++++++++++------------------
 plugins/gtkgui/gtkgui.py    |  567 +++++------------
 2 files changed, 747 insertions(+), 1011 deletions(-)

diff --git a/plugins/gtkgui/gtkgui.glade b/plugins/gtkgui/gtkgui.glade
index 4feab57798..b035dcd173 100644
--- a/plugins/gtkgui/gtkgui.glade
+++ b/plugins/gtkgui/gtkgui.glade
@@ -313,14 +313,13 @@
   </child>
 </widget>
 
-<widget class="GtkWindow" id="chat_window">
+<widget class="GtkWindow" id="configure_accounts_window">
   <property name="visible">True</property>
-  <property name="title" translatable="yes">Chat</property>
+  <property name="title" translatable="yes">Accounts</property>
   <property name="type">GTK_WINDOW_TOPLEVEL</property>
   <property name="window_position">GTK_WIN_POS_NONE</property>
   <property name="modal">False</property>
-  <property name="default_width">400</property>
-  <property name="default_height">300</property>
+  <property name="default_height">200</property>
   <property name="resizable">True</property>
   <property name="destroy_with_parent">False</property>
   <property name="decorated">True</property>
@@ -328,337 +327,188 @@
   <property name="skip_pager_hint">False</property>
   <property name="type_hint">GDK_WINDOW_TYPE_HINT_NORMAL</property>
   <property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
-  <signal name="destroy" handler="gtk_widget_destroy" last_modification_time="Sun, 12 Oct 2003 18:17:05 GMT"/>
-  <signal name="focus_in_event" handler="on_focus" last_modification_time="Fri, 11 Jun 2004 03:14:21 GMT"/>
-  <signal name="key_press_event" handler="on_chat_key_press_event" last_modification_time="Thu, 06 Jan 2005 12:53:45 GMT"/>
+  <signal name="destroy" handler="on_configure_accounts_window_destroy" last_modification_time="Wed, 02 Mar 2005 12:06:09 GMT"/>
 
   <child>
-    <widget class="GtkVBox" id="vbox2">
-      <property name="border_width">5</property>
+    <widget class="GtkVBox" id="vbox5">
+      <property name="border_width">7</property>
       <property name="visible">True</property>
       <property name="homogeneous">False</property>
       <property name="spacing">0</property>
 
       <child>
-	<widget class="GtkHBox" id="hbox1">
-	  <property name="border_width">5</property>
+	<widget class="GtkScrolledWindow" id="scrolledwindow5">
 	  <property name="visible">True</property>
-	  <property name="homogeneous">False</property>
-	  <property name="spacing">5</property>
+	  <property name="can_focus">True</property>
+	  <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
+	  <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
+	  <property name="shadow_type">GTK_SHADOW_NONE</property>
+	  <property name="window_placement">GTK_CORNER_TOP_LEFT</property>
 
 	  <child>
-	    <widget class="GtkButton" id="history_button">
+	    <widget class="GtkTreeView" id="accounts_treeview">
 	      <property name="visible">True</property>
 	      <property name="can_focus">True</property>
-	      <property name="relief">GTK_RELIEF_NORMAL</property>
-	      <property name="focus_on_click">True</property>
-	      <signal name="clicked" handler="on_history_clicked" last_modification_time="Sun, 04 Apr 2004 05:30:58 GMT"/>
+	      <property name="headers_visible">True</property>
+	      <property name="rules_hint">False</property>
+	      <property name="reorderable">False</property>
+	      <property name="enable_search">True</property>
+	      <signal name="cursor_changed" handler="on_accounts_treeview_cursor_changed" last_modification_time="Tue, 01 Mar 2005 18:21:26 GMT"/>
+	    </widget>
+	  </child>
+	</widget>
+	<packing>
+	  <property name="padding">0</property>
+	  <property name="expand">True</property>
+	  <property name="fill">True</property>
+	</packing>
+      </child>
 
-	      <child>
-		<widget class="GtkAlignment" id="alignment4">
-		  <property name="visible">True</property>
-		  <property name="xalign">0.5</property>
-		  <property name="yalign">0.5</property>
-		  <property name="xscale">0</property>
-		  <property name="yscale">0</property>
-		  <property name="top_padding">0</property>
-		  <property name="bottom_padding">0</property>
-		  <property name="left_padding">0</property>
-		  <property name="right_padding">0</property>
+      <child>
+	<widget class="GtkHSeparator" id="hseparator1">
+	  <property name="visible">True</property>
+	</widget>
+	<packing>
+	  <property name="padding">10</property>
+	  <property name="expand">False</property>
+	  <property name="fill">True</property>
+	</packing>
+      </child>
 
-		  <child>
-		    <widget class="GtkHBox" id="hbox8">
-		      <property name="visible">True</property>
-		      <property name="homogeneous">False</property>
-		      <property name="spacing">2</property>
+      <child>
+	<widget class="GtkAlignment" id="alignment1">
+	  <property name="visible">True</property>
+	  <property name="xalign">0.5</property>
+	  <property name="yalign">0.5</property>
+	  <property name="xscale">0</property>
+	  <property name="yscale">1</property>
+	  <property name="top_padding">0</property>
+	  <property name="bottom_padding">0</property>
+	  <property name="left_padding">0</property>
+	  <property name="right_padding">0</property>
 
-		      <child>
-			<widget class="GtkImage" id="image14">
-			  <property name="visible">True</property>
-			  <property name="stock">gtk-justify-fill</property>
-			  <property name="icon_size">4</property>
-			  <property name="xalign">0.5</property>
-			  <property name="yalign">0.5</property>
-			  <property name="xpad">0</property>
-			  <property name="ypad">0</property>
-			</widget>
-			<packing>
-			  <property name="padding">0</property>
-			  <property name="expand">False</property>
-			  <property name="fill">False</property>
-			</packing>
-		      </child>
+	  <child>
+	    <widget class="GtkHButtonBox" id="hbuttonbox15">
+	      <property name="border_width">5</property>
+	      <property name="visible">True</property>
+	      <property name="layout_style">GTK_BUTTONBOX_END</property>
+	      <property name="spacing">7</property>
 
-		      <child>
-			<widget class="GtkLabel" id="label14">
-			  <property name="visible">True</property>
-			  <property name="label" translatable="yes">History</property>
-			  <property name="use_underline">True</property>
-			  <property name="use_markup">False</property>
-			  <property name="justify">GTK_JUSTIFY_LEFT</property>
-			  <property name="wrap">False</property>
-			  <property name="selectable">False</property>
-			  <property name="xalign">0.5</property>
-			  <property name="yalign">0.5</property>
-			  <property name="xpad">0</property>
-			  <property name="ypad">0</property>
-			</widget>
-			<packing>
-			  <property name="padding">0</property>
-			  <property name="expand">False</property>
-			  <property name="fill">False</property>
-			</packing>
-		      </child>
-		    </widget>
-		  </child>
+	      <child>
+		<widget class="GtkButton" id="new_button">
+		  <property name="visible">True</property>
+		  <property name="can_default">True</property>
+		  <property name="can_focus">True</property>
+		  <property name="label">gtk-new</property>
+		  <property name="use_stock">True</property>
+		  <property name="relief">GTK_RELIEF_NORMAL</property>
+		  <property name="focus_on_click">True</property>
+		  <signal name="clicked" handler="on_new_button_clicked" last_modification_time="Tue, 01 Mar 2005 18:20:36 GMT"/>
 		</widget>
 	      </child>
-	    </widget>
-	    <packing>
-	      <property name="padding">0</property>
-	      <property name="expand">False</property>
-	      <property name="fill">False</property>
-	    </packing>
-	  </child>
-
-	  <child>
-	    <widget class="GtkButton" id="clear_button">
-	      <property name="visible">True</property>
-	      <property name="can_focus">True</property>
-	      <property name="relief">GTK_RELIEF_NORMAL</property>
-	      <property name="focus_on_click">True</property>
-	      <signal name="clicked" handler="on_clear_clicked" last_modification_time="Thu, 18 Mar 2004 19:12:00 GMT"/>
 
 	      <child>
-		<widget class="GtkAlignment" id="alignment5">
+		<widget class="GtkButton" id="modify_button">
 		  <property name="visible">True</property>
-		  <property name="xalign">0.5</property>
-		  <property name="yalign">0.5</property>
-		  <property name="xscale">0</property>
-		  <property name="yscale">0</property>
-		  <property name="top_padding">0</property>
-		  <property name="bottom_padding">0</property>
-		  <property name="left_padding">0</property>
-		  <property name="right_padding">0</property>
+		  <property name="can_default">True</property>
+		  <property name="can_focus">True</property>
+		  <property name="relief">GTK_RELIEF_NORMAL</property>
+		  <property name="focus_on_click">True</property>
+		  <signal name="clicked" handler="on_modify_button_clicked" last_modification_time="Tue, 01 Mar 2005 18:20:53 GMT"/>
 
 		  <child>
-		    <widget class="GtkHBox" id="hbox9">
+		    <widget class="GtkAlignment" id="alignment44">
 		      <property name="visible">True</property>
-		      <property name="homogeneous">False</property>
-		      <property name="spacing">2</property>
+		      <property name="xalign">0.5</property>
+		      <property name="yalign">0.5</property>
+		      <property name="xscale">0</property>
+		      <property name="yscale">0</property>
+		      <property name="top_padding">0</property>
+		      <property name="bottom_padding">0</property>
+		      <property name="left_padding">0</property>
+		      <property name="right_padding">0</property>
 
 		      <child>
-			<widget class="GtkImage" id="image15">
+			<widget class="GtkHBox" id="hbox2919">
 			  <property name="visible">True</property>
-			  <property name="stock">gtk-clear</property>
-			  <property name="icon_size">4</property>
-			  <property name="xalign">0.5</property>
-			  <property name="yalign">0.5</property>
-			  <property name="xpad">0</property>
-			  <property name="ypad">0</property>
-			</widget>
-			<packing>
-			  <property name="padding">0</property>
-			  <property name="expand">False</property>
-			  <property name="fill">False</property>
-			</packing>
-		      </child>
+			  <property name="homogeneous">False</property>
+			  <property name="spacing">2</property>
 
-		      <child>
-			<widget class="GtkLabel" id="label15">
-			  <property name="visible">True</property>
-			  <property name="label" translatable="yes">Clear</property>
-			  <property name="use_underline">True</property>
-			  <property name="use_markup">False</property>
-			  <property name="justify">GTK_JUSTIFY_LEFT</property>
-			  <property name="wrap">False</property>
-			  <property name="selectable">False</property>
-			  <property name="xalign">0.5</property>
-			  <property name="yalign">0.5</property>
-			  <property name="xpad">0</property>
-			  <property name="ypad">0</property>
+			  <child>
+			    <widget class="GtkImage" id="image334">
+			      <property name="visible">True</property>
+			      <property name="stock">gtk-preferences</property>
+			      <property name="icon_size">4</property>
+			      <property name="xalign">0.5</property>
+			      <property name="yalign">0.5</property>
+			      <property name="xpad">0</property>
+			      <property name="ypad">0</property>
+			    </widget>
+			    <packing>
+			      <property name="padding">0</property>
+			      <property name="expand">False</property>
+			      <property name="fill">False</property>
+			    </packing>
+			  </child>
+
+			  <child>
+			    <widget class="GtkLabel" id="label201">
+			      <property name="visible">True</property>
+			      <property name="label" translatable="yes">_Modify</property>
+			      <property name="use_underline">True</property>
+			      <property name="use_markup">False</property>
+			      <property name="justify">GTK_JUSTIFY_LEFT</property>
+			      <property name="wrap">False</property>
+			      <property name="selectable">False</property>
+			      <property name="xalign">0.5</property>
+			      <property name="yalign">0.5</property>
+			      <property name="xpad">0</property>
+			      <property name="ypad">0</property>
+			    </widget>
+			    <packing>
+			      <property name="padding">0</property>
+			      <property name="expand">False</property>
+			      <property name="fill">False</property>
+			    </packing>
+			  </child>
 			</widget>
-			<packing>
-			  <property name="padding">0</property>
-			  <property name="expand">False</property>
-			  <property name="fill">False</property>
-			</packing>
 		      </child>
 		    </widget>
 		  </child>
 		</widget>
 	      </child>
-	    </widget>
-	    <packing>
-	      <property name="padding">0</property>
-	      <property name="expand">False</property>
-	      <property name="fill">False</property>
-	    </packing>
-	  </child>
-
-	  <child>
-	    <widget class="GtkImage" id="status_image">
-	      <property name="visible">True</property>
-	      <property name="stock">gtk-no</property>
-	      <property name="icon_size">4</property>
-	      <property name="xalign">0.5</property>
-	      <property name="yalign">0.5</property>
-	      <property name="xpad">0</property>
-	      <property name="ypad">0</property>
-	    </widget>
-	    <packing>
-	      <property name="padding">0</property>
-	      <property name="expand">False</property>
-	      <property name="fill">False</property>
-	    </packing>
-	  </child>
-
-	  <child>
-	    <widget class="GtkToggleButton" id="gpg_toggle_button">
-	      <property name="visible">True</property>
-	      <property name="can_focus">True</property>
-	      <property name="relief">GTK_RELIEF_NONE</property>
-	      <property name="focus_on_click">False</property>
-	      <property name="active">False</property>
-	      <property name="inconsistent">False</property>
 
 	      <child>
-		<widget class="GtkImage" id="image169">
+		<widget class="GtkButton" id="delete_button">
 		  <property name="visible">True</property>
-		  <property name="stock">gtk-dialog-authentication</property>
-		  <property name="icon_size">4</property>
-		  <property name="xalign">0.5</property>
-		  <property name="yalign">0.5</property>
-		  <property name="xpad">0</property>
-		  <property name="ypad">0</property>
-		</widget>
-	      </child>
-	    </widget>
-	    <packing>
-	      <property name="padding">0</property>
-	      <property name="expand">False</property>
-	      <property name="fill">False</property>
-	    </packing>
-	  </child>
-
-	  <child>
-	    <widget class="GtkFixed" id="fixed1">
-	      <property name="width_request">20</property>
-	      <property name="visible">True</property>
-
-	      <child>
-		<widget class="GtkButton" id="contact_button">
-		  <property name="width_request">0</property>
-		  <property name="height_request">0</property>
-		  <property name="visible">True</property>
-		  <property name="tooltip" translatable="yes">Click to see contact's information</property>
+		  <property name="can_default">True</property>
 		  <property name="can_focus">True</property>
-		  <property name="label" translatable="yes">Anonymous &lt;id@server/res&gt;</property>
-		  <property name="use_underline">True</property>
-		  <property name="relief">GTK_RELIEF_NONE</property>
+		  <property name="label">gtk-delete</property>
+		  <property name="use_stock">True</property>
+		  <property name="relief">GTK_RELIEF_NORMAL</property>
 		  <property name="focus_on_click">True</property>
-		  <signal name="clicked" handler="on_button_contact_clicked" last_modification_time="Sun, 15 Feb 2004 14:26:53 GMT"/>
-		</widget>
-		<packing>
-		  <property name="x">0</property>
-		  <property name="y">0</property>
-		</packing>
-	      </child>
-	    </widget>
-	    <packing>
-	      <property name="padding">0</property>
-	      <property name="expand">True</property>
-	      <property name="fill">True</property>
-	    </packing>
-	  </child>
-	</widget>
-	<packing>
-	  <property name="padding">0</property>
-	  <property name="expand">False</property>
-	  <property name="fill">True</property>
-	</packing>
-      </child>
-
-      <child>
-	<widget class="GtkVPaned" id="vpaned1">
-	  <property name="visible">True</property>
-	  <property name="can_focus">True</property>
-	  <property name="position">170</property>
-
-	  <child>
-	    <widget class="GtkScrolledWindow" id="scrolledwindow3">
-	      <property name="visible">True</property>
-	      <property name="can_focus">True</property>
-	      <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
-	      <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
-	      <property name="shadow_type">GTK_SHADOW_IN</property>
-	      <property name="window_placement">GTK_CORNER_TOP_LEFT</property>
-
-	      <child>
-		<widget class="GtkTextView" id="conversation_textview">
-		  <property name="visible">True</property>
-		  <property name="can_focus">True</property>
-		  <property name="editable">False</property>
-		  <property name="overwrite">False</property>
-		  <property name="accepts_tab">True</property>
-		  <property name="justification">GTK_JUSTIFY_LEFT</property>
-		  <property name="wrap_mode">GTK_WRAP_WORD</property>
-		  <property name="cursor_visible">False</property>
-		  <property name="pixels_above_lines">0</property>
-		  <property name="pixels_below_lines">0</property>
-		  <property name="pixels_inside_wrap">0</property>
-		  <property name="left_margin">0</property>
-		  <property name="right_margin">0</property>
-		  <property name="indent">0</property>
-		  <property name="text" translatable="yes"></property>
+		  <signal name="clicked" handler="on_delete_button_clicked" last_modification_time="Tue, 01 Mar 2005 18:20:46 GMT"/>
 		</widget>
 	      </child>
-	    </widget>
-	    <packing>
-	      <property name="shrink">True</property>
-	      <property name="resize">True</property>
-	    </packing>
-	  </child>
-
-	  <child>
-	    <widget class="GtkScrolledWindow" id="scrolledwindow4">
-	      <property name="visible">True</property>
-	      <property name="can_focus">True</property>
-	      <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
-	      <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
-	      <property name="shadow_type">GTK_SHADOW_IN</property>
-	      <property name="window_placement">GTK_CORNER_TOP_LEFT</property>
 
 	      <child>
-		<widget class="GtkTextView" id="message_textview">
+		<widget class="GtkButton" id="close_button">
 		  <property name="visible">True</property>
+		  <property name="can_default">True</property>
 		  <property name="can_focus">True</property>
-		  <property name="editable">True</property>
-		  <property name="overwrite">False</property>
-		  <property name="accepts_tab">True</property>
-		  <property name="justification">GTK_JUSTIFY_LEFT</property>
-		  <property name="wrap_mode">GTK_WRAP_WORD</property>
-		  <property name="cursor_visible">True</property>
-		  <property name="pixels_above_lines">0</property>
-		  <property name="pixels_below_lines">0</property>
-		  <property name="pixels_inside_wrap">0</property>
-		  <property name="left_margin">0</property>
-		  <property name="right_margin">0</property>
-		  <property name="indent">0</property>
-		  <property name="text" translatable="yes"></property>
-		  <signal name="key_press_event" handler="on_msg_key_press_event" last_modification_time="Mon, 13 Oct 2003 17:48:48 GMT"/>
+		  <property name="label">gtk-close</property>
+		  <property name="use_stock">True</property>
+		  <property name="relief">GTK_RELIEF_NORMAL</property>
+		  <property name="focus_on_click">True</property>
+		  <signal name="clicked" handler="on_close_button_clicked" last_modification_time="Tue, 01 Mar 2005 18:21:00 GMT"/>
 		</widget>
 	      </child>
 	    </widget>
-	    <packing>
-	      <property name="shrink">True</property>
-	      <property name="resize">True</property>
-	    </packing>
 	  </child>
 	</widget>
 	<packing>
 	  <property name="padding">0</property>
-	  <property name="expand">True</property>
+	  <property name="expand">False</property>
 	  <property name="fill">True</property>
 	</packing>
       </child>
@@ -666,13 +516,12 @@
   </child>
 </widget>
 
-<widget class="GtkWindow" id="configure_accounts_window">
+<widget class="GtkWindow" id="about_window">
   <property name="visible">True</property>
-  <property name="title" translatable="yes">Accounts</property>
+  <property name="title" translatable="yes">About</property>
   <property name="type">GTK_WINDOW_TOPLEVEL</property>
   <property name="window_position">GTK_WIN_POS_NONE</property>
   <property name="modal">False</property>
-  <property name="default_height">200</property>
   <property name="resizable">True</property>
   <property name="destroy_with_parent">False</property>
   <property name="decorated">True</property>
@@ -680,34 +529,62 @@
   <property name="skip_pager_hint">False</property>
   <property name="type_hint">GDK_WINDOW_TYPE_HINT_NORMAL</property>
   <property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
-  <signal name="destroy" handler="on_configure_accounts_window_destroy" last_modification_time="Wed, 02 Mar 2005 12:06:09 GMT"/>
+  <signal name="destroy" handler="gtk_widget_destroy" last_modification_time="Wed, 17 Mar 2004 19:51:57 GMT"/>
 
   <child>
-    <widget class="GtkVBox" id="vbox5">
-      <property name="border_width">7</property>
+    <widget class="GtkVBox" id="vbox6">
       <property name="visible">True</property>
       <property name="homogeneous">False</property>
       <property name="spacing">0</property>
 
       <child>
-	<widget class="GtkScrolledWindow" id="scrolledwindow5">
+	<widget class="GtkHBox" id="hbox4">
 	  <property name="visible">True</property>
-	  <property name="can_focus">True</property>
-	  <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
-	  <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
-	  <property name="shadow_type">GTK_SHADOW_NONE</property>
-	  <property name="window_placement">GTK_CORNER_TOP_LEFT</property>
+	  <property name="homogeneous">False</property>
+	  <property name="spacing">0</property>
 
 	  <child>
-	    <widget class="GtkTreeView" id="accounts_treeview">
+	    <widget class="GtkImage" id="logo_image">
 	      <property name="visible">True</property>
-	      <property name="can_focus">True</property>
-	      <property name="headers_visible">True</property>
-	      <property name="rules_hint">False</property>
-	      <property name="reorderable">False</property>
-	      <property name="enable_search">True</property>
-	      <signal name="cursor_changed" handler="on_accounts_treeview_cursor_changed" last_modification_time="Tue, 01 Mar 2005 18:21:26 GMT"/>
+	      <property name="xalign">0.5</property>
+	      <property name="yalign">0.5</property>
+	      <property name="xpad">0</property>
+	      <property name="ypad">0</property>
+	    </widget>
+	    <packing>
+	      <property name="padding">10</property>
+	      <property name="expand">False</property>
+	      <property name="fill">True</property>
+	    </packing>
+	  </child>
+
+	  <child>
+	    <widget class="GtkLabel" id="label2">
+	      <property name="visible">True</property>
+	      <property name="label" translatable="yes">&lt;b&gt;Gajim&lt;/b&gt; (http://www.gajim.org) 
+Version 0.5.1
+
+Copyright © 2003-2005 Gajim Team
+
+&lt;b&gt;Gajim Team&lt;/b&gt;
+Vincent Hanquez (tab@snarc.org)
+Yann Le Boulanger (asterix@lagaule.org)
+Nikos Kouremenos (nkour@jabber.org)</property>
+	      <property name="use_underline">False</property>
+	      <property name="use_markup">True</property>
+	      <property name="justify">GTK_JUSTIFY_LEFT</property>
+	      <property name="wrap">False</property>
+	      <property name="selectable">False</property>
+	      <property name="xalign">0.5</property>
+	      <property name="yalign">0.5</property>
+	      <property name="xpad">0</property>
+	      <property name="ypad">0</property>
 	    </widget>
+	    <packing>
+	      <property name="padding">10</property>
+	      <property name="expand">True</property>
+	      <property name="fill">True</property>
+	    </packing>
 	  </child>
 	</widget>
 	<packing>
@@ -718,7 +595,7 @@
       </child>
 
       <child>
-	<widget class="GtkHSeparator" id="hseparator1">
+	<widget class="GtkHSeparator" id="hseparator2">
 	  <property name="visible">True</property>
 	</widget>
 	<packing>
@@ -729,11 +606,12 @@
       </child>
 
       <child>
-	<widget class="GtkAlignment" id="alignment1">
+	<widget class="GtkAlignment" id="alignment2">
+	  <property name="border_width">10</property>
 	  <property name="visible">True</property>
 	  <property name="xalign">0.5</property>
 	  <property name="yalign">0.5</property>
-	  <property name="xscale">0</property>
+	  <property name="xscale">0.20000000298</property>
 	  <property name="yscale">1</property>
 	  <property name="top_padding">0</property>
 	  <property name="bottom_padding">0</property>
@@ -741,278 +619,47 @@
 	  <property name="right_padding">0</property>
 
 	  <child>
-	    <widget class="GtkHButtonBox" id="hbuttonbox15">
-	      <property name="border_width">5</property>
+	    <widget class="GtkButton" id="close_button">
 	      <property name="visible">True</property>
-	      <property name="layout_style">GTK_BUTTONBOX_END</property>
-	      <property name="spacing">7</property>
+	      <property name="can_focus">True</property>
+	      <property name="label">gtk-close</property>
+	      <property name="use_stock">True</property>
+	      <property name="relief">GTK_RELIEF_NORMAL</property>
+	      <property name="focus_on_click">True</property>
+	      <signal name="clicked" handler="on_close_clicked" last_modification_time="Sun, 26 Oct 2003 20:45:42 GMT"/>
+	    </widget>
+	  </child>
+	</widget>
+	<packing>
+	  <property name="padding">0</property>
+	  <property name="expand">False</property>
+	  <property name="fill">False</property>
+	</packing>
+      </child>
+    </widget>
+  </child>
+</widget>
 
-	      <child>
-		<widget class="GtkButton" id="new_button">
-		  <property name="visible">True</property>
-		  <property name="can_default">True</property>
-		  <property name="can_focus">True</property>
-		  <property name="label">gtk-new</property>
-		  <property name="use_stock">True</property>
-		  <property name="relief">GTK_RELIEF_NORMAL</property>
-		  <property name="focus_on_click">True</property>
-		  <signal name="clicked" handler="on_new_button_clicked" last_modification_time="Tue, 01 Mar 2005 18:20:36 GMT"/>
-		</widget>
-	      </child>
+<widget class="GtkWindow" id="account_window">
+  <property name="visible">True</property>
+  <property name="title" translatable="yes">Account Modification</property>
+  <property name="type">GTK_WINDOW_TOPLEVEL</property>
+  <property name="window_position">GTK_WIN_POS_NONE</property>
+  <property name="modal">False</property>
+  <property name="resizable">True</property>
+  <property name="destroy_with_parent">False</property>
+  <property name="decorated">True</property>
+  <property name="skip_taskbar_hint">False</property>
+  <property name="skip_pager_hint">False</property>
+  <property name="type_hint">GDK_WINDOW_TYPE_HINT_NORMAL</property>
+  <property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
+  <signal name="destroy" handler="on_account_window_destroy" last_modification_time="Mon, 28 Feb 2005 20:30:37 GMT"/>
 
-	      <child>
-		<widget class="GtkButton" id="modify_button">
-		  <property name="visible">True</property>
-		  <property name="can_default">True</property>
-		  <property name="can_focus">True</property>
-		  <property name="relief">GTK_RELIEF_NORMAL</property>
-		  <property name="focus_on_click">True</property>
-		  <signal name="clicked" handler="on_modify_button_clicked" last_modification_time="Tue, 01 Mar 2005 18:20:53 GMT"/>
-
-		  <child>
-		    <widget class="GtkAlignment" id="alignment44">
-		      <property name="visible">True</property>
-		      <property name="xalign">0.5</property>
-		      <property name="yalign">0.5</property>
-		      <property name="xscale">0</property>
-		      <property name="yscale">0</property>
-		      <property name="top_padding">0</property>
-		      <property name="bottom_padding">0</property>
-		      <property name="left_padding">0</property>
-		      <property name="right_padding">0</property>
-
-		      <child>
-			<widget class="GtkHBox" id="hbox2919">
-			  <property name="visible">True</property>
-			  <property name="homogeneous">False</property>
-			  <property name="spacing">2</property>
-
-			  <child>
-			    <widget class="GtkImage" id="image334">
-			      <property name="visible">True</property>
-			      <property name="stock">gtk-preferences</property>
-			      <property name="icon_size">4</property>
-			      <property name="xalign">0.5</property>
-			      <property name="yalign">0.5</property>
-			      <property name="xpad">0</property>
-			      <property name="ypad">0</property>
-			    </widget>
-			    <packing>
-			      <property name="padding">0</property>
-			      <property name="expand">False</property>
-			      <property name="fill">False</property>
-			    </packing>
-			  </child>
-
-			  <child>
-			    <widget class="GtkLabel" id="label201">
-			      <property name="visible">True</property>
-			      <property name="label" translatable="yes">_Modify</property>
-			      <property name="use_underline">True</property>
-			      <property name="use_markup">False</property>
-			      <property name="justify">GTK_JUSTIFY_LEFT</property>
-			      <property name="wrap">False</property>
-			      <property name="selectable">False</property>
-			      <property name="xalign">0.5</property>
-			      <property name="yalign">0.5</property>
-			      <property name="xpad">0</property>
-			      <property name="ypad">0</property>
-			    </widget>
-			    <packing>
-			      <property name="padding">0</property>
-			      <property name="expand">False</property>
-			      <property name="fill">False</property>
-			    </packing>
-			  </child>
-			</widget>
-		      </child>
-		    </widget>
-		  </child>
-		</widget>
-	      </child>
-
-	      <child>
-		<widget class="GtkButton" id="delete_button">
-		  <property name="visible">True</property>
-		  <property name="can_default">True</property>
-		  <property name="can_focus">True</property>
-		  <property name="label">gtk-delete</property>
-		  <property name="use_stock">True</property>
-		  <property name="relief">GTK_RELIEF_NORMAL</property>
-		  <property name="focus_on_click">True</property>
-		  <signal name="clicked" handler="on_delete_button_clicked" last_modification_time="Tue, 01 Mar 2005 18:20:46 GMT"/>
-		</widget>
-	      </child>
-
-	      <child>
-		<widget class="GtkButton" id="close_button">
-		  <property name="visible">True</property>
-		  <property name="can_default">True</property>
-		  <property name="can_focus">True</property>
-		  <property name="label">gtk-close</property>
-		  <property name="use_stock">True</property>
-		  <property name="relief">GTK_RELIEF_NORMAL</property>
-		  <property name="focus_on_click">True</property>
-		  <signal name="clicked" handler="on_close_button_clicked" last_modification_time="Tue, 01 Mar 2005 18:21:00 GMT"/>
-		</widget>
-	      </child>
-	    </widget>
-	  </child>
-	</widget>
-	<packing>
-	  <property name="padding">0</property>
-	  <property name="expand">False</property>
-	  <property name="fill">True</property>
-	</packing>
-      </child>
-    </widget>
-  </child>
-</widget>
-
-<widget class="GtkWindow" id="about_window">
-  <property name="visible">True</property>
-  <property name="title" translatable="yes">About</property>
-  <property name="type">GTK_WINDOW_TOPLEVEL</property>
-  <property name="window_position">GTK_WIN_POS_NONE</property>
-  <property name="modal">False</property>
-  <property name="resizable">True</property>
-  <property name="destroy_with_parent">False</property>
-  <property name="decorated">True</property>
-  <property name="skip_taskbar_hint">False</property>
-  <property name="skip_pager_hint">False</property>
-  <property name="type_hint">GDK_WINDOW_TYPE_HINT_NORMAL</property>
-  <property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
-  <signal name="destroy" handler="gtk_widget_destroy" last_modification_time="Wed, 17 Mar 2004 19:51:57 GMT"/>
-
-  <child>
-    <widget class="GtkVBox" id="vbox6">
-      <property name="visible">True</property>
-      <property name="homogeneous">False</property>
-      <property name="spacing">0</property>
-
-      <child>
-	<widget class="GtkHBox" id="hbox4">
-	  <property name="visible">True</property>
-	  <property name="homogeneous">False</property>
-	  <property name="spacing">0</property>
-
-	  <child>
-	    <widget class="GtkImage" id="logo_image">
-	      <property name="visible">True</property>
-	      <property name="xalign">0.5</property>
-	      <property name="yalign">0.5</property>
-	      <property name="xpad">0</property>
-	      <property name="ypad">0</property>
-	    </widget>
-	    <packing>
-	      <property name="padding">10</property>
-	      <property name="expand">False</property>
-	      <property name="fill">True</property>
-	    </packing>
-	  </child>
-
-	  <child>
-	    <widget class="GtkLabel" id="label2">
-	      <property name="visible">True</property>
-	      <property name="label" translatable="yes">&lt;b&gt;Gajim&lt;/b&gt; (http://www.gajim.org) 
-Version 0.5.1
-
-Copyright © 2003-2005 Gajim Team
-
-&lt;b&gt;Gajim Team&lt;/b&gt;
-Vincent Hanquez (tab@snarc.org)
-Yann Le Boulanger (asterix@lagaule.org)
-Nikos Kouremenos (nkour@jabber.org)</property>
-	      <property name="use_underline">False</property>
-	      <property name="use_markup">True</property>
-	      <property name="justify">GTK_JUSTIFY_LEFT</property>
-	      <property name="wrap">False</property>
-	      <property name="selectable">False</property>
-	      <property name="xalign">0.5</property>
-	      <property name="yalign">0.5</property>
-	      <property name="xpad">0</property>
-	      <property name="ypad">0</property>
-	    </widget>
-	    <packing>
-	      <property name="padding">10</property>
-	      <property name="expand">True</property>
-	      <property name="fill">True</property>
-	    </packing>
-	  </child>
-	</widget>
-	<packing>
-	  <property name="padding">0</property>
-	  <property name="expand">True</property>
-	  <property name="fill">True</property>
-	</packing>
-      </child>
-
-      <child>
-	<widget class="GtkHSeparator" id="hseparator2">
-	  <property name="visible">True</property>
-	</widget>
-	<packing>
-	  <property name="padding">10</property>
-	  <property name="expand">False</property>
-	  <property name="fill">True</property>
-	</packing>
-      </child>
-
-      <child>
-	<widget class="GtkAlignment" id="alignment2">
-	  <property name="border_width">10</property>
-	  <property name="visible">True</property>
-	  <property name="xalign">0.5</property>
-	  <property name="yalign">0.5</property>
-	  <property name="xscale">0.20000000298</property>
-	  <property name="yscale">1</property>
-	  <property name="top_padding">0</property>
-	  <property name="bottom_padding">0</property>
-	  <property name="left_padding">0</property>
-	  <property name="right_padding">0</property>
-
-	  <child>
-	    <widget class="GtkButton" id="close_button">
-	      <property name="visible">True</property>
-	      <property name="can_focus">True</property>
-	      <property name="label">gtk-close</property>
-	      <property name="use_stock">True</property>
-	      <property name="relief">GTK_RELIEF_NORMAL</property>
-	      <property name="focus_on_click">True</property>
-	      <signal name="clicked" handler="on_close_clicked" last_modification_time="Sun, 26 Oct 2003 20:45:42 GMT"/>
-	    </widget>
-	  </child>
-	</widget>
-	<packing>
-	  <property name="padding">0</property>
-	  <property name="expand">False</property>
-	  <property name="fill">False</property>
-	</packing>
-      </child>
-    </widget>
-  </child>
-</widget>
-
-<widget class="GtkWindow" id="account_window">
-  <property name="visible">True</property>
-  <property name="title" translatable="yes">Account Modification</property>
-  <property name="type">GTK_WINDOW_TOPLEVEL</property>
-  <property name="window_position">GTK_WIN_POS_NONE</property>
-  <property name="modal">False</property>
-  <property name="resizable">True</property>
-  <property name="destroy_with_parent">False</property>
-  <property name="decorated">True</property>
-  <property name="skip_taskbar_hint">False</property>
-  <property name="skip_pager_hint">False</property>
-  <property name="type_hint">GDK_WINDOW_TYPE_HINT_NORMAL</property>
-  <property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
-  <signal name="destroy" handler="on_account_window_destroy" last_modification_time="Mon, 28 Feb 2005 20:30:37 GMT"/>
-
-  <child>
-    <widget class="GtkVBox" id="vbox7">
-      <property name="visible">True</property>
-      <property name="homogeneous">False</property>
-      <property name="spacing">0</property>
+  <child>
+    <widget class="GtkVBox" id="vbox7">
+      <property name="visible">True</property>
+      <property name="homogeneous">False</property>
+      <property name="spacing">0</property>
 
       <child>
 	<widget class="GtkHBox" id="hbox23">
@@ -8155,7 +7802,7 @@ Custom</property>
   </child>
 </widget>
 
-<widget class="GtkWindow" id="tabbed_chat">
+<widget class="GtkWindow" id="tabbed_chat_window">
   <property name="visible">True</property>
   <property name="title" translatable="yes">Chat</property>
   <property name="type">GTK_WINDOW_TOPLEVEL</property>
@@ -8164,50 +7811,394 @@ Custom</property>
   <property name="default_width">400</property>
   <property name="default_height">320</property>
   <property name="resizable">True</property>
-  <property name="destroy_with_parent">False</property>
+  <property name="destroy_with_parent">True</property>
   <property name="decorated">True</property>
   <property name="skip_taskbar_hint">False</property>
   <property name="skip_pager_hint">False</property>
   <property name="type_hint">GDK_WINDOW_TYPE_HINT_NORMAL</property>
   <property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
-  <signal name="destroy" handler="gtk_widget_destroy" last_modification_time="Thu, 27 Jan 2005 08:30:06 GMT"/>
-  <signal name="focus_in_event" handler="on_focus" last_modification_time="Thu, 27 Jan 2005 08:30:54 GMT"/>
-  <signal name="key_press_event" handler="on_chat_key_press_event" last_modification_time="Thu, 27 Jan 2005 08:31:21 GMT"/>
+  <signal name="destroy" handler="on_tabbed_chat_window_destroy" last_modification_time="Wed, 02 Mar 2005 17:56:08 GMT"/>
+  <signal name="focus_in_event" handler="on_tabbed_chat_window_focus_in_event" last_modification_time="Wed, 02 Mar 2005 17:57:33 GMT"/>
+  <signal name="key_press_event" handler="on_tabbed_chat_window_key_press_event" last_modification_time="Wed, 02 Mar 2005 17:59:50 GMT"/>
 
   <child>
-    <widget class="GtkNotebook" id="notebook">
+    <widget class="GtkNotebook" id="chat_notebook">
       <property name="visible">True</property>
       <property name="show_tabs">False</property>
       <property name="show_border">True</property>
       <property name="tab_pos">GTK_POS_TOP</property>
       <property name="scrollable">False</property>
       <property name="enable_popup">False</property>
-      <signal name="switch_page" handler="on_notebook_switch_page" last_modification_time="Thu, 27 Jan 2005 23:16:57 GMT"/>
+      <signal name="switch_page" handler="on_chat_notebook_switch_page" last_modification_time="Wed, 02 Mar 2005 18:00:21 GMT"/>
 
       <child>
-	<widget class="GtkLabel" id="label191">
+	<widget class="GtkVBox" id="chat_vbox">
+	  <property name="border_width">5</property>
 	  <property name="visible">True</property>
-	  <property name="label" translatable="yes"></property>
-	  <property name="use_underline">False</property>
-	  <property name="use_markup">False</property>
-	  <property name="justify">GTK_JUSTIFY_LEFT</property>
-	  <property name="wrap">False</property>
-	  <property name="selectable">False</property>
-	  <property name="xalign">0.5</property>
-	  <property name="yalign">0.5</property>
-	  <property name="xpad">0</property>
-	  <property name="ypad">0</property>
-	</widget>
-	<packing>
-	  <property name="tab_expand">False</property>
-	  <property name="tab_fill">True</property>
-	</packing>
-      </child>
+	  <property name="homogeneous">False</property>
+	  <property name="spacing">0</property>
 
-      <child>
+	  <child>
+	    <widget class="GtkHBox" id="hbox2921">
+	      <property name="border_width">5</property>
+	      <property name="visible">True</property>
+	      <property name="homogeneous">False</property>
+	      <property name="spacing">5</property>
+
+	      <child>
+		<widget class="GtkButton" id="history_button">
+		  <property name="visible">True</property>
+		  <property name="can_focus">True</property>
+		  <property name="relief">GTK_RELIEF_NORMAL</property>
+		  <property name="focus_on_click">True</property>
+		  <signal name="clicked" handler="on_history_button_clicked" last_modification_time="Wed, 02 Mar 2005 17:03:17 GMT"/>
+
+		  <child>
+		    <widget class="GtkAlignment" id="alignment45">
+		      <property name="visible">True</property>
+		      <property name="xalign">0.5</property>
+		      <property name="yalign">0.5</property>
+		      <property name="xscale">0</property>
+		      <property name="yscale">0</property>
+		      <property name="top_padding">0</property>
+		      <property name="bottom_padding">0</property>
+		      <property name="left_padding">0</property>
+		      <property name="right_padding">0</property>
+
+		      <child>
+			<widget class="GtkHBox" id="hbox2922">
+			  <property name="visible">True</property>
+			  <property name="homogeneous">False</property>
+			  <property name="spacing">2</property>
+
+			  <child>
+			    <widget class="GtkImage" id="image406">
+			      <property name="visible">True</property>
+			      <property name="stock">gtk-justify-fill</property>
+			      <property name="icon_size">4</property>
+			      <property name="xalign">0.5</property>
+			      <property name="yalign">0.5</property>
+			      <property name="xpad">0</property>
+			      <property name="ypad">0</property>
+			    </widget>
+			    <packing>
+			      <property name="padding">0</property>
+			      <property name="expand">False</property>
+			      <property name="fill">False</property>
+			    </packing>
+			  </child>
+
+			  <child>
+			    <widget class="GtkLabel" id="label203">
+			      <property name="visible">True</property>
+			      <property name="label" translatable="yes">History</property>
+			      <property name="use_underline">True</property>
+			      <property name="use_markup">False</property>
+			      <property name="justify">GTK_JUSTIFY_LEFT</property>
+			      <property name="wrap">False</property>
+			      <property name="selectable">False</property>
+			      <property name="xalign">0.5</property>
+			      <property name="yalign">0.5</property>
+			      <property name="xpad">0</property>
+			      <property name="ypad">0</property>
+			    </widget>
+			    <packing>
+			      <property name="padding">0</property>
+			      <property name="expand">False</property>
+			      <property name="fill">False</property>
+			    </packing>
+			  </child>
+			</widget>
+		      </child>
+		    </widget>
+		  </child>
+		</widget>
+		<packing>
+		  <property name="padding">0</property>
+		  <property name="expand">False</property>
+		  <property name="fill">False</property>
+		</packing>
+	      </child>
+
+	      <child>
+		<widget class="GtkButton" id="clear_button">
+		  <property name="visible">True</property>
+		  <property name="can_focus">True</property>
+		  <property name="relief">GTK_RELIEF_NORMAL</property>
+		  <property name="focus_on_click">True</property>
+		  <signal name="clicked" handler="on_clear_button_clicked" last_modification_time="Wed, 02 Mar 2005 17:03:09 GMT"/>
+
+		  <child>
+		    <widget class="GtkAlignment" id="alignment46">
+		      <property name="visible">True</property>
+		      <property name="xalign">0.5</property>
+		      <property name="yalign">0.5</property>
+		      <property name="xscale">0</property>
+		      <property name="yscale">0</property>
+		      <property name="top_padding">0</property>
+		      <property name="bottom_padding">0</property>
+		      <property name="left_padding">0</property>
+		      <property name="right_padding">0</property>
+
+		      <child>
+			<widget class="GtkHBox" id="hbox2923">
+			  <property name="visible">True</property>
+			  <property name="homogeneous">False</property>
+			  <property name="spacing">2</property>
+
+			  <child>
+			    <widget class="GtkImage" id="image407">
+			      <property name="visible">True</property>
+			      <property name="stock">gtk-clear</property>
+			      <property name="icon_size">4</property>
+			      <property name="xalign">0.5</property>
+			      <property name="yalign">0.5</property>
+			      <property name="xpad">0</property>
+			      <property name="ypad">0</property>
+			    </widget>
+			    <packing>
+			      <property name="padding">0</property>
+			      <property name="expand">False</property>
+			      <property name="fill">False</property>
+			    </packing>
+			  </child>
+
+			  <child>
+			    <widget class="GtkLabel" id="label204">
+			      <property name="visible">True</property>
+			      <property name="label" translatable="yes">Clear</property>
+			      <property name="use_underline">True</property>
+			      <property name="use_markup">False</property>
+			      <property name="justify">GTK_JUSTIFY_LEFT</property>
+			      <property name="wrap">False</property>
+			      <property name="selectable">False</property>
+			      <property name="xalign">0.5</property>
+			      <property name="yalign">0.5</property>
+			      <property name="xpad">0</property>
+			      <property name="ypad">0</property>
+			    </widget>
+			    <packing>
+			      <property name="padding">0</property>
+			      <property name="expand">False</property>
+			      <property name="fill">False</property>
+			    </packing>
+			  </child>
+			</widget>
+		      </child>
+		    </widget>
+		  </child>
+		</widget>
+		<packing>
+		  <property name="padding">0</property>
+		  <property name="expand">False</property>
+		  <property name="fill">False</property>
+		</packing>
+	      </child>
+
+	      <child>
+		<widget class="GtkImage" id="status_image">
+		  <property name="visible">True</property>
+		  <property name="stock">gtk-no</property>
+		  <property name="icon_size">4</property>
+		  <property name="xalign">0.5</property>
+		  <property name="yalign">0.5</property>
+		  <property name="xpad">0</property>
+		  <property name="ypad">0</property>
+		</widget>
+		<packing>
+		  <property name="padding">0</property>
+		  <property name="expand">False</property>
+		  <property name="fill">False</property>
+		</packing>
+	      </child>
+
+	      <child>
+		<widget class="GtkToggleButton" id="gpg_togglebutton">
+		  <property name="visible">True</property>
+		  <property name="can_focus">True</property>
+		  <property name="relief">GTK_RELIEF_NONE</property>
+		  <property name="focus_on_click">False</property>
+		  <property name="active">False</property>
+		  <property name="inconsistent">False</property>
+
+		  <child>
+		    <widget class="GtkImage" id="image409">
+		      <property name="visible">True</property>
+		      <property name="stock">gtk-dialog-authentication</property>
+		      <property name="icon_size">4</property>
+		      <property name="xalign">0.5</property>
+		      <property name="yalign">0.5</property>
+		      <property name="xpad">0</property>
+		      <property name="ypad">0</property>
+		    </widget>
+		  </child>
+		</widget>
+		<packing>
+		  <property name="padding">0</property>
+		  <property name="expand">False</property>
+		  <property name="fill">False</property>
+		</packing>
+	      </child>
+
+	      <child>
+		<widget class="GtkFixed" id="fixed2">
+		  <property name="width_request">20</property>
+		  <property name="visible">True</property>
+
+		  <child>
+		    <widget class="GtkButton" id="contact_button">
+		      <property name="width_request">0</property>
+		      <property name="height_request">0</property>
+		      <property name="visible">True</property>
+		      <property name="tooltip" translatable="yes">Click to see contact's information</property>
+		      <property name="can_focus">True</property>
+		      <property name="label" translatable="yes">Anonymous &lt;id@server/res&gt;</property>
+		      <property name="use_underline">True</property>
+		      <property name="relief">GTK_RELIEF_NONE</property>
+		      <property name="focus_on_click">True</property>
+		      <signal name="clicked" handler="on_contact_button_clicked" last_modification_time="Wed, 02 Mar 2005 21:04:43 GMT"/>
+		    </widget>
+		    <packing>
+		      <property name="x">0</property>
+		      <property name="y">0</property>
+		    </packing>
+		  </child>
+		</widget>
+		<packing>
+		  <property name="padding">0</property>
+		  <property name="expand">True</property>
+		  <property name="fill">True</property>
+		</packing>
+	      </child>
+
+	      <child>
+		<widget class="GtkButton" id="close_button">
+		  <property name="visible">True</property>
+		  <property name="can_focus">True</property>
+		  <property name="relief">GTK_RELIEF_NORMAL</property>
+		  <property name="focus_on_click">True</property>
+		  <signal name="clicked" handler="on_close_button_clicked" last_modification_time="Wed, 02 Mar 2005 21:05:12 GMT"/>
+
+		  <child>
+		    <widget class="GtkImage" id="image410">
+		      <property name="visible">True</property>
+		      <property name="stock">gtk-close</property>
+		      <property name="icon_size">4</property>
+		      <property name="xalign">0.5</property>
+		      <property name="yalign">0.5</property>
+		      <property name="xpad">0</property>
+		      <property name="ypad">0</property>
+		    </widget>
+		  </child>
+		</widget>
+		<packing>
+		  <property name="padding">0</property>
+		  <property name="expand">False</property>
+		  <property name="fill">False</property>
+		</packing>
+	      </child>
+	    </widget>
+	    <packing>
+	      <property name="padding">0</property>
+	      <property name="expand">False</property>
+	      <property name="fill">True</property>
+	    </packing>
+	  </child>
+
+	  <child>
+	    <widget class="GtkVPaned" id="vpaned3">
+	      <property name="visible">True</property>
+	      <property name="can_focus">True</property>
+	      <property name="position">170</property>
+
+	      <child>
+		<widget class="GtkScrolledWindow" id="scrolledwindow30">
+		  <property name="visible">True</property>
+		  <property name="can_focus">True</property>
+		  <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
+		  <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
+		  <property name="shadow_type">GTK_SHADOW_IN</property>
+		  <property name="window_placement">GTK_CORNER_TOP_LEFT</property>
+
+		  <child>
+		    <widget class="GtkTextView" id="conversation_textview">
+		      <property name="visible">True</property>
+		      <property name="can_focus">True</property>
+		      <property name="editable">False</property>
+		      <property name="overwrite">False</property>
+		      <property name="accepts_tab">True</property>
+		      <property name="justification">GTK_JUSTIFY_LEFT</property>
+		      <property name="wrap_mode">GTK_WRAP_WORD</property>
+		      <property name="cursor_visible">False</property>
+		      <property name="pixels_above_lines">0</property>
+		      <property name="pixels_below_lines">0</property>
+		      <property name="pixels_inside_wrap">0</property>
+		      <property name="left_margin">0</property>
+		      <property name="right_margin">0</property>
+		      <property name="indent">0</property>
+		      <property name="text" translatable="yes"></property>
+		    </widget>
+		  </child>
+		</widget>
+		<packing>
+		  <property name="shrink">True</property>
+		  <property name="resize">True</property>
+		</packing>
+	      </child>
+
+	      <child>
+		<widget class="GtkScrolledWindow" id="scrolledwindow31">
+		  <property name="visible">True</property>
+		  <property name="can_focus">True</property>
+		  <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
+		  <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
+		  <property name="shadow_type">GTK_SHADOW_IN</property>
+		  <property name="window_placement">GTK_CORNER_TOP_LEFT</property>
+
+		  <child>
+		    <widget class="GtkTextView" id="message_textview">
+		      <property name="visible">True</property>
+		      <property name="can_focus">True</property>
+		      <property name="editable">True</property>
+		      <property name="overwrite">False</property>
+		      <property name="accepts_tab">True</property>
+		      <property name="justification">GTK_JUSTIFY_LEFT</property>
+		      <property name="wrap_mode">GTK_WRAP_WORD</property>
+		      <property name="cursor_visible">True</property>
+		      <property name="pixels_above_lines">0</property>
+		      <property name="pixels_below_lines">0</property>
+		      <property name="pixels_inside_wrap">0</property>
+		      <property name="left_margin">0</property>
+		      <property name="right_margin">0</property>
+		      <property name="indent">0</property>
+		      <property name="text" translatable="yes"></property>
+		      <signal name="key_press_event" handler="on_message_textview_key_press_event" last_modification_time="Wed, 02 Mar 2005 21:05:35 GMT"/>
+		    </widget>
+		  </child>
+		</widget>
+		<packing>
+		  <property name="shrink">True</property>
+		  <property name="resize">True</property>
+		</packing>
+	      </child>
+	    </widget>
+	    <packing>
+	      <property name="padding">0</property>
+	      <property name="expand">True</property>
+	      <property name="fill">True</property>
+	    </packing>
+	  </child>
+	</widget>
+	<packing>
+	  <property name="tab_expand">False</property>
+	  <property name="tab_fill">True</property>
+	</packing>
+      </child>
+
+      <child>
 	<widget class="GtkLabel" id="label184">
 	  <property name="visible">True</property>
-	  <property name="label" translatable="yes">jid</property>
+	  <property name="label" translatable="yes"></property>
 	  <property name="use_underline">False</property>
 	  <property name="use_markup">False</property>
 	  <property name="justify">GTK_JUSTIFY_LEFT</property>
diff --git a/plugins/gtkgui/gtkgui.py b/plugins/gtkgui/gtkgui.py
index 0de948a13f..9a50ed7363 100644
--- a/plugins/gtkgui/gtkgui.py
+++ b/plugins/gtkgui/gtkgui.py
@@ -75,8 +75,6 @@ from config import *
 
 GTKGUI_GLADE='plugins/gtkgui/gtkgui.glade'
 
-USE_TABBED_CHAT = 0
-
 class ImageCellRenderer(gtk.GenericCellRenderer):
 
 	__gproperties__ = {
@@ -98,7 +96,8 @@ class ImageCellRenderer(gtk.GenericCellRenderer):
 		if model.get_value(iter, 0) == image:
 			self.redraw = 1
 			cell_area = tree.get_cell_area(path, tree.get_column(0))
-			tree.queue_draw_area(cell_area.x, cell_area.y, cell_area.width, cell_area.height)
+			tree.queue_draw_area(cell_area.x, cell_area.y, cell_area.width, \
+				cell_area.height)
 
 	def animation_timeout(self, tree, image):
 		if image.get_storage_type() == gtk.IMAGE_ANIMATION:
@@ -107,14 +106,16 @@ class ImageCellRenderer(gtk.GenericCellRenderer):
 			model = tree.get_model()
 			model.foreach(self.func, (image, tree))
 			if self.redraw:
-				gobject.timeout_add(image.get_data('iter').get_delay_time(), self.animation_timeout, tree, image)
+				gobject.timeout_add(image.get_data('iter').get_delay_time(), \
+					self.animation_timeout, tree, image)
 			else:
 				image.set_data('iter', None)
 				
 	def on_render(self, window, widget, background_area,cell_area, \
 		expose_area, flags):
 		pix_rect = gtk.gdk.Rectangle()
-		pix_rect.x, pix_rect.y, pix_rect.width, pix_rect.height = self.on_get_size(widget, cell_area)
+		pix_rect.x, pix_rect.y, pix_rect.width, pix_rect.height = \
+			self.on_get_size(widget, cell_area)
 
 		pix_rect.x += cell_area.x
 		pix_rect.y += cell_area.y
@@ -128,7 +129,8 @@ class ImageCellRenderer(gtk.GenericCellRenderer):
 			if not self.image.get_data('iter'):
 				animation = self.image.get_animation()
 				self.image.set_data('iter', animation.get_iter())
-				gobject.timeout_add(self.image.get_data('iter').get_delay_time(), self.animation_timeout, widget, self.image)
+				gobject.timeout_add(self.image.get_data('iter').get_delay_time(), \
+					self.animation_timeout, widget, self.image)
 
 			pix = self.image.get_data('iter').get_pixbuf()
 		elif self.image.get_storage_type() == gtk.IMAGE_PIXBUF:
@@ -155,8 +157,10 @@ class ImageCellRenderer(gtk.GenericCellRenderer):
 		x_offset = 0
 		y_offset = 0
 		if cell_area and pixbuf_width > 0 and pixbuf_height > 0:
-			x_offset = self.get_property("xalign") * (cell_area.width - calc_width -  self.get_property("xpad"))
-			y_offset = self.get_property("yalign") * (cell_area.height - calc_height -  self.get_property("ypad"))
+			x_offset = self.get_property("xalign") * (cell_area.width - \
+				calc_width -  self.get_property("xpad"))
+			y_offset = self.get_property("yalign") * (cell_area.height - \
+				calc_height -  self.get_property("ypad"))
 		return x_offset, y_offset, calc_width, calc_height
 
 gobject.type_register(ImageCellRenderer)
@@ -192,25 +196,31 @@ class User:
 class tabbed_chat_window:
 	"""Class for tabbed chat window"""
 	def __init__(self, user, plugin, account):
-		self.xml = gtk.glade.XML(GTKGUI_GLADE, 'tabbed_chat', APP)
-		self.xml.get_widget('notebook').remove_page(0)
+		self.xml = gtk.glade.XML(GTKGUI_GLADE, 'tabbed_chat_window', APP)
+		self.chat_notebook = self.xml.get_widget('chat_notebook')
+		self.chat_notebook.remove_page(0)
 		self.plugin = plugin
 		self.account = account
-		self.widgets = {}
+		self.xmls = {}
 		self.tagIn = {}
 		self.tagOut = {}
 		self.tagStatus = {}
-		self.users = {user.jid: user}
-		self.nb_unread = {user.jid: 0}
-		self.window = self.xml.get_widget('tabbed_chat')
+		self.users = {}
+		self.nb_unread = {}
+		self.window = self.xml.get_widget('tabbed_chat_window')
 		self.new_user(user)
 		self.show_title()
-		self.xml.signal_connect('gtk_widget_destroy', self.delete_event)
-		self.xml.signal_connect('on_focus', self.on_focus)
-		self.xml.signal_connect('on_chat_key_press_event', \
-			self.on_chat_key_press_event)
-		self.xml.signal_connect('on_notebook_switch_page', \
-			self.on_notebook_switch_page)
+		self.xml.signal_connect('on_tabbed_chat_window_destroy', \
+			self.on_tabbed_chat_window_destroy)
+		self.xml.signal_connect('on_tabbed_chat_window_focus_in_event', \
+			self.on_tabbed_chat_window_focus_in_event)
+		self.xml.signal_connect('on_tabbed_chat_window_key_press_event', \
+			self.on_tabbed_chat_window_key_press_event)
+		self.xml.signal_connect('on_chat_notebook_switch_page', \
+			self.on_chat_notebook_switch_page)
+		#TODO
+#		if use_tab:
+#			plugin.windows[account]['chats']['tabbed'] = self
 		
 	def update_tags(self):
 		for jid in self.tagIn:
@@ -222,6 +232,7 @@ class tabbed_chat_window:
 				self.plugin.config['statusmsgcolor'])
 
 	def show_title(self):
+		"""redraw the window's title"""
 		unread = 0
 		for jid in self.nb_unread:
 			unread += self.nb_unread[jid]
@@ -233,68 +244,73 @@ class tabbed_chat_window:
 		self.window.set_title(start + "Chat (" + self.account + ")")
 
 	def draw_widgets(self, user):
-		widget_img = self.widgets[user.jid]['image_status']
+		"""draw the widgets in a tab (status_image, contact_button ...)
+		according to the the information in the user variable"""
+		jid = user.jid
+		status_image = self.xmls[jid].get_widget('status_image')
 		image = self.plugin.roster.pixbufs[user.show]
 		if image.get_storage_type() == gtk.IMAGE_ANIMATION:
-			widget_img.set_from_animation(image.get_animation())
+			status_image.set_from_animation(image.get_animation())
 		elif image.get_storage_type() == gtk.IMAGE_PIXBUF:
-			widget_img.set_from_pixbuf(image.get_pixbuf())
-		self.widgets[user.jid]['button_contact'].set_label(\
-			user.name + ' <' + user.jid + '>')
+			status_image.set_from_pixbuf(image.get_pixbuf())
+		contact_button = self.xmls[jid].get_widget('contact_button')
+		contact_button.set_label(user.name + ' <' + jid + '>')
 		if not user.keyID:
-			self.widgets[user.jid]['toggle_gpg'].set_sensitive(False)
+			self.xmls[jid].get_widget('gpg_togglebutton').set_sensitive(False)
 
 	def redraw_tab(self, jid):
+		"""redraw the label of the tab"""
 		start = ''
 		if self.nb_unread[jid] > 1:
 			start = "[" + str(self.nb_unread[jid]) + "] "
 		elif self.nb_unread[jid] == 1:
 			start = "* "
-		nb = self.xml.get_widget("notebook")
-		child = self.widgets[jid]['vbox_tab']
-		nb.set_tab_label_text(child, start + self.users[jid].name)
+		child = self.xmls[jid].get_widget('chat_vbox')
+		self.chat_notebook.set_tab_label_text(child, start + self.users[jid].name)
 
 	def set_image(self, image, jid):
 		if image.get_storage_type() == gtk.IMAGE_ANIMATION:
-			self.widgets[jid]['image_status'].\
+			self.xmls[jid].get_widget('status_image').\
 				set_from_animation(image.get_animation())
 		elif image.get_storage_type() == gtk.IMAGE_PIXBUF:
-			self.widgets[jid]['image_status'].\
+			self.xmls[jid].get_widget('status_image').\
 				set_from_pixbuf(image.get_pixbuf())
 
-	def delete_event(self, widget):
+	def on_tabbed_chat_window_destroy(self, widget):
 		"""close window"""
 		#clean self.plugin.windows[self.account]['chats']
 		for jid in self.users:
 			del self.plugin.windows[self.account]['chats'][jid]
-		del self.plugin.windows[self.account]['chats']['tabbed']
+		if self.plugin.windows[self.account]['chats'].has_key('tabbed'):
+			del self.plugin.windows[self.account]['chats']['tabbed']
 
 	def get_active_jid(self):
-		nb = self.xml.get_widget("notebook")
-		child = nb.get_nth_page(nb.get_current_page())
-		jid = ''
-		for j in self.widgets:
-			c = self.widgets[j]['vbox_tab']
-			if c == child:
-				jid = j
+		active_child = self.chat_notebook.get_nth_page(\
+			self.chat_notebook.get_current_page())
+		active_jid = ''
+		for jid in self.xmls:
+			child = self.xmls[jid].get_widget('chat_vbox')
+			if child == active_child:
+				active_jid = jid
 				break
-		return jid
+		return active_jid
 
-	def on_clear(self, widget):
+	def on_clear_button_clicked(self, widget):
 		"""When clear button is pressed :
 		clear the conversation"""
 		jid = self.get_active_jid()
-		buffer = self.widgets[jid]['conversation'].get_buffer()
-		deb, end = buffer.get_bounds()
-		buffer.delete(deb, end)
+		conversation_buffer = self.xmls[jid].get_widget('conversation_textview').\
+			get_buffer()
+		deb, end = conversation_buffer.get_bounds()
+		conversation_buffer.delete(deb, end)
 
-	def on_close_clicked(self, button):
+	def on_close_button_clicked(self, button):
 		"""When close button is pressed :
 		close a tab"""
 		jid = self.get_active_jid()
 		self.remove_tab(jid)
 
-	def on_focus(self, widget, event):
+	def on_tabbed_chat_window_focus_in_event(self, widget, event):
 		"""When window get focus"""
 		jid = self.get_active_jid()
 		if self.nb_unread[jid] > 0:
@@ -303,140 +319,74 @@ class tabbed_chat_window:
 			self.show_title()
 			self.plugin.systray.remove_jid(jid, self.account)
 
-	def on_history(self, widget):
-		"""When history button is pressed : call log window"""
+	def on_history_button_clicked(self, widget):
+		"""When history button is pressed : call history window"""
 		jid = self.get_active_jid()
 		if not self.plugin.windows['logs'].has_key(jid):
 			self.plugin.windows['logs'][jid] = history_window(self.plugin, jid)
 
-	def on_notebook_switch_page(self, nb, page, page_num):
-		child = nb.get_nth_page(page_num)
-		jid = ''
-		for j in self.widgets:
-			c = self.widgets[j]['vbox_tab']
-			if c == child:
-				jid = j
+	def on_chat_notebook_switch_page(self, notebook, page, page_num):
+		new_child = notebook.get_nth_page(page_num)
+		new_jid = ''
+		for jid in self.xmls:
+			child = self.xmls[jid].get_widget('chat_vbox')
+			if child == new_child:
+				new_jid = jid
 				break
-		if self.nb_unread[jid] > 0:
-			self.nb_unread[jid] = 0
-			self.redraw_tab(jid)
+		if self.nb_unread[new_jid] > 0:
+			self.nb_unread[new_jid] = 0
+			self.redraw_tab(new_jid)
 			self.show_title()
-			self.plugin.systray.remove_jid(jid, self.account)
+			self.plugin.systray.remove_jid(new_jid, self.account)
 
 	def active_tab(self, jid):
-		child = self.widgets[jid]['vbox_tab']
-		nb = self.xml.get_widget("notebook")
-		nb.set_current_page(nb.page_num(child))
-		self.widgets[jid]['message'].grab_focus()
+		child = self.xmls[jid].get_widget('chat_vbox')
+		self.chat_notebook.set_current_page(\
+			self.chat_notebook.page_num(child))
+		self.xmls[jid].get_widget('message_textview').grab_focus()
 
 	def remove_tab(self, jid):
-		if len(self.widgets) == 1:
+		if len(self.xmls) == 1:
 			self.window.destroy()
 		else:
-			nb = self.xml.get_widget('notebook')
-			nb.remove_page(nb.get_current_page())
+			self.chat_notebook.remove_page(\
+				self.chat_notebook.get_current_page())
 			del self.plugin.windows[self.account]['chats'][jid]
 			del self.users[jid]
 			del self.nb_unread[jid]
-			del self.widgets[jid]
+			del self.xmls[jid]
 			del self.tagIn[jid]
 			del self.tagOut[jid]
 			del self.tagStatus[jid]
-			if len(self.widgets) == 1:
-				nb.set_show_tabs(False)
+			if len(self.xmls) == 1:
+				self.chat_notebook.set_show_tabs(False)
 
 	def new_user(self, user):
 		self.nb_unread[user.jid] = 0
 		self.users[user.jid] = user
-
-		self.widgets[user.jid] = {}
-		vb = gtk.VBox()
-		vb.set_border_width(5)
-		self.widgets[user.jid]['vbox_tab'] = vb
-		hb = gtk.HBox(spacing=5)
-		hb.set_border_width(5)
-		vb.pack_start(hb, expand=False)
+		self.xmls[user.jid] = gtk.glade.XML(GTKGUI_GLADE, 'chat_vbox', APP)
 		
-		button = gtk.Button(stock=gtk.STOCK_JUSTIFY_FILL)
-		button.get_children()[0].get_children()[0].get_children()[1].set_text("History")
-		button.connect("clicked", self.on_history)
-		hb.pack_start(button, expand=False, fill=False)
-
-		button = gtk.Button(stock=gtk.STOCK_CLEAR)
-		button.connect("clicked", self.on_clear)
-		hb.pack_start(button, expand=False, fill=False)
-
-		img = gtk.Image()
-		hb.pack_start(img, expand=False, fill=False)
-		self.widgets[user.jid]['image_status'] = img
-
-		img = gtk.Image()
-		img.set_from_stock(gtk.STOCK_DIALOG_AUTHENTICATION, gtk.ICON_SIZE_BUTTON)
-		button = gtk.ToggleButton()
-		button.add(img)
-		button.set_relief(gtk.RELIEF_NONE)
-		hb.pack_start(button, expand=False, fill=False)
-		self.widgets[user.jid]['toggle_gpg'] = button
-
-		fixed = gtk.Fixed()
-		fixed.set_size_request(20, -1)
-		hb.pack_start(fixed)
-		button = gtk.Button("Anonymous")
-		button.set_relief(gtk.RELIEF_NONE)
-		button.connect("clicked", self.on_button_contact_clicked)
-		button.set_use_underline(False)
-		fixed.put(button, 0, 0)
-		self.widgets[user.jid]['button_contact'] = button
-		
-		img = gtk.Image()
-		img.set_from_stock(gtk.STOCK_CLOSE, gtk.ICON_SIZE_BUTTON)
-		button = gtk.Button()
-		button.add(img)
-		button.connect("clicked", self.on_close_clicked)
-		hb.pack_start(button, expand=False, fill=False)
-
-		vp = gtk.VPaned()
-		vb.pack_start(vp)
-		vp.set_position(170)
-
-		sw = gtk.ScrolledWindow()
-		sw.set_shadow_type(gtk.SHADOW_IN)
-		vp.add1(sw)
-		sw.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
-		tv = gtk.TextView()
-		tv.set_wrap_mode(gtk.WRAP_WORD)
-		tv.set_editable(False)
-		tv.set_cursor_visible(False)
-		sw.add(tv)
-		self.widgets[user.jid]['conversation'] = tv
-		buffer = tv.get_buffer()
-		end_iter = buffer.get_end_iter()
-		buffer.create_mark('end', end_iter, 0)
-		self.tagIn[user.jid] = buffer.create_tag("incoming")
+		conversation_textview = \
+			self.xmls[user.jid].get_widget('conversation_textview')
+		conversation_buffer = conversation_textview.get_buffer()
+		end_iter = conversation_buffer.get_end_iter()
+		conversation_buffer.create_mark('end', end_iter, 0)
+		self.tagIn[user.jid] = conversation_buffer.create_tag('incoming')
 		color = self.plugin.config['inmsgcolor']
-		self.tagIn[user.jid].set_property("foreground", color)
-		self.tagOut[user.jid] = buffer.create_tag("outgoing")
+		self.tagIn[user.jid].set_property('foreground', color)
+		self.tagOut[user.jid] = conversation_buffer.create_tag('outgoing')
 		color = self.plugin.config['outmsgcolor']
-		self.tagOut[user.jid].set_property("foreground", color)
-		self.tagStatus[user.jid] = buffer.create_tag("status")
+		self.tagOut[user.jid].set_property('foreground', color)
+		self.tagStatus[user.jid] = conversation_buffer.create_tag('status')
 		color = self.plugin.config['statusmsgcolor']
-		self.tagStatus[user.jid].set_property("foreground", color)
-
-		sw = gtk.ScrolledWindow()
-		sw.set_shadow_type(gtk.SHADOW_IN)
-		vp.add2(sw)
-		sw.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
-		tv = gtk.TextView()
-		tv.set_wrap_mode(gtk.WRAP_WORD)
-		sw.add(tv)
-		self.widgets[user.jid]['message'] = tv
-		tv.connect('key_press_event', self.on_msg_key_press_event)
-
-		vb.show_all()
-		nb = self.xml.get_widget("notebook")
-		nb.append_page(vb)
-		if len(self.widgets) > 1:
-			nb.set_show_tabs(True)
+		self.tagStatus[user.jid].set_property('foreground', color)
+
+		self.xmls[user.jid].signal_autoconnect(self)
+		
+		self.chat_notebook.append_page(self.xmls[user.jid].\
+			get_widget('chat_vbox'))
+		if len(self.xmls) > 1:
+			self.chat_notebook.set_show_tabs(True)
 
 		self.redraw_tab(user.jid)
 		self.draw_widgets(user)
@@ -448,53 +398,53 @@ class tabbed_chat_window:
 			self.print_conversation(_("%s is now %s (%s)") % (user.name, \
 				user.show, user.status), user.jid, 'status')
 
-	def on_msg_key_press_event(self, widget, event):
+	def on_message_textview_key_press_event(self, widget, event):
 		"""When a key is pressed :
 		if enter is pressed without the shit key, message (if not empty) is sent
 		and printed in the conversation"""
 		if event.keyval == gtk.keysyms.Return:
 			if (event.state & gtk.gdk.SHIFT_MASK):
 				return 0
-			txt_buffer = widget.get_buffer()
-			start_iter = txt_buffer.get_start_iter()
-			end_iter = txt_buffer.get_end_iter()
-			txt = txt_buffer.get_text(start_iter, end_iter, 0)
-			if txt != '':
+			message_buffer = widget.get_buffer()
+			start_iter = message_buffer.get_start_iter()
+			end_iter = message_buffer.get_end_iter()
+			message = message_buffer.get_text(start_iter, end_iter, 0)
+			if message != '':
 				keyID = ''
 				jid = self.get_active_jid()
-				if self.widgets[jid]['toggle_gpg'].get_active():
+				if self.xmls[jid].get_widget('gpg_togglebutton').get_active():
 					keyID = self.users[jid].keyID
-				self.plugin.send('MSG', self.account, (jid, txt, keyID))
-				txt_buffer.set_text('', -1)
-				self.print_conversation(txt, jid, jid)
+				self.plugin.send('MSG', self.account, (jid, message, keyID))
+				message_buffer.set_text('', -1)
+				self.print_conversation(message, jid, jid)
 			return 1
 		return 0
 
-	def on_chat_key_press_event(self, widget, event):
-		nb = self.xml.get_widget("notebook")
+	def on_tabbed_chat_window_key_press_event(self, widget, event):
 		st = "1234567890"
 		if event.keyval == gtk.keysyms.Escape:
 			jid = self.get_active_jid()
 			self.remove_tab(jid)
 		elif event.string and event.string in st \
 			and (event.state & gtk.gdk.MOD1_MASK):
-			nb.set_current_page(st.index(event.string))
+			self.chat_notebook.set_current_page(st.index(event.string))
 		elif event.keyval == gtk.keysyms.Page_Down and \
 			(event.state & gtk.gdk.CONTROL_MASK):
-			current = nb.get_current_page()
+			current = self.chat_notebook.get_current_page()
 			if current > 0:
-				nb.set_current_page(current-1)
+				self.chat_notebook.set_current_page(current-1)
 			else:
-				nb.set_current_page(nb.get_n_pages()-1)
+				self.chat_notebook.set_current_page(\
+					self.chat_notebook.get_n_pages()-1)
 		elif event.keyval == gtk.keysyms.Page_Up and \
 			(event.state & gtk.gdk.CONTROL_MASK):
-			current = nb.get_current_page()
-			if current < (nb.get_n_pages()-1):
-				nb.set_current_page(current+1)
+			current = self.chat_notebook.get_current_page()
+			if current < (self.chat_notebook.get_n_pages()-1):
+				self.chat_notebook.set_current_page(current+1)
 			else:
-				nb.set_current_page(0)
+				self.chat_notebook.set_current_page(0)
 
-	def on_button_contact_clicked(self, widget):
+	def on_contact_button_clicked(self, widget):
 		"""When button contact is clicked"""
 		jid = self.get_active_jid()
 		user = self.users[jid]
@@ -505,8 +455,8 @@ class tabbed_chat_window:
 		jid = self.get_active_jid()
 		user = self.users[jid]
 		while not q.empty():
-			evt = q.get()
-			self.print_conversation(evt[0], jid, tim = evt[1])
+			event = q.get()
+			self.print_conversation(event[0], jid, tim = event[1])
 			self.plugin.roster.nb_unread -= 1
 		self.plugin.roster.show_title()
 		del self.plugin.queues[self.account][jid]
@@ -518,27 +468,27 @@ class tabbed_chat_window:
 			if len(self.plugin.roster.contacts[self.account][jid]) == 1:
 				self.plugin.roster.remove_user(user, self.account)
 
-	def print_conversation(self, txt, jid, contact = None, tim = None):
+	def print_conversation(self, text, jid, contact = None, tim = None):
 		"""Print a line in the conversation :
 		if contact is set to status : it's a status message
 		if contact is set to another value : it's an outgoing message
 		if contact is not set : it's an incomming message"""
 		user = self.users[jid]
-		conversation = self.widgets[jid]['conversation']
-		buffer = conversation.get_buffer()
-		if not txt:
-			txt = ""
-		end_iter = buffer.get_end_iter()
+		conversation_textview = self.xmls[jid].get_widget('conversation_textview')
+		conversation_buffer = conversation_textview.get_buffer()
+		if not text:
+			text = ""
+		end_iter = conversation_buffer.get_end_iter()
 		if not tim:
 			tim = time.localtime()
 		tims = time.strftime("[%H:%M:%S]", tim)
-		buffer.insert(end_iter, tims + ' ')
+		conversation_buffer.insert(end_iter, tims + ' ')
 		
-		otxt = ''
-		ttxt = ''
+		otext = ''
+		ttext = ''
 		if contact == 'status':
 			tag = 'status'
-			ttxt = txt + '\n'
+			ttext = text + '\n'
 		else:
 			if contact:
 				tag = 'outgoing'
@@ -547,241 +497,39 @@ class tabbed_chat_window:
 				tag = 'incoming'
 				name = user.name
 				
-			if string.find(txt, '/me ') == 0:
-				ttxt = name + ' ' + txt[4:] + '\n'
+			if string.find(text, '/me ') == 0:
+				ttext = name + ' ' + text[4:] + '\n'
 			else:
-				ttxt = '<' + name + '> '
-				otxt = txt + '\n'
+				ttext = '<' + name + '> '
+				otext = text + '\n'
 
-		buffer.insert_with_tags_by_name(end_iter, ttxt, tag)
-		if len(otxt) > 0:
+		conversation_buffer.insert_with_tags_by_name(end_iter, ttext, tag)
+		if len(otext) > 0:
 			beg = 0
 			if self.plugin.config['useemoticons']:
 				index = 0
-				while index < len(otxt):
-					if otxt[index] in self.plugin.roster.begin_emot:
+				while index < len(otext):
+					if otext[index] in self.plugin.roster.begin_emot:
 						for s in self.plugin.roster.emoticons:
 							l = len(s)
-							if s == otxt[index:index+l]:
-								buffer.insert(end_iter, otxt[beg:index])
-								buffer.insert_pixbuf(end_iter, \
+							if s == otext[index:index+l]:
+								conversation_buffer.insert(end_iter, otext[beg:index])
+								conversation_buffer.insert_pixbuf(end_iter, \
 									self.plugin.roster.emoticons[s])
 								index+=l
 								beg = index
 					index+=1
-			buffer.insert(end_iter, otxt[beg:])
+			conversation_buffer.insert(end_iter, otext[beg:])
 		
 		#scroll to the end of the textview
-		conversation.scroll_to_mark(buffer.get_mark('end'), 0.1, 0, 0, 0)
+		conversation_textview.scroll_to_mark(conversation_buffer.get_mark('end'),\
+			0.1, 0, 0, 0)
 		if (jid != self.get_active_jid() or not self.window.is_active()) and \
 			contact != 'status':
 			self.nb_unread[jid] += 1
 			self.redraw_tab(jid)
 			self.show_title()
 
-
-class chat_window:
-	"""Class for chat window"""
-	def delete_event(self, widget):
-		"""close window"""
-		del self.plugin.windows[self.account]['chats'][self.user.jid]
-	
-	def print_conversation(self, txt, jid, contact = None, tim = None):
-		"""Print a line in the conversation :
-		if contact is set to status : it's a status message
-		if contact is set to another value : it's an outgoing message
-		if contact is not set : it's an incomming message"""
-		conversation_textview = self.xml.get_widget('conversation_textview')
-		conversation_buffer = conversation_textview.get_buffer()
-		if not txt:
-			txt = ""
-		end_iter = conversation_buffer.get_end_iter()
-		if not tim:
-			tim = time.localtime()
-		tims = time.strftime("[%H:%M:%S]", tim)
-		conversation_buffer.insert(end_iter, tims + ' ')
-		
-		otxt = ''
-		ttxt = ''
-		if contact and contact == 'status':
-			tag = 'status'
-			ttxt = txt + '\n'
-		else:
-			if contact:
-				tag = 'outgoing'
-				name = self.plugin.nicks[self.account] 
-			else:
-				tag = 'incoming'
-				name = self.user.name
-				
-			if string.find(txt, '/me ') == 0:
-				ttxt = name + ' ' + txt[4:] + '\n'
-			else:
-				ttxt = '<' + name + '> '
-				otxt = txt + '\n'
-
-		conversation_buffer.insert_with_tags_by_name(end_iter, ttxt, tag)
-		if len(otxt) > 0:
-			beg = 0
-			if self.plugin.config['useemoticons']:
-				index = 0
-				while index < len(otxt):
-					if otxt[index] in self.plugin.roster.begin_emot:
-						for s in self.plugin.roster.emoticons:
-							l = len(s)
-							if s == otxt[index:index+l]:
-								conversation_buffer.insert(end_iter, otxt[beg:index])
-								conversation_buffer.insert_pixbuf(end_iter, self.plugin.roster.emoticons[s])
-								index+=l
-								beg = index
-					index+=1
-			conversation_buffer.insert(end_iter, otxt[beg:])
-		
-		#scroll to the end of the textview
-		conversation_textview.scroll_to_mark(conversation_buffer.get_mark('end'),\
-			0.1, 0, 0, 0)
-		if not self.window.is_active() and contact != 'status':
-			self.nb_unread += 1
-			self.show_title()
-
-	def show_title(self):
-		start = ""
-		if self.nb_unread > 1:
-			start = "[" + str(self.nb_unread) + "] "
-		elif self.nb_unread == 1:
-			start = "* "
-		self.window.set_title(start + self.user.name + " (" + self.account + ")")
-
-	def update_tags(self):
-		self.tagIn.set_property("foreground", self.plugin.config['inmsgcolor'])
-		self.tagOut.set_property("foreground", self.plugin.config['outmsgcolor'])
-		self.tagStatus.set_property("foreground", \
-			self.plugin.config['statusmsgcolor'])
-
-	def set_image(self, image, jid):
-		if image.get_storage_type() == gtk.IMAGE_ANIMATION:
-			self.status_image.set_from_animation(image.get_animation())
-		elif image.get_storage_type() == gtk.IMAGE_PIXBUF:
-			self.status_image.set_from_pixbuf(image.get_pixbuf())
-
-	def read_queue(self, q):
-		"""read queue and print messages containted in it"""
-		while not q.empty():
-			evt = q.get()
-			self.print_conversation(evt[0], self.user.jid, tim = evt[1])
-			self.plugin.roster.nb_unread -= 1
-		self.plugin.roster.show_title()
-		del self.plugin.queues[self.account][self.user.jid]
-		self.plugin.roster.redraw_jid(self.user.jid, self.account)
-		self.plugin.systray.remove_jid(self.user.jid, self.account)
-		showOffline = self.plugin.config['showoffline']
-		if (self.user.show == 'offline' or self.user.show == 'error') and \
-			not showOffline:
-			if len(self.plugin.roster.contacts[self.account][self.user.jid]) == 1:
-				self.plugin.roster.remove_user(self.user, self.account)
-
-	def on_chat_key_press_event(self, widget, event):
-		if event.keyval == gtk.keysyms.Escape:
-			widget.get_toplevel().destroy()
-
-	def on_msg_key_press_event(self, widget, event):
-		"""When a key is pressed :
-		if enter is pressed without the shit key, message (if not empty) is sent
-		and printed in the conversation"""
-		if event.keyval == gtk.keysyms.Return:
-			if (event.state & gtk.gdk.SHIFT_MASK):
-				return 0
-			message_buffer = widget.get_buffer()
-			start_iter = message_buffer.get_start_iter()
-			end_iter = message_buffer.get_end_iter()
-			txt = message_buffer.get_text(start_iter, end_iter, 0)
-			if txt != '':
-				keyID = ''
-				if self.xml.get_widget('gpg_toggle_button').get_active():
-					keyID = self.keyID
-				self.plugin.send('MSG', self.account, (self.user.jid, txt, keyID))
-				message_buffer.set_text('', -1)
-				self.print_conversation(txt, self.user.jid, self.user.jid)
-				widget.grab_focus()
-			return 1
-		return 0
-
-	def on_clear(self, widget):
-		"""When clear button is pressed :
-		clear the conversation"""
-		conversation_buffer = self.xml.get_widget('conversation_textview').\
-			get_buffer()
-		deb, end = conversation_buffer.get_bounds()
-		conversation_buffer.delete(deb, end)
-
-	def on_history(self, widget):
-		"""When history button is pressed : call log window"""
-		if not self.plugin.windows['logs'].has_key(self.user.jid):
-			self.plugin.windows['logs'][self.user.jid] = history_window(self.plugin, self.user.jid)
-
-	def on_focus(self, widget, event):
-		"""When window get focus"""
-		self.plugin.systray.remove_jid(self.user.jid, self.account)
-		if self.nb_unread > 0:
-			self.nb_unread = 0
-			self.show_title()
-	
-	def on_button_contact_clicked(self, widget):
-		"""When button contact is clicked"""
-		self.plugin.roster.on_info(widget, self.user, self.account)
-
-	def __init__(self, user, plugin, account):
-		self.user = user
-		self.plugin = plugin
-		self.account = account
-		self.keyID = self.user.keyID
-		self.nb_unread = 0
-		self.xml = gtk.glade.XML(GTKGUI_GLADE, 'Chat', APP)
-		self.window = self.xml.get_widget('Chat')
-		self.show_title()
-		self.status_image = self.xml.get_widget('status_image')
-		image = self.plugin.roster.pixbufs[user.show]
-		if image.get_storage_type() == gtk.IMAGE_ANIMATION:
-			self.status_image.set_from_animation(image.get_animation())
-		elif image.get_storage_type() == gtk.IMAGE_PIXBUF:
-			self.status_image.set_from_pixbuf(image.get_pixbuf())
-		contact_button = self.xml.get_widget('contact_button')
-		contact_button.set_label(user.name + ' <'	+ user.jid + '>')
-		if not self.keyID:
-			self.xml.get_widget('gpg_toggle_button').set_sensitive(False)
-		message_textview = self.xml.get_widget('message_textview')
-		message_textview.grab_focus()
-		conversation_textview = self.xml.get_widget('conversation_textview')
-		conversation_buffer = conversation_textview.get_buffer()
-		end_iter = conversation_buffer.get_end_iter()
-		conversation_buffer.create_mark('end', end_iter, 0)
-		self.xml.signal_connect('gtk_widget_destroy', self.delete_event)
-		self.xml.signal_connect('on_clear_clicked', self.on_clear)
-		self.xml.signal_connect('on_button_contact_clicked', \
-			self.on_button_contact_clicked)
-		self.xml.get_widget('button_contact').set_use_underline(False)
-		self.xml.signal_connect('on_focus', self.on_focus)
-		self.xml.signal_connect('on_history_clicked', self.on_history)
-		self.xml.signal_connect('on_msg_key_press_event', \
-			self.on_msg_key_press_event)
-		self.xml.signal_connect('on_chat_key_press_event', \
-			self.on_chat_key_press_event)
-		self.tagIn = conversation_buffer.create_tag("incoming")
-		color = self.plugin.config['inmsgcolor']
-		self.tagIn.set_property("foreground", color)
-		self.tagOut = conversation_buffer.create_tag("outgoing")
-		color = self.plugin.config['outmsgcolor']
-		self.tagOut.set_property("foreground", color)
-		self.tagStatus = conversation_buffer.create_tag("status")
-		color = self.plugin.config['statusmsgcolor']
-		self.tagStatus.set_property("foreground", color)
-		#print queued messages
-		if plugin.queues[account].has_key(user.jid):
-			self.read_queue(plugin.queues[account][user.jid])
-		if self.user.show != 'online':
-			self.print_conversation(_("%s is now %s (%s)") % (user.name, \
-				user.show, user.status), user.jid, 'status')
-
 class gc:
 	def delete_event(self, widget):
 		"""close window"""
@@ -1952,7 +1700,7 @@ class roster_window:
 		self.set_cb()
 
 	def new_chat(self, user, account):
-		if USE_TABBED_CHAT:
+		if self.plugin.config['usetabbedchat']:
 			if not self.plugin.windows[account]['chats'].has_key('tabbed'):
 				self.plugin.windows[account]['chats']['tabbed'] = \
 					tabbed_chat_window(user, self.plugin, account)
@@ -1963,7 +1711,7 @@ class roster_window:
 			self.plugin.windows[account]['chats']['tabbed'].window.present()
 		else:
 			self.plugin.windows[account]['chats'][user.jid] = \
-				chat_window(user, self.plugin, account)
+				tabbed_chat_window(user, self.plugin, account)
 
 	def on_message(self, jid, msg, tim, account):
 		"""when we receive a message"""
@@ -2098,12 +1846,12 @@ class roster_window:
 				self.tree.expand_row(path, False)
 		else:
 			if self.plugin.windows[account]['chats'].has_key(jid):
-				if USE_TABBED_CHAT:
+				if self.plugin.config['usetabbedchat']:
 					self.plugin.windows[account]['chats'][jid].active_tab(jid)
 				self.plugin.windows[account]['chats'][jid].window.present()
 			elif self.contacts[account].has_key(jid):
 				self.new_chat(self.contacts[account][jid][0], account)
-				self.plugin.windows[account]['chats']['tabbed'].active_tab(jid)
+				self.plugin.windows[account]['chats'][jid].active_tab(jid)
 
 	def on_roster_treeview_row_expanded(self, widget, iter, path):
 		"""When a row is expanded :
@@ -3149,9 +2897,6 @@ class plugin:
 				break
 		if pix:
 			gtk.window_set_default_icon(pix)
-		if self.config['usetabbedchat']:
-			global USE_TABBED_CHAT  	 
-			USE_TABBED_CHAT = 1
 		self.roster = roster_window(self)
 		gtk.timeout_add(100, self.read_queue)
 		gtk.timeout_add(100, self.read_sleepy)
-- 
GitLab