1 package Display::Plugins::FSpot;
6 my $f_spot_db = "/home/andrew/.gnome2/f-spot/photos.db";
9 my ($class,$stage) = @_;
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, '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;
52 my $new_effect = Clutter::EffectTemplate->new_for_duration(1000, 'smoothstep_inc');
53 my $new = Clutter::Effect->fade($new_effect, $new_pic, 255);
61 $self->{'sth'}->bind_columns(\$uri);
62 my $rc = $self->{'sth'}->execute()
63 || die "Failed to execute statement: $DBI::errstr\n";
65 $self->{'sth'}->fetch;
67 $self->{'sth'}->finish()
68 || die "Failed to finish statement: $DBI::errstr\n";;
78 $self->{'dbh'} = DBI->connect("dbi:SQLite:dbname=$f_spot_db","","")
79 || die "Failed to connect to $f_spot_db: $DBI::errstr\n";
83 FROM photos, photo_tags, tags
84 WHERE photos.id = photo_tags.photo_id
85 AND photo_tags.tag_id = tags.id
86 AND tags.name = 'Brooke'
91 $self->{'sth'} = $self->{'dbh'}->prepare($sql)
92 || die "Failed to prepare statement: $DBI::errstr\n";
94 for my $age ('new', 'old') {
95 $self->{$age} = Clutter::Texture->new();
96 $self->{$age}->set_size($self->{'stage'}->get_size());
97 $self->{$age}->set('keep-aspect-ratio' => 1);
98 $self->{$age}->set('sync-size' => 1);
99 $self->{$age}->set_opacity(0);
104 for my $age ('new', 'old') {
105 $self->{'stage'}->add($self->{$age});
108 Glib::Timeout->add_seconds(30, $self->can('display'), $self);