1#!/usr/bin/perl
2
3use strict;
4use warnings;
5
6use Tickit;
7
8use Tickit::Widgets qw( GridBox Frame HBox Entry Static Button CheckButton RadioButton );
9Tickit::Style->load_style( <<'EOF' );
10Entry:focus {
11   bg: "blue";
12   b: 1;
13}
14
15Frame {
16   linetype: "single";
17}
18Frame:focus-child {
19   frame-fg: "red";
20}
21
22CheckButton:focus {
23   check-bg: "blue";
24}
25
26RadioButton:focus {
27   tick-bg: "blue";
28}
29EOF
30
31my $gridbox = Tickit::Widget::GridBox->new(
32   style => {
33      row_spacing => 1,
34      col_spacing => 2,
35   },
36);
37
38foreach my $row ( 0 .. 2 ) {
39   $gridbox->add( $row, 0, Tickit::Widget::Static->new( text => "Entry $row" ) );
40   $gridbox->add( $row, 1, Tickit::Widget::Entry->new, col_expand => 1 );
41}
42
43{
44   $gridbox->add( 3, 0, Tickit::Widget::Static->new( text => "Buttons" ) );
45   $gridbox->add( 3, 1, Tickit::Widget::Frame->new(
46      child => my $hbox = Tickit::Widget::HBox->new( spacing => 2 ),
47   ) );
48
49   foreach my $label (qw( One Two Three )) {
50      $hbox->add( Tickit::Widget::Button->new( label => $label, on_click => sub {} ), expand => 1 );
51   }
52}
53
54{
55   $gridbox->add( 4, 0, Tickit::Widget::Static->new( text => "Checks" ) );
56   $gridbox->add( 4, 1, Tickit::Widget::Frame->new(
57      child => my $hbox = Tickit::Widget::HBox->new( spacing => 2 ),
58   ) );
59
60   foreach ( 0 .. 2 ) {
61      $hbox->add( Tickit::Widget::CheckButton->new( label => "Check $_" ) );
62   }
63}
64
65{
66   $gridbox->add( 5, 0, Tickit::Widget::Static->new( text => "Radios" ) );
67   $gridbox->add( 5, 1, Tickit::Widget::Frame->new(
68      child => my $hbox = Tickit::Widget::HBox->new( spacing => 2 ),
69   ) );
70
71   my $group = Tickit::Widget::RadioButton::Group->new;
72   foreach ( 0 .. 2 ) {
73      $hbox->add( Tickit::Widget::RadioButton->new( label => "Radio $_", group => $group ) );
74   }
75}
76
77Tickit->new( root => $gridbox )->run;
78