App-PLab

 view release on metacpan or  search on metacpan

lib/App/PLab/ImageApp.pm  view on Meta::CPAN

   $w-> {keyMappings} = { map { $_ => Prima::AbstractMenu-> translate_shortcut( eval($i-> {$_})); } 
       grep { m/^Key_/  } keys %$i };
   $i->{"Color_$_"} = eval( $i->{"Color_$_"}) for keys %$colors;
   my @rc = split ' ', $i->{WindowRect};
   my @ac = $::application-> rect;
   $ac[3] -= $::application-> get_system_value( sv::YMenu) * 3 + $::application-> get_system_value( sv::YTitleBar);
   $rc[0] = 0 if $rc[0] >= $ac[2];
   $rc[1] = 0 if $rc[1] >= $ac[3];
   $rc[3] = $ac[3] if $rc[3] >= $ac[3];
   $w-> rect(@rc);
   $w-> {cypherMask} = ( lc $w->{ini}->{SerType} eq 'long') ? 3 : 2;
   -d $w-> {ini}-> {path} or $w-> {ini}-> {path} = '.';
   $w-> {ini}-> {path} = eval {&Cwd::abs_path($w-> {ini}-> {path})};
   $w-> {ini}-> {path} = '.' if $@;
   $w-> {ini}-> {path} = '' unless -d $w-> {ini}-> {path};

   $w-> maximize if $i->{MaxState};
   $w-> insert( Popup =>
      auto     => 0,
      selected => 0,
      name     => 'LoadSeriesPopup',
      items    => [['' => '']],
   );
   $::application-> showHint( $w-> {ini}-> {showHint});
   $w-> winmenu_updatemappings;
}

sub on_destroy
{
   my ($w,$i) = ($_[0],$_[0]->{ini});
   $i->{MaxState}   = $w-> windowState == ws::Maximized;
   $w-> windowState(ws::Normal) if $i->{MaxState};
   my @rc = $w-> rect;
   $i->{WindowRect} = "@rc";
   $i->{SerType}    = ( $w->{cypherMask} == 2) ? 'Short' : 'Long';
   $i-> {$_} = Prima::KeySelector::shortcut( $w-> {keyMappings}->{$_})
      for keys %{$w->{keyMappings}};
   my $optColors = $w-> opt_colors;   
   $i-> {"Color_$_"} = $w-> ini_makecolor( $i-> {"Color_$_"}) for keys %$optColors;
   $::application-> close;
}

sub on_close
{
   my ($w,$i) = ($_[0],$_[0]->{ini});
   $w-> clear_event unless $w-> win_closefile;
}


sub win_inidefaults
{
   my $w = $_[0];
   my @rc = $w-> rect;
   return (
      path         => '.',
      WindowRect   => "@rc",
      MaxState     => 0,
      SerType      => 'Short',
      extSaveDir   => '',
      silentExtDir => 0,
      dirTimeout   => 120,
      statusDelay  => 5,
      showHint     => 1,
   );
}

sub win_extname
{
   my ($w, $extname) = @_;
   my $ext = $w-> {dataExt};
   $extname =~ /([^\\\/]*)$/;
   $extname = $1;
   if ( $extname =~ /\.[^.]*$/) {
      $extname =~ s/\.[^.]*$/\.$ext/
   } else {
      $extname .= ".$ext";
   }
   my $extsave = length($w-> {ini}-> {extSaveDir}) ? $w-> {ini}-> {extSaveDir} : $w-> {ini}-> {path};
   return "$extsave/$extname";
}

sub win_extwarn
{
   my $w = $_[0];
   return unless length $w->{ini}->{extSaveDir};
   return if $w->{ini}->{silentExtDir};
   my $ret = Prima::MsgBox::message_box( $::application-> name, ".".$w-> {dataExt}." save path is ".
      $w->{ini}->{extSaveDir}.".\nDo you want to set it to the current directory, as default?",
      mb::YesNo | mb::Abort | mb::Warning, {
      buttons => { mb::Abort, { text => 'Ne~ver' }},
    });
   if ( $ret == mb::Yes) {
      $w->{ini}->{extSaveDir} = '';
      $w-> win_extpathchanged;
   } elsif ( $ret == mb::Abort) {
      Prima::MsgBox::message("You will be never asked again, until you manually re-set the save path to the default", mb::Information);
      $w->{ini}->{silentExtDir} = 1;
   }
}


sub win_extpathchanged
{
}

sub win_newframe
{
   $_[0]-> modified( 0);
}


sub win_saveframe
{
   return 1;
}

sub win_closeframe
{
}

sub win_framechanged

 view all matches for this distribution
 view release on metacpan -  search on metacpan

( run in 0.466 second using v1.00-cache-2.02-grep-82fe00e-cpan-2c419f77a38b )