using System; using System.Collections.Generic; using System.ComponentModel; using System.Drawing; using System.Data; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using my.utils; using System.Drawing.Drawing2D; namespace SzNPProjects.TextBox { public partial class MSGerTextBox : UserControl { //2015.06.06. - TO!DO: Kurzor megjelenítése, tulajdonságok kezelése (Font), képek kezelése private LineRenderer linerenderer; //2015.06.10. public MSGerTextBox() { //TO!DO: WordWrap InitializeComponent(); Lines.Add(""); linerenderer = new LineRenderer(panel1); //2015.06.10. panel1.Paint += OnPanelPaint; //2015.06.10. CursorRendererTimer.Tick += OnCursorRender; //2015.06.11. CursorRendererTimer.Interval = SystemInformation.CaretBlinkTime; //2015.06.11. CursorRendererTimer.Start(); //2015.06.11. } public override string Text { get { return Lines.Aggregate((entry1, entry2) => entry1 + "\n" + entry2); } set { var results = Diff.DiffText(Lines.Aggregate((entry1, entry2) => entry1 + "\n" + entry2), value, false, false, false); List changedlines = new List(); string[] vlines = value.Split(new char[] { '\n', '\r' }); //Itt az Enter-t \r jelzi if (vlines.Length > Lines.Count) lines.Add(""); for (int i = 0; i < results.Length; i++) { var result = results[i]; if (result.deletedA > result.insertedB) lines.RemoveAt(result.StartA); if (result.StartA >= 0 && result.StartA < Lines.Count && result.StartB >= 0 && result.StartB < vlines.Length) //<-- 2015.06.10. Lines[result.StartA] = vlines[result.StartB]; } //RefreshControls(changedlines); //TODO: Event handler-eket a BindingList-hoz, és ezt átrakni oda //linerenderer.Render(); //2015.06.10. //this.Refresh(); //2015.06.10. panel1.Text = this.Text; //2015.06.10. panel1.Refresh(); //2015.06.10. } } private BindingList lines = new BindingList(); public BindingList Lines { get { return lines; } set { lines = value; //RefreshControls(new int[] { }); this.Refresh(); //2015.06.10. } } //public int CursorPosition { get; set; } private int currentline; public int CurrentLine { get { return currentline; } set { if (value >= Lines.Count) Lines.Add(""); currentline = value; } } private bool wordwrap; //2015.06.11. public bool WordWrap { //2015.06.11. get { return wordwrap; } set { wordwrap = value; panel1.Refresh(); } } private int cursorposition; //2015.06.11. public int CursorPosition { //2015.06.11. get { return cursorposition; } set { cursorposition = value; panel1.Refresh(); } } public Dictionary Emoticons = new Dictionary(); /*private List