Moved bootloader options to a separate window

This commit is contained in:
Tony George 2016-11-06 20:01:18 +05:30
parent 56f99394ba
commit e45f78da54
6 changed files with 539 additions and 122 deletions

View File

@ -1525,9 +1525,42 @@ public class Main : GLib.Object{
return strcmp(a.mount_point, b.mount_point);
});
init_boot_options(); // boot options depend on the mount list
log_debug("Main: init_mount_list(): exit");
}
private void init_boot_options(){
var grub_dev = dst_root;
grub_device = grub_dev.device;
while ((grub_dev != null) && grub_dev.has_parent()){
grub_dev = grub_dev.parent;
grub_device = grub_dev.device;
}
if (mirror_system){
// bootloader must be re-installed
reinstall_grub2 = true;
update_initramfs = true;
update_grub = true;
}
else{
if (App.snapshot_to_restore.distro.dist_id == "fedora"){
// grub2-install should never be run on EFI fedora systems
reinstall_grub2 = false;
update_initramfs = false;
update_grub = true;
}
else{
reinstall_grub2 = true;
update_initramfs = false;
update_grub = true;
}
}
}
public bool restore_snapshot(Gtk.Window? parent_win){
log_debug("Main: restore_snapshot()");

273
src/Gtk/BootOptionsBox.vala Normal file
View File

@ -0,0 +1,273 @@
/*
* RestoreDeviceBox.vala
*
* Copyright 2016 Tony George <tony.george.kol@gmail.com>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
* MA 02110-1301, USA.
*
*
*/
using Gtk;
using Gee;
using TeeJee.Logging;
using TeeJee.FileSystem;
using TeeJee.JsonHelper;
using TeeJee.ProcessHelper;
using TeeJee.GtkHelper;
using TeeJee.System;
using TeeJee.Misc;
class BootOptionsBox : Gtk.Box{
private Gtk.Box option_box;
private Gtk.ComboBox cmb_grub_dev;
private Gtk.CheckButton chk_reinstall_grub;
private Gtk.CheckButton chk_update_initramfs;
private Gtk.CheckButton chk_update_grub;
private Gtk.Window parent_window;
public BootOptionsBox (Gtk.Window _parent_window) {
log_debug("BootOptionsBox: BootOptionsBox()");
//base(Gtk.Orientation.VERTICAL, 6); // issue with vala
Object(orientation: Gtk.Orientation.VERTICAL, spacing: 6); // work-around
parent_window = _parent_window;
margin = 12;
// options
option_box = new Gtk.Box(Gtk.Orientation.VERTICAL, 6);
add(option_box);
add_bootloader_options();
refresh_options();
log_debug("BootOptionsBox: BootOptionsBox(): exit");
}
private void add_bootloader_options(){
// header
//var label = add_label_header(this, _("Select Bootloader Options"), true);
add_chk_reinstall_grub();
var hbox = new Box (Orientation.HORIZONTAL, 6);
hbox.margin_left = 12;
add (hbox);
//cmb_grub_dev
cmb_grub_dev = new ComboBox ();
cmb_grub_dev.hexpand = true;
hbox.add(cmb_grub_dev);
var cell_text = new CellRendererText ();
cell_text.text = "";
cmb_grub_dev.pack_start(cell_text, false);
cell_text = new CellRendererText();
cmb_grub_dev.pack_start(cell_text, false);
cmb_grub_dev.set_cell_data_func(cell_text, (cell_layout, cell, model, iter)=>{
Device dev;
model.get (iter, 0, out dev, -1);
if (dev.type == "disk"){
//log_msg("desc:" + dev.description());
(cell as Gtk.CellRendererText).markup =
"<b>%s (MBR)</b>".printf(dev.description_formatted());
}
else{
(cell as Gtk.CellRendererText).text = dev.description();
}
});
cmb_grub_dev.changed.connect(()=>{
save_grub_device_selection();
});
/*string tt = "<b>" + _("** Advanced Users **") + "</b>\n\n"+ _("Skips bootloader (re)installation on target device.\nFiles in /boot directory on target partition will remain untouched.\n\nIf you are restoring a system that was bootable previously then it should boot successfully. Otherwise the system may fail to boot.");*/
hbox = new Gtk.Box (Orientation.HORIZONTAL, 6);
add (hbox);
add_chk_update_initramfs(hbox);
add_chk_update_grub(hbox);
}
private void add_chk_reinstall_grub(){
var chk = new CheckButton.with_label(_("(Re)install GRUB2 on:"));
chk.active = false;
chk.set_tooltip_markup(_("Re-installs the GRUB2 bootloader on the selected device."));
//chk.margin_bottom = 12;
add (chk);
chk_reinstall_grub = chk;
chk.toggled.connect(()=>{
cmb_grub_dev.sensitive = chk_reinstall_grub.active;
App.reinstall_grub2 = chk_reinstall_grub.active;
cmb_grub_dev.changed();
});
}
private void add_chk_update_initramfs(Gtk.Box hbox){
//chk_update_initramfs
var chk = new CheckButton.with_label(_("Update initramfs"));
chk.active = false;
chk.set_tooltip_markup(_("Re-generates initramfs for all installed kernels. This is generally not needed. Select this only if the restored system fails to boot."));
//chk.margin_bottom = 12;
add (chk);
chk_update_initramfs = chk;
chk.toggled.connect(()=>{
App.update_initramfs = chk_update_initramfs.active;
});
}
private void add_chk_update_grub(Gtk.Box hbox){
//chk_update_grub
var chk = new CheckButton.with_label(_("Update GRUB menu"));
chk.active = false;
chk.set_tooltip_markup(_("Updates the GRUB menu entries (recommended). This is safe to run and should be left selected."));
//chk.margin_bottom = 12;
add (chk);
chk_update_grub = chk;
chk.toggled.connect(()=>{
App.update_grub = chk_update_grub.active;
});
}
private void save_grub_device_selection(){
App.grub_device = "";
if (App.reinstall_grub2){
Device entry;
TreeIter iter;
bool ok = cmb_grub_dev.get_active_iter (out iter);
if (!ok) { return; } // not selected
TreeModel model = (TreeModel) cmb_grub_dev.model;
model.get(iter, 0, out entry);
App.grub_device = entry.device;
}
}
private void refresh_options(){
refresh_cmb_grub_dev();
chk_reinstall_grub.active = App.reinstall_grub2;
cmb_grub_dev.sensitive = chk_reinstall_grub.active;
chk_update_initramfs.active = App.update_initramfs;
chk_update_grub.active = App.update_grub;
chk_reinstall_grub.sensitive = true;
chk_update_initramfs.sensitive = true;
chk_update_grub.sensitive = true;
if (App.mirror_system){
// bootloader must be re-installed
chk_reinstall_grub.sensitive = false;
chk_update_initramfs.sensitive = false;
chk_update_grub.sensitive = false;
}
else{
if (App.snapshot_to_restore.distro.dist_id == "fedora"){
// grub2-install should never be run on EFI fedora systems
chk_reinstall_grub.sensitive = false;
}
}
}
private void refresh_cmb_grub_dev(){
var store = new Gtk.ListStore(2, typeof(Device), typeof(Gdk.Pixbuf));
Gdk.Pixbuf pix_device = get_shared_icon("drive-harddisk","disk.png",16).pixbuf;
TreeIter iter;
foreach(Device dev in Device.get_block_devices_using_lsblk()) {
// select disk and normal partitions, skip others (loop crypt rom lvm)
if ((dev.type != "disk") && (dev.type != "part")){
continue;
}
// skip luks and lvm2 partitions
if ((dev.fstype == "luks")||(dev.fstype == "lvm2")){
continue;
}
// skip extended partitions
if (dev.size_bytes < 10 * KB){
continue;
}
store.append(out iter);
store.set (iter, 0, dev);
store.set (iter, 1, pix_device);
}
cmb_grub_dev.model = store;
cmb_grub_dev_select_default();
}
private void cmb_grub_dev_select_default(){
if ((cmb_grub_dev == null) || (cmb_grub_dev.model == null)){
return;
}
log_debug("BootOptionsBox: cmb_grub_dev_select_default()");
if (App.grub_device.length == 0){
cmb_grub_dev.active = -1;
return;
}
TreeIter iter;
var store = (Gtk.ListStore) cmb_grub_dev.model;
int index = -1;
int active = -1;
for (bool next = store.get_iter_first (out iter); next; next = store.iter_next (ref iter)) {
Device dev_iter;
store.get(iter, 0, out dev_iter);
index++;
if (dev_iter.device == App.grub_device){
active = index;
break;
}
}
cmb_grub_dev.active = active;
log_debug("BootOptionsBox: cmb_grub_dev_select_default(): exit");
}
}

View File

@ -0,0 +1,119 @@
/*
* BootOptionsWindow.vala
*
* Copyright 2016 Tony George <teejee@tony-pc>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
* MA 02110-1301, USA.
*
*
*/
using Gtk;
using Gee;
using TeeJee.Logging;
using TeeJee.FileSystem;
using TeeJee.JsonHelper;
using TeeJee.ProcessHelper;
using TeeJee.GtkHelper;
using TeeJee.System;
using TeeJee.Misc;
class BootOptionsWindow : Gtk.Window{
private Gtk.Box vbox_main;
private Gtk.ButtonBox bbox_action;
private BootOptionsBox boot_options_box;
private uint tmr_init;
private int def_width = 450;
private int def_height = 500;
public BootOptionsWindow() {
log_debug("BootOptionsWindow: BootOptionsWindow()");
this.title = _("Bootloader Options");
this.window_position = WindowPosition.CENTER;
this.modal = true;
//this.set_default_size (def_width, def_height);
this.icon = get_app_icon(16);
this.delete_event.connect(on_delete_event);
// vbox_main
vbox_main = new Box (Orientation.VERTICAL, 6);
vbox_main.margin = 12;
add(vbox_main);
boot_options_box = new BootOptionsBox(this);
boot_options_box.margin = 0;
vbox_main.add(boot_options_box);
create_actions();
show_all();
tmr_init = Timeout.add(100, init_delayed);
log_debug("BootOptionsWindow: BootOptionsWindow(): exit");
}
private bool init_delayed(){
if (tmr_init > 0){
Source.remove(tmr_init);
tmr_init = 0;
}
return false;
}
private bool on_delete_event(Gdk.EventAny event){
//save_changes();
return false; // close window
}
private void save_changes(){
//App.cron_job_update();
}
private void create_actions(){
var hbox = new Gtk.ButtonBox (Gtk.Orientation.HORIZONTAL);
hbox.margin = 0;
hbox.margin_top = 24;
vbox_main.add(hbox);
Gtk.SizeGroup size_group = null;
// close
var img = new Image.from_stock("gtk-close", Gtk.IconSize.BUTTON);
var btn_close = add_button(hbox, _("Close"), "", ref size_group, img);
//hbox.set_child_packing(btn_close, false, true, 6, Gtk.PackType.END);
btn_close.clicked.connect(()=>{
save_changes();
this.destroy();
});
}
}

View File

@ -116,8 +116,8 @@ class RestoreDeviceBox : Gtk.Box{
add(option_box);
// bootloader
add_bootloader_options();
add_boot_options();
// infobar
@ -414,60 +414,37 @@ class RestoreDeviceBox : Gtk.Box{
return combo;
}
private void add_bootloader_options(){
private void add_boot_options(){
//lbl_header_bootloader
var label = add_label_header(this, _("Select Bootloader Options"), true);
label.margin_top = 24;
// buffer
var label = new Gtk.Label("");
label.vexpand = true;
add(label);
//add_label(this, _("Select device for installing GRUB2 bootloader:"));
var hbox = new Gtk.ButtonBox (Gtk.Orientation.HORIZONTAL);
hbox.margin_bottom = 24;
add(hbox);
add_chk_reinstall_grub();
Gtk.SizeGroup size_group = null;
var hbox = new Box (Orientation.HORIZONTAL, 6);
hbox.margin_left = 12;
add (hbox);
//cmb_grub_dev
cmb_grub_dev = new ComboBox ();
cmb_grub_dev.hexpand = true;
hbox.add(cmb_grub_dev);
// close
var cell_text = new CellRendererText ();
cell_text.text = "";
cmb_grub_dev.pack_start(cell_text, false);
cell_text = new CellRendererText();
cmb_grub_dev.pack_start(cell_text, false);
cmb_grub_dev.set_cell_data_func(cell_text, (cell_layout, cell, model, iter)=>{
Device dev;
model.get (iter, 0, out dev, -1);
if (dev.type == "disk"){
//log_msg("desc:" + dev.description());
(cell as Gtk.CellRendererText).markup =
"<b>%s (MBR)</b>".printf(dev.description_formatted());
}
else{
(cell as Gtk.CellRendererText).text = dev.description();
}
//var img = new Image.from_stock("gtk-dialog-warning", Gtk.IconSize.BUTTON);
var button = add_button(hbox, _("Bootloader Options (Advanced)"), "", ref size_group, null);
button.set_size_request(300, 40);
button.set_tooltip_text(_("[Advanced Users Only] Change these settings only if the restored system fails to boot."));
var btn_boot_options = button;
//hbox.set_child_packing(btn_boot_options, false, true, 6, Gtk.PackType.END);
btn_boot_options.clicked.connect(()=>{
var win = new BootOptionsWindow();
win.set_transient_for(parent_window);
//win.destroy.connect(()=>{
//});;
});
cmb_grub_dev.changed.connect(()=>{
save_grub_device_selection();
});
/*string tt = "<b>" + _("** Advanced Users **") + "</b>\n\n"+ _("Skips bootloader (re)installation on target device.\nFiles in /boot directory on target partition will remain untouched.\n\nIf you are restoring a system that was bootable previously then it should boot successfully. Otherwise the system may fail to boot.");*/
hbox = new Gtk.Box (Orientation.HORIZONTAL, 6);
add (hbox);
add_chk_update_initramfs(hbox);
add_chk_update_grub(hbox);
}
private void add_chk_reinstall_grub(){
//chk_reinstall_grub

Binary file not shown.

View File

@ -9,7 +9,7 @@ msgid ""
msgstr ""
"Project-Id-Version: timeshift 1.6\n"
"Report-Msgid-Bugs-To: teejeetech@gmail.com\n"
"POT-Creation-Date: 2016-11-06 16:09+0530\n"
"POT-Creation-Date: 2016-11-06 19:47+0530\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"
@ -33,23 +33,23 @@ msgstr ""
msgid "'%s' will be on root device"
msgstr ""
#: Gtk/RestoreDeviceBox.vala:474
#: Gtk/RestoreDeviceBox.vala:451 Gtk/BootOptionsBox.vala:119
msgid "(Re)install GRUB2 on:"
msgstr ""
#: Core/Main.vala:2532
#: Core/Main.vala:2565
msgid "/ is mapped to device"
msgstr ""
#: Core/Main.vala:2554
#: Core/Main.vala:2587
msgid "/boot is mapped to device"
msgstr ""
#: Core/Main.vala:2565
#: Core/Main.vala:2598
msgid "/boot/efi is mapped to device"
msgstr ""
#: Core/Main.vala:2543
#: Core/Main.vala:2576
msgid "/home is mapped to device"
msgstr ""
@ -154,11 +154,11 @@ msgstr ""
msgid "Answer YES to all confirmation prompts"
msgstr ""
#: Core/Main.vala:2426
#: Core/Main.vala:2459
msgid "App config loaded"
msgstr ""
#: Core/Main.vala:2345
#: Core/Main.vala:2378
msgid "App config saved"
msgstr ""
@ -166,7 +166,7 @@ msgstr ""
msgid "Application needs admin access."
msgstr ""
#: Core/Main.vala:2702
#: Core/Main.vala:2735
msgid "Application will exit"
msgstr ""
@ -192,11 +192,11 @@ msgstr ""
msgid "Backup"
msgstr ""
#: Core/Main.vala:1547
#: Core/Main.vala:1580
msgid "Backup Device"
msgstr ""
#: Core/Main.vala:1542
#: Core/Main.vala:1575
msgid "Backup device not specified!"
msgstr ""
@ -220,6 +220,14 @@ msgstr ""
msgid "Boot snapshots are enabled"
msgstr ""
#: Gtk/BootOptionsWindow.vala:48
msgid "Bootloader Options"
msgstr ""
#: Gtk/RestoreDeviceBox.vala:433
msgid "Bootloader Options (Advanced)"
msgstr ""
#: Gtk/MainWindow.vala:163
msgid "Browse"
msgstr ""
@ -232,7 +240,7 @@ msgstr ""
msgid "Browse selected snapshot"
msgstr ""
#: Core/Main.vala:2059
#: Core/Main.vala:2092
msgid "Building file list..."
msgstr ""
@ -266,7 +274,7 @@ msgstr ""
msgid "Checksum"
msgstr ""
#: Core/Main.vala:1945
#: Core/Main.vala:1978
msgid "Cleaning up..."
msgstr ""
@ -286,13 +294,14 @@ msgstr ""
msgid "Cloning System..."
msgstr ""
#: Core/Main.vala:1757
#: Core/Main.vala:1790
msgid "Cloning system..."
msgstr ""
#: Utility/Gtk/AboutWindow.vala:305 Gtk/DeleteWindow.vala:156
#: Gtk/SettingsWindow.vala:130 Gtk/RestoreWindow.vala:175
#: Gtk/RsyncLogWindow.vala:249 Gtk/BackupWindow.vala:156
#: Utility/Gtk/AboutWindow.vala:305 Gtk/BootOptionsWindow.vala:107
#: Gtk/DeleteWindow.vala:156 Gtk/SettingsWindow.vala:130
#: Gtk/RestoreWindow.vala:175 Gtk/RsyncLogWindow.vala:249
#: Gtk/BackupWindow.vala:156
msgid "Close"
msgstr ""
@ -327,7 +336,7 @@ msgid "Contributions"
msgstr ""
#: Console/AppConsole.vala:605 Console/AppConsole.vala:771
#: Console/AppConsole.vala:897 Core/Main.vala:2470
#: Console/AppConsole.vala:897 Core/Main.vala:2503
msgid "Could not find device"
msgstr ""
@ -390,7 +399,7 @@ msgstr ""
msgid "Credits"
msgstr ""
#: Core/Main.vala:2701
#: Core/Main.vala:2734
msgid "Critical Error"
msgstr ""
@ -414,7 +423,7 @@ msgstr ""
msgid "Daily snapshots are enabled"
msgstr ""
#: Core/Main.vala:1621
#: Core/Main.vala:1654
msgid "Data will be modified on following devices:"
msgstr ""
@ -456,7 +465,7 @@ msgid "Description"
msgstr ""
#: Console/AppConsole.vala:411 Console/AppConsole.vala:450
#: Console/AppConsole.vala:498 Core/Main.vala:1624 Core/Main.vala:1646
#: Console/AppConsole.vala:498 Core/Main.vala:1657 Core/Main.vala:1679
#: Core/SnapshotRepo.vala:46 Core/SnapshotRepo.vala:527
#: Core/SnapshotRepo.vala:530 Utility/Device.vala:1727 Utility/Device.vala:1737
#: Gtk/RestoreDeviceBox.vala:104
@ -509,7 +518,7 @@ msgstr ""
msgid "Directory not found"
msgstr ""
#: Core/Main.vala:1697 Gtk/RestoreSummaryBox.vala:64
#: Core/Main.vala:1730 Gtk/RestoreSummaryBox.vala:64
msgid "Disclaimer"
msgstr ""
@ -583,7 +592,7 @@ msgstr ""
msgid "Enter snapshot number (a=Abort, p=Previous, n=Next)"
msgstr ""
#: Utility/GtkHelper.vala:18 Gtk/RestoreDeviceBox.vala:714
#: Utility/GtkHelper.vala:18 Gtk/RestoreDeviceBox.vala:691
msgid "Error"
msgstr ""
@ -647,7 +656,7 @@ msgstr ""
msgid "Failed to delete symlinks"
msgstr ""
#: Core/Main.vala:2855 Core/Main.vala:2861
#: Core/Main.vala:2888 Core/Main.vala:2894
msgid "Failed to estimate system size"
msgstr ""
@ -665,7 +674,7 @@ msgstr ""
msgid "Failed to get partition list"
msgstr ""
#: Core/Main.vala:2508
#: Core/Main.vala:2541
msgid "Failed to get partition list."
msgstr ""
@ -673,7 +682,7 @@ msgstr ""
msgid "Failed to install crontab file"
msgstr ""
#: Gtk/RestoreDeviceBox.vala:715
#: Gtk/RestoreDeviceBox.vala:692
msgid "Failed to mount devices"
msgstr ""
@ -710,7 +719,7 @@ msgstr ""
msgid "Failed to unmount"
msgstr ""
#: Core/Main.vala:2702
#: Core/Main.vala:2735
msgid "Failed to unmount device!"
msgstr ""
@ -795,7 +804,7 @@ msgstr ""
msgid "GRUB Device"
msgstr ""
#: Gtk/RestoreDeviceBox.vala:685
#: Gtk/RestoreDeviceBox.vala:662
msgid "GRUB device not selected"
msgstr ""
@ -803,7 +812,7 @@ msgstr ""
msgid "GRUB will NOT be reinstalled"
msgstr ""
#: Core/Main.vala:1911
#: Core/Main.vala:1944
msgid "Generating initramfs..."
msgstr ""
@ -849,7 +858,7 @@ msgstr ""
msgid "Hourly snapshots are enabled"
msgstr ""
#: Core/Main.vala:1703
#: Core/Main.vala:1736
msgid ""
"If these terms are not acceptable to you, please do not proceed beyond this "
"point!"
@ -859,7 +868,7 @@ msgstr ""
msgid "Include / Exclude Patterns"
msgstr ""
#: Core/Main.vala:1556
#: Core/Main.vala:1589
msgid "Invalid Snapshot"
msgstr ""
@ -1048,7 +1057,7 @@ msgstr ""
msgid "Monthly snapshot failed!"
msgstr ""
#: Core/Main.vala:1623 Core/Main.vala:1646
#: Core/Main.vala:1656 Core/Main.vala:1679
msgid "Mount"
msgstr ""
@ -1143,7 +1152,7 @@ msgstr ""
msgid "OK"
msgstr ""
#: Core/Main.vala:2972
#: Core/Main.vala:3005
msgid "Older log files removed"
msgstr ""
@ -1151,7 +1160,7 @@ msgstr ""
msgid "Oldest snapshot"
msgstr ""
#: Core/Main.vala:326 Core/Main.vala:2621 Gtk/RestoreDeviceBox.vala:705
#: Core/Main.vala:326 Core/Main.vala:2654 Gtk/RestoreDeviceBox.vala:682
msgid ""
"Only ubuntu-type layouts with @ and @home subvolumes are currently supported."
msgstr ""
@ -1177,16 +1186,16 @@ msgstr ""
msgid "Parent Device"
msgstr ""
#: Core/Main.vala:1101 Core/Main.vala:2029 Core/Main.vala:2108
#: Core/Main.vala:1101 Core/Main.vala:2062 Core/Main.vala:2141
#: Gtk/RsyncLogWindow.vala:122
msgid "Parsing log file..."
msgstr ""
#: Gtk/RestoreDeviceBox.vala:672
#: Gtk/RestoreDeviceBox.vala:649
msgid "Partition Not Selected"
msgstr ""
#: Gtk/RestoreDeviceBox.vala:704
#: Gtk/RestoreDeviceBox.vala:681
msgid "Partition has an unsupported subvolume layout."
msgstr ""
@ -1211,7 +1220,7 @@ msgstr ""
msgid "Please check if you have multiple windows open."
msgstr ""
#: Core/Main.vala:1817
#: Core/Main.vala:1850
msgid "Please do not interrupt the restore process!"
msgstr ""
@ -1227,7 +1236,7 @@ msgstr ""
msgid "Please run the application as admin (using 'sudo' or 'su')"
msgstr ""
#: Core/Main.vala:1685
#: Core/Main.vala:1718
msgid "Please save your work and close all applications."
msgstr ""
@ -1235,7 +1244,7 @@ msgstr ""
msgid "Please select a snapshot to view the log!"
msgstr ""
#: Gtk/RestoreDeviceBox.vala:686
#: Gtk/RestoreDeviceBox.vala:663
msgid "Please select the GRUB device"
msgstr ""
@ -1265,7 +1274,7 @@ msgstr ""
msgid "Print debug information"
msgstr ""
#: Gtk/RestoreDeviceBox.vala:512
#: Gtk/RestoreDeviceBox.vala:489 Gtk/BootOptionsBox.vala:138
msgid ""
"Re-generates initramfs for all installed kernels. This is generally not "
"needed. Select this only if the restored system fails to boot."
@ -1276,11 +1285,15 @@ msgstr ""
msgid "Re-install GRUB2 bootloader? (y/n)"
msgstr ""
#: Core/Main.vala:1869
#: Core/Main.vala:1902
msgid "Re-installing GRUB2 bootloader..."
msgstr ""
#: Gtk/RestoreDeviceBox.vala:476
#: Gtk/BootOptionsBox.vala:121
msgid "Re-installs the GRUB2 bootloader on the selected device."
msgstr ""
#: Gtk/RestoreDeviceBox.vala:453
msgid ""
"Re-installs the GRUB2 bootloader on the selected device. This is generally "
"not needed. Select this if the restored system fails to boot."
@ -1291,7 +1304,7 @@ msgstr ""
msgid "Read %'d of %'d lines..."
msgstr ""
#: Core/Main.vala:1960
#: Core/Main.vala:1993
msgid "Rebooting system..."
msgstr ""
@ -1317,7 +1330,7 @@ msgstr ""
msgid "Removed"
msgstr ""
#: Core/Main.vala:2737
#: Core/Main.vala:2770
#, c-format
msgid "Removed mount directory: '%s'"
msgstr ""
@ -1352,11 +1365,11 @@ msgstr ""
msgid "Restore Snapshot"
msgstr ""
#: Core/Main.vala:1783
#: Core/Main.vala:1816
msgid "Restore completed"
msgstr ""
#: Core/Main.vala:1787
#: Core/Main.vala:1820
msgid "Restore completed with errors"
msgstr ""
@ -1372,7 +1385,7 @@ msgstr ""
msgid "Restoring Snapshot..."
msgstr ""
#: Core/Main.vala:1754
#: Core/Main.vala:1787
msgid "Restoring snapshot..."
msgstr ""
@ -1415,10 +1428,6 @@ msgstr ""
msgid "Select '%s' device (default = %s)"
msgstr ""
#: Gtk/RestoreDeviceBox.vala:420
msgid "Select Bootloader Options"
msgstr ""
#: Console/AppConsole.vala:930
msgid "Select GRUB device"
msgstr ""
@ -1512,7 +1521,7 @@ msgstr ""
msgid "Select the intervals for creating snapshots"
msgstr ""
#: Gtk/RestoreDeviceBox.vala:673
#: Gtk/RestoreDeviceBox.vala:650
msgid "Select the partition for mount path"
msgstr ""
@ -1545,7 +1554,7 @@ msgstr ""
msgid "Selected snapshot device"
msgstr ""
#: Core/Main.vala:1557
#: Core/Main.vala:1590
msgid "Selected snapshot is marked for deletion"
msgstr ""
@ -1614,7 +1623,7 @@ msgstr ""
msgid "Skip GRUB2 reinstall"
msgstr ""
#: Core/Main.vala:976 Core/Main.vala:1121 Core/Main.vala:1562
#: Core/Main.vala:976 Core/Main.vala:1121 Core/Main.vala:1595
#: Core/SnapshotRepo.vala:557 Core/SnapshotRepo.vala:595
#: Gtk/SnapshotListBox.vala:91
#, c-format
@ -1656,7 +1665,7 @@ msgstr ""
msgid "Snapshot saved successfully"
msgstr ""
#: Core/Main.vala:1552
#: Core/Main.vala:1585
msgid "Snapshot to restore not specified!"
msgstr ""
@ -1721,11 +1730,11 @@ msgstr ""
msgid "Symlinks updated"
msgstr ""
#: Core/Main.vala:1940
#: Core/Main.vala:1973
msgid "Synching file systems..."
msgstr ""
#: Core/Main.vala:1049 Core/Main.vala:1760 Core/Main.vala:2097
#: Core/Main.vala:1049 Core/Main.vala:1793 Core/Main.vala:2130
msgid "Synching files with rsync..."
msgstr ""
@ -1742,11 +1751,11 @@ msgstr ""
msgid "System Restore Utility for Linux"
msgstr ""
#: Core/Main.vala:1818
#: Core/Main.vala:1851
msgid "System will reboot after files are restored"
msgstr ""
#: Core/Main.vala:1686
#: Core/Main.vala:1719
msgid "System will reboot after files are restored."
msgstr ""
@ -1762,7 +1771,7 @@ msgstr ""
msgid "Take scheduled backup"
msgstr ""
#: Core/Main.vala:1576
#: Core/Main.vala:1609
msgid "Target device is not mounted"
msgstr ""
@ -1770,7 +1779,7 @@ msgstr ""
msgid "Target device is same as system device"
msgstr ""
#: Core/Main.vala:1570
#: Core/Main.vala:1603
msgid "Target device not specified!"
msgstr ""
@ -1778,7 +1787,7 @@ msgstr ""
msgid "The system partition has an unsupported subvolume layout."
msgstr ""
#: Core/Main.vala:2620
#: Core/Main.vala:2653
msgid "The target partition has an unsupported subvolume layout."
msgstr ""
@ -1796,7 +1805,7 @@ msgstr ""
msgid "This device is not encrypted"
msgstr ""
#: Core/Main.vala:1702
#: Core/Main.vala:1735
msgid ""
"This software comes without absolutely NO warranty and the author takes no "
"responsibility for any damage arising from the use of this program."
@ -1847,37 +1856,37 @@ msgstr ""
msgid "Unmounting from"
msgstr ""
#: Core/Main.vala:2624 Gtk/RestoreDeviceBox.vala:702
#: Core/Main.vala:2657 Gtk/RestoreDeviceBox.vala:679
msgid "Unsupported Subvolume Layout"
msgstr ""
#: Gtk/RestoreDeviceBox.vala:537
#: Gtk/RestoreDeviceBox.vala:514 Gtk/BootOptionsBox.vala:151
msgid "Update GRUB menu"
msgstr ""
#: Gtk/RestoreDeviceBox.vala:510
#: Gtk/RestoreDeviceBox.vala:487 Gtk/BootOptionsBox.vala:136
msgid "Update initramfs"
msgstr ""
#: Core/Main.vala:2270
#: Core/Main.vala:2303
msgid "Updated /etc/crypttab on target device"
msgstr ""
#: Core/Main.vala:2190
#: Core/Main.vala:2223
msgid "Updated /etc/fstab on target device"
msgstr ""
#: Gtk/RestoreDeviceBox.vala:539
#: Gtk/RestoreDeviceBox.vala:516 Gtk/BootOptionsBox.vala:153
msgid ""
"Updates the GRUB menu entries (recommended). This is safe to run and should "
"be left selected."
msgstr ""
#: Core/Main.vala:1927
#: Core/Main.vala:1960
msgid "Updating GRUB menu..."
msgstr ""
#: Core/Main.vala:2116
#: Core/Main.vala:2149
msgid "Updating bootloader configuration..."
msgstr ""
@ -1927,7 +1936,7 @@ msgstr ""
msgid "W"
msgstr ""
#: Core/Main.vala:1616 Gtk/RestoreSummaryBox.vala:53
#: Core/Main.vala:1649 Gtk/RestoreSummaryBox.vala:53
msgid "Warning"
msgstr ""
@ -1955,6 +1964,12 @@ msgstr ""
msgid "Wrong password"
msgstr ""
#: Gtk/RestoreDeviceBox.vala:435
msgid ""
"[Advanced Users Only] Change these settings only if the restored system "
"fails to boot."
msgstr ""
#: Utility/AppLock.vala:55
msgid "[Warning] Deleted invalid lock"
msgstr ""