protected void Intialize() { CreateComponents(); vAdjustment = new Adjustment(0, 0, 0, 0, 0, 0); attachedVAdjustments = new Adjustment[editors.Length]; attachedHAdjustments = new Adjustment[editors.Length]; for (int i = 0; i < editors.Length; i++) { attachedVAdjustments[i] = new Adjustment(0, 0, 0, 0, 0, 0); attachedHAdjustments[i] = new Adjustment(0, 0, 0, 0, 0, 0); } foreach (var attachedAdjustment in attachedVAdjustments) { Connect(attachedAdjustment, vAdjustment); } hAdjustment = new Adjustment(0, 0, 0, 0, 0, 0); foreach (var attachedAdjustment in attachedHAdjustments) { Connect(attachedAdjustment, hAdjustment); } hScrollBars = new Gtk.HScrollbar[attachedHAdjustments.Length]; for (int i = 0; i < hScrollBars.Length; i++) { hScrollBars[i] = new HScrollbar(hAdjustment); Add(hScrollBars[i]); } for (int i = 0; i < editors.Length; i++) { var editor = editors[i]; Add(editor); editor.DoPopupMenu += (e) => ShowPopup(editor, e); editor.Caret.PositionChanged += CaretPositionChanged; editor.FocusInEvent += EditorFocusIn; editor.SetScrollAdjustments(attachedHAdjustments[i], attachedVAdjustments[i]); } if (editors.Length == 2) { editors[0].Painted += delegate(object sender, PaintEventArgs args) { var myEditor = (TextArea)sender; PaintEditorOverlay(myEditor, args, LeftDiff, true); }; editors[1].Painted += delegate(object sender, PaintEventArgs args) { var myEditor = (TextArea)sender; PaintEditorOverlay(myEditor, args, LeftDiff, false); }; rightDiffScrollBar = new DiffScrollbar(this, editors[1], true, true); Add(rightDiffScrollBar); } else { editors[0].Painted += delegate(object sender, PaintEventArgs args) { var myEditor = (TextArea)sender; PaintEditorOverlay(myEditor, args, LeftDiff, true); }; editors[1].Painted += delegate(object sender, PaintEventArgs args) { var myEditor = (TextArea)sender; PaintEditorOverlay(myEditor, args, LeftDiff, false); PaintEditorOverlay(myEditor, args, RightDiff, false); }; editors[2].Painted += delegate(object sender, PaintEventArgs args) { var myEditor = (TextArea)sender; PaintEditorOverlay(myEditor, args, RightDiff, true); }; rightDiffScrollBar = new DiffScrollbar(this, editors[2], false, false); Add(rightDiffScrollBar); } leftDiffScrollBar = new DiffScrollbar(this, editors[0], true, false); Add(leftDiffScrollBar); if (headerWidgets != null) { foreach (var widget in headerWidgets) { Add(widget); } } middleAreas = new MiddleArea [editors.Length - 1]; if (middleAreas.Length <= 0 || middleAreas.Length > 2) { throw new NotSupportedException(); } middleAreas[0] = new MiddleArea(this, editors[0], MainEditor, true); Add(middleAreas[0]); if (middleAreas.Length == 2) { middleAreas[1] = new MiddleArea(this, editors[2], MainEditor, false); Add(middleAreas[1]); } this.MainEditor.EditorOptionsChanged += HandleMainEditorhandleEditorOptionsChanged; }
public ComparisonWidget (VersionControlDocumentInfo info) { this.info = info; vAdjustment = new Adjustment (0, 0, 0, 0, 0, 0); vAdjustment.Changed += HandleAdjustmentChanged; leftVAdjustment = new Adjustment (0, 0, 0, 0, 0, 0); Connect (leftVAdjustment, vAdjustment); rightVAdjustment = new Adjustment (0, 0, 0, 0, 0, 0); Connect (rightVAdjustment, vAdjustment); vScrollBar = new VScrollbar (vAdjustment); AddChild (vScrollBar); vScrollBar.Hide (); hAdjustment = new Adjustment (0, 0, 0, 0, 0, 0); hAdjustment.Changed += HandleAdjustmentChanged; leftHAdjustment = new Adjustment (0, 0, 0, 0, 0, 0); Connect (leftHAdjustment, hAdjustment); rightHAdjustment = new Adjustment (0, 0, 0, 0, 0, 0); Connect (rightHAdjustment, hAdjustment); leftHScrollBar = new HScrollbar (hAdjustment); AddChild (leftHScrollBar); rightHScrollBar = new HScrollbar (hAdjustment); AddChild (rightHScrollBar); originalEditor = new TextEditor (); originalEditor.Caret.PositionChanged += CaretPositionChanged; originalEditor.FocusInEvent += EditorFocusIn; AddChild (originalEditor); originalEditor.SetScrollAdjustments (leftHAdjustment, leftVAdjustment); originalComboBox = new DropDownBox (); originalComboBox.WindowRequestFunc = CreateComboBoxSelector; originalComboBox.Text = "Local"; originalComboBox.Tag = originalEditor; AddChild (originalComboBox); diffEditor = new TextEditor (); diffEditor.Caret.PositionChanged += CaretPositionChanged; diffEditor.FocusInEvent += EditorFocusIn; AddChild (diffEditor); diffEditor.Document.ReadOnly = true; diffEditor.SetScrollAdjustments (leftHAdjustment, leftVAdjustment); this.vAdjustment.ValueChanged += delegate { middleArea.QueueDraw (); }; diffComboBox = new DropDownBox (); diffComboBox.WindowRequestFunc = CreateComboBoxSelector; diffComboBox.Text = "Base"; diffComboBox.Tag = diffEditor; AddChild (diffComboBox); overview = new OverviewRenderer (this); AddChild (overview); middleArea = new MiddleArea (this); AddChild (middleArea); prev = new Button (); prev.Add (new Arrow (ArrowType.Up, ShadowType.None)); AddChild (prev); prev.ShowAll (); prev.Clicked += delegate { if (this.Diff == null) return; originalEditor.GrabFocus (); int line = originalEditor.Caret.Line; int max = -1, searched = -1; foreach (Diff.Hunk hunk in this.Diff) { if (hunk.Same) continue; max = System.Math.Max (hunk.Right.Start, max); if (hunk.Right.Start < line) searched = System.Math.Max (hunk.Right.Start, searched); } if (max >= 0) { originalEditor.Caret.Line = searched < 0 ? max : searched; originalEditor.CenterToCaret (); } }; next = new Button (); next.BorderWidth = 0; next.Add (new Arrow (ArrowType.Down, ShadowType.None)); next.Clicked += delegate { if (this.Diff == null) return; originalEditor.GrabFocus (); int line = originalEditor.Caret.Line; int min = Int32.MaxValue, searched = Int32.MaxValue; foreach (Diff.Hunk hunk in this.Diff) { if (hunk.Same) continue; min = System.Math.Min (hunk.Right.Start, min); if (hunk.Right.Start > line) searched = System.Math.Min (hunk.Right.Start, searched); } if (min < Int32.MaxValue) { originalEditor.Caret.Line = searched == Int32.MaxValue ? min : searched; originalEditor.CenterToCaret (); } }; AddChild (next); next.ShowAll (); this.DoubleBuffered = true; originalEditor.ExposeEvent += HandleLeftEditorExposeEvent; diffEditor.ExposeEvent += HandleRightEditorExposeEvent; info.Document.Editor.Document.TextReplaced += HandleInfoDocumentTextEditorDataDocumentTextReplaced; }
public ComparisonWidget(VersionControlDocumentInfo info) { vAdjustment = new Adjustment(0, 0, 0, 0, 0, 0); vAdjustment.Changed += HandleAdjustmentChanged; vScrollBar = new VScrollbar(vAdjustment); AddChild(vScrollBar); vScrollBar.Hide(); hAdjustment = new Adjustment(0, 0, 0, 0, 0, 0); hAdjustment.Changed += HandleAdjustmentChanged; leftHScrollBar = new HScrollbar(hAdjustment); AddChild(leftHScrollBar); rightHScrollBar = new HScrollbar(hAdjustment); AddChild(rightHScrollBar); originalComboBox = new DropDownBox(); originalComboBox.Text = "Local"; AddChild(originalComboBox); originalEditor = new TextEditor(); AddChild(originalEditor); originalEditor.SetScrollAdjustments(hAdjustment, vAdjustment); diffComboBox = new DropDownBox(); diffComboBox.Text = "Base"; AddChild(diffComboBox); diffEditor = new TextEditor(); AddChild(diffEditor); diffEditor.Document.ReadOnly = true; diffEditor.SetScrollAdjustments(hAdjustment, vAdjustment); this.vAdjustment.ValueChanged += delegate { middleArea.QueueDraw(); }; overview = new OverviewRenderer(this); AddChild(overview); middleArea = new MiddleArea(this); AddChild(middleArea); prev = new Button(); prev.Add(new Arrow(ArrowType.Up, ShadowType.None)); AddChild(prev); prev.ShowAll(); prev.Clicked += delegate { if (this.Diff == null) { return; } originalEditor.GrabFocus(); int line = originalEditor.Caret.Line; int max = -1, searched = -1; foreach (Diff.Hunk hunk in this.Diff) { if (hunk.Same) { continue; } max = System.Math.Max(hunk.Left.Start, max); if (hunk.Left.Start < line) { searched = System.Math.Max(hunk.Left.Start, searched); } } if (max >= 0) { originalEditor.Caret.Line = searched < 0 ? max : searched; originalEditor.CenterToCaret(); } }; next = new Button(); next.BorderWidth = 0; next.Add(new Arrow(ArrowType.Down, ShadowType.None)); next.Clicked += delegate { if (this.Diff == null) { return; } originalEditor.GrabFocus(); int line = originalEditor.Caret.Line; int min = Int32.MaxValue, searched = Int32.MaxValue; foreach (Diff.Hunk hunk in this.Diff) { if (hunk.Same) { continue; } min = System.Math.Min(hunk.Left.Start, min); if (hunk.Left.Start > line) { searched = System.Math.Min(hunk.Left.Start, searched); } } if (min < Int32.MaxValue) { originalEditor.Caret.Line = searched == Int32.MaxValue ? min : searched; originalEditor.CenterToCaret(); } }; AddChild(next); next.ShowAll(); this.DoubleBuffered = true; originalEditor.ExposeEvent += HandleLeftEditorExposeEvent; diffEditor.ExposeEvent += HandleRightEditorExposeEvent; }
protected void Intialize () { CreateComponents (); vAdjustment = new Adjustment (0, 0, 0, 0, 0, 0); attachedVAdjustments = new Adjustment[editors.Length]; attachedHAdjustments = new Adjustment[editors.Length]; for (int i = 0; i < editors.Length; i++) { attachedVAdjustments[i] = new Adjustment (0, 0, 0, 0, 0, 0); attachedHAdjustments[i] = new Adjustment (0, 0, 0, 0, 0, 0); } foreach (var attachedAdjustment in attachedVAdjustments) { Connect (attachedAdjustment, vAdjustment); } hAdjustment = new Adjustment (0, 0, 0, 0, 0, 0); foreach (var attachedAdjustment in attachedHAdjustments) { Connect (attachedAdjustment, hAdjustment); } hScrollBars = new Gtk.HScrollbar[attachedHAdjustments.Length]; for (int i = 0; i < hScrollBars.Length; i++) { hScrollBars[i] = new HScrollbar (hAdjustment); Add (hScrollBars[i]); } for (int i = 0; i < editors.Length; i++) { var editor = editors[i]; Add (editor); editor.ButtonPressEvent += OnPopupMenu; editor.Caret.PositionChanged += CaretPositionChanged; editor.FocusInEvent += EditorFocusIn; editor.SetScrollAdjustments (attachedHAdjustments[i], attachedVAdjustments[i]); } if (editors.Length == 2) { editors[0].Painted += delegate (object sender, PaintEventArgs args) { var myEditor = (TextEditor)sender; PaintEditorOverlay (myEditor, args, LeftDiff, true); }; editors[1].Painted += delegate (object sender, PaintEventArgs args) { var myEditor = (TextEditor)sender; PaintEditorOverlay (myEditor, args, LeftDiff, false); }; rightDiffScrollBar = new DiffScrollbar (this, editors[1], true, true); Add (rightDiffScrollBar); } else { editors[0].Painted += delegate (object sender, PaintEventArgs args) { var myEditor = (TextEditor)sender; PaintEditorOverlay (myEditor, args, LeftDiff, true); }; editors[1].Painted += delegate (object sender, PaintEventArgs args) { var myEditor = (TextEditor)sender; PaintEditorOverlay (myEditor, args, LeftDiff, false); PaintEditorOverlay (myEditor, args, RightDiff, false); }; editors[2].Painted += delegate (object sender, PaintEventArgs args) { var myEditor = (TextEditor)sender; PaintEditorOverlay (myEditor, args, RightDiff, true); }; rightDiffScrollBar = new DiffScrollbar (this, editors[2], false, false); Add (rightDiffScrollBar); } leftDiffScrollBar = new DiffScrollbar (this, editors[0], true, false); Add (leftDiffScrollBar); if (headerWidgets != null) { foreach (var widget in headerWidgets) { Add (widget); } } middleAreas = new MiddleArea [editors.Length - 1]; if (middleAreas.Length <= 0 || middleAreas.Length > 2) throw new NotSupportedException (); middleAreas[0] = new MiddleArea (this, editors[0], MainEditor, true); Add (middleAreas[0]); if (middleAreas.Length == 2) { middleAreas[1] = new MiddleArea (this, editors[2], MainEditor, false); Add (middleAreas[1]); } this.MainEditor.EditorOptionsChanged += HandleMainEditorhandleEditorOptionsChanged; }