public void Add() { var dlgVmdl = new SelectModuleDlgViewModel(List); var dlg = new SelectModuleDialog(dlgVmdl); if (dlg.ShowDialog() == true) { Model.AddRange(dlgVmdl.Selected.Select(i => i.Module)); _moduleViewModels = null; OnPropertyChanged("List"); } }
private async void OnAddModuleViewport() { try { var deviceViewportMonitorIds = _viewportController.GetDeviceViewportMonitorIds(); if (deviceViewportMonitorIds.Length == 0) { if (MessageBoxEx.Show("You have not defined a screen for device viewports. Do you want to do that now?", "Device Viewports", MessageBoxButton.YesNo) == MessageBoxResult.Yes) { using (var container = SettingsController.GetChildContainer()) { var firstUseWizard = new Wizard(); var viewModel = new WizardViewModel(container, new SelectGameViewportScreensStepViewModel(container), new SelectUIViewportScreensStepViewModel(container), new SelectDeviceViewportScreensStepViewModel(container)); firstUseWizard.DataContext = viewModel; firstUseWizard.ShowDialog(); } deviceViewportMonitorIds = _viewportController.GetDeviceViewportMonitorIds(); if (deviceViewportMonitorIds.Length == 0) { MessageBoxEx.Show("You must define a screen for device viewports before adding viewports for a module.", "Device Viewports"); return; } } else { return; } } var selectModuleDialog = new SelectModuleDialog(); var viewportTemplates = _viewportController.GetDefaultViewportTemplates(); foreach (var i in await SettingsController.GetInstalledAircraftModulesAsync()) { if (viewportTemplates.All(vt => vt.ModuleId != i.ModuleId)) { continue; } selectModuleDialog.Modules.Add(i); } selectModuleDialog.SelectedModule = selectModuleDialog.Modules.First(); selectModuleDialog.Owner = Application.Current.MainWindow; if (!selectModuleDialog.ShowDialog() ?? false) { return; } var module = selectModuleDialog.SelectedModule; var templates = _viewportController.GetDefaultViewportTemplatesForModule(module.ModuleId); if (templates.Length == 0) { MessageBoxEx.Show($"There are no default templates for the {module.DisplayName}. An empty template will be created.", "No Template Defined"); var viewports = await _viewportController.EditViewportsAsync(module.DisplayName, null, module, new Viewport[0]); _viewportController.SaveViewports(module.DisplayName, module.ModuleId, viewports); } else if (templates.Length > 1) { var template = _viewportController.ShowTemplateSelection(templates); if (template != null) { var viewports = await _viewportController.EditViewportsAsync(template.TemplateName, template.ExampleImageUrl, module, template.Viewports.ToArray()); _viewportController.SaveViewports(template.TemplateName, module.ModuleId, viewports); } else { var viewports = await _viewportController.EditViewportsAsync(module.DisplayName, null, module, new Viewport[0]); _viewportController.SaveViewports(module.DisplayName, module.ModuleId, viewports); } } else { if (MessageBoxEx.Show($"Would you like to start with the default template {templates[0].TemplateName}?", "Default Template", MessageBoxButton.YesNo) == MessageBoxResult.Yes) { var viewports = await _viewportController.EditViewportsAsync(templates[0].TemplateName, templates[0].ExampleImageUrl, module, templates[0].Viewports.ToArray()); _viewportController.SaveViewports(templates[0].TemplateName, module.ModuleId, viewports); } else { var viewports = await _viewportController.EditViewportsAsync(module.DisplayName, null, module, new Viewport[0]); _viewportController.SaveViewports(module.DisplayName, module.ModuleId, viewports); } } await PopulateViewportsAsync(); } catch (Exception e) { GeneralExceptionHandler.Instance.OnError(e); } }