Render editor and pseudo message
This commit is contained in:
parent
4ead592e59
commit
415da3afd8
6 changed files with 132 additions and 42 deletions
|
|
@ -4,9 +4,11 @@ mod indent;
|
|||
mod time;
|
||||
|
||||
use crossterm::style::{ContentStyle, Stylize};
|
||||
use toss::frame::Frame;
|
||||
|
||||
use super::super::ChatMsg;
|
||||
use crate::store::Msg;
|
||||
use crate::ui::widgets::editor::EditorState;
|
||||
use crate::ui::widgets::join::{HJoin, Segment};
|
||||
use crate::ui::widgets::layer::Layer;
|
||||
use crate::ui::widgets::padding::Padding;
|
||||
|
|
@ -53,3 +55,50 @@ pub fn msg_placeholder(highlighted: bool, indent: usize) -> BoxedWidget {
|
|||
])
|
||||
.into()
|
||||
}
|
||||
|
||||
pub fn editor<M: ChatMsg>(
|
||||
frame: &mut Frame,
|
||||
indent: usize,
|
||||
nick: &str,
|
||||
editor: &EditorState,
|
||||
) -> (BoxedWidget, usize) {
|
||||
let (nick, content) = M::edit(nick, &editor.text());
|
||||
let editor = editor.widget().highlight(|_| content);
|
||||
let cursor_row = editor.cursor_row(frame);
|
||||
|
||||
let widget = HJoin::new(vec![
|
||||
Segment::new(
|
||||
Padding::new(time::widget(None, true))
|
||||
.stretch(true)
|
||||
.right(1),
|
||||
),
|
||||
Segment::new(Indent::new(indent, true)),
|
||||
Segment::new(Layer::new(vec![
|
||||
Indent::new(1, false).into(),
|
||||
Padding::new(Text::new(nick)).right(1).into(),
|
||||
])),
|
||||
Segment::new(editor).priority(1),
|
||||
])
|
||||
.into();
|
||||
|
||||
(widget, cursor_row)
|
||||
}
|
||||
|
||||
pub fn pseudo<M: ChatMsg>(indent: usize, nick: &str, editor: &EditorState) -> BoxedWidget {
|
||||
let (nick, content) = M::edit(nick, &editor.text());
|
||||
|
||||
HJoin::new(vec![
|
||||
Segment::new(
|
||||
Padding::new(time::widget(None, true))
|
||||
.stretch(true)
|
||||
.right(1),
|
||||
),
|
||||
Segment::new(Indent::new(indent, true)),
|
||||
Segment::new(Layer::new(vec![
|
||||
Indent::new(1, false).into(),
|
||||
Padding::new(Text::new(nick)).right(1).into(),
|
||||
])),
|
||||
Segment::new(Text::new(content).wrap(true)).priority(1),
|
||||
])
|
||||
.into()
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue