vtcode_tui/core_tui/session/
impl_render.rs1use super::*;
2
3impl Session {
4 pub fn render(&mut self, frame: &mut Frame<'_>) {
5 let Some(layout) = self.prepare_frame_layout(frame, 0) else {
6 return;
7 };
8
9 let (transcript_area, modal_area) = render::split_inline_modal_area(self, layout.main_area);
10 self.set_modal_list_area(None);
11 self.set_bottom_panel_area(None);
12 self.render_base_frame(frame, &layout, transcript_area);
13 self.render_input(frame, layout.input_area);
14 if let Some(modal_area) = modal_area {
15 render::render_modal(self, frame, modal_area);
16 } else {
17 render::render_modal(self, frame, layout.viewport);
18 }
19 self.finalize_mouse_selection(frame, layout.viewport);
20 }
21
22 #[allow(dead_code)]
23 pub(crate) fn render_message_spans(&self, index: usize) -> Vec<Span<'static>> {
24 let Some(line) = self.lines.get(index) else {
25 return vec![Span::raw(String::new())];
26 };
27 message_renderer::render_message_spans(
28 line,
29 &self.theme,
30 &self.labels,
31 |kind| self.prefix_text(kind),
32 |line| self.prefix_style(line),
33 |kind| self.text_fallback(kind),
34 )
35 }
36}