aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Software/DB/PPC/Tango.mdfbin75497472 -> 75497472 bytes
-rw-r--r--Software/DB/PPC/Tango_log.ldfbin53673984 -> 53673984 bytes
-rw-r--r--Software/Visual_Studio/FSE/Modules/Tango.FSE.Stubs/Contracts/ITestDesignerView.cs13
-rw-r--r--Software/Visual_Studio/FSE/Modules/Tango.FSE.Stubs/Dialogs/AddReferenceAssemblyViewVM.cs10
-rw-r--r--Software/Visual_Studio/FSE/Modules/Tango.FSE.Stubs/ProjectRunner.cs6
-rw-r--r--Software/Visual_Studio/FSE/Modules/Tango.FSE.Stubs/Tango.FSE.Stubs.csproj3
-rw-r--r--Software/Visual_Studio/FSE/Modules/Tango.FSE.Stubs/TestProject.cs37
-rw-r--r--Software/Visual_Studio/FSE/Modules/Tango.FSE.Stubs/ViewModels/TestDesignerViewVM.cs69
-rw-r--r--Software/Visual_Studio/FSE/Modules/Tango.FSE.Stubs/Views/TestDesignerView.xaml34
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.UI/app.manifest2
-rw-r--r--Software/Visual_Studio/Scripting/Tango.Scripting.Basic/Project.cs40
-rw-r--r--Software/Visual_Studio/Scripting/Tango.Scripting.Basic/ReferenceAssembly.cs54
-rw-r--r--Software/Visual_Studio/Scripting/Tango.Scripting.Editors/ScriptEditor.cs24
-rw-r--r--Software/Visual_Studio/Tango.ColorConversion/ExtensionMethods/ConversionOutputExtensions.cs16
-rw-r--r--Software/Visual_Studio/Tango.Core/Helpers/AssemblyHelper.cs7
-rw-r--r--Software/Visual_Studio/Tango.Integration/Operation/DefaultGradientGenerationConfiguration.cs2
16 files changed, 254 insertions, 63 deletions
diff --git a/Software/DB/PPC/Tango.mdf b/Software/DB/PPC/Tango.mdf
index 30056be9a..1a0f8aa56 100644
--- a/Software/DB/PPC/Tango.mdf
+++ b/Software/DB/PPC/Tango.mdf
Binary files differ
diff --git a/Software/DB/PPC/Tango_log.ldf b/Software/DB/PPC/Tango_log.ldf
index 0509b635d..f1a5186a8 100644
--- a/Software/DB/PPC/Tango_log.ldf
+++ b/Software/DB/PPC/Tango_log.ldf
Binary files 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<ReferenceAssembly> 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<ITestContext> _currentSession;
+ private ProjectSession<TestContext> _currentSession;
public event EventHandler<ProjectRunnerState> StateChanged;
@@ -51,9 +51,9 @@ namespace Tango.FSE.Stubs
get { return State != ProjectRunnerState.Running && State != ProjectRunnerState.Compiling; }
}
- public Project<ITestContext> Project { get; private set; }
+ public TestProject Project { get; private set; }
- public ProjectRunner(Project<ITestContext> 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 @@
<HintPath>..\..\..\packages\System.Reactive.Windows.Threading.3.1.1\lib\net45\System.Reactive.Windows.Threading.dll</HintPath>
</Reference>
<Reference Include="System.Windows" />
+ <Reference Include="System.Windows.Forms" />
<Reference Include="System.Windows.Interactivity, Version=4.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<HintPath>..\..\..\packages\ControlzEx.3.0.2.4\lib\net45\System.Windows.Interactivity.dll</HintPath>
</Reference>
@@ -95,6 +96,7 @@
<Reference Include="PresentationFramework" />
</ItemGroup>
<ItemGroup>
+ <Compile Include="Contracts\ITestDesignerView.cs" />
<Compile Include="Designer\ProjectModel.cs" />
<Compile Include="Designer\ScriptTabModel.cs" />
<Compile Include="Dialogs\AddReferenceAssemblyView.xaml.cs">
@@ -108,6 +110,7 @@
<Compile Include="Result.cs" />
<Compile Include="ResultType.cs" />
<Compile Include="TestContext.cs" />
+ <Compile Include="TestProject.cs" />
<Compile Include="ViewModelLocator.cs" />
<Compile Include="StubsModule.cs" />
<Compile Include="ViewModels\MainViewVM.cs" />
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<TestContext>
+ {
+ 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<ITestContext> _project;
- public Project<ITestContext> 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<Assembly> _loadedAssemblies;
+ public ObservableCollection<Assembly> 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<ReferenceAssembly> RemoveReferenceAssemblyCommand { get; set; }
#endregion
@@ -117,6 +129,8 @@ namespace Tango.FSE.Stubs.ViewModels
{
Status = "Ready";
+ LoadedAssemblies = new ObservableCollection<Assembly>();
+
CompilationErrors = new List<CompilationError>();
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<ReferenceAssembly>(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<ITestContext>.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}">
+ <UserControl.Resources>
+ <components:BindingProxy x:Key="proxy" Data="{Binding}" />
+ </UserControl.Resources>
+
<UserControl.InputBindings>
<KeyBinding Key="F5" Command="{Binding RunProjectCommand}" />
<KeyBinding Key="F6" Command="{Binding CompileProjectCommand}" />
@@ -262,7 +266,7 @@
<ItemsControl.ItemTemplate>
<DataTemplate>
<editors:ScriptEditor
- ReferenceAssemblies="{Binding RelativeSource={RelativeSource AncestorType=UserControl},Path=DataContext.Project.ReferenceAssembliesLoaded}"
+ ReferenceAssemblies="{Binding RelativeSource={RelativeSource AncestorType=UserControl},Path=DataContext.LoadedAssemblies}"
AdditionalScripts="{Binding RelativeSource={RelativeSource AncestorType=UserControl},Path=DataContext.Project.AdditionalScripts}"
Code="{Binding Code,Mode=TwoWay}" />
</DataTemplate>
@@ -367,20 +371,26 @@
<DockPanel Margin="5 10 0 0">
<controls:ToggleIconButton Width="20" Height="20" x:Name="chkReference" UncheckedIcon="ChevronRight" CheckedIcon="ChevronDown" Cursor="Hand" IsChecked="True" />
- <TextBlock Margin="5 0 0 0" VerticalAlignment="Center" Text="Reference Assemblies">
- <TextBlock.ContextMenu>
- <ContextMenu>
- <MenuItem Header="Add Reference" Command="{Binding AddReferenceAssemblyCommand}">
- <MenuItem.Icon>
- <material:PackIcon Kind="LibraryEdit" />
- </MenuItem.Icon>
- </MenuItem>
- </ContextMenu>
- </TextBlock.ContextMenu>
- </TextBlock>
+ <controls:IconButton VerticalAlignment="Center" DockPanel.Dock="Right" Icon="Add" Foreground="{StaticResource FSE_GreenBrush}" Command="{Binding AddReferenceAssemblyCommand}" ToolTip="Add Reference" />
+ <TextBlock Margin="5 0 0 0" VerticalAlignment="Center" Text="Reference Assemblies"/>
</DockPanel>
<ListBox Margin="25 5 0 0" ItemsSource="{Binding Project.ReferenceAssemblies}" Visibility="{Binding ElementName=chkReference,Path=IsChecked,Converter={StaticResource BooleanToVisibilityConverter}}">
+ <ListBox.ItemContainerStyle>
+ <Style TargetType="ListBoxItem" BasedOn="{StaticResource {x:Type ListBoxItem}}">
+ <Setter Property="ContextMenu">
+ <Setter.Value>
+ <ContextMenu>
+ <MenuItem Header="Remove" Command="{Binding Source={StaticResource proxy},Path=Data.RemoveReferenceAssemblyCommand}" CommandParameter="{Binding}">
+ <MenuItem.Icon>
+ <material:PackIcon Kind="Delete" Foreground="{StaticResource FSE_RedBrush}" />
+ </MenuItem.Icon>
+ </MenuItem>
+ </ContextMenu>
+ </Setter.Value>
+ </Setter>
+ </Style>
+ </ListBox.ItemContainerStyle>
<ListBox.ItemTemplate>
<DataTemplate>
<DockPanel>
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.
-->
- <requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
+ <!--<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />-->
</requestedPrivileges>
</security>
</trustInfo>
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<ReferenceAssembly> ReferenceAssemblies { get; set; }
- [JsonIgnore]
- public ObservableCollection<Assembly> ReferenceAssembliesLoaded { get; set; }
-
public ObservableCollection<Script> Scripts { get; set; }
[JsonIgnore]
@@ -57,38 +55,20 @@ namespace Tango.Scripting.Basic
ApartmentState = ApartmentState.MTA;
ReferenceAssemblies = new ObservableCollection<ReferenceAssembly>();
- ReferenceAssemblies.CollectionChanged += ReferenceAssemblies_CollectionChanged;
- ReferenceAssembliesLoaded = new ObservableCollection<Assembly>();
Scripts = new ObservableCollection<Script>();
Scripts.CollectionChanged += (x, e) => { RaisePropertyChanged(nameof(AdditionalScripts)); };
}
- private void ReferenceAssemblies_CollectionChanged(object sender, System.Collections.Specialized.NotifyCollectionChangedEventArgs e)
- {
- LoadReferenceAssemblies();
- }
-
- private void LoadReferenceAssemblies()
- {
- ReferenceAssembliesLoaded.Clear();
-
- foreach (var asm in ReferenceAssemblies)
- {
- ReferenceAssembliesLoaded.Add(Assembly.LoadFrom(asm.File));
- }
- }
-
- public static Project<T> New(String name)
+ public static TProject New<TProject, TContext>(String name) where TProject : Project<TContext> where TContext : IContext
{
- Project<T> p = new Project<T>();
+ TProject p = Activator.CreateInstance<TProject>();
p.Name = name;
p.ReferenceAssemblies.Add(ReferenceAssembly.FromType(typeof(String)));
p.ReferenceAssemblies.Add(ReferenceAssembly.FromType(typeof(Enumerable)));
p.ReferenceAssemblies.Add(ReferenceAssembly.FromType(typeof(Form)));
- p.ReferenceAssemblies.Add(ReferenceAssembly.FromType(typeof(Project<T>)));
return p;
}
@@ -146,7 +126,7 @@ namespace Tango.Scripting.Basic
}
}
- var scriptOptions = ScriptOptions.Default.WithReferences(ReferenceAssembliesLoaded);
+ var scriptOptions = ScriptOptions.Default.WithReferences(LoadReferenceAssemblies());
var s = CSharpScript.Create<object>(mainScriptCode, scriptOptions, typeof(GlobalObject<T>));
result.Script = s;
@@ -215,5 +195,17 @@ namespace Tango.Scripting.Basic
return session;
}
+
+ public List<Assembly> LoadReferenceAssemblies()
+ {
+ List<Assembly> loadedAssemblies = new List<Assembly>();
+
+ foreach (var asm in ReferenceAssemblies)
+ {
+ loadedAssemblies.Add(asm.Load());
+ }
+
+ return loadedAssemblies;
+ }
}
}
diff --git a/Software/Visual_Studio/Scripting/Tango.Scripting.Basic/ReferenceAssembly.cs b/Software/Visual_Studio/Scripting/Tango.Scripting.Basic/ReferenceAssembly.cs
index 4b04270c1..665bd7ab1 100644
--- a/Software/Visual_Studio/Scripting/Tango.Scripting.Basic/ReferenceAssembly.cs
+++ b/Software/Visual_Studio/Scripting/Tango.Scripting.Basic/ReferenceAssembly.cs
@@ -3,15 +3,26 @@ using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
+using System.Reflection;
using System.Text;
using System.Threading.Tasks;
+using Tango.Core.Helpers;
namespace Tango.Scripting.Basic
{
public class ReferenceAssembly
{
+ private static Dictionary<String, Assembly> _assembliesCache;
+
+ static ReferenceAssembly()
+ {
+ _assembliesCache = new Dictionary<string, Assembly>();
+ }
+
public String File { get; set; }
+ public Type HintType { get; set; }
+
[JsonIgnore]
public String Name
{
@@ -21,6 +32,7 @@ namespace Tango.Scripting.Basic
public static ReferenceAssembly FromType(Type type)
{
ReferenceAssembly reference = new ReferenceAssembly();
+ reference.HintType = type;
var assembly = type.Assembly;
reference.File = assembly.Location;
return reference;
@@ -30,5 +42,47 @@ namespace Tango.Scripting.Basic
{
return new ReferenceAssembly() { File = file };
}
+
+ public Assembly Load()
+ {
+ Assembly loaded = null;
+ if (!_assembliesCache.TryGetValue(Name, out loaded))
+ {
+ try
+ {
+ if (HintType != null)
+ {
+ loaded = HintType.Assembly;
+ }
+ else
+ {
+ loaded = Assembly.LoadFrom(File);
+ }
+
+ _assembliesCache.Add(Name, loaded);
+ }
+ catch
+ {
+ try
+ {
+ String dotNetPath = AssemblyHelper.GetAssemblyTargetFrameworkFolder(Assembly.GetExecutingAssembly());
+ String dotNetAsm = Path.Combine(dotNetPath, Name + ".dll");
+ loaded = Assembly.LoadFrom(dotNetAsm);
+ _assembliesCache.Add(Name, loaded);
+ }
+ catch (Exception ex)
+ {
+ throw new FileNotFoundException($"Could not load assembly '{Name}'. File not found.", ex);
+ }
+ }
+ }
+
+ return loaded;
+ }
+
+ public override string ToString()
+ {
+ return Name;
+ }
}
}
diff --git a/Software/Visual_Studio/Scripting/Tango.Scripting.Editors/ScriptEditor.cs b/Software/Visual_Studio/Scripting/Tango.Scripting.Editors/ScriptEditor.cs
index 29af14ddc..d1ea9de43 100644
--- a/Software/Visual_Studio/Scripting/Tango.Scripting.Editors/ScriptEditor.cs
+++ b/Software/Visual_Studio/Scripting/Tango.Scripting.Editors/ScriptEditor.cs
@@ -133,7 +133,7 @@ namespace Tango.Scripting.Editors
set { SetValue(ReferenceAssembliesProperty, value); }
}
public static readonly DependencyProperty ReferenceAssembliesProperty =
- DependencyProperty.Register("ReferenceAssemblies", typeof(ObservableCollection<Assembly>), typeof(ScriptEditor), new PropertyMetadata(null));
+ DependencyProperty.Register("ReferenceAssemblies", typeof(ObservableCollection<Assembly>), typeof(ScriptEditor), new PropertyMetadata(null, (d, e) => (d as ScriptEditor).OnReferenceAssembliesChanged()));
public Object CurrentPopupContent
{
@@ -1520,7 +1520,7 @@ namespace Tango.Scripting.Editors
foreach (var knownType in _knownTypesCache.ToList().Select(x => x.Value).ToList())
{
- if (usings.Exists(x => knownType.Type.Namespace == x))
+ if (usings.Exists(x => knownType.Type.Namespace == x) && assemblies.Exists(x => x == knownType.Type.Assembly))
{
lock (_knownTypes)
{
@@ -2080,5 +2080,25 @@ namespace Tango.Scripting.Editors
}
#endregion
+
+ #region Reference Assemblies Changed
+
+ private void OnReferenceAssembliesChanged()
+ {
+ if (ReferenceAssemblies != null)
+ {
+ ReferenceAssemblies.CollectionChanged -= ReferenceAssemblies_CollectionChanged;
+ ReferenceAssemblies.CollectionChanged += ReferenceAssemblies_CollectionChanged;
+
+ InvalidateHighlighting();
+ }
+ }
+
+ private void ReferenceAssemblies_CollectionChanged(object sender, System.Collections.Specialized.NotifyCollectionChangedEventArgs e)
+ {
+ InvalidateHighlighting();
+ }
+
+ #endregion
}
}
diff --git a/Software/Visual_Studio/Tango.ColorConversion/ExtensionMethods/ConversionOutputExtensions.cs b/Software/Visual_Studio/Tango.ColorConversion/ExtensionMethods/ConversionOutputExtensions.cs
index f56fcbef9..bb94918f8 100644
--- a/Software/Visual_Studio/Tango.ColorConversion/ExtensionMethods/ConversionOutputExtensions.cs
+++ b/Software/Visual_Studio/Tango.ColorConversion/ExtensionMethods/ConversionOutputExtensions.cs
@@ -4,6 +4,7 @@ using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Tango.BL.Entities;
+using Tango.BL.Enumerations;
using Tango.ColorConversion;
using Tango.PMR.ColorLab;
@@ -58,9 +59,18 @@ public static class ConversionOutputExtensions
public static void ApplyOnBrushStop(this ConversionOutput conversionOutput, BrushStop stop, ProcessParametersTable processTable)
{
- stop.Red = conversionOutput.SingleCoordinates.Red;
- stop.Green = conversionOutput.SingleCoordinates.Green;
- stop.Blue = conversionOutput.SingleCoordinates.Blue;
+ if (stop.ColorSpace != null && stop.ColorSpace.Code == ColorSpaces.LAB.ToInt32())
+ {
+ stop.L = conversionOutput.SingleCoordinates.L;
+ stop.A = conversionOutput.SingleCoordinates.A;
+ stop.B = conversionOutput.SingleCoordinates.B;
+ }
+ else
+ {
+ stop.Red = conversionOutput.SingleCoordinates.Red;
+ stop.Green = conversionOutput.SingleCoordinates.Green;
+ stop.Blue = conversionOutput.SingleCoordinates.Blue;
+ }
ApplyOnBrushStopLiquidVolumes(conversionOutput, stop, processTable);
}
diff --git a/Software/Visual_Studio/Tango.Core/Helpers/AssemblyHelper.cs b/Software/Visual_Studio/Tango.Core/Helpers/AssemblyHelper.cs
index 59d36533e..27daa223b 100644
--- a/Software/Visual_Studio/Tango.Core/Helpers/AssemblyHelper.cs
+++ b/Software/Visual_Studio/Tango.Core/Helpers/AssemblyHelper.cs
@@ -61,5 +61,12 @@ namespace Tango.Core.Helpers
return Version.Parse(attribute.FrameworkName.Replace(".NETFramework,Version=v", ""));
}
+
+ public static String GetAssemblyTargetFrameworkFolder(Assembly assembly)
+ {
+ String dotNetVersion = AssemblyHelper.GetTargetFrameworkVersion(Assembly.GetExecutingAssembly()).ToString();
+ String dotNetPath = $@"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v{dotNetVersion}";
+ return dotNetPath;
+ }
}
}
diff --git a/Software/Visual_Studio/Tango.Integration/Operation/DefaultGradientGenerationConfiguration.cs b/Software/Visual_Studio/Tango.Integration/Operation/DefaultGradientGenerationConfiguration.cs
index b94266344..ee4e2097e 100644
--- a/Software/Visual_Studio/Tango.Integration/Operation/DefaultGradientGenerationConfiguration.cs
+++ b/Software/Visual_Studio/Tango.Integration/Operation/DefaultGradientGenerationConfiguration.cs
@@ -94,7 +94,7 @@ namespace Tango.Integration.Operation
if ((stop.BrushColorSpace == ColorSpaces.RGB || stop.BrushColorSpace == ColorSpaces.LAB) && !stop.IsTransparent && !stop.IsWhite)
{
- var output = converter.Convert(segment.Job, stop.Color, false);
+ var output = converter.Convert(stop, false);
output.ApplyOnBrushStop(stop, processParameters);
}
}