# # 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 warnings; use strict; package Curses::Toolkit::Widget::VPaned; { $Curses::Toolkit::Widget::VPaned::VERSION = '0.210'; } # ABSTRACT: a container with two panes arranged horizontally use parent qw(Curses::Toolkit::Widget::Paned); use Params::Validate qw(SCALAR ARRAYREF HASHREF CODEREF GLOB GLOBREF SCALARREF HANDLE BOOLEAN UNDEF validate validate_pos); our @EXPORT_OK = qw(VPaned); our %EXPORT_TAGS = (all => [qw(VPaned)]); sub VPaned { 'Curses::Toolkit::Widget::VPaned' } sub _p1 { my ( $self, $c ) = @_; return $c->get_y1(); } sub _p2 { my ( $self, $c ) = @_; return $c->get_x2(); } sub _p3 { my ( $self, $c ) = @_; return $c->height(); } sub _p4 { my ( $self, $c, $gp ) = @_; return ( y2 => $c->get_y1() + $gp ); } sub _p5 { my ( $self, $c, $gp, $gw ) = @_; return ( y1 => $c->get_y1() + $gp + $gw ); } sub _p6 { my ( $self, $gp, $gw ) = @_; return ( y2 => $gp + $gw, x2 => 1 ); } sub _p7 { my ( $self, $theme, $c, $i, $gp, $attr ) = @_; $theme->draw_hline( $c->get_x1(), $c->get_y1() + $gp + $i, $c->width(), $attr ); return; } sub _p8 { my ( $self, $c, $gp, $gw ) = @_; return ( y2 => $c->get_y1() + $gp + $gw ); } sub _p9 { my ( $self, $c ) = @_; return ( x2 => $c->get_x2() ); } sub _p10 { my ( $self, $c ) = @_; return ( y1 => $c->get_y1() ); } sub _p11 { my ( $self, $c1, $c2 ) = @_; return ( y2 => $c1->get_y1() + $c1->height() + $c2->height() ); } sub _p12 { my ( $self, $c ) = @_; return ( x2 => $c->get_x1() + 1 ); } sub _p13 { my ( $self, $c1, $c2 ) = @_; use List::Util qw(max); return ( x2 => max( $c1->get_x2(), $c2->get_x2() ) ); } 1; __END__ =pod =head1 NAME Curses::Toolkit::Widget::VPaned - a container with two panes arranged horizontally =head1 VERSION version 0.210 =head1 DESCRIPTION This widget contain 2 widgets. The children are packed horizontally. =head1 Appearence With a border +----------+-----------+ | | | | Widget 1 | Widget 2 | | | | | | | +----------+-----------+ =head1 CONSTRUCTOR =head2 new input : none output : a Curses::Toolkit::Widget::VPaned =head1 METHODS =head2 add1 Add a widget in the upper box input : the child widget output : the current widget (not the child widget) =head2 add2 Add a widget in the lower box input : the child widget output : the current widget (not the child widget) =head2 set_gutter_position Set the position of the gutter from the top input : the position (an integer) output : the current widget (not the child widget) =head2 get_gutter_position Return the position of the gutter from the top input : none output : the current gutter position =head2 get_desired_space Given a coordinate representing the available space, returns the space desired input : a Curses::Toolkit::Object::Coordinates object output : a Curses::Toolkit::Object::Coordinates object =head2 get_minimum_space Given a coordinate representing the available space, returns the minimum space needed to properly display itself input : a Curses::Toolkit::Object::Coordinates object output : a Curses::Toolkit::Object::Coordinates object =head1 AUTHOR Damien "dams" Krotkine =head1 COPYRIGHT AND LICENSE 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. =cut