Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/env perl
- use v5.20;
- use Gtk3 -init;
- use Image::PNG::QRCode qw(qrpng);
- use File::Temp qw(tempfile);
- my $sample_data = $ARGV[0] // "gatlin is so handsome";
- my $scale = 9;
- # Must be declared before `mkqrcode`
- my $label = Gtk3::Label->new;
- $label->set_selectable(1);
- # Actions
- sub mkqrcode {
- my ($in) = @_;
- my ($fh, $filename) = tempfile;
- qrpng(text => $in, out => $filename, scale => $scale);
- $label->set_text($filename);
- return $filename;
- }
- my $window = Gtk3::Window->new('toplevel');
- $window->set_title("QR Code");
- my $image = Gtk3::Image->new_from_file(mkqrcode $sample_data);
- my $textIn = Gtk3::Entry->new;
- $textIn->set_text($sample_data);
- # Layout
- my $layout = Gtk3::Box->new('GTK_ORIENTATION_VERTICAL', 1);
- $layout->add($textIn);
- $layout->add($image);
- $layout->add($label);
- $window->add($layout);
- # Signals
- $textIn->signal_connect (activate => sub {
- my ($entry) = @_;
- $image->set_from_file(mkqrcode $entry->get_text);
- });
- $textIn->signal_connect (changed => sub {
- my ($entry) = @_;
- $image->set_from_file(mkqrcode $entry->get_text);
- });
- $window->signal_connect (destroy => sub { Gtk3::main_quit });
- # gogogo
- $window->show_all;
- Gtk3::main;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement