package Gapp::Types;
{
$Gapp::Types::VERSION = '0.494';
}
use MooseX::Types -declare => [qw(
Form
FormContext
FormField
FormStash
GappAction
GappActionOrArrayRef
GappCallback
GappCellRenderer
GappContainer
GappContent
GappDialog
GappDialogImage
GappLayout
GappLayoutOrUndef
GappImage
GappMenu
GappNoticeImage
GappTableMap
GappTreeViewColumn
GappUIManager
GappWidget
MaybeGappMenu
)];
use MooseX::Types::Moose qw( ArrayRef ClassName CodeRef HashRef Int Object Str );
# GappAction
class_type GappAction,
{ class => 'Gapp::Action' };
subtype GappActionOrArrayRef,
as GappAction|ArrayRef;
subtype GappCallback,
as GappAction|ArrayRef|CodeRef;
# GappContainer
class_type GappContainer,
{ class => 'Gapp::Container' };
subtype GappContent,
as ArrayRef;
coerce GappContent,
from Object,
via { [ $_ ] };
# GappDialog
class_type GappDialog,
{ class => 'Gapp::Dialog' };
# GappImage
class_type GappImage,
{ class => 'Gapp::Image' };
# GappDialogImage
subtype GappDialogImage,
as GappImage;
coerce GappDialogImage,
from Str,
via {
Gapp::Image->new(
stock => [ $_, 'dialog' ],
);
};
# GappImage
class_type GappMenu,
{ class => 'Gapp::Menu' };
subtype MaybeGappMenu,
as GappMenu;
coerce MaybeGappMenu,
from ArrayRef,
via { Gapp::Menu->new( content => $_ ) };
# GappDialogImage
subtype GappNoticeImage,
as GappImage;
coerce GappNoticeImage,
from Str,
via {
Gapp::Image->new(
stock => [ $_, 'dialog' ],
);
};
# GappWidget
class_type GappWidget,
{ class => 'Gapp::Widget' };
# FormField
type Form,
as GappContainer,
where { $_->does('Gapp::Meta::Widget::Native::Trait::Form') };
# FormField
subtype FormField,
as GappWidget,
where { $_->does('Gapp::Meta::Widget::Native::Role::FormField') };
# FormContext
class_type FormContext,
{ class => 'Gapp::Form::Context' };
# FormContext
class_type FormStash,
{ class => 'Gapp::Form::Stash' };
# GappCellRenderer
class_type GappCellRenderer,
{ class => 'Gapp::CellRenderer' };
my %RENDERERS = (
'text' => [ 'Gtk2::CellRendererText', 'text' ],
'markup' => [ 'Gtk2::CellRendererText', 'markup' ],
'toggle' => [ 'Gtk2::CellRendererToggle', 'active' ],
'pixbuf' => [ 'Gtk2::CellRendererPixbuf', 'pixbuf']
);
coerce GappCellRenderer,
from Str,
via {
if ( exists $RENDERERS{ $_ } ) {
my ( $c, $p ) = ( @{ $RENDERERS{ $_ } } );
'Gapp::CellRenderer'->new( gclass => $c, property => $p );
}
};
coerce GappCellRenderer,
from HashRef,
via { 'Gapp::CellRenderer'->new( %$_ ) };
coerce GappCellRenderer,
from ArrayRef,
via { 'Gapp::CellRenderer'->new( gclass => $_->[0], property => $_->[1] ) };
# GappTableMap
class_type GappLayout,
{ class => 'Gapp::Layout::Object' };
coerce GappLayout,
from Str,
via { $_->Layout };
# GappTableMap
class_type GappTableMap,
{ class => 'Gapp::TableMap' };
coerce GappTableMap,
from Str,
via { 'Gapp::TableMap'->new( string => $_ ) };
# GappTreeViewColumn
class_type GappTreeViewColumn,
{ class => 'Gapp::TreeViewColumn' };
coerce GappTreeViewColumn,
from HashRef,
via { 'Gapp::TreeViewColumn'->new( %$_ ) };
coerce GappTreeViewColumn,
from ArrayRef,
via {
my $input = $_;
my %args;
$args{name} = $input->[0] if defined $input->[0];
$args{title} = $input->[1] if defined $input->[1];
$args{renderer} = $input->[2] || 'text';
$args{data_column} = $input->[3] if defined $input->[3] ;
# determine how to display the content
if ( defined $input->[4] ) {
$args{data_func} = $input->[4];
}
%args = (%args, %{ $input->[5] }) if defined $input->[5];
return 'Gapp::TreeViewColumn'->new( %args );
};
# GappUIManager
class_type GappUIManager,
{ class => 'Gapp::UIManager' };
coerce GappUIManager,
from HashRef,
via { 'Gapp::UIManager'->new( %$_ ) };
1;