forked from PavelTorgashov/FastColoredTextBox
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathLazyLoadingSample.cs
More file actions
129 lines (114 loc) · 4.49 KB
/
Copy pathLazyLoadingSample.cs
File metadata and controls
129 lines (114 loc) · 4.49 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.Windows.Forms;
using System.IO;
using System.Diagnostics;
using FastColoredTextBoxNS;
namespace Tester
{
public partial class LazyLoadingSample : Form
{
public LazyLoadingSample()
{
InitializeComponent();
}
private void miOpen_Click(object sender, EventArgs e)
{
if (ofd.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
fctb.OpenBindingFile(ofd.FileName, Encoding.UTF8);
fctb.IsChanged = false;
fctb.ClearUndo();
GC.Collect();
GC.GetTotalMemory(true);
}
}
private void fctb_VisibleRangeChangedDelayed(object sender, EventArgs e)
{
HighlightVisibleRange();
}
private void fctb_TextChangedDelayed(object sender, TextChangedEventArgs e)
{
HighlightVisibleRange();
}
const int margin = 2000;
private void HighlightVisibleRange()
{
//expand visible range (+- margin)
var startLine = Math.Max(0, fctb.VisibleRange.Start.iLine - margin);
var endLine = Math.Min(fctb.LinesCount - 1, fctb.VisibleRange.End.iLine + margin);
var range = new Range(fctb, 0, startLine, 0, endLine);
//clear folding markers
range.ClearFoldingMarkers();
//set markers for folding
range.SetFoldingMarkers(@"N\d\d00", @"N\d\d99");
//
range.ClearStyle(StyleIndex.All);
range.SetStyle(fctb.SyntaxHighlighter.BlueStyle, @"N\d+");
range.SetStyle(fctb.SyntaxHighlighter.RedStyle, @"[+\-]?[\d\.]+\d+");
}
private void closeFileToolStripMenuItem_Click(object sender, EventArgs e)
{
fctb.CloseBindingFile();
}
private void LazyLoadingSample_FormClosing(object sender, FormClosingEventArgs e)
{
fctb.CloseBindingFile();
}
private void miSave_Click(object sender, EventArgs e)
{
if(sfd.ShowDialog() == DialogResult.OK)
{
fctb.SaveToFile(sfd.FileName, Encoding.UTF8);
}
}
private void createTestFileToolStripMenuItem_Click(object sender, EventArgs e)
{
Random rnd = new Random();
if (sfd.ShowDialog() == System.Windows.Forms.DialogResult.OK)
using(StreamWriter sw = new StreamWriter(sfd.FileName, false, Encoding.Default))
{
//create large test file
for (int j = 0; j < 130; j++)
{
sw.WriteLine("\r\n--====" + j + "=====--\r\n");
for (int i = 0; i < 10000; i++)
sw.WriteLine(string.Format("N{0:0000} X{1} Y{2} Z{3}", i, rnd.Next(), rnd.Next(), rnd.Next()));
}
}
}
private void collapseAllFoldingBlocksToolStripMenuItem_Click(object sender, EventArgs e)
{
fctb.CollapseAllFoldingBlocks();
fctb.DoSelectionVisible();
}
private void expandAllCollapsedBlocksToolStripMenuItem_Click(object sender, EventArgs e)
{
fctb.ExpandAllFoldingBlocks();
fctb.DoSelectionVisible();
}
private void removeEmptyLinesToolStripMenuItem_Click(object sender, EventArgs e)
{
var iLines = fctb.FindLines(@"^\s*$", RegexOptions.None);
fctb.RemoveLines(iLines);
}
/*
private void button1_Click(object sender, EventArgs e)
{
var replaces = new List<ReplaceMultipleTextCommand.ReplaceRange>();
replaces.Add(new ReplaceMultipleTextCommand.ReplaceRange() { ReplacedRange = new Range(fctb, 0), ReplaceText = "0"});
replaces.Add(new ReplaceMultipleTextCommand.ReplaceRange() { ReplacedRange = new Range(fctb, 1), ReplaceText = "1" });
replaces.Add(new ReplaceMultipleTextCommand.ReplaceRange() { ReplacedRange = new Range(fctb, 2), ReplaceText = "2" });
fctb.TextSource.Manager.ExecuteCommand(new ReplaceMultipleTextCommand(fctb.TextSource, replaces));
Console.WriteLine(fctb[0].IsChanged);
Console.WriteLine(fctb[1].IsChanged);
Console.WriteLine(fctb[2].IsChanged);
}*/
}
}