private void queryStatusMenuCommand_BeforeQueryStatus2(object sender, EventArgs e)
        {
            OleMenuCommand menuCommand = sender as OleMenuCommand;
            var            items       = new List <string>(GetSelectedItemPaths());

            menuCommand.Enabled = items.Count(f => Cruncher.IsSupported(f)) > 0;
        }
        private void cruncher_Progress(object sender, CruncherEventArgs e)
        {
            Cruncher      cruncher = (Cruncher)sender;
            StringBuilder sb       = new StringBuilder();

            sb.AppendLine(Environment.NewLine + e.Result.FileName + " - using " + e.Result.Service);

            if (e.Result.HasError)
            {
                Output(e.Result.ErrorMessage);
            }
            else if (e.Result.SizeBefore > e.Result.SizeAfter)
            {
                sb.AppendLine("Before: " + e.Result.SizeBefore + " bytes");
                sb.AppendLine("After: " + e.Result.SizeAfter + " bytes");
                sb.AppendLine("Savings: " + e.Result.PercentSaved + "%");

                optimized++;
                allBefore += e.Result.SizeBefore;
                allAfter  += e.Result.SizeAfter;
            }
            else
            {
                sb.AppendLine("No optimization needed");
            }

            Output(sb.ToString());
            dte.StatusBar.Progress(true, e.Result.FileName, cruncher.Optimized, cruncher.Count);
        }
        public void CrunchNumbers_TODO()
        {
            // Assert.Fail ( "TODO: initialize variable(s)" );
            int x = 0;
            int y = 0;

            Cruncher.CrunchNumbers(x, y);
        }
        public void SafeCrunch_TODO( )
        {
            Cruncher cruncher = new Cruncher(  );
            // Assert.Fail ( "TODO: initialize variable(s) and expected value" );
            int x        = 0;
            int y        = 0;
            int actual   = cruncher.SafeCrunch(x, y);
            int expected = 0;

            Assert.AreEqual(expected, actual);
        }
Beispiel #5
0
        public static long ProcessMediaItem(MediaItem mediaItem, CrunchOptions crunchOptions)
        {
            long resultantSize = 0;

            if (crunchOptions.IsEnabled)
            {
                if (mediaItem.MimeType == "image/jpeg" || mediaItem.MimeType == "image/pjpeg" ||
                    mediaItem.MimeType == "image/gif" || mediaItem.MimeType == "image/png")
                {
                    ICruncher cruncher = Cruncher.GetCruncher();
                    if (cruncher == null)
                    {
                        Log.Error("Could not find cruncher!", typeof(CrunchImage));
                        return(resultantSize);
                    }
                    if (mediaItem.Size >= cruncher.MaxImageSize)
                    {
                        return(resultantSize);
                    }
                    var mediaStream = mediaItem.GetMediaStream();
                    Job job         = Context.Job;
                    try
                    {
                        CrunchResult result = cruncher.CrunchStream(mediaStream, crunchOptions);

                        if (result == null)
                        {
                            Log.Error(string.Format("Could not shrink media file {0}", mediaItem.InnerItem.Paths.Path),
                                      typeof(CrunchImage));
                        }
                        Sitecore.Resources.Media.Media media = MediaManager.GetMedia(mediaItem);
                        using (var stream = new MemoryStream())
                        {
                            result.FileStream.CopyTo(stream);
                            stream.Position = 0;
                            resultantSize   = stream.Length;
                            media.SetStream(stream, Path.GetExtension(result.Format).TrimStart('.'));
                        }
                    }
                    catch (Exception exception)
                    {
                        if (job != null)
                        {
                            job.Status.LogError("Image could not be reduced in size");
                        }
                        Log.Error(string.Format("Image crunch failed: {0}", mediaItem.InnerItem.Paths.FullPath), exception,
                                  (typeof(CrunchImage)));
                    }
                }
            }
            return(resultantSize);
        }
        private void queryStatusMenuCommand_BeforeQueryStatus(object sender, EventArgs e)
        {
            OleMenuCommand menuCommand = sender as OleMenuCommand;
            var            items       = new List <string>(GetSelectedItemPaths());
            bool           isVisible   = false;

            if (items.Count == 1 && File.Exists(items[0]))
            {
                isVisible = Cruncher.IsSupported(items[0]);
            }

            menuCommand.Enabled = isVisible;
        }
        private void cruncher_Completed(object sender, EventArgs e)
        {
            Cruncher cruncher = (Cruncher)sender;

            if (cruncher.Optimized > 0)
            {
                double percent = allBefore > 0 ? Math.Round((allBefore - allAfter) / allBefore * 100, 2) : 0;
                Output("\n" + (cruncher.Count - optimized) + " skipped. " + optimized + " optimized. Total savings " + percent + "%");
            }
            else
            {
                Output("\nNo PNG or JPG images in selected folder(s)\n");
            }

            Output("\n------ Image optimization finished -----\n");
            dte.StatusBar.Progress(false);
            dte.StatusBar.Animate(false, vsStatusAnimation.vsStatusAnimationGeneral);
        }
        /// <summary>
        /// This fuallAfter = 0;nction is the callback used to execute a command when the a menu item is clicked.
        /// See the Initialize method to see how the menu item is associated to this function using
        /// the OleMenuCommandService service and the MenuCommand class.
        /// </summary>
        private void MenuItemCallback(object sender, EventArgs e)
        {
            dte.Windows.Item(EnvDTE.Constants.vsWindowKindOutput).Visible = true;
            dte.StatusBar.Animate(true, vsStatusAnimation.vsStatusAnimationGeneral);

            pane = base.GetOutputPane(VSConstants.GUID_OutWindowDebugPane, "Debug");
            pane.Activate();

            optimized = allBefore = allAfter = 0;
            Output("\n------ Image optimization started -----\n");

            Cruncher cruncher = new Cruncher();

            cruncher.Progress          += new EventHandler <CruncherEventArgs>(cruncher_Progress);
            cruncher.Completed         += new EventHandler <EventArgs>(cruncher_Completed);
            cruncher.BeforeWritingFile += new EventHandler <CruncherEventArgs>(cruncher_BeforeWritingFile);
            cruncher.CrunchImages(GetSelectedItemPaths().ToArray());
        }
Beispiel #9
0
        private static void ProcessCommandLine(Cruncher cruncher)
        {
            Console.WriteLine(Strings.WhatDoYouHave);
            Console.WriteLine(Strings.TitaniumBackupArchive);
            Console.WriteLine(Strings.DatabaseFile);

            while (true)
            {
                var key = Console.ReadKey();
                Console.WriteLine();

                switch (key.KeyChar)
                {
                case '1':
                    ChosePath(filePath => SaveCrunched(cruncher.CrunchTitaniumArchive(filePath)), "com.google.android.apps.authenticator2.tar.gz");
                    return;

                case '2':
                    ChosePath(filePath => SaveCrunched(cruncher.CrunchDbFile(filePath)), DbFileName);
                    return;
                }
            }
        }
Beispiel #10
0
        static void Main(string[] args)
        {
            try
            {
                var cruncher = new Cruncher();

                var files = Directory.GetFiles(Directory.GetCurrentDirectory(), ArchiveFileType);

                if (files.Any())
                {
                    SaveCrunched(cruncher.CrunchTitaniumArchive(files.First()));
                }
                else if (File.Exists(DbFileName))
                {
                    SaveCrunched(cruncher.CrunchDbFile(DbFileName));
                }
                else if (!args.Any())
                {
                    ProcessCommandLine(cruncher);
                }
                else if (args.Length != 1)
                {
                    SaveCrunched(cruncher.CrunchTitaniumArchive(args[0]));
                }
                else if (args.Length != 2)
                {
                    Console.WriteLine(Strings.WrongCountOfArguments);
                    Console.WriteLine(Strings.Help);
                }
                else if (!File.Exists(args[1]))
                {
                    Console.WriteLine(Strings.FileDoesNotExist, args[1]);
                }
                else
                {
                    switch (args[0])
                    {
                    case "archive":
                        SaveCrunched(cruncher.CrunchTitaniumArchive(args[1]));
                        break;

                    case "db":
                        SaveCrunched(cruncher.CrunchDbFile(args[1]));
                        break;

                    default:
                        Console.WriteLine(Strings.UnexpectedArgument);
                        break;
                    }
                }
            }
            catch (GoogleAuthDatabaseException e)
            {
                AddToLog(e.InnerException);
                Console.WriteLine(Strings.DbFileUnrecognized);
            }
            catch (GoogleAuthUnarchiverException e)
            {
                AddToLog(e.InnerException);
                Console.WriteLine(Strings.ArchiveFileCannotBeProcessed);
            }
            catch (Exception e)
            {
                AddToLog(e);
                Console.WriteLine(Strings.UnexpectedBehaviour);
            }

            Console.WriteLine(Strings.PressAnyKey);
            Console.ReadKey();
            // TODO may be Wipe QR after approval
            //DirectoryHelper.WipeAndDelete(ExportDirectoryName);
        }
 public void SafeCrunch_TODO ( ) {
     Cruncher cruncher = new Cruncher (  );
     // Assert.Fail ( "TODO: initialize variable(s) and expected value" );
     int x = 0;
     int y = 0;
     int actual = cruncher.SafeCrunch ( x, y );
     int expected = 0;
     Assert.AreEqual ( expected, actual );
 }