zoodex/src/main.rs

43 lines
930 B
Rust
Raw Normal View History

2024-11-20 16:32:37 +01:00
mod collection ;
2024-11-29 21:06:14 +01:00
mod error ;
2024-11-20 16:32:37 +01:00
mod persistence ;
mod ui ;
mod utility ;
use {
gtk4 :: { gio :: spawn_blocking , glib :: * } ,
libadwaita :: { * , prelude :: * } ,
} ;
use crate :: { error :: { * , ZoodexError :: * } , persistence :: * , ui :: * } ;
2024-11-20 16:32:37 +01:00
fn main () -> ExitCode {
let application = Application :: builder ()
. application_id ("com.kernelmaft.zoodex")
. build () ;
application . connect_activate (on_activate) ;
application . run ()
}
fn on_activate ( app : & Application ) {
let ui = UI :: new (app) ;
2024-11-20 16:32:37 +01:00
ui . show_window () ;
spawn_future_local ( async move {
2024-11-29 21:06:14 +01:00
async_result_context ( async {
let collection = spawn_blocking ( || read_collection_file () )
. await ? ? ;
ui . render_collection (collection) ;
Ok (())
} , |_| () , |error| {
match error {
CollectionFileError => eprintln ! ("Could not open collection file") ,
} ;
2024-11-29 21:06:14 +01:00
ui . close_window () ;
} ) . await ;
2024-11-20 16:32:37 +01:00
} ) ;
}