RaveOS-Gnome/releng/airootfs/usr/share/gnome-shell/extensions/unity-like-appswitcher@gonza.com/prefs.js
2025-03-15 15:27:53 +01:00

60 lines
1.4 KiB
JavaScript

import Adw from 'gi://Adw';
import GObject from "gi://GObject";
import Gio from "gi://Gio";
import Gtk from "gi://Gtk";
import { ExtensionPreferences } from 'resource:///org/gnome/Shell/Extensions/js/extensions/prefs.js';
class PrefsWidget {
constructor(schema) {
this._buildable = new Gtk.Builder();
this._buildable.add_from_file(
Gio.File.new_for_uri(import.meta.url).get_parent().get_path() + '/settings.ui'
);
let prefsWidget = this._getWidget('prefs_widget');
this._settings = schema;
this._bindBooleans();
this._settings.connect(
'changed::first-change-window',
this._firstChangeWindowChanged.bind(this)
);
this._firstChangeWindowChanged();
}
_getWidget(name) {
let wname = name.replace(/-/g, '_');
return this._buildable.get_object(wname);
}
_getBooleans() {
return [
'first-change-window'
];
}
_bindBoolean(setting) {
let widget = this._getWidget(setting);
this._settings.bind(setting, widget, 'active', Gio.SettingsBindFlags.DEFAULT);
}
_bindBooleans() {
this._getBooleans().forEach(this._bindBoolean, this);
}
_firstChangeWindowChanged() {
this._settings.get_boolean('first-change-window');
}
}
export default class UnityLikeAppSwitcherPreferences extends ExtensionPreferences {
fillPreferencesWindow (window) {
window._settings = this.getSettings();
const widget = new PrefsWidget(window._settings);
window.add(widget._getWidget('prefs_widget'));
}
}