datui_lib/widgets/
debug.rs1use ratatui::{
2 buffer::Buffer,
3 layout::Rect,
4 widgets::{Paragraph, Widget},
5};
6
7#[derive(Default)]
8pub struct DebugState {
9 pub num_events: usize,
10 pub num_frames: usize,
11 pub num_key_events: usize,
12 pub last_key_event_name: String,
13 pub last_type_name: String,
14 pub last_action: String,
16 pub enabled: bool,
17 pub show_help_at_render: bool,
19 pub schema_load: Option<String>,
21}
22
23impl DebugState {
24 pub fn on_key(&mut self, event: &crossterm::event::KeyEvent) {
25 self.num_key_events += 1;
26 self.last_key_event_name = format!("{:?}", event.code);
27 self.last_type_name = format!("{:?}", event.kind);
28 }
29}
30
31impl Widget for &DebugState {
32 fn render(self, area: Rect, buf: &mut Buffer) {
33 let schema = self.schema_load.as_deref().unwrap_or("-");
34 Paragraph::new(format!(
35 "events={} keys={} last_key={} kind={} last_action={} help={} frames={} schema={}",
36 self.num_events,
37 self.num_key_events,
38 self.last_key_event_name,
39 self.last_type_name,
40 self.last_action,
41 self.show_help_at_render,
42 self.num_frames,
43 schema
44 ))
45 .render(area, buf);
46 }
47}