// Required for database/schema.rs #[macro_use] extern crate diesel; // Required for embed_migrations macro in database/database.rs #[macro_use] extern crate diesel_migrations; use gio::prelude::*; use glib::clone; use std::cell::RefCell; use std::rc::Rc; mod backend; mod database; mod dialogs; mod screens; mod widgets; mod window; use window::Window; mod resources; fn main() { gtk::init().expect("Failed to initialize GTK!"); libhandy::init(); resources::init().expect("Failed to initialize resources!"); let app = gtk::Application::new( Some("de.johrpan.musicus"), gio::ApplicationFlags::empty(), ) .expect("Failed to initialize GTK application!"); let window: RefCell>> = RefCell::new(None); app.connect_activate(clone!(@strong app => move |_| { let mut window = window.borrow_mut(); if window.is_none() { window.replace(Window::new(&app)); } window.as_ref().unwrap().present(); })); let args = std::env::args().collect::>(); app.run(&args); }