Beispiel #1
0
        /// <summary>
        /// Creates an <see cref="ICameraPlugin"/> for the specified camera.
        /// </summary>
        /// <param name="camera">The camera</param>
        /// <returns>The ICameraPlugin</returns>
        /// <exception cref="ArgumentNullException"><paramref name="camera"/> is null.</exception>
        /// <exception cref="InvalidPluginException">The camera does not have a plugin assigned.</exception>
        /// <exception cref="InvalidPluginException">The plugin cannot be found.</exception>
        public static ICameraPlugin Create(CameraRow camera)
        {
            if (camera == null)
            {
                throw new ArgumentNullException(nameof(camera));
            }

            if (camera.PluginId == PluginTable.Defs.Values.NullPluginId)
            {
                throw new InvalidPluginException($"[{camera.Name}] does not have an associated plugin");
            }

            ICameraPluginCreator creator = CompositionManager.Instance.GetCameraPluginCreator(camera.PluginGuid);

            if (creator == null)
            {
                throw new InvalidPluginException($"The plugin configured for [{camera.Name}] [{camera.PluginName}, Id: {camera.PluginGuid}] cannot be found");
            }

            ICameraPlugin plugin = creator.Create(new ConnectionParameters(camera.IpAddress, camera.Port, camera.UserId, camera.Password));

            if (plugin is ICameraMotion motion)
            {
                motion.SetMotionSpeedAsync((int)camera.MotionSpeed);
            }
            return(plugin);
        }
Beispiel #2
0
            /// <summary>
            /// Creates an instance of CameraManageWindow and its corresponding view model.
            /// </summary>
            /// <param name="camera">The camera to manage.</param>
            /// <returns>The window.</returns>
            public static CameraManageWindow Create(CameraRow camera)
            {
                var window = new CameraManageWindow()
                {
                    DataContext = new CameraManageViewModel(camera),
                };

                Config.Instance.RestoreWindow(Config.WindowKey.CameraManage, window);

                (window.DataContext as WindowViewModel)?.SetWindowOwner(window);
                TextOptions.SetTextFormattingMode(window);
                return(window);
            }