heic2jpg

git clone git://archive.git.mtrnord.blog/MTRNord/heic2jpg.git
Log | Files | Refs | README | LICENSE

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 }