예제 #1
0
        /// <summary>
        ///     Handle the notify icon click
        /// </summary>
        private void NotifyIconClick(ClickActions clickAction)
        {
            switch (clickAction)
            {
            case ClickActions.OPEN_LAST_IN_EXPLORER:
                Contextmenu_OpenRecent(this, null);
                break;

            case ClickActions.OPEN_LAST_IN_EDITOR:
                _coreConfiguration.ValidateAndCorrect();

                if (File.Exists(_coreConfiguration.OutputFileAsFullpath))
                {
                    CaptureHelper.CaptureFile(_coreConfiguration.OutputFileAsFullpath, _destinationHolder.SortedActiveDestinations.Find("Editor"));
                }
                break;

            case ClickActions.OPEN_SETTINGS:
                ShowSetting();
                break;

            case ClickActions.SHOW_CONTEXT_MENU:
                var oMethodInfo = typeof(NotifyIcon).GetMethod("ShowContextMenu", BindingFlags.Instance | BindingFlags.NonPublic);
                oMethodInfo?.Invoke(notifyIcon, null);
                break;
            }
        }
        /// <summary>
        /// This method will be called after reading the configuration, so eventually some corrections can be made
        /// </summary>
        /// <param name="coreConfiguration"></param>
        public static void AfterLoad(this ICoreConfiguration coreConfiguration)
        {
            // Comment with releases
            // CheckForUnstable = true;

            if (string.IsNullOrEmpty(coreConfiguration.LastSaveWithVersion))
            {
                try
                {
                    // Store version, this can be used later to fix settings after an update
                    coreConfiguration.LastSaveWithVersion = Assembly.GetEntryAssembly().GetName().Version.ToString();
                }
                catch
                {
                    // ignored
                }
                // Disable the AutoReduceColors as it causes issues with Mozzila applications and some others
                coreConfiguration.OutputFileAutoReduceColors = false;
            }

            // Fix for excessive feed checking
            if (coreConfiguration.UpdateCheckInterval != 0 && coreConfiguration.UpdateCheckInterval <= 7 && coreConfiguration.LastSaveWithVersion.StartsWith("1.2"))
            {
                coreConfiguration.UpdateCheckInterval = 14;
            }
            if (coreConfiguration.UpdateCheckInterval > 365)
            {
                coreConfiguration.UpdateCheckInterval = 365;
            }

            // Enable OneNote if upgrading from 1.1
            if (coreConfiguration.ExcludeDestinations != null && coreConfiguration.ExcludeDestinations.Contains("OneNote"))
            {
                if (coreConfiguration.LastSaveWithVersion != null && coreConfiguration.LastSaveWithVersion.StartsWith("1.1"))
                {
                    coreConfiguration.ExcludeDestinations.Remove("OneNote");
                }
                else
                {
                    // TODO: Remove with the release
                    coreConfiguration.ExcludeDestinations.Remove("OneNote");
                }
            }

            if (coreConfiguration.OutputDestinations == null)
            {
                coreConfiguration.OutputDestinations = new List <string>();
            }

            // Make sure there is an output!
            if (coreConfiguration.OutputDestinations.Count == 0)
            {
                coreConfiguration.OutputDestinations.Add("Editor");
            }

            // Prevent both settings at once, bug #3435056
            if (coreConfiguration.OutputDestinations.Contains("Clipboard") && coreConfiguration.OutputFileCopyPathToClipboard)
            {
                coreConfiguration.OutputFileCopyPathToClipboard = false;
            }

            // Make sure we have clipboard formats, otherwise a paste doesn't make sense!
            if (coreConfiguration.ClipboardFormats == null || coreConfiguration.ClipboardFormats.Count == 0)
            {
                coreConfiguration.ClipboardFormats = new List <ClipboardFormats> {
                    Enums.ClipboardFormats.PNG, Enums.ClipboardFormats.HTML, Enums.ClipboardFormats.DIB
                };
            }

            // Make sure the lists are lowercase, to speedup the check
            if (coreConfiguration.NoGDICaptureForProduct != null)
            {
                // Fix error in configuration
                if (coreConfiguration.NoGDICaptureForProduct.Count >= 2)
                {
                    if ("intellij".Equals(coreConfiguration.NoGDICaptureForProduct[0]) && "idea".Equals(coreConfiguration.NoGDICaptureForProduct[1]))
                    {
                        coreConfiguration.NoGDICaptureForProduct = coreConfiguration.NoGDICaptureForProduct.Skip(2).ToList();
                        coreConfiguration.NoGDICaptureForProduct.Add("Intellij Idea");
                    }
                }
                for (var i = 0; i < coreConfiguration.NoGDICaptureForProduct.Count; i++)
                {
                    coreConfiguration.NoGDICaptureForProduct[i] = coreConfiguration.NoGDICaptureForProduct[i].ToLower();
                }
            }
            if (coreConfiguration.NoDWMCaptureForProduct != null)
            {
                // Fix error in configuration
                if (coreConfiguration.NoDWMCaptureForProduct.Count >= 3)
                {
                    if ("citrix".Equals(coreConfiguration.NoDWMCaptureForProduct[0]) && "ica".Equals(coreConfiguration.NoDWMCaptureForProduct[1]) && "client".Equals(coreConfiguration.NoDWMCaptureForProduct[2]))
                    {
                        coreConfiguration.NoDWMCaptureForProduct = coreConfiguration.NoDWMCaptureForProduct.Skip(3).ToList();
                        coreConfiguration.NoDWMCaptureForProduct.Add("Citrix ICA Client");
                    }
                }
                for (var i = 0; i < coreConfiguration.NoDWMCaptureForProduct.Count; i++)
                {
                    coreConfiguration.NoDWMCaptureForProduct[i] = coreConfiguration.NoDWMCaptureForProduct[i].ToLower();
                }
            }

            if (coreConfiguration.AutoCropDifference < 0)
            {
                coreConfiguration.AutoCropDifference = 0;
            }
            if (coreConfiguration.AutoCropDifference > 255)
            {
                coreConfiguration.AutoCropDifference = 255;
            }
            if (coreConfiguration.OutputFileReduceColorsTo < 2)
            {
                coreConfiguration.OutputFileReduceColorsTo = 2;
            }
            if (coreConfiguration.OutputFileReduceColorsTo > 256)
            {
                coreConfiguration.OutputFileReduceColorsTo = 256;
            }

            if (coreConfiguration.WebRequestTimeout <= 10)
            {
                coreConfiguration.WebRequestTimeout = 100;
            }
            if (coreConfiguration.WebRequestReadWriteTimeout < 1)
            {
                coreConfiguration.WebRequestReadWriteTimeout = 100;
            }

            coreConfiguration.ValidateAndCorrect();
        }