Ejemplo n.º 1
0
 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);
            }
        }