minor, rework settings

This commit is contained in:
abakkk 2020-08-23 11:49:26 +02:00
parent 0fe72b7746
commit 01701538bb
6 changed files with 51 additions and 43 deletions

View File

@ -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;

View File

@ -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 = _("<small>Press <i>%s</i> for help</small>").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;
}

View File

@ -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);

View File

@ -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);

Binary file not shown.

View File

@ -36,6 +36,9 @@
<summary>erase drawing</summary>
<description>erase drawing</description>
</key>
<child name="internal-shortcuts" schema="org.gnome.shell.extensions.draw-on-your-screen.internal-shortcuts"/>
</schema>
<schema path="/org/gnome/shell/extensions/draw-on-your-screen/internal-shortcuts/" id="org.gnome.shell.extensions.draw-on-your-screen.internal-shortcuts">
<key type="as" name="undo">
<default>["&lt;Primary&gt;z"]</default>
<summary>undo</summary>