changeset 14416:eeca8be382a5

[gaim-migrate @ 17124] This is a Gaim::Gtk perl module for use by gaim plugins to get access to the gtkgaim interface functions. It isn't complete because anything dealing with Gtk widgets themselves doesn't work yet (I need to figure out the best way to do that). To use this a perl plugin just needs to include 'use Gaim::Gtk;' either on top of 'use Gaim;' or instead of it. I'm not done with this yet. At the moment you have to 'use Gaim;' or 'use Gaim::Gtk;' which loads all the parts, I'm planning to let you actually say 'use Gaim::Gtk::Debug;' to just get the gtkdebug.h functions. Though 'use Gaim' would work the same way as always. committer: Tailor Script <tailor@pidgin.im>
author Etan Reisner <pidgin@unreliablesource.net>
date Sat, 02 Sep 2006 05:31:10 +0000
parents 76d345643ba4
children 64e28f46c695
files configure.ac gtk/plugins/Makefile.am gtk/plugins/perl/Makefile.am gtk/plugins/perl/common/Gtk.pm gtk/plugins/perl/common/Gtk.xs gtk/plugins/perl/common/GtkAccount.xs gtk/plugins/perl/common/GtkBlist.xs gtk/plugins/perl/common/GtkConn.xs gtk/plugins/perl/common/GtkConv.xs gtk/plugins/perl/common/GtkConvWin.xs gtk/plugins/perl/common/GtkDebug.xs gtk/plugins/perl/common/GtkDialogs.xs gtk/plugins/perl/common/GtkFt.xs gtk/plugins/perl/common/GtkIMHtml.xs gtk/plugins/perl/common/GtkIMHtmlToolbar.xs gtk/plugins/perl/common/GtkLog.xs gtk/plugins/perl/common/GtkMenuTray.xs gtk/plugins/perl/common/GtkPlugin.xs gtk/plugins/perl/common/GtkPluginPref.xs gtk/plugins/perl/common/GtkPounce.xs gtk/plugins/perl/common/GtkPrefs.xs gtk/plugins/perl/common/GtkPrivacy.xs gtk/plugins/perl/common/GtkRoomlist.xs gtk/plugins/perl/common/GtkSavedStatuses.xs gtk/plugins/perl/common/GtkSession.xs gtk/plugins/perl/common/GtkSound.xs gtk/plugins/perl/common/GtkStatusBox.xs gtk/plugins/perl/common/GtkThemes.xs gtk/plugins/perl/common/GtkUtils.xs gtk/plugins/perl/common/MANIFEST gtk/plugins/perl/common/Makefile.PL.in gtk/plugins/perl/common/gtkmodule.h gtk/plugins/perl/common/typemap
diffstat 33 files changed, 1806 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/configure.ac	Sat Sep 02 04:40:27 2006 +0000
+++ b/configure.ac	Sat Sep 02 05:31:10 2006 +0000
@@ -1822,11 +1822,13 @@
 		   gtk/plugins/Makefile
 		   gtk/plugins/cap/Makefile
 		   gtk/plugins/docklet/Makefile
+		   gtk/plugins/gestures/Makefile
 		   gtk/plugins/gevolution/Makefile
-		   gtk/plugins/gestures/Makefile
 		   gtk/plugins/musicmessaging/Makefile
+		   gtk/plugins/perl/Makefile
+		   gtk/plugins/perl/common/Makefile.PL
+		   gtk/plugins/ticker/Makefile
 		   gtk/sounds/Makefile
-		   gtk/plugins/ticker/Makefile
 		   libgaim/plugins/Makefile
 		   libgaim/plugins/mono/Makefile
 		   libgaim/plugins/mono/api/Makefile
--- a/gtk/plugins/Makefile.am	Sat Sep 02 04:40:27 2006 +0000
+++ b/gtk/plugins/Makefile.am	Sat Sep 02 05:31:10 2006 +0000
@@ -1,4 +1,4 @@
-DIST_SUBDIRS = cap docklet gevolution gestures musicmessaging ticker
+DIST_SUBDIRS = cap docklet gestures gevolution musicmessaging perl ticker
 
 if BUILD_GEVOLUTION
 GEVOLUTION_DIR = gevolution
@@ -12,12 +12,17 @@
 CAP_DIR = cap
 endif
 
+if USE_PERL
+PERL_DIR = perl
+endif
+
 SUBDIRS = \
 	$(CAP_DIR) \
 	docklet \
+	gestures \
 	$(GEVOLUTION_DIR) \
-	gestures \
 	$(MUSICMESSAGING_DIR) \
+	$(PERL_DIR) \
 	ticker
 
 plugindir = $(libdir)/gaim
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gtk/plugins/perl/Makefile.am	Sat Sep 02 05:31:10 2006 +0000
@@ -0,0 +1,55 @@
+SUBDIRS = . common
+
+common_sources = \
+	common/Gtk.pm \
+	common/Gtk.xs \
+	common/GtkAccount.xs \
+	common/GtkBlist.xs \
+	common/GtkConn.xs \
+	common/GtkConv.xs \
+	common/GtkConvWin.xs \
+	common/GtkDebug.xs \
+	common/GtkDialogs.xs \
+	common/GtkFt.xs \
+	common/GtkIMHtml.xs \
+	common/GtkIMHtmlToolbar.xs \
+	common/GtkLog.xs \
+	common/GtkMenuTray.xs \
+	common/GtkPlugin.xs \
+	common/GtkPluginPref.xs \
+	common/GtkPounce.xs \
+	common/GtkPrefs.xs \
+	common/GtkPrivacy.xs \
+	common/GtkRoomlist.xs \
+	common/GtkSavedStatuses.xs \
+	common/GtkSession.xs \
+	common/GtkSound.xs \
+	common/GtkStatusBox.xs \
+	common/GtkThemes.xs \
+	common/GtkUtils.xs \
+	common/gtkmodule.h \
+	common/typemap
+
+EXTRA_DIST = \
+	Makefile.mingw \
+	common/Makefile.mingw \
+	common/Makefile.Pl.in \
+	$(common_sources)
+
+all-local: common/Makefile
+
+common/Makefile: common/Makefile.PL
+	@cd common && $(perlpath) Makefile.PL $(PERL_MM_PARAMS)
+
+common/Makefile.PL: common/Makefile.PL.in $(top_builddir)/config.status
+	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am_depfiles_maybe)
+
+AM_CPPFLAGS = \
+	-DVERSION=\"$(VERSION)\" \
+	-I$(top_srcdir) \
+	-I$(top_srcdir)/libgaim \
+	-I$(top_srcdir)/gtk \
+	$(DEBUG_CFLAGS) \
+	$(GTK_CFLAGS) \
+	$(PLUGIN_CFLAGS) \
+	$(PERL_CFLAGS)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gtk/plugins/perl/common/Gtk.pm	Sat Sep 02 05:31:10 2006 +0000
@@ -0,0 +1,61 @@
+package Gaim::Gtk;
+
+use 5.008;
+use strict;
+use warnings;
+use Carp;
+
+our $VERSION = '0.01';
+
+use Gaim;
+
+require XSLoader;
+XSLoader::load('Gaim::Gtk', $VERSION);
+
+1;
+__END__
+
+=head1 NAME
+
+Gaim::Gtk - Perl extension for the Gaim instant messenger.
+
+=head1 SYNOPSIS
+
+    use Gaim::Gtk;
+
+=head1 ABSTRACT
+
+    This module provides the interface for using perl scripts as plugins in
+    Gaim, with access to the Gaim Gtk interface functions.
+
+=head1 DESCRIPTION
+
+This module provides the interface for using perl scripts as plugins in Gaim,
+with access to the Gaim Gtk interface functions. With this, developers can
+write perl scripts that can be loaded in Gaim as plugins. The script can
+interact with IMs, chats, accoutns, the buddy list, gaim signals, and more.
+
+The API for the perl interface is very similar to that of the Gaim C API,
+which can be viewed at http://gaim.sourceforge.net/api/ or in the header files
+in the Gaim source tree.
+
+=head1 FUNCTIONS
+
+=over
+
+=back
+
+=head1 SEE ALSO
+Gaim C API documentation - http://gaim.sourceforge.net/api/
+
+The Gaim perl module.
+
+Gaim website - http://gaim.sourceforge.net/
+
+=head1 AUTHOR
+
+Etan Reisner, E<lt>deryni@gmail.comE<gt>
+
+=head1 COPYRIGHT AND LICENSE
+
+Copyright 2006 by Etan Reisner
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gtk/plugins/perl/common/Gtk.xs	Sat Sep 02 05:31:10 2006 +0000
@@ -0,0 +1,76 @@
+#include "gtkmodule.h"
+
+/*
+#define GAIM_PERL_BOOT_PROTO(x) \
+	void boot_Gaim__##x(pTHX_ CV *cv);
+
+#define GAIM_PERL_BOOT(x) \
+	gaim_perl_callXS(boot_Gaim__##x, cv, mark)
+
+static void
+gaim_perl_callXS(void (*subaddr)(pTHX_ CV *cv), CV *cv, SV **mark)
+{
+	dSP;
+
+	PUSHMARK(mark);
+	(*subaddr)(aTHX_ cv);
+
+	PUTBACK;
+}
+*/
+
+/* Prototypes for the BOOT section below. */
+GAIM_PERL_BOOT_PROTO(Gtk__Account);
+GAIM_PERL_BOOT_PROTO(Gtk__BuddyList);
+GAIM_PERL_BOOT_PROTO(Gtk__Connection);
+GAIM_PERL_BOOT_PROTO(Gtk__Conversation);
+GAIM_PERL_BOOT_PROTO(Gtk__Conversation__Window);
+GAIM_PERL_BOOT_PROTO(Gtk__Debug);
+GAIM_PERL_BOOT_PROTO(Gtk__Dialogs);
+GAIM_PERL_BOOT_PROTO(Gtk__IMHtml);
+GAIM_PERL_BOOT_PROTO(Gtk__IMHtmlToolbar);
+GAIM_PERL_BOOT_PROTO(Gtk__Log);
+GAIM_PERL_BOOT_PROTO(Gtk__MenuTray);
+GAIM_PERL_BOOT_PROTO(Gtk__Plugin);
+GAIM_PERL_BOOT_PROTO(Gtk__PluginPref);
+GAIM_PERL_BOOT_PROTO(Gtk__Pounce);
+GAIM_PERL_BOOT_PROTO(Gtk__Prefs);
+GAIM_PERL_BOOT_PROTO(Gtk__Privacy);
+GAIM_PERL_BOOT_PROTO(Gtk__Roomlist);
+GAIM_PERL_BOOT_PROTO(Gtk__Status);
+GAIM_PERL_BOOT_PROTO(Gtk__Session);
+GAIM_PERL_BOOT_PROTO(Gtk__Sound);
+GAIM_PERL_BOOT_PROTO(Gtk__StatusBox);
+GAIM_PERL_BOOT_PROTO(Gtk__Themes);
+GAIM_PERL_BOOT_PROTO(Gtk__Utils);
+GAIM_PERL_BOOT_PROTO(Gtk__Xfer);
+
+MODULE = Gaim::Gtk  PACKAGE = Gaim::Gtk PREFIX = gaim_gtk_
+PROTOTYPES: ENABLE
+
+BOOT:
+	GAIM_PERL_BOOT(Gtk__Debug);
+GAIM_PERL_BOOT(Gtk__Account);
+GAIM_PERL_BOOT(Gtk__BuddyList);
+GAIM_PERL_BOOT(Gtk__Connection);
+GAIM_PERL_BOOT(Gtk__Conversation);
+GAIM_PERL_BOOT(Gtk__Conversation__Window);
+GAIM_PERL_BOOT(Gtk__Debug);
+GAIM_PERL_BOOT(Gtk__Dialogs);
+GAIM_PERL_BOOT(Gtk__IMHtml);
+GAIM_PERL_BOOT(Gtk__IMHtmlToolbar);
+GAIM_PERL_BOOT(Gtk__Log);
+GAIM_PERL_BOOT(Gtk__MenuTray);
+GAIM_PERL_BOOT(Gtk__Plugin);
+GAIM_PERL_BOOT(Gtk__PluginPref);
+GAIM_PERL_BOOT(Gtk__Pounce);
+GAIM_PERL_BOOT(Gtk__Prefs);
+GAIM_PERL_BOOT(Gtk__Privacy);
+GAIM_PERL_BOOT(Gtk__Roomlist);
+GAIM_PERL_BOOT(Gtk__Status);
+GAIM_PERL_BOOT(Gtk__Session);
+GAIM_PERL_BOOT(Gtk__Sound);
+GAIM_PERL_BOOT(Gtk__StatusBox);
+GAIM_PERL_BOOT(Gtk__Themes);
+GAIM_PERL_BOOT(Gtk__Utils);
+GAIM_PERL_BOOT(Gtk__Xfer);
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gtk/plugins/perl/common/GtkAccount.xs	Sat Sep 02 05:31:10 2006 +0000
@@ -0,0 +1,24 @@
+#include "gtkmodule.h"
+
+MODULE = Gaim::Gtk::Account  PACKAGE = Gaim::Gtk::Account  PREFIX = gaim_gtk_account_
+PROTOTYPES: ENABLE
+
+void *
+gaim_gtk_account_get_handle()
+
+MODULE = Gaim::Gtk::Account  PACKAGE = Gaim::Gtk::Account::Dialog  PREFIX = gaim_gtk_account_dialog_
+PROTOTYPES: ENABLE
+
+void
+gaim_gtk_account_dialog_show(type, account)
+	Gaim::Gtk::Account::Dialog::Type type
+	Gaim::Account account
+
+MODULE = Gaim::Gtk::Account  PACKAGE = Gaim::Gtk::Account::Window  PREFIX = gaim_gtk_accounts_window_
+PROTOTYPES: ENABLE
+
+void
+gaim_gtk_accounts_window_show()
+
+void
+gaim_gtk_accounts_window_hide()
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gtk/plugins/perl/common/GtkBlist.xs	Sat Sep 02 05:31:10 2006 +0000
@@ -0,0 +1,120 @@
+#include "gtkmodule.h"
+
+/* This can't work at the moment since I don't have a typemap for Gtk::Widget.
+ * I thought about using the one from libgtk2-perl but wasn't sure how to go
+ * about doing that.
+
+void
+gaim_gtk_blist_make_buddy_menu(menu, buddy, sub)
+	Gtk::Widget menu
+	Gaim::Buddy buddy
+	gboolean sub
+*/
+
+/* This can't work at the moment since I don't have a typemap for Gdk::Pixbuf.
+ * I thought about using the one from libgtk2-perl but wasn't sure how to go
+ * about doing that.
+
+GdkPixbuf
+gaim_gtk_blist_get_status_icon(node, size)
+	Gaim::BuddyList::Node node
+	Gaim::Status::IconSize size
+*/
+
+/* This can't work at the moment since I don't have a typemap for Gtk::Widget.
+ * I thought about using the one from libgtk2-perl but wasn't sure how to go
+ * about doing that.
+
+void
+gaim_gtk_append_blist_node_proto_menu(menu, gc, node)
+	Gtk::Widget menu
+	Gaim::Connection gc
+	Gaim::BuddyList::Node node
+
+void
+gaim_gtk_append_blist_node_extended_menu(menu, node)
+	Gtk::Widget menu
+	Gaim::Connection gc
+	Gaim::BuddyList::Node node
+*/
+
+MODULE = Gaim::Gtk::BuddyList  PACKAGE = Gaim::Gtk::BuddyList  PREFIX = gaim_gtk_blist_
+PROTOTYPES: ENABLE
+
+void *
+gaim_gtk_blist_get_handle()
+
+Gaim::Gtk::BuddyList
+gaim_gtk_blist_get_default_gtk_blist()
+
+void
+gaim_gtk_blist_refresh(list)
+	Gaim::BuddyList list
+
+void
+gaim_gtk_blist_update_toolbar()
+
+void
+gaim_gtk_blist_update_columns()
+
+void
+gaim_gtk_blist_update_refresh_timeout()
+
+gboolean
+gaim_gtk_blist_node_is_contact_expanded(node)
+	Gaim::BuddyList::Node node
+
+void
+gaim_gtk_blist_toggle_visibility()
+
+void
+gaim_gtk_blist_visibility_manager_add()
+
+void
+gaim_gtk_blist_visibility_manager_remove()
+
+void
+gaim_gtk_blist_get_sort_methods()
+PREINIT:
+	GList *l;
+PPCODE:
+	for (l = gaim_gtk_blist_get_sort_methods(); l != NULL; l = l->next) {
+		XPUSHs(sv_2mortal(gaim_perl_bless_object(l->data, "Gaim::Gtk::BuddyList::SortMethod")));
+	}
+
+void
+gaim_gtk_blist_sort_method_reg(id, name, func)
+	const char * id
+	const char * name
+	Gaim::Gtk::BuddyList::SortFunction func
+
+void
+gaim_gtk_blist_sort_method_unreg(id)
+	const char * id
+
+void
+gaim_gtk_blist_sort_method_set(id)
+	const char * id
+
+void
+gaim_gtk_blist_setup_sort_methods()
+
+void
+gaim_gtk_blist_update_accounts_menu()
+
+void
+gaim_gtk_blist_update_plugin_actions()
+
+void
+gaim_gtk_blist_update_sort_methods()
+
+gboolean
+gaim_gtk_blist_joinchat_is_showable()
+
+void
+gaim_gtk_blist_joinchat_show()
+
+void
+gaim_gtk_blist_update_account_error_state(account, message)
+	Gaim::Account account
+	const char * message
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gtk/plugins/perl/common/GtkConn.xs	Sat Sep 02 05:31:10 2006 +0000
@@ -0,0 +1,7 @@
+#include "gtkmodule.h"
+
+MODULE = Gaim::Gtk::Connection  PACKAGE = Gaim::Gtk::Connection  PREFIX = gaim_gtk_connection_
+PROTOTYPES: ENABLE
+
+void *
+gaim_gtk_connection_get_handle()
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gtk/plugins/perl/common/GtkConv.xs	Sat Sep 02 05:31:10 2006 +0000
@@ -0,0 +1,87 @@
+#include "gtkmodule.h"
+
+/* This can't work at the moment since I don't have a typemap for Gtk::Widget.
+ * I thought about using the one from libgtk2-perl but wasn't sure how to go
+ * about doing that.
+guint
+gaim_gtk_conversations_fill_menu(menu, convs)
+	Gtk::Widget menu
+	SV *convs
+PREINIT:
+	GList *t_GL;
+	int i, t_len;
+PPCODE:
+	t_GL = NULL;
+	t_len = av_len((AV *)SvRV(convs));
+
+	for (i = 0; i < t_len; i++) {
+		STRLEN t_sl;
+		t_GL = g_list_append(t_GL, SvPV(*av_fetch((AV *)SvRV(convs), i, 0), t_sl));
+	}
+	gaim_gtk_conversations_fill_menu(menu, t_GL);
+*/
+
+/* This can't work at the moment since I don't have a typemap for Gtk::Widget.
+ * I thought about using the one from libgtk2-perl but wasn't sure how to go
+ * about doing that.
+GdkPixbuf
+gaim_gtkconv_get_tab_icon(conv, small_icon)
+	Gaim::Conversation conv
+	gboolean small_icon
+*/
+
+/* This can't work at the moment since I don't have a typemap for gboolean *.
+int
+gaim_gtkconv_get_tab_at_xy(win, x, y, to_right)
+	Gaim::Gtk::Conversation::Window win
+	int x
+	int y
+	gboolean * to_right
+*/
+
+MODULE = Gaim::Gtk::Conversation  PACKAGE = Gaim::Gtk::Conversation  PREFIX = gaim_gtkconv_
+PROTOTYPES: ENABLE
+
+void
+gaim_gtkconv_update_buddy_icon(conv)
+	Gaim::Conversation conv
+
+void
+gaim_gtkconv_switch_active_conversation(conv)
+	Gaim::Conversation conv
+
+void
+gaim_gtkconv_update_tabs()
+
+void
+gaim_gtkconv_update_buttons_by_protocol(conv)
+	Gaim::Conversation conv
+
+void
+gaim_gtkconv_present_conversation(conv)
+	Gaim::Conversation conv
+
+Gaim::Gtk::Conversation::Window
+gaim_gtkconv_get_window(conv)
+	Gaim::Gtk::Conversation conv
+
+void
+gaim_gtkconv_new(conv)
+	Gaim::Conversation conv
+
+gboolean
+gaim_gtkconv_is_hidden(gtkconv)
+	Gaim::Gtk::Conversation gtkconv
+
+MODULE = Gaim::Gtk::Conversation  PACKAGE = Gaim::Gtk::Conversations  PREFIX = gaim_gtk_conversations_
+PROTOTYPES: ENABLE
+
+void
+gaim_gtk_conversations_find_unseen_list(type, min_state, hidden_only, max_count)
+	Gaim::ConversationType type
+	Gaim::UnseenState min_state
+	gboolean hidden_only
+	guint max_count
+
+void *
+gaim_gtk_conversations_get_handle()
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gtk/plugins/perl/common/GtkConvWin.xs	Sat Sep 02 05:31:10 2006 +0000
@@ -0,0 +1,139 @@
+#include "gtkmodule.h"
+
+MODULE = Gaim::Gtk::Conversation::Window  PACKAGE = Gaim::Gtk::Conversation::Window  PREFIX = gaim_gtk_conv_window_
+PROTOTYPES: ENABLE
+
+Gaim::Gtk::Conversation::Window
+gaim_gtk_conv_window_new()
+
+void
+gaim_gtk_conv_window_destroy(win)
+	Gaim::Gtk::Conversation::Window win
+
+void
+gaim_gtk_conv_window_show(win)
+	Gaim::Gtk::Conversation::Window win
+
+void
+gaim_gtk_conv_window_hide(win)
+	Gaim::Gtk::Conversation::Window win
+
+void
+gaim_gtk_conv_window_raise(win)
+	Gaim::Gtk::Conversation::Window win
+
+void
+gaim_gtk_conv_window_switch_gtkconv(win, gtkconv)
+	Gaim::Gtk::Conversation::Window win
+	Gaim::Gtk::Conversation gtkconv
+
+void
+gaim_gtk_conv_window_add_gtkconv(win, gtkconv)
+	Gaim::Gtk::Conversation::Window win
+	Gaim::Gtk::Conversation gtkconv
+
+void
+gaim_gtk_conv_window_remove_gtkconv(win, gtkconv)
+	Gaim::Gtk::Conversation::Window win
+	Gaim::Gtk::Conversation gtkconv
+
+Gaim::Gtk::Conversation
+gaim_gtk_conv_window_get_gtkconv_at_index(win, index)
+	Gaim::Gtk::Conversation::Window win
+	int index
+
+Gaim::Gtk::Conversation
+gaim_gtk_conv_window_get_active_gtkconv(win)
+	Gaim::Gtk::Conversation::Window win
+
+Gaim::Conversation
+gaim_gtk_conv_window_get_active_conversation(win)
+	Gaim::Gtk::Conversation::Window win
+
+gboolean
+gaim_gtk_conv_window_is_active_conversation(conv)
+	Gaim::Conversation conv
+
+gboolean
+gaim_gtk_conv_window_has_focus(win)
+	Gaim::Gtk::Conversation::Window win
+
+Gaim::Gtk::Conversation::Window
+gaim_gtk_conv_window_get_at_xy(x, y)
+	int x
+	int y
+
+void
+gaim_gtk_conv_window_get_gtkconvs(win)
+	Gaim::Gtk::Conversation::Window win
+PREINIT:
+	GList *l;
+PPCODE:
+	for (l = gaim_gtk_conv_window_get_gtkconvs(win); l != NULL; l = l->next) {
+		XPUSHs(sv_2mortal(gaim_perl_bless_object(l->data, "Gaim::Gtk::Conversation")));
+	}
+
+guint
+gaim_gtk_conv_window_get_gtkconv_count(win)
+	Gaim::Gtk::Conversation::Window win
+
+Gaim::Gtk::Conversation::Window
+gaim_gtk_conv_window_first_with_type(type)
+	Gaim::ConversationType type
+
+Gaim::Gtk::Conversation::Window
+gaim_gtk_conv_window_last_with_type(type)
+	Gaim::ConversationType type
+
+MODULE = Gaim::Gtk::Conversation::Window  PACKAGE = Gaim::Gtk::Conversation::Placement  PREFIX = gaim_gtkconv_placement_
+PROTOTYPES: ENABLE
+
+void
+gaim_gtkconv_placement_get_options()
+PREINIT:
+	GList *l;
+PPCODE:
+	for (l = gaim_gtkconv_placement_get_options(); l != NULL; l = l->next) {
+		XPUSHs(sv_2mortal(gaim_perl_bless_object(l->data, "Gaim::Gtk::Conversation::Window")));
+	}
+
+void
+gaim_gtkconv_placement_add_fnc(id, name, fnc)
+	const char * id
+	const char * name
+	Gaim::Conversation::PlacementFunc fnc
+
+void
+gaim_gtkconv_placement_remove_fnc(id)
+	const char * id
+
+const char *
+gaim_gtkconv_placement_get_name(id)
+	const char * id
+
+Gaim::Conversation::PlacementFunc
+gaim_gtkconv_placement_get_fnc(id)
+	const char * id
+
+void
+gaim_gtkconv_placement_set_current_func(func)
+	Gaim::Conversation::PlacementFunc func
+
+Gaim::Conversation::PlacementFunc
+gaim_gtkconv_placement_get_current_func()
+
+void
+gaim_gtkconv_placement_place(gtkconv)
+	Gaim::Gtk::Conversation gtkconv
+
+MODULE = Gaim::Gtk::Conversation::Window  PACKAGE = Gaim::Gtk::Conversation::Windows  PREFIX = gaim_gtk_conv_windows_
+PROTOTYPES: ENABLE
+
+void
+gaim_gtk_conv_windows_get_list()
+PREINIT:
+	GList *l;
+PPCODE:
+	for (l = gaim_gtk_conv_windows_get_list(); l != NULL; l = l->next) {
+		XPUSHs(sv_2mortal(gaim_perl_bless_object(l->data, "Gaim::Gtk::Conversation::Window")));
+	}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gtk/plugins/perl/common/GtkDebug.xs	Sat Sep 02 05:31:10 2006 +0000
@@ -0,0 +1,16 @@
+#include "gtkmodule.h"
+
+MODULE = Gaim::Gtk::Debug  PACKAGE = Gaim::Gtk::Debug  PREFIX = gaim_gtk_debug_
+PROTOTYPES: ENABLE
+
+void *
+gaim_gtk_debug_get_handle()
+
+MODULE = Gaim::Gtk::Debug  PACKAGE = Gaim::Gtk::Debug::Window  PREFIX = gaim_gtk_debug_window_
+PROTOTYPES: ENABLE
+
+void
+gaim_gtk_debug_window_show()
+
+void
+gaim_gtk_debug_window_hide()
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gtk/plugins/perl/common/GtkDialogs.xs	Sat Sep 02 05:31:10 2006 +0000
@@ -0,0 +1,52 @@
+#include "gtkmodule.h"
+
+MODULE = Gaim::Gtk::Dialogs  PACKAGE = Gaim::Gtk::Dialogs  PREFIX = gaim_gtkdialogs_
+PROTOTYPES: ENABLE
+
+void
+gaim_gtkdialogs_destroy_all()
+
+void
+gaim_gtkdialogs_about()
+
+void
+gaim_gtkdialogs_im()
+
+void
+gaim_gtkdialogs_im_with_user(account, username)
+	Gaim::Account account
+	const char * username
+
+void
+gaim_gtkdialogs_info()
+
+void
+gaim_gtkdialogs_log()
+
+void
+gaim_gtkdialogs_alias_contact(contact)
+	Gaim::BuddyList::Contact contact
+
+void
+gaim_gtkdialogs_alias_buddy(buddy)
+	Gaim::BuddyList::Buddy buddy
+
+void
+gaim_gtkdialogs_alias_chat(chat)
+	Gaim::BuddyList::Chat chat
+
+void
+gaim_gtkdialogs_remove_buddy(buddy)
+	Gaim::BuddyList::Buddy buddy
+
+void
+gaim_gtkdialogs_remove_group(group)
+	Gaim::BuddyList::Group group
+
+void
+gaim_gtkdialogs_remove_chat(chat)
+	Gaim::BuddyList::Chat chat
+
+void
+gaim_gtkdialogs_remove_contact(contact)
+	Gaim::BuddyList::Contact contact
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gtk/plugins/perl/common/GtkFt.xs	Sat Sep 02 05:31:10 2006 +0000
@@ -0,0 +1,49 @@
+#include "gtkmodule.h"
+
+MODULE = Gaim::Gtk::Xfer  PACKAGE = Gaim::Gtk::Xfer  PREFIX = gaim_gtk_xfer_
+PROTOTYPES: ENABLE
+
+void
+gaim_set_gtkxfer_dialog(dialog)
+	Gaim::Gtk::Xfer::Dialog dialog
+
+Gaim::Gtk::Xfer::Dialog
+gaim_get_gtkxfer_dialog()
+
+MODULE = Gaim::Gtk::Xfer  PACKAGE = Gaim::Gtk::Xfer::Dialog  PREFIX = gaim_gtkxfer_dialog_
+PROTOTYPES: ENABLE
+
+Gaim::Gtk::Xfer::Dialog
+gaim_gtkxfer_dialog_new()
+
+void
+gaim_gtkxfer_dialog_destroy(dialog)
+	Gaim::Gtk::Xfer::Dialog dialog
+
+void
+gaim_gtkxfer_dialog_show(dialog = NULL)
+	Gaim::Gtk::Xfer::Dialog dialog
+
+void
+gaim_gtkxfer_dialog_hide(dialog)
+	Gaim::Gtk::Xfer::Dialog dialog
+
+void
+gaim_gtkxfer_dialog_add_xfer(dialog, xfer)
+	Gaim::Gtk::Xfer::Dialog dialog
+	Gaim::Xfer xfer
+
+void
+gaim_gtkxfer_dialog_remove_xfer(dialog, xfer)
+	Gaim::Gtk::Xfer::Dialog dialog
+	Gaim::Xfer xfer
+
+void
+gaim_gtkxfer_dialog_cancel_xfer(dialog, xfer)
+	Gaim::Gtk::Xfer::Dialog dialog
+	Gaim::Xfer xfer
+
+void
+gaim_gtkxfer_dialog_update_xfer(dialog, xfer)
+	Gaim::Gtk::Xfer::Dialog dialog
+	Gaim::Xfer xfer
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gtk/plugins/perl/common/GtkIMHtml.xs	Sat Sep 02 05:31:10 2006 +0000
@@ -0,0 +1,353 @@
+#include "gtkmodule.h"
+
+/* This can't work at the moment since I don't have a typemap for Gtk::Widget.
+ * I thought about using the one from libgtk2-perl but wasn't sure how to go
+ * about doing that.
+Gtk::Widget
+gtk_imhtml_new(a, b)
+*/
+
+/* This can't work at the moment since I don't have a typemap for
+ * Gtk::TextIter.
+ * I thought about using the one from libgtk2-perl but wasn't sure how to go
+ * about doing that.
+void
+gtk_imhtml_insert_html_at_iter(imhtml, text, options, iter)
+	Gaim::Gtk::IMHtml imhtml
+	const gchar * text
+	Gaim::Gtk::IMHtml::Options options
+	Gtk::TextIter iter
+*/
+
+/* This can't work at the moment since I don't have a typemap for Gtk::Widget.
+ * I thought about using the one from libgtk2-perl but wasn't sure how to go
+ * about doing that.
+void
+gtk_imhtml_delete(imhtml, start, end)
+	Gaim::Gtk::IMHtml imhtml
+	Gtk::TextIter start
+	Gtk::TextIter end
+*/
+
+/* This can't work at the moment since I don't have a typemap for Gtk::Widget.
+ * I thought about using the one from libgtk2-perl but wasn't sure how to go
+ * about doing that.
+void
+gtk_imhtml_insert_link(imhtml, mark, url, text)
+	Gaim::Gtk::IMHtml imhtml
+	Gtk::TextMark mark
+	const char * url
+	const char * text
+*/
+
+/* This can't work at the moment since I don't have a typemap for Gtk::Widget.
+ * I thought about using the one from libgtk2-perl but wasn't sure how to go
+ * about doing that.
+void
+gtk_imhtml_insert_smiley_at_iter(imhtml, sml, smiley, iter)
+	Gaim::Gtk::IMHtml imhtml
+	const char * sml
+	char * smiley
+	Gtk::TextIter iter
+
+void
+gtk_imhtml_insert_image_at_iter(imhtml, id, iter)
+	Gaim::Gtk::IMHtml imhtml
+	int id
+	Gtk::TextIter iter
+*/
+
+/* This can't work at the moment since I don't have a typemap for Gtk::Widget.
+ * I thought about using the one from libgtk2-perl but wasn't sure how to go
+ * about doing that.
+char *
+gtk_imhtml_get_markup_range(imhtml, start, end)
+	Gaim::Gtk::IMHtml imhtml
+	Gtk::TextIter start
+	Gtk::TextIter end
+*/
+
+/* This can't work at the moment since I don't have a typemap for Gtk::Widget.
+ * I thought about using the one from libgtk2-perl but wasn't sure how to go
+ * about doing that.
+char *
+gtk_imhtml_get_text(imhtml, start, end)
+	Gaim::Gtk::IMHtml imhtml
+	Gtk::TextIter start
+	Gtk::TextIter end
+*/
+
+/* This can't work at the moment since I don't have a typemap for Gdk::Pixbuf.
+ * I thought about using the one from libgtk2-perl but wasn't sure how to go
+ * about doing that.
+Gaim::Gtk::IMHtml::Scalable
+gtk_imhtml_image_new(img, filename, id)
+	Gdk::Pixbuf img
+	const gchar * filename
+	int id
+*/
+
+/* This can't work at the moment since I don't have a typemap for Gtk::Widget.
+ * I thought about using the one from libgtk2-perl but wasn't sure how to go
+ * about doing that.
+void
+gtk_imhtml_image_add_to(scale, imhtml, iter)
+	Gaim::Gtk::IMHtml::Scalable scale
+	Gaim::Gtk::IMHtml imhtml
+	Gtk::TextIter iter
+*/
+
+/* This can't work at the moment since I don't have a typemap for Gtk::Widget.
+ * I thought about using the one from libgtk2-perl but wasn't sure how to go
+ * about doing that.
+void
+gtk_imhtml_hr_add_to(scale, imhtml, iter)
+	Gaim::Gtk::IMHtml::Scalable scale
+	Gaim::Gtk::IMHtml imhtml
+	Gtk::TextIter iter
+*/
+
+/* This can't work at the moment since I don't have a typemap for gboolean *.
+void
+gtk_imhtml_get_current_format(imhtml, bold, italic, underline)
+	Gaim::Gtk::IMHtml imhtml
+	gboolean * bold
+	gboolean * italic
+	gboolean * underline
+*/
+
+MODULE = Gaim::Gtk::IMHtml  PACKAGE = Gaim::Gtk::IMHtml  PREFIX = gtk_imhtml_
+PROTOTYPES: ENABLE
+
+Gaim::Gtk::IMHtml::Smiley
+gtk_imhtml_smiley_get(imhtml, sml, text)
+	Gaim::Gtk::IMHtml imhtml
+	const gchar * sml
+	const gchar * text
+
+void
+gtk_imhtml_associate_smiley(imhtml, sml, smiley)
+	Gaim::Gtk::IMHtml imhtml
+	const gchar * sml
+	Gaim::Gtk::IMHtml::Smiley smiley
+
+void
+gtk_imhtml_remove_smileys(imhtml)
+	Gaim::Gtk::IMHtml imhtml
+
+void
+gtk_imhtml_set_funcs(imhtml, f)
+	Gaim::Gtk::IMHtml imhtml
+	Gaim::Gtk::IMHtml::Funcs f
+
+void
+gtk_imhtml_show_comments(imhtml, show)
+	Gaim::Gtk::IMHtml imhtml
+	gboolean show
+
+const char *
+gtk_imhtml_get_protocol_name(imhtml)
+	Gaim::Gtk::IMHtml imhtml
+
+void
+gtk_imhtml_set_protocol_name(imhtml, protocol_name)
+	Gaim::Gtk::IMHtml imhtml
+	const gchar * protocol_name
+
+void
+gtk_imhtml_append_text(imhtml, text, options)
+	Gaim::Gtk::IMHtml imhtml
+	const gchar * text
+	Gaim::Gtk::IMHtml::Options options
+
+void
+gtk_imhtml_append_text_with_images(imhtml, text, options, unused = NULL)
+	Gaim::Gtk::IMHtml imhtml
+	const gchar * text
+	Gaim::Gtk::IMHtml::Options options
+	SV *unused
+PREINIT:
+	GSList *t_GL;
+	int i, t_len;
+PPCODE:
+	t_GL = NULL;
+	t_len = av_len((AV *)SvRV(unused));
+
+	for (i = 0; i < t_len; i++) {
+		STRLEN t_sl;
+		t_GL = g_slist_append(t_GL, SvPV(*av_fetch((AV *)SvRV(unused), i, 0), t_sl));
+	}
+	gtk_imhtml_append_text_with_images(imhtml, text, options, t_GL);
+
+void
+gtk_imhtml_scroll_to_end(imhtml, smooth)
+	Gaim::Gtk::IMHtml imhtml
+	gboolean smooth
+
+void
+gtk_imhtml_clear(imhtml)
+	Gaim::Gtk::IMHtml imhtml
+
+void
+gtk_imhtml_page_up(imhtml)
+	Gaim::Gtk::IMHtml imhtml
+
+void
+gtk_imhtml_page_down(imhtml)
+	Gaim::Gtk::IMHtml imhtml
+
+void
+gtk_imhtml_set_editable(imhtml, editable)
+	Gaim::Gtk::IMHtml imhtml
+	gboolean editable
+
+void
+gtk_imhtml_set_whole_buffer_formatting_only(imhtml, wbo)
+	Gaim::Gtk::IMHtml imhtml
+	gboolean wbo
+
+void
+gtk_imhtml_set_format_functions(imhtml, buttons)
+	Gaim::Gtk::IMHtml imhtml
+	Gaim::Gtk::IMHtml::Buttons buttons
+
+Gaim::Gtk::IMHtml::Buttons
+gtk_imhtml_get_format_functions(imhtml)
+	Gaim::Gtk::IMHtml imhtml
+
+char *
+gtk_imhtml_get_current_fontface(imhtml)
+	Gaim::Gtk::IMHtml imhtml
+
+char *
+gtk_imhtml_get_current_forecolor(imhtml)
+	Gaim::Gtk::IMHtml imhtml
+
+char *
+gtk_imhtml_get_current_backcolor(imhtml)
+	Gaim::Gtk::IMHtml imhtml
+
+char *
+gtk_imhtml_get_current_background(imhtml)
+	Gaim::Gtk::IMHtml imhtml
+
+gint
+gtk_imhtml_get_current_fontsize(imhtml)
+	Gaim::Gtk::IMHtml imhtml
+
+gboolean
+gtk_imhtml_get_editable(imhtml)
+	Gaim::Gtk::IMHtml imhtml
+
+void
+gtk_imhtml_clear_formatting(imhtml)
+	Gaim::Gtk::IMHtml imhtml
+
+void
+gtk_imhtml_toggle_bold(imhtml)
+	Gaim::Gtk::IMHtml imhtml
+
+void
+gtk_imhtml_toggle_italic(imhtml)
+	Gaim::Gtk::IMHtml imhtml
+
+void
+gtk_imhtml_toggle_underline(imhtml)
+	Gaim::Gtk::IMHtml imhtml
+
+void
+gtk_imhtml_toggle_strike(imhtml)
+	Gaim::Gtk::IMHtml imhtml
+
+void
+gtk_imhtml_toggle_forecolor(imhtml, color)
+	Gaim::Gtk::IMHtml imhtml
+	const char * color
+
+void
+gtk_imhtml_toggle_backcolor(imhtml, color)
+	Gaim::Gtk::IMHtml imhtml
+	const char * color
+
+void
+gtk_imhtml_toggle_background(imhtml, color)
+	Gaim::Gtk::IMHtml imhtml
+	const char * color
+
+void
+gtk_imhtml_toggle_fontface(imhtml, face)
+	Gaim::Gtk::IMHtml imhtml
+	const char * face
+
+void
+gtk_imhtml_toggle_link(imhtml, url)
+	Gaim::Gtk::IMHtml imhtml
+	const char * url
+
+void
+gtk_imhtml_insert_smiley(imhtml, sml, smiley)
+	Gaim::Gtk::IMHtml imhtml
+	const char * sml
+	char * smiley
+
+void
+gtk_imhtml_font_set_size(imhtml, size)
+	Gaim::Gtk::IMHtml imhtml
+	gint size
+
+void
+gtk_imhtml_font_shrink(imhtml)
+	Gaim::Gtk::IMHtml imhtml
+
+void
+gtk_imhtml_font_grow(imhtml)
+	Gaim::Gtk::IMHtml imhtml
+
+char *
+gtk_imhtml_get_markup(imhtml)
+	Gaim::Gtk::IMHtml imhtml
+
+char **
+gtk_imhtml_get_markup_lines(imhtml)
+	Gaim::Gtk::IMHtml imhtml
+
+MODULE = Gaim::Gtk::IMHtml  PACKAGE = Gaim::Gtk::IMHtml::Scalable  PREFIX = gtk_imhtml_image_
+PROTOTYPES: ENABLE
+
+void
+gtk_imhtml_image_free(scale)
+	Gaim::Gtk::IMHtml::Scalable scale
+
+void
+gtk_imhtml_image_scale(scale, width, height)
+	Gaim::Gtk::IMHtml::Scalable scale
+	int width
+	int height
+
+MODULE = Gaim::Gtk::IMHtml  PACKAGE = Gaim::Gtk::IMHtml::Hr  PREFIX = gtk_imhtml_hr_
+PROTOTYPES: ENABLE
+
+Gaim::Gtk::IMHtml::Scalable
+gtk_imhtml_hr_new()
+
+void
+gtk_imhtml_hr_free(scale)
+	Gaim::Gtk::IMHtml::Scalable scale
+
+void
+gtk_imhtml_hr_scale(scale, width, height)
+	Gaim::Gtk::IMHtml::Scalable scale
+	int width
+	int height
+
+MODULE = Gaim::Gtk::IMHtml  PACKAGE = Gaim::Gtk::IMHtml::Search  PREFIX = gtk_imhtml_search_
+PROTOTYPES: ENABLE
+
+gboolean
+gtk_imhtml_search_find(imhtml, text)
+	Gaim::Gtk::IMHtml imhtml
+	const gchar * text
+
+void
+gtk_imhtml_search_clear(imhtml)
+	Gaim::Gtk::IMHtml imhtml
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gtk/plugins/perl/common/GtkIMHtmlToolbar.xs	Sat Sep 02 05:31:10 2006 +0000
@@ -0,0 +1,22 @@
+#include "gtkmodule.h"
+
+/* This can't work at the moment since I don't have a typemap for Gtk::Widget.
+ * I thought about using the one from libgtk2-perl but wasn't sure how to go
+ * about doing that.
+
+Gtk::Widget
+gtk_imhtmltoolbar_new()
+
+void
+gtk_imhtmltoolbar_attach(toolbar, imhtml)
+	Gaim::Gtk::IMHtmlToolbar toolbar
+	Gtk::Widget imhtml
+*/
+
+MODULE = Gaim::Gtk::IMHtmlToolbar  PACKAGE = Gaim::Gtk::IMHtmlToolbar  PREFIX = gtk_imhtmltoolbar_
+PROTOTYPES: ENABLE
+
+void
+gtk_imhtmltoolbar_associate_smileys(toolbar, proto_id)
+	Gaim::Gtk::IMHtmlToolbar toolbar
+	const char * proto_id
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gtk/plugins/perl/common/GtkLog.xs	Sat Sep 02 05:31:10 2006 +0000
@@ -0,0 +1,23 @@
+#include "gtkmodule.h"
+
+MODULE = Gaim::Gtk::Log  PACKAGE = Gaim::Gtk::Log  PREFIX = gaim_gtk_log_
+PROTOTYPES: ENABLE
+
+void *
+gaim_gtk_log_get_handle()
+
+void
+gaim_gtk_log_show(type, screenname, account)
+	Gaim::LogType type
+	const char * screenname
+	Gaim::Account account
+
+void
+gaim_gtk_log_show_contact(contact)
+	Gaim::BuddyList::Contact contact
+
+MODULE = Gaim::Gtk::Log  PACKAGE = Gaim::Gtk::SysLog  PREFIX = gaim_gtk_syslog_
+PROTOTYPES: ENABLE
+
+void
+gaim_gtk_syslog_show()
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gtk/plugins/perl/common/GtkMenuTray.xs	Sat Sep 02 05:31:10 2006 +0000
@@ -0,0 +1,33 @@
+#include "gtkmodule.h"
+
+/* This can't work at the moment since I don't have a typemap for Gtk::Widget.
+ * I thought about using the one from libgtk2-perl but wasn't sure how to go
+ * about doing that.
+Gtk::Widget
+gaim_gtk_menu_tray_new()
+
+Gtk::Widget
+gaim_gtk_menu_tray_get_box(menu_tray)
+	Gaim::Gtk::MenuTray menu_tray
+
+void
+gaim_gtk_menu_tray_append(menu_tray, widget, tooltip)
+	Gaim::Gtk::MenuTray menu_tray
+	Gtk::Widget widget
+	const char * tooltip
+
+void
+gaim_gtk_menu_tray_prepend(menu_tray, widget, tooltip)
+	Gaim::Gtk::MenuTray menu_tray
+	Gtk::Widget widget
+	const char * tooltip
+
+void
+gaim_gtk_menu_tray_set_tooltip(menu_tray, widget, tooltip)
+	Gaim::Gtk::MenuTray menu_tray
+	Gtk::Widget widget
+	const char * tooltip
+*/
+
+MODULE = Gaim::Gtk::MenuTray  PACKAGE = Gaim::Gtk::MenuTray  PREFIX = gaim_gtk_menu_tray
+PROTOTYPES: ENABLE
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gtk/plugins/perl/common/GtkPlugin.xs	Sat Sep 02 05:31:10 2006 +0000
@@ -0,0 +1,24 @@
+#include "gtkmodule.h"
+
+/* This can't work at the moment since I don't have a typemap for Gtk::Widget.
+ * I thought about using the one from libgtk2-perl but wasn't sure how to go
+ * about doing that.
+Gtk::Widget
+gaim_gtk_plugin_get_config_frame(plugin)
+	Gaim::Plugin plugin
+*/
+
+MODULE = Gaim::Gtk::Plugin  PACKAGE = Gaim::Gtk::Plugin  PREFIX = gaim_gtk_plugin_
+PROTOTYPES: ENABLE
+
+MODULE = Gaim::Gtk::Plugin  PACKAGE = Gaim::Gtk::Plugins  PREFIX = gaim_gtk_plugins_
+PROTOTYPES: ENABLE
+
+void
+gaim_gtk_plugins_save()
+
+MODULE = Gaim::Gtk::Plugin  PACKAGE = Gaim::Gtk::Plugin::Dialog  PREFIX = gaim_gtk_plugin_dialog_
+PROTOTYPES: ENABLE
+
+void
+gaim_gtk_plugin_dialog_show()
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gtk/plugins/perl/common/GtkPluginPref.xs	Sat Sep 02 05:31:10 2006 +0000
@@ -0,0 +1,69 @@
+#include "gtkmodule.h"
+
+/* This can't work at the moment since I don't have a typemap for Gtk::Widget.
+ * I thought about using the one from libgtk2-perl but wasn't sure how to go
+ * about doing that.
+Gtk::Widget
+gaim_gtk_plugin_pref_create_frame(frame)
+	Gaim::PluginPref::Frame frame
+
+Gtk::Widget
+gaim_gtk_prefs_checkbox(title, key, page)
+	const char * title
+	const char * key
+	Gtk::Widget page
+
+Gtk::Widget
+gaim_gtk_prefs_labeled_spin_button(page, title, key, min, max, sg)
+	Gtk::Widget page
+	const gchar * title
+	const char * key
+	int min
+	int max
+	Gtk::Size::Group sg
+
+Gtk::Widget
+gaim_gtk_prefs_labeled_entry(page, title, key, sg)
+	Gtk::Widget page
+	const gchar * title
+	const char * key
+	Gtk::Size::Group sg
+*/
+
+/* TODO I don't know how to handle this in XS
+Gtk::Widget
+gaim_gtk_prefs_dropdown(page, title, type, key, ...)
+	Gtk::Widget page
+	const gchar * title
+	Gaim::Pref::Type type
+	const char * key
+
+*/
+
+/* This can't work at the moment since I don't have a typemap for Gtk::Widget.
+ * I thought about using the one from libgtk2-perl but wasn't sure how to go
+ * about doing that.
+Gtk::Widget
+gaim_gtk_prefs_dropdown_from_list(page, title, type, key, menuitems)
+	Gtk::Widget page
+	const gchar * title
+	Gaim::Pref::Type type
+	const char * key
+	SV *menuitems
+PREINIT:
+	GList *t_GL;
+	int i, t_len;
+CODE:
+	t_GL = NULL;
+	t_len = av_len((AV *)SvRV(menuitems));
+
+	for ( i = 0; i < t_len; i++) {
+		STRLEN t_sl;
+		t_GL = g_list_append(t_GL, SvPV(*av_fetch((AV *)SvRV(menuitems), i, 0), t_sl));
+	RETVAL = gaim_gtk_prefs_dropdown_from_list(page, title, type, key, t_GL);
+OUTPUT:
+	RETVAL
+*/
+
+MODULE = Gaim::Gtk::PluginPref  PACKAGE = Gaim::Gtk::PluginPref  PREFIX = gaim_gtk_plugin_pref_
+PROTOTYPES: ENABLE
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gtk/plugins/perl/common/GtkPounce.xs	Sat Sep 02 05:31:10 2006 +0000
@@ -0,0 +1,25 @@
+#include "gtkmodule.h"
+
+MODULE = Gaim::Gtk::Pounce  PACKAGE = Gaim::Gtk::Pounce  PREFIX = gaim_gtk_pounce_
+PROTOTYPES: ENABLE
+
+void
+gaim_gtk_pounce_editor_show(account, name, cur_pounce)
+	Gaim::Account account
+	const char * name
+	Gaim::Pounce cur_pounce
+
+MODULE = Gaim::Gtk::Pounce  PACKAGE = Gaim::Gtk::Pounces  PREFIX = gaim_gtk_pounces_
+PROTOTYPES: ENABLE
+
+void *
+gaim_gtk_pounces_get_handle()
+
+MODULE = Gaim::Gtk::Pounce  PACKAGE = Gaim::Gtk::Pounces::Manager  PREFIX = gaim_gtk_pounces_manager_
+PROTOTYPES: ENABLE
+
+void
+gaim_gtk_pounces_manager_show()
+
+void
+gaim_gtk_pounces_manager_hide()
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gtk/plugins/perl/common/GtkPrefs.xs	Sat Sep 02 05:31:10 2006 +0000
@@ -0,0 +1,8 @@
+#include "gtkmodule.h"
+
+MODULE = Gaim::Gtk::Prefs  PACKAGE = Gaim::Gtk::Prefs  PREFIX = gaim_gtk_prefs_
+PROTOTYPES: ENABLE
+
+void
+gaim_gtk_prefs_show()
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gtk/plugins/perl/common/GtkPrivacy.xs	Sat Sep 02 05:31:10 2006 +0000
@@ -0,0 +1,23 @@
+#include "gtkmodule.h"
+
+MODULE = Gaim::Gtk::Privacy  PACKAGE = Gaim::Gtk::Privacy  PREFIX = gaim_gtk_
+PROTOTYPES: ENABLE
+
+void
+gaim_gtk_request_add_permit(account, name)
+	Gaim::Account account
+	const char * name
+
+void
+gaim_gtk_request_add_block(account, name)
+	Gaim::Account account
+	const char * name
+
+MODULE = Gaim::Gtk::Privacy  PACKAGE = Gaim::Gtk::Privacy::Dialog  PREFIX = gaim_gtk_privacy_dialog_
+PROTOTYPES: ENABLE
+
+void
+gaim_gtk_privacy_dialog_show()
+
+void
+gaim_gtk_privacy_dialog_hide()
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gtk/plugins/perl/common/GtkRoomlist.xs	Sat Sep 02 05:31:10 2006 +0000
@@ -0,0 +1,24 @@
+#include "gtkmodule.h"
+
+MODULE = Gaim::Gtk::Roomlist  PACKAGE = Gaim::Gtk::Roomlist  PREFIX = gaim_gtk_roomlist_
+PROTOTYPES: ENABLE
+
+gboolean
+gaim_gtk_roomlist_is_showable()
+
+MODULE = Gaim::Gtk::Roomlist  PACKAGE = Gaim::Gtk::Roomlist::Dialog  PREFIX = gaim_gtk_roomlist_dialog_
+PROTOTYPES: ENABLE
+
+void
+gaim_gtk_roomlist_dialog_show(class)
+    C_ARGS: /* void */
+
+Gaim::Gtk::Roomlist::Dialog
+gaim_gtk_roomlist_dialog_new(class)
+    C_ARGS: /* void */
+
+Gaim::Gtk::Roomlist::Dialog
+gaim_gtk_roomlist_dialog_new_with_account(class, account)
+	Gaim::Account account
+    C_ARGS:
+	account
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gtk/plugins/perl/common/GtkSavedStatuses.xs	Sat Sep 02 05:31:10 2006 +0000
@@ -0,0 +1,35 @@
+#include "gtkmodule.h"
+
+/* This can't work at the moment since I don't have a typemap for Gtk::Widget.
+ * I thought about using the one from libgtk2-perl but wasn't sure how to go
+ * about doing that.
+ * This also has a GCallback issue that I have no idea how to deal with,
+ * though the core-perl typemap has a mapping for them.
+Gtk::Widget
+gaim_gtk_status_menu(status, callback)
+	Gaim::SavedStatus status
+	GCallback callback
+*/
+
+MODULE = Gaim::Gtk::Status  PACKAGE = Gaim::Gtk::Status  PREFIX = gaim_gtk_status_
+PROTOTYPES: ENABLE
+
+void *
+gaim_gtk_status_get_handle()
+
+MODULE = Gaim::Gtk::Status  PACKAGE = Gaim::Gtk::Status::Editor  PREFIX = gaim_gtk_status_editor_
+PROTOTYPES: ENABLE
+
+void
+gaim_gtk_status_editor_show(edit, status)
+	gboolean edit
+	Gaim::SavedStatus status
+
+MODULE = Gaim::Gtk::Status  PACKAGE = Gaim::Gtk::Status::Window  PREFIX = gaim_gtk_status_window_
+PROTOTYPES: ENABLE
+
+void
+gaim_gtk_status_window_show()
+
+void
+gaim_gtk_status_window_hide()
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gtk/plugins/perl/common/GtkSession.xs	Sat Sep 02 05:31:10 2006 +0000
@@ -0,0 +1,13 @@
+#include "gtkmodule.h"
+
+MODULE = Gaim::Gtk::Session  PACKAGE = Gaim::Gtk::Session  PREFIX = gaim_gtk_session_
+PROTOTYPES: ENABLE
+
+void
+gaim_gtk_session_init(argv0, previous_id, config_dir)
+	gchar * argv0
+	gchar * previous_id
+	gchar * config_dir
+
+void
+gaim_gtk_session_end()
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gtk/plugins/perl/common/GtkSound.xs	Sat Sep 02 05:31:10 2006 +0000
@@ -0,0 +1,15 @@
+#include "gtkmodule.h"
+
+MODULE = Gaim::Gtk::Sound  PACKAGE = Gaim::Gtk::Sound  PREFIX = gaim_gtk_sound_
+PROTOTYPES: ENABLE
+
+const char *
+gaim_gtk_sound_get_event_option(event)
+	Gaim::SoundEventID event
+
+char *
+gaim_gtk_sound_get_event_label(event)
+	Gaim::SoundEventID event
+
+void *
+gaim_gtk_sound_get_handle()
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gtk/plugins/perl/common/GtkStatusBox.xs	Sat Sep 02 05:31:10 2006 +0000
@@ -0,0 +1,50 @@
+#include "gtkmodule.h"
+
+/* This can't work at the moment since I don't have a typemap for Gtk::Widget.
+ * I thought about using the one from libgtk2-perl but wasn't sure how to go
+ * about doing that.
+Gtk::Widget
+gtk_gaim_status_box_new()
+
+Gtk::Widget
+gtk_gaim_status_box_new_with_account(account)
+	Gaim::Account account
+
+void
+gtk_gaim_status_box_add(status_box, type, pixbuf, text, sec_text, data)
+	Gaim::Gtk::StatusBox status_box
+	Gaim::Gtk::StatusBox::ItemType type
+	GdkPixbuf pixbuf
+	const char * text
+	const char * sec_text
+	gpointer data
+*/
+
+MODULE = Gaim::Gtk::StatusBox  PACKAGE = Gaim::Gtk::StatusBox  PREFIX = gtk_gaim_status_box
+PROTOTYPES: ENABLE
+
+void
+gtk_gaim_status_box_add_separator(status_box)
+	Gaim::Gtk::StatusBox status_box
+
+void
+gtk_gaim_status_box_set_connecting(status_box, connecting)
+	Gaim::Gtk::StatusBox status_box
+	gboolean connecting
+
+void
+gtk_gaim_status_box_pulse_connecting(status_box)
+	Gaim::Gtk::StatusBox status_box
+
+void
+gtk_gaim_status_box_set_buddy_icon(status_box, filename)
+	Gaim::Gtk::StatusBox status_box
+	const char * filename
+
+const char *
+gtk_gaim_status_box_get_buddy_icon(status_box)
+	Gaim::Gtk::StatusBox status_box
+
+char *
+gtk_gaim_status_box_get_message(status_box)
+	Gaim::Gtk::StatusBox status_box
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gtk/plugins/perl/common/GtkThemes.xs	Sat Sep 02 05:31:10 2006 +0000
@@ -0,0 +1,36 @@
+#include "gtkmodule.h"
+
+/* This can't work at the moment since I don't have a typemap for Gtk::Widget.
+ * I thought about using the one from libgtk2-perl but wasn't sure how to go
+ * about doing that.
+void
+gaim_gtkthemes_smiley_themeize(widget)
+	Gtk::Widget * widget
+*/
+
+MODULE = Gaim::Gtk::Themes  PACKAGE = Gaim::Gtk::Themes  PREFIX = gaim_gtkthemes_
+PROTOTYPES: ENABLE
+
+void
+gaim_gtkthemes_init()
+
+gboolean
+gaim_gtkthemes_smileys_disabled()
+
+void
+gaim_gtkthemes_smiley_theme_probe()
+
+void
+gaim_gtkthemes_load_smiley_theme(file, load)
+	const char * file
+	gboolean load
+
+void
+gaim_gtkthemes_get_proto_smileys(id)
+	const char * id
+PREINIT:
+	GSList *l;
+PPCODE:
+	for (l = gaim_gtkthemes_get_proto_smileys(id); l != NULL; l = l->next) {
+		XPUSHs(sv_2mortal(gaim_perl_bless_object(l->data, "Gtk::IMHtml::Smiley")));
+	}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gtk/plugins/perl/common/GtkUtils.xs	Sat Sep 02 05:31:10 2006 +0000
@@ -0,0 +1,208 @@
+#include "gtkmodule.h"
+
+/* This can't work at the moment since I don't have a typemap for Gtk::Widget.
+ * I thought about using the one from libgtk2-perl but wasn't sure how to go
+ * about doing that.
+void
+gaim_setup_imhtml(imhtml)
+	Gtk::Widget imhtml
+
+Gtk::Widget
+gaim_gtk_create_imhtml(editable, imhtml_ret, toolbar_ret, sw_ret)
+	gboolean editable
+	GtkWidget ** imhtml_ret
+	GtkWidget ** toolbar_ret
+	GtkWidget ** sw_ret
+
+void
+gaim_gtk_toggle_sensitive(widget, to_toggle)
+	Gtk::Widget widget
+	Gtk::Widget to_toggle
+
+void
+gaim_gtk_set_sensitive_if_input(entry, dialog)
+	Gtk::Widget entry
+	Gtk::Widget dialog
+
+void
+gaim_gtk_toggle_sensitive_array(w, data)
+	Gtk::Widget w
+	GPtrArray data
+
+void
+gaim_gtk_toggle_showhide(widget, to_toggle)
+	Gtk::Widget widget
+	Gtk::Widget to_toggle
+
+void
+gaim_separator(menu)
+	Gtk::Widget menu
+
+Gtk::Widget
+gaim_new_item(menu, str)
+	Gtk::Widget menu
+	const char * str
+
+Gtk::Widget
+gaim_new_check_item(menu, str, sf, data, checked)
+	Gtk::Widget menu
+	const char * str
+	GtkSignalFunc sf
+	gpointer data
+	gboolean checked
+
+Gtk::Widget
+gaim_new_item_from_stock(menu, str, icon, sf, data, accel_key, accel_mods, mod)
+	Gtk::Widget menu
+	const char * str
+	const char * icon
+	GtkSignalFunc sf
+	gpointer data
+	guint accel_key
+	guint accel_mods
+	char * mod
+
+Gtk::Widget
+gaim_pixbuf_button_from_stock(text, icon, style)
+	const char * text
+	const char * icon
+	Gaim::ButtonOrientation style
+
+Gtk::Widget
+gaim_gtk_make_frame(parent, title)
+	Gtk::Widget parent
+	const char * title
+
+Gtk::Widget
+gaim_gtk_protocol_option_menu_new(id, cb, user_data)
+	const char * id
+	GCallback cb
+	gpointer user_data
+
+Gtk::Widget
+gaim_gtk_account_option_menu_new(default_account, show_all, cb, filter_func, user_data)
+	Gaim::Account account
+	gboolean show_all
+	GCallback cb
+	Gaim::Account::FilterFunc filter_func
+	gpointer user_data
+
+Gaim::Account
+gaim_gtk_account_option_menu_get_selected(optmenu)
+	Gtk::Widget optmenu
+
+void
+gaim_gtk_account_option_menu_set_selected(optmenu, account)
+	Gtk::Widget optmenu
+	Gaim::Account account
+
+void
+gaim_gtk_setup_screenname_autocomplete(entry, optmenu, all)
+	Gtk::Widget entry
+	Gtk::Widget optmenu
+	gboolean all
+
+gboolean
+gaim_gtk_check_if_dir(path, filesel)
+	const char * path
+	Gtk::FileSelection filesel
+
+void
+gaim_gtk_setup_gtkspell(textview)
+	Gtk::TextView textview
+
+void
+gaim_gtk_save_accels_cb(accel_group, arg1, arg2, arg3, data)
+	Gtk::AccelGroup accel_group
+	guint arg1
+	Gdk::ModifierType arg2
+	GClosure arg3
+	gpointer data
+*/
+
+/* TODO This needs GaimAccount **
+gboolean
+gaim_gtk_parse_x_im_contact(msg, all_accounts, ret_account, ret_protocol, ret_username, ret_alias)
+	const char * msg
+	gboolean all_accounts
+	Gaim::Account ret_account
+	char ** ret_protocol
+	char ** ret_username
+	char ** ret_alias
+*/
+
+/* This can't work at the moment since I don't have a typemap for Gtk::Widget.
+ * I thought about using the one from libgtk2-perl but wasn't sure how to go
+ * about doing that.
+void
+gaim_set_accessible_lable(w, l)
+	Gtk::Widget w
+	Gtk::Widget l
+
+void
+gaim_gtk_treeview_popup_menu_position_func(menu, x, y, push_in, user_data)
+	Gtk::Menu menu
+	gint x
+	gint y
+	gboolean push_in
+	gpointer user_data
+
+void
+gaim_dnd_file_manage(sd, account, who)
+	Gtk::SelectionData sd
+	Gaim::Account account
+	const char * who
+
+void
+gaim_gtk_buddy_icon_get_scale_size(buf, spec, width, height)
+	Gdk::Pixbuf buf
+	Gaim::Buddy::Icon::Spec spec
+	int width
+	int height
+
+Gdk::Pixbuf
+gaim_gtk_create_prpl_icon(account, scale_factor)
+	const Gaim::Account account
+	double scale_factor
+
+Gdk::Pixbuf
+gaim_gtk_create_prpl_icon_with_status(account, status_type, scale_factor)
+	const Gaim::Account account
+	Gaim::StatusType status_type
+	double scale_factor
+
+Gdk::Pixbuf
+gaim_gtk_create_gaim_icon_with_status(primitive, scale_factor)
+	Gaim::StatusPrimitive primitive
+	double scale_factor
+
+void
+gaim_gtk_append_menu_action(menu, act, gobject)
+	Gtk::Widget menu
+	Gaim::Menu::Action act
+	gpointer gobject
+
+void
+gaim_gtk_set_cursor(widget, cursor_type)
+	Gtk::Widget widget
+	Gdk::CursorType cursor_type
+
+void
+gaim_gtk_clear_cursor(widget)
+	Gtk::Widget widget
+*/
+
+MODULE = Gaim::Gtk::Utils  PACKAGE = Gaim::Gtk::Utils  PREFIX = gaim_gtk_utils_
+PROTOTYPES: ENABLE
+
+gboolean
+gaim_gtk_save_accels(data)
+	gpointer data
+
+void
+gaim_gtk_load_accels()
+
+char *
+gaim_gtk_convert_buddy_icon(plugin, path)
+	Gaim::Plugin plugin
+	const char * path
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gtk/plugins/perl/common/MANIFEST	Sat Sep 02 05:31:10 2006 +0000
@@ -0,0 +1,28 @@
+Gtk.pm
+Gtk.xs
+GtkAccount.xs
+GtkBlist.xs
+GtkConn.xs
+GtkConv.xs
+GtkConvWin.xs
+GtkDebug.xs
+GtkDialogs.xs
+GtkFt.xs
+GtkIMHtml.xs
+GtkIMHtmlToolbar.xs
+GtkLog.xs
+GtkMenuTray.xs
+GtkPlugin.xs
+GtkPluginPref.xs
+GtkPounce.xs
+GtkPrefs.xs
+GtkPrivacy.xs
+GtkRoomlist.xs
+GtkSavedStatuses.xs
+GtkSession.xs
+GtkSound.xs
+GtkStatusBox.xs
+GtkThemes.xs
+GtkUtils.xs
+MANIFEST
+typemap
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gtk/plugins/perl/common/Makefile.PL.in	Sat Sep 02 05:31:10 2006 +0000
@@ -0,0 +1,20 @@
+use 5.006;
+use ExtUtils::MakeMaker;
+
+WriteMakefile(
+    'NAME'          => 'Gaim::Gtk',
+    'VERSION_FROM'  => '@srcdir@/Gtk.pm', # finds $VERSION
+    ($] >= 5.005 ? ## Add these new keywords supported since 5.005
+	('ABSTRACT_FROM' => '@srcdir@/Gtk.pm', # finds $ABSTRACT
+	'AUTHOR'        => 'Etan Reisner <deryni@gmail.com>') :  ()),
+    'DEFINE'        => '@DEBUG_CFLAGS@',
+    'INC'           => '-I. -I@srcdir@ -I@top_srcdir@ -I@top_srcdir@/libgaim -I@top_srcdir@/gtk @GTK_CFLAGS@',
+#    'PREREQ_PM'     => { 'Gaim' => '@VERSION@'},
+    # Do this because the MakeMaker Makefile is dumb, and on clean it moves
+    # Makefile to the default setting for MAKEFILE_OLD which is Makefile.old
+    # but this breaks running make clean more than once in a row.
+    'MAKEFILE_OLD'  => "Makefile",
+    'OBJECT'        => '$(O_FILES)',
+    'TYPEMAPS'      => ["@top_srcdir@/libgaim/plugins/perl/common/typemap"],
+#    'OPTIMIZE'      => '-g', # For debugging.
+);
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gtk/plugins/perl/common/gtkmodule.h	Sat Sep 02 05:31:10 2006 +0000
@@ -0,0 +1,79 @@
+typedef struct group *Gaim__Gtk__Group;
+
+#define group perl_group
+
+#include <glib.h>
+#include <gtk/gtk.h>
+#ifdef _WIN32
+#undef pipe
+#endif
+#include <EXTERN.h>
+#include <perl.h>
+#include <XSUB.h>
+
+#undef group
+
+#include <plugins/perl/common/module.h>
+
+#include "gtkaccount.h"
+#include "gtkblist.h"
+#include "gtkconn.h"
+#include "gtkconv.h"
+#include "gtkconvwin.h"
+#include "gtkdebug.h"
+#include "gtkdialogs.h"
+#include "gtkft.h"
+#include "gtkimhtml.h"
+#include "gtkimhtmltoolbar.h"
+#include "gtklog.h"
+#include "gtkmenutray.h"
+#include "gtkplugin.h"
+#include "gtkpluginpref.h"
+#include "gtkpounce.h"
+#include "gtkprefs.h"
+#include "gtkprivacy.h"
+#include "gtkroomlist.h"
+#include "gtksavedstatuses.h"
+#include "gtksession.h"
+#include "gtksound.h"
+#include "gtkstatusbox.h"
+#include "gtkthemes.h"
+#include "gtkutils.h"
+
+/* gtkaccount.h */
+typedef GaimGtkAccountDialogType			Gaim__Gtk__Account__Dialog__Type;
+
+/* gtkblist.h */
+typedef GaimGtkBuddyList *				Gaim__Gtk__BuddyList;
+typedef gaim_gtk_blist_sort_function			Gaim__Gtk__BuddyList__SortFunction;
+
+/* gtkconv.h */
+typedef GaimGtkConversation *				Gaim__Gtk__Conversation;
+typedef GaimUnseenState					Gaim__UnseenState;
+
+/* gtkconvwin.h */
+typedef GaimGtkWindow *					Gaim__Gtk__Conversation__Window;
+typedef GaimConvPlacementFunc				Gaim__Conversation__PlacementFunc;
+
+/* gtkft.h */
+typedef GaimGtkXferDialog *				Gaim__Gtk__Xfer__Dialog;
+
+/* gtkimhtml.h */
+typedef GtkIMHtml *					Gaim__Gtk__IMHtml;
+typedef GtkIMHtmlButtons					Gaim__Gtk__IMHtml__Buttons;
+typedef GtkIMHtmlFuncs *					Gaim__Gtk__IMHtml__Funcs;
+typedef GtkIMHtmlScalable *					Gaim__Gtk__IMHtml__Scalable;
+typedef GtkIMHtmlSmiley *					Gaim__Gtk__IMHtml__Smiley;
+typedef GtkIMHtmlOptions					Gaim__Gtk__IMHtml__Options;
+
+/* gtkimhtmltoolbar.h */
+typedef GtkIMHtmlToolbar *					Gaim__Gtk__IMHtmlToolbar;
+
+/* gtkmenutray.h */
+typedef GaimGtkMenuTray *					Gaim__Gtk__MenuTray;
+
+/* gtkroomlist.h */
+typedef GaimGtkRoomlistDialog *					Gaim__Gtk__Roomlist__Dialog;
+
+/* gtkstatusbox.h */
+typedef GtkGaimStatusBox *						Gaim__Gtk__StatusBox;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gtk/plugins/perl/common/typemap	Sat Sep 02 05:31:10 2006 +0000
@@ -0,0 +1,21 @@
+TYPEMAP
+Gaim::Conversation::PlacementFunc       T_GaimObj
+Gaim::UnseenState                       T_IV
+Gaim::ButtonOrientation                 T_IV
+
+Gaim::Gtk::Account::Dialog::Type        T_IV
+Gaim::Gtk::BuddyList                    T_GaimObj
+Gaim::Gtk::BuddyList::SortFunction      T_GaimObj
+Gaim::Gtk::Conversation                 T_GaimObj
+Gaim::Gtk::Conversation::Window         T_GaimObj
+Gaim::Gtk::Xfer::Dialog                 T_GaimObj
+Gaim::Gtk::IMHtml                       T_GaimObj
+Gaim::Gtk::IMHtml::Buttons              T_IV
+Gaim::Gtk::IMHtml::Funcs                T_GaimObj
+Gaim::Gtk::IMHtml::Scalable             T_GaimObj
+Gaim::Gtk::IMHtml::Smiley               T_GaimObj
+Gaim::Gtk::IMHtml::Options              T_IV
+Gaim::Gtk::IMHtmlToolbar                T_GaimObj
+Gaim::Gtk::MenuTray                     T_GaimObj
+Gaim::Gtk::Roomlist::Dialog             T_GaimObj
+Gaim::Gtk::StatusBox                    T_GaimObj