private void buttonSearch_Click(object sender, EventArgs e)
{
this.results.Clear();
// Create list of scripts to search
var searchScripts = new List<Script>();
if (this.searchControl.toolStripComboBox_Scope.SelectedIndex == 0) // Open
{
searchScripts.AddRange(Windows.ScriptEditors.Select(form => form.Script));
}
else // All
searchScripts = Project.ScriptManager.Scripts;
string searchString = this.searchControl.textBoxSearch.Text;
// Set flags
var flag = SearchFlags.Empty;
if (this.searchControl.toolStripMenuItem_MatchCase.Checked) flag |= SearchFlags.MatchCase;
if (this.searchControl.toolStripMenuItem_RegExp.Checked) flag |= SearchFlags.RegExp;
if (this.searchControl.toolStripMenuItem_WholeWord.Checked) flag |= SearchFlags.WholeWord;
if (this.searchControl.toolStripMenuItem_WordStart.Checked) flag |= SearchFlags.WordStart;
// Perform search using SciLexer's unmanaged library for improved perfomance
using (var scintilla = new Scintilla.Scintilla())
{
foreach (Script script in searchScripts)
{
scintilla.Text = script.Text;
foreach (Range r in scintilla.FindReplace.FindAll(searchString, flag))
{
this.results.Add(new SearchResult(script, script.Title,
r.StartingLine.Number, r.StartingLine.Text));
}
}
}
this.RefreshResults();
}