#!/usr/bin/perl -w

# Written by Tommi Virtanen <tv@debian.org>.  Consider it public domain.

use strict;
use Tk;

sub do_it($$;) {
  my ($passphrase, $main) = @_;
  print $passphrase->get(), "\n";
  $main->destroy();
}

sub ask($;) {
  my ($prompt)=@_;
  my $main=MainWindow->new;
  $main->Label(-text=>$prompt)->pack(-fill=>'x');
  my $passphrase=$main->Entry(-show=>'*')->pack(-fill=>'x');
  $passphrase->focus();
  my $buttons=$main->Frame;
  $buttons->pack(-side=>'right');
  my $ok=$buttons->Button(-text=>'Ok', 
                          -command=>sub {do_it $passphrase, $main}
                         )->pack(-side=>'left');
  my $cancel=$buttons->Button(-text=>'Cancel', -command=>[$main=>'destroy'])
    ->pack(-side=>'right');
  $main->bind('Tk::Button', '<Return>' => 'invoke');
  $main->bind('<Return>', [$ok => 'invoke']);
  $main->bind('<Escape>', [$cancel => 'invoke']);
  $main->bind('<Visibility>' => [$main => 'grabGlobal']); 

  MainLoop;
}

ask ($#ARGV==0
     ? $ARGV[0]
     : 'Please enter your authentication passphrase:');

