Skip to main content

ghostscope_ui/
lib.rs

1// Core modules
2pub mod action;
3pub mod components;
4pub mod events;
5pub mod handlers;
6pub mod model;
7pub mod ui;
8pub mod utils;
9
10// Public exports
11pub use action::{Action, PanelType};
12pub use components::App;
13pub use events::{
14    BacktraceDisplay, BacktraceDisplayFrame, ComplexVariableDisplay, EventRegistry,
15    ExprErrorDisplay, RuntimeChannels, RuntimeCommand, RuntimeStatus, TraceDisplayItem, TuiEvent,
16    UiTraceEvent, VariableDisplay,
17};
18pub use model::ui_state::{HistoryConfig, LayoutMode, UiConfig};
19
20use anyhow::Result;
21
22pub async fn run_tui_mode(event_registry: EventRegistry, layout_mode: LayoutMode) -> Result<()> {
23    let ui_config = UiConfig {
24        layout_mode,
25        panel_ratios: [4, 3, 3], // Default ratios for backward compatibility
26        show_source_panel: true,
27        two_panel_ratios: [3, 3],
28        default_focus: crate::action::PanelType::InteractiveCommand,
29        history: HistoryConfig::default(),
30        ebpf_max_messages: 2000, // Default
31    };
32    run_tui_mode_with_config(event_registry, ui_config).await
33}
34
35pub async fn run_tui_mode_with_config(
36    event_registry: EventRegistry,
37    ui_config: UiConfig,
38) -> Result<()> {
39    let mut app = App::new_with_config(event_registry, ui_config).await?;
40    app.run().await
41}