diff Lib/DOM/Providers/Gallery.pm @ 49:16ada169ca75

migrating to the Eclipse IDE
author wizard@linux-odin.local
date Fri, 26 Feb 2010 10:49:21 +0300
parents 03e58a454b20
children
line wrap: on
line diff
--- a/Lib/DOM/Providers/Gallery.pm	Fri Feb 26 01:43:42 2010 +0300
+++ b/Lib/DOM/Providers/Gallery.pm	Fri Feb 26 10:49:21 2010 +0300
@@ -1,200 +1,200 @@
-use strict;
-package DOM::Gallery;
-use Common;
-our @ISA = qw(Object);
-
-BEGIN {
-    DeclareProperty(Id => ACCESS_READ);
-    DeclareProperty(Name => ACCESS_READ);
-    DeclareProperty(Description => ACCESS_READ);
-    DeclareProperty(Images => ACCESS_READ);
-    DeclareProperty(CurrentImage => ACCESS_READ);
-    DeclareProperty(NextImage => ACCESS_READ);
-    DeclareProperty(PrevImage => ACCESS_READ);
-}
-
-sub CTOR {
-    my ($this,%args) = @_;
-    
-    $this->{$Id} = $args{'Id'};
-    $this->{$Name} = $args{'Name'};
-    $this->{$Description} = $args{'Description'};
-}
-
-sub GroupList {
-    my ($this,$GroupCount, $option) = @_;
-    
-    my @images = map { $this->{$Images}->{$_} } sort keys %{$this->{$Images}};
-    
-    my @listGroups;
-    my $group;
-    for (my $i = 0; $i < $GroupCount; $i++ ) {
-        #last unless scalar(@images) or $option =~ /align/i; 
-        push (@$group, shift(@images));
-        if ($i == $GroupCount - 1) {
-            push @listGroups, $group;
-            undef $group;
-            $i = -1;
-            last if not scalar(@images);
-        }
-    }
-    
-    return \@listGroups;
-}
-
-sub SelectImage {
-    my ($this,$imageId) = @_;
-    
-    my @images = sort keys %{$this->{$Images}};
-    
-    for (my $i=0; $i <= @images; $i++) {
-        if ($images[$i] eq $imageId) {
-            $this->{$CurrentImage} = $this->{$Images}->{$images[$i]};
-            $this->{$PrevImage} = $i-1 >= 0 ? $this->{$Images}->{$images[$i-1]} : undef;
-            $this->{$NextImage} = $i+1 < @images ? $this->{$Images}->{$images[$i+1]} : undef;
-            return 1;
-        }
-    }
-    die new Exception("An image '$imageId' not found in the gallery '$this->{$Id}'");
-}
-
-sub AddImage {
-    my ($this,$image) = @_;
-    
-    $this->{$Images}->{$image->Id()} = $image;
-}
-
-package DOM::Gallery::Image;
-use Common;
-our @ISA = qw(Object);
-BEGIN {
-    DeclareProperty(Id => ACCESS_READ);
-    DeclareProperty(Name => ACCESS_READ);
-    DeclareProperty(Gallery => ACCESS_READ);
-    DeclareProperty(URL => ACCESS_READ);
-    DeclareProperty(ThumbURL => ACCESS_READ);
-}
-
-sub CTOR {
-    my ($this,%args) = @_;
-    
-    $this->{$Id} = $args{'Id'} or die new Exception ('An Id should be specified for an image');
-    $this->{$Name} = $args{'Name'};
-    $this->{$Gallery} = $args{'Gallery'} or die new Exception('An Gallery should be specified for an image');
-    $this->{$URL} = $args{'URL'};
-    $this->{$ThumbURL} = $args{'ThumbURL'};
-}
-
-package DOM::Providers::Gallery;
-use Common;
-our @ISA = qw(Object);
-
-our $RepoPath;
-our $ImagesURL;
-our $Encoding;
-
-BEGIN {
-    DeclareProperty(GalleryCache => ACCESS_NONE);
-    DeclareProperty(Repository => ACCESS_NONE);
-}
-
-sub CTOR {
-    my ($this,%args) = @_;
-    
-    $this->{$Repository} = $args {'Repository'} or die new Exception('A path to an galleries repository should be specified');
-}
-
-sub GetProviderInfo() {
-    return {
-        Name => 'Gallery',
-        Host => 'DOM::Site',
-        Methods => {
-            LoadGallery => \&SiteLoadGallery #($this,$site,$galleryId)
-        }
-    };
-}
-
-sub SiteLoadGallery {
-    my ($this,$site,$galleryId) = @_;
-    
-    my $gallery = $this->LoadGallery($galleryId);
-    
-    $site->RegisterObject('Gallery',$gallery);
-    
-    return $gallery;
-}
-
-sub LoadGallery {
-    my ($this,$galleryId) = @_;
-    
-    die new Exception("Invalid Gallery Id: $galleryId") if $galleryId =~ /\\|\//;
-    
-    my $galleryIdPath = $galleryId;
-    $galleryIdPath =~ s/\./\//g;
-    
-    my $GalleryPath = $this->{$Repository} . $galleryIdPath .'/';
-    
-    die new Exception("A gallery '$galleryId' isn't found",$GalleryPath) if not -d $GalleryPath;
-    
-    open my $hDesc, "<:encoding($Encoding)", $GalleryPath.'index.htm' or die new Exception("Invalid gallery: $galleryId","Failed to open ${GalleryPath}index.htm: $!");
-    
-    my $GalleryName;   
-    while (<$hDesc>) {
-        if (/<title>(.+?)<\/title>/i) {
-            $GalleryName = $1;
-            last;
-        }
-    }    
-    undef $hDesc;
-    
-    my $ImagesPath = $GalleryPath.'images/';
-    my $ThumbsPath = $GalleryPath.'thumbnails/';
-    
-    opendir my $hImages, $ImagesPath or die new Exception("Invalid gallery: $galleryId","Can't open images repository: $!");
-    
-    my @imageIds = grep { -f $ImagesPath.$_ } readdir $hImages;
-    
-    my %imageNames;
-    
-    if (-f $GalleryPath.'description.txt') {
-        local $/="\n";
-        if (open my $hfile,"<:encoding($Encoding)",$GalleryPath.'description.txt') {
-            while (<$hfile>) {
-                chomp;
-                my ($id,$name) = split /\s*=\s*/;
-                $imageNames{$id} = $name;
-            }
-        }
-    }
-    
-    undef $hImages;
-    
-    if ($Common::Debug) {
-        foreach (@imageIds) {
-            warn "A tumb isn't found for an image: $_" if not -f $ThumbsPath.$_;
-        }
-    }
-    
-    my $gallery = new DOM::Gallery(Id => $galleryId, Name => $GalleryName);
-    
-    foreach my $imageId (@imageIds) {
-        $gallery->AddImage(new DOM::Gallery::Image(
-                Id => $imageId,
-                URL => $ImagesURL.$galleryIdPath.'/images/'.$imageId,
-                ThumbURL => $ImagesURL.$galleryIdPath.'/thumbnails/'.$imageId,
-                Gallery => $gallery,
-                Name => $imageNames{$imageId}
-            )
-        );
-    }
-    
-    return $gallery;
-}
-
-sub construct {
-    my $self = shift;
-    
-    return new DOM::Providers::Gallery( Repository => $RepoPath);
-}
-
-1;
+use strict;
+package DOM::Gallery;
+use Common;
+our @ISA = qw(Object);
+
+BEGIN {
+    DeclareProperty(Id => ACCESS_READ);
+    DeclareProperty(Name => ACCESS_READ);
+    DeclareProperty(Description => ACCESS_READ);
+    DeclareProperty(Images => ACCESS_READ);
+    DeclareProperty(CurrentImage => ACCESS_READ);
+    DeclareProperty(NextImage => ACCESS_READ);
+    DeclareProperty(PrevImage => ACCESS_READ);
+}
+
+sub CTOR {
+    my ($this,%args) = @_;
+    
+    $this->{$Id} = $args{'Id'};
+    $this->{$Name} = $args{'Name'};
+    $this->{$Description} = $args{'Description'};
+}
+
+sub GroupList {
+    my ($this,$GroupCount, $option) = @_;
+    
+    my @images = map { $this->{$Images}->{$_} } sort keys %{$this->{$Images}};
+    
+    my @listGroups;
+    my $group;
+    for (my $i = 0; $i < $GroupCount; $i++ ) {
+        #last unless scalar(@images) or $option =~ /align/i; 
+        push (@$group, shift(@images));
+        if ($i == $GroupCount - 1) {
+            push @listGroups, $group;
+            undef $group;
+            $i = -1;
+            last if not scalar(@images);
+        }
+    }
+    
+    return \@listGroups;
+}
+
+sub SelectImage {
+    my ($this,$imageId) = @_;
+    
+    my @images = sort keys %{$this->{$Images}};
+    
+    for (my $i=0; $i <= @images; $i++) {
+        if ($images[$i] eq $imageId) {
+            $this->{$CurrentImage} = $this->{$Images}->{$images[$i]};
+            $this->{$PrevImage} = $i-1 >= 0 ? $this->{$Images}->{$images[$i-1]} : undef;
+            $this->{$NextImage} = $i+1 < @images ? $this->{$Images}->{$images[$i+1]} : undef;
+            return 1;
+        }
+    }
+    die new Exception("An image '$imageId' not found in the gallery '$this->{$Id}'");
+}
+
+sub AddImage {
+    my ($this,$image) = @_;
+    
+    $this->{$Images}->{$image->Id()} = $image;
+}
+
+package DOM::Gallery::Image;
+use Common;
+our @ISA = qw(Object);
+BEGIN {
+    DeclareProperty(Id => ACCESS_READ);
+    DeclareProperty(Name => ACCESS_READ);
+    DeclareProperty(Gallery => ACCESS_READ);
+    DeclareProperty(URL => ACCESS_READ);
+    DeclareProperty(ThumbURL => ACCESS_READ);
+}
+
+sub CTOR {
+    my ($this,%args) = @_;
+    
+    $this->{$Id} = $args{'Id'} or die new Exception ('An Id should be specified for an image');
+    $this->{$Name} = $args{'Name'};
+    $this->{$Gallery} = $args{'Gallery'} or die new Exception('An Gallery should be specified for an image');
+    $this->{$URL} = $args{'URL'};
+    $this->{$ThumbURL} = $args{'ThumbURL'};
+}
+
+package DOM::Providers::Gallery;
+use Common;
+our @ISA = qw(Object);
+
+our $RepoPath;
+our $ImagesURL;
+our $Encoding;
+
+BEGIN {
+    DeclareProperty(GalleryCache => ACCESS_NONE);
+    DeclareProperty(Repository => ACCESS_NONE);
+}
+
+sub CTOR {
+    my ($this,%args) = @_;
+    
+    $this->{$Repository} = $args {'Repository'} or die new Exception('A path to an galleries repository should be specified');
+}
+
+sub GetProviderInfo() {
+    return {
+        Name => 'Gallery',
+        Host => 'DOM::Site',
+        Methods => {
+            LoadGallery => \&SiteLoadGallery #($this,$site,$galleryId)
+        }
+    };
+}
+
+sub SiteLoadGallery {
+    my ($this,$site,$galleryId) = @_;
+    
+    my $gallery = $this->LoadGallery($galleryId);
+    
+    $site->RegisterObject('Gallery',$gallery);
+    
+    return $gallery;
+}
+
+sub LoadGallery {
+    my ($this,$galleryId) = @_;
+    
+    die new Exception("Invalid Gallery Id: $galleryId") if $galleryId =~ /\\|\//;
+    
+    my $galleryIdPath = $galleryId;
+    $galleryIdPath =~ s/\./\//g;
+    
+    my $GalleryPath = $this->{$Repository} . $galleryIdPath .'/';
+    
+    die new Exception("A gallery '$galleryId' isn't found",$GalleryPath) if not -d $GalleryPath;
+    
+    open my $hDesc, "<:encoding($Encoding)", $GalleryPath.'index.htm' or die new Exception("Invalid gallery: $galleryId","Failed to open ${GalleryPath}index.htm: $!");
+    
+    my $GalleryName;   
+    while (<$hDesc>) {
+        if (/<title>(.+?)<\/title>/i) {
+            $GalleryName = $1;
+            last;
+        }
+    }    
+    undef $hDesc;
+    
+    my $ImagesPath = $GalleryPath.'images/';
+    my $ThumbsPath = $GalleryPath.'thumbnails/';
+    
+    opendir my $hImages, $ImagesPath or die new Exception("Invalid gallery: $galleryId","Can't open images repository: $!");
+    
+    my @imageIds = grep { -f $ImagesPath.$_ } readdir $hImages;
+    
+    my %imageNames;
+    
+    if (-f $GalleryPath.'description.txt') {
+        local $/="\n";
+        if (open my $hfile,"<:encoding($Encoding)",$GalleryPath.'description.txt') {
+            while (<$hfile>) {
+                chomp;
+                my ($id,$name) = split /\s*=\s*/;
+                $imageNames{$id} = $name;
+            }
+        }
+    }
+    
+    undef $hImages;
+    
+    if ($Common::Debug) {
+        foreach (@imageIds) {
+            warn "A tumb isn't found for an image: $_" if not -f $ThumbsPath.$_;
+        }
+    }
+    
+    my $gallery = new DOM::Gallery(Id => $galleryId, Name => $GalleryName);
+    
+    foreach my $imageId (@imageIds) {
+        $gallery->AddImage(new DOM::Gallery::Image(
+                Id => $imageId,
+                URL => $ImagesURL.$galleryIdPath.'/images/'.$imageId,
+                ThumbURL => $ImagesURL.$galleryIdPath.'/thumbnails/'.$imageId,
+                Gallery => $gallery,
+                Name => $imageNames{$imageId}
+            )
+        );
+    }
+    
+    return $gallery;
+}
+
+sub construct {
+    my $self = shift;
+    
+    return new DOM::Providers::Gallery( Repository => $RepoPath);
+}
+
+1;