示例#1
0
        private void listObjetos_MouseClick(object sender, MouseEventArgs e)
        {
            if (listObjetos.SelectedItems.Count == 0)
                return;

            TabPageCustom tab = (TabPageCustom)tabs.SelectedTab;
            string guidRegistro = tab.guidRegistro;
            string guidObjeto = tab.guidObjeto;
            string guidCodigo = tab.guidCodigo;
            modoDiferencias = true;
            HLCode code = null;
            foreach (Control item in tab.Controls)
            {
                try
                {
                    code = (HLCode)item;
                    break;
                }
                catch (Exception)
                {

                }
            }

            Codigo codigo = getCodigo(guidRegistro, guidObjeto, guidCodigo);
            Objeto obj = getObjeto(guidRegistro, guidObjeto);

            ListViewItemCustom itemVersion = (ListViewItemCustom)listObjetos.SelectedItems[0];
            string guidVersion = itemVersion.guid;
            if (guidCodigo == guidVersion){

                code.Text = codigo.codigo;
                actualizarLineasMostradas(code, 0, true);
                modoDiferencias = false;

                return;
            }

            Codigo codigoVersion = getCodigo(guidRegistro, guidObjeto, guidVersion);

            Diff dif = new Diff();

            if (code != null)
            {
                code.Text = codigo.codigo;

                actualizarLineasMostradas(code, 0, true);
                code.IndicatorClearRange(0, code.TextLength);
                Diff.Item[] diferencias = dif.DiffText(codigoVersion.codigo, codigo.codigo);
                this.diferencias = diferencias;

                code.IndicatorCurrent = 8;
                string[] lineasCodigoVersion = codigoVersion.codigo.Replace("\r", "").Split('\n');

                foreach (Diff.Item item in diferencias)
                {

                    code.IndicatorCurrent = 8;

                    code.IndicatorFillRange(code.Lines[item.StartB].Position, code.Lines[item.StartB + item.insertedB-1].EndPosition - code.Lines[item.StartB].Position);

                    //code.IndicatorCurrent = 9;
                    //code.InsertText(code.Lines[item.StartB].EndPosition, "" + lineasCodigoVersion[item.StartA] + "\n");
                    //code.IndicatorFillRange(code.Lines[item.StartB].EndPosition, lineasCodigoVersion[item.StartA].Length);

                }
                int numLineasAdded = 0;
                foreach (Diff.Item item in diferencias)
                {
                    int contador = 0;
                    string textoAInsertar = "";
                    for (int i = item.StartA; i < item.deletedA + item.StartA ; i++)
                    {
                        contador++;
                        if (lineasCodigoVersion[i] == "")
                        {
                            textoAInsertar += " " + "\n";
                        }
                        else
                        {
                            textoAInsertar += lineasCodigoVersion[i] + "\n";
                        }

                    }
                    code.IndicatorCurrent = 9;
                    code.InsertText(code.Lines[item.StartA + numLineasAdded-1].EndPosition,  textoAInsertar);
                    code.IndicatorFillRange(code.Lines[item.StartA + numLineasAdded].Position, textoAInsertar.Length);
                    numLineasAdded = contador - 1;

                }

            }
        }
示例#2
0
        void code_TextChanged(object sender, EventArgs e)
        {
            //para guardar en modificados temporalmente
            if (modoDiferencias)
            {
                return;
            }
            HLCode codigo = (HLCode)sender;
            string guidCodigo = codigo.guidCodigo;
            string guidObjeto = codigo.guidObjeto;
            string guidRegistro = codigo.guidRegistro;
            bool encontrado = false;
            Codigo cod = getCodigo(guidRegistro, guidObjeto, guidCodigo);

            foreach (CodigoModificado item in codigosModificados)
            {
                if (item.guidCodigo == guidCodigo && item.guidRegistro == guidRegistro && item.guidObjeto == guidObjeto)
                {
                    encontrado = true;
                    item.codigo = codigo.Text;
                    break;
                }
            }
            if (!encontrado)
            {

                Diff dif = new Diff();
                Diff.Item[] diferencias = dif.DiffText(codigo.Text, cod.codigo);
                if (diferencias.Length > 0)
                {
                    CodigoModificado mod = new CodigoModificado();
                    mod.codigo = codigo.Text;
                    mod.guidCodigo = codigo.guidCodigo;
                    mod.guidObjeto = codigo.guidObjeto;
                    mod.guidRegistro = codigo.guidRegistro;
                    mod.nombreObjeto = codigo.nombreObjeto;
                    codigosModificados.Add(mod);

                    TabPageCustom tab = getTab(guidRegistro, guidObjeto, guidCodigo);
                    tab.Text += "*";
                }
            }
        }