Skip to main content

fresh/app/
event_debug_actions.rs

1//! Event debug dialog action handling
2//!
3//! This module provides the action handlers for the event debug dialog.
4
5use super::event_debug::EventDebug;
6use super::Editor;
7use crate::input::handler::InputResult;
8use crossterm::event::KeyEvent;
9use rust_i18n::t;
10
11impl Editor {
12    /// Open the event debug dialog
13    pub fn open_event_debug(&mut self) {
14        self.event_debug = Some(EventDebug::new());
15        self.set_status_message(t!("event_debug.started").to_string());
16    }
17
18    /// Handle input when event debug dialog is active
19    pub fn handle_event_debug_input(&mut self, event: &KeyEvent) -> InputResult {
20        // Take the dialog temporarily to avoid borrowing issues
21        let mut debug = match self.event_debug.take() {
22            Some(d) => d,
23            None => return InputResult::Ignored,
24        };
25
26        // Record the event
27        debug.record_event(*event);
28
29        // Check if we should close
30        if debug.should_close() {
31            self.set_status_message(t!("event_debug.closed").to_string());
32            // Don't put it back - it's closed
33        } else {
34            // Put it back
35            self.event_debug = Some(debug);
36        }
37
38        InputResult::Consumed
39    }
40
41    /// Check if event debug dialog is active
42    pub fn is_event_debug_active(&self) -> bool {
43        self.event_debug.is_some()
44    }
45}