App-Asciio
view release on metacpan or search on metacpan
lib/App/Asciio/Stencil.pm view on Meta::CPAN
package App::Asciio::Stencil ;
#~ package App::Asciio ;
use strict ;
use warnings ;
use Readonly ;
BEGIN
{
use Sub::Exporter -setup => { exports => [ qw(create_box create_element) ] } ;
}
sub create_box
{
my (%element_definition) = @_ ;
use App::Asciio::stripes::editable_box2 ;
my $element = new App::Asciio::stripes::editable_box2
({
TEXT_ONLY => '',
TITLE => '',
EDITABLE => 1,
RESIZABLE => 1,
%element_definition,
}) ;
unless($element_definition{WITH_FRAME})
{
# default object attribute is with frame, remove it
my $box_type = $element->get_box_type() ;
my ($title, $text) = $element->get_text() ;
Readonly my $TITLE_SEPARATOR => 1 ;
Readonly my $DISPLAY => 0 ;
for (0 .. $#$box_type)
{
next if $_ == $TITLE_SEPARATOR && $title eq '' ;
$box_type->[$_][$DISPLAY] = 0 ;
}
$element->set_box_type($box_type) ;
}
$element->shrink() ;
if($element_definition{WITH_SIZE})
{
$element->resize(0, 0, @{$element_definition{WITH_SIZE}}) ;
}
# add name to be seen in the stencil list
$element->{NAME} = $element_definition{NAME} ;
return $element ;
}
sub create_element
{
my (%element_definition) = @_ ;
my $element ;
my $code = <<"EOE" ;
use $element_definition{CLASS} ;
\$element = new $element_definition{CLASS} (\\%element_definition) ;
\$element->{NAME} = \$element_definition{NAME} ;
EOE
eval $code ;
if($@)
{
( run in 1.924 second using v1.01-cache-2.11-cpan-5a3173703d6 )