Skip to main content

vtcode_tui/core_tui/session/
driver.rs

1use tokio::sync::mpsc::{UnboundedReceiver, UnboundedSender};
2
3use crate::core_tui::log::LogEntry;
4use crate::core_tui::runner::TuiSessionDriver;
5use crate::core_tui::types::{InlineCommand, InlineEvent};
6
7use super::Session;
8
9impl TuiSessionDriver for Session {
10    type Command = InlineCommand;
11    type Event = InlineEvent;
12
13    fn handle_command(&mut self, command: Self::Command) {
14        self.handle_command(command);
15    }
16
17    fn handle_event(
18        &mut self,
19        event: crossterm::event::Event,
20        events: &UnboundedSender<Self::Event>,
21        callback: Option<&(dyn Fn(&Self::Event) + Send + Sync + 'static)>,
22    ) {
23        self.handle_event(event, events, callback);
24    }
25
26    fn handle_tick(&mut self) {
27        self.handle_tick();
28    }
29
30    fn render(&mut self, frame: &mut ratatui::Frame<'_>) {
31        self.render(frame);
32    }
33
34    fn take_redraw(&mut self) -> bool {
35        self.take_redraw()
36    }
37
38    fn use_steady_cursor(&self) -> bool {
39        self.use_steady_cursor()
40    }
41
42    fn should_exit(&self) -> bool {
43        self.should_exit()
44    }
45
46    fn request_exit(&mut self) {
47        self.request_exit();
48    }
49
50    fn mark_dirty(&mut self) {
51        self.mark_dirty();
52    }
53
54    fn update_terminal_title(&mut self) {
55        self.update_terminal_title();
56    }
57
58    fn clear_terminal_title(&mut self) {
59        self.clear_terminal_title();
60    }
61
62    fn is_running_activity(&self) -> bool {
63        self.is_running_activity()
64    }
65
66    fn has_status_spinner(&self) -> bool {
67        self.has_status_spinner()
68    }
69
70    fn thinking_spinner_active(&self) -> bool {
71        self.thinking_spinner.is_active
72    }
73
74    fn has_active_navigation_ui(&self) -> bool {
75        self.has_active_overlay()
76    }
77
78    fn apply_coalesced_scroll(&mut self, line_delta: i32, page_delta: i32) {
79        self.apply_coalesced_scroll(line_delta, page_delta);
80    }
81
82    fn set_show_logs(&mut self, show: bool) {
83        self.show_logs = show;
84    }
85
86    fn set_active_pty_sessions(
87        &mut self,
88        sessions: Option<std::sync::Arc<std::sync::atomic::AtomicUsize>>,
89    ) {
90        self.active_pty_sessions = sessions;
91    }
92
93    fn set_workspace_root(&mut self, root: Option<std::path::PathBuf>) {
94        self.set_workspace_root(root);
95    }
96
97    fn set_log_receiver(&mut self, receiver: UnboundedReceiver<LogEntry>) {
98        self.set_log_receiver(receiver);
99    }
100}