private static int BuildMenuContentsForGroup(int index, ICommandTarget target, ToolStripItemCollection children, IPoderosaMenuGroup grp) { int count = 0; foreach (IPoderosaMenu m in grp.ChildMenus) { ToolStripMenuItem mi = new ToolStripMenuItem(); children.Insert(index++, mi); //途中挿入のことも mi.DropDownOpening += new EventHandler(OnPopupMenu); mi.Enabled = m.IsEnabled(target); mi.Checked = mi.Enabled ? m.IsChecked(target) : false; mi.Text = m.Text; //Enabledを先に mi.Tag = new MenuItemTag(grp, m, target); IPoderosaMenuFolder folder; IPoderosaMenuItem leaf; if ((folder = m as IPoderosaMenuFolder) != null) { BuildMenuContents(mi, folder); } else if ((leaf = m as IPoderosaMenuItem) != null) { mi.Click += new EventHandler(OnClickMenu); IGeneralCommand gc = leaf.AssociatedCommand as IGeneralCommand; if (gc != null) mi.ShortcutKeyDisplayString = WinFormsUtil.FormatShortcut(CommandManagerPlugin.Instance.CurrentKeyBinds.GetKey(gc)); } count++; } return count; }
//コンテキストメニュー表示 public void ShowContextMenu(IPoderosaMenuGroup[] menus, ICommandTarget target, Point point_screen, ContextMenuFlags flags) { //まずソート ICollection sorted = PositionDesignationSorter.SortItems(menus); ContextMenuStrip cm = new ContextMenuStrip(); MenuUtil.BuildContextMenu(cm, new ConvertingEnumerable<IPoderosaMenuGroup>(sorted), target); if (cm.Items.Count == 0) { cm.Dispose(); return; } //キーボード操作をトリガにメニューを出すときは、選択があったほうが何かと操作しやすい。 if ((flags & ContextMenuFlags.SelectFirstItem) != ContextMenuFlags.None) cm.Items[0].Select(); // ContextMenuStrip is not disposed automatically and // its instance sits in memory till application end. // To release a document object related with some menu items, // we need to dispose ContextMenuStrip explicitly soon after it disappeared. cm.VisibleChanged += new EventHandler(ContextMenuStripVisibleChanged); try { cm.Show(this, this.PointToClient(point_screen)); } catch (Exception ex) { RuntimeUtil.ReportException(ex); } }
public override void InitializePlugin(IPoderosaWorld poderosa) { base.InitializePlugin(poderosa); _instance = this; _stringResource = new StringResource("Poderosa.Usability.strings", typeof(OptionDialogPlugin).Assembly); poderosa.Culture.AddChangeListener(this); IPluginManager pm = poderosa.PluginManager; _coreServices = (ICoreServices)poderosa.GetAdapter(typeof(ICoreServices)); IExtensionPoint panel_ext = pm.CreateExtensionPoint(OPTION_PANEL_ID, typeof(IOptionPanelExtension), this); ICommandCategory dialogs = _coreServices.CommandManager.CommandCategories.Dialogs; _optionDialogCommand = new GeneralCommandImpl("org.poderosa.optiondialog.open", _stringResource, "Command.OptionDialog", dialogs, new ExecuteDelegate(OptionDialogCommand.OpenOptionDialog)).SetDefaultShortcutKey(Keys.Alt | Keys.Control | Keys.T); _detailedPreferenceCommand = new GeneralCommandImpl("org.poderosa.preferenceeditor.open", _stringResource, "Command.PreferenceEditor", dialogs, new ExecuteDelegate(OptionDialogCommand.OpenPreferenceEditor)); IExtensionPoint toolmenu = pm.FindExtensionPoint("org.poderosa.menu.tool"); _optionDialogMenuGroup = new PoderosaMenuGroupImpl(new IPoderosaMenuItem[] { new PoderosaMenuItemImpl(_optionDialogCommand, _stringResource, "Menu.OptionDialog"), new PoderosaMenuItemImpl(_detailedPreferenceCommand, _stringResource, "Menu.PreferenceEditor") }).SetPosition(PositionType.Last, null); toolmenu.RegisterExtension(_optionDialogMenuGroup); //基本のオプションパネルを登録 panel_ext.RegisterExtension(new DisplayOptionPanelExtension()); panel_ext.RegisterExtension(new TerminalOptionPanelExtension()); panel_ext.RegisterExtension(new PeripheralOptionPanelExtension()); panel_ext.RegisterExtension(new CommandOptionPanelExtension()); panel_ext.RegisterExtension(new SSHOptionPanelExtension()); panel_ext.RegisterExtension(new ConnectionOptionPanelExtension()); panel_ext.RegisterExtension(new GenericOptionPanelExtension()); }
/// <summary> /// Constructor /// </summary> public SFTPToolbar() { SFTPCommand sftpCommand = new SFTPCommand(); SCPCommand scpCommand = new SCPCommand(); _toolbarElements = new IToolBarElement[] { new SFTPToolbarCommandButton(sftpCommand), new SCPToolbarCommandButton(scpCommand) }; _menuGroup = new PoderosaMenuGroupImpl( new IPoderosaMenu[] { sftpCommand, scpCommand }); }
public override void InitializePlugin(IPoderosaWorld poderosa) { base.InitializePlugin(poderosa); _instance = this; IPluginManager pm = poderosa.PluginManager; _commandManager = (ICommandManager)pm.FindPlugin("org.poderosa.core.commands", typeof(ICommandManager)); _loginDialogCommand = new CygwinLoginDialogCommand(); _commandManager.Register(_loginDialogCommand); IExtensionPoint ep = poderosa.PluginManager.FindExtensionPoint("org.poderosa.menu.file"); _cygwinMenuGroup = new CygwinMenuGroup(); ep.RegisterExtension(_cygwinMenuGroup); _cygwinToolBarComponent = new CygwinToolBarComponent(); poderosa.PluginManager.FindExtensionPoint("org.poderosa.core.window.toolbar").RegisterExtension(_cygwinToolBarComponent); }
public MenuItemTag(IPoderosaMenuGroup grp, IPoderosaMenu menu, ICommandTarget target) { _group = grp; _menu = menu; _commandTarget = target; }
private static int BuildMenuContentsForGroup(int index, ICommandTarget target, ToolStripItemCollection children, IPoderosaMenuGroup grp) { int count = 0; foreach (IPoderosaMenu m in grp.ChildMenus) { ToolStripMenuItem mi = new ToolStripMenuItem(); children.Insert(index++, mi); //途中挿入のことも mi.DropDownOpening += new EventHandler(OnPopupMenu); mi.Enabled = m.IsEnabled(target); mi.Checked = mi.Enabled ? m.IsChecked(target) : false; mi.Text = m.Text; //Enabledを先に mi.Tag = new MenuItemTag(grp, m, target); IPoderosaMenuFolder folder; IPoderosaMenuItem leaf; if ((folder = m as IPoderosaMenuFolder) != null) { BuildMenuContents(mi, folder); } else if ((leaf = m as IPoderosaMenuItem) != null) { mi.Click += new EventHandler(OnClickMenu); IGeneralCommand gc = leaf.AssociatedCommand as IGeneralCommand; if (gc != null) { mi.ShortcutKeyDisplayString = WinFormsUtil.FormatShortcut(CommandManagerPlugin.Instance.CurrentKeyBinds.GetKey(gc)); } } count++; } return(count); }
public StandardTerminalEmulatorMenuFolder(string textID, EnabledDelegate enabled, IPoderosaMenuGroup[] groups) { _textID = textID; _enabled = enabled; _children = groups; }
public StandardTerminalEmulatorMenuFolder(string textID, EnabledDelegate enabled, IPoderosaMenuGroup grp) { _textID = textID; _enabled = enabled; _children = new IPoderosaMenuGroup[] { grp }; }