Advertisement
Guest User

Untitled

a guest
Dec 18th, 2014
135
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.18 KB | None | 0 0
  1. #!/usr/bin/env perl
  2.  
  3. use v5.20;
  4. use Gtk3 -init;
  5. use Image::PNG::QRCode qw(qrpng);
  6. use File::Temp qw(tempfile);
  7.  
  8. my $sample_data = $ARGV[0] // "gatlin is so handsome";
  9. my $scale = 9;
  10.  
  11.  
  12. # Must be declared before `mkqrcode`
  13. my $label = Gtk3::Label->new;
  14. $label->set_selectable(1);
  15.  
  16. # Actions
  17. sub mkqrcode {
  18. my ($in) = @_;
  19. my ($fh, $filename) = tempfile;
  20. qrpng(text => $in, out => $filename, scale => $scale);
  21. $label->set_text($filename);
  22. return $filename;
  23. }
  24.  
  25. my $window = Gtk3::Window->new('toplevel');
  26. $window->set_title("QR Code");
  27.  
  28. my $image = Gtk3::Image->new_from_file(mkqrcode $sample_data);
  29. my $textIn = Gtk3::Entry->new;
  30. $textIn->set_text($sample_data);
  31.  
  32. # Layout
  33. my $layout = Gtk3::Box->new('GTK_ORIENTATION_VERTICAL', 1);
  34. $layout->add($textIn);
  35. $layout->add($image);
  36. $layout->add($label);
  37. $window->add($layout);
  38.  
  39. # Signals
  40.  
  41. $textIn->signal_connect (activate => sub {
  42. my ($entry) = @_;
  43. $image->set_from_file(mkqrcode $entry->get_text);
  44. });
  45.  
  46. $textIn->signal_connect (changed => sub {
  47. my ($entry) = @_;
  48. $image->set_from_file(mkqrcode $entry->get_text);
  49. });
  50.  
  51. $window->signal_connect (destroy => sub { Gtk3::main_quit });
  52. # gogogo
  53. $window->show_all;
  54. Gtk3::main;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement