// TODO: Header use cxx_qt_lib::QString; use std::env; use std::error::Error; use std::process::exit; pub mod colors; pub mod filesystem; fn run_gui() -> Result<(), Box> { use cxx_qt_lib::{QGuiApplication, QQmlApplicationEngine, QUrl}; let mut app = QGuiApplication::new(); let mut engine = QQmlApplicationEngine::new(); if let Some(engine) = engine.as_mut() { engine.add_import_path(&QString::from("qml/")); } if let Some(engine) = engine.as_mut() { engine.load(&QUrl::from("qml/main.qml")); } if let Some(app) = app.as_mut() { app.exec(); } Ok(()) } fn run_tui() -> Result<(), Box> { println!("Starting TUI editor..."); // Your cursive logic here, like: // let mut siv = cursive::default(); // siv.add_layer(...); // siv.run(); Ok(()) } fn print_help() { println!("Usage: app_launcher [OPTION]"); println!("Options:"); println!(" gui Launch the QML GUI application"); println!(" tui Launch the TUI text editor (cursive-based)"); println!(" help Show this help message"); } fn main() { let args: Vec = env::args().collect(); if args.len() < 2 { if let Err(e) = run_gui() { eprintln!("Error launching GUI: {}", e); exit(1); } } match args.get(1).map(|s| s.as_str()) { Some("gui") => { if let Err(e) = run_gui() { eprintln!("Error launching GUI: {}", e); exit(1); } } Some("tui") => { if let Err(e) = run_tui() { eprintln!("Error launching TUI: {}", e); exit(1); } } Some("help") | None => { print_help(); } Some(arg) => { eprintln!("Unknown argument: {}", arg); print_help(); exit(1); } } }