Tk-Airports

 view release on metacpan or  search on metacpan

lib/Tk/Airports.pm  view on Meta::CPAN

package Tk::Airports;

#
#  Copyright (c) 2005 Renee Baecker (module@renee-baecker.de)
#

use 5.006001;
use strict;
use warnings;
use Carp;

require Tk;
require Tk::Toplevel;
require Tk::HList;

our @ISA = qw(Tk::Derived Tk::Toplevel);
our $VERSION = '0.062';

Construct Tk::Widget 'Airports';

########
# ToDo:
# 
# *) translation of cities into national names
# *) allow other fonts
# *) option for specifying the return values (code,city,all)
# *) option for specifying the delimiter

sub Show{
  my ($cw) = @_;
  $cw->Popup();
  $cw->waitVariable(\$cw->{Selected});
  $cw->withdraw;
  $cw->{Selected} = [""] unless(defined $cw->{Selected});
  return wantarray ? @{$cw->{Selected}} : join("; ",@{$cw->{Selected}});
}# Show

sub Accept{
  my ($cw) = @_;
  my $airport = [map{substr($_,0,3)}$cw->Subwidget('airports')->Getselected()];
  $airport = [""] unless($airport);
  $cw->{Selected} = $airport;
}# Accept

sub Cancel{
  my ($cw) = @_;
  $cw->{Selected} = undef;
  $cw->withdraw;
}#Cancel

sub Populate{
  my ($cw,$args) = @_;
  
  $cw->SUPER::Populate($args);
  $cw->ConfigSpecs(
            -selectmode => ['PASSIVE', 'selectmode', 'Selectmode', 'single'   ],
            -order      => ['PASSIVE', 'order'     , 'Order'     , 'code'     ],
            -font       => ['PASSIVE', 'font'      , 'Font'      , 'Courier 8'],
            -filename   => ['PASSIVE', 'filename'  , 'Filename'  , ''         ],
                  );
  $cw->protocol('WM_DELETE_WINDOW' => ['Cancel', $cw]);
  
  # Label
  $cw->Label(-text => 'Airports worldwide')->pack();
  
  # Search Frame  
  my $entry_var = '';
  my $frm = $cw->Component('Frame' => 'search_frame')->pack();
  $frm->Label(-text => 'Search')->pack(-anchor => 'w', 
                                       -side   => 'left',);
  my $se = $frm->Component('Entry'       => 'search_entry',
                           -textvariable => \$entry_var,
                          )->pack(-anchor => 'w',
                                  -side => 'left',);
  $frm->Button(-text    => 'search',
               -command => ['Search',$cw],



( run in 1.245 second using v1.01-cache-2.11-cpan-54e63673c56 )