private static void SpawnHistoryColorItem(UiWindow window, UiWindow parentwindow, Color color, UiSpacer spacer, Action <Color> setColor, Action <UiWindow, UiSpacer, Action <Color> > renew, Action <Color> remove, bool showAddFav, out UiColumn colorSquare, out UiTextBlock colorText, out UiRow buttons) { SpawnColorItem(color, spacer, out colorSquare, out colorText); var buttonSpacer = UiSpacer.GetSpacer(5, 5); buttons = new UiRow(); if (showAddFav) { var addToFavButton = new UiButton(); addToFavButton.SetBackground(Constants.Backgrounds.Button); var addToFavePic = FoxUIHook.Instance.GetPicture("nimbusfox.ui.images.addFavorite"); addToFavButton.AddChild(addToFavePic); buttons.AddChild(addToFavButton); buttons.AddChild(buttonSpacer); addToFavButton.OnClick += () => { _historyColor = color; SpawnAddToFavFromHistoryMenu(parentwindow, spacer, setColor); }; } var setButton = new UiButton(); setButton.SetBackground(Constants.Backgrounds.Button); var setPic = FoxUIHook.Instance.GetPicture("nimbusfox.ui.images.set"); setButton.AddChild(setPic); setButton.OnClick += () => { setColor(color); parentwindow.Dispose(); }; buttons.AddChild(setButton); buttons.AddChild(buttonSpacer); var deleteButton = new UiButton(); deleteButton.SetBackground(Constants.Backgrounds.Button); var deletePic = FoxUIHook.Instance.GetPicture("nimbusfox.ui.images.delete"); deleteButton.AddChild(deletePic); deleteButton.OnClick += () => { remove(color); parentwindow.Dispose(); renew(window, spacer, setColor); }; buttons.AddChild(deleteButton); }
private static void SpawnFavoriteFolderMenuContent(UiWindow window, UiWindow favFolderMenuWindow, UiSpacer spacer, Action <Color> setColor) { var scrollable = new UiScrollableContainer(); scrollable.SetDimensions(400, 500); var favFolderMenuTitle = new UiTextBlock(); favFolderMenuTitle.SetFont(Constants.Fonts.MyFirstCrush36); favFolderMenuTitle.SetString(ClientContext.LanguageDatabase.GetTranslationString("nimbusfox.foxcore.text.favorites")); favFolderMenuTitle.SetColor(Color.Orange); favFolderMenuWindow.AddChild(favFolderMenuTitle); favFolderMenuWindow.AddChild(spacer); favFolderMenuWindow.AddChild(scrollable); var newFolderButton = new UiButton(); var newFolderText = new UiTextBlock(); newFolderText.SetString(ClientContext.LanguageDatabase.GetTranslationString("nimbusfox.foxcore.text.newFolder")); newFolderButton.OnClick += () => { favFolderMenuWindow.Dispose(); SpawnInputTextWindow(window, spacer, ClientContext.LanguageDatabase.GetTranslationString("nimbusfox.foxcore.text.name") + ":", ClientContext.LanguageDatabase.GetTranslationString("nimbusfox.foxcore.text.newFolder"), value => { if (_favDir.Files .Any(x => x.ToLower() == value.ToLower())) { return(false); } using (var stream = _favDir .ObtainFileStream(value, FileMode.Create, FileAccess.ReadWrite)) { stream.Seek(0L, SeekOrigin.Begin); } return(true); }, ClientContext.LanguageDatabase.GetTranslationString("nimbusfox.foxcore.text.folderExists"), ClientContext.LanguageDatabase.GetTranslationString("nimbusfox.foxcore.text.folderExists.message"), () => { SpawnFavoriteFolderMenu(window, spacer, setColor); }); }; newFolderButton.AddChild(newFolderText); scrollable.AddChild(newFolderButton); scrollable.AddChild(spacer); var files = _favDir.Files; if (files.Any()) { foreach (var file in files) { scrollable.AddChild(SpawnFolderItem(window, favFolderMenuWindow, spacer, setColor, file, (folder) => { SpawnFolderColorWindow(favFolderMenuWindow, spacer, setColor, folder); return(false); }, SpawnFavoriteFolderMenu)); scrollable.AddChild(spacer); } } var closeButton = new UiButton(); closeButton.SetBackground(Constants.Backgrounds.Button); var closeText = new UiTextBlock(); closeText.SetString(ClientContext.LanguageDatabase.GetTranslationString("nimbusfox.foxcore.text.close")); closeButton.AddChild(closeText); favFolderMenuWindow.AddChild(closeButton); closeButton.OnClick += favFolderMenuWindow.Dispose; }
private static void SpawnAddToFavFromHistoryMenuContent(UiWindow window, UiWindow favFolderMenuWindow, UiSpacer spacer, Action <Color> setColor) { var scrollable = new UiScrollableContainer(); scrollable.SetDimensions(400, 500); var favFolderMenuTitle = new UiTextBlock(); favFolderMenuTitle.SetFont(Constants.Fonts.MyFirstCrush36); favFolderMenuTitle.SetString(ClientContext.LanguageDatabase.GetTranslationString("nimbusfox.foxcore.text.favorites")); favFolderMenuTitle.SetColor(Color.Orange); favFolderMenuWindow.AddChild(favFolderMenuTitle); favFolderMenuWindow.AddChild(spacer); favFolderMenuWindow.AddChild(scrollable); var newFolderButton = new UiButton(); var newFolderText = new UiTextBlock(); newFolderText.SetString(ClientContext.LanguageDatabase.GetTranslationString("nimbusfox.foxcore.text.newFolder")); newFolderButton.OnClick += () => { favFolderMenuWindow.StopUpdateCalls(); favFolderMenuWindow.Dispose(); SpawnInputTextWindow(window, spacer, ClientContext.LanguageDatabase.GetTranslationString("nimbusfox.foxcore.text.name") + ":", ClientContext.LanguageDatabase.GetTranslationString("nimbusfox.foxcore.text.newFolder"), value => { if (_favDir.Files.Any(x => x.ToLower() == value.ToLower())) { return(false); } using (var stream = _favDir .ObtainFileStream(value, FileMode.Create, FileAccess.ReadWrite)) { stream.Seek(0L, SeekOrigin.Begin); } return(true); }, ClientContext.LanguageDatabase.GetTranslationString("nimbusfox.foxcore.text.folderExists"), ClientContext.LanguageDatabase.GetTranslationString("nimbusfox.foxcore.text.folderExists.message"), () => { SpawnAddToFavFromHistoryMenu(window, spacer, setColor); }); }; newFolderButton.AddChild(newFolderText); scrollable.AddChild(newFolderButton); scrollable.AddChild(spacer); var files = _favDir.Files; if (files.Any()) { foreach (var file in files) { scrollable.AddChild(SpawnFolderItem(window, favFolderMenuWindow, spacer, setColor, file, (folder) => { var values = new List <string>(); if (_favDir.FileExists(folder)) { values.AddRange( File.ReadAllLines( Path.Combine(_favDir.GetPath(Path.DirectorySeparatorChar), folder))); } if (!values.Contains($"{_historyColor.R:X2}{_historyColor.G:X2}{_historyColor.B:X2}")) { values.Add($"{_historyColor.R:X2}{_historyColor.G:X2}{_historyColor.B:X2}"); } File.WriteAllLines(Path.Combine(_favDir.GetPath(Path.DirectorySeparatorChar), folder), values); return(true); }, SpawnAddToFavFromHistoryMenu)); scrollable.AddChild(spacer); } } var closeButton = new UiButton(); closeButton.SetBackground(Constants.Backgrounds.Button); var closeText = new UiTextBlock(); closeText.SetString(ClientContext.LanguageDatabase.GetTranslationString("nimbusfox.foxcore.text.close")); closeButton.AddChild(closeText); scrollable.AddChild(closeButton); closeButton.OnClick += () => { favFolderMenuWindow.Dispose(); window.ListenForEscape(true); window.Show(); window.StartUpdateCalls(); }; }
private static void SpawnColorWindowContent(UiWindow window, UiWindow historyWindow, UiSpacer spacer, Action <Color> setColor, Action <UiWindow, UiSpacer, Action <Color> > renew, Action <Color> remove, List <Color> colors, string title, string noColorText, bool showAddToFav = false) { var historyTitle = new UiTextBlock(); historyTitle.SetString(title); historyTitle.SetColor(Color.Orange); historyTitle.SetFont(Constants.Fonts.MyFirstCrush36); historyWindow.AddChild(historyTitle); historyWindow.AddChild(spacer); if (!colors.Any()) { var historyText = new UiTextBlock(); historyText.SetString(noColorText); historyWindow.AddChild(historyText); } else { var column1 = new UiRow(); var column1Squares = new UiColumn(); var column1Text = new UiColumn(); var column1Buttons = new UiColumn(); column1.AddChild(column1Squares); column1.AddChild(UiSpacer.GetSpacer()); column1.AddChild(column1Text); column1.AddChild(UiSpacer.GetSpacer()); column1.AddChild(column1Buttons); var column2 = new UiRow(); var column2Squares = new UiColumn(); var column2Text = new UiColumn(); var column2Buttons = new UiColumn(); column2.AddChild(column2Squares); column2.AddChild(UiSpacer.GetSpacer()); column2.AddChild(column2Text); column2.AddChild(UiSpacer.GetSpacer()); column2.AddChild(column2Buttons); var column = 1; var count = 0; foreach (var color in colors) { SpawnHistoryColorItem(window, historyWindow, color, spacer, setColor, renew, remove, showAddToFav, out var colorSquare, out var colorText, out var buttons); if (count >= 2) { if (column == 1) { column1Squares.AddChild(UiSpacer.GetSpacer(0, 20)); column1Text.AddChild(UiSpacer.GetSpacer(0, 12)); column1Buttons.AddChild(UiSpacer.GetSpacer(0, 15)); } else { column2Squares.AddChild(UiSpacer.GetSpacer(0, 20)); column2Text.AddChild(UiSpacer.GetSpacer(0, 12)); column2Buttons.AddChild(UiSpacer.GetSpacer(0, 15)); } } if (column == 1) { column1Squares.AddChild(colorSquare); column1Text.AddChild(colorText); column1Buttons.AddChild(buttons); column = 2; } else { column2Squares.AddChild(colorSquare); column2Text.AddChild(colorText); column2Buttons.AddChild(buttons); column = 1; } count++; } var columnRow = new UiRow(); columnRow.AddChild(column1); if (colors.Count >= 2) { columnRow.AddChild(UiSpacer.GetSpacer(10, 0)); columnRow.AddChild(column2); } var scrollable = new UiScrollableContainer(); scrollable.AddChild(columnRow); scrollable.SetDimensions(600, 400); historyWindow.AddChild(scrollable); } historyWindow.AddChild(spacer); var closeButton = new UiButton(); closeButton.SetBackground(Constants.Backgrounds.Button); var closeText = new UiTextBlock(); closeText.SetString(ClientContext.LanguageDatabase.GetTranslationString("nimbusfox.foxcore.text.close")); closeButton.AddChild(closeText); historyWindow.AddChild(closeButton); closeButton.OnClick += historyWindow.Dispose; }
public ColorPickerWindow(Color?_default = null) { if (_default != null) { _color = _default.Value; } _current = new UiWindow(); _current.ListenForEscape(true); _current.Container.SetBackground(Constants.Backgrounds.Dark); var picker = new UiColorPicker(); var currentColor = new UiTexture2D(context => Helpers.GetTexture(context)); var hoverColor = new UiTexture2D(context => Helpers.GetTexture(context)); var selectedColor = new UiTexture2D(context => Helpers.GetTexture(context)); selectedColor.SetColor(_color); currentColor.SetColor(_color); var row = new UiRow(); row.AddChild(picker); var column = new UiColumn(); var spacer = new UiSpacer(); spacer.SetHeight(20); spacer.SetWidth(20); row.AddChild(spacer); var mouseText = new UiTextBlock(); mouseText.SetColor(Color.White); mouseText.SetString(ClientContext.LanguageDatabase.GetTranslationString("nimbusfox.foxcore.text.mouse")); column.AddChild(mouseText); column.AddChild(hoverColor); column.AddChild(spacer); var selectedText = new UiTextBlock(); selectedText.SetColor(Color.White); selectedText.SetString(ClientContext.LanguageDatabase.GetTranslationString("nimbusfox.foxcore.text.selected")); column.AddChild(selectedText); column.AddChild(selectedColor); column.AddChild(spacer); var currentText = new UiTextBlock(); currentText.SetColor(Color.White); currentText.SetString(ClientContext.LanguageDatabase.GetTranslationString("nimbusfox.foxcore.text.current")); column.AddChild(currentText); column.AddChild(currentColor); row.AddChild(column); _current.AddChild(row); _current.AddChild(spacer); var colorRow = new UiRow(); UiTextInput colorHex = null; var colorR = new UiNumberInput(); colorR.SetItteration(1.0f); colorR.SetMin(0); colorR.SetMax(255); colorR.SetValue(_color.R); colorR.SetBackgroundColors(Color.Red, Color.Pink); colorR.OnChange += value => { if (byte.TryParse(value.ToString(), out var val)) { _color.R = val; colorHex?.ForceSetValue($"{_color.R:X2}{_color.G:X2}{_color.B:X2}"); selectedColor.SetColor(_color); } }; var colorG = new UiNumberInput(); colorG.SetItteration(1.0f); colorG.SetMin(0); colorG.SetMax(255); colorG.SetValue(_color.G); colorG.SetBackgroundColors(Color.Green, Color.LimeGreen); colorG.OnChange += value => { if (byte.TryParse(value.ToString(), out var val)) { _color.G = val; colorHex?.ForceSetValue($"{_color.R:X2}{_color.G:X2}{_color.B:X2}"); selectedColor.SetColor(_color); } }; var colorB = new UiNumberInput(); colorB.SetItteration(1.0f); colorB.SetMin(0); colorB.SetMax(255); colorB.SetValue(_color.B); colorB.SetBackgroundColors(Color.Blue, Color.LightBlue); colorB.SetTextColors(Color.White, Color.Black); colorB.OnChange += value => { if (byte.TryParse(value.ToString(), out var val)) { _color.B = val; colorHex?.ForceSetValue($"{_color.R:X2}{_color.G:X2}{_color.B:X2}"); selectedColor.SetColor(_color); } }; var colorHexRow = new UiRow(); var hex = new UiTextBlock(); hex.SetString(ClientContext.LanguageDatabase.GetTranslationString("nimbusfox.foxcore.text.hex")); colorHex = new UiTextInput(); colorHex.ForceSetValue($"{_color.R:X2}{_color.G:X2}{_color.B:X2}"); colorHex.SetBackgroundColor(new Color(237, 207, 154)); colorHex.SetTextColor(Color.Black); colorHex.SetActiveTextColor(Color.Black); colorHex.SetBackground(Constants.Backgrounds.TextInput); colorHex.SetLimit(6); colorHex.InputCheck += key => { switch (key.ToString().ToUpper()) { default: return(false); case "A": case "B": case "C": case "D": case "E": case "F": case "0": case "1": case "2": case "3": case "4": case "5": case "6": case "7": case "8": case "9": return(true); } }; colorHex.OnChange += text => { if (text.IsNullOrEmpty()) { _color = Color.Black; } else { _color = ColorMath.ParseString(text); } selectedColor.SetColor(_color); colorR.ForceSetValue(_color.R); colorG.ForceSetValue(_color.G); colorB.ForceSetValue(_color.B); }; picker.ColorClick += color => { selectedColor.SetColor(color); _color = color; colorR.ForceSetValue(_color.R); colorG.ForceSetValue(_color.G); colorB.ForceSetValue(_color.B); colorHex.ForceSetValue($"{_color.R:X2}{_color.G:X2}{_color.B:X2}"); }; colorRow.AddChild(colorR); colorRow.AddChild(spacer); colorRow.AddChild(colorG); colorRow.AddChild(spacer); colorRow.AddChild(colorB); _current.AddChild(colorRow); _current.AddChild(spacer); colorHexRow.AddChild(hex); colorHexRow.AddChild(colorHex); _current.AddChild(colorHexRow); _current.AddChild(spacer); var confirmButton = new UiButton(); confirmButton.SetBackground(Constants.Backgrounds.Button); var confirmText = new UiTextBlock(); confirmText.SetString(ClientContext.LanguageDatabase.GetTranslationString("nimbusfox.foxcore.text.setColor")); confirmButton.AddChild(confirmText); confirmButton.OnClick += () => { OnColorSet?.Invoke(_color); if (_colorHistory.Contains(_color)) { _colorHistory.Remove(_color); } _colorHistory.Add(_color); _current.Dispose(); }; var cancelButton = new UiButton(); cancelButton.SetBackground(Constants.Backgrounds.Button); var cancelText = new UiTextBlock(); cancelText.SetString(ClientContext.LanguageDatabase.GetTranslationString("nimbusfox.foxcore.text.cancel")); cancelButton.AddChild(cancelText); cancelButton.OnClick += () => { _current.Dispose(); }; var buttonRow = new UiRow(); buttonRow.AddChild(confirmButton); buttonRow.AddChild(spacer); buttonRow.AddChild(cancelButton); buttonRow.AddChild(spacer); var favButton = new UiButton(); favButton.SetBackground(Constants.Backgrounds.Button); var favPic = FoxUIHook.Instance.GetPicture("nimbusfox.ui.images.favorites"); favButton.AddChild(favPic); buttonRow.AddChild(favButton); buttonRow.AddChild(spacer); favButton.OnClick += () => { SpawnFavoriteFolderMenu(_current, spacer, color => { colorHex.ForceSetValue($"{color.R:X2}{color.G:X2}{color.B:X2}", true); }); }; var historyButton = new UiButton(); historyButton.SetBackground(Constants.Backgrounds.Button); var historyPic = FoxUIHook.Instance.GetPicture("nimbusfox.ui.images.history"); historyButton.AddChild(historyPic); buttonRow.AddChild(historyButton); historyButton.OnClick += () => { SpawnHistoryWindow(_current, spacer, color => { colorHex.ForceSetValue($"{color.R:X2}{color.G:X2}{color.B:X2}", true); }); }; _current.AddChild(buttonRow); picker.ColorHover += color => { hoverColor.SetColor(color); }; _current.OnClose += () => { OnClose?.Invoke(); }; }
public UiNumberInput() { _textInput = new UiTextInput(); _textInput.SetBackground(Constants.Backgrounds.TextInput); _textInput.SetTextColor(Color.Black); _textInput.SetActiveTextColor(Color.Black); _textInput.InputCheck += ch => { switch (ch) { default: return(false); case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case '.': return(true); } }; _textInput.OnChange += text => { if (float.TryParse(text, out var value)) { SetValue(value, true); } }; _displayRow = new UiRow(); var downButton = new UiButton(); downButton.SetBackground(Constants.Backgrounds.Button); downButton.OnHold += () => { SetValue(_value - _itterations, true); }; downButton.SetTextColor(Color.Black); downButton.SetActiveTextColor(Color.Black); var downText = new UiTextBlock(); downText.SetString("-"); downButton.AddChild(downText); var spacer = UiSpacer.GetSpacer(5, 5); _displayRow.AddChild(downButton); _displayRow.AddChild(spacer); base.AddChild(_displayRow); var upButton = new UiButton(); upButton.SetBackground(Constants.Backgrounds.Button); upButton.OnHold += () => { SetValue(_value + _itterations, true); }; var inputColumn = new UiColumn(); inputColumn.AddChild(spacer); inputColumn.AddChild(_textInput); inputColumn.AddChild(spacer); _displayRow.AddChild(inputColumn); _displayRow.AddChild(spacer); _displayRow.AddChild(upButton); upButton.SetTextColor(Color.Black); upButton.SetActiveTextColor(Color.Black); var upText = new UiTextBlock(); upText.SetString("+"); upButton.AddChild(upText); SetSize(60, 30); }