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(); } }
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(); }
public override void Invoke(object sender, ModuleToolEventArgs e) { IEditor editor = Far.Api.Editor; if (editor.SelectionExists) { editor.SetSelectedText(Regex.Replace(editor.GetSelectedText("\r"), @"\\([\\""])", "$1")); } }
/// <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(); } }
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(); }
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(); }
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); } }
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(); }
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); } }
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); } }
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(); }
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()); }
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()); }
/// <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; } } }
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(); }
/// <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; } } }
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(); }
public override void Invoke(object sender, ModuleToolEventArgs e) { (new MyPanel(new MyExplorer())).Open(); }
internal void OnOpen(object sender, ModuleToolEventArgs e) { UI.ActorMenu.Show(sender, e); }
public override void Invoke(object sender, ModuleToolEventArgs e) { File.WriteAllText(GetPathFileName(), Far.Api.Panel.CurrentDirectory); }