# IUP::Text example # # Creates a IupText that shows asterisks instead of characters (password-like). use strict; use warnings; use IUP ':all'; my $password = ''; my $text = IUP::Text->new( SIZE=>"200x", ACTION=>\&cb_action, K_ANY=>\&cb_k_any ); my $pwd = IUP::Text->new( READONLY=>"YES", SIZE=>"200x"); my $dlg = IUP::Dialog->new( child=>IUP::Vbox->new([$text, $pwd]), TITLE=>"IUP::Text"); sub bs_handler { return IUP_IGNORE if $password eq ''; $password = substr($password, 0, -1); $pwd->VALUE($password); return IUP_DEFAULT; } sub cb_k_any { my ($self, $c) = @_; return bs_handler if $c == K_BS; return IUP_IGNORE if $c==K_CR || $c==K_SP || $c==K_ESC || $c==K_INS || $c==K_DEL || $c==K_TAB || $c==K_HOME || $c==K_UP || $c==K_PGUP || $c==K_LEFT || $c==K_MIDDLE || $c==K_RIGHT || $c==K_END || $c==K_DOWN || $c==K_PGDN; return IUP_DEFAULT; } sub cb_action { my ($self, $c, $after) = @_; if ($c) { $password .= chr($c); $pwd->VALUE($password); } return K_asterisk; } $dlg->ShowXY(IUP_CENTER, IUP_CENTER); IUP->MainLoop;