File: prefs.js

package info (click to toggle)
gnome-shell-extension-vertical-overview 10-1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 284 kB
  • sloc: javascript: 2,196; xml: 90; makefile: 19
file content (64 lines) | stat: -rw-r--r-- 2,237 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
const __DEBUG__ = true;
const { GObject, Gtk } = imports.gi;
const ExtensionUtils = imports.misc.extensionUtils;
const Self = ExtensionUtils.getCurrentExtension();
const Util = Self.imports.util;

const BuilderScope = GObject.registerClass({
    GTypeName: 'VerticalOverviewBuilderScope',
    Implements: [Gtk.BuilderScope],
}, class BuilderScope extends GObject.Object {
    _init() {
        super._init()
        this.settings = ExtensionUtils.getSettings('org.gnome.shell.extensions.vertical-overview');
    }

    vfunc_create_closure(builder, handlerName, flags, connectObject) {
        if (flags & Gtk.BuilderClosureFlags.SWAPPED)
            throw new Error('Unsupported template signal flag "swapped"');

        if (typeof this[handlerName] === 'undefined')
            throw new Error(`${handlerName} is undefined`);

        return this[handlerName].bind(connectObject || this);
    }

    _onIntValueChanged(value) {
        let current = this.settings.get_int(value.name);
        if (value.value != current) {
            if (__DEBUG__) log('value-changed: ' + value.name + " -> " + value.value);
            this.settings.set_int(value.name, value.value);
        }
    }

    _onBoolValueChanged(value) {
        let current = this.settings.get_boolean(value.name);
        if (value.active != current) {
            if (__DEBUG__) log('value-changed: ' + value.name + " -> " + value.active);
            this.settings.set_boolean(value.name, value.active);
        }
    }
});

function init() { }

function buildPrefsWidget() {

    let builder = new Gtk.Builder();

    builder.set_scope(new BuilderScope());
    builder.set_translation_domain('gettext-domain');
    builder.add_from_file(Self.dir.get_path() + '/settings.ui');

    let settings = ExtensionUtils.getSettings('org.gnome.shell.extensions.vertical-overview');
    for (var key of settings.list_keys()) {
        let obj = builder.get_object(key);
        let value = settings.get_value(key);
        switch (value.get_type_string()) {
            case "i": obj.set_property('value', value.get_int32()); break;
            case "b": obj.set_property('active', value.get_boolean()); break;
        }
    }

    return builder.get_object('main_widget');
}