# IUP::Val example
#
# Creates two Valuator controls, exemplifying the two possible types.
# When manipulating the Valuator, the label's value changes.
use strict;
use warnings;
use IUP ':all';
# xxxTODO.ASKIUP xxx iuplabel does not accept attribute TYPE
my $lbl_v = IUP::Label->new( TITLE=>"VALUE=n.a.", SIZE=>70, TYPE=>"1" );
my $lbl_h = IUP::Label->new( TITLE=>"VALUE=n.a.", SIZE=>70, TYPE=>"2" );
sub fbuttonpress {
my ($self) = @_;
if ($self->TYPE == "VERTICAL") {
$lbl_v->FGCOLOR("255 0 0");
}
else {
$lbl_h->FGCOLOR("255 0 0");
}
return IUP_DEFAULT;
}
sub fbuttonrelease {
my ($self) = @_;
if ($self->TYPE == "VERTICAL") {
$lbl_v->FGCOLOR = "0 0 0";
}
else {
$lbl_h->FGCOLOR = "0 0 0";
}
return IUP_DEFAULT;
}
sub cb_change {
my $self = shift;
my $val = $self->VALUE || 0;
my $buffer = sprintf("VALUE=%.2f", $val);
if ($self->TYPE eq "VERTICAL") {
$lbl_v->TITLE($buffer);
}
else {
$lbl_h->TITLE($buffer);
}
return IUP_DEFAULT;
}
my $val_v = IUP::Val->new( TYPE=>"VERTICAL", MIN=>0.0, MAX=>1.0, VALUE=>0.3,
VALUECHANGED_CB=>\&cb_change );
my $val_h = IUP::Val->new( TYPE=>"HORIZONTAL", MIN=>0.0, MAX=>1.0, VALUE=>0,
VALUECHANGED_CB=>\&cb_change );
my $dlg_val = IUP::Dialog->new( TITLE=>"Valuator Test", child=>
IUP::Hbox->new( child=>[
IUP::Frame->new( child=>IUP::Vbox->new( child=>[$val_v, $lbl_v] ) ),
IUP::Frame->new( child=>IUP::Vbox->new( child=>[$val_h, $lbl_h] ) ),
] )
);
$dlg_val->Show();
IUP->MainLoop;