**************************code for the window class*************************************************************
*******************************I removed some useless stuff *********************************************************
#the basic window class, from which every window will be derived.
package Window;
use Moose;
extends (qw(Object));
#position for x in pixel
has 'x' => (
is => 'rw',
required =>1,
isa => 'Num',
default => 0
);
#position for y in pixel
has 'y' => (
is => 'rw',
required =>1,
isa => 'Num',
default=> 0
);
#widgets list
has 'content' => (
is =>'rw',
required =>0,
isa => 'ArrayRef'
);
#return value for the window, once set it will close it.
has 'answer' => (
is => 'rw',
required => 0,
isa => 'Any'
);
#constructor.
sub BUILD {
my ( $self ) = @_ ;
#every window get a close button.
my $widget = new Widget name =>"close",
type => "icon",
x => 0,
y => 0,
img => 'close',
xsize => 16,
ysize => 16 ; #useless again.
window => $self;
my $wt;
push @$wt,$widget;
$self->content( $wt );
}
#show the full window
sub show($) {
}
return 1;
*******************************code for the widget class ************************************************************
*******************************I removed some useless stuff *********************************************************
package Widget;
use Moose;
#use graphic;
extends (qw(Object));
has 'x' => (
is => 'rw',
required =>1,
isa => 'Num',
default => 0
);
has 'y' => (
is => 'rw',
required =>1,
isa => 'Num',
default=> 0
);
has 'window' => (
is => 'rw',
isa => 'CodeRef',
default => undef
);