示例#1
0
        private void galleryView_GetThumbnailImage(object sender, ThumbnailImageEventArgs e)
        {
            int    rowHandle = this.galleryView.GetRowHandle(e.DataSourceIndex);
            DmFile file      = (DmFile)this.galleryView.GetRow(rowHandle);

            ThumbHelper.GetThumbnailImage(sender, e, file);
        }
        private GalleryItem CreateGalleryItem(DmFile file)
        {
            GalleryItem res = new GalleryItem();

            res.Tag = file;
            return(res);
        }
示例#3
0
 Image IImportDataSource.GetThumbnail(DmFile file)
 {
     PhotoAssistant.Indexer.Indexer indexer = new PhotoAssistant.Indexer.Indexer();
     indexer.ThumbSize   = SettingsStore.Default.ThumbSize;
     indexer.PreviewSize = SettingsStore.Default.PreviewSize;
     return(indexer.ExtractThumb(file.ImportPath));
 }
 private SimpleVertex CreateVertex(MapControl map, DmFile file)
 {
     return(new SimpleVertex()
     {
         Tag = file, X = file.Latitude, Y = file.Longitude
     });
 }
示例#5
0
        void quickGalleryView_GetThumbnailImage(object sender, DevExpress.Utils.ThumbnailImageEventArgs e)
        {
            int    rowHandle = this.quickGalleryView.GetRowHandle(e.DataSourceIndex);
            DmFile model     = (DmFile)this.quickGalleryView.GetRow(rowHandle);

            ThumbHelper.GetThumbnailImage(sender, e, model);
        }
        public void LoadFileImageInBackground(DmFile file, RunWorkerCompletedEventHandler handler)
        {
            if (file == null)
            {
                return;
            }

            ImageSource source = (ImageSource)file.ImageSource;

            if (source != null && source.IsFrozen)
            {
                handler(this, new RunWorkerCompletedEventArgs(source, null, false));
                return;
            }
            if (file.LoadingImageSource)
            {
                return;
            }

            file.LoadingImageSource = true;
            BackgroundWorker worker = new BackgroundWorker()
            {
                WorkerReportsProgress = true
            };

            file.Worker    = worker;
            worker.DoWork += (sender, args) => {
                Uri         uri   = args.Argument as Uri;
                BitmapImage image = new BitmapImage();

                image.BeginInit();
                image.CacheOption        = BitmapCacheOption.OnLoad;
                image.DownloadProgress  += (s, e) => worker.ReportProgress(e.Progress);
                image.DownloadFailed    += (s, e) => Dispatcher.CurrentDispatcher.InvokeShutdown();
                image.DecodeFailed      += (s, e) => Dispatcher.CurrentDispatcher.InvokeShutdown();
                image.DownloadCompleted += (s, e) => {
                    image.Freeze();
                    args.Result             = image;
                    file.ImageSource        = image;
                    file.LoadingImageSource = false;
                    Dispatcher.CurrentDispatcher.InvokeShutdown();
                };
                image.UriSource = uri;
                image.EndInit();

                if (image.IsDownloading == false)
                {
                    image.Freeze();
                    args.Result             = image;
                    file.ImageSource        = image;
                    file.LoadingImageSource = false;
                }
                else
                {
                    Dispatcher.Run();
                }
            };
            worker.RunWorkerCompleted += handler;
            worker.RunWorkerAsync(GetFileUri(file));
        }
 static string GetThumbPath(DmFile info)
 {
     if (string.IsNullOrEmpty(info.ThumbFileName))
     {
         info.ThumbFileName = SettingsStore.Default.ThumbPath + "\\" + info.Id.ToString() + ".dat";
     }
     return(info.ThumbFileName);
 }
示例#8
0
        private void galleryView_ContextButtonClick(object sender, ContextItemClickEventArgs e)
        {
            DmFile file = (DmFile)this.galleryView.GetRow((int)e.DataItem);
            Point  pt   = this.galleryGridControl.PointToScreen(new Point(e.ItemInfo.Bounds.X + e.ItemInfo.Bounds.Width / 2, e.ItemInfo.Bounds.Y + e.ItemInfo.Bounds.Height / 2));

            this.flyoutPanel2.HideBeakForm(true);
            GeoLocationControl.File = file;
            this.flyoutPanel2.ShowBeakForm(pt, false, this.galleryGridControl, new Point(0, e.ItemInfo.Bounds.Height / 2));
        }
        public DmFile CreateFileInfoModel(FileInfo info)
        {
            bool   exists = File.Exists(info.FullName);
            DmFile model  = new DmFile()
            {
                RelativePath = StorageManager.Default.GetRelativePath(info.FullName), ImportPath = info.FullName, Folder = info.DirectoryName, FileName = info.Name, Caption = info.Name, FileSize = exists ? info.Length : 0, AllowAdd = true, ColorLabel = null, CreationDate = exists ? File.GetCreationTime(info.FullName) : DateTime.Now, ImportDate = DateTime.Now.Date,
            };

            return(model);
        }
 private void OnFileInfoChanged(DmFile prev)
 {
     if (ShouldUpdateItem && prev != null)
     {
         UpdateFile(prev);
     }
     ShouldUpdateItem = false;
     UpdateProperties();
     UpdateHistogramm();
 }
示例#11
0
        private void galleryView_ItemClick(object sender, DevExpress.XtraGrid.Views.WinExplorer.WinExplorerViewItemClickEventArgs e)
        {
            DmFile file = (DmFile)this.galleryView.GetRow(e.ItemInfo.Row.RowHandle);

            if (file.HasGeoLocation)
            {
                MapControl.SetCenterPoint(new GeoPoint(file.Latitude, file.Longitude), true);
                MapControl.ZoomLevel = MapControl.Layers[MapControl.Layers.Count - 1].MinZoomLevel;
            }
        }
示例#12
0
 private bool CopyFile(string file, DmFile model)
 {
     FileToSave = model;
     try {
         return(StorageManager.CopyFile(file, model.RelativePath + "\\" + model.FileName));
     }
     finally {
         FileToSave = null;
     }
 }
示例#13
0
        Image IImportDataSource.GetThumbnail(DmFile file)
        {
            WIAItem wiaItem = null;

            this._fileNames.TryGetValue(file.Path, out wiaItem);
            if (wiaItem != null)
            {
                return(WIAHelper.Default.GetThumbnail(wiaItem, this._tempFolderForThumbs));
            }
            return(null);
        }
 Uri GetFileUri(DmFile file)
 {
     if (System.IO.File.Exists(file.Path))
     {
         return(new Uri(file.Path, UriKind.Absolute));
     }
     else
     {
         return(new Uri(file.ThumbFileName, UriKind.Absolute));
     }
 }
 public static Image GetThumbnailImage(DmFile file)
 {
     if (file.ThumbImage != null)
     {
         return(file.ThumbImage);
     }
     if (File.Exists(file.ThumbFileName))
     {
         file.ThumbImage = Image.FromFile(file.ThumbFileName);
     }
     return(file.ThumbImage);
 }
示例#16
0
        private void filesExplorerView_GetThumbnailImage(object sender, DevExpress.Utils.ThumbnailImageEventArgs e)
        {
            int rowHandle = this.filesExplorerView.GetRowHandle(e.DataSourceIndex);
            var index     = this.filesExplorerView.GetDataSourceRowIndex(rowHandle);

            if (index == DevExpress.XtraGrid.GridControl.InvalidRowHandle)
            {
                return;
            }
            DmFile model = ImportDataSource.Files[index] as DmFile;

            e.ThumbnailImage = ImportDataSource.GetThumbnail(model);
        }
示例#17
0
        public WIAImportDataSource(DmModel model, DeviceInfoWrapper deviceInfoWrapper)
        {
            this._tempFolderForThumbs = FolderHelper.CreateTempFolder();
            this._wiaItems.Populate(deviceInfoWrapper);

            foreach (WIAItem item in this._wiaItems)
            {
                FileInfo info = new FileInfo(item.Path);
                if (!model.Helper.AddFileHelper.ShouldProcessFile(info))
                {
                    continue;
                }
                DmFile file = model.Helper.AddFileHelper.CreateFileInfoModel(info);
                this._files.Add(file);
                this._fileNames.Add(file.Path, item);
            }
        }
        public static Image LoadPreviewImage(DmFile file, NoFileFoundDelegate noFileFoundDelegate)
        {
            while (!File.Exists(file.FullPreviewPath))
            {
                bool res = noFileFoundDelegate == null ? false : noFileFoundDelegate.Invoke();
                if (!res)
                {
                    break;
                }
            }
            if (!File.Exists(file.FullPreviewPath))
            {
                return(null);
            }

            return(Image.FromFile(file.FullPreviewPath));
        }
示例#19
0
 DmFile CreateModel(FileInfo fileInfo)
 {
     if (Model == null)
     {
         DmFile res = new DmFile()
         {
             RelativePath = StorageManager.Default.GetRelativePath(fileInfo.FullName),
             Folder       = fileInfo.DirectoryName,
             FileName     = fileInfo.Name,
             Caption      = fileInfo.Name,
             FileSize     = fileInfo.Length,
             AllowAdd     = true,
             ColorLabel   = null,
             CreationDate = File.GetCreationTime(fileInfo.FullName),
             ImportDate   = DateTime.Now.Date,
         };
         return(res);
     }
     return(Model.Helper.AddFileHelper.CreateFileInfoModel(fileInfo));
 }
 private void ApplyChangesToFile(DmFile file)
 {
     file.ColorLabel            = (DmColorLabel)((ImageComboBoxItem)this.colorLabelComboBox.SelectedItem).Value;
     file.CreationDate          = this.creationDateTimeEdit.DateTime;
     file.ImportDate            = this.importDateTimeEdit.DateTime;
     file.Caption               = this.сaptionTextEdit.Text;
     file.Description           = this.descriptionMemoEdit.Text;
     file.Country               = this.countryTextEdit.Text;
     file.State                 = this.stateTextEdit.Text;
     file.City                  = this.cityTextEdit.Text;
     file.Location              = this.locationTextEdit.Text;
     file.Event                 = this.eventTextEdit.Text;
     file.Project               = this.projectTextEdit.Text;
     file.Client                = this.clientTextEdit.Text;
     file.Scene                 = this.sceneTextEdit.Text;
     file.OfficeDocumentSubject = this.officeDocumentSubjectTextEdit.Text;
     file.OfficeDocumentManager = this.officeDocumentManagerTextEdit.Text;
     file.Comment               = this.commentMemoEdit.Text;
     file.Rating                = (int)this.ratingControl.Rating;
 }
        public static Image GetIconImage(DmFile file)
        {
            if (file.IconImage != null)
            {
                return(file.IconImage);
            }
            Image sourceImage = GetThumbnailImage(file);

            if (sourceImage == null)
            {
                return(null);
            }
            Rectangle rect = ImageLayoutHelper.GetImageBounds(new Rectangle(0, 0, 64, 64), sourceImage.Size, ImageLayoutMode.ZoomOutside);
            Bitmap    bmp  = new Bitmap(64, 64);

            using (Graphics g = Graphics.FromImage(bmp)) {
                g.DrawImage(sourceImage, rect);
            }
            file.IconImage = bmp;
            return(file.IconImage);
        }
示例#22
0
        public void TestGetFileName()
        {
            FileRenameManager manager = new FileRenameManager();

            manager.Template = "{FileName} - {Width}x{Height} - {Index} of {Count}.{Extension}";
            DmFile file = new DmFile();

            file.FileName = "MyPhoto.JPG";
            file.Width    = 2000;
            file.Height   = 1000;
            List <DmFile> list = new List <DmFile>();

            list.Add(new DmFile());
            list.Add(new DmFile());
            list.Add(new DmFile());
            list.Add(file);
            list.Add(new DmFile());
            string res = manager.GetFileName(list, file);

            Assert.AreEqual(0, manager.Errors.Count);
            Assert.AreEqual("MyPhoto - 2000x1000 - 4 of 5.JPG", res);
        }
示例#23
0
        void DoWork()
        {
            int index = 1;

            if (Model != null)
            {
                Model.Context.Configuration.AutoDetectChangesEnabled = false;
            }
            SubscribeStorageManagerEvents();
            foreach (string file in Files)
            {
                DmFile res = ProcessFile(file, index, FilesCount);
                if (reportProgressCallbackCore != null)
                {
                    Application.OpenForms[0].BeginInvoke(reportProgressCallbackCore, res, index, FilesCount);
                }
                index++;
                if (FatalErrorOccured)
                {
                    break;
                }
            }
            if (Model != null)
            {
                Model.Context.Configuration.AutoDetectChangesEnabled = true;
            }
            if (Model != null)
            {
                Model.EndAddFiles();
            }
            if (processCompletedCallbackCore != null)
            {
                Application.OpenForms[0].BeginInvoke(processCompletedCallbackCore);
            }
            UnsubscribeStorageManagerEvents();
        }
 protected virtual void UpdateFile(DmFile file)
 {
     Model.BeginUpdateFile(file);
     ApplyChangesToFile(file);
     Model.EndUpdateFile(file);
 }
示例#25
0
 internal void ActivateViewerControl(List <DmFile> files, DmFile currentFile)
 {
     ViewerControl.Files       = files;
     ViewerControl.CurrentFile = currentFile;
     ActivateControl(this.tpViewer, ViewerControl);
 }
 private MapPoint GetLocation(MapControl map, DmFile file)
 {
     return(map.CoordPointToScreenPoint(new GeoPoint(file.Latitude, file.Longitude)));
 }
 protected override string GetValueCore(List <DmFile> files, DmFile file) => files.Count.ToString();
        private void galleryControlGallery1_GetThumbnailImage(object sender, DevExpress.XtraBars.Ribbon.Gallery.GalleryThumbnailImageEventArgs e)
        {
            DmFile file = (DmFile)e.Item.Tag;

            ThumbHelper.GetThumbnailImage(sender, e, file);
        }
示例#29
0
 public void OnMouseDown(Form ownerForm, Control ownerControl, MouseEventArgs e, DmFile photo, Rectangle screen)
 {
     Photo = photo;
     OnMouseDownCore(ownerForm, ownerControl, e, screen);
 }
示例#30
0
        DmFile ProcessFileCore(string file)
        {
            DmFile    model        = null;
            ImageInfo image        = null;
            Image     reducedImage = null;
            Image     previewImage = null;

            try {
                image = LoadImageInfo(file);
                if (image == null)
                {
                    return(model);                                //Error could not decode image!
                }
                previewImage = ResizeImageToPreview(image.image); //TODO create preview more correctly
                reducedImage = previewImage == null?ResizeImageToThumb(image.thumbImage) : ResizeImageToThumb(previewImage);

                FileInfo info = new FileInfo(file);
                model = CreateModel(info);
                string thumbPath   = ThumbsFolderManager.GetNextThumbPath(model.Id);
                string previewPath = ThumbsFolderManager.GetNextPreviewPath(model.Id);
                reducedImage.Save(thumbPath, ImageFormat.Jpeg);
                if (previewImage != null)
                {
                    previewImage.Save(previewPath, ImageFormat.Jpeg);
                    previewImage.Dispose();
                }
                model.MD5Hash         = MD5Helper.CalculateMD5(file);
                model.ThumbFileName   = thumbPath;
                model.PreviewFileName = previewPath;
                model.ThumbImage      = reducedImage;
                model.Width           = image.width;
                model.Height          = image.height;
                model.AspectRatio     = ((float)model.Width) / model.Height;
                model.Description     = image.description;
                model.ISO             = image.iso;
                model.ShutterSpeed    = image.shutter;
                model.Aperture        = image.aperture;
                model.Author          = image.artist;
                model.CameraModel     = image.model;
                model.CameraProducer  = image.model;
                model.FlashUsed       = image.flashUsed;
                model.FocalLength     = image.focalLength;
                model.Flip            = image.flip;

                CheckInitializeStorageVolumes();
                if (!CopyFile(file, model))
                {
                    StorageManager.OnCopyFileFailed();
                    FatalErrorOccured = true;
                    return(model);
                }

                model.FullPreviewFileName = model.FileNameWithoutExtension + "_Preview" + "." + model.Extension;
                //Image fullPreview = image.thumbImage;
                if (!StorageManager.SavePreviewFile(reducedImage, model.RelativePath, model.FullPreviewFileName))
                {
                    StorageManager.OnCopyFileFailed();
                    FatalErrorOccured = true;
                    return(model);
                }
                //fullPreview.Dispose();

                model.Dpi        = image.dpi;
                model.ColorDepth = image.colorDepth;
            } finally {
                if (image != null)
                {
                    image.thumbImage = null;
                    image.Dispose();
                }
            }
            return(model);
        }