override public void Berecne()
        {
            base.Berecne();

            var BaseErgeebnis = base.Ergeebnis;

            if (null == BaseErgeebnis)
            {
                return;
            }

            var SetTab =
                AstMainContainerMain?.ListPathToNodeFromSubtreeBreadthFirst(k => k.PyObjTypNameMatchesRegexPatternIgnoreCase("tab"))?.ToArray();

            var SetScrollAstPfaad =
                AstMainContainerMain.ListPathToNodeFromSubtreeBreadthFirst(ast => ast.PyObjTypNameIsScroll())
                ?.ToArray();

            var SetScrollAst =
                AstMainContainerMain.MatchingNodesFromSubtreeBreadthFirst(ast => ast.PyObjTypNameIsScroll())
                ?.ToArray();

            var tInspektSearchStringAst =
                AstMainContainer?.FirstMatchingNodeFromSubtreeBreadthFirst(k => Regex.Match(k?.LabelText() ?? "", "search", RegexOptions.IgnoreCase).Success);

            var ListView = SetScrollAst?.FirstOrDefault()?.AlsListView <IListEntry>(SictAuswertGbsListViewport <IListEntry> .ListEntryKonstruktSctandard);

            ErgeebnisScpez = new WindowPeopleAndPlaces(BaseErgeebnis)
            {
                ListView = ListView,
            };
        }
        virtual public void Berecne()
        {
            var AstWindow = this.WindowNode;

            if (!(AstWindow?.VisibleIncludingInheritance ?? false))
            {
                return;
            }

            if (!(true == AstWindow.ListChild?.Any((kandidaat) => (null == kandidaat ? null : kandidaat.VisibleIncludingInheritance) ?? false)))
            {
                /*
                 * B:\Berict\Berict.Nuzer\[ZAK=2014.09.17.13.27.59,NB=25].Anwendung.Berict:
                 * 2014.09.17	Beobactung Probleem: Window "LSCStack" mit Ast direkt selbsct sictbar aber kaine sictbaare Ast enthaltend und daher vermuutlic für Nuzer unsictbar.
                 * Automaat versuuct diises leere Window zu scliise und blaibt damit in Sclaife hänge.
                 * */
                return;
            }

            AstMainContainer =
                AstWindow?.FirstMatchingNodeFromSubtreeBreadthFirst((kandidaat) =>
                                                                    kandidaat.PyObjTypNameIsContainer() &&
                                                                    string.Equals("__maincontainer", kandidaat.Name, StringComparison.InvariantCultureIgnoreCase)
                                                                    , 2, 1);

            AstMainContainerHeaderButtons =
                AstMainContainer?.FirstMatchingNodeFromSubtreeBreadthFirst((kandidaat) =>
                                                                           kandidaat.PyObjTypNameIsContainer() &&
                                                                           string.Equals("headerButtons", kandidaat.Name, StringComparison.InvariantCultureIgnoreCase),
                                                                           2, 1);

            AstMainContainerHeaderButtonsMengeKandidaatButton =
                AstMainContainerHeaderButtons?.MatchingNodesFromSubtreeBreadthFirst((kandidaat) => kandidaat.PyObjTypNameIsButton(),
                                                                                    null, 2, 1);

            AstHeaderButtonClose =
                AstMainContainerHeaderButtonsMengeKandidaatButton?.SuuceFlacMengeAstFrüheste((kandidaat) =>
                                                                                             string.Equals("close", kandidaat.Name ?? kandidaat.Hint, StringComparison.InvariantCultureIgnoreCase),
                                                                                             2, 0);

            AstHeaderButtonMinimize =
                AstMainContainerHeaderButtonsMengeKandidaatButton?.SuuceFlacMengeAstFrüheste((kandidaat) =>
                                                                                             string.Equals("minimize", kandidaat.Name ?? kandidaat.Hint, StringComparison.InvariantCultureIgnoreCase),
                                                                                             2, 0);

            AstMainContainerMain =
                AstMainContainer?.FirstMatchingNodeFromSubtreeBreadthFirst((kandidaat) =>
                                                                           kandidaat.PyObjTypNameIsContainer() &&
                                                                           string.Equals("main", kandidaat.Name, StringComparison.InvariantCultureIgnoreCase),
                                                                           2, 1);

            var container = AstWindow.AlsContainer();

            if (null == container)
            {
                return;
            }

            AstMainContainerHeaderParent =
                AstMainContainer?.FirstMatchingNodeFromSubtreeBreadthFirst((kandidaat) => string.Equals("headerParent", kandidaat.Name, StringComparison.InvariantCultureIgnoreCase), 2, 1);

            AstMainContainerHeaderParentCaptionParent =
                AstMainContainerHeaderParent?.FirstMatchingNodeFromSubtreeBreadthFirst((kandidaat) => string.Equals("captionParent", kandidaat.Name, StringComparison.InvariantCultureIgnoreCase), 3, 1);

            MainContainerHeaderParentCaptionParentLabelAst =
                AstMainContainerHeaderParentCaptionParent?.FirstMatchingNodeFromSubtreeBreadthFirst((kandidaat) => string.Equals("EveLabelSmall", kandidaat.PyObjTypName, StringComparison.InvariantCultureIgnoreCase), 3, 1);

            MainContainerHeaderParentCaptionParentIcon =
                AstMainContainerHeaderParentCaptionParent?.FirstMatchingNodeFromSubtreeBreadthFirst((kandidaat) =>
                                                                                                    (string.Equals("Icon", kandidaat.PyObjTypName, StringComparison.InvariantCultureIgnoreCase) ||
                                                                                                     string.Equals("EveIcon", kandidaat.PyObjTypName, StringComparison.InvariantCultureIgnoreCase)),
                                                                                                    3, 1);

            HeaderCaptionText = MainContainerHeaderParentCaptionParentLabelAst?.SetText ?? AstWindow?.Caption;

            var HeaderButtonsVisible = AstMainContainerHeaderButtons?.VisibleIncludingInheritance;

            var HeaderButton =
                AstMainContainerHeaderButtons
                ?.MatchingNodesFromSubtreeBreadthFirst(k =>
                                                       (k?.VisibleIncludingInheritance ?? false) &&
                                                       k.PyObjTypNameMatchesRegex(HeaderButtonTypeRegex))
                ?.Select(k => k.AlsSprite())
                ?.WhereNotDefault()
                ?.ToArrayIfNotEmpty();

            Ergeebnis = new Window(container)
            {
                isModal = AstWindow?.isModal,
                Caption = HeaderCaptionText,
                HeaderButtonsVisible = HeaderButtonsVisible,
                HeaderButton         = HeaderButton,
            };
        }
Example #3
0
        override public void Berecne()
        {
            base.Berecne();

            var undockButtonNode =
                AstMainContainerMain?.FirstMatchingNodeFromSubtreeBreadthFirst(c =>
                                                                               (c?.PyObjTypName?.RegexMatchSuccessIgnoreCase("UndockBtn") ?? false));

            var undockButtonLabelNode = undockButtonNode?.LargestLabelInSubtree();

            var undockButtonActionNode = undockButtonNode?.MatchingNodesFromSubtreeBreadthFirst(c =>
                                                                                                c?.PyObjAddress != undockButtonNode?.PyObjAddress && (c?.PyObjTypNameIsContainer() ?? false))?.LargestNodeInSubtree();

            var serviceButtonContainerAst =
                AstMainContainer?.FirstMatchingNodeFromSubtreeBreadthFirst(k =>
                                                                           k.PyObjTypNameIsContainer() && k.NameMatchesRegexPatternIgnoreCase("service.*Button"));

            var serviceButton =
                serviceButtonContainerAst?.MatchingNodesFromSubtreeBreadthFirst(k => k.PyObjTypNameIsButton())
                ?.Select(buttonAst => buttonAst?.FirstMatchingNodeFromSubtreeBreadthFirst(spriteAst => spriteAst.PyObjTypNameIsSprite()))
                ?.WhereNotDefault()
                ?.Select(Extension.AlsSprite)
                ?.OrdnungLabel()
                ?.ToArray();

            AgentsPanelAst =
                Optimat.EveOnline.AuswertGbs.Extension.FirstMatchingNodeFromSubtreeBreadthFirst(
                    AstMainContainerMain, (kandidaat) =>
                    kandidaat.PyObjTypNameIsContainer() &&
                    string.Equals("agentsPanel", kandidaat.Name, StringComparison.InvariantCultureIgnoreCase), 2, 1);

            AgentsPanelScrollAst =
                Optimat.EveOnline.AuswertGbs.Extension.FirstMatchingNodeFromSubtreeBreadthFirst(
                    AgentsPanelAst, (kandidaat) =>
                    string.Equals("Scroll", kandidaat.PyObjTypName, StringComparison.InvariantCultureIgnoreCase), 2, 1);

            AgentsPanelScrollAuswert = new ScrollReader(AgentsPanelScrollAst);

            AgentsPanelScrollAuswert.Read();

            AgentsPanelScrollContentAst = AgentsPanelScrollAuswert.ClipperContentNode;

            MengeAgentEntryHeaderKandidaatAst =
                Optimat.EveOnline.AuswertGbs.Extension.MatchingNodesFromSubtreeBreadthFirst(
                    AgentsPanelScrollContentAst, (kandidaat) =>
                    string.Equals("Header", kandidaat.PyObjTypName, StringComparison.InvariantCultureIgnoreCase),
                    null, 2, 1);

            MengeAgentEntryKandidaatAst =
                Optimat.EveOnline.AuswertGbs.Extension.MatchingNodesFromSubtreeBreadthFirst(
                    AgentsPanelScrollContentAst, (kandidaat) =>
                    string.Equals("AgentEntry", kandidaat.PyObjTypName, StringComparison.InvariantCultureIgnoreCase),
                    null, 2, 1);

            if (null != MengeAgentEntryHeaderKandidaatAst)
            {
                MengeAgentEntryHeaderLaageMitText =
                    MengeAgentEntryHeaderKandidaatAst
                    .Select((gbsAst) =>
                {
                    string Text = null;
                    int Laage   = -1;

                    var GbsAstFläce = AuswertGbs.Glob.FläceAusGbsAstInfoMitVonParentErbe(gbsAst);

                    if (null != GbsAstFläce?.Center())
                    {
                        Laage = (int)GbsAstFläce.Value.Center().B;
                    }

                    var Label = Optimat.EveOnline.AuswertGbs.Extension.FirstMatchingNodeFromSubtreeBreadthFirst(
                        gbsAst,
                        (kandidaat) => string.Equals("EveLabelMedium", kandidaat.PyObjTypName, StringComparison.InvariantCultureIgnoreCase),
                        2, 1);

                    if (null != Label)
                    {
                        Text = Label.SetText;
                    }

                    return(new KeyValuePair <int, string>(Laage, Text));
                })
                    .Where((kandidaat) => null != kandidaat.Value)
                    .OrderBy((kandidaat) => kandidaat.Key)
                    .ToArray();
            }

            if (null != MengeAgentEntryKandidaatAst)
            {
                MengeAgentEntryKandidaatAuswert =
                    MengeAgentEntryKandidaatAst
                    .Select((gbsAst) =>
                {
                    var Auswert = new SictAuswertGbsAgentEntry(gbsAst);
                    Auswert.Berecne();
                    return(Auswert);
                }).ToArray();
            }

            if (null != MengeAgentEntryKandidaatAuswert &&
                null != MengeAgentEntryHeaderLaageMitText)
            {
                foreach (var AgentEntryKandidaatAuswert in MengeAgentEntryKandidaatAuswert)
                {
                    if (null == AgentEntryKandidaatAuswert.Ergeebnis)
                    {
                        continue;
                    }

                    var InGbsFläce = AgentEntryKandidaatAuswert.Ergeebnis.Region;

                    if (null == InGbsFläce)
                    {
                        continue;
                    }

                    var Header =
                        MengeAgentEntryHeaderLaageMitText
                        .LastOrDefault((kandidaat) => kandidaat.Key < InGbsFläce.Center().B);
                }
            }

            ButtonUndockLabelText = undockButtonLabelNode?.LabelText();

            var mengeAgentEntry =
                MengeAgentEntryKandidaatAuswert
                ?.Select((auswert) => auswert.Ergeebnis)
                ?.WhereNotDefault()
                ?.OrdnungLabel()
                ?.ToArray();

            var agentEntryHeader =
                MengeAgentEntryHeaderKandidaatAst
                ?.Select(headerAst => headerAst?.LargestLabelInSubtree()?.AsUIElementTextIfTextNotEmpty())
                ?.WhereNotDefault()
                ?.OrdnungLabel()
                ?.ToArray();

            var undockButton =
                undockButtonActionNode?.AsUIElementIfVisible();

            var unDocking =
                (null == ButtonUndockLabelText) ? (bool?)null :
                Regex.Match(ButtonUndockLabelText, "abort undock", RegexOptions.IgnoreCase).Success ||
                Regex.Match(ButtonUndockLabelText, "undocking", RegexOptions.IgnoreCase).Success;

            var aboveServicesLabel =
                base.Ergeebnis?.LabelText
                ?.Where(k => k.Region.Center().B < undockButtonNode?.LaagePlusVonParentErbeLaageB() + undockButtonNode?.GrööseB)
                ?.ToArray();

            var Ergeebnis = new WindowStation(base.Ergeebnis)
            {
                AboveServicesLabel = aboveServicesLabel,
                UndockButton       = undockButton,
                ServiceButton      = serviceButton,
                AgentEntry         = mengeAgentEntry,
                AgentEntryHeader   = agentEntryHeader,
            };

            this.ErgeebnisScpez = Ergeebnis;
        }