Esempio n. 1
0
        public override void Invoke(object sender, ModuleToolEventArgs e)
        {
            if (e == null)
            {
                return;
            }

            var menu = Far.Api.CreateMenu();

            menu.Title     = Settings.ModuleName;
            menu.HelpTopic = Far.Api.GetHelpTopic("main-menu");

            menu.Add(My.DoCorrectWord).Click = delegate { Actor.CorrectWord(); };

            if (e.From == ModuleToolOptions.Editor)
            {
                menu.Add(My.DoCorrectText).Click = delegate { Actor.CorrectText(); }
            }
            ;

            menu.Add(My.DoThesaurus).Click = delegate { Actor.ShowThesaurus(); };

            menu.Show();
        }
    }
Esempio n. 2
0
        public override void Invoke(object sender, ModuleToolEventArgs e)
        {
            IMenu menu = Far.Api.CreateMenu();

            menu.Title     = "Vessel";
            menu.HelpTopic = HelpTopic + "MenuCommands";
            menu.Add("&1. Smart file history").Click += delegate { ShowHistory(true); };
            menu.Add("&2. Plain file history").Click += delegate { ShowHistory(false); };
            switch (TrainingStatus)
            {
            case TrainingState.None:
                menu.Add("&3. Background training").Click += delegate { TrainFull(); };
                break;

            case TrainingState.Started:
                menu.Add("Training: record " + TrainingRecordIndex + "/" + TrainingRecordCount).Disabled = true;
                break;

            case TrainingState.Completed:
                menu.Add("&3. Training results").Click += delegate { ShowResults(); };
                break;
            }
            menu.Add("&0. Update history file").Click += delegate { Update(); };

            menu.Show();
        }
Esempio n. 3
0
    public override void Invoke(object sender, ModuleToolEventArgs e)
    {
        IEditor editor = Far.Api.Editor;

        if (editor.SelectionExists)
        {
            editor.SetSelectedText(Regex.Replace(editor.GetSelectedText("\r"), @"\\([\\""])", "$1"));
        }
    }
Esempio n. 4
0
 /// <summary>
 /// This method implements the menu tool action.
 /// </summary>
 public override void Invoke(object sender, ModuleToolEventArgs e)
 {
     if (string.IsNullOrWhiteSpace(ACDSettings.Default.ClientId) || string.IsNullOrWhiteSpace(ACDSettings.Default.ClientSecret))
     {
         DisplayError("ClientId or ClientSecret is not set!");
     }
     else
     {
         DoPanel();
     }
 }
Esempio n. 5
0
        public override void Invoke(object sender, ModuleToolEventArgs e)
        {
            IMenu menu = Far.Api.CreateMenu();

            menu.Title     = "Vessel";
            menu.HelpTopic = HelpTopic + "MenuCommands";
            menu.Add("&1. Smart history").Click  += delegate { ShowHistory(); };
            menu.Add("&2. Smart folders").Click  += delegate { ShowFolders(); };
            menu.Add("&3. Train history").Click  += delegate { Train(0); };
            menu.Add("&4. Train folders").Click  += delegate { Train(1); };
            menu.Add("&5. Update history").Click += delegate { Update(0); };
            menu.Add("&6. Update folders").Click += delegate { Update(1); };

            menu.Show();
        }
Esempio n. 6
0
        public override void Invoke(object sender, ModuleToolEventArgs e)
        {
            if (e == null) return;

            var menu = Far.Api.CreateMenu();
            menu.Title = Settings.ModuleName;

            menu.Add(My.DoCorrectWord).Click = delegate { Actor.CorrectWord(); };

            if (e.From == ModuleToolOptions.Editor)
                menu.Add(My.DoCorrectText).Click = delegate { Actor.CorrectText(); };

            menu.Add(My.DoThesaurus).Click = delegate { Actor.ShowThesaurus(); };

            menu.Show();
        }
Esempio n. 7
0
        public void Invoke(object sender, ModuleToolEventArgs e)
        {
            if (e == null)
                throw new ArgumentNullException("e");

            Log.Source.TraceInformation("Invoking {0} From='{1}'", this, e.From);
            Invoking();

            if (_Handler != null)
            {
                _Handler(sender, e);
            }
            else
            {
                ModuleTool instance = (ModuleTool)GetInstance();
                instance.Invoke(sender, e);
            }
        }
Esempio n. 8
0
        public override void Invoke(object sender, ModuleToolEventArgs e)
        {
            IMenu menu = Far.Api.CreateMenu();

            menu.Title     = My.Name;
            menu.HelpTopic = My.HelpTopic("menu-commands");
            menu.Add("&1. Smart history").Click   += delegate { ShowHistory(); };
            menu.Add("&2. Smart folders").Click   += delegate { ShowFolders(); };
            menu.Add("&3. Train history").Click   += delegate { Train(0); };
            menu.Add("&4. Train folders").Click   += delegate { Train(1); };
            menu.Add("&5. Update history").Click  += delegate { Update(0); };
            menu.Add("&6. Update folders").Click  += delegate { Update(1); };
            menu.Add("&7. Smart commands").Click  += delegate { ShowCommands(); };
            menu.Add("&8. Train commands").Click  += delegate { Train(2); };
            menu.Add("&9. Update commands").Click += delegate { Update(2); };

            menu.Show();
        }
Esempio n. 9
0
        internal static void Show(object sender, ModuleToolEventArgs e)
        {
            //! NOTE: do sync for item handlers
            string currentDirectory = A.Psf.SyncPaths();

            try
            {
                // create once
                if (_menuDialog == null)
                {
                    Create();
                }

                IMenu menu;

                switch (e.From)
                {
                case ModuleToolOptions.Dialog: menu = _menuDialog; break;

                case ModuleToolOptions.Editor: menu = _menuEditor; break;

                case ModuleToolOptions.Panels: menu = _menuPanels; break;

                case ModuleToolOptions.Viewer: menu = _menuViewer; break;

                default: return;
                }

                // reset, lock and show
                menu.Selected = -1;
                menu.Lock();
                menu.Show();
            }
            catch (PipelineStoppedException)
            {
                // Ignore this exception, a user has halted, e.g. on menu action:
                // Remove-Variable Far -Confirm
                // -- Confirm dialog -- press [Esc] -- click [Halt] -- we are in here
            }
            finally
            {
                A.SetCurrentDirectoryFinally(currentDirectory);
            }
        }
Esempio n. 10
0
        public void Invoke(object sender, ModuleToolEventArgs e)
        {
            if (e == null)
            {
                throw new ArgumentNullException("e");
            }

            Log.Source.TraceInformation("Invoking {0} From='{1}'", this, e.From);
            Invoking();

            if (_Handler != null)
            {
                _Handler(sender, e);
            }
            else
            {
                ModuleTool instance = (ModuleTool)GetInstance();
                instance.Invoke(sender, e);
            }
        }
Esempio n. 11
0
        public override void Invoke(object sender, ModuleToolEventArgs e)
        {
            IMenu menu = Far.Api.CreateMenu();
            menu.Title = "Vessel";
            menu.HelpTopic = HelpTopic + "MenuCommands";
            menu.Add("&1. Smart file history").Click += delegate { ShowHistory(true); };
            menu.Add("&2. Plain file history").Click += delegate { ShowHistory(false); };
            switch (TrainingStatus)
            {
                case TrainingState.None:
                    menu.Add("&3. Background training").Click += delegate { TrainFull(); };
                    break;
                case TrainingState.Started:
                    menu.Add("Training: record " + TrainingRecordIndex + "/" + TrainingRecordCount).Disabled = true;
                    break;
                case TrainingState.Completed:
                    menu.Add("&3. Training results").Click += delegate { ShowResults(); };
                    break;
            }
            menu.Add("&0. Update history file").Click += delegate { Update(); };

            menu.Show();
        }
Esempio n. 12
0
        public override void Invoke(object sender, ModuleToolEventArgs e)
        {
            var editor = Far.Api.Editor;

            int iLine1, iLine2;
            if (editor.SelectionExists)
            {
                var rect = editor.SelectionPlace;
                iLine1 = rect.First.Y;
                iLine2 = rect.Last.Y;
                if (rect.Last.X < 0)
                    --iLine2;
            }
            else
            {
                iLine1 = editor.Caret.Y;
                iLine2 = iLine1;
            }

            var linetexts = new List<string>();
            var linespans = new List<EditorColorInfo[]>();
            var bgcount = new int[16];

            for (int line = iLine1; line <= iLine2; ++line)
            {
                var text = editor[line].Text;
                linetexts.Add(text);

                var colors = new EditorColorInfo[text.Length];
                linespans.Add(colors);

                var spans = editor.GetColors(line).Where(x => x.Owner == Colorer).ToList();
                int min = spans.Count > 0 ? spans.Min(x => x.Start) : 1;
                int max = spans.Count > 0 ? spans.Max(x => x.End) : -1;
                if (min > 0 || max < text.Length)
                {
                    Far.Api.Message(@"
            Cannot copy: part of the selected test has no colors.
            Try to scroll the text. Long lines are not supported.
            ", ModuleName);
                    return;
                }

                foreach (var span in spans)
                {
                    for (int ch = span.Start; ch < span.End; ++ch)
                    {
                        ++bgcount[(int)span.Background];
                        if (ch < text.Length)
                            colors[ch] = span;
                    }
                }
            }

            int bgindex = Array.IndexOf(bgcount, bgcount.Max());
            var bgcolor = (ConsoleColor)bgindex;

            var sb = new StringBuilder();
            sb.AppendFormat(null, "<div style='background:{0}'><pre>", Colors[bgindex]);
            sb.AppendLine();

            for (int line = 0; line < linetexts.Count; ++line)
            {
                var text = linetexts[line];
                var colors = linespans[line];

                for (int start = 0; start < text.Length; )
                {
                    var color = colors[start];

                    int end = start + 1;
                    while (end < text.Length && colors[end].Background == color.Background && colors[end].Foreground == color.Foreground)
                        ++end;

                    var html = EncodeHtml(text.Substring(start, end - start));
                    if (color.Background == bgcolor)
                        sb.AppendFormat(null, "<span style='color:{0}'>{1}</span>",
                            Colors[(int)color.Foreground], html);
                    else
                        sb.AppendFormat(null, "<span style='color:{0}; background:{1}'>{2}</span>",
                            Colors[(int)color.Foreground], Colors[(int)color.Background], html);

                    start = end;
                }

                sb.AppendLine();
            }

            sb.AppendLine("</pre></div>");

            ClipboardHelper.SetHtml(sb.ToString());
        }
Esempio n. 13
0
        public override void Invoke(object sender, ModuleToolEventArgs e)
        {
            var editor = Far.Api.Editor;

            int iLine1, iLine2;

            if (editor.SelectionExists)
            {
                var rect = editor.SelectionPlace;
                iLine1 = rect.First.Y;
                iLine2 = rect.Last.Y;
                if (rect.Last.X < 0)
                {
                    --iLine2;
                }
            }
            else
            {
                iLine1 = editor.Caret.Y;
                iLine2 = iLine1;
            }

            var linetexts = new List <string>();
            var linespans = new List <EditorColorInfo[]>();
            var bgcount   = new int[16];

            for (int line = iLine1; line <= iLine2; ++line)
            {
                var text = editor[line].Text;
                linetexts.Add(text);

                var colors = new EditorColorInfo[text.Length];
                linespans.Add(colors);

                var spans = editor.GetColors(line).Where(x => x.Owner == Colorer).ToList();
                int min   = spans.Count > 0 ? spans.Min(x => x.Start) : 1;
                int max   = spans.Count > 0 ? spans.Max(x => x.End) : -1;
                if (min > 0 || max < text.Length)
                {
                    Far.Api.Message(@"
Cannot copy: part of the selected test has no colors.
Try to scroll the text. Long lines are not supported.
", ModuleName);
                    return;
                }

                foreach (var span in spans)
                {
                    for (int ch = span.Start; ch < span.End; ++ch)
                    {
                        ++bgcount[(int)span.Background];
                        if (ch < text.Length)
                        {
                            colors[ch] = span;
                        }
                    }
                }
            }

            int bgindex = Array.IndexOf(bgcount, bgcount.Max());
            var bgcolor = (ConsoleColor)bgindex;

            var sb = new StringBuilder();

            sb.AppendFormat(null, "<div style='background:{0}'><pre>", Colors[bgindex]);
            sb.AppendLine();

            for (int line = 0; line < linetexts.Count; ++line)
            {
                var text   = linetexts[line];
                var colors = linespans[line];

                for (int start = 0; start < text.Length;)
                {
                    var color = colors[start];

                    int end = start + 1;
                    while (end < text.Length && colors[end].Background == color.Background && colors[end].Foreground == color.Foreground)
                    {
                        ++end;
                    }

                    var html = EncodeHtml(text.Substring(start, end - start));
                    if (color.Background == bgcolor)
                    {
                        sb.AppendFormat(null, "<span style='color:{0}'>{1}</span>",
                                        Colors[(int)color.Foreground], html);
                    }
                    else
                    {
                        sb.AppendFormat(null, "<span style='color:{0}; background:{1}'>{2}</span>",
                                        Colors[(int)color.Foreground], Colors[(int)color.Background], html);
                    }

                    start = end;
                }

                sb.AppendLine();
            }

            sb.AppendLine("</pre></div>");

            ClipboardHelper.SetHtml(sb.ToString());
        }
Esempio n. 14
0
        /// <summary>
        /// This method implements the menu tool action.
        /// </summary>
        public override void Invoke(object sender, ModuleToolEventArgs e)
        {
            // tracing file is in the local module data directory
            var fileName = Path.Combine(Manager.GetFolderPath(SpecialFolder.LocalData, true), TracingFile);

            // create the menu instance
            var menu = Far.Api.CreateMenu();

            menu.Title = GetString("MenuTitle");

            // set this menu help topic
            menu.HelpTopic = Far.Api.GetHelpTopic("TracingMenu");

            // add the menu items

            var itemShowFile = menu.Add(GetString("itemShowFile"));
            var itemListener = menu.Add(GetString("itemListener"));

            menu.Add(string.Empty).IsSeparator = true;

            var itemWarning = menu.Add(GetString("itemWarning"));

            itemWarning.Data = SourceLevels.Warning;

            var itemInformation = menu.Add(GetString("itemInformation"));

            itemInformation.Data = SourceLevels.Information;

            var itemVerbose = menu.Add(GetString("itemVerbose"));

            itemVerbose.Data = SourceLevels.Verbose;

            var itemAll = menu.Add(GetString("itemAll"));

            itemAll.Data = SourceLevels.All;

            // show the menu repeatedly until it is canceled
            for (; ;)
            {
                // update disabled and checked states
                itemShowFile.Disabled   = !File.Exists(fileName);
                itemListener.Checked    = _Listener != null;
                itemWarning.Checked     = Log.Source.Switch.Level == SourceLevels.Warning;
                itemInformation.Checked = Log.Source.Switch.Level == SourceLevels.Information;
                itemVerbose.Checked     = Log.Source.Switch.Level == SourceLevels.Verbose;
                itemAll.Checked         = Log.Source.Switch.Level == SourceLevels.All;

                // show the menu, exit on cancel
                if (!menu.Show())
                {
                    return;
                }

                // use the selected data to change tracing level, then continue
                if (menu.SelectedData != null)
                {
                    Log.Source.Switch.Level = (SourceLevels)menu.SelectedData;
                    continue;
                }

                // use the selected index for other commands
                switch (menu.Selected)
                {
                case 0:
                    // open the tracing file in the viewer
                    var viewer = Far.Api.CreateViewer();
                    viewer.Switching = Switching.Disabled;
                    viewer.FileName  = fileName;
                    viewer.Open();
                    return;

                case 1:
                    // turn tracing to file on/off
                    if (_Listener == null)
                    {
                        _Listener = new TextWriterTraceListener(fileName, TracingFile);
                        Log.Source.Listeners.Add(_Listener);
                        Trace.Listeners.Add(_Listener);
                    }
                    else
                    {
                        Log.Source.Listeners.Remove(_Listener);
                        Trace.Listeners.Remove(_Listener);
                        _Listener.Close();
                        _Listener = null;
                    }
                    continue;
                }
            }
        }
Esempio n. 15
0
        public override void Invoke(object sender, ModuleToolEventArgs e)
        {
            var panel = Far.Api.Panel;

            if (panel.IsPlugin || panel.Kind != PanelKind.File)
            {
                return;
            }

            var path = panel.CurrentDirectory;

            var run = new SizeRun();

            if (!run.Run(Directory.GetDirectories(path), Directory.GetFiles(path)))
            {
                return;
            }

            var sb = new StringBuilder();

            foreach (var it in run.Errors)
            {
                sb.AppendLine(it.Message);
            }
            if (sb.Length > 0)
            {
                Message(sb.ToString());
            }

            var sorted = run.Result.OrderBy(x => x.Size).ToList();

            if (sorted.Count == 0)
            {
                return;
            }

            var totalSize = run.Result.Sum(x => x.Size);
            var title     = Kit.FormatSize(totalSize, path);

            var  maxSizeToShow  = sorted[sorted.Count - 1].Size / HIDDEN_FACTOR;
            long sumHiddenSizes = 0;
            int  index          = 0;

            for (; index < sorted.Count; ++index)
            {
                if (sorted[index].Size <maxSizeToShow || sorted.Count - index> MAX_ITEM_COUNT)
                {
                    sumHiddenSizes += sorted[index].Size;
                }
                else
                {
                    break;
                }
            }
            if (index > 0)
            {
                sorted.RemoveRange(0, index);
            }
            if (sumHiddenSizes > 0)
            {
                sorted.Insert(0, new FolderItem()
                {
                    Name = string.Empty, Size = sumHiddenSizes
                });
            }

            var result = FolderChartForm.Show(title, sorted, new WindowWrapper(Far.Api.UI.MainWindowHandle));

            if (result == null)
            {
                return;
            }

            var path2 = Path.Combine(path, result);

            if (Directory.Exists(path2))
            {
                panel.CurrentDirectory = path2;
            }
            else if (File.Exists(path2))
            {
                bool ok = panel.GoToName(result, false);
                if (!ok)
                {
                    Message(path2 + " exists but it is not in the panel.");
                }
            }
            else
            {
                Message(path2 + " does not exist.");
            }

            panel.Redraw();
        }
Esempio n. 16
0
        /// <summary>
        /// This method implements the menu tool action.
        /// </summary>
        public override void Invoke(object sender, ModuleToolEventArgs e)
        {
            // tracing file is in the local module data directory
            var fileName = Path.Combine(Manager.GetFolderPath(SpecialFolder.LocalData, true), TracingFile);

            // create the menu instance
            var menu = Far.Api.CreateMenu();
            menu.Title = GetString("MenuTitle");

            // set this menu help topic
            menu.HelpTopic = Far.Api.GetHelpTopic("TracingMenu");

            // add the menu items

            var itemShowFile = menu.Add(GetString("itemShowFile"));
            var itemListener = menu.Add(GetString("itemListener"));

            menu.Add(string.Empty).IsSeparator = true;

            var itemWarning = menu.Add(GetString("itemWarning"));
            itemWarning.Data = SourceLevels.Warning;

            var itemInformation = menu.Add(GetString("itemInformation"));
            itemInformation.Data = SourceLevels.Information;

            var itemVerbose = menu.Add(GetString("itemVerbose"));
            itemVerbose.Data = SourceLevels.Verbose;

            var itemAll = menu.Add(GetString("itemAll"));
            itemAll.Data = SourceLevels.All;

            // show the menu repeatedly until it is canceled
            for (; ; )
            {
                // update disabled and checked states
                itemShowFile.Disabled = !File.Exists(fileName);
                itemListener.Checked = _Listener != null;
                itemWarning.Checked = Log.Source.Switch.Level == SourceLevels.Warning;
                itemInformation.Checked = Log.Source.Switch.Level == SourceLevels.Information;
                itemVerbose.Checked = Log.Source.Switch.Level == SourceLevels.Verbose;
                itemAll.Checked = Log.Source.Switch.Level == SourceLevels.All;

                // show the menu, exit on cancel
                if (!menu.Show())
                    return;

                // use the selected data to change tracing level, then continue
                if (menu.SelectedData != null)
                {
                    Log.Source.Switch.Level = (SourceLevels)menu.SelectedData;
                    continue;
                }

                // use the selected index for other commands
                switch (menu.Selected)
                {
                    case 0:
                        // open the tracing file in the viewer
                        var viewer = Far.Api.CreateViewer();
                        viewer.Switching = Switching.Disabled;
                        viewer.FileName = fileName;
                        viewer.Open();
                        return;
                    case 1:
                        // turn tracing to file on/off
                        if (_Listener == null)
                        {
                            _Listener = new TextWriterTraceListener(fileName, TracingFile);
                            Log.Source.Listeners.Add(_Listener);
                            Trace.Listeners.Add(_Listener);
                        }
                        else
                        {
                            Log.Source.Listeners.Remove(_Listener);
                            Trace.Listeners.Remove(_Listener);
                            _Listener.Close();
                            _Listener = null;
                        }
                        continue;
                }
            }
        }
Esempio n. 17
0
        public override void Invoke(object sender, ModuleToolEventArgs e)
        {
            var panel = Far.Api.Panel;

            if (panel.IsPlugin || panel.Kind != PanelKind.File)
            {
                return;
            }

            var path = panel.CurrentDirectory;

            var run = new SizeRun();

            if (!run.Run(Directory.GetDirectories(path), Directory.GetFiles(path)))
            {
                return;
            }

            var sorted = run.Result.OrderBy(x => x.Size).ToList();

            if (sorted.Count == 0)
            {
                return;
            }

            var totalSize = run.Result.Sum(x => x.Size);
            var title     = Kit.FormatSize(totalSize, path);

            var  maxSizeToShow  = sorted[sorted.Count - 1].Size / HIDDEN_FACTOR;
            long sumHiddenSizes = 0;
            int  index          = 0;

            for (; index < sorted.Count; ++index)
            {
                if (sorted[index].Size <maxSizeToShow || sorted.Count - index> MAX_ITEM_COUNT)
                {
                    sumHiddenSizes += sorted[index].Size;
                }
                else
                {
                    break;
                }
            }
            if (index > 0)
            {
                sorted.RemoveRange(0, index);
            }
            if (sumHiddenSizes > 0)
            {
                sorted.Insert(0, new FolderItem()
                {
                    Name = string.Empty, Size = sumHiddenSizes
                });
            }

            var errors = run.GetErrors();

            if (errors.Length > 0)
            {
                title = string.Format("{0} ~ Cannot read: {1}", title, errors.Length);
            }

            // handle clicks
            Action <string> action = (result) =>
            {
                Far.Api.PostJob(() =>
                {
                    var path2 = Path.Combine(path, result);
                    if (Directory.Exists(path2))
                    {
                        panel.CurrentDirectory = path2;
                    }
                    else if (File.Exists(path2))
                    {
                        panel.GoToName(result, false);
                    }
                    panel.Redraw();
                });
            };

            // start non-blocking form
            var thread = new Thread(() =>
            {
                FolderChartForm.Show(title, sorted, action);
            });

            thread.Start();
        }
Esempio n. 18
0
 public override void Invoke(object sender, ModuleToolEventArgs e)
 {
     (new MyPanel(new MyExplorer())).Open();
 }
Esempio n. 19
0
 internal void OnOpen(object sender, ModuleToolEventArgs e)
 {
     UI.ActorMenu.Show(sender, e);
 }
Esempio n. 20
0
 public override void Invoke(object sender, ModuleToolEventArgs e)
 {
     File.WriteAllText(GetPathFileName(), Far.Api.Panel.CurrentDirectory);
 }