mod error ; mod data_manager ; mod ui ; mod utility ; use gtk4 :: CssProvider ; use gtk4 :: style_context_add_provider_for_display ; use gtk4 :: STYLE_PROVIDER_PRIORITY_APPLICATION ; use gtk4 :: gdk :: * ; use gtk4 :: glib :: * ; use libadwaita :: * ; use libadwaita :: prelude :: * ; use crate :: data_manager :: * ; use crate :: error :: * ; use crate :: error :: ZoodexError :: * ; use crate :: 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 ( application : & Application ) { let ui = UI :: new (application) ; ui . show_window () ; spawn_future_local ( async move { async_unit_result_context ( async { let data_manager = DataManager :: new () . await ? ; let collection = data_manager . get_collection_overview () . await ; ui . render_collection_overview (collection) . await ; Ok (()) } , |error| { match error { CollectionFileReadError => eprintln ! ("Could not read collection file") , } ; ui . close_window () ; } , ) . await ; } ) ; }