diff --git a/docs/changelog.md b/docs/changelog.md
index 50324ee..1451fc6 100644
--- a/docs/changelog.md
+++ b/docs/changelog.md
@@ -5,6 +5,14 @@ SPDX-License-Identifier: CC-BY-4.0
# Changelog of the Burn-My-Windows Extension
+## [Burn My Windows 36](https://github.com/schneegans/Burn-My-Windows/releases/tag/v36)
+
+**Release Date:** TBD
+
+#### New Features
+
+- Two convenience buttons have been added to the preferences dialog. One allows you to select all effects, the other one allows you to deselect all effects.
+
## [Burn My Windows 35](https://github.com/schneegans/Burn-My-Windows/releases/tag/v35)
**Release Date:** 2023-07-03
diff --git a/prefs.js b/prefs.js
index c751fc1..0e4a1ba 100644
--- a/prefs.js
+++ b/prefs.js
@@ -197,6 +197,19 @@ var PreferencesDialog = class PreferencesDialog {
// This is our top-level widget which we will return later.
this._widget = this._builder.get_object('general-prefs');
+ // Add the functionality to the choose-all and choose-none buttons.
+ this._builder.get_object('choose-all-effects-button').connect('clicked', () => {
+ this._ALL_EFFECTS.forEach(effect => {
+ this.getProfileSettings().set_boolean(`${effect.getNick()}-enable-effect`, true);
+ });
+ });
+
+ this._builder.get_object('choose-no-effects-button').connect('clicked', () => {
+ this._ALL_EFFECTS.forEach(effect => {
+ this.getProfileSettings().set_boolean(`${effect.getNick()}-enable-effect`, false);
+ });
+ });
+
// Then add a preferences group for the effect expander rows.
const group = this._builder.get_object('effects-group');
@@ -297,12 +310,12 @@ var PreferencesDialog = class PreferencesDialog {
}
});
this._effectRows.push(row);
- row.add_action(previewButton);
+ row.add_action(button);
} else {
- row.add_suffix(previewButton);
+ row.add_suffix(button);
}
- row.add_prefix(button);
+ row.add_prefix(previewButton);
group.add(row);
@@ -321,9 +334,9 @@ var PreferencesDialog = class PreferencesDialog {
{label: effect.getLabel(), hexpand: true, halign: Gtk.Align.START});
label.get_style_context().add_class('heading');
- this.gtkBoxAppend(header, button);
- this.gtkBoxAppend(header, label);
this.gtkBoxAppend(header, previewButton);
+ this.gtkBoxAppend(header, label);
+ this.gtkBoxAppend(header, button);
this.gtkBoxAppend(container, header);
if (hasPrefs) {
diff --git a/resources/ui/adw/prefs.ui b/resources/ui/adw/prefs.ui
index 40e9858..6af6fca 100644
--- a/resources/ui/adw/prefs.ui
+++ b/resources/ui/adw/prefs.ui
@@ -221,10 +221,10 @@ SPDX-License-Identifier: GPL-3.0-or-later
20
20
20
- Effect Settings
+ Effect Selection
If multiple are selected, one is chosen randomly.
-
+
diff --git a/resources/ui/gtk3/prefs.ui b/resources/ui/gtk3/prefs.ui
index badce07..d7d1654 100644
--- a/resources/ui/gtk3/prefs.ui
+++ b/resources/ui/gtk3/prefs.ui
@@ -120,19 +120,55 @@ SPDX-License-Identifier: GPL-3.0-or-later
5
-
-
+