diff options
author | dakkar <dakkar@luxion> | 2008-04-27 08:34:43 +0000 |
---|---|---|
committer | dakkar <dakkar@luxion> | 2008-04-27 08:34:43 +0000 |
commit | 03e949ec185faa7db5afba534f9d67aeaa6fa5f6 (patch) | |
tree | 3d824039b253cd911669551551c36f43c04f8fc3 /broad_away.pl | |
download | broad_away-03e949ec185faa7db5afba534f9d67aeaa6fa5f6.tar.gz broad_away-03e949ec185faa7db5afba534f9d67aeaa6fa5f6.tar.bz2 broad_away-03e949ec185faa7db5afba534f9d67aeaa6fa5f6.zip |
import dello script per sincronizzare gli stati
Diffstat (limited to 'broad_away.pl')
-rw-r--r-- | broad_away.pl | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/broad_away.pl b/broad_away.pl new file mode 100644 index 0000000..2fcf067 --- /dev/null +++ b/broad_away.pl @@ -0,0 +1,59 @@ +#!/usr/bin/perl +use strict; +use warnings; +use Net::DBus; + +{my $pidgin; + sub setup { + #Xchat::print('broad_away::setup called'); + my $bus=Net::DBus->find() + or return; + my $pidgin_s=$bus->get_service('im.pidgin.purple.PurpleService') + or return; + $pidgin=$pidgin_s->get_object('/im/pidgin/purple/PurpleObject', + 'im.pidgin.purple.PurpleInterface') + or return; + } + sub pidgin { + setup unless $pidgin; + return $pidgin; + } +} + +my $prev_status; +sub set_away { + my $pidgin=pidgin or return Xchat::EAT_NONE; + + $prev_status=$pidgin->PurpleSavedstatusGetCurrent() + unless defined $prev_status; + + my $status=$pidgin->PurpleSavedstatusFind($_[1][1]); + if (!$status) { + $status=$pidgin->PurpleSavedstatusNew(undef,5); # away + $pidgin->PurpleSavedstatusSetMessage($status,$_[1][1]); + + } + $pidgin->PurpleSavedstatusActivate($status); + return Xchat::EAT_NONE; +} + +sub set_back { + my $pidgin=pidgin or return Xchat::EAT_NONE; + + my $status; + if (!defined $prev_status) { + $status=$pidgin->PurpleSavedstatusFindTransientByTypeAndMessage(2,undef); + } + else { + $status=$prev_status; + $prev_status=undef; + } + $pidgin->PurpleSavedstatusActivate($status); + return Xchat::EAT_NONE; +} + +Xchat::register('broad away','0.1','broadcast the away status onto Pidgin'); + +Xchat::hook_command('away',\&set_away); +Xchat::hook_command('back',\&set_back); + |