Added dynamic render call to Widget, impl for existing widgets

pull/667/head
kroonhorstdino-raldir-hp 2 years ago
parent c8984e5127
commit 736e443c15

@ -101,8 +101,9 @@ where
widget.render(area, self.terminal.current_buffer_mut());
}
pub fn render_widget_dynamic(&mut self, widget : &dyn Widget, area: Rect) {
widget.render(area, self.terminal.current_buffer_mut());
pub fn render_widget_dynamic<W>(&mut self, widget : Box<dyn Widget>, area: Rect)
{
widget.render_dynamic(area, self.terminal.current_buffer_mut());
}
/// Render a [`StatefulWidget`] to the current buffer using [`StatefulWidget::render`].

@ -216,4 +216,8 @@ impl<'a> Widget for BarChart<'a> {
);
}
}
}
fn render_dynamic(self: Box<Self>, area: Rect, buf: &mut Buffer) {
self.render(area, buf);
}
}

@ -235,6 +235,10 @@ impl<'a> Widget for Block<'a> {
buf.set_spans(title_x, title_y, &title, title_area_width);
}
}
fn render_dynamic(self: Box<Self>, area: Rect, buf: &mut Buffer) {
self.render(area, buf);
}
}
#[cfg(test)]
@ -570,4 +574,4 @@ mod tests {
},
);
}
}
}

@ -500,4 +500,8 @@ where
buf.set_spans(x, y, &label.spans, canvas_area.right() - x);
}
}
}
fn render_dynamic(self: Box<Self>, area: Rect, buf: &mut Buffer) {
self.render(area, buf);
}
}

@ -615,6 +615,10 @@ impl<'a> Widget for Chart<'a> {
buf.set_spans(x, y, &title, width);
}
}
fn render_dynamic(self: Box<Self>, area: Rect, buf: &mut Buffer) {
self.render(area, buf);
}
}
#[cfg(test)]
@ -657,4 +661,4 @@ mod tests {
assert_eq!(layout.legend_area, case.legend_area);
}
}
}
}

@ -34,4 +34,8 @@ impl Widget for Clear {
}
}
}
}
fn render_dynamic(self: Box<Self>, area: Rect, buf: &mut Buffer) {
self.render(area, buf);
}
}

@ -142,6 +142,10 @@ impl<'a> Widget for Gauge<'a> {
// set the span
buf.set_span(label_col, label_row, &label, clamped_label_width);
}
fn render_dynamic(self: Box<Self>, area: Rect, buf: &mut Buffer) {
self.render(area, buf);
}
}
fn get_unicode_block<'a>(frac: f64) -> &'a str {
@ -287,6 +291,10 @@ impl<'a> Widget for LineGauge<'a> {
});
}
}
fn render_dynamic(self: Box<Self>, area: Rect, buf: &mut Buffer) {
self.render(area, buf);
}
}
#[cfg(test)]
@ -310,4 +318,4 @@ mod tests {
fn gauge_invalid_ratio_lower_bound() {
Gauge::default().ratio(-0.5);
}
}
}

@ -261,4 +261,8 @@ impl<'a> Widget for List<'a> {
let mut state = ListState::default();
StatefulWidget::render(self, area, buf, &mut state);
}
}
fn render_dynamic(self: Box<Self>, area: Rect, buf: &mut Buffer) {
Widget::render(*self, area, buf);
}
}

@ -64,7 +64,9 @@ bitflags! {
pub trait Widget {
/// Draws the current state of the widget in the given buffer. That is the only method required
/// to implement a custom widget.
fn render(&self, area: Rect, buf: &mut Buffer);
fn render(self, area: Rect, buf: &mut Buffer);
fn render_dynamic(self: Box<Self>, area: Rect, buf: &mut Buffer);
}
/// A `StatefulWidget` is a widget that can take advantage of some local state to remember things

@ -194,4 +194,8 @@ impl<'a> Widget for Paragraph<'a> {
}
}
}
}
fn render_dynamic(self: Box<Self>, area: Rect, buf: &mut Buffer) {
self.render(area, buf);
}
}

@ -131,6 +131,10 @@ impl<'a> Widget for Sparkline<'a> {
}
}
}
fn render_dynamic(self: Box<Self>, area: Rect, buf: &mut Buffer) {
self.render(area, buf);
}
}
#[cfg(test)]
@ -152,4 +156,4 @@ mod tests {
let mut buffer = Buffer::empty(area);
widget.render(area, &mut buffer);
}
}
}

@ -482,6 +482,10 @@ impl<'a> Widget for Table<'a> {
let mut state = TableState::default();
StatefulWidget::render(self, area, buf, &mut state);
}
fn render_dynamic(self: Box<Self>, area: Rect, buf: &mut Buffer) {
Widget::render(*self, area, buf);
}
}
#[cfg(test)]
@ -493,4 +497,4 @@ mod tests {
fn table_invalid_percentages() {
Table::new(vec![]).widths(&[Constraint::Percentage(110)]);
}
}
}

@ -126,4 +126,8 @@ impl<'a> Widget for Tabs<'a> {
x = pos.0;
}
}
}
fn render_dynamic(self: Box<Self>, area: Rect, buf: &mut Buffer) {
self.render(area, buf);
}
}
Loading…
Cancel
Save