aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Makefile.PL5
-rw-r--r--lib/ManaTools/Shared/GUI/Dialog.pm122
2 files changed, 92 insertions, 35 deletions
diff --git a/Makefile.PL b/Makefile.PL
index b635caec..3bf0625d 100644
--- a/Makefile.PL
+++ b/Makefile.PL
@@ -21,12 +21,13 @@ WriteMakefile(
},
BUILD_REQUIRES => {
'Test::More' => 0,
- 'File::ShareDir::Install' => 0,
+ 'File::ShareDir::Install' => 0,
},
PREREQ_PM => {
"Moose" => 0,
"Moose::Autobox" => 0,
- "MooseX::Getopt" => 0,
+ "MooseX::Getopt" => 0,
+ "MooseX::ClassAttribute" => 0,
"Config::Auto" => 0,
"Config::Hosts" => 0,
"Config::Tiny" => 0,
diff --git a/lib/ManaTools/Shared/GUI/Dialog.pm b/lib/ManaTools/Shared/GUI/Dialog.pm
index e5a0a884..c1626a95 100644
--- a/lib/ManaTools/Shared/GUI/Dialog.pm
+++ b/lib/ManaTools/Shared/GUI/Dialog.pm
@@ -11,17 +11,17 @@ ManaTools::Shared::GUI::Dialog - Class to manage a yui YDumbTab properly
use ManaTools::Shared::GUI::Dialog;
my $dlg = ManaTools::Shared::GUI::Dialog->new(
- dialogType => $ManaTools::Shared::GUI::Dialog::mainDialog, ## or popupDialog
+ dialogType => ManaTools::Shared::GUI::Dialog->mainDialog, ## or popupDialog
title => "New Title",
icon => $icon,
optFields => [
- $ManaTools::Shared::GUI::Dialog::TimeField,
- $ManaTools::Shared::GUI::Dialog::DateField,
- $ManaTools::Shared::GUI::Dialog::TabField,
+ ManaTools::Shared::GUI::Dialog->TimeField,
+ ManaTools::Shared::GUI::Dialog->DateField,
+ ManaTools::Shared::GUI::Dialog->TabField,
],
buttons => [
- $ManaTools::Shared::GUI::Dialog::cancelButton,
- $ManaTools::Shared::GUI::Dialog::okButton,
+ ManaTools::Shared::GUI::Dialog->cancelButton,
+ ManaTools::Shared::GUI::Dialog->okButton,
],
event_timeout => 0, # event timeout in msec during the waitForEvent()
layout => sub { my $self = shift; my $layoutstart = shift; my $dlg = $self->dialog(); my $info = $self->info(); ... $self->addWidget('button1', $button, sub{...}, $backendItem1); },
@@ -71,11 +71,13 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
use Moose;
+with 'ManaTools::Shared::GUI::EventHandlerRole';
+
use diagnostics;
use utf8;
-with 'ManaTools::Shared::GUI::EventHandlerRole';
use Moose::Util::TypeConstraints;
+use MooseX::ClassAttribute;
use yui;
use ManaTools::Shared::GUI::Event;
@@ -87,16 +89,16 @@ use ManaTools::Shared::GUI::Event;
hash ref containing
module: the parent ManaTools::Module
- dialogType: $ManaTools::Shared::GUI::Dialog::mainDialog, or popupDialog
+ dialogType: ManaTools::Shared::GUI::Dialog->mainDialog, or popupDialog
title: a title
icon: an icon
layout: a callback that builds the layout of the dialog
restoreValues: an optional callback that restore the values to an $info HashRef
event_timeout: an optional and rw timeout in msec during the waitForEvent()
needs a ManaTools::Shared::GUI::Event to manage the $yui::YEvent::TimeoutEvent
- buttons: an optional hashref containing
- $ManaTools::Shared::GUI::Dialog::cancelButton and/or
- $ManaTools::Shared::GUI::Dialog::okButton
+ buttons: an optional hashref containing
+ ManaTools::Shared::GUI::Dialog->cancelButton and/or
+ ManaTools::Shared::GUI::Dialog->okButton
result: an optional callback for returning a result (mostly for popupDialogs)
=head3 DESCRIPTION
@@ -172,9 +174,6 @@ has 'event_timeout' => (
default => 0,
);
-our $mainDialog = 1;
-our $popupDialog = 2;
-
subtype 'DialogType'
=> as Int
=> where {($_ > 0 && $_<=2)};
@@ -185,6 +184,20 @@ has 'dialogType' => (
required => 1,
);
+class_has 'mainDialog' => (
+ is => 'ro',
+ isa => 'DialogType',
+ init_arg => undef,
+ default => sub {return 1;},
+);
+
+class_has 'popupDialog' => (
+ is => 'ro',
+ isa => 'DialogType',
+ init_arg => undef,
+ default => sub {return 2;},
+);
+
has 'title' => (
is => 'ro',
isa => 'Str',
@@ -197,11 +210,35 @@ has 'icon' => (
required => 1,
);
-our $cancelButton = 1;
-our $okButton = 2;
-our $closeButton = 3;
-our $resetButton = 4;
-our $aboutButton = 5;
+class_has 'cancelButton' => (
+ is => 'ro',
+ init_arg => undef,
+ default => sub {return 'cancelButton';},
+);
+
+class_has 'okButton' => (
+ is => 'ro',
+ init_arg => undef,
+ default => sub {return 'okButton';},
+);
+
+class_has 'closeButton' => (
+ is => 'ro',
+ init_arg => undef,
+ default => sub {return 'closeButton';},
+);
+
+class_has 'resetButton' => (
+ is => 'ro',
+ init_arg => undef,
+ default => sub {return 'resetButton';},
+);
+
+class_has 'aboutButton' => (
+ is => 'ro',
+ init_arg => undef,
+ default => sub {return 'aboutButton';},
+);
has 'buttons' => (
is => 'ro',
@@ -212,9 +249,25 @@ has 'buttons' => (
},
);
-our $DateField = 1;
-our $TimeField = 2;
-our $TabField = 3;
+class_has 'DateField' => (
+ is => 'ro',
+ isa => 'Int',
+ init_arg => undef,
+ default => sub {return 1;},
+);
+class_has 'TimeField' => (
+ is => 'ro',
+ isa => 'Int',
+ init_arg => undef,
+ default => sub {return 2;},
+);
+class_has 'TabField' => (
+ is => 'ro',
+ isa => 'Int',
+ init_arg => undef,
+ default => sub {return 3;},
+);
+
has 'optFields' => (
is => 'ro',
@@ -286,9 +339,9 @@ sub checkFields {
my $fields = $self->optFields();
my $optFactory = $self->optFactory();
for my $field (@{$fields}) {
- return 0 if ($field == $ManaTools::Shared::GUI::Dialog::TimeField && !$optFactory->hasTimeField());
- return 0 if ($field == $ManaTools::Shared::GUI::Dialog::DateField && !$optFactory->hasDateField());
- return 0 if ($field == $ManaTools::Shared::GUI::Dialog::TabField && !$optFactory->hasdumbTab());
+ return 0 if ($field == ManaTools::Shared::GUI::Dialog->TimeField && !$optFactory->hasTimeField());
+ return 0 if ($field == ManaTools::Shared::GUI::Dialog->DateField && !$optFactory->hasDateField());
+ return 0 if ($field == ManaTools::Shared::GUI::Dialog->TabField && !$optFactory->hasdumbTab());
}
return 1;
}
@@ -344,7 +397,7 @@ sub addButtons {
my $buttons = $self->buttons;
return if scalar(keys %{$buttons}) == 0;
my $factory = $self->factory();
-
+
### buttons on the last line
$factory->createVSpacing($layout, 1.0);
my $buttonbox = $factory->createHBox($layout);
@@ -352,15 +405,18 @@ sub addButtons {
## Left side
my $align = $factory->createLeft($buttonbox);
my $hbox = $factory->createHBox($align);
- $self->addWidget('aboutButton', $factory->createPushButton($hbox, $self->loc->N("&About")), $self->getButton($ManaTools::Shared::GUI::Dialog::aboutButton)) if $self->getButton($ManaTools::Shared::GUI::Dialog::aboutButton);
- $self->addWidget('resetButton', $factory->createPushButton($hbox, $self->loc->N("&Reset")), $self->getButton($ManaTools::Shared::GUI::Dialog::resetButton)) if $self->getButton($ManaTools::Shared::GUI::Dialog::resetButton);
+$DB::single = 1;
+ $self->addWidget('aboutButton',
+ $factory->createPushButton($hbox, $self->loc->N("&About")),
+ $self->getButton(ManaTools::Shared::GUI::Dialog->aboutButton)) if $self->getButton(ManaTools::Shared::GUI::Dialog->aboutButton);
+ $self->addWidget('resetButton', $factory->createPushButton($hbox, $self->loc->N("&Reset")), $self->getButton(ManaTools::Shared::GUI::Dialog->resetButton)) if $self->getButton(ManaTools::Shared::GUI::Dialog->resetButton);
## Right side
$align = $factory->createRight($buttonbox);
$hbox = $factory->createHBox($align);
- $self->addWidget('cancelButton', $factory->createPushButton($hbox, $self->loc->N("&Cancel")), $self->getButton($ManaTools::Shared::GUI::Dialog::cancelButton)) if $self->getButton($ManaTools::Shared::GUI::Dialog::cancelButton);
- $self->addWidget('okButton', $factory->createPushButton($hbox, $self->loc->N("&Ok")), $self->getButton($ManaTools::Shared::GUI::Dialog::okButton)) if $self->getButton($ManaTools::Shared::GUI::Dialog::okButton);
- $self->addWidget('closeButton', $factory->createPushButton($hbox, $self->loc->N("&Close")), $self->getButton($ManaTools::Shared::GUI::Dialog::closeButton)) if $self->getButton($ManaTools::Shared::GUI::Dialog::closeButton);
+ $self->addWidget('cancelButton', $factory->createPushButton($hbox, $self->loc->N("&Cancel")), $self->getButton(ManaTools::Shared::GUI::Dialog->cancelButton)) if $self->getButton(ManaTools::Shared::GUI::Dialog->cancelButton);
+ $self->addWidget('okButton', $factory->createPushButton($hbox, $self->loc->N("&Ok")), $self->getButton(ManaTools::Shared::GUI::Dialog->okButton)) if $self->getButton(ManaTools::Shared::GUI::Dialog->okButton);
+ $self->addWidget('closeButton', $factory->createPushButton($hbox, $self->loc->N("&Close")), $self->getButton(ManaTools::Shared::GUI::Dialog->closeButton)) if $self->getButton(ManaTools::Shared::GUI::Dialog->closeButton);
$factory->createHSpacing($hbox, 1.0);
## no changes by default
@@ -413,8 +469,8 @@ sub call {
## create the dialog
my $factory = $self->factory();
- $self->dialog($factory->createMainDialog()) if ($self->dialogType() == $ManaTools::Shared::GUI::Dialog::mainDialog);
- $self->dialog($factory->createPopupDialog()) if ($self->dialogType() == $ManaTools::Shared::GUI::Dialog::popupDialog);
+ $self->dialog($factory->createMainDialog()) if ($self->dialogType() == ManaTools::Shared::GUI::Dialog->mainDialog);
+ $self->dialog($factory->createPopupDialog()) if ($self->dialogType() == ManaTools::Shared::GUI::Dialog->popupDialog);
my $ydialog = $self->dialog();
my $layoutstart = $ydialog;
my $vbox = undef;