Consider stretch/weight settings advanced and hide them with a toggle
Signed-off-by: Mohammad AlSaleh <CE.Mohammad.AlSaleh@gmail.com>
This commit is contained in:
parent
59804dc8ab
commit
4ec3e5b2f3
2 changed files with 55 additions and 26 deletions
|
|
@ -11,6 +11,7 @@ dark = Dark
|
||||||
light = Light
|
light = Light
|
||||||
syntax-dark = Syntax dark
|
syntax-dark = Syntax dark
|
||||||
syntax-light = Syntax light
|
syntax-light = Syntax light
|
||||||
|
advanced-font-settings = Advanced Font Settings
|
||||||
default-font = Default font
|
default-font = Default font
|
||||||
default-font-stretch = Default font stretch
|
default-font-stretch = Default font stretch
|
||||||
default-font-weight = Default font weight
|
default-font-weight = Default font weight
|
||||||
|
|
|
||||||
80
src/main.rs
80
src/main.rs
|
|
@ -14,7 +14,7 @@ use cosmic::{
|
||||||
futures::SinkExt,
|
futures::SinkExt,
|
||||||
keyboard::{Event as KeyEvent, KeyCode, Modifiers},
|
keyboard::{Event as KeyEvent, KeyCode, Modifiers},
|
||||||
subscription::{self, Subscription},
|
subscription::{self, Subscription},
|
||||||
window, Event, Length, Point,
|
window, Event, Length, Point, Padding,
|
||||||
},
|
},
|
||||||
style,
|
style,
|
||||||
widget::{self, segmented_button},
|
widget::{self, segmented_button},
|
||||||
|
|
@ -159,6 +159,7 @@ pub enum Message {
|
||||||
TermEventTx(mpsc::Sender<(segmented_button::Entity, TermEvent)>),
|
TermEventTx(mpsc::Sender<(segmented_button::Entity, TermEvent)>),
|
||||||
Todo(&'static str),
|
Todo(&'static str),
|
||||||
ToggleContextPage(ContextPage),
|
ToggleContextPage(ContextPage),
|
||||||
|
ShowAdvancedFontSettings(bool),
|
||||||
WindowClose,
|
WindowClose,
|
||||||
WindowNew,
|
WindowNew,
|
||||||
ZoomIn,
|
ZoomIn,
|
||||||
|
|
@ -204,6 +205,7 @@ pub struct App {
|
||||||
context_page: ContextPage,
|
context_page: ContextPage,
|
||||||
term_event_tx_opt: Option<mpsc::Sender<(segmented_button::Entity, TermEvent)>>,
|
term_event_tx_opt: Option<mpsc::Sender<(segmented_button::Entity, TermEvent)>>,
|
||||||
term_config: TermConfig,
|
term_config: TermConfig,
|
||||||
|
show_advanced_font_settings: bool,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl App {
|
impl App {
|
||||||
|
|
@ -346,7 +348,40 @@ impl App {
|
||||||
.zoom_steps
|
.zoom_steps
|
||||||
.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);
|
||||||
widget::settings::view_column(vec![widget::settings::view_section(fl!("appearance"))
|
|
||||||
|
let advanced_font_settings = || {
|
||||||
|
let section = widget::settings::view_section("")
|
||||||
|
.add(
|
||||||
|
widget::settings::item::builder(fl!("default-font-stretch")).control(
|
||||||
|
widget::dropdown(&self.curr_font_stretch_names, font_stretch_selected, |index| {
|
||||||
|
Message::DefaultFontStretch(index)
|
||||||
|
}),
|
||||||
|
),
|
||||||
|
)
|
||||||
|
.add(
|
||||||
|
widget::settings::item::builder(fl!("default-font-weight")).control(
|
||||||
|
widget::dropdown(&self.curr_font_weight_names, font_weight_selected, |index| {
|
||||||
|
Message::DefaultFontWeight(index)
|
||||||
|
}),
|
||||||
|
),
|
||||||
|
)
|
||||||
|
.add(
|
||||||
|
widget::settings::item::builder(fl!("default-bold-font-weight")).control(
|
||||||
|
widget::dropdown(&self.curr_font_weight_names, bold_font_weight_selected, |index| {
|
||||||
|
Message::DefaultBoldFontWeight(index)
|
||||||
|
}),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
let padding = Padding {
|
||||||
|
top: 0.0,
|
||||||
|
bottom: 0.0,
|
||||||
|
left: 12.0,
|
||||||
|
right: 12.0,
|
||||||
|
};
|
||||||
|
widget::container(section).padding(padding)
|
||||||
|
};
|
||||||
|
|
||||||
|
let mut settings_view = widget::settings::view_section(fl!("appearance"))
|
||||||
.add(
|
.add(
|
||||||
widget::settings::item::builder(fl!("theme")).control(widget::dropdown(
|
widget::settings::item::builder(fl!("theme")).control(widget::dropdown(
|
||||||
&self.app_themes,
|
&self.app_themes,
|
||||||
|
|
@ -381,6 +416,16 @@ impl App {
|
||||||
|index| Message::DefaultFont(index),
|
|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 {
|
||||||
|
settings_view = settings_view.add(advanced_font_settings());
|
||||||
|
}
|
||||||
|
|
||||||
|
let settings_view = settings_view
|
||||||
.add(
|
.add(
|
||||||
widget::settings::item::builder(fl!("default-font-size")).control(
|
widget::settings::item::builder(fl!("default-font-size")).control(
|
||||||
widget::dropdown(&self.font_size_names, font_size_selected, |index| {
|
widget::dropdown(&self.font_size_names, font_size_selected, |index| {
|
||||||
|
|
@ -395,33 +440,12 @@ impl App {
|
||||||
}),
|
}),
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
.add(
|
|
||||||
widget::settings::item::builder(fl!("default-font-stretch")).control(
|
|
||||||
widget::dropdown(&self.curr_font_stretch_names, font_stretch_selected, |index| {
|
|
||||||
Message::DefaultFontStretch(index)
|
|
||||||
}),
|
|
||||||
),
|
|
||||||
)
|
|
||||||
.add(
|
|
||||||
widget::settings::item::builder(fl!("default-font-weight")).control(
|
|
||||||
widget::dropdown(&self.curr_font_weight_names, font_weight_selected, |index| {
|
|
||||||
Message::DefaultFontWeight(index)
|
|
||||||
}),
|
|
||||||
),
|
|
||||||
)
|
|
||||||
.add(
|
|
||||||
widget::settings::item::builder(fl!("default-bold-font-weight")).control(
|
|
||||||
widget::dropdown(&self.curr_font_weight_names, bold_font_weight_selected, |index| {
|
|
||||||
Message::DefaultBoldFontWeight(index)
|
|
||||||
}),
|
|
||||||
),
|
|
||||||
)
|
|
||||||
.add(
|
.add(
|
||||||
widget::settings::item::builder(fl!("show-headerbar"))
|
widget::settings::item::builder(fl!("show-headerbar"))
|
||||||
.toggler(self.config.show_headerbar, Message::ShowHeaderBar),
|
.toggler(self.config.show_headerbar, Message::ShowHeaderBar),
|
||||||
)
|
);
|
||||||
.into()])
|
|
||||||
.into()
|
widget::settings::view_column(vec![settings_view.into()]).into()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -570,6 +594,7 @@ impl Application for App {
|
||||||
context_page: ContextPage::Settings,
|
context_page: ContextPage::Settings,
|
||||||
term_config: flags.term_config,
|
term_config: flags.term_config,
|
||||||
term_event_tx_opt: None,
|
term_event_tx_opt: None,
|
||||||
|
show_advanced_font_settings: false,
|
||||||
};
|
};
|
||||||
|
|
||||||
app.set_curr_font_weights_and_stretches();
|
app.set_curr_font_weights_and_stretches();
|
||||||
|
|
@ -870,6 +895,9 @@ impl Application for App {
|
||||||
}
|
}
|
||||||
self.set_context_title(context_page.title());
|
self.set_context_title(context_page.title());
|
||||||
}
|
}
|
||||||
|
Message::ShowAdvancedFontSettings(show) => {
|
||||||
|
self.show_advanced_font_settings = show;
|
||||||
|
},
|
||||||
Message::WindowClose => {
|
Message::WindowClose => {
|
||||||
return window::close(window::Id::MAIN);
|
return window::close(window::Id::MAIN);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue