/// <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); }); })); }
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)); }
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, }); }