pub struct TextView<'a, 't> {
pub scroll: usize,
pub show_scrollbar: bool,
/* private fields */
}
Expand description
A scrollable text, in a specific area.
The text is assumed to have been computed for the given area.
For example:
use termimad::*;
// You typically borrow those 3 vars from elsewhere
let markdown = "#title\n* item 1\n* item 2";
let area = Area::new(0, 0, 10, 12);
let skin = MadSkin::default();
// displaying
let text = skin.area_text(markdown, &area);
let view = TextView::from(&area, &text);
view.write().unwrap();
This struct is just a very thin wrapper and may be created dynamically for renderings or event handling.
If the text and skin are constant, you might prefer to use a MadView instead of a TextView: the MadView owns the markdown string and ensures the formatted text is computed accordingly to the area.
Fields§
§scroll: usize
§show_scrollbar: bool
Implementations§
source§impl<'a, 't> TextView<'a, 't>
impl<'a, 't> TextView<'a, 't>
sourcepub const fn from(area: &'a Area, text: &'t FmtText<'_, '_>) -> TextView<'a, 't>
pub const fn from(area: &'a Area, text: &'t FmtText<'_, '_>) -> TextView<'a, 't>
make a displayed text, that is a text in an area
pub fn content_height(&self) -> usize
sourcepub fn scrollbar(&self) -> Option<(u16, u16)>
pub fn scrollbar(&self) -> Option<(u16, u16)>
return an option which when filled contains a tupple with the top and bottom of the vertical scrollbar. Return none when the content fits the available space (or if show_scrollbar is false).
sourcepub fn write(&self) -> Result<(), Error>
pub fn write(&self) -> Result<(), Error>
display the text in the area, taking the scroll into account.
sourcepub fn write_on<W: Write>(&self, w: &mut W) -> Result<(), Error>
pub fn write_on<W: Write>(&self, w: &mut W) -> Result<(), Error>
display the text in the area, taking the scroll into account.
sourcepub fn set_scroll(&mut self, scroll: usize) -> usize
pub fn set_scroll(&mut self, scroll: usize) -> usize
set the scroll position but makes it fit into allowed positions. Return the actual scroll.
sourcepub fn try_scroll_lines(&mut self, lines_count: i32)
pub fn try_scroll_lines(&mut self, lines_count: i32)
Change the scroll position.
lines_count can be negative
sourcepub fn try_scroll_pages(&mut self, pages_count: i32)
pub fn try_scroll_pages(&mut self, pages_count: i32)
change the scroll position pages_count can be negative
pub fn line_up(&mut self) -> bool
pub fn line_down(&mut self) -> bool
pub fn page_up(&mut self) -> bool
pub fn page_down(&mut self) -> bool
sourcepub fn apply_key_event(&mut self, key: KeyEvent) -> bool
pub fn apply_key_event(&mut self, key: KeyEvent) -> bool
Apply an event being a key: page_up, page_down, up and down.
Return true when the event led to a change, false when it was discarded.