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.Commands; using Tango.MachineStudio.Common; using Tango.MachineStudio.UI.SupervisingController; using Tango.SharedUI; namespace Tango.MachineStudio.UI.ViewModels { public class MainViewVM : ViewModel { public ObservableCollection Modules { get; set; } private IStudioModule _currentModule; public IStudioModule CurrentModule { get { return _currentModule; } set { _currentModule = value; RaisePropertyChangedAuto(); } } private bool _isMenuOpened; public bool IsMenuOpened { get { return _isMenuOpened; } set { _isMenuOpened = value; RaisePropertyChangedAuto(); } } public RelayCommand StartModuleCommand { get; set; } public RelayCommand HomeCommand { get; set; } public String Text { get; set; } public MainViewVM(IMainView view) : base(view) { Modules = new ObservableCollection(); LoadModules(); Text = "Hi ROy"; StartModuleCommand = new RelayCommand(StartModule); HomeCommand = new RelayCommand(Home); } private void LoadModules() { string assemblyFolder = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); foreach (var file in Directory.GetFiles(assemblyFolder, "*.dll").Where(x => x.Contains("MachineStudio"))) { try { Assembly moduleAssembly = null; moduleAssembly = Assembly.LoadFrom(file); if (moduleAssembly != null) { foreach (var moduleType in moduleAssembly.GetTypes().Where(x => !x.IsInterface && typeof(IStudioModule).IsAssignableFrom(x))) { var module = Activator.CreateInstance(moduleType) as IStudioModule; Modules.Add(module); } } } catch { } } } private void Home() { StartModule(null); } private void StartModule(IStudioModule module) { IsMenuOpened = false; CurrentModule = module; } protected override void OnViewAttached() { base.OnViewAttached(); } } }