1 package Display::Plugins::FSpot;
4 use base ('Display::Plugin');
6 my $f_spot_db = "/home/andrew/.gnome2/f-spot/photos.db";
10 my $class = ref($proto) || $proto;
12 my $self = $class->SUPER::new(@_);
14 $self->{'last_file'} = '';
16 bless ($self, $class);
25 # Keep on looking until we find a file that exists.
27 $file = $self->find_photo();
28 } until (-f $file && $file ne $self->{'last_file'});
30 $self->{'new'}->set_from_file($file);
32 if ($self->{'last_file'} eq '') {
33 fade_in($self->{'new'});
35 #warn "Fade out old\n";
36 # my $old_effect = Clutter::EffectTemplate->new_for_duration(1000, 'main::smoothstep_dec' );
37 # my $old = Clutter::Effect->fade($old_effect, $self->{'old'}, 0, $self->can('fade_in'), $self->{'new'});
41 # my $temp = $self->{'old'};
42 # $self->{'old'} = $self->{'new'};
43 # $self->{'new'} = $temp;
44 $self->{'last_file'} = $file;
46 $self->{'kernel'}->delay_set(fspot_display => 30);
53 my $new_effect = Clutter::EffectTemplate->new_for_duration(1000, 'main::smoothstep_inc');
54 my $new = Clutter::Effect->fade($new_effect, $new_pic, 255);
62 $self->{'sth'}->bind_columns(\$uri);
63 my $rc = $self->{'sth'}->execute()
64 || die "Failed to execute statement: $DBI::errstr\n";
66 $self->{'sth'}->fetch;
68 $self->{'sth'}->finish()
69 || die "Failed to finish statement: $DBI::errstr\n";;
79 $self->{'kernel'}->state('fspot_display', $self, 'display');
81 $self->{'dbh'} = DBI->connect("dbi:SQLite:dbname=$f_spot_db","","")
82 || die "Failed to connect to $f_spot_db: $DBI::errstr\n";
86 FROM photos, photo_tags, tags
87 WHERE photos.id = photo_tags.photo_id
88 AND photo_tags.tag_id = tags.id
89 AND tags.name = 'Brooke'
94 $self->{'sth'} = $self->{'dbh'}->prepare($sql)
95 || die "Failed to prepare statement: $DBI::errstr\n";
97 for my $age ('new', 'old') {
98 $self->{$age} = Clutter::Texture->new();
99 $self->{$age}->set_size($self->{'stage'}->get_size());
100 $self->{$age}->set('keep-aspect-ratio' => 1);
101 $self->{$age}->set('sync-size' => 1);
102 $self->{$age}->set_opacity(0);
107 for my $age ('new', 'old') {
108 $self->{'stage'}->add($self->{$age});
111 $self->{'kernel'}->delay_set(fspot_display => 30);