Esempio n. 1
0
        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();
        }
Esempio n. 2
0
        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);
            }
        }
Esempio n. 3
0
        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();
            }
        }