aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMaarten Vanraes <alien@mageia.org>2016-03-21 20:52:27 +0100
committerMaarten Vanraes <alien@mageia.org>2016-05-14 09:25:24 +0200
commit95101fe3bc4f17ead92b40f4655140ab0b75cded (patch)
treef073d20d4ac2ddf248f61acb512ba89d0529bb04
parent40b8c64de29872772ced52d31e4fb2ec1cda0a65 (diff)
downloadmanatools-95101fe3bc4f17ead92b40f4655140ab0b75cded.tar
manatools-95101fe3bc4f17ead92b40f4655140ab0b75cded.tar.gz
manatools-95101fe3bc4f17ead92b40f4655140ab0b75cded.tar.bz2
manatools-95101fe3bc4f17ead92b40f4655140ab0b75cded.tar.xz
manatools-95101fe3bc4f17ead92b40f4655140ab0b75cded.zip
Disk module: show all Parts Properties and Actions
-rw-r--r--lib/ManaTools/Module/Disk.pm94
1 files changed, 73 insertions, 21 deletions
diff --git a/lib/ManaTools/Module/Disk.pm b/lib/ManaTools/Module/Disk.pm
index bc735b17..9525cbb9 100644
--- a/lib/ManaTools/Module/Disk.pm
+++ b/lib/ManaTools/Module/Disk.pm
@@ -59,6 +59,7 @@ use MooseX::ClassAttribute;
use ManaTools::Shared::PropertiesRole;
use ManaTools::Shared::GUI;
+use ManaTools::Shared::GUI::ActionList;
use ManaTools::Shared::GUI::Dialog;
use ManaTools::Shared::GUI::ReplacePoint;
use ManaTools::Shared::GUI::Properties;
@@ -139,14 +140,28 @@ has mainDialog => (
},
);
-has replacepoint => (
+has content => (
is => 'rw',
isa => 'Maybe[ManaTools::Shared::GUI::ReplacePoint]',
default => undef,
init_arg => undef,
);
-has partProperties => (
+has propertiesBox => (
+ is => 'rw',
+ isa => 'Maybe[ManaTools::Shared::GUI::ReplacePoint]',
+ default => undef,
+ init_arg => undef,
+);
+
+has actionsBox => (
+ is => 'rw',
+ isa => 'Maybe[ManaTools::Shared::GUI::ReplacePoint]',
+ default => undef,
+ init_arg => undef,
+);
+
+has ioProperties => (
is => 'rw',
isa => 'Maybe[ManaTools::Shared::GUI::Properties]',
default => undef,
@@ -223,22 +238,50 @@ sub _rebuildTab {
my $container = shift;
my @items = @_;
my $tab = ManaTools::Shared::GUI::ExtTab->new(eventHandler => $eventHandler, parentWidget => $container);
- for my $i (@items) {
- $tab->addSelectorItem($i->label(), $i, sub {
- my $self = shift;
+ for my $io (@items) {
+ $tab->addSelectorItem($io->label(), $io, sub {
+ my $self = shift;# eventHandler
my $parent = shift;
- my $backendItem = shift;
+ my $io = shift;
my $dialog = $self->parentDialog();
my $module = $dialog->module();
my $factory = $dialog->factory();
+
+ # create content
my $vbox = $factory->createVBox($parent);
- $self->addWidget($backendItem->label() .': button 1', $factory->createPushButton($vbox, $backendItem->label() .': button 1'), sub { my $backendItem = shift; print STDERR "backendItem: ". $backendItem->label() ."::button1\n"; });
- $self->addWidget($backendItem->label() .': button 2', $factory->createPushButton($vbox, $backendItem->label() .': button 2'), sub { my $backendItem = shift; print STDERR "backendItem: ". $backendItem->label() ."::button2\n"; });
- $self->addWidget($backendItem->label() .': button 3', $factory->createPushButton($vbox, $backendItem->label() .': button 3'), sub { my $backendItem = shift; print STDERR "backendItem: ". $backendItem->label() ."::button3\n"; });
+ $self->addWidget($io->label() .': button 1', $factory->createPushButton($vbox, $io->label() .': button 1'), sub { my $backendItem = shift; print STDERR "backendItem: ". $backendItem->label() ."::button1\n"; });
+ $self->addWidget($io->label() .': button 2', $factory->createPushButton($vbox, $io->label() .': button 2'), sub { my $backendItem = shift; print STDERR "backendItem: ". $backendItem->label() ."::button2\n"; });
+ $self->addWidget($io->label() .': button 3', $factory->createPushButton($vbox, $io->label() .': button 3'), sub { my $backendItem = shift; print STDERR "backendItem: ". $backendItem->label() ."::button3\n"; });
$factory->createHStretch($vbox);
$factory->createVStretch($vbox);
+
# update the properties
- $module->set_properties($i);
+ my $ioProperties = $module->ioProperties();
+ $ioProperties->properties($io);
+ my $db = $io->db();
+ my $propbox = $module->propertiesBox();
+ my $actionbox = $module->actionsBox();
+
+ # clear children of propbox and actionbox
+ $propbox->clear();
+ $actionbox->clear();
+
+ # loop all connected parts
+ for my $part ($db->findin($io)) {
+
+ # add properties for each part in a frame with label
+ my $frame = $factory->createFrame($propbox->container(), $part->label() ." properties");
+ my $align = $factory->createLeft($frame);
+ ManaTools::Shared::GUI::Properties->new({parentDialog => $dialog, parentWidget => $align, properties => $part});
+
+ # add actions for each part in a frame with label
+ $frame = $factory->createFrame($actionbox->container(), $part->label() ." actions");
+ ManaTools::Shared::GUI::ActionList->new({parentDialog => $dialog, parentWidget => $frame, actions => $part});
+ }
+
+ # finalize propbox and actionbox
+ $propbox->finished();
+ $actionbox->finished();
});
}
$tab->finishedSelectorItems();
@@ -304,7 +347,7 @@ sub _rebuildParts {
my $simplified = $self->simplified();
my $info = $dialog->info();
- my $rpl = $self->replacepoint();
+ my $rpl = $self->content();
# TODO: rebuild Tabs according to baseType and simplified, instead of always disks
$rpl->clear();
$self->_rebuildItems($info->{disks}, $rpl, $rpl->container());
@@ -425,25 +468,34 @@ sub _adminDiskPanel {
my $hbox2 = $factory->createHBox($align);
my $vbox1 = $factory->createVBox($hbox2);
- my $actionFrame = $self->addWidget('actionFrame', $factory->createFrame($hbox2, $self->loc->N("&Actions")));
- $factory->createVStretch($self->widget('actionFrame'));
- ## TODO: buttons with actions (dynamically)
+ ## actions
+ my $vbox2 = $factory->createVBox($hbox2);
+ my $replacepoint = ManaTools::Shared::GUI::ReplacePoint->new(eventHandler => $self, parentWidget => $vbox2);
+ # don't add children right away
+ $replacepoint->finished();
+ $module->actionsBox($replacepoint);
+ $factory->createVStretch($vbox2);
my $hbox3 = $factory->createHBox($vbox1);
## properties
- my $propframe = $factory->createFrame($vbox1, $self->loc->N("&Properties"));
- my $vbox2 = $factory->createVBox($propframe);
- $align = $factory->createLeft($vbox2);
- $module->partProperties(ManaTools::Shared::GUI::Properties->new(parentDialog => $self, parentWidget => $align));
+ my $propframe = $factory->createFrame($vbox1, $self->loc->N("&Device properties"));
+ my $vbox3 = $factory->createVBox($propframe);
+ $align = $factory->createLeft($vbox3);
+ # properties from IO first, and then the applicable Parts
+ $module->ioProperties(ManaTools::Shared::GUI::Properties->new(parentDialog => $self, parentWidget => $align));
+ $replacepoint = ManaTools::Shared::GUI::ReplacePoint->new(eventHandler => $self, parentWidget => $vbox1);
+ # don't add children right away
+ $replacepoint->finished();
+ $module->propertiesBox($replacepoint);
- ## in this vbox is the Tabs with all the data
- my $replacepoint = ManaTools::Shared::GUI::ReplacePoint->new(eventHandler => $self, parentWidget => $hbox3);
+ ## in this replacepoint is the Tabs with all the data
+ $replacepoint = ManaTools::Shared::GUI::ReplacePoint->new(eventHandler => $self, parentWidget => $hbox3);
# don't add children right away
$replacepoint->finished();
# set the replacepoint in module
- $module->replacepoint($replacepoint);
+ $module->content($replacepoint);
## TODO: buttons to be initialized dynamically
$module->_rebuildParts();