SetProgress() public method

public SetProgress ( int completed, int total ) : void
completed int
total int
return void
コード例 #1
0
        private void BypassRedirectsFunc()
        {//checks links to make them bypass redirects and (TODO) disambigs
            string link    = "";
            string article = "";

            Regex wikiLinksOnly = new Regex("\\[\\[([^:|]*?)\\]\\]", RegexOptions.Compiled);

            Dictionary <string, string> knownLinks = new Dictionary <string, string>();

            if (HasUI)
            {
                ui.Worker = Thread.CurrentThread;
            }

            try
            {
                if (HasUI)
                {
                    ui.Status = "Loading links";
                }

                MatchCollection simple = wikiLinksOnly.Matches(strParam);
                MatchCollection piped  = WikiRegexes.PipedWikiLink.Matches(strParam);

                if (HasUI)
                {
                    ui.Status = "Processing links";

                    ui.SetProgress(0, simple.Count + piped.Count);
                }
                int n = 0;
                foreach (Match m in simple)
                {
                    //make link
                    link    = m.Value;
                    article = m.Groups[1].Value;

                    if (!knownLinks.ContainsKey(Tools.TurnFirstToUpper(article)))
                    {
                        //get text
                        string text = "";
                        try
                        {
                            text = Tools.GetArticleText(article);
                        }
                        catch
                        {
                            continue;
                        }

                        string dest = article;

                        //test if redirect
                        if (Tools.IsRedirect(text))
                        {
                            dest = HttpUtility.UrlDecode(Tools.RedirectTarget(text).Replace("_", " "));
                            string directLink = "[[" + dest + "|" + article + "]]";

                            strParam = strParam.Replace(link, directLink);
                        }
                        knownLinks.Add(Tools.TurnFirstToUpper(article), Tools.TurnFirstToUpper(dest));
                    }
                    else if (knownLinks[Tools.TurnFirstToUpper(article)] != Tools.TurnFirstToUpper(article))
                    {
                        string directLink = "[[" + knownLinks[Tools.TurnFirstToUpper(article)] + "|" + article + "]]";

                        strParam = strParam.Replace(link, directLink);
                    }
                    n++;
                    if (HasUI)
                    {
                        ui.SetProgress(n, simple.Count + piped.Count);
                    }
                }

                foreach (Match m in piped)
                {
                    //make link
                    link    = m.Value;
                    article = m.Groups[1].Value;
                    string linkText = m.Groups[2].Value;

                    if (!knownLinks.ContainsKey(Tools.TurnFirstToUpper(article)))
                    {
                        //get text
                        string text = "";
                        try
                        {
                            text = Tools.GetArticleText(article);
                        }
                        catch
                        {
                            continue;
                        }

                        string dest = article;

                        //test if redirect
                        if (Tools.IsRedirect(text))
                        {
                            dest = HttpUtility.UrlDecode(Tools.RedirectTarget(text).Replace("_", " "));
                            string directLink = "[[" + dest + "|" + linkText + "]]";

                            strParam = strParam.Replace(link, directLink);
                        }
                        knownLinks.Add(Tools.TurnFirstToUpper(article), Tools.TurnFirstToUpper(dest));
                    }
                    else if (knownLinks[Tools.TurnFirstToUpper(article)] != Tools.TurnFirstToUpper(article))
                    {
                        string directLink = "[[" + knownLinks[Tools.TurnFirstToUpper(article)] + "|" + linkText + "]]";

                        strParam = strParam.Replace(link, directLink);
                    }
                    n++;
                    if (HasUI)
                    {
                        ui.SetProgress(n, simple.Count + piped.Count);
                    }
                }


                Result = strParam;
                InvokeOnComplete();
                //ui.Close();
            }
            catch (Exception e)
            {
                //ui.Close();
                Error = e;
            }
        }
コード例 #2
0
        /// <summary>
        /// checks wikilinks to make them bypass redirects
        /// </summary>
        private void BypassRedirectsFunc()
        {
            // checks links to make them bypass redirects and (TODO) disambigs
            Dictionary <string, string> knownLinks = new Dictionary <string, string>();

            if (HasUI)
            {
                UI.Worker = Thread.CurrentThread;
            }

            IApiEdit editor = ObjParam1 as IApiEdit;

            if (editor == null)
            {
                Result = "";
                InvokeOnError();
                return;
            }

            try
            {
                if (HasUI)
                {
                    UI.Status = "Loading links";
                }

                MatchCollection links = WikiRegexes.WikiLinksOnlyPossiblePipe.Matches(StrParam);

                if (HasUI)
                {
                    UI.Status = "Processing links";

                    UI.SetProgress(0, links.Count);
                }
                int n = 0;

                foreach (Match m in links)
                {
                    string link    = m.Value;
                    string article = m.Groups[1].Value.TrimStart(new[] { ':' });

                    // if the link is unpiped, use the target as the new link's pipe text
                    string linkText = (!string.IsNullOrEmpty(m.Groups[2].Value)) ? m.Groups[2].Value : article;

                    string ftu = Tools.TurnFirstToUpper(article);

                    string value;
                    if (!knownLinks.TryGetValue(ftu, out value))
                    {
                        // get text
                        string text;
                        try
                        {
                            text = editor.Open(article, false); //TODO:Resolve redirects betterer
                        }
                        catch
                        {
                            continue;
                        }

                        string dest = article;

                        // test if redirect
                        if (Tools.IsRedirect(text))
                        {
                            dest = HttpUtility.UrlDecode(Tools.RedirectTarget(text).Replace("_", " "));
                            string directLink = "[[" + dest + "|" + linkText + "]]";

                            StrParam = StrParam.Replace(link, directLink);
                        }
                        knownLinks.Add(ftu, Tools.TurnFirstToUpper(dest));
                    }
                    else if (value != ftu)
                    {
                        string directLink = "[[" + value + "|" + linkText + "]]";

                        StrParam = StrParam.Replace(link, directLink);
                    }
                    n++;
                    if (HasUI)
                    {
                        UI.SetProgress(n, links.Count);
                    }
                }

                Result = StrParam;
                InvokeOnComplete();
                // UI.Close();
            }
            catch (Exception e)
            {
                // UI.Close();
                ErrorException = e;
                InvokeOnError();
            }
        }