Esempio n. 1
0
        static void AddItem(FarItem item, ModuleToolOptions from)
        {
            if (from == ModuleToolOptions.None)
            {
                from = ModuleToolOptions.F11Menus;
            }

            if (0 < (from & ModuleToolOptions.Dialog))
            {
                _menuDialog.Items.Add(item);
            }

            if (0 < (from & ModuleToolOptions.Editor))
            {
                _menuEditor.Items.Add(item);
            }

            if (0 < (from & ModuleToolOptions.Panels))
            {
                _menuPanels.Items.Add(item);
            }

            if (0 < (from & ModuleToolOptions.Viewer))
            {
                _menuViewer.Items.Add(item);
            }
        }
Esempio n. 2
0
        public static IModuleTool[] GetTools(ModuleToolOptions option)
        {
            var list = new List<IModuleTool>(_Actions.Count);
            foreach (IModuleAction action in _Actions.Values)
            {
                if (action.Kind != ModuleItemKind.Tool)
                    continue;

                IModuleTool tool = (IModuleTool)action;
                if (0 != (tool.Options & option))
                    list.Add(tool);
            }
            return list.ToArray();
        }
Esempio n. 3
0
        static ICheckBox AddOption(IDialog dialog, string text, ModuleToolOptions option, ModuleToolOptions defaultOptions, ModuleToolOptions currentOptions)
        {
            ICheckBox result = dialog.AddCheckBox(5, -1, text);

            if (0 == (option & defaultOptions))
            {
                result.Disabled = true;
            }
            else if (0 != (option & currentOptions))
            {
                result.Selected = 1;
            }
            return(result);
        }
Esempio n. 4
0
        public static IModuleTool[] GetTools(ModuleToolOptions option)
        {
            var list = new List <IModuleTool>(_Actions.Count);

            foreach (IModuleAction action in _Actions.Values)
            {
                if (action.Kind != ModuleItemKind.Tool)
                {
                    continue;
                }

                IModuleTool tool = (IModuleTool)action;
                if (0 != (tool.Options & option))
                {
                    list.Add(tool);
                }
            }
            return(list.ToArray());
        }
Esempio n. 5
0
 internal override void LoadData(Hashtable data)
 {
     if (data == null)
     {
         _Options = DefaultOptions;
     }
     else
     {
         var options = data[idOptions];
         if (options == null)
         {
             _Options = DefaultOptions;
         }
         else
         {
             _Options = DefaultOptions & (ModuleToolOptions)options;
         }
     }
 }
Esempio n. 6
0
        public static void AddUserTool(string text, EventHandler<MenuEventArgs> click, ModuleToolOptions from)
        {
            // case: just collect, e.g. called from profile
            if (_menuDialog == null)
            {
                if (_pendingItems == null)
                    _pendingItems = new List<KeyValuePair<FarItem, ModuleToolOptions>>();

                _pendingItems.Add(new KeyValuePair<FarItem, ModuleToolOptions>(NewItem(text, click), from));
                return;
            }

            // unlock
            _menuDialog.Unlock();
            _menuEditor.Unlock();
            _menuPanels.Unlock();
            _menuViewer.Unlock();

            // add
            AddTool(text, click, from);
        }
Esempio n. 7
0
 static ICheckBox AddOption(IDialog dialog, string text, ModuleToolOptions option, ModuleToolOptions defaultOptions, ModuleToolOptions currentOptions)
 {
     ICheckBox result = dialog.AddCheckBox(5, -1, text);
     if (0 == (option & defaultOptions))
         result.Disabled = true;
     else if (0 != (option & currentOptions))
         result.Selected = 1;
     return result;
 }
Esempio n. 8
0
        public static void Show(IList <IModuleTool> toolsIn, string helpTopic, Func <IModuleTool, string> getMenuText)
        {
            if (getMenuText == null)
            {
                throw new ArgumentNullException("getMenuText");
            }

            var sorted = toolsIn.OrderBy(getMenuText, StringComparer.OrdinalIgnoreCase).ToList();

            IMenu menu = Far.Api.CreateMenu();

            menu.HelpTopic = helpTopic;
            menu.Title     = Res.ModuleTools;

            IModuleTool tool = null;

            for (; ;)
            {
                // format
                int widthName = 9;                 // Name
                int widthAttr = 7;                 // Options
                if (sorted.Count > 0)
                {
                    widthName = Math.Max(widthName, sorted.Max(x => getMenuText(x).Length));
                    widthAttr = Math.Max(widthAttr, sorted.Max(x => x.Options.ToString().Length));
                }
                widthName += 3;
                string format = "{0,-" + widthName + "} : {1,-" + widthAttr + "} : {2}";

                // refill
                menu.Items.Clear();
                menu.Add(string.Format(null, format, "Title", "Options", "Address")).Disabled = true;
                foreach (IModuleTool it in sorted)
                {
                    // 1) restore the current item, its index vary due to sorting with new hotkeys
                    if (tool != null && it == tool)
                    {
                        menu.Selected = menu.Items.Count;
                    }

                    // 2) add the item
                    menu.Add(string.Format(null, format, getMenuText(it), it.Options, it.Manager.ModuleName + "\\" + it.Id)).Data = it;
                }

                // show
                if (!menu.Show())
                {
                    return;
                }

                // the tool
                tool = (IModuleTool)menu.SelectedData;

                // dialog
                IDialog dialog = Far.Api.CreateDialog(-1, -1, 77, 12);
                dialog.HelpTopic = helpTopic;
                dialog.AddBox(3, 1, 0, 0, tool.Name);

                ModuleToolOptions defaultOptions = tool.DefaultOptions;
                ModuleToolOptions currentOptions = tool.Options;

                ICheckBox cbPanels = AddOption(dialog, "&Panels", ModuleToolOptions.Panels, defaultOptions, currentOptions);
                ICheckBox cbEditor = AddOption(dialog, "&Editor", ModuleToolOptions.Editor, defaultOptions, currentOptions);
                ICheckBox cbViewer = AddOption(dialog, "&Viewer", ModuleToolOptions.Viewer, defaultOptions, currentOptions);
                ICheckBox cbDialog = AddOption(dialog, "&Dialog", ModuleToolOptions.Dialog, defaultOptions, currentOptions);
                ICheckBox cbConfig = AddOption(dialog, "&Config", ModuleToolOptions.Config, defaultOptions, currentOptions);
                ICheckBox cbDisk   = AddOption(dialog, "Dis&k", ModuleToolOptions.Disk, defaultOptions, currentOptions);

                dialog.AddText(5, -1, 0, string.Empty).Separator = 1;

                IButton buttonOK = dialog.AddButton(0, -1, "Ok");
                buttonOK.CenterGroup      = true;
                dialog.Default            = buttonOK;
                dialog.Cancel             = dialog.AddButton(0, 0, "Cancel");
                dialog.Cancel.CenterGroup = true;

                if (!dialog.Show())
                {
                    continue;
                }

                // new options
                ModuleToolOptions newOptions = ModuleToolOptions.None;
                if (cbPanels.Selected > 0)
                {
                    newOptions = newOptions | ModuleToolOptions.Panels;
                }
                if (cbEditor.Selected > 0)
                {
                    newOptions = newOptions | ModuleToolOptions.Editor;
                }
                if (cbViewer.Selected > 0)
                {
                    newOptions = newOptions | ModuleToolOptions.Viewer;
                }
                if (cbDialog.Selected > 0)
                {
                    newOptions = newOptions | ModuleToolOptions.Dialog;
                }
                if (cbConfig.Selected > 0)
                {
                    newOptions = newOptions | ModuleToolOptions.Config;
                }
                if (cbDisk.Selected > 0)
                {
                    newOptions = newOptions | ModuleToolOptions.Disk;
                }

                tool.Options = newOptions;
                tool.Manager.SaveSettings();
            }
        }
Esempio n. 9
0
 static void AddTool(string text, EventHandler<MenuEventArgs> click, ModuleToolOptions from)
 {
     AddItem(NewItem(text, click), from);
 }
Esempio n. 10
0
        static void AddItem(FarItem item, ModuleToolOptions from)
        {
            if (from == ModuleToolOptions.None)
                from = ModuleToolOptions.F11Menus;

            if (0 < (from & ModuleToolOptions.Dialog))
            {
                if (_toSeparate && !_menuDialogSeparated)
                {
                    _menuDialogSeparated = true;
                    _menuDialog.Items.Add(NewItem("Actions", null));
                }
                _menuDialog.Items.Add(item);
            }

            if (0 < (from & ModuleToolOptions.Editor))
            {
                if (_toSeparate && !_menuEditorSeparated)
                {
                    _menuEditorSeparated = true;
                    _menuEditor.Items.Add(NewItem("Actions", null));
                }
                _menuEditor.Items.Add(item);
            }

            if (0 < (from & ModuleToolOptions.Panels))
            {
                if (_toSeparate && !_menuPanelsSeparated)
                {
                    _menuPanelsSeparated = true;
                    _menuPanels.Items.Add(NewItem("Actions", null));
                }
                _menuPanels.Items.Add(item);
            }

            if (0 < (from & ModuleToolOptions.Viewer))
            {
                if (_toSeparate && !_menuViewerSeparated)
                {
                    _menuViewerSeparated = true;
                    _menuViewer.Items.Add(NewItem("Actions", null));
                }
                _menuViewer.Items.Add(item);
            }
        }
Esempio n. 11
0
 static void AddTool(string text, EventHandler <MenuEventArgs> click, ModuleToolOptions from)
 {
     AddItem(NewItem(text, click), from);
 }
Esempio n. 12
0
 internal override void LoadData(Hashtable data)
 {
     if (data == null)
     {
         _Options = DefaultOptions;
     }
     else
     {
         var options = data[idOptions];
         if (options == null)
             _Options = DefaultOptions;
         else
             _Options = DefaultOptions & (ModuleToolOptions)options;
     }
 }
Esempio n. 13
0
 public void Action(string text, EventHandler<MenuEventArgs> click, ModuleToolOptions area)
 {
     UI.ActorMenu.AddUserTool(text, click, area);
 }