public ShellViewModel(CompositionContainer container) { // load visuals this.container = container; plugins = container.GetExportedValue<IPlugins>(); popups = container.GetExportedValue<IPopups>(); floating = container.GetExportedValueOrDefault<IFloating>(); AppState.Container = this.container; AppState.FullScreenFloatingElementChanged += (e, s) => NotifyOfPropertyChange(() => FullScreen); // load module AppState.State = AppStates.Starting; //Load configuration AppState.Config.LoadOfflineConfig(); AppState.Config.LoadLocalConfig(); AppState.Config.UpdateValues(); BackgroundWorker barInvoker = new BackgroundWorker(); barInvoker.DoWork += delegate { Thread.Sleep(TimeSpan.FromSeconds(10)); AppState.ViewDef.CheckOnlineBaseLayerProviders(); }; barInvoker.RunWorkerAsync(); var b = container.GetExportedValues<IModule>(); module = b.FirstOrDefault(); if (module == null) return; AppState.Config.ApplicationName = module.Name; AppState.State = AppStates.AppInitializing; AppState.ViewDef.RememberLastPosition = AppState.Config.GetBool("Map.RememberLastPosition", true); AppState.MapStarted += (e, f) => { AppState.StartFramework(true, true, true, true); AppState.ShareContracts.Add(new EmailShareContract()); AppState.ShareContracts.Add(new QrShareContract()); var g = AppState.AddDownload("Init", "StartPoint"); // start framework AppState.State = AppStates.FrameworkStarting; AddMainMenuItems(); // set map if (AppState.ViewDef.RememberLastPosition) { var extent = (AppState.Config.Get("Map.Extent", "-186.09257071294,-101.374056570352,196.09257071294,204.374056570352")); if (!string.IsNullOrEmpty(extent)) AppState.ViewDef.MapControl.Extent = (Envelope)new EnvelopeConverter().ConvertFromString(extent); } // start app AppState.State = AppStates.AppStarting; // init plugins module.StartApp(); // app ready AppState.State = AppStates.AppStarted; AppState.Imb.UpdateStatus(); AppState.FinishDownload(g); // Show timeline player (EV: I've tried to turn it on earlier during the startup process, but that didn't work // (most likely, because something wasn't loaded or initialized correctly). AppState.TimelineManager.PlayerVisible = AppState.Config.GetBool("Timeline.PlayerVisible", false); }; module.InitializeApp(); }