# HG changeset patch
# Node ID b67945319c98
# Parent  7568bf87e388
diff --git a/ChangeLog.API b/ChangeLog.API
--- a/ChangeLog.API
+++ b/ChangeLog.API
@@ -609,18 +609,26 @@ version 3.0.0 (??/??/????):
 		* PurplePluginAction
 		* PurplePluginActionCb
 		* PurplePluginLoaderInfo
+		* PurplePluginPref
+		* PurplePluginPrefFrame
 		* PurplePluginPriority
 		* PurplePluginProtocolInfo
 		* PurplePluginType
 		* PurplePluginUiInfo
 		* purple_plugin_action_new
 		* purple_plugin_action_free
+		* purple_plugin_info_get_pref_frame_cb
+		* purple_plugin_info_get_pref_request_cb
 		* purple_plugin_ipc_*
 		* purple_plugin_is_unloadable
 		* purple_plugin_new
 		* purple_plugin_probe
 		* purple_plugin_register
 		* purple_plugin_reload
+		* PurplePluginPrefFrameCb
+		* PurplePluginPrefRequestCb
+		* PurplePluginPrefType
+		* purple_plugin_pref_*
 		* purple_plugins:plugin-load signal
 		* purple-plugins:plugin-unload signal
 		* purple_plugins_destroy_all
@@ -801,6 +809,7 @@ version 3.0.0 (??/??/????):
 		* purple_srv_cancel
 		* purple_srv_resolve_account
 		* purple_srv_txt_query_destroy
+		* PurpleStringFormatType
 		* PurpleSslErrorType
 		* purple_str_add_cr
 		* purple_strcasereplace
diff --git a/finch/gntplugin.c b/finch/gntplugin.c
--- a/finch/gntplugin.c
+++ b/finch/gntplugin.c
@@ -68,8 +68,6 @@ typedef struct
 G_DEFINE_TYPE_WITH_PRIVATE(FinchPluginInfo, finch_plugin_info,
 		PURPLE_TYPE_PLUGIN_INFO);
 
-static GntWidget *process_pref_frame(PurplePluginPrefFrame *frame);
-
 /* Set method for GObject properties */
 static void
 finch_plugin_info_set_property(GObject *obj, guint param_id, const GValue *value,
@@ -146,12 +144,6 @@ finch_plugin_info_new(const char *first_
 	return GPLUGIN_PLUGIN_INFO(info);
 }
 
-static void
-free_stringlist(GList *list)
-{
-	g_list_free_full(list, g_free);
-}
-
 static gboolean
 has_prefs(PurplePlugin *plugin)
 {
@@ -168,9 +160,7 @@ has_prefs(PurplePlugin *plugin)
 		priv = finch_plugin_info_get_instance_private(
 				FINCH_PLUGIN_INFO(info));
 
-	ret = ((priv && priv->pref_frame_cb) ||
-			purple_plugin_info_get_pref_frame_cb(info) ||
-			purple_plugin_info_get_pref_request_cb(info));
+	ret = (priv && priv->pref_frame_cb);
 
 	return ret;
 }
@@ -350,12 +340,6 @@ remove_confwin(G_GNUC_UNUSED GntWidget *
 }
 
 static void
-close_plugin_info_request_cb(PurplePluginInfo *info)
-{
-	g_object_set_data(G_OBJECT(info), "finch-ui-data", NULL);
-}
-
-static void
 configure_plugin_cb(G_GNUC_UNUSED GntWidget *button,
                     G_GNUC_UNUSED gpointer data)
 {
@@ -414,25 +398,6 @@ configure_plugin_cb(G_GNUC_UNUSED GntWid
 		ui_data->type = FINCH_PLUGIN_UI_DATA_TYPE_WINDOW;
 		ui_data->u.window = window;
 	}
-	else if (purple_plugin_info_get_pref_request_cb(info))
-	{
-		PurplePluginPrefRequestCb pref_request_cb = purple_plugin_info_get_pref_request_cb(info);
-		gpointer handle;
-
-		ui_data->type = FINCH_PLUGIN_UI_DATA_TYPE_REQUEST;
-		ui_data->u.request_handle = handle = pref_request_cb(plugin);
-		purple_request_add_close_notify(
-		        handle, (GDestroyNotify)close_plugin_info_request_cb, info);
-	}
-	else if (purple_plugin_info_get_pref_frame_cb(info))
-	{
-		PurplePluginPrefFrameCb pref_frame_cb = purple_plugin_info_get_pref_frame_cb(info);
-		GntWidget *win = process_pref_frame(pref_frame_cb(plugin));
-		g_signal_connect(G_OBJECT(win), "destroy", G_CALLBACK(remove_confwin), plugin);
-
-		ui_data->type = FINCH_PLUGIN_UI_DATA_TYPE_WINDOW;
-		ui_data->u.window = win;
-	}
 	else
 	{
 		purple_notify_info(plugin, _("Error"), _("No configuration "
@@ -530,6 +495,12 @@ void finch_plugins_show_all(void)
 	decide_conf_button(gnt_tree_get_selection_data(GNT_TREE(tree)));
 }
 
+#if 0
+static void
+free_stringlist(GList *list) {
+	g_list_free_full(list, g_free);
+}
+
 static GntWidget*
 process_pref_frame(PurplePluginPrefFrame *frame)
 {
@@ -640,4 +611,4 @@ process_pref_frame(PurplePluginPrefFrame
 	g_signal_connect_swapped(G_OBJECT(ret), "destroy", G_CALLBACK(free_stringlist), stringlist);
 	return ret;
 }
-
+#endif
diff --git a/libpurple/meson.build b/libpurple/meson.build
--- a/libpurple/meson.build
+++ b/libpurple/meson.build
@@ -29,7 +29,6 @@ purple_coresources = [
 	'network.c',
 	'notify.c',
 	'plugins.c',
-	'pluginpref.c',
 	'prefs.c',
 	'proxy.c',
 	'protocols.c',
@@ -149,7 +148,6 @@ purple_coreheaders = [
 	'network.h',
 	'notify.h',
 	'plugins.h',
-	'pluginpref.h',
 	'prefs.h',
 	'proxy.h',
 	'protocols.h',
diff --git a/libpurple/pluginpref.h b/libpurple/pluginpref.h
deleted file mode 100644
--- a/libpurple/pluginpref.h
+++ /dev/null
@@ -1,310 +0,0 @@
-/* purple
- *
- * Purple is the legal property of its developers, whose names are too numerous
- * to list here.  Please refer to the COPYRIGHT file distributed with this
- * source distribution.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02111-1301  USA
- *
- */
-
-#if !defined(PURPLE_GLOBAL_HEADER_INSIDE) && !defined(PURPLE_COMPILATION)
-# error "only <purple.h> may be included directly"
-#endif
-
-#ifndef PURPLE_PLUGINPREF_H
-#define PURPLE_PLUGINPREF_H
-
-typedef struct _PurplePluginPrefFrame		PurplePluginPrefFrame;
-typedef struct _PurplePluginPref		PurplePluginPref;
-
-/**
- * PurpleStringFormatType:
- * @PURPLE_STRING_FORMAT_TYPE_NONE:      The string is plain text.
- * @PURPLE_STRING_FORMAT_TYPE_MULTILINE: The string can have newlines.
- * @PURPLE_STRING_FORMAT_TYPE_HTML:      The string can be in HTML.
- *
- * String format for preferences.
- */
-typedef enum
-{
-	PURPLE_STRING_FORMAT_TYPE_NONE      = 0,
-	PURPLE_STRING_FORMAT_TYPE_MULTILINE = 1 << 0,
-	PURPLE_STRING_FORMAT_TYPE_HTML      = 1 << 1
-} PurpleStringFormatType;
-
-/**
- * PurplePluginPrefType:
- * @PURPLE_PLUGIN_PREF_INFO:          no-value label
- * @PURPLE_PLUGIN_PREF_STRING_FORMAT: The preference has a string value.
- */
-typedef enum {
-	PURPLE_PLUGIN_PREF_NONE,
-	PURPLE_PLUGIN_PREF_CHOICE,
-	PURPLE_PLUGIN_PREF_INFO,
-	PURPLE_PLUGIN_PREF_STRING_FORMAT
-} PurplePluginPrefType;
-
-#include <glib.h>
-#include "prefs.h"
-
-G_BEGIN_DECLS
-
-/**************************************************************************/
-/* Plugin Preference API                                                  */
-/**************************************************************************/
-
-/**
- * purple_plugin_pref_frame_new:
- *
- * Create a new plugin preference frame
- *
- * Returns: (transfer full): a new PurplePluginPrefFrame
- */
-PurplePluginPrefFrame *purple_plugin_pref_frame_new(void);
-
-/**
- * purple_plugin_pref_frame_destroy:
- * @frame: The plugin frame to destroy
- *
- * Destroy a plugin preference frame
- */
-void purple_plugin_pref_frame_destroy(PurplePluginPrefFrame *frame);
-
-/**
- * purple_plugin_pref_frame_add:
- * @frame: The plugin frame to add the preference to
- * @pref:  The preference to add to the frame
- *
- * Adds a plugin preference to a plugin preference frame
- */
-void purple_plugin_pref_frame_add(PurplePluginPrefFrame *frame, PurplePluginPref *pref);
-
-/**
- * purple_plugin_pref_frame_get_prefs:
- * @frame: The plugin frame to get the plugin preferences from
- *
- * Get the plugin preferences from a plugin preference frame
- *
- * Returns: (element-type PurplePluginPref) (transfer none): a list of plugin preferences
- */
-GList *purple_plugin_pref_frame_get_prefs(PurplePluginPrefFrame *frame);
-
-/**
- * purple_plugin_pref_new:
- *
- * Create a new plugin preference
- *
- * Returns: (transfer full): a new PurplePluginPref
- */
-PurplePluginPref *purple_plugin_pref_new(void);
-
-/**
- * purple_plugin_pref_new_with_name:
- * @name: The name of the pref
- *
- * Create a new plugin preference with name
- *
- * Returns: (transfer full): a new PurplePluginPref
- */
-PurplePluginPref *purple_plugin_pref_new_with_name(const char *name);
-
-/**
- * purple_plugin_pref_new_with_label:
- * @label: The label to be displayed
- *
- * Create a new plugin preference with label
- *
- * Returns: (transfer full): a new PurplePluginPref
- */
-PurplePluginPref *purple_plugin_pref_new_with_label(const char *label);
-
-/**
- * purple_plugin_pref_new_with_name_and_label:
- * @name:  The name of the pref
- * @label: The label to be displayed
- *
- * Create a new plugin preference with name and label
- *
- * Returns: (transfer full): a new PurplePluginPref
- */
-PurplePluginPref *purple_plugin_pref_new_with_name_and_label(const char *name, const char *label);
-
-/**
- * purple_plugin_pref_destroy:
- * @pref: The preference to destroy
- *
- * Destroy a plugin preference
- */
-void purple_plugin_pref_destroy(PurplePluginPref *pref);
-
-/**
- * purple_plugin_pref_set_name:
- * @pref: The plugin pref
- * @name: The name of the pref
- *
- * Set a plugin pref name
- */
-void purple_plugin_pref_set_name(PurplePluginPref *pref, const char *name);
-
-/**
- * purple_plugin_pref_get_name:
- * @pref: The plugin pref
- *
- * Get a plugin pref name
- *
- * Returns: The name of the pref
- */
-const char *purple_plugin_pref_get_name(PurplePluginPref *pref);
-
-/**
- * purple_plugin_pref_set_label:
- * @pref:  The plugin pref
- * @label: The label for the plugin pref
- *
- * Set a plugin pref label
- */
-void purple_plugin_pref_set_label(PurplePluginPref *pref, const char *label);
-
-/**
- * purple_plugin_pref_get_label:
- * @pref: The plugin pref
- *
- * Get a plugin pref label
- *
- * Returns: The label for the plugin pref
- */
-const char *purple_plugin_pref_get_label(PurplePluginPref *pref);
-
-/**
- * purple_plugin_pref_set_bounds:
- * @pref: The plugin pref
- * @min:  The min value
- * @max:  The max value
- *
- * Set the bounds for an integer pref
- */
-void purple_plugin_pref_set_bounds(PurplePluginPref *pref, int min, int max);
-
-/**
- * purple_plugin_pref_get_bounds:
- * @pref: The plugin pref
- * @min:  The min value
- * @max:  The max value
- *
- * Get the bounds for an integer pref
- */
-void purple_plugin_pref_get_bounds(PurplePluginPref *pref, int *min, int *max);
-
-/**
- * purple_plugin_pref_set_pref_type:
- * @pref: The plugin pref
- * @type: The type
- *
- * Set the type of a plugin pref
- */
-void purple_plugin_pref_set_pref_type(PurplePluginPref *pref, PurplePluginPrefType type);
-
-/**
- * purple_plugin_pref_get_pref_type:
- * @pref: The plugin pref
- *
- * Get the type of a plugin pref
- *
- * Returns: The type
- */
-PurplePluginPrefType purple_plugin_pref_get_pref_type(PurplePluginPref *pref);
-
-/**
- * purple_plugin_pref_add_choice:
- * @pref:  The plugin pref
- * @label: The label for the choice
- * @choice:  A gpointer of the choice
- *
- * Set the choices for a choices plugin pref
- */
-void purple_plugin_pref_add_choice(PurplePluginPref *pref, const char *label, gpointer choice);
-
-/**
- * purple_plugin_pref_get_choices:
- * @pref: The plugin pref
- *
- * Get the choices for a choices plugin pref
- *
- * Returns: (element-type PurpleKeyValuePair) (transfer none): GList of the choices
- */
-GList *purple_plugin_pref_get_choices(PurplePluginPref *pref);
-
-/**
- * purple_plugin_pref_set_max_length:
- * @pref:       The plugin pref
- * @max_length: The max length of the string
- *
- * Set the max length for a string plugin pref
- */
-void purple_plugin_pref_set_max_length(PurplePluginPref *pref, unsigned int max_length);
-
-/**
- * purple_plugin_pref_get_max_length:
- * @pref: The plugin pref
- *
- * Get the max length for a string plugin pref
- *
- * Returns: the max length
- */
-unsigned int purple_plugin_pref_get_max_length(PurplePluginPref *pref);
-
-/**
- * purple_plugin_pref_set_masked:
- * @pref: The plugin pref
- * @mask: The value to set
- *
- * Sets the masking of a string plugin pref
- */
-void purple_plugin_pref_set_masked(PurplePluginPref *pref, gboolean mask);
-
-/**
- * purple_plugin_pref_get_masked:
- * @pref: The plugin pref
- *
- * Gets the masking of a string plugin pref
- *
- * Returns: The masking
- */
-gboolean purple_plugin_pref_get_masked(PurplePluginPref *pref);
-
-/**
- * purple_plugin_pref_set_format_type:
- * @pref:	 The plugin pref
- * @format: The format of the string
- *
- * Sets the format type for a formattable-string plugin pref. You need to set the
- * pref type to PURPLE_PLUGIN_PREF_STRING_FORMAT first before setting the format.
- */
-void purple_plugin_pref_set_format_type(PurplePluginPref *pref, PurpleStringFormatType format);
-
-/**
- * purple_plugin_pref_get_format_type:
- * @pref: The plugin pref
- *
- * Gets the format type of the formattable-string plugin pref.
- *
- * Returns: The format of the pref
- */
-PurpleStringFormatType purple_plugin_pref_get_format_type(PurplePluginPref *pref);
-
-G_END_DECLS
-
-#endif /* PURPLE_PLUGINPREF_H */
diff --git a/libpurple/pluginpref.c b/libpurple/pluginpref.c
deleted file mode 100644
--- a/libpurple/pluginpref.c
+++ /dev/null
@@ -1,317 +0,0 @@
-/**
- * purple
- *
- * Purple is the legal property of its developers, whose names are too numerous
- * to list here.  Please refer to the COPYRIGHT file distributed with this
- * source distribution.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02111-1301  USA
- */
-#include <glib.h>
-
-#include "debug.h"
-#include "pluginpref.h"
-#include "prefs.h"
-#include "purplekeyvaluepair.h"
-
-struct _PurplePluginPrefFrame
-{
-	GList *prefs;
-};
-
-struct _PurplePluginPref
-{
-	char *name;
-	char *label;
-
-	PurplePluginPrefType type;
-
-	int min;
-	int max;
-	GList *choices;
-	unsigned int max_length;
-	gboolean masked;
-	PurpleStringFormatType format;
-};
-
-PurplePluginPrefFrame *
-purple_plugin_pref_frame_new(void)
-{
-	PurplePluginPrefFrame *frame;
-
-	frame = g_new0(PurplePluginPrefFrame, 1);
-
-	return frame;
-}
-
-void
-purple_plugin_pref_frame_destroy(PurplePluginPrefFrame *frame)
-{
-	g_return_if_fail(frame != NULL);
-
-	g_list_free_full(frame->prefs, (GDestroyNotify)purple_plugin_pref_destroy);
-	g_free(frame);
-}
-
-void
-purple_plugin_pref_frame_add(PurplePluginPrefFrame *frame, PurplePluginPref *pref)
-{
-	g_return_if_fail(frame != NULL);
-	g_return_if_fail(pref  != NULL);
-
-	frame->prefs = g_list_append(frame->prefs, pref);
-}
-
-GList *
-purple_plugin_pref_frame_get_prefs(PurplePluginPrefFrame *frame)
-{
-	g_return_val_if_fail(frame        != NULL, NULL);
-	g_return_val_if_fail(frame->prefs != NULL, NULL);
-
-	return frame->prefs;
-}
-
-PurplePluginPref *
-purple_plugin_pref_new(void)
-{
-	PurplePluginPref *pref;
-
-	pref = g_new0(PurplePluginPref, 1);
-
-	return pref;
-}
-
-PurplePluginPref *
-purple_plugin_pref_new_with_name(const char *name)
-{
-	PurplePluginPref *pref;
-
-	g_return_val_if_fail(name != NULL, NULL);
-
-	pref = g_new0(PurplePluginPref, 1);
-	pref->name = g_strdup(name);
-
-	return pref;
-}
-
-PurplePluginPref *
-purple_plugin_pref_new_with_label(const char *label)
-{
-	PurplePluginPref *pref;
-
-	g_return_val_if_fail(label != NULL, NULL);
-
-	pref = g_new0(PurplePluginPref, 1);
-	pref->label = g_strdup(label);
-
-	return pref;
-}
-
-PurplePluginPref *
-purple_plugin_pref_new_with_name_and_label(const char *name, const char *label)
-{
-	PurplePluginPref *pref;
-
-	g_return_val_if_fail(name  != NULL, NULL);
-	g_return_val_if_fail(label != NULL, NULL);
-
-	pref = g_new0(PurplePluginPref, 1);
-	pref->name = g_strdup(name);
-	pref->label = g_strdup(label);
-
-	return pref;
-}
-
-void
-purple_plugin_pref_destroy(PurplePluginPref *pref)
-{
-	g_return_if_fail(pref != NULL);
-
-	g_free(pref->name);
-	g_free(pref->label);
-	g_list_free_full(pref->choices, (GDestroyNotify)purple_key_value_pair_free);
-	g_free(pref);
-}
-
-void
-purple_plugin_pref_set_name(PurplePluginPref *pref, const char *name)
-{
-	g_return_if_fail(pref != NULL);
-	g_return_if_fail(name != NULL);
-
-	g_free(pref->name);
-	pref->name = g_strdup(name);
-}
-
-const char *
-purple_plugin_pref_get_name(PurplePluginPref *pref)
-{
-	g_return_val_if_fail(pref != NULL, NULL);
-
-	return pref->name;
-}
-
-void
-purple_plugin_pref_set_label(PurplePluginPref *pref, const char *label)
-{
-	g_return_if_fail(pref  != NULL);
-	g_return_if_fail(label != NULL);
-
-	g_free(pref->label);
-	pref->label = g_strdup(label);
-}
-
-const char *
-purple_plugin_pref_get_label(PurplePluginPref *pref)
-{
-	g_return_val_if_fail(pref != NULL, NULL);
-
-	return pref->label;
-}
-
-void
-purple_plugin_pref_set_bounds(PurplePluginPref *pref, int min, int max)
-{
-	int tmp;
-
-	g_return_if_fail(pref       != NULL);
-	g_return_if_fail(pref->name != NULL);
-
-	if (purple_prefs_get_pref_type(pref->name) != PURPLE_PREF_INT)
-	{
-		purple_debug_warning("pluginpref",
-				"purple_plugin_pref_set_bounds: %s is not an integer pref\n",
-				pref->name);
-		return;
-	}
-
-	if (min > max)
-	{
-		tmp = min;
-		min = max;
-		max = tmp;
-	}
-
-	pref->min = min;
-	pref->max = max;
-}
-
-void purple_plugin_pref_get_bounds(PurplePluginPref *pref, int *min, int *max)
-{
-	g_return_if_fail(pref       != NULL);
-	g_return_if_fail(pref->name != NULL);
-
-	if (purple_prefs_get_pref_type(pref->name) != PURPLE_PREF_INT)
-	{
-		purple_debug_warning("pluginpref",
-				"purple_plugin_pref_get_bounds: %s is not an integer pref\n",
-				pref->name);
-		return;
-	}
-
-	*min = pref->min;
-	*max = pref->max;
-}
-
-void
-purple_plugin_pref_set_pref_type(PurplePluginPref *pref, PurplePluginPrefType type)
-{
-	g_return_if_fail(pref != NULL);
-
-	pref->type = type;
-}
-
-PurplePluginPrefType
-purple_plugin_pref_get_pref_type(PurplePluginPref *pref)
-{
-	g_return_val_if_fail(pref != NULL, PURPLE_PLUGIN_PREF_NONE);
-
-	return pref->type;
-}
-
-void
-purple_plugin_pref_add_choice(PurplePluginPref *pref, const char *label, gpointer choice)
-{
-	PurpleKeyValuePair *pref_choice;
-
-	g_return_if_fail(pref  != NULL);
-	g_return_if_fail(label != NULL);
-	g_return_if_fail(choice || purple_prefs_get_pref_type(pref->name) == PURPLE_PREF_INT);
-
-	pref_choice = purple_key_value_pair_new(label, choice);
-
-	pref->choices = g_list_append(pref->choices, pref_choice);
-}
-
-GList *
-purple_plugin_pref_get_choices(PurplePluginPref *pref)
-{
-	g_return_val_if_fail(pref != NULL, NULL);
-
-	return pref->choices;
-}
-
-void
-purple_plugin_pref_set_max_length(PurplePluginPref *pref, unsigned int max_length)
-{
-	g_return_if_fail(pref != NULL);
-
-	pref->max_length = max_length;
-}
-
-unsigned int
-purple_plugin_pref_get_max_length(PurplePluginPref *pref)
-{
-	g_return_val_if_fail(pref != NULL, 0);
-
-	return pref->max_length;
-}
-
-void
-purple_plugin_pref_set_masked(PurplePluginPref *pref, gboolean masked)
-{
-	g_return_if_fail(pref != NULL);
-
-	pref->masked = masked;
-}
-
-gboolean
-purple_plugin_pref_get_masked(PurplePluginPref *pref)
-{
-	g_return_val_if_fail(pref != NULL, FALSE);
-
-	return pref->masked;
-}
-
-void
-purple_plugin_pref_set_format_type(PurplePluginPref *pref, PurpleStringFormatType format)
-{
-	g_return_if_fail(pref != NULL);
-	g_return_if_fail(pref->type == PURPLE_PLUGIN_PREF_STRING_FORMAT);
-
-	pref->format = format;
-}
-
-PurpleStringFormatType
-purple_plugin_pref_get_format_type(PurplePluginPref *pref)
-{
-	g_return_val_if_fail(pref != NULL, 0);
-
-	if (pref->type != PURPLE_PLUGIN_PREF_STRING_FORMAT)
-		return PURPLE_STRING_FORMAT_TYPE_NONE;
-
-	return pref->format;
-}
-
diff --git a/libpurple/purpleplugininfo.h b/libpurple/purpleplugininfo.h
--- a/libpurple/purpleplugininfo.h
+++ b/libpurple/purpleplugininfo.h
@@ -30,8 +30,6 @@
 #include <gplugin.h>
 #include <gplugin-native.h>
 
-#include "pluginpref.h"
-
 #define PURPLE_TYPE_PLUGIN_INFO (purple_plugin_info_get_type())
 
 /**
@@ -63,25 +61,6 @@ struct _PurplePluginInfoClass {
 };
 
 /**
- * PurplePluginPrefFrameCb:
- * @plugin: the plugin associated with this callback.
- *
- * Returns the preferences frame for the plugin.
- *
- * Returns: Preference frame.
- */
-typedef PurplePluginPrefFrame *(*PurplePluginPrefFrameCb)(PurplePlugin *plugin);
-
-/**
- * PurplePrefRequestCb:
- *
- * Returns the preferences request handle for a plugin.
- *
- * Returns: Preferences request handle.
- */
-typedef gpointer (*PurplePluginPrefRequestCb)(PurplePlugin *plugin);
-
-/**
  * PurplePluginInfoFlags:
  * @PURPLE_PLUGIN_INFO_FLAGS_INTERNAL:  Plugin is not shown in UI lists
  * @PURPLE_PLUGIN_INFO_FLAGS_AUTO_LOAD: Auto-load the plugin
@@ -208,14 +187,6 @@ G_BEGIN_DECLS
  *     <entry>(<type>const gchar * const *</type>) A %NULL-terminated list of
  *       plugin IDs required by the plugin.</entry>
  *   </row>
- *   <row><entry><literal>"pref-frame-cb"</literal></entry>
- *     <entry>(#PurplePluginPrefFrameCb) Callback that returns a
- *       preferences frame for the plugin.</entry>
- *   </row>
- *   <row><entry><literal>"pref-request-cb"</literal></entry>
- *     <entry>(#PurplePluginPrefRequestCb) Callback that returns a
- *       preferences request handle for the plugin.</entry>
- *   </row>
  *   <row><entry><literal>"flags"</literal></entry>
  *     <entry>(#PurplePluginInfoFlags) The flags for a plugin.</entry>
  *   </row>
@@ -232,32 +203,6 @@ G_BEGIN_DECLS
 GPluginPluginInfo *purple_plugin_info_new(const char *first_property, ...) G_GNUC_NULL_TERMINATED;
 
 /**
- * purple_plugin_info_get_pref_frame_cb:
- * @info: The plugin info to get the callback from.
- *
- * Returns the callback that retrieves the preferences frame for a plugin, set
- * via the "pref-frame-cb" property of the plugin info.
- *
- * Returns: The callback that returns the preferences frame.
- *
- * Since: 3.0.0
- */
-PurplePluginPrefFrameCb purple_plugin_info_get_pref_frame_cb(PurplePluginInfo *info);
-
-/**
- * purple_plugin_info_get_pref_request_cb:
- * @info: The plugin info to get the callback from.
- *
- * Returns the callback that retrieves the preferences request handle for a
- * plugin, set via the "pref-request-cb" property of the plugin info.
- *
- * Returns: (transfer none): The callback that returns the preferences request handle.
- *
- * Since: 3.0.0
- */
-PurplePluginPrefRequestCb purple_plugin_info_get_pref_request_cb(PurplePluginInfo *info);
-
-/**
  * purple_plugin_info_get_flags:
  * @info: The plugin's info instance.
  *
diff --git a/libpurple/purpleplugininfo.c b/libpurple/purpleplugininfo.c
--- a/libpurple/purpleplugininfo.c
+++ b/libpurple/purpleplugininfo.c
@@ -29,12 +29,6 @@ typedef struct {
 
 	PurplePluginInfoFlags flags; /* Flags for the plugin */
 
-	/* Callback that returns a preferences frame for a plugin */
-	PurplePluginPrefFrameCb pref_frame_cb;
-
-	/* Callback that returns a preferences request handle for a plugin */
-	PurplePluginPrefRequestCb pref_request_cb;
-
 	/* TRUE if a plugin has been unloaded at least once. Auto-load
 	 * plugins that have been unloaded once will not be auto-loaded again. */
 	gboolean unloaded;
@@ -45,8 +39,6 @@ typedef struct {
 
 enum {
 	PROP_0,
-	PROP_PREF_FRAME_CB,
-	PROP_PREF_REQUEST_CB,
 	PROP_FLAGS,
 	PROP_ACTION_GROUP,
 	PROP_ACTION_MENU,
@@ -107,12 +99,6 @@ purple_plugin_info_set_property(GObject 
 	priv = purple_plugin_info_get_instance_private(info);
 
 	switch (param_id) {
-		case PROP_PREF_FRAME_CB:
-			priv->pref_frame_cb = g_value_get_pointer(value);
-			break;
-		case PROP_PREF_REQUEST_CB:
-			priv->pref_request_cb = g_value_get_pointer(value);
-			break;
 		case PROP_FLAGS:
 			priv->flags = g_value_get_flags(value);
 			break;
@@ -137,14 +123,6 @@ purple_plugin_info_get_property(GObject 
 	PurplePluginInfo *info = PURPLE_PLUGIN_INFO(obj);
 
 	switch (param_id) {
-		case PROP_PREF_FRAME_CB:
-			g_value_set_pointer(value,
-					purple_plugin_info_get_pref_frame_cb(info));
-			break;
-		case PROP_PREF_REQUEST_CB:
-			g_value_set_pointer(value,
-					purple_plugin_info_get_pref_request_cb(info));
-			break;
 		case PROP_FLAGS:
 			g_value_set_flags(value, purple_plugin_info_get_flags(info));
 			break;
@@ -218,16 +196,6 @@ purple_plugin_info_class_init(PurplePlug
 	obj_class->get_property = purple_plugin_info_get_property;
 	obj_class->set_property = purple_plugin_info_set_property;
 
-	properties[PROP_PREF_FRAME_CB] = g_param_spec_pointer(
-		"pref-frame-cb", "Preferences frame callback",
-		"The callback that returns the preferences frame",
-		G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | G_PARAM_STATIC_STRINGS);
-
-	properties[PROP_PREF_REQUEST_CB] = g_param_spec_pointer(
-		"pref-request-cb", "Preferences request callback",
-		"Callback that returns preferences request handle",
-		G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | G_PARAM_STATIC_STRINGS);
-
 	properties[PROP_FLAGS] = g_param_spec_flags(
 		"flags", "Plugin flags",
 		"The flags for the plugin",
@@ -285,28 +253,6 @@ purple_plugin_info_new(const char *first
 	return GPLUGIN_PLUGIN_INFO(info);
 }
 
-PurplePluginPrefFrameCb
-purple_plugin_info_get_pref_frame_cb(PurplePluginInfo *info) {
-	PurplePluginInfoPrivate *priv = NULL;
-
-	g_return_val_if_fail(PURPLE_IS_PLUGIN_INFO(info), NULL);
-
-	priv = purple_plugin_info_get_instance_private(info);
-
-	return priv->pref_frame_cb;
-}
-
-PurplePluginPrefRequestCb
-purple_plugin_info_get_pref_request_cb(PurplePluginInfo *info) {
-	PurplePluginInfoPrivate *priv = NULL;
-
-	g_return_val_if_fail(PURPLE_IS_PLUGIN_INFO(info), NULL);
-
-	priv = purple_plugin_info_get_instance_private(info);
-
-	return priv->pref_request_cb;
-}
-
 PurplePluginInfoFlags
 purple_plugin_info_get_flags(PurplePluginInfo *info) {
 	PurplePluginInfoPrivate *priv = NULL;
diff --git a/po/POTFILES.in b/po/POTFILES.in
--- a/po/POTFILES.in
+++ b/po/POTFILES.in
@@ -50,7 +50,6 @@ libpurple/media/enum-types.c
 libpurple/mediamanager.c
 libpurple/network.c
 libpurple/notify.c
-libpurple/pluginpref.c
 libpurple/plugins/autoaccept/autoaccept.c
 libpurple/plugins/buddynote/buddynote.c
 libpurple/plugins.c
