You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
CrowdControl/Assets/3rd/Plugins/Smart-Inspector/Runtime/Fluent UITK/FluentUITK.Styles.cs

65 lines
2.0 KiB
C#

3 months ago
using System;
using System.Reflection;
using UnityEngine;
using UnityEngine.UIElements;
#if UNITY_EDITOR
using UnityEditor.UIElements;
#endif
namespace AV.UITK
{
[Flags]
public enum Styles
{
None = 0,
/// <summary> Adds ".unity-button" class of <see cref="UnityEngine.UIElements.Button"/>. </summary>
Button = 2,
/// <summary> Adds ".tab" class, used by ".tabs-bar" </summary>
Tab = 4,
/// <summary> Adds ".blue" class - checked <see cref="FluentUITK.Tab"/> will appear blue. </summary>
Blue = 8,
/// <summary> Moves <see cref="Toggle"/>'s checkbox before label.
/// <para/> Adds ".toggle-left" class. </summary>
ToggleLeft = 16,
Separator = 32,
// TODO: FoldoutHeader style
ButtonBlue = Button | Blue,
TabBlue = Tab | Blue,
}
public static partial class FluentUITK
{
static MethodInfo setToolbarStyleSheet =
#if UNITY_EDITOR
typeof(Toolbar).GetMethod("SetToolbarStyleSheet", BindingFlags.NonPublic | BindingFlags.Static);
#else
null;
#endif
/// <summary> Setup pre-defined styles to VisualElement. </summary>
public static void DefineStyle(VisualElement x, Styles styles)
{
bool Has(Styles other) => (styles & other) != 0;
if (Has(Styles.Button))
x.AddToClassList("unity-button");
if (Has(Styles.Tab))
x.AddToClassList(TabClass);
if (Has(Styles.Blue))
x.AddToClassList("blue");
if (Has(Styles.Separator))
x.AddToClassList("separator");
if (Has(Styles.ToggleLeft))
{
x.AddToClassList("toggle-left");
if (x is Toggle)
x.Query(className: "unity-toggle__input").ForEach(e => x.Insert(0, e));
}
}
}
}