add "Persistent over toggles' setting

* Rename "Persistent" to "Persistent over restarts".
* If disabled, "Persistent over toggles" has priority over "Persistent over restarts" and "Drawing on the desktop".

Close issue #42.
This commit is contained in:
abakkk 2020-09-17 17:30:30 +02:00
parent 072adde856
commit 23eea44661
6 changed files with 76 additions and 27 deletions

View File

@ -1064,7 +1064,7 @@ var DrawingArea = new Lang.Class({
this.get_parent().set_background_color(this.reactive && this.hasBackground ? this.areaBackgroundColor : null);
},
leaveDrawingMode: function(save) {
leaveDrawingMode: function(save, erase) {
if (this.stageKeyPressedHandler) {
global.stage.disconnect(this.stageKeyPressedHandler);
this.stageKeyPressedHandler = null;
@ -1100,7 +1100,10 @@ var DrawingArea = new Lang.Class({
this.currentElement = null;
this._stopTextCursorTimeout();
this._redisplay();
if (erase)
this.erase();
else
this._redisplay();
this.closeMenu();
this.get_parent().set_background_color(null);
Files.Images.reset();

View File

@ -112,21 +112,42 @@ const AreaManager = new Lang.Class({
this.indicatorSettingHandler = Me.settings.connect('changed::indicator-disabled', this.updateIndicator.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.persistentOverRestartsSettingHandler = Me.settings.connect('changed::persistent-over-restarts', this.onPersistentOverRestartsSettingChanged.bind(this));
this.persistentOverTogglesSettingHandler = Me.settings.connect('changed::persistent-over-toggles', this.onPersistentOverTogglesSettingChanged.bind(this));
},
get persistentOverToggles() {
return Me.settings.get_boolean('persistent-over-toggles');
},
get persistentOverRestarts() {
return Me.settings.get_boolean('persistent-over-toggles') && Me.settings.get_boolean('persistent-over-restarts');
},
get onDesktop() {
return Me.settings.get_boolean('persistent-over-toggles') && Me.settings.get_boolean('drawing-on-desktop');
},
onDesktopSettingChanged: function() {
if (Me.settings.get_boolean("drawing-on-desktop"))
if (this.onDesktop)
this.areas.forEach(area => area.get_parent().show());
else
this.areas.forEach(area => area.get_parent().hide());
},
onPersistentSettingChanged: function() {
if (Me.settings.get_boolean('persistent-drawing'))
onPersistentOverRestartsSettingChanged: function() {
if (this.persistentOverRestarts)
this.areas[Main.layoutManager.primaryIndex].syncPersistent();
},
onPersistentOverTogglesSettingChanged: function() {
if (!this.persistentOverToggles && !this.activeArea)
this.eraseDrawings();
this.onPersistentOverRestartsSettingChanged();
this.onDesktopSettingChanged();
},
updateIndicator: function() {
if (this.indicator) {
this.indicator.disable();
@ -147,13 +168,13 @@ const 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 && Me.settings.get_boolean('persistent-drawing');
let loadPersistent = i == Main.layoutManager.primaryIndex && this.persistentOverRestarts;
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 (!Me.settings.get_boolean("drawing-on-desktop"))
if (!this.onDesktop)
container.hide();
container.set_position(monitor.x, monitor.y);
@ -268,7 +289,7 @@ const AreaManager = new Lang.Class({
eraseDrawings: function() {
for (let i = 0; i < this.areas.length; i++)
this.areas[i].erase();
if (Me.settings.get_boolean('persistent-drawing'))
if (this.persistentOverRestarts)
this.areas[Main.layoutManager.primaryIndex].savePersistent();
},
@ -321,7 +342,7 @@ const 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 (!Me.settings.get_boolean("drawing-on-desktop"))
if (!this.onDesktop)
activeContainer.hide();
} else {
Main.layoutManager._backgroundGroup.remove_actor(activeContainer);
@ -364,10 +385,11 @@ const AreaManager = new Lang.Class({
toggleDrawing: function() {
if (this.activeArea) {
let activeIndex = this.areas.indexOf(this.activeArea);
let save = activeIndex == Main.layoutManager.primaryIndex && Me.settings.get_boolean('persistent-drawing');
let save = activeIndex == Main.layoutManager.primaryIndex && this.persistentOverRestarts;
let erase = !this.persistentOverToggles;
this.showOsd(null, Files.Icons.LEAVE, _("Leaving drawing mode"));
this.activeArea.leaveDrawingMode(save);
this.activeArea.leaveDrawingMode(save, erase);
if (this.hiddenList)
this.togglePanelAndDockOpacity();
@ -513,9 +535,13 @@ const AreaManager = new Lang.Class({
Me.settings.disconnect(this.desktopSettingHandler);
this.desktopSettingHandler = null;
}
if (this.persistentSettingHandler) {
Me.settings.disconnect(this.persistentSettingHandler);
this.persistentSettingHandler = null;
if (this.persistentOverTogglesSettingHandler) {
Me.settings.disconnect(this.persistentOverTogglesSettingHandler);
this.persistentOverTogglesSettingHandler = null;
}
if (this.persistentOverRestartsSettingHandler) {
Me.settings.disconnect(this.persistentOverRestartsSettingHandler);
this.persistentOverRestartsSettingHandler = null;
}
if (this.activeArea)

View File

@ -10,7 +10,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Draw On Your Screen\n"
"Report-Msgid-Bugs-To: https://framagit.org/abakkk/DrawOnYourScreen/issues\n"
"POT-Creation-Date: 2020-09-16 21:11+0200\n"
"POT-Creation-Date: 2020-09-17 13:38+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@ -441,10 +441,16 @@ msgstr ""
msgid "Disable on-screen notifications"
msgstr ""
msgid "Persistent"
msgid "Persistent over toggles"
msgstr ""
msgid "Persistent drawing through session restart"
msgid "Drawing remains when toggling drawing mode"
msgstr ""
msgid "Persistent over restarts"
msgstr ""
msgid "Drawing is automatically saved to a file"
msgstr ""
msgid "Enter/leave drawing mode"

View File

@ -395,18 +395,27 @@ const PrefsPage = new GObject.Class({
listBox.add(globalKeybindingsRow);
});
let persistentKey = schema.get_key('persistent-drawing');
let persistentRow = new PrefRow({ label: persistentKey.get_summary(), desc: persistentKey.get_description() });
let persistentSwitch = new Gtk.Switch();
settings.bind('persistent-drawing', persistentSwitch, 'active', 0);
persistentRow.addWidget(persistentSwitch, true);
listBox.add(persistentRow);
let persistentOverTogglesKey = schema.get_key('persistent-over-toggles');
let persistentOverTogglesRow = new PrefRow({ label: persistentOverTogglesKey.get_summary(), desc: persistentOverTogglesKey.get_description() });
let persistentOverTogglesSwitch = new Gtk.Switch();
settings.bind('persistent-over-toggles', persistentOverTogglesSwitch, 'active', 0);
persistentOverTogglesRow.addWidget(persistentOverTogglesSwitch, true);
listBox.add(persistentOverTogglesRow);
let persistentOverRestartsKey = schema.get_key('persistent-over-restarts');
let persistentOverRestartsRow = new PrefRow({ label: persistentOverRestartsKey.get_summary(), desc: persistentOverRestartsKey.get_description() });
let persistentOverRestartsSwitch = new Gtk.Switch();
settings.bind('persistent-over-restarts', persistentOverRestartsSwitch, 'active', 0);
persistentOverRestartsRow.addWidget(persistentOverRestartsSwitch, true);
persistentOverTogglesSwitch.bind_property('active', persistentOverRestartsSwitch, 'sensitive', GObject.BindingFlags.SYNC_CREATE);
listBox.add(persistentOverRestartsRow);
let desktopKey = schema.get_key('drawing-on-desktop');
let desktopRow = new PrefRow({ label: desktopKey.get_summary(), desc: desktopKey.get_description() });
let desktopSwitch = new Gtk.Switch();
settings.bind('drawing-on-desktop', desktopSwitch, 'active', 0);
desktopRow.addWidget(desktopSwitch, true);
persistentOverTogglesSwitch.bind_property('active', desktopSwitch, 'sensitive', GObject.BindingFlags.SYNC_CREATE);
listBox.add(desktopRow);
let osdKey = schema.get_key('osd-disabled');

Binary file not shown.

View File

@ -20,10 +20,15 @@
<default>false</default>
<summary>Disable on-screen notifications</summary>
</key>
<key type="b" name="persistent-drawing">
<key type="b" name="persistent-over-toggles">
<default>true</default>
<summary>Persistent over toggles</summary>
<description>Drawing remains when toggling drawing mode</description>
</key>
<key type="b" name="persistent-over-restarts">
<default>false</default>
<summary>Persistent</summary>
<description>Persistent drawing through session restart</description>
<summary>Persistent over restarts</summary>
<description>Drawing is automatically saved to a file</description>
</key>
<key type="as" name="toggle-drawing">
<default>["&lt;Alt&gt;&lt;Super&gt;d"]</default>