main.rs (2240B)
1 #[rustfmt::skip] 2 mod config; 3 mod app; 4 mod modals; 5 mod pages; 6 mod workers; 7 8 use config::{APP_ID, GETTEXT_PACKAGE, LOCALEDIR, RESOURCES_FILE}; 9 use gettextrs::LocaleCategory; 10 use gtk::prelude::ApplicationExt; 11 use gtk::{gio, glib}; 12 use magick_rust::magick_wand_genesis; 13 use relm4::{ 14 actions::{AccelsPlus, RelmAction, RelmActionGroup}, 15 gtk, main_application, RelmApp, 16 }; 17 use std::sync::Once; 18 19 use app::App; 20 use relm4::set_global_css; 21 22 relm4::new_action_group!(AppActionGroup, "app"); 23 relm4::new_stateless_action!(QuitAction, AppActionGroup, "quit"); 24 25 static START_IMAGICK: Once = Once::new(); 26 27 fn main() { 28 START_IMAGICK.call_once(|| { 29 magick_wand_genesis(); 30 }); 31 gtk::init().unwrap(); 32 33 // Enable logging 34 tracing_subscriber::fmt() 35 .with_span_events(tracing_subscriber::fmt::format::FmtSpan::FULL) 36 .with_max_level(tracing::Level::INFO) 37 .init(); 38 39 // setup gettext 40 gettextrs::setlocale(LocaleCategory::LcAll, ""); 41 gettextrs::bindtextdomain(GETTEXT_PACKAGE, LOCALEDIR).expect("Unable to bind the text domain"); 42 gettextrs::textdomain(GETTEXT_PACKAGE).expect("Unable to switch to the text domain"); 43 44 glib::set_application_name("Heic2JPG"); 45 46 let res = gio::Resource::load(RESOURCES_FILE).expect("Could not load gresource file"); 47 gio::resources_register(&res); 48 49 gtk::Window::set_default_icon_name(APP_ID); 50 51 let app = main_application(); 52 app.set_application_id(Some(APP_ID)); 53 app.set_resource_base_path(Some("/dev/nordgedanken/heic2jpg/")); 54 55 let mut actions = RelmActionGroup::<AppActionGroup>::new(); 56 57 let quit_action = { 58 let app = app.clone(); 59 RelmAction::<QuitAction>::new_stateless(move |_| { 60 app.quit(); 61 }) 62 }; 63 actions.add_action(quit_action); 64 actions.register_for_main_application(); 65 66 app.set_accelerators_for_action::<QuitAction>(&["<Control>q"]); 67 68 let app = RelmApp::from_app(app); 69 70 let data = res 71 .lookup_data( 72 "/dev/nordgedanken/heic2jpg/style.css", 73 gio::ResourceLookupFlags::NONE, 74 ) 75 .unwrap(); 76 set_global_css(&glib::GString::from_utf8_checked(data.to_vec()).unwrap()); 77 app.visible_on_activate(false).run::<App>(()); 78 }