diff --git a/src/sbbs3/gtkuseredit/events.c b/src/sbbs3/gtkuseredit/events.c
index a79fda90b486f0c7ee68b39ed6341afdac666caf..702fc45fdca2586db0457af054d5a8787e614e97 100644
--- a/src/sbbs3/gtkuseredit/events.c
+++ b/src/sbbs3/gtkuseredit/events.c
@@ -73,6 +73,8 @@ void load_user(GtkWidget *wiggy, gpointer data)
 	gboolean	b;
 	int			i;
 	FILE		*f;
+	GtkTextIter	start;
+	GtkTextIter	end;
 
 	user.number=current_user;
 	if(user.number < 1 || user.number > totalusers) {
@@ -219,13 +221,6 @@ void load_user(GtkWidget *wiggy, gpointer data)
 		else
 			gtk_entry_set_text(GTK_ENTRY(w),user.zipcode);
 
-		/* Postal/ZIP code */
-		w=glade_xml_get_widget(xml, "eZip");
-		if(w==NULL)
-			fprintf(stderr,"Cannot get the postal/zip code widget\n");
-		else
-			gtk_entry_set_text(GTK_ENTRY(w),user.zipcode);
-
 	/* Security Tab */
 		/* Level */
 		w=glade_xml_get_widget(xml, "sLevel");
@@ -367,15 +362,6 @@ void load_user(GtkWidget *wiggy, gpointer data)
 			gtk_entry_set_text(GTK_ENTRY(w),str);
 		}
 
-		/* First On */
-		w=glade_xml_get_widget(xml, "eFirstOn");
-		if(w==NULL)
-			fprintf(stderr,"Cannot get the first on widget\n");
-		else {
-			unixtodstr(&cfg, user.firston, str);
-			gtk_entry_set_text(GTK_ENTRY(w),str);
-		}
-
 		/* Total Logons */
 		w=glade_xml_get_widget(xml, "sLogonsTotal");
 		if(w==NULL)
@@ -747,7 +733,7 @@ void load_user(GtkWidget *wiggy, gpointer data)
 
 		w=glade_xml_get_widget(xml, "cUserQWK_RETCTLA");
 		if(w==NULL)
-			fprintf(stderr,"Cannot get the retail ctrl-a widget\n");
+			fprintf(stderr,"Cannot get the retain ctrl-a widget\n");
 		else
 			gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(w),user.qwk&QWK_RETCTLA);
 
@@ -782,10 +768,15 @@ void load_user(GtkWidget *wiggy, gpointer data)
 			gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(w),user.qwk&QWK_NOCTRL);
 
 	/* Extended Comment */
+		w=glade_xml_get_widget(xml, "tExtendedComment");
+
+		gtk_text_buffer_get_start_iter(gtk_text_view_get_buffer(GTK_TEXT_VIEW(w)), &start);
+		gtk_text_buffer_get_end_iter(gtk_text_view_get_buffer(GTK_TEXT_VIEW(w)), &end);
+		gtk_text_buffer_delete(gtk_text_view_get_buffer(GTK_TEXT_VIEW(w)), &start, &end);
+
 		sprintf(str,"%suser/%4.4u.msg", cfg.data_dir,user.number);
 		f=fopen(str,"r");
 		if(f) {
-			w=glade_xml_get_widget(xml, "tExtendedComment");
 			while((i=fread(str,1,sizeof(str),f)))
 				gtk_text_buffer_insert_at_cursor(gtk_text_view_get_buffer(GTK_TEXT_VIEW(w)), str,i);
 			fclose(f);
@@ -809,6 +800,984 @@ void load_user(GtkWidget *wiggy, gpointer data)
 void save_user(GtkWidget *wiggy, gpointer data)
 {
 	/* ToDo */
+	GtkWidget	*w;
+	char		str[1024];
+	gboolean	b;
+	int			i;
+	FILE		*f;
+	GtkTextIter	start;
+	GtkTextIter	end;
+
+	/* Toolbar indicators */
+		b=user.misc&DELETED?TRUE:FALSE;
+		w=glade_xml_get_widget(xml, "bDelete");
+		if(w==NULL)
+			fprintf(stderr,"Cannot get the deleted toolbar widget\n");
+		else {
+			switch(gtk_toggle_tool_button_get_active(GTK_TOGGLE_TOOL_BUTTON(w))) {
+				case 0:
+					user.misc &= ~DELETED;
+					break;
+				default:
+					user.misc |= DELETED;
+			}
+		}
+
+		b=user.misc&INACTIVE?TRUE:FALSE;
+		w=glade_xml_get_widget(xml, "bRemove");
+		if(w==NULL)
+			fprintf(stderr,"Cannot get the removed toolbar widget\n");
+		else {
+			switch(gtk_toggle_tool_button_get_active(GTK_TOGGLE_TOOL_BUTTON(w))) {
+				case 0:
+					user.misc &= ~INACTIVE;
+					break;
+				default:
+					user.misc |= INACTIVE;
+			}
+		}
+		
+
+	/* Peronal Tab */
+		/* Alias */
+		w=glade_xml_get_widget(xml, "eUserAlias");
+		if(w==NULL)
+			fprintf(stderr,"Cannot get the alias widget\n");
+		else {
+			strcpy(user.alias, gtk_entry_get_text(GTK_ENTRY(w)));
+			if(user.misc & DELETED)
+				putusername(&cfg, user.number, "");
+			else
+				putusername(&cfg, user.number, user.alias);
+		}
+
+		/* Real Name */
+		w=glade_xml_get_widget(xml, "eRealName");
+		if(w==NULL)
+			fprintf(stderr,"Cannot get the real name widget\n");
+		else
+			strcpy(user.name, gtk_entry_get_text(GTK_ENTRY(w)));
+
+		/* Computer */
+		w=glade_xml_get_widget(xml, "eComputer");
+		if(w==NULL)
+			fprintf(stderr,"Cannot get the computer widget\n");
+		else
+			strcpy(user.comp, gtk_entry_get_text(GTK_ENTRY(w)));
+
+		/* NetMail */
+		w=glade_xml_get_widget(xml, "eNetMail");
+		if(w==NULL)
+			fprintf(stderr,"Cannot get the netmail widget\n");
+		else
+			strcpy(user.netmail, gtk_entry_get_text(GTK_ENTRY(w)));
+
+		/* Phone */
+		w=glade_xml_get_widget(xml, "ePhone");
+		if(w==NULL)
+			fprintf(stderr,"Cannot get the phone widget\n");
+		else
+			strcpy(user.phone,gtk_entry_get_text(GTK_ENTRY(w)));
+
+		/* Note */
+		w=glade_xml_get_widget(xml, "eNote");
+		if(w==NULL)
+			fprintf(stderr,"Cannot get the note widget\n");
+		else
+			strcpy(user.note, gtk_entry_get_text(GTK_ENTRY(w)));
+
+		/* Comment */
+		w=glade_xml_get_widget(xml, "eComment");
+		if(w==NULL)
+			fprintf(stderr,"Cannot get the comment widget\n");
+		else
+			strcpy(user.comment, gtk_entry_get_text(GTK_ENTRY(w)));
+
+		/* Gender */
+		w=glade_xml_get_widget(xml, "eGender");
+		if(w==NULL)
+			fprintf(stderr,"Cannot get the gender widget\n");
+		else
+			user.sex=*(gtk_entry_get_text(GTK_ENTRY(w)));
+
+		/* Connection */
+		w=glade_xml_get_widget(xml, "eConnection");
+		if(w==NULL)
+			fprintf(stderr,"Cannot get the connection widget\n");
+		else
+			strcpy(user.modem, gtk_entry_get_text(GTK_ENTRY(w)));
+
+		/* Chat Handle */
+		w=glade_xml_get_widget(xml, "eHandle");
+		if(w==NULL)
+			fprintf(stderr,"Cannot get the handle widget\n");
+		else
+			strcpy(user.handle, gtk_entry_get_text(GTK_ENTRY(w)));
+
+		/* Birthdate - Already done */
+
+		/* Password */
+		w=glade_xml_get_widget(xml, "ePassword");
+		if(w==NULL)
+			fprintf(stderr,"Cannot get the password widget\n");
+		else
+			strcpy(user.pass, gtk_entry_get_text(GTK_ENTRY(w)));
+
+		/* Address */
+		w=glade_xml_get_widget(xml, "eAddress");
+		if(w==NULL)
+			fprintf(stderr,"Cannot get the address widget\n");
+		else
+			strcpy(user.address, gtk_entry_get_text(GTK_ENTRY(w)));
+
+		/* Location */
+		w=glade_xml_get_widget(xml, "eLocation");
+		if(w==NULL)
+			fprintf(stderr,"Cannot get the location widget\n");
+		else
+			strcpy(user.location, gtk_entry_get_text(GTK_ENTRY(w)));
+
+		/* Postal/ZIP code */
+		w=glade_xml_get_widget(xml, "eZip");
+		if(w==NULL)
+			fprintf(stderr,"Cannot get the postal/zip code widget\n");
+		else
+			strcpy(user.zipcode, gtk_entry_get_text(GTK_ENTRY(w)));
+
+	/* Security Tab */
+		/* Level */
+		w=glade_xml_get_widget(xml, "sLevel");
+		if(w==NULL)
+			fprintf(stderr,"Cannot get the level widget\n");
+		else
+			user.level = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(w));
+
+		/* Expiration - Already done */
+
+		/* Flag Sets */
+		strcpy(str,"tFlagSet1.");
+		for(i=0;i<26;i++) {
+			str[9]='A'+i;
+			w=glade_xml_get_widget(xml, str);
+			if(w==NULL)
+				fprintf(stderr,"Cannot get the %s widget\n",str);
+			else {
+				switch(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(w))) {
+					case 0:
+						user.flags1 &= ~(1L<<i);
+						break;
+					default:
+						user.flags1 |= (1L<<i);
+				}
+			}
+		}
+
+		strcpy(str,"tFlagSet2.");
+		for(i=0;i<26;i++) {
+			str[9]='A'+i;
+			w=glade_xml_get_widget(xml, str);
+			if(w==NULL)
+				fprintf(stderr,"Cannot get the %s widget\n",str);
+			else {
+				switch(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(w))) {
+					case 0:
+						user.flags2 &= ~(1L<<i);
+						break;
+					default:
+						user.flags2 |= (1L<<i);
+				}
+			}
+		}
+
+		strcpy(str,"tFlagSet3.");
+		for(i=0;i<26;i++) {
+			str[9]='A'+i;
+			w=glade_xml_get_widget(xml, str);
+			if(w==NULL)
+				fprintf(stderr,"Cannot get the %s widget\n",str);
+			else {
+				switch(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(w))) {
+					case 0:
+						user.flags3 &= ~(1L<<i);
+						break;
+					default:
+						user.flags3 |= (1L<<i);
+				}
+			}
+		}
+
+		strcpy(str,"tFlagSet4.");
+		for(i=0;i<26;i++) {
+			str[9]='A'+i;
+			w=glade_xml_get_widget(xml, str);
+			if(w==NULL)
+				fprintf(stderr,"Cannot get the %s widget\n",str);
+			else {
+				switch(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(w))) {
+					case 0:
+						user.flags4 &= ~(1L<<i);
+						break;
+					default:
+						user.flags4 |= (1L<<i);
+				}
+			}
+		}
+
+		/* Exemptions */
+		strcpy(str,"tExemptions.");
+		for(i=0;i<26;i++) {
+			str[11]='A'+i;
+			w=glade_xml_get_widget(xml, str);
+			if(w==NULL)
+				fprintf(stderr,"Cannot get the %s widget\n",str);
+			else {
+				switch(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(w))) {
+					case 0:
+						user.exempt &= ~(1L<<i);
+						break;
+					default:
+						user.exempt |= (1L<<i);
+				}
+			}
+		}
+
+		/* Restrictions */
+		strcpy(str,"tRestrictions.");
+		for(i=0;i<26;i++) {
+			str[13]='A'+i;
+			w=glade_xml_get_widget(xml, str);
+			if(w==NULL)
+				fprintf(stderr,"Cannot get the %s widget\n",str);
+			else {
+				switch(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(w))) {
+					case 0:
+						user.rest &= ~(1L<<i);
+						break;
+					default:
+						user.rest |= (1L<<i);
+				}
+			}
+		}
+
+		/* Credits */
+		w=glade_xml_get_widget(xml, "sCredits");
+		if(w==NULL)
+			fprintf(stderr,"Cannot get the credits widget\n");
+		else
+			user.cdt = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(w));
+
+		/* Free Credits */
+		w=glade_xml_get_widget(xml, "sFreeCredits");
+		if(w==NULL)
+			fprintf(stderr,"Cannot get the free credits widget\n");
+		else
+			user.freecdt = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(w));
+
+		/* Minutes */
+		w=glade_xml_get_widget(xml, "sMinutes");
+		if(w==NULL)
+			fprintf(stderr,"Cannot get the minutes widget\n");
+		else
+			user.min = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(w));
+
+	/* Statistics */
+		/* First On - Already done */
+
+		/* Last On - Already done */
+
+		/* Total Logons */
+		w=glade_xml_get_widget(xml, "sLogonsTotal");
+		if(w==NULL)
+			fprintf(stderr,"Cannot get the total logons widget\n");
+		else
+			user.logons = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(w));
+
+		/* Logons today */
+		w=glade_xml_get_widget(xml, "sLogonsToday");
+		if(w==NULL)
+			fprintf(stderr,"Cannot get the logons today widget\n");
+		else
+			user.ltoday = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(w));
+
+		/* Total Posts */
+		w=glade_xml_get_widget(xml, "sTotalPosts");
+		if(w==NULL)
+			fprintf(stderr,"Cannot get the total posts widget\n");
+		else
+			user.posts = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(w));
+
+		/* Posts Today */
+		w=glade_xml_get_widget(xml, "sPostsToday");
+		if(w==NULL)
+			fprintf(stderr,"Cannot get the posts today widget\n");
+		else
+			user.ptoday = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(w));
+
+		/* Total Uploads */
+		w=glade_xml_get_widget(xml, "sTotalUploads");
+		if(w==NULL)
+			fprintf(stderr,"Cannot get the total uploads widget\n");
+		else
+			user.uls = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(w));
+
+		/* Upload Bytes */
+		w=glade_xml_get_widget(xml, "sUploadBytes");
+		if(w==NULL)
+			fprintf(stderr,"Cannot get the upload bytes widget\n");
+		else
+			user.ulb = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(w));
+
+		/* Total Time On */
+		w=glade_xml_get_widget(xml, "sTotalTimeOn");
+		if(w==NULL)
+			fprintf(stderr,"Cannot get the total time on widget\n");
+		else
+			user.timeon = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(w));
+
+		/* Time On Today */
+		w=glade_xml_get_widget(xml, "sTimeOnToday");
+		if(w==NULL)
+			fprintf(stderr,"Cannot get the time on today widget\n");
+		else
+			user.ttoday = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(w));
+
+		/* Time On Last Call */
+		w=glade_xml_get_widget(xml, "sTimeOnLastCall");
+		if(w==NULL)
+			fprintf(stderr,"Cannot get the last call time on widget\n");
+		else
+			user.tlast = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(w));
+
+		/* Time On Extra */
+		w=glade_xml_get_widget(xml, "sTimeOnExtra");
+		if(w==NULL)
+			fprintf(stderr,"Cannot get the extra time on widget\n");
+		else
+			user.textra = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(w));
+
+		/* Total Downloads */
+		w=glade_xml_get_widget(xml, "sDownloadsTotal");
+		if(w==NULL)
+			fprintf(stderr,"Cannot get the total downloads widget\n");
+		else
+			user.dls = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(w));
+
+		/* Download Bytes */
+		w=glade_xml_get_widget(xml, "sDownloadsBytes");
+		if(w==NULL)
+			fprintf(stderr,"Cannot get the download bytes widget\n");
+		else
+			user.dlb = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(w));
+
+		/* Download Leeches */
+		w=glade_xml_get_widget(xml, "sDownloadsLeech");
+		if(w==NULL)
+			fprintf(stderr,"Cannot get the downloads leech widget\n");
+		else
+			user.leech = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(w));
+
+		/* Total Email */
+		w=glade_xml_get_widget(xml, "sEmailTotal");
+		if(w==NULL)
+			fprintf(stderr,"Cannot get the total email widget\n");
+		else
+			user.emails = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(w));
+
+		/* Email Today */
+		w=glade_xml_get_widget(xml, "sEmailToday");
+		if(w==NULL)
+			fprintf(stderr,"Cannot get the email today widget\n");
+		else
+			user.etoday = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(w));
+
+		/* Email To Sysop */
+		w=glade_xml_get_widget(xml, "sEmailToSysop");
+		if(w==NULL)
+			fprintf(stderr,"Cannot get the email to sysop widget\n");
+		else
+			user.fbacks = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(w));
+
+	/* Settings */
+		w=glade_xml_get_widget(xml, "cUserAUTOTERM");
+		if(w==NULL)
+			fprintf(stderr,"Cannot get the autoterm widget\n");
+		else {
+			switch(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(w))) {
+				case 0:
+					user.misc&=~AUTOTERM;
+					break;
+				default:
+					user.misc|=AUTOTERM;
+			}
+		}
+
+		w=glade_xml_get_widget(xml, "cUserNO_EXASCII");
+		if(w==NULL)
+			fprintf(stderr,"Cannot get the no exascii widget\n");
+		else {
+			switch(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(w))) {
+				case 0:
+					user.misc&=~NO_EXASCII;
+					break;
+				default:
+					user.misc|=NO_EXASCII;
+			}
+		}
+
+		w=glade_xml_get_widget(xml, "cUserANSI");
+		if(w==NULL)
+			fprintf(stderr,"Cannot get the ansi widget\n");
+		else {
+			switch(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(w))) {
+				case 0:
+					user.misc&=~ANSI;
+					break;
+				default:
+					user.misc|=ANSI;
+			}
+		}
+				
+
+		w=glade_xml_get_widget(xml, "cUserCOLOR");
+		if(w==NULL)
+			fprintf(stderr,"Cannot get the color widget\n");
+		else {
+			switch(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(w))) {
+				case 0:
+					user.misc&=~COLOR;
+					break;
+				default:
+					user.misc|=COLOR;
+			}
+		}
+
+		w=glade_xml_get_widget(xml, "cUserRIP");
+		if(w==NULL)
+			fprintf(stderr,"Cannot get the RIP widget\n");
+		else {
+			switch(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(w))) {
+				case 0:
+					user.misc&=~RIP;
+					break;
+				default:
+					user.misc|=RIP;
+			}
+		}
+
+		w=glade_xml_get_widget(xml, "cUserWIP");
+		if(w==NULL)
+			fprintf(stderr,"Cannot get the WIP widget\n");
+		else {
+			switch(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(w))) {
+				case 0:
+					user.misc&=~WIP;
+					break;
+				default:
+					user.misc|=WIP;
+			}
+		}
+
+		w=glade_xml_get_widget(xml, "cUserUPAUSE");
+		if(w==NULL)
+			fprintf(stderr,"Cannot get the upause widget\n");
+		else {
+			switch(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(w))) {
+				case 0:
+					user.misc&=~UPAUSE;
+					break;
+				default:
+					user.misc|=UPAUSE;
+			}
+		}
+
+		w=glade_xml_get_widget(xml, "cUserCOLDKEYS");
+		if(w==NULL)
+			fprintf(stderr,"Cannot get the coldkeys widget\n");
+		else {
+			switch(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(w))) {
+				case 0:
+					user.misc&=~COLDKEYS;
+					break;
+				default:
+					user.misc|=COLDKEYS;
+			}
+		}
+
+		w=glade_xml_get_widget(xml, "cUserSPIN");
+		if(w==NULL)
+			fprintf(stderr,"Cannot get the spin widget\n");
+		else {
+			switch(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(w))) {
+				case 0:
+					user.misc&=~SPIN;
+					break;
+				default:
+					user.misc|=SPIN;
+			}
+		}
+
+		w=glade_xml_get_widget(xml, "cUserRIP");
+		if(w==NULL)
+			fprintf(stderr,"Cannot get the RIP widget\n");
+		else {
+			switch(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(w))) {
+				case 0:
+					user.misc&=~RIP;
+					break;
+				default:
+					user.misc|=RIP;
+			}
+		}
+
+		w=glade_xml_get_widget(xml, "sRows");
+		if(w==NULL)
+			fprintf(stderr,"Cannot get the rows widget\n");
+		else
+			user.rows = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(w));
+
+		w=glade_xml_get_widget(xml, "cCommandShell");
+		if(w==NULL)
+			fprintf(stderr,"Cannot get the command shell widget\n");
+		else
+			user.shell = gtk_combo_box_get_active(GTK_COMBO_BOX(w));
+
+		w=glade_xml_get_widget(xml, "cUserEXPERT");
+		if(w==NULL)
+			fprintf(stderr,"Cannot get the expert widget\n");
+		else {
+			switch(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(w))) {
+				case 0:
+					user.misc&=~EXPERT;
+					break;
+				default:
+					user.misc&=~EXPERT;
+			}
+		}
+
+		w=glade_xml_get_widget(xml, "cUserASK_NSCAN");
+		if(w==NULL)
+			fprintf(stderr,"Cannot get the ask new scan widget\n");
+		else {
+			switch(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(w))) {
+				case 0:
+					user.misc&=~ASK_NSCAN;
+					break;
+				default:
+					user.misc|=ASK_NSCAN;
+			}
+		}
+
+		w=glade_xml_get_widget(xml, "cUserASK_SSCAN");
+		if(w==NULL)
+			fprintf(stderr,"Cannot get the ask to you scan widget\n");
+		else {
+			switch(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(w))) {
+				case 0:
+					user.misc&=~ASK_SSCAN;
+					break;
+				default:
+					user.misc|=ASK_SSCAN;
+			}
+		}
+
+		w=glade_xml_get_widget(xml, "cUserCURSUB");
+		if(w==NULL)
+			fprintf(stderr,"Cannot get the save current sub widget\n");
+		else {
+			switch(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(w))) {
+				case 0:
+					user.misc&=~CURSUB;
+					break;
+				default:
+					user.misc&=~CURSUB;
+			}
+		}
+
+		w=glade_xml_get_widget(xml, "cUserQUIET");
+		if(w==NULL)
+			fprintf(stderr,"Cannot get the quiet mode widget\n");
+		else {
+			switch(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(w))) {
+				case 0:
+					user.misc&=~QUIET;
+					break;
+				default:
+					user.misc|=QUIET;
+			}
+		}
+
+		w=glade_xml_get_widget(xml, "cUserAUTOLOGON");
+		if(w==NULL)
+			fprintf(stderr,"Cannot get the auto logon widget\n");
+		else {
+			switch(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(w))) {
+				case 0:
+					user.misc&=~AUTOLOGON;
+					break;
+				default:
+					user.misc|=AUTOLOGON;
+			}
+		}
+
+		w=glade_xml_get_widget(xml, "cUserEXPERT");
+		if(w==NULL)
+			fprintf(stderr,"Cannot get the expert widget\n");
+		else {
+			switch(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(w))) {
+				case 0:
+					user.misc&=~EXPERT;
+					break;
+				default:
+					user.misc|=EXPERT;
+			}
+		}
+
+		w=glade_xml_get_widget(xml, "cUserCHAT_ECHO");
+		if(w==NULL)
+			fprintf(stderr,"Cannot get the chat echo widget\n");
+		else {
+			switch(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(w))) {
+				case 0:
+					user.chat&=~CHAT_ECHO;
+					break;
+				default:
+					user.chat|=CHAT_ECHO;
+			}
+		}
+
+		w=glade_xml_get_widget(xml, "cUserCHAT_ACTION");
+		if(w==NULL)
+			fprintf(stderr,"Cannot get the chat action widget\n");
+		else {
+			switch(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(w))) {
+				case 0:
+					user.chat&=~CHAT_ACTION;
+					break;
+				default:
+					user.chat|=CHAT_ACTION;
+			}
+		}
+
+		w=glade_xml_get_widget(xml, "cUserCHAT_NOPAGE");
+		if(w==NULL)
+			fprintf(stderr,"Cannot get the chat nopage widget\n");
+		else {
+			switch(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(w))) {
+				case 0:
+					user.chat&=~CHAT_NOPAGE;
+					break;
+				default:
+					user.chat|=CHAT_NOPAGE;
+			}
+		}
+
+		w=glade_xml_get_widget(xml, "cUserCHAT_NOACT");
+		if(w==NULL)
+			fprintf(stderr,"Cannot get the chat no activity widget\n");
+		else {
+			switch(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(w))) {
+				case 0:
+					user.chat&=~CHAT_NOACT;
+					break;
+				default:
+					user.chat|=CHAT_NOACT;
+			}
+		}
+
+		w=glade_xml_get_widget(xml, "cUserCHAT_SPLITP");
+		if(w==NULL)
+			fprintf(stderr,"Cannot get the chat split personal widget\n");
+		else {
+			switch(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(w))) {
+				case 0:
+					user.chat&=~CHAT_SPLITP;
+					break;
+				default:
+					user.chat&=~CHAT_SPLITP;
+			}
+		}
+
+	/* Msg/File Settings */
+
+		w=glade_xml_get_widget(xml, "cUserNETMAIL");
+		if(w==NULL)
+			fprintf(stderr,"Cannot get the netmail widget\n");
+		else {
+			switch(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(w))) {
+				case 0:
+					user.misc&=~NETMAIL;
+					break;
+				default:
+					user.misc|=NETMAIL;
+			}
+		}
+
+		w=glade_xml_get_widget(xml, "cUserCLRSCRN");
+		if(w==NULL)
+			fprintf(stderr,"Cannot get the clear screen widget\n");
+		else {
+			switch(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(w))) {
+				case 0:
+					user.misc&=~CLRSCRN;
+					break;
+				default:
+					user.misc|=CLRSCRN;
+			}
+		}
+
+		w=glade_xml_get_widget(xml, "cUserANFSCAN");
+		if(w==NULL)
+			fprintf(stderr,"Cannot get the ask new file scan widget\n");
+		else {
+			switch(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(w))) {
+				case 0:
+					user.misc&=~ANFSCAN;
+					break;
+				default:
+					user.misc|=ANFSCAN;
+			}
+		}
+
+		w=glade_xml_get_widget(xml, "cUserEXTDESC");
+		if(w==NULL)
+			fprintf(stderr,"Cannot get the extended descriptions widget\n");
+		else {
+			switch(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(w))) {
+				case 0:
+					user.misc&=~EXTDESC;
+					break;
+				default:
+					user.misc|=EXTDESC;
+			}
+		}
+
+		w=glade_xml_get_widget(xml, "cUserBATCHFLAG");
+		if(w==NULL)
+			fprintf(stderr,"Cannot get the batch flagging widget\n");
+		else {
+			switch(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(w))) {
+				case 0:
+					user.misc&=~BATCHFLAG;
+					break;
+				default:
+					user.misc|=BATCHFLAG;
+			}
+		}
+
+		w=glade_xml_get_widget(xml, "cUserAUTOHANG");
+		if(w==NULL)
+			fprintf(stderr,"Cannot get the auto hangup after transfer widget\n");
+		else {
+			switch(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(w))) {
+				case 0:
+					user.misc&=~AUTOHANG;
+					break;
+				default:
+					user.misc|=AUTOHANG;
+			}
+		}
+
+		w=glade_xml_get_widget(xml, "cUserCLRSCRN");
+		if(w==NULL)
+			fprintf(stderr,"Cannot get the clear screen widget\n");
+		else {
+			switch(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(w))) {
+				case 0:
+					user.misc&=~CLRSCRN;
+					break;
+				default:
+					user.misc|=CLRSCRN;
+			}
+		}
+
+		w=glade_xml_get_widget(xml, "cExternalEditor");
+		if(w==NULL)
+			fprintf(stderr,"Cannot get the external editor widget\n");
+		else
+			user.xedit = gtk_combo_box_get_active(GTK_COMBO_BOX(w));
+
+		w=glade_xml_get_widget(xml, "cDefaultDownloadProtocol");
+		if(w==NULL)
+			fprintf(stderr,"Cannot get the default download protocol widget\n");
+		else
+			user.prot=cfg.prot[gtk_combo_box_get_active(GTK_COMBO_BOX(w))]->mnemonic;
+
+		w=glade_xml_get_widget(xml, "cTempQWKFileType");
+		if(w==NULL)
+			fprintf(stderr,"Cannot get the temp QWK file type widget\n");
+		else
+			strcpy(user.tmpext, cfg.fcomp[gtk_combo_box_get_active(GTK_COMBO_BOX(w))]->ext);
+
+		w=glade_xml_get_widget(xml, "cUserQWK_FILES");
+		if(w==NULL)
+			fprintf(stderr,"Cannot get the include new files list widget\n");
+		else {
+			switch(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(w))) {
+				case 0:
+					user.qwk&=~QWK_FILES;
+					break;
+				default:
+					user.qwk|=QWK_FILES;
+			}
+		}
+
+		w=glade_xml_get_widget(xml, "cUserQWK_EMAIL");
+		if(w==NULL)
+			fprintf(stderr,"Cannot get the include unread email widget\n");
+		else {
+			switch(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(w))) {
+				case 0:
+					user.qwk&=~QWK_EMAIL;
+					break;
+				default:
+					user.qwk|=QWK_EMAIL;
+			}
+		}
+
+		w=glade_xml_get_widget(xml, "cUserQWK_ALLMAIL");
+		if(w==NULL)
+			fprintf(stderr,"Cannot get the include all email widget\n");
+		else {
+			switch(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(w))) {
+				case 0:
+					user.qwk&=~QWK_ALLMAIL;
+					break;
+				default:
+					user.qwk|=QWK_ALLMAIL;
+			}
+		}
+
+		w=glade_xml_get_widget(xml, "cUserQWK_DELMAIL");
+		if(w==NULL)
+			fprintf(stderr,"Cannot get the delete email widget\n");
+		else {
+			switch(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(w))) {
+				case 0:
+					user.qwk&=~QWK_DELMAIL;
+					break;
+				default:
+					user.qwk|=QWK_DELMAIL;
+			}
+		}
+
+		w=glade_xml_get_widget(xml, "cUserQWK_BYSELF");
+		if(w==NULL)
+			fprintf(stderr,"Cannot get the include messages by self widget\n");
+		else {
+			switch(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(w))) {
+				case 0:
+					user.qwk&=~QWK_BYSELF;
+					break;
+				default:
+					user.qwk|=QWK_BYSELF;
+			}
+		}
+
+		w=glade_xml_get_widget(xml, "cUserQWK_EXPCTLA");
+		if(w==NULL)
+			fprintf(stderr,"Cannot get the expand ctrl-a widget\n");
+		else {
+			switch(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(w))) {
+				case 0:
+					user.qwk&=~QWK_EXPCTLA;
+					break;
+				default:
+					user.qwk|=QWK_EXPCTLA;
+			}
+		}
+
+		w=glade_xml_get_widget(xml, "cUserQWK_RETCTLA");
+		if(w==NULL)
+			fprintf(stderr,"Cannot get the retain ctrl-a widget\n");
+		else {
+			switch(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(w))) {
+				case 0:
+					user.qwk&=~QWK_RETCTLA;
+					break;
+				default:
+					user.qwk|=QWK_RETCTLA;
+			}
+		}
+
+		w=glade_xml_get_widget(xml, "cUserQWK_ATTACH");
+		if(w==NULL)
+			fprintf(stderr,"Cannot get the include attachments widget\n");
+		else {
+			switch(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(w))) {
+				case 0:
+					user.qwk&=~QWK_ATTACH;
+					break;
+				default:
+					user.qwk|=QWK_ATTACH;
+			}
+		}
+
+		w=glade_xml_get_widget(xml, "cUserQWK_NOINDEX");
+		if(w==NULL)
+			fprintf(stderr,"Cannot get the don't include index files widget\n");
+		else {
+			switch(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(w))) {
+				case 0:
+					user.qwk&=~QWK_NOINDEX;
+					break;
+				default:
+					user.qwk|=QWK_NOINDEX;
+			}
+		}
+
+		w=glade_xml_get_widget(xml, "cUserQWK_TZ");
+		if(w==NULL)
+			fprintf(stderr,"Cannot get the include TZ widget\n");
+		else {
+			switch(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(w))) {
+				case 0:
+					user.qwk&=~QWK_TZ;
+					break;
+				default:
+					user.qwk|=QWK_TZ;
+			}
+		}
+
+		w=glade_xml_get_widget(xml, "cUserQWK_VIA");
+		if(w==NULL)
+			fprintf(stderr,"Cannot get the include VIA widget\n");
+		else {
+			switch(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(w))) {
+				case 0:
+					user.qwk&=~QWK_VIA;
+					break;
+				default:
+					user.qwk&=~QWK_VIA;
+			}
+		}
+
+		w=glade_xml_get_widget(xml, "cUserQWK_NOCTRL");
+		if(w==NULL)
+			fprintf(stderr,"Cannot get the include extraneous control files widget\n");
+		else {
+			switch(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(w))) {
+				case 0:
+					user.qwk&=~QWK_NOCTRL;
+					break;
+				default:
+					user.qwk|=QWK_NOCTRL;
+			}
+		}
+
+	/* Extended Comment */
+		sprintf(str,"%suser/%4.4u.msg", cfg.data_dir,user.number);
+		w=glade_xml_get_widget(xml, "tExtendedComment");
+		gtk_text_buffer_get_start_iter(gtk_text_view_get_buffer(GTK_TEXT_VIEW(w)), &start);
+		gtk_text_buffer_get_end_iter(gtk_text_view_get_buffer(GTK_TEXT_VIEW(w)), &end);
+		f=fopen(str,"w");
+		if(f) {
+			fputs(gtk_text_buffer_get_text(gtk_text_view_get_buffer(GTK_TEXT_VIEW(w)),&start,&end,TRUE), f);
+			fclose(f);
+		}
+
+	putuserdat(&cfg, &user);
+
+	load_user(wiggy, data);
 }
 
 void new_user(GtkWidget *wiggy, gpointer data)
diff --git a/src/sbbs3/gtkuseredit/gtkuseredit.glade b/src/sbbs3/gtkuseredit/gtkuseredit.glade
index 80272c23e7988c854cf96e1fde3aa24a0bff7af5..4865365b1c49d8d34ca44cc1aee849500d414e9d 100644
--- a/src/sbbs3/gtkuseredit/gtkuseredit.glade
+++ b/src/sbbs3/gtkuseredit/gtkuseredit.glade
@@ -8452,6 +8452,11 @@
 		  <property name="right_margin">0</property>
 		  <property name="indent">0</property>
 		  <property name="text" translatable="yes"></property>
+		  <signal name="backspace" handler="user_changed" last_modification_time="Sun, 07 May 2006 08:45:15 GMT"/>
+		  <signal name="cut_clipboard" handler="user_changed" last_modification_time="Sun, 07 May 2006 08:45:20 GMT"/>
+		  <signal name="delete_from_cursor" handler="user_changed" last_modification_time="Sun, 07 May 2006 08:45:26 GMT"/>
+		  <signal name="insert_at_cursor" handler="user_changed" last_modification_time="Sun, 07 May 2006 08:45:32 GMT"/>
+		  <signal name="paste_clipboard" handler="user_changed" last_modification_time="Sun, 07 May 2006 08:45:37 GMT"/>
 		</widget>
 	      </child>
 	    </widget>