libpurple/plugins/perl/common/Prefs.xs

Wed, 13 May 2009 20:29:03 +0000

author
Marcus Lundblad <malu@pidgin.im>
date
Wed, 13 May 2009 20:29:03 +0000
changeset 27110
05ca719b901b
parent 25122
56e73606e2b2
child 35148
8dcd0006002f
permissions
-rw-r--r--

Support custom smileys in MUCs (when all participants support BoB and a maximum
of 10 participants are in the chat).
Always announce support for BoB, since disable custom smileys will still turn
off fetching them, and BoB can be used for other purposes further on.

#include "module.h"
#include "../perl-handlers.h"

MODULE = Purple::Prefs  PACKAGE = Purple::Prefs  PREFIX = purple_prefs_
PROTOTYPES: ENABLE

BOOT:
{
	HV *stash = gv_stashpv("Purple::Pref::Type", 1);

	static const constiv *civ, const_iv[] = {
#define const_iv(name) {#name, (IV)PURPLE_PREF_##name}
		const_iv(NONE),
		const_iv(BOOLEAN),
		const_iv(INT),
		const_iv(STRING),
		const_iv(STRING_LIST),
		const_iv(PATH),
		const_iv(PATH_LIST),
	};

	for (civ = const_iv + sizeof(const_iv) / sizeof(const_iv[0]); civ-- > const_iv; )
		newCONSTSUB(stash, (char *)civ->name, newSViv(civ->iv));
}

void
purple_prefs_add_bool(name, value)
	const char *name
	gboolean value

void
purple_prefs_add_int(name, value)
	const char *name
	int value

void
purple_prefs_add_none(name)
	const char *name

void
purple_prefs_add_string(name, value)
	const char *name
	const char *value

void
purple_prefs_add_string_list(name, value)
	const char *name
	SV *value
PREINIT:
	GList *t_GL;
	int i, t_len;
PPCODE:
	t_GL = NULL;
	t_len = av_len((AV *)SvRV(value));

	for (i = 0; i <= t_len; i++)
		t_GL = g_list_append(t_GL, SvPVutf8_nolen(*av_fetch((AV *)SvRV(value), i, 0)));

	purple_prefs_add_string_list(name, t_GL);
	g_list_free(t_GL);

void
purple_prefs_add_path(name, value)
	const char *name
	const char *value

void
purple_prefs_add_path_list(name, value)
	const char *name
	SV *value
PREINIT:
	GList *t_GL;
	int i, t_len;
PPCODE:
	t_GL = NULL;
	t_len = av_len((AV *)SvRV(value));

	for (i = 0; i <= t_len; i++)
		t_GL = g_list_append(t_GL, SvPVutf8_nolen(*av_fetch((AV *)SvRV(value), i, 0)));

	purple_prefs_add_path_list(name, t_GL);
	g_list_free(t_GL);

void
purple_prefs_destroy()

guint
purple_prefs_connect_callback(plugin, name, callback, data = 0);
	Purple::Plugin plugin
	const char *name
	SV *callback
	SV *data
CODE:
	RETVAL = purple_perl_prefs_connect_callback(plugin, name, callback, data);
OUTPUT:
	RETVAL

void
purple_prefs_disconnect_by_handle(plugin)
	Purple::Plugin plugin
CODE:
	purple_perl_pref_cb_clear_for_plugin(plugin);

void
purple_prefs_disconnect_callback(callback_id)
	guint callback_id
CODE:
	purple_perl_prefs_disconnect_callback(callback_id);

gboolean
purple_prefs_exists(name)
	const char *name

const char *
purple_prefs_get_path(name)
	const char *name

void
purple_prefs_get_path_list(name)
	const char *name
PREINIT:
	GList *l;
PPCODE:
	for (l = purple_prefs_get_path_list(name); l != NULL; l = g_list_delete_link(l, l)) {
		XPUSHs(sv_2mortal(newSVpv(l->data, 0)));
		g_free(l->data);
	}

gboolean
purple_prefs_get_bool(name)
	const char *name

Purple::Handle
purple_prefs_get_handle()

int
purple_prefs_get_int(name)
	const char *name

const char *
purple_prefs_get_string(name)
	const char *name

void
purple_prefs_get_string_list(name)
	const char *name
PREINIT:
	GList *l;
PPCODE:
	for (l = purple_prefs_get_string_list(name); l != NULL; l = g_list_delete_link(l, l)) {
		XPUSHs(sv_2mortal(newSVpv(l->data, 0)));
		g_free(l->data);
	}

Purple::PrefType
purple_prefs_get_type(name)
	const char *name

gboolean
purple_prefs_load()

void
purple_prefs_remove(name)
	const char *name

void
purple_prefs_rename(oldname, newname)
	const char *oldname
	const char *newname

void
purple_prefs_rename_boolean_toggle(oldname, newname)
	const char *oldname
	const char *newname

void
purple_prefs_set_bool(name, value)
	const char *name
	gboolean value

void
purple_prefs_set_generic(name, value)
	const char *name
	gpointer value

void
purple_prefs_set_int(name, value)
	const char *name
	int value

void
purple_prefs_set_string(name, value)
	const char *name
	const char *value

void
purple_prefs_set_string_list(name, value)
	const char *name
	SV *value
PREINIT:
	GList *t_GL;
	int i, t_len;
PPCODE:
	t_GL = NULL;
	t_len = av_len((AV *)SvRV(value));

	for (i = 0; i <= t_len; i++)
		t_GL = g_list_append(t_GL, SvPVutf8_nolen(*av_fetch((AV *)SvRV(value), i, 0)));

	purple_prefs_set_string_list(name, t_GL);
	g_list_free(t_GL);

void
purple_prefs_set_path(name, value)
	const char *name
	const char *value

void
purple_prefs_set_path_list(name, value)
	const char *name
	SV *value
PREINIT:
	GList *t_GL;
	int i, t_len;
PPCODE:
	t_GL = NULL;
	t_len = av_len((AV *)SvRV(value));

	for (i = 0; i <= t_len; i++)
		t_GL = g_list_append(t_GL, SvPVutf8_nolen(*av_fetch((AV *)SvRV(value), i, 0)));

	purple_prefs_set_path_list(name, t_GL);
	g_list_free(t_GL);


void
purple_prefs_trigger_callback(name)
	const char *name

void
purple_prefs_get_children_names(name)
	const char *name
PREINIT:
	GList *l;
PPCODE:
	for (l = purple_prefs_get_children_names(name); l != NULL; l = g_list_delete_link(l, l)) {
		XPUSHs(sv_2mortal(newSVpv(l->data, 0)));
		g_free(l->data);
	}

void
purple_prefs_update_old()

mercurial