From 03e949ec185faa7db5afba534f9d67aeaa6fa5f6 Mon Sep 17 00:00:00 2001 From: dakkar Date: Sun, 27 Apr 2008 08:34:43 +0000 Subject: import dello script per sincronizzare gli stati --- broad_away.pl | 59 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 broad_away.pl 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); + -- cgit v1.2.3