private async Task CreateIndex() { _state.Index.Clear(); foreach (var file in Directory.GetFiles(Env.Config.TextEditorDir).Where(z => Path.GetFileName(z) != Env.Config.IndexFileName)) { var name = Path.GetFileName(file); var pair = new TitleTextPair(await Env.Cipher.DecryptFileAsync(file)); _state.Index[name] = pair.Title; } }
public async Task FindAllAsync() { var s = await Helper.TryGetStringAsync("Find All"); if (s == null) { return; } var r = Helper.GetRegex(s, RegexOptions.IgnoreCase); // Thread-safe. var(log, errorLog) = await Task.Run(async() => { var sbLog = new StringBuilder(); var sbErrorLog = new StringBuilder(); foreach (var file in Directory.GetFiles(Env.Config.TextEditorDir)) { if (Path.GetFileName(file).Equals(Env.Config.IndexFileName, StringComparison.OrdinalIgnoreCase)) { continue; } var text = await Env.Cipher.TryDecryptFileAsync(file); if (text == null) { sbErrorLog.Append($"File '{file}' could not be decrypted.\n"); continue; } var pair = new TitleTextPair(text); if (pair.Text == null) { sbErrorLog.Append($"File '{file}' is not in correct format.\n"); continue; } var count = r.Matches(pair.Text).Count; if (count > 0) { sbLog.Append($"{pair.Title} ({count} match{(count != 1 ? "es" : "")})\n"); } } return(sbLog, sbErrorLog); }); if (0 < errorLog.Length) { Env.Notifier.Error(errorLog.ToString()); } Helper.ShowSelectableText(log.Length == 0 ? "No matches found!" : log.ToString()); }
private async Task LoadTextEditorHotkeyFile() { var text = new TitleTextPair(await Env.Cipher.DecryptFileAsync(Env.Config.TextEditorHotkeyFile)).Text; Env.Parser.UpdateHotkeyFile(new HotkeyFile(nameof(TextEditorForm), text)); }
public async Task InitializeAsync() { var text = new TitleTextPair(await Env.Cipher.DecryptFileAsync(File)).Text; TabPage.Text = Helper.StripTags(Title); TabPage.Tag = this; var splitContainer = new SplitContainer { Dock = DockStyle.Fill, Parent = TabPage, SplitterWidth = 1, SplitterDistance = Env.Config.SplitterDistance, TabStop = false }; _panel = new RichTextBoxPlus { Dock = DockStyle.Fill, Parent = splitContainer.Panel1, BorderStyle = BorderStyle.None, ReadOnly = true, WordWrap = false, TabStop = false }; _rtb = new RichTextBoxPlus { Dock = DockStyle.Fill, Parent = splitContainer.Panel2, AcceptsTab = true, BorderStyle = BorderStyle.None, ReadOnly = Env.FlagManager.HasFlag("ReadOnly") || Program.ReadOnly, Text = text }; UpdatePanel(true); if (_textEditorForm.TryGetPosition(Name, out var rtbPosition)) { _rtb.LoadPosition(rtbPosition); } _changed = false; _rtb.TextChanged += (s, e) => { _changed = true; _shouldUpdatePanel = true; }; _rtb.KeyDown += async(s, e) => { if (e.Handled) { return; } switch (e.KeyData) { case Keys.F6: e.Handled = true; OpenMode(MoveSelectedLines); break; case Keys.F6 | Keys.Shift: e.Handled = true; OpenMode(MoveCaretToSection); break; case Keys.Control | Keys.PageUp: e.Handled = true; MoveCaretToTopOfSection(); break; case Keys.Control | Keys.PageDown: e.Handled = true; MoveCaretToEndOfSection(); break; case Keys.Control | Keys.W: e.Handled = true; await SaveAsync(); Close(); break; case Keys.F2: e.Handled = true; await Rename(); break; case Keys.F5: e.Handled = true; Compile(); break; } }; _panel.MouseClick += (s, e) => { _rtb.Focus(); MoveCaretToSection(_panel.GetCurrentLine()); }; Env.FlagManager.FlagsChanged += FlagsChanged; }