Created
December 18, 2014 20:36
-
-
Save gatlin/d102220591b6077fdb83 to your computer and use it in GitHub Desktop.
I made a command line thing to let me quickly generate and display QR codes
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/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; | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment