using Microsoft.Win32; using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows; using Tango.Core.Commands; using Tango.Scripting.Basic; using Tango.SharedUI; namespace Tango.Scripting.Test { public class MainWindowVM : ViewModel { public RelayCommand AddScriptCommand { get; set; } public RelayCommand RunCommand { get; set; } private Project _project; public Project Project { get { return _project; } set { _project = value; RaisePropertyChangedAuto(); } } public MainWindowVM() { Project = Project.New("untitled", Encoding.Default.GetString(Properties.Resources.template)); AddScriptCommand = new RelayCommand(AddScriptFile); RunCommand = new RelayCommand(RunProject); } private void AddScriptFile() { OpenFileDialog dlg = new OpenFileDialog(); dlg.Filter = "CSharp Script|*.csx"; if (dlg.ShowDialog().Value) { AddScript(dlg.FileName); } } private void AddScript(String file) { Project.Scripts.Add(Script.New(file)); } private async void RunProject() { var session = await Project.Run(null); session.StateChanged += (x, e) => { if (e.State == ProjectSessionState.Completed) { MessageBox.Show(e.ReturnValue.ToString()); } }; } } }