Merge lp:~mterry/deja-dup/warn-on-bad-read into lp:deja-dup/22
- warn-on-bad-read
- Merge into 22
Proposed by
Michael Terry
Status: | Merged |
---|---|
Merged at revision: | 1274 |
Proposed branch: | lp:~mterry/deja-dup/warn-on-bad-read |
Merge into: | lp:deja-dup/22 |
Diff against target: |
1252 lines (+337/-209) 11 files modified
common/Duplicity.vala (+41/-9) common/Operation.vala (+8/-8) common/OperationBackup.vala (+2/-2) common/OperationRestore.vala (+2/-2) deja-dup/AssistantBackup.vala (+5/-1) deja-dup/AssistantOperation.vala (+40/-22) deja-dup/AssistantRestore.vala (+1/-1) deja-dup/AssistantRestoreMissing.vala (+4/-4) deja-dup/StatusIcon.vala (+10/-3) po/deja-dup.pot (+182/-156) tests/common/common.vala (+42/-1) |
To merge this branch: | bzr merge lp:~mterry/deja-dup/warn-on-bad-read |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Ken VanDine | Approve | ||
Review via email: mp+86823@code.launchpad.net |
Commit message
Description of the change
Tell user if we couldn't read a file during the backup.
To post a comment you must log in.
- 1267. By Michael Terry
-
merge from trunk
Revision history for this message
Michael Terry (mterry) wrote : | # |
Try now.
- 1268. By Michael Terry
-
merge from trunk
Revision history for this message
Ken VanDine (ken-vandine) wrote : | # |
Tests pass now and it looks good.
review:
Approve
Preview Diff
[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1 | === modified file 'common/Duplicity.vala' | |||
2 | --- common/Duplicity.vala 2011-12-28 06:20:36 +0000 | |||
3 | +++ common/Duplicity.vala 2012-01-09 09:28:24 +0000 | |||
4 | @@ -30,7 +30,7 @@ | |||
5 | 30 | * vala withot the need of manually running duplicity command. | 30 | * vala withot the need of manually running duplicity command. |
6 | 31 | */ | 31 | */ |
7 | 32 | 32 | ||
9 | 33 | public signal void done(bool success, bool cancelled); | 33 | public signal void done(bool success, bool cancelled, string? detail); |
10 | 34 | public signal void raise_error(string errstr, string? detail); | 34 | public signal void raise_error(string errstr, string? detail); |
11 | 35 | public signal void action_desc_changed(string action); | 35 | public signal void action_desc_changed(string action); |
12 | 36 | public signal void action_file_changed(File file, bool actual); | 36 | public signal void action_file_changed(File file, bool actual); |
13 | @@ -108,6 +108,8 @@ | |||
14 | 108 | bool has_checked_contents = false; | 108 | bool has_checked_contents = false; |
15 | 109 | bool has_non_home_contents = false; | 109 | bool has_non_home_contents = false; |
16 | 110 | List<File> homes = new List<File>(); | 110 | List<File> homes = new List<File>(); |
17 | 111 | |||
18 | 112 | List<File> read_error_files = null; | ||
19 | 111 | 113 | ||
20 | 112 | bool checked_collection_info = false; | 114 | bool checked_collection_info = false; |
21 | 113 | bool got_collection_info = false; | 115 | bool got_collection_info = false; |
22 | @@ -169,7 +171,7 @@ | |||
23 | 169 | } | 171 | } |
24 | 170 | catch (Error e) { | 172 | catch (Error e) { |
25 | 171 | raise_error(e.message, null); | 173 | raise_error(e.message, null); |
27 | 172 | done(false, false); | 174 | done(false, false, null); |
28 | 173 | return; | 175 | return; |
29 | 174 | } | 176 | } |
30 | 175 | this.backend = backend; | 177 | this.backend = backend; |
31 | @@ -187,7 +189,7 @@ | |||
32 | 187 | delete_age = settings.get_int(DELETE_AFTER_KEY); | 189 | delete_age = settings.get_int(DELETE_AFTER_KEY); |
33 | 188 | 190 | ||
34 | 189 | if (!restart()) | 191 | if (!restart()) |
36 | 190 | done(false, false); | 192 | done(false, false, null); |
37 | 191 | 193 | ||
38 | 192 | if (!backend.is_native()) { | 194 | if (!backend.is_native()) { |
39 | 193 | Network.get().notify["connected"].connect(network_changed); | 195 | Network.get().notify["connected"].connect(network_changed); |
40 | @@ -384,6 +386,7 @@ | |||
41 | 384 | bool restart() | 386 | bool restart() |
42 | 385 | { | 387 | { |
43 | 386 | state = State.NORMAL; | 388 | state = State.NORMAL; |
44 | 389 | read_error_files = null; | ||
45 | 387 | 390 | ||
46 | 388 | if (mode == Operation.Mode.INVALID) | 391 | if (mode == Operation.Mode.INVALID) |
47 | 389 | return false; | 392 | return false; |
48 | @@ -515,7 +518,7 @@ | |||
49 | 515 | 518 | ||
50 | 516 | if (!has_progress_total) { | 519 | if (!has_progress_total) { |
51 | 517 | if (!restart()) | 520 | if (!restart()) |
53 | 518 | done(false, false); | 521 | done(false, false, null); |
54 | 519 | return; | 522 | return; |
55 | 520 | } | 523 | } |
56 | 521 | 524 | ||
57 | @@ -551,7 +554,7 @@ | |||
58 | 551 | } | 554 | } |
59 | 552 | 555 | ||
60 | 553 | if (!restart()) | 556 | if (!restart()) |
62 | 554 | done(false, false); | 557 | done(false, false, null); |
63 | 555 | } | 558 | } |
64 | 556 | 559 | ||
65 | 557 | bool cleanup() { | 560 | bool cleanup() { |
66 | @@ -596,6 +599,8 @@ | |||
67 | 596 | 599 | ||
68 | 597 | void handle_done(DuplicityInstance? inst, bool success, bool cancelled) | 600 | void handle_done(DuplicityInstance? inst, bool success, bool cancelled) |
69 | 598 | { | 601 | { |
70 | 602 | string detail = null; | ||
71 | 603 | |||
72 | 599 | if (can_ignore_error()) | 604 | if (can_ignore_error()) |
73 | 600 | success = true; | 605 | success = true; |
74 | 601 | 606 | ||
75 | @@ -667,6 +672,17 @@ | |||
76 | 667 | } | 672 | } |
77 | 668 | } | 673 | } |
78 | 669 | else if (mode == Operation.Mode.BACKUP) { | 674 | else if (mode == Operation.Mode.BACKUP) { |
79 | 675 | if (read_error_files != null) { | ||
80 | 676 | // OK, we succeeded yay! But some files didn't make it into the backup | ||
81 | 677 | // because we couldn't read them. So tell the user so they don't think | ||
82 | 678 | // everything is hunky dory. | ||
83 | 679 | detail = _("Could not back up the following files. Please make sure you are able to open them."); | ||
84 | 680 | detail += "\n"; | ||
85 | 681 | foreach (File f in read_error_files) { | ||
86 | 682 | detail += "\n%s".printf(f.get_parse_name()); | ||
87 | 683 | } | ||
88 | 684 | } | ||
89 | 685 | |||
90 | 670 | mode = Operation.Mode.INVALID; // mark 'done' so when we delete, we don't restart | 686 | mode = Operation.Mode.INVALID; // mark 'done' so when we delete, we don't restart |
91 | 671 | if (delete_files_if_needed()) | 687 | if (delete_files_if_needed()) |
92 | 672 | return; | 688 | return; |
93 | @@ -682,9 +698,9 @@ | |||
94 | 682 | 698 | ||
95 | 683 | if (!success && !cancelled && !error_issued) | 699 | if (!success && !cancelled && !error_issued) |
96 | 684 | show_error(_("Failed with an unknown error.")); | 700 | show_error(_("Failed with an unknown error.")); |
98 | 685 | 701 | ||
99 | 686 | inst = null; | 702 | inst = null; |
101 | 687 | done(success, cancelled); | 703 | done(success, cancelled, detail); |
102 | 688 | } | 704 | } |
103 | 689 | 705 | ||
104 | 690 | string saved_status; | 706 | string saved_status; |
105 | @@ -803,6 +819,7 @@ | |||
106 | 803 | protected static const int WARNING_UNMATCHED_SIG = 4; | 819 | protected static const int WARNING_UNMATCHED_SIG = 4; |
107 | 804 | protected static const int WARNING_INCOMPLETE_BACKUP = 5; | 820 | protected static const int WARNING_INCOMPLETE_BACKUP = 5; |
108 | 805 | protected static const int WARNING_ORPHANED_BACKUP = 6; | 821 | protected static const int WARNING_ORPHANED_BACKUP = 6; |
109 | 822 | protected static const int WARNING_CANNOT_READ = 10; | ||
110 | 806 | protected static const int DEBUG_GENERIC = 1; | 823 | protected static const int DEBUG_GENERIC = 1; |
111 | 807 | 824 | ||
112 | 808 | void delete_cache() | 825 | void delete_cache() |
113 | @@ -1265,7 +1282,22 @@ | |||
114 | 1265 | // in ourselves, we may never get to it. | 1282 | // in ourselves, we may never get to it. |
115 | 1266 | if (mode == Operation.Mode.BACKUP && !this.cleaned_up_once) | 1283 | if (mode == Operation.Mode.BACKUP && !this.cleaned_up_once) |
116 | 1267 | cleanup(); // stops current backup, cleans up, then resumes | 1284 | cleanup(); // stops current backup, cleans up, then resumes |
118 | 1268 | break; | 1285 | break; |
119 | 1286 | |||
120 | 1287 | case WARNING_CANNOT_READ: | ||
121 | 1288 | // A file couldn't be backed up! We should note the name and present | ||
122 | 1289 | // the user with a list at the end. | ||
123 | 1290 | if (firstline.length > 2) { | ||
124 | 1291 | // Only add it if it's a child of one of our includes. Sometimes | ||
125 | 1292 | // Duplicity likes to talk to us about folders like /lost+found and | ||
126 | 1293 | // such that we don't care about. | ||
127 | 1294 | var error_file = make_file_obj(firstline[2]); | ||
128 | 1295 | foreach (File f in includes) { | ||
129 | 1296 | if (error_file.equal(f) || error_file.has_prefix(f)) | ||
130 | 1297 | read_error_files.append(error_file); | ||
131 | 1298 | } | ||
132 | 1299 | } | ||
133 | 1300 | break; | ||
134 | 1269 | } | 1301 | } |
135 | 1270 | } | 1302 | } |
136 | 1271 | } | 1303 | } |
137 | @@ -1406,7 +1438,7 @@ | |||
138 | 1406 | } | 1438 | } |
139 | 1407 | catch (Error e) { | 1439 | catch (Error e) { |
140 | 1408 | show_error(e.message); | 1440 | show_error(e.message); |
142 | 1409 | done(false, false); | 1441 | done(false, false, null); |
143 | 1410 | } | 1442 | } |
144 | 1411 | } | 1443 | } |
145 | 1412 | } | 1444 | } |
146 | 1413 | 1445 | ||
147 | === modified file 'common/Operation.vala' | |||
148 | --- common/Operation.vala 2011-11-06 01:16:05 +0000 | |||
149 | +++ common/Operation.vala 2012-01-09 09:28:24 +0000 | |||
150 | @@ -32,7 +32,7 @@ | |||
151 | 32 | * but it is provided to provide easier development and an abstraction layer | 32 | * but it is provided to provide easier development and an abstraction layer |
152 | 33 | * in case Deja Dup project ever replaces its backend. | 33 | * in case Deja Dup project ever replaces its backend. |
153 | 34 | */ | 34 | */ |
155 | 35 | public signal void done(bool success, bool cancelled); | 35 | public signal void done(bool success, bool cancelled, string? detail); |
156 | 36 | public signal void raise_error(string errstr, string? detail); | 36 | public signal void raise_error(string errstr, string? detail); |
157 | 37 | public signal void action_desc_changed(string action); | 37 | public signal void action_desc_changed(string action); |
158 | 38 | public signal void action_file_changed(File file, bool actual); | 38 | public signal void action_file_changed(File file, bool actual); |
159 | @@ -115,7 +115,7 @@ | |||
160 | 115 | } | 115 | } |
161 | 116 | catch (Error e) { | 116 | catch (Error e) { |
162 | 117 | raise_error(e.message, null); | 117 | raise_error(e.message, null); |
164 | 118 | done(false, false); | 118 | done(false, false, null); |
165 | 119 | return; | 119 | return; |
166 | 120 | } | 120 | } |
167 | 121 | 121 | ||
168 | @@ -179,7 +179,7 @@ | |||
169 | 179 | /* | 179 | /* |
170 | 180 | * Connect Deja Dup to signals | 180 | * Connect Deja Dup to signals |
171 | 181 | */ | 181 | */ |
173 | 182 | dup.done.connect((d, o, c) => {operation_finished(d, o, c);}); | 182 | dup.done.connect((d, o, c, detail) => {operation_finished(d, o, c, detail);}); |
174 | 183 | dup.raise_error.connect((d, s, detail) => {raise_error(s, detail);}); | 183 | dup.raise_error.connect((d, s, detail) => {raise_error(s, detail);}); |
175 | 184 | dup.action_desc_changed.connect((d, s) => {action_desc_changed(s);}); | 184 | dup.action_desc_changed.connect((d, s) => {action_desc_changed(s);}); |
176 | 185 | dup.action_file_changed.connect((d, f, b) => {action_file_changed(f, b);}); | 185 | dup.action_file_changed.connect((d, f, b) => {action_file_changed(f, b);}); |
177 | @@ -214,7 +214,7 @@ | |||
178 | 214 | } | 214 | } |
179 | 215 | catch (Error e) { | 215 | catch (Error e) { |
180 | 216 | raise_error(e.message, null); | 216 | raise_error(e.message, null); |
182 | 217 | operation_finished(dup, false, false); | 217 | operation_finished(dup, false, false, null); |
183 | 218 | } | 218 | } |
184 | 219 | } | 219 | } |
185 | 220 | 220 | ||
186 | @@ -230,7 +230,7 @@ | |||
187 | 230 | if (!success) { | 230 | if (!success) { |
188 | 231 | if (error != null) | 231 | if (error != null) |
189 | 232 | raise_error(error, null); | 232 | raise_error(error, null); |
191 | 233 | operation_finished(dup, false, false); | 233 | operation_finished(dup, false, false, null); |
192 | 234 | return; | 234 | return; |
193 | 235 | } | 235 | } |
194 | 236 | 236 | ||
195 | @@ -242,18 +242,18 @@ | |||
196 | 242 | } | 242 | } |
197 | 243 | catch (Error e) { | 243 | catch (Error e) { |
198 | 244 | raise_error(e.message, null); | 244 | raise_error(e.message, null); |
200 | 245 | operation_finished(dup, false, false); | 245 | operation_finished(dup, false, false, null); |
201 | 246 | return; | 246 | return; |
202 | 247 | } | 247 | } |
203 | 248 | } | 248 | } |
204 | 249 | 249 | ||
206 | 250 | internal async virtual void operation_finished(Duplicity dup, bool success, bool cancelled) | 250 | internal async virtual void operation_finished(Duplicity dup, bool success, bool cancelled, string? detail) |
207 | 251 | { | 251 | { |
208 | 252 | finished = true; | 252 | finished = true; |
209 | 253 | 253 | ||
210 | 254 | unclaim_bus(); | 254 | unclaim_bus(); |
211 | 255 | 255 | ||
213 | 256 | done(success, cancelled); | 256 | done(success, cancelled, detail); |
214 | 257 | } | 257 | } |
215 | 258 | 258 | ||
216 | 259 | protected virtual List<string>? make_argv() throws Error | 259 | protected virtual List<string>? make_argv() throws Error |
217 | 260 | 260 | ||
218 | === modified file 'common/OperationBackup.vala' | |||
219 | --- common/OperationBackup.vala 2011-11-06 01:16:05 +0000 | |||
220 | +++ common/OperationBackup.vala 2012-01-09 09:28:24 +0000 | |||
221 | @@ -27,13 +27,13 @@ | |||
222 | 27 | Object(xid: xid, mode: Mode.BACKUP); | 27 | Object(xid: xid, mode: Mode.BACKUP); |
223 | 28 | } | 28 | } |
224 | 29 | 29 | ||
226 | 30 | internal async override void operation_finished(Duplicity dup, bool success, bool cancelled) | 30 | internal async override void operation_finished(Duplicity dup, bool success, bool cancelled, string? detail) |
227 | 31 | { | 31 | { |
228 | 32 | /* If successfully completed, update time of last backup and run base operation_finished */ | 32 | /* If successfully completed, update time of last backup and run base operation_finished */ |
229 | 33 | if (success) | 33 | if (success) |
230 | 34 | DejaDup.update_last_run_timestamp(DejaDup.TimestampType.BACKUP); | 34 | DejaDup.update_last_run_timestamp(DejaDup.TimestampType.BACKUP); |
231 | 35 | 35 | ||
233 | 36 | base.operation_finished(dup, success, cancelled); | 36 | base.operation_finished(dup, success, cancelled, detail); |
234 | 37 | } | 37 | } |
235 | 38 | 38 | ||
236 | 39 | protected override List<string>? make_argv() throws Error | 39 | protected override List<string>? make_argv() throws Error |
237 | 40 | 40 | ||
238 | === modified file 'common/OperationRestore.vala' | |||
239 | --- common/OperationRestore.vala 2011-11-06 01:16:05 +0000 | |||
240 | +++ common/OperationRestore.vala 2012-01-09 09:28:24 +0000 | |||
241 | @@ -70,12 +70,12 @@ | |||
242 | 70 | return argv; | 70 | return argv; |
243 | 71 | } | 71 | } |
244 | 72 | 72 | ||
246 | 73 | internal async override void operation_finished(Duplicity dup, bool success, bool cancelled) | 73 | internal async override void operation_finished(Duplicity dup, bool success, bool cancelled, string? detail) |
247 | 74 | { | 74 | { |
248 | 75 | if (success) | 75 | if (success) |
249 | 76 | DejaDup.update_last_run_timestamp(DejaDup.TimestampType.RESTORE); | 76 | DejaDup.update_last_run_timestamp(DejaDup.TimestampType.RESTORE); |
250 | 77 | 77 | ||
252 | 78 | base.operation_finished(dup, success, cancelled); | 78 | base.operation_finished(dup, success, cancelled, detail); |
253 | 79 | } | 79 | } |
254 | 80 | } | 80 | } |
255 | 81 | 81 | ||
256 | 82 | 82 | ||
257 | === modified file 'deja-dup/AssistantBackup.vala' | |||
258 | --- deja-dup/AssistantBackup.vala 2011-09-15 15:34:42 +0000 | |||
259 | +++ deja-dup/AssistantBackup.vala 2012-01-09 09:28:24 +0000 | |||
260 | @@ -90,7 +90,11 @@ | |||
261 | 90 | set_page_title(page, _("Backup Failed")); | 90 | set_page_title(page, _("Backup Failed")); |
262 | 91 | } | 91 | } |
263 | 92 | else { | 92 | else { |
265 | 93 | Idle.add(() => {do_close(); return false;}); | 93 | set_page_title(page, _("Backup Finished")); |
266 | 94 | |||
267 | 95 | // If we don't have a special message to show the user, just bail. | ||
268 | 96 | if (!detail_widget.get_visible()) | ||
269 | 97 | Idle.add(() => {do_close(); return false;}); | ||
270 | 94 | } | 98 | } |
271 | 95 | } | 99 | } |
272 | 96 | else if (page == progress_page) { | 100 | else if (page == progress_page) { |
273 | 97 | 101 | ||
274 | === modified file 'deja-dup/AssistantOperation.vala' | |||
275 | --- deja-dup/AssistantOperation.vala 2011-10-20 16:09:37 +0000 | |||
276 | +++ deja-dup/AssistantOperation.vala 2012-01-09 09:28:24 +0000 | |||
277 | @@ -68,8 +68,8 @@ | |||
278 | 68 | protected Gtk.Widget progress_page {get; private set;} | 68 | protected Gtk.Widget progress_page {get; private set;} |
279 | 69 | 69 | ||
280 | 70 | protected Gtk.Label summary_label; | 70 | protected Gtk.Label summary_label; |
283 | 71 | Gtk.Widget error_widget; | 71 | protected Gtk.Widget detail_widget; |
284 | 72 | Gtk.TextView error_text_view; | 72 | Gtk.TextView detail_text_view; |
285 | 73 | protected Gtk.Widget summary_page {get; private set;} | 73 | protected Gtk.Widget summary_page {get; private set;} |
286 | 74 | 74 | ||
287 | 75 | protected Gdk.Pixbuf op_icon {get; private set;} | 75 | protected Gdk.Pixbuf op_icon {get; private set;} |
288 | @@ -266,22 +266,24 @@ | |||
289 | 266 | 266 | ||
290 | 267 | return page; | 267 | return page; |
291 | 268 | } | 268 | } |
293 | 269 | 269 | ||
294 | 270 | void show_detail(string detail) | ||
295 | 271 | { | ||
296 | 272 | page_box.set_size_request(300, 200); | ||
297 | 273 | detail_widget.no_show_all = false; | ||
298 | 274 | detail_widget.show_all(); | ||
299 | 275 | detail_text_view.buffer.set_text(detail, -1); | ||
300 | 276 | } | ||
301 | 277 | |||
302 | 270 | public virtual void show_error(string error, string? detail) | 278 | public virtual void show_error(string error, string? detail) |
303 | 271 | { | 279 | { |
304 | 272 | error_occurred = true; | 280 | error_occurred = true; |
305 | 273 | 281 | ||
306 | 274 | summary_label.label = error; | 282 | summary_label.label = error; |
307 | 275 | summary_label.wrap = true; | ||
308 | 276 | summary_label.selectable = true; | 283 | summary_label.selectable = true; |
309 | 277 | summary_label.max_width_chars = 25; | ||
310 | 278 | 284 | ||
317 | 279 | if (detail != null) { | 285 | if (detail != null) |
318 | 280 | page_box.set_size_request(300, 200); | 286 | show_detail(detail); |
313 | 281 | error_widget.no_show_all = false; | ||
314 | 282 | error_widget.show_all(); | ||
315 | 283 | error_text_view.buffer.set_text(detail, -1); | ||
316 | 284 | } | ||
319 | 285 | 287 | ||
320 | 286 | go_to_page(summary_page); | 288 | go_to_page(summary_page); |
321 | 287 | set_header_icon(Gtk.Stock.DIALOG_ERROR); | 289 | set_header_icon(Gtk.Stock.DIALOG_ERROR); |
322 | @@ -408,23 +410,25 @@ | |||
323 | 408 | { | 410 | { |
324 | 409 | summary_label = new Gtk.Label(""); | 411 | summary_label = new Gtk.Label(""); |
325 | 410 | summary_label.set("xalign", 0.0f); | 412 | summary_label.set("xalign", 0.0f); |
326 | 413 | summary_label.wrap = true; | ||
327 | 414 | summary_label.max_width_chars = 25; | ||
328 | 411 | 415 | ||
333 | 412 | error_text_view = new Gtk.TextView(); | 416 | detail_text_view = new Gtk.TextView(); |
334 | 413 | error_text_view.editable = false; | 417 | detail_text_view.editable = false; |
335 | 414 | error_text_view.wrap_mode = Gtk.WrapMode.WORD; | 418 | detail_text_view.wrap_mode = Gtk.WrapMode.WORD; |
336 | 415 | error_text_view.height_request = 150; | 419 | detail_text_view.height_request = 150; |
337 | 416 | 420 | ||
338 | 417 | var scroll = new Gtk.ScrolledWindow(null, null); | 421 | var scroll = new Gtk.ScrolledWindow(null, null); |
340 | 418 | scroll.add(error_text_view); | 422 | scroll.add(detail_text_view); |
341 | 419 | scroll.no_show_all = true; // only will be shown if an error occurs | 423 | scroll.no_show_all = true; // only will be shown if an error occurs |
343 | 420 | error_widget = scroll; | 424 | detail_widget = scroll; |
344 | 421 | 425 | ||
345 | 422 | var page = new Gtk.Box(Gtk.Orientation.VERTICAL, 6); | 426 | var page = new Gtk.Box(Gtk.Orientation.VERTICAL, 6); |
346 | 423 | page.set("child", summary_label, | 427 | page.set("child", summary_label, |
348 | 424 | "child", error_widget, | 428 | "child", detail_widget, |
349 | 425 | "border-width", 12); | 429 | "border-width", 12); |
350 | 426 | page.child_set(summary_label, "expand", false); | 430 | page.child_set(summary_label, "expand", false); |
352 | 427 | page.child_set(error_widget, "expand", true); | 431 | page.child_set(detail_widget, "expand", true); |
353 | 428 | 432 | ||
354 | 429 | return page; | 433 | return page; |
355 | 430 | } | 434 | } |
356 | @@ -472,10 +476,10 @@ | |||
357 | 472 | summary_page = page; | 476 | summary_page = page; |
358 | 473 | } | 477 | } |
359 | 474 | 478 | ||
361 | 475 | protected virtual void apply_finished(DejaDup.Operation op, bool success, bool cancelled) | 479 | protected virtual void apply_finished(DejaDup.Operation op, bool success, bool cancelled, string? detail) |
362 | 476 | { | 480 | { |
363 | 477 | if (status_icon != null) { | 481 | if (status_icon != null) { |
365 | 478 | status_icon.done(success, cancelled); | 482 | status_icon.done(success, cancelled, detail); |
366 | 479 | status_icon = null; | 483 | status_icon = null; |
367 | 480 | } | 484 | } |
368 | 481 | this.op = null; | 485 | this.op = null; |
369 | @@ -489,6 +493,20 @@ | |||
370 | 489 | else { | 493 | else { |
371 | 490 | if (success) { | 494 | if (success) { |
372 | 491 | succeeded = true; | 495 | succeeded = true; |
373 | 496 | |||
374 | 497 | if (detail != null) { | ||
375 | 498 | // Expect one paragraph followed by a blank line. The first paragraph | ||
376 | 499 | // is an explanation before the full detail content. So split it out | ||
377 | 500 | // into a proper label to look nice. | ||
378 | 501 | var halves = detail.split("\n\n", 2); | ||
379 | 502 | if (halves.length == 1) // no full detail content | ||
380 | 503 | summary_label.label = detail; | ||
381 | 504 | else if (halves.length == 2) { | ||
382 | 505 | summary_label.label = halves[0]; | ||
383 | 506 | show_detail(halves[1]); | ||
384 | 507 | } | ||
385 | 508 | } | ||
386 | 509 | |||
387 | 492 | go_to_page(summary_page); | 510 | go_to_page(summary_page); |
388 | 493 | } | 511 | } |
389 | 494 | else // show error | 512 | else // show error |
390 | @@ -579,7 +597,7 @@ | |||
391 | 579 | { | 597 | { |
392 | 580 | hide(); | 598 | hide(); |
393 | 581 | if (status_icon != null) { | 599 | if (status_icon != null) { |
395 | 582 | status_icon.done(false, true); | 600 | status_icon.done(false, true, null); |
396 | 583 | status_icon = null; // hide immediately to seem responsive | 601 | status_icon = null; // hide immediately to seem responsive |
397 | 584 | } | 602 | } |
398 | 585 | } | 603 | } |
399 | 586 | 604 | ||
400 | === modified file 'deja-dup/AssistantRestore.vala' | |||
401 | --- deja-dup/AssistantRestore.vala 2011-10-20 18:03:00 +0000 | |||
402 | +++ deja-dup/AssistantRestore.vala 2012-01-09 09:28:24 +0000 | |||
403 | @@ -362,7 +362,7 @@ | |||
404 | 362 | show_error(_("No backups to restore"), null); | 362 | show_error(_("No backups to restore"), null); |
405 | 363 | } | 363 | } |
406 | 364 | 364 | ||
408 | 365 | protected virtual void query_finished(DejaDup.Operation op, bool success, bool cancelled) | 365 | protected virtual void query_finished(DejaDup.Operation op, bool success, bool cancelled, string? detail) |
409 | 366 | { | 366 | { |
410 | 367 | this.op_state = op.get_state(); | 367 | this.op_state = op.get_state(); |
411 | 368 | this.query_op = null; | 368 | this.query_op = null; |
412 | 369 | 369 | ||
413 | === modified file 'deja-dup/AssistantRestoreMissing.vala' | |||
414 | --- deja-dup/AssistantRestoreMissing.vala 2011-10-07 14:43:17 +0000 | |||
415 | +++ deja-dup/AssistantRestoreMissing.vala 2012-01-09 09:28:24 +0000 | |||
416 | @@ -326,7 +326,7 @@ | |||
417 | 326 | 326 | ||
418 | 327 | // Don't start if queue is empty. | 327 | // Don't start if queue is empty. |
419 | 328 | if (backups_queue.get_length() == 0) { | 328 | if (backups_queue.get_length() == 0) { |
421 | 329 | query_files_finished(query_op_files, true, false); | 329 | query_files_finished(query_op_files, true, false, null); |
422 | 330 | return; | 330 | return; |
423 | 331 | } | 331 | } |
424 | 332 | 332 | ||
425 | @@ -385,7 +385,7 @@ | |||
426 | 385 | query_op_files.start(); | 385 | query_op_files.start(); |
427 | 386 | } | 386 | } |
428 | 387 | 387 | ||
430 | 388 | protected override void query_finished(DejaDup.Operation op, bool success, bool cancelled) | 388 | protected override void query_finished(DejaDup.Operation op, bool success, bool cancelled, string? detail) |
431 | 389 | { | 389 | { |
432 | 390 | query_op = null; | 390 | query_op = null; |
433 | 391 | op_state = this.op.get_state(); | 391 | op_state = this.op.get_state(); |
434 | @@ -410,7 +410,7 @@ | |||
435 | 410 | base.do_cancel(); | 410 | base.do_cancel(); |
436 | 411 | } | 411 | } |
437 | 412 | 412 | ||
439 | 413 | protected override void apply_finished(DejaDup.Operation op, bool success, bool cancelled) | 413 | protected override void apply_finished(DejaDup.Operation op, bool success, bool cancelled, string? detail) |
440 | 414 | { | 414 | { |
441 | 415 | /* | 415 | /* |
442 | 416 | * Ran after assistant finishes applying restore operation. | 416 | * Ran after assistant finishes applying restore operation. |
443 | @@ -444,7 +444,7 @@ | |||
444 | 444 | } | 444 | } |
445 | 445 | } | 445 | } |
446 | 446 | 446 | ||
448 | 447 | protected void query_files_finished(DejaDup.Operation? op, bool success, bool cancelled) | 447 | protected void query_files_finished(DejaDup.Operation? op, bool success, bool cancelled, string? detail) |
449 | 448 | { | 448 | { |
450 | 449 | query_op_files = null; | 449 | query_op_files = null; |
451 | 450 | this.op = null; | 450 | this.op = null; |
452 | 451 | 451 | ||
453 | === modified file 'deja-dup/StatusIcon.vala' | |||
454 | --- deja-dup/StatusIcon.vala 2011-10-10 02:27:25 +0000 | |||
455 | +++ deja-dup/StatusIcon.vala 2012-01-09 09:28:24 +0000 | |||
456 | @@ -109,7 +109,7 @@ | |||
457 | 109 | update_progress(); | 109 | update_progress(); |
458 | 110 | } | 110 | } |
459 | 111 | 111 | ||
461 | 112 | public virtual void done(bool success, bool cancelled) | 112 | public virtual void done(bool success, bool cancelled, string? detail) |
462 | 113 | { | 113 | { |
463 | 114 | if (note != null) { | 114 | if (note != null) { |
464 | 115 | try { | 115 | try { |
465 | @@ -122,9 +122,16 @@ | |||
466 | 122 | } | 122 | } |
467 | 123 | 123 | ||
468 | 124 | if (success && !cancelled && op.mode == DejaDup.Operation.Mode.BACKUP) { | 124 | if (success && !cancelled && op.mode == DejaDup.Operation.Mode.BACKUP) { |
469 | 125 | string msg = _("Backup completed"); | ||
470 | 126 | |||
471 | 127 | string more = null; | ||
472 | 128 | if (detail != null) { | ||
473 | 129 | msg = _("Backup finished"); | ||
474 | 130 | more = _("Not all files were successfully backed up. See dialog for more details."); | ||
475 | 131 | } | ||
476 | 132 | |||
477 | 125 | Notify.init(_("Backup")); | 133 | Notify.init(_("Backup")); |
480 | 126 | note = new Notify.Notification(_("Backup completed"), null, | 134 | note = new Notify.Notification(msg, more, "deja-dup"); |
479 | 127 | "deja-dup"); | ||
481 | 128 | try { | 135 | try { |
482 | 129 | note.show(); | 136 | note.show(); |
483 | 130 | } | 137 | } |
484 | 131 | 138 | ||
485 | === modified file 'po/deja-dup.pot' | |||
486 | --- po/deja-dup.pot 2011-10-31 13:15:46 +0000 | |||
487 | +++ po/deja-dup.pot 2012-01-09 09:28:24 +0000 | |||
488 | @@ -8,7 +8,7 @@ | |||
489 | 8 | msgstr "" | 8 | msgstr "" |
490 | 9 | "Project-Id-Version: PACKAGE VERSION\n" | 9 | "Project-Id-Version: PACKAGE VERSION\n" |
491 | 10 | "Report-Msgid-Bugs-To: mike@mterry.name\n" | 10 | "Report-Msgid-Bugs-To: mike@mterry.name\n" |
493 | 11 | "POT-Creation-Date: 2011-10-28 12:39-0400\n" | 11 | "POT-Creation-Date: 2012-01-04 16:22-0500\n" |
494 | 12 | "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" | 12 | "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" |
495 | 13 | "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" | 13 | "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" |
496 | 14 | "Language-Team: LANGUAGE <LL@li.org>\n" | 14 | "Language-Team: LANGUAGE <LL@li.org>\n" |
497 | @@ -19,10 +19,10 @@ | |||
498 | 19 | "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n" | 19 | "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n" |
499 | 20 | 20 | ||
500 | 21 | #. Translators: "Backup" is a noun | 21 | #. Translators: "Backup" is a noun |
505 | 22 | #: ../data/deja-dup.desktop.in.h:1 ../data/deja-dup-ccpanel.desktop.in.h:2 | 22 | #: ../data/deja-dup.desktop.in.h:1 ../data/deja-dup-ccpanel.desktop.in.h:1 |
506 | 23 | #: ../data/deja-dup-preferences.desktop.in.in.h:2 ../deja-dup/Prompt.vala:93 | 23 | #: ../data/deja-dup-preferences.desktop.in.in.h:1 ../deja-dup/Prompt.vala:93 |
507 | 24 | #: ../deja-dup/Prompt.vala:127 ../deja-dup/StatusIcon.vala:125 | 24 | #: ../deja-dup/Prompt.vala:127 ../deja-dup/StatusIcon.vala:133 |
508 | 25 | #: ../deja-dup/StatusIcon.vala:224 ../monitor/monitor.vala:115 | 25 | #: ../deja-dup/StatusIcon.vala:231 ../monitor/monitor.vala:115 |
509 | 26 | #: ../preferences/preferences-main.vala:52 | 26 | #: ../preferences/preferences-main.vala:52 |
510 | 27 | #: ../preferences/preferences-main.vala:66 | 27 | #: ../preferences/preferences-main.vala:66 |
511 | 28 | msgid "Backup" | 28 | msgid "Backup" |
512 | @@ -39,20 +39,20 @@ | |||
513 | 39 | msgid "Déjà Dup Backup Tool" | 39 | msgid "Déjà Dup Backup Tool" |
514 | 40 | msgstr "" | 40 | msgstr "" |
515 | 41 | 41 | ||
523 | 42 | #: ../data/deja-dup-ccpanel.desktop.in.h:1 | 42 | #: ../data/deja-dup-ccpanel.desktop.in.h:2 |
524 | 43 | #: ../data/deja-dup-preferences.desktop.in.in.h:1 | 43 | #: ../data/deja-dup-preferences.desktop.in.in.h:2 |
518 | 44 | msgid "Back Up Now" | ||
519 | 45 | msgstr "" | ||
520 | 46 | |||
521 | 47 | #: ../data/deja-dup-ccpanel.desktop.in.h:3 | ||
522 | 48 | #: ../data/deja-dup-preferences.desktop.in.in.h:3 | ||
525 | 49 | msgid "Change your backup settings" | 44 | msgid "Change your backup settings" |
526 | 50 | msgstr "" | 45 | msgstr "" |
527 | 51 | 46 | ||
528 | 52 | #. These keywords are used when searching for applications in dashes, etc. | 47 | #. These keywords are used when searching for applications in dashes, etc. |
529 | 48 | #: ../data/deja-dup-ccpanel.desktop.in.h:4 | ||
530 | 49 | #: ../data/deja-dup-preferences.desktop.in.in.h:4 | ||
531 | 50 | msgid "déjà;deja;dup;" | ||
532 | 51 | msgstr "" | ||
533 | 52 | |||
534 | 53 | #: ../data/deja-dup-ccpanel.desktop.in.h:5 | 53 | #: ../data/deja-dup-ccpanel.desktop.in.h:5 |
535 | 54 | #: ../data/deja-dup-preferences.desktop.in.in.h:5 | 54 | #: ../data/deja-dup-preferences.desktop.in.in.h:5 |
537 | 55 | msgid "déjà;deja;dup;" | 55 | msgid "Back Up Now" |
538 | 56 | msgstr "" | 56 | msgstr "" |
539 | 57 | 57 | ||
540 | 58 | #. Translators: Monitor in this sense means something akin to 'watcher', not | 58 | #. Translators: Monitor in this sense means something akin to 'watcher', not |
541 | @@ -67,251 +67,251 @@ | |||
542 | 67 | msgstr "" | 67 | msgstr "" |
543 | 68 | 68 | ||
544 | 69 | #: ../data/org.gnome.DejaDup.gschema.xml.in.h:1 | 69 | #: ../data/org.gnome.DejaDup.gschema.xml.in.h:1 |
546 | 70 | msgid "Amazon S3 Access Key ID" | 70 | #: ../preferences/Preferences.vala:160 |
547 | 71 | msgid "Folders to back up" | ||
548 | 71 | msgstr "" | 72 | msgstr "" |
549 | 72 | 73 | ||
550 | 73 | #: ../data/org.gnome.DejaDup.gschema.xml.in.h:2 | 74 | #: ../data/org.gnome.DejaDup.gschema.xml.in.h:2 |
551 | 74 | msgid "" | 75 | msgid "" |
554 | 75 | "An optional folder name to store files in. This folder will be created in " | 76 | "This list of directories will be backed up. Reserved values $HOME, $DESKTOP, " |
555 | 76 | "the chosen bucket." | 77 | "$DOCUMENTS, $DOWNLOAD, $MUSIC, $PICTURES, $PUBLIC_SHARE, $TEMPLATES, $TRASH, " |
556 | 78 | "and $VIDEO are recognized as the user’s special directories. Relative " | ||
557 | 79 | "entries are relative to the user’s home directory." | ||
558 | 77 | msgstr "" | 80 | msgstr "" |
559 | 78 | 81 | ||
560 | 79 | #: ../data/org.gnome.DejaDup.gschema.xml.in.h:3 | 82 | #: ../data/org.gnome.DejaDup.gschema.xml.in.h:3 |
563 | 80 | #: ../deja-dup/AssistantRestore.vala:221 ../preferences/Preferences.vala:151 | 83 | #: ../preferences/Preferences.vala:168 |
564 | 81 | msgid "Backup location" | 84 | msgid "Folders to ignore" |
565 | 82 | msgstr "" | 85 | msgstr "" |
566 | 83 | 86 | ||
567 | 84 | #: ../data/org.gnome.DejaDup.gschema.xml.in.h:4 | 87 | #: ../data/org.gnome.DejaDup.gschema.xml.in.h:4 |
569 | 85 | msgid "Folder type" | 88 | msgid "" |
570 | 89 | "This list of directories will not be backed up. Reserved values $HOME, " | ||
571 | 90 | "$DESKTOP, $DOCUMENTS, $DOWNLOAD, $MUSIC, $PICTURES, $PUBLIC_SHARE, " | ||
572 | 91 | "$TEMPLATES, $TRASH, and $VIDEO are recognized as the user’s special " | ||
573 | 92 | "directories. Relative entries are relative to the user’s home directory." | ||
574 | 86 | msgstr "" | 93 | msgstr "" |
575 | 87 | 94 | ||
576 | 88 | #: ../data/org.gnome.DejaDup.gschema.xml.in.h:5 | 95 | #: ../data/org.gnome.DejaDup.gschema.xml.in.h:5 |
579 | 89 | #: ../preferences/Preferences.vala:160 | 96 | msgid "Whether the welcome screen has been dismissed" |
578 | 90 | msgid "Folders to back up" | ||
580 | 91 | msgstr "" | 97 | msgstr "" |
581 | 92 | 98 | ||
582 | 93 | #: ../data/org.gnome.DejaDup.gschema.xml.in.h:6 | 99 | #: ../data/org.gnome.DejaDup.gschema.xml.in.h:6 |
585 | 94 | #: ../preferences/Preferences.vala:168 | 100 | msgid "Whether to request the root password" |
584 | 95 | msgid "Folders to ignore" | ||
586 | 96 | msgstr "" | 101 | msgstr "" |
587 | 97 | 102 | ||
588 | 98 | #: ../data/org.gnome.DejaDup.gschema.xml.in.h:7 | 103 | #: ../data/org.gnome.DejaDup.gschema.xml.in.h:7 |
590 | 99 | msgid "Full name of the external volume" | 104 | msgid "" |
591 | 105 | "Whether to request the root password when backing up from or restoring to " | ||
592 | 106 | "system folders." | ||
593 | 100 | msgstr "" | 107 | msgstr "" |
594 | 101 | 108 | ||
595 | 102 | #: ../data/org.gnome.DejaDup.gschema.xml.in.h:8 | 109 | #: ../data/org.gnome.DejaDup.gschema.xml.in.h:8 |
597 | 103 | msgid "How long to keep backup files" | 110 | msgid "The last time Déjà Dup was run" |
598 | 104 | msgstr "" | 111 | msgstr "" |
599 | 105 | 112 | ||
600 | 106 | #: ../data/org.gnome.DejaDup.gschema.xml.in.h:9 | 113 | #: ../data/org.gnome.DejaDup.gschema.xml.in.h:9 |
602 | 107 | msgid "How often to periodically back up" | 114 | msgid "" |
603 | 115 | "The last time Déjà Dup was successfully run. This time should be in ISO 8601 " | ||
604 | 116 | "format." | ||
605 | 108 | msgstr "" | 117 | msgstr "" |
606 | 109 | 118 | ||
607 | 110 | #: ../data/org.gnome.DejaDup.gschema.xml.in.h:10 | 119 | #: ../data/org.gnome.DejaDup.gschema.xml.in.h:10 |
609 | 111 | msgid "Icon of the external volume" | 120 | msgid "The last time Déjà Dup backed up" |
610 | 112 | msgstr "" | 121 | msgstr "" |
611 | 113 | 122 | ||
612 | 114 | #: ../data/org.gnome.DejaDup.gschema.xml.in.h:11 | 123 | #: ../data/org.gnome.DejaDup.gschema.xml.in.h:11 |
613 | 115 | msgid "" | 124 | msgid "" |
616 | 116 | "If the backup location is on an external volume, this is its unique " | 125 | "The last time Déjà Dup successfully completed a backup. This time should be " |
617 | 117 | "filesystem identifier." | 126 | "in ISO 8601 format." |
618 | 118 | msgstr "" | 127 | msgstr "" |
619 | 119 | 128 | ||
620 | 120 | #: ../data/org.gnome.DejaDup.gschema.xml.in.h:12 | 129 | #: ../data/org.gnome.DejaDup.gschema.xml.in.h:12 |
624 | 121 | msgid "" | 130 | msgid "The last time Déjà Dup restored" |
622 | 122 | "If the backup location is on an external volume, this is the path of the " | ||
623 | 123 | "folder on that volume." | ||
625 | 124 | msgstr "" | 131 | msgstr "" |
626 | 125 | 132 | ||
627 | 126 | #: ../data/org.gnome.DejaDup.gschema.xml.in.h:13 | 133 | #: ../data/org.gnome.DejaDup.gschema.xml.in.h:13 |
628 | 127 | msgid "" | 134 | msgid "" |
630 | 128 | "If the backup location is on an external volume, this is the volume’s icon." | 135 | "The last time Déjà Dup successfully completed a restore. This time should be " |
631 | 136 | "in ISO 8601 format." | ||
632 | 129 | msgstr "" | 137 | msgstr "" |
633 | 130 | 138 | ||
634 | 131 | #: ../data/org.gnome.DejaDup.gschema.xml.in.h:14 | 139 | #: ../data/org.gnome.DejaDup.gschema.xml.in.h:14 |
638 | 132 | msgid "" | 140 | msgid "Whether to periodically back up" |
636 | 133 | "If the backup location is on an external volume, this is the volume’s longer " | ||
637 | 134 | "descriptive name." | ||
639 | 135 | msgstr "" | 141 | msgstr "" |
640 | 136 | 142 | ||
641 | 137 | #: ../data/org.gnome.DejaDup.gschema.xml.in.h:15 | 143 | #: ../data/org.gnome.DejaDup.gschema.xml.in.h:15 |
645 | 138 | msgid "" | 144 | msgid "Whether to automatically back up on a regular schedule." |
643 | 139 | "If the backup location is on an external volume, this is the volume’s " | ||
644 | 140 | "shorter name." | ||
646 | 141 | msgstr "" | 145 | msgstr "" |
647 | 142 | 146 | ||
648 | 143 | #: ../data/org.gnome.DejaDup.gschema.xml.in.h:16 | 147 | #: ../data/org.gnome.DejaDup.gschema.xml.in.h:16 |
650 | 144 | msgid "Location in which to hold the backup files." | 148 | msgid "How often to periodically back up" |
651 | 145 | msgstr "" | 149 | msgstr "" |
652 | 146 | 150 | ||
653 | 147 | #: ../data/org.gnome.DejaDup.gschema.xml.in.h:17 | 151 | #: ../data/org.gnome.DejaDup.gschema.xml.in.h:17 |
655 | 148 | msgid "Obsolete" | 152 | msgid "The number of days between backups." |
656 | 149 | msgstr "" | 153 | msgstr "" |
657 | 150 | 154 | ||
658 | 151 | #: ../data/org.gnome.DejaDup.gschema.xml.in.h:18 | 155 | #: ../data/org.gnome.DejaDup.gschema.xml.in.h:18 |
660 | 152 | msgid "Relative path under the external volume" | 156 | msgid "" |
661 | 157 | "The first time Déjà Dup checked whether it should prompt about backing up" | ||
662 | 153 | msgstr "" | 158 | msgstr "" |
663 | 154 | 159 | ||
664 | 155 | #: ../data/org.gnome.DejaDup.gschema.xml.in.h:19 | 160 | #: ../data/org.gnome.DejaDup.gschema.xml.in.h:19 |
666 | 156 | msgid "Short name of the external volume" | 161 | msgid "" |
667 | 162 | "When a user logs in, the Déjà Dup monitor checks whether it should prompt " | ||
668 | 163 | "about backing up. This is used to increase discoverability for users that " | ||
669 | 164 | "don’t know about backups. This time should be either ‘disabled’ to turn off " | ||
670 | 165 | "this check or in ISO 8601 format." | ||
671 | 157 | msgstr "" | 166 | msgstr "" |
672 | 158 | 167 | ||
673 | 159 | #: ../data/org.gnome.DejaDup.gschema.xml.in.h:20 | 168 | #: ../data/org.gnome.DejaDup.gschema.xml.in.h:20 |
678 | 160 | msgid "The Amazon S3 bucket name to use" | 169 | msgid "How long to keep backup files" |
679 | 161 | msgstr "" | 170 | msgstr "" |
680 | 162 | 171 | ||
681 | 163 | #. Left this way for historical reasons, should be '$HOSTNAME'. See convert_s3_folder_to_hostname() | 172 | #: ../data/org.gnome.DejaDup.gschema.xml.in.h:21 |
682 | 173 | msgid "" | ||
683 | 174 | "The number of days to keep backup files on the backup location. A value of 0 " | ||
684 | 175 | "means forever. This is a minimum number of days; the files may be kept " | ||
685 | 176 | "longer." | ||
686 | 177 | msgstr "" | ||
687 | 178 | |||
688 | 164 | #: ../data/org.gnome.DejaDup.gschema.xml.in.h:22 | 179 | #: ../data/org.gnome.DejaDup.gschema.xml.in.h:22 |
690 | 165 | msgid "The Amazon S3 folder" | 180 | msgid "Type of location to store backup" |
691 | 166 | msgstr "" | 181 | msgstr "" |
692 | 167 | 182 | ||
693 | 168 | #: ../data/org.gnome.DejaDup.gschema.xml.in.h:23 | 183 | #: ../data/org.gnome.DejaDup.gschema.xml.in.h:23 |
695 | 169 | msgid "The Rackspace Cloud Files container" | 184 | msgid "" |
696 | 185 | "The type of backup location. If ‘auto’, a default will be chosen based on " | ||
697 | 186 | "what is available." | ||
698 | 170 | msgstr "" | 187 | msgstr "" |
699 | 171 | 188 | ||
700 | 172 | #: ../data/org.gnome.DejaDup.gschema.xml.in.h:24 | 189 | #: ../data/org.gnome.DejaDup.gschema.xml.in.h:24 |
702 | 173 | msgid "The Ubuntu One folder" | 190 | msgid "Amazon S3 Access Key ID" |
703 | 174 | msgstr "" | 191 | msgstr "" |
704 | 175 | 192 | ||
705 | 176 | #: ../data/org.gnome.DejaDup.gschema.xml.in.h:25 | 193 | #: ../data/org.gnome.DejaDup.gschema.xml.in.h:25 |
708 | 177 | msgid "" | 194 | msgid "Your Amazon S3 Access Key Identifier. This acts as your S3 username." |
707 | 178 | "The first time Déjà Dup checked whether it should prompt about backing up" | ||
709 | 179 | msgstr "" | 195 | msgstr "" |
710 | 180 | 196 | ||
711 | 181 | #: ../data/org.gnome.DejaDup.gschema.xml.in.h:26 | 197 | #: ../data/org.gnome.DejaDup.gschema.xml.in.h:26 |
715 | 182 | msgid "" | 198 | msgid "The Amazon S3 bucket name to use" |
713 | 183 | "The folder name to store files in. If ‘$HOSTNAME’, it will default to a " | ||
714 | 184 | "folder based on the name of the computer." | ||
716 | 185 | msgstr "" | 199 | msgstr "" |
717 | 186 | 200 | ||
718 | 187 | #: ../data/org.gnome.DejaDup.gschema.xml.in.h:27 | 201 | #: ../data/org.gnome.DejaDup.gschema.xml.in.h:27 |
726 | 188 | msgid "The last time Déjà Dup backed up" | 202 | msgid "" |
727 | 189 | msgstr "" | 203 | "Which Amazon S3 bucket to store files in. This does not need to exist " |
728 | 190 | 204 | "already. Only legal hostname strings are valid." | |
729 | 191 | #: ../data/org.gnome.DejaDup.gschema.xml.in.h:28 | 205 | msgstr "" |
730 | 192 | msgid "The last time Déjà Dup restored" | 206 | |
731 | 193 | msgstr "" | 207 | #. Left this way for historical reasons, should be '$HOSTNAME'. See convert_s3_folder_to_hostname() |
725 | 194 | |||
732 | 195 | #: ../data/org.gnome.DejaDup.gschema.xml.in.h:29 | 208 | #: ../data/org.gnome.DejaDup.gschema.xml.in.h:29 |
736 | 196 | msgid "" | 209 | msgid "The Amazon S3 folder" |
734 | 197 | "The last time Déjà Dup successfully completed a backup. This time should be " | ||
735 | 198 | "in ISO 8601 format." | ||
737 | 199 | msgstr "" | 210 | msgstr "" |
738 | 200 | 211 | ||
739 | 201 | #: ../data/org.gnome.DejaDup.gschema.xml.in.h:30 | 212 | #: ../data/org.gnome.DejaDup.gschema.xml.in.h:30 |
740 | 202 | msgid "" | 213 | msgid "" |
743 | 203 | "The last time Déjà Dup successfully completed a restore. This time should be " | 214 | "An optional folder name to store files in. This folder will be created in " |
744 | 204 | "in ISO 8601 format." | 215 | "the chosen bucket." |
745 | 205 | msgstr "" | 216 | msgstr "" |
746 | 206 | 217 | ||
747 | 207 | #: ../data/org.gnome.DejaDup.gschema.xml.in.h:31 | 218 | #: ../data/org.gnome.DejaDup.gschema.xml.in.h:31 |
749 | 208 | msgid "The last time Déjà Dup was run" | 219 | msgid "The Rackspace Cloud Files container" |
750 | 209 | msgstr "" | 220 | msgstr "" |
751 | 210 | 221 | ||
752 | 211 | #: ../data/org.gnome.DejaDup.gschema.xml.in.h:32 | 222 | #: ../data/org.gnome.DejaDup.gschema.xml.in.h:32 |
753 | 212 | msgid "" | 223 | msgid "" |
756 | 213 | "The last time Déjà Dup was successfully run. This time should be in ISO 8601 " | 224 | "Which Rackspace Cloud Files container to store files in. This does not need " |
757 | 214 | "format." | 225 | "to exist already. Only legal hostname strings are valid." |
758 | 215 | msgstr "" | 226 | msgstr "" |
759 | 216 | 227 | ||
760 | 217 | #: ../data/org.gnome.DejaDup.gschema.xml.in.h:33 | 228 | #: ../data/org.gnome.DejaDup.gschema.xml.in.h:33 |
762 | 218 | msgid "The number of days between backups." | 229 | msgid "Your Rackspace username" |
763 | 219 | msgstr "" | 230 | msgstr "" |
764 | 220 | 231 | ||
765 | 221 | #: ../data/org.gnome.DejaDup.gschema.xml.in.h:34 | 232 | #: ../data/org.gnome.DejaDup.gschema.xml.in.h:34 |
770 | 222 | msgid "" | 233 | msgid "This is your username for the Rackspace Cloud Files service." |
767 | 223 | "The number of days to keep backup files on the backup location. A value of 0 " | ||
768 | 224 | "means forever. This is a minimum number of days; the files may be kept " | ||
769 | 225 | "longer." | ||
771 | 226 | msgstr "" | 234 | msgstr "" |
772 | 227 | 235 | ||
773 | 228 | #: ../data/org.gnome.DejaDup.gschema.xml.in.h:35 | 236 | #: ../data/org.gnome.DejaDup.gschema.xml.in.h:35 |
777 | 229 | msgid "" | 237 | msgid "The Ubuntu One folder" |
775 | 230 | "The type of backup location. If ‘auto’, a default will be chosen based on " | ||
776 | 231 | "what is available." | ||
778 | 232 | msgstr "" | 238 | msgstr "" |
779 | 233 | 239 | ||
780 | 234 | #: ../data/org.gnome.DejaDup.gschema.xml.in.h:36 | 240 | #: ../data/org.gnome.DejaDup.gschema.xml.in.h:36 |
782 | 235 | msgid "This is your username for the Rackspace Cloud Files service." | 241 | msgid "" |
783 | 242 | "The folder name to store files in. If ‘$HOSTNAME’, it will default to a " | ||
784 | 243 | "folder based on the name of the computer." | ||
785 | 236 | msgstr "" | 244 | msgstr "" |
786 | 237 | 245 | ||
787 | 238 | #: ../data/org.gnome.DejaDup.gschema.xml.in.h:37 | 246 | #: ../data/org.gnome.DejaDup.gschema.xml.in.h:37 |
793 | 239 | msgid "" | 247 | #: ../deja-dup/AssistantRestore.vala:221 ../preferences/Preferences.vala:151 |
794 | 240 | "This list of directories will be backed up. Reserved values $HOME, $DESKTOP, " | 248 | msgid "Backup location" |
790 | 241 | "$DOCUMENTS, $DOWNLOAD, $MUSIC, $PICTURES, $PUBLIC_SHARE, $TEMPLATES, $TRASH, " | ||
791 | 242 | "and $VIDEO are recognized as the user’s special directories. Relative " | ||
792 | 243 | "entries are relative to the user’s home directory." | ||
795 | 244 | msgstr "" | 249 | msgstr "" |
796 | 245 | 250 | ||
797 | 246 | #: ../data/org.gnome.DejaDup.gschema.xml.in.h:38 | 251 | #: ../data/org.gnome.DejaDup.gschema.xml.in.h:38 |
803 | 247 | msgid "" | 252 | msgid "Location in which to hold the backup files." |
799 | 248 | "This list of directories will not be backed up. Reserved values $HOME, " | ||
800 | 249 | "$DESKTOP, $DOCUMENTS, $DOWNLOAD, $MUSIC, $PICTURES, $PUBLIC_SHARE, " | ||
801 | 250 | "$TEMPLATES, $TRASH, and $VIDEO are recognized as the user’s special " | ||
802 | 251 | "directories. Relative entries are relative to the user’s home directory." | ||
804 | 252 | msgstr "" | 253 | msgstr "" |
805 | 253 | 254 | ||
806 | 254 | #: ../data/org.gnome.DejaDup.gschema.xml.in.h:39 | 255 | #: ../data/org.gnome.DejaDup.gschema.xml.in.h:39 |
808 | 255 | msgid "Type of location to store backup" | 256 | msgid "Folder type" |
809 | 256 | msgstr "" | 257 | msgstr "" |
810 | 257 | 258 | ||
811 | 258 | #: ../data/org.gnome.DejaDup.gschema.xml.in.h:40 | 259 | #: ../data/org.gnome.DejaDup.gschema.xml.in.h:40 |
813 | 259 | msgid "Unique ID of the external volume" | 260 | msgid "" |
814 | 261 | "Whether the backup location is a mounted external volume or a normal folder." | ||
815 | 260 | msgstr "" | 262 | msgstr "" |
816 | 261 | 263 | ||
817 | 262 | #: ../data/org.gnome.DejaDup.gschema.xml.in.h:41 | 264 | #: ../data/org.gnome.DejaDup.gschema.xml.in.h:41 |
823 | 263 | msgid "" | 265 | msgid "Relative path under the external volume" |
819 | 264 | "When a user logs in, the Déjà Dup monitor checks whether it should prompt " | ||
820 | 265 | "about backing up. This is used to increase discoverability for users that " | ||
821 | 266 | "don’t know about backups. This time should be either ‘disabled’ to turn off " | ||
822 | 267 | "this check or in ISO 8601 format." | ||
824 | 268 | msgstr "" | 266 | msgstr "" |
825 | 269 | 267 | ||
826 | 270 | #: ../data/org.gnome.DejaDup.gschema.xml.in.h:42 | 268 | #: ../data/org.gnome.DejaDup.gschema.xml.in.h:42 |
827 | 271 | msgid "" | 269 | msgid "" |
829 | 272 | "Whether the backup location is a mounted external volume or a normal folder." | 270 | "If the backup location is on an external volume, this is the path of the " |
830 | 271 | "folder on that volume." | ||
831 | 273 | msgstr "" | 272 | msgstr "" |
832 | 274 | 273 | ||
833 | 275 | #: ../data/org.gnome.DejaDup.gschema.xml.in.h:43 | 274 | #: ../data/org.gnome.DejaDup.gschema.xml.in.h:43 |
835 | 276 | msgid "Whether the welcome screen has been dismissed" | 275 | msgid "Unique ID of the external volume" |
836 | 277 | msgstr "" | 276 | msgstr "" |
837 | 278 | 277 | ||
838 | 279 | #: ../data/org.gnome.DejaDup.gschema.xml.in.h:44 | 278 | #: ../data/org.gnome.DejaDup.gschema.xml.in.h:44 |
840 | 280 | msgid "Whether to automatically back up on a regular schedule." | 279 | msgid "" |
841 | 280 | "If the backup location is on an external volume, this is its unique " | ||
842 | 281 | "filesystem identifier." | ||
843 | 281 | msgstr "" | 282 | msgstr "" |
844 | 282 | 283 | ||
845 | 283 | #: ../data/org.gnome.DejaDup.gschema.xml.in.h:45 | 284 | #: ../data/org.gnome.DejaDup.gschema.xml.in.h:45 |
847 | 284 | msgid "Whether to periodically back up" | 285 | msgid "Full name of the external volume" |
848 | 285 | msgstr "" | 286 | msgstr "" |
849 | 286 | 287 | ||
850 | 287 | #: ../data/org.gnome.DejaDup.gschema.xml.in.h:46 | 288 | #: ../data/org.gnome.DejaDup.gschema.xml.in.h:46 |
852 | 288 | msgid "Whether to request the root password" | 289 | msgid "" |
853 | 290 | "If the backup location is on an external volume, this is the volume’s longer " | ||
854 | 291 | "descriptive name." | ||
855 | 289 | msgstr "" | 292 | msgstr "" |
856 | 290 | 293 | ||
857 | 291 | #: ../data/org.gnome.DejaDup.gschema.xml.in.h:47 | 294 | #: ../data/org.gnome.DejaDup.gschema.xml.in.h:47 |
861 | 292 | msgid "" | 295 | msgid "Short name of the external volume" |
859 | 293 | "Whether to request the root password when backing up from or restoring to " | ||
860 | 294 | "system folders." | ||
862 | 295 | msgstr "" | 296 | msgstr "" |
863 | 296 | 297 | ||
864 | 297 | #: ../data/org.gnome.DejaDup.gschema.xml.in.h:48 | 298 | #: ../data/org.gnome.DejaDup.gschema.xml.in.h:48 |
865 | 298 | msgid "" | 299 | msgid "" |
868 | 299 | "Which Amazon S3 bucket to store files in. This does not need to exist " | 300 | "If the backup location is on an external volume, this is the volume’s " |
869 | 300 | "already. Only legal hostname strings are valid." | 301 | "shorter name." |
870 | 301 | msgstr "" | 302 | msgstr "" |
871 | 302 | 303 | ||
872 | 303 | #: ../data/org.gnome.DejaDup.gschema.xml.in.h:49 | 304 | #: ../data/org.gnome.DejaDup.gschema.xml.in.h:49 |
876 | 304 | msgid "" | 305 | msgid "Icon of the external volume" |
874 | 305 | "Which Rackspace Cloud Files container to store files in. This does not need " | ||
875 | 306 | "to exist already. Only legal hostname strings are valid." | ||
877 | 307 | msgstr "" | 306 | msgstr "" |
878 | 308 | 307 | ||
879 | 309 | #: ../data/org.gnome.DejaDup.gschema.xml.in.h:50 | 308 | #: ../data/org.gnome.DejaDup.gschema.xml.in.h:50 |
881 | 310 | msgid "Your Amazon S3 Access Key Identifier. This acts as your S3 username." | 309 | msgid "" |
882 | 310 | "If the backup location is on an external volume, this is the volume’s icon." | ||
883 | 311 | msgstr "" | 311 | msgstr "" |
884 | 312 | 312 | ||
885 | 313 | #: ../data/org.gnome.DejaDup.gschema.xml.in.h:51 | 313 | #: ../data/org.gnome.DejaDup.gschema.xml.in.h:51 |
887 | 314 | msgid "Your Rackspace username" | 314 | msgid "Obsolete" |
888 | 315 | msgstr "" | 315 | msgstr "" |
889 | 316 | 316 | ||
890 | 317 | #: ../data/ui/restore-missing.ui.h:1 | 317 | #: ../data/ui/restore-missing.ui.h:1 |
891 | @@ -515,41 +515,50 @@ | |||
892 | 515 | "only found version %d.%d.%.2d" | 515 | "only found version %d.%d.%.2d" |
893 | 516 | msgstr "" | 516 | msgstr "" |
894 | 517 | 517 | ||
896 | 518 | #: ../common/Duplicity.vala:132 ../common/Duplicity.vala:186 | 518 | #: ../common/Duplicity.vala:135 ../common/Duplicity.vala:198 |
897 | 519 | msgid "Paused (no network)" | 519 | msgid "Paused (no network)" |
898 | 520 | msgstr "" | 520 | msgstr "" |
899 | 521 | 521 | ||
902 | 522 | #: ../common/Duplicity.vala:392 ../common/Duplicity.vala:399 | 522 | #: ../common/Duplicity.vala:405 ../common/Duplicity.vala:412 |
903 | 523 | #: ../common/Duplicity.vala:418 ../common/Duplicity.vala:423 | 523 | #: ../common/Duplicity.vala:431 ../common/Duplicity.vala:436 |
904 | 524 | #: ../common/Operation.vala:79 ../common/Operation.vala:111 | 524 | #: ../common/Operation.vala:79 ../common/Operation.vala:111 |
905 | 525 | msgid "Preparing…" | 525 | msgid "Preparing…" |
906 | 526 | msgstr "" | 526 | msgstr "" |
907 | 527 | 527 | ||
908 | 528 | #. Was not even a file path (maybe something goofy like computer://) | 528 | #. Was not even a file path (maybe something goofy like computer://) |
910 | 529 | #: ../common/Duplicity.vala:450 | 529 | #: ../common/Duplicity.vala:463 |
911 | 530 | #, c-format | 530 | #, c-format |
912 | 531 | msgid "Could not restore ‘%s’: Not a valid file location" | 531 | msgid "Could not restore ‘%s’: Not a valid file location" |
913 | 532 | msgstr "" | 532 | msgstr "" |
914 | 533 | 533 | ||
915 | 534 | #. Tiny backup location. Suggest they get a larger one. | 534 | #. Tiny backup location. Suggest they get a larger one. |
917 | 535 | #: ../common/Duplicity.vala:516 | 535 | #: ../common/Duplicity.vala:529 |
918 | 536 | msgid "Backup location is too small. Try using one with more space." | 536 | msgid "Backup location is too small. Try using one with more space." |
919 | 537 | msgstr "" | 537 | msgstr "" |
920 | 538 | 538 | ||
922 | 539 | #: ../common/Duplicity.vala:538 | 539 | #: ../common/Duplicity.vala:551 |
923 | 540 | msgid "Backup location does not have enough free space." | 540 | msgid "Backup location does not have enough free space." |
924 | 541 | msgstr "" | 541 | msgstr "" |
925 | 542 | 542 | ||
927 | 543 | #: ../common/Duplicity.vala:557 ../common/Duplicity.vala:571 | 543 | #: ../common/Duplicity.vala:570 ../common/Duplicity.vala:584 |
928 | 544 | msgid "Cleaning up…" | 544 | msgid "Cleaning up…" |
929 | 545 | msgstr "" | 545 | msgstr "" |
930 | 546 | 546 | ||
933 | 547 | #: ../common/Duplicity.vala:673 ../common/Duplicity.vala:1062 | 547 | #. OK, we succeeded yay! But some files didn't make it into the backup |
934 | 548 | #: ../deja-dup/AssistantOperation.vala:519 | 548 | #. because we couldn't read them. So tell the user so they don't think |
935 | 549 | #. everything is hunky dory. | ||
936 | 550 | #: ../common/Duplicity.vala:679 | ||
937 | 551 | msgid "" | ||
938 | 552 | "Could not back up the following files. Please make sure you are able to " | ||
939 | 553 | "open them." | ||
940 | 554 | msgstr "" | ||
941 | 555 | |||
942 | 556 | #: ../common/Duplicity.vala:700 ../common/Duplicity.vala:1089 | ||
943 | 557 | #: ../deja-dup/AssistantOperation.vala:537 | ||
944 | 549 | msgid "Failed with an unknown error." | 558 | msgid "Failed with an unknown error." |
945 | 550 | msgstr "" | 559 | msgstr "" |
946 | 551 | 560 | ||
948 | 552 | #: ../common/Duplicity.vala:901 | 561 | #: ../common/Duplicity.vala:929 |
949 | 553 | #, c-format | 562 | #, c-format |
950 | 554 | msgid "Could not restore ‘%s’: File not found in backup" | 563 | msgid "Could not restore ‘%s’: File not found in backup" |
951 | 555 | msgstr "" | 564 | msgstr "" |
952 | @@ -557,16 +566,16 @@ | |||
953 | 557 | #. notify upper layers, if they want to do anything | 566 | #. notify upper layers, if they want to do anything |
954 | 558 | #. Duplicity tried to ask the user what the encryption password is. | 567 | #. Duplicity tried to ask the user what the encryption password is. |
955 | 559 | #. notify upper layers, if they want to do anything | 568 | #. notify upper layers, if they want to do anything |
958 | 560 | #: ../common/Duplicity.vala:907 ../common/Duplicity.vala:1009 | 569 | #: ../common/Duplicity.vala:935 ../common/Duplicity.vala:1037 |
959 | 561 | #: ../common/Duplicity.vala:1013 | 570 | #: ../common/Duplicity.vala:1041 |
960 | 562 | msgid "Bad encryption password." | 571 | msgid "Bad encryption password." |
961 | 563 | msgstr "" | 572 | msgstr "" |
962 | 564 | 573 | ||
964 | 565 | #: ../common/Duplicity.vala:912 | 574 | #: ../common/Duplicity.vala:940 |
965 | 566 | msgid "Computer name changed" | 575 | msgid "Computer name changed" |
966 | 567 | msgstr "" | 576 | msgstr "" |
967 | 568 | 577 | ||
969 | 569 | #: ../common/Duplicity.vala:912 | 578 | #: ../common/Duplicity.vala:940 |
970 | 570 | #, c-format | 579 | #, c-format |
971 | 571 | msgid "" | 580 | msgid "" |
972 | 572 | "The existing backup is of a computer named %s, but the current computer’s " | 581 | "The existing backup is of a computer named %s, but the current computer’s " |
973 | @@ -574,67 +583,67 @@ | |||
974 | 574 | "location." | 583 | "location." |
975 | 575 | msgstr "" | 584 | msgstr "" |
976 | 576 | 585 | ||
978 | 577 | #: ../common/Duplicity.vala:947 | 586 | #: ../common/Duplicity.vala:975 |
979 | 578 | #, c-format | 587 | #, c-format |
980 | 579 | msgid "Permission denied when trying to create ‘%s’." | 588 | msgid "Permission denied when trying to create ‘%s’." |
981 | 580 | msgstr "" | 589 | msgstr "" |
982 | 581 | 590 | ||
983 | 582 | #. assume error is on backend side | 591 | #. assume error is on backend side |
985 | 583 | #: ../common/Duplicity.vala:951 ../common/Duplicity.vala:955 | 592 | #: ../common/Duplicity.vala:979 ../common/Duplicity.vala:983 |
986 | 584 | #, c-format | 593 | #, c-format |
987 | 585 | msgid "Permission denied when trying to read ‘%s’." | 594 | msgid "Permission denied when trying to read ‘%s’." |
988 | 586 | msgstr "" | 595 | msgstr "" |
989 | 587 | 596 | ||
991 | 588 | #: ../common/Duplicity.vala:959 | 597 | #: ../common/Duplicity.vala:987 |
992 | 589 | #, c-format | 598 | #, c-format |
993 | 590 | msgid "Permission denied when trying to delete ‘%s’." | 599 | msgid "Permission denied when trying to delete ‘%s’." |
994 | 591 | msgstr "" | 600 | msgstr "" |
995 | 592 | 601 | ||
997 | 593 | #: ../common/Duplicity.vala:966 | 602 | #: ../common/Duplicity.vala:994 |
998 | 594 | #, c-format | 603 | #, c-format |
999 | 595 | msgid "Backup location ‘%s’ does not exist." | 604 | msgid "Backup location ‘%s’ does not exist." |
1000 | 596 | msgstr "" | 605 | msgstr "" |
1001 | 597 | 606 | ||
1003 | 598 | #: ../common/Duplicity.vala:972 ../common/Duplicity.vala:1032 | 607 | #: ../common/Duplicity.vala:1000 ../common/Duplicity.vala:1060 |
1004 | 599 | msgid "No space left." | 608 | msgid "No space left." |
1005 | 600 | msgstr "" | 609 | msgstr "" |
1006 | 601 | 610 | ||
1008 | 602 | #: ../common/Duplicity.vala:986 | 611 | #: ../common/Duplicity.vala:1014 |
1009 | 603 | msgid "Invalid ID." | 612 | msgid "Invalid ID." |
1010 | 604 | msgstr "" | 613 | msgstr "" |
1011 | 605 | 614 | ||
1013 | 606 | #: ../common/Duplicity.vala:988 | 615 | #: ../common/Duplicity.vala:1016 |
1014 | 607 | msgid "Invalid secret key." | 616 | msgid "Invalid secret key." |
1015 | 608 | msgstr "" | 617 | msgstr "" |
1016 | 609 | 618 | ||
1018 | 610 | #: ../common/Duplicity.vala:990 | 619 | #: ../common/Duplicity.vala:1018 |
1019 | 611 | msgid "Your Amazon Web Services account is not signed up for the S3 service." | 620 | msgid "Your Amazon Web Services account is not signed up for the S3 service." |
1020 | 612 | msgstr "" | 621 | msgstr "" |
1021 | 613 | 622 | ||
1023 | 614 | #: ../common/Duplicity.vala:1003 | 623 | #: ../common/Duplicity.vala:1031 |
1024 | 615 | msgid "S3 bucket name is not available." | 624 | msgid "S3 bucket name is not available." |
1025 | 616 | msgstr "" | 625 | msgstr "" |
1026 | 617 | 626 | ||
1028 | 618 | #: ../common/Duplicity.vala:1017 | 627 | #: ../common/Duplicity.vala:1045 |
1029 | 619 | #, c-format | 628 | #, c-format |
1030 | 620 | msgid "Error reading file ‘%s’." | 629 | msgid "Error reading file ‘%s’." |
1031 | 621 | msgstr "" | 630 | msgstr "" |
1032 | 622 | 631 | ||
1034 | 623 | #: ../common/Duplicity.vala:1019 | 632 | #: ../common/Duplicity.vala:1047 |
1035 | 624 | #, c-format | 633 | #, c-format |
1036 | 625 | msgid "Error writing file ‘%s’." | 634 | msgid "Error writing file ‘%s’." |
1037 | 626 | msgstr "" | 635 | msgstr "" |
1038 | 627 | 636 | ||
1040 | 628 | #: ../common/Duplicity.vala:1034 | 637 | #: ../common/Duplicity.vala:1062 |
1041 | 629 | #, c-format | 638 | #, c-format |
1042 | 630 | msgid "No space left in ‘%s’." | 639 | msgid "No space left in ‘%s’." |
1043 | 631 | msgstr "" | 640 | msgstr "" |
1044 | 632 | 641 | ||
1046 | 633 | #: ../common/Duplicity.vala:1042 | 642 | #: ../common/Duplicity.vala:1070 |
1047 | 634 | msgid "No backup files found" | 643 | msgid "No backup files found" |
1048 | 635 | msgstr "" | 644 | msgstr "" |
1049 | 636 | 645 | ||
1051 | 637 | #: ../common/Duplicity.vala:1093 | 646 | #: ../common/Duplicity.vala:1120 |
1052 | 638 | msgid "Uploading…" | 647 | msgid "Uploading…" |
1053 | 639 | msgstr "" | 648 | msgstr "" |
1054 | 640 | 649 | ||
1055 | @@ -692,7 +701,11 @@ | |||
1056 | 692 | msgid "Backup Failed" | 701 | msgid "Backup Failed" |
1057 | 693 | msgstr "" | 702 | msgstr "" |
1058 | 694 | 703 | ||
1060 | 695 | #: ../deja-dup/AssistantBackup.vala:97 | 704 | #: ../deja-dup/AssistantBackup.vala:93 |
1061 | 705 | msgid "Backup Finished" | ||
1062 | 706 | msgstr "" | ||
1063 | 707 | |||
1064 | 708 | #: ../deja-dup/AssistantBackup.vala:101 | ||
1065 | 696 | msgid "Backing Up…" | 709 | msgid "Backing Up…" |
1066 | 697 | msgstr "" | 710 | msgstr "" |
1067 | 698 | 711 | ||
1068 | @@ -704,51 +717,51 @@ | |||
1069 | 704 | msgid "_Details" | 717 | msgid "_Details" |
1070 | 705 | msgstr "" | 718 | msgstr "" |
1071 | 706 | 719 | ||
1073 | 707 | #: ../deja-dup/AssistantOperation.vala:302 | 720 | #: ../deja-dup/AssistantOperation.vala:304 |
1074 | 708 | msgid "_Allow restoring without a password" | 721 | msgid "_Allow restoring without a password" |
1075 | 709 | msgstr "" | 722 | msgstr "" |
1076 | 710 | 723 | ||
1078 | 711 | #: ../deja-dup/AssistantOperation.vala:308 | 724 | #: ../deja-dup/AssistantOperation.vala:310 |
1079 | 712 | msgid "_Password-protect your backup" | 725 | msgid "_Password-protect your backup" |
1080 | 713 | msgstr "" | 726 | msgstr "" |
1081 | 714 | 727 | ||
1083 | 715 | #: ../deja-dup/AssistantOperation.vala:322 | 728 | #: ../deja-dup/AssistantOperation.vala:324 |
1084 | 716 | #, c-format | 729 | #, c-format |
1085 | 717 | msgid "" | 730 | msgid "" |
1086 | 718 | "You will need your password to restore your files. You might want to write " | 731 | "You will need your password to restore your files. You might want to write " |
1087 | 719 | "it down." | 732 | "it down." |
1088 | 720 | msgstr "" | 733 | msgstr "" |
1089 | 721 | 734 | ||
1091 | 722 | #: ../deja-dup/AssistantOperation.vala:337 | 735 | #: ../deja-dup/AssistantOperation.vala:339 |
1092 | 723 | msgid "E_ncryption password" | 736 | msgid "E_ncryption password" |
1093 | 724 | msgstr "" | 737 | msgstr "" |
1094 | 725 | 738 | ||
1096 | 726 | #: ../deja-dup/AssistantOperation.vala:354 | 739 | #: ../deja-dup/AssistantOperation.vala:356 |
1097 | 727 | msgid "Confir_m password" | 740 | msgid "Confir_m password" |
1098 | 728 | msgstr "" | 741 | msgstr "" |
1099 | 729 | 742 | ||
1101 | 730 | #: ../deja-dup/AssistantOperation.vala:367 | 743 | #: ../deja-dup/AssistantOperation.vala:369 |
1102 | 731 | msgid "_Show password" | 744 | msgid "_Show password" |
1103 | 732 | msgstr "" | 745 | msgstr "" |
1104 | 733 | 746 | ||
1106 | 734 | #: ../deja-dup/AssistantOperation.vala:376 | 747 | #: ../deja-dup/AssistantOperation.vala:378 |
1107 | 735 | #: ../deja-dup/MountOperationAssistant.vala:40 | 748 | #: ../deja-dup/MountOperationAssistant.vala:40 |
1108 | 736 | msgid "_Remember password" | 749 | msgid "_Remember password" |
1109 | 737 | msgstr "" | 750 | msgstr "" |
1110 | 738 | 751 | ||
1112 | 739 | #: ../deja-dup/AssistantOperation.vala:443 | 752 | #: ../deja-dup/AssistantOperation.vala:447 |
1113 | 740 | msgid "Summary" | 753 | msgid "Summary" |
1114 | 741 | msgstr "" | 754 | msgstr "" |
1115 | 742 | 755 | ||
1117 | 743 | #: ../deja-dup/AssistantOperation.vala:712 | 756 | #: ../deja-dup/AssistantOperation.vala:730 |
1118 | 744 | msgid "Require Password?" | 757 | msgid "Require Password?" |
1119 | 745 | msgstr "" | 758 | msgstr "" |
1120 | 746 | 759 | ||
1122 | 747 | #: ../deja-dup/AssistantOperation.vala:714 | 760 | #: ../deja-dup/AssistantOperation.vala:732 |
1123 | 748 | msgid "Encryption Password Needed" | 761 | msgid "Encryption Password Needed" |
1124 | 749 | msgstr "" | 762 | msgstr "" |
1125 | 750 | 763 | ||
1127 | 751 | #: ../deja-dup/AssistantOperation.vala:760 | 764 | #: ../deja-dup/AssistantOperation.vala:778 |
1128 | 752 | msgid "Backup encryption password" | 765 | msgid "Backup encryption password" |
1129 | 753 | msgstr "" | 766 | msgstr "" |
1130 | 754 | 767 | ||
1131 | @@ -1025,24 +1038,33 @@ | |||
1132 | 1025 | msgid "_Skip Backup" | 1038 | msgid "_Skip Backup" |
1133 | 1026 | msgstr "" | 1039 | msgstr "" |
1134 | 1027 | 1040 | ||
1136 | 1028 | #: ../deja-dup/StatusIcon.vala:126 | 1041 | #: ../deja-dup/StatusIcon.vala:125 |
1137 | 1029 | msgid "Backup completed" | 1042 | msgid "Backup completed" |
1138 | 1030 | msgstr "" | 1043 | msgstr "" |
1139 | 1031 | 1044 | ||
1141 | 1032 | #: ../deja-dup/StatusIcon.vala:225 | 1045 | #: ../deja-dup/StatusIcon.vala:129 |
1142 | 1046 | msgid "Backup finished" | ||
1143 | 1047 | msgstr "" | ||
1144 | 1048 | |||
1145 | 1049 | #: ../deja-dup/StatusIcon.vala:130 | ||
1146 | 1050 | msgid "" | ||
1147 | 1051 | "Not all files were successfully backed up. See dialog for more details." | ||
1148 | 1052 | msgstr "" | ||
1149 | 1053 | |||
1150 | 1054 | #: ../deja-dup/StatusIcon.vala:232 | ||
1151 | 1033 | msgid "Starting scheduled backup" | 1055 | msgid "Starting scheduled backup" |
1152 | 1034 | msgstr "" | 1056 | msgstr "" |
1153 | 1035 | 1057 | ||
1155 | 1036 | #: ../deja-dup/StatusIcon.vala:227 | 1058 | #: ../deja-dup/StatusIcon.vala:234 |
1156 | 1037 | msgid "Show Progress" | 1059 | msgid "Show Progress" |
1157 | 1038 | msgstr "" | 1060 | msgstr "" |
1158 | 1039 | 1061 | ||
1160 | 1040 | #: ../deja-dup/StatusIcon.vala:265 | 1062 | #: ../deja-dup/StatusIcon.vala:272 |
1161 | 1041 | #, c-format | 1063 | #, c-format |
1162 | 1042 | msgid "%.1f%% complete" | 1064 | msgid "%.1f%% complete" |
1163 | 1043 | msgstr "" | 1065 | msgstr "" |
1164 | 1044 | 1066 | ||
1166 | 1045 | #: ../deja-dup/StatusIcon.vala:278 | 1067 | #: ../deja-dup/StatusIcon.vala:285 |
1167 | 1046 | msgid "Show _Progress" | 1068 | msgid "Show _Progress" |
1168 | 1047 | msgstr "" | 1069 | msgstr "" |
1169 | 1048 | 1070 | ||
1170 | @@ -1114,6 +1136,10 @@ | |||
1171 | 1114 | msgid "Schedule" | 1136 | msgid "Schedule" |
1172 | 1115 | msgstr "" | 1137 | msgstr "" |
1173 | 1116 | 1138 | ||
1174 | 1139 | #: ../preferences/Preferences.vala:365 | ||
1175 | 1140 | msgid "Categories" | ||
1176 | 1141 | msgstr "" | ||
1177 | 1142 | |||
1178 | 1117 | #: ../widgets/ConfigDelete.vala:43 | 1143 | #: ../widgets/ConfigDelete.vala:43 |
1179 | 1118 | msgid "At least a month" | 1144 | msgid "At least a month" |
1180 | 1119 | msgstr "" | 1145 | msgstr "" |
1181 | 1120 | 1146 | ||
1182 | === modified file 'tests/common/common.vala' | |||
1183 | --- tests/common/common.vala 2012-01-06 02:47:04 +0000 | |||
1184 | +++ tests/common/common.vala 2012-01-09 09:28:24 +0000 | |||
1185 | @@ -207,11 +207,14 @@ | |||
1186 | 207 | { | 207 | { |
1187 | 208 | var loop = new MainLoop(null); | 208 | var loop = new MainLoop(null); |
1188 | 209 | var op = new DejaDup.OperationBackup(); | 209 | var op = new DejaDup.OperationBackup(); |
1190 | 210 | op.done.connect((op, s, c) => { | 210 | op.done.connect((op, s, c, d) => { |
1191 | 211 | Test.message("Done: %d, %d, %s", (int)s, (int)c, d); | ||
1192 | 211 | if (success != s) | 212 | if (success != s) |
1193 | 212 | warning("Success didn't match; expected %d, got %d", (int) success, (int) s); | 213 | warning("Success didn't match; expected %d, got %d", (int) success, (int) s); |
1194 | 213 | if (cancelled != c) | 214 | if (cancelled != c) |
1195 | 214 | warning("Cancel didn't match; expected %d, got %d", (int) cancelled, (int) c); | 215 | warning("Cancel didn't match; expected %d, got %d", (int) cancelled, (int) c); |
1196 | 216 | if (detail != d) | ||
1197 | 217 | warning("Detail didn't match; expected %s, got %s", detail, d); | ||
1198 | 215 | loop.quit(); | 218 | loop.quit(); |
1199 | 216 | }); | 219 | }); |
1200 | 217 | 220 | ||
1201 | @@ -420,6 +423,43 @@ | |||
1202 | 420 | br.run(); | 423 | br.run(); |
1203 | 421 | } | 424 | } |
1204 | 422 | 425 | ||
1205 | 426 | void read_error() | ||
1206 | 427 | { | ||
1207 | 428 | Test.bug("907846"); | ||
1208 | 429 | var user = Environment.get_user_name(); | ||
1209 | 430 | set_script(""" | ||
1210 | 431 | ARGS: collection-status %s | ||
1211 | 432 | |||
1212 | 433 | === deja-dup === | ||
1213 | 434 | ARGS: %s | ||
1214 | 435 | |||
1215 | 436 | WARNING 10 '/blarg' | ||
1216 | 437 | |||
1217 | 438 | WARNING 10 '/home/%s/1' | ||
1218 | 439 | |||
1219 | 440 | WARNING 10 '/home/%s/2' | ||
1220 | 441 | |||
1221 | 442 | === deja-dup === | ||
1222 | 443 | ARGS: %s | ||
1223 | 444 | |||
1224 | 445 | WARNING 10 '/blarg' | ||
1225 | 446 | |||
1226 | 447 | WARNING 10 '/home/%s/1' | ||
1227 | 448 | |||
1228 | 449 | WARNING 10 '/home/%s/2' | ||
1229 | 450 | |||
1230 | 451 | """.printf(default_args(), | ||
1231 | 452 | default_args(Mode.DRY), user, user, | ||
1232 | 453 | default_args(Mode.BACKUP), user, user)); | ||
1233 | 454 | |||
1234 | 455 | var br = new BackupRunner(); | ||
1235 | 456 | br.detail = """Could not back up the following files. Please make sure you are able to open them. | ||
1236 | 457 | |||
1237 | 458 | /home/%s/1 | ||
1238 | 459 | /home/%s/2""".printf(user, user); | ||
1239 | 460 | br.run(); | ||
1240 | 461 | } | ||
1241 | 462 | |||
1242 | 423 | int main(string[] args) | 463 | int main(string[] args) |
1243 | 424 | { | 464 | { |
1244 | 425 | Test.init(ref args); | 465 | Test.init(ref args); |
1245 | @@ -445,6 +485,7 @@ | |||
1246 | 445 | backup.add(make_backup_case("cancel_noop", cancel_noop)); | 485 | backup.add(make_backup_case("cancel_noop", cancel_noop)); |
1247 | 446 | backup.add(make_backup_case("cancel", cancel)); | 486 | backup.add(make_backup_case("cancel", cancel)); |
1248 | 447 | backup.add(make_backup_case("stop", stop)); | 487 | backup.add(make_backup_case("stop", stop)); |
1249 | 488 | backup.add(make_backup_case("read_error", read_error)); | ||
1250 | 448 | TestSuite.get_root().add_suite(backup); | 489 | TestSuite.get_root().add_suite(backup); |
1251 | 449 | 490 | ||
1252 | 450 | var rv = Test.run(); | 491 | var rv = Test.run(); |
Sorry for the delay in reviewing this, I think it looks good however the tests have a conflict now with the latest trunk. Can you update this branch to merge cleanly and let me give it another once over?