private void Image2DPropertyViewContent_Loaded(object source, RoutedEventArgs e)
        {
            DebugHelper.AssertUIThread();

            this.Loaded -= Image2DPropertyViewContent_Loaded;

            if ((this.pluginService != null) && (this.viewSettings != null))
            {
                foreach (IPlugin plugin in pluginService.Plugins)
                {
                    XElement pluginViewSettingsElement = viewSettings.GetPluginViewSettings(plugin.Id);

                    I2DVisualPlugin visualPlugin = plugin as I2DVisualPlugin;
                    if (visualPlugin != null)
                    {
                        ContentControl hostControl = new ContentControl();

                        IPluginViewSettings pluginViewSettings = visualPlugin.Add2DPropertyView(hostControl);

                        if (pluginViewSettings != null)
                        {
                            XElement pluginViewDataElement = null;
                            if (pluginViewSettingsElement != null)
                            {
                                pluginViewDataElement = pluginViewSettingsElement.Element("data");
                            }
                            pluginViewSettings.ReadFrom(pluginViewDataElement);
                        }

                        if ((pluginViewSettings != null) || (hostControl.Content != null))
                        {
                            PluginViewState pluginViewState = new PluginViewState(plugin, pluginViewSettings, hostControl);

                            this.pluginViewStates.Add(pluginViewState);

                            if (hostControl.Content != null)
                            {
                                this.List.Children.Add(hostControl);
                            }
                        }
                    }
                }
            }
        }
コード例 #2
0
        public void ShowSettings()
        {
            DebugHelper.AssertUIThread();

            if (this.viewSettings != null)
            {
                HashSet<KStudioEventStreamIdentifier> availableStreamIds = null;

                if (this.availableStreamsGetter != null)
                {
                    switch (this.eventType)
                    {
                        case EventType.Monitor:
                            availableStreamIds = this.availableStreamsGetter.GetAvailableMonitorStreams();
                            break;

                        case EventType.Inspection:
                            availableStreamIds = this.availableStreamsGetter.GetAvailableComboStreams();
                            break;
                    }
                }

                ObservableCollection<PluginViewState> pluginViewStatesCopy = new ObservableCollection<PluginViewState>();

                foreach (PluginViewState pluginViewState in this.pluginViewStates)
                {
                    PluginViewState pluginViewStateCopy = new PluginViewState(pluginViewState);
                    IPluginViewSettings pluginViewSettingsCopy = pluginViewStateCopy.PluginViewSettings;

                    if (pluginViewSettingsCopy != null)
                    {
                        pluginViewStatesCopy.Add(pluginViewStateCopy);

                        pluginViewSettingsCopy.CheckRequirementsSatisfied(availableStreamIds);
                    }
                }

                string viewTitle = this.Title;

                using (RenderViewSettings settings = new RenderViewSettings(viewTitle, pluginViewStatesCopy))
                {
                    RenderViewSettingsDialog settingsDialog = new RenderViewSettingsDialog()
                        {
                            DataContext = settings,
                            Owner = Window.GetWindow(this),
                            Title = this.SettingsTitle,
                        };

                    XElement viewSettingsElement = viewSettings.ViewSettingsElement;
                    settingsDialog.Width = settingsDialog.Width = XmlExtensions.GetAttribute(viewSettingsElement, "editWidth", settingsDialog.Width);
                    settingsDialog.Height = settingsDialog.Height = XmlExtensions.GetAttribute(viewSettingsElement, "editHeight", settingsDialog.Height);

                    settingsDialog.ShowDialog();

                    if (settingsDialog.DialogResult == true)
                    {
                        int order = 0;

                        foreach (PluginViewState pluginViewState in pluginViewStatesCopy)
                        {
                            XElement pluginViewElement = new XElement("plugin");

                            if (pluginViewState.PluginViewSettings != null)
                            {
                                XElement pluginViewDataElement = new XElement("data");
                                pluginViewState.PluginViewSettings.WriteTo(pluginViewDataElement);
                                pluginViewElement.Add(pluginViewDataElement);
                            }

                            pluginViewState.Order = order;

                            pluginViewElement.SetAttributeValue("enabled", pluginViewState.IsEnabled.ToString(CultureInfo.InvariantCulture));
                            pluginViewElement.SetAttributeValue("order", pluginViewState.Order.ToString(CultureInfo.InvariantCulture));

                            viewSettings.SetPluginViewSettings(pluginViewState.Plugin.Id, pluginViewElement);
                            ++order;
                        }

                        if (viewSettingsElement != null)
                        {
                            viewSettingsElement.SetAttributeValue("editWidth", settingsDialog.ActualWidth.ToString(CultureInfo.InvariantCulture));
                            viewSettingsElement.SetAttributeValue("editHeight", settingsDialog.ActualHeight.ToString(CultureInfo.InvariantCulture));
                        }

                        this.pluginViewStates.Clear();
                        this.pluginViewStates.AddRange(pluginViewStatesCopy);

                        this.OnSettingsChanged();
                    }
                }
            }
        }
コード例 #3
0
        private void InitializePlugins()
        {
            DebugHelper.AssertUIThread();

            if ((this.pluginService != null) && (this.viewSettings != null) && (this.pluginViewStates != null) && (this.pluginViewStates.Count == 0))
            {
                bool hasUserSet = false;
                Guid depthPluginId = new Guid(0x4fc932f6, 0x77a4, 0x4a22, 0xbe, 0x1f, 0x93, 0x42, 0x4d, 0x8e, 0xbb, 0x1a);
                Guid bodyPluginId = new Guid(0x85a371bc, 0x7bb2, 0x4534, 0x86, 0x5d, 0xb7, 0x2, 0x67, 0x54, 0xe8, 0x76);
                Guid accessoryPluginId = new Guid(0xd1ec6fb2, 0xb19d, 0x4285, 0x9b, 0x69, 0xdc, 0x92, 0x1f, 0xeb, 0xf6, 0x9f);

                Dictionary<Guid, PluginViewState> defaultEnabled = new Dictionary<Guid,PluginViewState>();
                defaultEnabled[depthPluginId] = null;
                defaultEnabled[bodyPluginId] = null;
                defaultEnabled[accessoryPluginId] = null;

                foreach (IPlugin plugin in pluginService.Plugins)
                {
                    if ((this.filterFunc == null) || this.filterFunc(plugin))
                    {
                        bool enabled = false;
                        int order = int.MaxValue;

                        XElement pluginViewSettingsElement = viewSettings.GetPluginViewSettings(plugin.Id);
                        enabled = XmlExtensions.GetAttribute(pluginViewSettingsElement, "enabled", enabled);
                        order = XmlExtensions.GetAttribute(pluginViewSettingsElement, "order", order);

                        if (enabled || (order != int.MaxValue)) // user has deliberately made changes
                        {
                            hasUserSet = true;
                        }

                        {
                            Panel hostControl;

                            IPluginViewSettings pluginViewSettings = AddView(plugin, out hostControl);
                            if (pluginViewSettings != null)
                            {
                                XElement pluginViewDataElement = null;
                                if (pluginViewSettingsElement != null)
                                {
                                    pluginViewDataElement = pluginViewSettingsElement.Element("data");
                                }
                                pluginViewSettings.ReadFrom(pluginViewDataElement);

                                PluginViewState pluginViewState = new PluginViewState(plugin, pluginViewSettings, hostControl)
                                    {
                                        IsEnabled = enabled,
                                        Order = order
                                    };

                                this.pluginViewStates.Add(pluginViewState);

                                PluginViewState temp;
                                if (defaultEnabled.TryGetValue(plugin.Id, out temp))
                                {
                                    if (temp == null)
                                    {
                                        defaultEnabled[plugin.Id] = pluginViewState;
                                    }
                                }
                            }
                        }
                    }
                }

                if (!hasUserSet)
                {
                    foreach (PluginViewState pluginViewState in defaultEnabled.Values)
                    {
                        if (pluginViewState != null)
                        {
                            pluginViewState.IsEnabled = true;
                        }
                    }
                }

                this.pluginViewStates.Sort(delegate(PluginViewState a, PluginViewState b)
                    {
                        int result = 0;
                        if (a == null)
                        {
                            if (b != null)
                            {
                                result = -1;
                            }
                        }
                        else
                        {
                            if (b == null)
                            {
                                result = 1;
                            }
                            else
                            {
                                result = a.Order.CompareTo(b.Order);
                                if (result == 0)
                                {
                                    result = a.Plugin.Id.CompareTo(b.Plugin.Id);
                                }
                            }
                        }

                        return result;
                    });
            }
        }