Skip to content
API Documentation
BastionGuard™
RestoreWindow Class Reference
Inheritance diagram for RestoreWindow:

Public Types

enum  Tabs {
  TARGET_DEVICE = 0 , RESTORE_EXCLUDE = 1 , EXCLUDE_APPS = 2 , CHECK = 3 ,
  SHOW_LOG = 4 , USERS = 5 , SUMMARY = 6 , RESTORE = 7 ,
  FINISH = 8
}

Public Member Functions

signal void request_close ()
 RestoreWindow (bool embedded=false)
Gtk.Widget detach_root_widget ()
void reload_themed_icons ()

Public Attributes

bool check_before_restore = true

Private Member Functions

void build_ui ()
void build_sidebar ()
Gtk.Button make_nav_button (string icon_name, string label_text)
void build_content ()
Gtk.Widget wrap_page (Gtk.Widget child)
void build_pages ()
bool init_delayed ()
bool on_close_request ()
void save_changes ()
void create_actions ()
void action_buttons_set_initial_visibility (bool visible)
void go_first ()
void go_prev ()
void go_next ()
void initialize_tab ()
bool validate_current_tab ()
void clear_sidebar_selection ()
void set_sidebar_active (Gtk.Button btn)
void update_sidebar_state ()
void update_page_title ()
void set_page (int page)
Gtk.Image themed_icon (string icon_name, int size)

Private Attributes

Gtk.Box root_box
Gtk.Box sidebar
Gtk.Box content_box
Gtk.Box header_box
Gtk.Box body_box
Gtk.Box bbox_action
Gtk.Stack page_stack
int current_page = -1
Gtk.Button btn_nav_target
Gtk.Button btn_nav_check
Gtk.Button btn_nav_log
Gtk.Button btn_nav_users
Gtk.Button btn_nav_summary
Gtk.Button btn_nav_restore
Gtk.Button btn_nav_finish
Gtk.? Button current_nav_btn = null
Gtk.Label lbl_page_title
RestoreDeviceBox restore_device_box
RestoreExcludeBox restore_exclude_box
ExcludeAppsBox exclude_apps_box
RestoreSummaryBox summary_box
RestoreBox check_box
RsyncLogBox log_box
RestoreBox restore_box
UsersBox users_box
RestoreFinishBox restore_finish_box
Gtk.Button btn_prev
Gtk.Button btn_next
Gtk.Button btn_cancel
Gtk.Button btn_close
uint tmr_init
int def_width = 1080
int def_height = 720
bool success = false
bool embedded_mode = false
Gee.ArrayList< Gtk.Image > themed_img_list = new Gee.ArrayList<Gtk.Image>()
Gee.ArrayList< string > themed_img_name = new Gee.ArrayList<string>()
Gee.ArrayList< int > themed_img_size = new Gee.ArrayList<int>()

Detailed Description

Definition at line 34 of file RestoreWindow.vala.

Member Enumeration Documentation

◆ Tabs

Enumerator
TARGET_DEVICE 
RESTORE_EXCLUDE 
EXCLUDE_APPS 
CHECK 
SHOW_LOG 
USERS 
SUMMARY 
RESTORE 
FINISH 

Definition at line 793 of file RestoreWindow.vala.

793 {
794 // indexes here should match the order in which tabs were added to Notebook
795 TARGET_DEVICE = 0,
796 RESTORE_EXCLUDE = 1,
797 EXCLUDE_APPS = 2,
798 CHECK = 3,
799 SHOW_LOG = 4,
800 USERS = 5,
801 SUMMARY = 6,
802 RESTORE = 7,
803 FINISH = 8
804 }

Constructor & Destructor Documentation

◆ RestoreWindow()

RestoreWindow.RestoreWindow ( bool embedded = false)
inline

Definition at line 84 of file RestoreWindow.vala.

84 {
85 embedded_mode = embedded;
86
87 log_debug("RestoreWindow: RestoreWindow()");
88
89 this.title = App.mirror_system ? _("Clone System") : _("Restore Snapshot");
90 if (!embedded_mode) this.modal = true;
91 this.set_default_size(def_width, def_height);
92 this.set_default_size(def_width, def_height);
93 this.set_icon_name("bastionguard-backup");
94 if (!embedded_mode) this.close_request.connect(on_close_request);
95
96 if (!embedded_mode) this.set_titlebar(HeaderFactory.create_main_headerbar(this, 220));
97
98 build_ui();
101
102 if (!embedded_mode)
103 show();
104
106
107 tmr_init = Timeout.add(100, init_delayed);
108
109 log_debug("RestoreWindow: RestoreWindow(): exit");
110 }
#define _(s)
void log_debug(string message)

References _, build_pages(), build_ui(), create_actions(), HeaderFactory.create_main_headerbar(), def_height, def_width, embedded_mode, TeeJee.GtkHelper.gtk_do_events(), init_delayed(), TeeJee.Logging.log_debug(), on_close_request(), and tmr_init.

Referenced by MainWindow.open_restore_flow().

Member Function Documentation

◆ action_buttons_set_initial_visibility()

void RestoreWindow.action_buttons_set_initial_visibility ( bool visible)
inlineprivate

Definition at line 444 of file RestoreWindow.vala.

444 {
445 btn_prev.visible = visible;
446 btn_next.visible = visible;
447 btn_close.visible = visible;
448 btn_cancel.visible = visible;
449 }

Referenced by create_actions(), and initialize_tab().

◆ build_content()

void RestoreWindow.build_content ( )
inlineprivate

Definition at line 209 of file RestoreWindow.vala.

209 {
210
211 content_box = new Gtk.Box(Gtk.Orientation.VERTICAL, 0);
212 content_box.get_style_context().add_class("content");
213 content_box.hexpand = true;
214 content_box.vexpand = true;
215 content_box.halign = Gtk.Align.FILL;
216 content_box.valign = Gtk.Align.FILL;
217
218 header_box = new Gtk.Box(Gtk.Orientation.VERTICAL, 0);
219 header_box.margin_start = 20;
220 header_box.margin_end = 20;
221 header_box.margin_top = 20;
222 header_box.margin_bottom = 10;
223
224 lbl_page_title = new Gtk.Label(_("Restore Snapshot"));
225 lbl_page_title.xalign = 0.0f;
226 lbl_page_title.get_style_context().add_class("title");
228
229 body_box = new Gtk.Box(Gtk.Orientation.VERTICAL, 0);
230 body_box.margin_start = 14;
231 body_box.margin_end = 14;
232 body_box.margin_bottom = 12;
233 body_box.hexpand = true;
234 body_box.vexpand = true;
235
236 page_stack = new Gtk.Stack();
237 page_stack.hexpand = true;
238 page_stack.vexpand = true;
239 page_stack.halign = Gtk.Align.FILL;
240 page_stack.valign = Gtk.Align.FILL;
241
242 body_box.append(page_stack);
243
244 content_box.append(header_box);
245 content_box.append(body_box);
246 }
Gtk.Label lbl_page_title
Gtk.Stack page_stack

References _, body_box, content_box, header_box, lbl_page_title, and page_stack.

Referenced by build_ui().

◆ build_pages()

void RestoreWindow.build_pages ( )
inlineprivate

Definition at line 261 of file RestoreWindow.vala.

261 {
262
263 Gtk.Label label;
264
265 label = new Gtk.Label(_("Restore Device"));
267 restore_device_box.margin_start = 12;
268 restore_device_box.margin_end = 12;
269 restore_device_box.margin_top = 12;
270 restore_device_box.margin_bottom = 12;
271 page_stack.add_named(wrap_page(restore_device_box), "target-device");
272
273 label = new Gtk.Label(_("Restore Exclude"));
275 restore_exclude_box.margin_start = 12;
276 restore_exclude_box.margin_end = 12;
277 restore_exclude_box.margin_top = 12;
278 restore_exclude_box.margin_bottom = 12;
279 page_stack.add_named(wrap_page(restore_exclude_box), "restore-exclude");
280
281 label = new Gtk.Label(_("Exclude Apps"));
283 exclude_apps_box.margin_start = 12;
284 exclude_apps_box.margin_end = 12;
285 exclude_apps_box.margin_top = 12;
286 exclude_apps_box.margin_bottom = 12;
287 page_stack.add_named(wrap_page(exclude_apps_box), "exclude-apps");
288
289 label = new Gtk.Label(_("Checking Restore Actions (Dry Run)"));
290 check_box = new RestoreBox(this);
291 check_box.margin_start = 0;
292 check_box.margin_end = 0;
293 check_box.margin_top = 0;
294 check_box.margin_bottom = 0;
295 page_stack.add_named(check_box, "check");
296
297 label = new Gtk.Label(_("Confirm Actions"));
298 log_box = new RsyncLogBox(this);
299 log_box.margin_start = 12;
300 log_box.margin_end = 12;
301 log_box.margin_top = 12;
302 log_box.margin_bottom = 12;
303 page_stack.add_named(wrap_page(log_box), "show-log");
304
305 label = new Gtk.Label(_("Users Home"));
306 var exclude_box = new ExcludeBox(this); // dummy - not used
307 users_box = new UsersBox(this, exclude_box, true);
308 users_box.margin_start = 12;
309 users_box.margin_end = 12;
310 users_box.margin_top = 12;
311 users_box.margin_bottom = 12;
312 page_stack.add_named(wrap_page(users_box), "users");
313
314 label = new Gtk.Label(_("Summary"));
315 summary_box = new RestoreSummaryBox(this);
316 summary_box.margin_start = 12;
317 summary_box.margin_end = 12;
318 summary_box.margin_top = 12;
319 summary_box.margin_bottom = 12;
320 page_stack.add_named(wrap_page(summary_box), "summary");
321
322 label = new Gtk.Label(_("Restore"));
323 restore_box = new RestoreBox(this);
324 restore_box.margin_start = 0;
325 restore_box.margin_end = 0;
326 restore_box.margin_top = 0;
327 restore_box.margin_bottom = 0;
328 page_stack.add_named(restore_box, "restore");
329
330 label = new Gtk.Label(_("Finished"));
332 restore_finish_box.margin_start = 12;
333 restore_finish_box.margin_end = 12;
334 restore_finish_box.margin_top = 12;
335 restore_finish_box.margin_bottom = 12;
336 page_stack.add_named(wrap_page(restore_finish_box), "finish");
337 }
ExcludeAppsBox(Gtk.Window _parent_window)
ExcludeBox(Gtk.Window _parent_window)
RestoreBox(Gtk.Window _parent_window)
RestoreDeviceBox(Gtk.Window _parent_window)
RestoreExcludeBox(Gtk.Window _parent_window)
RestoreFinishBox(Gtk.Window _parent_window)
RestoreSummaryBox(Gtk.Window _parent_window)
RestoreSummaryBox summary_box
RsyncLogBox log_box
RestoreBox restore_box
RestoreDeviceBox restore_device_box
RestoreFinishBox restore_finish_box
Gtk.Widget wrap_page(Gtk.Widget child)
RestoreExcludeBox restore_exclude_box
RestoreBox check_box
ExcludeAppsBox exclude_apps_box
RsyncLogBox(Gtk.Window _window)
UsersBox(Gtk.Window _parent_window, ExcludeBox _exclude_box, bool _restore_mode)
Definition UsersBox.vala:26

References _, check_box, exclude_apps_box, ExcludeAppsBox.ExcludeAppsBox(), ExcludeBox.ExcludeBox(), log_box, page_stack, restore_box, restore_device_box, restore_exclude_box, restore_finish_box, RestoreBox.RestoreBox(), RestoreDeviceBox.RestoreDeviceBox(), RestoreExcludeBox.RestoreExcludeBox(), RestoreFinishBox.RestoreFinishBox(), RestoreSummaryBox.RestoreSummaryBox(), RsyncLogBox.RsyncLogBox(), summary_box, users_box, UsersBox.UsersBox(), and wrap_page().

Referenced by RestoreWindow().

◆ build_sidebar()

void RestoreWindow.build_sidebar ( )
inlineprivate

Definition at line 128 of file RestoreWindow.vala.

128 {
129
130 sidebar = new Gtk.Box(Gtk.Orientation.VERTICAL, 0);
131 sidebar.set_size_request(220, -1);
132 sidebar.get_style_context().add_class("sidebar");
133 sidebar.hexpand = false;
134 sidebar.vexpand = true;
135 sidebar.halign = Gtk.Align.FILL;
136 sidebar.valign = Gtk.Align.FILL;
137
138 var sidebar_header = new Gtk.Box(Gtk.Orientation.HORIZONTAL, 8);
139 sidebar_header.get_style_context().add_class("sidebar-header");
140 sidebar.append(sidebar_header);
141
142 Gtk.Widget logo_widget;
143 try {
144 logo_widget = new Gtk.Image.from_pixbuf(IconManager.lookup("bastionguard-backup", 48));
145 }
146 catch (Error e) {
147 logo_widget = themed_icon("document-open-recent-symbolic", 48);
148 }
149
150 var title = new Gtk.Label(_("BastionGuard™\nRestore"));
151 title.xalign = 0.0f;
152 title.get_style_context().add_class("sidebar-title");
153
154 sidebar_header.append(logo_widget);
155 sidebar_header.append(title);
156
157 sidebar.append(new Gtk.Box(Gtk.Orientation.VERTICAL, 0));
158
159 btn_nav_target = make_nav_button("drive-harddisk-symbolic", _("Target Device"));
160 btn_nav_check = make_nav_button("system-search-symbolic", _("Dry Run Check"));
161 btn_nav_log = make_nav_button("text-x-log-symbolic", _("Review Log"));
162 btn_nav_users = make_nav_button("system-users-symbolic", _("Users"));
163 btn_nav_summary = make_nav_button("document-properties-symbolic", _("Summary"));
164 btn_nav_restore = make_nav_button("view-refresh-symbolic", _("Restore"));
165 btn_nav_finish = make_nav_button("emblem-ok-symbolic", _("Finished"));
166
167 btn_nav_target.sensitive = false;
168 btn_nav_check.sensitive = false;
169 btn_nav_log.sensitive = false;
170 btn_nav_users.sensitive = false;
171 btn_nav_summary.sensitive = false;
172 btn_nav_restore.sensitive = false;
173 btn_nav_finish.sensitive = false;
174
175 var spacer = new Gtk.Box(Gtk.Orientation.VERTICAL, 0);
176 spacer.vexpand = true;
177 sidebar.append(spacer);
178 }
Gtk.Button btn_nav_check
Gtk.Button btn_nav_users
Gtk.Button btn_nav_log
Gtk.Button btn_nav_target
Gtk.Button btn_nav_restore
Gtk.Button btn_nav_summary
Gtk.Button btn_nav_finish
Gtk.Button make_nav_button(string icon_name, string label_text)
Gtk.Image themed_icon(string icon_name, int size)

References _, btn_nav_check, btn_nav_finish, btn_nav_log, btn_nav_restore, btn_nav_summary, btn_nav_target, btn_nav_users, Error, IconManager.lookup(), make_nav_button(), sidebar, and themed_icon().

Referenced by build_ui().

◆ build_ui()

void RestoreWindow.build_ui ( )
inlineprivate

Definition at line 112 of file RestoreWindow.vala.

112 {
113
114 root_box = new Gtk.Box(Gtk.Orientation.HORIZONTAL, 0);
115 root_box.hexpand = true;
116 root_box.vexpand = true;
117 root_box.halign = Gtk.Align.FILL;
118 root_box.valign = Gtk.Align.FILL;
119 set_child(root_box);
120
123
124 root_box.append(sidebar);
125 root_box.append(content_box);
126 }

References build_content(), build_sidebar(), content_box, root_box, and sidebar.

Referenced by RestoreWindow().

◆ clear_sidebar_selection()

void RestoreWindow.clear_sidebar_selection ( )
inlineprivate

Definition at line 683 of file RestoreWindow.vala.

683 {
684 btn_nav_target.get_style_context().remove_class("active-sidebar-button");
685 btn_nav_check.get_style_context().remove_class("active-sidebar-button");
686 btn_nav_log.get_style_context().remove_class("active-sidebar-button");
687 btn_nav_users.get_style_context().remove_class("active-sidebar-button");
688 btn_nav_summary.get_style_context().remove_class("active-sidebar-button");
689 btn_nav_restore.get_style_context().remove_class("active-sidebar-button");
690 btn_nav_finish.get_style_context().remove_class("active-sidebar-button");
691 }

References btn_nav_check, btn_nav_finish, btn_nav_log, btn_nav_restore, btn_nav_summary, btn_nav_target, and btn_nav_users.

Referenced by update_sidebar_state().

◆ create_actions()

void RestoreWindow.create_actions ( )
inlineprivate

Definition at line 361 of file RestoreWindow.vala.

361 {
362
363 var hbox = new Gtk.Box(Gtk.Orientation.HORIZONTAL, 6);
364 content_box.append(hbox);
365
366 var bbox = new Gtk.Box(Gtk.Orientation.HORIZONTAL, 8);
367 bbox.margin_start = 12;
368 bbox.margin_end = 12;
369 bbox.margin_top = 12;
370 bbox.margin_bottom = 12;
371 bbox.spacing = 6;
372 bbox.hexpand = true;
373 hbox.append(bbox);
374
375 bbox_action = bbox;
376
377 #if GTK3_18
378 bbox.halign = Gtk.Align.CENTER;
379 #endif
380
381 Gtk.SizeGroup size_group = null;
382
383 btn_prev = add_button(bbox, _("Previous"), "", size_group, null);
384 btn_prev.get_style_context().add_class("btn-back");
385 btn_prev.clicked.connect(() => {
386 go_prev();
387 });
388
389 btn_next = add_button(bbox, _("Next"), "", size_group, null);
390 btn_next.get_style_context().add_class("btn-next");
391 btn_next.clicked.connect(() => {
392 gtk_set_busy(true, this);
394 gtk_set_busy(false, this);
395 go_next();
396 });
397
398 btn_close = add_button(bbox, _("Cancel"), "", size_group, null);
399 btn_close.get_style_context().add_class("btn-cancel");
400 btn_close.get_style_context().add_class("btn-finish");
401 btn_close.clicked.connect(() => {
402 save_changes();
403 if (embedded_mode)
405 else
406 this.destroy();
407 });
408
409 btn_cancel = add_button(bbox, _("Cancel"), "", size_group, null);
410 btn_cancel.get_style_context().add_class("btn-cancel");
411 btn_cancel.clicked.connect(() => {
412
413 if (!App.dry_run) {
414 var title = _("Cancel restore?");
415 var msg = _("Cancelling the restore process will leave the target system in an inconsistent state. The system may fail to boot or you may run into various issues. After cancelling, you need to restore another snapshot, to bring the system to a consistent state. Click Yes to confirm.");
416
417 var dlg = new CustomMessageDialog(title, msg, Gtk.MessageType.ERROR, this, Gtk.ButtonsType.YES_NO);
418 var response = gtk_dialog_run(dlg);
419 dlg.destroy();
420
421 if (response != Gtk.ResponseType.YES) {
422 return;
423 }
424 }
425
426 if (App.task != null) {
427 App.task.stop(AppStatus.CANCELLED);
428 }
429
430 if (embedded_mode)
432 else
433 this.destroy();
434 });
435
436 btn_prev.hexpand = true;
437 btn_next.hexpand = true;
438 btn_cancel.hexpand = true;
439 btn_close.hexpand = true;
440
442 }
Main App
AppStatus
void stop(AppStatus status_to_update=AppStatus.CANCELLED)
CustomMessageDialog(string _msg_title, string _msg_body, Gtk.MessageType _msg_type, Window? parent, Gtk.ButtonsType _buttons_type)
RsyncTask task
Definition Main.vala:160
bool dry_run
Definition Main.vala:100
void action_buttons_set_initial_visibility(bool visible)
Gtk.Button btn_prev
signal void request_close()
Gtk.Button btn_next
Gtk.Button btn_close
Gtk.Button btn_cancel
void gtk_set_busy(bool busy, Gtk.Window win)
int gtk_dialog_run(Gtk.Dialog dlg)

References _, action_buttons_set_initial_visibility(), App, bbox_action, btn_cancel, btn_close, btn_next, btn_prev, content_box, CustomMessageDialog.CustomMessageDialog(), Main.dry_run, embedded_mode, go_next(), go_prev(), TeeJee.GtkHelper.gtk_dialog_run(), TeeJee.GtkHelper.gtk_do_events(), TeeJee.GtkHelper.gtk_set_busy(), request_close(), save_changes(), AsyncTask.stop(), and Main.task.

Referenced by RestoreWindow().

◆ detach_root_widget()

Gtk.Widget RestoreWindow.detach_root_widget ( )
inline

Definition at line 806 of file RestoreWindow.vala.

806 {
807 set_child(null);
808 return root_box;
809 }

References root_box.

◆ go_first()

void RestoreWindow.go_first ( )
inlineprivate

Definition at line 453 of file RestoreWindow.vala.

453 {
454
455 if (App.btrfs_mode) {
456 if (App.snapshot_to_restore.subvolumes.has_key("@home")) {
457 set_page(Tabs.USERS);
458 }
459 else {
460 set_page(Tabs.SUMMARY);
461 }
462 }
463 else {
464 set_page(Tabs.TARGET_DEVICE);
465 }
466
468 }
Snapshot snapshot_to_restore
Definition Main.vala:136
bool btrfs_mode
Definition Main.vala:52
void set_page(int page)
Gee.HashMap< string, Subvolume > subvolumes
Definition Snapshot.vala:46

References App, Main.btrfs_mode, initialize_tab(), set_page(), Main.snapshot_to_restore, and Snapshot.subvolumes.

Referenced by init_delayed().

◆ go_next()

void RestoreWindow.go_next ( )
inlineprivate

Definition at line 510 of file RestoreWindow.vala.

510 {
511
512 if (!validate_current_tab()) {
513 return;
514 }
515
516 switch (current_page) {
517 case Tabs.TARGET_DEVICE:
519 set_page(Tabs.CHECK);
520 }
521 else {
522 set_page(Tabs.SUMMARY);
523 }
524 break;
525
526 case Tabs.CHECK:
527 set_page(Tabs.SHOW_LOG);
528 break;
529
530 case Tabs.SHOW_LOG:
531 set_page(Tabs.SUMMARY);
532 break;
533
534 case Tabs.USERS:
535 set_page(Tabs.SUMMARY);
536 break;
537
538 case Tabs.SUMMARY:
539 set_page(Tabs.RESTORE);
540 break;
541
542 case Tabs.RESTORE:
543 set_page(Tabs.FINISH);
544 break;
545
546 case Tabs.FINISH:
547 destroy();
548 break;
549 }
550
553 }
bool validate_current_tab()

References App, Main.btrfs_mode, check_before_restore, current_page, TeeJee.GtkHelper.gtk_do_events(), initialize_tab(), set_page(), and validate_current_tab().

Referenced by create_actions(), and initialize_tab().

◆ go_prev()

void RestoreWindow.go_prev ( )
inlineprivate

Definition at line 470 of file RestoreWindow.vala.

470 {
471
472 switch (current_page) {
473 case Tabs.RESTORE_EXCLUDE:
474 set_page(Tabs.TARGET_DEVICE);
475 break;
476
477 case Tabs.EXCLUDE_APPS:
478 set_page(Tabs.RESTORE_EXCLUDE);
479 break;
480
481 case Tabs.SUMMARY:
482 if (App.btrfs_mode && App.snapshot_to_restore.subvolumes.has_key("@home")) {
483 set_page(Tabs.USERS);
484 }
485 else if (!App.btrfs_mode && check_before_restore) {
486 set_page(Tabs.SHOW_LOG);
487 }
488 else if (!App.btrfs_mode) {
489 set_page(Tabs.TARGET_DEVICE);
490 }
491 break;
492
493 case Tabs.SHOW_LOG:
494 set_page(Tabs.CHECK);
495 break;
496
497 case Tabs.USERS:
498 // disabilitato
499 break;
500
501 case Tabs.TARGET_DEVICE:
502 case Tabs.RESTORE:
503 case Tabs.FINISH:
504 break;
505 }
506
508 }

References App, Main.btrfs_mode, check_before_restore, current_page, initialize_tab(), set_page(), Main.snapshot_to_restore, and Snapshot.subvolumes.

Referenced by create_actions().

◆ init_delayed()

bool RestoreWindow.init_delayed ( )
inlineprivate

Definition at line 339 of file RestoreWindow.vala.

339 {
340
341 if (tmr_init > 0) {
342 Source.remove(tmr_init);
343 tmr_init = 0;
344 }
345
346 this.set_default_size(def_width, def_height);
347 go_first();
348
349 return false;
350 }

References def_height, def_width, go_first(), and tmr_init.

Referenced by RestoreWindow().

◆ initialize_tab()

void RestoreWindow.initialize_tab ( )
inlineprivate

Definition at line 555 of file RestoreWindow.vala.

555 {
556
557 if (current_page < 0) {
558 return;
559 }
560
561 log_debug("initialize_tab: %d".printf(current_page));
562
564
565 switch (current_page) {
566 case Tabs.RESTORE:
567 case Tabs.CHECK:
568 btn_prev.hide();
569 btn_next.hide();
570 btn_close.hide();
571 btn_cancel.show();
572 btn_cancel.sensitive = true;
573 break;
574
575 case Tabs.TARGET_DEVICE:
576 case Tabs.RESTORE_EXCLUDE:
577 case Tabs.EXCLUDE_APPS:
578 case Tabs.SUMMARY:
579 case Tabs.USERS:
580 case Tabs.SHOW_LOG:
581 btn_prev.show();
582 btn_next.show();
583 btn_close.show();
584 btn_cancel.hide();
585
586 btn_prev.sensitive = false;
587 btn_next.sensitive = true;
588 btn_close.sensitive = true;
589 break;
590
591 case Tabs.FINISH:
592 btn_prev.show();
593 btn_next.show();
594 btn_close.show();
595 btn_cancel.hide();
596
597 btn_prev.sensitive = false;
598 btn_next.sensitive = false;
599 btn_close.sensitive = true;
600 break;
601 }
602
604
605 switch (current_page) {
606 case Tabs.TARGET_DEVICE:
608 break;
609
610 case Tabs.RESTORE_EXCLUDE:
612 break;
613
614 case Tabs.EXCLUDE_APPS:
616 break;
617
618 case Tabs.CHECK:
619 App.dry_run = true;
621 go_next();
622 return;
623
624 case Tabs.SHOW_LOG:
627 }
628 else {
629 set_page(Tabs.FINISH);
631 restore_finish_box.update_message(false, _("Error running Rsync"), "");
632 return;
633 }
634 break;
635
636 case Tabs.USERS:
638 break;
639
640 case Tabs.SUMMARY:
642 break;
643
644 case Tabs.RESTORE:
645 App.dry_run = false;
647 go_next();
648 return;
649
650 case Tabs.FINISH:
652 btn_close.label = _("Close");
653 break;
654 }
655
659 }
bool restore()
void refresh(bool reset_device_selections=true)
void update_message(bool success, string message_header, string message_body)
void update_sidebar_state()
void open_log(string _rsync_log_file)
string rsync_restore_log_file
void refresh()
bool file_exists(string file_path)

References _, action_buttons_set_initial_visibility(), App, btn_cancel, btn_close, btn_next, btn_prev, check_box, current_page, exclude_apps_box, TeeJee.FileSystem.file_exists(), go_next(), TeeJee.GtkHelper.gtk_do_events(), initialize_tab(), log_box, TeeJee.Logging.log_debug(), RsyncLogBox.open_log(), ExcludeAppsBox.refresh(), RestoreDeviceBox.refresh(), RestoreExcludeBox.refresh(), RestoreSummaryBox.refresh(), UsersBox.refresh(), RestoreBox.restore(), restore_box, restore_device_box, restore_exclude_box, restore_finish_box, Snapshot.rsync_restore_log_file, set_page(), Main.snapshot_to_restore, success, summary_box, RestoreFinishBox.update_message(), update_page_title(), update_sidebar_state(), and users_box.

Referenced by go_first(), go_next(), go_prev(), and initialize_tab().

◆ make_nav_button()

Gtk.Button RestoreWindow.make_nav_button ( string icon_name,
string label_text )
inlineprivate

Definition at line 180 of file RestoreWindow.vala.

180 {
181
182 var btn = new Gtk.Button();
183 btn.get_style_context().add_class("sidebar-button");
184 btn.hexpand = true;
185 btn.margin_start = 8;
186 btn.margin_end = 8;
187 btn.margin_top = 2;
188 btn.margin_bottom = 2;
189
190 var row = new Gtk.Box(Gtk.Orientation.HORIZONTAL, 10);
191 row.margin_start = 8;
192 row.margin_end = 8;
193 row.margin_top = 8;
194 row.margin_bottom = 8;
195
196 var img = themed_icon(icon_name, 18);
197 var lbl = new Gtk.Label(label_text);
198 lbl.xalign = 0.0f;
199
200 row.append(img);
201 row.append(lbl);
202
203 btn.set_child(row);
204 sidebar.append(btn);
205
206 return btn;
207 }

References sidebar, and themed_icon().

Referenced by build_sidebar().

◆ on_close_request()

bool RestoreWindow.on_close_request ( )
inlineprivate

Definition at line 352 of file RestoreWindow.vala.

352 {
353 save_changes();
354 return false;
355 }

References save_changes().

Referenced by RestoreWindow().

◆ reload_themed_icons()

void RestoreWindow.reload_themed_icons ( )
inline

Definition at line 824 of file RestoreWindow.vala.

824 {
825 for (int i = 0; i < themed_img_list.size; i++) {
826 var img = themed_img_list[i];
827 var name = themed_img_name[i];
828 var sz = themed_img_size[i];
829 var pix = IconManager.lookup(name, sz);
830 if (pix != null) {
831 img.set_from_pixbuf(pix);
832 } else {
833 img.set_from_icon_name(name);
834 }
835 }
836 }
Gee.ArrayList< string > themed_img_name
Gee.ArrayList< Gtk.Image > themed_img_list
Gee.ArrayList< int > themed_img_size

References IconManager.lookup(), themed_img_list, themed_img_name, and themed_img_size.

◆ request_close()

signal void RestoreWindow.request_close ( )

Referenced by create_actions().

◆ save_changes()

void RestoreWindow.save_changes ( )
inlineprivate

Definition at line 357 of file RestoreWindow.vala.

357 {
359 }
void cron_job_update()
Definition Main.vala:4463

References App, and Main.cron_job_update().

Referenced by create_actions(), and on_close_request().

◆ set_page()

void RestoreWindow.set_page ( int page)
inlineprivate

Definition at line 760 of file RestoreWindow.vala.

760 {
761 current_page = page;
762 switch (page) {
763 case Tabs.TARGET_DEVICE:
764 page_stack.set_visible_child_name("target-device");
765 break;
766 case Tabs.RESTORE_EXCLUDE:
767 page_stack.set_visible_child_name("restore-exclude");
768 break;
769 case Tabs.EXCLUDE_APPS:
770 page_stack.set_visible_child_name("exclude-apps");
771 break;
772 case Tabs.CHECK:
773 page_stack.set_visible_child_name("check");
774 break;
775 case Tabs.SHOW_LOG:
776 page_stack.set_visible_child_name("show-log");
777 break;
778 case Tabs.USERS:
779 page_stack.set_visible_child_name("users");
780 break;
781 case Tabs.SUMMARY:
782 page_stack.set_visible_child_name("summary");
783 break;
784 case Tabs.RESTORE:
785 page_stack.set_visible_child_name("restore");
786 break;
787 case Tabs.FINISH:
788 page_stack.set_visible_child_name("finish");
789 break;
790 }
791 }

References current_page, and page_stack.

Referenced by go_first(), go_next(), go_prev(), and initialize_tab().

◆ set_sidebar_active()

void RestoreWindow.set_sidebar_active ( Gtk.Button btn)
inlineprivate

Definition at line 693 of file RestoreWindow.vala.

693 {
694 btn.get_style_context().add_class("active-sidebar-button");
695 current_nav_btn = btn;
696 }
Gtk.? Button current_nav_btn

References current_nav_btn.

Referenced by update_sidebar_state().

◆ themed_icon()

Gtk.Image RestoreWindow.themed_icon ( string icon_name,
int size )
inlineprivate

Definition at line 816 of file RestoreWindow.vala.

816 {
817 var img = IconManager.lookup_image(icon_name, size);
818 themed_img_list.add(img);
819 themed_img_name.add(icon_name);
820 themed_img_size.add(size);
821 return img;
822 }

References IconManager.lookup_image(), themed_img_list, themed_img_name, and themed_img_size.

Referenced by build_sidebar(), and make_nav_button().

◆ update_page_title()

void RestoreWindow.update_page_title ( )
inlineprivate

Definition at line 727 of file RestoreWindow.vala.

727 {
728
729 switch (current_page) {
730 case Tabs.TARGET_DEVICE:
731 lbl_page_title.label = _("Select Restore Device");
732 break;
733 case Tabs.RESTORE_EXCLUDE:
734 lbl_page_title.label = _("Restore Exclude");
735 break;
736 case Tabs.EXCLUDE_APPS:
737 lbl_page_title.label = _("Exclude Apps");
738 break;
739 case Tabs.CHECK:
740 lbl_page_title.label = _("Checking Restore Actions");
741 break;
742 case Tabs.SHOW_LOG:
743 lbl_page_title.label = _("Review Log");
744 break;
745 case Tabs.USERS:
746 lbl_page_title.label = _("Users Home");
747 break;
748 case Tabs.SUMMARY:
749 lbl_page_title.label = _("Summary");
750 break;
751 case Tabs.RESTORE:
752 lbl_page_title.label = App.mirror_system ? _("Cloning System") : _("Restoring Snapshot");
753 break;
754 case Tabs.FINISH:
755 lbl_page_title.label = _("Finished");
756 break;
757 }
758 }

References _, and current_page.

Referenced by initialize_tab().

◆ update_sidebar_state()

void RestoreWindow.update_sidebar_state ( )
inlineprivate

Definition at line 698 of file RestoreWindow.vala.

698 {
699
701
702 switch (current_page) {
703 case Tabs.TARGET_DEVICE:
705 break;
706 case Tabs.CHECK:
708 break;
709 case Tabs.SHOW_LOG:
711 break;
712 case Tabs.USERS:
714 break;
715 case Tabs.SUMMARY:
717 break;
718 case Tabs.RESTORE:
720 break;
721 case Tabs.FINISH:
723 break;
724 }
725 }
void set_sidebar_active(Gtk.Button btn)
void clear_sidebar_selection()

References btn_nav_check, btn_nav_finish, btn_nav_log, btn_nav_restore, btn_nav_summary, btn_nav_target, btn_nav_users, clear_sidebar_selection(), current_page, and set_sidebar_active().

Referenced by initialize_tab().

◆ validate_current_tab()

bool RestoreWindow.validate_current_tab ( )
inlineprivate

Definition at line 661 of file RestoreWindow.vala.

661 {
662
663 if (current_page == Tabs.TARGET_DEVICE) {
664
666
667 if (ok) {
669 }
670
671 return ok;
672 }
673 else if (current_page == Tabs.RESTORE_EXCLUDE) {
675 }
676 else if (current_page == Tabs.EXCLUDE_APPS) {
678 }
679
680 return true;
681 }
void add_app_exclude_entries()
Definition Main.vala:766
void save_exclude_list_selections()
Definition Main.vala:1023

References Main.add_app_exclude_entries(), App, RestoreDeviceBox.check_and_mount_devices(), current_page, restore_device_box, and Main.save_exclude_list_selections().

Referenced by go_next().

◆ wrap_page()

Gtk.Widget RestoreWindow.wrap_page ( Gtk.Widget child)
inlineprivate

Definition at line 248 of file RestoreWindow.vala.

248 {
249 var card = new Gtk.Box(Gtk.Orientation.VERTICAL, 0);
250 card.get_style_context().add_class("card");
251 card.hexpand = true;
252 card.vexpand = true;
253 card.margin_start = 6;
254 card.margin_end = 6;
255 card.margin_top = 6;
256 card.margin_bottom = 6;
257 card.append(child);
258 return card;
259 }

Referenced by build_pages().

Member Data Documentation

◆ bbox_action

Gtk.Box RestoreWindow.bbox_action
private

Definition at line 43 of file RestoreWindow.vala.

Referenced by create_actions().

◆ body_box

Gtk.Box RestoreWindow.body_box
private

Definition at line 42 of file RestoreWindow.vala.

Referenced by build_content().

◆ btn_cancel

Gtk.Button RestoreWindow.btn_cancel
private

Definition at line 73 of file RestoreWindow.vala.

Referenced by create_actions(), and initialize_tab().

◆ btn_close

Gtk.Button RestoreWindow.btn_close
private

Definition at line 74 of file RestoreWindow.vala.

Referenced by create_actions(), and initialize_tab().

◆ btn_nav_check

Gtk.Button RestoreWindow.btn_nav_check
private

Definition at line 49 of file RestoreWindow.vala.

Referenced by build_sidebar(), clear_sidebar_selection(), and update_sidebar_state().

◆ btn_nav_finish

Gtk.Button RestoreWindow.btn_nav_finish
private

Definition at line 54 of file RestoreWindow.vala.

Referenced by build_sidebar(), clear_sidebar_selection(), and update_sidebar_state().

◆ btn_nav_log

Gtk.Button RestoreWindow.btn_nav_log
private

Definition at line 50 of file RestoreWindow.vala.

Referenced by build_sidebar(), clear_sidebar_selection(), and update_sidebar_state().

◆ btn_nav_restore

Gtk.Button RestoreWindow.btn_nav_restore
private

Definition at line 53 of file RestoreWindow.vala.

Referenced by build_sidebar(), clear_sidebar_selection(), and update_sidebar_state().

◆ btn_nav_summary

Gtk.Button RestoreWindow.btn_nav_summary
private

Definition at line 52 of file RestoreWindow.vala.

Referenced by build_sidebar(), clear_sidebar_selection(), and update_sidebar_state().

◆ btn_nav_target

Gtk.Button RestoreWindow.btn_nav_target
private

Definition at line 48 of file RestoreWindow.vala.

Referenced by build_sidebar(), clear_sidebar_selection(), and update_sidebar_state().

◆ btn_nav_users

Gtk.Button RestoreWindow.btn_nav_users
private

Definition at line 51 of file RestoreWindow.vala.

Referenced by build_sidebar(), clear_sidebar_selection(), and update_sidebar_state().

◆ btn_next

Gtk.Button RestoreWindow.btn_next
private

Definition at line 72 of file RestoreWindow.vala.

Referenced by create_actions(), and initialize_tab().

◆ btn_prev

Gtk.Button RestoreWindow.btn_prev
private

Definition at line 71 of file RestoreWindow.vala.

Referenced by create_actions(), and initialize_tab().

◆ check_before_restore

bool RestoreWindow.check_before_restore = true

Definition at line 81 of file RestoreWindow.vala.

Referenced by go_next(), and go_prev().

◆ check_box

RestoreBox RestoreWindow.check_box
private

Definition at line 64 of file RestoreWindow.vala.

Referenced by build_pages(), and initialize_tab().

◆ content_box

Gtk.Box RestoreWindow.content_box
private

Definition at line 40 of file RestoreWindow.vala.

Referenced by build_content(), build_ui(), and create_actions().

◆ current_nav_btn

Gtk.? Button RestoreWindow.current_nav_btn = null
private

Definition at line 55 of file RestoreWindow.vala.

Referenced by set_sidebar_active().

◆ current_page

int RestoreWindow.current_page = -1
private

◆ def_height

int RestoreWindow.def_height = 720
private

Definition at line 78 of file RestoreWindow.vala.

Referenced by init_delayed(), and RestoreWindow().

◆ def_width

int RestoreWindow.def_width = 1080
private

Definition at line 77 of file RestoreWindow.vala.

Referenced by init_delayed(), and RestoreWindow().

◆ embedded_mode

bool RestoreWindow.embedded_mode = false
private

Definition at line 82 of file RestoreWindow.vala.

Referenced by create_actions(), and RestoreWindow().

◆ exclude_apps_box

ExcludeAppsBox RestoreWindow.exclude_apps_box
private

Definition at line 62 of file RestoreWindow.vala.

Referenced by build_pages(), and initialize_tab().

◆ header_box

Gtk.Box RestoreWindow.header_box
private

Definition at line 41 of file RestoreWindow.vala.

Referenced by build_content().

◆ lbl_page_title

Gtk.Label RestoreWindow.lbl_page_title
private

Definition at line 57 of file RestoreWindow.vala.

Referenced by build_content().

◆ log_box

RsyncLogBox RestoreWindow.log_box
private

Definition at line 65 of file RestoreWindow.vala.

Referenced by build_pages(), and initialize_tab().

◆ page_stack

Gtk.Stack RestoreWindow.page_stack
private

Definition at line 44 of file RestoreWindow.vala.

Referenced by build_content(), build_pages(), and set_page().

◆ restore_box

RestoreBox RestoreWindow.restore_box
private

Definition at line 66 of file RestoreWindow.vala.

Referenced by build_pages(), and initialize_tab().

◆ restore_device_box

RestoreDeviceBox RestoreWindow.restore_device_box
private

Definition at line 60 of file RestoreWindow.vala.

Referenced by build_pages(), initialize_tab(), and validate_current_tab().

◆ restore_exclude_box

RestoreExcludeBox RestoreWindow.restore_exclude_box
private

Definition at line 61 of file RestoreWindow.vala.

Referenced by build_pages(), and initialize_tab().

◆ restore_finish_box

RestoreFinishBox RestoreWindow.restore_finish_box
private

Definition at line 68 of file RestoreWindow.vala.

Referenced by build_pages(), and initialize_tab().

◆ root_box

Gtk.Box RestoreWindow.root_box
private

Definition at line 38 of file RestoreWindow.vala.

Referenced by build_ui(), and detach_root_widget().

◆ sidebar

Gtk.Box RestoreWindow.sidebar
private

Definition at line 39 of file RestoreWindow.vala.

Referenced by build_sidebar(), build_ui(), and make_nav_button().

◆ success

bool RestoreWindow.success = false
private

Definition at line 79 of file RestoreWindow.vala.

Referenced by initialize_tab().

◆ summary_box

RestoreSummaryBox RestoreWindow.summary_box
private

Definition at line 63 of file RestoreWindow.vala.

Referenced by build_pages(), and initialize_tab().

◆ themed_img_list

Gee.ArrayList<Gtk.Image> RestoreWindow.themed_img_list = new Gee.ArrayList<Gtk.Image>()
private

Definition at line 812 of file RestoreWindow.vala.

Referenced by reload_themed_icons(), and themed_icon().

◆ themed_img_name

Gee.ArrayList<string> RestoreWindow.themed_img_name = new Gee.ArrayList<string>()
private

Definition at line 813 of file RestoreWindow.vala.

Referenced by reload_themed_icons(), and themed_icon().

◆ themed_img_size

Gee.ArrayList<int> RestoreWindow.themed_img_size = new Gee.ArrayList<int>()
private

Definition at line 814 of file RestoreWindow.vala.

Referenced by reload_themed_icons(), and themed_icon().

◆ tmr_init

uint RestoreWindow.tmr_init
private

Definition at line 76 of file RestoreWindow.vala.

Referenced by init_delayed(), and RestoreWindow().

◆ users_box

UsersBox RestoreWindow.users_box
private

Definition at line 67 of file RestoreWindow.vala.

Referenced by build_pages(), and initialize_tab().


The documentation for this class was generated from the following file: