mod collection ; mod error ; mod persistence ; mod ui ; mod utility ; use { gtk4 :: { CssProvider , style_context_add_provider_for_display , STYLE_PROVIDER_PRIORITY_APPLICATION , gdk :: * , glib :: * , } , libadwaita :: { * , prelude :: * } } ; use crate :: { error :: { * , ZoodexError :: * } , persistence :: * , ui :: * } ; fn main () -> ExitCode { let application = Application :: builder () . application_id ("com.kernelmaft.zoodex") . build () ; application . connect_startup (add_style_provider) ; application . connect_activate (show_window) ; application . run () } fn add_style_provider ( _ : & Application ) { let style_provider = CssProvider :: new () ; style_provider . load_from_string ( include_str ! ("application.css") ) ; style_context_add_provider_for_display ( & Display :: default () . unwrap () , & style_provider , STYLE_PROVIDER_PRIORITY_APPLICATION , ) ; } fn show_window ( app : & Application ) { let ui = UI :: new (app) ; ui . show_window () ; spawn_future_local ( async move { async_unit_result_context ( async { let collection = get_collection_from_file () . await ? ; ui . render_collection (collection) ; Ok (()) } , |error| { match error { CollectionFileReadError => eprintln ! ("Could not read collection file") , } ; ui . close_window () ; } , ) . await ; } ) ; }