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 :: * } ,
|
|
|
|
} ;
|
|
|
|
|
2024-11-29 21:06:14 +01:00
|
|
|
use crate :: { error :: * , 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 ) {
|
2024-11-27 11:47:20 +01:00
|
|
|
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| {
|
|
|
|
ui . close_window () ;
|
|
|
|
} ) . await ;
|
2024-11-20 16:32:37 +01:00
|
|
|
} ) ;
|
|
|
|
}
|