Exemplo n.º 1
0
        public bool SaveDirect()
        {
            try
            {
                var provider = CoreImpl.applicationServiceProvider;
                var _UO      = provider.GetService(CoreImpl.tyIBrowserManager);
                if (_UO == null)
                {
                    return(false);
                }
                var browserManager = new IBrowserManager(_UO);

                var contentBrowser = browserManager.ActiveBrowser;
                if (contentBrowser == null)
                {
                    return(false);
                }


                helpBrowse = new IHelpViewerBrowser(contentBrowser._UO);
                var meta = helpBrowse.TopicMetadata;
                this.Title = meta.HelpId;
                var ie = helpBrowse.WebBrowser;

                var location_Text = LoaderImpl.SaveLocation;
                if (string.IsNullOrEmpty(location_Text))
                {
                    location_Text = Environment.CurrentDirectory;
                }
                var id    = meta.HelpId;
                var fname = EncodeAsFileName(id);
                location_Text = System.IO.Path.Combine(location_Text, fname + ".html");


                var     doc  = (HTMLDocument)ie.Document;
                dynamic item = doc.getElementsByTagName("html");
                var     html = (string)item[0].outerHTML;

                System.IO.File.WriteAllText(location_Text, html, Encoding.UTF8);
                return(true);
            }
            catch (Exception ex)
            {
                LoaderImpl.ShowException(ex);
                return(false);
            }
        }
Exemplo n.º 2
0
        private void Real_Browser_LoadCompleted(object sender, NavigationEventArgs e)
        {
            try
            {
                // remove logo,copyright,annoy note
                dynamic doc = browser.Document;
                for ( ; ;)
                {
                    dynamic item = doc.getElementsByClassName("OH_feedbacklink");
                    for (int i = 0; i < item.length; i++)
                    {
                        var _this = item[i];
                        var pr    = _this.parentNode;
                        if (pr == null)
                        {
                            continue;
                        }
                        pr.removeChild(_this);
                    }
                    if (item.length == 0)
                    {
                        break;
                    }
                }
                for ( ; ;)
                {
                    dynamic item = doc.getElementsByClassName("OH_disclaimersSection");
                    for (int i = 0; i < item.length; i++)
                    {
                        var _this = item[i];
                        var pr    = _this.parentNode;
                        if (pr == null)
                        {
                            continue;
                        }
                        pr.removeChild(_this);
                    }
                    if (item.length == 0)
                    {
                        break;
                    }
                }
                for (; ;)
                {
                    dynamic item = doc.getElementsByClassName("OH_CodeSnippetToolBarText");
                    if (item.length == 0)
                    {
                        break;
                    }

                    bool bk = true;
                    for (int i = 0; i < item.length; i++)
                    {
                        var _this = item[i];
                        if (_this.style.display != "none")
                        {
                            bk = false;
                            _this.style.display = "none";
                        }

                        /*var pr = _this.parentNode;
                         * if (pr == null) continue;
                         * pr.removeChild(_this);*/
                    }
                    if (bk)
                    {
                        break;
                    }
                }

                if (e != null && !pAuto.IsChecked.GetValueOrDefault())
                {
                    LoaderImpl.Unmask();
                    return;
                }

                for (; !sFooter.IsChecked.GetValueOrDefault();)
                {
                    dynamic item = doc.getElementsByClassName("OH_footer");
                    for (int i = 0; i < item.length; i++)
                    {
                        var _this = item[i];
                        var pr    = _this.parentNode;
                        if (pr == null)
                        {
                            continue;
                        }
                        pr.removeChild(_this);
                    }
                    if (item.length == 0)
                    {
                        break;
                    }
                }
                for ( ; !sAlso.IsChecked.GetValueOrDefault();)
                {
                    dynamic item = doc.getElementById("see_also");
                    if (item == null)
                    {
                        break;
                    }
                    var pr = item.parentNode;
                    if (pr != null)
                    {
                        var sb = pr.nextSibling;
                        if (sb != null && sb.tagName.ToLower() == "dl")
                        {
                            if (sb.parentNode != null)
                            {
                                sb.parentNode.removeChild(sb);
                            }
                        }

                        if (pr.tagName.ToLower().StartsWith("h"))
                        {
                            if (pr.parentNode != null)
                            {
                                pr.parentNode.removeChild(pr);
                            }
                        }
                    }
                }
                for ( ; !sRelated.IsChecked.GetValueOrDefault();)
                {
                    dynamic item = doc.getElementById("related_topics");
                    if (item == null)
                    {
                        break;
                    }
                    var pr = item.parentNode;
                    if (pr != null)
                    {
                        var sb = pr.nextSibling;
                        if (sb != null && sb.tagName.ToLower() == "dl")
                        {
                            if (sb.parentNode != null)
                            {
                                sb.parentNode.removeChild(sb);
                            }
                        }

                        if (pr.tagName.ToLower().StartsWith("h"))
                        {
                            if (pr.parentNode != null)
                            {
                                pr.parentNode.removeChild(pr);
                            }
                        }
                    }
                }
                LoaderImpl.Unmask();
            }
            catch (Exception ex)
            {
                LoaderImpl.Unmask();
                LoaderImpl.ShowException(ex);
            }
        }
Exemplo n.º 3
0
    public static void Worker(string args)
    {
        System.Windows.MessageBox.Show(args);

        if (myTools != null)
        {
            return;
        }
        myTag = new object();

        try
        {
            System.Windows.Forms.Application.EnableVisualStyles();

            LoadSettings();

            var appAssembly = Application.Current.GetType().Assembly;
            // init types
            CoreImpl.tyBrowserDockView  = typeof(Microsoft.VisualStudio.Help.Viewer.DockViews.BrowserDockView);
            CoreImpl.tyIDockViewManager = appAssembly.GetType(IDockViewManager._FullName);
            CoreImpl.tyIBrowserManager  = appAssembly.GetType(IBrowserManager._FullName);
            CoreImpl.tyIContentBrowser  = appAssembly.GetType(IContentBrowser._FullName);
            // get ApplicationServiceProvider
            var pi  = appAssembly.GetType(ApplicationServiceProvider._FullName).GetProperty("Instance", BindingFlags.Public | BindingFlags.Static);
            var _UO = pi.GetValue(null, null);
            CoreImpl.applicationServiceProvider = new ApplicationServiceProvider(_UO);


            Application.Current.MainWindow.PreviewKeyDown += MainWindow_KeyDown;

            var serviceUO = CoreImpl.applicationServiceProvider.GetService(CoreImpl.tyIDockViewManager);
            if (serviceUO != null)
            {
                try
                {
                    var dockMgr = new IDockViewManager(serviceUO);
                    AdjustHlpViwContextMenu(dockMgr.ActiveView);

                    dockMgr.Activated += (aa, bb) =>
                    {
                        AdjustHlpViwContextMenu(aa);
                    };
                }
                catch (Exception ex)
                {
                    LoaderImpl.ShowException(ex);
                }
            }

            var ty  = Application.Current.MainWindow.GetType();
            var ftb = ty.GetField("viewerToolBar", BindingFlags.Instance | BindingFlags.NonPublic);
            if (ftb == null)
            {
                System.Windows.MessageBox.Show("viewerToolBar field is not found"); return;
            }

            var tb = ftb.GetValue(Application.Current.MainWindow) as FrameworkElement;
            if (tb == null)
            {
                System.Windows.MessageBox.Show("viewerToolBar instance not found"); return;
            }

            var fbd = tb.GetType().GetField("mainToolBar", BindingFlags.Instance | BindingFlags.NonPublic);
            if (fbd == null)
            {
                System.Windows.MessageBox.Show("viewerToolBar does not contain mainToolBar"); return;
            }

            var bd = fbd.GetValue(tb) as Border;
            if (bd == null)
            {
                System.Windows.MessageBox.Show("mainToolBar is not a Border"); return;
            }

            var wp = bd.Child as WrapPanel;
            if (bd == null)
            {
                System.Windows.MessageBox.Show("mainToolBar does not have a WrapPanel child"); return;
            }

            var mytb = new MainTool()
            {
                Margin = new Thickness(16, 0, 0, 0)
            };
            wp.Children.Add(mytb);

            myTools = mytb;

            var fly = ty.GetField("LayoutRoot", BindingFlags.Instance | BindingFlags.NonPublic);
            if (fly == null)
            {
                System.Windows.MessageBox.Show("LayoutRoot field is not found"); return;
            }

            var layout = fly.GetValue(Application.Current.MainWindow) as Grid;
            if (layout == null)
            {
                System.Windows.MessageBox.Show("LayoutRoot is not a Grid"); return;
            }

            var ViewerStatusBar = layout.Children.OfType <FrameworkElement>().FirstOrDefault(d => d.GetType().Name == "ViewerStatusBar");
            if (ViewerStatusBar != null)
            {
                var navi = new NaviTool();
                navi.Height = ViewerStatusBar.ActualHeight;
                Grid.SetColumn(navi, Grid.GetColumn(ViewerStatusBar));
                Grid.SetRow(navi, Grid.GetRow(ViewerStatusBar));
                Grid.SetRowSpan(navi, Grid.GetRowSpan(ViewerStatusBar));
                Grid.SetColumnSpan(navi, Grid.GetColumnSpan(ViewerStatusBar));
                layout.Children.Remove(ViewerStatusBar);
                navi.StubContent = ViewerStatusBar;
                layout.Children.Add(navi);
            }
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.ToString());
        }
    }