Esempio n. 1
0
            public GDEBreadcrumb(T value)
                : base(value)
            {
                AutoSizeAxes = Axes.X;

                AddRangeInternal(new Drawable[]
                {
                    new Container
                    {
                        Masking          = true,
                        CornerRadius     = 5,
                        AutoSizeAxes     = Axes.X,
                        RelativeSizeAxes = Axes.Y,
                        Children         = new Drawable[]
                        {
                            background = new Box
                            {
                                RelativeSizeAxes = Axes.Both,
                                Colour           = GDEColors.FromHex("1a1a1a")
                            },
                            text = new SpriteText
                            {
                                Origin  = Anchor.CentreLeft,
                                Anchor  = Anchor.CentreLeft,
                                Margin  = new MarginPadding(3),
                                Padding = new MarginPadding(5),
                                Text    = value.ToString(),
                            }
                        }
                    }
                });
            }
Esempio n. 2
0
            private void load(AudioManager audio)
            {
                BackgroundColour      = Color4.Transparent;
                BackgroundColourHover = GDEColors.FromHex(@"172023");

                UpdateTextColor();
            }
Esempio n. 3
0
            public DrawableGDEMenuItem(MenuItem item)
                : base(item)
            {
                BackgroundColour      = Color4.Transparent;
                BackgroundColourHover = GDEColors.FromHex(@"172023");

                UpdateTextColor();
            }
Esempio n. 4
0
        public GDEButton()
            : base()
        {
            Height       = 30;
            CornerRadius = 3;
            Masking      = true;

            BackgroundColour = GDEColors.FromHex("303030");
        }
Esempio n. 5
0
            public SubMenu()
                : base(Direction.Vertical)
            {
                OriginPosition         = new Vector2(5, 1);
                ItemsContainer.Padding = new MarginPadding {
                    Top = 5, Bottom = 5
                };

                BackgroundColour = GDEColors.FromHex("333");
            }
Esempio n. 6
0
            public ObjectButton(int objectID = 1)
            {
                BackgroundColour = GDEColors.FromHex("333");

                Add(Object = new ObjectBase(new GeneralObject(objectID))
                {
                    Depth      = -1,
                    Selectable = false
                });
            }
Esempio n. 7
0
        public EditorMenuBar()
            : base(Direction.Horizontal, true)
        {
            RelativeSizeAxes = Axes.X;

            MaskingContainer.CornerRadius = 0;
            ItemsContainer.Padding        = new MarginPadding {
                Left = 100
            };
            BackgroundColour = GDEColors.FromHex("111");
        }
Esempio n. 8
0
        public LevelCard()
        {
            Children = new Drawable[]
            {
                hoverBox = new Box
                {
                    RelativeSizeAxes = Axes.Both,
                    Colour           = GDEColors.FromHex("161616")
                },
                selectionBar = new Box
                {
                    RelativeSizeAxes = Axes.Y,
                    Size             = new Vector2(5, 1f),
                    Colour           = GDEColors.FromHex("202020")
                },
                new FillFlowContainer
                {
                    Direction        = FillDirection.Vertical,
                    RelativeSizeAxes = Axes.Both,
                    Margin           = new MarginPadding
                    {
                        Left = 10
                    },
                    Children = new Drawable[]
                    {
                        levelName = new SpriteText
                        {
                            Text     = Level.Value?.Name ?? "Unknown Name",
                            TextSize = 30
                        },
                        levelSong = new SpriteText
                        {
                            Text     = "SongAuthor - SongTitle",
                            TextSize = 20,
                            Colour   = GDEColors.FromHex("aaaaaa")
                        }
                    }
                },
                levelLength = new SpriteText
                {
                    Anchor   = Anchor.BottomRight,
                    Origin   = Anchor.BottomRight,
                    Margin   = new MarginPadding(5),
                    Text     = "Loading...",
                    TextSize = 20,
                    Colour   = GDEColors.FromHex("aaaaaa")
                }
            };

            Selected.ValueChanged += OnSelected;
            Level.ValueChanged    += OnLevelChange;
        }
Esempio n. 9
0
            public DrawableEditorBarMenuItem(MenuItem item)
                : base(item)
            {
                Anchor = Anchor.CentreLeft;
                Origin = Anchor.CentreLeft;

                StateChanged += OnStateChanged;

                ForegroundColour      = GDEColors.FromHex("8BB9FE");
                BackgroundColour      = Color4.Transparent;
                ForegroundColourHover = Color4.White;
                BackgroundColourHover = GDEColors.FromHex("333");
            }
Esempio n. 10
0
        public LevelTab()
        {
            RelativeSizeAxes = Axes.Both;

            colours = new ColourInfo
            {
                TopLeft     = GDEColors.FromHex("353535"),
                TopRight    = GDEColors.FromHex("353535"),
                BottomLeft  = GDEColors.FromHex("272727"),
                BottomRight = GDEColors.FromHex("272727")
            };

            Children = new Drawable[]
            {
                new Container
                {
                    Masking          = true,
                    CornerRadius     = 5,
                    RelativeSizeAxes = Axes.Both,
                    Scale            = new Vector2(1f, 1.1f),
                    Position         = new Vector2(1f, -5f),
                    Children         = new Drawable[]
                    {
                        tab = new Box
                        {
                            RelativeSizeAxes = Axes.Both,
                            Origin           = Anchor.Centre,
                            Anchor           = Anchor.Centre,
                            Colour           = colours
                        },
                        hoverLayer = new Box
                        {
                            RelativeSizeAxes = Axes.Both,
                            Origin           = Anchor.Centre,
                            Anchor           = Anchor.Centre,
                            Alpha            = 0
                        },
                        Text = new SpriteText
                        {
                            Origin = Anchor.Centre,
                            Anchor = Anchor.Centre,
                        }
                    }
                }
            };
        }
Esempio n. 11
0
            private void UpdateTextColor()
            {
                switch ((Item as GDEMenuItem)?.Type)
                {
                default:
                case MenuItemType.Standard:
                    text.Colour = Color4.White;
                    break;

                case MenuItemType.Destructive:
                    text.Colour = Color4.Red;
                    break;

                case MenuItemType.Highlighted:
                    text.Colour = GDEColors.FromHex(@"ffcc22");
                    break;
                }
            }
Esempio n. 12
0
 public TestSceneOverlayPopup()
 {
     Children = new Drawable[]
     {
         popup = new OverlayPopup
         {
             Anchor             = Anchor.Centre,
             Origin             = Anchor.Centre,
             Size               = new Vector2(750, 270),
             HeaderText         = "Message1",
             BodyText           = "Message2",
             Button1Text        = "Button1",
             Button2Text        = "Button2",
             ConfirmButtonColor = GDEColors.FromHex("A9A9E3")
         }
     };
     AddStep("toggle", popup.ToggleVisibility);
 }
Esempio n. 13
0
        public TestSceneTheme()
        {
            Children = new Drawable[]
            {
                new FillFlowContainer
                {
                    Direction        = FillDirection.Horizontal,
                    RelativeSizeAxes = Axes.Both,
                    Spacing          = new Vector2(10, 0),
                    Children         = new Drawable[]
                    {
                        hexBox = new TextBox
                        {
                            Text = "151515",
                            Size = new Vector2(80, 20),
                        },
                        new Button
                        {
                            Text             = "Dark theme",
                            Size             = new Vector2(80, 20),
                            Action           = () => hexValue.Value = "151515",
                            BackgroundColour = GDEColors.FromHex("1c1c1c")
                        },
                        new Button
                        {
                            Text             = "Light theme",
                            Size             = new Vector2(80, 20),
                            Action           = () => hexValue.Value = "e5e5e5",
                            BackgroundColour = GDEColors.FromHex("1c1c1c")
                        }
                    }
                },
                themedBox = new Box
                {
                    Colour = GDEColors.FromHex(hexValue.Value),
                    Size   = new Vector2(190),
                    Origin = Anchor.TopRight,
                    Anchor = Anchor.TopRight
                }
            };

            hexValue.ValueChanged       += HexChanged;
            hexBox.Current.ValueChanged += HexBoxChanged;
        }
Esempio n. 14
0
 public Lords()
 {
     InternalChildren = new Drawable[]
     {
         container = new FillFlowContainer
         {
             RelativeSizeAxes = Axes.Both,
             Direction        = FillDirection.Horizontal,
             Spacing          = new Vector2(100, 0),
             Alpha            = 0f,
             Children         = new Drawable[]
             {
                 AlFas = new SpriteText
                 {
                     Text   = "AlFas",
                     Font   = new FontUsage(size: 170),
                     Origin = Anchor.Centre,
                     Anchor = Anchor.Centre
                 },
                 Alten = new SpriteText
                 {
                     Text   = "Alten",
                     Font   = new FontUsage(size: 170),
                     Origin = Anchor.Centre,
                     Anchor = Anchor.Centre
                 }
             }
         },
         exitButton = new GDEButton
         {
             Text             = "Exit",
             Action           = this.Exit,
             Size             = new Vector2(100, 50),
             Anchor           = Anchor.BottomLeft,
             Origin           = Anchor.BottomLeft,
             BackgroundColour = GDEColors.FromHex("191919"),
             Alpha            = 0
         }
     };
 }
Esempio n. 15
0
 public GDEBreadcrumbNavigation()
 {
     AddRangeInternal(new Drawable[]
     {
         new Container
         {
             Masking          = true,
             CornerRadius     = DefaultCornerRadius,
             Depth            = 1,
             Height           = 30,
             RelativeSizeAxes = Axes.X,
             Children         = new Drawable[]
             {
                 new Box
                 {
                     RelativeSizeAxes = Axes.Both,
                     Colour           = GDEColors.FromHex("121212")
                 }
             }
         }
     });
 }
Esempio n. 16
0
        public Toolbar()
        {
            Children = new Drawable[]
            {
                new Box
                {
                    RelativeSizeAxes = Axes.Both,
                    Colour           = GDEColors.FromHex("161616")
                },
                new FillFlowContainer
                {
                    Direction        = FillDirection.Horizontal,
                    RelativeSizeAxes = Axes.Both,
                    Children         = new Drawable[]
                    {
                        LevelName = new SpriteText
                        {
                            Margin   = new MarginPadding(5),
                            Text     = "No level selected",
                            TextSize = 30
                        },
                        SongName = new SpriteText
                        {
                            Anchor   = Anchor.BottomLeft,
                            Origin   = Anchor.BottomLeft,
                            Margin   = new MarginPadding(5),
                            Colour   = GDEColors.FromHex("666666"),
                            TextSize = 25
                        }
                    }
                },
                new FillFlowContainer
                {
                    Direction        = FillDirection.Horizontal,
                    Anchor           = Anchor.CentreRight,
                    Origin           = Anchor.CentreRight,
                    RelativeSizeAxes = Axes.Both,
                    Children         = new Drawable[]
                    {
                        new GDEButton
                        {
                            Anchor           = Anchor.CentreRight,
                            Origin           = Anchor.CentreRight,
                            Margin           = new MarginPadding(5),
                            Width            = 80,
                            BackgroundColour = GDEColors.FromHex("c6262e"),
                            Text             = "Delete",
                            Action           = () => Delete?.Invoke()
                        },
                        new GDEButton
                        {
                            Anchor           = Anchor.CentreRight,
                            Origin           = Anchor.CentreRight,
                            Margin           = new MarginPadding(5),
                            Width            = 80,
                            BackgroundColour = GDEColors.FromHex("242424"),
                            Text             = "Edit",
                            Action           = () => Edit?.Invoke()
                        }
                    }
                }
            };

            Level.ValueChanged += OnChanged;
        }
Esempio n. 17
0
 private void HexChanged(ValueChangedEvent <string> value)
 {
     themedBox.FadeColour(GDEColors.FromHex(value.NewValue), 500);
 }
Esempio n. 18
0
 private void load()
 {
     Colour          = defaultColour = GDEColors.FromHex("888");
     hoverColour     = GDEColors.FromHex("fff");
     highlightColour = GDEColors.FromHex("88b300");
 }
Esempio n. 19
0
        protected override void Update()
        {
            if (!finishedLoading && (finishedLoading = database.GetLevelsStatus >= TaskStatus.RanToCompletion))
            {
                if ((levels = database.UserLevels).Count == 0)
                {
                    AddInternal(new FillFlowContainer
                    {
                        Direction = FillDirection.Vertical,
                        Anchor    = Anchor.Centre,
                        Origin    = Anchor.Centre,
                        Spacing   = new Vector2(0, 30),
                        Children  = new Drawable[]
                        {
                            new SpriteIcon
                            {
                                Anchor = Anchor.Centre,
                                Origin = Anchor.Centre,
                                Icon   = FontAwesome.Solid.Times,
                                Size   = new Vector2(192),
                                Colour = GDEColors.FromHex("666666")
                            },
                            new SpriteText
                            {
                                Anchor   = Anchor.Centre,
                                Origin   = Anchor.Centre,
                                Text     = "There doesn't seem to be anything here...",
                                Font     = @"OpenSans",
                                TextSize = 24,
                                Colour   = GDEColors.FromHex("666666")
                            },
                            new GDEButton
                            {
                                Anchor           = Anchor.Centre,
                                Origin           = Anchor.Centre,
                                Width            = 200,
                                Text             = "Create a new level",
                                BackgroundColour = GDEColors.FromHex("242424")
                            }
                        }
                    });
                }
                else if (!alreadyRun)
                {
                    for (var i = 0; i < database.UserLevels.Count; i++)
                    {
                        Cards.Add(new LevelCard
                        {
                            RelativeSizeAxes = Axes.X,
                            Size             = new Vector2(0.9f, 60),
                            Margin           = new MarginPadding(10),
                            Index            = i,
                            Level            =
                            {
                                Value = database.UserLevels[i]
                            }
                        });

                        Logger.Log($"Loaded: {database.UserLevels[i].LevelNameWithRevision}.");
                    }

                    foreach (var c in Cards)
                    {
                        levelList.Add(Cards[c.Index]);

                        Cards[c.Index].Selected.ValueChanged += obj =>
                        {
                            if (obj.NewValue)
                            {
                                foreach (var j in Cards)
                                {
                                    if (j != Cards[c.Index] && j.Selected.Value)
                                    {
                                        j.Selected.Value = false;
                                    }
                                }
                            }
                            LevelIndex = obj.NewValue ? c.Index : -1;
                            LevelSelected?.Invoke();
                        };
                    }

                    CompletedLoading?.Invoke();
                    alreadyRun = true;

                    Logger.Log("Loaded all levels successfully.");
                }
            }
        }
Esempio n. 20
0
        public EditorScreen(int index, Level level)
        {
            RelativeSizeAxes = Axes.Both;

            Editor = new Editor(level);
            // TODO: Inject editor into dependencies to work with the other things

            RPC.UpdatePresence(Editor.Level.Name, "Editing a level", new Assets
            {
                LargeImageKey  = "gde",
                LargeImageText = "GD Edit"
            });

            i = index;

            AddRangeInternal(new Drawable[]
            {
                background = new Sprite
                {
                    Origin = Anchor.BottomLeft,
                    Anchor = Anchor.BottomLeft,
                    Depth  = float.MaxValue,
                    Colour = GDEColors.FromHex("4f4f4f"),
                    Size   = new Vector2(2048, 2048)
                },
                camera = new Camera(Editor)
                {
                    RelativeSizeAxes = Axes.Both,
                    Anchor           = Anchor.Centre,
                    Origin           = Anchor.Centre,
                    Children         = new Drawable[]
                    {
                        grid = new Grid
                        {
                            Size   = new Vector2(1.1f), //Doubles the size
                            Anchor = Anchor.Centre,
                            Origin = Anchor.Centre
                        },
                        new GridOrigin
                        {
                            Size   = new Vector2(1.1f),
                            Anchor = Anchor.Centre,
                            Origin = Anchor.Centre
                        },
                        preview = new LevelPreview(this, index)
                        {
                            Anchor = Anchor.Centre,
                            Origin = Anchor.Centre
                        }
                    }
                },
                tools = new EditorTools(preview, camera)
                {
                    Size   = new Vector2(150, 300),
                    Anchor = Anchor.CentreLeft,
                    Origin = Anchor.CentreLeft
                },
                OpenFileDialogBindable.Value = new OpenFileDialog
                {
                    RelativeSizeAxes = Axes.Both,
                    Size             = new Vector2(0.8f),
                    Anchor           = Anchor.Centre,
                    Origin           = Anchor.Centre,
                    Depth            = -10
                },
                SaveFileDialogBindable.Value = new SaveFileDialog
                {
                    RelativeSizeAxes = Axes.Both,
                    Size             = new Vector2(0.8f),
                    Anchor           = Anchor.Centre,
                    Origin           = Anchor.Centre,
                    Depth            = -10
                },
                IDMigrationPanel = new IDMigrationPanel(this)
                {
                    Anchor   = Anchor.Centre,
                    Origin   = Anchor.Centre,
                    LockDrag = true
                }
            });

            camera.PostInit();
        }
Esempio n. 21
0
 private void OnSelected(ValueChangedEvent <bool> value)
 {
     selectionBar.FadeColour(GDEColors.FromHex(value.OldValue ? "202020" : "00bc5c"), 200);
 }
Esempio n. 22
0
        public MainScreen()
        {
            RPC.UpdatePresence("Looking for levels", null, new Assets
            {
                LargeImageKey  = "gde",
                LargeImageText = "GD Edit"
            });

            AddRangeInternal(new Drawable[]
            {
                new DrawSizePreservingFillContainer
                {
                    Strategy         = DrawSizePreservationStrategy.Average,
                    RelativeSizeAxes = Axes.Both,
                    Children         = new Drawable[]
                    {
                        toolbar = new Toolbar
                        {
                            RelativeSizeAxes = Axes.X,
                            Size             = new Vector2(1f, 40),
                            Delete           = () => popUp.ToggleVisibility()
                        },
                        new Box
                        {
                            RelativeSizeAxes = Axes.Y,
                            Width            = 260,
                            Colour           = GDEColors.FromHex("111111"),
                            Margin           = new MarginPadding
                            {
                                Top = 40
                            }
                        },
                        levelList = new LevelList
                        {
                            RelativeSizeAxes = Axes.Y,
                            Width            = 260,
                            Padding          = new MarginPadding
                            {
                                Top    = 40,
                                Bottom = 40
                            }
                        },
                        popUp = new OverlayPopup
                        {
                            HeaderText         = "Woah there!",
                            BodyText           = "Are you really sure you want to delete this level?",
                            Button1Text        = "Cancel",
                            Button2Text        = "Confirm",
                            ConfirmButtonColor = GDEColors.FromHex("c6262e"),
                            Origin             = Anchor.Centre,
                            Anchor             = Anchor.Centre,
                            Size          = new Vector2(750, 270),
                            ConfirmAction = () =>
                            {
                                var selectedLevel = levelList.LevelIndex > -1
                                    ? levelList.Cards[levelList.LevelIndex].Level.Value
                                    : null;

                                //if (selectedLevel != null)
                                //database. delete level here

                                levelList.Remove(levelList.Cards[levelList.LevelIndex]);
                            }
                        },
                        loadWarning = new SpriteText
                        {
                            Origin = Anchor.Centre,
                            Anchor = Anchor.Centre,
                            Text   = "Loading please wait",
                            Font   = new FontUsage(size: 60)
                        }
                    }
                }
            });

            toolbar.Level.BindTo(level);
            level.ValueChanged += ChangeLevel;

            levelList.LevelSelected = () =>
            {
                var selectedLevel =
                    levelList.LevelIndex > -1 ? levelList.Cards[levelList.LevelIndex].Level.Value : null;
                level.Value = selectedLevel;
                toolbar.Level.TriggerChange(); // F**k why is this necessary?
                toolbar.Edit = levelList.LevelIndex > -1
                    ? (Action)(() => this.Push(new EditorScreen(levelList.LevelIndex, selectedLevel)))
                    : null;
                popUp.ConfirmAction = () => database.UserLevels.Remove(selectedLevel);
            };

            levelList.CompletedLoading = () => loadWarning.Text = null;
        }
Esempio n. 23
0
 protected override void OnHoverLost(HoverLostEvent e)
 {
     hoverBox.FadeColour(GDEColors.FromHex("161616"), 500);
     base.OnHoverLost(e);
 }
Esempio n. 24
0
 protected override bool OnHover(HoverEvent e)
 {
     hoverBox.FadeColour(GDEColors.FromHex("1c1c1c"), 500);
     return(base.OnHover(e));
 }
Esempio n. 25
0
        public EditorTools(LevelPreview level, Camera camera)
        {
            Children = new Drawable[]
            {
                panel = new ObjectAdditionPanel(camera)
                {
                    Size     = new Vector2(335, 557),
                    Position = new Vector2(DrawWidth + 10, DrawHeight / 2)
                },
                new Container
                {
                    RelativeSizeAxes = Axes.Both,
                    CornerRadius     = 15,
                    Masking          = true,
                    Children         = new Drawable[]
                    {
                        new Box
                        {
                            RelativeSizeAxes = Axes.Both,
                            Colour           = GDEColors.FromHex("1f1f1f")
                        }
                    }
                },
                new FillFlowContainer
                {
                    Direction        = FillDirection.Vertical,
                    RelativeSizeAxes = Axes.Both,
                    Colour           = Color4.White,
                    Padding          = new MarginPadding(15),
                    Children         = new Drawable[]
                    {
                        addObject = new GDEButton
                        {
                            Action           = panel.ToggleVisibility,
                            Text             = "Add Object",
                            BackgroundColour = GDEColors.FromHex("2f2f2f"),
                            RelativeSizeAxes = Axes.X
                        },
                        deleteSelectedObjects = new GDEButton
                        {
                            Action = () =>
                            {
                                //Always defaults to 0, so fix that
                                foreach (var o in ObjectBase.DrawableSelectedObjects)
                                {
                                    //Hide it for now
                                    o.Hide();
                                }

                                ObjectBase.DrawableSelectedObjects.Clear();
                                editor?.DeselectAll();
                            },
                            Text             = "Delete Selected Objects",
                            BackgroundColour = GDEColors.FromHex("2f2f2f"),
                            RelativeSizeAxes = Axes.X
                        }
                    }
                }
            };

            AbleToPlaceBlock.BindTo(panel.AbleToPlace);
        }
Esempio n. 26
0
        public OverlayPopup()
        {
            Padding = new MarginPadding(10);

            Children = new Drawable[]
            {
                new Box
                {
                    RelativeSizeAxes = Axes.Both,
                    Colour           = GDEColors.FromHex("191919")
                },
                new FillFlowContainer
                {
                    Direction        = FillDirection.Vertical,
                    RelativeSizeAxes = Axes.Both,
                    Anchor           = Anchor.TopCentre,
                    Origin           = Anchor.TopCentre,
                    Padding          = new MarginPadding
                    {
                        Top = 40
                    },
                    Children = new Drawable[]
                    {
                        header = new SpriteText
                        {
                            Anchor = Anchor.TopCentre,
                            Origin = Anchor.TopCentre,
                            Font   = new FontUsage(size: 70)
                        },
                        body = new SpriteText
                        {
                            Anchor = Anchor.TopCentre,
                            Origin = Anchor.TopCentre,
                            Font   = new FontUsage(size: 40)
                        }
                    }
                },
                button1 = new GDEButton
                {
                    BackgroundColour = GDEColors.FromHex("1E1E1E"),
                    Size             = new Vector2(100, 50),
                    Action           = ToggleVisibility,
                    Anchor           = Anchor.BottomLeft,
                    Origin           = Anchor.BottomLeft,
                    Margin           = new MarginPadding(20)
                },
                button2 = new GDEButton
                {
                    BackgroundColour = GDEColors.FromHex("1E1E1E"),
                    Size             = new Vector2(100, 50),
                    Action           = () => ConfirmAction?.Invoke(),
                    Anchor           = Anchor.BottomRight,
                    Origin           = Anchor.BottomRight,
                    Margin           = new MarginPadding(20)
                }
            };

            Rotation = -25;
            Alpha    = 0;
            Scale    = new Vector2(0.5f);
        }
Esempio n. 27
0
        public IDMigrationStepList(Editor e, IDMigrationMode mode)
        {
            InitializeActionDictionary();

            editor          = e;
            IDMigrationMode = mode;

            Anchor = Anchor.Centre;
            Origin = Anchor.Centre;

            Child = new FillFlowContainer
            {
                AlwaysPresent = true,

                RelativeSizeAxes = Axes.Both,

                Anchor = Anchor.Centre,
                Origin = Anchor.Centre,

                Children = new Drawable[]
                {
                    searchQuery = new TextBox
                    {
                        Anchor           = Anchor.TopLeft,
                        Origin           = Anchor.TopLeft,
                        Height           = 30,
                        RelativeSizeAxes = Axes.X
                    },
                    new Container
                    {
                        RelativeSizeAxes = Axes.Both,
                        Margin           = new MarginPadding {
                            Top = 10
                        },
                        Padding = new MarginPadding {
                            Bottom = 40
                        },
                        Children = new Drawable[]
                        {
                            new GDEScrollContainer
                            {
                                RelativeSizeAxes = Axes.Both,
                                Child            = stepList = new FadeSearchContainer
                                {
                                    LayoutDuration   = 100,
                                    LayoutEasing     = Easing.Out,
                                    Spacing          = new Vector2(0, 2),
                                    RelativeSizeAxes = Axes.X,
                                    AutoSizeAxes     = Axes.Y
                                }
                            },
                            noSteps = new FillFlowContainer
                            {
                                Direction = FillDirection.Vertical,
                                Anchor    = Anchor.Centre,
                                Origin    = Anchor.Centre,
                                Spacing   = new Vector2(0, 30),
                                Children  = new Drawable[]
                                {
                                    new SpriteIcon
                                    {
                                        Anchor = Anchor.Centre,
                                        Origin = Anchor.Centre,
                                        Icon   = FontAwesome.Solid.Times,
                                        Size   = new Vector2(64),
                                        Colour = GDEColors.FromHex("666666")
                                    },
                                    new SpriteText
                                    {
                                        Anchor = Anchor.Centre,
                                        Origin = Anchor.Centre,
                                        Text   = "No migration steps are registered",
                                        Font   = new FontUsage("OpenSans", 24),
                                        Colour = GDEColors.FromHex("666666")
                                    },
                                    addNewStep = new GDEButton
                                    {
                                        Anchor           = Anchor.Centre,
                                        Origin           = Anchor.Centre,
                                        Width            = 200,
                                        Text             = "Add a new step",
                                        BackgroundColour = GDEColors.FromHex("242424")
                                    }
                                },
                                Alpha = 0
                            }
                        }
                    }
                }
            };

            UpdateCurrentTabRanges();
        }