$rend = $self->{press} ? "\x1b[m" : "\x1b[30;46m";
}
- $cmd .= "$rend\x1b[K" . $self->locale_encode ($item->{text}) . "\015\012";
+ $cmd .= "$rend\x1b[K";
+ $cmd .= $self->locale_encode ($item->{render}->($item));
+ $cmd .= "\015\012";
$row++;
}
package urxvt;
+use utf8;
use strict;
use Scalar::Util ();
+use List::Util ();
our $TERM;
our @HOOKNAME;
sub add_button {
my ($self, $text, $cb) = @_;
- $self->add_item ({ type => "button", text => "[ $text ]", activate => $cb });
+ $self->add_item ({ type => "button", text => "[ $text ]", activate => $cb,
+ render => sub { $_[0]{text} },
+ });
+}
+
+sub add_toggle {
+ my ($self, $text, $cb, $value) = @_;
+
+ $self->add_item ({ type => "button", text => " $text", value => $value,
+ render => sub { ($_[0]{value} ? "✔" : " ") . substr $_[0]{text}, 1 },
+ activate => sub { $cb->($_[0]{value} = !$_[0]{value}); },
+ });
}
sub show {