summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordakkar <dakkar@luxion>2008-04-27 08:34:43 +0000
committerdakkar <dakkar@luxion>2008-04-27 08:34:43 +0000
commit03e949ec185faa7db5afba534f9d67aeaa6fa5f6 (patch)
tree3d824039b253cd911669551551c36f43c04f8fc3
downloadbroad_away-03e949ec185faa7db5afba534f9d67aeaa6fa5f6.tar.gz
broad_away-03e949ec185faa7db5afba534f9d67aeaa6fa5f6.tar.bz2
broad_away-03e949ec185faa7db5afba534f9d67aeaa6fa5f6.zip
import dello script per sincronizzare gli stati
-rw-r--r--broad_away.pl59
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);
+