2021-05-10 22:03:41 +00:00
|
|
|
const GLib = imports.gi.GLib
|
2020-11-10 02:15:36 +00:00
|
|
|
const GObject = imports.gi.GObject
|
|
|
|
const Gtk = imports.gi.Gtk
|
2021-05-10 22:03:41 +00:00
|
|
|
const Me = imports.misc.extensionUtils.getCurrentExtension()
|
|
|
|
const Convenience = Me.imports.convenience
|
|
|
|
const Override = Me.imports.overrides.helper
|
2020-11-10 02:15:36 +00:00
|
|
|
|
|
|
|
var PrefsWidget = GObject.registerClass(
|
|
|
|
class UnitePrefsWidget extends Gtk.Box {
|
|
|
|
_init(params) {
|
|
|
|
super._init(params)
|
|
|
|
|
2021-05-10 22:03:41 +00:00
|
|
|
this._settings = Convenience.getSettings()
|
2020-11-10 02:15:36 +00:00
|
|
|
this._buildable = new Gtk.Builder()
|
|
|
|
|
2021-05-10 22:03:41 +00:00
|
|
|
Override.inject(this, 'prefs', 'PrefsWidget')
|
2020-11-10 02:15:36 +00:00
|
|
|
|
2021-05-10 22:03:41 +00:00
|
|
|
this._loadTemplate()
|
2020-11-10 02:15:36 +00:00
|
|
|
this._bindStrings()
|
|
|
|
this._bindSelects()
|
|
|
|
this._bindBooleans()
|
|
|
|
this._bindEnumerations()
|
2021-03-14 02:42:28 +00:00
|
|
|
this._bindIntegers()
|
2020-11-10 02:15:36 +00:00
|
|
|
}
|
|
|
|
|
2021-05-10 22:03:41 +00:00
|
|
|
_loadTemplate() {
|
|
|
|
const template = GLib.build_filenamev([Me.path, 'settings.ui'])
|
|
|
|
this._buildable.add_from_file(template)
|
2021-04-12 21:48:16 +00:00
|
|
|
|
2021-05-10 22:03:41 +00:00
|
|
|
this._container = this._getWidget('prefs_widget')
|
|
|
|
this.append(this._container)
|
2021-04-12 21:48:16 +00:00
|
|
|
}
|
|
|
|
|
2020-11-10 02:15:36 +00:00
|
|
|
_getWidget(name) {
|
|
|
|
let widgetName = name.replace(/-/g, '_')
|
|
|
|
return this._buildable.get_object(widgetName)
|
|
|
|
}
|
|
|
|
|
|
|
|
_bindInput(setting, prop) {
|
|
|
|
let widget = this._getWidget(setting)
|
|
|
|
this._settings.bind(setting, widget, prop, this._settings.DEFAULT_BINDING)
|
|
|
|
}
|
|
|
|
|
|
|
|
_bindEnum(setting) {
|
|
|
|
let widget = this._getWidget(setting)
|
|
|
|
widget.set_active(this._settings.get_enum(setting))
|
|
|
|
|
2021-05-10 22:03:41 +00:00
|
|
|
widget.connect('changed', combobox => {
|
2020-11-10 02:15:36 +00:00
|
|
|
this._settings.set_enum(setting, combobox.get_active())
|
|
|
|
})
|
|
|
|
}
|
|
|
|
|
|
|
|
_bindStrings() {
|
|
|
|
let settings = this._settings.getTypeSettings('string')
|
2021-05-10 22:03:41 +00:00
|
|
|
settings.forEach(setting => this._bindInput(setting, 'text'))
|
2020-11-10 02:15:36 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
_bindSelects() {
|
|
|
|
let settings = this._settings.getTypeSettings('select')
|
2021-05-10 22:03:41 +00:00
|
|
|
settings.forEach(setting => this._bindInput(setting, 'active-id'))
|
2020-11-10 02:15:36 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
_bindBooleans() {
|
|
|
|
let settings = this._settings.getTypeSettings('boolean')
|
2021-05-10 22:03:41 +00:00
|
|
|
settings.forEach(setting => this._bindInput(setting, 'active'))
|
2020-11-10 02:15:36 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
_bindEnumerations() {
|
|
|
|
let settings = this._settings.getTypeSettings('enum')
|
2021-05-10 22:03:41 +00:00
|
|
|
settings.forEach(setting => this._bindEnum(setting))
|
2020-11-10 02:15:36 +00:00
|
|
|
}
|
2021-03-14 02:42:28 +00:00
|
|
|
|
|
|
|
_bindIntegers() {
|
|
|
|
let settings = this._settings.getTypeSettings('int')
|
2021-05-10 22:03:41 +00:00
|
|
|
settings.forEach(setting => this._bindInput(setting, 'value'))
|
2021-03-14 02:42:28 +00:00
|
|
|
}
|
2020-11-10 02:15:36 +00:00
|
|
|
}
|
|
|
|
)
|
|
|
|
|
|
|
|
function init() {
|
|
|
|
Convenience.initTranslations()
|
|
|
|
}
|
|
|
|
|
|
|
|
function buildPrefsWidget() {
|
2021-05-10 22:03:41 +00:00
|
|
|
return new PrefsWidget()
|
2020-11-10 02:15:36 +00:00
|
|
|
}
|