blob: 6544e643ca8e6b48b4537a772f83e9078c389766 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
|
using Google.Protobuf;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Tango.Core.Commands;
using Tango.FSE.Common;
using Tango.Integration.Operation;
using Tango.Scripting.Basic;
using Tango.Transport;
namespace Tango.FSE.Stubs.ViewModels
{
public class TestDesignerViewVM : FSEViewModel
{
private Project _project;
public Project Project
{
get { return _project; }
set { _project = value; RaisePropertyChangedAuto(); OnProjectChanged(); }
}
private ProjectRunner _projectRunner;
public ProjectRunner ProjectRunner
{
get { return _projectRunner; }
set { _projectRunner = value; RaisePropertyChangedAuto(); }
}
public ObservableCollection<Script> OpenScripts { get; set; }
private Script _selectedScript;
public Script SelectedScript
{
get { return _selectedScript; }
set { _selectedScript = value; RaisePropertyChangedAuto(); }
}
public RelayCommand<Script> OpenScriptCommand { get; set; }
public RelayCommand<Script> CloseScriptCommand { get; set; }
public RelayCommand RunProjectCommand { get; set; }
public RelayCommand StopProjectCommand { get; set; }
public TestDesignerViewVM()
{
OpenScripts = new ObservableCollection<Script>();
OpenScriptCommand = new RelayCommand<Script>(OpenScript);
CloseScriptCommand = new RelayCommand<Script>(CloseScript);
RunProjectCommand = new RelayCommand(RunProject);
StopProjectCommand = new RelayCommand(StopProject);
CreateNewProject();
}
private void StopProject()
{
ProjectRunner.Stop();
}
private async void RunProject()
{
try
{
var obj = await ProjectRunner.Run();
await NotificationProvider.ShowSuccess(obj.ToString());
}
catch (OperationCanceledException)
{
//Do nothing.
}
catch (Exception ex)
{
await NotificationProvider.ShowError(ex.FlattenMessage());
}
}
private void CloseScript(Script script)
{
script.IsSelected = false;
OpenScripts.Remove(script);
SelectedScript = OpenScripts.FirstOrDefault();
}
internal void OpenScript(Script script)
{
if (!OpenScripts.Contains(script))
{
OpenScripts.Add(script);
}
SelectedScript = script;
}
private void CreateNewProject()
{
var project = Project.New("test1", Encoding.UTF8.GetString(Properties.Resources.main_template));
project.Scripts.Add(Script.New("lib.csx", Encoding.UTF8.GetString(Properties.Resources.lib_template)));
project.ReferenceAssemblies.Add(new ReferenceAssembly() { FromType = this.GetType() });
project.ReferenceAssemblies.Add(new ReferenceAssembly() { FromType = typeof(PMR.Common.MessageType) });
project.ReferenceAssemblies.Add(new ReferenceAssembly() { FromType = typeof(ITransporter) });
project.ReferenceAssemblies.Add(new ReferenceAssembly() { FromType = typeof(IMachineOperator) });
project.ReferenceAssemblies.Add(new ReferenceAssembly() { FromType = typeof(IMessage) });
Project = project;
}
private void OnProjectChanged()
{
if (Project != null)
{
ProjectRunner = new ProjectRunner(Project);
}
else
{
ProjectRunner = null;
}
}
}
}
|