154 lines
4.2 KiB
JavaScript
154 lines
4.2 KiB
JavaScript
|
|
||
|
const GObject = imports.gi.GObject;
|
||
|
const Gtk = imports.gi.Gtk;
|
||
|
|
||
|
const Gettext = imports.gettext.domain('appfolders-manager');
|
||
|
const _ = Gettext.gettext;
|
||
|
|
||
|
const ExtensionUtils = imports.misc.extensionUtils;
|
||
|
const Me = ExtensionUtils.getCurrentExtension();
|
||
|
const Convenience = Me.imports.convenience;
|
||
|
|
||
|
//-----------------------------------------------
|
||
|
|
||
|
const appfoldersManagerSettingsWidget = new GObject.Class({
|
||
|
Name: 'appfoldersManager.Prefs.Widget',
|
||
|
GTypeName: 'appfoldersManagerPrefsWidget',
|
||
|
Extends: Gtk.Box,
|
||
|
|
||
|
_init: function (params) {
|
||
|
this.parent(params);
|
||
|
this.margin = 30;
|
||
|
this.spacing = 18;
|
||
|
this.set_orientation(Gtk.Orientation.VERTICAL);
|
||
|
|
||
|
this._settings = Convenience.getSettings('org.gnome.shell.extensions.appfolders-manager');
|
||
|
this._settings.set_boolean('debug', this._settings.get_boolean('debug'));
|
||
|
|
||
|
//----------------------------
|
||
|
|
||
|
let labelMain = new Gtk.Label({
|
||
|
label: _("Modifications will be effective after reloading the extension."),
|
||
|
use_markup: true,
|
||
|
wrap: true,
|
||
|
halign: Gtk.Align.START
|
||
|
});
|
||
|
this.add(labelMain);
|
||
|
|
||
|
let generalSection = this.add_section(_("Main settings"));
|
||
|
let categoriesSection = this.add_section(_("Categories"));
|
||
|
|
||
|
//----------------------------
|
||
|
|
||
|
// let autoDeleteBox = this.build_switch('auto-deletion',
|
||
|
// _("Delete automatically empty folders"));
|
||
|
let deleteAllBox = this.build_switch('total-deletion',
|
||
|
_("Delete all related settings when an appfolder is deleted"));
|
||
|
let menusBox = this.build_switch('extend-menus',
|
||
|
_("Use the right-click menus in addition to the drag-and-drop"));
|
||
|
|
||
|
// this.add_row(autoDeleteBox, generalSection);
|
||
|
this.add_row(deleteAllBox, generalSection);
|
||
|
this.add_row(menusBox, generalSection);
|
||
|
|
||
|
//-------------------------
|
||
|
|
||
|
let categoriesBox = this.build_switch('categories', _("Use categories"));
|
||
|
|
||
|
let categoriesLinkButton = new Gtk.LinkButton({
|
||
|
label: _("More informations about \"additional categories\""),
|
||
|
uri: "https://standards.freedesktop.org/menu-spec/latest/apas02.html"
|
||
|
});
|
||
|
|
||
|
this.add_row(categoriesBox, categoriesSection);
|
||
|
this.add_row(categoriesLinkButton, categoriesSection);
|
||
|
|
||
|
//-------------------------
|
||
|
|
||
|
let aboutBox = new Gtk.Box({ orientation: Gtk.Orientation.HORIZONTAL, spacing: 10 });
|
||
|
let about_label = new Gtk.Label({
|
||
|
label: '(v' + Me.metadata.version.toString() + ')',
|
||
|
halign: Gtk.Align.START
|
||
|
});
|
||
|
let url_button = new Gtk.LinkButton({
|
||
|
label: _("Report bugs or ideas"),
|
||
|
uri: Me.metadata.url.toString()
|
||
|
});
|
||
|
aboutBox.pack_start(url_button, false, false, 0);
|
||
|
aboutBox.pack_end(about_label, false, false, 0);
|
||
|
|
||
|
this.pack_end(aboutBox, false, false, 0);
|
||
|
|
||
|
//-------------------------
|
||
|
|
||
|
let desacLabel = new Gtk.Label({
|
||
|
label: _("This extension can be deactivated once your applications are organized as wished."),
|
||
|
wrap: true,
|
||
|
halign: Gtk.Align.CENTER
|
||
|
});
|
||
|
this.pack_end(desacLabel, false, false, 0);
|
||
|
},
|
||
|
|
||
|
add_section: function (titre) {
|
||
|
let section = new Gtk.Box({
|
||
|
orientation: Gtk.Orientation.VERTICAL,
|
||
|
margin: 6,
|
||
|
spacing: 6,
|
||
|
});
|
||
|
|
||
|
let frame = new Gtk.Frame({
|
||
|
label: titre,
|
||
|
label_xalign: 0.1,
|
||
|
});
|
||
|
frame.add(section);
|
||
|
this.add(frame);
|
||
|
return section;
|
||
|
},
|
||
|
|
||
|
add_row: function (filledbox, section) {
|
||
|
section.add(filledbox);
|
||
|
},
|
||
|
|
||
|
build_switch: function (key, label) {
|
||
|
let rowLabel = new Gtk.Label({
|
||
|
label: label,
|
||
|
halign: Gtk.Align.START,
|
||
|
wrap: true,
|
||
|
visible: true,
|
||
|
});
|
||
|
|
||
|
let rowSwitch = new Gtk.Switch({ valign: Gtk.Align.CENTER });
|
||
|
rowSwitch.set_state(this._settings.get_boolean(key));
|
||
|
rowSwitch.connect('notify::active', (widget) => {
|
||
|
this._settings.set_boolean(key, widget.active);
|
||
|
});
|
||
|
|
||
|
let rowBox = new Gtk.Box({
|
||
|
orientation: Gtk.Orientation.HORIZONTAL,
|
||
|
spacing: 15,
|
||
|
margin: 6,
|
||
|
visible: true,
|
||
|
});
|
||
|
rowBox.pack_start(rowLabel, false, false, 0);
|
||
|
rowBox.pack_end(rowSwitch, false, false, 0);
|
||
|
|
||
|
return rowBox;
|
||
|
},
|
||
|
});
|
||
|
|
||
|
//-----------------------------------------------
|
||
|
|
||
|
function init() {
|
||
|
Convenience.initTranslations();
|
||
|
}
|
||
|
|
||
|
//I guess this is like the "enable" in extension.js : something called each
|
||
|
//time he user try to access the settings' window
|
||
|
function buildPrefsWidget () {
|
||
|
let widget = new appfoldersManagerSettingsWidget();
|
||
|
widget.show_all();
|
||
|
|
||
|
return widget;
|
||
|
}
|
||
|
|