From ea91de73cc3f8f77fe480bbf789e6bbf68494a28 Mon Sep 17 00:00:00 2001 From: Erik Kundt Date: Fri, 12 Jan 2024 14:39:32 +0100 Subject: [PATCH] lib: Move label builders to widget module --- bin/commands/issue/suite/ui.rs | 42 +++++++++++------------ bin/commands/patch/list/ui.rs | 55 +++++++++++++++--------------- bin/commands/patch/suite/ui.rs | 28 ++++++++-------- src/ui.rs | 61 ++++++++++------------------------ src/ui/widget/context.rs | 24 ++++++------- src/ui/widget/form.rs | 6 ++-- src/ui/widget/label.rs | 29 ++++++++++++++++ src/ui/widget/list.rs | 4 +-- 8 files changed, 125 insertions(+), 124 deletions(-) diff --git a/bin/commands/issue/suite/ui.rs b/bin/commands/issue/suite/ui.rs index 5c2750d3..54ca463a 100644 --- a/bin/commands/issue/suite/ui.rs +++ b/bin/commands/issue/suite/ui.rs @@ -22,7 +22,7 @@ use tui::ui::widget::{Widget, WidgetComponent}; use tui::ui::widget::container::{Container, Tabs}; use tui::ui::widget::context::{ContextBar, Progress}; use tui::ui::widget::form::{Form, TextArea, TextField}; -use tui::ui::widget::label::Textarea; +use tui::ui::widget::label::{self, Textarea}; use tui::ui::widget::list::{ColumnWidth, List, Property, Table}; pub const FORM_ID_EDIT: &str = "edit-form"; @@ -35,13 +35,13 @@ pub struct IssueBrowser { impl IssueBrowser { pub fn new(context: &Context, theme: &Theme, selected: Option<(IssueId, Issue)>) -> Self { let header = [ - tui::ui::label(" ● "), - tui::ui::label("ID"), - tui::ui::label("Title"), - tui::ui::label("Author"), - tui::ui::label("Tags"), - tui::ui::label("Assignees"), - tui::ui::label("Opened"), + label::default(" ● ").style(style::reset_dim()), + label::default("ID").style(style::reset_dim()), + label::default("Title").style(style::reset_dim()), + label::default("Author").style(style::reset_dim()), + label::default("Tags").style(style::reset_dim()), + label::default("Assignees").style(style::reset_dim()), + label::default("Opened").style(style::reset_dim()), ]; let widths = [ @@ -172,8 +172,8 @@ impl IssueHeader { let item = IssueItem::from((context.profile(), repo, id, issue.clone())); let title = Property::new( - tui::ui::label("Title").style(style::cyan()), - tui::ui::label(item.title()).style(style::reset()), + label::default("Title").style(style::cyan()), + label::default(item.title()).style(style::reset()), ); let author_style = match alias { @@ -181,23 +181,23 @@ impl IssueHeader { None => style::magenta_dim(), }; - let author = tui::ui::label(&cob::format_author(issue.author().id(), &alias, by_you)) + let author = label::default(&cob::format_author(issue.author().id(), &alias, by_you)) .style(author_style); - let author = Property::new(tui::ui::label("Author").style(style::cyan()), author); + let author = Property::new(label::default("Author").style(style::cyan()), author); let issue_id = Property::new( - tui::ui::label("Issue").style(style::cyan()), - tui::ui::label(&id.to_string()).style(style::gray()), + label::default("Issue").style(style::cyan()), + label::default(&id.to_string()).style(style::gray()), ); let labels = Property::new( - tui::ui::label("Labels").style(style::cyan()), - tui::ui::label(&cob::format_labels(item.labels())).style(style::lightblue()), + label::default("Labels").style(style::cyan()), + label::default(&cob::format_labels(item.labels())).style(style::lightblue()), ); let assignees = Property::new( - tui::ui::label("Assignees").style(style::cyan()), - tui::ui::label(&cob::format_assignees( + label::default("Assignees").style(style::cyan()), + label::default(&cob::format_assignees( &item .assignees() .iter() @@ -208,8 +208,8 @@ impl IssueHeader { ); let state = Property::new( - tui::ui::label("Status").style(style::cyan()), - tui::ui::label(&item.state().to_string()).style(style::reset()), + label::default("Status").style(style::cyan()), + label::default(&item.state().to_string()).style(style::reset()), ); let table = tui::ui::property_table( @@ -330,7 +330,7 @@ impl WidgetComponent for CommentBody { pub fn list_navigation(theme: &Theme) -> Widget { tui::ui::tabs( theme, - vec![tui::ui::reversable_label("Issues").style(style::magenta())], + vec![label::reversable("Issues").style(style::magenta())], ) } diff --git a/bin/commands/patch/list/ui.rs b/bin/commands/patch/list/ui.rs index 1f97b062..a515c33d 100644 --- a/bin/commands/patch/list/ui.rs +++ b/bin/commands/patch/list/ui.rs @@ -13,6 +13,7 @@ use tui::ui::widget::{Widget, WidgetComponent}; use tui::ui::widget::container::Tabs; use tui::ui::widget::context::{ContextBar, Progress}; +use tui::ui::widget::label::{self}; use tui::ui::widget::list::{ColumnWidth, Table}; pub struct PatchBrowser { @@ -23,14 +24,14 @@ pub struct PatchBrowser { impl PatchBrowser { pub fn new(context: &Context, theme: &Theme, selected: Option<(PatchId, Patch)>) -> Self { let header = [ - tui::ui::label(" ● ").style(style::reset_dim()), - tui::ui::label("ID").style(style::reset_dim()), - tui::ui::label("Title").style(style::reset_dim()), - tui::ui::label("Author").style(style::reset_dim()), - tui::ui::label("Head").style(style::reset_dim()), - tui::ui::label("+").style(style::reset_dim()), - tui::ui::label("-").style(style::reset_dim()), - tui::ui::label("Updated").style(style::reset_dim()), + label::default(" ● ").style(style::reset_dim()), + label::default("ID").style(style::reset_dim()), + label::default("Title").style(style::reset_dim()), + label::default("Author").style(style::reset_dim()), + label::default("Head").style(style::reset_dim()), + label::default("+").style(style::reset_dim()), + label::default("-").style(style::reset_dim()), + label::default("Updated").style(style::reset_dim()), ]; let widths = [ @@ -96,7 +97,7 @@ impl WidgetComponent for PatchBrowser { pub fn list_navigation(theme: &Theme) -> Widget { tui::ui::tabs( theme, - vec![tui::ui::reversable_label("Patches").style(style::cyan())], + vec![label::reversable("Patches").style(style::cyan())], ) } @@ -110,7 +111,6 @@ pub fn patches( pub fn browse_context(context: &Context, _theme: &Theme, progress: Progress) -> Widget { use radicle::cob::patch::State; - use tui::ui::{label, label_group}; let mut draft = 0; let mut open = 0; @@ -130,29 +130,30 @@ pub fn browse_context(context: &Context, _theme: &Theme, progress: Progress) -> } } - let context = label(" Patches ").style(style::magenta_reversed()); - let divider = label(" | ").style(style::default_reversed()); + let context = label::default(" Patches ").style(style::magenta_reversed()); + let divider = label::default(" | ").style(style::default_reversed()); - let draft_n = label(&format!("{draft}")).style(style::default_reversed()); - let draft = label(" Draft").style(style::default_reversed()); + let draft_n = label::default(&format!("{draft}")).style(style::default_reversed()); + let draft = label::default(" Draft").style(style::default_reversed()); - let open_n = label(&format!("{open}")).style(style::green_default_reversed()); - let open = label(" Open").style(style::default_reversed()); + let open_n = label::default(&format!("{open}")).style(style::green_default_reversed()); + let open = label::default(" Open").style(style::default_reversed()); - let archived_n = label(&format!("{archived}")).style(style::yellow_default_reversed()); - let archived = label(" Archived").style(style::default_reversed()); + let archived_n = label::default(&format!("{archived}")).style(style::yellow_default_reversed()); + let archived = label::default(" Archived").style(style::default_reversed()); - let merged_n = label(&format!("{merged}")).style(style::cyan_default_reversed()); - let merged = label(" Merged ").style(style::default_reversed()); + let merged_n = label::default(&format!("{merged}")).style(style::cyan_default_reversed()); + let merged = label::default(" Merged ").style(style::default_reversed()); - let progress = label(&format!(" {} ", progress.to_string())).style(style::magenta_reversed()); - let spacer = label("").style(style::default_reversed()); + let progress = + label::default(&format!(" {} ", progress.to_string())).style(style::magenta_reversed()); + let spacer = label::default("").style(style::default_reversed()); let context_bar = ContextBar::new( - label_group(&[context]), - label_group(&[spacer.clone()]), - label_group(&[spacer]), - label_group(&[ + label::group(&[context]), + label::group(&[spacer.clone()]), + label::group(&[spacer]), + label::group(&[ draft_n, draft, divider.clone(), @@ -165,7 +166,7 @@ pub fn browse_context(context: &Context, _theme: &Theme, progress: Progress) -> merged_n, merged, ]), - label_group(&[progress]), + label::group(&[progress]), ); Widget::new(context_bar).height(1) diff --git a/bin/commands/patch/suite/ui.rs b/bin/commands/patch/suite/ui.rs index 17c4aa7c..0a15065a 100644 --- a/bin/commands/patch/suite/ui.rs +++ b/bin/commands/patch/suite/ui.rs @@ -16,7 +16,7 @@ use tui::ui::widget::{Widget, WidgetComponent}; use tui::ui::widget::container::Tabs; use tui::ui::widget::context::{ContextBar, Progress}; -use tui::ui::widget::label::Label; +use tui::ui::widget::label::{self, Label}; use tui::ui::widget::list::{ColumnWidth, Table}; pub struct PatchBrowser { @@ -27,14 +27,14 @@ pub struct PatchBrowser { impl PatchBrowser { pub fn new(context: &Context, theme: &Theme, selected: Option<(PatchId, Patch)>) -> Self { let header = [ - tui::ui::label(" ● "), - tui::ui::label("ID"), - tui::ui::label("Title"), - tui::ui::label("Author"), - tui::ui::label("Head"), - tui::ui::label("+"), - tui::ui::label("-"), - tui::ui::label("Updated"), + label::default(" ● ").style(style::reset_dim()), + label::default("ID").style(style::reset_dim()), + label::default("Title").style(style::reset_dim()), + label::default("Author").style(style::reset_dim()), + label::default("Head").style(style::reset_dim()), + label::default("+").style(style::reset_dim()), + label::default("-").style(style::reset_dim()), + label::default("Updated").style(style::reset_dim()), ]; let widths = [ @@ -162,7 +162,7 @@ impl WidgetComponent for Files { pub fn list_navigation(theme: &Theme) -> Widget { tui::ui::tabs( theme, - vec![tui::ui::reversable_label("Patches").style(style::magenta())], + vec![label::reversable("Patches").style(style::magenta())], ) } @@ -170,8 +170,8 @@ pub fn navigation(theme: &Theme) -> Widget { tui::ui::tabs( theme, vec![ - tui::ui::reversable_label("Activity").style(style::magenta()), - tui::ui::reversable_label("Files").style(style::magenta()), + label::reversable("Activity").style(style::magenta()), + label::reversable("Files").style(style::magenta()), ], ) } @@ -185,14 +185,14 @@ pub fn patches( } pub fn activity(_theme: &Theme) -> Widget { - let not_implemented = tui::ui::label("not implemented").style(style::reset()); + let not_implemented = label::default("not implemented").style(style::reset()); let activity = Activity::new(not_implemented); Widget::new(activity) } pub fn files(_theme: &Theme) -> Widget { - let not_implemented = tui::ui::label("not implemented").style(style::reset()); + let not_implemented = label::default("not implemented").style(style::reset()); let files = Files::new(not_implemented); Widget::new(files) diff --git a/src/ui.rs b/src/ui.rs index 8b42618b..5447e852 100644 --- a/src/ui.rs +++ b/src/ui.rs @@ -14,13 +14,11 @@ use widget::container::{ VerticalLine, }; use widget::context::{Shortcut, Shortcuts}; -use widget::label::{Label, Textarea}; +use widget::label::{self, Label, Textarea}; use widget::list::{ColumnWidth, Property, PropertyList, PropertyTable}; - use widget::Widget; -use self::theme::{style, Theme}; -use self::widget::label::LabelGroup; +use theme::{style, Theme}; use super::context::Context; @@ -28,35 +26,6 @@ pub fn global_listener() -> Widget { Widget::new(GlobalListener::default()) } -pub fn label(content: &str) -> Widget