package LoginForm; use strict; use base qw(Tk::Frame); sub Populate { my ($cw, $args) = @_; $cw->SUPER::Populate($args); my $f = $cw->Frame->pack; my $msg = $f->Label-> grid(qw/-columnspan 2 -sticky ew/); my $userE = $f->Entry; $f->Label(-text => "User:")-> grid($userE, -sticky => 'e'); my $passE = $f->Entry(-show => '*'); $f->Label(-text => "Password:")-> grid($passE, -sticky => 'e'); my $button = $f->Button( -text => 'Login', -command => [Login => $cw] )->grid(qw/-columnspan 2 -pady 4/); $cw->Advertise(Message => $msg); $cw->Advertise(UserEntry => $userE); $cw->Advertise(PassEntry => $passE); $cw->Advertise(LoginButton => $button); $cw->ConfigSpecs(-logincmd => [qw/CALLBACK/]); } sub Login { my $cw = shift; my $user = $cw->Subwidget('UserEntry')->get; my $pass = $cw->Subwidget('PassEntry')->get; my $msgL = $cw->Subwidget('Message'); if ($cw->cget(-logincmd) && $cw->Callback(-logincmd => $user, $pass)) { $msgL->configure(-text => "Login Successful"); } else { $msgL->configure(-text => "Login Failed!"); } } 1;