void LoadGallery()
{
object s = galleryTree.SaveStatus ();
galleryTree.Clear ();
string rep = GetRepoSelection ();
AddinRepositoryEntry[] reps;
if (rep == AllRepoMarker)
reps = service.Repositories.GetAvailableAddins (RepositorySearchFlags.LatestVersionsOnly);
else
reps = service.Repositories.GetAvailableAddins (rep, RepositorySearchFlags.LatestVersionsOnly);
int count = 0;
foreach (AddinRepositoryEntry arep in reps)
{
if (!Services.InApplicationNamespace (service, arep.Addin.Id))
continue;
if (IsFiltered (arep.Addin))
continue;
AddinStatus status = AddinStatus.NotInstalled;
// Find whatever version is installed
Addin sinfo = AddinManager.Registry.GetAddin (Addin.GetIdName (arep.Addin.Id));
if (sinfo != null) {
status |= AddinStatus.Installed;
if (!sinfo.Enabled || Services.GetMissingDependencies (sinfo).Any())
status |= AddinStatus.Disabled;
if (Addin.CompareVersions (sinfo.Version, arep.Addin.Version) > 0)
status |= AddinStatus.HasUpdate;
}
galleryTree.AddAddin (arep.Addin, arep, status);
count++;
}
if (count > 0)
galleryTree.RestoreStatus (s);
else
galleryTree.ShowEmptyMessage ();
galleryTabLabel.Text = Catalog.GetString ("Gallery");
if (filterEntry.Text.Length != 0 && count > 0)
galleryTabLabel.Text += " (" + count + ")";
}