Mercurial > pidgin
diff pidgin/gtkdialogs.c @ 31730:4bdf4e5e6d67
Add a plugin information dialog that shows information for all plugins, even
hidden plugins, loader plugins, and protocol plugins.
author | John Bailey <rekkanoryo@rekkanoryo.org> |
---|---|
date | Sat, 09 Jul 2011 22:27:13 +0000 |
parents | e2c6e4fc3c84 |
children | eaa0c30d58ca |
line wrap: on
line diff
--- a/pidgin/gtkdialogs.c Fri Jul 08 01:37:00 2011 +0000 +++ b/pidgin/gtkdialogs.c Sat Jul 09 22:27:13 2011 +0000 @@ -31,6 +31,7 @@ #include "debug.h" #include "notify.h" +#include "plugin.h" #include "prpl.h" #include "request.h" #include "util.h" @@ -787,6 +788,49 @@ g_free(tmp); } +void pidgin_dialogs_plugins_info(void) +{ + GString *str; + GList *l = NULL; + PurplePlugin *plugin = NULL; + char *title = g_strdup_printf(_("%s Plugin Information"), PIDGIN_NAME); + const char *pname, *pauthor, *pver, *pwebsite, *pid; + gboolean ploaded, punloadable; + static GtkWidget *plugins_info = NULL; + + str = g_string_sized_new(4096); + + g_string_append_printf(str, "<FONT SIZE=\"4\">%s</FONT><BR/>", + _("Plugin Information")); + + for(l = purple_plugins_get_all(); l; l = l->next) { + plugin = (PurplePlugin *)l->data; + + pname = purple_plugin_get_name(plugin); + pauthor = purple_plugin_get_author(plugin); + pver = purple_plugin_get_version(plugin); + pwebsite = purple_plugin_get_homepage(plugin); + pid = purple_plugin_get_id(plugin); + punloadable = purple_plugin_is_unloadable(plugin); + ploaded = purple_plugin_is_loaded(plugin); + + g_string_append_printf(str, + "<FONT SIZE=\"3\"><B>%s</B></FONT><BR/><FONT SIZE=\"2\">" + "\t<B>Author:</B> %s<BR/>\t<B>Version:</B> %s<BR/>" + "\t<B>Website:</B> %s<BR/>\t<B>ID String:</B> %s<BR/>" + "\t<B>Loadable:</B> %s<BR/>\t<B>Loaded:</B> %s<BR/>" + "<BR/></FONT>", pname, pauthor ? pauthor : "(null)", + pver, pwebsite, pid, + punloadable ? "<FONT COLOR=\"#FF0000\"><B>No</B></FONT>" : "Yes", + ploaded ? "Yes" : "No"); + } + + plugins_info = pidgin_build_help_dialog(title, "plugins_info", str); + g_signal_connect(G_OBJECT(plugins_info), "destroy", + G_CALLBACK(gtk_widget_destroyed), &plugins_info); + g_free(title); +} + static void pidgin_dialogs_im_cb(gpointer data, PurpleRequestFields *fields) {