private void OnDeleteViewport(ViewportModel value)
        {
            var window = WindowAssist.GetWindow(this);

            if (MessageBoxEx.Show($"Are you sure you want to delete viewport {value.Name.Value}?", "Delete Viewport", MessageBoxButton.YesNo, parent: window) == MessageBoxResult.Yes)
            {
                Viewports.Remove(value);
            }
        }
        private void OnAddViewport()
        {
            var window = WindowAssist.GetWindow(this);
            var dialog = new SelectViewportsDialog();
            var screen = Screen.AllScreens.First(d => d.DeviceName == MonitorId);

            foreach (var device in _devices)
            {
                if (ConsumedViewports.Any(v => v == device.ViewportName) ||
                    Viewports.Any(v => v.Name.Value == device.ViewportName))
                {
                    continue;
                }

                var model = new ViewportModel();

                model.Height.Value    = device.Height;
                model.InitFile.Value  = device.RelativeInitFilePath;
                model.ImageUrl.Value  = Path.Combine(ApplicationPaths.ViewportPath, "Images/{_module.ModuleId}/{device.ViewportName}.jpg");
                model.Name.Value      = device.ViewportName;
                model.Width.Value     = device.Width;
                model.SeatIndex.Value = device.SeatIndex;
                model.X.Value         = screen.Bounds.Width / 2 - device.Width / 2;
                model.Y.Value         = screen.Bounds.Height / 2 - device.Height / 2;

                dialog.Viewports.Add(model);
            }

            dialog.SelectedViewport = dialog.Viewports.First();
            dialog.Owner            = window;

            if (dialog.ShowDialog() ?? false)
            {
                var viewport = dialog.SelectedViewport;

                Viewports.Add(viewport);
            }
        }