Esempio n. 1
0
        public void VisualInstruction_KeyDown(object sender, KeyEventArgs e)
        {
            VisualInstructionUserControl visualInstruction = (VisualInstructionUserControl)sender;

            switch (visualInstruction.OpCode)
            {
            case OperationCode.None:
                /// Tive que colocar aqui esta opcao de NENHUM para evitar que
                /// a execucao passasse duas vezes em apagar
                break;

            case OperationCode.LineBegin:
                break;

            default:
                if (e.KeyCode == Keys.Delete)
                {
                    if (visualInstruction != null && SelectedVisualLine != null)
                    {
                        if (!visualInstruction.IsDisposed)
                        {
                            SuspendLayout();
                            SelectNextControl(visualInstruction, false, true, false, false);
                            SelectedVisualLine.RemoveVisualInstruction(visualInstruction);
                            ReorganizeLines();
                            ResumeLayout();
                            SelectedVisualLine.BackgroundLine.Invalidate();
                        }
                    }
                }
                break;
            }
        }
Esempio n. 2
0
        private void InsertInstruction(VisualLine.LocalToInsertInstruction localToInsertInstruction, params OperationCode[] opCodes)
        {
            if (!IsLadderFormOpen())
            {
                return;
            }

            if (projectForm.LadderForm.VisualInstruction.IsDisposed)
            {
                return;
            }

            if (btnSimulateLadder.Checked)
            {
                btnSimulateLadder.Checked = false;
                Thread.Sleep(100);
            }

            VisualInstructionUserControl visualInstruction = projectForm.LadderForm.VisualInstruction;
            VisualLine visualLine = projectForm.LadderForm.SelectedVisualLine;

            visualInstruction = visualLine.InsertInstruction(localToInsertInstruction, visualInstruction, opCodes);

            projectForm.LadderForm.ReorganizeLines();

            visualInstruction.Select();
        }
Esempio n. 3
0
 public void InsertAddressAtInstruction(VisualInstructionUserControl visualInstruction, Address address)
 {
     if (!visualInstruction.IsDisposed)
     {
         visualInstruction.SetOperand(0, address);
         visualInstruction.Refresh();
     }
 }
Esempio n. 4
0
        public void OutputTypeBox_MouseHover(object sender, EventArgs e)
        {
            VisualInstructionUserControl visualInstruction = (VisualInstructionUserControl)sender;

            if (visualInstruction.Tag != null && (String)visualInstruction.Tag != "")
            {
                toolTipOutputBox.Show((String)visualInstruction.Tag, visualInstruction, 3000);
            }
        }
Esempio n. 5
0
        public void VisualInstruction_AskToChangeAddress(VisualInstructionUserControl sender)
        {
            if (!sender.IsAllOperandsOk())
            {
                MessageBox.Show("Please, assign an address first!", "Change configuration", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                return;
            }

            ChangeTimerCounterParametersForm changeTimerCounterParametersForm = new ChangeTimerCounterParametersForm(sender.OpCode);
            OutputBoxInstruction             outputBox = ((OutputBoxInstruction)sender.Instruction);

            changeTimerCounterParametersForm.Type        = outputBox.GetBoxType();
            changeTimerCounterParametersForm.Preset      = outputBox.GetPreset();
            changeTimerCounterParametersForm.Accumulated = outputBox.GetAccumulated();

            if (sender.OpCode.Equals(OperationCode.Timer))
            {
                changeTimerCounterParametersForm.TimeBase = ((TimerInstruction)outputBox).GetTimeBase();
            }
            DialogResult result = changeTimerCounterParametersForm.ShowDialog();

            if (result == DialogResult.OK)
            {
                outputBox = (OutputBoxInstruction)sender.Instruction;
                outputBox.setBoxType(changeTimerCounterParametersForm.Type);
                outputBox.setPreset(changeTimerCounterParametersForm.Preset);
                outputBox.setAccumulated(changeTimerCounterParametersForm.Accumulated);

                switch (sender.OpCode)
                {
                case OperationCode.Timer:
                    ((TimerInstruction)outputBox).SetTimeBase(changeTimerCounterParametersForm.TimeBase);

                    sender.GetAddress().Timer.Type = changeTimerCounterParametersForm.Type;
                    sender.GetAddress().Timer.Preset = changeTimerCounterParametersForm.Preset;
                    sender.GetAddress().Timer.Accumulated = changeTimerCounterParametersForm.Accumulated;
                    sender.GetAddress().Timer.TimeBase = changeTimerCounterParametersForm.TimeBase;

                    break;

                case OperationCode.Counter:
                    CounterInstruction counter = ((CounterInstruction)outputBox);

                    counter.Counter.Type        = changeTimerCounterParametersForm.Type;
                    counter.Counter.Preset      = changeTimerCounterParametersForm.Preset;
                    counter.Counter.Accumulated = changeTimerCounterParametersForm.Accumulated;

                    break;
                }

                sender.Invalidate();
            }
        }
Esempio n. 6
0
        public List <Instruction> VariosSelecionados(VisualInstructionUserControl visualInstruction)
        {
            OperationCode      opCode       = visualInstruction.OpCode;
            List <Instruction> instructions = new List <Instruction>();
            List <VisualInstructionUserControl> visualInstructions;

            switch (opCode)
            {
            case OperationCode.ParallelBranchBegin:
            case OperationCode.ParallelBranchNext:
            case OperationCode.ParallelBranchEnd:
                int initialPositionIndex;
                int finalPositionIndex;

                if (SelectedVisualLine.visualInstructions.Contains(visualInstruction))
                {
                    visualInstructions = SelectedVisualLine.visualInstructions;
                }
                else if (SelectedVisualLine.visualOutputInstructions.Contains(visualInstruction))
                {
                    visualInstructions = SelectedVisualLine.visualOutputInstructions;
                }
                else
                {
                    return(instructions);
                }

                initialPositionIndex = visualInstructions.IndexOf(visualInstruction);

                if (opCode == OperationCode.ParallelBranchEnd)
                {
                    finalPositionIndex   = initialPositionIndex;
                    initialPositionIndex = visualInstructions.IndexOf(visualInstruction.PointToParallelBegin);
                }
                else
                {
                    finalPositionIndex = visualInstructions.IndexOf(visualInstruction.PointToNextParallelPoint);
                }

                for (int i = initialPositionIndex; i <= finalPositionIndex; i++)
                {
                    instructions.Add(visualInstructions[i].Instruction);
                }
                break;

            default:
                instructions.Add(visualInstruction.Instruction);
                break;
            }
            return(instructions);
        }
Esempio n. 7
0
        private static int VerifyPositionToInsert(bool after, VisualInstructionUserControl visualInstruction, List <VisualInstructionUserControl> visualInstructions)
        {
            int index = visualInstructions.IndexOf(visualInstruction);

            if (index < 0)
            {
                index = 0;
            }
            else
            if (after)
            {
                index++;
            }
            return(index);
        }
Esempio n. 8
0
 public void VisualInstruction_Selected(VisualInstructionUserControl visualInstruction, VisualLine visualLine)
 {
     if (VisualInstruction != null)
     {
         if (!VisualInstruction.IsDisposed)
         {
             if (!VisualInstruction.Equals(visualInstruction))
             {
                 VisualInstruction.Selected = false;
                 VisualInstruction.Refresh();
             }
         }
     }
     VisualInstruction  = visualInstruction;
     SelectedVisualLine = visualLine;
 }
Esempio n. 9
0
 public void LineBeginVisualInstruction_ChangeLine(VisualInstructionUserControl sender, Keys e)
 {
     if (e == Keys.Up)
     {
         if ((int)sender.VisualLine.LineNumber != 0)
         {
             sender.VisualLine.PreviousLine.LineBegin.Select();
         }
     }
     else if (e == Keys.Down)
     {
         if ((int)sender.VisualLine.NextLine.LineNumber != 0)
         {
             sender.VisualLine.NextLine.LineBegin.Select();
         }
     }
 }
Esempio n. 10
0
        private void PasteToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (IsLadderFormOpen())
            {
                if (projectForm.LadderForm.VisualInstruction != null)
                {
                    if (!projectForm.LadderForm.VisualInstruction.IsDisposed)
                    {
                        DataFormats.Format myFormat                = DataFormats.GetFormat("List<SimboloBasico>");
                        Object             returnObject            = null;
                        List <Instruction> instructionsSource      = new List <Instruction>();
                        InstructionList    instructionsDestination = new InstructionList();

                        IDataObject iData = Clipboard.GetDataObject();

                        // Determines whether the data is in a format you can use.
                        if (iData.GetDataPresent(myFormat.Name))
                        {
                            try
                            {
                                returnObject = iData.GetData(myFormat.Name);
                            }
                            catch
                            {
                                MessageBox.Show("Error");
                            }
                        }

                        instructionsSource = (List <Instruction>)returnObject;

                        instructionsDestination.InsertAllWithClearBefore(instructionsSource);

                        VisualInstructionUserControl visualInstruction = projectForm.LadderForm.SelectedVisualLine.InsertInstructionAtLocalToBeDefined(true, projectForm.LadderForm.VisualInstruction, instructionsDestination);
                        projectForm.LadderForm.ReorganizeLines();
                        visualInstruction.Select();
                    }
                }
            }
        }
Esempio n. 11
0
        void LineBeginVisualInstruction_Click(object sender, MouseEventArgs e)
        {
            if (!e.Button.Equals(MouseButtons.Right))
            {
                return;
            }

            VisualInstructionUserControl visualInstruction = (VisualInstructionUserControl)sender;

            if (visualInstruction.OpCode == OperationCode.LineBegin)
            {
                ladderForm.mnuAddressing.Enabled       = false;
                ladderForm.mnuInsertLadderLine.Enabled = true;

                ladderForm.mnuExtendParallelBranchAbove.Enabled = false;
                ladderForm.mnuExtendParallelBranchAbove.Visible = false;
                ladderForm.mnuExtendParallelBranchBelow.Enabled = false;
                ladderForm.mnuExtendParallelBranchBelow.Visible = false;

                ladderForm.mnuContextAtInstruction.Show(visualInstruction.PointToScreen(e.Location));
            }
        }
Esempio n. 12
0
        void VisualInstruction_Click(object sender, MouseEventArgs e)
        {
            if (!e.Button.Equals(MouseButtons.Right))
            {
                return;
            }

            VisualInstructionUserControl visualInstruction = (VisualInstructionUserControl)sender;
            OperationCode opCode = visualInstruction.OpCode;

            if (opCode != OperationCode.LineBegin)
            {
                ladderForm.mnuInsertLadderLine.Enabled = false;

                ladderForm.mnuToggleBit.Enabled = false;
                if (opCode == OperationCode.ParallelBranchBegin ||
                    opCode == OperationCode.ParallelBranchEnd ||
                    opCode == OperationCode.ParallelBranchNext)
                {
                    ladderForm.mnuAddressing.Enabled = false;
                    ladderForm.mnuAddressing.Visible = false;

                    ladderForm.mnuExtendParallelBranchAbove.Enabled = true;
                    ladderForm.mnuExtendParallelBranchAbove.Visible = true;
                    ladderForm.mnuExtendParallelBranchBelow.Enabled = true;
                    ladderForm.mnuExtendParallelBranchBelow.Visible = true;
                }
                else
                {
                    ladderForm.mnuAddressing.Enabled = true;
                    ladderForm.mnuAddressing.Visible = true;

                    if (visualInstruction.IsAllOperandsOk())
                    {
                        ladderForm.mnuToggleBit.Enabled = true;
                    }
                    else
                    {
                        ladderForm.mnuToggleBit.Enabled = false;
                    }

                    ProjectForm projectForm    = ladderForm.projectForm;
                    TreeNode    addressingNode = projectForm.tvnProjectTree.Nodes["tvnProjectNode"].Nodes["tvnAddressingNode"];
                    foreach (TreeNode eachAddressTypeNode in addressingNode.Nodes)
                    {
                        ToolStripMenuItem menu = null;
                        switch (eachAddressTypeNode.Text)
                        {
                        case "Memories":
                            menu = ladderForm.mnuMemory;
                            break;

                        case "Timer":
                            menu = ladderForm.mnuTimer;
                            break;

                        case "Counter":
                            menu = ladderForm.mnuCounter;
                            break;

                        case "Input":
                            menu = ladderForm.mnuInput;
                            break;

                        case "Output":
                            menu = ladderForm.mnuOutput;
                            break;
                        }

                        Address address = null;
                        if (visualInstruction.IsAllOperandsOk())
                        {
                            Object obj = visualInstruction.GetOperand(0);
                            if (obj is Address)
                            {
                                address = (Address)obj;
                            }
                        }

                        menu.DropDownItems.Clear();
                        foreach (TreeNode eachAddressNode in eachAddressTypeNode.Nodes)
                        {
                            menu.DropDownItems.Add(eachAddressNode.Text);

                            if (address != null)
                            {
                                if (address.GetName() == eachAddressNode.Text)
                                {
                                    menu.DropDownItems[menu.DropDownItems.Count - 1].Select();
                                }
                            }

                            menu.DropDownItems[menu.DropDownItems.Count - 1].Name   = eachAddressNode.Text;
                            menu.DropDownItems[menu.DropDownItems.Count - 1].Tag    = eachAddressNode.Tag;
                            menu.DropDownItems[menu.DropDownItems.Count - 1].Click += new EventHandler(MenuContextAddress_Click);
                        }
                    }
                }
            }
            ladderForm.mnuContextAtInstruction.Show(visualInstruction.PointToScreen(e.Location));
        }
Esempio n. 13
0
 public VisualInstructionUserControl InsertInstruction(LocalToInsertInstruction localToInsertInstruction, VisualInstructionUserControl visualInstruction, params OperationCode[] opCodes)
 {
     return(InsertInstruction(true, localToInsertInstruction, visualInstruction, opCodes));
 }
Esempio n. 14
0
        public VisualInstructionUserControl InsertInstruction(bool after, LocalToInsertInstruction localToInsertInstruction, VisualInstructionUserControl visualInstruction, params OperationCode[] opCodes)
        {
            InstructionList instructions = new InstructionList();

            instructions.InsertAllWithClearBefore(opCodes);

            switch (localToInsertInstruction)
            {
            case LocalToInsertInstruction.Undefined:
                visualInstruction = InsertInstructionAtLocalToBeDefined(after, visualInstruction, instructions);
                break;

            case LocalToInsertInstruction.ConditionsAtLeft:
                visualInstruction = InsertConditionInstructionAtLeft(after, visualInstruction, instructions);
                break;

            case LocalToInsertInstruction.OutputsAtRight:
                visualInstruction = InsertOutputInstructionAtRight(after, visualInstruction, instructions);
                break;
            }
            return(visualInstruction);
        }
Esempio n. 15
0
        public VisualInstructionUserControl InsertInstructionAtLocalToBeDefined(bool after, VisualInstructionUserControl visualInstruction, InstructionList instructions)
        {
            instructions.ValidateOperands();

            if (!instructions.Contains(OperationCode.OutputCoil) &&
                !instructions.Contains(OperationCode.Timer) &&
                !instructions.Contains(OperationCode.Counter))
            {
                return(InsertConditionInstructionAtLeft(after, visualInstruction, instructions));
            }
            else
            {
                return(InsertOutputInstructionAtRight(after, visualInstruction, instructions));
            }
        }
Esempio n. 16
0
        private VisualInstructionUserControl InsertConditionInstructionAtLeft(bool after, VisualInstructionUserControl visualInstruction, InstructionList instructions)
        {
            int index = VerifyPositionToInsert(after, visualInstruction, this.visualInstructions);

            foreach (Instruction instruction in instructions)
            {
                line.Instructions.Insert(index, instruction);
                InsertVisualInstructionAt(index, this.visualInstructions, instruction);
                index++;
            }
            return(this.visualInstructions[index - 1]);
        }
Esempio n. 17
0
        private VisualInstructionUserControl InsertOutputInstructionAtRight(bool after, VisualInstructionUserControl visualInstruction, InstructionList instructions)
        {
            int index = 0;
            int autToRetornInsertedInstruction = 0;

            switch (visualOutputInstructions.Count)
            {
            case 0:
                index = 0;

                if (instructions.Count > 1)
                {
                    instructions.InsertParallelBranch(InstructionList.ParallelBranchInsertionType.ParallelBranchCompleted);
                    autToRetornInsertedInstruction = -1;
                }

                break;

            case 1:
                index = VerifyPositionToInsert(after, visualInstruction, this.visualOutputInstructions);

                if (index == 0)
                {
                    instructions.InsertParallelBranch(InstructionList.ParallelBranchInsertionType.ParallelBranchInitialized);

                    line.Outputs.Insert(0, InstructionFactory.createInstruction(OperationCode.ParallelBranchNext));
                    InsertVisualInstructionAt(0, this.visualOutputInstructions, InstructionFactory.createInstruction(OperationCode.ParallelBranchNext));
                    line.Outputs.Insert(this.visualOutputInstructions.Count, InstructionFactory.createInstruction(OperationCode.ParallelBranchEnd));
                    InsertVisualInstructionAt(this.visualOutputInstructions.Count, this.visualOutputInstructions, InstructionFactory.createInstruction(OperationCode.ParallelBranchEnd));
                }
                else
                {
                    instructions.InsertParallelBranch(InstructionList.ParallelBranchInsertionType.ParallelBranchFinalized);
                    autToRetornInsertedInstruction = -1;

                    line.Outputs.Insert(0, InstructionFactory.createInstruction(OperationCode.ParallelBranchBegin));
                    InsertVisualInstructionAt(0, this.visualOutputInstructions, InstructionFactory.createInstruction(OperationCode.ParallelBranchBegin));
                    index++;
                }

                break;

            default:
                index = VerifyPositionToInsert(false, visualInstruction, this.visualOutputInstructions);

                switch (this.visualOutputInstructions[index].OpCode)
                {
                case OperationCode.ParallelBranchBegin:
                    instructions.InsertParallelBranch(InstructionList.ParallelBranchInsertionType.ParallelBranchInitialized);

                    line.Outputs[0].OpCode = OperationCode.ParallelBranchNext;
                    this.visualOutputInstructions[0].OpCode = OperationCode.ParallelBranchNext;
                    break;

                case OperationCode.ParallelBranchNext:
                    instructions.InsertParallelBranchNext();
                    break;

                case OperationCode.ParallelBranchEnd:
                    instructions.InsertParallelBranchNext();
                    break;

                default:
                    instructions.InsertParallelBranchNext();
                    index++;
                    break;
                }
                break;
            }

            foreach (Instruction instruction in instructions)
            {
                line.Outputs.Insert(index, instruction);
                InsertVisualInstructionAt(index, this.visualOutputInstructions, instruction);
                index++;
            }

            return(this.visualOutputInstructions[index - 1 + autToRetornInsertedInstruction]);
        }
Esempio n. 18
0
        public void AdjustPositioning()
        {
            VisualInstructionUserControl visualInstructionAux = null;

            int biggerX = 0;

            int countInstructions = 0;
            int accumulatedXAtFirstOutputInstruction  = 0;
            int accumulatedXAtBiggerOutputInstruction = 0;
            int outputSize = 0;

            VisualParallelBranch        parallelBranch         = null;
            List <VisualParallelBranch> visualParallelBranches = new List <VisualParallelBranch>();

            int lastSizeOfYToFinalParallelBranch = 0;

            int sizeOfYToBackgroundDraw = 0;

            int xPosition = XPosition;
            int yPosition = YPosition;

            int xSize = XSize;
            int ySize = YSize;

            int xSizeAccumulated = XSize;
            int ySizeAccumulated = YSize;

            visualInstructions.AddRange(visualOutputInstructions);

            foreach (VisualInstructionUserControl visualInstruction in visualInstructions)
            {
                countInstructions++;

                if (visualParallelBranches.Count == 0)
                {
                    if (biggerX > 0)
                    {
                        xPosition = biggerX;
                    }
                    biggerX = 0;
                }
                else
                {
                    if (biggerX < (xPosition + xSize))
                    {
                        biggerX = xPosition + xSize;
                    }
                }

                switch (visualInstruction.OpCode)
                {
                case OperationCode.ParallelBranchBegin:
                    ySize     = YSize; // restaura tamanho Y base
                    xPosition = xSizeAccumulated;
                    xSize     = this.XSize / 3;

                    parallelBranch = new VisualParallelBranch();
                    visualParallelBranches.Add(parallelBranch);

                    parallelBranch.accumulatedY        = yPosition;
                    parallelBranch.biggerY             = yPosition;
                    parallelBranch.biggerX             = biggerX;
                    parallelBranch.parallelBranchBegin = visualInstruction;

                    xSizeAccumulated = xPosition + xSize;
                    break;

                case OperationCode.ParallelBranchEnd:
                    xSize     = this.XSize / 3;
                    ySize     = parallelBranch.lastParallelBranchNext.XYPosition.Y - parallelBranch.parallelBranchBegin.XYPosition.Y + parallelBranch.lastParallelBranchNext.XYSize.Height; // _ultTamY2ParaleloFinal;
                    yPosition = parallelBranch.parallelBranchBegin.XYPosition.Y;

                    if (biggerX > parallelBranch.biggerX)
                    {
                        parallelBranch.biggerX = biggerX;
                    }

                    xPosition = parallelBranch.biggerX;

                    if (lastSizeOfYToFinalParallelBranch > sizeOfYToBackgroundDraw)
                    {
                        sizeOfYToBackgroundDraw = lastSizeOfYToFinalParallelBranch;
                    }

                    visualInstruction.AssociateParallelBranchList(parallelBranch.parallelBranchList);

                    visualInstruction.PointToParallelBegin = parallelBranch.parallelBranchBegin;
                    parallelBranch.parallelBranchBegin.PointToParallelEnd          = visualInstruction;
                    parallelBranch.lastParallelBranchNext.PointToNextParallelPoint = visualInstruction;

                    parallelBranch.lastParallelBranchNext.LastParallelBranchEnd = true;

                    parallelBranch = null;
                    visualParallelBranches.RemoveAt(visualParallelBranches.Count - 1);

                    if (visualParallelBranches.Count > 0)
                    {
                        parallelBranch = visualParallelBranches[visualParallelBranches.Count - 1];
                    }


                    if (visualParallelBranches.Count > 0)
                    {
                        if (lastSizeOfYToFinalParallelBranch > parallelBranch.biggerY)
                        {
                            parallelBranch.biggerY = lastSizeOfYToFinalParallelBranch;
                        }
                    }

                    xSizeAccumulated = xPosition + xSize;
                    break;

                case OperationCode.ParallelBranchNext:
                    ySize = YSize;
                    xSize = this.XSize / 3;

                    if (biggerX > parallelBranch.biggerX)
                    {
                        parallelBranch.biggerX = biggerX;
                    }
                    biggerX = 0;

                    xPosition = parallelBranch.parallelBranchBegin.XYPosition.X;

                    parallelBranch.accumulatedY = parallelBranch.biggerY;
                    yPosition = parallelBranch.biggerY + (YSize * (parallelBranch.numberOfParallelBranchNext + 1));

                    if (parallelBranch.numberOfParallelBranchNext > 0)
                    {
                        visualInstructionAux = parallelBranch.lastParallelBranchNext;
                        visualInstructionAux.LastParallelBranchEnd = false;
                    }
                    else
                    {
                        visualInstructionAux = parallelBranch.parallelBranchBegin;
                    }

                    visualInstructionAux.XYSize = new Size(visualInstructionAux.XYSize.Width, yPosition - visualInstructionAux.XYPosition.Y);

                    visualInstructionAux.PointToNextParallelPoint = visualInstruction;

                    parallelBranch.numberOfParallelBranchNext += 1;
                    parallelBranch.lastParallelBranchNext      = visualInstruction;
                    lastSizeOfYToFinalParallelBranch           = yPosition;

                    parallelBranch.parallelBranchList.Add(visualInstruction);

                    xSizeAccumulated = xPosition + xSize;
                    break;

                default:
                    ySize             = YSize;
                    xSize             = XSize;
                    xPosition         = xSizeAccumulated;
                    xSizeAccumulated += xSize;
                    break;
                }

                visualInstruction.XYPosition = new Point(xPosition, yPosition);
                visualInstruction.XYSize     = new Size(xSize, ySize);

                if ((visualOutputInstructions.Count > 0) && (countInstructions >= (visualInstructions.Count - visualOutputInstructions.Count)))
                {
                    if (countInstructions == (visualInstructions.Count - visualOutputInstructions.Count))
                    {
                        accumulatedXAtFirstOutputInstruction = xSizeAccumulated;
                    }

                    if (accumulatedXAtBiggerOutputInstruction < xSizeAccumulated)
                    {
                        accumulatedXAtBiggerOutputInstruction = xSizeAccumulated;
                    }
                }
            }

            outputSize = (accumulatedXAtBiggerOutputInstruction - accumulatedXAtFirstOutputInstruction);// -this.tamX;
            if (outputSize == 0)
            {
                outputSize = XSize;
            }

            visualInstructions.RemoveRange((visualInstructions.Count - visualOutputInstructions.Count), visualOutputInstructions.Count);

            sizeOfYToBackgroundDraw += YSize;

            if ((YPosition > YSize) && (sizeOfYToBackgroundDraw > YPosition))
            {
                sizeOfYToBackgroundDraw -= YPosition;
            }

            LineBegin.XYPosition = new Point(XPosition, YPosition);
            LineBegin.XYSize     = new Size(this.XSize, sizeOfYToBackgroundDraw);
            LineBegin.Location   = new Point(XPosition, YPosition);
            LineBegin.Size       = new Size(this.XSize, sizeOfYToBackgroundDraw);

            if (xSizeAccumulated < (ladderForm.Width - this.XSize))
            {
                xSizeAccumulated = (ladderForm.Width - this.XSize);
            }

            if (PreviousLine != null)
            {
                if (xSizeAccumulated < PreviousLine.LineEnd.XYPosition.X)
                {
                    xSizeAccumulated = PreviousLine.LineEnd.XYPosition.X;
                }
            }

            XPositionToFirstOutputVisualInstruction = xSizeAccumulated - accumulatedXAtFirstOutputInstruction - (outputSize);

            LineEnd.XYPosition = new Point(xSizeAccumulated, YPosition);
            LineEnd.XYSize     = new Size(this.XSize, sizeOfYToBackgroundDraw);
            LineEnd.Location   = new Point(xSizeAccumulated, YPosition);
            LineEnd.Size       = new Size(this.XSize, sizeOfYToBackgroundDraw);

            BackgroundLine.XYPosition = new Point(XPosition, YPosition);
            BackgroundLine.XYSize     = new Size(xSizeAccumulated, sizeOfYToBackgroundDraw);
            BackgroundLine.Location   = new Point(XPosition, YPosition);
            BackgroundLine.Size       = new Size(xSizeAccumulated, sizeOfYToBackgroundDraw);

            ResizeVisualInstructions();
        }
Esempio n. 19
0
        public bool RemoveInstruction(List <VisualInstructionUserControl> visualInstructions, List <Instruction> instructions, VisualInstructionUserControl visulInstructionToBeRemoved)
        {
            int index = visualInstructions.IndexOf(visulInstructionToBeRemoved);

            visualInstructions.RemoveAt(index);

            instructions.RemoveAt(index);

            visulInstructionToBeRemoved.VisualInstructionSelectedEvent -= new VisualInstructionSelectedEventHandler(ladderForm.VisualInstruction_Selected);
            visulInstructionToBeRemoved.MouseClick -= new MouseEventHandler(VisualInstruction_Click);
            visulInstructionToBeRemoved.KeyDown    -= new KeyEventHandler(ladderForm.VisualInstruction_KeyDown);
            visulInstructionToBeRemoved.Instruction.Dispose();
            visulInstructionToBeRemoved.Dispose();

            return(true);
        }
Esempio n. 20
0
        public bool RemoveVisualInstruction(VisualInstructionUserControl visualInstructionToBeRemoved)
        {
            int initialPositionIndex = 0;
            int finalPositionIndex   = 0;
            int outputIndex          = 0;
            List <VisualInstructionUserControl> visualInstructionsToRemove = new List <VisualInstructionUserControl>();
            List <VisualInstructionUserControl> visualInstructionsAux      = null;
            List <Instruction>           instructions = null;
            VisualInstructionUserControl visualInstructionToChangeOpCode = null;

            if (!visualInstructions.Contains(visualInstructionToBeRemoved))
            {
                if (!visualOutputInstructions.Contains(visualInstructionToBeRemoved))
                {
                    return(false);
                }
                else
                {
                    visualInstructionsAux = visualOutputInstructions;
                    instructions          = line.Outputs;

                    switch (visualInstructionToBeRemoved.OpCode)
                    {
                    case OperationCode.ParallelBranchBegin:
                    case OperationCode.ParallelBranchEnd:
                    case OperationCode.ParallelBranchNext:
                        break;

                    default:
                        if (this.visualOutputInstructions.Count > 1)
                        {
                            outputIndex = this.visualOutputInstructions.IndexOf(visualInstructionToBeRemoved);
                            visualInstructionToBeRemoved = this.visualOutputInstructions[outputIndex - 1];
                        }
                        break;
                    }
                }
            }
            else
            {
                visualInstructionsAux = visualInstructions;
                instructions          = line.Instructions;
            }

            switch (visualInstructionToBeRemoved.OpCode)
            {
            case OperationCode.ParallelBranchBegin:
            case OperationCode.ParallelBranchNext:
                initialPositionIndex = visualInstructionsAux.IndexOf(visualInstructionToBeRemoved);
                finalPositionIndex   = visualInstructionsAux.IndexOf(visualInstructionToBeRemoved.PointToNextParallelPoint);

                finalPositionIndex--;

                switch (visualInstructionToBeRemoved.OpCode)
                {
                case OperationCode.ParallelBranchBegin:
                    if (visualInstructionToBeRemoved.PointToNextParallelPoint.PointToNextParallelPoint.PointToParallelBegin != null)
                    {
                        visualInstructionsToRemove.Add(visualInstructionToBeRemoved.PointToNextParallelPoint.PointToNextParallelPoint);
                        finalPositionIndex++;
                    }
                    else
                    {
                        visualInstructionToChangeOpCode = visualInstructionToBeRemoved.PointToNextParallelPoint;
                    }
                    break;

                case OperationCode.ParallelBranchNext:
                    if (visualInstructionToBeRemoved.PointToNextParallelPoint.PointToParallelBegin != null)
                    {
                        if (visualInstructionToBeRemoved.PointToNextParallelPoint.PointToParallelBegin.PointToNextParallelPoint.Equals(visualInstructionToBeRemoved))
                        {
                            visualInstructionsToRemove.Add(visualInstructionToBeRemoved.PointToNextParallelPoint.PointToParallelBegin);
                            finalPositionIndex++;
                        }
                    }
                    break;
                }
                break;

            case OperationCode.ParallelBranchEnd:
                finalPositionIndex   = visualInstructionsAux.IndexOf(visualInstructionToBeRemoved);
                initialPositionIndex = visualInstructionsAux.IndexOf(visualInstructionToBeRemoved.PointToParallelBegin);
                break;

            default:
                initialPositionIndex = visualInstructionsAux.IndexOf(visualInstructionToBeRemoved);
                finalPositionIndex   = initialPositionIndex;
                break;
            }

            for (int i = initialPositionIndex; i <= finalPositionIndex; i++)
            {
                visualInstructionsToRemove.Add(visualInstructionsAux[i]);
            }

            foreach (VisualInstructionUserControl eachVisualInstructionToBeRemoved in visualInstructionsToRemove)
            {
                RemoveInstruction(visualInstructionsAux, instructions, eachVisualInstructionToBeRemoved);
            }

            if (visualInstructionToChangeOpCode != null)
            {
                visualInstructionToChangeOpCode.OpCode = OperationCode.ParallelBranchBegin;
            }

            return(true);
        }
Esempio n. 21
0
        public VisualInstructionUserControl InsertInstructionDirect(List <VisualInstructionUserControl> visualInstructions, VisualInstructionUserControl visualInstruction, List <Instruction> instructions)
        {
            int index = visualInstructions.IndexOf(visualInstruction);

            if (index < 0)
            {
                index = 0;
            }
            else
            {
                index++;
            }

            if (instructions.Count > 0)
            {
                foreach (Instruction instruction in instructions)
                {
                    InsertVisualInstructionAt(index, visualInstructions, instruction);
                    index++;
                }

                return(visualInstructions[index - 1]);
            }
            return(null);
        }