From 8ed1a9e19cc7badc262a3a5eb2620af05b1b2c45 Mon Sep 17 00:00:00 2001 From: Vera Aguilera Puerto Date: Thu, 29 Jul 2021 12:55:22 +0200 Subject: [PATCH] Add ButtonHelpers and the SetButtonDisabledRecursive helper. Fixes the mess from the other day. --- Content.Client/AME/UI/AMEWindow.xaml.cs | 3 +- .../Chemistry/UI/ChemMasterWindow.cs | 3 +- .../Chemistry/UI/ReagentDispenserWindow.cs | 3 +- Content.Client/UserInterface/ButtonHelpers.cs | 31 +++++++++++++++++++ 4 files changed, 37 insertions(+), 3 deletions(-) create mode 100644 Content.Client/UserInterface/ButtonHelpers.cs diff --git a/Content.Client/AME/UI/AMEWindow.xaml.cs b/Content.Client/AME/UI/AMEWindow.xaml.cs index c55a18efcf..90c345faf7 100644 --- a/Content.Client/AME/UI/AMEWindow.xaml.cs +++ b/Content.Client/AME/UI/AMEWindow.xaml.cs @@ -1,3 +1,4 @@ +using Content.Client.UserInterface; using Robust.Client.AutoGenerated; using Robust.Client.UserInterface; using Robust.Client.UserInterface.Controls; @@ -35,7 +36,7 @@ namespace Content.Client.AME.UI // Disable all buttons if not powered if (Contents.Children != null) { - SetButtonDisabledRecursive(Contents, !castState.HasPower); + ButtonHelpers.SetButtonDisabledRecursive(Contents, !castState.HasPower); EjectButton.Disabled = false; } diff --git a/Content.Client/Chemistry/UI/ChemMasterWindow.cs b/Content.Client/Chemistry/UI/ChemMasterWindow.cs index 1bd7b63202..5f3a895e35 100644 --- a/Content.Client/Chemistry/UI/ChemMasterWindow.cs +++ b/Content.Client/Chemistry/UI/ChemMasterWindow.cs @@ -1,6 +1,7 @@ using System; using System.Linq; using Content.Client.Stylesheets; +using Content.Client.UserInterface; using Content.Shared.Chemistry.Components; using Content.Shared.Chemistry.Reagent; using Robust.Client.Graphics; @@ -279,7 +280,7 @@ namespace Content.Client.Chemistry.UI UpdatePanelInfo(castState); if (Contents.Children != null) { - SetButtonDisabledRecursive(Contents, !castState.HasPower); + ButtonHelpers.SetButtonDisabledRecursive(Contents, !castState.HasPower); EjectButton.Disabled = !castState.HasBeaker; } } diff --git a/Content.Client/Chemistry/UI/ReagentDispenserWindow.cs b/Content.Client/Chemistry/UI/ReagentDispenserWindow.cs index 4dc65be1ad..34311fb74d 100644 --- a/Content.Client/Chemistry/UI/ReagentDispenserWindow.cs +++ b/Content.Client/Chemistry/UI/ReagentDispenserWindow.cs @@ -1,5 +1,6 @@ using System.Collections.Generic; using Content.Client.Stylesheets; +using Content.Client.UserInterface; using Content.Shared.Chemistry.Dispenser; using Content.Shared.Chemistry.Reagent; using Robust.Client.Graphics; @@ -186,7 +187,7 @@ namespace Content.Client.Chemistry.UI // Disable all buttons if not powered if (Contents.Children != null) { - SetButtonDisabledRecursive(Contents, !castState.HasPower); + ButtonHelpers.SetButtonDisabledRecursive(Contents, !castState.HasPower); EjectButton.Disabled = false; } diff --git a/Content.Client/UserInterface/ButtonHelpers.cs b/Content.Client/UserInterface/ButtonHelpers.cs new file mode 100644 index 0000000000..38abc8684c --- /dev/null +++ b/Content.Client/UserInterface/ButtonHelpers.cs @@ -0,0 +1,31 @@ +using Robust.Client.UserInterface; +using Robust.Client.UserInterface.Controls; + +namespace Content.Client.UserInterface +{ + public static class ButtonHelpers + { + /// + /// This searches recursively through all the children of "parent" + /// and sets the Disabled value of any buttons found to "val" + /// + /// The control which childrens get searched + /// The value to which disabled gets set + public static void SetButtonDisabledRecursive(Control parent, bool val) + { + foreach (var child in parent.Children) + { + if (child is Button but) + { + but.Disabled = val; + continue; + } + + if (child.ChildCount > 0) + { + SetButtonDisabledRecursive(child, val); + } + } + } + } +}