aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c22
-rw-r--r--Software/Visual_Studio/Advanced Installer Projects/Machine Studio Installer.aip33
-rw-r--r--Software/Visual_Studio/Advanced Installer Projects/PPC Installer-cache/cacheIndex.txtbin52 -> 52 bytes
-rw-r--r--Software/Visual_Studio/Advanced Installer Projects/PPC Installer.aip28
-rw-r--r--Software/Visual_Studio/FSE/Modules/Tango.FSE.PPCConsole/Controls/RemoteDesktopControl.xaml4
-rw-r--r--Software/Visual_Studio/FSE/Modules/Tango.FSE.PPCConsole/Controls/RemoteDesktopControl.xaml.cs6
-rw-r--r--Software/Visual_Studio/FSE/Modules/Tango.FSE.PPCConsole/ViewModels/RemoteDesktopViewVM.cs26
-rw-r--r--Software/Visual_Studio/FSE/Tango.FSE.Common/RemoteDesktop/DesktopFrameReceivedEventArgs.cs2
-rw-r--r--Software/Visual_Studio/FSE/Tango.FSE.Common/RemoteDesktop/IRemoteDesktopProvider.cs24
-rw-r--r--Software/Visual_Studio/FSE/Tango.FSE.UI/Properties/Resources.Designer.cs44
-rw-r--r--Software/Visual_Studio/FSE/Tango.FSE.UI/Properties/Resources.resx13
-rw-r--r--Software/Visual_Studio/FSE/Tango.FSE.UI/RemoteDesktop/DefaultRemoteDesktopProvider.cs90
-rw-r--r--Software/Visual_Studio/FSE/Tango.FSE.UI/WindowsManager/ChildWindow.xaml.cs2
-rw-r--r--Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Properties/AssemblyInfo.cs2
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.Common/Properties/Resources.Designer.cs22
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.Common/Properties/Resources.resx20
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.Common/RemoteDesktop/DefaultRemoteDesktopService.cs40
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.Common/Resources/finger3.pngbin0 -> 1005 bytes
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.Common/Resources/tap.pngbin0 -> 1316 bytes
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.Common/Tango.PPC.Common.csproj8
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.UI/Properties/AssemblyInfo.cs2
-rw-r--r--Software/Visual_Studio/Tango.RemoteDesktop/Frames/RasterFrame.cs12
-rw-r--r--Software/Visual_Studio/Tango.RemoteDesktop/Input/MouseController.cs5
-rw-r--r--Software/Visual_Studio/Tango.RemoteDesktop/Network/MouseEventType.cs3
-rw-r--r--Software/Visual_Studio/Tango.RemoteDesktop/Network/MouseStateRequest.cs1
-rw-r--r--Software/Visual_Studio/Tango.RemoteDesktop/Network/RemoteDesktopPacket.cs11
-rw-r--r--Software/Visual_Studio/Tango.RemoteDesktop/Network/SetCursorVisibilityRequest.cs13
-rw-r--r--Software/Visual_Studio/Tango.RemoteDesktop/Network/SetCursorVisibilityResponse.cs13
-rw-r--r--Software/Visual_Studio/Tango.RemoteDesktop/Tango.RemoteDesktop.csproj2
-rw-r--r--Software/Visual_Studio/Tango.Touch/Controls/TouchNotificationBar.cs7
30 files changed, 363 insertions, 92 deletions
diff --git a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c
index 30f9d7596..1f1976e0e 100644
--- a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c
+++ b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c
@@ -1009,8 +1009,18 @@ uint32_t DcHeaterMaxTempCBFunction(uint32_t IfIndex, uint32_t readValue)
AlarmHandlingSetAlarm(HeaterEventType[index], true);
}
}
- DeActivateHeater(index);
- HeaterRecalculateHeaterParams(index, 0);
+ if (index == HEATER_TYPE__DryerAirHeater)
+ {
+ DeActivateHeater(HEATER_TYPE__DryerMainHeater);
+ HeaterRecalculateSharedHeatersParams(HEATER_TYPE__DryerMainHeater,0);
+ DeActivateHeater(HEATER_TYPE__DryerSecondaryHeater);
+ HeaterRecalculateSharedHeatersParams(HEATER_TYPE__DryerSecondaryHeater,0);
+ }
+ else
+ {
+ DeActivateHeater(index);
+ HeaterRecalculateHeaterParams(index, 0);
+ }
HeaterMaxTempFlag[index] = true;
//ReportWithPackageFilter(HeatersFilter,(MinreadValue/100), "Heater Over the max temperature, turned off");
return OK;
@@ -1149,9 +1159,9 @@ uint32_t HeaterControlCBFunction(uint32_t IfIndex, uint32_t readValue)
if (readValue < ((HeaterCmd[index].targettemperatue * (100-HeaterControl[index].outputproportionalband))/100))
//if (readValue < (/*HeaterCmd[index].targettemperatue * AcHeatersLoweroperationLimit/1000*/HeaterCmd[index].targettemperatue-800))
{
- //ReportWithPackageFilter(HeatersFilter,"AC Activating",__FILE__,index,HeaterPreviousRead[index],RpWarning,readValue, index);
if ((HeaterMaxTempFlag[HEATER_TYPE__DryerSecondaryHeater] == false)&&(HeaterMaxTempFlag[HEATER_TYPE__DryerMainHeater] == false))
{
+ ReportWithPackageFilter(HeatersFilter,"AC Activating",__FILE__,index,HeaterPreviousRead[index],RpWarning,readValue, index);
ActivateHeater(HEATER_TYPE__DryerSecondaryHeater);
ActivateHeater(HEATER_TYPE__DryerMainHeater);
HeaterRecalculateSharedHeatersParams(HEATER_TYPE__DryerMainHeater,100);
@@ -1255,10 +1265,12 @@ uint32_t HeaterControlCBFunction(uint32_t IfIndex, uint32_t readValue)
HeaterPIDConfig[index].m_calculatedError = PIDAlgorithmCalculation(HeaterPIDConfig[index].m_SetParam , HeaterPIDConfig[index].m_mesuredParam,
&HeaterPIDConfig[index].m_params, &HeaterPIDConfig[index].m_preError, &HeaterPIDConfig[index].m_integral);
//}
-// len = usnprintf(ACheatstr, 254, "ACD Id, Temp , Integral, Output{ %d, %d ,%d, %d} ",index,(int)HeaterPIDConfig[index].m_mesuredParam ,(int)HeaterPIDConfig[index].m_integral,(int)HeaterPIDConfig[index].m_calculatedError);
+ int len = usnprintf(ACheatstr, 254, "ACD Id, Temp , Integral, Output{ %d, %d ,%d, %d} H1 %d H2 %d ",index,
+ (int)HeaterPIDConfig[index].m_mesuredParam ,(int)HeaterPIDConfig[index].m_integral,(int)HeaterPIDConfig[index].m_calculatedError,
+ GetHeaterState(HEATER_TYPE__DryerMainHeater),GetHeaterState(HEATER_TYPE__DryerSecondaryHeater));
// ReportWithPackageFilter(HeatersFilter,logmsg[index],__FILE__,__LINE__,index,RpWarning,index, Counter[index]);
// #warning PID is now only proportional (above)
-// ReportWithPackageFilter(HeatersFilter,ACheatstr,__FILE__,__LINE__,index,RpWarning,readValue, HeaterPIDConfig[index].m_calculatedError);
+ ReportWithPackageFilter(HeatersFilter,ACheatstr,__FILE__,__LINE__,index,RpWarning,readValue, HeaterPIDConfig[index].m_calculatedError);
//ReportWithPackageFilter(HeatersFilter,"AC PID",__FILE__,__LINE__,HeaterPIDConfig[index].m_calculatedError/100,RpWarning,readValue, index);
if (HeaterRestarted[HEATER_TYPE__DryerMainHeater] == true)
{
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="&lt;AI_DICTS&gt;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
index 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
Binary files differ
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="&lt;AI_DICTS&gt;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
new file mode 100644
index 000000000..c0a6ce9cd
--- /dev/null
+++ b/Software/Visual_Studio/PPC/Tango.PPC.Common/Resources/finger3.png
Binary files differ
diff --git a/Software/Visual_Studio/PPC/Tango.PPC.Common/Resources/tap.png b/Software/Visual_Studio/PPC/Tango.PPC.Common/Resources/tap.png
new file mode 100644
index 000000000..4fa679b81
--- /dev/null
+++ b/Software/Visual_Studio/PPC/Tango.PPC.Common/Resources/tap.png
Binary files differ
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;
+ }
});
}
}