App-financeta
view release on metacpan or search on metacpan
lib/App/financeta/gui/security_wizard.pm view on Meta::CPAN
package App::financeta::gui::security_wizard;
use strict;
use warnings;
use 5.10.0;
use App::financeta::mo;
use App::financeta::utils qw(dumper log_filter);
use Log::Any '$log', filter => \&App::financeta::utils::log_filter;
use Prima qw(
Application Buttons MsgBox Calendar Label InputLine ComboBox
sys::GUIException Utils
);
use Try::Tiny;
use DateTime;
use Browser::Open ();
$|=1;
has owner => undef;
has gui => (required => 1);
has wizard => ( builder => '_build_wizard' );
sub run {
my $self = shift;
my $w = $self->wizard;
my $res = $w->execute();
$w->end_modal;
return $res;
}
sub _build_wizard {
my $self = shift;
my $gui = $self->gui;
$log->debug("GUI reference in security_wizard: " . ref($gui));
my $w_x0 = 50;
my $w_y0 = 50;
my $sz_x = 800;
my $sz_y = 600;
my $w = Prima::Dialog->new(
name => 'sec_wizard',
centered => 1,
origin => [$w_x0, $w_y0],
size => [$sz_x, $sz_y],
text => 'Security Wizard',
icon => $gui->icon,
visible => 1,
taskListed => 0,
onExecute => sub {
my $dlg = shift;
$dlg->input_source->focusedItem($gui->current->{source_index} // 0);
my $sec = $gui->current->{symbol} || '';
$dlg->input_symbol->text($sec);
$dlg->btn_ok->enabled(length($sec) ? 1 : 0);
$dlg->btn_cancel->enabled(1);
if ($gui->current->{start_date}) {
my $dt = $gui->current->{start_date};
$dlg->cal_start->date($dt->day, $dt->month - 1, $dt->year - 1900);
} else {
$dlg->cal_start->date_from_time(gmtime);
# reduce 1 year
my $yr = $dlg->cal_start->year;
$dlg->cal_start->year($yr - 1);
}
if ($gui->current->{end_date}) {
my $dt = $gui->current->{end_date};
$dlg->cal_end->date($dt->day, $dt->month - 1, $dt->year - 1900);
} else {
$dlg->cal_end->date_from_time(gmtime);
}
$dlg->chk_force_download->checked(0);
$gui->current->{force_download} = 0;
},
);
( run in 1.399 second using v1.01-cache-2.11-cpan-99c4e6809bf )