clide/src/main.rs

81 lines
1.9 KiB
Rust
Raw Normal View History

2025-03-29 16:55:26 -04:00
// TODO: Header
2025-03-29 08:01:13 -04:00
2025-03-30 11:20:21 -04:00
use cxx_qt_lib::QString;
use std::env;
use std::error::Error;
use std::process::exit;
2025-03-30 11:20:21 -04:00
pub mod colors;
2025-03-30 13:14:58 -04:00
pub mod filesystem;
2025-03-29 08:01:13 -04:00
fn run_gui() -> Result<(), Box<dyn Error>> {
2025-03-29 08:01:13 -04:00
use cxx_qt_lib::{QGuiApplication, QQmlApplicationEngine, QUrl};
let mut app = QGuiApplication::new();
let mut engine = QQmlApplicationEngine::new();
2025-03-30 11:20:21 -04:00
if let Some(engine) = engine.as_mut() {
engine.add_import_path(&QString::from("qml/"));
}
2025-03-29 08:01:13 -04:00
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<dyn Error>> {
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<String> = 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);
}
}
2025-03-29 08:01:13 -04:00
}