Example #1
0
        private void menuLimparEndereco_Click(object sender, EventArgs e)
        {
            CodigosInterpretaveis _cI = controleSelecionado.getCI();

            if ((!controleSelecionado.IsDisposed) &&
                (_cI != CodigosInterpretaveis.INICIO_DA_LINHA &&
                 _cI != CodigosInterpretaveis.PARALELO_INICIAL &&
                 _cI != CodigosInterpretaveis.PARALELO_FINAL))
            {
                controleSelecionado.setOperando(0, null);
                controleSelecionado.Refresh();
            }
        }
Example #2
0
        public void Simbolo_KeyDown(object sender, KeyEventArgs e)
        {
            ControleLivre _cL = (ControleLivre)sender;

            switch (_cL.getCI())
            {
            case CodigosInterpretaveis.NENHUM:
                /// Tive que colocar aqui esta opcao de NENHUM para evitar que
                /// a execucao passasse duas vezes em apagar
                break;

            case CodigosInterpretaveis.INICIO_DA_LINHA:
                break;

            default:
                if (e.KeyCode == Keys.Delete)
                {
                    if (_cL != null && linhaSelecionada != null)
                    {
                        if (!_cL.IsDisposed)
                        {
                            switch (_cL.getCI())
                            {
                            case CodigosInterpretaveis.PARALELO_INICIAL:
                                break;

                            case CodigosInterpretaveis.PARALELO_PROXIMO:
                                break;

                            case CodigosInterpretaveis.PARALELO_FINAL:
                                break;

                            default:
                                break;
                            }

                            this.SuspendLayout();
                            this.SelectNextControl(_cL, false, true, false, false);
                            linhaSelecionada.ApagaSimbolos(_cL);
                            this.ReorganizandoLinhas();
                            this.ResumeLayout();
                            linhaSelecionada.simboloDesenhoFundo.Invalidate();
                        }
                    }
                }
                break;
            }
        }
        void simboloInicioLinha_Click(object sender, MouseEventArgs e)
        {
            ControleLivre         _cL = (ControleLivre)sender;
            CodigosInterpretaveis _cI = _cL.getCI();
            DiagramaLadder        _frmDL;

            _frmDL = (DiagramaLadder)_cL.Parent;

            if (e.Button == MouseButtons.Right)
            {
                if (_cI == CodigosInterpretaveis.INICIO_DA_LINHA)
                {
                    _frmDL.menuEnderecamento.Enabled = false;
                    _frmDL.menuInsereLinha.Enabled   = true;

                    /// Extensao de paralelo - acima/abaixo
                    ///    somente sobre simbolos de paralelo
                    _frmDL.menuEstenderParaleloAcima.Enabled  = false;
                    _frmDL.menuEstenderParaleloAcima.Visible  = false;
                    _frmDL.menuEstenderParaleloAbaixo.Enabled = false;
                    _frmDL.menuEstenderParaleloAbaixo.Visible = false;

                    _frmDL.menuControle.Show(_cL.PointToScreen(e.Location));
                }
            }
        }
Example #4
0
        public List <SimboloBasico> VariosSelecionados(ControleLivre _cL, LinhaCompletaVisual _lCL)
        {
            CodigosInterpretaveis _cI    = _cL.getCI();
            List <SimboloBasico>  _lstSB = new List <SimboloBasico>();
            List <ControleLivre>  _lstCL = null;

            switch (_cI)
            {
            case CodigosInterpretaveis.PARALELO_INICIAL:
            case CodigosInterpretaveis.PARALELO_PROXIMO:
            case CodigosInterpretaveis.PARALELO_FINAL:
                int _indicePosInicial = 0;
                int _indicePosFinal   = 0;

                /// verifica em qual lista o controle esta presente (simbolos/saida)
                if (LinhaSelecionada.simbolos.Contains(_cL))
                {
                    _lstCL = LinhaSelecionada.simbolos;
                }
                else if (LinhaSelecionada.saida.Contains(_cL))
                {
                    _lstCL = LinhaSelecionada.saida;
                }
                else
                {
                    return(_lstSB);
                }

                /// define a posicao inicial a partir da posicao
                /// do controle na lista
                _indicePosInicial = _lstCL.IndexOf(_cL);

                if (_cI == CodigosInterpretaveis.PARALELO_FINAL)
                {
                    /// se for paralelo final, inverte a posicial inicial/final
                    _indicePosFinal = _indicePosInicial;
                    /// se for paralelo final, a posicao inicial e
                    /// o paralelo inical
                    _indicePosInicial = _lstCL.IndexOf(_cL.Aponta2PI);
                }
                else
                {
                    /// senao for final aponta para o proximo item de paralelo
                    _indicePosFinal = _lstCL.IndexOf(_cL.Aponta2proxPP);
                }

                /// pega todos os controles dentro da faixa inicial / final
                for (int i = _indicePosInicial; i <= _indicePosFinal; i++)
                {
                    _lstSB.Add(_lstCL[i].SimboloBasico);
                }
                break;

            default:
                _lstSB.Add(_cL.SimboloBasico);
                break;
            }
            return(_lstSB);
        }
Example #5
0
        public void ControleSelecionado_SolicitaMudarEndereco(ControleLivre sender, Rectangle rect, Type tipo, int valorMax, int valorMin, params object[] faixa)
        {
            AlteraTemporizadorContador Altera = new AlteraTemporizadorContador(sender.getCI());

            if (sender.getOperandos(0) == null)
            {
                MessageBox.Show("Favor selecionar um endereço primeiro", "Alterar configuração", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                return;
            }

            switch (sender.getCI())
            {
            case CodigosInterpretaveis.TEMPORIZADOR:
                Altera.Tipo      = (Int32)((EnderecamentoLadder)sender.getOperandos(0)).Temporizador.Tipo;
                Altera.Preset    = (Int32)((EnderecamentoLadder)sender.getOperandos(0)).Temporizador.Preset;
                Altera.Acumulado = (Int32)((EnderecamentoLadder)sender.getOperandos(0)).Temporizador.Acumulado;
                Altera.BaseTempo = (Int32)((EnderecamentoLadder)sender.getOperandos(0)).Temporizador.BaseTempo;
                break;

            case CodigosInterpretaveis.CONTADOR:
                Altera.Tipo      = (Int32)((EnderecamentoLadder)sender.getOperandos(0)).Contador.Tipo;
                Altera.Preset    = (Int32)((EnderecamentoLadder)sender.getOperandos(0)).Contador.Preset;
                Altera.Acumulado = (Int32)((EnderecamentoLadder)sender.getOperandos(0)).Contador.Acumulado;
                break;

            default:
                break;
            }

            DialogResult _result = Altera.ShowDialog();

            if (_result == DialogResult.OK)
            {
                /// mantem os parametros do ci atualizados
                sender.setOperando(1, Altera.Tipo);
                sender.setOperando(2, Altera.Preset);
                sender.setOperando(3, Altera.Acumulado);
                switch (sender.getCI())
                {
                case CodigosInterpretaveis.TEMPORIZADOR:
                    /// mantem os parametros do ci atualizados
                    sender.setOperando(4, Altera.BaseTempo);

                    ((EnderecamentoLadder)sender.getOperandos(0)).Temporizador.Tipo      = Altera.Tipo;
                    ((EnderecamentoLadder)sender.getOperandos(0)).Temporizador.Preset    = Altera.Preset;
                    ((EnderecamentoLadder)sender.getOperandos(0)).Temporizador.Acumulado = Altera.Acumulado;
                    ((EnderecamentoLadder)sender.getOperandos(0)).Temporizador.BaseTempo = Altera.BaseTempo;

                    sender.setOperando(1, ((EnderecamentoLadder)sender.getOperandos(0)).Temporizador.Tipo);
                    sender.setOperando(2, ((EnderecamentoLadder)sender.getOperandos(0)).Temporizador.Preset);
                    sender.setOperando(3, ((EnderecamentoLadder)sender.getOperandos(0)).Temporizador.Acumulado);
                    sender.setOperando(4, ((EnderecamentoLadder)sender.getOperandos(0)).Temporizador.BaseTempo);

                    break;

                case CodigosInterpretaveis.CONTADOR:
                    ((EnderecamentoLadder)sender.getOperandos(0)).Contador.Tipo      = Altera.Tipo;
                    ((EnderecamentoLadder)sender.getOperandos(0)).Contador.Preset    = Altera.Preset;
                    ((EnderecamentoLadder)sender.getOperandos(0)).Contador.Acumulado = Altera.Acumulado;

                    sender.setOperando(1, ((EnderecamentoLadder)sender.getOperandos(0)).Contador.Tipo);
                    sender.setOperando(2, ((EnderecamentoLadder)sender.getOperandos(0)).Contador.Preset);
                    sender.setOperando(3, ((EnderecamentoLadder)sender.getOperandos(0)).Contador.Acumulado);
                    break;

                default:
                    break;
                }

                sender.Invalidate();
            }
        }
        public bool ApagaSimbolos(ControleLivre _aSerApagado)
        {
            int _indicePosInicial = 0;
            int _indicePosFinal   = 0;
            int _auxSaida         = 0;
            List <ControleLivre> _lstCLDeletar = new List <ControleLivre>();
            List <ControleLivre> _lstCL        = null;
            List <SimboloBasico> _lstSB        = null;
            ControleLivre        _cLAMudarCI   = null;

            if (!simbolos.Contains(_aSerApagado))
            {
                if (!saida.Contains(_aSerApagado))
                {
                    return(false);
                }
                else
                {
                    _lstCL = this.saida;
                    _lstSB = linhaBase.saida;

                    /// caso haja um paralelo na saida
                    /// deleta a linha do paralelo
                    switch (_aSerApagado.getCI())
                    {
                    case CodigosInterpretaveis.PARALELO_INICIAL:
                    case CodigosInterpretaveis.PARALELO_FINAL:
                    case CodigosInterpretaveis.PARALELO_PROXIMO:
                        break;

                    default:
                        if (this.saida.Count > 1)
                        {
                            _auxSaida    = this.saida.IndexOf(_aSerApagado);
                            _aSerApagado = this.saida[_auxSaida - 1];
                        }
                        break;
                    }
                }
            }
            else
            {
                _lstCL = this.simbolos;
                _lstSB = linhaBase.simbolos;
            }

            switch (_aSerApagado.getCI())
            {
            case CodigosInterpretaveis.PARALELO_INICIAL:
            case CodigosInterpretaveis.PARALELO_PROXIMO:
                _indicePosInicial = _lstCL.IndexOf(_aSerApagado);
                _indicePosFinal   = _lstCL.IndexOf(_aSerApagado.Aponta2proxPP);

                _indicePosFinal--;

                switch (_aSerApagado.getCI())
                {
                case CodigosInterpretaveis.PARALELO_INICIAL:
                    if (_aSerApagado.Aponta2proxPP.Aponta2proxPP.Aponta2PI != null)
                    {
                        _lstCLDeletar.Add(_aSerApagado.Aponta2proxPP.Aponta2proxPP);
                        _indicePosFinal++;
                    }
                    else
                    {
                        _cLAMudarCI = _aSerApagado.Aponta2proxPP;
                    }
                    break;

                case CodigosInterpretaveis.PARALELO_PROXIMO:
                    if (_aSerApagado.Aponta2proxPP.Aponta2PI != null)
                    {
                        if (_aSerApagado.Aponta2proxPP.Aponta2PI.Aponta2proxPP.Equals(_aSerApagado))
                        {
                            _lstCLDeletar.Add(_aSerApagado.Aponta2proxPP.Aponta2PI);
                            _indicePosFinal++;
                        }
                        //else
                        //_aSerApagado.Aponta2proxPP.setCI(CodigosInterpretaveis.PARALELO_FINAL);
                    }
                    break;
                }
                break;

            case CodigosInterpretaveis.PARALELO_FINAL:
                _indicePosFinal   = _lstCL.IndexOf(_aSerApagado);
                _indicePosInicial = _lstCL.IndexOf(_aSerApagado.Aponta2PI);
                break;

            default:
                _indicePosInicial = _lstCL.IndexOf(_aSerApagado);
                _indicePosFinal   = _indicePosInicial;
                break;
            }

            /// levanta os controles a serem deletados
            for (int i = _indicePosInicial; i <= _indicePosFinal; i++)
            {
                _lstCLDeletar.Add(_lstCL[i]);
            }

            /// deleta um a um
            foreach (ControleLivre _cLADeletar in _lstCLDeletar)
            {
                ApagaSimbolo(_lstCL, _lstSB, _cLADeletar);
            }

            if (_cLAMudarCI != null)
            {
                _cLAMudarCI.setCI(CodigosInterpretaveis.PARALELO_INICIAL);
            }

            return(true);
        }
        void Simbolo_Click(object sender, MouseEventArgs e)
        {
            ControleLivre         _cL = (ControleLivre)sender;
            CodigosInterpretaveis _cI = _cL.getCI();

            ProjetoLadder _frmPL;

            _frmPL = frmDiag.linkProjeto;

            if (e.Button == MouseButtons.Right)
            {
                if (_cI != CodigosInterpretaveis.INICIO_DA_LINHA)
                {
                    frmDiag.menuInsereLinha.Enabled = false;

                    frmDiag.menuToggleBit.Enabled = false;
                    if (_cI == CodigosInterpretaveis.PARALELO_INICIAL ||
                        _cI == CodigosInterpretaveis.PARALELO_FINAL ||
                        _cI == CodigosInterpretaveis.PARALELO_PROXIMO)
                    {
                        frmDiag.menuEnderecamento.Enabled = false;
                        frmDiag.menuEnderecamento.Visible = false;

                        /// Extensao de paralelo - acima/abaixo
                        ///    somente sobre simbolos de paralelo
                        frmDiag.menuEstenderParaleloAcima.Enabled  = true;
                        frmDiag.menuEstenderParaleloAcima.Visible  = true;
                        frmDiag.menuEstenderParaleloAbaixo.Enabled = true;
                        frmDiag.menuEstenderParaleloAbaixo.Visible = true;
                    }
                    else
                    {
                        frmDiag.menuEnderecamento.Enabled = true;
                        frmDiag.menuEnderecamento.Visible = true;

                        if (_cL.getOperandos(0) != null)
                        {
                            frmDiag.menuToggleBit.Enabled = true;
                        }
                        else
                        {
                            frmDiag.menuToggleBit.Enabled = false;
                        }

                        TreeNode _NoEnderecamento = _frmPL.ArvoreProjeto.Nodes["NoProjeto"].Nodes["NoEnderecamento"];

                        ToolStripMenuItem _mnu = null;
                        //ToolStripMenuItem _mnuSub = null;

                        foreach (TreeNode _NoEnd in _NoEnderecamento.Nodes)
                        {
                            //_mnu = new ToolStripMenuItem(_end.Nome);
                            switch (_NoEnd.Text)
                            {
                            case "Memoria":
                                _mnu = frmDiag.menuMemoria;
                                break;

                            case "Temporizadores":
                                _mnu = frmDiag.menuTemporizador;
                                break;

                            case "Contadores":
                                _mnu = frmDiag.menuContador;
                                break;

                            case "Entradas":
                                _mnu = frmDiag.menuEntrada;
                                break;

                            case "Saidas":
                                _mnu = frmDiag.menuSaida;
                                break;
                            }

                            EnderecamentoLadder _end = null;
                            if (_cL.getOperandos(0) != null)
                            {
                                Object obj = _cL.getOperandos(0);
                                if (obj.GetType().ToString() == "LadderApp1.EnderecamentoLadder")
                                {
                                    _end = (LadderApp.EnderecamentoLadder)obj;
                                }
                            }

                            _mnu.DropDownItems.Clear();
                            foreach (TreeNode _NoEndSub in _NoEnd.Nodes)
                            {
                                _mnu.DropDownItems.Add(_NoEndSub.Text);

                                if (_end != null)
                                {
                                    if (_end.Nome == _NoEndSub.Text)
                                    {
                                        _mnu.DropDownItems[_mnu.DropDownItems.Count - 1].Select();
                                    }
                                }

                                _mnu.DropDownItems[_mnu.DropDownItems.Count - 1].Name   = _NoEndSub.Text;
                                _mnu.DropDownItems[_mnu.DropDownItems.Count - 1].Tag    = _NoEndSub.Tag;
                                _mnu.DropDownItems[_mnu.DropDownItems.Count - 1].Click += new EventHandler(LinhaCompletaLivre_Click);
                            }
                        }
                    }
                }
                frmDiag.menuControle.Show(_cL.PointToScreen(e.Location));
            }
        }