1#!/usr/bin/perl
2
3use strict;
4use warnings;
5
6use Tickit;
7use Tickit::Widgets qw( Border Button VBox RadioButton );
8
9Tickit::Style->load_style( <<'EOF' );
10Button {
11  fg: "black";
12  bg: "white";
13}
14EOF
15
16my $border = Tickit::Widget::Border->new(
17   h_border => 10,
18   v_border => 2,
19)
20   ->set_child( my $vbox = Tickit::Widget::VBox->new( spacing => 2, bg => "black" ) );
21
22my @buttons;
23foreach my $colour (qw( red blue green yellow )) {
24   $vbox->add(
25      my $button = Tickit::Widget::Button->new(
26         label => $colour,
27         on_click => sub { $border->set_style( bg => $colour ) },
28      )
29   );
30   push @buttons, $button;
31}
32
33my $tickit = Tickit->new( root => $border );
34
35$vbox->add(
36   my $button = Tickit::Widget::Button->new(
37      label => "Quit",
38      on_click => sub { $tickit->stop },
39   )
40);
41push @buttons, $button;
42
43{
44   my $group = Tickit::Widget::RadioButton::Group->new;
45   $group->set_on_changed( sub {
46      my ( undef, $type ) = @_;
47      $_->set_style( linetype => $type ) for @buttons;
48   });
49
50   $vbox->add( Tickit::Widget::RadioButton->new(
51      label => $_,
52      value => $_,
53      group => $group,
54   ) ) for qw( none single double thick );
55}
56
57$tickit->run;
58