private void deleteStep(ItemStep ist) { int iStep = Steps.FindIndex(obj => { return(obj == ist); }); int iFrom = (ist.Step.ProgressFrom > iStep) ? ist.Step.ProgressFrom - 1 : ist.Step.ProgressFrom; int iTo = (ist.Step.ProgressTo > iStep) ? ist.Step.ProgressTo - 1 : ist.Step.ProgressTo; // Remove the selected Step from the stack and visual Steps.RemoveAt(iStep); canvasDesigner.Children.Remove(ist); foreach (ItemStep.UIEProgression uiep in ist.IProgressions) { canvasDesigner.Children.Remove(uiep); } foreach (ItemStep s in Steps) { // Adjust all references past the index -= 1 if (s.Step.ProgressTo > iStep) { s.Step.ProgressTo -= 1; } if (s.Step.ProgressFrom > iStep) { s.Step.ProgressFrom -= 1; } // Tie any references to the removed Step to its references Steps if (s.Step.ProgressTo == iStep) { s.Step.ProgressTo = iTo; } if (s.Step.ProgressFrom == iStep) { s.Step.ProgressFrom = iFrom; } // Remove any optional Progressions that target the deleted Step for (int i = 0; i < s.Step.Progressions.Count; i++) { Scenario.Step.Progression p = s.Step.Progressions [i]; if (p.DestinationIndex == iStep) { s.Step.Progressions.RemoveAt(i); } } } // Set all Steps' indices for their Labels for (int i = 0; i < Steps.Count; i++) { Steps [i].SetNumber(i); } // Refresh all IProgressions (visual lines) drawIProgressions(); }
private void updateOptionalProgressionView() { stackOptionalProgressions.Children.Clear(); for (int i = 0; i < selStep.Step.Progressions.Count; i++) { Scenario.Step.Progression p = selStep.Step.Progressions [i]; PropertyOptProgression pp = new PropertyOptProgression(); pp.Init(i, p.DestinationIndex, p.Description); pp.PropertyChanged += updateProperty; stackOptionalProgressions.Children.Add(pp); } }
private void updateProperty(object sender, PropertyOptProgression.PropertyOptProgressionEventArgs e) { if (e.Index >= selStep.Step.Progressions.Count) { return; } Scenario.Step.Progression p = selStep.Step.Progressions [e.Index]; p.DestinationIndex = e.IndexStepTo; p.Description = e.Description; // Deletes an optional progression via this route if (e.ToDelete) { selStep.Step.Progressions.RemoveAt(e.Index); updateOptionalProgressionView(); drawIProgressions(); } }