コード例 #1
0
        private void AddSwapCameraMenuItems(List <Control> itemsList, LayoutSlot slot)
        {
            //-- Add the context menu items
            var menuItem = new MenuItem {
                Header = "Swap this camera",
            };

            itemsList.Add(new Separator());
            itemsList.Add(menuItem);
            foreach (var optionalCamera in slot.OptionalCameras)
            {
                var swapItem = new MenuItem {
                    Header = optionalCamera.Camera.Name,
                    Tag    = optionalCamera,
                };
                swapItem.Click += (sender, e) =>
                {
                    if (this.LayoutHolder.Content is LayoutControl existingLayout)
                    {
                        existingLayout.SwapCamera(slot, optionalCamera);
                    }
                };

                menuItem.Items.Add(swapItem);
            }
        }
コード例 #2
0
        private void AddCycleCameraMenuItems(List <Control> itemsList, LayoutSlot slot)
        {
            itemsList.Add(new Separator());

            //-- Add the context menu items
            var menuItem = new MenuItem {
                Header = "Cycle Options",
            };

            itemsList.Add(menuItem);

            foreach (var optionalCamera in slot.OptionalCameras)
            {
                var chooseItem = new MenuItem {
                    Header      = optionalCamera.Camera.Name,
                    Tag         = optionalCamera,
                    IsCheckable = true,
                    IsChecked   = slot.CyclingImages.Any(i => i.Camera.ID == optionalCamera.OptionalCameraID),
                };

                chooseItem.Click += (sender, e) =>
                {
                    slot.ToggleCycleCamera(optionalCamera);
                };

                menuItem.Items.Add(chooseItem);
            }
        }
コード例 #3
0
        public LayoutControl(Layout layout, IPAddress multicastAddress)
        {
            //-- Save the layout ID
            this._layout           = layout;
            this._multicastAddress = multicastAddress;

            //-- Retrieve the cameras in the layout
            var cameras         = DBHelper.FetchCamerasForLayout(layout.ID);
            var optionalCameras = DBHelper.FetchUserChoiceForLayout(layout.ID);

            //-- Set the row and column definitions
            for (var i = 0; i < this._layout.Rows; i++)
            {
                this.RowDefinitions.Add(new RowDefinition {
                    Height = new GridLength(1, GridUnitType.Star),
                });
            }
            for (var i = 0; i < this._layout.Columns; i++)
            {
                this.ColumnDefinitions.Add(new ColumnDefinition {
                    Width = new GridLength(1, GridUnitType.Star),
                });
            }

            //-- Add the images
            foreach (var camera in cameras)
            {
                //-- Set the optional cameras for the camera
                camera.UserChoices.AddRange(optionalCameras.Where(oc => oc.CameraID == camera.CameraID).OrderBy(oc => oc.Camera.Name));

                //-- Create the slot for the camera
                var slot = new LayoutSlot(this._multicastAddress);
                slot.OriginalCamera = camera;
                Grid.SetRow(slot, camera.RowIndex - 1);
                Grid.SetRowSpan(slot, camera.RowSpan);
                Grid.SetColumn(slot, camera.ColumnIndex - 1);
                Grid.SetColumnSpan(slot, camera.ColumnSpan);
                slot.CreateInitialImages();

                this._slots.Add(slot);
                this.Children.Add(slot);
            }
        }
コード例 #4
0
 public void SwapCamera(LayoutSlot slot, LayoutCameraUserChoice newCamera)
 {
     slot.SwapCamera(newCamera);
 }