Mercurial > pidgin
changeset 4103:caa7701b67d1
[gaim-migrate @ 4318]
(17:19:40) Ashaman TU: I don't suppose you guys could work the idlemaker pluggin into gaim?
committer: Tailor Script <tailor@pidgin.im>
author | Sean Egan <seanegan@gmail.com> |
---|---|
date | Thu, 19 Dec 2002 23:05:22 +0000 |
parents | c5ce82228a2f |
children | 1fb22bf10b4f |
files | plugins/Makefile.am plugins/idle.c |
diffstat | 2 files changed, 130 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/plugins/Makefile.am Thu Dec 19 20:38:12 2002 +0000 +++ b/plugins/Makefile.am Thu Dec 19 23:05:22 2002 +0000 @@ -13,7 +13,7 @@ plugindir = $(libdir)/gaim -plugin_DATA = autorecon.so chatlist.so iconaway.so notify.so spellchk.so history.so timestamp.so +plugin_DATA = autorecon.so chatlist.so iconaway.so notify.so spellchk.so history.so timestamp.so idle.c $(plugin_DATA): $(top_srcdir)/src/gaim.h @@ -29,4 +29,4 @@ EXTRA_DIST = ChangeLog PERL-HOWTO HOWTO SIGNALS autorecon.c filectl.c iconaway.c \ notify.c spellchk.c gaim.pl mailchk.c chatlist.c gtik.c error.c \ - history.c timestamp.c fortuneprofile.pl + history.c timestamp.c fortuneprofile.pl idle.c
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/plugins/idle.c Thu Dec 19 23:05:22 2002 +0000 @@ -0,0 +1,128 @@ +/* a nifty little plugin to set your idle time to whatever you want it to be. + * useful for almost nothing. mostly just a demo plugin. but it's fun to have + * 40-day idle times. + */ + +#define GAIM_PLUGINS +#include "multi.h" +#include "gaim.h" +#include <sys/time.h> +#include "pixmaps/ok.xpm" + +static struct gaim_connection *gc = NULL; + +char *name() { + return "I'dle Mak'er"; +} + +char *description() { + return "Allows you to hand-configure how long you've been idle for"; +} + +char *gaim_plugin_init(GModule *module) { + return NULL; +} + +static void set_idle(GtkWidget *button, GtkWidget *spinner) { + time_t t; + int tm = CLAMP(gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(spinner)), 0, G_MAXINT); + if (!gc) { + return; + } + debug_printf("setting idle time for %s to %d\n", gc->username, tm); + time(&t); + t -= 60 * tm; + gc->lastsent = t; + serv_set_idle(gc, 60 * tm); + gc->is_idle = 0; +} + +static void sel_gc(GtkWidget *opt, struct gaim_connection *g) { + gc = g; +} + +static void make_connect_menu(GtkWidget *box) { + GtkWidget *optmenu, *menu, *opt; + GSList *c = connections; + struct gaim_connection *g; + + optmenu = gtk_option_menu_new(); + gtk_box_pack_start(GTK_BOX(box), optmenu, FALSE, FALSE, 5); + + menu = gtk_menu_new(); + + while (c) { + g = (struct gaim_connection *)c->data; + opt = gtk_menu_item_new_with_label(g->username); + gtk_signal_connect(GTK_OBJECT(opt), "activate", + GTK_SIGNAL_FUNC(sel_gc), g); + gtk_menu_append(GTK_MENU(menu), opt); + gtk_widget_show(opt); + c = g_slist_next(c); + } + + gtk_option_menu_remove_menu(GTK_OPTION_MENU(optmenu)); + gtk_option_menu_set_menu(GTK_OPTION_MENU(optmenu), menu); + gtk_option_menu_set_history(GTK_OPTION_MENU(optmenu), 0); + + if (connections) + gc = connections->data; + else + gc = NULL; +} + +struct gaim_plugin_description desc; +struct gaim_plugin_description *gaim_plugin_desc() { + desc.api_version = PLUGIN_API_VERSION; + desc.name = g_strdup("I'dle Mak'er"); + desc.version = g_strdup(VERSION); + desc.description = g_strdup("Allows you to hand-configure how long you've been idle for"); + desc.authors = g_strdup("Eric Warmenhoven <eric@warmenhoven.org>"); + desc.url = g_strdup(WEBSITE); + return &desc; +} + +GtkWidget *gaim_plugin_config_gtk() { + GtkWidget *ret; + GtkWidget *frame, *label; + GtkWidget *vbox, *hbox; + GtkAdjustment *adj; + GtkWidget *spinner, *button; + + ret = gtk_vbox_new(FALSE, 18); + gtk_container_set_border_width(GTK_CONTAINER(ret), 12); + + frame = make_frame(ret, _("Idle Time")); + + vbox = gtk_vbox_new(FALSE, 5); + gtk_container_add(GTK_CONTAINER(frame), vbox); + + hbox = gtk_hbox_new(FALSE, 5); + gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 5); + + label = gtk_label_new("Set"); + gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 5); + + make_connect_menu(hbox); + + label = gtk_label_new("idle for"); + gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 5); + + adj = (GtkAdjustment *)gtk_adjustment_new(10, 0, G_MAXINT, 1, 0, 0); + spinner = gtk_spin_button_new(adj, 0, 0); + gtk_box_pack_start(GTK_BOX(hbox), spinner, TRUE, TRUE, 0); + + label = gtk_label_new("minutes."); + gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 5); + + hbox = gtk_hbox_new(TRUE, 5); + gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 5); + + button = gtk_button_new_with_mnemonic(_("_Set")); + gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 5); + gtk_signal_connect(GTK_OBJECT(button), "clicked", GTK_SIGNAL_FUNC(set_idle), spinner); + + gtk_widget_show_all(ret); + + return ret; +}