Radish alpha
r
Radicle terminal user interface
Radicle
Git (anonymous pull)
Log in to clone via SSH
lib: Moves table / tree item traits
Erik Kundt committed 1 year ago
commit f3fd9ee85a049a8f1e38f13ed73ff9c638604ae2
parent d32b4e15b56be470058e88dc62a69bd08af248b2
4 files changed +21 -22
modified src/ui.rs
@@ -7,6 +7,9 @@ pub mod theme;

use ratatui::layout::Constraint;
use ratatui::text::Text;
+
use ratatui::widgets::Cell;
+

+
use tui_tree_widget::TreeItem;

pub const RENDER_WIDTH_XSMALL: usize = 50;
pub const RENDER_WIDTH_SMALL: usize = 70;
@@ -90,3 +93,16 @@ impl<'a> Column<'a> {
        }
    }
}
+

+
/// Needs to be implemented for items that are supposed to be rendered in tables.
+
pub trait ToRow<const W: usize> {
+
    fn to_row(&self) -> [Cell; W];
+
}
+

+
/// Needs to be implemented for items that are supposed to be rendered in trees.
+
pub trait ToTree<Id>
+
where
+
    Id: ToString,
+
{
+
    fn rows(&self) -> Vec<TreeItem<'_, Id>>;
+
}
modified src/ui/im.rs
@@ -20,9 +20,8 @@ use crate::event::Event;
use crate::store::State;
use crate::task::Interrupted;
use crate::terminal;
-
use crate::ui::rm::widget::list::ToRow;
use crate::ui::theme::Theme;
-
use crate::ui::Column;
+
use crate::ui::{Column, ToRow};

use crate::ui::im::widget::{HeaderedTable, Widget};

modified src/ui/im/widget.rs
@@ -9,10 +9,9 @@ use ratatui::{layout::Constraint, widgets::Paragraph};
use termion::event::Key;

use crate::ui::ext::{FooterBlock, FooterBlockType, HeaderBlock};
-
use crate::ui::rm::widget::list::ToRow;
use crate::ui::theme::style;
-
use crate::ui::Column;
use crate::ui::{layout, span};
+
use crate::ui::{Column, ToRow};

use super::{Borders, Context, InnerResponse, Response, Ui};

modified src/ui/rm/widget/list.rs
@@ -10,33 +10,18 @@ use ratatui::style::{Style, Stylize};
use ratatui::symbols::border;
use ratatui::text::Text;
use ratatui::widgets::TableState;
-
use ratatui::widgets::{
-
    Block, Borders, Cell, Row, Scrollbar, ScrollbarOrientation, ScrollbarState,
-
};
+
use ratatui::widgets::{Block, Borders, Row, Scrollbar, ScrollbarOrientation, ScrollbarState};
use ratatui::Frame;

-
use tui_tree_widget::{TreeItem, TreeState};
+
use tui_tree_widget::TreeState;

use crate::ui::theme::style;
-
use crate::ui::Column;
use crate::ui::{layout, span};
+
use crate::ui::{Column, ToRow, ToTree};

use super::{utils, ViewProps, ViewState};
use super::{RenderProps, View};

-
/// Needs to be implemented for items that are supposed to be rendered in tables.
-
pub trait ToRow<const W: usize> {
-
    fn to_row(&self) -> [Cell; W];
-
}
-

-
/// Needs to be implemented for items that are supposed to be rendered in trees.
-
pub trait ToTree<Id>
-
where
-
    Id: ToString,
-
{
-
    fn rows(&self) -> Vec<TreeItem<'_, Id>>;
-
}
-

#[derive(Clone, Debug)]
pub struct TableProps<'a, R, const W: usize>
where