virtual public void Berecne() { var Container = EntryAst.AlsContainer(regionConstraint: RegionConstraint); if (null == Container) return; LabelAst = EntryAst.LargestLabelInSubtree(); FläceFürMenuAst = LabelAst; LabelGrenzeLinx = (int?)LabelAst.LaagePlusVonParentErbeLaageA(); /* * 2014.11.08 * * Änderung für Release "Rhea": * "PyObjTypName": "GlowSprite" * ExpanderAst = EntryAst.SuuceFlacMengeAstFrüheste( (Kandidaat) => AuswertGbs.Glob.GbsAstTypeIstEveIcon(Kandidaat) && Regex.Match(Kandidaat.Name ?? "", "expander", RegexOptions.IgnoreCase).Success); * */ ExpanderAst = EntryAst.FirstMatchingNodeFromSubtreeBreadthFirst( (kandidaat) => (AuswertGbs.Glob.GbsAstTypeIstEveIcon(kandidaat) || AuswertGbs.Glob.GbsAstTypeIstSprite(kandidaat)) && Regex.Match(kandidaat.Name ?? "", "expander", RegexOptions.IgnoreCase).Success); IstGroup = ((null == ExpanderAst) ? null : ExpanderAst.VisibleIncludingInheritance) ?? false; var MengeIconOderSpriteAst = EntryAst.MatchingNodesFromSubtreeBreadthFirst( (kandidaat) => (AuswertGbs.Glob.GbsAstTypeIstEveIcon(kandidaat) || Regex.Match(kandidaat.PyObjTypName ?? "", "sprite", RegexOptions.IgnoreCase).Success) && (kandidaat.VisibleIncludingInheritance ?? false)); IstItem = (!MengeIconOderSpriteAst.IsNullOrEmpty() || null != LabelAst) && !(IstGroup ?? false); var MengeIconOderSpriteGrenzeLinx = MengeIconOderSpriteAst ?.Select((iconAst) => iconAst.LaagePlusVonParentErbeLaageA()) ?.Where((kandidaat) => kandidaat.HasValue) ?.Select((iconAstGrenzeLinx) => iconAstGrenzeLinx.Value) ?.ToArray(); if (!MengeIconOderSpriteGrenzeLinx.IsNullOrEmpty()) InhaltGrenzeLinx = (int)Math.Min(InhaltGrenzeLinx ?? int.MaxValue, MengeIconOderSpriteGrenzeLinx.Min()); if (LabelGrenzeLinx.HasValue) InhaltGrenzeLinx = (int)Math.Min(InhaltGrenzeLinx ?? int.MaxValue, LabelGrenzeLinx.Value); var ListEntryInZeleTrenung = this.ListEntryInZeleTrenung(); if (ListEntryTrenungZeleTypEnum.Ast == ListEntryInZeleTrenung) { // genuzt z.B. für "OverviewScrollEntry". var EntryListeZeleLabel = EntryAst.ExtraktMengeLabelString()?.ToArray(); ListeZuHeaderZeleString = EntryListeZeleLabel ?.Select(zeleLabel => new KeyValuePair<IColumnHeader, string>( HeaderBestFit(zeleLabel, ListeColumnHeader), zeleLabel?.Text)) ?.ToArray(); } else { Label = LabelAst.AsUIElementTextIfTextNotEmpty(); var Bescriftung = Label?.Text; if (null != Bescriftung) { if (!(IstGroup ?? false)) { ItemListeZeleTextMitFormat = Bescriftung.Split(new string[] { "<t>" }, StringSplitOptions.None); var ItemListeZeleText = ItemListeZeleTextMitFormat ?.Select((zeleTextMitFormat) => ZeleTextAusZeleTextMitFormat(zeleTextMitFormat)) ?.ToArray(); ListeZuHeaderZeleString = ItemListeZeleText ?.Select((zeleText, index) => new KeyValuePair<IColumnHeader, string>( ListeColumnHeader?.FirstOrDefault(kandidaat => kandidaat.ColumnIndex == index), zeleText)) ?.ToArray(); } } } var backgroundColorNode = EntryAst?.FirstMatchingNodeFromSubtreeBreadthFirst(node => (node?.PyObjTypNameMatchesRegexPatternIgnoreCase("fill") ?? false) && (node?.Name?.RegexMatchSuccessIgnoreCase("bgColor") ?? false)); var ListBackgroundColor = EntryAst?.BackgroundList ?.Select(background => background.Color.AlsColorORGB()) .ConcatNullable(new[] { backgroundColorNode?.Color.AlsColorORGB() }) ?.WhereNotDefault() ?.ToArrayIfNotEmpty(); var SetSprite = EntryAst.SetSpriteFromChildren() ?.ToArrayIfNotEmpty(); ErgeebnisListEntry = new ListEntry(Container) { ContentBoundLeft = InhaltGrenzeLinx, ListColumnCellLabel = ListeZuHeaderZeleString, GroupExpander = ExpanderAst?.AsUIElementIfVisible(), IsGroup = IstGroup, IsExpanded = ExpanderSpriteIsExpanded(ExpanderAst), IsSelected = EntryAst.isSelected, ListBackgroundColor = ListBackgroundColor, SetSprite = SetSprite, }; }