diff options
| author | Roy Ben Shabat <Roy.mail.net@gmail.com> | 2020-07-23 22:07:44 +0300 |
|---|---|---|
| committer | Roy Ben Shabat <Roy.mail.net@gmail.com> | 2020-07-23 22:07:44 +0300 |
| commit | 84b3861addbb2f60c8b45e74d2748d4de5c39d86 (patch) | |
| tree | 006a6575c226df5437dc3f0d48a2715cd1885f7b | |
| parent | 449cc62b5bd91e5233edc5c0042d5792c8aa2972 (diff) | |
| download | Tango-84b3861addbb2f60c8b45e74d2748d4de5c39d86.tar.gz Tango-84b3861addbb2f60c8b45e74d2748d4de5c39d86.zip | |
Implemented find & replace.
Improved symbols loading and highlighting.
Implemented font +/-.
10 files changed, 901 insertions, 72 deletions
diff --git a/Software/Visual_Studio/FSE/Modules/Tango.FSE.Stubs/Contracts/IProcedureDesignerView.cs b/Software/Visual_Studio/FSE/Modules/Tango.FSE.Stubs/Contracts/IProcedureDesignerView.cs index eaa8562f8..4dfb62cb7 100644 --- a/Software/Visual_Studio/FSE/Modules/Tango.FSE.Stubs/Contracts/IProcedureDesignerView.cs +++ b/Software/Visual_Studio/FSE/Modules/Tango.FSE.Stubs/Contracts/IProcedureDesignerView.cs @@ -13,5 +13,11 @@ namespace Tango.FSE.Procedures.Contracts void HighlightCode(int position, int length, int line); void InsertCode(String code); void InvalidateHighlighting(); + void Find(String text); + void ReplaceNext(String text, String replace); + int ReplaceAll(String text, String replace); + void FocusCurrentEditor(); + void ColorizeKeyword(String text); + void ResetColrization(); } } diff --git a/Software/Visual_Studio/FSE/Modules/Tango.FSE.Stubs/Resources/lib_template.csx b/Software/Visual_Studio/FSE/Modules/Tango.FSE.Stubs/Resources/lib_template.csx index 0588f3ba3..8690a23b4 100644 --- a/Software/Visual_Studio/FSE/Modules/Tango.FSE.Stubs/Resources/lib_template.csx +++ b/Software/Visual_Studio/FSE/Modules/Tango.FSE.Stubs/Resources/lib_template.csx @@ -6,7 +6,6 @@ using System.Linq; using System.Text; using System.Threading; using System.Threading.Tasks; -using System.Windows.Forms; using System.Drawing; using Google.Protobuf; using Tango.BL.Enumerations; diff --git a/Software/Visual_Studio/FSE/Modules/Tango.FSE.Stubs/Resources/main_template.csx b/Software/Visual_Studio/FSE/Modules/Tango.FSE.Stubs/Resources/main_template.csx index 90b432a2f..6f564682f 100644 --- a/Software/Visual_Studio/FSE/Modules/Tango.FSE.Stubs/Resources/main_template.csx +++ b/Software/Visual_Studio/FSE/Modules/Tango.FSE.Stubs/Resources/main_template.csx @@ -6,7 +6,6 @@ using System.Linq; using System.Text; using System.Threading; using System.Threading.Tasks; -using System.Windows.Forms; using System.Drawing; using Google.Protobuf; using Tango.BL.Enumerations; diff --git a/Software/Visual_Studio/FSE/Modules/Tango.FSE.Stubs/Tango.FSE.Procedures_wgi5baya_wpftmp.csproj b/Software/Visual_Studio/FSE/Modules/Tango.FSE.Stubs/Tango.FSE.Procedures_wgi5baya_wpftmp.csproj new file mode 100644 index 000000000..5503559aa --- /dev/null +++ b/Software/Visual_Studio/FSE/Modules/Tango.FSE.Stubs/Tango.FSE.Procedures_wgi5baya_wpftmp.csproj @@ -0,0 +1,403 @@ +<?xml version="1.0" encoding="utf-8"?> +<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" /> + <PropertyGroup> + <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> + <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> + <ProjectGuid>{1754F846-4763-4000-807F-C7BFAA145DB2}</ProjectGuid> + <OutputType>library</OutputType> + <RootNamespace>Tango.FSE.Procedures</RootNamespace> + <AssemblyName>Tango.FSE.Procedures</AssemblyName> + <TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion> + <FileAlignment>512</FileAlignment> + <ProjectTypeGuids>{60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids> + <WarningLevel>4</WarningLevel> + <Deterministic>true</Deterministic> + <NuGetPackageImportStamp> + </NuGetPackageImportStamp> + </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> + <DebugSymbols>true</DebugSymbols> + <DebugType>full</DebugType> + <Optimize>false</Optimize> + <OutputPath>..\..\..\Build\FSE\Debug\</OutputPath> + <DefineConstants>DEBUG;TRACE</DefineConstants> + <ErrorReport>prompt</ErrorReport> + <WarningLevel>4</WarningLevel> + <DocumentationFile>..\..\..\Build\FSE\Debug\Tango.FSE.Procedures.xml</DocumentationFile> + <NoWarn>1591</NoWarn> + </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> + <DebugType>pdbonly</DebugType> + <Optimize>true</Optimize> + <OutputPath>..\..\..\Build\FSE\Release\</OutputPath> + <DefineConstants>TRACE</DefineConstants> + <ErrorReport>prompt</ErrorReport> + <WarningLevel>4</WarningLevel> + <DocumentationFile>..\..\..\Build\FSE\Release\Tango.FSE.Procedures.xml</DocumentationFile> + </PropertyGroup> + <ItemGroup> + </ItemGroup> + <ItemGroup> + <Compile Include="ArrayParsingStyle.cs" /> + <Compile Include="Contracts\IProcedureDesignerView.cs" /> + <Compile Include="Converters\BitmapToBitmapSourceConverter.cs" /> + <Compile Include="CreateGroup.cs" /> + <Compile Include="CreateItem.cs" /> + <Compile Include="CSV\CsvColumn.cs" /> + <Compile Include="CSV\CsvRow.cs" /> + <Compile Include="Designer\ProjectModel.cs" /> + <Compile Include="Designer\ScriptTabModel.cs" /> + <Compile Include="Dialogs\AddReferenceAssemblyView.xaml.cs"> + <DependentUpon>AddReferenceAssemblyView.xaml</DependentUpon> + </Compile> + <Compile Include="Dialogs\AddReferenceAssemblyViewVM.cs" /> + <Compile Include="Dialogs\LoadPublishedProjectView.xaml.cs"> + <DependentUpon>LoadPublishedProjectView.xaml</DependentUpon> + </Compile> + <Compile Include="Dialogs\LoadPublishedProjectViewVM.cs" /> + <Compile Include="Dialogs\ResultGridView.xaml.cs"> + <DependentUpon>ResultGridView.xaml</DependentUpon> + </Compile> + <Compile Include="Dialogs\ResultGridViewVM.cs" /> + <Compile Include="Dialogs\SaveFileDialogView.xaml.cs"> + <DependentUpon>SaveFileDialogView.xaml</DependentUpon> + </Compile> + <Compile Include="Dialogs\OpenFileDialogView.xaml.cs"> + <DependentUpon>OpenFileDialogView.xaml</DependentUpon> + </Compile> + <Compile Include="Dialogs\SaveFileDialogViewVM.cs" /> + <Compile Include="Dialogs\OpenFileDialogViewVM.cs" /> + <Compile Include="Dialogs\UserInputDialogView.xaml.cs"> + <DependentUpon>UserInputDialogView.xaml</DependentUpon> + </Compile> + <Compile Include="Dialogs\UserInputDialogViewVM.cs" /> + <Compile Include="IProcedureContext.cs" /> + <Compile Include="IProcedureLogger.cs" /> + <Compile Include="Messages\ProcedureProjectPublishedOrSuppressed.cs" /> + <Compile Include="ProjectRunner.cs" /> + <Compile Include="ProjectRunnerState.cs" /> + <Compile Include="Result.cs" /> + <Compile Include="ResultType.cs" /> + <Compile Include="ProcedureContext.cs" /> + <Compile Include="ProcedureFailedException.cs" /> + <Compile Include="ProcedureInput.cs" /> + <Compile Include="ProcedureProject.cs" /> + <Compile Include="UserInput.cs" /> + <Compile Include="ViewModelLocator.cs" /> + <Compile Include="ProceduresModule.cs" /> + <Compile Include="ViewModels\MainViewVM.cs" /> + <Compile Include="ViewModels\ProcedureDesignerViewVM.cs" /> + <Compile Include="ViewModels\ProcedureRunnerViewVM.cs" /> + <Compile Include="ViewModels\ResultsViewVM.cs" /> + <Compile Include="Views\MainView.xaml.cs"> + <DependentUpon>MainView.xaml</DependentUpon> + </Compile> + <Compile Include="Views\ProcedureDesignerView.xaml.cs"> + <DependentUpon>ProcedureDesignerView.xaml</DependentUpon> + </Compile> + <Compile Include="Views\ProcedureRunnerCatalogView.xaml.cs"> + <DependentUpon>ProcedureRunnerCatalogView.xaml</DependentUpon> + </Compile> + <Compile Include="Views\ProcedureRunnerExecutionView.xaml.cs"> + <DependentUpon>ProcedureRunnerExecutionView.xaml</DependentUpon> + </Compile> + <Compile Include="Views\ProcedureRunnerView.xaml.cs"> + <DependentUpon>ProcedureRunnerView.xaml</DependentUpon> + </Compile> + <Compile Include="Views\ResultsView.xaml.cs"> + <DependentUpon>ResultsView.xaml</DependentUpon> + </Compile> + </ItemGroup> + <ItemGroup> + <Compile Include="Properties\AssemblyInfo.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Properties\Resources.Designer.cs"> + <AutoGen>True</AutoGen> + <DesignTime>True</DesignTime> + <DependentUpon>Resources.resx</DependentUpon> + </Compile> + <Compile Include="Properties\Settings.Designer.cs"> + <AutoGen>True</AutoGen> + <DependentUpon>Settings.settings</DependentUpon> + <DesignTimeSharedInput>True</DesignTimeSharedInput> + </Compile> + <EmbeddedResource Include="Properties\Resources.resx"> + <Generator>ResXFileCodeGenerator</Generator> + <LastGenOutput>Resources.Designer.cs</LastGenOutput> + </EmbeddedResource> + <None Include="app.config"> + <SubType>Designer</SubType> + </None> + <None Include="packages.config" /> + <None Include="Properties\Settings.settings"> + <Generator>SettingsSingleFileGenerator</Generator> + <LastGenOutput>Settings.Designer.cs</LastGenOutput> + </None> + <None Include="Resources\lib_template.csx" /> + <None Include="Resources\main_template.csx" /> + </ItemGroup> + <ItemGroup> + <ProjectReference Include="..\..\..\Scripting\Tango.Scripting.Basic\Tango.Scripting.Basic.csproj"> + <Project>{2b29a699-1d65-463a-8250-a2ce81d019c9}</Project> + <Name>Tango.Scripting.Basic</Name> + </ProjectReference> + <ProjectReference Include="..\..\..\Scripting\Tango.Scripting.Core\Tango.Scripting.Core.csproj"> + <Project>{5812e1c6-abaa-4066-94ac-971c27b4f46a}</Project> + <Name>Tango.Scripting.Core</Name> + </ProjectReference> + <ProjectReference Include="..\..\..\Scripting\Tango.Scripting.Editors\Tango.Scripting.Editors.csproj"> + <Project>{da62fa39-668b-47a6-b0f2-d2c1daf777b0}</Project> + <Name>Tango.Scripting.Editors</Name> + </ProjectReference> + <ProjectReference Include="..\..\..\SideChains\RealTimeGraphX-master\RealTimeGraphX.WPF\RealTimeGraphX.WPF.csproj"> + <Project>{6b9774f7-960d-438e-ad81-c6b9be328d50}</Project> + <Name>RealTimeGraphX.WPF</Name> + </ProjectReference> + <ProjectReference Include="..\..\..\SideChains\RealTimeGraphX-master\RealTimeGraphX\RealTimeGraphX.csproj"> + <Project>{f13a489c-80ee-4cd0-bdd4-92d959215646}</Project> + <Name>RealTimeGraphX</Name> + </ProjectReference> + <ProjectReference Include="..\..\..\SideChains\Tango.AutoComplete\Tango.AutoComplete.csproj"> + <Project>{bb2abb74-ba58-4812-83aa-ec8171f42df4}</Project> + <Name>Tango.AutoComplete</Name> + </ProjectReference> + <ProjectReference Include="..\..\..\Tango.BL\Tango.BL.csproj"> + <Project>{f441feee-322a-4943-b566-110e12fd3b72}</Project> + <Name>Tango.BL</Name> + </ProjectReference> + <ProjectReference Include="..\..\..\Tango.Core\Tango.Core.csproj"> + <Project>{a34ee0f0-649d-41c8-8489-b6f1cc6924ee}</Project> + <Name>Tango.Core</Name> + </ProjectReference> + <ProjectReference Include="..\..\..\Tango.CSV\Tango.CSV.csproj"> + <Project>{58e8825f-0c96-449c-b320-1e82b0aa876b}</Project> + <Name>Tango.CSV</Name> + </ProjectReference> + <ProjectReference Include="..\..\..\Tango.Integration\Tango.Integration.csproj"> + <Project>{4206ac58-3b57-4699-8835-90bf6db01a61}</Project> + <Name>Tango.Integration</Name> + </ProjectReference> + <ProjectReference Include="..\..\..\Tango.Logging\Tango.Logging.csproj"> + <Project>{bc932dbd-7cdb-488c-99e4-f02cf441f55e}</Project> + <Name>Tango.Logging</Name> + </ProjectReference> + <ProjectReference Include="..\..\..\Tango.PMR\Tango.PMR.csproj"> + <Project>{e4927038-348d-4295-aaf4-861c58cb3943}</Project> + <Name>Tango.PMR</Name> + </ProjectReference> + <ProjectReference Include="..\..\..\Tango.Settings\Tango.Settings.csproj"> + <Project>{d8f1ad85-526a-4f50-b6dc-d437af63d8d8}</Project> + <Name>Tango.Settings</Name> + </ProjectReference> + <ProjectReference Include="..\..\..\Tango.SharedUI\Tango.SharedUI.csproj"> + <Project>{8491d07b-c1f6-4b62-a412-41b9fd2d6538}</Project> + <Name>Tango.SharedUI</Name> + </ProjectReference> + <ProjectReference Include="..\..\..\Tango.Transport\Tango.Transport.csproj"> + <Project>{74e700b0-1156-4126-be40-ee450d3c3026}</Project> + <Name>Tango.Transport</Name> + </ProjectReference> + <ProjectReference Include="..\..\Tango.FSE.BL\Tango.FSE.BL.csproj"> + <Project>{834c81c3-09b5-45d7-be12-e7d1e6655a7c}</Project> + <Name>Tango.FSE.BL</Name> + </ProjectReference> + <ProjectReference Include="..\..\Tango.FSE.Common\Tango.FSE.Common.csproj"> + <Project>{bc37cccb-7392-4f78-8d1c-e9629e6e046e}</Project> + <Name>Tango.FSE.Common</Name> + </ProjectReference> + </ItemGroup> + <ItemGroup> + </ItemGroup> + <ItemGroup> + </ItemGroup> + <ItemGroup> + </ItemGroup> + <ItemGroup> + </ItemGroup> + <ItemGroup> + </ItemGroup> + <ItemGroup> + </ItemGroup> + <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> + <Import Project="..\..\..\packages\MaterialDesignThemes.3.0.1\build\MaterialDesignThemes.targets" Condition="Exists('..\..\..\packages\MaterialDesignThemes.3.0.1\build\MaterialDesignThemes.targets')" /> + <Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild"> + <PropertyGroup> + <ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText> + </PropertyGroup> + <Error Condition="!Exists('..\..\..\packages\MaterialDesignThemes.3.0.1\build\MaterialDesignThemes.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\..\packages\MaterialDesignThemes.3.0.1\build\MaterialDesignThemes.targets'))" /> + </Target> + <ItemGroup> + <ReferencePath Include="C:\DATA\Development\Tango\Software\Visual_Studio\packages\ControlzEx.3.0.2.4\lib\net45\ControlzEx.dll" /> + <ReferencePath Include="C:\DATA\Development\Tango\Software\Visual_Studio\packages\EntityFramework.6.2.0\lib\net45\EntityFramework.dll" /> + <ReferencePath Include="C:\DATA\Development\Tango\Software\Visual_Studio\packages\EntityFramework.6.2.0\lib\net45\EntityFramework.SqlServer.dll" /> + <ReferencePath Include="C:\DATA\Development\Tango\Software\Visual_Studio\packages\Google.Protobuf.3.4.1\lib\net45\Google.Protobuf.dll" /> + <ReferencePath Include="C:\DATA\Development\Tango\Software\Visual_Studio\packages\MahApps.Metro.1.6.5\lib\net46\MahApps.Metro.dll" /> + <ReferencePath Include="C:\DATA\Development\Tango\Software\Visual_Studio\packages\MaterialDesignColors.1.2.2\lib\net45\MaterialDesignColors.dll" /> + <ReferencePath Include="C:\DATA\Development\Tango\Software\Visual_Studio\packages\MaterialDesignThemes.3.0.1\lib\net45\MaterialDesignThemes.Wpf.dll" /> + <ReferencePath Include="C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.6.1\Microsoft.CSharp.dll" /> + <ReferencePath Include="C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\Microsoft.Win32.Primitives.dll" /> + <ReferencePath Include="C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.6.1\mscorlib.dll" /> + <ReferencePath Include="C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\netfx.force.conflicts.dll" /> + <ReferencePath Include="C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\netstandard.dll" /> + <ReferencePath Include="C:\DATA\Development\Tango\Software\Visual_Studio\packages\Newtonsoft.Json.9.0.1\lib\net45\Newtonsoft.Json.dll" /> + <ReferencePath Include="C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.6.1\PresentationCore.dll" /> + <ReferencePath Include="C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.6.1\PresentationFramework.dll" /> + <ReferencePath Include="C:\DATA\Development\Tango\Software\Visual_Studio\SideChains\RealTimeGraphX-master\RealTimeGraphX\bin\Debug\netstandard2.0\RealTimeGraphX.dll" /> + <ReferencePath Include="C:\DATA\Development\Tango\Software\Visual_Studio\SideChains\RealTimeGraphX-master\RealTimeGraphX.WPF\bin\Debug\RealTimeGraphX.WPF.dll" /> + <ReferencePath Include="C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.AppContext.dll" /> + <ReferencePath Include="C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Collections.Concurrent.dll" /> + <ReferencePath Include="C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Collections.dll" /> + <ReferencePath Include="C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Collections.NonGeneric.dll" /> + <ReferencePath Include="C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Collections.Specialized.dll" /> + <ReferencePath Include="C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.6.1\System.ComponentModel.DataAnnotations.dll" /> + <ReferencePath Include="C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.ComponentModel.dll" /> + <ReferencePath Include="C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.ComponentModel.EventBasedAsync.dll" /> + <ReferencePath Include="C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.ComponentModel.Primitives.dll" /> + <ReferencePath Include="C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.ComponentModel.TypeConverter.dll" /> + <ReferencePath Include="C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Console.dll" /> + <ReferencePath Include="C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.6.1\System.Core.dll" /> + <ReferencePath Include="C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Data.Common.dll" /> + <ReferencePath Include="C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.6.1\System.Data.DataSetExtensions.dll" /> + <ReferencePath Include="C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.6.1\System.Data.dll" /> + <ReferencePath Include="C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Diagnostics.Contracts.dll" /> + <ReferencePath Include="C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Diagnostics.Debug.dll" /> + <ReferencePath Include="C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Diagnostics.FileVersionInfo.dll" /> + <ReferencePath Include="C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Diagnostics.Process.dll" /> + <ReferencePath Include="C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Diagnostics.StackTrace.dll" /> + <ReferencePath Include="C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Diagnostics.TextWriterTraceListener.dll" /> + <ReferencePath Include="C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Diagnostics.Tools.dll" /> + <ReferencePath Include="C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Diagnostics.TraceSource.dll" /> + <ReferencePath Include="C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Diagnostics.Tracing.dll" /> + <ReferencePath Include="C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.6.1\System.dll" /> + <ReferencePath Include="C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.6.1\System.Drawing.dll" /> + <ReferencePath Include="C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Drawing.Primitives.dll" /> + <ReferencePath Include="C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Dynamic.Runtime.dll" /> + <ReferencePath Include="C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Globalization.Calendars.dll" /> + <ReferencePath Include="C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Globalization.dll" /> + <ReferencePath Include="C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Globalization.Extensions.dll" /> + <ReferencePath Include="C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.IO.Compression.dll" /> + <ReferencePath Include="C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.IO.Compression.ZipFile.dll" /> + <ReferencePath Include="C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.IO.dll" /> + <ReferencePath Include="C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.IO.FileSystem.dll" /> + <ReferencePath Include="C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.IO.FileSystem.DriveInfo.dll" /> + <ReferencePath Include="C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.IO.FileSystem.Primitives.dll" /> + <ReferencePath Include="C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.IO.FileSystem.Watcher.dll" /> + <ReferencePath Include="C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.IO.IsolatedStorage.dll" /> + <ReferencePath Include="C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.IO.MemoryMappedFiles.dll" /> + <ReferencePath Include="C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.IO.Pipes.dll" /> + <ReferencePath Include="C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.IO.UnmanagedMemoryStream.dll" /> + <ReferencePath Include="C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Linq.dll" /> + <ReferencePath Include="C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Linq.Expressions.dll" /> + <ReferencePath Include="C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Linq.Parallel.dll" /> + <ReferencePath Include="C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Linq.Queryable.dll" /> + <ReferencePath Include="C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Net.Http.dll" /> + <ReferencePath Include="C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Net.NameResolution.dll" /> + <ReferencePath Include="C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Net.NetworkInformation.dll" /> + <ReferencePath Include="C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Net.Ping.dll" /> + <ReferencePath Include="C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Net.Primitives.dll" /> + <ReferencePath Include="C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Net.Requests.dll" /> + <ReferencePath Include="C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Net.Security.dll" /> + <ReferencePath Include="C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Net.Sockets.dll" /> + <ReferencePath Include="C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Net.WebHeaderCollection.dll" /> + <ReferencePath Include="C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Net.WebSockets.Client.dll" /> + <ReferencePath Include="C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Net.WebSockets.dll" /> + <ReferencePath Include="C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.ObjectModel.dll" /> + <ReferencePath Include="C:\DATA\Development\Tango\Software\Visual_Studio\packages\System.Reactive.Core.3.1.1\lib\net46\System.Reactive.Core.dll" /> + <ReferencePath Include="C:\DATA\Development\Tango\Software\Visual_Studio\packages\System.Reactive.Interfaces.3.1.1\lib\net45\System.Reactive.Interfaces.dll" /> + <ReferencePath Include="C:\DATA\Development\Tango\Software\Visual_Studio\packages\System.Reactive.Linq.3.1.1\lib\net46\System.Reactive.Linq.dll" /> + <ReferencePath Include="C:\DATA\Development\Tango\Software\Visual_Studio\packages\System.Reactive.PlatformServices.3.1.1\lib\net46\System.Reactive.PlatformServices.dll" /> + <ReferencePath Include="C:\DATA\Development\Tango\Software\Visual_Studio\packages\System.Reactive.Windows.Threading.3.1.1\lib\net45\System.Reactive.Windows.Threading.dll" /> + <ReferencePath Include="C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Reflection.dll" /> + <ReferencePath Include="C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Reflection.Extensions.dll" /> + <ReferencePath Include="C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Reflection.Primitives.dll" /> + <ReferencePath Include="C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Resources.Reader.dll" /> + <ReferencePath Include="C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Resources.ResourceManager.dll" /> + <ReferencePath Include="C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Resources.Writer.dll" /> + <ReferencePath Include="C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Runtime.CompilerServices.VisualC.dll" /> + <ReferencePath Include="C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Runtime.dll" /> + <ReferencePath Include="C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Runtime.Extensions.dll" /> + <ReferencePath Include="C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Runtime.Handles.dll" /> + <ReferencePath Include="C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Runtime.InteropServices.dll" /> + <ReferencePath Include="C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Runtime.InteropServices.RuntimeInformation.dll" /> + <ReferencePath Include="C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Runtime.Numerics.dll" /> + <ReferencePath Include="C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Runtime.Serialization.Formatters.dll" /> + <ReferencePath Include="C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Runtime.Serialization.Json.dll" /> + <ReferencePath Include="C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Runtime.Serialization.Primitives.dll" /> + <ReferencePath Include="C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Runtime.Serialization.Xml.dll" /> + <ReferencePath Include="C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Security.Claims.dll" /> + <ReferencePath Include="C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Security.Cryptography.Algorithms.dll" /> + <ReferencePath Include="C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Security.Cryptography.Csp.dll" /> + <ReferencePath Include="C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Security.Cryptography.Encoding.dll" /> + <ReferencePath Include="C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Security.Cryptography.Primitives.dll" /> + <ReferencePath Include="C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Security.Cryptography.X509Certificates.dll" /> + <ReferencePath Include="C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Security.Principal.dll" /> + <ReferencePath Include="C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Security.SecureString.dll" /> + <ReferencePath Include="C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Text.Encoding.dll" /> + <ReferencePath Include="C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Text.Encoding.Extensions.dll" /> + <ReferencePath Include="C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Text.RegularExpressions.dll" /> + <ReferencePath Include="C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Threading.dll" /> + <ReferencePath Include="C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Threading.Overlapped.dll" /> + <ReferencePath Include="C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Threading.Tasks.dll" /> + <ReferencePath Include="C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Threading.Tasks.Parallel.dll" /> + <ReferencePath Include="C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Threading.Thread.dll" /> + <ReferencePath Include="C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Threading.ThreadPool.dll" /> + <ReferencePath Include="C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Threading.Timer.dll" /> + <ReferencePath Include="C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.ValueTuple.dll" /> + <ReferencePath Include="C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.6.1\System.Windows.dll" /> + <ReferencePath Include="C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.6.1\System.Windows.Forms.dll" /> + <ReferencePath Include="C:\DATA\Development\Tango\Software\Visual_Studio\packages\ControlzEx.3.0.2.4\lib\net45\System.Windows.Interactivity.dll" /> + <ReferencePath Include="C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.6.1\System.Xaml.dll" /> + <ReferencePath Include="C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.6.1\System.Xml.dll" /> + <ReferencePath Include="C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.6.1\System.Xml.Linq.dll" /> + <ReferencePath Include="C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Xml.ReaderWriter.dll" /> + <ReferencePath Include="C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Xml.XDocument.dll" /> + <ReferencePath Include="C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Xml.XmlDocument.dll" /> + <ReferencePath Include="C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Xml.XmlSerializer.dll" /> + <ReferencePath Include="C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Xml.XPath.dll" /> + <ReferencePath Include="C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Xml.XPath.XDocument.dll" /> + <ReferencePath Include="C:\DATA\Development\Tango\Software\Visual_Studio\SideChains\Tango.AutoComplete\bin\Debug\Tango.AutoComplete.dll" /> + <ReferencePath Include="C:\DATA\Development\Tango\Software\Visual_Studio\Build\Core\Debug\Tango.BL.dll" /> + <ReferencePath Include="C:\DATA\Development\Tango\Software\Visual_Studio\Build\Core\Debug\Tango.Core.dll" /> + <ReferencePath Include="C:\DATA\Development\Tango\Software\Visual_Studio\Build\Core\Debug\Tango.CSV.dll" /> + <ReferencePath Include="C:\DATA\Development\Tango\Software\Visual_Studio\Build\FSE\Debug\Tango.FSE.BL.dll" /> + <ReferencePath Include="C:\DATA\Development\Tango\Software\Visual_Studio\Build\FSE\Debug\Tango.FSE.Common.dll" /> + <ReferencePath Include="C:\DATA\Development\Tango\Software\Visual_Studio\Build\Core\Debug\Tango.Integration.dll" /> + <ReferencePath Include="C:\DATA\Development\Tango\Software\Visual_Studio\Build\Core\Debug\Tango.Logging.dll" /> + <ReferencePath Include="C:\DATA\Development\Tango\Software\Visual_Studio\Build\Core\Debug\Tango.PMR.dll" /> + <ReferencePath Include="C:\DATA\Development\Tango\Software\Visual_Studio\Scripting\Tango.Scripting.Basic\bin\Debug\Tango.Scripting.Basic.dll" /> + <ReferencePath Include="C:\DATA\Development\Tango\Software\Visual_Studio\Scripting\Tango.Scripting.Core\bin\Debug\Tango.Scripting.Core.dll" /> + <ReferencePath Include="C:\DATA\Development\Tango\Software\Visual_Studio\Build\Scripting\Debug\Tango.Scripting.Editors.dll" /> + <ReferencePath Include="C:\DATA\Development\Tango\Software\Visual_Studio\Build\Core\Debug\Tango.Settings.dll" /> + <ReferencePath Include="C:\DATA\Development\Tango\Software\Visual_Studio\Build\Core\Debug\Tango.SharedUI.dll" /> + <ReferencePath Include="C:\DATA\Development\Tango\Software\Visual_Studio\Build\Core\Debug\Tango.Transport.dll" /> + <ReferencePath Include="C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.6.1\WindowsBase.dll" /> + <ReferencePath Include="C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.6.1\Facades\System.ComponentModel.Annotations.dll" /> + <ReferencePath Include="C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.6.1\Facades\System.Reflection.Emit.dll" /> + <ReferencePath Include="C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.6.1\Facades\System.Reflection.Emit.ILGeneration.dll" /> + <ReferencePath Include="C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.6.1\Facades\System.Reflection.Emit.Lightweight.dll" /> + <ReferencePath Include="C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.6.1\Facades\System.Runtime.InteropServices.WindowsRuntime.dll" /> + <ReferencePath Include="C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.6.1\Facades\System.ServiceModel.Duplex.dll" /> + <ReferencePath Include="C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.6.1\Facades\System.ServiceModel.Http.dll" /> + <ReferencePath Include="C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.6.1\Facades\System.ServiceModel.NetTcp.dll" /> + <ReferencePath Include="C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.6.1\Facades\System.ServiceModel.Primitives.dll" /> + <ReferencePath Include="C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.6.1\Facades\System.ServiceModel.Security.dll" /> + </ItemGroup> + <ItemGroup> + <Compile Include="C:\DATA\Development\Tango\Software\Visual_Studio\FSE\Modules\Tango.FSE.Stubs\obj\Debug\App.g.cs" /> + <Compile Include="C:\DATA\Development\Tango\Software\Visual_Studio\FSE\Modules\Tango.FSE.Stubs\obj\Debug\Dialogs\AddReferenceAssemblyView.g.cs" /> + <Compile Include="C:\DATA\Development\Tango\Software\Visual_Studio\FSE\Modules\Tango.FSE.Stubs\obj\Debug\Dialogs\LoadPublishedProjectView.g.cs" /> + <Compile Include="C:\DATA\Development\Tango\Software\Visual_Studio\FSE\Modules\Tango.FSE.Stubs\obj\Debug\Dialogs\ResultGridView.g.cs" /> + <Compile Include="C:\DATA\Development\Tango\Software\Visual_Studio\FSE\Modules\Tango.FSE.Stubs\obj\Debug\Dialogs\SaveFileDialogView.g.cs" /> + <Compile Include="C:\DATA\Development\Tango\Software\Visual_Studio\FSE\Modules\Tango.FSE.Stubs\obj\Debug\Dialogs\OpenFileDialogView.g.cs" /> + <Compile Include="C:\DATA\Development\Tango\Software\Visual_Studio\FSE\Modules\Tango.FSE.Stubs\obj\Debug\Dialogs\UserInputDialogView.g.cs" /> + <Compile Include="C:\DATA\Development\Tango\Software\Visual_Studio\FSE\Modules\Tango.FSE.Stubs\obj\Debug\Views\MainView.g.cs" /> + <Compile Include="C:\DATA\Development\Tango\Software\Visual_Studio\FSE\Modules\Tango.FSE.Stubs\obj\Debug\Views\ProcedureDesignerView.g.cs" /> + <Compile Include="C:\DATA\Development\Tango\Software\Visual_Studio\FSE\Modules\Tango.FSE.Stubs\obj\Debug\Views\ProcedureRunnerCatalogView.g.cs" /> + <Compile Include="C:\DATA\Development\Tango\Software\Visual_Studio\FSE\Modules\Tango.FSE.Stubs\obj\Debug\Views\ProcedureRunnerExecutionView.g.cs" /> + <Compile Include="C:\DATA\Development\Tango\Software\Visual_Studio\FSE\Modules\Tango.FSE.Stubs\obj\Debug\Views\ProcedureRunnerView.g.cs" /> + <Compile Include="C:\DATA\Development\Tango\Software\Visual_Studio\FSE\Modules\Tango.FSE.Stubs\obj\Debug\Views\ResultsView.g.cs" /> + <Compile Include="C:\DATA\Development\Tango\Software\Visual_Studio\FSE\Modules\Tango.FSE.Stubs\obj\Debug\GeneratedInternalTypeHelper.g.cs" /> + </ItemGroup> +</Project>
\ No newline at end of file diff --git a/Software/Visual_Studio/FSE/Modules/Tango.FSE.Stubs/ViewModels/ProcedureDesignerViewVM.cs b/Software/Visual_Studio/FSE/Modules/Tango.FSE.Stubs/ViewModels/ProcedureDesignerViewVM.cs index b5d56f638..96c554a07 100644 --- a/Software/Visual_Studio/FSE/Modules/Tango.FSE.Stubs/ViewModels/ProcedureDesignerViewVM.cs +++ b/Software/Visual_Studio/FSE/Modules/Tango.FSE.Stubs/ViewModels/ProcedureDesignerViewVM.cs @@ -99,7 +99,13 @@ namespace Tango.FSE.Procedures.ViewModels public Script SelectedScript { get { return _selectedScript; } - set { _selectedScript = value; RaisePropertyChangedAuto(); } + set + { + _selectedScript = value; + View?.ResetColrization(); + DisplayFindAndReplace = false; + RaisePropertyChangedAuto(); + } } public TextController Logger { get; set; } @@ -146,6 +152,48 @@ namespace Tango.FSE.Procedures.ViewModels set { _createGroups = value; RaisePropertyChangedAuto(); } } + private bool _displayFindAndReplace; + public bool DisplayFindAndReplace + { + get { return _displayFindAndReplace; } + set { _displayFindAndReplace = value; RaisePropertyChangedAuto(); } + } + + private String _findText; + public String FindText + { + get { return _findText; } + set + { + _findText = value; + RaisePropertyChangedAuto(); + FindNextCommand?.RaiseCanExecuteChanged(); + ReplaceCommand?.RaiseCanExecuteChanged(); + ReplaceAllCommand?.RaiseCanExecuteChanged(); + View?.ColorizeKeyword(value); + } + } + + private String _replaceText; + public String ReplaceText + { + get { return _replaceText; } + set { _replaceText = value; RaisePropertyChangedAuto(); ReplaceCommand?.RaiseCanExecuteChanged(); ReplaceAllCommand?.RaiseCanExecuteChanged(); } + } + + private double _fontSize; + public double FontSize + { + get { return _fontSize; } + set + { + if (value > 5 && value < 41) + { + _fontSize = value; + RaisePropertyChangedAuto(); + } + } + } #endregion @@ -175,6 +223,14 @@ namespace Tango.FSE.Procedures.ViewModels public RelayCommand TogglePublishPanelCommand { get; set; } public RelayCommand<Script> RenameLibraryCommand { get; set; } public RelayCommand<CreateItem> CreateItemCommand { get; set; } + public RelayCommand ShowFindAndReplaceCommand { get; set; } + public RelayCommand HideFindAndReplaceCommand { get; set; } + public RelayCommand FindNextCommand { get; set; } + public RelayCommand ReplaceCommand { get; set; } + public RelayCommand ReplaceAllCommand { get; set; } + public RelayCommand IncreaseFontSizeCommand { get; set; } + public RelayCommand DecreaseFontSizeCommand { get; set; } + #endregion @@ -184,6 +240,9 @@ namespace Tango.FSE.Procedures.ViewModels { Status = "Ready"; + FontSize = 13; + ReplaceText = String.Empty; + LoadedAssemblies = new ObservableCollection<Assembly>(); ResultsViewVM = new ResultsViewVM(); CompilationErrors = new List<CompilationError>(); @@ -222,6 +281,13 @@ namespace Tango.FSE.Procedures.ViewModels TogglePublishPanelCommand = new RelayCommand(() => IsPublishPanelOpened = !IsPublishPanelOpened, () => CurrentUser.HasPermission(Permissions.FSE_PublishProcedureProjects)); RenameLibraryCommand = new RelayCommand<Script>(RenameLibrary); CreateItemCommand = new RelayCommand<CreateItem>(AutoCreateItem); + ShowFindAndReplaceCommand = new RelayCommand(() => { DisplayFindAndReplace = true; this.SetFocus(() => FindText); View.ColorizeKeyword(FindText); }); + HideFindAndReplaceCommand = new RelayCommand(() => { DisplayFindAndReplace = false; View.FocusCurrentEditor(); View.ResetColrization(); }); + FindNextCommand = new RelayCommand(FindNext,() => !String.IsNullOrEmpty(FindText)); + ReplaceCommand = new RelayCommand(ReplaceNext, () => !String.IsNullOrEmpty(FindText)); + ReplaceAllCommand = new RelayCommand(ReplaceAll, () => !String.IsNullOrEmpty(FindText)); + IncreaseFontSizeCommand = new RelayCommand(() => FontSize++); + DecreaseFontSizeCommand = new RelayCommand(() => FontSize--); } #endregion @@ -957,5 +1023,29 @@ namespace Tango.FSE.Procedures.ViewModels } #endregion + + #region Find & Replace + + private void FindNext() + { + View.Find(FindText); + } + + private void ReplaceAll() + { + var count = View.ReplaceAll(FindText, ReplaceText); + + if (count > 0) + { + NotificationProvider.ShowInfo($"{count} instances of the keyword were replaced."); + } + } + + private void ReplaceNext() + { + View.ReplaceNext(FindText, ReplaceText); + } + + #endregion } } diff --git a/Software/Visual_Studio/FSE/Modules/Tango.FSE.Stubs/Views/ProcedureDesignerView.xaml b/Software/Visual_Studio/FSE/Modules/Tango.FSE.Stubs/Views/ProcedureDesignerView.xaml index 51e966c9f..44bd113ed 100644 --- a/Software/Visual_Studio/FSE/Modules/Tango.FSE.Stubs/Views/ProcedureDesignerView.xaml +++ b/Software/Visual_Studio/FSE/Modules/Tango.FSE.Stubs/Views/ProcedureDesignerView.xaml @@ -27,6 +27,10 @@ <KeyBinding Modifiers="Ctrl" Key="N" Command="{Binding NewProjectCommand}" /> <KeyBinding Modifiers="Ctrl" Key="O" Command="{Binding OpenProjectCommand}" /> <KeyBinding Modifiers="Ctrl" Key="P" Command="{Binding TogglePublishPanelCommand}" /> + <KeyBinding Modifiers="Ctrl" Key="F" Command="{Binding ShowFindAndReplaceCommand}" /> + <KeyBinding Key="F3" Command="{Binding FindNextCommand}" /> + <KeyBinding Modifiers="Ctrl" Key="OemPlus" Command="{Binding IncreaseFontSizeCommand}" /> + <KeyBinding Modifiers="Ctrl" Key="OemMinus" Command="{Binding DecreaseFontSizeCommand}" /> </UserControl.InputBindings> <Grid> @@ -96,11 +100,32 @@ </MenuItem.Icon> </MenuItem> <Separator/> + <MenuItem Header="_Find & Replace" InputGestureText="Ctrl+F" Command="{Binding ShowFindAndReplaceCommand}"> + <MenuItem.Icon> + <material:PackIcon Kind="FindReplace" /> + </MenuItem.Icon> + </MenuItem> + <Separator/> <MenuItem Header="_Format Code" InputGestureText="Ctrl+K+D" Command="{Binding FormatCodeCommand}"> <MenuItem.Icon> <material:PackIcon Kind="FormatColumns" /> </MenuItem.Icon> </MenuItem> + <Separator/> + <MenuItem> + <MenuItem.Icon> + <material:PackIcon Kind="FormatFont" /> + </MenuItem.Icon> + <MenuItem.Header> + <DockPanel> + <TextBlock VerticalAlignment="Center" Text="{Binding RelativeSource={RelativeSource AncestorType=Menu},Path=DataContext.FontSize}"/> + <UniformGrid VerticalAlignment="Center" HorizontalAlignment="Right" Columns="2" Margin="70 0 0 0"> + <controls:IconButton Command="{Binding RelativeSource={RelativeSource AncestorType=Menu},Path=DataContext.DecreaseFontSizeCommand}" Cursor="Hand" ToolTip="Decrease Font Size (Ctrl-)" Width="24" Height="24" Icon="FormatFontSizeDecrease" Padding="0" /> + <controls:IconButton Command="{Binding RelativeSource={RelativeSource AncestorType=Menu},Path=DataContext.IncreaseFontSizeCommand}" Cursor="Hand" ToolTip="Increase Font Size (Ctrl+)" Margin="10 0 0 0" Width="24" Height="24" Icon="FormatFontSizeIncrease" Padding="0" /> + </UniformGrid> + </DockPanel> + </MenuItem.Header> + </MenuItem> </MenuItem> <MenuItem Header="Debug"> <MenuItem Header="_Build" MinWidth="250" Command="{Binding CompileProjectCommand}" InputGestureText="F6" IsEnabled="{Binding ProjectRunner.CanCompile}"> @@ -368,76 +393,106 @@ <Rectangle Grid.Column="2" VerticalAlignment="Bottom" StrokeThickness="2" Stroke="{StaticResource FSE_PrimaryAccentDarkBrush}" /> </Grid> - <ItemsControl x:Name="tabControl" Margin="0 0 0 0" ItemsSource="{Binding Project.Scripts}" BorderThickness="0" Background="{StaticResource FSE_PrimaryBackgroundDarkBrush}"> - <ItemsControl.ItemsPanel> - <ItemsPanelTemplate> - <Grid/> - </ItemsPanelTemplate> - </ItemsControl.ItemsPanel> - <ItemsControl.ItemContainerStyle> - <Style TargetType="FrameworkElement"> - <Setter Property="Visibility" Value="Hidden"></Setter> - <Style.Triggers> - <DataTrigger Binding="{Binding IsSelected}" Value="True"> - <Setter Property="Visibility" Value="Visible"></Setter> - </DataTrigger> - </Style.Triggers> - </Style> - </ItemsControl.ItemContainerStyle> - <ItemsControl.ItemTemplate> - <DataTemplate> - <editors:ScriptEditor + <Grid> + <ItemsControl x:Name="tabControl" Margin="0 0 0 0" ItemsSource="{Binding Project.Scripts}" BorderThickness="0" Background="{StaticResource FSE_PrimaryBackgroundDarkBrush}"> + <ItemsControl.ItemsPanel> + <ItemsPanelTemplate> + <Grid/> + </ItemsPanelTemplate> + </ItemsControl.ItemsPanel> + <ItemsControl.ItemContainerStyle> + <Style TargetType="FrameworkElement"> + <Setter Property="Visibility" Value="Hidden"></Setter> + <Style.Triggers> + <DataTrigger Binding="{Binding IsSelected}" Value="True"> + <Setter Property="Visibility" Value="Visible"></Setter> + </DataTrigger> + </Style.Triggers> + </Style> + </ItemsControl.ItemContainerStyle> + <ItemsControl.ItemTemplate> + <DataTemplate> + <editors:ScriptEditor ReferenceAssemblies="{Binding RelativeSource={RelativeSource AncestorType=UserControl},Path=DataContext.LoadedAssemblies}" AdditionalScripts="{Binding RelativeSource={RelativeSource AncestorType=UserControl},Path=DataContext.Project.AdditionalScripts}" + FontSize="{Binding RelativeSource={RelativeSource AncestorType=UserControl},Path=DataContext.FontSize}" Code="{Binding Code,Mode=TwoWay}"> - <editors:ScriptEditor.ContextMenu> - <ContextMenu> - <MenuItem Header="_Cut" Command="Cut"> - <MenuItem.Icon> - <material:PackIcon Kind="ContentCut" /> - </MenuItem.Icon> - </MenuItem> - <MenuItem Header="_Copy" Command="Copy"> - <MenuItem.Icon> - <material:PackIcon Kind="ContentCopy" /> - </MenuItem.Icon> - </MenuItem> - <MenuItem Header="_Paste" Command="Paste"> - <MenuItem.Icon> - <material:PackIcon Kind="ContentPaste" /> - </MenuItem.Icon> - </MenuItem> - <Separator/> - <MenuItem Header="_Format Code" InputGestureText="Ctrl+K+D" Command="{Binding Source={StaticResource proxy},Path=Data.FormatCodeCommand}"> - <MenuItem.Icon> - <material:PackIcon Kind="FormatColumns" /> - </MenuItem.Icon> - </MenuItem> - <Separator/> - <MenuItem Header="_Wizard" ItemsSource="{Binding Source={StaticResource proxy},Path=Data.CreateGroups}"> - <MenuItem.Icon> - <material:PackIcon Kind="Wand" /> - </MenuItem.Icon> - <MenuItem.ItemContainerStyle> - <Style TargetType="{x:Type MenuItem}" BasedOn="{StaticResource {x:Type MenuItem}}"> - <Setter Property="Command" Value="{Binding RelativeSource={RelativeSource AncestorType=UserControl},Path=DataContext.CreateItemCommand}" /> - <Setter Property="CommandParameter" Value="{Binding}"></Setter> - </Style> - </MenuItem.ItemContainerStyle> - <MenuItem.ItemTemplate> - <HierarchicalDataTemplate DataType="{x:Type global:CreateItem}" ItemsSource="{Binding Path=Items}"> - <TextBlock Text="{Binding Name}"/> - </HierarchicalDataTemplate> - </MenuItem.ItemTemplate> - </MenuItem> - </ContextMenu> - </editors:ScriptEditor.ContextMenu> - - </editors:ScriptEditor> - </DataTemplate> - </ItemsControl.ItemTemplate> - </ItemsControl> + <editors:ScriptEditor.ContextMenu> + <ContextMenu> + <MenuItem Header="_Cut" Command="Cut"> + <MenuItem.Icon> + <material:PackIcon Kind="ContentCut" /> + </MenuItem.Icon> + </MenuItem> + <MenuItem Header="_Copy" Command="Copy"> + <MenuItem.Icon> + <material:PackIcon Kind="ContentCopy" /> + </MenuItem.Icon> + </MenuItem> + <MenuItem Header="_Paste" Command="Paste"> + <MenuItem.Icon> + <material:PackIcon Kind="ContentPaste" /> + </MenuItem.Icon> + </MenuItem> + <Separator/> + <MenuItem Header="_Format Code" InputGestureText="Ctrl+K+D" Command="{Binding Source={StaticResource proxy},Path=Data.FormatCodeCommand}"> + <MenuItem.Icon> + <material:PackIcon Kind="FormatColumns" /> + </MenuItem.Icon> + </MenuItem> + <Separator/> + <MenuItem Header="_Wizard" ItemsSource="{Binding Source={StaticResource proxy},Path=Data.CreateGroups}"> + <MenuItem.Icon> + <material:PackIcon Kind="Wand" /> + </MenuItem.Icon> + <MenuItem.ItemContainerStyle> + <Style TargetType="{x:Type MenuItem}" BasedOn="{StaticResource {x:Type MenuItem}}"> + <Setter Property="Command" Value="{Binding RelativeSource={RelativeSource AncestorType=UserControl},Path=DataContext.CreateItemCommand}" /> + <Setter Property="CommandParameter" Value="{Binding}"></Setter> + </Style> + </MenuItem.ItemContainerStyle> + <MenuItem.ItemTemplate> + <HierarchicalDataTemplate DataType="{x:Type global:CreateItem}" ItemsSource="{Binding Path=Items}"> + <TextBlock Text="{Binding Name}"/> + </HierarchicalDataTemplate> + </MenuItem.ItemTemplate> + </MenuItem> + </ContextMenu> + </editors:ScriptEditor.ContextMenu> + + </editors:ScriptEditor> + </DataTemplate> + </ItemsControl.ItemTemplate> + </ItemsControl> + + <Grid Visibility="{Binding DisplayFindAndReplace,Converter={StaticResource BooleanToVisibilityConverter}}" HorizontalAlignment="Right" VerticalAlignment="Top" MinWidth="400" Background="{StaticResource FSE_PrimaryBackgroundLightBrush}"> + <Border BorderBrush="{StaticResource FSE_BorderBrush}" BorderThickness="1 1 1 0"> + <Border BorderThickness="0 0 0 2" Margin="-1 0 -1 0" BorderBrush="{StaticResource FSE_PrimaryAccentBrush}" Padding="5 5 5 10"> + <StackPanel> + <DockPanel VerticalAlignment="Top"> + <controls:ToggleIconButton x:Name="toggleReplace" Cursor="Hand" DockPanel.Dock="Left" Width="20" Height="20" CheckedIcon="ChevronUp" UncheckedIcon="ChevronDown" /> + <controls:IconButton Cursor="Hand" Icon="Close" ToolTip="Close" Command="{Binding HideFindAndReplaceCommand}" DockPanel.Dock="Right" Width="24" Height="24" Padding="2" /> + <controls:IconButton Cursor="Hand" Margin="5 0 0 0" Icon="ArrowRight" ToolTip="Find Next" Command="{Binding FindNextCommand}" DockPanel.Dock="Right" Width="24" Height="24" Padding="2" /> + <TextBox FontSize="{StaticResource FSE_SmallFontSize}" Margin="5 0 0 0" Style="{StaticResource FSE_Rounded_Corners_TextBox}" Text="{Binding FindText,UpdateSourceTrigger=PropertyChanged}"> + <TextBox.InputBindings> + <KeyBinding Key="Return" Command="{Binding FindNextCommand}" /> + <KeyBinding Key="F3" Command="{Binding FindNextCommand}" /> + <KeyBinding Key="Esc" Command="{Binding HideFindAndReplaceCommand}" /> + </TextBox.InputBindings> + </TextBox> + </DockPanel> + + <DockPanel Margin="21 10 0 0" VerticalAlignment="Top" Visibility="{Binding ElementName=toggleReplace,Path=IsChecked,Converter={StaticResource BooleanToVisibilityConverter}}"> + <controls:IconButton Cursor="Hand" Icon="FileReplace" ToolTip="Replace All" Command="{Binding ReplaceAllCommand}" DockPanel.Dock="Right" Width="24" Height="24" Padding="2" /> + <controls:IconButton Cursor="Hand" Margin="5 0 0 0" Icon="FindReplace" ToolTip="Replace" Command="{Binding ReplaceCommand}" DockPanel.Dock="Right" Width="24" Height="24" Padding="2" /> + <TextBox FontSize="{StaticResource FSE_SmallFontSize}" Margin="5 0 0 0" Style="{StaticResource FSE_Rounded_Corners_TextBox}" Text="{Binding ReplaceText,UpdateSourceTrigger=PropertyChanged}"/> + </DockPanel> + </StackPanel> + </Border> + </Border> + </Grid> + </Grid> </DockPanel> </Grid> diff --git a/Software/Visual_Studio/FSE/Modules/Tango.FSE.Stubs/Views/ProcedureDesignerView.xaml.cs b/Software/Visual_Studio/FSE/Modules/Tango.FSE.Stubs/Views/ProcedureDesignerView.xaml.cs index a8c37cc10..d00413b25 100644 --- a/Software/Visual_Studio/FSE/Modules/Tango.FSE.Stubs/Views/ProcedureDesignerView.xaml.cs +++ b/Software/Visual_Studio/FSE/Modules/Tango.FSE.Stubs/Views/ProcedureDesignerView.xaml.cs @@ -44,6 +44,11 @@ namespace Tango.FSE.Procedures.Views return editor; } + private List<ScriptEditor> GetAllEditors() + { + return tabControl.FindVisualChildren<ScriptEditor>().ToList(); + } + public void FormatCode() { GetCurrentEditor()?.FormatCode(); @@ -69,5 +74,53 @@ namespace Tango.FSE.Procedures.Views } })); } + + public void Find(string text) + { + GetCurrentEditor()?.Find(text); + } + + public void ReplaceNext(string text, string replace) + { + GetCurrentEditor()?.ReplaceNext(text, replace); + ColorizeKeyword(text); + } + + public int ReplaceAll(string text, string replace) + { + var editor = GetCurrentEditor(); + + if (editor != null) + { + int count = editor.ReplaceAll(text, replace); + ColorizeKeyword(text); + return count; + } + else + { + return 0; + } + } + + public void FocusCurrentEditor() + { + var editor = GetCurrentEditor(); + + if (editor != null) + { + editor.Focus(); + Keyboard.Focus(editor); + } + } + + public void ColorizeKeyword(string text) + { + GetCurrentEditor()?.ColorizeByKeyword(text); + } + + public void ResetColrization() + { + GetAllEditors().ForEach(x => x.ResetColorizationByKeyword()); + } } } diff --git a/Software/Visual_Studio/Scripting/Tango.Scripting.Editors/Highlighting/OffsetColorizer.cs b/Software/Visual_Studio/Scripting/Tango.Scripting.Editors/Highlighting/OffsetColorizer.cs index a05d1fc75..72c27f9a9 100644 --- a/Software/Visual_Studio/Scripting/Tango.Scripting.Editors/Highlighting/OffsetColorizer.cs +++ b/Software/Visual_Studio/Scripting/Tango.Scripting.Editors/Highlighting/OffsetColorizer.cs @@ -30,7 +30,7 @@ namespace Tango.Scripting.Editors.Highlighting { try { - ChangeLinePart(StartOffset, EndOffset, element => element.TextRunProperties.SetForegroundBrush(Brush)); + ChangeLinePart(StartOffset, EndOffset, element => element.TextRunProperties.SetBackgroundBrush(Brush)); } catch { } } diff --git a/Software/Visual_Studio/Scripting/Tango.Scripting.Editors/ScriptEditor.cs b/Software/Visual_Studio/Scripting/Tango.Scripting.Editors/ScriptEditor.cs index 71a455f86..7b5c38a2b 100644 --- a/Software/Visual_Studio/Scripting/Tango.Scripting.Editors/ScriptEditor.cs +++ b/Software/Visual_Studio/Scripting/Tango.Scripting.Editors/ScriptEditor.cs @@ -69,6 +69,7 @@ namespace Tango.Scripting.Editors public static event EventHandler<TangoProgressChangedEventArgs<int>> LoadingSymbolsProgress; public static event EventHandler LoadingSymbolsStarted; public static event EventHandler LoadingSymbolsCompleted; + private static event EventHandler KnownTypesAvailable; #region Mini Classes @@ -161,6 +162,14 @@ namespace Tango.Scripting.Editors public static readonly DependencyProperty AdditionalScriptsProperty = DependencyProperty.Register("AdditionalScripts", typeof(ObservableCollection<IScriptSource>), typeof(ScriptEditor), new PropertyMetadata(null)); + public Brush ColorizeBrush + { + get { return (Brush)GetValue(ColorizeBrushProperty); } + set { SetValue(ColorizeBrushProperty, value); } + } + public static readonly DependencyProperty ColorizeBrushProperty = + DependencyProperty.Register("ColorizeBrush", typeof(Brush), typeof(ScriptEditor), new PropertyMetadata(new SolidColorBrush(Colors.YellowGreen) { Opacity = 0.5 })); + #endregion #region Constructors @@ -266,6 +275,8 @@ namespace Tango.Scripting.Editors _knownTypes = new List<KnownType>(); _parser = new ScriptParser(); + KnownTypesAvailable += ScriptEditor_KnownTypesAvailable; + TextArea.IndentationStrategy = new Indentation.CSharp.CSharpIndentationStrategy(Options); foldingStrategy = new BraceFoldingStrategy(); @@ -287,6 +298,14 @@ namespace Tango.Scripting.Editors TextChanged += ScriptEditor_TextChanged; } + private void ScriptEditor_KnownTypesAvailable(object sender, EventArgs e) + { + if (sender != this) + { + InvalidateHighlightingPartial(); + } + } + private bool preventCodeUpdate; private void ScriptEditor_TextChanged(object sender, EventArgs e) { @@ -1357,7 +1376,7 @@ namespace Tango.Scripting.Editors return popup; } - public static void LoadUsingsSymbols(List<Assembly> assemblies, List<String> usings) + public void LoadUsingsSymbols(List<Assembly> assemblies, List<String> usings) { lock (_loadUsingsLock) { @@ -1390,6 +1409,9 @@ namespace Tango.Scripting.Editors _knownTypesCache.Add(knownType.Type, knownType); } + KnownTypesAvailable?.Invoke(this, new EventArgs()); + InvalidateHighlightingPartial(); + continue; } @@ -1575,6 +1597,100 @@ namespace Tango.Scripting.Editors // _isLoadingCachedAssemblies = false; //} + private void InvalidateHighlightingPartial() + { + List<Assembly> assemblies = new List<Assembly>(); + Dispatcher.Invoke(() => + { + assemblies = ReferenceAssemblies.ToList(); + }); + + var usings = _current_usings.ToList(); + + _knownTypes.Clear(); + + foreach (var knownType in _knownTypesCache.ToList().Select(x => x.Value).ToList()) + { + if (usings.Exists(x => knownType.Type.Namespace == x) && assemblies.Exists(x => x == knownType.Type.Assembly)) + { + lock (_knownTypes) + { + _knownTypes.Add(knownType); + } + } + } + + if (_knownTypes.Count > 0 || _declaredTypes.Count > 0) + { + String text = String.Empty; + + Stream xshd_stream = typeof(ScriptEditor).Assembly.GetManifestResourceStream("Tango.Scripting.Editors.Highlighting.Resources.CSharp-Mode.xshd"); + + using (StreamReader reader = new StreamReader(xshd_stream)) + { + text = reader.ReadToEnd(); + } + + List<String> referenceTypes = new List<string>(); + List<String> interfaceTypes = new List<string>(); + + lock (_knownTypes) + { + foreach (var type in _knownTypes.ToList().Where(x => x != null)) + { + String name = type.Name; + + if (type.Type.ContainsGenericParameters) + { + name = new String(name.TakeWhile(x => x != '`').ToArray()); + } + + if (type.Type.IsInterface || type.Type.IsEnum) + { + interfaceTypes.Add(String.Format("<Word>{0}</Word>", name)); + } + else if (type.Type.IsClass || (type.Type.IsValueType)) + { + referenceTypes.Add(String.Format("<Word>{0}</Word>", name)); + } + } + } + + foreach (var type in _declaredTypes) + { + if (type.Kind == TypeKind.Interface || type.Kind == TypeKind.Enum) + { + interfaceTypes.Add(String.Format("<Word>{0}</Word>", type.Name)); + } + else if (type.Kind == TypeKind.Class) + { + referenceTypes.Add(String.Format("<Word>{0}</Word>", type.Name)); + } + } + + if (referenceTypes.Count > 0) + { + text = text.Replace("<Word>@ReferenceTypes@</Word>", String.Join(Environment.NewLine, referenceTypes.Distinct())); + } + + if (interfaceTypes.Count > 0) + { + text = text.Replace("<Word>@InterfaceTypes@</Word>", String.Join(Environment.NewLine, interfaceTypes.Distinct())); + } + + MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(text)); + + XmlTextReader xshd_reader = new XmlTextReader(ms); + + Dispatcher.Invoke(new Action(() => + { + SyntaxHighlighting = HighlightingLoader.Load(xshd_reader, HighlightingManager.Instance); + xshd_reader.Close(); + ms.Dispose(); + })); + } + } + public void InvalidateHighlighting(bool loadKnownTypes = true) { if (!_isLoadingTypes) @@ -1964,7 +2080,7 @@ namespace Tango.Scripting.Editors { int parameterIndex = expression.Count(x => x == ','); - + expression = new string(expression.TakeWhile(x => x != '(').ToArray()); var tree = expression.Split('.').Select(x => x.Remove(@"\n|\r|\s|\t|\(|\)|\[|\]|<.*>")).ToList(); @@ -2209,6 +2325,104 @@ namespace Tango.Scripting.Editors Document.Insert(TextArea.Caret.Offset, code); } + public int Find(String text) + { + if (String.IsNullOrEmpty(text)) return -1; + + string txt = Document.Text; + int index = txt.IndexOf(text, TextArea.Caret.Offset); + + if (index > -1) + { + Select(index, text.Length); + ScrollToLine(TextArea.Selection.StartPosition.Line); + } + else + { + index = txt.IndexOf(text, 0); + + if (index > -1) + { + Select(index, text.Length); + ScrollToLine(TextArea.Selection.StartPosition.Line); + } + else + { + Select(0, 0); + System.Media.SystemSounds.Beep.Play(); + } + } + + return index; + } + + public int ReplaceNext(String text, String replace) + { + if (String.IsNullOrEmpty(text)) return -1; + + String selectedText = TextArea.Selection.GetText(); + + if (selectedText == text) + { + TextArea.Selection.ReplaceSelectionWithText(replace); + } + + return Find(text); + } + + public int ReplaceAll(String text, String replace) + { + int counter = 0; + + Select(0, 0); + + while (ReplaceNext(text, replace) > -1) + { + counter++; + }; + + return counter; + } + + public void ColorizeByKeyword(String text) + { + ResetColorizationByKeyword(); + + if (String.IsNullOrEmpty(text)) return; + + var txt = Document.Text; + + var indexes = txt.AllIndexesOf(text).ToList(); + + foreach (var index in indexes) + { + Document.BeginUpdate(); + + var line = Document.GetLineByOffset(index); + + OffsetColorizer colorizer = new OffsetColorizer(line, index, index + text.Length, ColorizeBrush); + TextArea.TextView.LineTransformers.Add(colorizer); + + Document.EndUpdate(); + } + } + + public void ResetColorizationByKeyword() + { + Document.BeginUpdate(); + + for (int i = 0; i < TextArea.TextView.LineTransformers.Count; i++) + { + if (TextArea.TextView.LineTransformers[i] is OffsetColorizer) + { + TextArea.TextView.LineTransformers.RemoveAt(i); + i--; + } + } + + Document.EndUpdate(); + } + #endregion } } diff --git a/Software/Visual_Studio/Tango.Core/ExtensionMethods/StringExtensions.cs b/Software/Visual_Studio/Tango.Core/ExtensionMethods/StringExtensions.cs index 4984c84db..ef17f0279 100644 --- a/Software/Visual_Studio/Tango.Core/ExtensionMethods/StringExtensions.cs +++ b/Software/Visual_Studio/Tango.Core/ExtensionMethods/StringExtensions.cs @@ -250,4 +250,14 @@ public static class StringExtensions return new List<T>(); } } + + public static IEnumerable<int> AllIndexesOf(this string str, string searchstring) + { + int minIndex = str.IndexOf(searchstring); + while (minIndex != -1) + { + yield return minIndex; + minIndex = str.IndexOf(searchstring, minIndex + searchstring.Length); + } + } } |
