Пример #1
0
        private void btnImplementationsNew_Click(object sender, RoutedEventArgs e)
        {
            winNewComponentImplementation newComImplementation = new winNewComponentImplementation();

            newComImplementation.Owner             = this;
            newComImplementation.ImplementationSet = cbxImplementationsSet.Text;
            if (newComImplementation.ShowDialog() == true)
            {
                if (cbxImplementationsSet.SelectedItem == null)
                {
                    ComponentRepresentations.Add(new ImplementationConversionCollection()
                    {
                        ImplementationSet = cbxImplementationsSet.Text
                    });
                    cbxImplementationsSet.SelectedItem = ComponentRepresentations.Last();
                }

                ImplementationConversion conversion = newComImplementation.GetChosenComponent();

                // Don't allow duplicates
                if ((cbxImplementationsSet.SelectedItem as ImplementationConversionCollection).Items.FirstOrDefault(item => item.ImplementationName == conversion.ImplementationName) != null)
                {
                    TaskDialogInterop.TaskDialog.ShowMessage(this, "The item could not be added because it is already present.\r\n\r\nYou can add this item again if you delete its current representation first.", "Could Not Add Item", TaskDialogInterop.TaskDialogCommonButtons.Close, TaskDialogInterop.VistaTaskDialogIcon.Warning);
                }
                else
                {
                    (cbxImplementationsSet.SelectedItem as ImplementationConversionCollection).Items.Add(newComImplementation.GetChosenComponent());

                    // Add to ComponentHelper's list of conversions
                    ComponentDescription   description      = ComponentHelper.FindDescription(conversion.ToGUID);
                    ComponentConfiguration theConfiguration = description.Metadata.Configurations.FirstOrDefault(check => check.Name == conversion.ToConfiguration);
                    ComponentHelper.SetStandardComponent(cbxImplementationsSet.Text, conversion.ImplementationName, description, theConfiguration);
                }
            }
        }
        public ImplementationConversion GetChosenComponent()
        {
            ImplementationConversion item = cbxRepresentation.SelectedItem as ImplementationConversion;

            item.ImplementationName = tbxImplementItem.Text;
            return(item);
        }
        private void UpdateChoices()
        {
            cbxRepresentation.Items.Clear();

            if (tbxImplementItem.Text.Length == 0)
            {
                cbxRepresentation.IsEnabled = false;
                return;
            }

            cbxRepresentation.IsEnabled = true;

            foreach (ComponentDescription description in ComponentHelper.ComponentDescriptions.Where(c => c.Metadata.ImplementSet == this.ImplementationSet))
            {
                if (description.Metadata.Configurations.Count == 0 && description.Metadata.ImplementItem == tbxImplementItem.Text)
                {
                    ImplementationConversion item = new ImplementationConversion();
                    item.ToName = description.ComponentName;
                    item.ToGUID = description.Metadata.GUID;
                    if (description.Metadata.Icon != null)
                    {
                        item.ToIcon = description.Metadata.Icon;
                    }
                    cbxRepresentation.Items.Add(item);
                }
                else
                {
                    foreach (ComponentConfiguration configuration in description.Metadata.Configurations.Where(c => c.ImplementationName == tbxImplementItem.Text))
                    {
                        ImplementationConversion item = new ImplementationConversion();
                        item.ToName = description.ComponentName;
                        item.ToGUID = description.Metadata.GUID;
                        if (configuration.Icon == null && description.Metadata.Icon != null)
                        {
                            item.ToIcon = description.Metadata.Icon;
                        }
                        else
                        {
                            item.ToIcon = configuration.Icon;
                        }
                        item.ToConfiguration = configuration.Name;
                        cbxRepresentation.Items.Add(item);
                    }
                }
            }

            cbxRepresentation.SelectedIndex = 0;
        }
        public static List<ImplementationConversionCollection> LoadImplementationConversions()
        {
            var implementationConversions = new List<ImplementationConversionCollection>();

            if (File.Exists(implementationsFilePath))
            {
                try
                {
                    XmlDocument implDoc = new XmlDocument();
                    implDoc.Load(implementationsFilePath);

                    XmlNodeList sourceNodes = implDoc.SelectNodes("/implementations/source");
                    foreach (XmlNode sourceNode in sourceNodes)
                    {
                        string collection = sourceNode.Attributes["definitions"].InnerText;

                        ImplementationConversionCollection newCollection = new ImplementationConversionCollection();
                        newCollection.ImplementationSet = collection;

                        foreach (XmlNode childNode in sourceNode.ChildNodes)
                        {
                            if (childNode.Name != "add")
                                continue;

                            string item = childNode.Attributes["item"].InnerText;
                            Guid guid = Guid.Empty;
                            XmlNode guidNode = childNode.SelectSingleNode("guid");
                            if (guidNode != null)
                                guid = new Guid(guidNode.InnerText);
                            string configuration = null;
                            XmlNode configurationNode = childNode.SelectSingleNode("configuration");
                            if (configurationNode != null)
                                configuration = configurationNode.InnerText;

                            ComponentDescription description = ComponentHelper.FindDescription(guid);
                            if (description != null)
                            {
                                ImplementationConversion newConversion = new ImplementationConversion();
                                newConversion.ImplementationName = item;
                                newConversion.ToName = description.ComponentName;
                                newConversion.ToGUID = description.Metadata.GUID;

                                ComponentConfiguration theConfiguration = null;
                                if (configuration != null)
                                {
                                    theConfiguration = description.Metadata.Configurations.FirstOrDefault(check => check.Name == configuration);
                                    if (theConfiguration != null)
                                    {
                                        newConversion.ToConfiguration = theConfiguration.Name;
                                        if (theConfiguration.Icon != null)
                                            newConversion.ToIcon = theConfiguration.Icon;
                                        else
                                            newConversion.ToIcon = description.Metadata.Icon;
                                    }
                                    else if (description.Metadata.Icon != null)
                                        newConversion.ToIcon = description.Metadata.Icon;
                                }
                                else if (description.Metadata.Icon != null)
                                    newConversion.ToIcon = description.Metadata.Icon;

                                newCollection.Items.Add(newConversion);
                                ComponentHelper.SetStandardComponent(newCollection.ImplementationSet, newConversion.ImplementationName, description, theConfiguration);
                            }
                        }

                        implementationConversions.Add(newCollection);
                    }
                }
                catch (Exception)
                {
                    // Invalid XML file
                }
            }

            return implementationConversions;
        }
        private void UpdateChoices()
        {
            cbxRepresentation.Items.Clear();

            if (tbxImplementItem.Text.Length == 0)
            {
                cbxRepresentation.IsEnabled = false;
                return;
            }

            cbxRepresentation.IsEnabled = true;

            foreach (ComponentDescription description in ComponentHelper.ComponentDescriptions.Where(c => c.Metadata.ImplementSet == this.ImplementationSet))
            {
                if (description.Metadata.Configurations.Count == 0 && description.Metadata.ImplementItem == tbxImplementItem.Text)
                {
                    ImplementationConversion item = new ImplementationConversion();
                    item.ToName = description.ComponentName;
                    item.ToGUID = description.Metadata.GUID;
                    if (description.Metadata.Icon != null)
                        item.ToIcon = description.Metadata.Icon;
                    cbxRepresentation.Items.Add(item);
                }
                else
                {
                    foreach (ComponentConfiguration configuration in description.Metadata.Configurations.Where(c => c.ImplementationName == tbxImplementItem.Text))
                    {
                        ImplementationConversion item = new ImplementationConversion();
                        item.ToName = description.ComponentName;
                        item.ToGUID = description.Metadata.GUID;
                        if (configuration.Icon == null && description.Metadata.Icon != null)
                            item.ToIcon = description.Metadata.Icon;
                        else
                            item.ToIcon = configuration.Icon;
                        item.ToConfiguration = configuration.Name;
                        cbxRepresentation.Items.Add(item);
                    }
                }
            }

            cbxRepresentation.SelectedIndex = 0;
        }
        public static List <ImplementationConversionCollection> LoadImplementationConversions()
        {
            var implementationConversions = new List <ImplementationConversionCollection>();

            if (File.Exists(implementationsFilePath))
            {
                try
                {
                    XmlDocument implDoc = new XmlDocument();
                    implDoc.Load(implementationsFilePath);

                    XmlNodeList sourceNodes = implDoc.SelectNodes("/implementations/source");
                    foreach (XmlNode sourceNode in sourceNodes)
                    {
                        string collection = sourceNode.Attributes["definitions"].InnerText;

                        ImplementationConversionCollection newCollection = new ImplementationConversionCollection();
                        newCollection.ImplementationSet = collection;

                        foreach (XmlNode childNode in sourceNode.ChildNodes)
                        {
                            if (childNode.Name != "add")
                            {
                                continue;
                            }

                            string  item     = childNode.Attributes["item"].InnerText;
                            Guid    guid     = Guid.Empty;
                            XmlNode guidNode = childNode.SelectSingleNode("guid");
                            if (guidNode != null)
                            {
                                guid = new Guid(guidNode.InnerText);
                            }
                            string  configuration     = null;
                            XmlNode configurationNode = childNode.SelectSingleNode("configuration");
                            if (configurationNode != null)
                            {
                                configuration = configurationNode.InnerText;
                            }

                            ComponentDescription description = ComponentHelper.FindDescription(guid);
                            if (description != null)
                            {
                                ImplementationConversion newConversion = new ImplementationConversion();
                                newConversion.ImplementationName = item;
                                newConversion.ToName             = description.ComponentName;
                                newConversion.ToGUID             = description.Metadata.GUID;

                                ComponentConfiguration theConfiguration = null;
                                if (configuration != null)
                                {
                                    theConfiguration = description.Metadata.Configurations.FirstOrDefault(check => check.Name == configuration);
                                    if (theConfiguration != null)
                                    {
                                        newConversion.ToConfiguration = theConfiguration.Name;
                                        if (theConfiguration.Icon != null)
                                        {
                                            newConversion.ToIcon = theConfiguration.Icon;
                                        }
                                        else
                                        {
                                            newConversion.ToIcon = description.Metadata.Icon;
                                        }
                                    }
                                    else if (description.Metadata.Icon != null)
                                    {
                                        newConversion.ToIcon = description.Metadata.Icon;
                                    }
                                }
                                else if (description.Metadata.Icon != null)
                                {
                                    newConversion.ToIcon = description.Metadata.Icon;
                                }

                                newCollection.Items.Add(newConversion);
                                ComponentHelper.SetStandardComponent(newCollection.ImplementationSet, newConversion.ImplementationName, description, theConfiguration);
                            }
                        }

                        implementationConversions.Add(newCollection);
                    }
                }
                catch (Exception)
                {
                    // Invalid XML file
                }
            }

            return(implementationConversions);
        }