Exemplo n.º 1
0
        static public Container AlsContainer(
            this UINodeInfoInTree containerNode,
            bool treatIconAsSprite   = false,
            RectInt?regionConstraint = null)
        {
            if (!(containerNode?.VisibleIncludingInheritance ?? false))
            {
                return(null);
            }

            var MengeKandidaatInputTextAst =
                containerNode?.MatchingNodesFromSubtreeBreadthFirst(k =>
                                                                    k.PyObjTypNameMatchesRegexPatternIgnoreCase("SinglelineEdit|QuickFilterEdit"));

            var ListeInputText =
                MengeKandidaatInputTextAst
                ?.Select(textBoxAst =>
            {
                var LabelAst = textBoxAst.LargestLabelInSubtree();

                if (null == LabelAst)
                {
                    return(null);
                }

                var LabelText = LabelAst?.LabelText();

                return(new UIElementInputText(textBoxAst.AsUIElementIfVisible(), LabelText));
            })
                ?.WhereNotDefault()
                ?.OrdnungLabel()
                ?.ToArrayIfNotEmpty();

            var ListeButton =
                containerNode?.ExtraktMengeButtonLabelString()?.OrdnungLabel()
                ?.ToArrayIfNotEmpty();

            var ListeButtonAst = ListeButton?.Select(button => containerNode.FirstNodeWithPyObjAddressFromSubtreeBreadthFirst(button.Id))?.ToArray();

            var ListeTextBoxAst = ListeInputText?.Select(textBox => containerNode.FirstNodeWithPyObjAddressFromSubtreeBreadthFirst(textBox.Id))?.ToArray();

            var LabelContainerAussclus = new[] { ListeButtonAst, ListeTextBoxAst }.ConcatNullable().ToArray();

            var ListeLabelText =
                containerNode?.ExtraktMengeLabelString()
                ?.WhereNitEnthalte(LabelContainerAussclus)
                ?.OrdnungLabel()
                ?.ToArrayIfNotEmpty();

            var setSprite =
                containerNode.SetSpriteFromChildren(treatIconAsSprite)
                ?.OrdnungLabel()
                ?.ToArrayIfNotEmpty();

            var baseElement = containerNode.AsUIElementIfVisible();

            if (regionConstraint.HasValue)
            {
                baseElement = baseElement.WithRegionConstrainedToIntersection(regionConstraint.Value);
            }

            return(new Container(baseElement)
            {
                ButtonText = ListeButton,
                InputText = ListeInputText,
                LabelText = ListeLabelText,
                Sprite = setSprite,
            });
        }