mirror of
https://github.com/kristoferssolo/traxor.git
synced 2025-10-21 20:10:35 +00:00
49 lines
1.3 KiB
Rust
49 lines
1.3 KiB
Rust
use anyhow::Result;
|
|
use log::setup_logger;
|
|
use ratatui::backend::CrosstermBackend;
|
|
use ratatui::Terminal;
|
|
use std::io;
|
|
use traxor::app::App;
|
|
use traxor::event::{Event, EventHandler};
|
|
use traxor::handler::{get_action, update};
|
|
use traxor::tui::Tui;
|
|
mod log;
|
|
|
|
#[tokio::main]
|
|
async fn main() -> Result<()> {
|
|
// Setup the logger.
|
|
setup_logger();
|
|
|
|
// Create an application.
|
|
let mut app = App::new();
|
|
|
|
// Initialize the terminal user interface.
|
|
let backend = CrosstermBackend::new(io::stderr());
|
|
let terminal = Terminal::new(backend)?;
|
|
let events = EventHandler::new(250); // Update time in ms
|
|
let mut tui = Tui::new(terminal, events);
|
|
tui.init()?;
|
|
|
|
// Start the main loop.
|
|
while app.running {
|
|
// Render the user interface.
|
|
tui.draw(&mut app)?;
|
|
// Handle events.
|
|
match tui.events.next()? {
|
|
Event::Tick => app.tick().await,
|
|
// Event::Key(key_event) => handle_key_events(key_event, &mut app).await?,
|
|
Event::Key(key_event) => {
|
|
if let Some(action) = get_action(key_event) {
|
|
update(&mut app, action).await.unwrap();
|
|
}
|
|
}
|
|
Event::Mouse(_) => {}
|
|
Event::Resize(_, _) => {}
|
|
}
|
|
}
|
|
|
|
// Exit the user interface.
|
|
tui.exit()?;
|
|
Ok(())
|
|
}
|