# HG changeset patch # User Sean Egan # Date 1022636680 0 # Node ID c98c1e0281ffc37506849cb4c80b2a45b4583fd6 # Parent 86fdd015f40e577824935943c8e7b0654363364d [gaim-migrate @ 3298] Perl can play sounds! committer: Tailor Script diff -r 86fdd015f40e -r c98c1e0281ff ChangeLog --- a/ChangeLog Wed May 29 01:23:38 2002 +0000 +++ b/ChangeLog Wed May 29 01:44:40 2002 +0000 @@ -22,7 +22,8 @@ Priddy and Paul Miller) * Zephyr fixes (thanks, Arun A. Tharuvai) * Aliases in buddy ticker - + * Perl scripts can play Gaim sounds (thanks Andrew Rodland) + version 0.58 (05/13/2002): * Bulgarian translation added (Thanks, Igel Itzo) * Traditional Chinese translation added (Thanks, Paladin Liu) diff -r 86fdd015f40e -r c98c1e0281ff plugins/PERL-HOWTO --- a/plugins/PERL-HOWTO Wed May 29 01:23:38 2002 +0000 +++ b/plugins/PERL-HOWTO Wed May 29 01:44:40 2002 +0000 @@ -141,3 +141,19 @@ once, so if you want to keep calling function, keep readding the handler. Args is a string that you'd like to have passed to your timeout handler; it's optional. + +GAIM::play_sound(int sound) + Plays a sound using whatever method the user has selected. The argument is + one of the following numbers: + + 0 Buddy logs in + 1 Buddy logs out + 2 Message received + 3 Message received begins conversation + 4 Message sent + 5 Person enters chat + 6 Person leaves chat + 7 You talk in chat + 8 Others talk in chat + 9 Default buddy pounce sound + 10 Someone says your name in chat diff -r 86fdd015f40e -r c98c1e0281ff src/conversation.c --- a/src/conversation.c Wed May 29 01:23:38 2002 +0000 +++ b/src/conversation.c Wed May 29 01:44:40 2002 +0000 @@ -2822,7 +2822,12 @@ gtk_object_set_user_data(GTK_OBJECT(entry), c); gtk_text_set_editable(GTK_TEXT(entry), TRUE); gtk_text_set_word_wrap(GTK_TEXT(entry), TRUE); - gtk_widget_set_usize(entry, conv_size.width - 20, MAX(conv_size.entry_height, 25)); + /* I hate hackish workarounds. According to Ari Pollak, a gtk bug causes Gaim to loop + * infinitely if the entry is smaller than the text height. This is a hackish workaround */ + gtk_widget_set_usize(entry, conv_size.width - 20, + MAX(conv_size.entry_height, + gdk_char_height(gtk_widget_get_default_style()->font, '0') + + gtk_widget_get_default_style()->font->ascent + 1)); gtk_signal_connect(GTK_OBJECT(entry), "activate", GTK_SIGNAL_FUNC(send_callback), c); gtk_signal_connect(GTK_OBJECT(entry), "key_press_event", GTK_SIGNAL_FUNC(keypress_callback), c); diff -r 86fdd015f40e -r c98c1e0281ff src/perl.c --- a/src/perl.c Wed May 29 01:23:38 2002 +0000 +++ b/src/perl.c Wed May 29 01:44:40 2002 +0000 @@ -105,6 +105,9 @@ XS(XS_GAIM_add_event_handler); /* when servers talk */ XS(XS_GAIM_add_timeout_handler); /* figure it out */ +/* play sound */ +XS(XS_GAIM_play_sound); /*play a sound*/ + void xs_init() { char *file = __FILE__; @@ -238,6 +241,8 @@ newXS ("GAIM::add_event_handler", XS_GAIM_add_event_handler, "GAIM"); newXS ("GAIM::add_timeout_handler", XS_GAIM_add_timeout_handler, "GAIM"); + + newXS ("GAIM::play_sound", XS_GAIM_play_sound, "GAIM"); } void perl_end() @@ -617,6 +622,8 @@ XSRETURN(0); } + + XS (XS_GAIM_print_to_chat) { struct gaim_connection *gc; @@ -833,6 +840,18 @@ XSRETURN_EMPTY; } +XS (XS_GAIM_play_sound) +{ + int id; + dXSARGS; + + id = SvIV(ST(0)); + + play_sound(id); + + XSRETURN_EMPTY; +} + extern void unload_perl_scripts() { perl_end();