using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.IO; using System.Linq; using System.Reflection; using System.Text; using System.Threading.Tasks; using Tango.Core.DI; using Tango.Core.Helpers; using Tango.FSE.Common; using Tango.FSE.Common.FSEApplication; using Tango.FSE.Procedures.Helpers; using Tango.Scripting.Basic; using Tango.SharedUI.Components; namespace Tango.FSE.Procedures.Dialogs { public class AddReferenceAssemblyViewVM : FSEDialogViewVM { private List _existing; [TangoInject] private IFSEApplicationManager ApplicationManager { get; set; } public SelectedObjectCollection ReferenceAssemblies { get; set; } public AddReferenceAssemblyViewVM(List existing) { _existing = existing; OKText = "DONE"; TangoIOC.Default.Inject(this); } public override void OnShow() { base.OnShow(); Task.Factory.StartNew(() => { System.Threading.Thread.Sleep(200); List source = new List(); var startPath = ApplicationManager.StartPath; foreach (var file in Directory.GetFiles(startPath, "*.dll")) { if (Path.GetFileName(file).StartsWith("Tango")) { source.Add(ReferenceAssembly.FromFile(Path.GetFileName(file))); } } String dotNetPath = ReferenceAssembliesHelper.GetDotNetDeveloperPackFolder(); foreach (var file in Directory.GetFiles(dotNetPath, "*.dll")) { source.Add(ReferenceAssembly.FromFile(Path.GetFileName(file))); } source = source.DistinctBy(x => x.Name).ToList(); List existingReferences = new List(); foreach (var asm in source) { if (_existing.Exists(x => x.Name == asm.Name)) { existingReferences.Add(asm); } } ReferenceAssemblies = new SelectedObjectCollection(source.ToObservableCollection(), existingReferences.ToObservableCollection()); RaisePropertyChanged(nameof(ReferenceAssemblies)); }); } } }