use crate::buf::opt::BufferOptionsBuilder;
use crate::buf::text::Text;
use crate::prelude::*;
use ropey::Rope;
use std::fmt::Debug;
pub struct CmdlineText {
input: Text,
message: Text,
message_history: RingBuffer<String>,
}
arc_mutex_ptr!(CmdlineText);
impl CmdlineText {
pub fn new(canvas_size: U16Size) -> Self {
let cmdline_opts = BufferOptionsBuilder::default().build().unwrap();
Self {
input: Text::new(cmdline_opts, canvas_size, Rope::new()),
message: Text::new(cmdline_opts, canvas_size, Rope::new()),
message_history: RingBuffer::new(500),
}
}
pub fn input(&self) -> &Text {
&self.input
}
pub fn input_mut(&mut self) -> &mut Text {
&mut self.input
}
pub fn message(&self) -> &Text {
&self.message
}
pub fn message_mut(&mut self) -> &mut Text {
&mut self.message
}
pub fn message_history(&self) -> &RingBuffer<String> {
&self.message_history
}
pub fn message_history_mut(&mut self) -> &mut RingBuffer<String> {
&mut self.message_history
}
}
impl Debug for CmdlineText {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
f.write_str("TextContents")
}
}