コード例 #1
0
ファイル: Diffy.xaml.cs プロジェクト: zhanght3252/xsemmel
        public Diffy(EditorFrame ef)
        {
            _ef = ef;
            InitializeComponent();

            if (_ef != null)
            {
                chkCurrentDocument.IsChecked = true;
                edtXmlFile1.Text             = _ef.XSDocument.Filename;
            }
            else
            {
                chkCurrentDocument.IsEnabled = false;
            }

            markerOne = new MarkBackgroundRenderer(edtOne);
            markerTwo = new MarkBackgroundRenderer(edtTwo);
            edtOne.TextArea.TextView.BackgroundRenderers.Add(markerOne);
            edtTwo.TextArea.TextView.BackgroundRenderers.Add(markerTwo);
        }
コード例 #2
0
ファイル: Diffy.xaml.cs プロジェクト: zhanght3252/xsemmel
        private void renderDiff(TextEditor textEditor, IEnumerable <DiffPiece> diff, MarkBackgroundRenderer marker)
        {
            foreach (var line in diff)
            {
                if (line.Position == null)
                {
                    continue;
                }

                int offset = textEditor.Document.GetOffset((int)line.Position, 1);

                switch (line.Type)
                {
                case ChangeType.Deleted:
                {
                    marker.AddOffsetToMark(new MarkBackgroundRenderer.Mark
                        {
                            Offset = offset,
                            Length = line.Text.Length,
                            Brush  = new SolidColorBrush(Color.FromArgb(255, 255, 200, 100))
                        });
                    break;
                }

                case ChangeType.Inserted:
                {
                    marker.AddOffsetToMark(new MarkBackgroundRenderer.Mark
                        {
                            Offset = offset,
                            Length = line.Text.Length,
                            Brush  = new SolidColorBrush(Color.FromArgb(255, 255, 255, 0))
                        });
                    break;
                }

                case ChangeType.Unchanged:
                {
                    continue;
                }

                case ChangeType.Modified:
                {
                    marker.AddOffsetToMark(new MarkBackgroundRenderer.Mark
                        {
                            Offset = offset,
                            Length = line.Text.Length,
                            Brush  = new SolidColorBrush(Color.FromArgb(255, 220, 220, 128))
                        });
                    break;

                    //foreach (DiffPiece piece in line.SubPieces)
                    //{
                    //    Console.WriteLine();
                    //}
                }

                case ChangeType.Imaginary:
                {
                    //deleted, shown as deleted in other pane
                    //could insert imaginary line, but that's work...
                    break;
                }
                }
            }
        }