2024-11-29 21:06:14 +01:00
|
|
|
mod error ;
|
2025-02-05 00:03:26 +01:00
|
|
|
mod data_manager ;
|
2024-11-20 16:32:37 +01:00
|
|
|
mod ui ;
|
|
|
|
|
mod utility ;
|
|
|
|
|
|
2024-12-24 01:18:05 +01:00
|
|
|
use {
|
|
|
|
|
gtk4 :: {
|
|
|
|
|
CssProvider ,
|
|
|
|
|
style_context_add_provider_for_display ,
|
|
|
|
|
STYLE_PROVIDER_PRIORITY_APPLICATION ,
|
|
|
|
|
gdk :: * ,
|
|
|
|
|
glib :: * ,
|
|
|
|
|
} ,
|
|
|
|
|
libadwaita :: { * , prelude :: * } } ;
|
2024-11-20 16:32:37 +01:00
|
|
|
|
2025-02-05 00:03:26 +01:00
|
|
|
use crate :: { data_manager :: * , error :: { * , ZoodexError :: * } , ui :: * } ;
|
2024-11-20 16:32:37 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
fn main () -> ExitCode {
|
|
|
|
|
let application = Application :: builder ()
|
|
|
|
|
. application_id ("com.kernelmaft.zoodex")
|
|
|
|
|
. build () ;
|
2024-12-24 01:18:05 +01:00
|
|
|
application . connect_startup (add_style_provider) ;
|
|
|
|
|
application . connect_activate (show_window) ;
|
2024-11-20 16:32:37 +01:00
|
|
|
application . run ()
|
|
|
|
|
}
|
|
|
|
|
|
2024-12-24 01:18:05 +01:00
|
|
|
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 ) {
|
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-30 16:00:44 +01:00
|
|
|
async_unit_result_context (
|
|
|
|
|
async {
|
2025-02-05 00:03:26 +01:00
|
|
|
let data_manager = DataManager :: new () . await ? ;
|
|
|
|
|
let collection = data_manager . get_collection_overview () . await ;
|
|
|
|
|
ui . render_collection_overview (collection) ;
|
2024-11-30 16:00:44 +01:00
|
|
|
Ok (())
|
|
|
|
|
} ,
|
|
|
|
|
|error| {
|
|
|
|
|
match error {
|
2024-12-23 23:20:08 +01:00
|
|
|
CollectionFileReadError => eprintln ! ("Could not read collection file") ,
|
2024-11-30 16:00:44 +01:00
|
|
|
} ;
|
|
|
|
|
ui . close_window () ;
|
|
|
|
|
} ,
|
|
|
|
|
) . await ;
|
2024-11-20 16:32:37 +01:00
|
|
|
} ) ;
|
|
|
|
|
}
|