From 2a02c3db28edc1df5cb217721bccca0c681001ad Mon Sep 17 00:00:00 2001 From: ClementTsang <34804052+ClementTsang@users.noreply.github.com> Date: Tue, 30 Jul 2024 20:30:45 -0400 Subject: [PATCH 1/4] feature: support italic text styling --- src/options/config/style.rs | 4 ++++ src/options/config/style/utils.rs | 19 +++++++++++++++++-- tests/valid_configs/styling.toml | 7 +++++++ 3 files changed, 28 insertions(+), 2 deletions(-) diff --git a/src/options/config/style.rs b/src/options/config/style.rs index 52ec804fe..f57d8f0c5 100644 --- a/src/options/config/style.rs +++ b/src/options/config/style.rs @@ -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, + + /// Whether to make this text italicized or not. If not set, + /// will default to built-in defaults. + italics: Option, }, } diff --git a/src/options/config/style/utils.rs b/src/options/config/style/utils.rs index bb5d283c0..eaded70f9 100644 --- a/src/options/config/style/utils.rs +++ b/src/options/config/style/utils.rs @@ -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(()) } diff --git a/tests/valid_configs/styling.toml b/tests/valid_configs/styling.toml index 8560c1aa9..cba3152ed 100644 --- a/tests/valid_configs/styling.toml +++ b/tests/valid_configs/styling.toml @@ -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" From b824ba9b5920919c8be3aa373ec20755283e27c1 Mon Sep 17 00:00:00 2001 From: ClementTsang <34804052+ClementTsang@users.noreply.github.com> Date: Tue, 30 Jul 2024 20:31:16 -0400 Subject: [PATCH 2/4] update changelog --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6c45d7176..0f58cca01 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -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 From aa4421296c72736d571f71e3eb3ff87b56bfc094 Mon Sep 17 00:00:00 2001 From: ClementTsang <34804052+ClementTsang@users.noreply.github.com> Date: Tue, 30 Jul 2024 20:32:21 -0400 Subject: [PATCH 3/4] update schema --- schema/nightly/bottom.json | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/schema/nightly/bottom.json b/schema/nightly/bottom.json index 370cfc868..d109e0114 100644 --- a/schema/nightly/bottom.json +++ b/schema/nightly/bottom.json @@ -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" + ] } } } From 43094f8af703850ab6da1c027d2b978ff04c274a Mon Sep 17 00:00:00 2001 From: ClementTsang <34804052+ClementTsang@users.noreply.github.com> Date: Tue, 30 Jul 2024 20:36:30 -0400 Subject: [PATCH 4/4] update changelog --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0f58cca01..503f9bc95 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -48,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.