The start of adding Clutter support.
[picture-display.git] / picture.pl
1 #!/usr/bin/perl -w
2
3 use strict;
4 use FindBin;
5 use Module::Pluggable search_path => ['Display::Plugins'];
6 use Cluter qw( :init );
7 use Getopt::Long;
8
9 use lib "$FindBin::Bin/lib";
10
11 my $full_screen = 1;
12
13 GetOptions(
14   '!full|f' => \$full_screen,
15 );
16
17 my @modules = loadModules();
18
19 my $stage = Clutter::Stage->get_default();
20 $stage->set_color(Clutter::Color->parse('Black'));
21 $stage->signal_connect('key-press-event' => sub { Clutter->main_quit() });
22
23 if ($full_screen) {
24   $stage->fullscreen;
25 } else {
26   $stage->set_size(800, 600);
27 }
28
29 for my $module (@modules) {
30   print $module->display() . "\n";
31 }
32
33 sub loadModules {
34   my @modules;
35
36   for my $module (plugins()) {
37   warn "Considering $module\n";
38     eval "use $module";
39     if ($@) {
40       die "Failed to load plugin: $module ($@)\n";
41     }
42
43     push @modules, $module->new($stage);
44   }
45
46   return @modules;
47
48