void resizer_BeforeWritingFileMakeBackup(object sender, ResizerEventArgs e)
        {
            resizer_BeforeWritingFile(sender, e);
            string backupFile = FileUtil.GenerateNewFileName(e.Result.SourceFileName, "_backup");

            if (File.Exists(backupFile))
            {
                File.Delete(backupFile);
            }
            File.Copy(e.Result.SourceFileName, backupFile);
            WriteToPaneLog("\nCreated backup: " + backupFile);
        }
 void resizer_BeforeWritingFile(object sender, ResizerEventArgs e)
 {
     try
     {
         if (dte.SourceControl.IsItemUnderSCC(e.Result.DestFileName) && !dte.SourceControl.IsItemCheckedOut(e.Result.DestFileName))
         {
             dte.SourceControl.CheckOutItem(e.Result.DestFileName);
         }
         //Check if file is part of solution
         if (dte.Solution.FindProjectItem(e.Result.DestFileName) == null)
         {
             var proj = dte.Solution.FindProjectItem(e.Result.SourceFileName).ContainingProject;
             if (proj != null && dte.SourceControl.IsItemUnderSCC(proj.FileName) && !dte.SourceControl.IsItemCheckedOut(proj.FileName))
             {
                 dte.SourceControl.CheckOutItem(proj.FileName);
             }
         }
     }
     catch
     {
         // Do nothing
     }
 }
        private void resizer_Progress(object sender, ResizerEventArgs e)
        {
            Resizer       resizer = (Resizer)sender;
            StringBuilder sb      = new StringBuilder();

            sb.AppendLine(Environment.NewLine + Path.GetFileName(e.Result.DestFileName) + " - " + e.Result.ConversionMsg);

            if (e.Result.HasError)
            {
                WriteToPaneLog(e.Result.ErrorMessage);
            }
            else
            {
                switch (resizer.Command.ActionToPerform)
                {
                case ManipulateAction.AdvancedConvert:
                    if (resizer.Command.CreateNewFile)
                    {
                        sb.AppendLine("Created new image: " + e.Result.DestFileName);
                    }
                    sb.AppendLine("Resized image: " + FileUtil.ConvertSize(e.Result.SizeAfter));
                    sb.AppendLine("Difference: " + e.Result.PercentSaved + "%");

                    resizer.Command.AddToSolution = true;
                    break;

                case ManipulateAction.Rotate:
                    sb.AppendLine("Rotate: " + e.Result.DestFileName);
                    break;

                case ManipulateAction.CopyAsThumbnail:
                    sb.AppendLine("Thumbnail: " + FileUtil.ConvertSize(e.Result.SizeAfter));
                    resizer.Command.AddToSolution = true;
                    break;

                case ManipulateAction.ConvertToJpeg:
                    sb.AppendLine("Original: " + FileUtil.ConvertSize(e.Result.SizeBefore));
                    sb.AppendLine("New JPG: " + FileUtil.ConvertSize(e.Result.SizeAfter));
                    sb.AppendLine("Difference: " + e.Result.PercentSaved + "%");
                    resizer.Command.AddToSolution = true;
                    break;

                case ManipulateAction.ConvertToPng:
                    sb.AppendLine("Original: " + FileUtil.ConvertSize(e.Result.SizeBefore));
                    sb.AppendLine("New PNG: " + FileUtil.ConvertSize(e.Result.SizeAfter));
                    sb.AppendLine("Difference: " + e.Result.PercentSaved + "%");
                    resizer.Command.AddToSolution = true;
                    break;

                case ManipulateAction.ConvertToGif:
                    sb.AppendLine("Original: " + FileUtil.ConvertSize(e.Result.SizeBefore));
                    sb.AppendLine("New GIF: " + FileUtil.ConvertSize(e.Result.SizeAfter));
                    sb.AppendLine("Difference: " + e.Result.PercentSaved + "%");
                    resizer.Command.AddToSolution = true;
                    break;

                case ManipulateAction.ReCompressWithQuality:
                    sb.AppendLine("Original: " + FileUtil.ConvertSize(e.Result.SizeBefore));
                    sb.AppendLine("Recompressed: " + FileUtil.ConvertSize(e.Result.SizeAfter));
                    sb.AppendLine("Savings: " + e.Result.PercentSaved + "%");
                    break;

                default:
                    throw new ArgumentOutOfRangeException();
                }
                if (resizer.Command.AddToSolution)
                {
                    AddToSolution(e.Result.SourceFileName, e.Result.DestFileName);
                }


                processed++;
                allBefore += e.Result.SizeBefore;
                allAfter  += e.Result.SizeAfter;
            }

            WriteToPaneLog(sb.ToString());
            dte.StatusBar.Progress(true, e.Result.DestFileName, resizer.Optimized, resizer.Count);
        }