コード例 #1
0
        /// <summary>
        /// Handles background jobs menu item call in panels menu.
        /// </summary>
        public override void Invoke(object sender, ModuleToolEventArgs e)
        {
            if (null == Far.Api.Panel)
            {
                Far.Api.Message(Strings.ErrorNoPanel,
                                Strings.ErrorHeader,
                                MessageOptions.Error | MessageOptions.Ok);
                return;
            }

            if (null == Far.Api.Panel.SelectedFiles)
            {
                Far.Api.Message(Strings.ErrorNoFilesSelected,
                                Strings.ErrorHeader,
                                MessageOptions.Error | MessageOptions.Ok);
                return;
            }

            ShowOperationsMenu();
        }
コード例 #2
0
ファイル: ActorMenu.cs プロジェクト: pezipink/FarNet
        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);
            }
        }
コード例 #3
0
ファイル: FarPodMain.cs プロジェクト: xeno-by/dotwindows
        public override void Invoke(object sender, ModuleToolEventArgs e)
        {
            FarPodContext.Init(Manager);

            new DeviceExplorer().OpenPanel();
        }
コード例 #4
0
ファイル: Module.cs プロジェクト: MoonDav/FarNet
 /// <summary>
 /// This method is called when the tool menu item is invoked.
 /// </summary>
 /// <param name="sender">The sender.</param>
 /// <param name="e">The arguments.</param>
 public abstract void Invoke(object sender, ModuleToolEventArgs e);
コード例 #5
0
ファイル: Backslash.cs プロジェクト: xeno-by/dotwindows
 public override void Invoke(object sender, ModuleToolEventArgs e)
 {
     IEditor editor = Far.Net.Editor;
     if (editor.SelectionExists)
         editor.SetSelectedText(Regex.Replace(editor.GetSelectedText("\r"), @"\\([\\""])", "$1"));
 }
コード例 #6
0
ファイル: Entry.cs プロジェクト: pezipink/FarNet
 internal void OnOpen(object sender, ModuleToolEventArgs e)
 {
     UI.ActorMenu.Show(sender, e);
 }
コード例 #7
0
ファイル: FolderChartTool.cs プロジェクト: pezipink/FarNet
        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();
        }
コード例 #8
0
ファイル: Module.cs プロジェクト: pezipink/FarNet
 /// <summary>
 /// This method is called when the tool menu item is invoked.
 /// </summary>
 /// <param name="sender">The sender.</param>
 /// <param name="e">The arguments.</param>
 public abstract void Invoke(object sender, ModuleToolEventArgs e);