[gnome-shell] extensionPrefs: Add switches to enable/disable extensions
- From: Florian Müllner <fmuellner src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-shell] extensionPrefs: Add switches to enable/disable extensions
- Date: Tue, 27 May 2014 16:04:33 +0000 (UTC)
commit 521f5f2b6b49f577c4a53d5af9b57f7eb6ba58b1
Author: Florian Müllner <fmuellner gnome org>
Date: Mon May 26 23:40:26 2014 +0200
extensionPrefs: Add switches to enable/disable extensions
Bring the extension-prefs tool in line with the mockup by adding
switches to enable/disable extensions, similar to the extension
page in gnome-tweak-tool.
https://bugzilla.gnome.org/show_bug.cgi?id=730829
js/extensionPrefs/main.js | 44 ++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 44 insertions(+), 0 deletions(-)
---
diff --git a/js/extensionPrefs/main.js b/js/extensionPrefs/main.js
index 1dd09b1..3c86498 100644
--- a/js/extensionPrefs/main.js
+++ b/js/extensionPrefs/main.js
@@ -259,6 +259,12 @@ const ExtensionRow = new Lang.Class({
this.uuid = uuid;
+ this._settings = new Gio.Settings({ schema: 'org.gnome.shell' });
+ this._settings.connect('changed::enabled-extensions', Lang.bind(this,
+ function() {
+ this._switch.state = this._isEnabled();
+ }));
+
this._buildUI();
},
@@ -294,6 +300,44 @@ const ExtensionRow = new Lang.Class({
hbox.add(button);
this.prefsButton = button;
+
+ this._switch = new Gtk.Switch({ valign: Gtk.Align.CENTER,
+ state: this._isEnabled() });
+ this._switch.connect('notify::active', Lang.bind(this,
+ function() {
+ if (this._switch.active)
+ this._enable();
+ else
+ this._disable();
+ }));
+ this._switch.connect('state-set', function() { return true; });
+ hbox.add(this._switch);
+ },
+
+ _isEnabled: function() {
+ let extensions = this._settings.get_strv('enabled-extensions');
+ return extensions.indexOf(this.uuid) != -1;
+ },
+
+ _enable: function() {
+ let extensions = this._settings.get_strv('enabled-extensions');
+ if (extensions.indexOf(this.uuid) != -1)
+ return;
+
+ extensions.push(this.uuid);
+ this._settings.set_strv('enabled-extensions', extensions);
+ },
+
+ _disable: function() {
+ let extensions = this._settings.get_strv('enabled-extensions');
+ let pos = extensions.indexOf(this.uuid);
+ if (pos == -1)
+ return;
+ do {
+ extensions.splice(pos, 1);
+ pos = extensions.indexOf(this.uuid);
+ } while (pos != -1);
+ this._settings.set_strv('enabled-extensions', extensions);
}
});
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]