Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
05/05/10 11:37:57 (15 years ago)
Author:
gkronber
Message:

Refactored class names and fixed a dependency-selection bug. #994 (Clean up plugin infrastructure project)

File:
1 moved

Legend:

Unmodified
Added
Removed
  • trunk/sources/HeuristicLab.PluginInfrastructure/Advanced/InstalledPluginsView.cs

    r3624 r3627  
    3434
    3535namespace HeuristicLab.PluginInfrastructure.Advanced {
    36   internal partial class LocalPluginsView : InstallationManagerControl {
     36  internal partial class InstalledPluginsView : InstallationManagerControl {
    3737    private const string CheckingPluginsMessage = "Checking for updated plugins...";
    3838    private const string NoUpdatesAvailableMessage = "No updates available.";
     
    5858    }
    5959
    60     public LocalPluginsView()
     60    public InstalledPluginsView()
    6161      : base() {
    6262      InitializeComponent();
     
    171171        List<ListViewItem> modifiedItems = new List<ListViewItem>();
    172172        foreach (ListViewItem item in localPluginsListView.SelectedItems) {
    173           var plugin = (IPluginDescription)item.Tag;
    174173          modifiedItems.Add(item);
    175           // also uncheck all dependent plugins
    176           foreach (ListViewItem dependentItem in localPluginsListView.Items) {
    177             var dependent = (IPluginDescription)dependentItem.Tag;
    178             if (!dependentItem.Checked && (from dep in dependent.Dependencies
    179                                            where dep.Name == plugin.Name
    180                                            where dep.Version == plugin.Version
    181                                            select dep).Any()) {
    182               modifiedItems.Add(dependentItem);
     174          int oldItemsCount = 0;
     175          while (oldItemsCount < modifiedItems.Count) {
     176            oldItemsCount = modifiedItems.Count;
     177            var oldModifiedItems = new List<ListViewItem>(modifiedItems);
     178            foreach (var modifiedItem in oldModifiedItems) {
     179              var plugin = (IPluginDescription)modifiedItem.Tag;
     180              // also check all dependent plugins
     181              foreach (ListViewItem dependentItem in localPluginsListView.Items) {
     182                var dependent = (IPluginDescription)dependentItem.Tag;
     183                if (!modifiedItems.Contains(dependentItem) &&
     184                  !dependentItem.Checked && (from dep in dependent.Dependencies
     185                                             where dep.Name == plugin.Name
     186                                             where dep.Version == plugin.Version
     187                                             select dep).Any()) {
     188                  modifiedItems.Add(dependentItem);
     189                }
     190              }
    183191            }
    184192          }
Note: See TracChangeset for help on using the changeset viewer.