diff options
| author | Roy Ben Shabat <Roy.mail.net@gmail.com> | 2020-04-22 13:28:13 +0300 |
|---|---|---|
| committer | Roy Ben Shabat <Roy.mail.net@gmail.com> | 2020-04-22 13:28:13 +0300 |
| commit | 5ed5ef7ef65731a9e509cb7a707722458da206d1 (patch) | |
| tree | c5bbe5086113a629c7a7c365698a95c971904c9b /Software/Visual_Studio | |
| parent | 34d7201f46c07a6311fcaa9df329ec22c5ebdb49 (diff) | |
| download | Tango-5ed5ef7ef65731a9e509cb7a707722458da206d1.tar.gz Tango-5ed5ef7ef65731a9e509cb7a707722458da206d1.zip | |
Working on FSE scripting.
Fixed issue with gradient generation using the color converter RGB only entry point for RGB and LAB brush stops.
Diffstat (limited to 'Software/Visual_Studio')
14 files changed, 254 insertions, 63 deletions
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); } } |
