Exemple #1
0
        public YesNoMessageBox(StringId stringId, int depth) : base(DialogPositioning.Center, depth)
        {
            // TODO: Block0 = yes text, Block1 = no text.
            var elements = new VerticalStack(
                new Spacing(0, 5),
                new FixedSizePanel(231, 30, new UiTextBuilder(stringId)),
                new Spacing(0, 5),
                new HorizontalStack(
                    new Spacing(11, 0),
                    new Button(Base.SystemText.MsgBox_Yes)
            {
                DoubleFrame = true
            }
                    .OnClick(() => OnButton(true)),
                    new Spacing(8, 0),
                    new Button(Base.SystemText.MsgBox_No)
            {
                DoubleFrame = true
            }
                    .OnClick(() => OnButton(false)),
                    new Spacing(10, 0)
                    ),
                new Spacing(0, 5)
                );

            var horizontalPad = new HorizontalStack(
                new Spacing(6, 0),
                elements,
                new Spacing(6, 0)
                );

            AttachChild(new DialogFrame(horizontalPad));
        }
        /*---------------------------------------------\
        |/--------\2/---------------------------------\|^5
        ||        | | Take how many items?            ||
        ||ITEM PIC| |                                 ||
        ||1:1 size| |       151x30(inner)             ||
        |\--------/ |                                 ||
        |^6         \---------------------------------/|
        |                         ^5                 7^|
        |    [<] [=======[  3  ]==============] [>]    |
        |                   [    OK    ]   ^4          |
        \---------------------------------------------*///^5
        public ItemQuantityDialog(int depth, StringId stringId, AssetId id, int max, bool useTenths, Action <int> continuation)
            : base(DialogPositioning.Center, depth)
        {
            _continuation = continuation;
            IUiElement itemPic = new UiSpriteElement <AssetId>(id)
            {
                SubId = id.Type == AssetType.ItemGraphics ? id.Id : 0
            };

            var topStack = new HorizontalStack(
                new NonGreedy(new GroupingFrame(itemPic)),
                new Spacing(2, 0),
                new GroupingFrame(new FixedSize(151, 30, new UiTextBuilder(stringId)))
                );

            Func <int, string> formatFunc = useTenths ? (Func <int, string>)FormatTenths : FormatUnits;

            var stack = new VerticalStack(
                topStack,
                new Spacing(0, 5),
                new FixedSize(106, 14, new Slider(() => _quantity, x => _quantity = x, 0, max, formatFunc)),
                new Spacing(0, 4),
                new FixedSize(52, 13,
                              new Button(SystemTextId.MsgBox_OK)
            {
                DoubleFrame = true
            }.OnClick(Close))
                );

            AttachChild(new DialogFrame(new Padding(stack, 6))
            {
                Background = DialogFrameBackgroundStyle.MainMenuPattern
            });
        }
Exemple #3
0
        public override void InitElements()
        {
            base.InitElements();

            SetBackground(0, 0, 0, 0);
            SetAlignment(ItemAlignment.HCenter);
            SetBorder(new Border(Color.DimGray, new CornerRadius(10), 1));
            SetSize(280, 30);

            var layout = new HorizontalStack();

            layout.SetBackground(Color.FromArgb(0, 0, 0, 0));

            var name = new Label(Name);

            name.SetStyle(Styles.GetLabelStyle());
            name.SetTextAlignment(ItemAlignment.Left, ItemAlignment.VCenter);
            name.SetPadding(5);
            name.SetWidth(Name.Length * 8);
            name.SetWidthPolicy(SizePolicy.Fixed);

            _text.SetAlignment(ItemAlignment.Right, ItemAlignment.VCenter);
            _text.SetPadding(10, 0, 5, 0);
            _text.SetMaxWidth(250);
            _text.SetBackground(255, 255, 255, 100);
            _text.SetForeground(Color.White);
            _text.SetBorder(new Border(Color.DimGray, new CornerRadius(10), 1));
            _text.SetWidthPolicy(SizePolicy.Expand);

            AddItem(layout);
            layout.AddItems(name, _text);
        }
        public InventoryMerchantPane(MerchantId id)
        {
            var slotSpans = new IUiElement[InventoryHeight];

            for (int j = 0; j < InventoryHeight; j++)
            {
                var slotsInRow = new IUiElement[InventoryWidth];
                for (int i = 0; i < InventoryWidth; i++)
                {
                    int index = j * InventoryWidth + i;
                    slotsInRow[i] = new LogicalInventorySlot(new InventorySlotId(
                                                                 InventoryType.Merchant,
                                                                 (ushort)id,
                                                                 (ItemSlotId)((int)ItemSlotId.Slot0 + index)));
                }
                slotSpans[j] = new HorizontalStack(slotsInRow);
            }

            var slotStack     = new VerticalStack(slotSpans);
            var slotHalfFrame = new ButtonFrame(slotStack)
            {
                Theme = ButtonTheme.InventoryOuterFrame, Padding = -1
            };
            var header = new Header(new StringId(AssetType.SystemText, 0, (int)SystemTextId.Shop_Merchant));
            var stack  = new VerticalStack(header, slotHalfFrame)
            {
                Greedy = false
            };

            AttachChild(stack);
        }
Exemple #5
0
        public TextDialog(IText text, SmallPortraitId?portraitId = null, int depth = 0) : base(DialogPositioning.Top, depth)
        {
            On <DismissMessageEvent>(_ => Close());
            On <UiLeftClickEvent>(e => { Close(); e.Propagating = false; });
            On <UiRightClickEvent>(e => { Close(); e.Propagating = false; });
            On <CloseWindowEvent>(e => Close());

            var textSection = new UiText(text);
            var padding     = new Padding(textSection, 3, 7);

            UiElement content;

            if (portraitId.HasValue)
            {
                var portrait = new FixedSize(36, 38,
                                             new ButtonFrame(new UiSpriteElement <SmallPortraitId>(portraitId.Value))
                {
                    State   = ButtonState.Pressed,
                    Padding = 0
                });
                content = new HorizontalStack(new CentreContent(portrait), padding);
            }
            else
            {
                content = padding;
            }

            var stack = new FixedWidth(320, content);

            AttachChild(new DialogFrame(stack)
            {
                Background = DialogFrameBackgroundStyle.DarkTint
            });
        }
Exemple #6
0
        public InventoryCharacterPane(PartyCharacterId activeCharacter, Func <InventoryPage> getPage)
        {
            _getPage = getPage;
            var page = _getPage();

            _summaryButton = new Button(SummaryButtonId, "I")
            {
                DoubleFrame = true, IsPressed = page == InventoryPage.Summary
            };
            _statsButton = new Button(StatsButtonId, "II")
            {
                DoubleFrame = true, IsPressed = page == InventoryPage.Stats
            };
            _miscButton = new Button(MiscButtonId, "III")
            {
                DoubleFrame = true, IsPressed = page == InventoryPage.Misc
            };
            var buttonStack = new HorizontalStack(
                new Padding(84, 0),
                new FixedSize(16, 15, _summaryButton),
                new FixedSize(16, 15, _statsButton),
                new FixedSize(16, 15, _miscButton));

            var stack = new VerticalStack(
                new InventoryActivePageSelector(activeCharacter, getPage),
                new Padding(0, 4),
                buttonStack
                );

            Children.Add(stack);
        }
Exemple #7
0
        public static HorizontalStack GetToolbar()
        {
            var toolbar = new HorizontalStack();

            toolbar.SetStyle(Styles.GetToolbarStyle());
            toolbar.SetContentAlignment(ItemAlignment.Bottom);
            return(toolbar);
        }
Exemple #8
0
        public static HorizontalStack GetToolBarLayout()
        {
            HorizontalStack layout = new HorizontalStack();

            layout.SetHeightPolicy(SizePolicy.Fixed);
            layout.SetHeight(40);
            layout.SetBackground(35, 35, 35);
            layout.SetSpacing(3, 0);
            layout.SetPadding(10, 0, 0, 0);
            return(layout);
        }
Exemple #9
0
        public static HorizontalStack GetFixedHorizontalStack(int height)
        {
            HorizontalStack layout = new HorizontalStack();

            layout.SetContentAlignment(ItemAlignment.HCenter);
            layout.SetSpacing(15, 0);
            layout.SetHeightPolicy(SizePolicy.Fixed);
            layout.SetHeight(30);

            return(layout);
        }
Exemple #10
0
        public static HorizontalStack GetToolbarLayout()
        {
            HorizontalStack layout = new HorizontalStack();

            layout.SetContentAlignment(ItemAlignment.HCenter);
            layout.SetAlignment(ItemAlignment.Bottom, ItemAlignment.Left);
            layout.SetSizePolicy(SizePolicy.Expand, SizePolicy.Fixed);
            layout.SetHeight(30);
            layout.SetSpacing(5, 0);
            layout.SetMargin(20, 0, 20, 20);
            return(layout);
        }
Exemple #11
0
        internal static HorizontalStack GetToolbar()
        {
            HorizontalStack toolbar = new HorizontalStack();

            toolbar.SetHeightPolicy(SizePolicy.Fixed);
            toolbar.SetHeight(40);
            toolbar.SetBackground(55, 55, 55);
            toolbar.SetPadding(10, 0, 0, 0);
            toolbar.SetSpacing(5);

            return(toolbar);
        }
Exemple #12
0
        public static HorizontalStack GetHorizontalButtonLayout()
        {
            var layout = new HorizontalStack();

            //layout.SetStyle(Styles.GetHorizontalButtonLayoutStyle());
            layout.SetMinWidth(300);
            layout.SetMaxHeight(50);
            layout.SetContentAlignment(ItemAlignment.HCenter);
            layout.SetSizePolicy(SizePolicy.Expand, SizePolicy.Fixed);
            layout.SetHeight(60);
            layout.SetSpacing(20);
            return(layout);
        }
Exemple #13
0
        public InventoryMidPane(PartyCharacterId activeCharacter, InventoryConfig.PlayerInventory config)
        {
            var background = new FixedPositionStack();

            background.Add(new UiSprite <FullBodyPictureId>((FullBodyPictureId)activeCharacter), 1, -3);
            Children.Add(background);

            var bodyStack = new FixedPositionStack();

            foreach (var bodyPart in config)
            {
                var itemSlotId = bodyPart.Key;
                var position   = bodyPart.Value;
                bodyStack.Add(new InventoryBodyPart(activeCharacter, itemSlotId), (int)position.X, (int)position.Y);
            }

            var frame = new ButtonFrame(bodyStack)
            {
                Theme = new FrameTheme()
            };
            var labelStack = new HorizontalStack(
                new InventoryOffensiveLabel(activeCharacter),
                new InventoryWeightLabel(activeCharacter),
                new InventoryDefensiveLabel(activeCharacter)
                );

            var mainStack = new VerticalStack(
                new Header(new DynamicText(() =>
            {
                var member   = Resolve <IParty>()[activeCharacter];
                var settings = Resolve <ISettings>();
                if (member == null)
                {
                    return(new TextBlock[0]);
                }

                var name = member.Apparent.GetName(settings.Gameplay.Language);
                return(new[] { new TextBlock(name)
                               {
                                   Alignment = TextAlignment.Center
                               } });
            })),
                new HorizontalStack(
                    new Padding(3, 0),
                    frame,
                    new Padding(3, 0)),
                labelStack
                );

            Children.Add(mainStack);
        }
Exemple #14
0
        public override void InitWindow()
        {
            SetParameters(this.GetType().Name, this.GetType().Name, 800, 800, false);
            IsCentered = true;

            TitleBar titleBar = new TitleBar(this.GetType().Name);

            OpenGLLayer ogl = new OpenGLLayer();

            ogl.SetMargin(0, titleBar.GetHeight(), 0, 0);

            HorizontalStack toolbar = Items.GetToolbarLayout();

            ImagedButton btnRotateLeft  = Items.GetImagedButton(EmbeddedImage.ArrowUp, -90);
            ImagedButton btnRotateRight = Items.GetImagedButton(EmbeddedImage.ArrowUp, 90);

            HorizontalSlider zoom = Items.GetSlider();

            ImagedButton btnRestoreView = Items.GetImagedButton(EmbeddedImage.Refresh, 0);

            // adding
            AddItems(titleBar, ogl);
            ogl.AddItems(toolbar);
            toolbar.AddItems(btnRotateLeft, btnRotateRight, zoom, btnRestoreView);

            // assign events
            btnRestoreView.EventMousePress += (sender, args) =>
            {
                ogl.RestoreView();
            };

            btnRotateLeft.EventMousePress += (sender, args) =>
            {
                ogl.Rotate(KeyCode.Left);
            };

            btnRotateRight.EventMousePress += (sender, args) =>
            {
                ogl.Rotate(KeyCode.Right);
            };

            zoom.EventValueChanged += (sender) =>
            {
                ogl.SetZoom(zoom.GetCurrentValue());
            };

            // Set focus
            ogl.SetFocus();
            zoom.SetCurrentValue(3);
        }
Exemple #15
0
        public override void InitWindow()
        {
            SetParameters(
                nameof(GraphView),
                nameof(GraphView),
                800,
                800,
                false);
            SetMinSize(1000, 1000);
            SetBackground(45, 45, 45);

            var title       = UiElements.GetTitleBar();
            var mainLayout  = UiElements.GetMainLayout();
            var buttonsList = UiElements.GetButtonsList();

            _toolbar = UiElements.GetToolbar();
            var leftLayoutItem = UiElements.GetLeftLayoutItem();
            var tabView        = UiElements.GetTabView();
            var logTextArea    = UiElements.GetLogTextArea();

            _imageArea = new ImageItem(
                new Bitmap(
                    "/home/nick/RiderProjects/DiscreteMaths/Graphs/Graphs/notGenerated.png"));
            _imageArea.SetMaxWidth(1024);
            _imageArea.SetMaxHeight(1024);
            _imageArea.KeepAspectRatio(true);

            _tabView     = tabView;
            _buttonsList = buttonsList;
            _logTextArea = logTextArea;
            _logTextArea.SetText("Log Journal" + Environment.NewLine);
            _logTextArea.SetFont(new Font(FontFamily.GenericMonospace, 14, FontStyle.Bold));

            AddItems(title, mainLayout);
            mainLayout.AssignLeftItem(leftLayoutItem);
            mainLayout.AssignRightItem(buttonsList);
            leftLayoutItem.AddItems(tabView, _toolbar);

            tabView.AddTabs(new Tab("Graph"), new Tab("Log"));

            tabView.AddItemToTabByName("Log", _logTextArea);
            tabView.AddItemToTabByName("Graph", _imageArea);

            PopulateButtonsList();
            PopulateToolbar();
        }
Exemple #16
0
        public override void InitElements()
        {
            border  = new Ellipse();
            contact = new Label();
            signal  = new BlankItem();

            //contact image border
            border.SetBackground(114, 137, 208);
            border.SetSize(30, 30);
            border.SetSizePolicy(SizePolicy.Fixed, SizePolicy.Fixed);
            border.SetAlignment(ItemAlignment.VCenter | ItemAlignment.Left);

            //contact name
            contact.SetText(name);
            contact.SetFont(new Font(DefaultsService.GetDefaultFont().FontFamily, 14, FontStyle.Bold));
            contact.SetForeground(Color.White);
            contact.SetSizePolicy(SizePolicy.Expand, SizePolicy.Expand);
            contact.SetMargin(40, 0, 0, 0);
            contact.SetAlignment(ItemAlignment.Top | ItemAlignment.Left);

            //signal
            signal.SetBackground(67, 181, 129);
            signal.SetSize(14, 14);
            signal.SetBorderFill(Color.FromArgb(255, 66, 70, 77));
            signal.SetBorderThickness(2);
            signal.SetBorderRadius(7);
            signal.SetAlignment(ItemAlignment.Left | ItemAlignment.Bottom);
            signal.SetMargin(18, 0, 0, 3);

            //buttons bar
            HorizontalStack bar = new HorizontalStack();

            bar.SetMargin(120, 0, 0, 0);
            bar.SetSpacing(5, 0);

            //adding
            AddItems(border, signal, contact, bar);
            bar.AddItems(
                InfinityItemsBox.GetUserBarButton(),
                InfinityItemsBox.GetUserBarButton(),
                InfinityItemsBox.GetUserBarButton()
                );
        }
Exemple #17
0
        public override void InitWindow()
        {
            // apply new style for ToolTipItem
            InitToolTipStyle();
            // window attr
            SetParameters("MainWindow", "ToolTipExample", 800, 450);
            IsCentered = true;

            // create toolbars
            HorizontalStack toolBar = ItemsFactory.GetToolBarLayout();
            VerticalStack   sideBar = ItemsFactory.GetSideBarLayout();

            // add items to window
            AddItems(
                toolBar,
                sideBar,
                ItemsFactory.GetAreaForPermanentToolTip()
                );

            // 1. add items with standard tooltip to ToolBar
            toolBar.AddItems(
                ItemsFactory.GetTool(DefaultsService.GetDefaultImage(EmbeddedImage.File, EmbeddedImageSize.Size32x32), "Create a new file"),
                ItemsFactory.GetTool(DefaultsService.GetDefaultImage(EmbeddedImage.Folder, EmbeddedImageSize.Size32x32), "Create a new folder"),
                ItemsFactory.GetTool(DefaultsService.GetDefaultImage(EmbeddedImage.RecycleBin, EmbeddedImageSize.Size32x32), "Delete"),
                ItemsFactory.GetTool(DefaultsService.GetDefaultImage(EmbeddedImage.Refresh, EmbeddedImageSize.Size32x32), "Refresh")
                );

            // 2. add items with MyToolTip to sideBar
            sideBar.AddItems(
                ItemsFactory.GetSideTool(DefaultsService.GetDefaultImage(EmbeddedImage.File, EmbeddedImageSize.Size32x32),
                                         new MyToolTip(this, "Create new file:\nCreates a new file in the root directory.")),
                ItemsFactory.GetHorizontalDivider(), // divider
                ItemsFactory.GetSideTool(DefaultsService.GetDefaultImage(EmbeddedImage.Folder, EmbeddedImageSize.Size32x32),
                                         new MyToolTip(this, "Create new folder:\nCreates a new folder in the root directory.")),
                ItemsFactory.GetHorizontalDivider(), // divider
                ItemsFactory.GetSideTool(DefaultsService.GetDefaultImage(EmbeddedImage.RecycleBin, EmbeddedImageSize.Size32x32),
                                         new MyToolTip(this, "Delete:\nDelete selected file entry in root directory.")),
                ItemsFactory.GetHorizontalDivider(), // divider
                ItemsFactory.GetSideTool(DefaultsService.GetDefaultImage(EmbeddedImage.Refresh, EmbeddedImageSize.Size32x32),
                                         new MyToolTip(this, "Refresh:\nUpdates the root directory."))
                );
        }
Exemple #18
0
        public InventorySummaryPage(PartyCharacterId activeMember)
        {
            _activeMember = activeMember;
            var background = new FixedPosition(
                new Rectangle(0, 26, 135, 144),
                new UiSprite <SmallPortraitId>((SmallPortraitId)(int)activeMember));

            var summarySource       = new DynamicText(BuildSummary);
            var pointsSource        = new DynamicText(BuildPoints);
            var pointsHeadingSource = new DynamicText(BuildPointsHeadings);

            var frameTheme = new FrameTheme();
            var stack      =
                new HorizontalStack(
                    new Padding(4, 0),
                    new VerticalStack(
                        new Padding(0, 4),
                        new ButtonFrame(new FixedSize(125, 41, new Text(summarySource)))
            {
                Theme = frameTheme, State = ButtonState.Pressed
            },
                        new Padding(0, 80),
                        new ButtonFrame(
                            new FixedSize(125, 41,
                                          new HorizontalStack(
                                              new Text(pointsHeadingSource),
                                              new Padding(5, 0),
                                              new FixedSize(41, 41,
                                                            new Text(pointsSource)
                                                            ))))
            {
                Theme = frameTheme, State = ButtonState.Pressed
            }
                        ),
                    new Padding(4, 0)
                    );

            Children.Add(background);
            Children.Add(stack);
        }
Exemple #19
0
        public override void InitWindow()
        {
            SetParameters(nameof(CharacterEditor), nameof(CharacterEditor), 1000, 600, false);
            IsCentered = true;

            //title
            TitleBar title = new TitleBar(nameof(CharacterEditor));

            title.SetIcon(
                DefaultsService.GetDefaultImage(EmbeddedImage.User, EmbeddedImageSize.Size32x32), 20, 20);

            //layout
            VerticalStack layout = ItemFactory.GetStandardLayout(title.GetHeight());

            //////////////////////////////////////////////////////////////////////////////
            HorizontalStack   toolbar   = ItemFactory.GetToolbar();
            VerticalSplitArea splitArea = ItemFactory.GetSplitArea();

            BtnGenerate = ItemFactory.GetToolbarButton();
            BtnSave     = ItemFactory.GetToolbarButton();
            NumberCount = ItemFactory.GetSpinItem();
            ItemText.SetStyle(StyleFactory.GetTextAreaStyle());
            //////////////////////////////////////////////////////////////////////////////

            //adding
            AddItems(title, layout);
            layout.AddItems(toolbar, splitArea);
            splitArea.AssignLeftItem(ItemList);
            splitArea.AssignRightItem(ItemText);
            toolbar.AddItems(BtnGenerate, BtnSave, ItemFactory.GetVerticalDivider(), NumberCount);
            BtnGenerate.AddItem(ItemFactory.GetToolbarIcon(
                                    DefaultsService.GetDefaultImage(EmbeddedImage.Refresh, EmbeddedImageSize.Size32x32)
                                    ));
            BtnSave.AddItem(ItemFactory.GetToolbarIcon(
                                DefaultsService.GetDefaultImage(EmbeddedImage.Diskette, EmbeddedImageSize.Size32x32)
                                ));
        }
    public InventorySummaryPage(PartyMemberId activeMember)
    {
        _activeMember = activeMember;

        var summarySource       = new DynamicText(BuildSummary);
        var pointsSource        = new DynamicText(BuildPoints);
        var pointsHeadingSource = new DynamicText(BuildPointsHeadings);

        var stack =
            new HorizontalStack(
                new Spacing(4, 0),
                new VerticalStack(
                    new Spacing(0, 4),
                    new GroupingFrame(new FixedSize(125, 41, new UiText(summarySource))),
                    new Spacing(0, 80),
                    new GroupingFrame(
                        new FixedSize(125, 41,
                                      new HorizontalStack(
                                          new UiText(pointsHeadingSource),
                                          new Spacing(5, 0),
                                          new FixedSize(41, 41,
                                                        new UiText(pointsSource)
                                                        ))))
                    ),
                new Spacing(4, 0)
                );

        _portrait = new UiSpriteElement(SpriteId.None)
        {
            Flags = SpriteFlags.GradientPixels
        };

        AttachChild(new LayerStack(
                        new FixedPosition(new Rectangle(0, 25, 135, 145), _portrait),
                        stack));
    }
    /*---------------- item name (yellow) ---------------\
    |/--------------\ Type        Normal                 |
    ||              | Weight      1100 g                 |
    ||              | Damage      0                      |
    ||   ITEM PIC   | Protection  1                      |
    ||              | -----------------------------------|
    ||              | Can be used by:                    |
    |\--------------/ Pilot               Oqulo Kamulos  |
    |                 Scientist           Warrior        |
    |                 Druid                              |
    |                 Enlightened One                    |
    |                 Technician                         |
    \---------------------------------------------------*/
    public InventoryDetailsDialog(ItemData item) : base(DialogPositioning.Center, 1)
    {
        if (item == null)
        {
            throw new ArgumentNullException(nameof(item));
        }

        var heading = new Header(item.Name);
        var itemPic = new UiSpriteElement(item.Icon)
        {
            SubId = item.IconSubId,
            Flags = SpriteFlags.GradientPixels
        };

        var picFrame = new FixedSize(64, 64, new GroupingFrame(itemPic))
        {
            Position = DialogPositioning.Top
        };

        var attribStack = new HorizontalStack(
            new VerticalStack(
                new UiTextBuilder(Base.SystemText.Examine1_Type).NoWrap(),
                new UiTextBuilder(Base.SystemText.Examine1_Weight).NoWrap(),
                new UiTextBuilder(Base.SystemText.Examine1_Damage).NoWrap(),
                new UiTextBuilder(Base.SystemText.Examine1_Protection).NoWrap()
                ),
            new Spacing(2, 0),
            new VerticalStack(
                new UiTextBuilder(Describe.DescribeItemType(item.TypeId)).NoWrap(),
                new SimpleText($"{item.Weight} g").NoWrap(),                                    // i18n Literal String
                new SimpleText(item.Damage.ToString(CultureInfo.InvariantCulture)).NoWrap(),    // i18n
                new SimpleText(item.Protection.ToString(CultureInfo.InvariantCulture)).NoWrap() // i18n
                )
            );

        var classElements =
            Enum.GetValues(typeof(PlayerClass))
            .Cast <PlayerClass>()
            .Where(x => item.Class.IsAllowed(x))
            .Select(x => (IUiElement) new UiTextBuilder(Describe.DescribePlayerClass(x)).NoWrap());

        var classStack = new HorizontalStack(
            new VerticalStack(classElements.Take(5).ToArray()),
            new Spacing(2, 0),
            new VerticalStack(classElements.Skip(5).ToArray())
            );

        var stack = new VerticalStack(
            heading,
            new Spacing(0, 2),
            new HorizontalStack(
                picFrame,
                new Spacing(4, 0),
                new VerticalStack(
                    attribStack,
                    new Spacing(0, 2),
                    new Divider(CommonColor.Yellow4),
                    new Spacing(0, 2),
                    new UiTextBuilder((TextId)Base.SystemText.Misc_CanBeUsedBy),
                    classStack
                    )
                ),
            new Spacing(0, 2),
            new FixedSize(52, 13,
                          new Button(Base.SystemText.MsgBox_OK)
        {
            DoubleFrame = true
        }.OnClick(Close))
            );

        AttachChild(new DialogFrame(new Padding(stack, 6))
        {
            Background = DialogFrameBackgroundStyle.MainMenuPattern
        });
    }
Exemple #22
0
        public override void InitWindow()
        {
            //window init
            SetParameters(nameof(MainWindow), nameof(MainWindow), 1300, 840, false);
            SetMinSize(500, 300);
            SetBackground(32, 34, 37);

            //title
            title = new TitleBar("Mimic");
            title.SetStyle(Styles.GetTitleBarStyle());

            HorizontalStack h_stack = new HorizontalStack();

            h_stack.SetMargin(0, 22, 0, 0);
            h_stack.SetSpacing(0, 0);

            //left block
            VerticalStack left = new VerticalStack();//70

            left.SetWidth(70);
            left.SetWidthPolicy(SizePolicy.Fixed);
            left.SetPadding(2, 0, 2, 2);
            left.SetSpacing(0, 10);

            SpaceVIL.Rectangle line = new SpaceVIL.Rectangle();
            line.SetBackground(32, 34, 37);
            line.SetSizePolicy(SizePolicy.Expand, SizePolicy.Fixed);
            line.SetHeight(1);
            line.SetShadow(2, 0, 2, Color.FromArgb(150, 0, 0, 0));
            line.SetMargin(8, 0, 8, 0);

            ButtonCore mimic_icon = new ButtonCore("M");

            mimic_icon.SetFont(new Font(DefaultsService.GetDefaultFont().FontFamily, 30, FontStyle.Bold));
            mimic_icon.SetSize(50, 50);
            mimic_icon.SetBackground(114, 137, 208);
            mimic_icon.SetAlignment(ItemAlignment.Top | ItemAlignment.HCenter);
            mimic_icon.SetBorderRadius(new CornerRadius(15));

            SpaceVIL.Rectangle divider = new SpaceVIL.Rectangle();
            divider.SetBackground(47, 49, 54);
            divider.SetSizePolicy(SizePolicy.Expand, SizePolicy.Fixed);
            divider.SetHeight(2);
            divider.SetMargin(15, 0, 15, 0);

            ButtonToggle notes_area_btn = new ButtonToggle("N");

            notes_area_btn.SetFont(new Font(DefaultsService.GetDefaultFont().FontFamily, 30, FontStyle.Bold));
            notes_area_btn.SetSize(50, 50);
            notes_area_btn.SetBackground(Color.Transparent);
            notes_area_btn.SetForeground(100, 101, 105);
            notes_area_btn.SetAlignment(ItemAlignment.Top | ItemAlignment.HCenter);
            notes_area_btn.SetBorderRadius(new CornerRadius(15));
            notes_area_btn.SetBorderFill(100, 101, 105);
            notes_area_btn.SetBorderThickness(1);
            notes_area_btn.EventMouseClick += (sender, args) =>
            {
                if (notes_area_btn.IsToggled())
                {
                    freeNotes.SetVisible(true);
                    conversation.SetVisible(false);
                    freeNotes.GetParent().Update(GeometryEventType.ResizeHeight);
                }
                else
                {
                    freeNotes.SetVisible(false);
                    conversation.SetVisible(true);
                    freeNotes.GetParent().Update(GeometryEventType.ResizeHeight);
                }
            };

            ButtonCore add_btn = new ButtonCore();

            add_btn.SetSize(50, 50);
            add_btn.SetBackground(Color.Transparent);
            add_btn.SetAlignment(ItemAlignment.Top | ItemAlignment.HCenter);
            add_btn.SetBorderRadius(new CornerRadius(25));
            add_btn.SetBorderFill(100, 101, 105);
            add_btn.SetBorderThickness(1);
            add_btn.SetToolTip("Add a new friend.");
            add_btn.EventMouseClick += (sender, args) =>
            {
                AddMenuDialog dialog = new AddMenuDialog();
                dialog.OnCloseDialog += () =>
                {
                    string result = dialog.InputResult;
                    if (!result.Equals(String.Empty))
                    {
                        contacts_bar.AddItem(InfinityItemsBox.GetVisualContact(result, input_message));
                    }
                };
                dialog.Show(this);
            };

            CustomShape plus = new CustomShape();

            plus.SetBackground(100, 101, 105);
            plus.SetSize(20, 20);
            plus.SetAlignment(ItemAlignment.VCenter | ItemAlignment.HCenter);
            plus.SetTriangles(GraphicsMathService.GetCross(20, 20, 2, 0));

            //middleblock
            VerticalStack middle = new VerticalStack();//240

            middle.SetStyle(Styles.GetCommonContainerStyle());
            middle.SetWidth(240);
            middle.SetWidthPolicy(SizePolicy.Fixed);
            middle.SetBackground(47, 49, 54);
            middle.SetBorderRadius(new CornerRadius(6, 0, 6, 0));

            Frame search_bar = new Frame();

            search_bar.SetBorderRadius(new CornerRadius(6, 0, 0, 0));
            search_bar.SetBackground(47, 49, 54);
            search_bar.SetHeight(48);
            search_bar.SetPadding(15, 0, 15, 0);
            search_bar.SetHeightPolicy(SizePolicy.Fixed);
            search_bar.SetShadow(2, 0, 2, Color.FromArgb(150, 0, 0, 0));

            contacts_bar = new ListBox();
            contacts_bar.SetPadding(8, 8, 8, 8);
            contacts_bar.SetBackground(Color.Transparent);
            contacts_bar.SetHScrollBarVisible(ScrollBarVisibility.Never);
            contacts_bar.SetVScrollBarVisible(ScrollBarVisibility.Never);
            contacts_bar.SetSelectionVisible(false);

            Frame user_bar = new Frame();

            user_bar.SetBorderRadius(new CornerRadius(0, 0, 6, 0));
            user_bar.SetBackground(42, 44, 49);
            user_bar.SetHeight(48);
            user_bar.SetPadding(15, 0, 15, 0);
            user_bar.SetHeightPolicy(SizePolicy.Fixed);
            user_bar.SetAlignment(ItemAlignment.Bottom);

            TextEdit search = new TextEdit();

            search.SetPadding(10, 0, 10, 0);
            search.SetFont(DefaultsService.GetDefaultFont(12));
            search.SetForeground(150, 150, 150);
            search.SetSubstrateText("Find or start conversation");
            search.SetSubstrateFontSize(12);
            search.SetSubstrateFontStyle(FontStyle.Regular);
            search.SetSubstrateForeground(100, 100, 100);
            search.SetHeight(32);
            search.SetBackground(37, 39, 43);
            search.SetAlignment(ItemAlignment.HCenter, ItemAlignment.VCenter);
            search.SetBorderRadius(4);
            search.SetBorderThickness(1);
            search.SetBorderFill(32, 34, 37);

            //right block
            VerticalStack right = new VerticalStack();//expand

            right.SetStyle(Styles.GetCommonContainerStyle());
            right.SetSpacing(0, 2);

            HorizontalStack conversation_bar = new HorizontalStack();

            conversation_bar.SetBackground(54, 57, 63);
            conversation_bar.SetHeight(48);
            conversation_bar.SetHeightPolicy(SizePolicy.Fixed);
            conversation_bar.SetPadding(10, 0, 0, 0);
            conversation_bar.SetSpacing(5, 0);
            conversation_bar.SetShadow(2, 0, 2, Color.FromArgb(150, 0, 0, 0));

            freeNotes = new FreeArea();
            freeNotes.SetVisible(false);
            freeNotes.SetBackground(Color.FromArgb(5, 255, 255, 255));

            conversation = new ListBox();
            conversation.SetPadding(4, 4, 4, 4);
            conversation.SetBackground(Color.Transparent);
            conversation.SetHScrollBarVisible(ScrollBarVisibility.Never);
            conversation.GetArea().SetPadding(16, 10, 2, 2);
            conversation.SetSelectionVisible(false);

            VerticalScrollBar vs = conversation.VScrollBar;

            vs.SetWidth(16);
            vs.SetBorderThickness(4);
            vs.SetBorderFill(54, 57, 63);
            vs.SetBorderRadius(new CornerRadius(9));
            vs.SetArrowsVisible(false);
            vs.SetBackground(47, 49, 54);
            vs.SetPadding(0, 0, 0, 0);
            vs.Slider.Track.SetBackground(Color.Transparent);
            vs.Slider.SetBorderThickness(4);
            vs.Slider.SetBorderFill(54, 57, 63);
            vs.Slider.SetBorderRadius(new CornerRadius(9));
            vs.Slider.SetBackground(32, 34, 37, 255);
            vs.Slider.SetMargin(new Indents(0, 0, 0, 0));
            vs.Slider.RemoveAllItemStates();

            HorizontalStack input_bar = new HorizontalStack();

            input_bar.SetHeight(44);
            input_bar.SetHeightPolicy(SizePolicy.Fixed);
            input_bar.SetMargin(20, 10, 20, 30);
            input_bar.SetPadding(15, 0, 8, 0);
            input_bar.SetSpacing(10, 0);
            input_bar.SetBackground(72, 75, 81);
            input_bar.SetBorderRadius(new CornerRadius(6, 6, 6, 6));

            ButtonCore emoji = new ButtonCore("+");

            emoji.SetSize(24, 24);
            emoji.SetBackground(126, 128, 132);
            emoji.SetAlignment(ItemAlignment.VCenter | ItemAlignment.Left);
            emoji.SetBorderRadius(new CornerRadius(12));

            SpaceVIL.Rectangle divider_v = new SpaceVIL.Rectangle();
            divider_v.SetBackground(126, 128, 132);
            divider_v.SetWidth(2);
            divider_v.SetSizePolicy(SizePolicy.Fixed, SizePolicy.Expand);
            divider_v.SetMargin(0, 10, 0, 10);

            input_message = new TextEdit();
            input_message.SetBackground(Color.Transparent);
            input_message.SetForeground(Color.White);
            input_message.SetAlignment(ItemAlignment.VCenter);
            input_message.SetBorderRadius(new CornerRadius(0, 3, 0, 3));
            input_message.SetSubstrateText("Message @Jackson");
            input_message.EventKeyPress += (sender, args) =>
            {
                if (args.Key == KeyCode.Enter)
                {
                    conversation.AddItem(InfinityItemsBox.GetMessage(input_message.GetText()));
                    input_message.Clear();
                }
            };

            ButtonCore add_note = InfinityItemsBox.GetOrdinaryButton();

            add_note.SetForeground(166, 167, 168);
            add_note.SetFont(new Font(DefaultsService.GetDefaultFont().FontFamily, 12, FontStyle.Bold));
            add_note.SetText("Add new note");
            add_note.SetWidth(100);
            add_note.SetShadow(4, 0, 2, Color.FromArgb(150, 0, 0, 0));
            add_note.EventMouseClick += (sender, args) =>
            {
                NoteBlock block = InfinityItemsBox.GetNoteBlock();
                block.SetPosition(100, 100);
                freeNotes.AddItem(block);
            };

            //adding items
            AddItems(
                title,
                h_stack
                );
            h_stack.AddItems(
                left,
                middle,
                right
                );
            left.AddItems(
                line,
                mimic_icon,
                divider,
                notes_area_btn,
                add_btn
                );
            add_btn.AddItem(
                plus
                );
            middle.AddItems(
                search_bar,
                contacts_bar,
                user_bar
                );
            search_bar.AddItems(
                search
                );
            user_bar.AddItems(
                new UserBar("Daniel")
                );
            right.AddItems(
                conversation_bar,
                conversation,
                freeNotes,
                input_bar
                );
            conversation_bar.AddItems(
                add_note,
                InfinityItemsBox.GetOrdinaryButton(),
                InfinityItemsBox.GetOrdinaryButton(),
                InfinityItemsBox.GetOrdinaryButton(),
                InfinityItemsBox.GetOrdinaryButton()
                );
            input_bar.AddItems(
                emoji,
                divider_v,
                input_message
                );
            contacts_bar.AddItems(
                InfinityItemsBox.GetVisualContact("Jackson", input_message),
                InfinityItemsBox.GetVisualContact("Evelyn", input_message),
                InfinityItemsBox.GetVisualContact("Alexander", input_message),
                InfinityItemsBox.GetVisualContact("Matthew", input_message)
                );
        }
        public InventoryRightPane(PartyCharacterId activeCharacter, string exitButtonId, bool showTotalPartyGold)
            : base(Handlers)
        {
            var header = new Header(new StringId(AssetType.SystemText, 0, (int)SystemTextId.Inv_Backpack));

            var slotSpans = new IUiElement[InventoryHeight];

            for (int j = 0; j < InventoryHeight; j++)
            {
                var slotsInRow = new IUiElement[InventoryWidth];
                for (int i = 0; i < InventoryWidth; i++)
                {
                    int index = j * InventoryWidth + i;
                    slotsInRow[i] = new InventoryBackpackSlot(activeCharacter, index);
                }
                slotSpans[j] = new HorizontalStack(slotsInRow);
            }

            var slotStack = new VerticalStack(slotSpans);
            //var slotFrame = new ButtonFrame(slotStack) { State = ButtonState.Pressed, Theme = new FrameTheme() };

            HorizontalStack moneyAndFoodStack;

            if (showTotalPartyGold)
            {
                var money = new Button(GoldSummaryButtonId,
                                       new VerticalStack(
                                           new Padding(64, 0),
                                           new UiSpriteElement <CoreSpriteId>(CoreSpriteId.UiGold)
                {
                    Highlighted = true
                },
                                           new Text("Total party gold $10.0")
                                           )
                {
                    Greedy = false
                }
                                       )
                {
                    IsPressed = true
                };
                moneyAndFoodStack = new HorizontalStack(money);
            }
            else
            {
                var goldSource = new DynamicText(() =>
                {
                    var player = Resolve <IParty>()[activeCharacter];
                    var gold   = player?.Apparent.Inventory.Gold ?? 0;
                    return(new[] { new TextBlock($"{gold / 10}.{gold % 10}") });
                }, x => _version);

                var goldButton = new Button(GoldButtonId,
                                            new VerticalStack(
                                                new Padding(31, 0),
                                                new UiSpriteElement <CoreSpriteId>(CoreSpriteId.UiGold),
                                                new Text(goldSource)
                                                )
                {
                    Greedy = false
                });

                var foodSource = new DynamicText(() =>
                {
                    var player = Resolve <IParty>()[activeCharacter];
                    var food   = player?.Apparent.Inventory.Rations ?? 0;
                    return(new[] { new TextBlock(food.ToString()) });
                }, x => _version);

                var foodButton = new Button(FoodButtonId,
                                            new VerticalStack(
                                                new Padding(31, 0),
                                                new UiSpriteElement <CoreSpriteId>(CoreSpriteId.UiFood),
                                                new Text(foodSource)
                                                )
                {
                    Greedy = false
                });
                moneyAndFoodStack = new HorizontalStack(goldButton, foodButton);
            }

            var stack = new VerticalStack(
                header,
                slotStack, // slotFrame,
                new Padding(0, 2),
                moneyAndFoodStack,
                new Padding(0, 9),
                new InventoryExitButton(exitButtonId)
                )
            {
                Greedy = false
            };

            Children.Add(stack);
        }
Exemple #24
0
        public override void InitElements()
        {
            AssingSize(_languageList, _profileList, _inputModeList);

            HorizontalStack _profileToolbar = new HorizontalStack();

            _profileToolbar.SetHeightPolicy(SizePolicy.Fixed);
            _profileToolbar.SetHeight(30);
            _profileToolbar.SetSpacing(10);

            AddItems(
                _headerTitle,
                _autoLaunchAppCheckBox,
                _startMinimizedCheckBox,
                _autoStartCheckBox,
                Items.GetHorizontalDivider(),
                _headerProfile,
                _profileToolbar,
                _inputModeList,
                Items.GetHorizontalDivider(),
                _headerLocale,
                _languageList
                );

            _profileToolbar.AddItems(_profileList, _addProfile, _copyProfile, _removeProfile);

            // apply settings
            _languageList.SetCurrentIndex(
                Controller.GetLocalizations().Keys.ToList().IndexOf(Controller.GetLanguage()["Locale"]));

            _profileList.SetCurrentIndex(
                Controller.GetAllProfiles().Select(p => p.Name).ToList().IndexOf(Controller.GetProfile().Name));

            _inputModeList.SetCurrentIndex(
                Parse.RepeatTypes(Controller.GetProfile().RepeatMode));

            // events
            _languageList.SelectionChanged += () =>
            {
                Controller.InvokeEventLanguageChanged(_languageList.GetTextSelection());
            };

            _profileList.SelectionChanged += () =>
            {
                Controller.InvokeEventProfileChanged(_profileList.GetTextSelection());
            };

            _inputModeList.SelectionChanged += () =>
            {
                Controller.GetProfile().RepeatMode = (RepeatType)_inputModeList.GetCurrentIndex();
            };

            _autoLaunchAppCheckBox.EventToggle += (value) =>
            {
                Controller.GetSettings().AutoLaunchOnSystemStartUp = value;
            };

            _startMinimizedCheckBox.EventToggle += (value) =>
            {
                Controller.GetSettings().StartAppMinimized = value;
            };

            _autoStartCheckBox.EventToggle += (value) =>
            {
                Controller.GetSettings().AutoStart = value;
            };

            _addProfile.EventMouseClick += (sender, args) =>
            {
                InputDialog input = new InputDialog(Controller.GetLanguage()["InputTitle"], Controller.GetLanguage()["AddButton"]);
                input.SetCancelVisible(false);
                input.OnCloseDialog += () =>
                {
                    if (input.GetResult().Length > 0)
                    {
                        Controller.InvokeEventAddProfile(input.GetResult());
                    }
                };
                input.Show(GetHandler());
            };

            _copyProfile.EventMouseClick += (sender, args) =>
            {
                InputDialog input = new InputDialog(Controller.GetLanguage()["InputTitle"], Controller.GetLanguage()["AddButton"]);
                input.SetCancelVisible(false);
                input.OnCloseDialog += () =>
                {
                    if (input.GetResult().Length > 0)
                    {
                        Controller.InvokeEventAddProfile(input.GetResult(), true);
                    }
                };
                input.Show(GetHandler());
            };

            _removeProfile.EventMouseClick += (sender, args) =>
            {
                MessageItem msg = new MessageItem(
                    Controller.GetLanguage()["MsgDeleteProfile"]
                    + " " + Controller.GetProfile().Name
                    + "\n" + Controller.GetLanguage()["MsgConfirm"],
                    Controller.GetLanguage()["DeleteProfileTitle"]);
                msg.GetOkButton().SetText(Controller.GetLanguage()["DeleteButton"]);
                msg.GetCancelButton().SetText(Controller.GetLanguage()["CancelButton"]);
                msg.OnCloseDialog += () =>
                {
                    if (msg.GetResult())
                    {
                        Controller.InvokeEventDeleteProfile();
                    }
                };
                msg.Show(GetHandler());
            };
        }
Exemple #25
0
        public InventoryRightPane(PartyCharacterId activeCharacter, bool showTotalPartyGold)
        {
            var header = new Header(new StringId(AssetType.SystemText, 0, (int)SystemTextId.Inv_Backpack));

            var slotSpans = new IUiElement[InventoryHeight];

            for (int j = 0; j < InventoryHeight; j++)
            {
                var slotsInRow = new IUiElement[InventoryWidth];
                for (int i = 0; i < InventoryWidth; i++)
                {
                    int index = j * InventoryWidth + i;
                    slotsInRow[i] = new LogicalInventorySlot(new InventorySlotId(
                                                                 InventoryType.Player,
                                                                 (ushort)activeCharacter,
                                                                 (ItemSlotId)((int)ItemSlotId.Slot0 + index)));
                }
                slotSpans[j] = new HorizontalStack(slotsInRow);
            }

            var slotStack     = new VerticalStack(slotSpans);
            var slotHalfFrame = new ButtonFrame(slotStack)
            {
                Theme = ButtonTheme.InventoryOuterFrame, Padding = -1
            };

            HorizontalStack moneyAndFoodStack;

            if (showTotalPartyGold)
            {
                var tf    = Resolve <ITextFormatter>();
                int total = Resolve <IParty>().StatusBarOrder.Sum(x => x.Apparent.Inventory.Gold.Amount);
                var money = new Button(
                    new VerticalStack(
                        new Spacing(64, 0),
                        new UiSpriteElement <CoreSpriteId>(CoreSpriteId.UiGold)
                {
                    Flags = SpriteFlags.Highlight
                },
                        new UiText(tf.Format(SystemTextId.Shop_GoldAll)),
                        new SimpleText($"{total / 10}.{total % 10}")
                        )
                {
                    Greedy = false
                })
                {
                    IsPressed = true
                };
                moneyAndFoodStack = new HorizontalStack(money);
            }
            else
            {
                var goldButton = new LogicalInventorySlot(new InventorySlotId(
                                                              InventoryType.Player,
                                                              (ushort)activeCharacter,
                                                              ItemSlotId.Gold));

                var foodButton = new LogicalInventorySlot(new InventorySlotId(
                                                              InventoryType.Player,
                                                              (ushort)activeCharacter,
                                                              ItemSlotId.Rations));

                moneyAndFoodStack = new HorizontalStack(goldButton, foodButton);
            }

            var stack = new VerticalStack(
                new Spacing(0, 1),
                header,
                new Spacing(0, 1),
                slotHalfFrame,
                new Spacing(0, 2),
                moneyAndFoodStack,
                new Spacing(0, 9),
                new InventoryExitButton().OnClick(() => Raise(new InventoryCloseEvent()))
                )
            {
                Greedy = false
            };

            AttachChild(stack);
        }
Exemple #26
0
    public InventoryChestPane(ChestId id)
    {
        On <InventoryChangedEvent>(e =>
        {
            if (e.Id != new InventoryId(_id))
            {
                return;
            }

            UpdateBackground();
        });

        _id         = id;
        _background = new UiSpriteElement(Base.Picture.OpenChestWithGold);

        var backgroundStack = new FixedPositionStack();

        backgroundStack.Add(_background, 0, 0);
        AttachChild(backgroundStack);

        var slotSpans = new IUiElement[InventoryHeight];

        for (int j = 0; j < InventoryHeight; j++)
        {
            var slotsInRow = new IUiElement[InventoryWidth];
            for (int i = 0; i < InventoryWidth; i++)
            {
                int index = j * InventoryWidth + i;
                slotsInRow[i] = new LogicalInventorySlot(new InventorySlotId(_id, (ItemSlotId)((int)ItemSlotId.Slot0 + index)));
            }
            slotSpans[j] = new HorizontalStack(slotsInRow);
        }

        var slotStack     = new VerticalStack(slotSpans);
        var slotHalfFrame = new ButtonFrame(slotStack)
        {
            Theme = ButtonTheme.InventoryOuterFrame, Padding = -1
        };
        var goldButton = new LogicalInventorySlot(new InventorySlotId(_id, ItemSlotId.Gold));
        var foodButton = new LogicalInventorySlot(new InventorySlotId(_id, ItemSlotId.Rations));

        var takeAllButton =
            new Button(
                (UiElement) new UiTextBuilder(TextId.From(Base.UAlbionString.TakeAll)).Center()
                ).OnClick(() => Raise(new InventoryTakeAllEvent(_id)));

        var header            = new Header(Base.SystemText.Chest_Chest);
        var moneyAndFoodStack = new HorizontalStack(goldButton, takeAllButton, foodButton);

        var stack = new VerticalStack(
            header,
            slotHalfFrame,
            new Spacing(0, 78),
            moneyAndFoodStack
            )
        {
            Greedy = false
        };

        AttachChild(stack);
    }
Exemple #27
0
        public override void InitElements()
        {
            base.InitElements();
            Color   gray   = Color.FromArgb(150, 150, 150);
            Indents margin = new Indents();
            int     width  = 120;

            _win.SetWidth(width);
            _win.SetMargin(margin);
            _win.SetBackground(gray);

            _lMouse.SetWidth(width);
            _lMouse.SetMargin(margin);
            _lMouse.SetBackground(gray);

            _rMouse.SetWidth(width);
            _rMouse.SetMargin(margin);
            _rMouse.SetBackground(gray);

            _mMouse.SetWidth(width);
            _mMouse.SetMargin(margin);
            _mMouse.SetBackground(gray);

            _apply.SetAlignment(ItemAlignment.Bottom, ItemAlignment.Right);
            _apply.SetMargin(0, 0, 20, 20);

            _deleteLast.IsFocusable = false;
            _win.IsFocusable        = false;
            _lMouse.IsFocusable     = false;
            _rMouse.IsFocusable     = false;
            _mMouse.IsFocusable     = false;

            HorizontalStack textFieldlayout = Factory.Items.GetFixedHorizontalStack(30);

            textFieldlayout.SetMargin(100, 100, 100, 0);

            HorizontalStack toolbarlayout = Factory.Items.GetFixedHorizontalStack(30);

            toolbarlayout.SetMargin(40, 0, 40, 100);
            toolbarlayout.SetAlignment(ItemAlignment.Bottom, ItemAlignment.Left);
            toolbarlayout.SetSpacing(6, 0);

            Frame header = new Frame();

            header.SetHeightPolicy(SizePolicy.Fixed);
            header.SetHeight(40);
            header.SetBackground(Factory.Palette.ExclusiveDark);

            Window.SetMinSize(600, 300);
            Window.AddItems(header, _close, textFieldlayout, toolbarlayout, _apply);

            textFieldlayout.AddItems(_bind, _deleteLast);

            toolbarlayout.AddItems(_win, _lMouse, _rMouse, _mMouse);

            _deleteLast.EventMouseClick += (sender, args) =>
            {
                if (_keySequence.Count > 0)
                {
                    _keySequence.RemoveAt(_keySequence.Count - 1);
                    SetShortcutSequence();
                }
            };

            _win.EventMouseClick += (sender, args) =>
            {
                OnKeyDown(HardwareButtons.LeftSuper);
            };
            _lMouse.EventMouseClick += (sender, args) =>
            {
                OnKeyDown(HardwareButtons.MouseLeft);
            };
            _rMouse.EventMouseClick += (sender, args) =>
            {
                OnKeyDown(HardwareButtons.MouseRight);
            };
            _mMouse.EventMouseClick += (sender, args) =>
            {
                OnKeyDown(HardwareButtons.MouseMiddle);
            };

            _bind.SetEditable(false);
            _bind.EventKeyPress += (sender, args) =>
            {
                OnKeyDown((HardwareButtons)args.Key);
            };

            _close.EventMouseClick += (sender, args) =>
            {
                Close();
            };

            _apply.EventMouseClick += (sender, args) =>
            {
                Result = _bind.GetText();
                Close();
            };
        }