- Timestamp:
- 03/22/10 16:53:27 (14 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/sources/HeuristicLab.PluginAdministrator/3.3/PluginListView.cs
r3081 r3179 47 47 } 48 48 49 private List<IPluginDescription> checkedPlugins = new List<IPluginDescription>();49 private Dictionary<IPluginDescription, bool> checkedPlugins = new Dictionary<IPluginDescription, bool>(); 50 50 public IEnumerable<IPluginDescription> CheckedPlugins { 51 51 get { 52 return checkedPlugins; 52 return from pair in checkedPlugins 53 where pair.Value 54 select pair.Key; 53 55 } 54 56 } … … 77 79 private ListViewItem CreateListViewItem(IPluginDescription plugin) { 78 80 var item = new ListViewItem(new string[] { plugin.Name, plugin.Version.ToString() }); 79 item.Checked = (from p in checkedPlugins where p.Name == plugin.Name where p.Version == plugin.Version select p).Any();81 item.Checked = checkedPlugins.ContainsKey(plugin) ? checkedPlugins[plugin] : false; 80 82 item.Tag = plugin; 81 83 return item; … … 89 91 // also check all dependencies 90 92 MarkPluginChecked(plugin); 91 modifiedPlugins.Add(plugin); 93 if (!modifiedPlugins.Contains(plugin)) 94 modifiedPlugins.Add(plugin); 92 95 foreach (var dep in GetAllDependencies(plugin)) { 93 96 MarkPluginChecked(dep); 94 modifiedPlugins.Add(dep); 97 if (!modifiedPlugins.Contains(dep)) 98 modifiedPlugins.Add(dep); 95 99 } 96 100 } … … 102 106 // also uncheck all dependent plugins 103 107 MarkPluginUnchecked(plugin); 104 modifiedPlugins.Add(plugin); 108 if (!modifiedPlugins.Contains(plugin)) 109 modifiedPlugins.Add(plugin); 105 110 foreach (var dep in GetAllDependents(plugin)) { 106 111 MarkPluginUnchecked(dep); 107 modifiedPlugins.Add(dep); 112 if (!modifiedPlugins.Contains(dep)) 113 modifiedPlugins.Add(dep); 108 114 } 109 115 … … 115 121 116 122 private void MarkPluginChecked(IPluginDescription plugin) { 117 var matching = from p in checkedPlugins 118 where p.Name == plugin.Name 119 where p.Version == plugin.Version 120 select p; 121 if (!matching.Any()) checkedPlugins.Add(plugin); 123 checkedPlugins[plugin] = true; 122 124 } 123 125 124 126 private void MarkPluginUnchecked(IPluginDescription plugin) { 125 checkedPlugins = (from p in checkedPlugins 126 where p.Name != plugin.Name || 127 p.Version != plugin.Version 128 select p).ToList(); 127 checkedPlugins[plugin] = false; 129 128 } 130 129 … … 148 147 149 148 private IEnumerable<IPluginDescription> GetAllDependencies(IPluginDescription plugin) { 149 HashSet<IPluginDescription> yieldedPlugins = new HashSet<IPluginDescription>(); 150 150 foreach (var dep in plugin.Dependencies) { 151 151 foreach (var recDep in GetAllDependencies(dep)) { 152 yield return recDep; 152 if (!yieldedPlugins.Contains(recDep)) { 153 yieldedPlugins.Add(recDep); 154 yield return recDep; 155 } 153 156 } 154 yield return dep; 157 if (!yieldedPlugins.Contains(dep)) { 158 yieldedPlugins.Add(dep); 159 yield return dep; 160 } 155 161 } 156 162 }
Note: See TracChangeset
for help on using the changeset viewer.