예제 #1
0
        void IContextMenuHandler.OnBeforeContextMenu(IWebBrowser browserControl, IBrowser browser, IFrame frame, IContextMenuParams parameters, IMenuModel model)
        {
            // To disable the menu then call clear
            model.Clear();
            // Removing existing menu item
            // model.Remove(CefMenuCommand.ViewSource); // Remove "View Source" option
            // Add new custom menu items
            // model.AddItem((CefMenuCommand)CloseDevTools, "Close DevTools");

            string selectionText = parameters.SelectionText;
            bool   selectedText  = !selectionText.Equals("");

            // 不在input中 勾选内容 右键
            if (!parameters.IsEditable && selectedText)
            {
                model.AddItem(CefMenuCommand.Copy, "复制 (Ctrl+C)");
            }
            // 在input中
            else if (parameters.IsEditable)
            {
                model.AddItem(CefMenuCommand.Cut, "剪切 (Ctrl+X)");
                model.AddItem(CefMenuCommand.Copy, "复制 (Ctrl+C)");
                model.AddItem(CefMenuCommand.Paste, "粘贴 (Ctrl+V)");
                model.AddItem(CefMenuCommand.Delete, "删除 (Delete)");
                model.AddSeparator();
                model.AddItem(CefMenuCommand.SelectAll, "全选 (Ctrl+A)");
                if (!selectedText)
                {
                    // 若没有勾选内容,则禁止点击 Cut Copy
                    model.SetEnabled(CefMenuCommand.Cut, false);
                    model.SetEnabled(CefMenuCommand.Copy, false);
                    model.SetEnabled(CefMenuCommand.Delete, false);
                }
            }
            else if (parameters.MediaType == ContextMenuMediaType.Image)
            {
                model.AddItem((CefMenuCommand)SaveImage, "下载图片");
            }
            else if (parameters.UnfilteredLinkUrl != "")
            {
                model.AddItem((CefMenuCommand)CopyLink, "复制链接");
                // 当 LinkUrl 是 JavaScript:; 的时候,下载会出问题
                if (!Regex.IsMatch(parameters.UnfilteredLinkUrl, @"(?s)(?i)^(javascript:)"))
                {
                    model.AddItem((CefMenuCommand)SaveLink, "下载链接内容");
                    model.AddItem((CefMenuCommand)LinkOpenDefaultBrowser, "默认浏览器打开");
                }
            }
            else
            {
                if (_showReload)
                {
                    model.AddItem(CefMenuCommand.ReloadNoCache, "刷新 (ReloadNoCache)");
                }
                model.AddItem((CefMenuCommand)FeedbackProject, "反馈问题");
                model.AddItem((CefMenuCommand)LinkToQWQCODEProject, "开源项目");
# if DEBUG
                model.AddItem((CefMenuCommand)ShowDevTools, "检查 (ShowDevTools)");
# endif
            }
예제 #2
0
            void SetupCopyLinkAddress(IWebBrowser browserControl, IBrowser browser, IFrame frame, IContextMenuParams parameters, IMenuModel model)
            {
                string linkURL = parameters.UnfilteredLinkUrl;

                if (linkURL != null && linkURL != "")
                {
                    model.SetEnabled((CefMenuCommand)Copy, true);
                    LastUnfilteredLinkUrl = parameters.UnfilteredLinkUrl;
                }
                else
                {
                    model.SetEnabled((CefMenuCommand)Copy, false);
                    LastUnfilteredLinkUrl = null;
                }
            }
예제 #3
0
 public bool RunContextMenu(IWebBrowser browserControl, IBrowser browser, IFrame frame, IContextMenuParams parameters, IMenuModel model, IRunContextMenuCallback callback)
 {
     model.SetEnabled(CefMenuCommand.Cut, false);
     return(false);
 }
예제 #4
0
        public bool RunContextMenu(IWebBrowser browserControl, IBrowser browser, IFrame frame, IContextMenuParams parameters, IMenuModel model, IRunContextMenuCallback callback)
        {
            var webBrowser = (ChromiumWebBrowser)browserControl;

            model.SetEnabled(CefMenuCommand.Back, webBrowser.CanGoBack);
            model.SetEnabled(CefMenuCommand.Forward, webBrowser.CanGoForward);
            model.SetEnabled(CefMenuCommand.SelectAll, webBrowser.CanSelect);

            //var menuItems = GetMenuItems(model).ToList();

            //menuItems.ForEach(m =>
            //{
            //    if(m.Item3 == CefMenuCommand.Back)
            //    {
            //        if (!webBrowser.CanGoBack)
            //        {

            //        }
            //    }
            //});

            #region MyRegion

            //webBrowser.Invoke(new Action(() =>
            //{
            //    foreach (var item in menuItems)
            //    {
            //        switch (item.Item2)
            //        {
            //            case CefMenuCommand.Back:
            //                {
            //                    //browser.GoBack();
            //                    break;
            //                }
            //            case CefMenuCommand.Forward:
            //                {
            //                    //browser.GoForward();
            //                    break;
            //                }
            //            case CefMenuCommand.Cut:
            //                {
            //                    //browser.FocusedFrame.Cut();
            //                    break;
            //                }
            //            case CefMenuCommand.Copy:
            //                {
            //                    //browser.FocusedFrame.Copy();
            //                    break;
            //                }
            //            case CefMenuCommand.Paste:
            //                {
            //                    //browser.FocusedFrame.Paste();
            //                    break;
            //                }
            //            case CefMenuCommand.Print:
            //                {
            //                    //browser.GetHost().Print();
            //                    break;
            //                }
            //            case CefMenuCommand.ViewSource:
            //                {
            //                    //browser.FocusedFrame.ViewSource();
            //                    break;
            //                }
            //            case CefMenuCommand.Undo:
            //                {
            //                    //browser.FocusedFrame.Undo();
            //                    break;
            //                }
            //            case CefMenuCommand.StopLoad:
            //                {
            //                    //browser.StopLoad();
            //                    break;
            //                }
            //            case CefMenuCommand.SelectAll:
            //                {
            //                    //browser.FocusedFrame.SelectAll();
            //                    break;
            //                }
            //            case CefMenuCommand.Redo:
            //                {
            //                    //browser.FocusedFrame.Redo();
            //                    break;
            //                }
            //            case CefMenuCommand.Find:
            //                {
            //                    //browser.GetHost().Find(0, parameters.SelectionText, true, false, false);
            //                    break;
            //                }
            //            case CefMenuCommand.AddToDictionary:
            //                {
            //                    //browser.GetHost().AddWordToDictionary(parameters.MisspelledWord);
            //                    break;
            //                }
            //            case CefMenuCommand.Reload:
            //                {
            //                    //browser.Reload();
            //                    break;
            //                }
            //            case CefMenuCommand.ReloadNoCache:
            //                {
            //                    //browser.Reload(ignoreCache: true);
            //                    break;
            //                }
            //            case (CefMenuCommand)26501:
            //                {
            //                    //browser.GetHost().ShowDevTools();
            //                    break;
            //                }
            //            case (CefMenuCommand)26502:
            //                {
            //                    //browser.GetHost().CloseDevTools();
            //                    break;
            //                }
            //        }
            //    }
            //}));

            #endregion

            return(false); // 弹出
        }