]> git.smokeofanarchy.ru Git - space-station-14.git/commitdiff
add: air alarm scrubber select all gases button (#39296)
authorqwerltaz <69696513+qwerltaz@users.noreply.github.com>
Tue, 5 Aug 2025 00:34:10 +0000 (02:34 +0200)
committerGitHub <noreply@github.com>
Tue, 5 Aug 2025 00:34:10 +0000 (17:34 -0700)
* add select all gases button

* now make it work

* localize

* refactor

* remove redundant Orientation

Co-authored-by: Perry Fraser <perryprog@users.noreply.github.com>
* remove useless HorizontalExpand

Co-authored-by: Perry Fraser <perryprog@users.noreply.github.com>
* add nice newline

Co-authored-by: Perry Fraser <perryprog@users.noreply.github.com>
* deduplicate Enum.GetValues<Gas> usage

---------

Co-authored-by: Perry Fraser <perryprog@users.noreply.github.com>
Content.Client/Atmos/Monitor/UI/Widgets/ScrubberControl.xaml
Content.Client/Atmos/Monitor/UI/Widgets/ScrubberControl.xaml.cs
Resources/Locale/en-US/atmos/air-alarm-ui.ftl

index 34c1a9dd1a9ec9e6e9550cf60b7d95f30e971dab..85f63731fb3f423061de4a701c62c07abf19bc5d 100644 (file)
                 <Collapsible Margin="2 2 2 2">
                     <CollapsibleHeading Title="Gas filters" />
                     <CollapsibleBody Margin="20 0 0 0">
-                        <GridContainer HorizontalExpand="True" Name="CGasContainer" Columns="3" />
+                        <BoxContainer Orientation="Vertical">
+                            <BoxContainer Margin="2">
+                                <Button Name="CSelectAll" Text="{Loc 'air-alarm-ui-scrubber-select-all-gases-label'}" />
+                                <Button Name="CDeselectAll" Text="{Loc 'air-alarm-ui-scrubber-deselect-all-gases-label'}" />
+                            </BoxContainer>
+                            <GridContainer Name="CGasContainer" Columns="3" />
+                        </BoxContainer>
                     </CollapsibleBody>
                 </Collapsible>
             </BoxContainer>
index 9762f63992774cb9ad5f9ff34191b74d15b5f868..6a233b8c3ffb67830431836fbf5e2e47aebe1f68 100644 (file)
@@ -22,6 +22,8 @@ public sealed partial class ScrubberControl : BoxContainer
     private FloatSpinBox _volumeRate => CVolumeRate;
     private CheckBox _wideNet => CWideNet;
     private Button _copySettings => CCopySettings;
+    private Button _selectAll => CSelectAll;
+    private Button _deselectAll => CDeselectAll;
 
     private GridContainer _gases => CGasContainer;
     private Dictionary<Gas, Button> _gasControls = new();
@@ -78,7 +80,20 @@ public sealed partial class ScrubberControl : BoxContainer
             ScrubberDataCopied?.Invoke(_data);
         };
 
-        foreach (var value in Enum.GetValues<Gas>())
+        var allGases = Enum.GetValues<Gas>();
+        _selectAll.OnPressed += _ =>
+        {
+            _data.FilterGases = new HashSet<Gas>(allGases);
+            ScrubberDataChanged?.Invoke(_address, _data);
+        };
+
+        _deselectAll.OnPressed += _ =>
+        {
+            _data.FilterGases = [];
+            ScrubberDataChanged?.Invoke(_address, _data);
+        };
+
+        foreach (var value in allGases)
         {
             var gasButton = new Button
             {
index b5bd4aedb80957addf845af378330075ad73d13d..28cb58242eb91e5d54e9b3aa9040089d57cf4c5f 100644 (file)
@@ -69,6 +69,8 @@ air-alarm-ui-vent-internal-bound-label = Internal bound
 air-alarm-ui-scrubber-pump-direction-label = Direction
 air-alarm-ui-scrubber-volume-rate-label = Rate (L)
 air-alarm-ui-scrubber-wide-net-label = WideNet
+air-alarm-ui-scrubber-select-all-gases-label = Select all
+air-alarm-ui-scrubber-deselect-all-gases-label = Deselect all
 
 ### Thresholds