コード例 #1
0
        public void HorizontalAlignTest()
        {
            var renderer = Substitute.For <NullRenderer>();  // mock the renderer
            var hardware = new NullHardware(1024, 768);
            var stage    = new GuiStage();

            var box = new VBox();

            stage.AddChild(box);   // makes a size of 60x40 just through padding

            var spacerNone = new Spacer(100, 100).SetHAlign(HorizontalAlign.None);

            box.AddChild(spacerNone);
            var spacerLeft = new Spacer(100, 100).SetHAlign(HorizontalAlign.Left);

            box.AddChild(spacerLeft);
            var spacerCenter = new Spacer(100, 100).SetHAlign(HorizontalAlign.Center);

            box.AddChild(spacerCenter);
            var spacerRight = new Spacer(100, 100).SetHAlign(HorizontalAlign.Right);

            box.AddChild(spacerRight);

            // we add one child that will free up some width
            box.AddChild(new Spacer(400, 100));

            stage.CalculateLayout(hardware);     // layout

            // since we have not set a height on the hBox yet we expect all children to be not vertically aligned
            Assert.That(box.GetLayout().GetCalculatedWidth(), Is.EqualTo(400));
            Assert.That(box.GetLayout().GetCalculatedContentWidth(), Is.EqualTo(400));

            Assert.That(spacerNone.GetLayoutProcessingData().AbsoluteGeometry.Left, Is.EqualTo(0));         // NONE stays on top
            Assert.That(spacerLeft.GetLayoutProcessingData().AbsoluteGeometry.Left, Is.EqualTo(0));         // TOP stays on top
            Assert.That(spacerCenter.GetLayoutProcessingData().AbsoluteGeometry.Left, Is.EqualTo(150));     // MIDDLE 400 / 2 - 100 / 2
            Assert.That(spacerRight.GetLayoutProcessingData().AbsoluteGeometry.Left, Is.EqualTo(300));      // BOTTOM 400 - 100

            // new we set a height and then we expect the children to be aligned
            box.SetWidth(800);
            stage.CalculateLayout(hardware);     // layout

            Assert.That(box.GetLayout().GetCalculatedWidth(), Is.EqualTo(800));
            Assert.That(box.GetLayout().GetCalculatedContentWidth(), Is.EqualTo(400));

            Assert.That(spacerNone.GetLayoutProcessingData().AbsoluteGeometry.Left, Is.EqualTo(0));         // NONE stays on top
            Assert.That(spacerLeft.GetLayoutProcessingData().AbsoluteGeometry.Left, Is.EqualTo(0));         // TOP stays on top
            Assert.That(spacerCenter.GetLayoutProcessingData().AbsoluteGeometry.Left, Is.EqualTo(350));     // MIDDLE 800 / 2 - 100 / 2
            Assert.That(spacerRight.GetLayoutProcessingData().AbsoluteGeometry.Left, Is.EqualTo(700));      // BOTTOM (800 - 100)
        }
コード例 #2
0
        public void VerticalLayoutTest()
        {
            var renderer = Substitute.For <NullRenderer>();  // mock the renderer
            var hardware = new NullHardware(1024, 768);
            var stage    = new GuiStage();

            var hBox = new VBox().SetX(10).SetY(20).SetPadding(10, 20, 30, 40); // makes a size of 60x40 just through padding

            stage.AddChild(hBox);
            stage.CalculateLayout(hardware);     // layout

            Assert.That(hBox.GetLayoutProcessingData().AbsoluteGeometry, Is.EqualTo(new Rectangle(10, 20, 60, 40)));

            // add a child
            var spacer1 = new Spacer(200, 100);

            hBox.AddChild(spacer1);          // should increase the size by 200x100
            stage.CalculateLayout(hardware); // layout

            Assert.That(hBox.GetLayoutProcessingData().AbsoluteGeometry, Is.EqualTo(new Rectangle(10, 20, 260, 140)));
            // check the absolute position of spacer1
            Assert.That(spacer1.GetLayoutProcessingData().AbsoluteGeometry, Is.EqualTo(new Rectangle(50, 30, 200, 100)));

            // add another child
            var spacer2 = new Spacer(300, 200);

            hBox.AddChild(spacer2);          // should increase the size by 200x100
            stage.CalculateLayout(hardware); // layout

            Assert.That(hBox.GetLayoutProcessingData().AbsoluteGeometry, Is.EqualTo(new Rectangle(10, 20, 360, 340)));
            // check the absolute position of spacer1
            Assert.That(spacer1.GetLayoutProcessingData().AbsoluteGeometry, Is.EqualTo(new Rectangle(50, 30, 200, 100)));
            // check the absolute position of spacer1
            Assert.That(spacer2.GetLayoutProcessingData().AbsoluteGeometry, Is.EqualTo(new Rectangle(50, 130, 300, 200)));

            // check setting the spacing
            hBox.SetSpacing(100);
            stage.CalculateLayout(hardware);     // layout

            Assert.That(hBox.GetLayoutProcessingData().AbsoluteGeometry, Is.EqualTo(new Rectangle(10, 20, 360, 440)));
            // check the absolute position of spacer1
            Assert.That(spacer1.GetLayoutProcessingData().AbsoluteGeometry, Is.EqualTo(new Rectangle(50, 30, 200, 100)));
            // check the absolute position of spacer1
            Assert.That(spacer2.GetLayoutProcessingData().AbsoluteGeometry, Is.EqualTo(new Rectangle(50, 230, 300, 200)));
        }
コード例 #3
0
ファイル: ContactList.cs プロジェクト: PeekAndPoke/unitylibs
        public void UpdateContacts(List <Contact> contacts, Contact currentContact)
        {
            ContactsContainer.RemoveAllChildren();

            foreach (var contact in contacts)
            {
                var contactToUse = contact;

                ContactsContainer.AddChild(
                    new Label(270, 20, (contact == currentContact ? "X " : "   ") + contact.FirstName + " " + contact.LastName)
                    .OnClick(e => SigContactSelected.Dispatch(contactToUse))
                    );
            }
        }
コード例 #4
0
        public ScrollViewLayout() : base(300, 400)
        {
            SetPadding(15, 15, 15, 15);

            VBox vbox;

            AddChild(
                vbox = new VBox()
                       .AddChild(
                    new Label(400, 22, "Scrollview with a vbox in it")
                    )
                );

            for (var i = 0; i < 5000; i++)
            {
                var a = i;
                vbox.AddChild(
                    new Button(100, 22, "Button " + i)
                    .OnClick(e => Debug.Log("button " + a))
                    );
            }
        }