Perl x Open Food Facts Hackathon: Paris, France - May 24-25 Learn more

#!/usr/bin/perl -w
package CursorView;
use QCursor;
use QFrame;
use QLabel;
use QWindow;
@ISA = qw(QWindow);
$cb_width = 32;
$cb_height = 32;
$cb_bits =
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf8\x0f\x00" .
"\x00\x06\x30\x00\x80\x01\xc0\x00\x40\x00\x00\x01" .
"\x20\x00\x00\x02\x10\x00\x00\x04\x08\x3e\x3e\x08" .
"\x08\x03\xe0\x08\xc4\x00\x00\x11\x04\x1e\x78\x10" .
"\x02\x0c\x30\x20\x02\x40\x00\x20\x02\x40\x00\x20" .
"\x02\x40\x00\x20\x02\x20\x04\x20\x02\x20\x04\x20" .
"\x02\x10\x08\x20\x02\x08\x08\x20\x02\xf0\x07\x20" .
"\x04\x00\x00\x10\x04\x00\x00\x10\x08\x00\xc0\x08" .
"\x08\x3c\x30\x08\x10\xe6\x19\x04\x20\x00\x0f\x02" .
"\x40\x00\x00\x01\x80\x01\xc0\x00\x00\x06\x30\x00" .
"\x00\xf8\x0f\x00\x00\x00\x00\x00";
$cm_width = 32;
$cm_height = 32;
$cm_bits =
"\x00\x00\x00\x00\x00\xf8\x1f\x00\x00\xfe\x3f\x00" .
"\x80\x07\xf0\x00\xc0\x01\xc0\x01\x60\x00\x00\x03" .
"\x30\x00\x00\x06\x18\x00\x00\x0c\x0c\x3e\x3e\x18" .
"\x0e\x03\xe0\x18\xc6\x00\x00\x31\x07\x1e\x78\x30" .
"\x03\x0c\x30\x60\x03\x40\x00\x60\x03\x40\x00\x60" .
"\x03\x40\x00\x60\x03\x20\x04\x60\x03\x20\x04\x60" .
"\x03\x10\x08\x60\x03\x08\x08\x60\x03\xf0\x07\x60" .
"\x06\x00\x00\x30\x06\x00\x00\x30\x0c\x00\xc0\x18" .
"\x0c\x3c\x30\x18\x18\xe6\x19\x0c\x30\x00\x0f\x06" .
"\x60\x00\x00\x03\xc0\x01\xc0\x01\x80\x07\xf0\x00" .
"\x00\xfe\x3f\x00\x00\xf8\x0f\x00";
sub new {
my $self = shift->SUPER::new();
my @list =
(
{'cursor' => $Cursor{arrow}, 'name' => 'arrowCursor' },
{'cursor' => $Cursor{upArrow}, 'name' => 'upArrowCursor' },
{'cursor' => $Cursor{cross}, 'name' => 'crossCursor' },
{'cursor' => $Cursor{'wait'}, 'name' => 'waitCursor' },
{'cursor' => $Cursor{ibeam}, 'name' => 'ibeamCursor' },
{'cursor' => $Cursor{sizeVer}, 'name' => 'sizeVerCursor' },
{'cursor' => $Cursor{sizeHor}, 'name' => 'sizeHorCursor' },
{'cursor' => $Cursor{sizeBDiag}, 'name' => 'sizeBDiagCursor'},
{'cursor' => $Cursor{sizeFDiag}, 'name' => 'sizeFDiagCursor'},
{'cursor' => $Cursor{sizeAll}, 'name' => 'sizeAllCursor' },
);
$self->setCaption('CursorView');
my $label;
my $i = 0;
my($x, $y);
for($y = 0; $y < 2; $y++) {
for($x = 0; $x < 5; $x++) {
$label = new QLabel($self);
$label->setCursor($list[$i]{'cursor'});
$label->setText($list[$i]{'name'});
$label->setAlignment($Align{Center});
$label->setFrameStyle($Frame{Box} | $Frame{Raised});
$label->setGeometry(10+$x*110, 10+$y*50, 100, 40);
$i++;
}
}
my $cb = new QBitmap($cb_width, $cb_height, $cb_bits, 1);
my $cm = new QBitmap($cm_width, $cm_height, $cm_bits, 1);
my $custom = new QCursor($cb, $cm);
$label = new QLabel($self);
$label->setCursor($custom);
$label->setText('Custom bitmap cursor');
$label->setAlignment($Align{Center});
$label->setFrameStyle($Frame{Box} | $Frame{Raised});
$label->setGeometry(10, 110, 540, 40);
$label->setImmortal();
$self->resize(20+5*110, 20+3*50);
return $self;
}
package main;
use Qt;
$v = new CursorView;
$qApp->setMainWidget($v);
$v->show();
exit $qApp->exec();