48 var header_box =
new Gtk.Box(Gtk.Orientation.HORIZONTAL, 12);
49 header_box.set_margin_top(16);
50 header_box.set_margin_start(16);
51 header_box.set_margin_end(16);
54 header_box.append(icon);
56 var info_box =
new Gtk.Box(Gtk.Orientation.VERTICAL, 4);
57 var title_lbl =
new Gtk.Label(
58 "<b>%s</b>".printf(
_(
"BastionGuard Backup ha trovato snapshot BastionGuard Backup")));
59 title_lbl.set_use_markup(
true);
60 title_lbl.set_halign(Gtk.Align.START);
62 var sub_lbl =
new Gtk.Label(
63 _(
"Puoi importarli e continuare a usarli con BastionGuard Backup."));
64 sub_lbl.set_halign(Gtk.Align.START);
66 var device_lbl =
new Gtk.Label(
67 " " +
_(
"Device") +
": <tt>%s</tt> (UUID: <tt>%s</tt>)".printf(
69 device_lbl.set_use_markup(
true);
70 device_lbl.set_halign(Gtk.Align.START);
72 info_box.append(title_lbl);
73 info_box.append(sub_lbl);
74 info_box.append(device_lbl);
75 info_box.hexpand =
true;
76 header_box.append(info_box);
82 var scroll =
new Gtk.ScrolledWindow();
83 scroll.set_min_content_height(220);
84 scroll.set_margin_start(16);
85 scroll.set_margin_end(16);
88 var list_frame =
new Gtk.Frame(
90 list_frame.set_margin_start(16);
91 list_frame.set_margin_end(16);
92 list_frame.set_child(scroll);
96 _(
"Rimuovi la configurazione BastionGuard Backup dopo l'importazione"));
102 var progress_box =
new Gtk.Box(Gtk.Orientation.HORIZONTAL, 8);
103 progress_box.set_margin_start(16);
104 progress_box.set_margin_end(16);
110 status_label.hexpand =
true;
114 skip_btn = (Gtk.Button) add_button(
_(
"Ignora"), Gtk.ResponseType.CANCEL);
118 Gtk.ResponseType.ACCEPT);
119 import_btn.get_style_context().add_class(
"suggested-action");
122 var content = get_content_area();
123 content.set_spacing(8);
124 content.append(header_box);
125 list_frame.vexpand =
true;
126 content.append(list_frame);
128 content.append(progress_box);
137 var row_box =
new Gtk.Box(Gtk.Orientation.HORIZONTAL, 12);
138 row_box.set_margin_top(6);
139 row_box.set_margin_bottom(6);
140 row_box.set_margin_start(10);
141 row_box.set_margin_end(10);
144 var tag_lbl =
new Gtk.Label(
"<tt>%s</tt>".printf(
145 snap.tags.length > 0 ? snap.tags :
"?"));
146 tag_lbl.set_use_markup(
true);
147 tag_lbl.set_size_request(28, -1);
150 var info_lbl =
new Gtk.Label(
151 "<b>%s</b> <small>%s</small>".printf(
152 snap.name, snap.date));
153 info_lbl.set_use_markup(
true);
154 info_lbl.set_halign(Gtk.Align.START);
155 info_lbl.set_hexpand(
true);
158 if (snap.description.length > 0) {
159 var desc_lbl =
new Gtk.Label(
160 "<small><i>%s</i></small>".printf(
161 Markup.escape_text(snap.description)));
162 desc_lbl.set_use_markup(
true);
163 desc_lbl.set_halign(Gtk.Align.END);
164 row_box.append(tag_lbl);
165 info_lbl.hexpand =
true;
166 row_box.append(info_lbl);
167 row_box.append(desc_lbl);
169 row_box.append(tag_lbl);
170 info_lbl.hexpand =
true;
171 row_box.append(info_lbl);
174 var row =
new Gtk.ListBoxRow();
175 row.set_child(row_box);
228 string bgbackup_conf =
"/etc/bastionguard-backup/bastionguard-backup.json";
229 if (FileUtils.test(bgbackup_conf, FileTest.EXISTS)) {
232 FileUtils.get_contents(bgbackup_conf, out raw);
233 var parser =
new Json.Parser();
234 parser.load_from_data(raw);
235 var config = parser.get_root().get_object();
237 if (config.has_member(
"imported_from_timeshift") &&
238 config.get_string_member(
"imported_from_timeshift") ==
"true")
244 new Thread<void*>(
"bastionguard-backup-detect", () => {
251 dialog.import_completed.connect((count) => {
252 GLib.message(
"BastionGuard Backup: importati %d snapshot".printf(count));