Rework button styling to add a "caution" button type.

It's red.
This commit is contained in:
Pieter-Jan Briers
2020-09-07 10:52:54 +02:00
parent 08e9fad4e1
commit a1c1769d23
3 changed files with 88 additions and 155 deletions

View File

@@ -17,6 +17,8 @@ namespace Content.Client.UserInterface.Stylesheets
public const string ButtonOpenLeft = "OpenLeft"; public const string ButtonOpenLeft = "OpenLeft";
public const string ButtonOpenBoth = "OpenBoth"; public const string ButtonOpenBoth = "OpenBoth";
public const string ButtonCaution = "Caution";
public abstract Stylesheet Stylesheet { get; } public abstract Stylesheet Stylesheet { get; }
protected StyleRule[] BaseRules { get; } protected StyleRule[] BaseRules { get; }

View File

@@ -31,6 +31,11 @@ namespace Content.Client.UserInterface.Stylesheets
public static readonly Color ButtonColorPressed = Color.FromHex("#3e6c45"); public static readonly Color ButtonColorPressed = Color.FromHex("#3e6c45");
public static readonly Color ButtonColorDisabled = Color.FromHex("#30313c"); public static readonly Color ButtonColorDisabled = Color.FromHex("#30313c");
public static readonly Color ButtonColorCautionDefault = Color.FromHex("#d31a1a");
public static readonly Color ButtonColorCautionHovered = Color.FromHex("#e83838");
public static readonly Color ButtonColorCautionPressed = Color.FromHex("#3e6c45");
public static readonly Color ButtonColorCautionDisabled = Color.FromHex("#822626");
//Used by the APC and SMES menus //Used by the APC and SMES menus
public const string StyleClassPowerStateNone = "PowerStateNone"; public const string StyleClassPowerStateNone = "PowerStateNone";
public const string StyleClassPowerStateLow = "PowerStateLow"; public const string StyleClassPowerStateLow = "PowerStateLow";
@@ -70,30 +75,6 @@ namespace Content.Client.UserInterface.Stylesheets
var textureInvertedTriangle = resCache.GetTexture("/Textures/Interface/Nano/inverted_triangle.svg.png"); var textureInvertedTriangle = resCache.GetTexture("/Textures/Interface/Nano/inverted_triangle.svg.png");
static (StyleBox, StyleBox, StyleBox, StyleBox) ButtonPermutations(StyleBoxTexture @base)
{
var normal = new StyleBoxTexture(@base) {Modulate = ButtonColorDefault};
var hover = new StyleBoxTexture(@base) {Modulate = ButtonColorHovered};
var pressed = new StyleBoxTexture(@base) {Modulate = ButtonColorPressed};
var disabled = new StyleBoxTexture(@base) {Modulate = ButtonColorDisabled};
return (normal, hover, pressed, disabled);
}
// Button styles.
var (buttonNormal, buttonHover, buttonPressed, buttonDisabled)
= ButtonPermutations(BaseButton);
var (buttonRNormal, buttonRHover, buttonRPressed, buttonRDisabled)
= ButtonPermutations(BaseButtonOpenRight);
var (buttonLNormal, buttonLHover, buttonLPressed, buttonLDisabled)
= ButtonPermutations(BaseButtonOpenLeft);
var (buttonBNormal, buttonBHover, buttonBPressed, buttonBDisabled)
= ButtonPermutations(BaseButtonOpenBoth);
var lineEditTex = resCache.GetTexture("/Textures/Interface/Nano/lineedit.png"); var lineEditTex = resCache.GetTexture("/Textures/Interface/Nano/lineedit.png");
var lineEdit = new StyleBoxTexture var lineEdit = new StyleBoxTexture
{ {
@@ -297,80 +278,60 @@ namespace Content.Client.UserInterface.Stylesheets
new StyleProperty(Control.StylePropertyModulateSelf, Color.FromHex("#753131")), new StyleProperty(Control.StylePropertyModulateSelf, Color.FromHex("#753131")),
}), }),
// Regular buttons! // Shapes for the buttons.
new StyleRule(new SelectorElement(typeof(ContainerButton), new[] { ContainerButton.StyleClassButton }, null, new[] {ContainerButton.StylePseudoClassNormal}), new[] Element<ContainerButton>().Class(ContainerButton.StyleClassButton)
{ .Prop(ContainerButton.StylePropertyStyleBox, BaseButton),
new StyleProperty(ContainerButton.StylePropertyStyleBox, buttonNormal),
}), Element<ContainerButton>().Class(ContainerButton.StyleClassButton)
new StyleRule(new SelectorElement(typeof(ContainerButton), new[] { ContainerButton.StyleClassButton }, null, new[] {ContainerButton.StylePseudoClassHover}), new[] .Class(ButtonOpenRight)
{ .Prop(ContainerButton.StylePropertyStyleBox, BaseButtonOpenRight),
new StyleProperty(ContainerButton.StylePropertyStyleBox, buttonHover),
}), Element<ContainerButton>().Class(ContainerButton.StyleClassButton)
new StyleRule(new SelectorElement(typeof(ContainerButton), new[] { ContainerButton.StyleClassButton }, null, new[] {ContainerButton.StylePseudoClassPressed}), new[] .Class(ButtonOpenLeft)
{ .Prop(ContainerButton.StylePropertyStyleBox, BaseButtonOpenLeft),
new StyleProperty(ContainerButton.StylePropertyStyleBox, buttonPressed),
}), Element<ContainerButton>().Class(ContainerButton.StyleClassButton)
new StyleRule(new SelectorElement(typeof(ContainerButton), new[] { ContainerButton.StyleClassButton }, null, new[] {ContainerButton.StylePseudoClassDisabled}), new[] .Class(ButtonOpenBoth)
{ .Prop(ContainerButton.StylePropertyStyleBox, BaseButtonOpenBoth),
new StyleProperty(ContainerButton.StylePropertyStyleBox, buttonDisabled),
}),
new StyleRule(new SelectorElement(typeof(Label), new[] { Button.StyleClassButton }, null, null), new[] new StyleRule(new SelectorElement(typeof(Label), new[] { Button.StyleClassButton }, null, null), new[]
{ {
new StyleProperty(Label.StylePropertyAlignMode, Label.AlignMode.Center), new StyleProperty(Label.StylePropertyAlignMode, Label.AlignMode.Center),
}), }),
// Right open buttons. // Colors for the buttons.
Element<ContainerButton>().Class(ContainerButton.StyleClassButton).Class(ButtonOpenRight) Element<ContainerButton>().Class(ContainerButton.StyleClassButton)
.Pseudo(ContainerButton.StylePseudoClassNormal) .Pseudo(ContainerButton.StylePseudoClassNormal)
.Prop(ContainerButton.StylePropertyStyleBox, buttonRNormal), .Prop(Control.StylePropertyModulateSelf, ButtonColorDefault),
Element<ContainerButton>().Class(ContainerButton.StyleClassButton).Class(ButtonOpenRight) Element<ContainerButton>().Class(ContainerButton.StyleClassButton)
.Pseudo(ContainerButton.StylePseudoClassHover) .Pseudo(ContainerButton.StylePseudoClassHover)
.Prop(ContainerButton.StylePropertyStyleBox, buttonRHover), .Prop(Control.StylePropertyModulateSelf, ButtonColorHovered),
Element<ContainerButton>().Class(ContainerButton.StyleClassButton).Class(ButtonOpenRight) Element<ContainerButton>().Class(ContainerButton.StyleClassButton)
.Pseudo(ContainerButton.StylePseudoClassPressed) .Pseudo(ContainerButton.StylePseudoClassPressed)
.Prop(ContainerButton.StylePropertyStyleBox, buttonRPressed), .Prop(Control.StylePropertyModulateSelf, ButtonColorPressed),
Element<ContainerButton>().Class(ContainerButton.StyleClassButton).Class(ButtonOpenRight) Element<ContainerButton>().Class(ContainerButton.StyleClassButton)
.Pseudo(ContainerButton.StylePseudoClassDisabled) .Pseudo(ContainerButton.StylePseudoClassDisabled)
.Prop(ContainerButton.StylePropertyStyleBox, buttonRDisabled), .Prop(Control.StylePropertyModulateSelf, ButtonColorDisabled),
// Left open buttons. // Colors for the caution buttons.
Element<ContainerButton>().Class(ContainerButton.StyleClassButton).Class(ButtonOpenLeft) Element<ContainerButton>().Class(ContainerButton.StyleClassButton).Class(ButtonCaution)
.Pseudo(ContainerButton.StylePseudoClassNormal) .Pseudo(ContainerButton.StylePseudoClassNormal)
.Prop(ContainerButton.StylePropertyStyleBox, buttonLNormal), .Prop(Control.StylePropertyModulateSelf, ButtonColorCautionDefault),
Element<ContainerButton>().Class(ContainerButton.StyleClassButton).Class(ButtonOpenLeft) Element<ContainerButton>().Class(ContainerButton.StyleClassButton).Class(ButtonCaution)
.Pseudo(ContainerButton.StylePseudoClassHover) .Pseudo(ContainerButton.StylePseudoClassHover)
.Prop(ContainerButton.StylePropertyStyleBox, buttonLHover), .Prop(Control.StylePropertyModulateSelf, ButtonColorCautionHovered),
Element<ContainerButton>().Class(ContainerButton.StyleClassButton).Class(ButtonOpenLeft) Element<ContainerButton>().Class(ContainerButton.StyleClassButton).Class(ButtonCaution)
.Pseudo(ContainerButton.StylePseudoClassPressed) .Pseudo(ContainerButton.StylePseudoClassPressed)
.Prop(ContainerButton.StylePropertyStyleBox, buttonLPressed), .Prop(Control.StylePropertyModulateSelf, ButtonColorCautionPressed),
Element<ContainerButton>().Class(ContainerButton.StyleClassButton).Class(ButtonOpenLeft) Element<ContainerButton>().Class(ContainerButton.StyleClassButton).Class(ButtonCaution)
.Pseudo(ContainerButton.StylePseudoClassDisabled) .Pseudo(ContainerButton.StylePseudoClassDisabled)
.Prop(ContainerButton.StylePropertyStyleBox, buttonLDisabled), .Prop(Control.StylePropertyModulateSelf, ButtonColorCautionDisabled),
// "Both" open buttons
Element<ContainerButton>().Class(ContainerButton.StyleClassButton).Class(ButtonOpenBoth)
.Pseudo(ContainerButton.StylePseudoClassNormal)
.Prop(ContainerButton.StylePropertyStyleBox, buttonBNormal),
Element<ContainerButton>().Class(ContainerButton.StyleClassButton).Class(ButtonOpenBoth)
.Pseudo(ContainerButton.StylePseudoClassHover)
.Prop(ContainerButton.StylePropertyStyleBox, buttonBHover),
Element<ContainerButton>().Class(ContainerButton.StyleClassButton).Class(ButtonOpenBoth)
.Pseudo(ContainerButton.StylePseudoClassPressed)
.Prop(ContainerButton.StylePropertyStyleBox, buttonBPressed),
Element<ContainerButton>().Class(ContainerButton.StyleClassButton).Class(ButtonOpenBoth)
.Pseudo(ContainerButton.StylePseudoClassDisabled)
.Prop(ContainerButton.StylePropertyStyleBox, buttonBDisabled),
new StyleRule(new SelectorChild( new StyleRule(new SelectorChild(
new SelectorElement(typeof(Button), null, null, new[] {ContainerButton.StylePseudoClassDisabled}), new SelectorElement(typeof(Button), null, null, new[] {ContainerButton.StylePseudoClassDisabled}),
@@ -649,25 +610,28 @@ namespace Content.Client.UserInterface.Stylesheets
}), }),
// Those top menu buttons. // Those top menu buttons.
Element<GameHud.TopButton>()
.Prop(Button.StylePropertyStyleBox, BaseButton),
new StyleRule( new StyleRule(
new SelectorElement(typeof(GameHud.TopButton), null, null, new[] {Button.StylePseudoClassNormal}), new SelectorElement(typeof(GameHud.TopButton), null, null, new[] {Button.StylePseudoClassNormal}),
new[] new[]
{ {
new StyleProperty(Button.StylePropertyStyleBox, buttonNormal), new StyleProperty(Button.StylePropertyModulateSelf, ButtonColorDefault),
}), }),
new StyleRule( new StyleRule(
new SelectorElement(typeof(GameHud.TopButton), null, null, new[] {Button.StylePseudoClassPressed}), new SelectorElement(typeof(GameHud.TopButton), null, null, new[] {Button.StylePseudoClassPressed}),
new[] new[]
{ {
new StyleProperty(Button.StylePropertyStyleBox, buttonPressed), new StyleProperty(Button.StylePropertyModulateSelf, ButtonColorPressed),
}), }),
new StyleRule( new StyleRule(
new SelectorElement(typeof(GameHud.TopButton), null, null, new[] {Button.StylePseudoClassHover}), new SelectorElement(typeof(GameHud.TopButton), null, null, new[] {Button.StylePseudoClassHover}),
new[] new[]
{ {
new StyleProperty(Button.StylePropertyStyleBox, buttonHover), new StyleProperty(Button.StylePropertyModulateSelf, ButtonColorHovered),
}), }),
new StyleRule( new StyleRule(
@@ -758,21 +722,25 @@ namespace Content.Client.UserInterface.Stylesheets
}), }),
// OptionButton // OptionButton
new StyleRule(new SelectorElement(typeof(OptionButton), null, null, null), new[]
{
new StyleProperty(ContainerButton.StylePropertyStyleBox, BaseButton),
}),
new StyleRule(new SelectorElement(typeof(OptionButton), null, null, new[] {ContainerButton.StylePseudoClassNormal}), new[] new StyleRule(new SelectorElement(typeof(OptionButton), null, null, new[] {ContainerButton.StylePseudoClassNormal}), new[]
{ {
new StyleProperty(ContainerButton.StylePropertyStyleBox, buttonNormal), new StyleProperty(Control.StylePropertyModulateSelf, ButtonColorDefault),
}), }),
new StyleRule(new SelectorElement(typeof(OptionButton), null, null, new[] {ContainerButton.StylePseudoClassHover}), new[] new StyleRule(new SelectorElement(typeof(OptionButton), null, null, new[] {ContainerButton.StylePseudoClassHover}), new[]
{ {
new StyleProperty(ContainerButton.StylePropertyStyleBox, buttonHover), new StyleProperty(Control.StylePropertyModulateSelf, ButtonColorHovered),
}), }),
new StyleRule(new SelectorElement(typeof(OptionButton), null, null, new[] {ContainerButton.StylePseudoClassPressed}), new[] new StyleRule(new SelectorElement(typeof(OptionButton), null, null, new[] {ContainerButton.StylePseudoClassPressed}), new[]
{ {
new StyleProperty(ContainerButton.StylePropertyStyleBox, buttonPressed), new StyleProperty(Control.StylePropertyModulateSelf, ButtonColorPressed),
}), }),
new StyleRule(new SelectorElement(typeof(OptionButton), null, null, new[] {ContainerButton.StylePseudoClassDisabled}), new[] new StyleRule(new SelectorElement(typeof(OptionButton), null, null, new[] {ContainerButton.StylePseudoClassDisabled}), new[]
{ {
new StyleProperty(ContainerButton.StylePropertyStyleBox, buttonDisabled), new StyleProperty(Control.StylePropertyModulateSelf, ButtonColorDisabled),
}), }),
new StyleRule(new SelectorElement(typeof(TextureRect), new[] {OptionButton.StyleClassOptionTriangle}, null, null), new[] new StyleRule(new SelectorElement(typeof(TextureRect), new[] {OptionButton.StyleClassOptionTriangle}, null, null), new[]

View File

@@ -18,6 +18,11 @@ namespace Content.Client.UserInterface.Stylesheets
public static readonly Color ButtonColorPressed = Color.FromHex("#3e6c45"); public static readonly Color ButtonColorPressed = Color.FromHex("#3e6c45");
public static readonly Color ButtonColorDisabled = Color.FromHex("#30313c"); public static readonly Color ButtonColorDisabled = Color.FromHex("#30313c");
public static readonly Color ButtonColorCautionDefault = Color.FromHex("#d31a1a");
public static readonly Color ButtonColorCautionHovered = Color.FromHex("#e83838");
public static readonly Color ButtonColorCautionPressed = Color.FromHex("#3e6c45");
public static readonly Color ButtonColorCautionDisabled = Color.FromHex("#822626");
public override Stylesheet Stylesheet { get; } public override Stylesheet Stylesheet { get; }
public StyleSpace(IResourceCache resCache) : base(resCache) public StyleSpace(IResourceCache resCache) : base(resCache)
@@ -25,29 +30,6 @@ namespace Content.Client.UserInterface.Stylesheets
var notoSans10 = resCache.GetFont("/Textures/Interface/Nano/NotoSans/NotoSans-Regular.ttf", 10); var notoSans10 = resCache.GetFont("/Textures/Interface/Nano/NotoSans/NotoSans-Regular.ttf", 10);
var notoSansBold16 = resCache.GetFont("/Textures/Interface/Nano/NotoSans/NotoSans-Bold.ttf", 16); var notoSansBold16 = resCache.GetFont("/Textures/Interface/Nano/NotoSans/NotoSans-Bold.ttf", 16);
static (StyleBox, StyleBox, StyleBox, StyleBox) ButtonPermutations(StyleBoxTexture @base)
{
var normal = new StyleBoxTexture(@base) {Modulate = ButtonColorDefault};
var hover = new StyleBoxTexture(@base) {Modulate = ButtonColorHovered};
var pressed = new StyleBoxTexture(@base) {Modulate = ButtonColorPressed};
var disabled = new StyleBoxTexture(@base) {Modulate = ButtonColorDisabled};
return (normal, hover, pressed, disabled);
}
// Button styles.
var (buttonNormal, buttonHover, buttonPressed, buttonDisabled)
= ButtonPermutations(BaseButton);
var (buttonRNormal, buttonRHover, buttonRPressed, buttonRDisabled)
= ButtonPermutations(BaseButtonOpenRight);
var (buttonLNormal, buttonLHover, buttonLPressed, buttonLDisabled)
= ButtonPermutations(BaseButtonOpenLeft);
var (buttonBNormal, buttonBHover, buttonBPressed, buttonBDisabled)
= ButtonPermutations(BaseButtonOpenBoth);
Stylesheet = new Stylesheet(BaseRules.Concat(new StyleRule[] Stylesheet = new Stylesheet(BaseRules.Concat(new StyleRule[]
{ {
Element<Label>().Class(StyleClassLabelHeading) Element<Label>().Class(StyleClassLabelHeading)
@@ -63,74 +45,55 @@ namespace Content.Client.UserInterface.Stylesheets
{ {
BackgroundColor = SpaceRed, ContentMarginBottomOverride = 2, ContentMarginLeftOverride = 2 BackgroundColor = SpaceRed, ContentMarginBottomOverride = 2, ContentMarginLeftOverride = 2
}), }),
// Shapes for the buttons.
Element<ContainerButton>().Class(ContainerButton.StyleClassButton)
.Prop(ContainerButton.StylePropertyStyleBox, BaseButton),
// Normal buttons. Element<ContainerButton>().Class(ContainerButton.StyleClassButton)
.Class(ButtonOpenRight)
.Prop(ContainerButton.StylePropertyStyleBox, BaseButtonOpenRight),
Element<ContainerButton>().Class(ContainerButton.StyleClassButton)
.Class(ButtonOpenLeft)
.Prop(ContainerButton.StylePropertyStyleBox, BaseButtonOpenLeft),
Element<ContainerButton>().Class(ContainerButton.StyleClassButton)
.Class(ButtonOpenBoth)
.Prop(ContainerButton.StylePropertyStyleBox, BaseButtonOpenBoth),
// Colors for the buttons.
Element<ContainerButton>().Class(ContainerButton.StyleClassButton) Element<ContainerButton>().Class(ContainerButton.StyleClassButton)
.Pseudo(ContainerButton.StylePseudoClassNormal) .Pseudo(ContainerButton.StylePseudoClassNormal)
.Prop(ContainerButton.StylePropertyStyleBox, buttonNormal), .Prop(Control.StylePropertyModulateSelf, ButtonColorDefault),
Element<ContainerButton>().Class(ContainerButton.StyleClassButton) Element<ContainerButton>().Class(ContainerButton.StyleClassButton)
.Pseudo(ContainerButton.StylePseudoClassHover) .Pseudo(ContainerButton.StylePseudoClassHover)
.Prop(ContainerButton.StylePropertyStyleBox, buttonHover), .Prop(Control.StylePropertyModulateSelf, ButtonColorHovered),
Element<ContainerButton>().Class(ContainerButton.StyleClassButton) Element<ContainerButton>().Class(ContainerButton.StyleClassButton)
.Pseudo(ContainerButton.StylePseudoClassPressed) .Pseudo(ContainerButton.StylePseudoClassPressed)
.Prop(ContainerButton.StylePropertyStyleBox, buttonPressed), .Prop(Control.StylePropertyModulateSelf, ButtonColorPressed),
Element<ContainerButton>().Class(ContainerButton.StyleClassButton) Element<ContainerButton>().Class(ContainerButton.StyleClassButton)
.Pseudo(ContainerButton.StylePseudoClassDisabled) .Pseudo(ContainerButton.StylePseudoClassDisabled)
.Prop(ContainerButton.StylePropertyStyleBox, buttonDisabled), .Prop(Control.StylePropertyModulateSelf, ButtonColorDisabled),
// Right open buttons. // Colors for the caution buttons.
Element<ContainerButton>().Class(ContainerButton.StyleClassButton).Class(ButtonOpenRight) Element<ContainerButton>().Class(ContainerButton.StyleClassButton).Class(ButtonCaution)
.Pseudo(ContainerButton.StylePseudoClassNormal) .Pseudo(ContainerButton.StylePseudoClassNormal)
.Prop(ContainerButton.StylePropertyStyleBox, buttonRNormal), .Prop(Control.StylePropertyModulateSelf, ButtonColorCautionDefault),
Element<ContainerButton>().Class(ContainerButton.StyleClassButton).Class(ButtonOpenRight) Element<ContainerButton>().Class(ContainerButton.StyleClassButton).Class(ButtonCaution)
.Pseudo(ContainerButton.StylePseudoClassHover) .Pseudo(ContainerButton.StylePseudoClassHover)
.Prop(ContainerButton.StylePropertyStyleBox, buttonRHover), .Prop(Control.StylePropertyModulateSelf, ButtonColorCautionHovered),
Element<ContainerButton>().Class(ContainerButton.StyleClassButton).Class(ButtonOpenRight) Element<ContainerButton>().Class(ContainerButton.StyleClassButton).Class(ButtonCaution)
.Pseudo(ContainerButton.StylePseudoClassPressed) .Pseudo(ContainerButton.StylePseudoClassPressed)
.Prop(ContainerButton.StylePropertyStyleBox, buttonRPressed), .Prop(Control.StylePropertyModulateSelf, ButtonColorCautionPressed),
Element<ContainerButton>().Class(ContainerButton.StyleClassButton).Class(ButtonOpenRight) Element<ContainerButton>().Class(ContainerButton.StyleClassButton).Class(ButtonCaution)
.Pseudo(ContainerButton.StylePseudoClassDisabled) .Pseudo(ContainerButton.StylePseudoClassDisabled)
.Prop(ContainerButton.StylePropertyStyleBox, buttonRDisabled), .Prop(Control.StylePropertyModulateSelf, ButtonColorCautionDisabled),
// Left open buttons.
Element<ContainerButton>().Class(ContainerButton.StyleClassButton).Class(ButtonOpenLeft)
.Pseudo(ContainerButton.StylePseudoClassNormal)
.Prop(ContainerButton.StylePropertyStyleBox, buttonLNormal),
Element<ContainerButton>().Class(ContainerButton.StyleClassButton).Class(ButtonOpenLeft)
.Pseudo(ContainerButton.StylePseudoClassHover)
.Prop(ContainerButton.StylePropertyStyleBox, buttonLHover),
Element<ContainerButton>().Class(ContainerButton.StyleClassButton).Class(ButtonOpenLeft)
.Pseudo(ContainerButton.StylePseudoClassPressed)
.Prop(ContainerButton.StylePropertyStyleBox, buttonLPressed),
Element<ContainerButton>().Class(ContainerButton.StyleClassButton).Class(ButtonOpenLeft)
.Pseudo(ContainerButton.StylePseudoClassDisabled)
.Prop(ContainerButton.StylePropertyStyleBox, buttonLDisabled),
// "Both" open buttons
Element<ContainerButton>().Class(ContainerButton.StyleClassButton).Class(ButtonOpenBoth)
.Pseudo(ContainerButton.StylePseudoClassNormal)
.Prop(ContainerButton.StylePropertyStyleBox, buttonBNormal),
Element<ContainerButton>().Class(ContainerButton.StyleClassButton).Class(ButtonOpenBoth)
.Pseudo(ContainerButton.StylePseudoClassHover)
.Prop(ContainerButton.StylePropertyStyleBox, buttonBHover),
Element<ContainerButton>().Class(ContainerButton.StyleClassButton).Class(ButtonOpenBoth)
.Pseudo(ContainerButton.StylePseudoClassPressed)
.Prop(ContainerButton.StylePropertyStyleBox, buttonBPressed),
Element<ContainerButton>().Class(ContainerButton.StyleClassButton).Class(ButtonOpenBoth)
.Pseudo(ContainerButton.StylePseudoClassDisabled)
.Prop(ContainerButton.StylePropertyStyleBox, buttonBDisabled),
Element<Label>().Class(ContainerButton.StyleClassButton) Element<Label>().Class(ContainerButton.StyleClassButton)