mirror of
https://github.com/ClassiCube/ClassiCube.git
synced 2025-10-11 15:17:38 -04:00
166 lines
3.9 KiB
C#
166 lines
3.9 KiB
C#
// ClassicalSharp copyright 2014-2016 UnknownShadow200 | Licensed under MIT
|
|
using System;
|
|
|
|
namespace ClassicalSharp.Gui.Widgets {
|
|
public abstract class MenuInputValidator {
|
|
|
|
public string Range;
|
|
|
|
public abstract bool IsValidChar(char c);
|
|
|
|
public abstract bool IsValidString(string s);
|
|
|
|
public virtual bool IsValidValue(string s) {
|
|
return IsValidString(s);
|
|
}
|
|
|
|
protected void MakeRange(string min, string max) {
|
|
Range = "&7(" + min + " - " + max + ")";
|
|
}
|
|
}
|
|
|
|
public sealed class HexColourValidator : MenuInputValidator {
|
|
|
|
public HexColourValidator() {
|
|
Range = "&7(#000000 - #FFFFFF)";
|
|
}
|
|
|
|
public override bool IsValidChar(char c) {
|
|
return (c >= '0' && c <= '9') || (c >= 'A' && c <= 'F')
|
|
|| (c >= 'a' && c <= 'f');
|
|
}
|
|
|
|
public override bool IsValidString(string s) {
|
|
return s.Length <= 6;
|
|
}
|
|
|
|
public override bool IsValidValue(string s) {
|
|
FastColour col;
|
|
return FastColour.TryParse(s, out col);
|
|
}
|
|
}
|
|
|
|
public class IntegerValidator : MenuInputValidator {
|
|
|
|
int min, max;
|
|
public IntegerValidator(int min, int max) {
|
|
this.min = min;
|
|
this.max = max;
|
|
SetRange();
|
|
}
|
|
|
|
protected virtual void SetRange() {
|
|
MakeRange(min.ToString(), max.ToString());
|
|
}
|
|
|
|
public override bool IsValidChar(char c) {
|
|
return (c >= '0' && c <= '9') || c == '-';
|
|
}
|
|
|
|
public override bool IsValidString(string s) {
|
|
int value;
|
|
if (s.Length == 1 && s[0] == '-') return true;
|
|
return Int32.TryParse(s, out value);
|
|
}
|
|
|
|
public override bool IsValidValue(string s) {
|
|
int value;
|
|
if (!Int32.TryParse(s, out value)) return false;
|
|
return min <= value && value <= max;
|
|
}
|
|
}
|
|
|
|
public sealed class SeedValidator : IntegerValidator {
|
|
|
|
public SeedValidator() : base(int.MinValue, int.MaxValue) { }
|
|
|
|
protected override void SetRange() {
|
|
Range = "&7(an integer)";
|
|
}
|
|
}
|
|
|
|
public sealed class RealValidator : MenuInputValidator {
|
|
|
|
float min, max;
|
|
public RealValidator(float min, float max) {
|
|
this.min = min;
|
|
this.max = max;
|
|
MakeRange(min.ToString(), max.ToString());
|
|
}
|
|
|
|
public override bool IsValidChar(char c) {
|
|
return (c >= '0' && c <= '9') || c == '-' || c == '.' || c == ',';
|
|
}
|
|
|
|
public override bool IsValidString(string s) {
|
|
float value;
|
|
if (s.Length == 1 && IsValidChar(s[0])) return true;
|
|
return Utils.TryParseDecimal(s, out value);
|
|
}
|
|
|
|
public override bool IsValidValue(string s) {
|
|
float value;
|
|
if (!Utils.TryParseDecimal(s, out value)) return false;
|
|
return min <= value && value <= max;
|
|
}
|
|
}
|
|
|
|
public sealed class PathValidator : MenuInputValidator {
|
|
|
|
public PathValidator() {
|
|
Range = "&7(Enter name)";
|
|
}
|
|
|
|
public override bool IsValidChar(char c) {
|
|
return !(c == '/' || c == '\\' || c == '?' || c == '*' || c == ':'
|
|
|| c == '<' || c == '>' || c == '|' || c == '"' || c == '.');
|
|
}
|
|
|
|
public override bool IsValidString(string s) { return true; }
|
|
}
|
|
|
|
public sealed class BooleanValidator : MenuInputValidator {
|
|
|
|
public BooleanValidator() {
|
|
Range = "&7(yes or no)";
|
|
}
|
|
|
|
public override bool IsValidChar(char c) { return true; }
|
|
|
|
public override bool IsValidString(string s) { return true; }
|
|
|
|
public override bool IsValidValue(string s) { return true; }
|
|
}
|
|
|
|
public sealed class EnumValidator : MenuInputValidator {
|
|
|
|
public Type EnumType;
|
|
public EnumValidator(Type type) {
|
|
EnumType = type;
|
|
}
|
|
|
|
public override bool IsValidChar(char c) { return true; }
|
|
|
|
public override bool IsValidString(string s) { return true; }
|
|
|
|
public override bool IsValidValue(string s) { return true; }
|
|
}
|
|
|
|
public sealed class StringValidator : MenuInputValidator {
|
|
|
|
int maxLen;
|
|
public StringValidator(int len) {
|
|
Range = "&7(Enter text)";
|
|
maxLen = len;
|
|
}
|
|
|
|
public override bool IsValidChar(char c) {
|
|
return !(c < ' ' || c == '&' || c > '~');
|
|
}
|
|
|
|
public override bool IsValidString(string s) {
|
|
return s.Length <= maxLen;
|
|
}
|
|
}
|
|
}
|