mirror of
https://github.com/ClementTsang/bottom
synced 2024-11-25 05:30:22 +00:00
feature: support italic text styling (#1514)
Support italics as a text styling option.
This commit is contained in:
parent
c77256eaaf
commit
4b14ccb56b
5 changed files with 37 additions and 3 deletions
|
@ -13,6 +13,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|||
- [#1353](https://github.com/ClementTsang/bottom/pull/1353): Support selecting the average CPU graph as a default.
|
||||
- [#1430](https://github.com/ClementTsang/bottom/pull/1430): Support controlling the graph legend position for memory and network graph widgets.
|
||||
- [#1512](https://github.com/ClementTsang/bottom/pull/1512): Support bold text styling options.
|
||||
- [#1514](https://github.com/ClementTsang/bottom/pull/1514): Support italic text styling options.
|
||||
|
||||
### Changes
|
||||
|
||||
|
@ -47,7 +48,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|||
|
||||
## [0.9.7] - 2023-08-26
|
||||
|
||||
## Other
|
||||
## Bug Fixes
|
||||
|
||||
- [#1500](https://github.com/ClementTsang/bottom/issues/1500): Fix builds for Rust 1.80.
|
||||
|
||||
|
|
|
@ -912,6 +912,13 @@
|
|||
"type": "null"
|
||||
}
|
||||
]
|
||||
},
|
||||
"italics": {
|
||||
"description": "Whether to make this text italicized or not. If not set, will default to built-in defaults.",
|
||||
"type": [
|
||||
"boolean",
|
||||
"null"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -49,6 +49,10 @@ pub(crate) enum TextStyleConfig {
|
|||
/// Whether to make this text bolded or not. If not set,
|
||||
/// will default to built-in defaults.
|
||||
bold: Option<bool>,
|
||||
|
||||
/// Whether to make this text italicized or not. If not set,
|
||||
/// will default to built-in defaults.
|
||||
italics: Option<bool>,
|
||||
},
|
||||
}
|
||||
|
||||
|
|
|
@ -148,7 +148,7 @@ macro_rules! set_style {
|
|||
})?
|
||||
);
|
||||
}
|
||||
TextStyleConfig::TextStyle {color, bg_color, bold} => {
|
||||
TextStyleConfig::TextStyle {color, bg_color, bold, italics} => {
|
||||
if let Some(fg) = &color {
|
||||
$palette_field = $palette_field.fg(
|
||||
crate::options::config::style::utils::str_to_colour(&fg.0)
|
||||
|
@ -188,6 +188,14 @@ macro_rules! set_style {
|
|||
$palette_field = $palette_field.remove_modifier(tui::style::Modifier::BOLD);
|
||||
}
|
||||
}
|
||||
|
||||
if let Some(italics) = &italics {
|
||||
if *italics {
|
||||
$palette_field = $palette_field.add_modifier(tui::style::Modifier::ITALIC);
|
||||
} else {
|
||||
$palette_field = $palette_field.remove_modifier(tui::style::Modifier::ITALIC);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -435,16 +443,19 @@ mod test {
|
|||
color: None,
|
||||
bg_color: None,
|
||||
bold: None,
|
||||
italics: None,
|
||||
}),
|
||||
text_c: Some(TextStyleConfig::TextStyle {
|
||||
color: Some(ColorStr("magenta".into())),
|
||||
bg_color: Some(ColorStr("255, 255, 255".into())),
|
||||
bold: Some(true),
|
||||
italics: Some(false),
|
||||
}),
|
||||
text_d: Some(TextStyleConfig::TextStyle {
|
||||
color: Some(ColorStr("#fff".into())),
|
||||
bg_color: Some(ColorStr("1, 1, 1".into())),
|
||||
bold: Some(false),
|
||||
italics: Some(true),
|
||||
}),
|
||||
text_e: None,
|
||||
bad_color: Some(ColorStr("asdf".into())),
|
||||
|
@ -457,11 +468,13 @@ mod test {
|
|||
color: Some(ColorStr("asdf".into())),
|
||||
bg_color: None,
|
||||
bold: None,
|
||||
italics: None,
|
||||
}),
|
||||
bad_text_b: Some(TextStyleConfig::TextStyle {
|
||||
color: None,
|
||||
bg_color: Some(ColorStr("asdf".into())),
|
||||
bold: None,
|
||||
italics: None,
|
||||
}),
|
||||
}
|
||||
}
|
||||
|
@ -562,11 +575,13 @@ mod test {
|
|||
assert_eq!(s.fg.unwrap(), Color::Magenta);
|
||||
assert_eq!(s.bg.unwrap(), Color::Rgb(255, 255, 255));
|
||||
assert!(s.add_modifier.contains(Modifier::BOLD));
|
||||
assert!(!s.add_modifier.contains(Modifier::ITALIC));
|
||||
|
||||
set_style!(s, &dummy.inner, text_d);
|
||||
assert_eq!(s.fg.unwrap(), Color::Rgb(255, 255, 255));
|
||||
assert_eq!(s.bg.unwrap(), Color::Rgb(1, 1, 1));
|
||||
assert!(s.add_modifier.is_empty());
|
||||
assert!(!s.add_modifier.contains(Modifier::BOLD));
|
||||
assert!(s.add_modifier.contains(Modifier::ITALIC));
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
|
|
@ -12,6 +12,13 @@ bold = false
|
|||
[styles.tables]
|
||||
headers = { color = "red", bg_color = "black", bold = true }
|
||||
|
||||
# Test italics
|
||||
[styles.widgets.widget_title]
|
||||
color = "#0f0f0f"
|
||||
bg_color = "#f0f0f0"
|
||||
bold = true
|
||||
italics = true
|
||||
|
||||
# Test using normal colour where inline table can also work
|
||||
[styles.widgets]
|
||||
selected_text = "#fff"
|
||||
|
|
Loading…
Reference in a new issue