ui.rs 914 B

12345678910111213141516171819202122232425262728293031
  1. use crate::app::App;
  2. use tui::{
  3. backend::Backend,
  4. style::{Color, Modifier, Style},
  5. text::{Spans},
  6. widgets::{Block, Borders, List, ListItem},
  7. Frame,
  8. };
  9. pub fn ui<B: Backend>(f: &mut Frame<B>, app: &mut App) {
  10. let size = f.size();
  11. let items: Vec<ListItem> = app
  12. .nodes
  13. .items
  14. .iter()
  15. .map(|i| {
  16. let lines = vec![Spans::from(i.to_string())];
  17. ListItem::new(lines).style(Style::default())
  18. })
  19. .collect();
  20. // Create a List from all list items and highlight the currently selected one
  21. let items = List::new(items)
  22. .block(Block::default().borders(Borders::ALL).title("List of nodes"))
  23. .highlight_style(Style::default().bg(Color::Black).add_modifier(Modifier::BOLD))
  24. .highlight_symbol(">> ");
  25. // Render the item list
  26. f.render_stateful_widget(items, size, &mut app.nodes.state);
  27. }