Beispiel #1
0
        private void SetupGui()
        {
            // Stolen from base implementation
            var mainBounds = ElementStdBounds.AutosizedMainDialog.WithAlignment(EnumDialogArea.CenterFixed).WithFixedPosition(0.0, 100.0);
            var bkgrBounds = ElementBounds.Fill.WithFixedPadding(GuiStyle.ElementToDialogPadding);
            var listBounds = ElementBounds.Fixed(GuiStyle.ElementToDialogPadding - 2.0, 50.0, 500.0, 580);
            var clipBounds = listBounds.ForkBoundingParent();
            var sideBounds = listBounds.FlatCopy().FixedGrow(6.0).WithFixedOffset(-3.0, -3.0);
            var scrlBounds = sideBounds.CopyOffsetedSibling(3.0 + listBounds.fixedWidth + 7.0).WithFixedWidth(20.0);
            var quitBounds = ElementBounds.FixedSize(0.0, 0.0).FixedUnder(clipBounds, 18.0).WithAlignment(EnumDialogArea.RightFixed).WithFixedPadding(20.0, 4.0).WithFixedAlignmentOffset(2.0, 0.0);

            bkgrBounds.BothSizing = ElementSizing.FitToChildren;
            bkgrBounds.WithChildren(sideBounds, listBounds, scrlBounds, quitBounds);

            // Compose the window
            mainWindow = capi.Gui.CreateCompo("svgTest", mainBounds)
                         .AddShadedDialogBG(bkgrBounds)
                         .AddDialogTitleBar("SVG Sample", OnTitleBarClose)
                         .BeginChildElements(bkgrBounds)
                         .BeginClip(clipBounds)
                         .AddInset(sideBounds, 3)
                         .AddHandbookStackList(listBounds, OnLeftClickListElement, listItems, "stackList")
                         .EndClip()
                         .AddVerticalScrollbar(OnNewScrollbarValueOverviewPage, scrlBounds, "scrollbar")
                         .AddSmallButton(Lang.Get("general-close"), TryClose, quitBounds)
                         .EndChildElements()
                         .Compose();

            mainWindow.GetScrollbar("scrollbar")
            .SetHeights(580, (float)mainWindow.GetHandbookStackList("stackList").insideBounds.fixedHeight);
        }
Beispiel #2
0
        private void OnNewScrollbarvalueDetailPage(float value)
        {
            GuiElementRichtext richtextElem = detailViewGui.GetRichtext("richtext");

            richtextElem.Bounds.fixedY = 3 - value;
            richtextElem.Bounds.CalcWorldBounds();

            browseHistory.Peek().PosY = detailViewGui.GetScrollbar("scrollbar").CurrentYPosition;
        }
Beispiel #3
0
        public void FilterItems()
        {
            string text = currentSearchText?.ToLowerInvariant();

            string[] texts = text == null ? new string[0] : text.Split(new string[] { " or " }, StringSplitOptions.RemoveEmptyEntries).OrderBy(str => str.Length).ToArray();

            List <WeightedHandbookPage> foundPages = new List <WeightedHandbookPage>();

            shownHandbookPages.Clear();

            for (int i = 0; i < allHandbookPages.Count; i++)
            {
                GuiHandbookPage page = allHandbookPages[i];
                if (currentCatgoryCode != null && page.CategoryCode != currentCatgoryCode)
                {
                    continue;
                }
                if (page.IsDuplicate)
                {
                    continue;
                }

                float weight = 1;
                bool  skip   = texts.Length > 0;

                for (int j = 0; j < texts.Length; j++)
                {
                    weight = page.TextMatchWeight(texts[j]);
                    if (weight > 0)
                    {
                        skip = false; break;
                    }
                }
                if (skip)
                {
                    continue;
                }

                foundPages.Add(new WeightedHandbookPage()
                {
                    Page = page, Weight = weight
                });
            }

            foreach (var val in foundPages.OrderByDescending(wpage => wpage.Weight))
            {
                shownHandbookPages.Add(val.Page);
            }

            GuiElementFlatList stacklist = overviewGui.GetFlatList("stacklist");

            stacklist.CalcTotalHeight();
            overviewGui.GetScrollbar("scrollbar").SetHeights(
                (float)listHeight, (float)stacklist.insideBounds.fixedHeight
                );
        }
Beispiel #4
0
        public void FilterItems()
        {
            string text = currentSearchText?.ToLowerInvariant();

            List <WeightedHandbookPage> foundPages = new List <WeightedHandbookPage>();

            shownHandbookPages.Clear();

            for (int i = 0; i < allHandbookPages.Count; i++)
            {
                GuiHandbookPage page = allHandbookPages[i];
                if (currentCatgoryCode != null && page.CategoryCode != currentCatgoryCode)
                {
                    continue;
                }

                float weight = 1;

                if (text != null && text.Length != 0)
                {
                    weight = page.TextMatchWeight(text);
                    if (weight <= 0)
                    {
                        continue;
                    }
                }

                foundPages.Add(new WeightedHandbookPage()
                {
                    Page = page, Weight = weight
                });
            }

            foreach (var val in foundPages.OrderByDescending(wpage => wpage.Weight))
            {
                shownHandbookPages.Add(val.Page);
            }

            GuiElementHandbookList stacklist = overviewGui.GetHandbookStackList("stacklist");

            stacklist.CalcTotalHeight();
            overviewGui.GetScrollbar("scrollbar").SetHeights(
                (float)listHeight, (float)stacklist.insideBounds.fixedHeight
                );
        }
Beispiel #5
0
        public void FilterItemsBySearchText(string text)
        {
            currentSearchText = text;

            text = text.ToLowerInvariant();

            for (int i = 0; i < listElements.Count; i++)
            {
                listElements[i].Visible = text.Length == 0 || listElements[i].MatchesText(text);
            }

            GuiElementHandbookList stacklist = overviewGui.GetHandbookStackList("stacklist");

            stacklist.CalcTotalHeight();
            overviewGui.GetScrollbar("scrollbar").SetHeights(
                (float)listHeight, (float)stacklist.insideBounds.fixedHeight
                );
        }
Beispiel #6
0
        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();
        }
Beispiel #7
0
        void initDetailGui()
        {
            ElementBounds textBounds = ElementBounds.Fixed(9, 45, 500, 30 + listHeight + 17);

            ElementBounds clipBounds  = textBounds.ForkBoundingParent();
            ElementBounds insetBounds = textBounds.FlatCopy().FixedGrow(6).WithFixedOffset(-3, -3);

            ElementBounds scrollbarBounds = clipBounds.CopyOffsetedSibling(textBounds.fixedWidth + 7, -6, 0, 6).WithFixedWidth(20);

            ElementBounds closeButtonBounds = ElementBounds
                                              .FixedSize(0, 0)
                                              .FixedUnder(clipBounds, 2 * 5 + 5)
                                              .WithAlignment(EnumDialogArea.RightFixed)
                                              .WithFixedPadding(20, 4)
                                              .WithFixedAlignmentOffset(-11, 1)
            ;
            ElementBounds backButtonBounds = ElementBounds
                                             .FixedSize(0, 0)
                                             .FixedUnder(clipBounds, 2 * 5 + 5)
                                             .WithAlignment(EnumDialogArea.LeftFixed)
                                             .WithFixedPadding(20, 4)
                                             .WithFixedAlignmentOffset(4, 1)
            ;
            ElementBounds overviewButtonBounds = ElementBounds
                                                 .FixedSize(0, 0)
                                                 .FixedUnder(clipBounds, 2 * 5 + 5)
                                                 .WithAlignment(EnumDialogArea.CenterFixed)
                                                 .WithFixedPadding(20, 4)
                                                 .WithFixedAlignmentOffset(0, 1)
            ;

            ElementBounds bgBounds = insetBounds.ForkBoundingParent(5, 40, 36, 52).WithFixedPadding(GuiStyle.ElementToDialogPadding / 2);

            bgBounds.WithChildren(insetBounds, textBounds, scrollbarBounds, backButtonBounds, closeButtonBounds);

            BrowseHistoryElement curPage = browseHistory.Peek();
            float posY = curPage.PosY;

            // 3. Finally Dialog
            ElementBounds dialogBounds = bgBounds.ForkBoundingParent().WithAlignment(EnumDialogArea.None).WithAlignment(EnumDialogArea.CenterFixed).WithFixedPosition(0, 70);

            //dialogBounds.Code = "dialogbounds";

            RichTextComponentBase[] cmps = curPage.Page.GetPageText(capi, allstacks, OpenDetailPageFor);

            int           curTab;
            ElementBounds tabBounds = ElementBounds.Fixed(-200, 35, 200, 545);

            detailViewGui?.Dispose();
            detailViewGui = capi.Gui
                            .CreateCompo("handbook-detail", dialogBounds)
                            .AddShadedDialogBG(bgBounds, true)
                            .AddDialogTitleBar(Lang.Get("Survival Handbook"), OnTitleBarClose)
                            .AddVerticalTabs(genTabs(out curTab), tabBounds, OnDetailViewTabClicked, "verticalTabs")
                            .BeginChildElements(bgBounds)
                            .BeginClip(clipBounds)
                            .AddInset(insetBounds, 3)
                            .AddRichtext(cmps, textBounds, "richtext")
                            .EndClip()
                            .AddVerticalScrollbar(OnNewScrollbarvalueDetailPage, scrollbarBounds, "scrollbar")
                            .AddSmallButton(Lang.Get("general-back"), OnButtonBack, backButtonBounds)
                            .AddSmallButton(Lang.Get("handbook-overview"), OnButtonOverview, overviewButtonBounds)
                            .AddSmallButton(Lang.Get("general-close"), OnButtonClose, closeButtonBounds)
                            .EndChildElements()
                            .Compose()
            ;

            GuiElementRichtext richtextelem = detailViewGui.GetRichtext("richtext");

            detailViewGui.GetScrollbar("scrollbar").SetHeights(
                (float)listHeight, (float)richtextelem.Bounds.fixedHeight
                );
            detailViewGui.GetScrollbar("scrollbar").CurrentYPosition = posY;
            OnNewScrollbarvalueDetailPage(posY);

            detailViewGui.GetVerticalTab("verticalTabs").SetValue(curTab, false);
        }
Beispiel #8
0
        void initOverviewGui()
        {
            ElementBounds searchFieldBounds = ElementBounds.Fixed(GuiStyle.ElementToDialogPadding - 2, 45, 300, 30);
            ElementBounds stackListBounds   = ElementBounds.Fixed(0, 0, 400, 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.CenterMiddle);

            ElementBounds tabBounds = ElementBounds.Fixed(-130, 35, 130, 545);

            GuiTab[] tabs = new GuiTab[2];
            tabs[0] = new GuiTab()
            {
                DataInt = 0,
                Name    = Lang.Get("Blocks and Items"),
            };
            tabs[1] = new GuiTab()
            {
                DataInt = 1,
                Name    = Lang.Get("Crafting mechanics")
            };

            overviewGui = capi.Gui
                          .CreateCompo("handbook-overview", dialogBounds)
                          .AddShadedDialogBG(bgBounds, true)
                          .AddDialogTitleBar(Lang.Get("Survival Handbook"), OnTitleBarClose)
                          //.AddVerticalTabs(tabs, tabBounds, OnTabClicked, "verticalTabs")
                          .AddTextInput(searchFieldBounds, FilterItemsBySearchText, CairoFont.WhiteSmallishText(), "searchField")
                          .BeginChildElements(bgBounds)
                          .BeginClip(clipBounds)
                          .AddInset(insetBounds, 3)
                          .AddHandbookStackList(stackListBounds, onLeftClickListElement, listElements, "stacklist")
                          .EndClip()
                          .AddVerticalScrollbar(OnNewScrollbarvalueOverviewPage, scrollbarBounds, "scrollbar")
                          .AddSmallButton(Lang.Get("Close Handbook"), OnButtonClose, closeButtonBounds)
                          .EndChildElements()
                          .Compose()
            ;

            overviewGui.GetScrollbar("scrollbar").SetHeights(
                (float)listHeight, (float)overviewGui.GetHandbookStackList("stacklist").insideBounds.fixedHeight
                );
        }