NAME
Curses::Toolkit::Widget::Window - a window
VERSION
version 0.100680
Appearence
+-[ title ]------------+
| |
| |
| |
| |
| |
| |
| |
| |
+----------------------#
DESCRIPTION
This is a window widget. This widget is important, as it's the only one that you can add on the root window. So all your graphical interface should be contained in one or more window.
SYNOPSIS
# create a window in the center of the screen
my $window = Curses::Toolkit::Widget::Window
->new()
->set_name('main_window')
->set_title('This is a title');
->set_coordinates(x1 => '25%', y1 => '25%'
x2 => '75%', y2 => '75%');
# create a fullscreen window
my $window = Curses::Toolkit::Widget::Window
->new()
->set_name('main_window')
->set_theme_property(border_width => 0); # set no border
->set_coordinates(x1 => 0, y1 => 0
x2 => '100%', y2 => '100%');
# add one widget to the window. You can add only one widget to the window.
# See L<Curses::Toolkit::Widget::VBox> and <Curses::Toolkit::Widget::HBox> to
# pack widgets
$window->add_widget($vbox)
# add the window to the root window. See L<Curses::Toolkit> to see how to
# spawn a root window
$root->add_window($window);
CONSTRUCTOR
new
input : none
output : a Curses::Toolkit::Widget::Window
set_title
Set the title of the window
input : the title
output : the window widget
get_title
Get the title of the window
input : none
output : the window title
set_coordinates
Set the coordinates (see Curses::Toolkit::Object::Coordinates )
You can also set coordinates in percent of the root window width / height :
input : x1 : top left x (can be in percent ( ex : '42%' ) )
y1 : top left y (can be in percent ( ex : '42%' ) )
x2 : right bottom x (can be in percent ( ex : '42%' ) )
y2 : right bottom y (can be in percent ( ex : '42%' ) )
OR
input : x1 : top left x (can be in percent ( ex : '42%' ) )
y1 : top left y (can be in percent ( ex : '42%' ) )
width : width (can be in percent ( ex : '42%' ) )
height : heigth (can be in percent ( ex : '42%' ) )
OR
input : x1 : sub { ... } # returns top left x
y1 : sub { ... } # returns top left y
x2 : sub { ... } # returns right bottom x
y2 : sub { ... } # returns right bottom y
OR
input : a Curses::Toolkit::Object::Coordinates object
set_root_window
Sets the root window ( the root toolkit object) to which this window is added
input : the root toolkit object (Curses::Toolkit)
output : the window
get_root_window
Get the root window
input : none
output : the root toolkit object (Curses::Toolkit)
bring_to_front()
$window->bring_to_front()
Bring the window to front
input : none
output : the window widget
bring_to_back()
$window->bring_to_back()
Bring the window to the back
input : none
output : none
set_focused_widget
$window->set_focused_widget($widget);
Set the widget that has focus.
input : a Curses::Toolkit::Widget that is into this window
output : the window
get_focused_widget
my $widget = $window->get_focused_widget();
Gets the focused widget.
input : none
output : the focused Curses::Toolkit::Widget
draw
Draw the widget. You shouldn't use that, the mainloop will take care of it. If you are not using any mainloop, you should call draw() on the root window. See Curses::Toolkit
get_visible_shape
Gets the Coordinates of the part of the window which is visible
input : none
output : the shape (Curses::Toolkit::Object::Coordinates)
set_type
Set the type of the window. Default is 'normal'. Can be :
input : SCALAR : the type, one of 'normal', 'menu'
output : the window widget
get_type
Get the type of the window
input : none
output : the type
Theme related properties
To set/get a theme properties, you should do :
$window->set_theme_property(property_name => $property_value);
$value = $window->get_theme_property('property_name');
Here is the list of properties related to the window, that can be changed in the associated theme. See the Curses::Toolkit::Theme class used for the default (default class to look at is Curses::Toolkit::Theme::Default)
Don't forget to look at properties from the parent class, as these are also inherited from !
border_width (inherited)
The width of the border of the window.
Example : # set window to have no border $button->set_theme_property(border_width => 0 );
title_width
The width (or the height if the title is displayed vertically) of the window that will be use to display the title, in percent.
Example : # the title can take up to 80% of the windows border $window->set_theme_property(title_width => 80 );
title_bar_position
Can be 'top', 'bottom', 'left', 'right', sets the position of the title bar on the window border Example : # The title will appear on the left $window->set_theme_property(title_position => 'left');
title_position
Specifies if the title should be on the left/top, center or right/bottom on the title bar. Can be 'left', 'center' or 'right'
title_brackets_characters
An ARRAYREF of 2 strings (usually 1 character long), the first one is displayed before the title, the second one is used after the title.
Example : # The title will appear <like that> $window->set_theme_property(title_brackets_characters => [ '<', '>' ]);
title_left_offset
If title_position is 'left', this offset will be used to move the title on the right
title_right_offset
If title_position is 'right', this offset will be used to move the title on the left
title_animation
If set to 1, when the title is too big to be displayed in the window title bar, an animation will make the title loop back and forth.
title_loop_duration
If the title is too big to be displayed in the window title bar, an animation will make the title loop back and forth. This properties let's you specify what should be the complete animation duration. It's in seconds, but fractions are accepted
title_loop_pause
This sets the duration the loop animation should pause before going to the other direction. It's in seconds, but fractions are accepted
AUTHOR
Damien "dams" Krotkine
COPYRIGHT AND LICENSE
This software is copyright (c) 2008 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.