#!/usr/bin/env perl
#
# This file is part of Curses-Toolkit
#
# This software is copyright (c) 2011 by Damien "dams" Krotkine.
#
# This is free software; you can redistribute it and/or modify it under
# the same terms as the Perl 5 programming language system itself.
#
use strict;
use warnings;
use FindBin qw( $Bin );
use lib "$Bin/../../lib";
use POE::Component::Curses;
use Curses::Toolkit::Widget::Window;
use Curses::Toolkit::Widget::Button;
use Curses::Toolkit::Widget::VBox;
use Curses::Toolkit::Widget::HProgressBar;
use Curses::Toolkit::Widget::Border;
my $c = 0;
my @themes = qw(Curses::Toolkit::Theme::Default
Curses::Toolkit::Theme::Default::Color::BlueWhite
Curses::Toolkit::Theme::Default::Color::Pink
Curses::Toolkit::Theme::Default::Color::Yellow);
my @bars = map {
Curses::Toolkit::Widget::HProgressBar->new
->set_position(int(rand() * 100));
} (1..10);
# spawn a root window
my $root = POE::Component::Curses->spawn();
# adds some widget
$root->add_window(
my $window = Curses::Toolkit::Widget::Window
->new()
->set_name('main_window')
->add_widget(
my $vbox = Curses::Toolkit::Widget::VBox->new
)
->set_coordinates(x1 => 0, y1 => 0,
x2 => '100%',
y2 => '100%',
)
);
$window->set_theme_property(border_width => 0);
foreach my $bar (@bars) {
my $bordered_bar = Curses::Toolkit::Widget::Border->new->add_widget($bar);
$bordered_bar->set_theme_name($themes[$c++]);
$c == 4 and $c = 0;
$vbox->pack_end( $bordered_bar, { expand => 0 } );
$bar->set_label_type('none');
$bar->set_theme_property({ char_done => '=',
char_left => ' ',
}
);
}
$root->add_delay(0.5, \&update_bars, $root, \@bars);
# start main loop
POE::Kernel->run();
sub update_bars {
my ($root, $bars) = @_;
foreach my $bar (@bars) {
$bar->set_position($bar->get_position + (rand() > 0.5 ? 1 : -1 ));
}
$root->add_delay(0.5, \&update_bars, $root, \@bars);
}