File: beat.pl

package info (click to toggle)
weechat-scripts 20180330-1
  • links: PTS, VCS
  • area: main
  • in suites: buster
  • size: 5,072 kB
  • sloc: python: 44,904; perl: 27,389; ruby: 2,101; lisp: 339; tcl: 244; sh: 8; makefile: 7
file content (106 lines) | stat: -rw-r--r-- 2,908 bytes parent folder | download | duplicates (7)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
#
# Copyright (c) 2010 by Nils Görs <weechatter@arcor.de>
#
# just prints the beat time in Bar-Item.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program.  If not, see <http://www.gnu.org/licenses/>.
#
# Config:
# Add [beat] to your weechat.bar.status.items
# 
# refresh rate in seconds:
# /set plugins.var.perl.beat.refresh <sec>
# history:
# 0.2 wrong string was set to config

use strict;
my $prgname	= "beat";
my $version	= "0.2";
my $description	= "Shows you the Beat-Internet-Time in Bar-Item";
# default values
my $refresh	= "60";	#seconds
my %Hooks	= ();

# first function called by a WeeChat-script.
weechat::register($prgname, "Nils Görs <weechatter\@arcor.de>", $version,
                  "GPL3", $description, "", "");

if (!weechat::config_is_set_plugin("refresh")){
  weechat::config_set_plugin("refresh", $refresh);
}else{
  $refresh = weechat::config_get_plugin("refresh");
}

weechat::hook_config( "plugins.var.perl.$prgname.refresh", 'toggle_refresh', "" );
hook_timer() if ($refresh ne "0");

sub item_update{
      weechat::bar_item_update('beat');
        return weechat::WEECHAT_RC_OK
}

sub show_beat {
    my $time = shift || time();

    unless ( $time =~ /^\d+$/ ) {
        weechat::print("","$prgname: time() format is wrong.");
    }

    return sprintf "@%d", ( ( $time+3600 ) % 86400 ) / 86.4;
}

# check out config settings
sub toggle_refresh{
	$refresh = $_[2];

	if (!weechat::config_is_set_plugin("refresh")){
	  $refresh = 60 ;
	  weechat::config_set_plugin("refresh", $refresh);
	}

	if ($refresh ne "0"){
		if (defined $Hooks{timer}) {
			unhook_timer();
			hook_timer();
			return weechat::WEECHAT_RC_OK;
		}
	}
	if ($refresh eq "0"){
		if (defined $Hooks{timer}) {
			unhook_timer();
		}
	}else{
		if (not defined $Hooks{timer}){
			weechat::config_set_plugin("refresh", "0") unless hook_timer();		# fall back to '0', if hook fails
		}
	}
return weechat::WEECHAT_RC_OK;
}
my $bar_item = "";
sub hook_timer{
	$Hooks{timer} = weechat::hook_timer($refresh * 1000, 60, 0, "item_update", "");
		if ($Hooks{timer} eq '')
		{
			weechat::print("","ERROR: can't enable $prgname, hook failed");
			return 0;
		}
	$bar_item = weechat::bar_item_new($prgname, "show_beat","");
	weechat::bar_item_update('beat');
	return 1;
}
sub unhook_timer{
	weechat::bar_item_remove($bar_item);
	weechat::unhook($Hooks{timer}) if %Hooks;
	%Hooks = ();
}