changeset 16064:5106ccf9f9f1

merge of '662dc38f3c156e501f9fa55b24a10bfcf82cc7ac' and '6eba96b8d82f01cef4c91319b48d5d98c0a72155'
author Stu Tomlinson <stu@nosnilmot.com>
date Wed, 11 Apr 2007 15:21:47 +0000
parents 605da11e8535 (current diff) fa8aeab4ca5a (diff)
children 0db4eca4a3e0 b5118ddf37c2
files pidgin/pidgin.h
diffstat 36 files changed, 643 insertions(+), 588 deletions(-) [+]
line wrap: on
line diff
--- a/libpurple/core.c	Wed Apr 11 14:03:28 2007 +0000
+++ b/libpurple/core.c	Wed Apr 11 15:21:47 2007 +0000
@@ -70,6 +70,9 @@
 	g_return_val_if_fail(ui != NULL, FALSE);
 	g_return_val_if_fail(purple_get_core() == NULL, FALSE);
 
+#ifdef ENABLE_NLS
+	bindtextdomain(PACKAGE, LOCALEDIR);
+#endif
 #ifdef _WIN32
 	wpurple_init();
 #endif
--- a/libpurple/internal.h	Wed Apr 11 14:03:28 2007 +0000
+++ b/libpurple/internal.h	Wed Apr 11 15:21:47 2007 +0000
@@ -43,7 +43,7 @@
 #ifdef ENABLE_NLS
 #  include <locale.h>
 #  include <libintl.h>
-#  define _(String) ((const char *)gettext(String))
+#  define _(String) ((const char *)dgettext(PACKAGE, String))
 #  ifdef gettext_noop
 #    define N_(String) gettext_noop (String)
 #  else
@@ -56,6 +56,7 @@
 #    define _(String) ((const char *)String)
 #  endif
 #  define ngettext(Singular, Plural, Number) ((Number == 1) ? ((const char *)Singular) : ((const char *)Plural))
+#  define dngettext(Domain, Singular, Plural, Number) ((Number == 1) ? ((const char *)Singular) : ((const char *)Plural))
 #endif
 
 #ifdef HAVE_ENDIAN_H
--- a/libpurple/log.c	Wed Apr 11 14:03:28 2007 +0000
+++ b/libpurple/log.c	Wed Apr 11 15:21:47 2007 +0000
@@ -253,7 +253,7 @@
 	g_return_val_if_fail(log != NULL, FALSE);
 	g_return_val_if_fail(log->logger != NULL, FALSE);
 
-	if (log->logger->delete == NULL)
+	if (log->logger->remove == NULL)
 		return FALSE;
 
 	if (log->logger->is_deletable != NULL)
@@ -267,8 +267,8 @@
 	g_return_val_if_fail(log != NULL, FALSE);
 	g_return_val_if_fail(log->logger != NULL, FALSE);
 
-	if (log->logger->delete != NULL)
-		return log->logger->delete(log);
+	if (log->logger->remove != NULL)
+		return log->logger->remove(log);
 
 	return FALSE;
 }
@@ -344,7 +344,7 @@
 				int(*total_size)(PurpleLogType type, const char *name, PurpleAccount *account),
 				GList*(*list_syslog)(PurpleAccount *account),
 				void(*get_log_sets)(PurpleLogSetCallback cb, GHashTable *sets),
-				gboolean(*delete)(PurpleLog *log),
+				gboolean(*remove)(PurpleLog *log),
 				gboolean(*is_deletable)(PurpleLog *log))
 {
 #endif
@@ -380,7 +380,7 @@
 	if (functions >= 9)
 		logger->get_log_sets = va_arg(args, void *);
 	if (functions >= 10)
-		logger->delete = va_arg(args, void *);
+		logger->remove = va_arg(args, void *);
 	if (functions >= 11)
 		logger->is_deletable = va_arg(args, void *);
 
--- a/libpurple/log.h	Wed Apr 11 14:03:28 2007 +0000
+++ b/libpurple/log.h	Wed Apr 11 15:21:47 2007 +0000
@@ -105,7 +105,7 @@
 	void (*get_log_sets)(PurpleLogSetCallback cb, GHashTable *sets);
 
 	/* Attempts to delete the specified log, indicating success or failure */
-	gboolean (*delete)(PurpleLog *log);
+	gboolean (*remove)(PurpleLog *log);
 
 	/* Tests whether a log is deletable */
 	gboolean (*is_deletable)(PurpleLog *log);
@@ -472,7 +472,7 @@
  *                     functions are currently available (in order): @c create,
  *                     @c write, @c finalize, @c list, @c read, @c size,
  *                     @c total_size, @c list_syslog, @c get_log_sets,
- *                     @c delete, @c is_deletable.
+ *                     @c remove, @c is_deletable.
  *                     For details on these functions, see PurpleLogLogger.
  *                     Functions may not be skipped. For example, passing
  *                     @c create and @c write is acceptable (for a total of
--- a/libpurple/protocols/msn/notification.c	Wed Apr 11 14:03:28 2007 +0000
+++ b/libpurple/protocols/msn/notification.c	Wed Apr 11 15:21:47 2007 +0000
@@ -1310,7 +1310,7 @@
 		{
 			case 1:
 				minutes = atoi(g_hash_table_lookup(table, "Arg1"));
-				g_snprintf(buf, sizeof(buf), ngettext(
+				g_snprintf(buf, sizeof(buf), dngettext(PACKAGE, 
 							"The MSN server will shut down for maintenance "
 							"in %d minute. You will automatically be "
 							"signed out at that time.  Please finish any "
--- a/libpurple/protocols/novell/novell.c	Wed Apr 11 14:03:28 2007 +0000
+++ b/libpurple/protocols/novell/novell.c	Wed Apr 11 15:21:47 2007 +0000
@@ -1495,13 +1495,10 @@
 _show_info(PurpleConnection * gc, NMUserRecord * user_record)
 {
 	PurpleNotifyUserInfo *user_info =	purple_notify_user_info_new();
-	GString *info_text;
 	int count, i;
 	NMProperty *property;
 	const char *tag, *value;
 
-	info_text = g_string_new("");
-
 	tag = _("User ID");
 	value = nm_user_record_get_userid(user_record);
 	if (value) {
--- a/libpurple/protocols/oscar/oscar.c	Wed Apr 11 14:03:28 2007 +0000
+++ b/libpurple/protocols/oscar/oscar.c	Wed Apr 11 15:21:47 2007 +0000
@@ -1785,11 +1785,13 @@
 	else
 	{
 		PurpleBuddy *b = purple_find_buddy(account, info->sn);
-		PurpleStatus *status;
-		const char *active_status_id;
-
-		status = purple_presence_get_active_status(purple_buddy_get_presence(b));
-		active_status_id = purple_status_get_id(status);
+		PurpleStatus *status = NULL;
+		const char *active_status_id = NULL;
+
+		if (b != NULL) {
+			status = purple_presence_get_active_status(purple_buddy_get_presence(b));
+			active_status_id = purple_status_get_id(status);
+		}
 
 		if (!active_status_id || strcmp(active_status_id, status_id))
 			purple_prpl_got_user_status(account, info->sn, status_id, NULL);
@@ -2556,7 +2558,7 @@
 	switch(reason) {
 		case 0: /* Invalid (0) */
 			buf = g_strdup_printf(
-				   ngettext(
+				   dngettext(PACKAGE, 
 				   "You missed %hu message from %s because it was invalid.",
 				   "You missed %hu messages from %s because they were invalid.",
 				   nummissed),
@@ -2565,7 +2567,7 @@
 			break;
 		case 1: /* Message too large */
 			buf = g_strdup_printf(
-				   ngettext(
+				   dngettext(PACKAGE, 
 				   "You missed %hu message from %s because it was too large.",
 				   "You missed %hu messages from %s because they were too large.",
 				   nummissed),
@@ -2574,7 +2576,7 @@
 			break;
 		case 2: /* Rate exceeded */
 			buf = g_strdup_printf(
-				   ngettext(
+				   dngettext(PACKAGE, 
 				   "You missed %hu message from %s because the rate limit has been exceeded.",
 				   "You missed %hu messages from %s because the rate limit has been exceeded.",
 				   nummissed),
@@ -2583,7 +2585,7 @@
 			break;
 		case 3: /* Evil Sender */
 			buf = g_strdup_printf(
-				   ngettext(
+				   dngettext(PACKAGE, 
 				   "You missed %hu message from %s because he/she was too evil.",
 				   "You missed %hu messages from %s because he/she was too evil.",
 				   nummissed),
@@ -2592,7 +2594,7 @@
 			break;
 		case 4: /* Evil Receiver */
 			buf = g_strdup_printf(
-				   ngettext(
+				   dngettext(PACKAGE, 
 				   "You missed %hu message from %s because you are too evil.",
 				   "You missed %hu messages from %s because you are too evil.",
 				   nummissed),
@@ -2601,7 +2603,7 @@
 			break;
 		default:
 			buf = g_strdup_printf(
-				   ngettext(
+				   dngettext(PACKAGE, 
 				   "You missed %hu message from %s for an unknown reason.",
 				   "You missed %hu messages from %s for an unknown reason.",
 				   nummissed),
@@ -3916,7 +3918,7 @@
 	}
 
 	secondary = g_strdup_printf(
-					ngettext("The following screen name is associated with %s",
+					dngettext(PACKAGE, "The following screen name is associated with %s",
 						 "The following screen names are associated with %s",
 						 num),
 					email);
@@ -4474,7 +4476,7 @@
 		if (infolen > od->rights.maxsiglen)
 		{
 			gchar *errstr;
-			errstr = g_strdup_printf(ngettext("The maximum profile length of %d byte "
+			errstr = g_strdup_printf(dngettext(PACKAGE, "The maximum profile length of %d byte "
 									 "has been exceeded.  It has been truncated it for you.",
 									 "The maximum profile length of %d bytes "
 									 "has been exceeded.  It has been truncated it for you.",
@@ -4524,7 +4526,7 @@
 		{
 			gchar *errstr;
 
-			errstr = g_strdup_printf(ngettext("The maximum away message length of %d byte "
+			errstr = g_strdup_printf(dngettext(PACKAGE, "The maximum away message length of %d byte "
 									 "has been exceeded.  It has been truncated for you.",
 									 "The maximum away message length of %d bytes "
 									 "has been exceeded.  It has been truncated for you.",
--- a/libpurple/protocols/sametime/sametime.c	Wed Apr 11 14:03:28 2007 +0000
+++ b/libpurple/protocols/sametime/sametime.c	Wed Apr 11 15:21:47 2007 +0000
@@ -4347,9 +4347,9 @@
   PurpleConnection *gc;
   struct mwPurplePluginData *pd;
 
-  if (data) {
-    buddy = data->buddy;
-  }
+  g_return_if_fail(data != NULL);
+
+  buddy = data->buddy;
 
   gc = purple_account_get_connection(buddy->account);
   pd = gc->proto_data;
--- a/libpurple/protocols/toc/toc.c	Wed Apr 11 14:03:28 2007 +0000
+++ b/libpurple/protocols/toc/toc.c	Wed Apr 11 15:21:47 2007 +0000
@@ -2205,7 +2205,7 @@
 			index++;
 		}
 		g_snprintf(buf, sizeof(buf), 
-				ngettext(
+				dngettext(PACKAGE, 
 				"%s requests %s to accept %d file: %s (%.2f %s)%s%s",
 				"%s requests %s to accept %d files: %s (%.2f %s)%s%s",
 				ft->files),
--- a/libpurple/purple-uninstalled.pc.in	Wed Apr 11 14:03:28 2007 +0000
+++ b/libpurple/purple-uninstalled.pc.in	Wed Apr 11 15:21:47 2007 +0000
@@ -9,5 +9,5 @@
 Description: libpurple is a GLib-based instant messenger library.
 Version: @VERSION@
 Requires: glib-2.0
-Cflags: -I${pc_top_builddir}/${pcfiledir}
-Libs: ${pc_top_builddir}/${pcfiledir}/libpurple.la
+Cflags: -I${pcfiledir}
+Libs: ${pcfiledir}/libpurple.la
--- a/libpurple/util.c	Wed Apr 11 14:03:28 2007 +0000
+++ b/libpurple/util.c	Wed Apr 11 15:21:47 2007 +0000
@@ -2932,7 +2932,7 @@
 
 	if (secs < 60)
 	{
-		return g_strdup_printf(ngettext("%d second", "%d seconds", secs), secs);
+		return g_strdup_printf(dngettext(PACKAGE, "%d second", "%d seconds", secs), secs);
 	}
 
 	days = secs / (60 * 60 * 24);
@@ -2944,7 +2944,7 @@
 
 	if (days > 0)
 	{
-		ret = g_strdup_printf(ngettext("%d day", "%d days", days), days);
+		ret = g_strdup_printf(dngettext(PACKAGE, "%d day", "%d days", days), days);
 	}
 
 	if (hrs > 0)
@@ -2952,13 +2952,13 @@
 		if (ret != NULL)
 		{
 			char *tmp = g_strdup_printf(
-					ngettext("%s, %d hour", "%s, %d hours", hrs),
+					dngettext(PACKAGE, "%s, %d hour", "%s, %d hours", hrs),
 							ret, hrs);
 			g_free(ret);
 			ret = tmp;
 		}
 		else
-			ret = g_strdup_printf(ngettext("%d hour", "%d hours", hrs), hrs);
+			ret = g_strdup_printf(dngettext(PACKAGE, "%d hour", "%d hours", hrs), hrs);
 	}
 
 	if (mins > 0)
@@ -2966,13 +2966,13 @@
 		if (ret != NULL)
 		{
 			char *tmp = g_strdup_printf(
-					ngettext("%s, %d minute", "%s, %d minutes", mins),
+					dngettext(PACKAGE, "%s, %d minute", "%s, %d minutes", mins),
 							ret, mins);
 			g_free(ret);
 			ret = tmp;
 		}
 		else
-			ret = g_strdup_printf(ngettext("%d minute", "%d minutes", mins), mins);
+			ret = g_strdup_printf(dngettext(PACKAGE, "%d minute", "%d minutes", mins), mins);
 	}
 
 	return ret;
--- a/pidgin.spec.in	Wed Apr 11 14:03:28 2007 +0000
+++ b/pidgin.spec.in	Wed Apr 11 15:21:47 2007 +0000
@@ -74,48 +74,62 @@
 %package devel
 Summary:    Development headers, documentation, and libraries for Pidgin
 Group:      Applications/Internet
-Requires:   pkgconfig, pidgin = %{epoch}:%{version}
+Requires:   pkgconfig, pidgin = %{epoch}:%{version}, libpurple-devel = %{epoch}:%{version}
+
+%package -n libpurple
+Summary:    libpurple library for IM clients like Pidgin and Finch
+Group:      Applications/Internet
+
+%package -n libpurple-devel
+Summary:    Development headers, documentation, and libraries for libpurple
+Group:      Applications/Internet
+Requires:	libpurple = %{epoch}:%{version}
 
 %if 0%{?_with_howl:1} || 0%{?_with_avahi:1}
-%package bonjour
+%package -n libpurple-bonjour
 Summary:    Bonjour plugin for Pidgin
 Group:      Applications/Internet
-Requires:   pidgin = %{epoch}:%{version}
+Requires:   libpurple = %{epoch}:%{version}
 %endif
 
 %if 0%{?_with_meanwhile:1}
-%package meanwhile
+%package -n libpurple-meanwhile
 Summary:    Lotus Sametime plugin for Pidgin using the Meanwhile library
 Group:      Applications/Internet
-Requires:   pidgin = %{epoch}:%{version}
+Requires:   libpurple = %{epoch}:%{version}
 %endif
 
 %if 0%{?_with_mono:1}
-%package mono
+%package -n libpurple-mono
 Summary:    Mono .NET plugin support for Pidgin
 Group:      Applications/Internet
-Requires:   pidgin = %{epoch}:%{version}
+Requires:   libpurple = %{epoch}:%{version}
 %endif
 
 %if 0%{?_with_silc:1}
-%package silc
+%package -n libpurple-silc
 Summary:    SILC (Secure Internet Live Conferencing) plugin for Pidgin
 Group:      Applications/Internet
-Requires:   pidgin = %{epoch}:%{version}
+Requires:   libpurple = %{epoch}:%{version}
 %endif
 
 %if 0%{?_with_tcl:1}
-%package tcl
+%package -n libpurple-tcl
 Summary:    Tcl scripting support for Pidgin
 Group:      Applications/Internet
-Requires:   pidgin = %{epoch}:%{version}
+Requires:   libpurple = %{epoch}:%{version}
 %endif
 
 %if 0%{!?_without_text:1}
 %package -n finch
 Summary:    A text-based user interface for Pidgin
 Group:      Applications/Internet
-Requires:   pidgin = %{epoch}:%{version}
+Requires:   libpurple = %{epoch}:%{version}
+
+%package -n finch-devel
+Summary:	Headers etc. for finch stuffs
+Group:      Applications/Internet
+Requires:   finch = %{epoch}:%{version}, libpurple-devel = %{epoch}:%{version}
 %endif
 
 %description
@@ -137,24 +151,30 @@
 documentation, and libraries required for development of Pidgin scripts
 and plugins.
 
+%description -n libpurple
+someone write a good description of libpurple please
+
+%description -n libpurple-devel
+someone write a good description of libpurple-devel please
+
 %if 0%{?_with_howl:1} || 0%{?_with_avahi:1}
-%description bonjour
+%description -n libpurple-bonjour
 Bonjour plugin for Pidgin.
 %endif
 
 %if 0%{?_with_meanwhile:1}
-%description meanwhile
+%description -n libpurple-meanwhile
 Lotus Sametime plugin for Pidgin using the Meanwhile library.
 %endif
 
 %if 0%{?_with_mono:1}
-%description mono
+%description -n libpurple-mono
 Mono plugin loader for Pidgin.  This package will allow you to write or
 use Pidgin plugins written in the .NET programming language.
 %endif
 
 %if 0%{?_with_silc:1}
-%description silc
+%description -n libpurple-silc
 SILC (Secure Internet Live Conferencing) plugin for Pidgin.
 %endif
 
@@ -164,10 +184,13 @@
 standard text console or from a terminal within X Windows.  It
 uses ncurses and our homegrown gnt library for drawing windows
 and text.
+
+%description -n finch-devel
+Finch devel blah blah
 %endif
 
 %if 0%{?_with_tcl:1}
-%description tcl
+%description -n libpurple-tcl
 Tcl plugin loader for Pidgin.  This package will allow you to write or
 use Pidgin plugins written in the Tcl programming language.
 %endif
@@ -214,12 +237,14 @@
 rm -f $RPM_BUILD_ROOT%{_libdir}/finch/*.la
 rm -f $RPM_BUILD_ROOT%{_libdir}/pidgin/*.la
 rm -f $RPM_BUILD_ROOT%{_libdir}/libpurple/*.la
+rm -f $RPM_BUILD_ROOT%{_libdir}/libpurple/private/*.la
 rm -f $RPM_BUILD_ROOT%{_libdir}/*.la
 rm -f $RPM_BUILD_ROOT%{perl_archlib}/perllocal.pod
 find $RPM_BUILD_ROOT -type f -name .packlist -exec rm -f {} ';'
 find $RPM_BUILD_ROOT -type f -name '*.bs' -empty -exec rm -f {} ';'
 # do we want to ship the nullclient ?
 rm -f $RPM_BUILD_ROOT%{_bindir}/nullclient
+rm -f $RPM_BUILD_ROOT%{_datadir}/pixmaps/gaim.svg
 
 %if 0%{!?_with_howl:1} && 0%{!?_with_avahi:1}
 rm -f $RPM_BUILD_ROOT%{_libdir}/libpurple/libbonjour.so
@@ -250,7 +275,7 @@
 
 %find_lang %{name}
 
-find $RPM_BUILD_ROOT%{_libdir}/pidgin $RPM_BUILD_ROOT%{_libdir}/libpurple -xtype f -print | \
+find $RPM_BUILD_ROOT%{_libdir}/libpurple -xtype f -print | \
         sed "s@^$RPM_BUILD_ROOT@@g" | \
         grep -v /libbonjour.so | \
         grep -v /libsilcpurple.so | \
@@ -258,10 +283,18 @@
         grep -v /mono.so | \
         grep -v /tcl.so | \
         grep -v ".dll$" | \
-        grep -v ".tcl$" > %{name}-%{version}-coreplugins
+        grep -v ".tcl$" > %{name}-%{version}-purpleplugins
+
+find $RPM_BUILD_ROOT%{_libdir}/pidgin -xtype f -print | \
+        sed "s@^$RPM_BUILD_ROOT@@g" > %{name}-%{version}-pidginplugins
+
+find $RPM_BUILD_ROOT%{_libdir}/finch -xtype f -print | \
+        sed "s@^$RPM_BUILD_ROOT@@g" > %{name}-%{version}-finchplugins
 
 # files -f file can only take one filename :(
-cat %{name}.lang >> %{name}-%{version}-coreplugins
+cat %{name}.lang >> %{name}-%{version}-purpleplugins
+cat %{name}.lang >> %{name}-%{version}-pidginplugins
+cat %{name}.lang >> %{name}-%{version}-finchplugins
 
 %clean
 rm -rf %{buildroot}
@@ -293,7 +326,7 @@
 
 %postun -p /sbin/ldconfig
 
-%files -f %{name}-%{version}-coreplugins
+%files -f %{name}-%{version}-pidginplugins
 %defattr(-, root, root)
 
 %doc AUTHORS
@@ -309,18 +342,31 @@
 %doc %{_mandir}/man3*/*
 
 %dir %{_libdir}/pidgin
-%dir %{_libdir}/libpurple
-%attr(755, root, root) %{perl_vendorarch}/Purple*
-%attr(755, root, root) %{perl_vendorarch}/auto/Purple
+%dir %{perl_vendorarch}/Purple
+%attr(755, root, root) %{perl_vendorarch}/Purple/*
+%attr(755, root, root) %{perl_vendorarch}/auto/Purple/GtkUI*
 
 %{_bindir}/pidgin
-%{_datadir}/pixmaps/*
+%{_datadir}/pixmaps/pidgin
+%{_datadir}/pixmaps/pidgin.png
 %dir %{_datadir}/sounds/pidgin
 %{_datadir}/sounds/pidgin/*
 %{_datadir}/applications/*
 %{_libdir}/libpurple.so.*
 %{_sysconfdir}/gconf/schemas/purple.schemas
 
+
+%files -f %{name}-%{version}-purpleplugins -n libpurple
+%defattr(-, root, root)
+
+%dir %{_libdir}/libpurple
+%attr(755, root, root) %{perl_vendorarch}/Purple.pm
+%dir %{perl_vendorarch}/auto/Purple
+%attr(755, root, root) %{perl_vendorarch}/auto/Purple/Purple.so
+%attr(755, root, root) %{perl_vendorarch}/auto/Purple/autosplit.ix
+
+%{_datadir}/pixmaps/purple
+
 %if 0%{?_with_dbus:1}
 %{_bindir}/purple-client-example
 %{_bindir}/purple-remote
@@ -335,46 +381,44 @@
 
 %files devel
 %defattr(-, root, root)
+%dir %{_includedir}/pidgin
+%{_includedir}/pidgin/*.h
+%{_libdir}/pkgconfig/pidgin.pc
+
+%files -n libpurple-devel
+%defattr(-, root, root)
 
 %doc ChangeLog.API
 %doc HACKING
 %doc PLUGIN_HOWTO
 %doc PROGRAMMING_NOTES
 
-%dir %{_includedir}/finch
-%dir %{_includedir}/gnt
 %dir %{_includedir}/libpurple
-%dir %{_includedir}/pidgin
-%{_includedir}/finch/*.h
-%{_includedir}/gnt/*.h
 %{_includedir}/libpurple/*.h
-%{_includedir}/pidgin/*.h
 %{_libdir}/libpurple.so
-%{_libdir}/libgnt.so
 %{_libdir}/pkgconfig/purple.pc
-%{_libdir}/pkgconfig/pidgin.pc
-%{_libdir}/pkgconfig/gnt.pc
 %{_datadir}/aclocal/purple.m4
 %if 0%{?_with_dbus:1}
 %{_libdir}/libpurple-client.so
 %endif
 
+
 %if 0%{?_with_howl:1} || 0%{?_with_avahi:1}
-%files bonjour
+%files -n libpurple-bonjour
 %defattr(-, root, root)
 
 %{_libdir}/libpurple/libbonjour.*
 %endif
 
 %if 0%{?_with_meanwhile:1}
-%files meanwhile
+%files -n libpurple-meanwhile
 %defattr(-, root, root)
 
 %{_libdir}/libpurple/libsametime.*
 %endif
 
 %if 0%{?_with_mono:1}
-%files mono
+%files libpurple-mono
 %defattr(-, root, root)
 
 %{_libdir}/libpurple/mono.so
@@ -382,30 +426,43 @@
 %endif
 
 %if 0%{?_with_silc:1}
-%files silc
+%files -n libpurple-silc
 %defattr(-, root, root)
 
 %{_libdir}/libpurple/libsilcpurple.*
 %endif
 
 %if 0%{?_with_tcl:1}
-%files tcl
+%files -n libpurple-tcl
 %defattr(-, root, root)
 
 %{_libdir}/libpurple/tcl.so
 %endif
 
 %if 0%{!?_without_text:1}
-%files -n finch
+%files -f %{name}-%{version}-finchplugins -n finch
 %defattr(-, root, root)
 
 %doc %{_mandir}/man1/finch.*
 %{_bindir}/finch
-%{_libdir}/finch/*.so
 %{_libdir}/libgnt.so.*
+
+%files -n finch-devel
+%defattr(-, root, root)
+%dir %{_includedir}/finch
+%{_includedir}/finch/*.h
+# libgnt
+%dir %{_includedir}/gnt
+%{_includedir}/gnt/*.h
+%{_libdir}/pkgconfig/gnt.pc
+%{_libdir}/libgnt.so
+
 %endif
 
 %changelog
+* Wed Apr 11 2007 Stu Tomlinson <stu@nosnilmot.com>
+- Separate out libpurple, libpurple-devel and finch-devel
+
 * Sat Mar 24 2007 Stu Tomlinson <stu@nosnilmot.com>
 - Update to reflect renaming to pidgin/libpurple
 
--- a/pidgin/gtkaccount.c	Wed Apr 11 14:03:28 2007 +0000
+++ b/pidgin/gtkaccount.c	Wed Apr 11 15:21:47 2007 +0000
@@ -1159,9 +1159,9 @@
 			purple_account_set_buddy_icon_path(account, dialog->icon_path);
 			purple_account_set_buddy_icon(account, dialog->cached_icon_path);
 		}
-		else if (purple_prefs_get_path("/purple/gtk/accounts/buddyicon") && icon_change)
+		else if (purple_prefs_get_path(PIDGIN_PREFS_ROOT "/accounts/buddyicon") && icon_change)
 		{
-			const char *filename = purple_prefs_get_path("/purple/gtk/accounts/buddyicon");
+			const char *filename = purple_prefs_get_path(PIDGIN_PREFS_ROOT "/accounts/buddyicon");
 			char *icon = pidgin_convert_buddy_icon(dialog->plugin, filename);
 			purple_account_set_buddy_icon_path(account, filename);
 			purple_account_set_buddy_icon(account, icon);
@@ -1783,12 +1783,12 @@
 configure_cb(GtkWidget *w, GdkEventConfigure *event, AccountsWindow *dialog)
 {
 	if (GTK_WIDGET_VISIBLE(w)) {
-		int old_width = purple_prefs_get_int("/purple/gtk/accounts/dialog/width");
+		int old_width = purple_prefs_get_int(PIDGIN_PREFS_ROOT "/accounts/dialog/width");
 		int col_width;
 		int difference;
 
-		purple_prefs_set_int("/purple/gtk/accounts/dialog/width",  event->width);
-		purple_prefs_set_int("/purple/gtk/accounts/dialog/height", event->height);
+		purple_prefs_set_int(PIDGIN_PREFS_ROOT "/accounts/dialog/width",  event->width);
+		purple_prefs_set_int(PIDGIN_PREFS_ROOT "/accounts/dialog/height", event->height);
 
 		col_width = gtk_tree_view_column_get_width(dialog->screenname_col);
 
@@ -1989,7 +1989,7 @@
 			buddyicon = g_object_ref(G_OBJECT(global_buddyicon));
 		/* This is for when set_account() is called for a single account */
 		else
-			path = purple_prefs_get_path("/purple/gtk/accounts/buddyicon");
+			path = purple_prefs_get_path(PIDGIN_PREFS_ROOT "/accounts/buddyicon");
 	} else
 		path = purple_account_get_ui_string(account, PIDGIN_UI, "non-global-buddyicon-path", NULL);
 
@@ -2041,7 +2041,7 @@
 
 	gtk_list_store_clear(dialog->model);
 
-	if ((path = purple_prefs_get_path("/purple/gtk/accounts/buddyicon")) != NULL) {
+	if ((path = purple_prefs_get_path(PIDGIN_PREFS_ROOT "/accounts/buddyicon")) != NULL) {
 		GdkPixbuf *pixbuf = gdk_pixbuf_new_from_file(path, NULL);
 		if (pixbuf != NULL) {
 			global_buddyicon = gdk_pixbuf_scale_simple(pixbuf, 22, 22, GDK_INTERP_HYPER);
@@ -2263,8 +2263,8 @@
 
 	accounts_window = dialog = g_new0(AccountsWindow, 1);
 
-	width  = purple_prefs_get_int("/purple/gtk/accounts/dialog/width");
-	height = purple_prefs_get_int("/purple/gtk/accounts/dialog/height");
+	width  = purple_prefs_get_int(PIDGIN_PREFS_ROOT "/accounts/dialog/width");
+	height = purple_prefs_get_int(PIDGIN_PREFS_ROOT "/accounts/dialog/height");
 
 	dialog->window = win = gtk_window_new(GTK_WINDOW_TOPLEVEL);
 	gtk_window_set_default_size(GTK_WINDOW(win), width, height);
@@ -2334,7 +2334,7 @@
 	                    accounts_window,
 	                    PURPLE_CALLBACK(account_modified_cb), accounts_window);
 	purple_prefs_connect_callback(accounts_window,
-	                    "/purple/gtk/accounts/buddyicon",
+	                    PIDGIN_PREFS_ROOT "/accounts/buddyicon",
 	                    global_buddyicon_changed, accounts_window);
 
 	gtk_widget_show(win);
@@ -2566,10 +2566,10 @@
 pidgin_account_init(void)
 {
 	char *default_avatar = NULL;
-	purple_prefs_add_none("/purple/gtk/accounts");
-	purple_prefs_add_none("/purple/gtk/accounts/dialog");
-	purple_prefs_add_int("/purple/gtk/accounts/dialog/width",  520);
-	purple_prefs_add_int("/purple/gtk/accounts/dialog/height", 321);
+	purple_prefs_add_none(PIDGIN_PREFS_ROOT "/accounts");
+	purple_prefs_add_none(PIDGIN_PREFS_ROOT "/accounts/dialog");
+	purple_prefs_add_int(PIDGIN_PREFS_ROOT "/accounts/dialog/width",  520);
+	purple_prefs_add_int(PIDGIN_PREFS_ROOT "/accounts/dialog/height", 321);
 	default_avatar = g_build_filename(g_get_home_dir(), ".face.icon", NULL);
 	if (!g_file_test(default_avatar, G_FILE_TEST_EXISTS)) {
 		g_free(default_avatar);
@@ -2580,7 +2580,7 @@
 		}
 	}
 
-	purple_prefs_add_path("/purple/gtk/accounts/buddyicon", default_avatar);
+	purple_prefs_add_path(PIDGIN_PREFS_ROOT "/accounts/buddyicon", default_avatar);
 	g_free(default_avatar);
 
 	purple_signal_register(pidgin_account_get_handle(), "account-modified",
--- a/pidgin/gtkblist.c	Wed Apr 11 14:03:28 2007 +0000
+++ b/pidgin/gtkblist.c	Wed Apr 11 15:21:47 2007 +0000
@@ -179,18 +179,18 @@
 {
 	if(event->changed_mask & GDK_WINDOW_STATE_WITHDRAWN) {
 		if(event->new_window_state & GDK_WINDOW_STATE_WITHDRAWN)
-			purple_prefs_set_bool("/purple/gtk/blist/list_visible", FALSE);
+			purple_prefs_set_bool(PIDGIN_PREFS_ROOT "/blist/list_visible", FALSE);
 		else {
-			purple_prefs_set_bool("/purple/gtk/blist/list_visible", TRUE);
+			purple_prefs_set_bool(PIDGIN_PREFS_ROOT "/blist/list_visible", TRUE);
 			pidgin_blist_refresh_timer(purple_get_blist());
 		}
 	}
 
 	if(event->changed_mask & GDK_WINDOW_STATE_MAXIMIZED) {
 		if(event->new_window_state & GDK_WINDOW_STATE_MAXIMIZED)
-			purple_prefs_set_bool("/purple/gtk/blist/list_maximized", TRUE);
+			purple_prefs_set_bool(PIDGIN_PREFS_ROOT "/blist/list_maximized", TRUE);
 		else
-			purple_prefs_set_bool("/purple/gtk/blist/list_maximized", FALSE);
+			purple_prefs_set_bool(PIDGIN_PREFS_ROOT "/blist/list_maximized", FALSE);
 	}
 
 	/* Refresh gtkblist if un-iconifying */
@@ -239,10 +239,10 @@
 #endif
 
 	/* don't save if nothing changed */
-	if (x == purple_prefs_get_int("/purple/gtk/blist/x") &&
-		y == purple_prefs_get_int("/purple/gtk/blist/y") &&
-		event->width  == purple_prefs_get_int("/purple/gtk/blist/width") &&
-		event->height == purple_prefs_get_int("/purple/gtk/blist/height")) {
+	if (x == purple_prefs_get_int(PIDGIN_PREFS_ROOT "/blist/x") &&
+		y == purple_prefs_get_int(PIDGIN_PREFS_ROOT "/blist/y") &&
+		event->width  == purple_prefs_get_int(PIDGIN_PREFS_ROOT "/blist/width") &&
+		event->height == purple_prefs_get_int(PIDGIN_PREFS_ROOT "/blist/height")) {
 
 		return FALSE; /* carry on normally */
 	}
@@ -257,17 +257,17 @@
 	}
 
 	/* ignore changes when maximized */
-	if(purple_prefs_get_bool("/purple/gtk/blist/list_maximized"))
+	if(purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/blist/list_maximized"))
 		return FALSE;
 
 	/* store the position */
-	purple_prefs_set_int("/purple/gtk/blist/x",      x);
-	purple_prefs_set_int("/purple/gtk/blist/y",      y);
-	purple_prefs_set_int("/purple/gtk/blist/width",  event->width);
-	purple_prefs_set_int("/purple/gtk/blist/height", event->height);
+	purple_prefs_set_int(PIDGIN_PREFS_ROOT "/blist/x",      x);
+	purple_prefs_set_int(PIDGIN_PREFS_ROOT "/blist/y",      y);
+	purple_prefs_set_int(PIDGIN_PREFS_ROOT "/blist/width",  event->width);
+	purple_prefs_set_int(PIDGIN_PREFS_ROOT "/blist/height", event->height);
 
 	gtk_widget_set_size_request(gtkblist->headline_label,
-				    purple_prefs_get_int("/purple/gtk/blist/width")-25,-1);
+				    purple_prefs_get_int(PIDGIN_PREFS_ROOT "/blist/width")-25,-1);
 	/* continue to handle event normally */
 	return FALSE;
 }
@@ -1231,7 +1231,7 @@
 	struct _pidgin_blist_node *gtknode = (struct _pidgin_blist_node *)node->ui_data;
 	GtkWidget *menu;
 	GtkWidget *menuitem;
-	gboolean show_offline = purple_prefs_get_bool("/purple/gtk/blist/show_offline_buddies");
+	gboolean show_offline = purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/blist/show_offline_buddies");
 
 	menu = gtk_menu_new();
 	pidgin_blist_make_buddy_menu(menu, b, FALSE);
@@ -1443,7 +1443,7 @@
 {
 	pidgin_set_cursor(gtkblist->window, GDK_WATCH);
 
-	purple_prefs_set_bool("/purple/gtk/blist/show_buddy_icons",
+	purple_prefs_set_bool(PIDGIN_PREFS_ROOT "/blist/show_buddy_icons",
 			    gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(item)));
 
 	pidgin_clear_cursor(gtkblist->window);
@@ -1453,7 +1453,7 @@
 {
 	pidgin_set_cursor(gtkblist->window, GDK_WATCH);
 
-	purple_prefs_set_bool("/purple/gtk/blist/show_idle_time",
+	purple_prefs_set_bool(PIDGIN_PREFS_ROOT "/blist/show_idle_time",
 			    gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(item)));
 
 	pidgin_clear_cursor(gtkblist->window);
@@ -1463,7 +1463,7 @@
 {
 	pidgin_set_cursor(gtkblist->window, GDK_WATCH);
 
-	purple_prefs_set_bool("/purple/gtk/blist/show_empty_groups",
+	purple_prefs_set_bool(PIDGIN_PREFS_ROOT "/blist/show_empty_groups",
 			gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(item)));
 
 	pidgin_clear_cursor(gtkblist->window);
@@ -1474,7 +1474,7 @@
 {
 	pidgin_set_cursor(gtkblist->window, GDK_WATCH);
 
-	purple_prefs_set_bool("/purple/gtk/blist/show_offline_buddies",
+	purple_prefs_set_bool(PIDGIN_PREFS_ROOT "/blist/show_offline_buddies",
 			gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(checkitem)));
 
 	pidgin_clear_cursor(gtkblist->window);
@@ -1482,7 +1482,7 @@
 
 static void pidgin_blist_mute_sounds_cb(gpointer data, guint action, GtkWidget *item)
 {
-	purple_prefs_set_bool("/purple/gtk/sound/mute", GTK_CHECK_MENU_ITEM(item)->active);
+	purple_prefs_set_bool(PIDGIN_PREFS_ROOT "/sound/mute", GTK_CHECK_MENU_ITEM(item)->active);
 }
 
 static void
@@ -2121,7 +2121,7 @@
 		prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(account->gc->prpl);
 
 #if 0
-	if (!purple_prefs_get_bool("/purple/gtk/blist/show_buddy_icons"))
+	if (!purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/blist/show_buddy_icons"))
 		return NULL;
 #endif
 
@@ -2504,7 +2504,7 @@
 	return (purple_account_is_connected(buddy->account) &&
 			(purple_presence_is_online(buddy->presence) ||
 			 (gtknode && gtknode->recent_signonoff) ||
-			 purple_prefs_get_bool("/purple/gtk/blist/show_offline_buddies") ||
+			 purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/blist/show_offline_buddies") ||
 			 purple_blist_node_get_bool((PurpleBlistNode*)buddy, "show_offline")));
 }
 
@@ -2687,7 +2687,7 @@
 	GtkTreePath *path;
 	int delay;
 
-	delay = purple_prefs_get_int("/purple/gtk/blist/tooltip_delay");
+	delay = purple_prefs_get_int(PIDGIN_PREFS_ROOT "/blist/tooltip_delay");
 
 	if (delay == 0)
 		return FALSE;
@@ -2743,8 +2743,8 @@
 static void
 toggle_debug(void)
 {
-	purple_prefs_set_bool("/purple/gtk/debug/enabled",
-			!purple_prefs_get_bool("/purple/gtk/debug/enabled"));
+	purple_prefs_set_bool(PIDGIN_PREFS_ROOT "/debug/enabled",
+			!purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/debug/enabled"));
 }
 
 
@@ -3220,7 +3220,7 @@
 
 	presence = purple_buddy_get_presence(b);
 
-	if (!purple_prefs_get_bool("/purple/gtk/blist/show_buddy_icons"))
+	if (!purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/blist/show_buddy_icons"))
 	{
 		if (!selected && purple_presence_is_idle(presence))
 		{
@@ -3304,7 +3304,7 @@
 		text = g_strdup(esc);
 
 	if (purple_presence_is_idle(presence)) {
-		if (purple_prefs_get_bool("/purple/gtk/blist/show_idle_time")) {
+		if (purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/blist/show_idle_time")) {
 			time_t idle_secs = purple_presence_get_idle_time(presence);
 
 			if (idle_secs > 0) {
@@ -3374,16 +3374,16 @@
 {
 	int blist_x, blist_y, blist_width, blist_height;
 
-	blist_width = purple_prefs_get_int("/purple/gtk/blist/width");
+	blist_width = purple_prefs_get_int(PIDGIN_PREFS_ROOT "/blist/width");
 
 	/* if the window exists, is hidden, we're saving positions, and the
 	 * position is sane... */
 	if (gtkblist && gtkblist->window &&
 		!GTK_WIDGET_VISIBLE(gtkblist->window) && blist_width != 0) {
 
-		blist_x      = purple_prefs_get_int("/purple/gtk/blist/x");
-		blist_y      = purple_prefs_get_int("/purple/gtk/blist/y");
-		blist_height = purple_prefs_get_int("/purple/gtk/blist/height");
+		blist_x      = purple_prefs_get_int(PIDGIN_PREFS_ROOT "/blist/x");
+		blist_y      = purple_prefs_get_int(PIDGIN_PREFS_ROOT "/blist/y");
+		blist_height = purple_prefs_get_int(PIDGIN_PREFS_ROOT "/blist/height");
 
 		/* ...check position is on screen... */
 		if (blist_x >= gdk_screen_width())
@@ -3399,7 +3399,7 @@
 		/* ...and move it back. */
 		gtk_window_move(GTK_WINDOW(gtkblist->window), blist_x, blist_y);
 		gtk_window_resize(GTK_WINDOW(gtkblist->window), blist_width, blist_height);
-		if (purple_prefs_get_bool("/purple/gtk/blist/list_maximized"))
+		if (purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/blist/list_maximized"))
 			gtk_window_maximize(GTK_WINDOW(gtkblist->window));
 	}
 }
@@ -3680,7 +3680,7 @@
 	pidgin_blist_sort_method_reg("status", _("By status"), sort_method_status);
 	pidgin_blist_sort_method_reg("log_size", _("By log size"), sort_method_log);
 #endif
-	pidgin_blist_sort_method_set(purple_prefs_get_string("/purple/gtk/blist/sort_type"));
+	pidgin_blist_sort_method_set(purple_prefs_get_string(PIDGIN_PREFS_ROOT "/blist/sort_type"));
 }
 
 static void _prefs_change_redo_list()
@@ -3719,7 +3719,7 @@
 static void _prefs_change_sort_method(const char *pref_name, PurplePrefType type,
 									  gconstpointer val, gpointer data)
 {
-	if(!strcmp(pref_name, "/purple/gtk/blist/sort_type"))
+	if(!strcmp(pref_name, PIDGIN_PREFS_ROOT "/blist/sort_type"))
 		pidgin_blist_sort_method_set(val);
 }
 
@@ -4119,7 +4119,7 @@
 				{"application/x-im-contact", 0, DRAG_BUDDY},
 				{"text/x-vcard", 0, DRAG_VCARD }};
 	if (gtkblist && gtkblist->window) {
-		purple_blist_set_visible(purple_prefs_get_bool("/purple/gtk/blist/list_visible"));
+		purple_blist_set_visible(purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/blist/list_visible"));
 		return;
 	}
 
@@ -4189,7 +4189,7 @@
 	pretty = pidgin_make_pretty_arrows(tmp);
 	g_free(tmp);
 	label = gtk_label_new(NULL);
-	gtk_widget_set_size_request(label, purple_prefs_get_int("/purple/gtk/blist/width") - 12, -1);
+	gtk_widget_set_size_request(label, purple_prefs_get_int(PIDGIN_PREFS_ROOT "/blist/width") - 12, -1);
 	gtk_label_set_line_wrap(GTK_LABEL(label), TRUE);
 	gtk_misc_set_alignment(GTK_MISC(label), 0.5, 0.2);
 	gtk_label_set_markup(GTK_LABEL(label), pretty);
@@ -4212,7 +4212,7 @@
 	gtk_misc_set_alignment(GTK_MISC(gtkblist->headline_image), 0.0, 0);
 	gtkblist->headline_label = gtk_label_new(NULL);
 	gtk_widget_set_size_request(gtkblist->headline_label,
-				    purple_prefs_get_int("/purple/gtk/blist/width")-25,-1);
+				    purple_prefs_get_int(PIDGIN_PREFS_ROOT "/blist/width")-25,-1);
 	gtk_label_set_line_wrap(GTK_LABEL(gtkblist->headline_label), TRUE);
 	gtk_box_pack_start(GTK_BOX(gtkblist->headline_hbox), gtkblist->headline_image, FALSE, FALSE, 0);
 	gtk_box_pack_start(GTK_BOX(gtkblist->headline_hbox), gtkblist->headline_label, TRUE, TRUE, 0);
@@ -4423,21 +4423,21 @@
 	 * after the treeview or faceprint gets mad. -Robot101
 	 */
 	gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(gtk_item_factory_get_item (gtkblist->ift, N_("/Buddies/Show Offline Buddies"))),
-			purple_prefs_get_bool("/purple/gtk/blist/show_offline_buddies"));
+			purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/blist/show_offline_buddies"));
 
 	gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(gtk_item_factory_get_item (gtkblist->ift, N_("/Buddies/Show Empty Groups"))),
-			purple_prefs_get_bool("/purple/gtk/blist/show_empty_groups"));
+			purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/blist/show_empty_groups"));
 
 	gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(gtk_item_factory_get_item (gtkblist->ift, N_("/Tools/Mute Sounds"))),
-			purple_prefs_get_bool("/purple/gtk/sound/mute"));
+			purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/sound/mute"));
 
 	gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(gtk_item_factory_get_item (gtkblist->ift, N_("/Buddies/Show Buddy Details"))),
-			purple_prefs_get_bool("/purple/gtk/blist/show_buddy_icons"));
+			purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/blist/show_buddy_icons"));
 
 	gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(gtk_item_factory_get_item (gtkblist->ift, N_("/Buddies/Show Idle Times"))),
-			purple_prefs_get_bool("/purple/gtk/blist/show_idle_time"));
-
-	if(!strcmp(purple_prefs_get_string("/purple/gtk/sound/method"), "none"))
+			purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/blist/show_idle_time"));
+
+	if(!strcmp(purple_prefs_get_string(PIDGIN_PREFS_ROOT "/sound/method"), "none"))
 		gtk_widget_set_sensitive(gtk_item_factory_get_widget(gtkblist->ift, N_("/Tools/Mute Sounds")), FALSE);
 
 	/* Update some dynamic things */
@@ -4450,7 +4450,7 @@
 	pidgin_blist_restore_position();
 	gtk_widget_show_all(GTK_WIDGET(gtkblist->vbox));
 	gtk_widget_realize(GTK_WIDGET(gtkblist->window));
-	purple_blist_set_visible(purple_prefs_get_bool("/purple/gtk/blist/list_visible"));
+	purple_blist_set_visible(purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/blist/list_visible"));
 
 	/* start the refresh timer */
 	gtkblist->refresh_timer = g_timeout_add(30000, (GSourceFunc)pidgin_blist_refresh_timer, list);
@@ -4458,23 +4458,23 @@
 	handle = pidgin_blist_get_handle();
 
 	/* things that affect how buddies are displayed */
-	purple_prefs_connect_callback(handle, "/purple/gtk/blist/show_buddy_icons",
+	purple_prefs_connect_callback(handle, PIDGIN_PREFS_ROOT "/blist/show_buddy_icons",
 			_prefs_change_redo_list, NULL);
-	purple_prefs_connect_callback(handle, "/purple/gtk/blist/show_idle_time",
+	purple_prefs_connect_callback(handle, PIDGIN_PREFS_ROOT "/blist/show_idle_time",
 			_prefs_change_redo_list, NULL);
-	purple_prefs_connect_callback(handle, "/purple/gtk/blist/show_empty_groups",
+	purple_prefs_connect_callback(handle, PIDGIN_PREFS_ROOT "/blist/show_empty_groups",
 			_prefs_change_redo_list, NULL);
-	purple_prefs_connect_callback(handle, "/purple/gtk/blist/show_offline_buddies",
+	purple_prefs_connect_callback(handle, PIDGIN_PREFS_ROOT "/blist/show_offline_buddies",
 			_prefs_change_redo_list, NULL);
 
 	/* sorting */
-	purple_prefs_connect_callback(handle, "/purple/gtk/blist/sort_type",
+	purple_prefs_connect_callback(handle, PIDGIN_PREFS_ROOT "/blist/sort_type",
 			_prefs_change_sort_method, NULL);
 
 	/* menus */
-	purple_prefs_connect_callback(handle, "/purple/gtk/sound/mute",
+	purple_prefs_connect_callback(handle, PIDGIN_PREFS_ROOT "/sound/mute",
 			pidgin_blist_mute_pref_cb, NULL);
-	purple_prefs_connect_callback(handle, "/purple/gtk/sound/method",
+	purple_prefs_connect_callback(handle, PIDGIN_PREFS_ROOT "/sound/method",
 			pidgin_blist_sound_method_pref_cb, NULL);
 
 	/* Setup some purple signal handlers. */
@@ -4729,12 +4729,12 @@
 
 	group = (PurpleGroup*)gnode;
 
-	if(purple_prefs_get_bool("/purple/gtk/blist/show_offline_buddies"))
+	if(purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/blist/show_offline_buddies"))
 		count = purple_blist_get_group_size(group, FALSE);
 	else
 		count = purple_blist_get_group_online_count(group);
 
-	if (count > 0 || purple_prefs_get_bool("/purple/gtk/blist/show_empty_groups"))
+	if (count > 0 || purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/blist/show_empty_groups"))
 		show = TRUE;
 	else if (PURPLE_BLIST_NODE_IS_BUDDY(node)){ /* Or chat? */
 		if (buddy_is_displayable((PurpleBuddy*)node))
@@ -4815,7 +4815,7 @@
 	char *idle = NULL;
 	gboolean expanded = ((struct _pidgin_blist_node *)(node->parent->ui_data))->contact_expanded;
 	gboolean selected = (gtkblist->selected_node == node);
-	gboolean biglist = purple_prefs_get_bool("/purple/gtk/blist/show_buddy_icons");
+	gboolean biglist = purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/blist/show_buddy_icons");
 	presence = purple_buddy_get_presence(buddy);
 
 	status = pidgin_blist_get_status_icon((PurpleBlistNode*)buddy,
@@ -4832,9 +4832,9 @@
 	emblem = pidgin_blist_get_emblem((PurpleBlistNode*) buddy);
 	mark = pidgin_blist_get_name_markup(buddy, selected);
 
-	if (purple_prefs_get_bool("/purple/gtk/blist/show_idle_time") &&
+	if (purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/blist/show_idle_time") &&
 		purple_presence_is_idle(presence) &&
-		!purple_prefs_get_bool("/purple/gtk/blist/show_buddy_icons"))
+		!purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/blist/show_buddy_icons"))
 	{
 		time_t idle_secs = purple_presence_get_idle_time(presence);
 
@@ -5012,7 +5012,7 @@
 				STATUS_ICON_COLUMN, status,
 				STATUS_ICON_VISIBLE_COLUMN, TRUE,
 				BUDDY_ICON_COLUMN, avatar ? avatar : gtkblist->empty_avatar,
-				BUDDY_ICON_VISIBLE_COLUMN,  purple_prefs_get_bool("/purple/gtk/blist/show_buddy_icons"),
+				BUDDY_ICON_VISIBLE_COLUMN,  purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/blist/show_buddy_icons"),
 			        EMBLEM_COLUMN, emblem,
 				EMBLEM_VISIBLE_COLUMN, emblem != NULL,
 				NAME_COLUMN, mark,
@@ -5888,19 +5888,19 @@
 						NULL);
 
 	/* Initialize prefs */
-	purple_prefs_add_none("/purple/gtk/blist");
-	purple_prefs_add_bool("/purple/gtk/blist/show_buddy_icons", TRUE);
-	purple_prefs_add_bool("/purple/gtk/blist/show_empty_groups", FALSE);
-	purple_prefs_add_bool("/purple/gtk/blist/show_idle_time", TRUE);
-	purple_prefs_add_bool("/purple/gtk/blist/show_offline_buddies", FALSE);
-	purple_prefs_add_bool("/purple/gtk/blist/list_visible", TRUE);
-	purple_prefs_add_bool("/purple/gtk/blist/list_maximized", FALSE);
-	purple_prefs_add_string("/purple/gtk/blist/sort_type", "alphabetical");
-	purple_prefs_add_int("/purple/gtk/blist/x", 0);
-	purple_prefs_add_int("/purple/gtk/blist/y", 0);
-	purple_prefs_add_int("/purple/gtk/blist/width", 250); /* Golden ratio, baby */
-	purple_prefs_add_int("/purple/gtk/blist/height", 405); /* Golden ratio, baby */
-	purple_prefs_add_int("/purple/gtk/blist/tooltip_delay", 500);
+	purple_prefs_add_none(PIDGIN_PREFS_ROOT "/blist");
+	purple_prefs_add_bool(PIDGIN_PREFS_ROOT "/blist/show_buddy_icons", TRUE);
+	purple_prefs_add_bool(PIDGIN_PREFS_ROOT "/blist/show_empty_groups", FALSE);
+	purple_prefs_add_bool(PIDGIN_PREFS_ROOT "/blist/show_idle_time", TRUE);
+	purple_prefs_add_bool(PIDGIN_PREFS_ROOT "/blist/show_offline_buddies", FALSE);
+	purple_prefs_add_bool(PIDGIN_PREFS_ROOT "/blist/list_visible", TRUE);
+	purple_prefs_add_bool(PIDGIN_PREFS_ROOT "/blist/list_maximized", FALSE);
+	purple_prefs_add_string(PIDGIN_PREFS_ROOT "/blist/sort_type", "alphabetical");
+	purple_prefs_add_int(PIDGIN_PREFS_ROOT "/blist/x", 0);
+	purple_prefs_add_int(PIDGIN_PREFS_ROOT "/blist/y", 0);
+	purple_prefs_add_int(PIDGIN_PREFS_ROOT "/blist/width", 250); /* Golden ratio, baby */
+	purple_prefs_add_int(PIDGIN_PREFS_ROOT "/blist/height", 405); /* Golden ratio, baby */
+	purple_prefs_add_int(PIDGIN_PREFS_ROOT "/blist/tooltip_delay", 500);
 
 	/* Register our signals */
 	purple_signal_register(gtk_blist_handle, "gtkblist-hiding",
@@ -6524,7 +6524,7 @@
 		pidgin_set_cursor(gtkblist->window, GDK_WATCH);
 		/* This is redundant. I think. */
 		/* pidgin_blist_sort_method_set(id); */
-		purple_prefs_set_string("/purple/gtk/blist/sort_type", id);
+		purple_prefs_set_string(PIDGIN_PREFS_ROOT "/blist/sort_type", id);
 
 		pidgin_clear_cursor(gtkblist->window);
 	}
@@ -6538,7 +6538,7 @@
 	GList *l;
 	GSList *sl = NULL;
 	GtkWidget *sortmenu;
-	const char *m = purple_prefs_get_string("/purple/gtk/blist/sort_type");
+	const char *m = purple_prefs_get_string(PIDGIN_PREFS_ROOT "/blist/sort_type");
 
 	if ((gtkblist == NULL) || (gtkblist->ift == NULL))
 		return;
--- a/pidgin/gtkconv.c	Wed Apr 11 14:03:28 2007 +0000
+++ b/pidgin/gtkconv.c	Wed Apr 11 15:21:47 2007 +0000
@@ -214,7 +214,7 @@
 static gboolean
 lbox_size_allocate_cb(GtkWidget *w, GtkAllocation *allocation, gpointer data)
 {
-	purple_prefs_set_int("/purple/gtk/conversations/chat/userlist_width", allocation->width == 1 ? 0 : allocation->width);
+	purple_prefs_set_int(PIDGIN_PREFS_ROOT "/conversations/chat/userlist_width", allocation->width == 1 ? 0 : allocation->width);
 
 	return FALSE;
 }
@@ -243,20 +243,20 @@
 	if (purple_conversation_get_type(conv) == PURPLE_CONV_TYPE_IM)
 	{
 		if (w == gtkconv->imhtml) {
-			purple_prefs_set_int("/purple/gtk/conversations/im/default_width", allocation->width);
-			purple_prefs_set_int("/purple/gtk/conversations/im/default_height", allocation->height);
+			purple_prefs_set_int(PIDGIN_PREFS_ROOT "/conversations/im/default_width", allocation->width);
+			purple_prefs_set_int(PIDGIN_PREFS_ROOT "/conversations/im/default_height", allocation->height);
 		}
 		if (w == gtkconv->lower_hbox)
-			purple_prefs_set_int("/purple/gtk/conversations/im/entry_height", allocation->height);
+			purple_prefs_set_int(PIDGIN_PREFS_ROOT "/conversations/im/entry_height", allocation->height);
 	}
 	else if (purple_conversation_get_type(conv) == PURPLE_CONV_TYPE_CHAT)
 	{
 		if (w == gtkconv->imhtml) {
-			purple_prefs_set_int("/purple/gtk/conversations/chat/default_width", allocation->width);
-			purple_prefs_set_int("/purple/gtk/conversations/chat/default_height", allocation->height);
+			purple_prefs_set_int(PIDGIN_PREFS_ROOT "/conversations/chat/default_width", allocation->width);
+			purple_prefs_set_int(PIDGIN_PREFS_ROOT "/conversations/chat/default_height", allocation->height);
 		}
 		if (w == gtkconv->lower_hbox)
-			purple_prefs_set_int("/purple/gtk/conversations/chat/entry_height", allocation->height);
+			purple_prefs_set_int(PIDGIN_PREFS_ROOT "/conversations/chat/entry_height", allocation->height);
 	}
 
 	return FALSE;
@@ -272,30 +272,30 @@
 		char color[8];
 		GdkColor fg_color, bg_color;
 
-		if (purple_prefs_get_bool("/purple/gtk/conversations/send_bold") != GTK_IMHTML(c->entry)->edit.bold)
+		if (purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/conversations/send_bold") != GTK_IMHTML(c->entry)->edit.bold)
 			gtk_imhtml_toggle_bold(GTK_IMHTML(c->entry));
 
-		if (purple_prefs_get_bool("/purple/gtk/conversations/send_italic") != GTK_IMHTML(c->entry)->edit.italic)
+		if (purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/conversations/send_italic") != GTK_IMHTML(c->entry)->edit.italic)
 			gtk_imhtml_toggle_italic(GTK_IMHTML(c->entry));
 
-		if (purple_prefs_get_bool("/purple/gtk/conversations/send_underline") != GTK_IMHTML(c->entry)->edit.underline)
+		if (purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/conversations/send_underline") != GTK_IMHTML(c->entry)->edit.underline)
 			gtk_imhtml_toggle_underline(GTK_IMHTML(c->entry));
 
 		gtk_imhtml_toggle_fontface(GTK_IMHTML(c->entry),
-			purple_prefs_get_string("/purple/gtk/conversations/font_face"));
+			purple_prefs_get_string(PIDGIN_PREFS_ROOT "/conversations/font_face"));
 
 		if (!(conv->features & PURPLE_CONNECTION_NO_FONTSIZE))
 		{
-			int size = purple_prefs_get_int("/purple/gtk/conversations/font_size");
+			int size = purple_prefs_get_int(PIDGIN_PREFS_ROOT "/conversations/font_size");
 
 			/* 3 is the default. */
 			if (size != 3)
 				gtk_imhtml_font_set_size(GTK_IMHTML(c->entry), size);
 		}
 
-		if(strcmp(purple_prefs_get_string("/purple/gtk/conversations/fgcolor"), "") != 0)
+		if(strcmp(purple_prefs_get_string(PIDGIN_PREFS_ROOT "/conversations/fgcolor"), "") != 0)
 		{
-			gdk_color_parse(purple_prefs_get_string("/purple/gtk/conversations/fgcolor"),
+			gdk_color_parse(purple_prefs_get_string(PIDGIN_PREFS_ROOT "/conversations/fgcolor"),
 							&fg_color);
 			g_snprintf(color, sizeof(color), "#%02x%02x%02x",
 									fg_color.red   / 256,
@@ -307,9 +307,9 @@
 		gtk_imhtml_toggle_forecolor(GTK_IMHTML(c->entry), color);
 
 		if(!(conv->features & PURPLE_CONNECTION_NO_BGCOLOR) &&
-		   strcmp(purple_prefs_get_string("/purple/gtk/conversations/bgcolor"), "") != 0)
+		   strcmp(purple_prefs_get_string(PIDGIN_PREFS_ROOT "/conversations/bgcolor"), "") != 0)
 		{
-			gdk_color_parse(purple_prefs_get_string("/purple/gtk/conversations/bgcolor"),
+			gdk_color_parse(purple_prefs_get_string(PIDGIN_PREFS_ROOT "/conversations/bgcolor"),
 							&bg_color);
 			g_snprintf(color, sizeof(color), "#%02x%02x%02x",
 									bg_color.red   / 256,
@@ -459,10 +459,10 @@
 	PurpleConversation *conv = gtkconv->active_conv;
 	if (purple_conversation_get_type(conv) == PURPLE_CONV_TYPE_CHAT)
 		gtk_widget_set_size_request(gtkconv->lower_hbox, -1,
-					    purple_prefs_get_int("/purple/gtk/conversations/chat/entry_height"));
+					    purple_prefs_get_int(PIDGIN_PREFS_ROOT "/conversations/chat/entry_height"));
 	else
 		gtk_widget_set_size_request(gtkconv->lower_hbox, -1,
-					    purple_prefs_get_int("/purple/gtk/conversations/im/entry_height"));
+					    purple_prefs_get_int(PIDGIN_PREFS_ROOT "/conversations/im/entry_height"));
 }
 
 static gboolean
@@ -1356,7 +1356,7 @@
 static void
 menu_toolbar_cb(gpointer data, guint action, GtkWidget *widget)
 {
-	purple_prefs_set_bool("/purple/gtk/conversations/show_formatting_toolbar",
+	purple_prefs_set_bool(PIDGIN_PREFS_ROOT "/conversations/show_formatting_toolbar",
 	                    gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(widget)));
 }
 
@@ -1381,7 +1381,7 @@
 static void
 menu_timestamps_cb(gpointer data, guint action, GtkWidget *widget)
 {
-	purple_prefs_set_bool("/purple/gtk/conversations/show_timestamps",
+	purple_prefs_set_bool(PIDGIN_PREFS_ROOT "/conversations/show_timestamps",
 		gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(widget)));
 }
 
@@ -3031,14 +3031,14 @@
 	win->menu.sounds =
 		gtk_item_factory_get_widget(win->menu.item_factory,
 		                            N_("/Options/Enable Sounds"));
-	method = purple_prefs_get_string("/purple/gtk/sound/method");
-	if (!strcmp(method, "none"))
+	method = purple_prefs_get_string(PIDGIN_PREFS_ROOT "/sound/method");
+	if (method != NULL && !strcmp(method, "none"))
 	{
 		gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(win->menu.sounds),
 		                               FALSE);
 		gtk_widget_set_sensitive(win->menu.sounds, FALSE);
 	}
-	purple_prefs_connect_callback(win, "/purple/gtk/sound/method",
+	purple_prefs_connect_callback(win, PIDGIN_PREFS_ROOT "/sound/method",
 				    sound_method_pref_changed_cb, win);
 
 	win->menu.show_formatting_toolbar =
@@ -3050,13 +3050,13 @@
 	win->menu.show_icon =
 		gtk_item_factory_get_widget(win->menu.item_factory,
 		                            N_("/Options/Show Buddy Icon"));
-	if (!purple_prefs_get_bool("/purple/gtk/conversations/im/show_buddy_icons"))
+	if (!purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/conversations/im/show_buddy_icons"))
 	{
 		gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(win->menu.show_icon),
 		                               FALSE);
 		gtk_widget_set_sensitive(win->menu.show_icon, FALSE);
 	}
-	purple_prefs_connect_callback(win, "/purple/gtk/conversations/im/show_buddy_icons",
+	purple_prefs_connect_callback(win, PIDGIN_PREFS_ROOT "/conversations/im/show_buddy_icons",
 				    show_buddy_icons_pref_changed_cb, win);
 
 	win->menu.tray = pidgin_menu_tray_new();
@@ -4192,8 +4192,8 @@
 	                               imhtml_sw_hscroll, GTK_POLICY_ALWAYS);
 
 	gtk_widget_set_size_request(gtkconv->imhtml,
-			purple_prefs_get_int("/purple/gtk/conversations/chat/default_width"),
-			purple_prefs_get_int("/purple/gtk/conversations/chat/default_height"));
+			purple_prefs_get_int(PIDGIN_PREFS_ROOT "/conversations/chat/default_width"),
+			purple_prefs_get_int(PIDGIN_PREFS_ROOT "/conversations/chat/default_height"));
 	g_signal_connect(G_OBJECT(gtkconv->imhtml), "size-allocate",
 					 G_CALLBACK(size_allocate_cb), gtkconv);
 
@@ -4237,7 +4237,7 @@
 	gtk_tree_view_column_set_sizing(col, GTK_TREE_VIEW_COLUMN_AUTOSIZE);
 	gtk_tree_view_append_column(GTK_TREE_VIEW(list), col);
 	gtk_widget_set_size_request(lbox,
-	                            purple_prefs_get_int("/purple/gtk/conversations/chat/userlist_width"), -1);
+	                            purple_prefs_get_int(PIDGIN_PREFS_ROOT "/conversations/chat/userlist_width"), -1);
 
 	g_signal_connect(G_OBJECT(list), "button_press_event",
 					 G_CALLBACK(right_click_chat_cb), gtkconv);
@@ -4304,7 +4304,7 @@
 	gtk_imhtml_set_protocol_name(GTK_IMHTML(gtkconv->entry),
 								 purple_account_get_protocol_name(conv->account));
 	gtk_widget_set_size_request(gtkconv->lower_hbox, -1,
-			purple_prefs_get_int("/purple/gtk/conversations/chat/entry_height"));
+			purple_prefs_get_int(PIDGIN_PREFS_ROOT "/conversations/chat/entry_height"));
 	gtkconv->entry_buffer =
 		gtk_text_view_get_buffer(GTK_TEXT_VIEW(gtkconv->entry));
 	g_object_set_data(G_OBJECT(gtkconv->entry_buffer), "user_data", gtkconv);
@@ -4366,8 +4366,8 @@
 	                               imhtml_sw_hscroll, GTK_POLICY_ALWAYS);
 
 	gtk_widget_set_size_request(gtkconv->imhtml,
-			purple_prefs_get_int("/purple/gtk/conversations/im/default_width"),
-			purple_prefs_get_int("/purple/gtk/conversations/im/default_height"));
+			purple_prefs_get_int(PIDGIN_PREFS_ROOT "/conversations/im/default_width"),
+			purple_prefs_get_int(PIDGIN_PREFS_ROOT "/conversations/im/default_height"));
 	g_signal_connect(G_OBJECT(gtkconv->imhtml), "size-allocate",
 	                 G_CALLBACK(size_allocate_cb), gtkconv);
 
@@ -4403,7 +4403,7 @@
 	gtk_imhtml_set_protocol_name(GTK_IMHTML(gtkconv->entry),
 								 purple_account_get_protocol_name(conv->account));
 	gtk_widget_set_size_request(gtkconv->lower_hbox, -1,
-			purple_prefs_get_int("/purple/gtk/conversations/im/entry_height"));
+			purple_prefs_get_int(PIDGIN_PREFS_ROOT "/conversations/im/entry_height"));
 	gtkconv->entry_buffer =
 		gtk_text_view_get_buffer(GTK_TEXT_VIEW(gtkconv->entry));
 	g_object_set_data(G_OBJECT(gtkconv->entry_buffer), "user_data", gtkconv);
@@ -4432,7 +4432,7 @@
 	g_signal_connect_after(G_OBJECT(gtkconv->entry), "format_function_clear",
 						   G_CALLBACK(clear_formatting_cb), gtkconv);
 
-	gtkconv->u.im->animate = purple_prefs_get_bool("/purple/gtk/conversations/im/animate_buddy_icons");
+	gtkconv->u.im->animate = purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/conversations/im/animate_buddy_icons");
 	gtkconv->u.im->show_icon = TRUE;
 
 	/*
@@ -4682,13 +4682,13 @@
 
 	gtkconv->make_sound = TRUE;
 
-	if (purple_prefs_get_bool("/purple/gtk/conversations/show_formatting_toolbar"))
+	if (purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/conversations/show_formatting_toolbar"))
 		gtk_widget_show(gtkconv->toolbar);
 	else
 		gtk_widget_hide(gtkconv->toolbar);
 
 	gtk_imhtml_show_comments(GTK_IMHTML(gtkconv->imhtml),
-		purple_prefs_get_bool("/purple/gtk/conversations/show_timestamps"));
+		purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/conversations/show_timestamps"));
 	gtk_imhtml_set_protocol_name(GTK_IMHTML(gtkconv->imhtml),
 								 purple_account_get_protocol_name(conv->account));
 
@@ -4728,7 +4728,7 @@
 		return;
 
 	/* create hidden conv if hide_new pref is always */
-	if (strcmp(purple_prefs_get_string("/purple/gtk/conversations/im/hide_new"), "always") == 0)
+	if (strcmp(purple_prefs_get_string(PIDGIN_PREFS_ROOT "/conversations/im/hide_new"), "always") == 0)
 	{
 		ui_ops->create_conversation = pidgin_conv_new_hidden;
 		purple_conversation_new(PURPLE_CONV_TYPE_IM, account, sender);
@@ -4737,7 +4737,7 @@
 	}
 
 	/* create hidden conv if hide_new pref is away and account is away */
-	if (strcmp(purple_prefs_get_string("/purple/gtk/conversations/im/hide_new"), "away") == 0 &&
+	if (strcmp(purple_prefs_get_string(PIDGIN_PREFS_ROOT "/conversations/im/hide_new"), "away") == 0 &&
 	    !purple_status_is_available(purple_account_get_active_status(account)))
 	{
 		ui_ops->create_conversation = pidgin_conv_new_hidden;
@@ -4986,7 +4986,7 @@
 				gtkconv->imhtml)));
 
 	max_scrollback_lines = purple_prefs_get_int(
-		"/purple/gtk/conversations/scrollback_lines");
+		PIDGIN_PREFS_ROOT "/conversations/scrollback_lines");
 	/* If we're sitting at more than 100 lines more than the
 	   max scrollback, trim down to max scrollback */
 	if (max_scrollback_lines > 0
@@ -5013,7 +5013,7 @@
 		g_free(tmp);
 	}
 
-	if (purple_prefs_get_bool("/purple/gtk/conversations/use_smooth_scrolling"))
+	if (purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/conversations/use_smooth_scrolling"))
 		gtk_font_options_all |= GTK_IMHTML_USE_SMOOTHSCROLLING;
 
 	if (gtk_text_buffer_get_char_count(gtk_text_view_get_buffer(GTK_TEXT_VIEW(gtkconv->imhtml))))
@@ -5048,7 +5048,7 @@
 	gtk_font_options |= GTK_IMHTML_NO_COMMENTS;
 
 	if ((flags & PURPLE_MESSAGE_RECV) &&
-			!purple_prefs_get_bool("/purple/gtk/conversations/show_incoming_formatting"))
+			!purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/conversations/show_incoming_formatting"))
 		gtk_font_options |= GTK_IMHTML_NO_COLOURS | GTK_IMHTML_NO_FONTS | GTK_IMHTML_NO_SIZES | GTK_IMHTML_NO_FORMATTING;
 
 	/* this is gonna crash one day, I can feel it. */
@@ -6166,7 +6166,7 @@
 
 	gtkconv->u.im->iter = NULL;
 
-	if (!purple_prefs_get_bool("/purple/gtk/conversations/im/show_buddy_icons"))
+	if (!purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/conversations/im/show_buddy_icons"))
 		return;
 
 	if (purple_conversation_get_gc(conv) == NULL)
@@ -6496,7 +6496,7 @@
 	PidginConversation *gtkconv;
 	PidginWindow *win;
 
-	if (!purple_prefs_get_bool("/purple/gtk/conversations/im/show_buddy_icons"))
+	if (!purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/conversations/im/show_buddy_icons"))
 		return;
 
 	/* Set the "animate" flag for each icon based on the new preference */
@@ -6532,7 +6532,7 @@
 conv_placement_usetabs_cb(const char *name, PurplePrefType type,
 						  gconstpointer value, gpointer data)
 {
-	purple_prefs_trigger_callback("/purple/gtk/conversations/placement");
+	purple_prefs_trigger_callback(PIDGIN_PREFS_ROOT "/conversations/placement");
 }
 
 static void
@@ -6543,7 +6543,7 @@
 	PurpleConversation *conv = NULL;
 	PidginConversation *gtkconv;
 
-	if(strcmp(purple_prefs_get_string("/purple/gtk/conversations/im/hide_new"), "away")!=0)
+	if(strcmp(purple_prefs_get_string(PIDGIN_PREFS_ROOT "/conversations/im/hide_new"), "away")!=0)
 		return;
 
 	if(purple_status_is_available(oldstatus) || !purple_status_is_available(newstatus))
@@ -6583,10 +6583,10 @@
 	if(!hidden_convwin)
 		return;
 
-	if(strcmp(purple_prefs_get_string("/purple/gtk/conversations/im/hide_new"), "always")==0)
+	if(strcmp(purple_prefs_get_string(PIDGIN_PREFS_ROOT "/conversations/im/hide_new"), "always")==0)
 		return;
 
-	if(strcmp(purple_prefs_get_string("/purple/gtk/conversations/im/hide_new"), "away")==0)
+	if(strcmp(purple_prefs_get_string(PIDGIN_PREFS_ROOT "/conversations/im/hide_new"), "away")==0)
 		when_away = TRUE;
 
 	while ((l = hidden_convwin->gtkconvs) != NULL)
@@ -6612,7 +6612,7 @@
 {
 	PidginConvPlacementFunc func;
 
-	if (strcmp(name, "/purple/gtk/conversations/placement"))
+	if (strcmp(name, PIDGIN_PREFS_ROOT "/conversations/placement"))
 		return;
 
 	func = pidgin_conv_placement_get_fnc(value);
@@ -6793,71 +6793,71 @@
 	void *blist_handle = purple_blist_get_handle();
 
 	/* Conversations */
-	purple_prefs_add_none("/purple/gtk/conversations");
-	purple_prefs_add_bool("/purple/gtk/conversations/use_smooth_scrolling", TRUE);
-	purple_prefs_add_bool("/purple/gtk/conversations/close_on_tabs", TRUE);
-	purple_prefs_add_bool("/purple/gtk/conversations/send_bold", FALSE);
-	purple_prefs_add_bool("/purple/gtk/conversations/send_italic", FALSE);
-	purple_prefs_add_bool("/purple/gtk/conversations/send_underline", FALSE);
-	purple_prefs_add_bool("/purple/gtk/conversations/spellcheck", TRUE);
-	purple_prefs_add_bool("/purple/gtk/conversations/show_incoming_formatting", TRUE);
-
-	purple_prefs_add_bool("/purple/gtk/conversations/show_timestamps", TRUE);
-	purple_prefs_add_bool("/purple/gtk/conversations/show_formatting_toolbar", TRUE);
-
-	purple_prefs_add_string("/purple/gtk/conversations/placement", "last");
-	purple_prefs_add_int("/purple/gtk/conversations/placement_number", 1);
-	purple_prefs_add_string("/purple/gtk/conversations/bgcolor", "");
-	purple_prefs_add_string("/purple/gtk/conversations/fgcolor", "");
-	purple_prefs_add_string("/purple/gtk/conversations/font_face", "");
-	purple_prefs_add_int("/purple/gtk/conversations/font_size", 3);
-	purple_prefs_add_bool("/purple/gtk/conversations/tabs", TRUE);
-	purple_prefs_add_int("/purple/gtk/conversations/tab_side", GTK_POS_TOP);
-	purple_prefs_add_int("/purple/gtk/conversations/scrollback_lines", 4000);
+	purple_prefs_add_none(PIDGIN_PREFS_ROOT "/conversations");
+	purple_prefs_add_bool(PIDGIN_PREFS_ROOT "/conversations/use_smooth_scrolling", TRUE);
+	purple_prefs_add_bool(PIDGIN_PREFS_ROOT "/conversations/close_on_tabs", TRUE);
+	purple_prefs_add_bool(PIDGIN_PREFS_ROOT "/conversations/send_bold", FALSE);
+	purple_prefs_add_bool(PIDGIN_PREFS_ROOT "/conversations/send_italic", FALSE);
+	purple_prefs_add_bool(PIDGIN_PREFS_ROOT "/conversations/send_underline", FALSE);
+	purple_prefs_add_bool(PIDGIN_PREFS_ROOT "/conversations/spellcheck", TRUE);
+	purple_prefs_add_bool(PIDGIN_PREFS_ROOT "/conversations/show_incoming_formatting", TRUE);
+
+	purple_prefs_add_bool(PIDGIN_PREFS_ROOT "/conversations/show_timestamps", TRUE);
+	purple_prefs_add_bool(PIDGIN_PREFS_ROOT "/conversations/show_formatting_toolbar", TRUE);
+
+	purple_prefs_add_string(PIDGIN_PREFS_ROOT "/conversations/placement", "last");
+	purple_prefs_add_int(PIDGIN_PREFS_ROOT "/conversations/placement_number", 1);
+	purple_prefs_add_string(PIDGIN_PREFS_ROOT "/conversations/bgcolor", "");
+	purple_prefs_add_string(PIDGIN_PREFS_ROOT "/conversations/fgcolor", "");
+	purple_prefs_add_string(PIDGIN_PREFS_ROOT "/conversations/font_face", "");
+	purple_prefs_add_int(PIDGIN_PREFS_ROOT "/conversations/font_size", 3);
+	purple_prefs_add_bool(PIDGIN_PREFS_ROOT "/conversations/tabs", TRUE);
+	purple_prefs_add_int(PIDGIN_PREFS_ROOT "/conversations/tab_side", GTK_POS_TOP);
+	purple_prefs_add_int(PIDGIN_PREFS_ROOT "/conversations/scrollback_lines", 4000);
 
 	/* Conversations -> Chat */
-	purple_prefs_add_none("/purple/gtk/conversations/chat");
-	purple_prefs_add_int("/purple/gtk/conversations/chat/default_width", 410);
-	purple_prefs_add_int("/purple/gtk/conversations/chat/default_height", 160);
-	purple_prefs_add_int("/purple/gtk/conversations/chat/entry_height", 50);
-	purple_prefs_add_int("/purple/gtk/conversations/chat/userlist_width", 80);
+	purple_prefs_add_none(PIDGIN_PREFS_ROOT "/conversations/chat");
+	purple_prefs_add_int(PIDGIN_PREFS_ROOT "/conversations/chat/default_width", 410);
+	purple_prefs_add_int(PIDGIN_PREFS_ROOT "/conversations/chat/default_height", 160);
+	purple_prefs_add_int(PIDGIN_PREFS_ROOT "/conversations/chat/entry_height", 50);
+	purple_prefs_add_int(PIDGIN_PREFS_ROOT "/conversations/chat/userlist_width", 80);
 	/* Conversations -> IM */
-	purple_prefs_add_none("/purple/gtk/conversations/im");
-
-	purple_prefs_add_bool("/purple/gtk/conversations/im/animate_buddy_icons", TRUE);
-
-	purple_prefs_add_int("/purple/gtk/conversations/im/default_width", 410);
-	purple_prefs_add_int("/purple/gtk/conversations/im/default_height", 160);
-	purple_prefs_add_int("/purple/gtk/conversations/im/entry_height", 50);
-	purple_prefs_add_bool("/purple/gtk/conversations/im/show_buddy_icons", TRUE);
-
-	purple_prefs_add_string("/purple/gtk/conversations/im/hide_new", "never");
+	purple_prefs_add_none(PIDGIN_PREFS_ROOT "/conversations/im");
+
+	purple_prefs_add_bool(PIDGIN_PREFS_ROOT "/conversations/im/animate_buddy_icons", TRUE);
+
+	purple_prefs_add_int(PIDGIN_PREFS_ROOT "/conversations/im/default_width", 410);
+	purple_prefs_add_int(PIDGIN_PREFS_ROOT "/conversations/im/default_height", 160);
+	purple_prefs_add_int(PIDGIN_PREFS_ROOT "/conversations/im/entry_height", 50);
+	purple_prefs_add_bool(PIDGIN_PREFS_ROOT "/conversations/im/show_buddy_icons", TRUE);
+
+	purple_prefs_add_string(PIDGIN_PREFS_ROOT "/conversations/im/hide_new", "never");
 
 	/* Connect callbacks. */
-	purple_prefs_connect_callback(handle, "/purple/gtk/conversations/close_on_tabs",
+	purple_prefs_connect_callback(handle, PIDGIN_PREFS_ROOT "/conversations/close_on_tabs",
 								close_on_tabs_pref_cb, NULL);
-	purple_prefs_connect_callback(handle, "/purple/gtk/conversations/show_timestamps",
+	purple_prefs_connect_callback(handle, PIDGIN_PREFS_ROOT "/conversations/show_timestamps",
 								show_timestamps_pref_cb, NULL);
-	purple_prefs_connect_callback(handle, "/purple/gtk/conversations/show_formatting_toolbar",
+	purple_prefs_connect_callback(handle, PIDGIN_PREFS_ROOT "/conversations/show_formatting_toolbar",
 								show_formatting_toolbar_pref_cb, NULL);
-	purple_prefs_connect_callback(handle, "/purple/gtk/conversations/spellcheck",
+	purple_prefs_connect_callback(handle, PIDGIN_PREFS_ROOT "/conversations/spellcheck",
 								spellcheck_pref_cb, NULL);
-	purple_prefs_connect_callback(handle, "/purple/gtk/conversations/tab_side",
+	purple_prefs_connect_callback(handle, PIDGIN_PREFS_ROOT "/conversations/tab_side",
 								tab_side_pref_cb, NULL);
 
-	purple_prefs_connect_callback(handle, "/purple/gtk/conversations/tabs",
+	purple_prefs_connect_callback(handle, PIDGIN_PREFS_ROOT "/conversations/tabs",
 								conv_placement_usetabs_cb, NULL);
 
-	purple_prefs_connect_callback(handle, "/purple/gtk/conversations/placement",
+	purple_prefs_connect_callback(handle, PIDGIN_PREFS_ROOT "/conversations/placement",
 								conv_placement_pref_cb, NULL);
-	purple_prefs_trigger_callback("/purple/gtk/conversations/placement");
+	purple_prefs_trigger_callback(PIDGIN_PREFS_ROOT "/conversations/placement");
 
 	/* IM callbacks */
-	purple_prefs_connect_callback(handle, "/purple/gtk/conversations/im/animate_buddy_icons",
+	purple_prefs_connect_callback(handle, PIDGIN_PREFS_ROOT "/conversations/im/animate_buddy_icons",
 								animate_buddy_icons_pref_cb, NULL);
-	purple_prefs_connect_callback(handle, "/purple/gtk/conversations/im/show_buddy_icons",
+	purple_prefs_connect_callback(handle, PIDGIN_PREFS_ROOT "/conversations/im/show_buddy_icons",
 								show_buddy_icons_pref_cb, NULL);
-	purple_prefs_connect_callback(handle, "/purple/gtk/conversations/im/hide_new",
+	purple_prefs_connect_callback(handle, PIDGIN_PREFS_ROOT "/conversations/im/hide_new",
                                 hide_new_pref_cb, NULL);
 
 
@@ -7745,19 +7745,19 @@
 
 	pidgin_conv_switch_active_conversation(conv);
 
-	sound_method = purple_prefs_get_string("/purple/gtk/sound/method");
+	sound_method = purple_prefs_get_string(PIDGIN_PREFS_ROOT "/sound/method");
 	if (strcmp(sound_method, "none") != 0)
 		gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(win->menu.sounds),
 		                               gtkconv->make_sound);
 
 	gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(win->menu.show_formatting_toolbar),
-	                               purple_prefs_get_bool("/purple/gtk/conversations/show_formatting_toolbar"));
+	                               purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/conversations/show_formatting_toolbar"));
 
 	gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(win->menu.show_timestamps),
-	                               purple_prefs_get_bool("/purple/gtk/conversations/show_timestamps"));
+	                               purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/conversations/show_timestamps"));
 
 	if (purple_conversation_get_type(conv) == PURPLE_CONV_TYPE_IM &&
-	    purple_prefs_get_bool("/purple/gtk/conversations/im/show_buddy_icons"))
+	    purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/conversations/im/show_buddy_icons"))
 	{
 		gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(win->menu.show_icon),
 		                               gtkconv->u.im->show_icon);
@@ -7844,7 +7844,7 @@
 	/* Create the notebook. */
 	win->notebook = gtk_notebook_new();
 
-	pos = purple_prefs_get_int("/purple/gtk/conversations/tab_side");
+	pos = purple_prefs_get_int(PIDGIN_PREFS_ROOT "/conversations/tab_side");
 
 #if 0
 	gtk_notebook_set_tab_hborder(GTK_NOTEBOOK(win->notebook), 0);
@@ -7975,12 +7975,12 @@
 	win->gtkconvs = g_list_append(win->gtkconvs, gtkconv);
 	gtkconv->win = win;
 
-	if (purple_prefs_get_int("/purple/gtk/conversations/tab_side") == GTK_POS_LEFT ||
-	    purple_prefs_get_int("/purple/gtk/conversations/tab_side") == GTK_POS_RIGHT)
+	if (purple_prefs_get_int(PIDGIN_PREFS_ROOT "/conversations/tab_side") == GTK_POS_LEFT ||
+	    purple_prefs_get_int(PIDGIN_PREFS_ROOT "/conversations/tab_side") == GTK_POS_RIGHT)
 		tabs_side = TRUE;
-	else if (purple_prefs_get_int("/purple/gtk/conversations/tab_side") == (GTK_POS_LEFT|8))
+	else if (purple_prefs_get_int(PIDGIN_PREFS_ROOT "/conversations/tab_side") == (GTK_POS_LEFT|8))
 		angle = 90;
-	else if (purple_prefs_get_int("/purple/gtk/conversations/tab_side") == (GTK_POS_RIGHT|8))
+	else if (purple_prefs_get_int(PIDGIN_PREFS_ROOT "/conversations/tab_side") == (GTK_POS_RIGHT|8))
 		angle = 270;
 
 	if (angle)
@@ -8069,7 +8069,7 @@
 		gtk_box_pack_start(GTK_BOX(tabby), gtkconv->icon, FALSE, FALSE, 0);
 	else
 		gtk_box_pack_start(GTK_BOX(tabby), gtkconv->close, FALSE, FALSE, 0);
-	if (purple_prefs_get_bool("/purple/gtk/conversations/close_on_tabs"))
+	if (purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/conversations/close_on_tabs"))
 		gtk_widget_show(gtkconv->close);
 
 	gtk_widget_show(tabby);
@@ -8090,7 +8090,7 @@
 		gtk_notebook_set_current_page(GTK_NOTEBOOK(win->notebook), 0);
 
 		gtk_notebook_set_show_tabs(GTK_NOTEBOOK(win->notebook),
-		                           purple_prefs_get_bool("/purple/gtk/conversations/tabs"));
+		                           purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/conversations/tabs"));
 	} else
 		gtk_notebook_set_show_tabs(GTK_NOTEBOOK(win->notebook), TRUE);
 
@@ -8119,7 +8119,7 @@
 	/* go back to tabless if need be */
 	if (pidgin_conv_window_get_gtkconv_count(win) <= 2) {
 		gtk_notebook_set_show_tabs(GTK_NOTEBOOK(win->notebook),
-		                           purple_prefs_get_bool("/purple/gtk/conversations/tabs"));
+		                           purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/conversations/tabs"));
 	}
 
 	win->gtkconvs = g_list_remove(win->gtkconvs, gtkconv);
@@ -8568,7 +8568,7 @@
 	g_return_if_fail(func != NULL);
 
 	/* If tabs are enabled, set the function, otherwise, NULL it out. */
-	if (purple_prefs_get_bool("/purple/gtk/conversations/tabs"))
+	if (purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/conversations/tabs"))
 		place_conv = func;
 	else
 		place_conv = NULL;
--- a/pidgin/gtkdebug.c	Wed Apr 11 14:03:28 2007 +0000
+++ b/pidgin/gtkdebug.c	Wed Apr 11 15:21:47 2007 +0000
@@ -96,7 +96,7 @@
 		g_source_remove(debug_win->timer);
 
 		text = gtk_entry_get_text(GTK_ENTRY(debug_win->expression));
-		purple_prefs_set_string("/purple/gtk/debug/regex", text);
+		purple_prefs_set_string(PIDGIN_PREFS_ROOT "/debug/regex", text);
 	}
 
 	regfree(&debug_win->regex);
@@ -108,7 +108,7 @@
 	g_free(debug_win);
 	debug_win = NULL;
 
-	purple_prefs_set_bool("/purple/gtk/debug/enabled", FALSE);
+	purple_prefs_set_bool(PIDGIN_PREFS_ROOT "/debug/enabled", FALSE);
 
 	return FALSE;
 }
@@ -117,8 +117,8 @@
 configure_cb(GtkWidget *w, GdkEventConfigure *event, DebugWindow *win)
 {
 	if (GTK_WIDGET_VISIBLE(w)) {
-		purple_prefs_set_int("/purple/gtk/debug/width",  event->width);
-		purple_prefs_set_int("/purple/gtk/debug/height", event->height);
+		purple_prefs_set_int(PIDGIN_PREFS_ROOT "/debug/width",  event->width);
+		purple_prefs_set_int(PIDGIN_PREFS_ROOT "/debug/height", event->height);
 	}
 
 	return FALSE;
@@ -384,7 +384,7 @@
 
 	gtk_tree_model_get(m, iter, 0, &text, 1, &level, -1);
 
-	if (level >= purple_prefs_get_int("/purple/gtk/debug/filterlevel"))
+	if (level >= purple_prefs_get_int(PIDGIN_PREFS_ROOT "/debug/filterlevel"))
 		regex_match(win, text);
 
 	g_free(text);
@@ -412,7 +412,7 @@
 	PurpleDebugLevel level;
 
 	gtk_tree_model_get(m, iter, 0, &text, 1, &level, -1);
-	if (level >= purple_prefs_get_int("/purple/gtk/debug/filterlevel"))
+	if (level >= purple_prefs_get_int(PIDGIN_PREFS_ROOT "/debug/filterlevel"))
 		gtk_imhtml_append_text(GTK_IMHTML(win->text), text, 0);
 	g_free(text);
 
@@ -533,7 +533,7 @@
 
 	gtk_tree_model_get(model, iter, 0, &text, 1, &level, -1);
 
-	if (level >= purple_prefs_get_int("/purple/gtk/debug/filterlevel")) {
+	if (level >= purple_prefs_get_int(PIDGIN_PREFS_ROOT "/debug/filterlevel")) {
 		if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(win->filter))) {
 			regex_match(win, text);
 		} else {
@@ -549,7 +549,7 @@
 	const gchar *text;
 
 	text = gtk_entry_get_text(GTK_ENTRY(win->expression));
-	purple_prefs_set_string("/purple/gtk/debug/regex", text);
+	purple_prefs_set_string(PIDGIN_PREFS_ROOT "/debug/regex", text);
 
 	win->timer = 0;
 
@@ -593,10 +593,10 @@
 	pidgin_separator(menu);
 	pidgin_new_check_item(menu, _("Invert"),
 						G_CALLBACK(regex_menu_cb),
-						"/purple/gtk/debug/invert", win->invert);
+						PIDGIN_PREFS_ROOT "/debug/invert", win->invert);
 	pidgin_new_check_item(menu, _("Highlight matches"),
 						G_CALLBACK(regex_menu_cb),
-						"/purple/gtk/debug/highlight", win->highlight);
+						PIDGIN_PREFS_ROOT "/debug/highlight", win->highlight);
 }
 
 static void
@@ -605,7 +605,7 @@
 
 	active = gtk_toggle_button_get_active(button);
 
-	purple_prefs_set_bool("/purple/gtk/debug/filter", active);
+	purple_prefs_set_bool(PIDGIN_PREFS_ROOT "/debug/filter", active);
 
 	if(!GTK_IS_IMHTML(win->text))
 		return;
@@ -633,7 +633,7 @@
 static void
 filter_level_changed_cb(GtkWidget *combo, gpointer null)
 {
-	purple_prefs_set_int("/purple/gtk/debug/filterlevel",
+	purple_prefs_set_int(PIDGIN_PREFS_ROOT "/debug/filterlevel",
 				gtk_combo_box_get_active(GTK_COMBO_BOX(combo)));
 }
 
@@ -647,7 +647,7 @@
 toolbar_icon_pref_changed(GtkWidget *item, GtkWidget *toolbar)
 {
 	int style = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(item), "user_data"));
-	purple_prefs_set_int("/purple/gtk/debug/style", style);
+	purple_prefs_set_int(PIDGIN_PREFS_ROOT "/debug/style", style);
 }
 
 static gboolean
@@ -671,7 +671,7 @@
 		item = gtk_check_menu_item_new_with_mnemonic(text[i]);
 		g_object_set_data(G_OBJECT(item), "user_data", GINT_TO_POINTER(value[i]));
 		g_signal_connect(G_OBJECT(item), "activate", G_CALLBACK(toolbar_icon_pref_changed), toolbar);
-		if (value[i] == purple_prefs_get_int("/purple/gtk/debug/style"))
+		if (value[i] == purple_prefs_get_int(PIDGIN_PREFS_ROOT "/debug/style"))
 			gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(item), TRUE);
 		gtk_menu_shell_append(GTK_MENU_SHELL(menu), item);
 	}
@@ -696,8 +696,8 @@
 
 	win = g_new0(DebugWindow, 1);
 
-	width  = purple_prefs_get_int("/purple/gtk/debug/width");
-	height = purple_prefs_get_int("/purple/gtk/debug/height");
+	width  = purple_prefs_get_int(PIDGIN_PREFS_ROOT "/debug/width");
+	height = purple_prefs_get_int(PIDGIN_PREFS_ROOT "/debug/height");
 
 	PIDGIN_DIALOG(win->window);
 	purple_debug_info("gtkdebug", "Setting dimensions to %d, %d\n",
@@ -732,7 +732,7 @@
 	vbox = gtk_vbox_new(FALSE, 0);
 	gtk_container_add(GTK_CONTAINER(win->window), vbox);
 
-	if (purple_prefs_get_bool("/purple/gtk/debug/toolbar")) {
+	if (purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/debug/toolbar")) {
 		/* Setup our top button bar thingie. */
 		toolbar = gtk_toolbar_new();
 		gtk_toolbar_set_tooltips(GTK_TOOLBAR(toolbar), TRUE);
@@ -742,8 +742,8 @@
 		g_signal_connect(G_OBJECT(toolbar), "button-press-event", G_CALLBACK(toolbar_context), win);
 
 		gtk_toolbar_set_style(GTK_TOOLBAR(toolbar),
-		                      purple_prefs_get_int("/purple/gtk/debug/style"));
-		purple_prefs_connect_callback(handle, "/purple/gtk/debug/style",
+		                      purple_prefs_get_int(PIDGIN_PREFS_ROOT "/debug/style"));
+		purple_prefs_connect_callback(handle, PIDGIN_PREFS_ROOT "/debug/style",
 	                                toolbar_style_pref_changed_cb, toolbar);
 		gtk_toolbar_set_icon_size(GTK_TOOLBAR(toolbar),
 		                          GTK_ICON_SIZE_SMALL_TOOLBAR);
@@ -810,8 +810,8 @@
 		 */
 		gtk_widget_set_sensitive(win->filter, FALSE);
 		gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(win->filter),
-									 purple_prefs_get_bool("/purple/gtk/debug/filter"));
-		purple_prefs_connect_callback(handle, "/purple/gtk/debug/filter",
+									 purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/debug/filter"));
+		purple_prefs_connect_callback(handle, PIDGIN_PREFS_ROOT "/debug/filter",
 									regex_pref_filter_cb, win);
 
 		/* regex entry */
@@ -826,21 +826,21 @@
 		g_signal_connect(G_OBJECT(win->expression), "changed",
 						 G_CALLBACK(regex_changed_cb), win);
 		gtk_entry_set_text(GTK_ENTRY(win->expression),
-						   purple_prefs_get_string("/purple/gtk/debug/regex"));
+						   purple_prefs_get_string(PIDGIN_PREFS_ROOT "/debug/regex"));
 		g_signal_connect(G_OBJECT(win->expression), "populate-popup",
 						 G_CALLBACK(regex_popup_cb), win);
 		g_signal_connect(G_OBJECT(win->expression), "key-release-event",
 						 G_CALLBACK(regex_key_release_cb), win);
-		purple_prefs_connect_callback(handle, "/purple/gtk/debug/regex",
+		purple_prefs_connect_callback(handle, PIDGIN_PREFS_ROOT "/debug/regex",
 									regex_pref_expression_cb, win);
 
 		/* connect the rest of our pref callbacks */
-		win->invert = purple_prefs_get_bool("/purple/gtk/debug/invert");
-		purple_prefs_connect_callback(handle, "/purple/gtk/debug/invert",
+		win->invert = purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/debug/invert");
+		purple_prefs_connect_callback(handle, PIDGIN_PREFS_ROOT "/debug/invert",
 									regex_pref_invert_cb, win);
 
-		win->highlight = purple_prefs_get_bool("/purple/gtk/debug/highlight");
-		purple_prefs_connect_callback(handle, "/purple/gtk/debug/highlight",
+		win->highlight = purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/debug/highlight");
+		purple_prefs_connect_callback(handle, PIDGIN_PREFS_ROOT "/debug/highlight",
 									regex_pref_highlight_cb, win);
 
 #endif /* HAVE_REGEX_H */
@@ -864,9 +864,9 @@
 		gtk_combo_box_append_text(GTK_COMBO_BOX(win->filterlevel), _("Error "));
 		gtk_combo_box_append_text(GTK_COMBO_BOX(win->filterlevel), _("Fatal Error"));
 		gtk_combo_box_set_active(GTK_COMBO_BOX(win->filterlevel),
-					purple_prefs_get_int("/purple/gtk/debug/filterlevel"));
+					purple_prefs_get_int(PIDGIN_PREFS_ROOT "/debug/filterlevel"));
 #ifdef HAVE_REGEX_H
-		purple_prefs_connect_callback(handle, "/purple/gtk/debug/filterlevel",
+		purple_prefs_connect_callback(handle, PIDGIN_PREFS_ROOT "/debug/filterlevel",
 						filter_level_pref_changed, win);
 #endif
 		g_signal_connect(G_OBJECT(win->filterlevel), "changed",
@@ -966,26 +966,26 @@
 	 *       configure event, which overrides the width and height! :P
 	 */
 
-	purple_prefs_add_none("/purple/gtk/debug");
+	purple_prefs_add_none(PIDGIN_PREFS_ROOT "/debug");
 
 	/* Controls printing to the debug window */
-	purple_prefs_add_bool("/purple/gtk/debug/enabled", FALSE);
-	purple_prefs_add_int("/purple/gtk/debug/filterlevel", PURPLE_DEBUG_ALL);
-	purple_prefs_add_int("/purple/gtk/debug/style", GTK_TOOLBAR_BOTH_HORIZ);
+	purple_prefs_add_bool(PIDGIN_PREFS_ROOT "/debug/enabled", FALSE);
+	purple_prefs_add_int(PIDGIN_PREFS_ROOT "/debug/filterlevel", PURPLE_DEBUG_ALL);
+	purple_prefs_add_int(PIDGIN_PREFS_ROOT "/debug/style", GTK_TOOLBAR_BOTH_HORIZ);
 
-	purple_prefs_add_bool("/purple/gtk/debug/toolbar", TRUE);
-	purple_prefs_add_int("/purple/gtk/debug/width",  450);
-	purple_prefs_add_int("/purple/gtk/debug/height", 250);
+	purple_prefs_add_bool(PIDGIN_PREFS_ROOT "/debug/toolbar", TRUE);
+	purple_prefs_add_int(PIDGIN_PREFS_ROOT "/debug/width",  450);
+	purple_prefs_add_int(PIDGIN_PREFS_ROOT "/debug/height", 250);
 
 #ifdef HAVE_REGEX_H
-	purple_prefs_add_string("/purple/gtk/debug/regex", "");
-	purple_prefs_add_bool("/purple/gtk/debug/filter", FALSE);
-	purple_prefs_add_bool("/purple/gtk/debug/invert", FALSE);
-	purple_prefs_add_bool("/purple/gtk/debug/case_insensitive", FALSE);
-	purple_prefs_add_bool("/purple/gtk/debug/highlight", FALSE);
+	purple_prefs_add_string(PIDGIN_PREFS_ROOT "/debug/regex", "");
+	purple_prefs_add_bool(PIDGIN_PREFS_ROOT "/debug/filter", FALSE);
+	purple_prefs_add_bool(PIDGIN_PREFS_ROOT "/debug/invert", FALSE);
+	purple_prefs_add_bool(PIDGIN_PREFS_ROOT "/debug/case_insensitive", FALSE);
+	purple_prefs_add_bool(PIDGIN_PREFS_ROOT "/debug/highlight", FALSE);
 #endif /* HAVE_REGEX_H */
 
-	purple_prefs_connect_callback(NULL, "/purple/gtk/debug/enabled",
+	purple_prefs_connect_callback(NULL, PIDGIN_PREFS_ROOT "/debug/enabled",
 								debug_enabled_cb, NULL);
 
 #define REGISTER_G_LOG_HANDLER(name) \
@@ -1023,7 +1023,7 @@
 
 	gtk_widget_show(debug_win->window);
 
-	purple_prefs_set_bool("/purple/gtk/debug/enabled", TRUE);
+	purple_prefs_set_bool(PIDGIN_PREFS_ROOT "/debug/enabled", TRUE);
 }
 
 void
@@ -1047,7 +1047,7 @@
 	gchar *esc_s, *cat_s, *tmp, *s;
 
 	if (debug_win == NULL ||
-		!purple_prefs_get_bool("/purple/gtk/debug/enabled"))
+		!purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/debug/enabled"))
 	{
 		return;
 	}
@@ -1097,7 +1097,7 @@
 	gtk_list_store_append(debug_win->store, &iter);
 	gtk_list_store_set(debug_win->store, &iter, 0, s, 1, level, -1);
 #else /* HAVE_REGEX_H */
-	if(!debug_win->paused && level >= purple_prefs_get_int("/purple/gtk/debug/filterlevel"))
+	if(!debug_win->paused && level >= purple_prefs_get_int(PIDGIN_PREFS_ROOT "/debug/filterlevel"))
 		gtk_imhtml_append_text(GTK_IMHTML(debug_win->text), s, 0);
 #endif /* !HAVE_REGEX_H */
 
@@ -1108,7 +1108,7 @@
 pidgin_debug_is_enabled(PurpleDebugLevel level, const char *category)
 {
 	return (debug_win != NULL &&
-			purple_prefs_get_bool("/purple/gtk/debug/enabled"));
+			purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/debug/enabled"));
 }
 
 static PurpleDebugUiOps ops =
--- a/pidgin/gtkdocklet.c	Wed Apr 11 14:03:28 2007 +0000
+++ b/pidgin/gtkdocklet.c	Wed Apr 11 15:21:47 2007 +0000
@@ -121,7 +121,7 @@
 	/* determine if any ims have unseen messages */
 	convs = get_pending_list(DOCKLET_TOOLTIP_LINE_LIMIT);
 
-	if (!strcmp(purple_prefs_get_string("/purple/gtk/docklet/show"), "pending")) {
+	if (!strcmp(purple_prefs_get_string(PIDGIN_PREFS_ROOT "/docklet/show"), "pending")) {
 		if (convs && ui_ops->create && !visible) {
 			g_list_free(convs);
 			ui_ops->create();
@@ -212,7 +212,7 @@
 			ui_ops->update_icon(status);
 
 		/* and schedule the blinker function if messages are pending */
-		if (purple_prefs_get_bool("/purple/gtk/docklet/blink") &&
+		if (purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/docklet/blink") &&
 		    status == DOCKLET_STATUS_PENDING
 		    && docklet_blinking_timer == 0) {
 			docklet_blinking_timer = g_timeout_add(500, docklet_blink_icon, NULL);
@@ -316,13 +316,13 @@
 static void
 docklet_toggle_mute(GtkWidget *toggle, void *data)
 {
-	purple_prefs_set_bool("/purple/gtk/sound/mute", GTK_CHECK_MENU_ITEM(toggle)->active);
+	purple_prefs_set_bool(PIDGIN_PREFS_ROOT "/sound/mute", GTK_CHECK_MENU_ITEM(toggle)->active);
 }
 
 static void
 docklet_toggle_blink(GtkWidget *toggle, void *data)
 {
-	purple_prefs_set_bool("/purple/gtk/docklet/blink", GTK_CHECK_MENU_ITEM(toggle)->active);
+	purple_prefs_set_bool(PIDGIN_PREFS_ROOT "/docklet/blink", GTK_CHECK_MENU_ITEM(toggle)->active);
 }
 
 static void
@@ -493,7 +493,7 @@
 	menu = gtk_menu_new();
 
 	menuitem = gtk_check_menu_item_new_with_label(_("Show Buddy List"));
-	gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(menuitem), purple_prefs_get_bool("/purple/gtk/blist/list_visible"));
+	gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(menuitem), purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/blist/list_visible"));
 	g_signal_connect(G_OBJECT(menuitem), "toggled", G_CALLBACK(docklet_toggle_blist), NULL);
 	gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem);
 
@@ -534,14 +534,14 @@
 	pidgin_separator(menu);
 
 	menuitem = gtk_check_menu_item_new_with_label(_("Mute Sounds"));
-	gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(menuitem), purple_prefs_get_bool("/purple/gtk/sound/mute"));
-	if (!strcmp(purple_prefs_get_string("/purple/gtk/sound/method"), "none"))
+	gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(menuitem), purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/sound/mute"));
+	if (!strcmp(purple_prefs_get_string(PIDGIN_PREFS_ROOT "/sound/method"), "none"))
 		gtk_widget_set_sensitive(GTK_WIDGET(menuitem), FALSE);
 	g_signal_connect(G_OBJECT(menuitem), "toggled", G_CALLBACK(docklet_toggle_mute), NULL);
 	gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem);
 
 	menuitem = gtk_check_menu_item_new_with_label(_("Blink on new message"));
-	gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(menuitem), purple_prefs_get_bool("/purple/gtk/docklet/blink"));
+	gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(menuitem), purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/docklet/blink"));
 	g_signal_connect(G_OBJECT(menuitem), "toggled", G_CALLBACK(docklet_toggle_blink), NULL);
 	gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem);
 
@@ -591,7 +591,7 @@
 pidgin_docklet_embedded()
 {
 	if (!visibility_manager
-	    && strcmp(purple_prefs_get_string("/purple/gtk/docklet/show"), "pending")) {
+	    && strcmp(purple_prefs_get_string(PIDGIN_PREFS_ROOT "/docklet/show"), "pending")) {
 		pidgin_blist_visibility_manager_add();
 		visibility_manager = TRUE;
 	}
@@ -639,14 +639,14 @@
 	void *accounts_handle = purple_accounts_get_handle();
 	void *docklet_handle = pidgin_docklet_get_handle();
 
-	purple_prefs_add_none("/purple/gtk/docklet");
-	purple_prefs_add_bool("/purple/gtk/docklet/blink", FALSE);
-	purple_prefs_add_string("/purple/gtk/docklet/show", "always");
-	purple_prefs_connect_callback(docklet_handle, "/purple/gtk/docklet/show",
+	purple_prefs_add_none(PIDGIN_PREFS_ROOT "/docklet");
+	purple_prefs_add_bool(PIDGIN_PREFS_ROOT "/docklet/blink", FALSE);
+	purple_prefs_add_string(PIDGIN_PREFS_ROOT "/docklet/show", "always");
+	purple_prefs_connect_callback(docklet_handle, PIDGIN_PREFS_ROOT "/docklet/show",
 				    docklet_show_pref_changed_cb, NULL);
 
 	docklet_ui_init();
-	if (!strcmp(purple_prefs_get_string("/purple/gtk/docklet/show"), "always") && ui_ops && ui_ops->create)
+	if (!strcmp(purple_prefs_get_string(PIDGIN_PREFS_ROOT "/docklet/show"), "always") && ui_ops && ui_ops->create)
 		ui_ops->create();
 
 	purple_signal_connect(conn_handle, "signed-on",
--- a/pidgin/gtkft.c	Wed Apr 11 14:03:28 2007 +0000
+++ b/pidgin/gtkft.c	Wed Apr 11 15:21:47 2007 +0000
@@ -418,7 +418,7 @@
 toggle_keep_open_cb(GtkWidget *w, PidginXferDialog *dialog)
 {
 	dialog->keep_open = !dialog->keep_open;
-	purple_prefs_set_bool("/purple/gtk/filetransfer/keep_open",
+	purple_prefs_set_bool(PIDGIN_PREFS_ROOT "/filetransfer/keep_open",
 						dialog->keep_open);
 }
 
@@ -426,7 +426,7 @@
 toggle_clear_finished_cb(GtkWidget *w, PidginXferDialog *dialog)
 {
 	dialog->auto_clear = !dialog->auto_clear;
-	purple_prefs_set_bool("/purple/gtk/filetransfer/clear_finished",
+	purple_prefs_set_bool(PIDGIN_PREFS_ROOT "/filetransfer/clear_finished",
 						dialog->auto_clear);
 }
 
@@ -753,9 +753,9 @@
 
 	dialog = g_new0(PidginXferDialog, 1);
 	dialog->keep_open =
-		purple_prefs_get_bool("/purple/gtk/filetransfer/keep_open");
+		purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/filetransfer/keep_open");
 	dialog->auto_clear =
-		purple_prefs_get_bool("/purple/gtk/filetransfer/clear_finished");
+		purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/filetransfer/clear_finished");
 
 	/* Create the window. */
 	dialog->window = window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
@@ -1231,9 +1231,9 @@
 void
 pidgin_xfers_init(void)
 {
-	purple_prefs_add_none("/purple/gtk/filetransfer");
-	purple_prefs_add_bool("/purple/gtk/filetransfer/clear_finished", TRUE);
-	purple_prefs_add_bool("/purple/gtk/filetransfer/keep_open", FALSE);
+	purple_prefs_add_none(PIDGIN_PREFS_ROOT "/filetransfer");
+	purple_prefs_add_bool(PIDGIN_PREFS_ROOT "/filetransfer/clear_finished", TRUE);
+	purple_prefs_add_bool(PIDGIN_PREFS_ROOT "/filetransfer/keep_open", FALSE);
 }
 
 void
--- a/pidgin/gtkmain.c	Wed Apr 11 14:03:28 2007 +0000
+++ b/pidgin/gtkmain.c	Wed Apr 11 15:21:47 2007 +0000
@@ -742,7 +742,7 @@
 	pidgin_prefs_update_old();
 
 	/* load plugins we had when we quit */
-	purple_plugins_load_saved("/purple/gtk/plugins/loaded");
+	purple_plugins_load_saved(PIDGIN_PREFS_ROOT "/plugins/loaded");
 	pidgin_docklet_init();
 
 	/* TODO: Move pounces loading into purple_pounces_init() */
@@ -784,7 +784,7 @@
 	 */
 	purple_blist_show();
 
-	if (purple_prefs_get_bool("/purple/gtk/debug/enabled"))
+	if (purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/debug/enabled"))
 		pidgin_debug_window_show();
 
 	if (opt_login) {
--- a/pidgin/gtknotify.c	Wed Apr 11 14:03:28 2007 +0000
+++ b/pidgin/gtknotify.c	Wed Apr 11 15:21:47 2007 +0000
@@ -615,7 +615,7 @@
 					 G_CALLBACK(formatted_input_cb), NULL);
 
 	/* Add the text to the gtkimhtml */
-	if (!purple_prefs_get_bool("/purple/gtk/conversations/show_incoming_formatting"))
+	if (!purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/conversations/show_incoming_formatting"))
 		options |= GTK_IMHTML_NO_COLOURS | GTK_IMHTML_NO_FONTS | GTK_IMHTML_NO_SIZES;
 
 	options |= GTK_IMHTML_NO_COMMENTS;
@@ -953,8 +953,8 @@
 	const char *web_browser;
 	int place;
 
-	web_browser = purple_prefs_get_string("/purple/gtk/browsers/browser");
-	place = purple_prefs_get_int("/purple/gtk/browsers/place");
+	web_browser = purple_prefs_get_string(PIDGIN_PREFS_ROOT "/browsers/browser");
+	place = purple_prefs_get_int(PIDGIN_PREFS_ROOT "/browsers/place");
 
 	/* if they are running gnome, use the gnome web browser */
 	if (purple_running_gnome() == TRUE)
@@ -1057,7 +1057,7 @@
 	{
 		const char *web_command;
 
-		web_command = purple_prefs_get_path("/purple/gtk/browsers/command");
+		web_command = purple_prefs_get_path(PIDGIN_PREFS_ROOT "/browsers/command");
 
 		if (web_command == NULL || *web_command == '\0')
 		{
--- a/pidgin/gtkplugin.c	Wed Apr 11 14:03:28 2007 +0000
+++ b/pidgin/gtkplugin.c	Wed Apr 11 15:21:47 2007 +0000
@@ -90,7 +90,7 @@
 void
 pidgin_plugins_save(void)
 {
-	purple_plugins_save_loaded("/purple/gtk/plugins/loaded");
+	purple_plugins_save_loaded(PIDGIN_PREFS_ROOT "/plugins/loaded");
 }
 
 static void
--- a/pidgin/gtkpounce.c	Wed Apr 11 14:03:28 2007 +0000
+++ b/pidgin/gtkpounce.c	Wed Apr 11 15:21:47 2007 +0000
@@ -332,15 +332,15 @@
 									 "reason", reason);
 
 	/* Set the defaults for next time. */
-	purple_prefs_set_bool("/purple/gtk/pounces/default_actions/open-window",
+	purple_prefs_set_bool(PIDGIN_PREFS_ROOT "/pounces/default_actions/open-window",
 		gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(dialog->open_win)));
-	purple_prefs_set_bool("/purple/gtk/pounces/default_actions/popup-notify",
+	purple_prefs_set_bool(PIDGIN_PREFS_ROOT "/pounces/default_actions/popup-notify",
 		gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(dialog->popup)));
-	purple_prefs_set_bool("/purple/gtk/pounces/default_actions/send-message",
+	purple_prefs_set_bool(PIDGIN_PREFS_ROOT "/pounces/default_actions/send-message",
 		gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(dialog->send_msg)));
-	purple_prefs_set_bool("/purple/gtk/pounces/default_actions/execute-command",
+	purple_prefs_set_bool(PIDGIN_PREFS_ROOT "/pounces/default_actions/execute-command",
 		gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(dialog->exec_cmd)));
-	purple_prefs_set_bool("/purple/gtk/pounces/default_actions/play-sound",
+	purple_prefs_set_bool(PIDGIN_PREFS_ROOT "/pounces/default_actions/play-sound",
 		gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(dialog->play_sound)));
 
 	purple_pounce_set_save(dialog->pounce,
@@ -964,15 +964,15 @@
 		}
 
 		gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(dialog->open_win),
-			purple_prefs_get_bool("/purple/gtk/pounces/default_actions/open-window"));
+			purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/pounces/default_actions/open-window"));
 		gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(dialog->popup),
-			purple_prefs_get_bool("/purple/gtk/pounces/default_actions/popup-notify"));
+			purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/pounces/default_actions/popup-notify"));
 		gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(dialog->send_msg),
-			purple_prefs_get_bool("/purple/gtk/pounces/default_actions/send-message"));
+			purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/pounces/default_actions/send-message"));
 		gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(dialog->exec_cmd),
-			purple_prefs_get_bool("/purple/gtk/pounces/default_actions/execute-command"));
+			purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/pounces/default_actions/execute-command"));
 		gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(dialog->play_sound),
-			purple_prefs_get_bool("/purple/gtk/pounces/default_actions/play-sound"));
+			purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/pounces/default_actions/play-sound"));
 	}
 
 	gtk_widget_show_all(vbox2);
@@ -983,8 +983,8 @@
 pounces_manager_configure_cb(GtkWidget *widget, GdkEventConfigure *event, PouncesManager *dialog)
 {
 	if (GTK_WIDGET_VISIBLE(widget)) {
-		purple_prefs_set_int("/purple/gtk/pounces/dialog/width",  event->width);
-		purple_prefs_set_int("/purple/gtk/pounces/dialog/height", event->height);
+		purple_prefs_set_int(PIDGIN_PREFS_ROOT "/pounces/dialog/width",  event->width);
+		purple_prefs_set_int(PIDGIN_PREFS_ROOT "/pounces/dialog/height", event->height);
 	}
 
 	return FALSE;
@@ -1316,8 +1316,8 @@
 
 	pounces_manager = dialog = g_new0(PouncesManager, 1);
 
-	width  = purple_prefs_get_int("/purple/gtk/pounces/dialog/width");
-	height = purple_prefs_get_int("/purple/gtk/pounces/dialog/height");
+	width  = purple_prefs_get_int(PIDGIN_PREFS_ROOT "/pounces/dialog/width");
+	height = purple_prefs_get_int(PIDGIN_PREFS_ROOT "/pounces/dialog/height");
 
 	dialog->window = win = gtk_window_new(GTK_WINDOW_TOPLEVEL);
 	gtk_window_set_default_size(GTK_WINDOW(win), width, height);
@@ -1641,21 +1641,21 @@
 	purple_pounces_register_handler(PIDGIN_UI, pounce_cb, new_pounce,
 								  free_pounce);
 
-	purple_prefs_add_none("/purple/gtk/pounces");
-	purple_prefs_add_none("/purple/gtk/pounces/default_actions");
-	purple_prefs_add_bool("/purple/gtk/pounces/default_actions/open-window",
+	purple_prefs_add_none(PIDGIN_PREFS_ROOT "/pounces");
+	purple_prefs_add_none(PIDGIN_PREFS_ROOT "/pounces/default_actions");
+	purple_prefs_add_bool(PIDGIN_PREFS_ROOT "/pounces/default_actions/open-window",
 						FALSE);
-	purple_prefs_add_bool("/purple/gtk/pounces/default_actions/popup-notify",
+	purple_prefs_add_bool(PIDGIN_PREFS_ROOT "/pounces/default_actions/popup-notify",
 						TRUE);
-	purple_prefs_add_bool("/purple/gtk/pounces/default_actions/send-message",
+	purple_prefs_add_bool(PIDGIN_PREFS_ROOT "/pounces/default_actions/send-message",
 						FALSE);
-	purple_prefs_add_bool("/purple/gtk/pounces/default_actions/execute-command",
+	purple_prefs_add_bool(PIDGIN_PREFS_ROOT "/pounces/default_actions/execute-command",
 						FALSE);
-	purple_prefs_add_bool("/purple/gtk/pounces/default_actions/play-sound",
+	purple_prefs_add_bool(PIDGIN_PREFS_ROOT "/pounces/default_actions/play-sound",
 						FALSE);
-	purple_prefs_add_none("/purple/gtk/pounces/dialog");
-	purple_prefs_add_int("/purple/gtk/pounces/dialog/width",  520);
-	purple_prefs_add_int("/purple/gtk/pounces/dialog/height", 321);
+	purple_prefs_add_none(PIDGIN_PREFS_ROOT "/pounces/dialog");
+	purple_prefs_add_int(PIDGIN_PREFS_ROOT "/pounces/dialog/width",  520);
+	purple_prefs_add_int(PIDGIN_PREFS_ROOT "/pounces/dialog/height", 321);
 
 	purple_signal_connect(purple_connections_get_handle(), "signed-on",
 						pidgin_pounces_get_handle(),
--- a/pidgin/gtkprefs.c	Wed Apr 11 14:03:28 2007 +0000
+++ b/pidgin/gtkprefs.c	Wed Apr 11 15:21:47 2007 +0000
@@ -375,7 +375,7 @@
 	gtk_tree_model_get_value(model, &iter, 3, &val);
 	path = gtk_tree_model_get_path(model, &iter);
 	themename = g_value_get_string(&val);
-	purple_prefs_set_string("/purple/gtk/smileys/theme", themename);
+	purple_prefs_set_string(PIDGIN_PREFS_ROOT "/smileys/theme", themename);
 	g_value_unset (&val);
 
 	/* current_smiley_theme is set in callback for the above pref change */
@@ -710,21 +710,21 @@
 								  &bold, &italic, &uline);
 
 	if (buttons & GTK_IMHTML_BOLD)
-		purple_prefs_set_bool("/purple/gtk/conversations/send_bold", bold);
+		purple_prefs_set_bool(PIDGIN_PREFS_ROOT "/conversations/send_bold", bold);
 	if (buttons & GTK_IMHTML_ITALIC)
-		purple_prefs_set_bool("/purple/gtk/conversations/send_italic", italic);
+		purple_prefs_set_bool(PIDGIN_PREFS_ROOT "/conversations/send_italic", italic);
 	if (buttons & GTK_IMHTML_UNDERLINE)
-		purple_prefs_set_bool("/purple/gtk/conversations/send_underline", uline);
+		purple_prefs_set_bool(PIDGIN_PREFS_ROOT "/conversations/send_underline", uline);
 
 	if (buttons & GTK_IMHTML_GROW || buttons & GTK_IMHTML_SHRINK)
-		purple_prefs_set_int("/purple/gtk/conversations/font_size",
+		purple_prefs_set_int(PIDGIN_PREFS_ROOT "/conversations/font_size",
 						   gtk_imhtml_get_current_fontsize(GTK_IMHTML(imhtml)));
 	if (buttons & GTK_IMHTML_FACE) {
 		char *face = gtk_imhtml_get_current_fontface(GTK_IMHTML(imhtml));
 		if (!face)
 			face = g_strdup("");
 
-		purple_prefs_set_string("/purple/gtk/conversations/font_face", face);
+		purple_prefs_set_string(PIDGIN_PREFS_ROOT "/conversations/font_face", face);
 		g_free(face);
 	}
 
@@ -733,7 +733,7 @@
 		if (!color)
 			color = g_strdup("");
 
-		purple_prefs_set_string("/purple/gtk/conversations/fgcolor", color);
+		purple_prefs_set_string(PIDGIN_PREFS_ROOT "/conversations/fgcolor", color);
 		g_free(color);
 	}
 
@@ -767,7 +767,7 @@
 		if (!color)
 			color = g_strdup("");
 
-		purple_prefs_set_string("/purple/gtk/conversations/bgcolor", color);
+		purple_prefs_set_string(PIDGIN_PREFS_ROOT "/conversations/bgcolor", color);
 		g_free(color);
 	}
 }
@@ -775,15 +775,15 @@
 static void
 formatting_clear_cb(GtkIMHtml *imhtml, void *data)
 {
-	purple_prefs_set_bool("/purple/gtk/conversations/send_bold", FALSE);
-	purple_prefs_set_bool("/purple/gtk/conversations/send_italic", FALSE);
-	purple_prefs_set_bool("/purple/gtk/conversations/send_underline", FALSE);
+	purple_prefs_set_bool(PIDGIN_PREFS_ROOT "/conversations/send_bold", FALSE);
+	purple_prefs_set_bool(PIDGIN_PREFS_ROOT "/conversations/send_italic", FALSE);
+	purple_prefs_set_bool(PIDGIN_PREFS_ROOT "/conversations/send_underline", FALSE);
 
-	purple_prefs_set_int("/purple/gtk/conversations/font_size", 3);
+	purple_prefs_set_int(PIDGIN_PREFS_ROOT "/conversations/font_size", 3);
 
-	purple_prefs_set_string("/purple/gtk/conversations/font_face", "");
-	purple_prefs_set_string("/purple/gtk/conversations/fgcolor", "");
-	purple_prefs_set_string("/purple/gtk/conversations/bgcolor", "");
+	purple_prefs_set_string(PIDGIN_PREFS_ROOT "/conversations/font_face", "");
+	purple_prefs_set_string(PIDGIN_PREFS_ROOT "/conversations/fgcolor", "");
+	purple_prefs_set_string(PIDGIN_PREFS_ROOT "/conversations/bgcolor", "");
 }
 
 static void
@@ -815,7 +815,7 @@
 
 	vbox = pidgin_make_frame(ret, _("System Tray Icon"));
 	label = pidgin_prefs_dropdown(vbox, _("_Show system tray icon:"), PURPLE_PREF_STRING,
-					"/purple/gtk/docklet/show",
+					PIDGIN_PREFS_ROOT "/docklet/show",
 					_("Always"), "always",
 					_("Never"), "never",
 					_("On unread messages"), "pending",
@@ -825,7 +825,7 @@
 	
 	vbox = pidgin_make_frame(ret, _("Conversation Window Hiding"));
 	label = pidgin_prefs_dropdown(vbox, _("_Hide new IM conversations:"),
-					PURPLE_PREF_STRING, "/purple/gtk/conversations/im/hide_new",
+					PURPLE_PREF_STRING, PIDGIN_PREFS_ROOT "/conversations/im/hide_new",
 					_("Never"), "never",
 					_("When away"), "away",
 					_("Always"), "always",
@@ -838,7 +838,7 @@
 	vbox = pidgin_make_frame(ret, _("Tabs"));
 	
 	pidgin_prefs_checkbox(_("Show IMs and chats in _tabbed windows"),
-							"/purple/gtk/conversations/tabs", vbox);
+							PIDGIN_PREFS_ROOT "/conversations/tabs", vbox);
 
 	/*
 	 * Connect a signal to the above preference.  When conversations are not
@@ -846,16 +846,16 @@
 	 */
 	vbox2 = gtk_vbox_new(FALSE, 9);
 	gtk_box_pack_start(GTK_BOX(vbox), vbox2, FALSE, FALSE, 0);
-	purple_prefs_connect_callback(prefs, "/purple/gtk/conversations/tabs",
+	purple_prefs_connect_callback(prefs, PIDGIN_PREFS_ROOT "/conversations/tabs",
 	                            conversation_usetabs_cb, vbox2);
-	if (!purple_prefs_get_bool("/purple/gtk/conversations/tabs"))
+	if (!purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/conversations/tabs"))
 	  gtk_widget_set_sensitive(vbox2, FALSE);
 
 	pidgin_prefs_checkbox(_("Show close b_utton on tabs"),
-				"/purple/gtk/conversations/close_on_tabs", vbox2);
+				PIDGIN_PREFS_ROOT "/conversations/close_on_tabs", vbox2);
 
 	label = pidgin_prefs_dropdown(vbox2, _("_Placement:"), PURPLE_PREF_INT,
-					"/purple/gtk/conversations/tab_side",
+					PIDGIN_PREFS_ROOT "/conversations/tab_side",
 					_("Top"), GTK_POS_TOP,
 					_("Bottom"), GTK_POS_BOTTOM,
 					_("Left"), GTK_POS_LEFT,
@@ -870,7 +870,7 @@
 		
 	names = pidgin_conv_placement_get_options();
 	label = pidgin_prefs_dropdown_from_list(vbox2, _("N_ew conversations:"),
-				PURPLE_PREF_STRING, "/purple/gtk/conversations/placement", names);
+				PURPLE_PREF_STRING, PIDGIN_PREFS_ROOT "/conversations/placement", names);
 	gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.5);
 			
 	gtk_size_group_add_widget(sg, label);
@@ -898,13 +898,13 @@
 	vbox = pidgin_make_frame(ret, _("Conversations"));
 
 	pidgin_prefs_checkbox(_("Show _formatting on incoming messages"),
-				"/purple/gtk/conversations/show_incoming_formatting", vbox);
+				PIDGIN_PREFS_ROOT "/conversations/show_incoming_formatting", vbox);
 
 	iconpref1 = pidgin_prefs_checkbox(_("Show buddy _icons"),
-			"/purple/gtk/conversations/im/show_buddy_icons", vbox);
+			PIDGIN_PREFS_ROOT "/conversations/im/show_buddy_icons", vbox);
 	iconpref2 = pidgin_prefs_checkbox(_("Enable buddy ic_on animation"),
-			"/purple/gtk/conversations/im/animate_buddy_icons", vbox);
-	if (!purple_prefs_get_bool("/purple/gtk/conversations/im/show_buddy_icons"))
+			PIDGIN_PREFS_ROOT "/conversations/im/animate_buddy_icons", vbox);
+	if (!purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/conversations/im/show_buddy_icons"))
 		gtk_widget_set_sensitive(iconpref2, FALSE);
 	g_signal_connect(G_OBJECT(iconpref1), "clicked",
 					 G_CALLBACK(pidgin_toggle_sensitive), iconpref2);
@@ -913,13 +913,13 @@
 			"/core/conversations/im/send_typing", vbox);
 #ifdef USE_GTKSPELL
 	pidgin_prefs_checkbox(_("Highlight _misspelled words"),
-			"/purple/gtk/conversations/spellcheck", vbox);
+			PIDGIN_PREFS_ROOT "/conversations/spellcheck", vbox);
 #endif
 
-	pidgin_prefs_checkbox(_("Use smooth-scrolling"), "/purple/gtk/conversations/use_smooth_scrolling", vbox);
+	pidgin_prefs_checkbox(_("Use smooth-scrolling"), PIDGIN_PREFS_ROOT "/conversations/use_smooth_scrolling", vbox);
 
 #ifdef _WIN32
-	pidgin_prefs_checkbox(_("F_lash window when IMs are received"), "/purple/gtk/win32/blink_im", vbox);
+	pidgin_prefs_checkbox(_("F_lash window when IMs are received"), PIDGIN_PREFS_ROOT "/win32/blink_im", vbox);
 #endif
 
 	vbox = pidgin_make_frame(ret, _("Default Formatting"));
@@ -942,17 +942,17 @@
 
 	gtk_box_pack_start(GTK_BOX(vbox), frame, FALSE, FALSE, 0);
 
-	if (purple_prefs_get_bool("/purple/gtk/conversations/send_bold"))
+	if (purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/conversations/send_bold"))
 		gtk_imhtml_toggle_bold(GTK_IMHTML(imhtml));
-	if (purple_prefs_get_bool("/purple/gtk/conversations/send_italic"))
+	if (purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/conversations/send_italic"))
 		gtk_imhtml_toggle_italic(GTK_IMHTML(imhtml));
-	if (purple_prefs_get_bool("/purple/gtk/conversations/send_underline"))
+	if (purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/conversations/send_underline"))
 		gtk_imhtml_toggle_underline(GTK_IMHTML(imhtml));
 
-	gtk_imhtml_font_set_size(GTK_IMHTML(imhtml), purple_prefs_get_int("/purple/gtk/conversations/font_size"));
-	gtk_imhtml_toggle_forecolor(GTK_IMHTML(imhtml), purple_prefs_get_string("/purple/gtk/conversations/fgcolor"));
-	gtk_imhtml_toggle_background(GTK_IMHTML(imhtml), purple_prefs_get_string("/purple/gtk/conversations/bgcolor"));
-	gtk_imhtml_toggle_fontface(GTK_IMHTML(imhtml), purple_prefs_get_string("/purple/gtk/conversations/font_face"));
+	gtk_imhtml_font_set_size(GTK_IMHTML(imhtml), purple_prefs_get_int(PIDGIN_PREFS_ROOT "/conversations/font_size"));
+	gtk_imhtml_toggle_forecolor(GTK_IMHTML(imhtml), purple_prefs_get_string(PIDGIN_PREFS_ROOT "/conversations/fgcolor"));
+	gtk_imhtml_toggle_background(GTK_IMHTML(imhtml), purple_prefs_get_string(PIDGIN_PREFS_ROOT "/conversations/bgcolor"));
+	gtk_imhtml_toggle_fontface(GTK_IMHTML(imhtml), purple_prefs_get_string(PIDGIN_PREFS_ROOT "/conversations/font_face"));
 
 	g_signal_connect_after(G_OBJECT(imhtml), "format_function_toggle",
 					 G_CALLBACK(formatting_toggle_cb), toolbar);
@@ -1198,7 +1198,7 @@
 static gboolean manual_browser_set(GtkWidget *entry, GdkEventFocus *event, gpointer data) {
 	const char *program = gtk_entry_get_text(GTK_ENTRY(entry));
 
-	purple_prefs_set_path("/purple/gtk/browsers/command", program);
+	purple_prefs_set_path(PIDGIN_PREFS_ROOT "/browsers/command", program);
 
 	/* carry on normally */
 	return FALSE;
@@ -1228,7 +1228,7 @@
 
 	GList *browsers = NULL;
 	int i = 0;
-	char *browser_setting = (char *)purple_prefs_get_string("/purple/gtk/browsers/browser");
+	char *browser_setting = (char *)purple_prefs_get_string(PIDGIN_PREFS_ROOT "/browsers/browser");
 
 	browsers = g_list_prepend(browsers, (gpointer)"custom");
 	browsers = g_list_prepend(browsers, (gpointer)_("Manual"));
@@ -1244,7 +1244,7 @@
 	}
 
 	if(browser_setting)
-		purple_prefs_set_string("/purple/gtk/browsers/browser", "custom");
+		purple_prefs_set_string(PIDGIN_PREFS_ROOT "/browsers/browser", "custom");
 
 	return browsers;
 }
@@ -1289,7 +1289,7 @@
 	browsers = get_available_browsers();
 	if (browsers != NULL) {
 		label = pidgin_prefs_dropdown_from_list(vbox,_("_Browser:"), PURPLE_PREF_STRING,
-										 "/purple/gtk/browsers/browser",
+										 PIDGIN_PREFS_ROOT "/browsers/browser",
 										 browsers);
 		g_list_free(browsers);
 		gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5);
@@ -1297,7 +1297,7 @@
 
 		hbox = gtk_hbox_new(FALSE, 0);
 		label = pidgin_prefs_dropdown(hbox, _("_Open link in:"), PURPLE_PREF_INT,
-			"/purple/gtk/browsers/place",
+			PIDGIN_PREFS_ROOT "/browsers/place",
 			_("Browser default"), PIDGIN_BROWSER_DEFAULT,
 			_("Existing window"), PIDGIN_BROWSER_CURRENT,
 			_("New window"), PIDGIN_BROWSER_NEW_WINDOW,
@@ -1307,9 +1307,9 @@
 		gtk_size_group_add_widget(sg, label);
 		gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0);
 
-		if (!strcmp(purple_prefs_get_string("/purple/gtk/browsers/browser"), "custom"))
+		if (!strcmp(purple_prefs_get_string(PIDGIN_PREFS_ROOT "/browsers/browser"), "custom"))
 			gtk_widget_set_sensitive(hbox, FALSE);
-		purple_prefs_connect_callback(prefs, "/purple/gtk/browsers/browser",
+		purple_prefs_connect_callback(prefs, PIDGIN_PREFS_ROOT "/browsers/browser",
 									browser_changed1_cb, hbox);
 	}
 
@@ -1323,15 +1323,15 @@
 	entry = gtk_entry_new();
 	gtk_label_set_mnemonic_widget(GTK_LABEL(label), entry);
 
-	if (strcmp(purple_prefs_get_string("/purple/gtk/browsers/browser"), "custom"))
+	if (strcmp(purple_prefs_get_string(PIDGIN_PREFS_ROOT "/browsers/browser"), "custom"))
 		gtk_widget_set_sensitive(hbox, FALSE);
-	purple_prefs_connect_callback(prefs, "/purple/gtk/browsers/browser",
+	purple_prefs_connect_callback(prefs, PIDGIN_PREFS_ROOT "/browsers/browser",
 								browser_changed2_cb, hbox);
 
 	gtk_box_pack_start (GTK_BOX (hbox), entry, FALSE, FALSE, 0);
 
 	gtk_entry_set_text(GTK_ENTRY(entry),
-					   purple_prefs_get_path("/purple/gtk/browsers/command"));
+					   purple_prefs_get_path(PIDGIN_PREFS_ROOT "/browsers/command"));
 	g_signal_connect(G_OBJECT(entry), "focus-out-event",
 					 G_CALLBACK(manual_browser_set), NULL);
 	pidgin_set_accessible_label (entry, label);
@@ -1375,7 +1375,7 @@
 #ifndef _WIN32
 static gint sound_cmd_yeah(GtkEntry *entry, gpointer d)
 {
-	purple_prefs_set_path("/purple/gtk/sound/command",
+	purple_prefs_set_path(PIDGIN_PREFS_ROOT "/sound/command",
 			gtk_entry_get_text(GTK_ENTRY(entry)));
 	return TRUE;
 }
@@ -1445,7 +1445,7 @@
 	char *pref;
 	gboolean temp_value;
 
-	pref = g_strdup_printf("/purple/gtk/sound/enabled/%s",
+	pref = g_strdup_printf(PIDGIN_PREFS_ROOT "/sound/enabled/%s",
 			pidgin_sound_get_event_option(sound_row_sel));
 
 	temp_value = purple_prefs_get_bool(pref);
@@ -1467,7 +1467,7 @@
 {
 	gchar *pref;
 
-	pref = g_strdup_printf("/purple/gtk/sound/file/%s",
+	pref = g_strdup_printf(PIDGIN_PREFS_ROOT "/sound/file/%s",
 						   pidgin_sound_get_event_option(sound_row_sel));
 	purple_prefs_set_path(pref, "");
 	g_free(pref);
@@ -1484,7 +1484,7 @@
 	sound = GPOINTER_TO_INT(user_data);
 
 	/* Set it -- and forget it */
-	pref = g_strdup_printf("/purple/gtk/sound/file/%s",
+	pref = g_strdup_printf(PIDGIN_PREFS_ROOT "/sound/file/%s",
 						   pidgin_sound_get_event_option(sound));
 	purple_prefs_set_path(pref, filename);
 	g_free(pref);
@@ -1502,7 +1502,7 @@
 	gchar *pref;
 	const char *filename;
 
-	pref = g_strdup_printf("/purple/gtk/sound/file/%s",
+	pref = g_strdup_printf(PIDGIN_PREFS_ROOT "/sound/file/%s",
 						   pidgin_sound_get_event_option(sound_row_sel));
 	filename = purple_prefs_get_path(pref);
 	g_free(pref);
@@ -1537,7 +1537,7 @@
 static void prefs_sound_volume_changed(GtkRange *range)
 {
 	int val = (int)gtk_range_get_value(GTK_RANGE(range));
-	purple_prefs_set_int("/purple/gtk/sound/volume", val);
+	purple_prefs_set_int(PIDGIN_PREFS_ROOT "/sound/volume", val);
 }
 #endif
 
@@ -1554,7 +1554,7 @@
 	gtk_tree_model_get_value (model, &iter, 3, &val);
 	sound_row_sel = g_value_get_uint(&val);
 
-	pref = g_strdup_printf("/purple/gtk/sound/file/%s",
+	pref = g_strdup_printf(PIDGIN_PREFS_ROOT "/sound/file/%s",
 			pidgin_sound_get_event_option(sound_row_sel));
 	file = purple_prefs_get_path(pref);
 	g_free(pref);
@@ -1595,7 +1595,7 @@
 #ifndef _WIN32
 	vbox = pidgin_make_frame (ret, _("Sound Method"));
 	dd = pidgin_prefs_dropdown(vbox, _("_Method:"), PURPLE_PREF_STRING,
-			"/purple/gtk/sound/method",
+			PIDGIN_PREFS_ROOT "/sound/method",
 			_("Console beep"), "beep",
 #ifdef USE_GSTREAMER
 			_("Automatic"), "automatic",
@@ -1619,7 +1619,7 @@
 	gtk_label_set_mnemonic_widget(GTK_LABEL(label), entry);
 
 	gtk_editable_set_editable(GTK_EDITABLE(entry), TRUE);
-	cmd = purple_prefs_get_path("/purple/gtk/sound/command");
+	cmd = purple_prefs_get_path(PIDGIN_PREFS_ROOT "/sound/command");
 	if(cmd)
 		gtk_entry_set_text(GTK_ENTRY(entry), cmd);
 
@@ -1627,10 +1627,10 @@
 	g_signal_connect(G_OBJECT(entry), "changed",
 					 G_CALLBACK(sound_cmd_yeah), NULL);
 
-	purple_prefs_connect_callback(prefs, "/purple/gtk/sound/method",
+	purple_prefs_connect_callback(prefs, PIDGIN_PREFS_ROOT "/sound/method",
 								sound_changed1_cb, hbox);
 	gtk_widget_set_sensitive(hbox,
-			!strcmp(purple_prefs_get_string("/purple/gtk/sound/method"),
+			!strcmp(purple_prefs_get_string(PIDGIN_PREFS_ROOT "/sound/method"),
 					"custom"));
 
 	pidgin_set_accessible_label (entry, label);
@@ -1638,7 +1638,7 @@
 
 	vbox = pidgin_make_frame (ret, _("Sound Options"));
 	pidgin_prefs_checkbox(_("Sounds when conversation has _focus"),
-				   "/purple/gtk/sound/conv_focus", vbox);
+				   PIDGIN_PREFS_ROOT "/sound/conv_focus", vbox);
 	pidgin_prefs_dropdown(vbox, _("Enable sounds:"),
 				 PURPLE_PREF_INT, "/core/sound/while_status",
 				_("Only when available"), 1,
@@ -1656,7 +1656,7 @@
 
 	sw = gtk_hscale_new_with_range(0.0, 100.0, 5.0);
 	gtk_range_set_increments(GTK_RANGE(sw), 5.0, 25.0);
-	gtk_range_set_value(GTK_RANGE(sw), purple_prefs_get_int("/purple/gtk/sound/volume"));
+	gtk_range_set_value(GTK_RANGE(sw), purple_prefs_get_int(PIDGIN_PREFS_ROOT "/sound/volume"));
 	g_signal_connect (G_OBJECT (sw), "format-value",
 			  G_CALLBACK (prefs_sound_volume_format),
 			  NULL);
@@ -1665,16 +1665,16 @@
 			  NULL);
 	gtk_box_pack_start(GTK_BOX(hbox), sw, TRUE, TRUE, 0);
 
-	purple_prefs_connect_callback(prefs, "/purple/gtk/sound/method",
+	purple_prefs_connect_callback(prefs, PIDGIN_PREFS_ROOT "/sound/method",
 								sound_changed3_cb, hbox);
-	sound_changed3_cb("/purple/gtk/sound/method", PURPLE_PREF_STRING,
-			  purple_prefs_get_string("/purple/gtk/sound/method"), hbox);
+	sound_changed3_cb(PIDGIN_PREFS_ROOT "/sound/method", PURPLE_PREF_STRING,
+			  purple_prefs_get_string(PIDGIN_PREFS_ROOT "/sound/method"), hbox);
 #endif
 
 #ifndef _WIN32
 	gtk_widget_set_sensitive(vbox,
-			strcmp(purple_prefs_get_string("/purple/gtk/sound/method"), "none"));
-	purple_prefs_connect_callback(prefs, "/purple/gtk/sound/method",
+			strcmp(purple_prefs_get_string(PIDGIN_PREFS_ROOT "/sound/method"), "none"));
+	purple_prefs_connect_callback(prefs, PIDGIN_PREFS_ROOT "/sound/method",
 								sound_changed2_cb, vbox);
 #endif
 
@@ -1697,7 +1697,7 @@
 	event_store = gtk_list_store_new (4, G_TYPE_BOOLEAN, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_UINT);
 
 	for (j=0; j < PURPLE_NUM_SOUNDS; j++) {
-		char *pref = g_strdup_printf("/purple/gtk/sound/enabled/%s",
+		char *pref = g_strdup_printf(PIDGIN_PREFS_ROOT "/sound/enabled/%s",
 					     pidgin_sound_get_event_option(j));
 		const char *label = pidgin_sound_get_event_label(j);
 
@@ -1747,7 +1747,7 @@
 	hbox = gtk_hbox_new(FALSE, PIDGIN_HIG_BOX_SPACE);
 	gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0);
 	sound_entry = gtk_entry_new();
-	pref = g_strdup_printf("/purple/gtk/sound/file/%s",
+	pref = g_strdup_printf(PIDGIN_PREFS_ROOT "/sound/file/%s",
 			       pidgin_sound_get_event_option(0));
 	file = purple_prefs_get_path(pref);
 	g_free(pref);
@@ -2027,99 +2027,100 @@
 void
 pidgin_prefs_init(void)
 {
-	purple_prefs_add_none("/purple");
-	purple_prefs_add_none("/purple/gtk");
+	/* only change this when we have a sane prefs migration path */
+	purple_prefs_add_none("/gaim");
+	purple_prefs_add_none(PIDGIN_PREFS_ROOT "");
 	purple_prefs_add_none("/plugins/gtk");
 
 #ifndef _WIN32
 	/* Browsers */
-	purple_prefs_add_none("/purple/gtk/browsers");
-	purple_prefs_add_int("/purple/gtk/browsers/place", PIDGIN_BROWSER_DEFAULT);
-	purple_prefs_add_path("/purple/gtk/browsers/command", "");
-	purple_prefs_add_string("/purple/gtk/browsers/browser", "mozilla");
+	purple_prefs_add_none(PIDGIN_PREFS_ROOT "/browsers");
+	purple_prefs_add_int(PIDGIN_PREFS_ROOT "/browsers/place", PIDGIN_BROWSER_DEFAULT);
+	purple_prefs_add_path(PIDGIN_PREFS_ROOT "/browsers/command", "");
+	purple_prefs_add_string(PIDGIN_PREFS_ROOT "/browsers/browser", "mozilla");
 #endif
 
 	/* Plugins */
-	purple_prefs_add_none("/purple/gtk/plugins");
-	purple_prefs_add_path_list("/purple/gtk/plugins/loaded", NULL);
+	purple_prefs_add_none(PIDGIN_PREFS_ROOT "/plugins");
+	purple_prefs_add_path_list(PIDGIN_PREFS_ROOT "/plugins/loaded", NULL);
 
 	/* File locations */
-	purple_prefs_add_none("/purple/gtk/filelocations");
-	purple_prefs_add_path("/purple/gtk/filelocations/last_save_folder", "");
-	purple_prefs_add_path("/purple/gtk/filelocations/last_open_folder", "");
-	purple_prefs_add_path("/purple/gtk/filelocations/last_icon_folder", "");
+	purple_prefs_add_none(PIDGIN_PREFS_ROOT "/filelocations");
+	purple_prefs_add_path(PIDGIN_PREFS_ROOT "/filelocations/last_save_folder", "");
+	purple_prefs_add_path(PIDGIN_PREFS_ROOT "/filelocations/last_open_folder", "");
+	purple_prefs_add_path(PIDGIN_PREFS_ROOT "/filelocations/last_icon_folder", "");
 
 	/* Smiley Themes */
-	purple_prefs_add_none("/purple/gtk/smileys");
-	purple_prefs_add_string("/purple/gtk/smileys/theme", "Default");
+	purple_prefs_add_none(PIDGIN_PREFS_ROOT "/smileys");
+	purple_prefs_add_string(PIDGIN_PREFS_ROOT "/smileys/theme", "Default");
 
 	/* Smiley Callbacks */
-	purple_prefs_connect_callback(prefs, "/purple/gtk/smileys/theme",
+	purple_prefs_connect_callback(prefs, PIDGIN_PREFS_ROOT "/smileys/theme",
 								smiley_theme_pref_cb, NULL);
 }
 
 void pidgin_prefs_update_old() {
 	/* Rename some old prefs */
-	purple_prefs_rename("/purple/gtk/logging/log_ims", "/core/logging/log_ims");
-	purple_prefs_rename("/purple/gtk/logging/log_chats", "/core/logging/log_chats");
+	purple_prefs_rename(PIDGIN_PREFS_ROOT "/logging/log_ims", "/core/logging/log_ims");
+	purple_prefs_rename(PIDGIN_PREFS_ROOT "/logging/log_chats", "/core/logging/log_chats");
 	purple_prefs_rename("/core/conversations/placement",
-					  "/purple/gtk/conversations/placement");
+					  PIDGIN_PREFS_ROOT "/conversations/placement");
 
-	purple_prefs_rename("/purple/gtk/debug/timestamps", "/core/debug/timestamps");
-	purple_prefs_rename("/purple/gtk/conversations/im/raise_on_events", "/plugins/gtk/X11/notify/method_raise");
+	purple_prefs_rename(PIDGIN_PREFS_ROOT "/debug/timestamps", "/core/debug/timestamps");
+	purple_prefs_rename(PIDGIN_PREFS_ROOT "/conversations/im/raise_on_events", "/plugins/gtk/X11/notify/method_raise");
 
-	purple_prefs_rename_boolean_toggle("/purple/gtk/conversations/ignore_colors",
-									 "/purple/gtk/conversations/show_incoming_formatting");
+	purple_prefs_rename_boolean_toggle(PIDGIN_PREFS_ROOT "/conversations/ignore_colors",
+									 PIDGIN_PREFS_ROOT "/conversations/show_incoming_formatting");
 
 	/* this string pref moved into the core, try to be friendly */
-	purple_prefs_rename("/purple/gtk/idle/reporting_method", "/core/away/idle_reporting");
+	purple_prefs_rename(PIDGIN_PREFS_ROOT "/idle/reporting_method", "/core/away/idle_reporting");
 
 	/* Remove some no-longer-used prefs */
-	purple_prefs_remove("/purple/gtk/blist/auto_expand_contacts");
-	purple_prefs_remove("/purple/gtk/blist/button_style");
-	purple_prefs_remove("/purple/gtk/blist/grey_idle_buddies");
-	purple_prefs_remove("/purple/gtk/blist/raise_on_events");
-	purple_prefs_remove("/purple/gtk/blist/show_group_count");
-	purple_prefs_remove("/purple/gtk/blist/show_warning_level");
-	purple_prefs_remove("/purple/gtk/conversations/button_type");
-	purple_prefs_remove("/purple/gtk/conversations/ctrl_enter_sends");
-	purple_prefs_remove("/purple/gtk/conversations/enter_sends");
-	purple_prefs_remove("/purple/gtk/conversations/escape_closes");
-	purple_prefs_remove("/purple/gtk/conversations/html_shortcuts");
-	purple_prefs_remove("/purple/gtk/conversations/icons_on_tabs");
-	purple_prefs_remove("/purple/gtk/conversations/send_formatting");
-	purple_prefs_remove("/purple/gtk/conversations/show_smileys");
-	purple_prefs_remove("/purple/gtk/conversations/show_urls_as_links");
-	purple_prefs_remove("/purple/gtk/conversations/smiley_shortcuts");
-	purple_prefs_remove("/purple/gtk/conversations/use_custom_bgcolor");
-	purple_prefs_remove("/purple/gtk/conversations/use_custom_fgcolor");
-	purple_prefs_remove("/purple/gtk/conversations/use_custom_font");
-	purple_prefs_remove("/purple/gtk/conversations/use_custom_size");
-	purple_prefs_remove("/purple/gtk/conversations/chat/old_tab_complete");
-	purple_prefs_remove("/purple/gtk/conversations/chat/tab_completion");
-	purple_prefs_remove("/purple/gtk/conversations/im/hide_on_send");
-	purple_prefs_remove("/purple/gtk/conversations/chat/color_nicks");
-	purple_prefs_remove("/purple/gtk/conversations/chat/raise_on_events");
-	purple_prefs_remove("/purple/gtk/conversations/ignore_fonts");
-	purple_prefs_remove("/purple/gtk/conversations/ignore_font_sizes");
-	purple_prefs_remove("/purple/gtk/conversations/passthrough_unknown_commands");
-	purple_prefs_remove("/purple/gtk/idle");
-	purple_prefs_remove("/purple/gtk/logging/individual_logs");
-	purple_prefs_remove("/purple/gtk/sound/signon");
-	purple_prefs_remove("/purple/gtk/sound/silent_signon");
+	purple_prefs_remove(PIDGIN_PREFS_ROOT "/blist/auto_expand_contacts");
+	purple_prefs_remove(PIDGIN_PREFS_ROOT "/blist/button_style");
+	purple_prefs_remove(PIDGIN_PREFS_ROOT "/blist/grey_idle_buddies");
+	purple_prefs_remove(PIDGIN_PREFS_ROOT "/blist/raise_on_events");
+	purple_prefs_remove(PIDGIN_PREFS_ROOT "/blist/show_group_count");
+	purple_prefs_remove(PIDGIN_PREFS_ROOT "/blist/show_warning_level");
+	purple_prefs_remove(PIDGIN_PREFS_ROOT "/conversations/button_type");
+	purple_prefs_remove(PIDGIN_PREFS_ROOT "/conversations/ctrl_enter_sends");
+	purple_prefs_remove(PIDGIN_PREFS_ROOT "/conversations/enter_sends");
+	purple_prefs_remove(PIDGIN_PREFS_ROOT "/conversations/escape_closes");
+	purple_prefs_remove(PIDGIN_PREFS_ROOT "/conversations/html_shortcuts");
+	purple_prefs_remove(PIDGIN_PREFS_ROOT "/conversations/icons_on_tabs");
+	purple_prefs_remove(PIDGIN_PREFS_ROOT "/conversations/send_formatting");
+	purple_prefs_remove(PIDGIN_PREFS_ROOT "/conversations/show_smileys");
+	purple_prefs_remove(PIDGIN_PREFS_ROOT "/conversations/show_urls_as_links");
+	purple_prefs_remove(PIDGIN_PREFS_ROOT "/conversations/smiley_shortcuts");
+	purple_prefs_remove(PIDGIN_PREFS_ROOT "/conversations/use_custom_bgcolor");
+	purple_prefs_remove(PIDGIN_PREFS_ROOT "/conversations/use_custom_fgcolor");
+	purple_prefs_remove(PIDGIN_PREFS_ROOT "/conversations/use_custom_font");
+	purple_prefs_remove(PIDGIN_PREFS_ROOT "/conversations/use_custom_size");
+	purple_prefs_remove(PIDGIN_PREFS_ROOT "/conversations/chat/old_tab_complete");
+	purple_prefs_remove(PIDGIN_PREFS_ROOT "/conversations/chat/tab_completion");
+	purple_prefs_remove(PIDGIN_PREFS_ROOT "/conversations/im/hide_on_send");
+	purple_prefs_remove(PIDGIN_PREFS_ROOT "/conversations/chat/color_nicks");
+	purple_prefs_remove(PIDGIN_PREFS_ROOT "/conversations/chat/raise_on_events");
+	purple_prefs_remove(PIDGIN_PREFS_ROOT "/conversations/ignore_fonts");
+	purple_prefs_remove(PIDGIN_PREFS_ROOT "/conversations/ignore_font_sizes");
+	purple_prefs_remove(PIDGIN_PREFS_ROOT "/conversations/passthrough_unknown_commands");
+	purple_prefs_remove(PIDGIN_PREFS_ROOT "/idle");
+	purple_prefs_remove(PIDGIN_PREFS_ROOT "/logging/individual_logs");
+	purple_prefs_remove(PIDGIN_PREFS_ROOT "/sound/signon");
+	purple_prefs_remove(PIDGIN_PREFS_ROOT "/sound/silent_signon");
 
 	/* Convert old queuing prefs to hide_new 3-way pref. */
 	if (purple_prefs_exists("/plugins/gtk/docklet/queue_messages") &&
 	    purple_prefs_get_bool("/plugins/gtk/docklet/queue_messages"))
 	{
-		purple_prefs_set_string("/purple/gtk/conversations/im/hide_new", "always");
+		purple_prefs_set_string(PIDGIN_PREFS_ROOT "/conversations/im/hide_new", "always");
 	}
-	else if (purple_prefs_exists("/purple/gtk/away/queue_messages") &&
-	         purple_prefs_get_bool("/purple/gtk/away/queue_messages"))
+	else if (purple_prefs_exists(PIDGIN_PREFS_ROOT "/away/queue_messages") &&
+	         purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/away/queue_messages"))
 	{
-		purple_prefs_set_string("/purple/gtk/conversations/im/hide_new", "away");
+		purple_prefs_set_string(PIDGIN_PREFS_ROOT "/conversations/im/hide_new", "away");
 	}
-	purple_prefs_remove("/purple/gtk/away/queue_messages");
-	purple_prefs_remove("/purple/gtk/away");
+	purple_prefs_remove(PIDGIN_PREFS_ROOT "/away/queue_messages");
+	purple_prefs_remove(PIDGIN_PREFS_ROOT "/away");
 	purple_prefs_remove("/plugins/gtk/docklet/queue_messages");
 }
--- a/pidgin/gtkrequest.c	Wed Apr 11 14:03:28 2007 +0000
+++ b/pidgin/gtkrequest.c	Wed Apr 11 15:21:47 2007 +0000
@@ -405,7 +405,7 @@
 
 			gtk_box_pack_start(GTK_BOX(vbox), sw, TRUE, TRUE, 0);
 
-			if (purple_prefs_get_bool("/purple/gtk/conversations/spellcheck"))
+			if (purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/conversations/spellcheck"))
 				pidgin_setup_gtkspell(GTK_TEXT_VIEW(entry));
 
 			gtk_container_add(GTK_CONTAINER(sw), entry);
@@ -726,7 +726,7 @@
 		gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(textview),
 									GTK_WRAP_WORD_CHAR);
 
-		if (purple_prefs_get_bool("/purple/gtk/conversations/spellcheck"))
+		if (purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/conversations/spellcheck"))
 			pidgin_setup_gtkspell(GTK_TEXT_VIEW(textview));
 
 		gtk_container_add(GTK_CONTAINER(widget), textview);
@@ -1415,9 +1415,9 @@
 	current_folder = gtk_file_chooser_get_current_folder(GTK_FILE_CHOOSER(data->dialog));
 	if (current_folder != NULL) {
 		if (data->u.file.savedialog) {
-			purple_prefs_set_path("/purple/gtk/filelocations/last_save_folder", current_folder);
+			purple_prefs_set_path(PIDGIN_PREFS_ROOT "/filelocations/last_save_folder", current_folder);
 		} else {
-			purple_prefs_set_path("/purple/gtk/filelocations/last_open_folder", current_folder);
+			purple_prefs_set_path(PIDGIN_PREFS_ROOT "/filelocations/last_open_folder", current_folder);
 		}
 		g_free(current_folder);
 	}
@@ -1455,9 +1455,9 @@
 
 	if (current_folder != NULL) {
 		if (data->u.file.savedialog) {
-			purple_prefs_set_path("/purple/gtk/filelocations/last_save_folder", current_folder);
+			purple_prefs_set_path(PIDGIN_PREFS_ROOT "/filelocations/last_save_folder", current_folder);
 		} else {
-			purple_prefs_set_path("/purple/gtk/filelocations/last_open_folder", current_folder);
+			purple_prefs_set_path(PIDGIN_PREFS_ROOT "/filelocations/last_open_folder", current_folder);
 		}
 		g_free(current_folder);
 	}
@@ -1524,9 +1524,9 @@
 	gtk_dialog_set_default_response(GTK_DIALOG(filesel), GTK_RESPONSE_ACCEPT);
 
 	if (savedialog) {
-		current_folder = purple_prefs_get_path("/purple/gtk/filelocations/last_save_folder");
+		current_folder = purple_prefs_get_path(PIDGIN_PREFS_ROOT "/filelocations/last_save_folder");
 	} else {
-		current_folder = purple_prefs_get_path("/purple/gtk/filelocations/last_open_folder");
+		current_folder = purple_prefs_get_path(PIDGIN_PREFS_ROOT "/filelocations/last_open_folder");
 	}
 
 	if ((filename != NULL) && (*filename != '\0')) {
@@ -1559,9 +1559,9 @@
 			title ? title : (savedialog ? _("Save File...")
 				: _("Open File...")));
 	if (savedialog) {
-		current_folder = purple_prefs_get_path("/purple/gtk/filelocations/last_save_folder");
+		current_folder = purple_prefs_get_path(PIDGIN_PREFS_ROOT "/filelocations/last_save_folder");
 	} else {
-		current_folder = purple_prefs_get_path("/purple/gtk/filelocations/last_open_folder");
+		current_folder = purple_prefs_get_path(PIDGIN_PREFS_ROOT "/filelocations/last_open_folder");
 	}
 	if (current_folder != NULL) {
 		gchar *path = g_strdup_printf("%s%s", current_folder, G_DIR_SEPARATOR_S);
--- a/pidgin/gtksavedstatuses.c	Wed Apr 11 14:03:28 2007 +0000
+++ b/pidgin/gtksavedstatuses.c	Wed Apr 11 15:21:47 2007 +0000
@@ -521,8 +521,8 @@
 {
 	if (GTK_WIDGET_VISIBLE(widget))
 	{
-		purple_prefs_set_int("/purple/gtk/status/dialog/width",  event->width);
-		purple_prefs_set_int("/purple/gtk/status/dialog/height", event->height);
+		purple_prefs_set_int(PIDGIN_PREFS_ROOT "/status/dialog/width",  event->width);
+		purple_prefs_set_int(PIDGIN_PREFS_ROOT "/status/dialog/height", event->height);
 	}
 
 	return FALSE;
@@ -547,8 +547,8 @@
 
 	status_window = dialog = g_new0(StatusWindow, 1);
 
-	width  = purple_prefs_get_int("/purple/gtk/status/dialog/width");
-	height = purple_prefs_get_int("/purple/gtk/status/dialog/height");
+	width  = purple_prefs_get_int(PIDGIN_PREFS_ROOT "/status/dialog/width");
+	height = purple_prefs_get_int(PIDGIN_PREFS_ROOT "/status/dialog/height");
 
 	dialog->window = win = gtk_window_new(GTK_WINDOW_TOPLEVEL);
 	gtk_window_set_default_size(GTK_WINDOW(win), width, height);
@@ -1768,10 +1768,10 @@
 void
 pidgin_status_init(void)
 {
-	purple_prefs_add_none("/purple/gtk/status");
-	purple_prefs_add_none("/purple/gtk/status/dialog");
-	purple_prefs_add_int("/purple/gtk/status/dialog/width",  550);
-	purple_prefs_add_int("/purple/gtk/status/dialog/height", 250);
+	purple_prefs_add_none(PIDGIN_PREFS_ROOT "/status");
+	purple_prefs_add_none(PIDGIN_PREFS_ROOT "/status/dialog");
+	purple_prefs_add_int(PIDGIN_PREFS_ROOT "/status/dialog/width",  550);
+	purple_prefs_add_int(PIDGIN_PREFS_ROOT "/status/dialog/height", 250);
 }
 
 void
--- a/pidgin/gtksound.c	Wed Apr 11 14:03:28 2007 +0000
+++ b/pidgin/gtksound.c	Wed Apr 11 15:21:47 2007 +0000
@@ -126,7 +126,7 @@
 		has_focus = purple_conversation_has_focus(conv);
 
 		if (!gtkconv->make_sound ||
-			(has_focus && !purple_prefs_get_bool("/purple/gtk/sound/conv_focus")))
+			(has_focus && !purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/sound/conv_focus")))
 		{
 			return;
 		}
@@ -273,36 +273,36 @@
 						gtk_sound_handle, PURPLE_CALLBACK(account_signon_cb),
 						NULL);
 
-	purple_prefs_add_none("/purple/gtk/sound");
-	purple_prefs_add_none("/purple/gtk/sound/enabled");
-	purple_prefs_add_none("/purple/gtk/sound/file");
-	purple_prefs_add_bool("/purple/gtk/sound/enabled/login", TRUE);
-	purple_prefs_add_path("/purple/gtk/sound/file/login", "");
-	purple_prefs_add_bool("/purple/gtk/sound/enabled/logout", TRUE);
-	purple_prefs_add_path("/purple/gtk/sound/file/logout", "");
-	purple_prefs_add_bool("/purple/gtk/sound/enabled/im_recv", TRUE);
-	purple_prefs_add_path("/purple/gtk/sound/file/im_recv", "");
-	purple_prefs_add_bool("/purple/gtk/sound/enabled/first_im_recv", FALSE);
-	purple_prefs_add_path("/purple/gtk/sound/file/first_im_recv", "");
-	purple_prefs_add_bool("/purple/gtk/sound/enabled/send_im", TRUE);
-	purple_prefs_add_path("/purple/gtk/sound/file/send_im", "");
-	purple_prefs_add_bool("/purple/gtk/sound/enabled/join_chat", FALSE);
-	purple_prefs_add_path("/purple/gtk/sound/file/join_chat", "");
-	purple_prefs_add_bool("/purple/gtk/sound/enabled/left_chat", FALSE);
-	purple_prefs_add_path("/purple/gtk/sound/file/left_chat", "");
-	purple_prefs_add_bool("/purple/gtk/sound/enabled/send_chat_msg", FALSE);
-	purple_prefs_add_path("/purple/gtk/sound/file/send_chat_msg", "");
-	purple_prefs_add_bool("/purple/gtk/sound/enabled/chat_msg_recv", FALSE);
-	purple_prefs_add_path("/purple/gtk/sound/file/chat_msg_recv", "");
-	purple_prefs_add_bool("/purple/gtk/sound/enabled/nick_said", FALSE);
-	purple_prefs_add_path("/purple/gtk/sound/file/nick_said", "");
-	purple_prefs_add_bool("/purple/gtk/sound/enabled/pounce_default", TRUE);
-	purple_prefs_add_path("/purple/gtk/sound/file/pounce_default", "");
-	purple_prefs_add_bool("/purple/gtk/sound/conv_focus", TRUE);
-	purple_prefs_add_bool("/purple/gtk/sound/mute", FALSE);
-	purple_prefs_add_path("/purple/gtk/sound/command", "");
-	purple_prefs_add_string("/purple/gtk/sound/method", "automatic");
-	purple_prefs_add_int("/purple/gtk/sound/volume", 50);
+	purple_prefs_add_none(PIDGIN_PREFS_ROOT "/sound");
+	purple_prefs_add_none(PIDGIN_PREFS_ROOT "/sound/enabled");
+	purple_prefs_add_none(PIDGIN_PREFS_ROOT "/sound/file");
+	purple_prefs_add_bool(PIDGIN_PREFS_ROOT "/sound/enabled/login", TRUE);
+	purple_prefs_add_path(PIDGIN_PREFS_ROOT "/sound/file/login", "");
+	purple_prefs_add_bool(PIDGIN_PREFS_ROOT "/sound/enabled/logout", TRUE);
+	purple_prefs_add_path(PIDGIN_PREFS_ROOT "/sound/file/logout", "");
+	purple_prefs_add_bool(PIDGIN_PREFS_ROOT "/sound/enabled/im_recv", TRUE);
+	purple_prefs_add_path(PIDGIN_PREFS_ROOT "/sound/file/im_recv", "");
+	purple_prefs_add_bool(PIDGIN_PREFS_ROOT "/sound/enabled/first_im_recv", FALSE);
+	purple_prefs_add_path(PIDGIN_PREFS_ROOT "/sound/file/first_im_recv", "");
+	purple_prefs_add_bool(PIDGIN_PREFS_ROOT "/sound/enabled/send_im", TRUE);
+	purple_prefs_add_path(PIDGIN_PREFS_ROOT "/sound/file/send_im", "");
+	purple_prefs_add_bool(PIDGIN_PREFS_ROOT "/sound/enabled/join_chat", FALSE);
+	purple_prefs_add_path(PIDGIN_PREFS_ROOT "/sound/file/join_chat", "");
+	purple_prefs_add_bool(PIDGIN_PREFS_ROOT "/sound/enabled/left_chat", FALSE);
+	purple_prefs_add_path(PIDGIN_PREFS_ROOT "/sound/file/left_chat", "");
+	purple_prefs_add_bool(PIDGIN_PREFS_ROOT "/sound/enabled/send_chat_msg", FALSE);
+	purple_prefs_add_path(PIDGIN_PREFS_ROOT "/sound/file/send_chat_msg", "");
+	purple_prefs_add_bool(PIDGIN_PREFS_ROOT "/sound/enabled/chat_msg_recv", FALSE);
+	purple_prefs_add_path(PIDGIN_PREFS_ROOT "/sound/file/chat_msg_recv", "");
+	purple_prefs_add_bool(PIDGIN_PREFS_ROOT "/sound/enabled/nick_said", FALSE);
+	purple_prefs_add_path(PIDGIN_PREFS_ROOT "/sound/file/nick_said", "");
+	purple_prefs_add_bool(PIDGIN_PREFS_ROOT "/sound/enabled/pounce_default", TRUE);
+	purple_prefs_add_path(PIDGIN_PREFS_ROOT "/sound/file/pounce_default", "");
+	purple_prefs_add_bool(PIDGIN_PREFS_ROOT "/sound/conv_focus", TRUE);
+	purple_prefs_add_bool(PIDGIN_PREFS_ROOT "/sound/mute", FALSE);
+	purple_prefs_add_path(PIDGIN_PREFS_ROOT "/sound/command", "");
+	purple_prefs_add_string(PIDGIN_PREFS_ROOT "/sound/method", "automatic");
+	purple_prefs_add_int(PIDGIN_PREFS_ROOT "/sound/volume", 50);
 
 #ifdef USE_GSTREAMER
 	purple_debug_info("sound", "Initializing sound output drivers.\n");
@@ -397,10 +397,10 @@
 	GstBus *bus = NULL;
 #endif
 
-	if (purple_prefs_get_bool("/purple/gtk/sound/mute"))
+	if (purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/sound/mute"))
 		return;
 
-	method = purple_prefs_get_string("/purple/gtk/sound/method");
+	method = purple_prefs_get_string(PIDGIN_PREFS_ROOT "/sound/method");
 
 	if (!strcmp(method, "none")) {
 		return;
@@ -420,7 +420,7 @@
 		char *command;
 		GError *error = NULL;
 
-		sound_cmd = purple_prefs_get_path("/purple/gtk/sound/command");
+		sound_cmd = purple_prefs_get_path(PIDGIN_PREFS_ROOT "/sound/command");
 
 		if (!sound_cmd || *sound_cmd == '\0') {
 			purple_debug_error("gtksound",
@@ -445,7 +445,7 @@
 #ifdef USE_GSTREAMER
 	if (gst_init_failed)  /* Perhaps do gdk_beep instead? */
 		return;
-	volume = (float)(CLAMP(purple_prefs_get_int("/purple/gtk/sound/volume"),0,100)) / 50;
+	volume = (float)(CLAMP(purple_prefs_get_int(PIDGIN_PREFS_ROOT "/sound/volume"),0,100)) / 50;
 	if (!strcmp(method, "automatic")) {
 		if (purple_running_gnome()) {
 			sink = gst_element_factory_make("gconfaudiosink", "sink");
@@ -520,9 +520,9 @@
 		return;
 	}
 
-	enable_pref = g_strdup_printf("/purple/gtk/sound/enabled/%s",
+	enable_pref = g_strdup_printf(PIDGIN_PREFS_ROOT "/sound/enabled/%s",
 			sounds[event].pref);
-	file_pref = g_strdup_printf("/purple/gtk/sound/file/%s", sounds[event].pref);
+	file_pref = g_strdup_printf(PIDGIN_PREFS_ROOT "/sound/file/%s", sounds[event].pref);
 
 	/* check NULL for sounds that don't have an option, ie buddy pounce */
 	if (purple_prefs_get_bool(enable_pref)) {
--- a/pidgin/gtkstatusbox.c	Wed Apr 11 14:03:28 2007 +0000
+++ b/pidgin/gtkstatusbox.c	Wed Apr 11 15:21:47 2007 +0000
@@ -249,7 +249,7 @@
 		menu_item = pidgin_new_item_from_stock(box->icon_box_menu, _("Remove"), GTK_STOCK_REMOVE,
 						     G_CALLBACK(remove_buddy_icon_cb),
 						     box, 0, 0, NULL);
-		if (purple_prefs_get_path("/purple/gtk/accounts/buddyicon") == NULL)
+		if (purple_prefs_get_path(PIDGIN_PREFS_ROOT "/accounts/buddyicon") == NULL)
 			gtk_widget_set_sensitive(menu_item, FALSE);
 
 		gtk_menu_popup(GTK_MENU(box->icon_box_menu), NULL, NULL, NULL, NULL,
@@ -379,7 +379,7 @@
 	}
 	else
 	{
-		pidgin_status_box_set_buddy_icon(status_box, purple_prefs_get_path("/purple/gtk/accounts/buddyicon"));
+		pidgin_status_box_set_buddy_icon(status_box, purple_prefs_get_path(PIDGIN_PREFS_ROOT "/accounts/buddyicon"));
 	}
 
 	status_box->hand_cursor = gdk_cursor_new (GDK_HAND2);
@@ -1496,7 +1496,7 @@
 {
 	if (box->account == NULL)
 		/* The pref-connect callback does the actual work */
-		purple_prefs_set_path("/purple/gtk/accounts/buddyicon", NULL);
+		purple_prefs_set_path(PIDGIN_PREFS_ROOT "/accounts/buddyicon", NULL);
 	else
 		buddy_icon_set_cb(NULL, box);
 
@@ -1511,7 +1511,7 @@
 	if (filename) {
 		if (box->account == NULL)
 			/* The pref-connect callback does the actual work */
-			purple_prefs_set_path("/purple/gtk/accounts/buddyicon", filename);
+			purple_prefs_set_path(PIDGIN_PREFS_ROOT "/accounts/buddyicon", filename);
 		else
 			buddy_icon_set_cb(filename, box);
 	}
@@ -1732,7 +1732,7 @@
 	g_signal_connect_swapped(G_OBJECT(status_box->imhtml), "message_send", G_CALLBACK(remove_typing_cb), status_box);
 	gtk_imhtml_set_editable(GTK_IMHTML(status_box->imhtml), TRUE);
 #ifdef USE_GTKSPELL
-	if (purple_prefs_get_bool("/purple/gtk/conversations/spellcheck"))
+	if (purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/conversations/spellcheck"))
 		pidgin_setup_gtkspell(GTK_TEXT_VIEW(status_box->imhtml));
 #endif
 	gtk_widget_set_parent(status_box->vbox, GTK_WIDGET(status_box));
@@ -1771,9 +1771,9 @@
 						PURPLE_CALLBACK(account_status_changed_cb),
 						status_box);
 
-	purple_prefs_connect_callback(status_box, "/purple/gtk/conversations/spellcheck",
+	purple_prefs_connect_callback(status_box, PIDGIN_PREFS_ROOT "/conversations/spellcheck",
 								spellcheck_prefs_cb, status_box);
-	purple_prefs_connect_callback(status_box, "/purple/gtk/accounts/buddyicon",
+	purple_prefs_connect_callback(status_box, PIDGIN_PREFS_ROOT "/accounts/buddyicon",
 	                            update_buddyicon_cb, status_box);
 	purple_signal_connect(purple_get_core(), "uri-handler", status_box,
 					PURPLE_CALLBACK(statusbox_uri_handler), status_box);
--- a/pidgin/gtkthemes.c	Wed Apr 11 14:03:28 2007 +0000
+++ b/pidgin/gtkthemes.c	Wed Apr 11 15:21:47 2007 +0000
@@ -318,7 +318,7 @@
 {
 	GSList *l;
 	const char *current_theme =
-		purple_prefs_get_string("/purple/gtk/smileys/theme");
+		purple_prefs_get_string(PIDGIN_PREFS_ROOT "/smileys/theme");
 
 	pidginthemes_smiley_theme_probe();
 
--- a/pidgin/gtkutils.c	Wed Apr 11 14:03:28 2007 +0000
+++ b/pidgin/gtkutils.c	Wed Apr 11 15:21:47 2007 +0000
@@ -161,7 +161,7 @@
 	gtk_imhtml_set_format_functions(GTK_IMHTML(imhtml), GTK_IMHTML_ALL ^ GTK_IMHTML_IMAGE);
 	gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(imhtml), GTK_WRAP_WORD_CHAR);
 #ifdef USE_GTKSPELL
-	if (editable && purple_prefs_get_bool("/purple/gtk/conversations/spellcheck"))
+	if (editable && purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/conversations/spellcheck"))
 		pidgin_setup_gtkspell(GTK_TEXT_VIEW(imhtml));
 #endif
 	gtk_widget_show(imhtml);
@@ -2209,7 +2209,7 @@
 	filename = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(dialog->icon_filesel));
 	current_folder = gtk_file_chooser_get_current_folder(GTK_FILE_CHOOSER(dialog->icon_filesel));
 	if (current_folder != NULL) {
-		purple_prefs_set_path("/purple/gtk/filelocations/last_icon_folder", current_folder);
+		purple_prefs_set_path(PIDGIN_PREFS_ROOT "/filelocations/last_icon_folder", current_folder);
 		g_free(current_folder);
 	}
 
@@ -2232,7 +2232,7 @@
 
 	current_folder = g_path_get_dirname(filename);
 	if (current_folder != NULL) {
-		purple_prefs_set_path("/purple/gtk/filelocations/last_icon_folder", current_folder);
+		purple_prefs_set_path(PIDGIN_PREFS_ROOT "/filelocations/last_icon_folder", current_folder);
 		g_free(current_folder);
 	}
 
@@ -2329,7 +2329,7 @@
 		return NULL;
 	}
 
-	current_folder = purple_prefs_get_path("/purple/gtk/filelocations/last_icon_folder");
+	current_folder = purple_prefs_get_path(PIDGIN_PREFS_ROOT "/filelocations/last_icon_folder");
 #if GTK_CHECK_VERSION(2,4,0) /* FILECHOOSER */
 
 	dialog->icon_filesel = gtk_file_chooser_dialog_new(_("Buddy Icon"),
@@ -2940,7 +2940,7 @@
 		   primary_esc, secondary ? "\n" : "", secondary?secondary_esc:"");
 	g_free(primary_esc);
 	label = gtk_label_new(NULL);
-	gtk_widget_set_size_request(label, purple_prefs_get_int("/purple/gtk/blist/width")-25,-1);
+	gtk_widget_set_size_request(label, purple_prefs_get_int(PIDGIN_PREFS_ROOT "/blist/width")-25,-1);
 	gtk_label_set_markup(GTK_LABEL(label), label_text);
         gtk_label_set_line_wrap(GTK_LABEL(label), TRUE);
         gtk_misc_set_alignment(GTK_MISC(label), 0, 0);
--- a/pidgin/pidgin-uninstalled.pc.in	Wed Apr 11 14:03:28 2007 +0000
+++ b/pidgin/pidgin-uninstalled.pc.in	Wed Apr 11 15:21:47 2007 +0000
@@ -9,4 +9,4 @@
 Description: Pidgin is a GTK2-based instant messenger application.
 Version: @VERSION@
 Requires: gtk+-2.0 purple
-Cflags: -I${pc_top_builddir}/${pcfiledir}
+Cflags: -I${pcfiledir}
--- a/pidgin/pidgin.h	Wed Apr 11 14:03:28 2007 +0000
+++ b/pidgin/pidgin.h	Wed Apr 11 15:21:47 2007 +0000
@@ -39,7 +39,11 @@
 /**
  * Our UI's identifier.
  */
-#define PIDGIN_UI "pidgin"
+/* leave this as gtk-gaim until we have a decent way to migrate UI-prefs */
+#define PIDGIN_UI "gtk-gaim"
+
+/* change this only when we have a sane upgrade path for old prefs */
+#define PIDGIN_PREFS_ROOT "/gaim/gtk"
 
 #ifndef _WIN32
 # define PIDGIN_ALERT_TITLE ""
--- a/pidgin/plugins/extplacement.c	Wed Apr 11 14:03:28 2007 +0000
+++ b/pidgin/plugins/extplacement.c	Wed Apr 11 15:21:47 2007 +0000
@@ -79,7 +79,7 @@
 {
 	pidgin_conv_placement_add_fnc("number", _("By conversation count"),
 							   &conv_placement_by_number);
-	purple_prefs_trigger_callback("/purple/gtk/conversations/placement");
+	purple_prefs_trigger_callback(PIDGIN_PREFS_ROOT "/conversations/placement");
 	return TRUE;
 }
 
@@ -87,7 +87,7 @@
 plugin_unload(PurplePlugin *plugin)
 {
 	pidgin_conv_placement_remove_fnc("number");
-	purple_prefs_trigger_callback("/purple/gtk/conversations/placement");
+	purple_prefs_trigger_callback(PIDGIN_PREFS_ROOT "/conversations/placement");
 	return TRUE;
 }
 
--- a/pidgin/plugins/timestamp.c	Wed Apr 11 14:03:28 2007 +0000
+++ b/pidgin/plugins/timestamp.c	Wed Apr 11 15:21:47 2007 +0000
@@ -31,6 +31,7 @@
 
 #include "gtkimhtml.h"
 #include "gtkplugin.h"
+#include "gtkprefs.h"
 #include "gtkutils.h"
 
 #define TIMESTAMP_PLUGIN_ID "gtk-timestamp"
@@ -63,7 +64,7 @@
 	if (((y + height) - (rect.y + rect.height)) > height &&
 	    gtk_text_buffer_get_char_count(buffer)) {
 		gboolean smooth = purple_prefs_get_bool(
-			"/purple/gtk/conversations/use_smooth_scrolling");
+			PIDGIN_PREFS_ROOT "/conversations/use_smooth_scrolling");
 		gtk_imhtml_scroll_to_end(GTK_IMHTML(imhtml), smooth);
 	}
 }
--- a/pidgin/plugins/win32/winprefs/winprefs.c	Wed Apr 11 14:03:28 2007 +0000
+++ b/pidgin/plugins/win32/winprefs/winprefs.c	Wed Apr 11 15:21:47 2007 +0000
@@ -164,7 +164,7 @@
 	if (handle != NULL)
 		blist_visible_cb_id =
 			purple_prefs_connect_callback(handle,
-				"/purple/gtk/blist/list_visible",
+				PIDGIN_PREFS_ROOT "/blist/list_visible",
 				blist_visible_cb, NULL);
 
 	return FALSE;
--- a/pidgin/win32/gtkwin32dep.c	Wed Apr 11 14:03:28 2007 +0000
+++ b/pidgin/win32/gtkwin32dep.c	Wed Apr 11 15:21:47 2007 +0000
@@ -318,7 +318,7 @@
 winpidgin_conv_im_blink(PurpleAccount *account, const char *who, char **message,
 		PurpleConversation *conv, PurpleMessageFlags flags, void *data)
 {
-	if (purple_prefs_get_bool("/purple/gtk/win32/blink_im"))
+	if (purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/win32/blink_im"))
 		winpidgin_conv_blink(conv, flags);
 	return FALSE;
 }
@@ -346,8 +346,8 @@
 
 void winpidgin_post_init(void) {
 
-	purple_prefs_add_none("/purple/gtk/win32");
-	purple_prefs_add_bool("/purple/gtk/win32/blink_im", TRUE);
+	purple_prefs_add_none(PIDGIN_PREFS_ROOT "/win32");
+	purple_prefs_add_bool(PIDGIN_PREFS_ROOT "/win32/blink_im", TRUE);
 
 	purple_signal_connect(pidgin_conversations_get_handle(),
 		"displaying-im-msg", &gtkwin32_handle, PURPLE_CALLBACK(winpidgin_conv_im_blink),
--- a/po/ChangeLog	Wed Apr 11 14:03:28 2007 +0000
+++ b/po/ChangeLog	Wed Apr 11 15:21:47 2007 +0000
@@ -1,14 +1,3 @@
-2007-01-24  gettextize  <bug-gnu-gettext@gnu.org>
-
-	* Makefile.in.in: Upgrade to gettext-0.14.5.
-	* Rules-quot: New file, from gettext-0.14.5.
-	* boldquot.sed: New file, from gettext-0.14.5.
-	* en@boldquot.header: New file, from gettext-0.14.5.
-	* en@quot.header: New file, from gettext-0.14.5.
-	* insert-header.sin: New file, from gettext-0.14.5.
-	* quot.sed: New file, from gettext-0.14.5.
-	* remove-potcdate.sin: New file, from gettext-0.14.5.
-
 Gaim: The Pimpin' Penguin IM Clone that's good for the soul!
 
 version 2.0.0: