| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141 |
- /* exported GeneralPage*/
- import Adw from 'gi://Adw';
- import Gtk from 'gi://Gtk';
- import GObject from 'gi://GObject';
- import {gettext as _} from 'resource:///org/gnome/Shell/Extensions/js/extensions/prefs.js';
- export var GeneralPage = GObject.registerClass(
- class AppIndicatorGeneralPage extends Adw.PreferencesPage {
- _init(settings, settingsKey) {
- super._init({
- title: _('General'),
- icon_name: 'general-preferences-symbolic',
- name: 'General Page',
- });
- this._settings = settings;
- this._settingsKey = settingsKey;
- this.group = new Adw.PreferencesGroup(); // no title since only single group
- const legacyTraySwitch = new Adw.SwitchRow({
- title: _('Enable Legacy Tray Icons support'),
- subtitle: _('Add X11 legacy tray icons to the panel area'),
- active: this._settings.get_boolean(this._settingsKey.LEGACY_TRAY_ENABLED),
- });
- legacyTraySwitch.connect('notify::active', widget =>
- this._settings.set_boolean(this._settingsKey.LEGACY_TRAY_ENABLED,
- widget.get_active()));
- this.group.add(legacyTraySwitch);
- this._createSpinRow({
- title: _('Opacity'),
- settingsKey: this._settingsKey.ICON_OPACITY,
- from: 0,
- to: 255,
- step: 1,
- round: true,
- });
- this._createSpinRow({
- title: _('Desaturation'),
- settingsKey: this._settingsKey.ICON_SATURATION,
- from: 0.0,
- to: 1.0,
- step: 0.1,
- });
- this._createSpinRow({
- title: _('Brightness'),
- settingsKey: this._settingsKey.ICON_BRIGHTNESS,
- from: -1.0,
- to: 1.0,
- step: 0.1,
- });
- this._createSpinRow({
- title: _('Contrast'),
- settingsKey: this._settingsKey.ICON_CONTRAST,
- from: -1.0,
- to: 1.0,
- step: 0.1,
- });
- this._createSpinRow({
- title: _('Icon Size'),
- settingsKey: this._settingsKey.ICON_SIZE,
- from: 0,
- to: 96,
- step: 2,
- round: true,
- });
- const alignmentList = new Gtk.StringList();
- const comboItems = [
- {pos: 'center', label: _('Center')},
- {pos: 'left', label: _('Left')},
- {pos: 'right', label: _('Right')},
- ];
- comboItems.forEach(item => alignmentList.append(item.label));
- const combo = new Adw.ComboRow({
- title: _('Tray Horizontal Alignment'),
- model: alignmentList,
- });
- const trayPos = this._settings.get_string(this._settingsKey.TRAY_POS);
- combo.set_selected(comboItems.findIndex(item => trayPos === item.pos));
- combo.connect('notify::selected', widget => this._settings.set_string(
- this._settingsKey.TRAY_POS, comboItems[widget.get_selected()].pos));
- this.group.add(combo);
- this.add(this.group);
- }
- _createSpinRow(args) {
- let title = args.title || 'Default Title';
- let subtitle = args.subtitle || null;
- let settingsKey = args.settingsKey || '';
- let from = args.from || 0;
- let to = args.to || 100;
- let step = args.step || 1;
- let round = args.round || false;
- let spin = Adw.SpinRow.new_with_range(from, to, step);
- spin.title = title;
- if (subtitle !== null)
- spin.subtitle = subtitle;
- if (round)
- spin.set_value(this._settings.get_int(settingsKey));
- else
- spin.set_value(this._settings.get_int(settingsKey));
- spin.connect('input', widget => {
- if (round)
- this._settings.set_int(settingsKey, parseInt(widget.get_value(), 10));
- else
- this._settings.set_double(settingsKey, widget.get_value());
- return false;
- });
- spin.connect('output', widget => {
- if (round)
- this._settings.set_int(settingsKey, parseInt(widget.get_value(), 10));
- else
- this._settings.set_double(settingsKey, widget.get_value());
- return false;
- });
- this.group.add(spin);
- }
- });
|