Beispiel #1
0
        //=====================================================================

        /// <summary>
        /// This is used to load the MEF provider configuration settings
        /// </summary>
        /// <returns>True if loaded successfully or false if the settings collection does not exist</returns>
        /// <remarks>The settings are loaded using the <see cref="ShellSettingsManager"/> from the
        /// <see cref="CollectionPath"/> collection.</remarks>
        private bool LoadConfiguration()
        {
            ShellSettingsManager settingsManager = new ShellSettingsManager(_serviceProvider);
            SettingsStore        settingsStore   = settingsManager.GetReadOnlySettingsStore(SettingsScope.UserSettings);

            if (!settingsStore.CollectionExists(CollectionPath))
            {
                return(false);
            }

            EnableExtendedXmlCommentsCompletion = settingsStore.GetBoolean(CollectionPath, "EnableExtendedXmlCommentsCompletion", true);
            EnableGoToDefinition       = settingsStore.GetBoolean(CollectionPath, "EnableGoToDefinition", true);
            EnableGoToDefinitionInCRef = settingsStore.GetBoolean(CollectionPath, "EnableGoToDefinitionInCRef", DefaultEnableGoToDefinitionInCRef);
            return(true);
        }
Beispiel #2
0
        private static void OnBeforeQueryStatus(OleMenuCommand menuItem)
        {
            SettingsStore store = _settingsManager.GetReadOnlySettingsStore(SettingsScope.UserSettings);

            menuItem.Checked = store.GetBoolean("Debugger", "JustMyCode", true);
            menuItem.Enabled = true; // Enable on package load
        }
        /// <summary>
        /// Hydrates the properties from the registry asyncronously.
        /// </summary>
        public virtual async Task LoadAsync()
        {
            ShellSettingsManager manager = await _settingsManager.GetValueAsync();

            SettingsStore    settingsStore     = manager.GetReadOnlySettingsStore(SettingsScope.UserSettings);
            HashSet <string> testedCollections = new HashSet <string>();

            bool DoesCollectionExist(string collectionName)
            {
                if (testedCollections.Contains(collectionName))
                {
                    return(true);
                }
                if (settingsStore.CollectionExists(collectionName))
                {
                    testedCollections.Add(collectionName);
                    return(true);
                }
                return(false);
            }

            foreach (PropertyInfo property in GetOptionProperties())
            {
                try
                {
                    var collectionNameAttribute = property.GetCustomAttribute <OverrideCollectionNameAttribute>();
                    var collectionName          = collectionNameAttribute?.CollectionName ?? this.CollectionName;
                    if (!DoesCollectionExist(collectionName))
                    {
                        continue;
                    }

                    var overrideDataTypeAttribute = property.GetCustomAttribute <OverrideDataTypeAttribute>();
                    var dataType = overrideDataTypeAttribute?.SettingDataType ?? SettingDataType.Serialized;

                    switch (dataType)
                    {
                    case SettingDataType.Serialized:
                        var serializedProp = settingsStore.GetString(collectionName, property.Name, default);
                        var value          = DeserializeValue(serializedProp, property.PropertyType);
                        property.SetValue(this, value);
                        break;

                    case SettingDataType.Bool:
                        var boolValue = settingsStore.GetBoolean(collectionName, property.Name, false);
                        property.SetValue(this, boolValue);
                        break;

                    default:
                        throw new ArgumentOutOfRangeException();
                    }
                }
                catch
                {
                    // Do nothing here
                }
            }
        }
Beispiel #4
0
        private void LoadSettings()
        {
            _hasLoaded = true;

            _settingsManager = new ShellSettingsManager(serviceProvider);
            SettingsStore store = _settingsManager.GetReadOnlySettingsStore(SettingsScope.UserSettings);

            LogoAdornment.VisibilityChanged += AdornmentVisibilityChanged;

            _isVisible = store.GetBoolean(Constants.CONFIG_FILENAME, _propertyName, true);
        }
        public ServerParameters()
        {
            SettingsManager settingsManager            = new ShellSettingsManager(VMSTPSettingsStore.ServiceProvider);
            SettingsStore   configurationSettingsStore = settingsManager.GetReadOnlySettingsStore(SettingsScope.UserSettings);

            if (configurationSettingsStore.CollectionExists(VMSTPSettingsStore.Collection))
            {
                disableESMTP = configurationSettingsStore.GetBoolean(VMSTPSettingsStore.Collection, "DisableESMTP", DisableESMTP);
                port         = configurationSettingsStore.GetInt32(VMSTPSettingsStore.Collection, "Port", Port);
            }
        }
Beispiel #6
0
        internal static bool TryGetBoolean(this SettingsStore settingsStore, string collectionName, string propertyName, out bool value)
        {
            if (settingsStore.CollectionExists(collectionName))
            {
                value = settingsStore.GetBoolean(collectionName, propertyName);
                return(true);
            }

            value = default;
            return(false);
        }
Beispiel #7
0
        private static bool?GetBoolOption(SettingsStore store, string catelogName, string optionName)
        {
            if (store == null ||
                !store.CollectionExists(COLLECTION_PATH) ||
                !store.PropertyExists(COLLECTION_PATH, CombineCatelogAndOptionName(catelogName, optionName)))
            {
                return(null);
            }

            return(store.GetBoolean(COLLECTION_PATH, CombineCatelogAndOptionName(catelogName, optionName)));
        }
Beispiel #8
0
        private void LoadSettings()
        {
            if (_hasLoaded)
            {
                return;
            }

            _hasLoaded = true;

            _settingsManager = new ShellSettingsManager(serviceProvider);
            SettingsStore store = _settingsManager.GetReadOnlySettingsStore(SettingsScope.UserSettings);

            LogoAdornment.VisibilityChanged += AdornmentVisibilityChanged;

            _isVisible = store.GetBoolean(Vsix.Name, _propertyName, true);
        }
Beispiel #9
0
        private void LoadSettings()
        {
            _hasLoaded = true;

            SettingsManager settingsManager = new ShellSettingsManager(serviceProvider);
            SettingsStore   store           = settingsManager.GetReadOnlySettingsStore(SettingsScope.UserSettings);

            LogoAdornment.VisibilityChanged += (sender, isVisible) =>
            {
                WritableSettingsStore wstore = settingsManager.GetWritableSettingsStore(SettingsScope.UserSettings);
                _isVisible = isVisible;

                if (!wstore.CollectionExists(Globals.VsixName))
                {
                    wstore.CreateCollection(Globals.VsixName);
                }

                wstore.SetBoolean(Globals.VsixName, _propertyName, isVisible);
            };

            _isVisible = store.GetBoolean(Globals.VsixName, _propertyName, true);
        }
Beispiel #10
0
        public static void Initialize(System.IServiceProvider package)
        {
            if (package == null)
            {
                throw new ArgumentNullException("package");
            }

            var commandService =
                package.GetService(typeof(IMenuCommandService)) as OleMenuCommandService
                ?? throw new Exception("Couldn't get OleMenuCommandService");

            commandService.AddCommand(MenuCommand);

            StatusBar = package.GetService(typeof(SVsStatusbar)) as IVsStatusbar;

            // Restore if enabled in settings
            SettingsStore = (new ShellSettingsManager(package))
                            .GetWritableSettingsStore(SettingsScope.UserSettings);
            if (SettingsStore.GetBoolean("Rewrap\\*", "autoWrap", false))
            {
                ToggleEnabled(null, null);
            }
        }
Beispiel #11
0
        public AutoLoadPackage(Guid packageGuid, Guid contextGuid, string contextName, bool isRuleBasedUIContext, string contextTerms, SettingsStore configurationStore)
        {
            PackageGuid          = packageGuid;
            AutoLoadContextGuid  = contextGuid;
            AutoLoadContextName  = contextName;
            IsRuleBasedUIContext = isRuleBasedUIContext;
            UIContextTerms       = contextTerms;

            string packageInfoPath           = Path.Combine(_packagesPath, packageGuid.ToString("B"));
            string autoLoadConfigurationPath = Path.Combine(_autoLoadPackagesPath, contextGuid.ToString("B"));

            if (configurationStore.CollectionExists(packageInfoPath))
            {
                PackageName = configurationStore.GetString(packageInfoPath, string.Empty, "Unknown").Split(',')[0];
                string moduleName = configurationStore.GetString(packageInfoPath, "Class", null) ?? Path.GetFileName(configurationStore.GetString(packageInfoPath, "InProcServer32", string.Empty));
                ModuleName     = moduleName.Split(',')[0];
                IsAsyncPackage = configurationStore.GetBoolean(packageInfoPath, "AllowsBackgroundLoad", false);
            }

            if (configurationStore.CollectionExists(autoLoadConfigurationPath))
            {
                uint autoLoadFlags = (uint)PackageAutoLoadFlags.None;
                try
                {
                    autoLoadFlags = configurationStore.GetUInt32(autoLoadConfigurationPath, packageGuid.ToString("B"), 0);
                }
                catch (Exception)
                {
                    //Do not do anyting. Use none as flag
                    // Apparently user feed package "bb4bf712-fcf7-4d17-83bb-93e6478b4e5d" specified a string in the pkgdef..
                }

                bool backgroundLoad = ((autoLoadFlags & (uint)PackageAutoLoadFlags.BackgroundLoad) == (uint)PackageAutoLoadFlags.BackgroundLoad);

                IsAsyncForUIContext = IsAsyncPackage && backgroundLoad;
            }
        }
Beispiel #12
0
        /// <summary>
        /// This function is run whenever VS is considering displaying the command.
        /// For menu items, it runs it before opening the menu. For toolbar items, it seems to run is frequently.
        /// Here you can change the visibility of a menu item. Also set its Checked state, and other properties (like Enabled).
        /// </summary>
        public void OnBeforeQueryStatus(object sender, EventArgs e)
        {
            OleMenuCommand command = (OleMenuCommand)sender;

            switch ((uint)command.CommandID.ID)
            {
            //case Constants.ToggleIndicatorMarginCmdId:
            //    this.HandleQueryStatusCheckedUserProperty(sender, "Text Editor", "Indicator Margin");
            //    break;
            //case Constants.ToggleLineNumbersCmdId:
            //    this.HandleQueryStatusCheckedUserProperty(sender, "Text Editor\\CSharp", "Line Numbers");
            //    break;
            //case Constants.ToggleQuickActionsCmdId:
            //    HandleToggleLightbulbMarginQueryStatus(sender);
            //    break;
            //case Constants.ToggleSelectionMarginCmdId:
            //    this.HandleQueryStatusCheckedUserProperty(sender, "Text Editor", "Selection Margin");
            //    break;
            //case Constants.ToggleTrackChangesCmdId:
            //    this.HandleQueryStatusCheckedUserProperty(sender, "Text Editor", "Track Changes");
            //    break;
            case Constants.ToggleDiffMarginCmdId:
                this.HideItem(sender);
                break;

            case Constants.ToggleOutliningCmdId:
                this.HandleOutliningQueryStatus(sender);
                break;

            case Constants.ToggleLiveUnitTestingCmdId:
                ToggleLiveUnitTesting.OnBeforeQueryStatus(sender, e);
                break;

            case Constants.ToggleAnnotateCmdId:
                //this.HandleQueryStatusCheckedUserProperty(sender, "Text Editor\\CSharp", "Show Blame");
                break;

            // Editor Settings
            //case Constants.ToggleNavigationBarCmdId:
            //    this.HandleNavBarQueryStatus(sender);
            //    break;
            case Constants.ToggleCodeLensCmdId:
                this.HandleToggleCodeLensQueryStatus(sender);
                break;

            //case Constants.ToggleStructureGuideLinesCmdId:
            //    this.HandleQueryStatusCheckedUserProperty(sender, "Text Editor", "Indent Guides");
            //    // Hide if not VS2017+
            //    //this.HideItem(sender);
            //break;
            case Constants.ToggleHighlightCurrentLineCmdId:
                this.HandleQueryStatusCheckedUserProperty(sender, "Text Editor", "Highlight Current Line");
                break;

            case Constants.ToggleAutoDelimiterHighlightingCmdId:
                this.HandleQueryStatusCheckedUserProperty(sender, "Text Editor", "Auto Delimiter Highlighting");
                break;

            case Constants.ToggleProcedureLineSeparatorCmdId:
                break;

            case Constants.ToggleIntelliSensePopUpCmdId:
                this.HandleQueryStatusCheckedUserProperty(sender, "Text Editor\\CSharp", "Auto List Members");
                this.HandleQueryStatusCheckedUserProperty(sender, "Text Editor\\CSharp", "Auto List Params");
                //this.HandleQueryStatusCheckedUserProperty(sender, "Text Editor\\CSharp", "Hide Advanced Auto List Members");
                break;

            case Constants.ToggleLineEndingsCmdId:
                break;

            case Constants.ToggleHighlightSymbolsCmdId:
                break;

            case Constants.ToggleHighlightKeywordsCmdId:
                break;

            //case Constants.ToggleIntelliSenseSquigglesCmdId:
            // Scrollbar Settings
            case Constants.ToggleShowScrollbarMarkersCmdId:
                // Turn off all Scrollbar markers with "ShowAnnotations"
                //this.HandleQueryStatusCheckedUserProperty(sender, "Text Editor\\CSharp", "ShowAnnotations");
                MenuCommand menuCommand = ((MenuCommand)sender);
                //menuCommand.Visible = true;
                //menuCommand.Enabled = true;
                menuCommand.Checked = SettingsStore.GetBoolean("Text Editor\\CSharp", "ShowAnnotations");
                break;

            case Constants.ToggleShowChangesCmdId:
                HandleScrollbarQueryStatus(sender, "ShowChanges");
                break;

            case Constants.ToggleShowMarksCmdId:
                HandleScrollbarQueryStatus(sender, "ShowMarks");
                break;

            case Constants.ToggleShowErrorsCmdId:
                HandleScrollbarQueryStatus(sender, "ShowErrors");
                break;

            case Constants.ToggleShowCaretPositionCmdId:
                HandleScrollbarQueryStatus(sender, "ShowCaretPosition");
                break;

            case Constants.ToggleShowDiffsCmdId:
                this.HideItem(sender);
                break;
                // Don't need query status for DistractionFree items.
                //case Constants.ToggleCleanEditorCmdId:
                //    break;
                //case Constants.ToggleCleanMarginsCmdId:
                //    break;
            }
        }
Beispiel #13
0
 private static bool LoadBoolean(OptionName.SettingIds name, SettingsStore settingsStore, bool defaultValue)
 {
     return(settingsStore.GetBoolean(defaultCollectionPath, name.ToString(), defaultValue));
 }
 public int GetBool([ComAliasName("OLE.LPCOLESTR")] string collectionPath, [ComAliasName("OLE.LPCOLESTR")] string propertyName, [ComAliasName("OLE.BOOL")] out int value)
 {
     value = inner.GetBoolean(collectionPath, propertyName) ? 1 : 0;
     return(0);
 }