36 lines
1.2 KiB
Rust
36 lines
1.2 KiB
Rust
// Prevent console window in addition to Slint window in Windows release builds when, e.g., starting the app via file manager. Ignored on other platforms.
|
|
#![cfg_attr(not(debug_assertions), windows_subsystem = "windows")]
|
|
|
|
use ziya::config::load_config;
|
|
use ziya::error::Result;
|
|
use ziya::slint_ui::*;
|
|
use ziya::tracing::setup_tracing;
|
|
use ziya::ZiyaApp;
|
|
|
|
#[tokio::main]
|
|
async fn main() -> Result<()> {
|
|
// ✅ Create and show UI on main thread using Slint's built-in pattern
|
|
let ui = MainWindow::new()
|
|
.map_err(|e| ziya::error::app::AppError::Slint(format!("failed_to_create_ui: {}", e)))?;
|
|
|
|
// ✅ Set up async tasks using spawn_local with async-compat for Tokio futures
|
|
let ui_weak = ui.as_weak();
|
|
// Load configuration
|
|
let config = load_config("Config.toml").await.unwrap();
|
|
|
|
// Initialize tracing with config
|
|
setup_tracing(config.clone(), "ziya-slint").await.unwrap();
|
|
|
|
// Create and run the app
|
|
let app = ZiyaApp::new(&config, ui_weak).await.unwrap();
|
|
slint::spawn_local(async_compat::Compat::new(async {
|
|
app.run().await.unwrap();
|
|
}))
|
|
.unwrap();
|
|
|
|
ui.run().map_err(|e| {
|
|
ziya::error::app::AppError::Slint(format!("failed_to_run_event_loop: {}", e))
|
|
})?;
|
|
|
|
Ok(())
|
|
}
|