1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
//! Status bar general settings section (enable, position, height).
use crate::SettingsUI;
use crate::search::SearchTag;
use crate::section::{SLIDER_WIDTH, collapsing_section};
use par_term_config::StatusBarPosition;
use std::collections::HashSet;
const SLIDER_HEIGHT: f32 = 18.0;
pub fn show_general_section(
ui: &mut egui::Ui,
settings: &mut SettingsUI,
changes_this_frame: &mut bool,
collapsed: &mut HashSet<String>,
) {
collapsing_section(ui, "General", "status_bar_general", true, collapsed, |ui| {
if ui
.checkbox(
&mut settings.config.status_bar.status_bar_enabled,
"Enable status bar",
)
.search_tag(&["status_bar_enabled"])
.on_hover_text("Show a configurable status bar with widgets")
.changed()
{
settings.has_changes = true;
*changes_this_frame = true;
}
ui.add_space(8.0);
crate::dependent::dependent(
ui,
settings.config.status_bar.status_bar_enabled,
"Enable status bar",
|ui| {
// Position dropdown
ui.horizontal(|ui| {
ui.label("Position:");
egui::ComboBox::from_id_salt("status_bar_position")
.selected_text(match settings.config.status_bar.status_bar_position {
StatusBarPosition::Top => "Top",
StatusBarPosition::Bottom => "Bottom",
})
.show_ui(ui, |ui| {
if ui
.selectable_value(
&mut settings.config.status_bar.status_bar_position,
StatusBarPosition::Top,
"Top",
)
.changed()
{
settings.has_changes = true;
*changes_this_frame = true;
}
if ui
.selectable_value(
&mut settings.config.status_bar.status_bar_position,
StatusBarPosition::Bottom,
"Bottom",
)
.changed()
{
settings.has_changes = true;
*changes_this_frame = true;
}
})
.response
.search_tag(&["status_bar_position"]);
});
// Height slider
ui.horizontal(|ui| {
ui.label("Height:");
if ui
.add_sized(
[SLIDER_WIDTH, SLIDER_HEIGHT],
egui::Slider::new(
&mut settings.config.status_bar.status_bar_height,
16.0..=40.0,
)
.suffix(" px")
.show_value(true),
)
.search_tag(&["status_bar_height"])
.on_hover_text("Height of the status bar in logical pixels")
.changed()
{
settings.has_changes = true;
*changes_this_frame = true;
}
crate::reset::reset_button(ui, settings, changes_this_frame, |c| {
&mut c.status_bar.status_bar_height
});
});
},
);
});
}