public void PopulaFuncao()
 {
     if (dataGridView1.CurrentRow.Selected)
     {
         funcaoCorrente = (Funcao)dataGridView1.CurrentRow.DataBoundItem;
         textBox2.Text = funcaoCorrente.Nome;
         textBox3.Text = string.Empty;
         foreach (MaquinaInequacoesServiceReference.Decisao decisao in funcaoCorrente.ListaDecisoes.Decisoes)
         {
             textBox3.Text += decisao.Inequacao + ", " + decisao.BlocoDeAcao  + Environment.NewLine;
         }
     }
 }
        private void button1_Click(object sender, EventArgs e)
        {
            if (textBox2.Text == string.Empty)
            {
                MessageBox.Show("Nome da variável");
                return;
            }

            foreach (Funcao func in ListaFuncoes)
            {
                if (func.Nome.Trim().ToLower() == textBox2.Text.Trim().ToLower())
                {
                    MessageBox.Show("Função com mesmo nome já existe");
                    return;
                }
            }

            MaquinaInequacoesServiceReference.Variavel varRetorno = null;
            foreach(MaquinaInequacoesServiceReference.Variavel var in ((List<MaquinaInequacoesServiceReference.Variavel>)dataGridView2.DataSource))
            {
                if (var.Nome.Trim().ToLower() == textBox1.Text.Trim().ToLower())
                {
                    varRetorno = var;
                    break;
                }
            }

            if (varRetorno == null)
            {
                MessageBox.Show("Variável inexistente");
                return;
            }

            Funcao funcao = new Funcao();
            funcao.Nome = textBox2.Text;
            funcao.ListaDecisoes = CarregaListaDecisoes();
            funcao.VariavelRetorno = varRetorno;

            List<Funcao> lista = (List<Funcao>)dataGridView1.DataSource;
            lista.Add(funcao);
            dataGridView1.DataSource = null;
            dataGridView1.DataSource = lista;
            //MessageBox.Show("Inserido");
        }
        public void CarregarListaDecisoesDoArquivo(string fileName)
        {
            System.IO.StreamReader sr = new System.IO.StreamReader(File.OpenRead(fileName), Encoding.Default, true);
            MaquinaInequacoesServiceClient telaFuncaoParse = new MaquinaInequacoesServiceClient();

            Funcao funcao = new Funcao();
            funcao.Nome = fileName.Replace(GetCaminhoBaseArquivosTeste() + @"\ValidacaoLimites\MemoriaCalculo_ListasDecisoes\", string.Empty).Replace("-LD.txt", string.Empty);

            List<MaquinaInequacoesServiceReference.Decisao> decisoes = new List<MaquinaInequacoesServiceReference.Decisao>();

            while (sr.Peek() != -1)
            {
                string line = sr.ReadLine().Trim();
                if (line != string.Empty && line.Substring(0, 2) != "//")
                {
                    KeyValuePair<string, string> inequacaoBlocoAcao = ParseInequacaoBlocoAcao(line);
                    string inequacao = inequacaoBlocoAcao.Key;
                    string blocoAcao = inequacaoBlocoAcao.Value;

                    MaquinaInequacoesServiceReference.Decisao decisao = new MaquinaInequacoesServiceReference.Decisao();
                    decisao.Inequacao = inequacao;
                    decisao.BlocoDeAcao = blocoAcao;
                    decisoes.Add(decisao);
                }
            }

            if (funcao.ListaDecisoes == null)
                funcao.ListaDecisoes = new MaquinaInequacoesServiceReference.ListaDecisoes();

            funcao.ListaDecisoes.Decisoes = decisoes.ToArray();
            //funcao.VariavelRetorno = varRetorno;
            Funcoes.Add(funcao);
        }