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.397 second using v1.01-cache-2.11-cpan-d80b1682f3f )