diff options
| author | Roy Ben-Shabat <Roy@Twine-s.com> | 2017-12-13 18:50:24 +0200 |
|---|---|---|
| committer | Roy Ben-Shabat <Roy@Twine-s.com> | 2017-12-13 18:50:24 +0200 |
| commit | 471daec51d0fc9437f8551d5d48c9fa2fb031871 (patch) | |
| tree | 1ecd78d48d761c18936b311d4e3d8eb8ebfb3cd1 /Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/ViewModels/MainViewVM.cs | |
| parent | 2a51f05523c1397b77eca5e5188520919205638c (diff) | |
| download | Tango-471daec51d0fc9437f8551d5d48c9fa2fb031871.tar.gz Tango-471daec51d0fc9437f8551d5d48c9fa2fb031871.zip | |
Machine Studio, Dynamic Module Loading...
Diffstat (limited to 'Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/ViewModels/MainViewVM.cs')
| -rw-r--r-- | Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/ViewModels/MainViewVM.cs | 81 |
1 files changed, 81 insertions, 0 deletions
diff --git a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/ViewModels/MainViewVM.cs b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/ViewModels/MainViewVM.cs index 00571007c..5fb4b436d 100644 --- a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/ViewModels/MainViewVM.cs +++ b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/ViewModels/MainViewVM.cs @@ -1,8 +1,13 @@ 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; @@ -10,11 +15,87 @@ namespace Tango.MachineStudio.UI.ViewModels { public class MainViewVM : ViewModel<IMainView> { + public ObservableCollection<IStudioModule> 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<IStudioModule> StartModuleCommand { get; set; } + + public RelayCommand HomeCommand { get; set; } + public String Text { get; set; } public MainViewVM(IMainView view) : base(view) { + Modules = new ObservableCollection<IStudioModule>(); + + LoadModules(); + Text = "Hi ROy"; + + StartModuleCommand = new RelayCommand<IStudioModule>(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; + String pdbFile = Path.ChangeExtension(file, ".pdb"); + var data = File.ReadAllBytes(file); + + if (File.Exists(pdbFile)) + { + var pdbData = File.ReadAllBytes(pdbFile); + moduleAssembly = Assembly.Load(data, pdbData); + } + else + { + moduleAssembly = Assembly.Load(data); + } + + 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() |
