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

Public Member Functions

 UsersBox (Gtk.Window _parent_window, ExcludeBox _exclude_box, bool _restore_mode)
void refresh ()

Private Member Functions

void init_listbox ()
string[] user_patterns (SystemUser user)
void apply_user_mode (SystemUser user, string mode)
Gtk.Widget create_user_row (SystemUser user)
void init_btrfs_home_option (Gtk.Box box)
void refresh_treeview ()

Private Attributes

Gtk.ListBox listbox
Gtk.ScrolledWindow scrolled_treeview
Gtk.Window parent_window
ExcludeBox exclude_box
Gtk.Box box_btrfs
Gtk.Label lbl_message
Gtk.CheckButton chk_include_btrfs_home
bool restore_mode = false

Detailed Description

Definition at line 16 of file UsersBox.vala.

Constructor & Destructor Documentation

◆ UsersBox()

UsersBox.UsersBox ( Gtk.Window _parent_window,
ExcludeBox _exclude_box,
bool _restore_mode )
inline

Definition at line 26 of file UsersBox.vala.

26 {
27 log_debug("UsersBox: UsersBox()");
28 GLib.Object(orientation: Gtk.Orientation.VERTICAL, spacing: 6);
29 parent_window = _parent_window;
30 margin_top = 12;
31 margin_bottom = 12;
32 margin_start = 12;
33 margin_end = 12;
34 restore_mode = _restore_mode;
35 exclude_box = _exclude_box;
36
37 add_label_header(this, _("User Home Directories"), true);
38 lbl_message = add_label(this, _("User home directories are excluded by default unless you enable them here"), false, true);
39
41
42 box_btrfs = new Gtk.Box(Gtk.Orientation.VERTICAL, 6);
43 append(box_btrfs);
45 refresh();
46 log_debug("UsersBox: UsersBox(): exit");
47 }
#define _(s)
void init_btrfs_home_option(Gtk.Box box)
bool restore_mode
Definition UsersBox.vala:24
Gtk.Window parent_window
Definition UsersBox.vala:19
ExcludeBox exclude_box
Definition UsersBox.vala:20
void refresh()
void init_listbox()
Definition UsersBox.vala:49
Gtk.Box box_btrfs
Definition UsersBox.vala:21
Gtk.Label lbl_message
Definition UsersBox.vala:22
Gtk.Label add_label(Gtk.Box box, string text, bool bold=false, bool italic=false, bool large=false)
void log_debug(string message)

References _, TeeJee.GtkHelper.add_label(), box_btrfs, exclude_box, init_btrfs_home_option(), init_listbox(), lbl_message, TeeJee.Logging.log_debug(), parent_window, refresh(), and restore_mode.

Referenced by RestoreWindow.build_pages(), SettingsWindow.build_pages(), and SetupWizardWindow.build_pages().

Member Function Documentation

◆ apply_user_mode()

void UsersBox.apply_user_mode ( SystemUser user,
string mode )
inlineprivate

Definition at line 73 of file UsersBox.vala.

73 {
74 string[] patterns = user_patterns(user);
75 string exc_pattern = patterns[0];
76 string inc_pattern = patterns[1];
77 string inc_hidden_pattern = patterns[2];
78
79 if (mode == "hidden" && user.has_encrypted_home){
80 string txt = _("Encrypted Home Directory");
81 string msg = _("Selected user has an encrypted home directory. It's not possible to include only hidden files.");
82 gtk_messagebox(txt, msg, parent_window, true);
83 return;
84 }
85
86 App.exclude_list_user.remove(exc_pattern);
87 App.exclude_list_user.remove(inc_pattern);
88 App.exclude_list_user.remove(inc_hidden_pattern);
89
90 if (mode == "exclude"){
91 if (!App.exclude_list_user.contains(exc_pattern)){
92 App.exclude_list_user.add(exc_pattern);
93 }
94 }
95 else if (mode == "hidden"){
96 if (!App.exclude_list_user.contains(inc_hidden_pattern)){
97 App.exclude_list_user.add(inc_hidden_pattern);
98 }
99 }
100 else if (mode == "all"){
101 if (!App.exclude_list_user.contains(inc_pattern)){
102 App.exclude_list_user.add(inc_pattern);
103 }
104 }
105
107 }
Main App
Gee.ArrayList< string > exclude_list_user
Definition Main.vala:61
bool has_encrypted_home
void refresh_treeview()
string[] user_patterns(SystemUser user)
Definition UsersBox.vala:62
std::vector< Pattern > patterns()

References _, App, Main.exclude_list_user, SystemUser.has_encrypted_home, parent_window, refresh_treeview(), and user_patterns().

Referenced by create_user_row().

◆ create_user_row()

Gtk.Widget UsersBox.create_user_row ( SystemUser user)
inlineprivate

Definition at line 109 of file UsersBox.vala.

109 {
110 string[] patterns = user_patterns(user);
111 string exc_pattern = patterns[0];
112 string inc_pattern = patterns[1];
113 string inc_hidden_pattern = patterns[2];
114
115 bool include_hidden = App.exclude_list_user.contains(inc_hidden_pattern);
116 bool include_all = App.exclude_list_user.contains(inc_pattern);
117 bool exclude_all = !include_hidden && !include_all;
118
119 if (exclude_all && !App.exclude_list_user.contains(exc_pattern)){
120 App.exclude_list_user.add(exc_pattern);
121 }
122
123 var row = new Gtk.ListBoxRow();
124 var outer = new Gtk.Box(Gtk.Orientation.VERTICAL, 6);
125 outer.margin_start = 8;
126 outer.margin_end = 8;
127 outer.margin_top = 8;
128 outer.margin_bottom = 8;
129 row.set_child(outer);
130
131 var top = new Gtk.Box(Gtk.Orientation.HORIZONTAL, 12);
132 outer.append(top);
133
134 var labels = new Gtk.Box(Gtk.Orientation.VERTICAL, 3);
135 labels.hexpand = true;
136 top.append(labels);
137
138 var name = new Gtk.Label(user.name);
139 name.xalign = 0.0f;
140 name.add_css_class("heading");
141 labels.append(name);
142
143 var home = new Gtk.Label(user.home_path);
144 home.xalign = 0.0f;
145 home.wrap = true;
146 home.add_css_class("dim-label");
147 labels.append(home);
148
149 var mode_box = new Gtk.Box(Gtk.Orientation.HORIZONTAL, 12);
150 mode_box.halign = Gtk.Align.START;
151 outer.append(mode_box);
152
153 var btn_exclude = new Gtk.CheckButton.with_label(_("Exclude All Files"));
154 var btn_hidden = new Gtk.CheckButton.with_label(_("Include Only Hidden Files"));
155 var btn_all = new Gtk.CheckButton.with_label(_("Include All Files"));
156 btn_hidden.set_group(btn_exclude);
157 btn_all.set_group(btn_exclude);
158
159 btn_exclude.active = exclude_all;
160 btn_hidden.active = include_hidden;
161 btn_all.active = include_all;
162
163 btn_exclude.toggled.connect(()=>{ if (btn_exclude.active) apply_user_mode(user, "exclude"); });
164 btn_hidden.toggled.connect(()=>{ if (btn_hidden.active) apply_user_mode(user, "hidden"); });
165 btn_all.toggled.connect(()=>{ if (btn_all.active) apply_user_mode(user, "all"); });
166
167 mode_box.append(btn_exclude);
168 mode_box.append(btn_hidden);
169 mode_box.append(btn_all);
170
171 return row;
172 }
string name
string home_path
void apply_user_mode(SystemUser user, string mode)
Definition UsersBox.vala:73

References _, App, apply_user_mode(), Main.exclude_list_user, SystemUser.home_path, SystemUser.name, and user_patterns().

Referenced by refresh_treeview().

◆ init_btrfs_home_option()

void UsersBox.init_btrfs_home_option ( Gtk.Box box)
inlineprivate

Definition at line 174 of file UsersBox.vala.

174 {
175 if (restore_mode){
176 chk_include_btrfs_home = new Gtk.CheckButton.with_label(_("Restore @home subvolume"));
177 box.append(chk_include_btrfs_home);
178 chk_include_btrfs_home.toggled.connect(()=>{
179 App.include_btrfs_home_for_restore = chk_include_btrfs_home.active;
180 });
181 }
182 else {
183 chk_include_btrfs_home = new Gtk.CheckButton.with_label(_("Include @home subvolume in backups"));
184 box.append(chk_include_btrfs_home);
185 chk_include_btrfs_home.toggled.connect(()=>{
186 App.include_btrfs_home_for_backup = chk_include_btrfs_home.active;
187 });
188 }
189 }
Gtk.CheckButton chk_include_btrfs_home
Definition UsersBox.vala:23

References _, chk_include_btrfs_home, and restore_mode.

Referenced by UsersBox().

◆ init_listbox()

void UsersBox.init_listbox ( )
inlineprivate

Definition at line 49 of file UsersBox.vala.

49 {
50 listbox = new Gtk.ListBox();
51 listbox.selection_mode = Gtk.SelectionMode.NONE;
52 listbox.add_css_class("boxed-list");
53
54 scrolled_treeview = new Gtk.ScrolledWindow();
55 scrolled_treeview.set_policy(Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC);
56 scrolled_treeview.set_child(listbox);
57 scrolled_treeview.hexpand = true;
58 scrolled_treeview.vexpand = true;
59 append(scrolled_treeview);
60 }
Gtk.ListBox listbox
Definition UsersBox.vala:17
Gtk.ScrolledWindow scrolled_treeview
Definition UsersBox.vala:18

References listbox, and scrolled_treeview.

Referenced by UsersBox().

◆ refresh()

void UsersBox.refresh ( )
inline

Definition at line 191 of file UsersBox.vala.

191 {
192 if (App.btrfs_mode){
193 lbl_message.visible = false;
194 scrolled_treeview.visible = false;
195 box_btrfs.visible = true;
196 if (restore_mode){
197 chk_include_btrfs_home.active = App.include_btrfs_home_for_restore;
198 }
199 else{
200 chk_include_btrfs_home.active = App.include_btrfs_home_for_backup;
201 }
202 }
203 else{
204 lbl_message.visible = true;
205 scrolled_treeview.visible = true;
207 box_btrfs.visible = false;
208 }
209 show();
210 }
bool btrfs_mode
Definition Main.vala:52
bool include_btrfs_home_for_restore
Definition Main.vala:54
bool include_btrfs_home_for_backup
Definition Main.vala:53

References App, Main.btrfs_mode, Main.include_btrfs_home_for_backup, Main.include_btrfs_home_for_restore, refresh_treeview(), and restore_mode.

Referenced by SettingsWindow.connect_signals(), RestoreWindow.initialize_tab(), SetupWizardWindow.initialize_tab(), ExcludeBox.save_changes(), and UsersBox().

◆ refresh_treeview()

void UsersBox.refresh_treeview ( )
inlineprivate

Definition at line 212 of file UsersBox.vala.

212 {
213 Gtk.Widget? child = listbox.get_first_child();
214 while (child != null){
215 Gtk.Widget? next = child.get_next_sibling();
216 listbox.remove(child);
217 child = next;
218 }
219
220 foreach(var user in App.current_system_users.values){
221 if (user.is_system){ continue; }
222 listbox.append(create_user_row(user));
223 }
224
226 }
void refresh_treeview()
Gee.HashMap< string, SystemUser > current_system_users
Definition Main.vala:164
Gtk.Widget create_user_row(SystemUser user)

References App, create_user_row(), Main.current_system_users, exclude_box, listbox, and ExcludeBox.refresh_treeview().

Referenced by apply_user_mode(), and refresh().

◆ user_patterns()

string[] UsersBox.user_patterns ( SystemUser user)
inlineprivate

Definition at line 62 of file UsersBox.vala.

62 {
63 string exc_pattern = "%s/**".printf(user.home_path);
64 string inc_pattern = "+ %s/**".printf(user.home_path);
65 string inc_hidden_pattern = "+ %s/.**".printf(user.home_path);
66 if (user.has_encrypted_home){
67 inc_pattern = "+ /home/.ecryptfs/%s/***".printf(user.name);
68 exc_pattern = "/home/.ecryptfs/%s/***".printf(user.name);
69 }
70 return {exc_pattern, inc_pattern, inc_hidden_pattern};
71 }

References SystemUser.has_encrypted_home, SystemUser.home_path, and SystemUser.name.

Referenced by apply_user_mode(), and create_user_row().

Member Data Documentation

◆ box_btrfs

Gtk.Box UsersBox.box_btrfs
private

Definition at line 21 of file UsersBox.vala.

Referenced by UsersBox().

◆ chk_include_btrfs_home

Gtk.CheckButton UsersBox.chk_include_btrfs_home
private

Definition at line 23 of file UsersBox.vala.

Referenced by init_btrfs_home_option().

◆ exclude_box

ExcludeBox UsersBox.exclude_box
private

Definition at line 20 of file UsersBox.vala.

Referenced by refresh_treeview(), and UsersBox().

◆ lbl_message

Gtk.Label UsersBox.lbl_message
private

Definition at line 22 of file UsersBox.vala.

Referenced by UsersBox().

◆ listbox

Gtk.ListBox UsersBox.listbox
private

Definition at line 17 of file UsersBox.vala.

Referenced by init_listbox(), and refresh_treeview().

◆ parent_window

Gtk.Window UsersBox.parent_window
private

Definition at line 19 of file UsersBox.vala.

Referenced by apply_user_mode(), and UsersBox().

◆ restore_mode

bool UsersBox.restore_mode = false
private

Definition at line 24 of file UsersBox.vala.

Referenced by init_btrfs_home_option(), refresh(), and UsersBox().

◆ scrolled_treeview

Gtk.ScrolledWindow UsersBox.scrolled_treeview
private

Definition at line 18 of file UsersBox.vala.

Referenced by init_listbox().


The documentation for this class was generated from the following file:
  • BastionGuard/thirdparty/bastionguard-backup/src/Gtk/UsersBox.vala