From 280881885eaafda1dc5081a49cea8cc0399ffd76 Mon Sep 17 00:00:00 2001 From: kroonhorstdino-raldir-hp Date: Mon, 1 Aug 2022 01:54:24 +0200 Subject: [PATCH] Provided example for fn, update example in custom widgets --- examples/custom_widget.rs | 6 +++++- src/terminal.rs | 21 +++++++++++++++++++++ 2 files changed, 26 insertions(+), 1 deletion(-) diff --git a/examples/custom_widget.rs b/examples/custom_widget.rs index 14c1895..58d33d3 100644 --- a/examples/custom_widget.rs +++ b/examples/custom_widget.rs @@ -22,6 +22,10 @@ impl<'a> Widget for Label<'a> { fn render(self, area: Rect, buf: &mut Buffer) { buf.set_string(area.left(), area.top(), self.text, Style::default()); } + + fn render_dynamic(self: Box, area: Rect, buf: &mut Buffer) { + self.render(area, buf); + } } impl<'a> Label<'a> { @@ -74,4 +78,4 @@ fn ui(f: &mut Frame) { let size = f.size(); let label = Label::default().text("Test"); f.render_widget(label, size); -} +} \ No newline at end of file diff --git a/src/terminal.rs b/src/terminal.rs index a491ceb..8101571 100644 --- a/src/terminal.rs +++ b/src/terminal.rs @@ -102,8 +102,29 @@ where } /// Render a boxed ['Widget'] with unknown size (['?Sized']) + /// # Examples + /// + /// ```rust + /// # use std::iter::zip; + /// # use tui::Terminal; + /// # use tui::backend::TestBackend; + /// # use tui::layout::{Constraint, Layout, Rect}; + /// # use tui::widgets::Block; + /// # let backend = TestBackend::new(5, 5); + /// # let mut terminal = Terminal::new(backend).unwrap(); + /// + /// let r = Rect::new(0,0,16,16); + /// let widgets = [Box::new(Block::default())].repeat(4); + /// let rects = Layout::default().constraints([Constraint::Ratio(1,4)].repeat(4).as_ref()).split(); + /// + /// let mut frame = terminal.get_frame(); + /// for (widget,rect) in zip(widgets, rects) { + /// frame.render_widget_dynamic(widget, rect); + /// } + /// ``` pub fn render_widget_dynamic(&mut self, widget : Box, area: Rect) { + widget.render_dynamic(area, self.terminal.current_buffer_mut()); }