示例#1
0
        public void UpdateImageInfo(PGImage image)
        {
            //save info file.
            PGFolder folder = image.ParentFolder;

            if (folder == null)
            {
                throw new Exception("parent folder doesn't exist");
            }
            folder.WriteFolderFileInfo();
        }
示例#2
0
        public void DeleteComment(Comment comment)
        {
            PGImage image = this.GetImageFromVPath(comment.ImageVPath);

            if (image == null)
            {
                throw new ArgumentException("image not found");
            }

            image.Comments.Remove(comment);
            image.ParentFolder.WriteFolderFileInfo();
        }
示例#3
0
        public void  AddComment(string imageVPath, Comment comment)
        {
            PGImage image = this.GetImageFromVPath(imageVPath);

            if (image == null)
            {
                throw new ArgumentException("image not found");
            }

            image.Comments.Add(comment);
            image.ParentFolder.WriteFolderFileInfo();
        }
示例#4
0
    private List <PGImage> GetImagesFromDiskFolder()
    {
        DirectoryInfo directory = new DirectoryInfo(PhysicalPath);

        List <PGImage> images = new List <PGImage>();

        foreach (FileInfo file in directory.GetFiles())
        {
            #region Add images found on this folder
            if (Util.IsValidImage(file.FullName))
            {
                PGImage image = new PGImage(file.FullName);
                image.FileName     = file.Name;
                image.FriendlyName = Path.GetFileNameWithoutExtension(file.Name).Replace("_", " ");
                image.ParentFolder = this;
                images.Add(image);
            }
            #endregion
        }
        return(images);
    }
示例#5
0
        public PGImage GetNextImage(PGImage image)
        {
            if (image.ParentFolder != null)
            {
                PGFolder parentFolder = image.ParentFolder;
                //List<PGImage> images = GetImagesFromDiskFolderByVirtualPath(parentFolder);

                PGImage nextImg = null;
                bool    getNext = false;
                foreach (PGImage img in parentFolder.Images)
                {
                    if (getNext)
                    {
                        return(img);
                    }

                    if (img.PhysicalPath == image.PhysicalPath)
                    {
                        getNext = true;
                    }
                }
            }
            return(null);
        }
示例#6
0
        public PGImage GetPreviousImage(PGImage image)
        {
            //where is this image?
            if (image.ParentFolder != null)
            {
                PGFolder parentFolder = image.ParentFolder;
//                List<PGImage> images = GetImagesFromDiskFolderByVirtualPath(parentFolder);

                PGImage prevImg = null;
                foreach (PGImage img in parentFolder.Images)
                {
                    if (prevImg != null)
                    {
                        if (img.PhysicalPath == image.PhysicalPath)
                        {
                            return(prevImg);
                        }
                    }
                    prevImg = img;
                }
            }

            return(null);
        }
示例#7
0
        public JsonResult EditImageInfo(FormCollection formValues)
        {
            GalleryRepository rep   = this.GetGalleryRepository();
            PGImage           image = rep.GetImageFromVPath(formValues["ImageVPathEditImageInfo"]);

            if (image == null)
            {
                Response.StatusCode = 400;
                return(Json(new { error = "Image not found at " + formValues["ImageVPath"] }));
            }

            image.FriendlyName = formValues["ImageFriendlyName"];
            image.ImageDescr   = formValues["ImageDescription"];

            if (!ValidName(image.FriendlyName) || !ValidName(image.ImageDescr))
            {
                Response.StatusCode = 400;
                return(Json(new { error = "Image not found at " + formValues["ImageVPath"] }));
            }

            rep.UpdateImageInfo(image);

            return(Json(new { ImageFriendlyName = image.FriendlyName, ImageDescr = image.ImageDescr }, JsonRequestBehavior.AllowGet));
        }
示例#8
0
    public void FillPGImage(ref PGImage image)
    {
        EXIF exif = new EXIF();

        exif.Make = GetMake() != null?GetMake() : "";

        exif.WhiteBalance = GetWhiteBalance() != null?GetWhiteBalance() : "";

        exif.Aperture = GetFNumber() != null?GetFNumber() : "";

        exif.ISO = GetISO() != null?GetISO() : "";

        exif.Exposure = GetExposureTime() != null?GetExposureTime() : "";

        exif.ExposureBiasValue = GetExposureBiasValue() != null?GetExposureBiasValue() : "";

        exif.SubjectDistance = GetSubjectDistance() != null?GetSubjectDistance() : "";

        exif.FocalLength = GetFocalLength() != null?GetFocalLength() : "";

        exif.Flash = GetFlash() != null?GetFlash() : "";

        image.EXIF = exif;
    }
示例#9
0
        public ICollection <Comment> GetByImage(string ImageVPath)
        {
            PGImage image = GetImageFromVPath(ImageVPath);

            return(image.Comments);
        }
示例#10
0
    /// <summary>
    /// Reads data from xml cache file.
    /// </summary>
    public void ReadFolder()
    {
        string filename = "";

        Images              = GetImagesFromDiskFolder();
        NumberNestedImages += NumberImages;

        if (ExistFolderInfoFile())
        {
            try
            {
                lock (locker)
                {
                    filename = Path.Combine(this.PhysicalPath, cfolderInfo);
                    System.Xml.Serialization.XmlSerializer dxml = new System.Xml.Serialization.XmlSerializer(typeof(PGFolderInfo));
                    using (System.IO.FileStream xmlStream = new System.IO.FileStream(filename, System.IO.FileMode.Open, System.IO.FileAccess.Read))
                    {
                        PGFolderInfo info = dxml.Deserialize(xmlStream) as PGFolderInfo;
                        this.Order      = info.Order;
                        this.SortAction = info.SortAction;
                        this.Security   = info.Security != null ? info.Security : new SecurityInfo();

                        foreach (PGImageInfo imageinfo in info.ImagesInfo)
                        {
                            //search for that image.
                            PGImage image = this.Images.Where(r => r.FileName == imageinfo.ImageFileName).FirstOrDefault();
                            if (image != null)
                            {
                                image.FriendlyName = string.IsNullOrWhiteSpace(imageinfo.ImageFriendlyName) ? image.FileName.Replace("_", " ") : imageinfo.ImageFriendlyName;
                                image.Comments     = imageinfo.Comments;

                                foreach (Comment c in image.Comments)
                                {
                                    c.ImageVPath = image.VPath;
                                    Comments.Add(c);
                                }

                                image.ImageDescr = (imageinfo.ImageDescription != null) ? imageinfo.ImageDescription : "";
                            }
                            else
                            {
                                //image referenced in db file not found in file system.
                                //do nothing, next time file is written to disk will be gone
                            }
                        }
                        xmlStream.Close();
                    }
                }
            }
            catch (Exception ex)
            {
                throw new Exception("Error reading folder information file on " + filename, ex);
            }
        }

        if (Configuration.GetConfiguration().ReadBackWardsCompatibilityTxtFiles)
        {
            //backwards compatibility. any txt file associated to picture?
            foreach (PGImage image in this.Images)
            {
                string txtFile = image.PhysicalPath.Replace(Path.GetExtension(image.PhysicalPath), ".txt");
                if (File.Exists(txtFile))
                {
                    using (StreamReader sr = new StreamReader(txtFile))
                    {
                        image.ImageDescr = sr.ReadToEnd();
                    }
                }
            }
        }
    }