public override async Task <bool> LoadState(dynamic data) { LMProjectVM projectVM = data.Project; // FIXME: Load project asynchronously if (!projectVM.Model.IsLoaded) { try { IBusyDialog busy = App.Current.Dialogs.BusyDialog(Catalog.GetString("Loading project..."), null); busy.ShowSync(() => { try { projectVM.Model.Load(); } catch (Exception ex) { Log.Exception(ex); throw; } }); } catch (Exception ex) { Log.Exception(ex); App.Current.Dialogs.ErrorMessage(Catalog.GetString("Could not load project:") + "\n" + ex.Message); return(false); } } if (!await Initialize(data)) { return(false); } return(await LoadProject()); }
static void HandleQuitApplicationEvent(QuitApplicationEvent e) { if (jobsManagerVM.IsBusy) { string msg = Catalog.GetString("A rendering job is running in the background. Do you really want to quit?"); if (!App.Current.Dialogs.QuestionMessage(msg, null).Result) { return; } jobsManagerVM.CancelAll(); } App.Current.GUIToolkit.Quit(); }