/// <summary> /// </summary> private void StoreSettings() { if (ModesTreeView.SelectedNode == null || ModePropertyGrid.SelectedObject == null) { return; } BuildLaunchMode Mode = ModesTreeView.SelectedNode.Tag as BuildLaunchMode; DynamicPropertyGridObject GridObj = ModePropertyGrid.SelectedObject as DynamicPropertyGridObject; foreach (BuildLaunchVariable Var in Mode.Variables) { if (Var.ConditionResult) { DynamicPropertyGridProperty Property = GridObj.Find(Var.Name); if (Property == null) { continue; } if (Var.DataType == BuildLaunchVariableDataType.Bool) { Var.Value = Property.Value.ToString().ToLower(); } else { Var.Value = Property.Value.ToString(); } } } // Remove old stored settings value. foreach (StoredLaunchSettings OldSettings in Program.Settings.LaunchSettings) { if (OldSettings.ManifestId == Downloader.ManifestId) { Program.Settings.LaunchSettings.Remove(OldSettings); break; } } // Add new stored settings value. StoredLaunchSettings LaunchSettings = new StoredLaunchSettings(); LaunchSettings.ManifestId = Downloader.ManifestId; foreach (BuildLaunchVariable Var in Mode.Variables) { LaunchSettings.Values.Add(Var.Name, Var.Value); } Program.Settings.LaunchSettings.Add(LaunchSettings); // If over max launch settings prune. while (Program.Settings.LaunchSettings.Count > Client.Settings.MaxLaunchSettings) { Program.Settings.LaunchSettings.RemoveAt(0); } }
/// <summary> /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void LaunchModeNodeSelected(object sender, TreeViewEventArgs e) { if (e.Node == null) { ModePropertyGrid.SelectedObject = null; return; } BuildLaunchMode Mode = e.Node.Tag as BuildLaunchMode; if (Mode == null) { ModePropertyGrid.SelectedObject = null; return; } // Have we got a stored value for this variable? StoredLaunchSettings StoredSettings = null; foreach (StoredLaunchSettings OldSettings in Program.Settings.LaunchSettings) { if (OldSettings.ManifestId == Downloader.ManifestId) { StoredSettings = OldSettings; break; } } DynamicPropertyGridObject GridObj = new DynamicPropertyGridObject(); foreach (BuildLaunchVariable Var in Mode.Variables) { if (StoredSettings != null && !Var.Internal) { if (StoredSettings.Values.ContainsKey(Var.Name)) { Var.Value = StoredSettings.Values[Var.Name]; } } if (Var.ConditionResult && !Var.Internal) { switch (Var.DataType) { case BuildLaunchVariableDataType.String: { if (Var.Options.Count == 0) { GridObj.Add(new DynamicPropertyGridProperty(Var.Name, Var.FriendlyName, Var.FriendlyDescription, Var.FriendlyCategory, Var.Value, Var.Value, false, true)); } else { GridObj.Add(new DynamicPropertyGridOptionsProperty(Var.Name, Var.FriendlyName, Var.FriendlyDescription, Var.FriendlyCategory, Var.Value, Var.Value, false, true, Var.Options)); } break; } case BuildLaunchVariableDataType.Float: { float Value = 0.0f; float.TryParse(Var.Value, out Value); GridObj.Add(new DynamicPropertyGridRangedProperty(Var.Name, Var.FriendlyName, Var.FriendlyDescription, Var.FriendlyCategory, Value, Value, false, true, Var.MinValue, Var.MaxValue)); break; } case BuildLaunchVariableDataType.Int: { int Value = 0; int.TryParse(Var.Value, out Value); GridObj.Add(new DynamicPropertyGridRangedProperty(Var.Name, Var.FriendlyName, Var.FriendlyDescription, Var.FriendlyCategory, Value, Value, false, true, Var.MinValue, Var.MaxValue)); break; } case BuildLaunchVariableDataType.Bool: { bool Value = false; bool.TryParse(Var.Value, out Value); GridObj.Add(new DynamicPropertyGridProperty(Var.Name, Var.FriendlyName, Var.FriendlyDescription, Var.FriendlyCategory, Value, Value, false, true)); break; } } } } ModePropertyGrid.SelectedObject = GridObj; }