public WritableLaunchSettings(ILaunchSettings settings) { if (settings.Profiles != null) { foreach (ILaunchProfile profile in settings.Profiles) { // Make a mutable/writable copy of each profile Profiles.Add(new WritableLaunchProfile(profile)); } } foreach ((string key, object value) in LaunchSettings.CloneGlobalSettingsValues(settings.GlobalSettings)) { GlobalSettings.Add(key, value); } if (settings.ActiveProfile != null) { ActiveProfile = Profiles.Find(profile => LaunchProfile.IsSameProfileName(profile.Name, settings.ActiveProfile.Name)); } }
internal virtual void InitializeDebugTargetsCore(ILaunchSettings profiles) { IWritableLaunchSettings newSettings = profiles.ToWritableLaunchSettings(); // Since this get's reentered if the user saves or the user switches active profiles. if (CurrentLaunchSettings != null && !CurrentLaunchSettings.SettingsDiffer(newSettings)) { return; } try { // This should never change the dirty state when loading the dialog PushIgnoreEvents(); // Remember the current selection string curProfileName = SelectedDebugProfile?.Name; // Update the set of settings and generate a property change so the list of profiles gets updated. Note that we always // clear the active profile on the CurrentLaunchSettings so that when we do set one and property changed event is set CurrentLaunchSettings = newSettings; CurrentLaunchSettings.ActiveProfile = null; // Reload the launch profiles collection LaunchProfiles.Clear(); foreach (IWritableLaunchProfile profile in CurrentLaunchSettings.Profiles) { LaunchProfiles.Add(profile); } // When loading new profiles we need to clear the launch type. This is so the external changes cause the current // active provider to be refreshed _selectedLaunchType = null; NotifyProfileCollectionChanged(); // If we have a selection, we want to leave it as is if (curProfileName == null || newSettings.Profiles.Find(p => LaunchProfile.IsSameProfileName(p.Name, curProfileName)) == null) { // Note that we have to be careful since the collection can be empty. if (profiles.ActiveProfile != null && !string.IsNullOrEmpty(profiles.ActiveProfile.Name)) { SelectedDebugProfile = LaunchProfiles.Single(p => LaunchProfile.IsSameProfileName(p.Name, profiles.ActiveProfile.Name)); } else { if (LaunchProfiles.Count > 0) { SelectedDebugProfile = LaunchProfiles[0]; } else { SetEnvironmentGrid(null); } } } else { SelectedDebugProfile = LaunchProfiles.Single(p => LaunchProfile.IsSameProfileName(p.Name, curProfileName)); } } finally { PopIgnoreEvents(); _firstSnapshotCompleteSource?.TrySetResult(); _debugTargetsCoreInitialized = true; } }
internal bool IsNewProfileNameValid(string name) { return(!LaunchProfiles.Any( profile => LaunchProfile.IsSameProfileName(profile.Name, name))); }
internal bool IsNewProfileNameValid(string name) { return(DebugProfiles.Where( profile => LaunchProfile.IsSameProfileName(profile.Name, name)).Count() == 0); }
/// <summary> /// Called whenever the debug targets change. Note that after a save this function will be /// called. It looks for changes and applies them to the UI as needed. Switching profiles /// will also cause this to change as the active profile is stored in profiles snaphost. /// </summary> internal virtual void InitializeDebugTargetsCore(ILaunchSettings profiles) { bool profilesChanged = true; bool IISSettingsChanged = true; // Since this get's reentered if the user saves or the user switches active profiles. if (DebugProfiles != null) { profilesChanged = profiles.ProfilesAreDifferent(DebugProfiles.Select(p => (ILaunchProfile)p).ToList()); if (!profilesChanged && !IISSettingsChanged) { return; } } try { // This should never change the dirty state PushIgnoreEvents(); if (profilesChanged) { // Remember the current selection string curProfileName = SelectedDebugProfile == null ? null : SelectedDebugProfile.Name; // Load debug profiles var debugProfiles = new ObservableCollection <LaunchProfile>(); foreach (var profile in profiles.Profiles) { // Don't show the dummy NoAction profile if (profile.CommandName != ProfileCommandNames.NoAction) { var newProfile = new LaunchProfile(profile); debugProfiles.Add(newProfile); } } DebugProfiles = debugProfiles; // If we have a selection, we want to leave it as is if (curProfileName == null || profiles.Profiles.FirstOrDefault(p => { return(LaunchProfile.IsSameProfileName(p.Name, curProfileName)); }) == null) { // Note that we have to be careful since the collection can be empty. if (!string.IsNullOrEmpty(profiles.ActiveProfile.Name)) { SelectedDebugProfile = DebugProfiles.Where((p) => LaunchProfile.IsSameProfileName(p.Name, profiles.ActiveProfile.Name)).Single(); } else { if (debugProfiles.Count > 0) { SelectedDebugProfile = debugProfiles[0]; } else { SetEnvironmentGrid(null); } } } else { SelectedDebugProfile = DebugProfiles.Where((p) => LaunchProfile.IsSameProfileName(p.Name, curProfileName)).Single(); } } } finally { PopIgnoreEvents(); } }
/// <summary> /// See <see cref="IDynamicEnumValuesGenerator"/> /// </summary> public async Task <IEnumValue?> TryCreateEnumValueAsync(string userSuppliedValue) { return((await _listedValues.GetValueAsync()) .FirstOrDefault(v => LaunchProfile.IsSameProfileName(v.Name, userSuppliedValue))); }
public void LaunchProfile_IsSameProfileNameTests() { Assert.True(LaunchProfile.IsSameProfileName("test", "test")); Assert.False(LaunchProfile.IsSameProfileName("test", "Test")); }