diff --git a/code/Widget/time.widget b/code/Widget/time.widget new file mode 100644 index 000000000..540d49f7b --- /dev/null +++ b/code/Widget/time.widget @@ -0,0 +1,130 @@ +CodeDef time Widget 1 +CodeDef time Description Time selector +CodeDef time Routine <{name}; + my $val = $opt->{value}; + + my $now; + if($opt->{time} and $opt->{time_adjust} =~ /([-+]?)(\d+)/) { + my $sign = $1 || '+'; + my $adjust = $2; + $adjust *= 3600; + $now = time; + $now += $sign eq '+' ? $adjust : -$adjust; + } + + my $sel_extra; + my $opt_extra; + for(qw/ class style extra /) { + my $stag = "select_$_"; + my $otag = "option_$_"; + my $selapp; + my $optapp; + + if($_ eq 'extra') { + $selapp = " $opt->{$stag}"; + $optapp = " $opt->{$otag}"; + } + else { + $selapp = qq{ $_="$opt->{$stag}"}; + $optapp = qq{ $_="$opt->{$otag}"}; + } + $sel_extra .= $opt->{$stag} ? $selapp : ''; + $opt_extra .= $opt->{$otag} ? $optapp : ''; + } + + my @t = localtime($now || time); + if (not $val) { + $t[2]++ if $t[2] < 23; + $val = POSIX::strftime("%H00", @t); + } + + my $sel = 0; + my $out = qq{"; + return $out; +} +EOR