From 01701538bb7fb3f356230ec98d742ace5b269f66 Mon Sep 17 00:00:00 2001 From: abakkk Date: Sun, 23 Aug 2020 11:49:26 +0200 Subject: [PATCH] minor, rework settings --- area.js | 2 - extension.js | 49 ++++++++++-------- helper.js | 25 +++++---- prefs.js | 15 +++--- schemas/gschemas.compiled | Bin 4544 -> 4888 bytes ...extensions.draw-on-your-screen.gschema.xml | 3 ++ 6 files changed, 51 insertions(+), 43 deletions(-) diff --git a/area.js b/area.js index 2684308..f2d9c34 100644 --- a/area.js +++ b/area.js @@ -36,7 +36,6 @@ const Main = imports.ui.main; const Screenshot = imports.ui.screenshot; const Me = ExtensionUtils.getCurrentExtension(); -const Convenience = ExtensionUtils.getSettings ? ExtensionUtils : Me.imports.convenience; const Extension = Me.imports.extension; const Elements = Me.imports.elements; const Files = Me.imports.files; @@ -73,7 +72,6 @@ var DrawingArea = new Lang.Class({ this.connect('destroy', this._onDestroy.bind(this)); this.reactiveHandler = this.connect('notify::reactive', this._onReactiveChanged.bind(this)); - this.settings = Convenience.getSettings(); this.monitor = monitor; this.helper = helper; diff --git a/extension.js b/extension.js index a253683..632cb8e 100644 --- a/extension.js +++ b/extension.js @@ -28,11 +28,11 @@ const Shell = imports.gi.Shell; const St = imports.gi.St; const Config = imports.misc.config; +const ExtensionUtils = imports.misc.extensionUtils; const Main = imports.ui.main; const OsdWindow = imports.ui.osdWindow; const PanelMenu = imports.ui.panelMenu; -const ExtensionUtils = imports.misc.extensionUtils; const Me = ExtensionUtils.getCurrentExtension(); const Convenience = ExtensionUtils.getSettings && ExtensionUtils.initTranslations ? ExtensionUtils : Me.imports.convenience; const Area = Me.imports.area; @@ -55,12 +55,16 @@ function init() { } function enable() { + Me.settings = Convenience.getSettings(); + Me.internalShortcutSettings = Convenience.getSettings(Me.metadata['settings-schema'] + '.internal-shortcuts'); manager = new AreaManager(); } function disable() { manager.disable(); manager = null; + delete Me.settings; + delete Me.internalShortcutSettings; } // AreaManager assigns one DrawingArea per monitor (updateAreas()), @@ -70,26 +74,25 @@ var AreaManager = new Lang.Class({ Name: 'DrawOnYourScreenAreaManager', _init: function() { - this.settings = Convenience.getSettings(); this.areas = []; this.activeArea = null; this.enterGicon = new Gio.ThemedIcon({ name: 'applications-graphics-symbolic' }); this.leaveGicon = new Gio.ThemedIcon({ name: 'application-exit-symbolic' }); Main.wm.addKeybinding('toggle-drawing', - this.settings, + Me.settings, Meta.KeyBindingFlags.NONE, Shell.ActionMode.ALL, this.toggleDrawing.bind(this)); Main.wm.addKeybinding('toggle-modal', - this.settings, + Me.settings, Meta.KeyBindingFlags.NONE, Shell.ActionMode.ALL, this.toggleModal.bind(this)); Main.wm.addKeybinding('erase-drawing', - this.settings, + Me.settings, Meta.KeyBindingFlags.NONE, Shell.ActionMode.ALL, this.eraseDrawing.bind(this)); @@ -98,10 +101,10 @@ var AreaManager = new Lang.Class({ this.monitorChangedHandler = Main.layoutManager.connect('monitors-changed', this.updateAreas.bind(this)); this.updateIndicator(); - this.indicatorSettingHandler = this.settings.connect('changed::indicator-disabled', this.updateIndicator.bind(this)); + this.indicatorSettingHandler = Me.settings.connect('changed::indicator-disabled', this.updateIndicator.bind(this)); - this.desktopSettingHandler = this.settings.connect('changed::drawing-on-desktop', this.onDesktopSettingChanged.bind(this)); - this.persistentSettingHandler = this.settings.connect('changed::persistent-drawing', this.onPersistentSettingChanged.bind(this)); + this.desktopSettingHandler = Me.settings.connect('changed::drawing-on-desktop', this.onDesktopSettingChanged.bind(this)); + this.persistentSettingHandler = Me.settings.connect('changed::persistent-drawing', this.onPersistentSettingChanged.bind(this)); this.userStyleFile = Gio.File.new_for_path(GLib.build_filenamev([GLib.get_user_data_dir(), Me.metadata['data-dir'], 'user.css'])); @@ -125,14 +128,14 @@ var AreaManager = new Lang.Class({ }, onDesktopSettingChanged: function() { - if (this.settings.get_boolean("drawing-on-desktop")) + if (Me.settings.get_boolean("drawing-on-desktop")) this.areas.forEach(area => area.get_parent().show()); else this.areas.forEach(area => area.get_parent().hide()); }, onPersistentSettingChanged: function() { - if (this.settings.get_boolean('persistent-drawing')) + if (Me.settings.get_boolean('persistent-drawing')) this.areas[Main.layoutManager.primaryIndex].syncPersistent(); }, @@ -141,7 +144,7 @@ var AreaManager = new Lang.Class({ this.indicator.disable(); this.indicator = null; } - if (!this.settings.get_boolean('indicator-disabled')) + if (!Me.settings.get_boolean('indicator-disabled')) this.indicator = new DrawingIndicator(); }, @@ -156,13 +159,13 @@ var AreaManager = new Lang.Class({ let monitor = this.monitors[i]; let container = new St.Widget({ name: 'drawOnYourSreenContainer' + i }); let helper = new Helper.DrawingHelper({ name: 'drawOnYourSreenHelper' + i }, monitor); - let loadPersistent = i == Main.layoutManager.primaryIndex && this.settings.get_boolean('persistent-drawing'); + let loadPersistent = i == Main.layoutManager.primaryIndex && Me.settings.get_boolean('persistent-drawing'); let area = new Area.DrawingArea({ name: 'drawOnYourSreenArea' + i }, monitor, helper, loadPersistent); container.add_child(area); container.add_child(helper); Main.layoutManager._backgroundGroup.insert_child_above(container, Main.layoutManager._bgManagers[i].backgroundActor); - if (!this.settings.get_boolean("drawing-on-desktop")) + if (!Me.settings.get_boolean("drawing-on-desktop")) container.hide(); container.set_position(monitor.x, monitor.y); @@ -228,7 +231,7 @@ var AreaManager = new Lang.Class({ for (let key in this.internalKeybindings1) { Main.wm.addKeybinding(key, - this.settings, + Me.internalShortcutSettings, Meta.KeyBindingFlags.NONE, DRAWING_ACTION_MODE, this.internalKeybindings1[key]); @@ -236,7 +239,7 @@ var AreaManager = new Lang.Class({ for (let key in this.internalKeybindings2) { Main.wm.addKeybinding(key, - this.settings, + Me.internalShortcutSettings, Meta.KeyBindingFlags.NONE, DRAWING_ACTION_MODE | WRITING_ACTION_MODE, this.internalKeybindings2[key]); @@ -245,7 +248,7 @@ var AreaManager = new Lang.Class({ for (let i = 1; i < 10; i++) { let iCaptured = i; Main.wm.addKeybinding('select-color' + i, - this.settings, + Me.internalShortcutSettings, Meta.KeyBindingFlags.NONE, DRAWING_ACTION_MODE | WRITING_ACTION_MODE, () => this.activeArea.selectColor(iCaptured)); @@ -292,7 +295,7 @@ var AreaManager = new Lang.Class({ eraseDrawing: function() { for (let i = 0; i < this.areas.length; i++) this.areas[i].erase(); - if (this.settings.get_boolean('persistent-drawing')) + if (Me.settings.get_boolean('persistent-drawing')) this.areas[Main.layoutManager.primaryIndex].savePersistent(); }, @@ -345,7 +348,7 @@ var AreaManager = new Lang.Class({ Main.uiGroup.set_child_at_index(Main.layoutManager.keyboardBox, this.oldKeyboardIndex); Main.uiGroup.remove_actor(activeContainer); Main.layoutManager._backgroundGroup.insert_child_above(activeContainer, Main.layoutManager._bgManagers[activeIndex].backgroundActor); - if (!this.settings.get_boolean("drawing-on-desktop")) + if (!Me.settings.get_boolean("drawing-on-desktop")) activeContainer.hide(); } else { Main.layoutManager._backgroundGroup.remove_actor(activeContainer); @@ -387,7 +390,7 @@ var AreaManager = new Lang.Class({ toggleDrawing: function() { if (this.activeArea) { let activeIndex = this.areas.indexOf(this.activeArea); - let save = activeIndex == Main.layoutManager.primaryIndex && this.settings.get_boolean('persistent-drawing'); + let save = activeIndex == Main.layoutManager.primaryIndex && Me.settings.get_boolean('persistent-drawing'); this.showOsd(null, this.leaveGicon, _("Leaving drawing mode")); this.activeArea.leaveDrawingMode(save); @@ -410,7 +413,7 @@ var AreaManager = new Lang.Class({ } this.activeArea.enterDrawingMode(); - this.osdDisabled = this.settings.get_boolean('osd-disabled'); + this.osdDisabled = Me.settings.get_boolean('osd-disabled'); let label = _("Press %s for help").format(this.activeArea.helper.helpKeyLabel) + "\n\n" + _("Entering drawing mode"); this.showOsd(null, this.enterGicon, label, null, null, true); } @@ -531,15 +534,15 @@ var AreaManager = new Lang.Class({ this.monitorChangedHandler = null; } if (this.indicatorSettingHandler) { - this.settings.disconnect(this.indicatorSettingHandler); + Me.settings.disconnect(this.indicatorSettingHandler); this.indicatorSettingHandler = null; } if (this.desktopSettingHandler) { - this.settings.disconnect(this.desktopSettingHandler); + Me.settings.disconnect(this.desktopSettingHandler); this.desktopSettingHandler = null; } if (this.persistentSettingHandler) { - this.settings.disconnect(this.persistentSettingHandler); + Me.settings.disconnect(this.persistentSettingHandler); this.persistentSettingHandler = null; } diff --git a/helper.js b/helper.js index e3bfe2e..d6704e9 100644 --- a/helper.js +++ b/helper.js @@ -25,9 +25,9 @@ const Lang = imports.lang; const St = imports.gi.St; const Config = imports.misc.config; +const ExtensionUtils = imports.misc.extensionUtils; const Tweener = imports.ui.tweener; -const ExtensionUtils = imports.misc.extensionUtils; const Me = ExtensionUtils.getCurrentExtension(); const Convenience = ExtensionUtils.getSettings ? ExtensionUtils : Me.imports.convenience; const Prefs = Me.imports.prefs; @@ -55,24 +55,27 @@ var DrawingHelper = new Lang.Class({ this.parent(params); this.monitor = monitor; this.hide(); - this.settings = Convenience.getSettings(); - this.settingHandler = this.settings.connect('changed', this._onSettingChanged.bind(this)); - this.connect('destroy', () => this.settings.disconnect(this.settingHandler)); + this.settingsHandler = Me.settings.connect('changed', this._onSettingsChanged.bind(this)); + this.internalShortcutsettingsHandler = Me.internalShortcutSettings.connect('changed', this._onSettingsChanged.bind(this)); + this.connect('destroy', () => { + Me.settings.disconnect(this.settingsHandler); + Me.internalShortcutSettings.disconnect(this.internalShortcutsettingsHandler); + }); }, - _onSettingChanged: function(settings, key) { + _onSettingsChanged: function(settings, key) { if (key == 'toggle-help') this._updateHelpKeyLabel(); if (this.vbox) { this.vbox.destroy(); - this.vbox = null; + delete this.vbox; } }, _updateHelpKeyLabel: function() { - let [keyval, mods] = Gtk.accelerator_parse(this.settings.get_strv('toggle-help')[0]); + let [keyval, mods] = Gtk.accelerator_parse(Me.internalShortcutSettings.get_strv('toggle-help')[0]); this._helpKeyLabel = Gtk.accelerator_get_label(keyval, mods); }, @@ -94,9 +97,9 @@ var DrawingHelper = new Lang.Class({ this.vbox.add_child(hbox); continue; } - if (!this.settings.get_strv(settingKey)[0]) + if (!Me.settings.get_strv(settingKey)[0]) continue; - let [keyval, mods] = Gtk.accelerator_parse(this.settings.get_strv(settingKey)[0]); + let [keyval, mods] = Gtk.accelerator_parse(Me.settings.get_strv(settingKey)[0]); hbox.add_child(new St.Label({ text: _(Prefs.GLOBAL_KEYBINDINGS[settingKey]) })); hbox.add_child(new St.Label({ text: Gtk.accelerator_get_label(keyval, mods), x_expand: true })); this.vbox.add_child(hbox); @@ -124,9 +127,9 @@ var DrawingHelper = new Lang.Class({ continue; } let hbox = new St.BoxLayout({ vertical: false }); - if (!this.settings.get_strv(settingKey)[0]) + if (!Me.internalShortcutSettings.get_strv(settingKey)[0]) continue; - let [keyval, mods] = Gtk.accelerator_parse(this.settings.get_strv(settingKey)[0]); + let [keyval, mods] = Gtk.accelerator_parse(Me.internalShortcutSettings.get_strv(settingKey)[0]); hbox.add_child(new St.Label({ text: _(Prefs.INTERNAL_KEYBINDINGS[settingKey]) })); hbox.add_child(new St.Label({ text: Gtk.accelerator_get_label(keyval, mods), x_expand: true })); this.vbox.add_child(hbox); diff --git a/prefs.js b/prefs.js index 8ff013d..3706a50 100644 --- a/prefs.js +++ b/prefs.js @@ -207,7 +207,8 @@ const PrefsPage = new GObject.Class({ _init: function(params) { this.parent(); - this.settings = Convenience.getSettings(); + let settings = Convenience.getSettings(); + let internalShortcutSettings = Convenience.getSettings(Me.metadata['settings-schema'] + '.internal-shortcuts'); let box = new Gtk.Box({ orientation: Gtk.Orientation.VERTICAL, margin: MARGIN*3 }); this.add(box); @@ -222,7 +223,7 @@ const PrefsPage = new GObject.Class({ let styleContext = listBox.get_style_context(); styleContext.add_class('background'); - let globalKeybindingsWidget = new KeybindingsWidget(GLOBAL_KEYBINDINGS, this.settings); + let globalKeybindingsWidget = new KeybindingsWidget(GLOBAL_KEYBINDINGS, settings); globalKeybindingsWidget.margin = MARGIN; listBox.add(globalKeybindingsWidget); @@ -235,7 +236,7 @@ const PrefsPage = new GObject.Class({ persistentLabelBox.pack_start(persistentLabel1, true, true, 0); persistentLabelBox.pack_start(persistentLabel2, true, true, 0); let persistentSwitch = new Gtk.Switch({valign: 3}); - this.settings.bind('persistent-drawing', persistentSwitch, 'active', 0); + settings.bind('persistent-drawing', persistentSwitch, 'active', 0); persistentBox.pack_start(persistentLabelBox, true, true, 4); persistentBox.pack_start(persistentSwitch, false, false, 4); listBox.add(persistentBox); @@ -249,7 +250,7 @@ const PrefsPage = new GObject.Class({ desktopLabelBox.pack_start(desktopLabel1, true, true, 0); desktopLabelBox.pack_start(desktopLabel2, true, true, 0); let desktopSwitch = new Gtk.Switch({valign: 3}); - this.settings.bind('drawing-on-desktop', desktopSwitch, 'active', 0); + settings.bind('drawing-on-desktop', desktopSwitch, 'active', 0); desktopBox.pack_start(desktopLabelBox, true, true, 4); desktopBox.pack_start(desktopSwitch, false, false, 4); listBox.add(desktopBox); @@ -260,7 +261,7 @@ const PrefsPage = new GObject.Class({ osdLabel1.set_halign(1); osdLabelBox.pack_start(osdLabel1, true, true, 0); let osdSwitch = new Gtk.Switch({valign: 3}); - this.settings.bind('osd-disabled', osdSwitch, 'active', 0); + settings.bind('osd-disabled', osdSwitch, 'active', 0); osdBox.pack_start(osdLabelBox, true, true, 4); osdBox.pack_start(osdSwitch, false, false, 4); listBox.add(osdBox); @@ -271,7 +272,7 @@ const PrefsPage = new GObject.Class({ indicatorLabel1.set_halign(1); indicatorLabelBox.pack_start(indicatorLabel1, true, true, 0); let indicatorSwitch = new Gtk.Switch({valign: 3}); - this.settings.bind('indicator-disabled', indicatorSwitch, 'active', 0); + settings.bind('indicator-disabled', indicatorSwitch, 'active', 0); indicatorBox.pack_start(indicatorLabelBox, true, true, 4); indicatorBox.pack_start(indicatorSwitch, false, false, 4); listBox.add(indicatorBox); @@ -306,7 +307,7 @@ const PrefsPage = new GObject.Class({ listBox.add(otherBox); } - let internalKeybindingsWidget = new KeybindingsWidget(INTERNAL_KEYBINDINGS, this.settings); + let internalKeybindingsWidget = new KeybindingsWidget(INTERNAL_KEYBINDINGS, internalShortcutSettings); internalKeybindingsWidget.margin = MARGIN; listBox.add(internalKeybindingsWidget); diff --git a/schemas/gschemas.compiled b/schemas/gschemas.compiled index 92584ee8996575d7c52df4ad18a835ea688069e0..269a8e8bceeb2992fc975c8a1ebb5c936be614e0 100644 GIT binary patch literal 4888 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 diff --git a/schemas/org.gnome.shell.extensions.draw-on-your-screen.gschema.xml b/schemas/org.gnome.shell.extensions.draw-on-your-screen.gschema.xml index 4fe2746..6211353 100644 --- a/schemas/org.gnome.shell.extensions.draw-on-your-screen.gschema.xml +++ b/schemas/org.gnome.shell.extensions.draw-on-your-screen.gschema.xml @@ -36,6 +36,9 @@ erase drawing erase drawing + + + ["<Primary>z"] undo