Skip to content
Commits on Source (24)
......@@ -3,10 +3,18 @@ SPDX-License-Identifier: CC-BY-SA-4.0
SPDX-FileCopyrightText: Michael Terry
-->
# 42.8
- Fix not prompting for the encryption password during a scheduled backup if
the previous scheduled backup's prompt was ignored. This would have the
practical effect of disabling scheduled backups after the first ignored
prompt of each login session, if you don't keep your password saved.
- Update Basque, Dutch, Hungarian, Indonesian, Italian, Occitan, Romanian,
Russian, Serbian, and Spanish translations
# 42.7
- Fix descending into a directory while searching in the browse & restore view
- Update Google Drive logo
- Update Japanese and Swedish translation
- Update Japanese and Swedish translations
##### Packaging
- Update to libhandy-1. This is probably an overdue, welcome change, so I'm not
......
......@@ -29,26 +29,22 @@ class RestoreTest(BaseTest):
window.button("Forward").click() # folders
window.button("Forward").click() # storage location
# Prepare for either initial backup or incremental
def ready():
try:
return window.dead or window.findChild(
GenericPredicate(name="Forward"), retry=False, requireResult=False
)
except GLib.GError:
return True
self.wait_for(ready, timeout=120)
if window.dead:
return
window.child(
roleName="radio button", name="Allow restoring without a password"
).click()
window.child(roleName="text", label="Encryption password").text = "test-restore"
# Confirm password if we are doing an initial backup
confirm = window.findChild(
GenericPredicate(roleName="text", label="Confirm password"),
retry=False,
requireResult=False,
)
if confirm:
confirm.text = "test-restore"
window.button("Forward").click()
self.wait_for(lambda: window.dead, timeout=60)
self.wait_for(lambda: window.dead, timeout=300)
def walk_restore(self, app, password=None, error=False):
def walk_restore(self, app, error=False):
shutil.rmtree(self.srcdir)
window = app.window("Restore From Where?")
......@@ -68,9 +64,8 @@ class RestoreTest(BaseTest):
window = app.window("Restore to Where?")
window.button("Restore").click() # to where
if password:
window.child(roleName="text", label="Encryption password").text = password
window.button("Forward").click()
window.child(roleName="text", label="Encryption password").text = "test-restore"
window.button("Forward").click()
title = "Restore Failed" if error else "Restore Finished"
self.wait_for(
......
......@@ -34,6 +34,19 @@ SPDX-FileCopyrightText: Michael Terry
<kudo>UserDocs</kudo>
</kudos>
<recommends>
<control>keyboard</control>
<control>pointing</control>
<!-- I suspect touch works fine, as I don't believe we do any custom input
handling, nor use any right-click menus anywhere.
But since it's not tested, let's not declare support. -->
<!-- <control>touch</control> -->
</recommends>
<requires>
<display_length compare="ge">medium</display_length>
</requires>
<provides>
<binary>deja-dup</binary>
<id>deja-dup.desktop</id>
......@@ -77,7 +90,12 @@ SPDX-FileCopyrightText: Michael Terry
</screenshots>
<releases>
<release version="42.7" date="2021-12-13">
<release version="42.8" date="2021-08-11">
<description its:translate="no">
<p>Fix scheduled backups being skipped if a previous password prompt was ignored.</p>
</description>
</release>
<release version="42.7" date="2021-01-13">
<description its:translate="no">
<p>Fix descending into a folder while searching in the browse and restore view.</p>
</description>
......
This diff is collapsed.
data/screenshots/location.png

80.1 KiB | W: | H:

data/screenshots/location.png

84.7 KiB | W: | H:

data/screenshots/location.png
data/screenshots/location.png
data/screenshots/location.png
data/screenshots/location.png
  • 2-up
  • Swipe
  • Onion skin
This diff is collapsed.
data/screenshots/main.png

73.7 KiB | W: | H:

data/screenshots/main.png

83.8 KiB | W: | H:

data/screenshots/main.png
data/screenshots/main.png
data/screenshots/main.png
data/screenshots/main.png
  • 2-up
  • Swipe
  • Onion skin
This diff is collapsed.
data/screenshots/restore.png

70.3 KiB | W: | H:

data/screenshots/restore.png

69.3 KiB | W: | H:

data/screenshots/restore.png
data/screenshots/restore.png
data/screenshots/restore.png
data/screenshots/restore.png
  • 2-up
  • Swipe
  • Onion skin
This diff is collapsed.
......@@ -126,7 +126,7 @@ public abstract class Assistant : Gtk.Window
go_forward();
}
static bool is_interrupt_type(Type type)
protected static bool is_interrupt_type(Type type)
{
return type == Type.INTERRUPT || type == Type.CHECK;
}
......
......@@ -735,6 +735,8 @@ public abstract class AssistantOperation : Assistant
Notifications.close_all();
}
// Stop operation, does not need to be graceful - used to quickly stop as
// we shut down.
public void stop()
{
hide_everything();
......@@ -742,9 +744,12 @@ public abstract class AssistantOperation : Assistant
op.stop();
}
// Returns true if there's an operation running that shouldn't be cancelled at will
// (used for example, if another backup wants to start and is checking if an
// existing backup is running)
public bool has_active_op()
{
return op != null;
return op != null && current != null && !is_interrupt_type(current.data.type);
}
protected virtual void do_cancel()
......
......@@ -78,13 +78,14 @@ public class DejaDupApp : Gtk.Application
}
if (options.contains("restore")) {
if (operation != null) {
command_line.printerr("%s\n", _("An operation is already in progress"));
if (filenames.length == 0) {
command_line.printerr("%s\n", _("Please list files to restore"));
return 1;
}
if (filenames.length == 0) {
command_line.printerr("%s\n", _("Please list files to restore"));
close_excess_modals();
if (operation != null) {
command_line.printerr("%s\n", _("An operation is already in progress"));
return 1;
}
......@@ -96,6 +97,7 @@ public class DejaDupApp : Gtk.Application
restore_files(file_list);
}
else if (options.contains("backup")) {
close_excess_modals();
if (operation != null) {
command_line.printerr("%s\n", _("An operation is already in progress"));
return 1;
......
......@@ -4,21 +4,15 @@
name: python3-duplicity
buildsystem: simple
build-commands:
- pip3 install --exists-action=i --no-index --find-links="file://${PWD}" --prefix=${FLATPAK_DEST}
"duplicity"
- pip3 install --verbose --exists-action=i --no-index --find-links="file://${PWD}"
--prefix=${FLATPAK_DEST} "duplicity" --no-build-isolation
sources:
- type: file
url: https://files.pythonhosted.org/packages/ee/ff/48bde5c0f013094d729fe4b0316ba2a24774b3ff1c52d924a8a4cb04078a/six-1.15.0-py2.py3-none-any.whl
sha256: 8b74bedcbbbaca38ff6d7491d76f2b06b3592611af620f8426e82dddb04a5ced
- type: file
url: https://files.pythonhosted.org/packages/ac/aa/063eca6a416f397bd99552c534c6d11d57f58f2e94c14780f3bbf818c4cf/monotonic-1.5-py2.py3-none-any.whl
sha256: 552a91f381532e33cbd07c6a2655a21908088962bb8fa7239ecbcc6ad1140cc7
- type: file
url: https://files.pythonhosted.org/packages/40/c9/190477dac2ed93686e1866bdea8400b4394e333be070c9f0c21470cac457/duplicity-0.8.17.tar.gz
sha256: 1d1be81c3d4bf0109170dacd5254f91ac8d139a474417de6f100bd7c0a4a4cf8
- type: file
url: https://files.pythonhosted.org/packages/18/bd/55eb2d6397b9c0e263af9d091ebdb756b15756029b3cededf6461481bc63/fasteners-0.15-py2.py3-none-any.whl
sha256: 007e4d2b2d4a10093f67e932e5166722d2eab83b77724156e92ad013c6226574
url: https://files.pythonhosted.org/packages/28/e4/2888d41cdbd405828ccdb9a8536c5919939c2f4c6ab9b2ba63e9bd2570d5/fasteners-0.16.3.tar.gz
sha256: b1ab4e5adfbc28681ce44b3024421c4f567e705cc3963c732bf1cba3348307de
- type: file
url: https://files.pythonhosted.org/packages/45/0b/38b06fd9b92dc2b68d58b75f900e97884c45bedd2ff83203d933cf5851c9/future-0.18.2.tar.gz
sha256: b1bead90b70cf6ec3f0710ae53a525360fa360d306a86583adc6bf83a4db537d
- type: file
url: https://files.pythonhosted.org/packages/84/65/5ca97dade5527b6a93757e88455c53b0d7002322f9d47d848c35902ef431/duplicity-0.8.20.tar.gz
sha256: 488af2ecadb059214074f2b3ac51bf9d7de55a800e37ccc2f1075cd0a74940e3
......@@ -5,12 +5,13 @@
---
app-id: org.gnome.DejaDupDevel
runtime: org.gnome.Platform
runtime-version: '3.38'
runtime-version: '40'
sdk: org.gnome.Sdk
command: deja-dup
finish-args:
- --filesystem=host
- --filesystem=xdg-run/gvfsd
- --filesystem=~/.var/app/
- --share=ipc
- --share=network
......@@ -32,17 +33,6 @@ modules:
- ./pydrive2.yaml
- name: libhandy
buildsystem: meson
builddir: true
config-opts:
- -Dexamples=false
- -Dtests=false
sources:
- type: git
url: https://gitlab.gnome.org/GNOME/libhandy.git
tag: 1.0.2
- name: deja-dup
buildsystem: meson
builddir: true
......
This diff is collapsed.
This diff is collapsed.
......@@ -4,7 +4,7 @@
# SPDX-FileCopyrightText: Michael Terry
project('deja-dup', ['vala', 'c'],
version: '42.7',
version: '42.8',
license: 'GPL-3.0-or-later',
meson_version: '>= 0.47')
......
......@@ -163,8 +163,8 @@ static void prepare_run(TimeSpan wait_time)
if (wait_time > 0 && secs > 0) {
debug("Waiting %ld seconds until next backup.", (long)secs);
timeout_id = Timeout.add_seconds((uint)secs, () => {
kickoff.begin();
timeout_id = 0;
kickoff.begin();
return false;
});
}
......