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 )