diff options
| author | Maarten Vanraes <alien@mageia.org> | 2016-03-21 20:50:54 +0100 | 
|---|---|---|
| committer | Maarten Vanraes <alien@mageia.org> | 2016-03-21 20:59:27 +0100 | 
| commit | df10ba456613e21f6bbec700631ecd8044b7506c (patch) | |
| tree | 5c0507d397728296a8d3e0ca8fe372cec56280a0 | |
| parent | 8cd9e3aa7ae626f9b52e8979197a2611c3d36307 (diff) | |
| download | manatools-df10ba456613e21f6bbec700631ecd8044b7506c.tar manatools-df10ba456613e21f6bbec700631ecd8044b7506c.tar.gz manatools-df10ba456613e21f6bbec700631ecd8044b7506c.tar.bz2 manatools-df10ba456613e21f6bbec700631ecd8044b7506c.tar.xz manatools-df10ba456613e21f6bbec700631ecd8044b7506c.zip  | |
add an ActionList GUI class for ActionRole objects
| -rw-r--r-- | Changes | 1 | ||||
| -rw-r--r-- | MANIFEST | 1 | ||||
| -rw-r--r-- | lib/ManaTools/Shared/GUI/ActionList.pm | 166 | 
3 files changed, 168 insertions, 0 deletions
@@ -18,6 +18,7 @@  		class-specific basename and an increasing number.  	- rpmdragora - Avoid to select first package of the group   		when a package is checked +	- Add an Actions GUI helper class  	- Add a Properties GUI helper class  	- Add an Actions Role  	- Add a Properties Role @@ -74,6 +74,7 @@ lib/ManaTools/Shared/ActionsRole.pm  lib/ManaTools/Shared/CommandLine.pm  lib/ManaTools/Shared/Firewall.pm  lib/ManaTools/Shared/GUI.pm +lib/ManaTools/Shared/GUI/ActionList.pm  lib/ManaTools/Shared/GUI/CommandLine.pm  lib/ManaTools/Shared/GUI/Dialog.pm  lib/ManaTools/Shared/GUI/Event.pm diff --git a/lib/ManaTools/Shared/GUI/ActionList.pm b/lib/ManaTools/Shared/GUI/ActionList.pm new file mode 100644 index 00000000..14aea013 --- /dev/null +++ b/lib/ManaTools/Shared/GUI/ActionList.pm @@ -0,0 +1,166 @@ +# vim: set et ts=4 sw=4: +package ManaTools::Shared::GUI::ActionList; +#============================================================= -*-perl-*- + +=head1 NAME + +ManaTools::Shared::GUI::ActionList - Class to visualize ActionsRole + +=head1 SYNOPSIS + +package FooActions; + +with 'ManaTools::Shared::ActionsRole'; + +... + + +use ManaTools::Shared::GUI::ActionList; + +my $hbox = ... +my $foo = FooActions->new(); +my $actionlist = ManaTools::Shared::GUI::ActionList->new(parentWidget => $hbox, actions => $foo); +$foo->add_action('bar', sub {...}); +$actionlist->refresh(); +... + +=head1 DESCRIPTION + +This class is a GUI helper for ActionsRole classes + + +=head1 SUPPORT + +You can find documentation for this module with the perldoc command: + +perldoc ManaTools::Shared::GUI::ActionList + +=head1 AUTHOR + +Maarten Vanraes <alien@rmail.be> + +=head1 COPYRIGHT and LICENSE + +Copyright (C) 2015-2016, Maarten Vanraes. + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License version 2, as +published by the Free Software Foundation. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA + +=head1 FUNCTIONS + +=cut + + +use Moose; + +use ManaTools::Shared::GUI::ReplacePoint; + +#============================================================= + +=head2 new + +=head3 INPUT + +    hash ref containing +        parentWidget: the parent widget +        properties: the properties object + +=head3 DESCRIPTION + +    new is inherited from Moose, to create a ActionList object + +=cut + +#============================================================= + +has 'parentDialog' => ( +    is => 'ro', +    isa => 'ManaTools::Shared::GUI::Dialog', +    required => 1, +); + +has 'parentWidget' => ( +    is => 'ro', +    isa => 'yui::YWidget', +    required => 1, +); + +has 'actions' => ( +    is => 'rw', +    does => 'ManaTools::Shared::ActionsRole', +    trigger => \&refresh, +    default => undef, +); + +has 'replacepoint' => ( +    is => 'ro', +    isa => 'ManaTools::Shared::GUI::ReplacePoint', +    init_arg => undef, +    lazy => 1, +    default => sub { +        my $self = shift; +        my $rpl = ManaTools::Shared::GUI::ReplacePoint->new(eventHandler => $self->parentDialog(), parentWidget => $self->parentWidget()); +        $rpl->finished(); +        return $rpl; +    }, +); + +#============================================================= + +=head2 refresh + +=head3 INPUT + +    $self: this object + +=head3 DESCRIPTION + +    rebuilds the properties + +=cut + +#============================================================= +sub refresh { +    my $self = shift; +    my $dialog = $self->parentDialog(); +    my $factory = $dialog->factory(); +    my $parentWidget = $self->parentWidget(); +    my $replacepoint = $self->replacepoint(); +    my $actions = $self->actions(); + +    # clear and start new changes on replacepoint +    $replacepoint->clear(); +    if (defined $actions) { +        my $vbox = $factory->createVBox($replacepoint->container()); +        # rebuild for all actions a Button +        for my $key (sort $actions->get_actions()) { +            $replacepoint->addWidget($key, $factory->createPushButton($vbox, $key), sub { +                my $self = shift; +                my $actions = shift; +                my $key = shift; +                my @args = @_; +                return $actions->act($key, @args); +            }, $actions, $key); +        } +    } +    # finished +    $replacepoint->finished(); +} + +#============================================================= + +no Moose; +__PACKAGE__->meta->make_immutable; + + +1;  | 
