From 405f1ac07d78468c3e1a0ef1c0dc8956635c8677 Mon Sep 17 00:00:00 2001 From: Roy Ben Shabat Date: Wed, 22 Apr 2020 07:01:05 +0300 Subject: FSE work + fixed issue with personal access token on MS and PPC. --- .../Tango.Scripting.Basic/ReferenceAssembly.cs | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) (limited to 'Software/Visual_Studio/Scripting/Tango.Scripting.Basic/ReferenceAssembly.cs') diff --git a/Software/Visual_Studio/Scripting/Tango.Scripting.Basic/ReferenceAssembly.cs b/Software/Visual_Studio/Scripting/Tango.Scripting.Basic/ReferenceAssembly.cs index be66e026b..4b04270c1 100644 --- a/Software/Visual_Studio/Scripting/Tango.Scripting.Basic/ReferenceAssembly.cs +++ b/Software/Visual_Studio/Scripting/Tango.Scripting.Basic/ReferenceAssembly.cs @@ -1,5 +1,7 @@ -using System; +using Newtonsoft.Json; +using System; using System.Collections.Generic; +using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; @@ -8,11 +10,25 @@ namespace Tango.Scripting.Basic { public class ReferenceAssembly { - public Type FromType { get; set; } + public String File { get; set; } + [JsonIgnore] public String Name { - get { return FromType.Assembly.GetName().Name; } + get { return Path.GetFileNameWithoutExtension(File); } + } + + public static ReferenceAssembly FromType(Type type) + { + ReferenceAssembly reference = new ReferenceAssembly(); + var assembly = type.Assembly; + reference.File = assembly.Location; + return reference; + } + + public static ReferenceAssembly FromFile(String file) + { + return new ReferenceAssembly() { File = file }; } } } -- cgit v1.3.1 From 5ed5ef7ef65731a9e509cb7a707722458da206d1 Mon Sep 17 00:00:00 2001 From: Roy Ben Shabat Date: Wed, 22 Apr 2020 13:28:13 +0300 Subject: Working on FSE scripting. Fixed issue with gradient generation using the color converter RGB only entry point for RGB and LAB brush stops. --- Software/DB/PPC/Tango.mdf | Bin 75497472 -> 75497472 bytes Software/DB/PPC/Tango_log.ldf | Bin 53673984 -> 53673984 bytes .../Tango.FSE.Stubs/Contracts/ITestDesignerView.cs | 13 ++++ .../Dialogs/AddReferenceAssemblyViewVM.cs | 10 +-- .../FSE/Modules/Tango.FSE.Stubs/ProjectRunner.cs | 6 +- .../Modules/Tango.FSE.Stubs/Tango.FSE.Stubs.csproj | 3 + .../FSE/Modules/Tango.FSE.Stubs/TestProject.cs | 37 +++++++++++ .../ViewModels/TestDesignerViewVM.cs | 69 +++++++++++++++++---- .../Tango.FSE.Stubs/Views/TestDesignerView.xaml | 34 ++++++---- .../Visual_Studio/PPC/Tango.PPC.UI/app.manifest | 2 +- .../Scripting/Tango.Scripting.Basic/Project.cs | 40 +++++------- .../Tango.Scripting.Basic/ReferenceAssembly.cs | 54 ++++++++++++++++ .../Tango.Scripting.Editors/ScriptEditor.cs | 24 ++++++- .../ExtensionMethods/ConversionOutputExtensions.cs | 16 ++++- .../Tango.Core/Helpers/AssemblyHelper.cs | 7 +++ .../DefaultGradientGenerationConfiguration.cs | 2 +- 16 files changed, 254 insertions(+), 63 deletions(-) create mode 100644 Software/Visual_Studio/FSE/Modules/Tango.FSE.Stubs/Contracts/ITestDesignerView.cs create mode 100644 Software/Visual_Studio/FSE/Modules/Tango.FSE.Stubs/TestProject.cs (limited to 'Software/Visual_Studio/Scripting/Tango.Scripting.Basic/ReferenceAssembly.cs') diff --git a/Software/DB/PPC/Tango.mdf b/Software/DB/PPC/Tango.mdf index 30056be9a..1a0f8aa56 100644 Binary files a/Software/DB/PPC/Tango.mdf and b/Software/DB/PPC/Tango.mdf differ diff --git a/Software/DB/PPC/Tango_log.ldf b/Software/DB/PPC/Tango_log.ldf index 0509b635d..f1a5186a8 100644 Binary files a/Software/DB/PPC/Tango_log.ldf and b/Software/DB/PPC/Tango_log.ldf differ diff --git a/Software/Visual_Studio/FSE/Modules/Tango.FSE.Stubs/Contracts/ITestDesignerView.cs b/Software/Visual_Studio/FSE/Modules/Tango.FSE.Stubs/Contracts/ITestDesignerView.cs new file mode 100644 index 000000000..604d54571 --- /dev/null +++ b/Software/Visual_Studio/FSE/Modules/Tango.FSE.Stubs/Contracts/ITestDesignerView.cs @@ -0,0 +1,13 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Tango.FSE.Stubs.Contracts +{ + public interface ITestDesignerView + { + + } +} diff --git a/Software/Visual_Studio/FSE/Modules/Tango.FSE.Stubs/Dialogs/AddReferenceAssemblyViewVM.cs b/Software/Visual_Studio/FSE/Modules/Tango.FSE.Stubs/Dialogs/AddReferenceAssemblyViewVM.cs index 0f79da8d6..aa32f6a03 100644 --- a/Software/Visual_Studio/FSE/Modules/Tango.FSE.Stubs/Dialogs/AddReferenceAssemblyViewVM.cs +++ b/Software/Visual_Studio/FSE/Modules/Tango.FSE.Stubs/Dialogs/AddReferenceAssemblyViewVM.cs @@ -24,7 +24,7 @@ namespace Tango.FSE.Stubs.Dialogs public AddReferenceAssemblyViewVM(List existing) { - OKText = "ADD"; + OKText = "DONE"; TangoIOC.Default.Inject(this); @@ -34,11 +34,13 @@ namespace Tango.FSE.Stubs.Dialogs foreach (var file in Directory.GetFiles(startPath, "*.dll")) { - source.Add(ReferenceAssembly.FromFile(Path.GetFileName(file))); + if (Path.GetFileName(file).StartsWith("Tango")) + { + source.Add(ReferenceAssembly.FromFile(Path.GetFileName(file))); + } } - String dotNetVersion = AssemblyHelper.GetTargetFrameworkVersion(Assembly.GetExecutingAssembly()).ToString(); - String dotNetPath = $@"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v{dotNetVersion}"; + String dotNetPath = AssemblyHelper.GetAssemblyTargetFrameworkFolder(Assembly.GetExecutingAssembly()); foreach (var file in Directory.GetFiles(dotNetPath, "*.dll")) { diff --git a/Software/Visual_Studio/FSE/Modules/Tango.FSE.Stubs/ProjectRunner.cs b/Software/Visual_Studio/FSE/Modules/Tango.FSE.Stubs/ProjectRunner.cs index 3e3bddece..978455ff8 100644 --- a/Software/Visual_Studio/FSE/Modules/Tango.FSE.Stubs/ProjectRunner.cs +++ b/Software/Visual_Studio/FSE/Modules/Tango.FSE.Stubs/ProjectRunner.cs @@ -10,7 +10,7 @@ namespace Tango.FSE.Stubs { public class ProjectRunner : ExtendedObject { - private ProjectSession _currentSession; + private ProjectSession _currentSession; public event EventHandler StateChanged; @@ -51,9 +51,9 @@ namespace Tango.FSE.Stubs get { return State != ProjectRunnerState.Running && State != ProjectRunnerState.Compiling; } } - public Project Project { get; private set; } + public TestProject Project { get; private set; } - public ProjectRunner(Project project) + public ProjectRunner(TestProject project) { Project = project; } diff --git a/Software/Visual_Studio/FSE/Modules/Tango.FSE.Stubs/Tango.FSE.Stubs.csproj b/Software/Visual_Studio/FSE/Modules/Tango.FSE.Stubs/Tango.FSE.Stubs.csproj index 54d6f3507..d80488f27 100644 --- a/Software/Visual_Studio/FSE/Modules/Tango.FSE.Stubs/Tango.FSE.Stubs.csproj +++ b/Software/Visual_Studio/FSE/Modules/Tango.FSE.Stubs/Tango.FSE.Stubs.csproj @@ -78,6 +78,7 @@ ..\..\..\packages\System.Reactive.Windows.Threading.3.1.1\lib\net45\System.Reactive.Windows.Threading.dll + ..\..\..\packages\ControlzEx.3.0.2.4\lib\net45\System.Windows.Interactivity.dll @@ -95,6 +96,7 @@ + @@ -108,6 +110,7 @@ + diff --git a/Software/Visual_Studio/FSE/Modules/Tango.FSE.Stubs/TestProject.cs b/Software/Visual_Studio/FSE/Modules/Tango.FSE.Stubs/TestProject.cs new file mode 100644 index 000000000..533764392 --- /dev/null +++ b/Software/Visual_Studio/FSE/Modules/Tango.FSE.Stubs/TestProject.cs @@ -0,0 +1,37 @@ +using Google.Protobuf; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using Tango.Integration.Operation; +using Tango.Scripting.Basic; +using Tango.Transport; + +namespace Tango.FSE.Stubs +{ + public class TestProject : Project + { + public static TestProject New(String name) + { + TestProject project = new TestProject(); + project.Name = name; + + project.Scripts.Add(Script.New("Program.csx", Encoding.UTF8.GetString(Properties.Resources.main_template), true)); + project.Scripts.Add(Script.New("lib.csx", Encoding.UTF8.GetString(Properties.Resources.lib_template))); + + project.ReferenceAssemblies.Add(ReferenceAssembly.FromType(typeof(String))); + project.ReferenceAssemblies.Add(ReferenceAssembly.FromType(typeof(Enumerable))); + project.ReferenceAssemblies.Add(ReferenceAssembly.FromType(typeof(Form))); + project.ReferenceAssemblies.Add(ReferenceAssembly.FromType(typeof(TestProject))); + project.ReferenceAssemblies.Add(ReferenceAssembly.FromType(typeof(PMR.Common.MessageType))); + project.ReferenceAssemblies.Add(ReferenceAssembly.FromType(typeof(ITransporter))); + project.ReferenceAssemblies.Add(ReferenceAssembly.FromType(typeof(IMachineOperator))); + project.ReferenceAssemblies.Add(ReferenceAssembly.FromType(typeof(IMessage))); + project.ReferenceAssemblies.Add(ReferenceAssembly.FromType(typeof(System.Drawing.Point))); + + return project; + } + } +} diff --git a/Software/Visual_Studio/FSE/Modules/Tango.FSE.Stubs/ViewModels/TestDesignerViewVM.cs b/Software/Visual_Studio/FSE/Modules/Tango.FSE.Stubs/ViewModels/TestDesignerViewVM.cs index a63469f14..87835316d 100644 --- a/Software/Visual_Studio/FSE/Modules/Tango.FSE.Stubs/ViewModels/TestDesignerViewVM.cs +++ b/Software/Visual_Studio/FSE/Modules/Tango.FSE.Stubs/ViewModels/TestDesignerViewVM.cs @@ -3,9 +3,11 @@ using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Linq; +using System.Reflection; using System.Text; using System.Threading.Tasks; using System.Windows.Input; +using System.Windows.Threading; using Tango.Core; using Tango.Core.Commands; using Tango.Core.ExtensionMethods; @@ -29,6 +31,8 @@ namespace Tango.FSE.Stubs.ViewModels Results } + private DispatcherTimer _compileTimer; + #region Properties private ToolWindows _selectedToolWindow; @@ -38,8 +42,8 @@ namespace Tango.FSE.Stubs.ViewModels set { _selectedToolWindow = value; RaisePropertyChangedAuto(); } } - private Project _project; - public Project Project + private TestProject _project; + public TestProject Project { get { return _project; } set { _project = value; RaisePropertyChangedAuto(); OnProjectChanged(); } @@ -98,6 +102,13 @@ namespace Tango.FSE.Stubs.ViewModels set { _isLoadingSymbols = value; RaisePropertyChangedAuto(); } } + private ObservableCollection _loadedAssemblies; + public ObservableCollection LoadedAssemblies + { + get { return _loadedAssemblies; } + set { _loadedAssemblies = value; RaisePropertyChangedAuto(); } + } + #endregion #region Commands @@ -108,6 +119,7 @@ namespace Tango.FSE.Stubs.ViewModels public RelayCommand StopProjectCommand { get; set; } public RelayCommand CompileProjectCommand { get; set; } public RelayCommand AddReferenceAssemblyCommand { get; set; } + public RelayCommand RemoveReferenceAssemblyCommand { get; set; } #endregion @@ -117,6 +129,8 @@ namespace Tango.FSE.Stubs.ViewModels { Status = "Ready"; + LoadedAssemblies = new ObservableCollection(); + CompilationErrors = new List(); Logger = new TextController(); ScriptEditor.LoadingSymbolsProgress += ScriptEditor_LoadingSymbolsProgress; @@ -132,6 +146,12 @@ namespace Tango.FSE.Stubs.ViewModels StopProjectCommand = new RelayCommand(StopProject, () => ProjectRunner != null && ProjectRunner.IsRunning); CompileProjectCommand = new RelayCommand(async () => await CompileProject(), () => ProjectRunner != null && ProjectRunner.CanCompile); AddReferenceAssemblyCommand = new RelayCommand(AddReferenceAssembly); + RemoveReferenceAssemblyCommand = new RelayCommand(RemoveReferenceAssembly); + + _compileTimer = new DispatcherTimer(DispatcherPriority.ApplicationIdle); + _compileTimer.Interval = TimeSpan.FromSeconds(2); + _compileTimer.Tick += _compileTimer_Tick; + _compileTimer.Start(); CreateNewProject(); } @@ -268,6 +288,25 @@ namespace Tango.FSE.Stubs.ViewModels InvalidateRelayCommands(); } + private async void _compileTimer_Tick(object sender, EventArgs e) + { + if (!IsVisible) return; + + _compileTimer.Stop(); + + if (Project != null) + { + CompilationErrors = (await Project.Compile()).Errors; + + if (CompilationErrors.Count > 0) + { + SelectedToolWindow = ToolWindows.Errors; + } + } + + _compileTimer.Start(); + } + #endregion #region Private Methods @@ -283,22 +322,15 @@ namespace Tango.FSE.Stubs.ViewModels { Project.ReferenceAssemblies.Add(asm); } + + LoadReferenceAssemblies(); } } private void CreateNewProject() { - var project = Project.New("test1"); - project.Scripts.Add(Script.New("Program.csx", Encoding.UTF8.GetString(Properties.Resources.main_template), true)); - project.Scripts.Add(Script.New("lib.csx", Encoding.UTF8.GetString(Properties.Resources.lib_template))); - project.ReferenceAssemblies.Add(ReferenceAssembly.FromType(this.GetType())); - project.ReferenceAssemblies.Add(ReferenceAssembly.FromType(typeof(PMR.Common.MessageType))); - project.ReferenceAssemblies.Add(ReferenceAssembly.FromType(typeof(ITransporter))); - project.ReferenceAssemblies.Add(ReferenceAssembly.FromType(typeof(IMachineOperator))); - project.ReferenceAssemblies.Add(ReferenceAssembly.FromType(typeof(IMessage))); - project.ReferenceAssemblies.Add(ReferenceAssembly.FromType(typeof(System.Drawing.Point))); - - Project = project; + Project = TestProject.New("test1"); + LoadReferenceAssemblies(); } private void OnProjectChanged() @@ -316,6 +348,17 @@ namespace Tango.FSE.Stubs.ViewModels InvalidateRelayCommands(); } + private void LoadReferenceAssemblies() + { + LoadedAssemblies = Project.LoadReferenceAssemblies().ToObservableCollection(); + } + + private void RemoveReferenceAssembly(ReferenceAssembly assembly) + { + Project.ReferenceAssemblies.Remove(assembly); + LoadedAssemblies = Project.LoadReferenceAssemblies().ToObservableCollection(); + } + #endregion #region ITestLogger diff --git a/Software/Visual_Studio/FSE/Modules/Tango.FSE.Stubs/Views/TestDesignerView.xaml b/Software/Visual_Studio/FSE/Modules/Tango.FSE.Stubs/Views/TestDesignerView.xaml index 47df50d24..e434e4e53 100644 --- a/Software/Visual_Studio/FSE/Modules/Tango.FSE.Stubs/Views/TestDesignerView.xaml +++ b/Software/Visual_Studio/FSE/Modules/Tango.FSE.Stubs/Views/TestDesignerView.xaml @@ -14,6 +14,10 @@ mc:Ignorable="d" d:DesignHeight="720" d:DesignWidth="1280" d:DataContext="{d:DesignInstance Type=vm:TestDesignerViewVM, IsDesignTimeCreatable=False}" DataContext="{x:Static global:ViewModelLocator.TestDesignerViewVM}" Background="{StaticResource FSE_PrimaryBackgroundBrush}" Foreground="{StaticResource FSE_PrimaryForegroundBrush}"> + + + + @@ -262,7 +266,7 @@ @@ -367,20 +371,26 @@ - - - - - - - - - - - + + + + + diff --git a/Software/Visual_Studio/PPC/Tango.PPC.UI/app.manifest b/Software/Visual_Studio/PPC/Tango.PPC.UI/app.manifest index d72e75011..efc5f8179 100644 --- a/Software/Visual_Studio/PPC/Tango.PPC.UI/app.manifest +++ b/Software/Visual_Studio/PPC/Tango.PPC.UI/app.manifest @@ -16,7 +16,7 @@ Remove this element if your application requires this virtualization for backwards compatibility. --> - + diff --git a/Software/Visual_Studio/Scripting/Tango.Scripting.Basic/Project.cs b/Software/Visual_Studio/Scripting/Tango.Scripting.Basic/Project.cs index 14a9d94da..446e5b529 100644 --- a/Software/Visual_Studio/Scripting/Tango.Scripting.Basic/Project.cs +++ b/Software/Visual_Studio/Scripting/Tango.Scripting.Basic/Project.cs @@ -15,6 +15,7 @@ using Tango.Core; using Tango.Core.IO; using Tango.Scripting.Core; using System.IO; +using Tango.Core.Helpers; namespace Tango.Scripting.Basic { @@ -38,9 +39,6 @@ namespace Tango.Scripting.Basic public ObservableCollection ReferenceAssemblies { get; set; } - [JsonIgnore] - public ObservableCollection ReferenceAssembliesLoaded { get; set; } - public ObservableCollection