Exemplo n.º 1
0
        /// <summary>
        /// Tailmenge der Ast welce kaine andere Ast aus der Menge enthalt.
        /// </summary>
        /// <param name="mengeAstRepr"></param>
        /// <returns></returns>
        static public IEnumerable <T> TailmengeUnterste <T>(
            this IEnumerable <T> mengeAstRepr,
            UINodeInfoInTree uiTree)
            where T : class, IUIElement
        {
            if (null == mengeAstRepr)
            {
                return(null);
            }

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

            return
                (mengeAstRepr
                 ?.Where(astRepr =>
            {
                var Ast = uiTree.FirstNodeWithPyObjAddressFromSubtreeBreadthFirst(astRepr.Id);

                if (null == Ast)
                {
                    return false;
                }

                return !mengeAstRepr.Any(andereAstRepr =>
                {
                    if (null == andereAstRepr)
                    {
                        return false;
                    }

                    if (andereAstRepr == astRepr)
                    {
                        return false;
                    }

                    var AndereAst = uiTree.FirstNodeWithPyObjAddressFromSubtreeBreadthFirst(andereAstRepr.Id);

                    if (AndereAst == Ast)
                    {
                        return false;
                    }

                    return Ast.EnthaltAst(AndereAst);
                });
            }));
        }
Exemplo n.º 2
0
        static public bool AstMitHerkunftAdreseEnthaltAstMitHerkunftAdrese(
            this UINodeInfoInTree suuceWurzel,
            Int64 enthaltendeAstHerkunftAdrese,
            Int64 enthalteneAstHerkunftAdrese)
        {
            if (enthaltendeAstHerkunftAdrese == enthalteneAstHerkunftAdrese)
            {
                return(true);
            }

            if (null == suuceWurzel)
            {
                return(false);
            }

            var enthaltendeAst = suuceWurzel.FirstNodeWithPyObjAddressFromSubtreeBreadthFirst(enthaltendeAstHerkunftAdrese);

            if (null == enthaltendeAst)
            {
                return(false);
            }

            return(enthaltendeAst.EnthaltAstMitHerkunftAdrese(enthalteneAstHerkunftAdrese));
        }
Exemplo n.º 3
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,
            });
        }