public void initOverviewGui() { ElementBounds searchFieldBounds = ElementBounds.Fixed(GuiStyle.ElementToDialogPadding - 2, 45, 300, 30); ElementBounds stackListBounds = ElementBounds.Fixed(0, 0, 500, listHeight).FixedUnder(searchFieldBounds, 5); ElementBounds clipBounds = stackListBounds.ForkBoundingParent(); ElementBounds insetBounds = stackListBounds.FlatCopy().FixedGrow(6).WithFixedOffset(-3, -3); ElementBounds scrollbarBounds = insetBounds.CopyOffsetedSibling(3 + stackListBounds.fixedWidth + 7).WithFixedWidth(20); ElementBounds closeButtonBounds = ElementBounds .FixedSize(0, 0) .FixedUnder(clipBounds, 2 * 5 + 8) .WithAlignment(EnumDialogArea.RightFixed) .WithFixedPadding(20, 4) .WithFixedAlignmentOffset(2, 0) ; // 2. Around all that is 10 pixel padding ElementBounds bgBounds = ElementBounds.Fill.WithFixedPadding(GuiStyle.ElementToDialogPadding); bgBounds.BothSizing = ElementSizing.FitToChildren; bgBounds.WithChildren(insetBounds, stackListBounds, scrollbarBounds, closeButtonBounds); // 3. Finally Dialog ElementBounds dialogBounds = ElementStdBounds.AutosizedMainDialog.WithAlignment(EnumDialogArea.None).WithAlignment(EnumDialogArea.CenterFixed).WithFixedPosition(0, 70); ElementBounds tabBounds = ElementBounds.Fixed(-200, 35, 200, 545); int curTab; ElementBounds backButtonBounds = ElementBounds .FixedSize(0, 0) .FixedUnder(clipBounds, 2 * 5 + 5) .WithAlignment(EnumDialogArea.LeftFixed) .WithFixedPadding(20, 4) .WithFixedAlignmentOffset(-6, 3) ; overviewGui = capi.Gui .CreateCompo("handbook-overview", dialogBounds) .AddShadedDialogBG(bgBounds, true) .AddDialogTitleBar(Lang.Get("Survival Handbook"), OnTitleBarClose) .AddVerticalTabs(genTabs(out curTab), tabBounds, OnTabClicked, "verticalTabs") .AddTextInput(searchFieldBounds, FilterItemsBySearchText, CairoFont.WhiteSmallishText(), "searchField") .BeginChildElements(bgBounds) .BeginClip(clipBounds) .AddInset(insetBounds, 3) .AddHandbookStackList(stackListBounds, onLeftClickListElement, shownHandbookPages, "stacklist") .EndClip() .AddVerticalScrollbar(OnNewScrollbarvalueOverviewPage, scrollbarBounds, "scrollbar") .AddSmallButton(Lang.Get("general-back"), OnButtonBack, backButtonBounds, EnumButtonStyle.Normal, EnumTextOrientation.Center, "backButton") .AddSmallButton(Lang.Get("Close Handbook"), OnButtonClose, closeButtonBounds) .EndChildElements() .Compose() ; overviewGui.GetScrollbar("scrollbar").SetHeights( (float)listHeight, (float)overviewGui.GetHandbookStackList("stacklist").insideBounds.fixedHeight ); overviewGui.GetTextInput("searchField").SetPlaceHolderText("Search..."); overviewGui.GetVerticalTab("verticalTabs").SetValue(curTab, false); overviewGui.FocusElement(overviewGui.GetTextInput("searchField").TabIndex); if (curTab == 0) { currentCatgoryCode = null; } else { currentCatgoryCode = categoryCodes[curTab - 1]; } FilterItems(); }