Settings re-org

This commit is contained in:
Jeremy Soller 2024-01-31 10:29:35 -07:00
parent 2e691121d5
commit ff6ad163d6
No known key found for this signature in database
GPG key ID: D02FD439211AF56F
2 changed files with 105 additions and 85 deletions

View file

@ -2,7 +2,6 @@
## Settings ## Settings
settings = Settings settings = Settings
focus-follow-mouse = Focus Follow Mouse
### Appearance ### Appearance
appearance = Appearance appearance = Appearance
@ -10,17 +9,29 @@ theme = Theme
match-desktop = Match desktop match-desktop = Match desktop
dark = Dark dark = Dark
light = Light light = Light
syntax-dark = Syntax dark syntax-dark = Color scheme dark
syntax-light = Syntax light syntax-light = Color scheme light
default-zoom-step = Zoom steps
### Font
font = Font
advanced-font-settings = Advanced Font Settings advanced-font-settings = Advanced Font Settings
default-font = Default font default-font = Font
default-font-stretch = Default font stretch default-font-size = Font size
default-font-weight = Default font weight default-font-stretch = Font stretch
default-dim-font-weight = Default dim font weight default-font-weight = Normal font weight
default-bold-font-weight = Default bold font weight default-dim-font-weight = Dim font weight
use-bright-bold = Use bright colors with bold text default-bold-font-weight = Bold font weight
default-font-size = Default font size use-bright-bold = Make bold text brighter
default-zoom-step = Default zoom step
### Splits
splits = Splits
focus-follow-mouse = Typing focus follows mouse
### Advanced
advanced = Advanced
show-headerbar = Show header
show-header-description = Reveal the header from the right-click menu.
# Find # Find
find-placeholder = Find... find-placeholder = Find...
@ -54,6 +65,3 @@ split-horizontal = Split horizontal
split-vertical = Split vertical split-vertical = Split vertical
pane-toggle-maximize = Toggle maximized pane-toggle-maximize = Toggle maximized
menu-settings = Settings... menu-settings = Settings...
# Context menu
show-headerbar = Show header bar

View file

@ -525,6 +525,67 @@ impl App {
.iter() .iter()
.position(|zoom_step| zoom_step == &self.config.font_size_zoom_step_mul_100); .position(|zoom_step| zoom_step == &self.config.font_size_zoom_step_mul_100);
let appearance_section = widget::settings::view_section(fl!("appearance"))
.add(
widget::settings::item::builder(fl!("theme")).control(widget::dropdown(
&self.app_themes,
Some(app_theme_selected),
move |index| {
Message::AppTheme(match index {
1 => AppTheme::Dark,
2 => AppTheme::Light,
_ => AppTheme::System,
})
},
)),
)
.add(
//TODO: rename to color-scheme-dark?
widget::settings::item::builder(fl!("syntax-dark")).control(widget::dropdown(
&self.theme_names,
dark_selected,
move |index| Message::SyntaxTheme(index, true),
)),
)
.add(
//TODO: rename to color-scheme-light?
widget::settings::item::builder(fl!("syntax-light")).control(widget::dropdown(
&self.theme_names,
light_selected,
move |index| Message::SyntaxTheme(index, false),
)),
)
.add(
widget::settings::item::builder(fl!("default-zoom-step")).control(
widget::dropdown(&self.zoom_step_names, zoom_step_selected, |index| {
Message::DefaultZoomStep(index)
}),
),
);
//TODO: background opacity
let mut font_section = widget::settings::view_section(fl!("font"))
.add(
widget::settings::item::builder(fl!("default-font")).control(widget::dropdown(
&self.font_names,
font_selected,
|index| Message::DefaultFont(index),
)),
)
.add(
widget::settings::item::builder(fl!("default-font-size")).control(
widget::dropdown(&self.font_size_names, font_size_selected, |index| {
Message::DefaultFontSize(index)
}),
),
)
.add(
widget::settings::item::builder(fl!("advanced-font-settings")).toggler(
self.show_advanced_font_settings,
Message::ShowAdvancedFontSettings,
),
);
let advanced_font_settings = || { let advanced_font_settings = || {
let section = widget::settings::view_section("") let section = widget::settings::view_section("")
.add( .add(
@ -562,6 +623,10 @@ impl App {
|index| Message::DefaultBoldFontWeight(index), |index| Message::DefaultBoldFontWeight(index),
), ),
), ),
)
.add(
widget::settings::item::builder(fl!("use-bright-bold"))
.toggler(self.config.use_bright_bold, Message::UseBrightBold),
); );
let padding = Padding { let padding = Padding {
top: 0.0, top: 0.0,
@ -572,81 +637,28 @@ impl App {
widget::container(section).padding(padding) widget::container(section).padding(padding)
}; };
let mut settings_view = widget::settings::view_section(fl!("appearance"))
.add(
widget::settings::item::builder(fl!("theme")).control(widget::dropdown(
&self.app_themes,
Some(app_theme_selected),
move |index| {
Message::AppTheme(match index {
1 => AppTheme::Dark,
2 => AppTheme::Light,
_ => AppTheme::System,
})
},
)),
)
.add(
widget::settings::item::builder(fl!("syntax-dark")).control(widget::dropdown(
&self.theme_names,
dark_selected,
move |index| Message::SyntaxTheme(index, true),
)),
)
.add(
widget::settings::item::builder(fl!("syntax-light")).control(widget::dropdown(
&self.theme_names,
light_selected,
move |index| Message::SyntaxTheme(index, false),
)),
)
.add(
widget::settings::item::builder(fl!("default-font")).control(widget::dropdown(
&self.font_names,
font_selected,
|index| Message::DefaultFont(index),
)),
)
.add(
widget::settings::item::builder(fl!("advanced-font-settings")).toggler(
self.show_advanced_font_settings,
Message::ShowAdvancedFontSettings,
),
);
if self.show_advanced_font_settings { if self.show_advanced_font_settings {
settings_view = settings_view.add(advanced_font_settings()); font_section = font_section.add(advanced_font_settings());
} }
let settings_view = settings_view let splits_section = widget::settings::view_section(fl!("splits")).add(
.add( widget::settings::item::builder(fl!("focus-follow-mouse"))
widget::settings::item::builder(fl!("use-bright-bold")) .toggler(self.config.focus_follow_mouse, Message::FocusFollowMouse),
.toggler(self.config.use_bright_bold, Message::UseBrightBold), );
)
.add(
widget::settings::item::builder(fl!("default-font-size")).control(
widget::dropdown(&self.font_size_names, font_size_selected, |index| {
Message::DefaultFontSize(index)
}),
),
)
.add(
widget::settings::item::builder(fl!("default-zoom-step")).control(
widget::dropdown(&self.zoom_step_names, zoom_step_selected, |index| {
Message::DefaultZoomStep(index)
}),
),
)
.add(
widget::settings::item::builder(fl!("show-headerbar"))
.toggler(self.config.show_headerbar, Message::ShowHeaderBar),
)
.add(
widget::settings::item::builder(fl!("focus-follow-mouse"))
.toggler(self.config.focus_follow_mouse, Message::FocusFollowMouse),
);
widget::settings::view_column(vec![settings_view.into()]).into() let advanced_section = widget::settings::view_section(fl!("advanced")).add(
widget::settings::item::builder(fl!("show-headerbar"))
.description(fl!("show-header-description"))
.toggler(self.config.show_headerbar, Message::ShowHeaderBar),
);
widget::settings::view_column(vec![
appearance_section.into(),
font_section.into(),
splits_section.into(),
advanced_section.into(),
])
.into()
} }
fn create_and_focus_new_terminal(&mut self, pane: pane_grid::Pane) { fn create_and_focus_new_terminal(&mut self, pane: pane_grid::Pane) {