示例#1
0
 public DeviceParams this[DeviceType deviceType]
 {
     get
     {
         var selectedDevice   = SelectedDevices[deviceType];
         var device           = PluginDevice.CreateParameterizedEntity(selectedDevice.Device, selectedDevice.Params);
         var selectedConsumer = SelectedConsumers[deviceType];
         var consumer         = PluginStreamConsumer.CreateParameterizedEntity(selectedConsumer.Consumer, selectedConsumer.Params);
         return(new DeviceParams {
             Device = device, Consumers = new[] { consumer }
         });
     }
     set
     {
         if (_deviceControlGroups[deviceType].DeviceComboBox.FindAndSelect(value.Device.Id ?? NoneIdentifier, null))
         {
             var selectedDevice = SelectedDevices[deviceType];
             selectedDevice.Params = selectedDevice.Device?.DeserializeParams(value.Device.Params) ?? (IReadonlyContext)EmptyContext.Instance;
         }
         var consumerEntity = value.Consumers.Length > 0 ? value.Consumers[0] : new ParameterizedEntity();
         App.Instance.Registries.Registry <PluginStreamConsumer>().LookUp(consumerEntity.Id ?? NoneIdentifier, out var streamConsumer);
         SelectedConsumers[deviceType].Consumer = streamConsumer;
         SelectedConsumers[deviceType].Params   = streamConsumer?.DeserializeParams(consumerEntity.Params) ?? (IReadonlyContext)EmptyContext.Instance;
     }
 }
        private void InitializeConsumerConfigurationPanel(PluginStreamConsumer consumer)
        {
            ConsumerConfigurationPanel.Descriptors = AsGroup("", consumer?.Factory.Parameters.Cast <IDescriptor>().ToArray() ?? EmptyArray <IDescriptor> .Instance);
            ConsumerConfigurationPanel.Adapter     = consumer?.Factory as IParameterPresentAdapter;

            _currentConsumer = consumer;
            ScrollView.InvalidateScrollInfo();
            ScrollView.ScrollToTop();
            _needResizeWindow = true;
        }
        public bool ShowDialog(out IReadonlyContext deviceParams, out PluginStreamConsumer consumer, out IReadonlyContext consumerParams)
        {
            deviceParams   = EmptyContext.Instance;
            consumer       = null;
            consumerParams = EmptyContext.Instance;
            var dialogResult = ShowDialog() ?? false;

            if (!dialogResult)
            {
                return(false);
            }
            deviceParams   = DeviceConfigurationPanel.Context;
            consumer       = _currentConsumer;
            consumerParams = ConsumerConfigurationPanel.Context;
            return(true);
        }
        public DeviceConfigWindow([NotNull] PluginDevice device, [CanBeNull] IReadonlyContext deviceParams,
                                  [CanBeNull] PluginStreamConsumer consumer, [CanBeNull] IReadonlyContext consumerParams)
        {
            InitializeComponent();

            InitializeDeviceConfigurationPanel(device ?? throw new ArgumentNullException(nameof(device)));
            DeviceConfigurationPanel.Context = deviceParams ?? EmptyContext.Instance;

            var experimentPanel = ConsumerSelectionPanel.AddGroupPanel("Consumer", "Consumer Selection");

            _consumerComboBox = new ComboBox();
            _consumerComboBox.SelectionChanged += ConsumerComboBox_OnSelectionChanged;
            _consumerComboBox.ItemsSource       = GetConsumerList(device.DeviceType);
            _consumerComboBox.FindAndSelect(consumer?.Identifier, 0);
            experimentPanel.AddRow("Consumer", _consumerComboBox, ViewConstants.DefaultRowHeight);

            InitializeConsumerConfigurationPanel(consumer);
            ConsumerConfigurationPanel.Context = consumerParams ?? EmptyContext.Instance;

            Title = $"{device.Identifier} Configuration";
        }
 public ConsumerChangedEventArgs(PluginStreamConsumer oldConsumer, PluginStreamConsumer newConsumer, IReadonlyContext oldConsumerParams)
 {
     OldConsumer       = oldConsumer;
     NewConsumer       = newConsumer;
     OldConsumerParams = oldConsumerParams;
 }