Пример #1
0
 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;
     }
 }
Пример #2
0
        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());
        }
Пример #3
0
        private async Task LoadTextEditorHotkeyFile()
        {
            var text = new TitleTextPair(await Env.Cipher.DecryptFileAsync(Env.Config.TextEditorHotkeyFile)).Text;

            Env.Parser.UpdateHotkeyFile(new HotkeyFile(nameof(TextEditorForm), text));
        }
Пример #4
0
        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;
        }