private void AddChildItems(ref CefMenuModel model, CefContextMenuParams context)
 {
     foreach (var item in ChildItems)
     {
         item.Populate(ref model, context);
     }
 }
コード例 #2
0
ファイル: ContextMenuBase.cs プロジェクト: chylex/TweetDuck
 private static void AddSeparator(CefMenuModel model)
 {
     if (model.Count > 0 && model.GetItemTypeAt(model.Count - 1) != CefMenuItemType.Separator)
     {
         model.AddSeparator();
     }
 }
コード例 #3
0
ファイル: MenuModel.cs プロジェクト: zzqxztc/SteamTools
        public static MenuModel FromCefMenu(CefMenuModel model)
        {
            var items = new MenuModelItem[model.Count];

            CopyItems(model, items);
            return(new MenuModel(items));
        }
コード例 #4
0
 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));
            }
        }
コード例 #6
0
        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);
            }
        }
コード例 #7
0
ファイル: CustomWebViewGlue.cs プロジェクト: wuzlai/CefNet
        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);
        }
コード例 #8
0
ファイル: MenuModel.cs プロジェクト: zzqxztc/SteamTools
        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;
                    }
                }
            }
        }
コード例 #10
0
 public ModernFormsContextMenuRunner(CefContextMenuParams menuParams, CefMenuModel model, CefRunContextMenuCallback callback)
 {
     MenuParams = menuParams;
     Model      = model;
     Callback   = callback;
 }
コード例 #11
0
        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));
        }
コード例 #12
0
 internal BeforeContextMenuEventArgs(CefFrame frame, CefContextMenuParams state, CefMenuModel model)
 {
     Frame = frame;
     State = state;
     Model = model;
 }
コード例 #13
0
 protected internal unsafe override void OnBeforeContextMenu(CefBrowser browser, CefFrame frame, CefContextMenuParams @params, CefMenuModel model)
 {
     _implementation.OnBeforeContextMenu(browser, frame, @params, model);
 }
コード例 #14
0
        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);
        }
コード例 #15
0
        /// <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");
        }
コード例 #16
0
        /// <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");
        }
コード例 #17
0
 public override void MenuClosed(CefMenuModel menuModel)
 {
     _implementation.MenuClosed(menuModel);
 }
コード例 #18
0
ファイル: CefMenuHandler.cs プロジェクト: slavejj/Trackbox
 protected override void OnBeforeContextMenu(CefBrowser browser, CefFrame frame, CefContextMenuParams state, CefMenuModel model)
 {
     model.Clear();
 }
コード例 #19
0
 public override void MenuWillShow(CefMenuModel menuModel)
 {
     _implementation.MenuWillShow(menuModel);
 }
コード例 #20
0
 public override void UnhandledCloseSubmenu(CefMenuModel menuModel, bool isRtl)
 {
     _implementation.UnhandledCloseSubmenu(menuModel, isRtl);
 }
コード例 #21
0
 public override void MouseOutsideMenu(CefMenuModel menuModel, CefPoint screenPoint)
 {
     _implementation.MouseOutsideMenu(menuModel, screenPoint);
 }
コード例 #22
0
 public override void ExecuteCommand(CefMenuModel menuModel, int commandId, CefEventFlags eventFlags)
 {
     _implementation.ExecuteCommand(menuModel, commandId, eventFlags);
 }
コード例 #23
0
 protected override void OnBeforeContextMenu(CefBrowser browser, CefFrame frame, CefContextMenuParams state, CefMenuModel model)
 {
     if (!_core.IsEnabledContextMenu)
     {
         model.Clear();
     }
 }
コード例 #24
0
ファイル: WpfContextMenuRunner.cs プロジェクト: wuzlai/CefNet
 public WpfContextMenuRunner(CefMenuModel model, CefRunContextMenuCallback callback)
 {
     Model    = MenuModel.FromCefMenu(model);
     Callback = callback;
 }
コード例 #25
0
        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);
            }
        }
コード例 #26
0
 /// <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);
 }
コード例 #27
0
 protected internal unsafe override bool RunContextMenu(CefBrowser browser, CefFrame frame, CefContextMenuParams @params, CefMenuModel model, CefRunContextMenuCallback callback)
 {
     return(_implementation.RunContextMenu(browser, frame, @params, model, callback));
 }
コード例 #28
0
 public override bool FormatLabel(CefMenuModel menuModel, ref string label)
 {
     return(_implementation.FormatLabel(menuModel, ref label));
 }
コード例 #29
0
 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);
 }
コード例 #30
0
 public ContextMenuEventArgs(CefContextMenuParams state, CefMenuModel model)
 {
     Model   = model;
     State   = state;
     Handled = false;
 }
コード例 #31
0
ファイル: CustomWebViewGlue.cs プロジェクト: wuzlai/AGTkDemo
 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.查看源);
 }