private void AddChildItems(ref CefMenuModel model, CefContextMenuParams context) { foreach (var item in ChildItems) { item.Populate(ref model, context); } }
private static void AddSeparator(CefMenuModel model) { if (model.Count > 0 && model.GetItemTypeAt(model.Count - 1) != CefMenuItemType.Separator) { model.AddSeparator(); } }
public static MenuModel FromCefMenu(CefMenuModel model) { var items = new MenuModelItem[model.Count]; CopyItems(model, items); return(new MenuModel(items)); }
protected override void OnBeforeContextMenu(CefBrowser browser, CefFrame frame, CefContextMenuParams state, CefMenuModel model) { //disable for now model.Clear(); }
public void Populate(ref CefMenuModel model, CefContextMenuParams context) { var menuModel = model; lock (Lock) { _items.ForEach(item => item.Populate(ref menuModel, context)); } }
private void Build(CefMenuModel model, MenuItemCollection menu) { CefColor color = default; int count = model.Count; for (int i = 0; i < count; i++) { MenuItem menuItem; switch (model.GetTypeAt(i)) { case CefMenuItemType.Separator: menu.Add(new MenuSeparatorItem()); continue; case CefMenuItemType.Check: menuItem = new MenuItem(); //menuItem.CheckOnClick = true; //menuItem.Checked = model.IsCheckedAt(i); break; case CefMenuItemType.Radio: menuItem = new MenuItem(); //menuItem.Checked = model.IsCheckedAt(i); break; case CefMenuItemType.Command: menuItem = new MenuItem(); break; case CefMenuItemType.Submenu: menuItem = new MenuItem(); if (model.IsEnabledAt(i)) { //menuItem.DropDownItemClicked += Menu_ItemClicked; Build(model.GetSubMenuAt(i), menuItem.Items); } break; default: continue; } menuItem.Text = model.GetLabelAt(i).Replace("&", ""); menuItem.Click += Menu_ItemClicked; menuItem.Enabled = model.IsEnabledAt(i); //menuItem.Tag = model.GetCommandIdAt(i); MenuItemsTags.Add(menuItem, model.GetCommandIdAt(i)); //menuItem.ForeColor = model.GetColorAt(i, CefMenuColorType.Text, ref color) ? Color.FromArgb(color.ToArgb()) : SystemColors.ControlText; menu.Add(menuItem); } }
protected override void OnBeforeContextMenu(CefBrowser browser, CefFrame frame, CefContextMenuParams menuParams, CefMenuModel model) { model.InsertItemAt(model.Count > 0 ? 1 : 0, (int)CefMenuId.ReloadNocache, "Refresh"); model.AddSeparator(); model.AddItem(SHOW_DEV_TOOLS, "&Show DevTools"); model.AddItem(INSPECT_ELEMENT, "Inspect element"); CefMenuModel submenu = model.AddSubMenu(0, "Submenu Test"); submenu.AddItem((int)CefMenuId.Copy, "Copy"); submenu.AddItem((int)CefMenuId.Paste, "Paste"); submenu.SetColorAt(submenu.Count - 1, CefMenuColorType.Text, CefColor.FromArgb(Colors.Blue.ToArgb())); submenu.AddCheckItem(0, "Checked Test"); submenu.SetCheckedAt(submenu.Count - 1, true); submenu.AddRadioItem(0, "Radio Off", 0); submenu.AddRadioItem(0, "Radio On", 1); submenu.SetCheckedAt(submenu.Count - 1, true); }
private static void CopyItems(CefMenuModel model, MenuModelItem[] dest) { for (int i = 0; i < dest.Length; i++) { var item = new MenuModelItem { Command = model.GetCommandIdAt(i), Label = model.GetLabelAt(i), Type = model.GetTypeAt(i), Group = model.GetGroupIdAt(i), Visible = model.IsVisibleAt(i), Enabled = model.IsEnabledAt(i), Checked = model.IsCheckedAt(i), }; CefColor color = default; item.Colors = new CefColor[(int)CefMenuColorType.Count]; for (int j = 0; j < item.Colors.Length; j++) { item.Colors[j] = model.GetColorAt(i, (CefMenuColorType)j, ref color) ? color : default; } int keycode = 0, alt = 0, ctrl = 0, shift = 0; if (model.GetAcceleratorAt(i, ref keycode, ref shift, ref ctrl, ref alt)) { item.Accelerator = new Accelerator { KeyCode = keycode, Alt = alt != 0, Ctrl = ctrl != 0, Shift = shift != 0 }; } if (item.Type == CefMenuItemType.Submenu) { CefMenuModel submenu = model.GetSubMenuAt(i); var items = new MenuModelItem[submenu.Count]; CopyItems(submenu, items); item.SubMenu = new MenuModel(items) { IsSubMenu = true }; } dest[i] = item; } }
public void Populate(ref CefMenuModel model, CefContextMenuParams context) { if (ShouldPopulate(context)) { if (ChildItems != null && ChildItems.Count > 0) { var childMenu = model.AddSubMenu(Id, Title); AddChildItems(ref childMenu, context); } else { switch (Type) { case "radio": model.AddRadioItem(Id, Title, GroupId <= 0 ? 1 : GroupId); if (Checked) { model.SetChecked(Id, true); } break; case "checkbox": model.AddCheckItem(Id, Title); if (Checked) { model.SetChecked(Id, true); } break; case "separator": model.AddSeparator(); break; default: model.AddItem(Id, Title); break; } } } }
public ModernFormsContextMenuRunner(CefContextMenuParams menuParams, CefMenuModel model, CefRunContextMenuCallback callback) { MenuParams = menuParams; Model = model; Callback = callback; }
protected override void OnBeforeContextMenu(CefBrowser browser, CefFrame frame, CefContextMenuParams state, CefMenuModel model) { for (var index = model.Count - 1; index >= 0; index--) { var nCmd = model.GetCommandIdAt(index); if (!ContextMenuHelper.IsEdition(nCmd) && !ContextMenuHelper.IsUserDefined(nCmd)) { model.Remove(nCmd); } } if (WinFormium.Runtime.IsDebuggingMode && (state.ContextMenuType & CefContextMenuTypeFlags.Editable) != CefContextMenuTypeFlags.Editable) { if (model.Count > 0) { model.AddSeparator(); } model.AddItem((int)((CefMenuId)ContextMenuHelper.MenuIdentifier.MENU_ID_SHOW_DEVTOOLS), Resources.Messages.ContextMenu_ShowDevTools); model.AddItem((int)((CefMenuId)ContextMenuHelper.MenuIdentifier.MENU_ID_HIDE_DEVTOOLS), Resources.Messages.ContextMenu_CloseDevTools); } var e = new BeforeContextMenuEventArgs(frame, state, model); _owner.InvokeIfRequired(() => _owner.OnBeforeContextMenu(e)); }
internal BeforeContextMenuEventArgs(CefFrame frame, CefContextMenuParams state, CefMenuModel model) { Frame = frame; State = state; Model = model; }
protected internal unsafe override void OnBeforeContextMenu(CefBrowser browser, CefFrame frame, CefContextMenuParams @params, CefMenuModel model) { _implementation.OnBeforeContextMenu(browser, frame, @params, model); }
protected override void OnBeforeContextMenu(CefBrowser browser, CefFrame frame, CefContextMenuParams state, CefMenuModel model) { if (!TwitterUrls.IsTweetDeck(frame.Url) || browser.IsLoading) { extraContext.Reset(); } base.OnBeforeContextMenu(browser, frame, state, model); }
/// <summary> /// The on before context menu. /// </summary> /// <param name="browser"> /// The browser. /// </param> /// <param name="frame"> /// The frame. /// </param> /// <param name="state"> /// The state. /// </param> /// <param name="model"> /// The model. /// </param> protected override void OnBeforeContextMenu(CefBrowser browser, CefFrame frame, CefContextMenuParams state, CefMenuModel model) { base.OnBeforeContextMenu(browser, frame, state, model); for (int x = model.Count - 1; x > -1; x--) { var item = model.GetLabelAt(x); if (item == "&Back" || item == "&Forward" || item == "&Print…" || item == "&View page source") { model.RemoveAt(x); } } if (model.Count == 1 && model.GetItemTypeAt(0).ToString() == "Separator") { model.RemoveAt(0); } model.AddItem((int)(CefMenuId)ShowDevTools, "Show DevTools"); model.AddItem((int)(CefMenuId)Refresh, "Refresh"); }
/// <summary> /// The on before context menu. /// </summary> /// <param name="browser"> /// The browser. /// </param> /// <param name="frame"> /// The frame. /// </param> /// <param name="state"> /// The state. /// </param> /// <param name="model"> /// The model. /// </param> protected override void OnBeforeContextMenu(CefBrowser browser, CefFrame frame, CefContextMenuParams state, CefMenuModel model) { // To disable the menu then call clear model.Clear(); // Removing existing menu item // Remove "View Source" option model.Remove((int)CefMenuId.ViewSource); // Add new custom menu items model.AddItem((int)((CefMenuId)ShowDevTools), "Show DevTools"); model.AddItem((int)((CefMenuId)CloseDevTools), "Close DevTools"); }
public override void MenuClosed(CefMenuModel menuModel) { _implementation.MenuClosed(menuModel); }
protected override void OnBeforeContextMenu(CefBrowser browser, CefFrame frame, CefContextMenuParams state, CefMenuModel model) { model.Clear(); }
public override void MenuWillShow(CefMenuModel menuModel) { _implementation.MenuWillShow(menuModel); }
public override void UnhandledCloseSubmenu(CefMenuModel menuModel, bool isRtl) { _implementation.UnhandledCloseSubmenu(menuModel, isRtl); }
public override void MouseOutsideMenu(CefMenuModel menuModel, CefPoint screenPoint) { _implementation.MouseOutsideMenu(menuModel, screenPoint); }
public override void ExecuteCommand(CefMenuModel menuModel, int commandId, CefEventFlags eventFlags) { _implementation.ExecuteCommand(menuModel, commandId, eventFlags); }
protected override void OnBeforeContextMenu(CefBrowser browser, CefFrame frame, CefContextMenuParams state, CefMenuModel model) { if (!_core.IsEnabledContextMenu) { model.Clear(); } }
public WpfContextMenuRunner(CefMenuModel model, CefRunContextMenuCallback callback) { Model = MenuModel.FromCefMenu(model); Callback = callback; }
protected override void OnBeforeContextMenu(CefBrowser browser, CefFrame frame, CefContextMenuParams state, CefMenuModel model) { if (model.Count > 0) { model.Clear(); } //bool removed = model.Remove(CefMenuCommand.ViewSource); // Remove "View Source" option if (state.LinkUrl != null || IsUrl(state.SelectionText)) { model.AddItem(133, "新窗口中打开链接"); model.AddItem(134, "复制链接"); model.AddSeparator(); } model.AddItem(135, "搜索此内容"); if (state.MediaType == CefContextMenuMediaType.Image) { SearStr = state.SelectionText; model.AddItem(136, "图片另存为"); } model.AddSeparator(); model.AddItem(100, "复制"); model.AddItem(114, "粘贴"); model.AddSeparator(); model.AddItem(200, "返回"); model.AddItem(300, "前进"); model.AddItem(350, "刷新"); model.AddItem(113, "停止"); model.AddSeparator(); if (_core.Browser.GetHost() != null) { // model.AddSeparator(); model.AddItem(402, "打印此页"); model.AddItem(401, "页面另存为PDF"); model.AddSeparator(); } if (!_core.DevToolsOpen) { model.AddItem(400, "打开调试工具"); } else { model.AddItem(400, "关闭调试工具"); } if (state.SelectionText != null) { model.SetEnabled(100, true); } else { model.SetEnabled(100, false); } if (Clipboard.GetText() == "") { model.SetEnabled(114, false); } else { model.SetEnabled(114, true); } if (state.SelectionText != "" && state.SelectionText != null) { SearStr = state.SelectionText; model.SetEnabled(135, true); } else { model.SetEnabled(135, false); } if (browser.IsLoading) { model.SetEnabled(113, true); } else { model.SetEnabled(113, false); } if (browser.CanGoBack) { model.SetEnabled(200, true); } else { model.SetEnabled(200, false); } if (browser.CanGoForward) { model.SetEnabled(300, true); } else { model.SetEnabled(300, false); } }
/// <summary> /// The run context menu. /// </summary> /// <param name="browser"> /// The browser. /// </param> /// <param name="frame"> /// The frame. /// </param> /// <param name="parameters"> /// The parameters. /// </param> /// <param name="model"> /// The model. /// </param> /// <param name="callback"> /// The callback. /// </param> /// <returns> /// The <see cref="bool"/>. /// </returns> protected override bool RunContextMenu(CefBrowser browser, CefFrame frame, CefContextMenuParams parameters, CefMenuModel model, CefRunContextMenuCallback callback) { return(false); }
protected internal unsafe override bool RunContextMenu(CefBrowser browser, CefFrame frame, CefContextMenuParams @params, CefMenuModel model, CefRunContextMenuCallback callback) { return(_implementation.RunContextMenu(browser, frame, @params, model, callback)); }
public override bool FormatLabel(CefMenuModel menuModel, ref string label) { return(_implementation.FormatLabel(menuModel, ref label)); }
protected override void OnBeforeContextMenu(CefBrowser browser, CefFrame frame, CefContextMenuParams state, CefMenuModel model) { Log.Trace("ContextMenuHandler.OnBeforeContextMenu( browser: {0}, frame: {1}, state: {2}, model: CefMenuModel[{3}] )", browser.Identifier, frame.Identifier, "(" + state.X + ", " + state.Y + ")", model.Count); base.OnBeforeContextMenu(browser, frame, state, model); }
public ContextMenuEventArgs(CefContextMenuParams state, CefMenuModel model) { Model = model; State = state; Handled = false; }
protected override void OnBeforeContextMenu(CefBrowser browser, CefFrame frame, CefContextMenuParams menuParams, CefMenuModel model) { //处理 鼠标右键的快捷键 model.Clear(); model.AddItem((int)CefMenuId.Copy, "复制"); //model.AddItem((int)CefMenuId.ViewSource, AppResource.查看源); }