123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153 |
- 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;
- }
|