CodeManager
view release on metacpan or search on metacpan
lib/Prima/CodeManager/Notebooks.pm view on Meta::CPAN
sub tabIndex {($#_)?($_[0]-> {tabSet}-> tabIndex( $_[1])) :return $_[0]-> {tabSet}-> tabIndex}
sub pageIndex {($#_)?($_[0]-> set_page_index ( $_[1])) :return $_[0]-> {notebook}-> pageIndex}
sub tabs {($#_)?(shift-> set_tabs ( @_ )) :return $_[0]-> get_tabs}
################################################################################
package Prima::CodeManager::ScrollNotebook::Client;
use vars qw(@ISA);
@ISA = qw(Prima::CodeManager::Notebook);
sub profile_default
{
my $def = $_[0]-> SUPER::profile_default;
my %prf = (
geometry => gt::Pack,
packInfo => { expand => 1, fill => 'both'},
);
@$def{keys %prf} = values %prf;
return $def;
}
#-----------------------------------------------------------------------------------
sub geomSize
{
return $_[0]-> SUPER::geomSize unless $#_;
my $self = shift;
$self-> SUPER::geomSize( @_);
$self-> owner-> owner-> ClientWindow_geomSize( $self, @_);
}
################################################################################
package Prima::CodeManager::ScrollNotebook;
use vars qw(@ISA);
@ISA = qw(Prima::ScrollGroup);
for ( qw(pageIndex insert_page delete_page),
keys %Prima::CodeManager::TabbedNotebook::notebookProps) {
eval <<GENPROC;
sub $_ { return shift-> {client}-> $_(\@_); }
GENPROC
}
sub profile_default
{
return {
%{Prima::CodeManager::Notebook-> profile_default},
%{$_[ 0]-> SUPER::profile_default},
clientClass => 'Prima::CodeManager::ScrollNotebook::Client',
}
}
################################################################################
package Prima::CodeManager::TabbedScrollNotebook::Client;
use vars qw(@ISA);
@ISA = qw(Prima::CodeManager::ScrollNotebook);
sub update_geom_size
{
my ( $self, $x, $y) = @_;
my $owner = $self-> owner;
return unless $owner-> packPropagate;
my @o = $owner-> size;
my @s = $self-> get_virtual_size;
$owner-> geomSize( $o[0] - $s[0] + $x, $o[1] - $s[1] + $y);
}
################################################################################
package Prima::CodeManager::TabbedScrollNotebook;
use vars qw(@ISA);
@ISA = qw(Prima::CodeManager::TabbedNotebook);
sub profile_default
{
return {
%{$_[ 0]-> SUPER::profile_default},
notebookClass => 'Prima::CodeManager::TabbedScrollNotebook::Client',
clientProfile => {},
clientDelegations => [],
clientSize => [ 100, 100],
}
}
#-----------------------------------------------------------------------------------
sub profile_check_in
{
my ( $self, $p, $default) = @_;
$self-> SUPER::profile_check_in( $p, $default);
$p-> {notebookProfile}-> {clientSize} = $p-> {clientSize}
if exists $p-> {clientSize} and not exists $p-> {notebookProfile}-> {clientSize};
if ( exists $p-> {clientProfile}) {
%{$p-> {notebookProfile}-> {clientProfile}} = (
($default-> {notebookProfile}-> {clientProfile} ?
%{$default-> {notebookProfile}-> {clientProfile}} : ()),
%{$p-> {clientProfile}},
);
}
if ( exists $p-> {clientDelegations}) {
@{$p-> {notebookProfile}-> {clientDelegations}} = (
( $default-> {notebookProfile}-> {clientDelegations} ?
@{$default-> {notebookProfile}-> {clientDelegations}} : ()),
@{$p-> {clientDelegations}},
);
}
}
#-----------------------------------------------------------------------------------
sub client { shift-> {notebook}-> client }
#-----------------------------------------------------------------------------------
sub packPropagate
{
return shift-> SUPER::packPropagate unless $#_;
my ( $self, $pack_propagate) = @_;
( run in 1.408 second using v1.01-cache-2.11-cpan-df04353d9ac )