Skip to main content

vtcode_tui/core_tui/session/
impl_render.rs

1use 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}