//===================================================================== /// <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); }
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 } } }
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); } }
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); }
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))); }
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); }
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); }
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); } }
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; } }
/// <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; } }
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); }