diff options
| author | Victoria Plitt <Victoria.Plitt@twine-s.com> | 2020-06-01 10:02:35 +0300 |
|---|---|---|
| committer | Victoria Plitt <Victoria.Plitt@twine-s.com> | 2020-06-01 10:02:35 +0300 |
| commit | fa4b140630ff8b39bfeb85affe5e42bcb53d02e9 (patch) | |
| tree | 9f2c835903aa6cd3ff0e2b796aaec727e7eb2d8d /Software/Visual_Studio | |
| parent | 0008603819e92278101b84254fce4755a4386538 (diff) | |
| parent | ac66473a022e6eecf5d8d7a92eaa90a5e334be73 (diff) | |
| download | Tango-fa4b140630ff8b39bfeb85affe5e42bcb53d02e9.tar.gz Tango-fa4b140630ff8b39bfeb85affe5e42bcb53d02e9.zip | |
Merge branch 'master' of https://twinetfs.visualstudio.com/Tango/_git/Tango
Diffstat (limited to 'Software/Visual_Studio')
29 files changed, 346 insertions, 87 deletions
diff --git a/Software/Visual_Studio/Advanced Installer Projects/Machine Studio Installer.aip b/Software/Visual_Studio/Advanced Installer Projects/Machine Studio Installer.aip index d4f515069..2ce93f743 100644 --- a/Software/Visual_Studio/Advanced Installer Projects/Machine Studio Installer.aip +++ b/Software/Visual_Studio/Advanced Installer Projects/Machine Studio Installer.aip @@ -16,10 +16,10 @@ <ROW Property="ARPCOMMENTS" Value="This installer database contains the logic and data required to install [|ProductName]." ValueLocId="*"/> <ROW Property="ARPNOREPAIR" MultiBuildValue="DefaultBuild:1"/> <ROW Property="Manufacturer" Value="Twine"/> - <ROW Property="ProductCode" Value="1033:{946DFC24-1AB8-4342-8BC3-2E8C86491D47} " Type="16"/> + <ROW Property="ProductCode" Value="1033:{5C2604C5-1EFA-4AC8-A4AB-8E18F86F3EAC} " Type="16"/> <ROW Property="ProductLanguage" Value="1033"/> <ROW Property="ProductName" Value="Machine Studio"/> - <ROW Property="ProductVersion" Value="4.1.10.0" Type="32"/> + <ROW Property="ProductVersion" Value="4.1.11.0" Type="32"/> <ROW Property="SecureCustomProperties" Value="OLDPRODUCTS;AI_NEWERPRODUCTFOUND;AI_SETUPEXEPATH;SETUPEXEDIR"/> <ROW Property="UpgradeCode" Value="{CBEE5CAE-7C5A-4280-98DE-AA98113764E4}"/> <ROW Property="WindowsType9X" MultiBuildValue="DefaultBuild:Windows 9x/ME" ValueLocId="-"/> @@ -806,33 +806,6 @@ <ROW File="Tango.SystemInfo.dll" Component_="Tango.SystemInfo.dll" FileName="TANGOS~8.DLL|Tango.SystemInfo.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\Machine Studio\Release\Tango.SystemInfo.dll" SelfReg="false"/> <ROW File="Tango.SystemInfo.pdb" Component_="Tango.SystemInfo.dll" FileName="TANGOS~8.PDB|Tango.SystemInfo.pdb" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\Machine Studio\Release\Tango.SystemInfo.pdb" SelfReg="false"/> <ROW File="LiteDB.dll" Component_="LiteDB.dll" FileName="LiteDB.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\Machine Studio\Release\LiteDB.dll" SelfReg="false"/> - <ROW File="CommandLine.xml" Component_="Dragablz.xml" FileName="COMMAN~1.XML|CommandLine.xml" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\Machine Studio\Release\CommandLine.xml" SelfReg="false"/> - <ROW File="DocumentFormat.OpenXml.xml" Component_="Dragablz.xml" FileName="DOCUME~1.XML|DocumentFormat.OpenXml.xml" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\Machine Studio\Release\DocumentFormat.OpenXml.xml" SelfReg="false"/> - <ROW File="EntityFramework.SqlServer.xml" Component_="Dragablz.xml" FileName="ENTITY~1.XML|EntityFramework.SqlServer.xml" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\Machine Studio\Release\EntityFramework.SqlServer.xml" SelfReg="false"/> - <ROW File="EntityFramework.xml" Component_="Dragablz.xml" FileName="ENTITY~2.XML|EntityFramework.xml" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\Machine Studio\Release\EntityFramework.xml" SelfReg="false"/> - <ROW File="Google.Protobuf.xml" Component_="Dragablz.xml" FileName="GOOGLE~1.XML|Google.Protobuf.xml" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\Machine Studio\Release\Google.Protobuf.xml" SelfReg="false"/> - <ROW File="JWT.xml" Component_="Dragablz.xml" FileName="JWT.xml" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\Machine Studio\Release\JWT.xml" SelfReg="false"/> - <ROW File="LiteDB.xml" Component_="Dragablz.xml" FileName="LiteDB.xml" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\Machine Studio\Release\LiteDB.xml" SelfReg="false"/> - <ROW File="MahApps.Metro.xml" Component_="Dragablz.xml" FileName="MAHAPP~1.XML|MahApps.Metro.xml" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\Machine Studio\Release\MahApps.Metro.xml" SelfReg="false"/> - <ROW File="MaterialDesignThemes.Wpf.xml" Component_="Dragablz.xml" FileName="MATERI~1.XML|MaterialDesignThemes.Wpf.xml" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\Machine Studio\Release\MaterialDesignThemes.Wpf.xml" SelfReg="false"/> - <ROW File="Microsoft.AspNet.SignalR.Client.xml" Component_="Dragablz.xml" FileName="MICROS~1.XML|Microsoft.AspNet.SignalR.Client.xml" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\Machine Studio\Release\Microsoft.AspNet.SignalR.Client.xml" SelfReg="false"/> - <ROW File="Microsoft.IdentityModel.Clients.ActiveDirectory.xml" Component_="Dragablz.xml" FileName="MICROS~2.XML|Microsoft.IdentityModel.Clients.ActiveDirectory.xml" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\Machine Studio\Release\Microsoft.IdentityModel.Clients.ActiveDirectory.xml" SelfReg="false"/> - <ROW File="Microsoft.SqlServer.AzureStorageEnum.xml" Component_="Dragablz.xml" FileName="MICROS~3.XML|Microsoft.SqlServer.AzureStorageEnum.xml" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\Machine Studio\Release\Microsoft.SqlServer.AzureStorageEnum.xml" SelfReg="false"/> - <ROW File="Microsoft.SqlServer.ConnectionInfo.xml" Component_="Dragablz.xml" FileName="MICROS~4.XML|Microsoft.SqlServer.ConnectionInfo.xml" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\Machine Studio\Release\Microsoft.SqlServer.ConnectionInfo.xml" SelfReg="false"/> - <ROW File="Microsoft.SqlServer.Dmf.Common.xml" Component_="Dragablz.xml" FileName="MICROS~5.XML|Microsoft.SqlServer.Dmf.Common.xml" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\Machine Studio\Release\Microsoft.SqlServer.Dmf.Common.xml" SelfReg="false"/> - <ROW File="Microsoft.SqlServer.ServiceBrokerEnum.xml" Component_="Dragablz.xml" FileName="MICROS~6.XML|Microsoft.SqlServer.ServiceBrokerEnum.xml" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\Machine Studio\Release\Microsoft.SqlServer.ServiceBrokerEnum.xml" SelfReg="false"/> - <ROW File="Microsoft.SqlServer.Smo.xml" Component_="Dragablz.xml" FileName="MICROS~7.XML|Microsoft.SqlServer.Smo.xml" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\Machine Studio\Release\Microsoft.SqlServer.Smo.xml" SelfReg="false"/> - <ROW File="Microsoft.SqlServer.SqlEnum.xml" Component_="Dragablz.xml" FileName="MICROS~8.XML|Microsoft.SqlServer.SqlEnum.xml" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\Machine Studio\Release\Microsoft.SqlServer.SqlEnum.xml" SelfReg="false"/> - <ROW File="Newtonsoft.Json.xml" Component_="Dragablz.xml" FileName="NEWTON~1.XML|Newtonsoft.Json.xml" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\Machine Studio\Release\Newtonsoft.Json.xml" SelfReg="false"/> - <ROW File="protobufnet.xml" Component_="Dragablz.xml" FileName="PROTOB~1.XML|protobuf-net.xml" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\Machine Studio\Release\protobuf-net.xml" SelfReg="false"/> - <ROW File="System.Data.SQLite.xml" Component_="Dragablz.xml" FileName="SYSTEM~1.XML|System.Data.SQLite.xml" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\Machine Studio\Release\System.Data.SQLite.xml" SelfReg="false"/> - <ROW File="System.Net.Http.Formatting.xml" Component_="Dragablz.xml" FileName="SYSTEM~2.XML|System.Net.Http.Formatting.xml" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\Machine Studio\Release\System.Net.Http.Formatting.xml" SelfReg="false"/> - <ROW File="System.Reactive.Core.xml" Component_="Dragablz.xml" FileName="SYSTEM~3.XML|System.Reactive.Core.xml" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\Machine Studio\Release\System.Reactive.Core.xml" SelfReg="false"/> - <ROW File="System.Reactive.Interfaces.xml" Component_="Dragablz.xml" FileName="SYSTEM~4.XML|System.Reactive.Interfaces.xml" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\Machine Studio\Release\System.Reactive.Interfaces.xml" SelfReg="false"/> - <ROW File="System.Reactive.Linq.xml" Component_="Dragablz.xml" FileName="SYSTEM~5.XML|System.Reactive.Linq.xml" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\Machine Studio\Release\System.Reactive.Linq.xml" SelfReg="false"/> - <ROW File="System.Reactive.PlatformServices.xml" Component_="Dragablz.xml" FileName="SYSTEM~6.XML|System.Reactive.PlatformServices.xml" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\Machine Studio\Release\System.Reactive.PlatformServices.xml" SelfReg="false"/> - <ROW File="System.Web.Http.WebHost.xml" Component_="Dragablz.xml" FileName="SYSTEM~7.XML|System.Web.Http.WebHost.xml" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\Machine Studio\Release\System.Web.Http.WebHost.xml" SelfReg="false"/> - <ROW File="System.Web.Http.xml" Component_="Dragablz.xml" FileName="SYSTEM~8.XML|System.Web.Http.xml" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\Machine Studio\Release\System.Web.Http.xml" SelfReg="false"/> </COMPONENT> <COMPONENT cid="caphyon.advinst.msicomp.AiRemoveFileComponent"> <ROW RemoveFile="_" Options="3"/> @@ -844,7 +817,7 @@ <ROW Action="AI_DetectSoftware" Sequence="101"/> </COMPONENT> <COMPONENT cid="caphyon.advinst.msicomp.BuildComponent"> - <ROW BuildKey="DefaultBuild" BuildName="DefaultBuild" BuildOrder="1" BuildType="0" PackageFolder="..\Build\Installers\Machine Studio\Release" PackageFileName="Machine Studio Installer_v4.0.9" Languages="en" InstallationType="4" CabsLocation="1" PackageType="1" FilesInsideExe="true" ExtractionFolder="[AppDataFolder][|Manufacturer]\[|ProductName] [|ProductVersion]\install" ExtUI="true" UseLargeSchema="true" ExeName="Machine Studio Installer_v4.1.10"/> + <ROW BuildKey="DefaultBuild" BuildName="DefaultBuild" BuildOrder="1" BuildType="0" PackageFolder="..\Build\Installers\Machine Studio\Release" PackageFileName="Machine Studio Installer_v4.0.9" Languages="en" InstallationType="4" CabsLocation="1" PackageType="1" FilesInsideExe="true" ExtractionFolder="[AppDataFolder][|Manufacturer]\[|ProductName] [|ProductVersion]\install" ExtUI="true" UseLargeSchema="true" ExeName="Machine Studio Installer_v4.1.11"/> </COMPONENT> <COMPONENT cid="caphyon.advinst.msicomp.DictionaryComponent"> <ROW Path="<AI_DICTS>ui.ail"/> diff --git a/Software/Visual_Studio/Advanced Installer Projects/PPC Installer-cache/cacheIndex.txt b/Software/Visual_Studio/Advanced Installer Projects/PPC Installer-cache/cacheIndex.txt Binary files differindex 9453b5c13..a603ff06b 100644 --- a/Software/Visual_Studio/Advanced Installer Projects/PPC Installer-cache/cacheIndex.txt +++ b/Software/Visual_Studio/Advanced Installer Projects/PPC Installer-cache/cacheIndex.txt diff --git a/Software/Visual_Studio/Advanced Installer Projects/PPC Installer.aip b/Software/Visual_Studio/Advanced Installer Projects/PPC Installer.aip index 2da259bc0..631fd61b5 100644 --- a/Software/Visual_Studio/Advanced Installer Projects/PPC Installer.aip +++ b/Software/Visual_Studio/Advanced Installer Projects/PPC Installer.aip @@ -18,10 +18,10 @@ <ROW Property="ARPNOREPAIR" Value="1" MultiBuildValue="DefaultBuild:1"/> <ROW Property="ARPSYSTEMCOMPONENT" Value="1"/> <ROW Property="Manufacturer" Value="Twine"/> - <ROW Property="ProductCode" Value="1033:{E9D4AC4F-64FC-4C07-81BE-981370DA12AA} " Type="16"/> + <ROW Property="ProductCode" Value="1033:{51AC7C8D-BB1A-4E01-AFD0-C63D6CA266A8} " Type="16"/> <ROW Property="ProductLanguage" Value="1033"/> <ROW Property="ProductName" Value="Tango"/> - <ROW Property="ProductVersion" Value="1.1.16.0" Type="32"/> + <ROW Property="ProductVersion" Value="1.1.17.0" Type="32"/> <ROW Property="SecureCustomProperties" Value="OLDPRODUCTS;AI_NEWERPRODUCTFOUND;AI_SETUPEXEPATH;SETUPEXEDIR"/> <ROW Property="UpgradeCode" Value="{F8EAB8B4-FD57-45B7-8307-D52DF760273D}"/> <ROW Property="WindowsType9X" MultiBuildValue="DefaultBuild:Windows 9x/ME" ValueLocId="-"/> @@ -147,6 +147,7 @@ <ROW Component="Tango.AdvancedInstaller.dll" ComponentId="{5C51256D-50D1-46F5-A44F-73AF2E63EAF5}" Directory_="APPDIR" Attributes="0" KeyPath="Tango.AdvancedInstaller.dll"/> <ROW Component="Tango.AnimatedGif.dll" ComponentId="{2DCBEDC8-EDA7-4C90-8852-39E0B13DABF7}" Directory_="APPDIR" Attributes="0" KeyPath="Tango.AnimatedGif.dll"/> <ROW Component="Tango.BL.dll" ComponentId="{56D29CF3-E600-48A5-BF55-045EEE7CFDC6}" Directory_="APPDIR" Attributes="0" KeyPath="Tango.BL.dll"/> + <ROW Component="Tango.CSV.dll" ComponentId="{7980426F-EE8B-472C-A2E5-D5E09258E1B1}" Directory_="APPDIR" Attributes="0" KeyPath="Tango.CSV.dll"/> <ROW Component="Tango.CodeGeneration.dll" ComponentId="{7BE2B8CB-E5B7-435B-A585-C49EB042E9EB}" Directory_="APPDIR" Attributes="0" KeyPath="Tango.CodeGeneration.dll"/> <ROW Component="Tango.ColorConversion.dll" ComponentId="{A7FB8123-03C9-41A1-AEFE-1516E5A04224}" Directory_="APPDIR" Attributes="0" KeyPath="Tango.ColorConversion.dll"/> <ROW Component="Tango.ColorLib_v1.dll" ComponentId="{2144DE18-A79A-4811-ABBD-080FB91B0977}" Directory_="APPDIR" Attributes="0" KeyPath="Tango.ColorLib_v1.dll"/> @@ -202,11 +203,13 @@ <ROW Component="mscoree.dll" ComponentId="{85F439D0-8FD0-4B99-888D-336C7A125E3D}" Directory_="APPDIR" Attributes="0" KeyPath="mscoree.dll"/> <ROW Component="msvcp140d.dll" ComponentId="{69E32675-9ACF-4C23-A495-300B78913B66}" Directory_="APPDIR" Attributes="0" KeyPath="msvcp140d.dll"/> <ROW Component="protobufnet.dll" ComponentId="{163F1E17-6462-4ABE-BC86-E055F7690139}" Directory_="APPDIR" Attributes="0" KeyPath="protobufnet.dll"/> + <ROW Component="turbojpeg.dll" ComponentId="{54F3336E-421F-4BFE-98E3-B4286E1E8E02}" Directory_="win7x64_Dir" Attributes="256" KeyPath="turbojpeg.dll"/> + <ROW Component="turbojpeg.dll.meta" ComponentId="{418E313D-7727-4480-9FE1-EB9F4F421729}" Directory_="win7x64_Dir" Attributes="0" KeyPath="turbojpeg.dll.meta" Type="0"/> + <ROW Component="turbojpeg.dll.meta_1" ComponentId="{F080CB99-45D0-4E98-8133-0DB28360F33C}" Directory_="win7x86_Dir" Attributes="0" KeyPath="turbojpeg.dll.meta_1" Type="0"/> + <ROW Component="turbojpeg.dll_1" ComponentId="{7E06B606-9E3A-4AAF-888D-F415CB8A97ED}" Directory_="win7x86_Dir" Attributes="0" KeyPath="turbojpeg.dll_1"/> <ROW Component="ucrtbased.dll" ComponentId="{B8D025EA-CD16-4EE7-A3E7-713E2BE82BF3}" Directory_="APPDIR" Attributes="0" KeyPath="ucrtbased.dll"/> <ROW Component="vcruntime140.dll" ComponentId="{144594CC-D19B-45E4-A420-7A1BBB122EE3}" Directory_="APPDIR" Attributes="0" KeyPath="vcruntime140.dll"/> <ROW Component="vcruntime140d.dll" ComponentId="{7653420C-C6C3-4F31-97E8-D6DE417D3DF2}" Directory_="APPDIR" Attributes="0" KeyPath="vcruntime140d.dll"/> - <ROW Component="win7x64" ComponentId="{9D2172C7-152D-40CA-B098-C44ABA5AB1FB}" Directory_="win7x64_Dir" Attributes="0"/> - <ROW Component="win7x86" ComponentId="{BC564E77-CFC8-4588-A532-BBED1668761D}" Directory_="win7x86_Dir" Attributes="0"/> </COMPONENT> <COMPONENT cid="caphyon.advinst.msicomp.MsiFeatsComponent"> <ROW Feature="MainFeature" Title="MainFeature" Description="Description" Display="1" Level="1" Directory_="APPDIR" Attributes="0"/> @@ -453,6 +456,12 @@ <ROW File="LiteDB.dll" Component_="LiteDB.dll" FileName="LiteDB.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\PPC\Release\LiteDB.dll" SelfReg="false"/> <ROW File="Tango.PPC.Shared.dll" Component_="Tango.PPC.Shared.dll" FileName="TANGO~13.DLL|Tango.PPC.Shared.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\PPC\Release\Tango.PPC.Shared.dll" SelfReg="false"/> <ROW File="Tango.PPC.Shared.pdb" Component_="Tango.PPC.Shared.dll" FileName="TANGO~17.PDB|Tango.PPC.Shared.pdb" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\PPC\Release\Tango.PPC.Shared.pdb" SelfReg="false"/> + <ROW File="Tango.CSV.dll" Component_="Tango.CSV.dll" FileName="TANGOC~8.DLL|Tango.CSV.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\PPC\Release\Tango.CSV.dll" SelfReg="false"/> + <ROW File="Tango.CSV.pdb" Component_="Tango.CSV.dll" FileName="TANGOC~5.PDB|Tango.CSV.pdb" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\PPC\Release\Tango.CSV.pdb" SelfReg="false"/> + <ROW File="turbojpeg.dll" Component_="turbojpeg.dll" FileName="TURBOJ~1.DLL|turbojpeg.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\PPC\Release\win7-x64\turbojpeg.dll" SelfReg="false"/> + <ROW File="turbojpeg.dll.meta" Component_="turbojpeg.dll.meta" FileName="TURBOJ~1.MET|turbojpeg.dll.meta" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\PPC\Release\win7-x64\turbojpeg.dll.meta" SelfReg="false"/> + <ROW File="turbojpeg.dll_1" Component_="turbojpeg.dll_1" FileName="TURBOJ~1.DLL|turbojpeg.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\PPC\Release\win7-x86\turbojpeg.dll" SelfReg="false"/> + <ROW File="turbojpeg.dll.meta_1" Component_="turbojpeg.dll.meta_1" FileName="TURBOJ~1.MET|turbojpeg.dll.meta" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\PPC\Release\win7-x86\turbojpeg.dll.meta" SelfReg="false"/> <ATTRIBUTE name="DontAddFileAttributes" value="true"/> </COMPONENT> <COMPONENT cid="caphyon.advinst.msicomp.BootstrOptComponent"> @@ -462,7 +471,7 @@ <ROW Action="AI_DetectSoftware" Sequence="101"/> </COMPONENT> <COMPONENT cid="caphyon.advinst.msicomp.BuildComponent"> - <ROW BuildKey="DefaultBuild" BuildName="DefaultBuild" BuildOrder="1" BuildType="0" PackageFolder="..\Build\Installers\PPC" PackageFileName="PPC Installer v1.0.3" Languages="en" InstallationType="4" CabsLocation="1" PackageType="1" FilesInsideExe="true" ExtractionFolder="[AppDataFolder][|Manufacturer]\[|ProductName] [|ProductVersion]\install" ExtUI="true" UseLargeSchema="true" ExeName="PPC Installer_v1.1.16"/> + <ROW BuildKey="DefaultBuild" BuildName="DefaultBuild" BuildOrder="1" BuildType="0" PackageFolder="..\Build\Installers\PPC" PackageFileName="PPC Installer v1.0.3" Languages="en" InstallationType="4" CabsLocation="1" PackageType="1" FilesInsideExe="true" ExtractionFolder="[AppDataFolder][|Manufacturer]\[|ProductName] [|ProductVersion]\install" ExtUI="true" UseLargeSchema="true" ExeName="PPC Installer_v1.1.17"/> </COMPONENT> <COMPONENT cid="caphyon.advinst.msicomp.DictionaryComponent"> <ROW Path="<AI_DICTS>ui.ail"/> @@ -530,8 +539,6 @@ <COMPONENT cid="caphyon.advinst.msicomp.MsiCreateFolderComponent"> <ROW Directory_="SHORTCUTDIR" Component_="SHORTCUTDIR" ManualDelete="false"/> <ROW Directory_="APPDIR" Component_="APPDIR" ManualDelete="true"/> - <ROW Directory_="win7x64_Dir" Component_="win7x64" ManualDelete="false"/> - <ROW Directory_="win7x86_Dir" Component_="win7x86" ManualDelete="false"/> </COMPONENT> <COMPONENT cid="caphyon.advinst.msicomp.MsiCustActComponent"> <ROW Action="AI_BACKUP_AI_SETUPEXEPATH" Type="51" Source="AI_SETUPEXEPATH_ORIGINAL" Target="[AI_SETUPEXEPATH]"/> @@ -722,8 +729,11 @@ <ROW Feature_="MainFeature" Component_="WebRtc.NET.dll"/> <ROW Feature_="MainFeature" Component_="LiteDB.dll"/> <ROW Feature_="MainFeature" Component_="Tango.PPC.Shared.dll"/> - <ROW Feature_="MainFeature" Component_="win7x86"/> - <ROW Feature_="MainFeature" Component_="win7x64"/> + <ROW Feature_="MainFeature" Component_="Tango.CSV.dll"/> + <ROW Feature_="MainFeature" Component_="turbojpeg.dll"/> + <ROW Feature_="MainFeature" Component_="turbojpeg.dll.meta"/> + <ROW Feature_="MainFeature" Component_="turbojpeg.dll_1"/> + <ROW Feature_="MainFeature" Component_="turbojpeg.dll.meta_1"/> </COMPONENT> <COMPONENT cid="caphyon.advinst.msicomp.MsiInstExSeqComponent"> <ROW Action="AI_STORE_LOCATION" Condition="(Not Installed) OR REINSTALL" Sequence="1502"/> diff --git a/Software/Visual_Studio/FSE/Modules/Tango.FSE.PPCConsole/Controls/RemoteDesktopControl.xaml b/Software/Visual_Studio/FSE/Modules/Tango.FSE.PPCConsole/Controls/RemoteDesktopControl.xaml index a630dbac6..b3c3dbbc9 100644 --- a/Software/Visual_Studio/FSE/Modules/Tango.FSE.PPCConsole/Controls/RemoteDesktopControl.xaml +++ b/Software/Visual_Studio/FSE/Modules/Tango.FSE.PPCConsole/Controls/RemoteDesktopControl.xaml @@ -43,8 +43,8 @@ <Grid HorizontalAlignment="Right" VerticalAlignment="Top"> <StackPanel Margin="0 5 27 0" Orientation="Horizontal"> - <controls:IconButton Cursor="Hand" ToolTip="Take snapshot" x:Name="btnSnapshot" Click="BtnSnapshot_Click" Command="{Binding TakeSnapshotCommand}" IsEnabled="{Binding RemoteDesktopProvider.InSession}" Icon="ImagePlus" Width="24" Height="24" Padding="0" /> - <material:PackIcon Margin="2 0 0 0" ToolTip="Active communication channel is active" Visibility="{Binding RemoteDesktopProvider.IsWebRtcActive,Converter={StaticResource BooleanToVisibilityConverter}}" VerticalAlignment="Center" Kind="LightningBoltCircle" Width="16" Height="16" Foreground="{StaticResource FSE_GreenBrush}" /> + <controls:ToggleIconButton IsChecked="{Binding CursorVisible}" UncheckedIcon="CursorDefault" CheckedIcon="CursorDefault" UncheckedForeground="{StaticResource FSE_GrayBrush}" CheckedForeground="{StaticResource FSE_GreenBrush}" Cursor="Hand" ToolTip="Display remote cursor" IsEnabled="{Binding RemoteDesktopProvider.InSession}" Width="16" Height="16" Padding="0" /> + <controls:IconButton Margin="7 0 0 0" Cursor="Hand" ToolTip="Take snapshot" x:Name="btnSnapshot" Click="BtnSnapshot_Click" Command="{Binding TakeSnapshotCommand}" IsEnabled="{Binding RemoteDesktopProvider.InSession}" Icon="ImagePlus" Width="24" Height="24" Padding="0" /> <controls:IconButton Margin="5 0 0 0" Cursor="Hand" ToolTip="Open in separate window" Icon="OpenInNew" Width="24" Height="24" Padding="0" Command="{Binding WindowsManager.DetachToWindowCommand}" CommandParameter="{Binding ElementName=remoteDesktopControl}" Visibility="{Binding ElementName=remoteDesktopControl,Path=(win:WindowsManagerHelper.IsDetached),Converter={StaticResource BooleanToVisibilityInverseConverter}}" /> </StackPanel> </Grid> diff --git a/Software/Visual_Studio/FSE/Modules/Tango.FSE.PPCConsole/Controls/RemoteDesktopControl.xaml.cs b/Software/Visual_Studio/FSE/Modules/Tango.FSE.PPCConsole/Controls/RemoteDesktopControl.xaml.cs index c32ab3048..617c3ec44 100644 --- a/Software/Visual_Studio/FSE/Modules/Tango.FSE.PPCConsole/Controls/RemoteDesktopControl.xaml.cs +++ b/Software/Visual_Studio/FSE/Modules/Tango.FSE.PPCConsole/Controls/RemoteDesktopControl.xaml.cs @@ -34,6 +34,7 @@ namespace Tango.FSE.PPCConsole.Controls img.PreviewMouseMove += Img_PreviewMouseMove; img.PreviewKeyDown += Img_PreviewKeyDown; img.PreviewKeyUp += Img_PreviewKeyUp; + img.PreviewMouseWheel += Img_PreviewMouseWheel; } private void Img_PreviewKeyDown(object sender, KeyEventArgs e) @@ -73,6 +74,11 @@ namespace Tango.FSE.PPCConsole.Controls _vm.OnMouseMove(e.GetPosition(img), new Size(img.ActualWidth, img.ActualHeight)); } + private void Img_PreviewMouseWheel(object sender, MouseWheelEventArgs e) + { + _vm.OnMouseScroll(e.Delta, e.GetPosition(img), new Size(img.ActualWidth, img.ActualHeight)); + } + private void BtnSnapshot_Click(object sender, RoutedEventArgs e) { rectSnapshot.StartDoubleAnimation(Rectangle.OpacityProperty, TimeSpan.FromSeconds(0.2), 1, 0, null, null, null, true); diff --git a/Software/Visual_Studio/FSE/Modules/Tango.FSE.PPCConsole/ViewModels/RemoteDesktopViewVM.cs b/Software/Visual_Studio/FSE/Modules/Tango.FSE.PPCConsole/ViewModels/RemoteDesktopViewVM.cs index b4a0b07ea..bedcf9b7a 100644 --- a/Software/Visual_Studio/FSE/Modules/Tango.FSE.PPCConsole/ViewModels/RemoteDesktopViewVM.cs +++ b/Software/Visual_Studio/FSE/Modules/Tango.FSE.PPCConsole/ViewModels/RemoteDesktopViewVM.cs @@ -57,6 +57,13 @@ namespace Tango.FSE.PPCConsole.ViewModels set { _recordingTime = value; RaisePropertyChangedAuto(); } } + private bool _cursorVisible; + public bool CursorVisible + { + get { return _cursorVisible; } + set { _cursorVisible = value; RaisePropertyChangedAuto(); SetCursorVisibility(); } + } + #endregion #region Commands @@ -127,6 +134,7 @@ namespace Tango.FSE.PPCConsole.ViewModels base.OnApplicationStarted(); RemoteDesktopProvider.FrameReceived += RemoteDesktopProvider_FrameReceived; + RemoteDesktopProvider.SessionStopped += RemoteDesktopProvider_SessionStopped; MachineProvider.MachineConnected += MachineProvider_MachineConnected; } @@ -162,6 +170,14 @@ namespace Tango.FSE.PPCConsole.ViewModels private void RemoteDesktopProvider_FrameReceived(object sender, DesktopFrameReceivedEventArgs e) { Source = e.Source; + _cursorVisible = e.CursorVisible; + RaisePropertyChanged(nameof(CursorVisible)); + } + + private void RemoteDesktopProvider_SessionStopped(object sender, EventArgs e) + { + _cursorVisible = false; + RaisePropertyChanged(nameof(CursorVisible)); } #endregion @@ -216,6 +232,11 @@ namespace Tango.FSE.PPCConsole.ViewModels RemoteDesktopProvider.MouseDoubleClick(changedButton, point, size); } + public void OnMouseScroll(int delta, System.Windows.Point point, System.Windows.Size size) + { + RemoteDesktopProvider.MouseScroll(delta, point, size); + } + public void OnKeyboardDown(Key key, bool ctrlDown, bool shitDown, bool altDown) { RemoteDesktopProvider.KeyboardDown(key, ctrlDown, shitDown, altDown); @@ -226,6 +247,11 @@ namespace Tango.FSE.PPCConsole.ViewModels RemoteDesktopProvider.KeyboardUp(key, ctrlDown, shitDown, altDown); } + private void SetCursorVisibility() + { + RemoteDesktopProvider.SetRemoteCursorVisibility(CursorVisible); + } + #endregion #region Snapshot diff --git a/Software/Visual_Studio/FSE/Tango.FSE.Common/RemoteDesktop/DesktopFrameReceivedEventArgs.cs b/Software/Visual_Studio/FSE/Tango.FSE.Common/RemoteDesktop/DesktopFrameReceivedEventArgs.cs index 44094ad89..1dee4c8e2 100644 --- a/Software/Visual_Studio/FSE/Tango.FSE.Common/RemoteDesktop/DesktopFrameReceivedEventArgs.cs +++ b/Software/Visual_Studio/FSE/Tango.FSE.Common/RemoteDesktop/DesktopFrameReceivedEventArgs.cs @@ -18,5 +18,7 @@ namespace Tango.FSE.Common.RemoteDesktop public BitmapSource Source { get; set; } public FrameOrigin Origin { get; set; } + + public bool CursorVisible { get; set; } } } diff --git a/Software/Visual_Studio/FSE/Tango.FSE.Common/RemoteDesktop/IRemoteDesktopProvider.cs b/Software/Visual_Studio/FSE/Tango.FSE.Common/RemoteDesktop/IRemoteDesktopProvider.cs index ff93923fb..81f19ff6d 100644 --- a/Software/Visual_Studio/FSE/Tango.FSE.Common/RemoteDesktop/IRemoteDesktopProvider.cs +++ b/Software/Visual_Studio/FSE/Tango.FSE.Common/RemoteDesktop/IRemoteDesktopProvider.cs @@ -16,6 +16,16 @@ namespace Tango.FSE.Common.RemoteDesktop public interface IRemoteDesktopProvider { /// <summary> + /// Occurs when a remote desktop session has started. + /// </summary> + event EventHandler SessionStarted; + + /// <summary> + /// Occurs when a remote desktop session has stopped. + /// </summary> + event EventHandler SessionStopped; + + /// <summary> /// Occurs when a new remote desktop screen frame is available. /// </summary> event EventHandler<DesktopFrameReceivedEventArgs> FrameReceived; @@ -110,6 +120,14 @@ namespace Tango.FSE.Common.RemoteDesktop void MouseDoubleClick(MouseButton button, Point location, Size viewSize); /// <summary> + /// Send a mouse scroll command to the remote PPC. + /// </summary> + /// <param name="delta">The delta.</param> + /// <param name="location">The location.</param> + /// <param name="viewSize">Size of the view.</param> + void MouseScroll(int delta, Point location, Size viewSize); + + /// <summary> /// Sends a key down command to the remote PPC. /// </summary> /// <param name="key">The key.</param> @@ -132,5 +150,11 @@ namespace Tango.FSE.Common.RemoteDesktop /// </summary> /// <param name="command">The command.</param> void SendCommand(RemoteDesktopCommand command); + + /// <summary> + /// Sets the remote cursor visibility. + /// </summary> + /// <param name="visible">if set to <c>true</c> [visible].</param> + void SetRemoteCursorVisibility(bool visible); } } diff --git a/Software/Visual_Studio/FSE/Tango.FSE.UI/Properties/Resources.Designer.cs b/Software/Visual_Studio/FSE/Tango.FSE.UI/Properties/Resources.Designer.cs index b9a160c5e..9a772a793 100644 --- a/Software/Visual_Studio/FSE/Tango.FSE.UI/Properties/Resources.Designer.cs +++ b/Software/Visual_Studio/FSE/Tango.FSE.UI/Properties/Resources.Designer.cs @@ -8,10 +8,10 @@ // </auto-generated> //------------------------------------------------------------------------------ -namespace Tango.FSE.UI.Properties -{ - - +namespace Tango.FSE.UI.Properties { + using System; + + /// <summary> /// A strongly-typed resource class, for looking up localized strings, etc. /// </summary> @@ -19,51 +19,43 @@ namespace Tango.FSE.UI.Properties // class via a tool like ResGen or Visual Studio. // To add or remove a member, edit your .ResX file then rerun ResGen // with the /str option, or rebuild your VS project. - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "15.0.0.0")] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] - internal class Resources - { - + internal class Resources { + private static global::System.Resources.ResourceManager resourceMan; - + private static global::System.Globalization.CultureInfo resourceCulture; - + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] - internal Resources() - { + internal Resources() { } - + /// <summary> /// Returns the cached ResourceManager instance used by this class. /// </summary> [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] - internal static global::System.Resources.ResourceManager ResourceManager - { - get - { - if ((resourceMan == null)) - { + internal static global::System.Resources.ResourceManager ResourceManager { + get { + if (object.ReferenceEquals(resourceMan, null)) { global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Tango.FSE.UI.Properties.Resources", typeof(Resources).Assembly); resourceMan = temp; } return resourceMan; } } - + /// <summary> /// Overrides the current thread's CurrentUICulture property for all /// resource lookups using this strongly typed resource class. /// </summary> [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] - internal static global::System.Globalization.CultureInfo Culture - { - get - { + internal static global::System.Globalization.CultureInfo Culture { + get { return resourceCulture; } - set - { + set { resourceCulture = value; } } diff --git a/Software/Visual_Studio/FSE/Tango.FSE.UI/Properties/Resources.resx b/Software/Visual_Studio/FSE/Tango.FSE.UI/Properties/Resources.resx index af7dbebba..1af7de150 100644 --- a/Software/Visual_Studio/FSE/Tango.FSE.UI/Properties/Resources.resx +++ b/Software/Visual_Studio/FSE/Tango.FSE.UI/Properties/Resources.resx @@ -46,7 +46,7 @@ mimetype: application/x-microsoft.net.object.binary.base64 value : The object must be serialized with - : System.Serialization.Formatters.Binary.BinaryFormatter + : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter : and then encoded with base64 encoding. mimetype: application/x-microsoft.net.object.soap.base64 @@ -60,6 +60,7 @@ : and then encoded with base64 encoding. --> <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> + <xsd:import namespace="http://www.w3.org/XML/1998/namespace" /> <xsd:element name="root" msdata:IsDataSet="true"> <xsd:complexType> <xsd:choice maxOccurs="unbounded"> @@ -68,9 +69,10 @@ <xsd:sequence> <xsd:element name="value" type="xsd:string" minOccurs="0" /> </xsd:sequence> - <xsd:attribute name="name" type="xsd:string" /> + <xsd:attribute name="name" use="required" type="xsd:string" /> <xsd:attribute name="type" type="xsd:string" /> <xsd:attribute name="mimetype" type="xsd:string" /> + <xsd:attribute ref="xml:space" /> </xsd:complexType> </xsd:element> <xsd:element name="assembly"> @@ -85,9 +87,10 @@ <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" /> </xsd:sequence> - <xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" /> + <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" /> <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" /> <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" /> + <xsd:attribute ref="xml:space" /> </xsd:complexType> </xsd:element> <xsd:element name="resheader"> @@ -109,9 +112,9 @@ <value>2.0</value> </resheader> <resheader name="reader"> - <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> </resheader> <resheader name="writer"> - <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> </resheader> </root>
\ No newline at end of file diff --git a/Software/Visual_Studio/FSE/Tango.FSE.UI/RemoteDesktop/DefaultRemoteDesktopProvider.cs b/Software/Visual_Studio/FSE/Tango.FSE.UI/RemoteDesktop/DefaultRemoteDesktopProvider.cs index b43a13e61..e69e39e87 100644 --- a/Software/Visual_Studio/FSE/Tango.FSE.UI/RemoteDesktop/DefaultRemoteDesktopProvider.cs +++ b/Software/Visual_Studio/FSE/Tango.FSE.UI/RemoteDesktop/DefaultRemoteDesktopProvider.cs @@ -52,6 +52,7 @@ namespace Tango.FSE.UI.RemoteDesktop private List<IceCandidate> _iceCandidates; private bool _answerReceived; private JsonSerializerSettings _jsonSettings; + private bool _cursorVisible; [TangoInject] private INotificationProvider NotificationProvider { get; set; } @@ -62,6 +63,16 @@ namespace Tango.FSE.UI.RemoteDesktop #region Events /// <summary> + /// Occurs when a remote desktop session has started. + /// </summary> + public event EventHandler SessionStarted; + + /// <summary> + /// Occurs when a remote desktop session has stopped. + /// </summary> + public event EventHandler SessionStopped; + + /// <summary> /// Occurs when a new remote desktop screen frame is available. /// </summary> public event EventHandler<DesktopFrameReceivedEventArgs> FrameReceived; @@ -92,7 +103,26 @@ namespace Tango.FSE.UI.RemoteDesktop public bool InSession { get { return _inSession; } - set { _inSession = value; RaisePropertyChangedAuto(); RaisePropertyChanged(nameof(CanStartSession)); } + set + { + bool changed = _inSession != value; + + _inSession = value; + RaisePropertyChangedAuto(); + RaisePropertyChanged(nameof(CanStartSession)); + + if (changed) + { + if (_inSession) + { + SessionStarted?.Invoke(this, new EventArgs()); + } + else + { + SessionStopped.Invoke(this, new EventArgs()); + } + } + } } /// <summary> @@ -361,7 +391,8 @@ namespace Tango.FSE.UI.RemoteDesktop FrameReceived?.Invoke(this, new DesktopFrameReceivedEventArgs() { Source = source, - Origin = origin + Origin = origin, + CursorVisible = _cursorVisible }); } } @@ -407,6 +438,7 @@ namespace Tango.FSE.UI.RemoteDesktop } } + _cursorVisible = response.Packet.CursorVisible; OnFrameReceived(_currentFrame.ToBitmapSource()); } catch (Exception ex) @@ -589,6 +621,60 @@ namespace Tango.FSE.UI.RemoteDesktop } /// <summary> + /// Send a mouse scroll command to the remote PPC. + /// </summary> + /// <param name="delta">The delta.</param> + /// <param name="location">The location.</param> + /// <param name="viewSize">Size of the view.</param> + public async void MouseScroll(int delta, Point location, Size viewSize) + { + if (!InSession || _frameSize == null) return; + if (!AuthenticationProvider.CurrentUser.HasPermission(Permissions.FSE_RemoteDesktopControl)) return; + + try + { + var request = new MouseStateRequest() + { + Button = MouseButton.Middle, + EventType = MouseEventType.Scroll, + Location = TranslateLocation(location, viewSize), + ScrollDelta = delta + }; + + if (IsWebRtcActive) + { + SendWebRtcObject(request); + } + else + { + await _machineProvider.MachineOperator.SendGenericRequest<MouseStateRequest, MouseStateResponse>(request); + } + } + catch (Exception ex) + { + LogManager.Log(ex, "Error sending remote desktop mouse scroll command."); + } + } + + /// <summary> + /// Sets the remote cursor visibility. + /// </summary> + /// <param name="visible">if set to <c>true</c> [visible].</param> + public async void SetRemoteCursorVisibility(bool visible) + { + try + { + var request = new SetCursorVisibilityRequest() { Visible = visible }; + await _machineProvider.MachineOperator.SendGenericRequest<SetCursorVisibilityRequest, SetCursorVisibilityResponse>(request); + _cursorVisible = visible; + } + catch (Exception ex) + { + LogManager.Log(ex, "Error sending remote desktop mouse visibility command."); + } + } + + /// <summary> /// Translates the location. /// </summary> /// <param name="location">The location.</param> diff --git a/Software/Visual_Studio/FSE/Tango.FSE.UI/WindowsManager/ChildWindow.xaml.cs b/Software/Visual_Studio/FSE/Tango.FSE.UI/WindowsManager/ChildWindow.xaml.cs index 466eece26..bd21b9cc3 100644 --- a/Software/Visual_Studio/FSE/Tango.FSE.UI/WindowsManager/ChildWindow.xaml.cs +++ b/Software/Visual_Studio/FSE/Tango.FSE.UI/WindowsManager/ChildWindow.xaml.cs @@ -36,7 +36,7 @@ namespace Tango.FSE.UI.WindowsManager _startPoint = e.GetPosition(this); - if (e.ClickCount > 1) + if (e.ClickCount > 1 && btnMaximize.IsEnabled) { WindowState = WindowState == WindowState.Normal ? WindowState.Maximized : WindowState.Normal; return; diff --git a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Properties/AssemblyInfo.cs b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Properties/AssemblyInfo.cs index 20cfa84df..5d5571e57 100644 --- a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Properties/AssemblyInfo.cs +++ b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Properties/AssemblyInfo.cs @@ -4,5 +4,5 @@ using System.Runtime.InteropServices; [assembly: System.Windows.ThemeInfo(System.Windows.ResourceDictionaryLocation.None, System.Windows.ResourceDictionaryLocation.SourceAssembly)] [assembly: AssemblyTitle("Tango - Machine Studio")] -[assembly: AssemblyVersion("4.1.10.0")] +[assembly: AssemblyVersion("4.1.11.0")] [assembly: ComVisible(false)]
\ No newline at end of file diff --git a/Software/Visual_Studio/PPC/Tango.PPC.Common/Properties/Resources.Designer.cs b/Software/Visual_Studio/PPC/Tango.PPC.Common/Properties/Resources.Designer.cs index 60e2bdb01..30828af87 100644 --- a/Software/Visual_Studio/PPC/Tango.PPC.Common/Properties/Resources.Designer.cs +++ b/Software/Visual_Studio/PPC/Tango.PPC.Common/Properties/Resources.Designer.cs @@ -19,7 +19,7 @@ namespace Tango.PPC.Common.Properties { // class via a tool like ResGen or Visual Studio. // To add or remove a member, edit your .ResX file then rerun ResGen // with the /str option, or rebuild your VS project. - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "15.0.0.0")] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] internal class Resources { @@ -59,5 +59,25 @@ namespace Tango.PPC.Common.Properties { resourceCulture = value; } } + + /// <summary> + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// </summary> + internal static System.Drawing.Bitmap finger3 { + get { + object obj = ResourceManager.GetObject("finger3", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// <summary> + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// </summary> + internal static System.Drawing.Bitmap tap { + get { + object obj = ResourceManager.GetObject("tap", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } } } diff --git a/Software/Visual_Studio/PPC/Tango.PPC.Common/Properties/Resources.resx b/Software/Visual_Studio/PPC/Tango.PPC.Common/Properties/Resources.resx index af7dbebba..ca6197f54 100644 --- a/Software/Visual_Studio/PPC/Tango.PPC.Common/Properties/Resources.resx +++ b/Software/Visual_Studio/PPC/Tango.PPC.Common/Properties/Resources.resx @@ -46,7 +46,7 @@ mimetype: application/x-microsoft.net.object.binary.base64 value : The object must be serialized with - : System.Serialization.Formatters.Binary.BinaryFormatter + : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter : and then encoded with base64 encoding. mimetype: application/x-microsoft.net.object.soap.base64 @@ -60,6 +60,7 @@ : and then encoded with base64 encoding. --> <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> + <xsd:import namespace="http://www.w3.org/XML/1998/namespace" /> <xsd:element name="root" msdata:IsDataSet="true"> <xsd:complexType> <xsd:choice maxOccurs="unbounded"> @@ -68,9 +69,10 @@ <xsd:sequence> <xsd:element name="value" type="xsd:string" minOccurs="0" /> </xsd:sequence> - <xsd:attribute name="name" type="xsd:string" /> + <xsd:attribute name="name" use="required" type="xsd:string" /> <xsd:attribute name="type" type="xsd:string" /> <xsd:attribute name="mimetype" type="xsd:string" /> + <xsd:attribute ref="xml:space" /> </xsd:complexType> </xsd:element> <xsd:element name="assembly"> @@ -85,9 +87,10 @@ <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" /> </xsd:sequence> - <xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" /> + <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" /> <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" /> <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" /> + <xsd:attribute ref="xml:space" /> </xsd:complexType> </xsd:element> <xsd:element name="resheader"> @@ -109,9 +112,16 @@ <value>2.0</value> </resheader> <resheader name="reader"> - <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> </resheader> <resheader name="writer"> - <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> </resheader> + <assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" /> + <data name="finger3" type="System.Resources.ResXFileRef, System.Windows.Forms"> + <value>..\Resources\finger3.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value> + </data> + <data name="tap" type="System.Resources.ResXFileRef, System.Windows.Forms"> + <value>..\Resources\tap.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value> + </data> </root>
\ No newline at end of file diff --git a/Software/Visual_Studio/PPC/Tango.PPC.Common/RemoteDesktop/DefaultRemoteDesktopService.cs b/Software/Visual_Studio/PPC/Tango.PPC.Common/RemoteDesktop/DefaultRemoteDesktopService.cs index b118dcdda..9a815df11 100644 --- a/Software/Visual_Studio/PPC/Tango.PPC.Common/RemoteDesktop/DefaultRemoteDesktopService.cs +++ b/Software/Visual_Studio/PPC/Tango.PPC.Common/RemoteDesktop/DefaultRemoteDesktopService.cs @@ -6,6 +6,7 @@ using System.Linq; using System.Security.Authentication; using System.Text; using System.Threading.Tasks; +using System.Windows; using System.Windows.Input; using Tango.Core; using Tango.Core.DI; @@ -38,6 +39,9 @@ namespace Tango.PPC.Common.RemoteDesktop private JsonSerializerSettings _jsonSettings; private IOperationSystemManager _osManager; private IPPCApplicationManager _appManager; + private bool _drawCursor; + private bool _isMouseDown; + private bool _ensureMouseDown; /// <summary> /// Gets or sets a value indicating whether this <see cref="IPPCService" /> is enabled. @@ -137,6 +141,17 @@ namespace Tango.PPC.Common.RemoteDesktop //} } + mainWindow.PreviewMouseDown += (_, __) => + { + _isMouseDown = true; + _ensureMouseDown = true; + }; + + mainWindow.PreviewMouseUp += (_, __) => + { + _isMouseDown = false; + }; + _engine.Comparer.MaxDifferencesThrow = _engine.CaptureRegion.Width * _engine.CaptureRegion.Height / 2; } @@ -300,6 +315,10 @@ namespace Tango.PPC.Common.RemoteDesktop { MouseController.DoubleClick(); } + else if (request.EventType == MouseEventType.Scroll) + { + MouseController.Scroll(request.ScrollDelta); + } if (receiver != null) { @@ -339,8 +358,21 @@ namespace Tango.PPC.Common.RemoteDesktop await receiver.SendGenericResponse(new RemoteDesktopCommandResponse(), token); } + [ExternalBridgeRequestHandlerMethod(typeof(SetCursorVisibilityRequest), RequestHandlerLoggingMode.LogRequestName)] + public async Task OnSetCursorVisibilityRequest(SetCursorVisibilityRequest request, String token, ExternalBridgeReceiver receiver) + { + _drawCursor = request.Visible; + await receiver.SendGenericResponse(new SetCursorVisibilityResponse(), token); + } + private async void _engine_FrameReceived(object sender, ScreenCaptureFrameReceivedEventArgs<RasterFrame> e) { + if (_drawCursor) + { + e.Frame.DrawImage((_isMouseDown || _ensureMouseDown) ? Properties.Resources.tap : Properties.Resources.finger3, new System.Drawing.Point(System.Windows.Forms.Cursor.Position.X - 5, System.Windows.Forms.Cursor.Position.Y - 4)); + _ensureMouseDown = false; + } + _initialPacket = new RemoteDesktopPacket() { Bitmap = e.Frame.ToEncoder<PngEncoder>().ToArray(), @@ -396,11 +428,15 @@ namespace Tango.PPC.Common.RemoteDesktop { RemoteDesktopPacket packet = null; + Point mousePosition = new Point(System.Windows.Forms.Cursor.Position.X, System.Windows.Forms.Cursor.Position.Y); + if (!e.Frame.DifferenceAvailable) { packet = new RemoteDesktopPacket() { - Bitmap = e.Frame.ToEncoder<TurboJpegEncoder>().ToArray(30) + Bitmap = e.Frame.ToEncoder<TurboJpegEncoder>().ToArray(30), + MousePosition = mousePosition, + CursorVisible = _drawCursor }; } else @@ -413,6 +449,8 @@ namespace Tango.PPC.Common.RemoteDesktop Bitmap = diffFrame.ToEncoder<PngEncoder>().ToArray(), IsPartial = true, PartialRegion = new CaptureRegion(diffFrame.Left, diffFrame.Top, diffFrame.Width, diffFrame.Height), + MousePosition = mousePosition, + CursorVisible = _drawCursor }; diffFrame.Dispose(); diff --git a/Software/Visual_Studio/PPC/Tango.PPC.Common/Resources/finger3.png b/Software/Visual_Studio/PPC/Tango.PPC.Common/Resources/finger3.png Binary files differnew file mode 100644 index 000000000..c0a6ce9cd --- /dev/null +++ b/Software/Visual_Studio/PPC/Tango.PPC.Common/Resources/finger3.png diff --git a/Software/Visual_Studio/PPC/Tango.PPC.Common/Resources/tap.png b/Software/Visual_Studio/PPC/Tango.PPC.Common/Resources/tap.png Binary files differnew file mode 100644 index 000000000..4fa679b81 --- /dev/null +++ b/Software/Visual_Studio/PPC/Tango.PPC.Common/Resources/tap.png diff --git a/Software/Visual_Studio/PPC/Tango.PPC.Common/Tango.PPC.Common.csproj b/Software/Visual_Studio/PPC/Tango.PPC.Common/Tango.PPC.Common.csproj index 47b5e310b..6fc24e22a 100644 --- a/Software/Visual_Studio/PPC/Tango.PPC.Common/Tango.PPC.Common.csproj +++ b/Software/Visual_Studio/PPC/Tango.PPC.Common/Tango.PPC.Common.csproj @@ -458,6 +458,12 @@ <ItemGroup> <Folder Include="Scripting\" /> </ItemGroup> + <ItemGroup> + <None Include="Resources\finger3.png" /> + </ItemGroup> + <ItemGroup> + <None Include="Resources\tap.png" /> + </ItemGroup> <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> <Import Project="..\..\packages\System.Data.SQLite.Core.1.0.108.0\build\net46\System.Data.SQLite.Core.targets" Condition="Exists('..\..\packages\System.Data.SQLite.Core.1.0.108.0\build\net46\System.Data.SQLite.Core.targets')" /> <Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild"> @@ -468,7 +474,7 @@ </Target> <ProjectExtensions> <VisualStudio> - <UserProperties BuildVersion_AssemblyInfoFilename="Properties\AssemblyInfo.cs" BuildVersion_UpdateAssemblyVersion="True" BuildVersion_BuildVersioningStyle="None.None.Increment.TimeStamp" BuildVersion_UseGlobalSettings="False" BuildVersion_StartDate="2000/1/1" /> + <UserProperties BuildVersion_StartDate="2000/1/1" BuildVersion_UseGlobalSettings="False" BuildVersion_BuildVersioningStyle="None.None.Increment.TimeStamp" BuildVersion_UpdateAssemblyVersion="True" BuildVersion_AssemblyInfoFilename="Properties\AssemblyInfo.cs" /> </VisualStudio> </ProjectExtensions> </Project>
\ No newline at end of file diff --git a/Software/Visual_Studio/PPC/Tango.PPC.UI/Properties/AssemblyInfo.cs b/Software/Visual_Studio/PPC/Tango.PPC.UI/Properties/AssemblyInfo.cs index 23fecdf0e..aff093b15 100644 --- a/Software/Visual_Studio/PPC/Tango.PPC.UI/Properties/AssemblyInfo.cs +++ b/Software/Visual_Studio/PPC/Tango.PPC.UI/Properties/AssemblyInfo.cs @@ -8,4 +8,4 @@ using System.Windows; // set of attributes. Change these attribute values to modify the information // associated with an assembly. [assembly: AssemblyTitle("Tango PPC Application")] -[assembly: AssemblyVersion("1.1.16.0")] +[assembly: AssemblyVersion("1.1.17.0")] diff --git a/Software/Visual_Studio/Tango.RemoteDesktop/Frames/RasterFrame.cs b/Software/Visual_Studio/Tango.RemoteDesktop/Frames/RasterFrame.cs index bcb372bd3..a9cbea6f2 100644 --- a/Software/Visual_Studio/Tango.RemoteDesktop/Frames/RasterFrame.cs +++ b/Software/Visual_Studio/Tango.RemoteDesktop/Frames/RasterFrame.cs @@ -110,6 +110,18 @@ namespace Tango.RemoteDesktop.Frames } /// <summary> + /// Draws the specified image on to this frame. + /// </summary> + /// <param name="bitmap">The bitmap.</param> + public virtual void DrawImage(Bitmap bitmap, Point position) + { + using (Graphics g = Graphics.FromImage(_bitmap)) + { + g.DrawImage(bitmap, new Rectangle(position, bitmap.Size)); + } + } + + /// <summary> /// Optimizes the bounds of this frame by removing unnecessary margins. /// </summary> /// <returns></returns> diff --git a/Software/Visual_Studio/Tango.RemoteDesktop/Input/MouseController.cs b/Software/Visual_Studio/Tango.RemoteDesktop/Input/MouseController.cs index ce3a3eb09..295aca4b1 100644 --- a/Software/Visual_Studio/Tango.RemoteDesktop/Input/MouseController.cs +++ b/Software/Visual_Studio/Tango.RemoteDesktop/Input/MouseController.cs @@ -77,6 +77,11 @@ namespace Tango.RemoteDesktop.Input simulator.Mouse.LeftButtonDoubleClick(); } + public static void Scroll(int delta) + { + simulator.Mouse.VerticalScroll(delta); + } + [StructLayout(LayoutKind.Sequential)] public struct MousePoint { diff --git a/Software/Visual_Studio/Tango.RemoteDesktop/Network/MouseEventType.cs b/Software/Visual_Studio/Tango.RemoteDesktop/Network/MouseEventType.cs index 2c9f84e03..ca8945dda 100644 --- a/Software/Visual_Studio/Tango.RemoteDesktop/Network/MouseEventType.cs +++ b/Software/Visual_Studio/Tango.RemoteDesktop/Network/MouseEventType.cs @@ -11,6 +11,7 @@ namespace Tango.RemoteDesktop.Network Down, Up, Move, - DoubleClick + DoubleClick, + Scroll, } } diff --git a/Software/Visual_Studio/Tango.RemoteDesktop/Network/MouseStateRequest.cs b/Software/Visual_Studio/Tango.RemoteDesktop/Network/MouseStateRequest.cs index 36e98351f..67076c211 100644 --- a/Software/Visual_Studio/Tango.RemoteDesktop/Network/MouseStateRequest.cs +++ b/Software/Visual_Studio/Tango.RemoteDesktop/Network/MouseStateRequest.cs @@ -13,5 +13,6 @@ namespace Tango.RemoteDesktop.Network public MouseButton Button { get; set; } public MouseEventType EventType { get; set; } public Point Location { get; set; } + public int ScrollDelta { get; set; } } } diff --git a/Software/Visual_Studio/Tango.RemoteDesktop/Network/RemoteDesktopPacket.cs b/Software/Visual_Studio/Tango.RemoteDesktop/Network/RemoteDesktopPacket.cs index 28f890a9a..f0186e94f 100644 --- a/Software/Visual_Studio/Tango.RemoteDesktop/Network/RemoteDesktopPacket.cs +++ b/Software/Visual_Studio/Tango.RemoteDesktop/Network/RemoteDesktopPacket.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; +using System.Windows; namespace Tango.RemoteDesktop.Network { @@ -22,5 +23,15 @@ namespace Tango.RemoteDesktop.Network /// Gets or sets the region on the previous bitmap that needs to be applied with this packet bitmap. /// </summary> public CaptureRegion PartialRegion { get; set; } + + /// <summary> + /// Gets or sets the mouse position. + /// </summary> + public Point MousePosition { get; set; } + + /// <summary> + /// Gets or sets a value indicating whether the frame includes the remote cursor. + /// </summary> + public bool CursorVisible { get; set; } } } diff --git a/Software/Visual_Studio/Tango.RemoteDesktop/Network/SetCursorVisibilityRequest.cs b/Software/Visual_Studio/Tango.RemoteDesktop/Network/SetCursorVisibilityRequest.cs new file mode 100644 index 000000000..f8b832f36 --- /dev/null +++ b/Software/Visual_Studio/Tango.RemoteDesktop/Network/SetCursorVisibilityRequest.cs @@ -0,0 +1,13 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Tango.RemoteDesktop.Network +{ + public class SetCursorVisibilityRequest + { + public bool Visible { get; set; } + } +} diff --git a/Software/Visual_Studio/Tango.RemoteDesktop/Network/SetCursorVisibilityResponse.cs b/Software/Visual_Studio/Tango.RemoteDesktop/Network/SetCursorVisibilityResponse.cs new file mode 100644 index 000000000..d333cb134 --- /dev/null +++ b/Software/Visual_Studio/Tango.RemoteDesktop/Network/SetCursorVisibilityResponse.cs @@ -0,0 +1,13 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Tango.RemoteDesktop.Network +{ + public class SetCursorVisibilityResponse + { + + } +} diff --git a/Software/Visual_Studio/Tango.RemoteDesktop/Tango.RemoteDesktop.csproj b/Software/Visual_Studio/Tango.RemoteDesktop/Tango.RemoteDesktop.csproj index 25c1d265c..4b2c95501 100644 --- a/Software/Visual_Studio/Tango.RemoteDesktop/Tango.RemoteDesktop.csproj +++ b/Software/Visual_Studio/Tango.RemoteDesktop/Tango.RemoteDesktop.csproj @@ -100,6 +100,8 @@ <Compile Include="Network\RemoteDesktopCommandRequest.cs" /> <Compile Include="Network\RemoteDesktopPacket.cs" /> <Compile Include="Network\RemoteDesktopCommandResponse.cs" /> + <Compile Include="Network\SetCursorVisibilityRequest.cs" /> + <Compile Include="Network\SetCursorVisibilityResponse.cs" /> <Compile Include="Network\StartRemoteDesktopSessionRequest.cs" /> <Compile Include="Network\StartRemoteDesktopSessionResponse.cs" /> <Compile Include="Network\StopRemoteDesktopSessionRequest.cs" /> diff --git a/Software/Visual_Studio/Tango.Touch/Controls/TouchNotificationBar.cs b/Software/Visual_Studio/Tango.Touch/Controls/TouchNotificationBar.cs index ccd27333a..d7f79cb8d 100644 --- a/Software/Visual_Studio/Tango.Touch/Controls/TouchNotificationBar.cs +++ b/Software/Visual_Studio/Tango.Touch/Controls/TouchNotificationBar.cs @@ -165,7 +165,12 @@ namespace Tango.Touch.Controls { element.RegisterForLoadedOrNow((x, y) => { - CurrentMinHeight = element.FindChild<UserControl>().MinHeight; + var userControl = element.FindChild<UserControl>(); + + if (userControl != null) + { + CurrentMinHeight = userControl.MinHeight; + } }); } } |
