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

Public Types

enum  Tabs {
  IMPORT_TIMESHIFT = 0 , SNAPSHOT_BACKEND = 1 , ESTIMATE = 2 , BACKUP_DEVICE = 3 ,
  SCHEDULE = 4 , USERS = 5 , FINISH = 6
}

Public Member Functions

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

Private Member Functions

void build_ui ()
void build_sidebar ()
Gtk.Button make_nav_button (string icon_name, string label_text)
void build_content ()
void build_pages ()
void build_timeshift_page ()
Gtk.Widget wrap_page (Gtk.Widget child)
void detect_timeshift_state ()
int probe_timeshift_snapshots_from_mounts ()
int probe_timeshift_snapshot_count (string config_path)
void refresh_timeshift_page ()
bool should_import_timeshift ()
bool run_timeshift_import ()
void create_actions ()
void action_buttons_set_initial_visibility (bool visible)
bool init_delayed ()
bool on_close_request ()
void save_changes ()
void go_first ()
void go_prev ()
void go_next ()
void initialize_tab ()
bool validate_current_tab ()
void set_page (Tabs tab)
Tabs get_current_tab ()
void update_sidebar_state ()
void update_page_title ()
void clear_sidebar_selection ()
void set_sidebar_active (Gtk.Button btn)
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 actions_box
Gtk.Stack stack
Gtk.Button btn_nav_import
Gtk.Button btn_nav_backend
Gtk.Button btn_nav_estimate
Gtk.Button btn_nav_location
Gtk.Button btn_nav_schedule
Gtk.Button btn_nav_users
Gtk.Button btn_nav_finish
Gtk.? Button current_nav_btn = null
Gtk.Label lbl_page_title
Gtk.Box timeshift_page_box
Gtk.Label lbl_timeshift_title
Gtk.Label lbl_timeshift_desc
Gtk.Label lbl_timeshift_found
Gtk.CheckButton radio_import_yes
Gtk.CheckButton radio_import_no
Gtk.Label lbl_timeshift_path
Gtk.Label lbl_timeshift_note
bool timeshift_available = false
bool timeshift_import_done = false
int timeshift_backup_count = 0
string timeshift_config_path = ""
SnapshotBackendBox backend_box
EstimateBox estimate_box
BackupDeviceBox backup_dev_box
FinishBox finish_box
ScheduleBox schedule_box
UsersBox users_box
ExcludeBox exclude_box
Gtk.Button btn_prev
Gtk.Button btn_next
Gtk.Button btn_cancel
Gtk.Button btn_close
bool schedule_accepted = false
bool embedded_mode = false
uint tmr_init
int def_width = 980
int def_height = 620
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>()
Tabs current_tab = Tabs.IMPORT_TIMESHIFT

Detailed Description

Definition at line 30 of file SetupWizardWindow.vala.

Member Enumeration Documentation

◆ Tabs

Enumerator
IMPORT_TIMESHIFT 
SNAPSHOT_BACKEND 
ESTIMATE 
BACKUP_DEVICE 
SCHEDULE 
USERS 
FINISH 

Definition at line 1070 of file SetupWizardWindow.vala.

1070 {
1071 IMPORT_TIMESHIFT = 0,
1072 SNAPSHOT_BACKEND = 1,
1073 ESTIMATE = 2,
1074 BACKUP_DEVICE = 3,
1075 SCHEDULE = 4,
1076 USERS = 5,
1077 FINISH = 6
1078 }

Constructor & Destructor Documentation

◆ SetupWizardWindow()

SetupWizardWindow.SetupWizardWindow ( bool embedded = false)
inline

Definition at line 98 of file SetupWizardWindow.vala.

98 {
99 embedded_mode = embedded;
100
101 log_debug("SetupWizardWindow: SetupWizardWindow()");
102
103 this.title = _("Setup Wizard");
104 if (!embedded_mode) {
105 this.modal = true;
106 }
107 this.set_icon_name("bastionguard-backup");
108 if (!embedded_mode)
109 this.close_request.connect(on_close_request);
110
111 this.set_default_size(def_width, def_height);
112 this.set_default_size(def_width, def_height);
113 this.set_titlebar(HeaderFactory.create_main_headerbar(this, 220));
114
116 App.schedule_boot = false;
117 App.schedule_hourly = false;
118 App.schedule_daily = true;
119 log_debug("Setting schedule_daily for first run");
120 App.schedule_weekly = false;
121 App.schedule_monthly = false;
122 }
123
124 build_ui();
125 build_pages();
127
128 if (!embedded_mode)
129 show();
130
131 tmr_init = Timeout.add(100, init_delayed);
132
133 log_debug("SetupWizardWindow: SetupWizardWindow(): exit");
134 }
Main App
#define _(s)
bool first_run
Definition Main.vala:47
void log_debug(string message)

References _, App, build_pages(), build_ui(), create_actions(), HeaderFactory.create_main_headerbar(), def_height, def_width, embedded_mode, Main.first_run, init_delayed(), TeeJee.Logging.log_debug(), on_close_request(), schedule_accepted, and tmr_init.

Referenced by MainWindow.init_wizard_page().

Member Function Documentation

◆ action_buttons_set_initial_visibility()

void SetupWizardWindow.action_buttons_set_initial_visibility ( bool visible)
inlineprivate

Definition at line 688 of file SetupWizardWindow.vala.

688 {
689 btn_prev.visible = visible;
690 btn_next.visible = visible;
691 btn_close.visible = visible;
692 btn_cancel.visible = visible;
693 }

Referenced by create_actions().

◆ build_content()

void SetupWizardWindow.build_content ( )
inlineprivate

Definition at line 242 of file SetupWizardWindow.vala.

242 {
243
244 content_box = new Gtk.Box(Gtk.Orientation.VERTICAL, 0);
245 content_box.get_style_context().add_class("content");
246 content_box.hexpand = true;
247 content_box.vexpand = true;
248 content_box.halign = Gtk.Align.FILL;
249 content_box.valign = Gtk.Align.FILL;
250
251 header_box = new Gtk.Box(Gtk.Orientation.VERTICAL, 0);
252 header_box.margin_start = 20;
253 header_box.margin_end = 20;
254 header_box.margin_top = 20;
255 header_box.margin_bottom = 10;
256
257 lbl_page_title = new Gtk.Label(_("Setup Wizard"));
258 lbl_page_title.xalign = 0.0f;
259 lbl_page_title.get_style_context().add_class("title");
261
262 body_box = new Gtk.Box(Gtk.Orientation.VERTICAL, 0);
263 body_box.margin_start = 14;
264 body_box.margin_end = 14;
265 body_box.margin_bottom = 12;
266 body_box.hexpand = true;
267 body_box.vexpand = true;
268 body_box.halign = Gtk.Align.FILL;
269 body_box.valign = Gtk.Align.FILL;
270
271 stack = new Gtk.Stack();
272 stack.transition_type = Gtk.StackTransitionType.CROSSFADE;
273 stack.transition_duration = 140;
274 stack.hexpand = true;
275 stack.vexpand = true;
276 stack.halign = Gtk.Align.FILL;
277 stack.valign = Gtk.Align.FILL;
278
279 body_box.append(stack);
280
281 content_box.append(header_box);
282 content_box.append(body_box);
283 }

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

Referenced by build_ui().

◆ build_pages()

void SetupWizardWindow.build_pages ( )
inlineprivate

Definition at line 285 of file SetupWizardWindow.vala.

285 {
286
288
290 backend_box.margin_start = 12;
291 backend_box.margin_end = 12;
292 backend_box.margin_top = 12;
293 backend_box.margin_bottom = 12;
294
295 estimate_box = new EstimateBox(this);
296 estimate_box.margin_start = 12;
297 estimate_box.margin_end = 12;
298 estimate_box.margin_top = 12;
299 estimate_box.margin_bottom = 12;
300
302 backup_dev_box.margin_start = 12;
303 backup_dev_box.margin_end = 12;
304 backup_dev_box.margin_top = 12;
305 backup_dev_box.margin_bottom = 12;
306
307 schedule_box = new ScheduleBox(this);
308 schedule_box.margin_start = 12;
309 schedule_box.margin_end = 12;
310 schedule_box.margin_top = 12;
311 schedule_box.margin_bottom = 12;
312
313 exclude_box = new ExcludeBox(this);
314 users_box = new UsersBox(this, exclude_box, false);
315 users_box.margin_start = 12;
316 users_box.margin_end = 12;
317 users_box.margin_top = 12;
318 users_box.margin_bottom = 12;
319
320 finish_box = new FinishBox(this, false);
321 finish_box.margin_start = 12;
322 finish_box.margin_end = 12;
323 finish_box.margin_top = 12;
324 finish_box.margin_bottom = 12;
325
326 var page_import = wrap_page(timeshift_page_box);
327 var page_backend = wrap_page(backend_box);
328 var page_estimate = wrap_page(estimate_box);
329 var page_location = wrap_page(backup_dev_box);
330 var page_schedule = wrap_page(schedule_box);
331 var page_users = wrap_page(users_box);
332 var page_finish = wrap_page(finish_box);
333
334 stack.add_named(page_import, "import");
335 stack.add_named(page_backend, "backend");
336 stack.add_named(page_estimate, "estimate");
337 stack.add_named(page_location, "location");
338 stack.add_named(page_schedule, "schedule");
339 stack.add_named(page_users, "users");
340 stack.add_named(page_finish, "finish");
341 }
BackupDeviceBox(Gtk.Window _parent_window)
EstimateBox(Gtk.Window _parent_window)
ExcludeBox(Gtk.Window _parent_window)
FinishBox(Gtk.Window _parent_window, bool _show_notes)
ScheduleBox(Gtk.Window _parent_window)
BackupDeviceBox backup_dev_box
SnapshotBackendBox backend_box
Gtk.Widget wrap_page(Gtk.Widget child)
SnapshotBackendBox(Gtk.Window _parent_window)
UsersBox(Gtk.Window _parent_window, ExcludeBox _exclude_box, bool _restore_mode)
Definition UsersBox.vala:26

References backend_box, backup_dev_box, BackupDeviceBox.BackupDeviceBox(), build_timeshift_page(), estimate_box, EstimateBox.EstimateBox(), exclude_box, ExcludeBox.ExcludeBox(), finish_box, FinishBox.FinishBox(), schedule_box, ScheduleBox.ScheduleBox(), SnapshotBackendBox.SnapshotBackendBox(), stack, timeshift_page_box, users_box, UsersBox.UsersBox(), and wrap_page().

Referenced by SetupWizardWindow().

◆ build_sidebar()

void SetupWizardWindow.build_sidebar ( )
inlineprivate

Definition at line 155 of file SetupWizardWindow.vala.

155 {
156
157 sidebar = new Gtk.Box(Gtk.Orientation.VERTICAL, 0);
158 sidebar.set_size_request(220, -1);
159 sidebar.hexpand = false;
160 sidebar.vexpand = true;
161 sidebar.halign = Gtk.Align.FILL;
162 sidebar.valign = Gtk.Align.FILL;
163 sidebar.get_style_context().add_class("sidebar");
164
165 var sidebar_header = new Gtk.Box(Gtk.Orientation.HORIZONTAL, 8);
166 sidebar_header.get_style_context().add_class("sidebar-header");
167 sidebar.append(sidebar_header);
168
169 Gtk.Widget logo_widget;
170 try {
171 logo_widget = new Gtk.Image.from_pixbuf(IconManager.lookup("bastionguard-backup", 48));
172 }
173 catch (Error e) {
174 logo_widget = themed_icon("emblem-default-symbolic", 48);
175 }
176
177 var title = new Gtk.Label("BastionGuard™\nWizard");
178 title.xalign = 0.0f;
179 title.yalign = 0.5f;
180 title.wrap = true;
181 title.max_width_chars = 14;
182 title.get_style_context().add_class("sidebar-title");
183
184 sidebar_header.append(logo_widget);
185 sidebar_header.append(title);
186
187 sidebar.append(new Gtk.Box(Gtk.Orientation.VERTICAL, 0));
188
189 btn_nav_import = make_nav_button("document-import-symbolic", _("Import"));
190 btn_nav_backend = make_nav_button("document-properties-symbolic", _("Backend"));
191 btn_nav_estimate = make_nav_button("system-search-symbolic", _("Estimate"));
192 btn_nav_location = make_nav_button("drive-harddisk-symbolic", _("Location"));
193 btn_nav_schedule = make_nav_button("x-office-calendar-symbolic", _("Schedule"));
194 btn_nav_users = make_nav_button("system-users-symbolic", _("Users"));
195 btn_nav_finish = make_nav_button("emblem-ok-symbolic", _("Finish"));
196
197 btn_nav_import.sensitive = false;
198 btn_nav_backend.sensitive = false;
199 btn_nav_estimate.sensitive = false;
200 btn_nav_location.sensitive = false;
201 btn_nav_schedule.sensitive = false;
202 btn_nav_users.sensitive = false;
203 btn_nav_finish.sensitive = false;
204
205 var spacer = new Gtk.Box(Gtk.Orientation.VERTICAL, 0);
206 spacer.hexpand = true;
207 spacer.vexpand = true;
208 spacer.halign = Gtk.Align.FILL;
209 spacer.valign = Gtk.Align.FILL;
210 sidebar.append(spacer);
211 }
Gtk.Image themed_icon(string icon_name, int size)
Gtk.Button make_nav_button(string icon_name, string label_text)

References _, btn_nav_backend, btn_nav_estimate, btn_nav_finish, btn_nav_import, btn_nav_location, btn_nav_schedule, btn_nav_users, Error, IconManager.lookup(), make_nav_button(), sidebar, and themed_icon().

Referenced by build_ui().

◆ build_timeshift_page()

void SetupWizardWindow.build_timeshift_page ( )
inlineprivate

Definition at line 343 of file SetupWizardWindow.vala.

343 {
344
345 timeshift_page_box = new Gtk.Box(Gtk.Orientation.VERTICAL, 12);
346 timeshift_page_box.margin_start = 18;
347 timeshift_page_box.margin_end = 18;
348 timeshift_page_box.margin_top = 18;
349 timeshift_page_box.margin_bottom = 18;
350 timeshift_page_box.hexpand = true;
351 timeshift_page_box.vexpand = true;
352
353 lbl_timeshift_title = new Gtk.Label(_("Do you want to import from Timeshift?"));
354 lbl_timeshift_title.xalign = 0.0f;
355 lbl_timeshift_title.get_style_context().add_class("h1");
356
357 lbl_timeshift_desc = new Gtk.Label(
358 _("If a Timeshift configuration is present on this system, BastionGuard can import compatible settings and detect existing backups without modifying or deleting the original data.")
359 );
360 lbl_timeshift_desc.xalign = 0.0f;
361 lbl_timeshift_desc.wrap = true;
362 lbl_timeshift_desc.max_width_chars = 80;
363
364 lbl_timeshift_found = new Gtk.Label("");
365 lbl_timeshift_found.xalign = 0.0f;
366 lbl_timeshift_found.wrap = true;
367
368 lbl_timeshift_path = new Gtk.Label("");
369 lbl_timeshift_path.xalign = 0.0f;
370 lbl_timeshift_path.wrap = true;
371 lbl_timeshift_path.selectable = true;
372
373 radio_import_yes = new Gtk.CheckButton.with_label(_("Yes, import from Timeshift"));
374 radio_import_no = new Gtk.CheckButton.with_label(_("No, configure manually"));
376
377 lbl_timeshift_note = new Gtk.Label(
378 _("Import copies only compatible settings into BastionGuard. Original Timeshift files are not modified.")
379 );
380 lbl_timeshift_note.xalign = 0.0f;
381 lbl_timeshift_note.wrap = true;
382 lbl_timeshift_note.max_width_chars = 80;
383
386 timeshift_page_box.append(new Gtk.Separator(Gtk.Orientation.HORIZONTAL));
389 timeshift_page_box.append(new Gtk.Box(Gtk.Orientation.VERTICAL, 0));
392 timeshift_page_box.append(new Gtk.Box(Gtk.Orientation.VERTICAL, 0));
394 }
Gtk.CheckButton radio_import_yes
Gtk.CheckButton radio_import_no

References _, lbl_timeshift_desc, lbl_timeshift_found, lbl_timeshift_note, lbl_timeshift_path, lbl_timeshift_title, radio_import_no, radio_import_yes, and timeshift_page_box.

Referenced by build_pages().

◆ build_ui()

void SetupWizardWindow.build_ui ( )
inlineprivate

Definition at line 139 of file SetupWizardWindow.vala.

139 {
140
141 root_box = new Gtk.Box(Gtk.Orientation.HORIZONTAL, 0);
142 root_box.hexpand = true;
143 root_box.vexpand = true;
144 root_box.halign = Gtk.Align.FILL;
145 root_box.valign = Gtk.Align.FILL;
146 set_child(root_box);
147
150
151 root_box.append(sidebar);
152 root_box.append(content_box);
153 }

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

Referenced by SetupWizardWindow().

◆ clear_sidebar_selection()

void SetupWizardWindow.clear_sidebar_selection ( )
inlineprivate

Definition at line 1055 of file SetupWizardWindow.vala.

1055 {
1056 btn_nav_import.get_style_context().remove_class("active-sidebar-button");
1057 btn_nav_backend.get_style_context().remove_class("active-sidebar-button");
1058 btn_nav_estimate.get_style_context().remove_class("active-sidebar-button");
1059 btn_nav_location.get_style_context().remove_class("active-sidebar-button");
1060 btn_nav_schedule.get_style_context().remove_class("active-sidebar-button");
1061 btn_nav_users.get_style_context().remove_class("active-sidebar-button");
1062 btn_nav_finish.get_style_context().remove_class("active-sidebar-button");
1063 }

References btn_nav_backend, btn_nav_estimate, btn_nav_finish, btn_nav_import, btn_nav_location, btn_nav_schedule, and btn_nav_users.

Referenced by update_sidebar_state().

◆ create_actions()

void SetupWizardWindow.create_actions ( )
inlineprivate

Definition at line 639 of file SetupWizardWindow.vala.

639 {
640
641 actions_box = new Gtk.Box(Gtk.Orientation.HORIZONTAL, 8);
642 actions_box.margin_start = 20;
643 actions_box.margin_end = 20;
644 actions_box.margin_bottom = 20;
645 actions_box.halign = Gtk.Align.END;
646
647 btn_prev = new Gtk.Button.with_label(_("Previous"));
648 btn_next = new Gtk.Button.with_label(_("Next"));
649 btn_close = new Gtk.Button.with_label(_("Finish"));
650 btn_cancel = new Gtk.Button.with_label(_("Cancel"));
651 btn_prev.set_size_request(110, -1);
652 btn_next.set_size_request(110, -1);
653 btn_close.set_size_request(110, -1);
654 btn_cancel.set_size_request(110, -1);
655
656 // CSS styling for nav buttons
657 btn_prev.get_style_context().add_class("btn-back");
658 btn_next.get_style_context().add_class("btn-next");
659 btn_close.get_style_context().add_class("btn-finish");
660 btn_close.get_style_context().add_class("suggested-action");
661 btn_cancel.get_style_context().add_class("btn-cancel");
662
663 btn_prev.clicked.connect(() => { go_prev(); });
664 btn_next.clicked.connect(() => { go_next(); });
665 btn_close.clicked.connect(() => {
666 save_changes();
668 else this.destroy();
669 });
670 btn_cancel.clicked.connect(() => {
671 if (App.task != null) {
672 App.task.stop(AppStatus.CANCELLED);
673 }
675 else this.destroy();
676 });
677
678 actions_box.append(btn_cancel);
679 actions_box.append(btn_prev);
680 actions_box.append(btn_next);
681 actions_box.append(btn_close);
682
683 content_box.append(actions_box);
684
686 }
AppStatus
void stop(AppStatus status_to_update=AppStatus.CANCELLED)
RsyncTask task
Definition Main.vala:160
void action_buttons_set_initial_visibility(bool visible)
signal void request_close()

References _, action_buttons_set_initial_visibility(), actions_box, App, btn_cancel, btn_close, btn_next, btn_prev, content_box, embedded_mode, go_next(), go_prev(), request_close(), save_changes(), AsyncTask.stop(), and Main.task.

Referenced by SetupWizardWindow().

◆ detach_root_widget()

Gtk.Widget SetupWizardWindow.detach_root_widget ( )
inline

Definition at line 733 of file SetupWizardWindow.vala.

733 {
734 set_child(null);
735 return root_box;
736 }

References root_box.

Referenced by MainWindow.init_wizard_page().

◆ detect_timeshift_state()

void SetupWizardWindow.detect_timeshift_state ( )
inlineprivate

Definition at line 412 of file SetupWizardWindow.vala.

412 {
413
414 timeshift_available = false;
417
418 string[] candidate_paths = {
419 "/etc/timeshift/timeshift.json",
420 "/etc/timeshift.json"
421 };
422
423 foreach (string path in candidate_paths) {
424 if (file_exists(path)) {
425 timeshift_available = true;
427 break;
428 }
429 }
430
433 return;
434 }
435
437 if (timeshift_backup_count > 0) {
438 timeshift_available = true;
439 }
440 }
int probe_timeshift_snapshots_from_mounts()
int probe_timeshift_snapshot_count(string config_path)
bool file_exists(string file_path)

References TeeJee.FileSystem.file_exists(), probe_timeshift_snapshot_count(), probe_timeshift_snapshots_from_mounts(), timeshift_available, timeshift_backup_count, and timeshift_config_path.

Referenced by init_delayed().

◆ get_current_tab()

Tabs SetupWizardWindow.get_current_tab ( )
inlineprivate

Definition at line 996 of file SetupWizardWindow.vala.

996 {
997 return current_tab;
998 }

References current_tab.

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

◆ go_first()

void SetupWizardWindow.go_first ( )
inlineprivate

Definition at line 741 of file SetupWizardWindow.vala.

741 {
742 set_page(Tabs.IMPORT_TIMESHIFT);
744 }

References initialize_tab(), and set_page().

Referenced by init_delayed().

◆ go_next()

void SetupWizardWindow.go_next ( )
inlineprivate

Definition at line 779 of file SetupWizardWindow.vala.

779 {
780
781 if (!validate_current_tab()) {
782 return;
783 }
784
785 switch (get_current_tab()) {
786
787 case Tabs.IMPORT_TIMESHIFT:
788 if (!run_timeshift_import()) {
789 return;
790 }
791 set_page(Tabs.SNAPSHOT_BACKEND);
792 break;
793
794 case Tabs.SNAPSHOT_BACKEND:
795 if (App.btrfs_mode) {
796 set_page(Tabs.BACKUP_DEVICE);
797 }
798 else {
799 set_page(Tabs.ESTIMATE);
800 }
801 break;
802
803 case Tabs.ESTIMATE:
804 set_page(Tabs.BACKUP_DEVICE);
805 break;
806
807 case Tabs.BACKUP_DEVICE:
808 if (App.live_system()) {
809 destroy();
810 return;
811 }
812 else {
813 set_page(Tabs.SCHEDULE);
814 }
815 break;
816
817 case Tabs.SCHEDULE:
818 set_page(Tabs.USERS);
819 schedule_accepted = true;
820 break;
821
822 case Tabs.USERS:
823 set_page(Tabs.FINISH);
824 break;
825
826 case Tabs.FINISH:
827 break;
828 }
829
831 }
bool btrfs_mode
Definition Main.vala:52
bool live_system()
Definition Main.vala:1058

References App, Main.btrfs_mode, get_current_tab(), initialize_tab(), Main.live_system(), run_timeshift_import(), schedule_accepted, set_page(), and validate_current_tab().

Referenced by create_actions(), and initialize_tab().

◆ go_prev()

void SetupWizardWindow.go_prev ( )
inlineprivate

Definition at line 746 of file SetupWizardWindow.vala.

746 {
747
748 switch (get_current_tab()) {
749 case Tabs.IMPORT_TIMESHIFT:
750 break;
751 case Tabs.SNAPSHOT_BACKEND:
752 set_page(Tabs.IMPORT_TIMESHIFT);
753 break;
754 case Tabs.ESTIMATE:
755 set_page(Tabs.SNAPSHOT_BACKEND);
756 break;
757 case Tabs.BACKUP_DEVICE:
758 if (App.btrfs_mode) {
759 set_page(Tabs.SNAPSHOT_BACKEND);
760 }
761 else {
762 set_page(Tabs.ESTIMATE);
763 }
764 break;
765 case Tabs.SCHEDULE:
766 set_page(Tabs.BACKUP_DEVICE);
767 break;
768 case Tabs.USERS:
769 set_page(Tabs.SCHEDULE);
770 break;
771 case Tabs.FINISH:
772 set_page(Tabs.USERS);
773 break;
774 }
775
777 }

References App, Main.btrfs_mode, get_current_tab(), initialize_tab(), and set_page().

Referenced by create_actions().

◆ init_delayed()

bool SetupWizardWindow.init_delayed ( )
inlineprivate

Definition at line 698 of file SetupWizardWindow.vala.

698 {
699
700 if (tmr_init > 0) {
701 Source.remove(tmr_init);
702 tmr_init = 0;
703 }
704
707
708 this.set_default_size(def_width, def_height);
709 go_first();
710
711 return false;
712 }

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

Referenced by SetupWizardWindow().

◆ initialize_tab()

void SetupWizardWindow.initialize_tab ( )
inlineprivate

Definition at line 833 of file SetupWizardWindow.vala.

833 {
834
835 switch (get_current_tab()) {
836
837 case Tabs.IMPORT_TIMESHIFT:
838 btn_prev.show();
839 btn_next.show();
840 btn_close.show();
841 btn_cancel.hide();
842
843 btn_prev.sensitive = false;
844 btn_next.sensitive = true;
845 btn_close.sensitive = true;
846
848 break;
849
850 case Tabs.SNAPSHOT_BACKEND:
851 btn_prev.show();
852 btn_next.show();
853 btn_close.show();
854 btn_cancel.hide();
855
856 btn_prev.sensitive = true;
857 btn_next.sensitive = true;
858 btn_close.sensitive = true;
859
861 break;
862
863 case Tabs.ESTIMATE:
864 btn_prev.show();
865 btn_next.show();
866 btn_close.show();
867 btn_cancel.hide();
868
869 btn_prev.sensitive = false;
870 btn_next.sensitive = false;
871 btn_close.sensitive = false;
872
873 if (App.btrfs_mode) {
874 go_next();
875 return;
876 }
877 else {
879 go_next();
880 return;
881 }
882
883 case Tabs.BACKUP_DEVICE:
884 btn_prev.show();
885 btn_next.show();
886 btn_close.show();
887 btn_cancel.hide();
888
889 btn_prev.sensitive = true;
890 btn_next.sensitive = true;
891 btn_close.sensitive = true;
892
894 break;
895
896 case Tabs.SCHEDULE:
897 btn_prev.show();
898 btn_next.show();
899 btn_close.show();
900 btn_cancel.hide();
901
902 btn_prev.sensitive = true;
903 btn_next.sensitive = true;
904 btn_close.sensitive = true;
905
907 break;
908
909 case Tabs.USERS:
910 btn_prev.show();
911 btn_next.show();
912 btn_close.show();
913 btn_cancel.hide();
914
915 btn_prev.sensitive = true;
916 btn_next.sensitive = true;
917 btn_close.sensitive = true;
918
920 break;
921
922 case Tabs.FINISH:
923 btn_prev.show();
924 btn_next.show();
925 btn_close.show();
926 btn_cancel.hide();
927
928 btn_prev.sensitive = false;
929 btn_next.sensitive = false;
930 btn_close.sensitive = true;
931
933 break;
934 }
935
938 }
void estimate_system_size()
void refresh()
void update_statusbar()
void refresh()

References App, backend_box, backup_dev_box, btn_cancel, btn_close, btn_next, btn_prev, Main.btrfs_mode, estimate_box, EstimateBox.estimate_system_size(), finish_box, get_current_tab(), go_next(), BackupDeviceBox.refresh(), FinishBox.refresh(), SnapshotBackendBox.refresh(), UsersBox.refresh(), refresh_timeshift_page(), schedule_box, update_page_title(), update_sidebar_state(), ScheduleBox.update_statusbar(), and users_box.

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

◆ make_nav_button()

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

Definition at line 213 of file SetupWizardWindow.vala.

213 {
214
215 var btn = new Gtk.Button();
216 btn.get_style_context().add_class("sidebar-button");
217 btn.hexpand = true;
218 btn.margin_start = 8;
219 btn.margin_end = 8;
220 btn.margin_top = 2;
221 btn.margin_bottom = 2;
222
223 var row = new Gtk.Box(Gtk.Orientation.HORIZONTAL, 10);
224 row.margin_start = 8;
225 row.margin_end = 8;
226 row.margin_top = 8;
227 row.margin_bottom = 8;
228
229 var img = themed_icon(icon_name, 18);
230 var lbl = new Gtk.Label(label_text);
231 lbl.xalign = 0.0f;
232
233 row.append(img);
234 row.append(lbl);
235
236 btn.set_child(row);
237 sidebar.append(btn);
238
239 return btn;
240 }

References sidebar, and themed_icon().

Referenced by build_sidebar().

◆ on_close_request()

bool SetupWizardWindow.on_close_request ( )
inlineprivate

Definition at line 714 of file SetupWizardWindow.vala.

714 {
715
717 App.schedule_boot = false;
718 App.schedule_hourly = false;
719 App.schedule_daily = false;
720 App.schedule_weekly = false;
721 App.schedule_monthly = false;
722 }
723
724 save_changes();
725 return false;
726 }

References App, Main.first_run, save_changes(), and schedule_accepted.

Referenced by SetupWizardWindow().

◆ probe_timeshift_snapshot_count()

int SetupWizardWindow.probe_timeshift_snapshot_count ( string config_path)
inlineprivate

Definition at line 495 of file SetupWizardWindow.vala.

495 {
496
497 try {
498 var parser = new Json.Parser();
499 parser.load_from_file(config_path);
500
501 Json.Node? node = parser.get_root();
502 Json.Object config = node?.get_object() ?? new Json.Object();
503
504 string backup_uuid = json_get_string(config, "backup_device_uuid", "");
505 string parent_uuid = json_get_string(config, "parent_device_uuid", "");
506 bool tmp_btrfs_mode = json_get_bool(config, "btrfs_mode", false);
507
508 SnapshotRepo tmp_repo = null;
509
510 if (backup_uuid.length > 0) {
511 tmp_repo = new SnapshotRepo.from_uuid(backup_uuid, this, tmp_btrfs_mode);
512 }
513 else if (parent_uuid.length > 0) {
514 tmp_repo = new SnapshotRepo.from_uuid(parent_uuid, this, tmp_btrfs_mode);
515 }
516
517 if (tmp_repo == null) {
518 return 0;
519 }
520
521 tmp_repo.load_snapshots();
522 return tmp_repo.snapshots.size;
523 }
524 catch (Error e) {
525 log_error("probe_timeshift_snapshot_count(): " + e.message);
526 return 0;
527 }
528 }
Gee.ArrayList< Snapshot?> snapshots
bool load_snapshots()
SnapshotRepo. from_uuid(string uuid, Gtk.Window? parent_win, bool btrfs_repo)
string json_get_string(Json.Object jobj, string member, string def_value)
bool json_get_bool(Json.Object jobj, string member, bool def_value)
void log_error(string message, bool highlight=false, bool is_warning=false)

References Error, SnapshotRepo.from_uuid(), TeeJee.JsonHelper.json_get_bool(), TeeJee.JsonHelper.json_get_string(), SnapshotRepo.load_snapshots(), TeeJee.Logging.log_error(), and SnapshotRepo.snapshots.

Referenced by detect_timeshift_state().

◆ probe_timeshift_snapshots_from_mounts()

int SetupWizardWindow.probe_timeshift_snapshots_from_mounts ( )
inlineprivate

Definition at line 442 of file SetupWizardWindow.vala.

442 {
443
444 int count = 0;
445 var all_devices = Device.get_block_devices_using_lsblk();
446
447 foreach (var dev in all_devices) {
448
449 if (dev.uuid.length == 0) continue;
450 if (dev.fstype != "ext4" && dev.fstype != "ext3"
451 && dev.fstype != "btrfs" && dev.fstype != "xfs") continue;
452
453 var tmp_repo = new SnapshotRepo.from_uuid(dev.uuid, this, dev.fstype == "btrfs");
454 if (tmp_repo == null) continue;
455 if (tmp_repo.mount_path.length == 0) continue;
456
457 string[] snap_dirs = {
458 path_combine(tmp_repo.mount_path, "timeshift/snapshots"),
459 path_combine(tmp_repo.mount_path, "timeshift-btrfs/snapshots"),
460 path_combine(tmp_repo.mount_path, "bastionguard-backup/snapshots"),
461 path_combine(tmp_repo.mount_path, "bastionguard-backup-btrfs/snapshots")
462 };
463
464 foreach (var snap_dir in snap_dirs) {
465 if (!dir_exists(snap_dir)) continue;
466
467 try {
468 var dir = File.new_for_path(snap_dir);
469 var enumerator = dir.enumerate_children("standard::name,standard::type", 0);
470 var info = enumerator.next_file();
471
472 while (info != null) {
473 if (info.get_file_type() == FileType.DIRECTORY
474 && info.get_name() != ".sync") {
475 count++;
476 }
477 info = enumerator.next_file();
478 }
479 }
480 catch {}
481
482 if (count > 0) {
483 if (App.backup_uuid.length == 0)
484 App.backup_uuid = dev.uuid;
485 break;
486 }
487 }
488
489 if (count > 0) break;
490 }
491
492 return count;
493 }
string backup_uuid
Definition Main.vala:49
string path_combine(string path1, string path2)
bool dir_exists(string dir_path)

References App, Main.backup_uuid, TeeJee.FileSystem.dir_exists(), SnapshotRepo.from_uuid(), Device.get_block_devices_using_lsblk(), and TeeJee.FileSystem.path_combine().

Referenced by detect_timeshift_state().

◆ refresh_timeshift_page()

void SetupWizardWindow.refresh_timeshift_page ( )
inlineprivate

Definition at line 530 of file SetupWizardWindow.vala.

530 {
531
532 if (!timeshift_available) {
533 lbl_timeshift_found.label = _("No Timeshift configuration or backup was detected.");
534 lbl_timeshift_path.label = "";
535 radio_import_yes.sensitive = false;
536 radio_import_no.active = true;
537 return;
538 }
539
540 if (timeshift_config_path.length > 0) {
541 lbl_timeshift_path.label = _("Configuration found") + ": " + timeshift_config_path;
542 }
543 else if (App.backup_uuid.length > 0) {
544 lbl_timeshift_path.label = _("Backups detected on device UUID") + ": " + App.backup_uuid;
545 }
546 else {
547 lbl_timeshift_path.label = _("Timeshift backups detected by scanning available devices.");
548 }
549
550 if (timeshift_config_path.length > 0) {
551 if (timeshift_backup_count == 0) {
552 lbl_timeshift_found.label = _("Timeshift configuration found, but no importable backup was detected.");
553 }
554 else if (timeshift_backup_count == 1) {
555 lbl_timeshift_found.label = _("Timeshift configuration found. 1 backup was detected.");
556 }
557 else {
558 lbl_timeshift_found.label = _("Timeshift configuration found. %d backups were detected.").printf(timeshift_backup_count);
559 }
560 }
561 else {
562 if (timeshift_backup_count == 1) {
563 lbl_timeshift_found.label = _("1 Timeshift backup was detected, but no Timeshift configuration file was found.");
564 }
565 else {
566 lbl_timeshift_found.label = _("%d Timeshift backups were detected, but no Timeshift configuration file was found.").printf(timeshift_backup_count);
567 }
568 }
569
570 radio_import_yes.sensitive = true;
571
573 radio_import_yes.active = true;
574 }
575 }

References _, App, Main.backup_uuid, timeshift_available, timeshift_backup_count, timeshift_config_path, and timeshift_import_done.

Referenced by init_delayed(), and initialize_tab().

◆ reload_themed_icons()

void SetupWizardWindow.reload_themed_icons ( )
inline

Definition at line 1089 of file SetupWizardWindow.vala.

1089 {
1090 for (int i = 0; i < themed_img_list.size; i++) {
1091 var img = themed_img_list[i];
1092 var name = themed_img_name[i];
1093 var sz = themed_img_size[i];
1094 var pix = IconManager.lookup(name, sz);
1095 if (pix != null) {
1096 img.set_from_pixbuf(pix);
1097 } else {
1098 img.set_from_icon_name(name);
1099 }
1100 }
1101 }
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.

Referenced by MainWindow.reload_themed_icons().

◆ request_close()

signal void SetupWizardWindow.request_close ( )

◆ run_timeshift_import()

bool SetupWizardWindow.run_timeshift_import ( )
inlineprivate

Definition at line 581 of file SetupWizardWindow.vala.

581 {
582
584 return true;
585 }
586
588 return true;
589 }
590
591 if (timeshift_config_path.length == 0) {
593
595 if (App.repo != null) {
597 }
598
599 gtk_messagebox(
600 _("Backup repository detected"),
601 _("Existing Timeshift backups were detected and will be used, but no Timeshift configuration file was found to import settings from."),
602 this,
603 false
604 );
605
606 return true;
607 }
608
610 gtk_messagebox(
611 _("Import failed"),
612 _("The Timeshift configuration could not be imported. BastionGuard may already have its own configuration, or the Timeshift configuration file may be invalid."),
613 this,
614 true
615 );
616 return false;
617 }
618
620
622 if (App.repo != null) {
624 }
625
626 gtk_messagebox(
627 _("Import completed"),
628 _("Timeshift settings were imported successfully into BastionGuard."),
629 this,
630 false
631 );
632
633 return true;
634 }
void initialize_repo()
Definition Main.vala:3727
SnapshotRepo repo
Definition Main.vala:70
bool import_timeshift_config_if_available()
Definition Main.vala:3421

References _, App, Main.import_timeshift_config_if_available(), Main.initialize_repo(), SnapshotRepo.load_snapshots(), Main.repo, should_import_timeshift(), timeshift_config_path, and timeshift_import_done.

Referenced by go_next().

◆ save_changes()

void SetupWizardWindow.save_changes ( )
inlineprivate

Definition at line 728 of file SetupWizardWindow.vala.

728 {
730 App.first_run = false;
731 }
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 SetupWizardWindow.set_page ( Tabs tab)
inlineprivate

Definition at line 968 of file SetupWizardWindow.vala.

968 {
969 current_tab = tab;
970
971 switch (tab) {
972 case Tabs.IMPORT_TIMESHIFT:
973 stack.set_visible_child_name("import");
974 break;
975 case Tabs.SNAPSHOT_BACKEND:
976 stack.set_visible_child_name("backend");
977 break;
978 case Tabs.ESTIMATE:
979 stack.set_visible_child_name("estimate");
980 break;
981 case Tabs.BACKUP_DEVICE:
982 stack.set_visible_child_name("location");
983 break;
984 case Tabs.SCHEDULE:
985 stack.set_visible_child_name("schedule");
986 break;
987 case Tabs.USERS:
988 stack.set_visible_child_name("users");
989 break;
990 case Tabs.FINISH:
991 stack.set_visible_child_name("finish");
992 break;
993 }
994 }

References current_tab, and stack.

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

◆ set_sidebar_active()

void SetupWizardWindow.set_sidebar_active ( Gtk.Button btn)
inlineprivate

Definition at line 1065 of file SetupWizardWindow.vala.

1065 {
1066 btn.get_style_context().add_class("active-sidebar-button");
1067 current_nav_btn = btn;
1068 }
Gtk.? Button current_nav_btn

References current_nav_btn.

Referenced by update_sidebar_state().

◆ should_import_timeshift()

bool SetupWizardWindow.should_import_timeshift ( )
inlineprivate

Definition at line 577 of file SetupWizardWindow.vala.

577 {
578 return timeshift_available && radio_import_yes.active;
579 }

References radio_import_yes, and timeshift_available.

Referenced by run_timeshift_import().

◆ themed_icon()

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

Definition at line 1081 of file SetupWizardWindow.vala.

1081 {
1082 var img = IconManager.lookup_image(icon_name, size);
1083 themed_img_list.add(img);
1084 themed_img_name.add(icon_name);
1085 themed_img_size.add(size);
1086 return img;
1087 }

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 SetupWizardWindow.update_page_title ( )
inlineprivate

Definition at line 1029 of file SetupWizardWindow.vala.

1029 {
1030 switch (current_tab) {
1031 case Tabs.IMPORT_TIMESHIFT:
1032 lbl_page_title.label = _("Import from Timeshift");
1033 break;
1034 case Tabs.SNAPSHOT_BACKEND:
1035 lbl_page_title.label = _("Backend");
1036 break;
1037 case Tabs.ESTIMATE:
1038 lbl_page_title.label = _("Estimate");
1039 break;
1040 case Tabs.BACKUP_DEVICE:
1041 lbl_page_title.label = _("Location");
1042 break;
1043 case Tabs.SCHEDULE:
1044 lbl_page_title.label = _("Schedule");
1045 break;
1046 case Tabs.USERS:
1047 lbl_page_title.label = _("Users");
1048 break;
1049 case Tabs.FINISH:
1050 lbl_page_title.label = _("Finish");
1051 break;
1052 }
1053 }

References _, and current_tab.

Referenced by initialize_tab().

◆ update_sidebar_state()

void SetupWizardWindow.update_sidebar_state ( )
inlineprivate

Definition at line 1000 of file SetupWizardWindow.vala.

1000 {
1001
1003
1004 switch (current_tab) {
1005 case Tabs.IMPORT_TIMESHIFT:
1007 break;
1008 case Tabs.SNAPSHOT_BACKEND:
1010 break;
1011 case Tabs.ESTIMATE:
1013 break;
1014 case Tabs.BACKUP_DEVICE:
1016 break;
1017 case Tabs.SCHEDULE:
1019 break;
1020 case Tabs.USERS:
1022 break;
1023 case Tabs.FINISH:
1025 break;
1026 }
1027 }
void set_sidebar_active(Gtk.Button btn)

References btn_nav_backend, btn_nav_estimate, btn_nav_finish, btn_nav_import, btn_nav_location, btn_nav_schedule, btn_nav_users, clear_sidebar_selection(), current_tab, and set_sidebar_active().

Referenced by initialize_tab().

◆ validate_current_tab()

bool SetupWizardWindow.validate_current_tab ( )
inlineprivate

Definition at line 940 of file SetupWizardWindow.vala.

940 {
941
942 if (get_current_tab() == Tabs.IMPORT_TIMESHIFT) {
943 return true;
944 }
945 else if (get_current_tab() == Tabs.SNAPSHOT_BACKEND) {
946 return true;
947 }
948 else if (get_current_tab() == Tabs.BACKUP_DEVICE) {
949 if (!App.repo.available() || !App.repo.has_space()) {
950 gtk_messagebox(
953 this,
954 true
955 );
956 return false;
957 }
958 }
959
960 return true;
961 }
string status_details
bool has_space(uint64 needed=0)
string status_message

References App, SnapshotRepo.available(), get_current_tab(), SnapshotRepo.has_space(), Main.repo, SnapshotRepo.status_details, and SnapshotRepo.status_message.

Referenced by go_next().

◆ wrap_page()

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

Definition at line 396 of file SetupWizardWindow.vala.

396 {
397 var card = new Gtk.Box(Gtk.Orientation.VERTICAL, 0);
398 card.get_style_context().add_class("card");
399 card.hexpand = true;
400 card.vexpand = true;
401 card.margin_start = 6;
402 card.margin_end = 6;
403 card.margin_top = 6;
404 card.margin_bottom = 6;
405 card.append(child);
406 return card;
407 }

Referenced by build_pages().

Member Data Documentation

◆ actions_box

Gtk.Box SetupWizardWindow.actions_box
private

Definition at line 40 of file SetupWizardWindow.vala.

Referenced by create_actions().

◆ backend_box

SnapshotBackendBox SetupWizardWindow.backend_box
private

Definition at line 72 of file SetupWizardWindow.vala.

Referenced by build_pages(), and initialize_tab().

◆ backup_dev_box

BackupDeviceBox SetupWizardWindow.backup_dev_box
private

Definition at line 74 of file SetupWizardWindow.vala.

Referenced by build_pages(), and initialize_tab().

◆ body_box

Gtk.Box SetupWizardWindow.body_box
private

Definition at line 39 of file SetupWizardWindow.vala.

Referenced by build_content().

◆ btn_cancel

Gtk.Button SetupWizardWindow.btn_cancel
private

Definition at line 83 of file SetupWizardWindow.vala.

Referenced by create_actions(), and initialize_tab().

◆ btn_close

Gtk.Button SetupWizardWindow.btn_close
private

Definition at line 84 of file SetupWizardWindow.vala.

Referenced by create_actions(), and initialize_tab().

◆ btn_nav_backend

Gtk.Button SetupWizardWindow.btn_nav_backend
private

◆ btn_nav_estimate

Gtk.Button SetupWizardWindow.btn_nav_estimate
private

◆ btn_nav_finish

Gtk.Button SetupWizardWindow.btn_nav_finish
private

◆ btn_nav_import

Gtk.Button SetupWizardWindow.btn_nav_import
private

◆ btn_nav_location

Gtk.Button SetupWizardWindow.btn_nav_location
private

◆ btn_nav_schedule

Gtk.Button SetupWizardWindow.btn_nav_schedule
private

◆ btn_nav_users

Gtk.Button SetupWizardWindow.btn_nav_users
private

◆ btn_next

Gtk.Button SetupWizardWindow.btn_next
private

Definition at line 82 of file SetupWizardWindow.vala.

Referenced by create_actions(), and initialize_tab().

◆ btn_prev

Gtk.Button SetupWizardWindow.btn_prev
private

Definition at line 81 of file SetupWizardWindow.vala.

Referenced by create_actions(), and initialize_tab().

◆ content_box

Gtk.Box SetupWizardWindow.content_box
private

Definition at line 37 of file SetupWizardWindow.vala.

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

◆ current_nav_btn

Gtk.? Button SetupWizardWindow.current_nav_btn = null
private

Definition at line 51 of file SetupWizardWindow.vala.

Referenced by set_sidebar_active().

◆ current_tab

Tabs SetupWizardWindow.current_tab = Tabs.IMPORT_TIMESHIFT
private

◆ def_height

int SetupWizardWindow.def_height = 620
private

Definition at line 91 of file SetupWizardWindow.vala.

Referenced by init_delayed(), and SetupWizardWindow().

◆ def_width

int SetupWizardWindow.def_width = 980
private

Definition at line 90 of file SetupWizardWindow.vala.

Referenced by init_delayed(), and SetupWizardWindow().

◆ embedded_mode

bool SetupWizardWindow.embedded_mode = false
private

Definition at line 87 of file SetupWizardWindow.vala.

Referenced by create_actions(), and SetupWizardWindow().

◆ estimate_box

EstimateBox SetupWizardWindow.estimate_box
private

Definition at line 73 of file SetupWizardWindow.vala.

Referenced by build_pages(), and initialize_tab().

◆ exclude_box

ExcludeBox SetupWizardWindow.exclude_box
private

Definition at line 78 of file SetupWizardWindow.vala.

Referenced by build_pages().

◆ finish_box

FinishBox SetupWizardWindow.finish_box
private

Definition at line 75 of file SetupWizardWindow.vala.

Referenced by build_pages(), and initialize_tab().

◆ header_box

Gtk.Box SetupWizardWindow.header_box
private

Definition at line 38 of file SetupWizardWindow.vala.

Referenced by build_content().

◆ lbl_page_title

Gtk.Label SetupWizardWindow.lbl_page_title
private

Definition at line 54 of file SetupWizardWindow.vala.

Referenced by build_content().

◆ lbl_timeshift_desc

Gtk.Label SetupWizardWindow.lbl_timeshift_desc
private

Definition at line 59 of file SetupWizardWindow.vala.

Referenced by build_timeshift_page().

◆ lbl_timeshift_found

Gtk.Label SetupWizardWindow.lbl_timeshift_found
private

Definition at line 60 of file SetupWizardWindow.vala.

Referenced by build_timeshift_page().

◆ lbl_timeshift_note

Gtk.Label SetupWizardWindow.lbl_timeshift_note
private

Definition at line 64 of file SetupWizardWindow.vala.

Referenced by build_timeshift_page().

◆ lbl_timeshift_path

Gtk.Label SetupWizardWindow.lbl_timeshift_path
private

Definition at line 63 of file SetupWizardWindow.vala.

Referenced by build_timeshift_page().

◆ lbl_timeshift_title

Gtk.Label SetupWizardWindow.lbl_timeshift_title
private

Definition at line 58 of file SetupWizardWindow.vala.

Referenced by build_timeshift_page().

◆ radio_import_no

Gtk.CheckButton SetupWizardWindow.radio_import_no
private

Definition at line 62 of file SetupWizardWindow.vala.

Referenced by build_timeshift_page().

◆ radio_import_yes

Gtk.CheckButton SetupWizardWindow.radio_import_yes
private

Definition at line 61 of file SetupWizardWindow.vala.

Referenced by build_timeshift_page(), and should_import_timeshift().

◆ root_box

Gtk.Box SetupWizardWindow.root_box
private

Definition at line 35 of file SetupWizardWindow.vala.

Referenced by build_ui(), and detach_root_widget().

◆ schedule_accepted

bool SetupWizardWindow.schedule_accepted = false
private

Definition at line 86 of file SetupWizardWindow.vala.

Referenced by go_next(), on_close_request(), and SetupWizardWindow().

◆ schedule_box

ScheduleBox SetupWizardWindow.schedule_box
private

Definition at line 76 of file SetupWizardWindow.vala.

Referenced by build_pages(), and initialize_tab().

◆ sidebar

Gtk.Box SetupWizardWindow.sidebar
private

Definition at line 36 of file SetupWizardWindow.vala.

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

◆ stack

Gtk.Stack SetupWizardWindow.stack
private

Definition at line 41 of file SetupWizardWindow.vala.

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

◆ themed_img_list

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

Definition at line 94 of file SetupWizardWindow.vala.

Referenced by reload_themed_icons(), and themed_icon().

◆ themed_img_name

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

Definition at line 95 of file SetupWizardWindow.vala.

Referenced by reload_themed_icons(), and themed_icon().

◆ themed_img_size

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

Definition at line 96 of file SetupWizardWindow.vala.

Referenced by reload_themed_icons(), and themed_icon().

◆ timeshift_available

bool SetupWizardWindow.timeshift_available = false
private

◆ timeshift_backup_count

int SetupWizardWindow.timeshift_backup_count = 0
private

Definition at line 68 of file SetupWizardWindow.vala.

Referenced by detect_timeshift_state(), and refresh_timeshift_page().

◆ timeshift_config_path

string SetupWizardWindow.timeshift_config_path = ""
private

◆ timeshift_import_done

bool SetupWizardWindow.timeshift_import_done = false
private

Definition at line 67 of file SetupWizardWindow.vala.

Referenced by refresh_timeshift_page(), and run_timeshift_import().

◆ timeshift_page_box

Gtk.Box SetupWizardWindow.timeshift_page_box
private

Definition at line 57 of file SetupWizardWindow.vala.

Referenced by build_pages(), and build_timeshift_page().

◆ tmr_init

uint SetupWizardWindow.tmr_init
private

Definition at line 89 of file SetupWizardWindow.vala.

Referenced by init_delayed(), and SetupWizardWindow().

◆ users_box

UsersBox SetupWizardWindow.users_box
private

Definition at line 77 of file SetupWizardWindow.vala.

Referenced by build_pages(), and initialize_tab().


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