aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/ViewModels/MainViewVM.cs
diff options
context:
space:
mode:
authorRoy Ben-Shabat <Roy@Twine-s.com>2017-12-13 18:50:24 +0200
committerRoy Ben-Shabat <Roy@Twine-s.com>2017-12-13 18:50:24 +0200
commit471daec51d0fc9437f8551d5d48c9fa2fb031871 (patch)
tree1ecd78d48d761c18936b311d4e3d8eb8ebfb3cd1 /Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/ViewModels/MainViewVM.cs
parent2a51f05523c1397b77eca5e5188520919205638c (diff)
downloadTango-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.cs81
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()