예제 #1
0
        public void Load(XElement root)
        {
            if (root == null)
            {
                throw new ArgumentNullException(nameof(root));
            }
            m_assemblies = new List <ErrorCheckerAssembly>();
            var node = root.Element("ErrorCheckers");

            if (node != null)
            {
                var assemblyNodes = node.Elements("Assembly");
                foreach (var assemblyNode in assemblyNodes)
                {
                    var filename = assemblyNode.Attribute("filename").Value;
                    try
                    {
                        var assembly = new ErrorCheckerAssembly(filename);
                        m_assemblies.Add(assembly);

                        foreach (var checker in assemblyNode.Elements("Checker"))
                        {
                            assembly.SetEnabled(checker.Attribute("type").Value, bool.Parse(checker.Attribute("enabled").Value));
                        }
                    }
                    catch //https://msdn.microsoft.com/en-us/library/ms972962.aspx#pluginframework_topic5 Seems to suggest that a generic try catch is the way to go.
                    {
                        MessageBox.Show("Failed to load assembly '" + filename + "'. This assembly will not be saved in the config file.");
                    }
                }
            }
        }
예제 #2
0
        public void RefreshConfig(PluginsConfig pluginsConfig)
        {
            foreach (var pluginAssembly in pluginsConfig.UnfilteredAssemblies(MainAssembly.Include))
            {
                ErrorCheckerAssembly configECA = GetAssembly(pluginAssembly);

                if (configECA == null)
                {
                    configECA = new ErrorCheckerAssembly(pluginAssembly);
                    AddAssembly(configECA);
                }
            }
            Save();
        }
 private void btnOk_Click(object sender, EventArgs e)
 {
     foreach (var pluginAssembly in m_pluginsConfig.UnfilteredAssemblies(MainAssembly.Include))
     {
         ErrorCheckerAssembly configECA = m_config.GetAssembly(pluginAssembly);
         if (configECA == null)
         {
             configECA = new ErrorCheckerAssembly(pluginAssembly);
             m_config.AddAssembly(configECA);
         }
         foreach (ErrorCheckerController.ErrorCheckerData checker in configECA.Types)
         {
             var enabledCheckers = m_list.Items.Where(i => i.Checked);
             checker.Enabled = enabledCheckers.Any(c => c.Element.SerializeName == checker.SerializeName);
         }
     }
     m_config.Save();
     Close();
 }
        private void PopulateListBox()
        {
            foreach (var pluginAssembly in m_pluginsConfig.UnfilteredAssemblies(MainAssembly.Include))
            {
                ErrorCheckerAssembly configECA = m_config.GetAssembly(pluginAssembly);
                ErrorCheckerAssembly eca       = new ErrorCheckerAssembly(pluginAssembly);

                foreach (var checker in eca.Types)
                {
                    if (configECA != null && configECA.Types.Any(c => c.SerializeName == checker.SerializeName))
                    {
                        m_list.AddItem(checker, configECA.Types[checker.SerializeName].Enabled);
                    }
                    else
                    {
                        m_list.AddItem(checker, true);
                    }
                }
            }
        }
예제 #5
0
 public void AddAssembly(ErrorCheckerAssembly assembly)
 {
     m_assemblies.Add(assembly);
 }