aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio
diff options
context:
space:
mode:
Diffstat (limited to 'Software/Visual_Studio')
-rw-r--r--Software/Visual_Studio/Advanced Installer Projects/Machine Studio Installer.aip9
-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.aip46
-rw-r--r--Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Developer/ViewModels/MainViewVM.cs17
-rw-r--r--Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Developer/Views/JobView.xaml2
-rw-r--r--Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Developer/Views/JobView.xaml.cs5
-rw-r--r--Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Statistics/Converters/DateTimeToStringFormatConverter.cs10
-rw-r--r--Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Statistics/Models/JobRunModel.cs2
-rw-r--r--Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Statistics/ViewModels/JobRunsViewVM.cs5
-rw-r--r--Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Statistics/Views/JobRunsView.xaml7
-rw-r--r--Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Properties/AssemblyInfo.cs2
-rw-r--r--Software/Visual_Studio/PPC/Modules/Tango.PPC.Maintenance/Commands/HomingMotorCommand.cs80
-rw-r--r--Software/Visual_Studio/PPC/Modules/Tango.PPC.Maintenance/Commands/OpenCloseDyeingHeadCommand.cs31
-rw-r--r--Software/Visual_Studio/PPC/Modules/Tango.PPC.Maintenance/Commands/OpenCloseLeftLeadingWheelsCommand.cs30
-rw-r--r--Software/Visual_Studio/PPC/Modules/Tango.PPC.Maintenance/Commands/OpenCloseMotorCommand.cs158
-rw-r--r--Software/Visual_Studio/PPC/Modules/Tango.PPC.Maintenance/Commands/OpenCloseRightLeadingWheelsCommand.cs30
-rw-r--r--Software/Visual_Studio/PPC/Modules/Tango.PPC.Maintenance/Commands/ResetThreadLoadingCommand.cs24
-rw-r--r--Software/Visual_Studio/PPC/Modules/Tango.PPC.Maintenance/Controls/StateTouchButton.cs109
-rw-r--r--Software/Visual_Studio/PPC/Modules/Tango.PPC.Maintenance/MaintenanceCommand.cs81
-rw-r--r--Software/Visual_Studio/PPC/Modules/Tango.PPC.Maintenance/Tango.PPC.Maintenance.csproj13
-rw-r--r--Software/Visual_Studio/PPC/Modules/Tango.PPC.Maintenance/Themes/Generic.xaml9
-rw-r--r--Software/Visual_Studio/PPC/Modules/Tango.PPC.Maintenance/ViewModels/MaintenanceViewVM.cs99
-rw-r--r--Software/Visual_Studio/PPC/Modules/Tango.PPC.Maintenance/Views/MaintenanceView.xaml22
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.UI/Properties/AssemblyInfo.cs2
-rw-r--r--Software/Visual_Studio/Tango.Integration/Operation/MachineOperator.cs45
-rw-r--r--Software/Visual_Studio/Tango.PMR/ExtensionMethods/VersionPackageDescriptorExtensions.cs21
-rw-r--r--Software/Visual_Studio/Tango.RemoteDesktop/Tango.RemoteDesktop.csproj1
-rw-r--r--Software/Visual_Studio/Utilities/Tango.CctOptimizer.CLI/App.config28
-rw-r--r--Software/Visual_Studio/Utilities/Tango.CctOptimizer.CLI/Program.cs36
-rw-r--r--Software/Visual_Studio/Utilities/Tango.CctOptimizer.CLI/Properties/AssemblyInfo.cs36
-rw-r--r--Software/Visual_Studio/Utilities/Tango.CctOptimizer.CLI/Tango.CctOptimizer.CLI.csproj71
-rw-r--r--Software/Visual_Studio/Utilities/Tango.CctOptimizer.CLI/packages.config4
-rw-r--r--Software/Visual_Studio/Utilities/Tango.LogViewer.UI/LogViewerManager.cs2
-rw-r--r--Software/Visual_Studio/Utilities/Tango.LogViewer.UI/MainWindow.xaml4
34 files changed, 921 insertions, 120 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 a1d8353fe..29f744ef6 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:{996DE894-BBBE-4C3F-B7B3-FA81F2D5C6A1} " Type="16"/>
+ <ROW Property="ProductCode" Value="1033:{8BB95FB5-D71D-4534-BA0C-2FB5660F52DF} " Type="16"/>
<ROW Property="ProductLanguage" Value="1033"/>
<ROW Property="ProductName" Value="Machine Studio"/>
- <ROW Property="ProductVersion" Value="4.1.2.0" Type="32"/>
+ <ROW Property="ProductVersion" Value="4.1.4.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="-"/>
@@ -360,6 +360,7 @@
<ROW Component="opencv_video330d.dll" ComponentId="{961A4293-2F0D-43AE-B49A-CDEB8911F176}" Directory_="APPDIR" Attributes="0" KeyPath="opencv_video330d.dll"/>
<ROW Component="opencv_videoio330d.dll" ComponentId="{FCE62E62-C669-4BE2-90ED-EF4639CDAAD6}" Directory_="APPDIR" Attributes="0" KeyPath="opencv_videoio330d.dll"/>
<ROW Component="opencv_videostab330d.dll" ComponentId="{98E1A941-24F3-4054-A292-F897A688B0C0}" Directory_="APPDIR" Attributes="0" KeyPath="opencv_videostab330d.dll"/>
+ <ROW Component="protobufnet.dll" ComponentId="{EC7E9950-BFF7-4B28-918D-7F5EBAD54696}" Directory_="APPDIR" Attributes="0" KeyPath="protobufnet.dll"/>
<ROW Component="template.bmp" ComponentId="{927DB4C0-6F7A-4D61-8BFC-16AE3116AD96}" Directory_="TCC_Dir" Attributes="0" KeyPath="template.bmp"/>
<ROW Component="ucrtbased.dll" ComponentId="{4188BB88-A714-488A-A02D-98710ACC94F5}" Directory_="APPDIR" Attributes="0" KeyPath="ucrtbased.dll"/>
<ROW Component="vcruntime140.dll" ComponentId="{078A42AF-E964-4CA3-8A9C-CBE6D0FD76AA}" Directory_="APPDIR" Attributes="0" KeyPath="vcruntime140.dll"/>
@@ -799,6 +800,7 @@
<ROW File="Tango.MachineStudio.Sites.dll" Component_="Tango.MachineStudio.Sites.dll" FileName="TANGO~19.DLL|Tango.MachineStudio.Sites.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\Machine Studio\Release\Tango.MachineStudio.Sites.dll" SelfReg="false"/>
<ROW File="Tango.MachineStudio.Sites.dll.config" Component_="Dragablz.xml" FileName="TANGO~21.CON|Tango.MachineStudio.Sites.dll.config" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\Machine Studio\Release\Tango.MachineStudio.Sites.dll.config" SelfReg="false"/>
<ROW File="Tango.MachineStudio.Sites.pdb" Component_="Tango.MachineStudio.Sites.dll" FileName="TANGO~21.PDB|Tango.MachineStudio.Sites.pdb" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\Machine Studio\Release\Tango.MachineStudio.Sites.pdb" SelfReg="false"/>
+ <ROW File="protobufnet.dll" Component_="protobufnet.dll" FileName="PROTOB~1.DLL|protobuf-net.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\Machine Studio\Release\protobuf-net.dll" SelfReg="false"/>
</COMPONENT>
<COMPONENT cid="caphyon.advinst.msicomp.AiRemoveFileComponent">
<ROW RemoveFile="_" Options="3"/>
@@ -810,7 +812,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.2"/>
+ <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.4"/>
</COMPONENT>
<COMPONENT cid="caphyon.advinst.msicomp.DictionaryComponent">
<ROW Path="&lt;AI_DICTS&gt;ui.ail"/>
@@ -1272,6 +1274,7 @@
<ROW Feature_="MachineStudio" Component_="Microsoft.AspNet.SignalR.Client.dll"/>
<ROW Feature_="MachineStudio" Component_="Tango.MachineStudio.ActionLogs.dll"/>
<ROW Feature_="MachineStudio" Component_="Tango.MachineStudio.Sites.dll"/>
+ <ROW Feature_="MachineStudio" Component_="protobufnet.dll"/>
</COMPONENT>
<COMPONENT cid="caphyon.advinst.msicomp.MsiInstExSeqComponent">
<ROW Action="AI_DOWNGRADE" Condition="AI_NEWERPRODUCTFOUND AND (UILevel &lt;&gt; 5)" Sequence="210"/>
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 993ced97e..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 e3bea2a1b..4abc93ae4 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:{FE1D7090-44C5-428B-A09C-787D47214B63} " Type="16"/>
+ <ROW Property="ProductCode" Value="1033:{2F0EF030-C2BF-4934-ADA8-5671C67481E5} " Type="16"/>
<ROW Property="ProductLanguage" Value="1033"/>
<ROW Property="ProductName" Value="Tango"/>
- <ROW Property="ProductVersion" Value="1.1.5.0" Type="32"/>
+ <ROW Property="ProductVersion" Value="1.1.6.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="-"/>
@@ -45,6 +45,8 @@
<ROW Directory="SHORTCUTDIR" Directory_Parent="TARGETDIR" DefaultDir="SHORTC~1|SHORTCUTDIR" IsPseudoRoot="1"/>
<ROW Directory="SQLExaminer_Dir" Directory_Parent="APPDIR" DefaultDir="SQLEXA~1|SQLExaminer" DirectoryOptions="3"/>
<ROW Directory="TARGETDIR" DefaultDir="SourceDir"/>
+ <ROW Directory="win7x64_Dir" Directory_Parent="APPDIR" DefaultDir="win7-x64" DirectoryOptions="3"/>
+ <ROW Directory="win7x86_Dir" Directory_Parent="APPDIR" DefaultDir="win7-x86" DirectoryOptions="3"/>
</COMPONENT>
<COMPONENT cid="caphyon.advinst.msicomp.MsiCompsComponent">
<ROW Component="AI_CustomARPName" ComponentId="{EE79DF51-F4B7-472B-8A12-4685CDAAE068}" Directory_="APPDIR" Attributes="4" KeyPath="DisplayName" Options="1"/>
@@ -106,6 +108,7 @@
<ROW Component="Newtonsoft.Json.dll" ComponentId="{E556628B-DB87-4249-AF5E-F5D0AC9E6C32}" Directory_="APPDIR" Attributes="0" KeyPath="Newtonsoft.Json.dll"/>
<ROW Component="OverrideData.xml" ComponentId="{D7B559ED-70E2-42F9-996D-2D6FDB2ED752}" Directory_="Configurations_Dir" Attributes="0" KeyPath="OverrideData.xml" Type="0"/>
<ROW Component="ProductInformation" ComponentId="{1D49743C-F4ED-4BE9-8ED0-3792287247F6}" Directory_="APPDIR" Attributes="4" KeyPath="Version"/>
+ <ROW Component="Quamotion.TurboJpegWrapper.dll" ComponentId="{7087C345-7FB9-4352-8B80-F0841567E396}" Directory_="APPDIR" Attributes="0" KeyPath="Quamotion.TurboJpegWrapper.dll"/>
<ROW Component="RazorEngine.dll" ComponentId="{2654081B-012F-4788-90EA-870D13A54ABF}" Directory_="APPDIR" Attributes="0" KeyPath="RazorEngine.dll"/>
<ROW Component="SA.Binary.dll" ComponentId="{FCC45B67-1B47-46A2-8C0A-6CAA78E7C9F0}" Directory_="SQLExaminer_Dir" Attributes="0" KeyPath="SA.Binary.dll"/>
<ROW Component="SA.CodeView.dll" ComponentId="{0C133131-0EB4-4E2B-885F-B62EECF039AB}" Directory_="SQLExaminer_Dir" Attributes="0" KeyPath="SA.CodeView.dll"/>
@@ -118,6 +121,10 @@
<ROW Component="SHORTCUTDIR" ComponentId="{A92AA38A-7460-42EA-ABC9-FD4139D94971}" Directory_="SHORTCUTDIR" Attributes="0"/>
<ROW Component="SQLDECmd.exe" ComponentId="{9B0E3FAF-58F1-440D-8F2C-387C8C98793F}" Directory_="SQLExaminer_Dir" Attributes="0" KeyPath="SQLDECmd.exe"/>
<ROW Component="SQLECmd.exe" ComponentId="{AF4969A2-0160-4854-B30F-B574DE35F8F4}" Directory_="SQLExaminer_Dir" Attributes="0" KeyPath="SQLECmd.exe"/>
+ <ROW Component="SharpDX.DXGI.dll" ComponentId="{87FE0B71-F976-4E23-B094-443F456B34AF}" Directory_="APPDIR" Attributes="0" KeyPath="SharpDX.DXGI.dll"/>
+ <ROW Component="SharpDX.Direct3D11.dll" ComponentId="{0B2325DC-A1C1-41B2-9735-2B38BC239968}" Directory_="APPDIR" Attributes="0" KeyPath="SharpDX.Direct3D11.dll"/>
+ <ROW Component="SharpDX.Mathematics.dll" ComponentId="{BE265E31-4257-4F45-BAF4-BADC9B14B66B}" Directory_="APPDIR" Attributes="0" KeyPath="SharpDX.Mathematics.dll"/>
+ <ROW Component="SharpDX.dll" ComponentId="{59C4CE3C-F489-4B53-8A55-287F2066106B}" Directory_="APPDIR" Attributes="0" KeyPath="SharpDX.dll"/>
<ROW Component="SimpleValidator.dll" ComponentId="{3B9AB784-0AFD-4667-A756-9B0A86ECCC2B}" Directory_="APPDIR" Attributes="0" KeyPath="SimpleValidator.dll"/>
<ROW Component="System.Data.SQLite.EF6.dll" ComponentId="{77619618-AE0C-4A0A-A5E9-108FA3546A36}" Directory_="APPDIR" Attributes="0" KeyPath="System.Data.SQLite.EF6.dll"/>
<ROW Component="System.Data.SQLite.Linq.dll" ComponentId="{A614D2D8-C390-4DE9-AAF4-B4E3111FE389}" Directory_="APPDIR" Attributes="0" KeyPath="System.Data.SQLite.Linq.dll"/>
@@ -172,6 +179,7 @@
<ROW Component="Tango.PPC.Updater.exe" ComponentId="{84BA158D-5726-4A12-A862-801C0A7D1220}" Directory_="APPDIR" Attributes="0" KeyPath="Tango.PPC.Updater.exe"/>
<ROW Component="Tango.PPC.WatchDog.exe" ComponentId="{2F9BE3CD-AD75-4B3C-BA89-60F7C72B4FA0}" Directory_="APPDIR" Attributes="0" KeyPath="Tango.PPC.WatchDog.exe"/>
<ROW Component="Tango.Pulse.dll" ComponentId="{1D8EEC5A-50C1-4B5B-99F5-66C09B148399}" Directory_="APPDIR" Attributes="0" KeyPath="Tango.Pulse.dll"/>
+ <ROW Component="Tango.RemoteDesktop.dll" ComponentId="{61385E9F-C8C8-4FF2-B38A-A899C78F15A3}" Directory_="APPDIR" Attributes="0" KeyPath="Tango.RemoteDesktop.dll"/>
<ROW Component="Tango.SQLExaminer.dll" ComponentId="{795270E3-0FEE-4055-B878-48E7972EC1F3}" Directory_="APPDIR" Attributes="0" KeyPath="Tango.SQLExaminer.dll"/>
<ROW Component="Tango.Scripting.dll" ComponentId="{8D45C29A-DCFE-42D2-B991-E459DF70627D}" Directory_="APPDIR" Attributes="0" KeyPath="Tango.Scripting.dll"/>
<ROW Component="Tango.Serialization.dll" ComponentId="{E8EA3C7F-0CAF-4DDC-8C3C-CB8F47F6AF0D}" Directory_="APPDIR" Attributes="0" KeyPath="Tango.Serialization.dll"/>
@@ -182,8 +190,14 @@
<ROW Component="Tango.Transport.dll" ComponentId="{757E4901-D269-42C1-A70E-7B8DABB66024}" Directory_="APPDIR" Attributes="0" KeyPath="Tango.Transport.dll"/>
<ROW Component="Tango.Web.dll" ComponentId="{131328BC-D68F-4CB8-8D8C-F89CF6F8486C}" Directory_="APPDIR" Attributes="0" KeyPath="Tango.Web.dll"/>
<ROW Component="Tango.WiFi.dll" ComponentId="{8082C9BD-5BDB-4C52-BCA6-E8604D4D232B}" Directory_="APPDIR" Attributes="0" KeyPath="Tango.WiFi.dll"/>
+ <ROW Component="WindowsInput.dll" ComponentId="{916884AD-CD7D-4AB0-8B3B-A2205ACFBDF4}" Directory_="APPDIR" Attributes="0" KeyPath="WindowsInput.dll"/>
<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="{9C0A7477-6703-4042-AFFB-2D14D14281E9}" Directory_="win7x64_Dir" Attributes="256" KeyPath="turbojpeg.dll"/>
+ <ROW Component="turbojpeg.dll.meta" ComponentId="{4C73120A-E7EA-4911-89FC-2782AC8B5636}" Directory_="win7x64_Dir" Attributes="0" KeyPath="turbojpeg.dll.meta" Type="0"/>
+ <ROW Component="turbojpeg.dll.meta_1" ComponentId="{0FB87E53-8746-4BC8-855D-F8E02B8E60B6}" Directory_="win7x86_Dir" Attributes="0" KeyPath="turbojpeg.dll.meta_1" Type="0"/>
+ <ROW Component="turbojpeg.dll_1" ComponentId="{22E1018B-EC8B-4D31-B11C-0597D5F70484}" 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"/>
@@ -409,6 +423,20 @@
<ROW File="Microsoft.AspNet.SignalR.Client.pdb" Component_="Microsoft.AspNet.SignalR.Client.dll" FileName="MICROS~2.PDB|Microsoft.AspNet.SignalR.Client.pdb" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\PPC\Release\Microsoft.AspNet.SignalR.Client.pdb" SelfReg="false"/>
<ROW File="Tango.Console.dll" Component_="Tango.Console.dll" FileName="TANGOC~7.DLL|Tango.Console.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\PPC\Release\Tango.Console.dll" SelfReg="false"/>
<ROW File="Tango.Console.pdb" Component_="Tango.Console.dll" FileName="TANGOC~4.PDB|Tango.Console.pdb" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\PPC\Release\Tango.Console.pdb" SelfReg="false"/>
+ <ROW File="protobufnet.dll" Component_="protobufnet.dll" FileName="PROTOB~1.DLL|protobuf-net.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\PPC\Release\protobuf-net.dll" SelfReg="false"/>
+ <ROW File="Quamotion.TurboJpegWrapper.dll" Component_="Quamotion.TurboJpegWrapper.dll" FileName="QUAMOT~1.DLL|Quamotion.TurboJpegWrapper.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\PPC\Release\Quamotion.TurboJpegWrapper.dll" SelfReg="false"/>
+ <ROW File="Quamotion.TurboJpegWrapper.pdb" Component_="Quamotion.TurboJpegWrapper.dll" FileName="QUAMOT~1.PDB|Quamotion.TurboJpegWrapper.pdb" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\PPC\Release\Quamotion.TurboJpegWrapper.pdb" SelfReg="false"/>
+ <ROW File="SharpDX.Direct3D11.dll" Component_="SharpDX.Direct3D11.dll" FileName="SHARPD~1.DLL|SharpDX.Direct3D11.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\PPC\Release\SharpDX.Direct3D11.dll" SelfReg="false"/>
+ <ROW File="SharpDX.dll" Component_="SharpDX.dll" FileName="SharpDX.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\PPC\Release\SharpDX.dll" SelfReg="false"/>
+ <ROW File="SharpDX.DXGI.dll" Component_="SharpDX.DXGI.dll" FileName="SHARPD~2.DLL|SharpDX.DXGI.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\PPC\Release\SharpDX.DXGI.dll" SelfReg="false"/>
+ <ROW File="SharpDX.Mathematics.dll" Component_="SharpDX.Mathematics.dll" FileName="SHARPD~3.DLL|SharpDX.Mathematics.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\PPC\Release\SharpDX.Mathematics.dll" SelfReg="false"/>
+ <ROW File="Tango.RemoteDesktop.dll" Component_="Tango.RemoteDesktop.dll" FileName="TANGOR~1.DLL|Tango.RemoteDesktop.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\PPC\Release\Tango.RemoteDesktop.dll" SelfReg="false"/>
+ <ROW File="Tango.RemoteDesktop.pdb" Component_="Tango.RemoteDesktop.dll" FileName="TANGOR~1.PDB|Tango.RemoteDesktop.pdb" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\PPC\Release\Tango.RemoteDesktop.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"/>
+ <ROW File="WindowsInput.dll" Component_="WindowsInput.dll" FileName="WINDOW~1.DLL|WindowsInput.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\PPC\Release\WindowsInput.dll" SelfReg="false"/>
<ATTRIBUTE name="DontAddFileAttributes" value="true"/>
</COMPONENT>
<COMPONENT cid="caphyon.advinst.msicomp.BootstrOptComponent">
@@ -418,7 +446,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.5"/>
+ <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.6"/>
</COMPONENT>
<COMPONENT cid="caphyon.advinst.msicomp.DictionaryComponent">
<ROW Path="&lt;AI_DICTS&gt;ui.ail"/>
@@ -660,6 +688,18 @@
<ROW Feature_="MainFeature" Component_="APPDIR"/>
<ROW Feature_="MainFeature" Component_="Microsoft.AspNet.SignalR.Client.dll"/>
<ROW Feature_="MainFeature" Component_="Tango.Console.dll"/>
+ <ROW Feature_="MainFeature" Component_="protobufnet.dll"/>
+ <ROW Feature_="MainFeature" Component_="Quamotion.TurboJpegWrapper.dll"/>
+ <ROW Feature_="MainFeature" Component_="SharpDX.Direct3D11.dll"/>
+ <ROW Feature_="MainFeature" Component_="SharpDX.dll"/>
+ <ROW Feature_="MainFeature" Component_="SharpDX.DXGI.dll"/>
+ <ROW Feature_="MainFeature" Component_="SharpDX.Mathematics.dll"/>
+ <ROW Feature_="MainFeature" Component_="Tango.RemoteDesktop.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"/>
+ <ROW Feature_="MainFeature" Component_="WindowsInput.dll"/>
</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/MachineStudio/Modules/Tango.MachineStudio.Developer/ViewModels/MainViewVM.cs b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Developer/ViewModels/MainViewVM.cs
index c5df65f59..9f0ea3423 100644
--- a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Developer/ViewModels/MainViewVM.cs
+++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Developer/ViewModels/MainViewVM.cs
@@ -1681,6 +1681,23 @@ namespace Tango.MachineStudio.Developer.ViewModels
#endregion
+ #region Color Space
+
+ public void OnBrushStopColorSpaceChanged(BrushStop stop)
+ {
+ if (stop != null && stop.ColorSpace != null && stop.BrushColorSpace != BL.Enumerations.ColorSpaces.Volume)
+ {
+ var lubricant = stop.LiquidVolumes.SingleOrDefault(x => x.LiquidType == LiquidTypes.Lubricant);
+
+ if (lubricant != null)
+ {
+ lubricant.Volume = 100;
+ }
+ }
+ }
+
+ #endregion
+
#region Process Parameters Management
/// <summary>
diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Developer/Views/JobView.xaml b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Developer/Views/JobView.xaml
index 59ad6341d..ed8fc57fe 100644
--- a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Developer/Views/JobView.xaml
+++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Developer/Views/JobView.xaml
@@ -976,7 +976,7 @@
<Image Source="../Images/colorspace.png" Width="24"></Image>
<TextBlock VerticalAlignment="Center" Margin="5 0 0 0" FontSize="10">Color Space</TextBlock>
</StackPanel>
- <ComboBox ItemsSource="{Binding RelativeSource={RelativeSource AncestorType=UserControl},Path=DataContext.ColorSpaces}" SelectedItem="{Binding ColorSpace}" DisplayMemberPath="Name" Width="100" HorizontalAlignment="Left">
+ <ComboBox SelectionChanged="OnBrushStopColorSpace_SelectionChanged" ItemsSource="{Binding RelativeSource={RelativeSource AncestorType=UserControl},Path=DataContext.ColorSpaces}" SelectedItem="{Binding ColorSpace}" DisplayMemberPath="Name" Width="100" HorizontalAlignment="Left">
<ComboBox.ItemContainerStyle>
<Style TargetType="ComboBoxItem" BasedOn="{StaticResource {x:Type ComboBoxItem}}">
<Setter Property="Background" Value="{StaticResource WhiteBrush100}"></Setter>
diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Developer/Views/JobView.xaml.cs b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Developer/Views/JobView.xaml.cs
index a4a8fdcf4..94c1ed802 100644
--- a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Developer/Views/JobView.xaml.cs
+++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Developer/Views/JobView.xaml.cs
@@ -281,5 +281,10 @@ namespace Tango.MachineStudio.Developer.Views
{
listStops.SelectedItem = (sender as ListBoxItem).DataContext;
}
+
+ private void OnBrushStopColorSpace_SelectionChanged(object sender, SelectionChangedEventArgs e)
+ {
+ _vm.OnBrushStopColorSpaceChanged((sender as ComboBox).DataContext as BrushStop);
+ }
}
}
diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Statistics/Converters/DateTimeToStringFormatConverter.cs b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Statistics/Converters/DateTimeToStringFormatConverter.cs
index 79b8cb92e..6b5154ce3 100644
--- a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Statistics/Converters/DateTimeToStringFormatConverter.cs
+++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Statistics/Converters/DateTimeToStringFormatConverter.cs
@@ -12,12 +12,14 @@ namespace Tango.MachineStudio.Statistics.Converters
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
- if(value is DateTime)
+ if (value != null)
{
- DateTime date = (DateTime)value;
- return date.ToLocalTime().ToString(@"hh\:mm\:ss");
+ return ((TimeSpan)value).ToString(@"hh\:mm\:ss");
+ }
+ else
+ {
+ return TimeSpan.FromSeconds(0).ToString(@"hh\:mm\:ss");
}
- return "";
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Statistics/Models/JobRunModel.cs b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Statistics/Models/JobRunModel.cs
index 2bf3a42a4..28d51ab47 100644
--- a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Statistics/Models/JobRunModel.cs
+++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Statistics/Models/JobRunModel.cs
@@ -19,6 +19,8 @@ namespace Tango.MachineStudio.Statistics.Models
public TimeSpan? HeatingDuration { get; set; }
+ public RmlModel Rml { get; set; }
+
public void Init()
{
if (JobRun.HeatingStartDate != null)
diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Statistics/ViewModels/JobRunsViewVM.cs b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Statistics/ViewModels/JobRunsViewVM.cs
index 567867a80..a51d18909 100644
--- a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Statistics/ViewModels/JobRunsViewVM.cs
+++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Statistics/ViewModels/JobRunsViewVM.cs
@@ -313,7 +313,7 @@ namespace Tango.MachineStudio.Statistics.ViewModels
DateTime endUtc = EndSelectedDate.ToUniversalTime() + offsetTime;
string jobName = SelectedJob == null ? "" : SelectedJob.Name;
- var runs = await new JobRunsCollectionBuilder(db).Set(x => x.ActualStartDate <= DbFunctions.TruncateTime(endUtc) && x.ActualStartDate >= DbFunctions.TruncateTime(startUtc.Date))
+ var runs = await new JobRunsCollectionBuilder(db).Set(x => x.StartDate <= DbFunctions.TruncateTime(endUtc) && x.StartDate >= DbFunctions.TruncateTime(startUtc.Date))
.WithMachines(SelectedMachines.SynchedSource.ToList())
.WithJobSource(JobRunSelectedSources.SynchedSource)
.WithJobStatus(JobRunSelectedStatuses.SynchedSource)
@@ -329,7 +329,8 @@ namespace Tango.MachineStudio.Statistics.ViewModels
JobRun = x,
Machine = _allMachines.FirstOrDefault(y => y.Guid == x.MachineGuid),
User = _allUsers.SingleOrDefault(y => y.Guid == x.UserGuid),
- }).ToList();
+ Rml = _rmlsModels.SingleOrDefault(y => y.Guid == x.RmlGuid)
+ }).OrderByDescending(x => x.JobRun.StartDate).ToList();
modelList.ForEach(x => x.Init());
JobRuns = modelList.ToObservableCollection();
diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Statistics/Views/JobRunsView.xaml b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Statistics/Views/JobRunsView.xaml
index 82043ae72..71e44465a 100644
--- a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Statistics/Views/JobRunsView.xaml
+++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Statistics/Views/JobRunsView.xaml
@@ -433,11 +433,12 @@
<DataGridTextColumn Header="Machine" Binding="{Binding Machine.SerialNumber}" Width="100" ></DataGridTextColumn>
<DataGridTextColumn Header="User" Binding="{Binding User.Contact.FullName}" Width="100" ElementStyle="{StaticResource WrapText}" />
<DataGridTextColumn Header="Job Name" Binding="{Binding JobRun.JobName}" Width="100" ElementStyle="{StaticResource WrapText}"/>
+ <DataGridTextColumn Header="Thread" Binding="{Binding Rml.Name}" Width="80" ElementStyle="{StaticResource WrapText}"/>
<DataGridTextColumn Header="Length" Binding="{Binding JobRun.JobLength, StringFormat={}{0:0.00}}" Width="60" />
<DataGridTextColumn Header="Source" Binding="{Binding JobRun.Source, Converter={StaticResource EnumToDescriptionConverter}}" Width="60" />
- <DataGridTextColumn Header="Upload &#10;Duration" Binding="{Binding UploadDuration, Converter={StaticResource DateTimeToStringFormatConverter}, FallbackValue=5}" Width="90"/>
- <DataGridTextColumn Header="Heating &#10;Duration" Binding="{Binding HeatingDuration, Converter={StaticResource DateTimeToStringFormatConverter}, FallbackValue=5}" Width="90" />
- <DataGridTextColumn Header="Start Time" Binding="{Binding JobRun.ActualStartDate, Converter={StaticResource DateTimeUTCToShortDateTimeConverter}}" Width="90" />
+ <DataGridTextColumn Header="Upload &#10;Duration" Binding="{Binding UploadDuration, Converter={StaticResource DateTimeToStringFormatConverter}, FallbackValue='N/A',TargetNullValue='N/A'}" Width="90"/>
+ <DataGridTextColumn Header="Heating &#10;Duration" Binding="{Binding HeatingDuration, Converter={StaticResource DateTimeToStringFormatConverter}, FallbackValue='N/A',TargetNullValue='N/A'}" Width="90" />
+ <DataGridTextColumn Header="Start Time" Binding="{Binding JobRun.ActualStartDate, Converter={StaticResource DateTimeUTCToShortDateTimeConverter}}" Width="95" />
<DataGridTextColumn Header="IsGradient" Binding="{Binding JobRun.IsGradient}" Width="70" />
<DataGridTextColumn Header="GR" Binding="{Binding JobRun.GradientResolutionCm}" Width="30" />
<DataGridTextColumn Header="Status" Binding="{Binding JobRun.JobRunStatus, Converter={StaticResource EnumToDescriptionConverter}}" Width="70"/>
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 9f7d786bc..edf619f2f 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.2.0")]
+[assembly: AssemblyVersion("4.1.4.0")]
[assembly: ComVisible(false)] \ No newline at end of file
diff --git a/Software/Visual_Studio/PPC/Modules/Tango.PPC.Maintenance/Commands/HomingMotorCommand.cs b/Software/Visual_Studio/PPC/Modules/Tango.PPC.Maintenance/Commands/HomingMotorCommand.cs
new file mode 100644
index 000000000..d3f44fe7e
--- /dev/null
+++ b/Software/Visual_Studio/PPC/Modules/Tango.PPC.Maintenance/Commands/HomingMotorCommand.cs
@@ -0,0 +1,80 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using Tango.PMR.Diagnostics;
+using Tango.PMR.Hardware;
+
+namespace Tango.PPC.Maintenance.Commands
+{
+ public abstract class HomingMotorCommand : MaintenanceCommand<object>
+ {
+ public HardwareMotorType Motor { get; set; }
+
+ public MotorDirection Direction { get; set; }
+
+ public double Speed { get; set; }
+
+ public String HomingMessage { get; set; }
+
+ public String ErrorMessage { get; set; }
+
+ public String SuccessMessage { get; set; }
+
+ public HomingMotorCommand(HardwareMotorType motor,
+ MotorDirection direction,
+ double speed,
+ string homingMessage,
+ string errorMessage,
+ string successMessage)
+ {
+ Motor = motor;
+ Direction = direction;
+ Speed = speed;
+ HomingMessage = homingMessage;
+ ErrorMessage = errorMessage;
+ SuccessMessage = successMessage;
+ }
+
+ protected override void OnExecute()
+ {
+ IsEnabled = false;
+
+ try
+ {
+ NotificationProvider.SetGlobalBusyMessage(HomingMessage);
+
+ MachineProvider.MachineOperator.StartMotorHoming(new PMR.Diagnostics.MotorHomingRequest()
+ {
+ Direction = Direction,
+ MotorType = Motor,
+ Speed = Speed,
+ }).Subscribe((response) =>
+ {
+ //Next
+ }, (ex) =>
+ {
+ //Error
+ IsEnabled = true;
+ NotificationProvider.ReleaseGlobalBusyMessage();
+ LogManager.Log(ex, ErrorMessage);
+ NotificationProvider.ShowError(ex.FlattenMessage());
+ }, () =>
+ {
+ //Complete
+ IsEnabled = true;
+ NotificationProvider.ReleaseGlobalBusyMessage();
+ NotificationProvider.ShowSuccess(SuccessMessage);
+ });
+ }
+ catch (Exception ex)
+ {
+ LogManager.Log(ex, ErrorMessage);
+ NotificationProvider.ReleaseGlobalBusyMessage();
+ NotificationProvider.ShowError(ex.FlattenMessage());
+ IsEnabled = true;
+ }
+ }
+ }
+}
diff --git a/Software/Visual_Studio/PPC/Modules/Tango.PPC.Maintenance/Commands/OpenCloseDyeingHeadCommand.cs b/Software/Visual_Studio/PPC/Modules/Tango.PPC.Maintenance/Commands/OpenCloseDyeingHeadCommand.cs
new file mode 100644
index 000000000..794274e21
--- /dev/null
+++ b/Software/Visual_Studio/PPC/Modules/Tango.PPC.Maintenance/Commands/OpenCloseDyeingHeadCommand.cs
@@ -0,0 +1,31 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using Tango.Integration.Operation;
+using Tango.PMR.Diagnostics;
+using Tango.PMR.Hardware;
+
+namespace Tango.PPC.Maintenance.Commands
+{
+ public class OpenCloseDyeingHeadCommand : OpenCloseMotorCommand
+ {
+ public OpenCloseDyeingHeadCommand() : base(
+ HardwareMotorType.MotoDhLid,
+ MotorDirection.Backward,
+ 400,
+ 400,
+ MotorState.Closed,
+ "Opening dyeing head lead...",
+ "Closing dyeing head lead...",
+ "Error opening dyeing head lead.",
+ "Error closing dyeing head lead.",
+ "The dyeing head lead is now opened.",
+ "The dyeing head lead is now closed."
+ )
+ {
+
+ }
+ }
+}
diff --git a/Software/Visual_Studio/PPC/Modules/Tango.PPC.Maintenance/Commands/OpenCloseLeftLeadingWheelsCommand.cs b/Software/Visual_Studio/PPC/Modules/Tango.PPC.Maintenance/Commands/OpenCloseLeftLeadingWheelsCommand.cs
new file mode 100644
index 000000000..b0d8c1dc5
--- /dev/null
+++ b/Software/Visual_Studio/PPC/Modules/Tango.PPC.Maintenance/Commands/OpenCloseLeftLeadingWheelsCommand.cs
@@ -0,0 +1,30 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using Tango.PMR.Diagnostics;
+using Tango.PMR.Hardware;
+
+namespace Tango.PPC.Maintenance.Commands
+{
+ public class OpenCloseLeftLeadingWheelsCommand : OpenCloseMotorCommand
+ {
+ public OpenCloseLeftLeadingWheelsCommand() : base(
+ HardwareMotorType.MotoLloading,
+ MotorDirection.Backward,
+ 250,
+ 250,
+ MotorState.Closed,
+ "Opening left leading wheels...",
+ "Closing left leading wheels...",
+ "Error opening left leading wheels.",
+ "Error closing left leading wheels.",
+ "The left leading wheels are now opened.",
+ "The left leading wheels are now closed."
+ )
+ {
+
+ }
+ }
+}
diff --git a/Software/Visual_Studio/PPC/Modules/Tango.PPC.Maintenance/Commands/OpenCloseMotorCommand.cs b/Software/Visual_Studio/PPC/Modules/Tango.PPC.Maintenance/Commands/OpenCloseMotorCommand.cs
new file mode 100644
index 000000000..149c3675d
--- /dev/null
+++ b/Software/Visual_Studio/PPC/Modules/Tango.PPC.Maintenance/Commands/OpenCloseMotorCommand.cs
@@ -0,0 +1,158 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using Tango.PMR.Diagnostics;
+using Tango.PMR.Hardware;
+
+namespace Tango.PPC.Maintenance.Commands
+{
+ public abstract class OpenCloseMotorCommand : MaintenanceCommand<OpenCloseMotorCommand.MotorState>
+ {
+ public enum MotorState
+ {
+ Closed,
+ Opened,
+ }
+
+ public HardwareMotorType Motor { get; set; }
+
+ public MotorDirection OpenDirection { get; set; }
+
+ public MotorDirection CloseDirection
+ {
+ get
+ {
+ return OpenDirection == MotorDirection.Forward ? MotorDirection.Backward : MotorDirection.Forward;
+ }
+ }
+
+ public double OpeningSpeed { get; set; }
+
+ public double ClosingSpeed { get; set; }
+
+ public String OpeningMessage { get; set; }
+
+ public String ClosingMessage { get; set; }
+
+ public String OpeningErrorMessage { get; set; }
+
+ public String ClosingErrorMessage { get; set; }
+
+ public String OpeningSuccessMessage { get; set; }
+
+ public String ClosingSuccessMessage { get; set; }
+
+ public OpenCloseMotorCommand(
+ HardwareMotorType motor,
+ MotorDirection openDirection,
+ double openingSpeed,
+ double closingSpeed,
+ MotorState defaultState,
+ String openingMessage,
+ String closingMessage,
+ String openingErrorMessage,
+ String closingErrorMessage,
+ String openingSuccessMessage,
+ String closingSuccessMessage)
+ {
+
+ Motor = motor;
+ OpenDirection = openDirection;
+ OpeningSpeed = openingSpeed;
+ ClosingSpeed = closingSpeed;
+ State = defaultState;
+ OpeningMessage = openingMessage;
+ ClosingMessage = closingMessage;
+ OpeningErrorMessage = openingErrorMessage;
+ ClosingErrorMessage = closingErrorMessage;
+ OpeningSuccessMessage = openingSuccessMessage;
+ ClosingSuccessMessage = closingSuccessMessage;
+ }
+
+ protected override void OnExecute()
+ {
+ if (State == MotorState.Closed)
+ {
+ IsEnabled = false;
+
+ try
+ {
+ NotificationProvider.SetGlobalBusyMessage(OpeningMessage);
+
+ MachineProvider.MachineOperator.StartMotorHoming(new PMR.Diagnostics.MotorHomingRequest()
+ {
+ Direction = OpenDirection,
+ MotorType = Motor,
+ Speed = OpeningSpeed,
+ }).Subscribe((response) =>
+ {
+ //Next
+ }, (ex) =>
+ {
+ //Error
+ IsEnabled = true;
+ NotificationProvider.ReleaseGlobalBusyMessage();
+ LogManager.Log(ex, OpeningErrorMessage);
+ NotificationProvider.ShowError(ex.FlattenMessage());
+ }, () =>
+ {
+ //Complete
+ IsEnabled = true;
+ State = MotorState.Opened;
+ NotificationProvider.ReleaseGlobalBusyMessage();
+ NotificationProvider.ShowSuccess(OpeningSuccessMessage);
+ });
+ }
+ catch (Exception ex)
+ {
+ LogManager.Log(ex, OpeningErrorMessage);
+ NotificationProvider.ReleaseGlobalBusyMessage();
+ NotificationProvider.ShowError(ex.FlattenMessage());
+ IsEnabled = true;
+ }
+ }
+ else
+ {
+ IsEnabled = false;
+
+ try
+ {
+ NotificationProvider.SetGlobalBusyMessage(ClosingMessage);
+
+ MachineProvider.MachineOperator.StartMotorHoming(new PMR.Diagnostics.MotorHomingRequest()
+ {
+ Direction = CloseDirection,
+ MotorType = Motor,
+ Speed = ClosingSpeed,
+ }).Subscribe((response) =>
+ {
+ //Next
+ }, (ex) =>
+ {
+ //Error
+ IsEnabled = true;
+ NotificationProvider.ReleaseGlobalBusyMessage();
+ LogManager.Log(ex, ClosingErrorMessage);
+ NotificationProvider.ShowError(ex.FlattenMessage());
+ }, () =>
+ {
+ //Complete
+ IsEnabled = true;
+ State = MotorState.Closed;
+ NotificationProvider.ReleaseGlobalBusyMessage();
+ NotificationProvider.ShowSuccess(ClosingSuccessMessage);
+ });
+ }
+ catch (Exception ex)
+ {
+ LogManager.Log(ex, ClosingErrorMessage);
+ NotificationProvider.ReleaseGlobalBusyMessage();
+ NotificationProvider.ShowError(ex.FlattenMessage());
+ IsEnabled = true;
+ }
+ }
+ }
+ }
+}
diff --git a/Software/Visual_Studio/PPC/Modules/Tango.PPC.Maintenance/Commands/OpenCloseRightLeadingWheelsCommand.cs b/Software/Visual_Studio/PPC/Modules/Tango.PPC.Maintenance/Commands/OpenCloseRightLeadingWheelsCommand.cs
new file mode 100644
index 000000000..ced9eea60
--- /dev/null
+++ b/Software/Visual_Studio/PPC/Modules/Tango.PPC.Maintenance/Commands/OpenCloseRightLeadingWheelsCommand.cs
@@ -0,0 +1,30 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using Tango.PMR.Diagnostics;
+using Tango.PMR.Hardware;
+
+namespace Tango.PPC.Maintenance.Commands
+{
+ public class OpenCloseRightLeadingWheelsCommand : OpenCloseMotorCommand
+ {
+ public OpenCloseRightLeadingWheelsCommand() : base(
+ HardwareMotorType.MotoRloading,
+ MotorDirection.Backward,
+ 250,
+ 250,
+ MotorState.Closed,
+ "Opening right leading wheels...",
+ "Closing right leading wheels...",
+ "Error opening right leading wheels.",
+ "Error closing right leading wheels.",
+ "The right leading wheels are now opened.",
+ "The right leading wheels are now closed."
+ )
+ {
+
+ }
+ }
+}
diff --git a/Software/Visual_Studio/PPC/Modules/Tango.PPC.Maintenance/Commands/ResetThreadLoadingCommand.cs b/Software/Visual_Studio/PPC/Modules/Tango.PPC.Maintenance/Commands/ResetThreadLoadingCommand.cs
new file mode 100644
index 000000000..0078cd546
--- /dev/null
+++ b/Software/Visual_Studio/PPC/Modules/Tango.PPC.Maintenance/Commands/ResetThreadLoadingCommand.cs
@@ -0,0 +1,24 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using Tango.PMR.Diagnostics;
+using Tango.PMR.Hardware;
+
+namespace Tango.PPC.Maintenance.Commands
+{
+ public class ResetThreadLoadingCommand : HomingMotorCommand
+ {
+ public ResetThreadLoadingCommand() : base(
+ HardwareMotorType.MotoDryerLoadarm,
+ MotorDirection.Backward,
+ 200,
+ "Resetting thread loading arm...",
+ "Error resetting thread loading arm.",
+ "Thread loading arm in now in place.")
+ {
+
+ }
+ }
+}
diff --git a/Software/Visual_Studio/PPC/Modules/Tango.PPC.Maintenance/Controls/StateTouchButton.cs b/Software/Visual_Studio/PPC/Modules/Tango.PPC.Maintenance/Controls/StateTouchButton.cs
new file mode 100644
index 000000000..9a259482b
--- /dev/null
+++ b/Software/Visual_Studio/PPC/Modules/Tango.PPC.Maintenance/Controls/StateTouchButton.cs
@@ -0,0 +1,109 @@
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Collections.ObjectModel;
+using System.Collections.Specialized;
+using System.ComponentModel;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows;
+using System.Windows.Controls;
+using System.Windows.Data;
+using System.Windows.Documents;
+using System.Windows.Input;
+using System.Windows.Markup;
+using System.Windows.Media;
+using System.Windows.Media.Imaging;
+using System.Windows.Navigation;
+using System.Windows.Shapes;
+using Tango.Touch.Controls;
+
+namespace Tango.PPC.Maintenance.Controls
+{
+ public class ButtonState : DependencyObject
+ {
+ public Object Value
+ {
+ get { return (Object)GetValue(ValueProperty); }
+ set { SetValue(ValueProperty, value); }
+ }
+ public static readonly DependencyProperty ValueProperty =
+ DependencyProperty.Register("Value", typeof(Object), typeof(ButtonState), new PropertyMetadata(null));
+
+ public Object Content
+ {
+ get { return (Object)GetValue(ContentProperty); }
+ set { SetValue(ContentProperty, value); }
+ }
+ public static readonly DependencyProperty ContentProperty =
+ DependencyProperty.Register("Content", typeof(Object), typeof(ButtonState), new PropertyMetadata(null));
+ }
+
+ [ContentProperty(nameof(States))]
+ public class StateTouchButton : TouchButton
+ {
+ public ObservableCollection<Object> States
+ {
+ get { return (ObservableCollection<Object>)GetValue(StatesProperty); }
+ set { SetValue(StatesProperty, value); }
+ }
+ public static readonly DependencyProperty StatesProperty =
+ DependencyProperty.Register("States", typeof(ObservableCollection<Object>), typeof(StateTouchButton), new PropertyMetadata(null, (d, e) => (d as StateTouchButton).OnStatesChanged()));
+
+ public Object SelectedState
+ {
+ get { return (Object)GetValue(SelectedStateProperty); }
+ set { SetValue(SelectedStateProperty, value); }
+ }
+ public static readonly DependencyProperty SelectedStateProperty =
+ DependencyProperty.Register("SelectedState", typeof(Object), typeof(StateTouchButton), new PropertyMetadata(null, (d, e) => (d as StateTouchButton).OnSelectedStateChanged()));
+
+ public StateTouchButton()
+ {
+ States = new ObservableCollection<object>();
+ }
+
+ private void OnStatesChanged()
+ {
+ if (States != null)
+ {
+ States.CollectionChanged -= States_CollectionChanged;
+ States.CollectionChanged += States_CollectionChanged;
+ OnSelectedStateChanged();
+ }
+ }
+
+ private void OnSelectedStateChanged()
+ {
+ if (SelectedState == null)
+ {
+ Content = null;
+ return;
+ }
+
+ if (States != null)
+ {
+ var converter = TypeDescriptor.GetConverter(SelectedState.GetType());
+ var matchingState = States.OfType<ButtonState>().ToList().FirstOrDefault(x => x.Value != null && converter.ConvertFrom(x.Value).Equals(SelectedState));
+ if (matchingState != null)
+ {
+ Content = matchingState.Content;
+ }
+ else
+ {
+ Content = null;
+ }
+ }
+ else
+ {
+ Content = null;
+ }
+ }
+
+ private void States_CollectionChanged(object sender, NotifyCollectionChangedEventArgs e)
+ {
+ OnSelectedStateChanged();
+ }
+ }
+}
diff --git a/Software/Visual_Studio/PPC/Modules/Tango.PPC.Maintenance/MaintenanceCommand.cs b/Software/Visual_Studio/PPC/Modules/Tango.PPC.Maintenance/MaintenanceCommand.cs
new file mode 100644
index 000000000..5c74d92cd
--- /dev/null
+++ b/Software/Visual_Studio/PPC/Modules/Tango.PPC.Maintenance/MaintenanceCommand.cs
@@ -0,0 +1,81 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using Tango.Core;
+using Tango.Core.Commands;
+using Tango.Core.DI;
+using Tango.Integration.Operation;
+using Tango.PPC.Common.Connection;
+using Tango.PPC.Common.Notifications;
+
+namespace Tango.PPC.Maintenance
+{
+ public abstract class MaintenanceCommand<T> : ExtendedObject
+ {
+ private IMachineProvider _machineProvider;
+ [TangoInject(Mode = TangoInjectMode.WhenAvailable)]
+ protected IMachineProvider MachineProvider
+ {
+ get { return _machineProvider; }
+ set
+ {
+ _machineProvider = value; RaisePropertyChangedAuto();
+ _machineProvider.MachineOperator.StatusChanged += MachineOperator_StatusChanged;
+ }
+ }
+
+ [TangoInject(Mode = TangoInjectMode.WhenAvailable)]
+ protected INotificationProvider NotificationProvider { get; set; }
+
+ private RelayCommand _command;
+ public RelayCommand Command
+ {
+ get { return _command; }
+ set { _command = value; RaisePropertyChangedAuto(); }
+ }
+
+ private bool _isEnabled;
+ public bool IsEnabled
+ {
+ get { return _isEnabled; }
+ set { _isEnabled = value; RaisePropertyChangedAuto(); InvalidateRelayCommands(); }
+ }
+
+ private T _state;
+ public T State
+ {
+ get { return _state; }
+ set { _state = value; RaisePropertyChangedAuto(); InvalidateRelayCommands(); }
+ }
+
+ private void MachineOperator_StatusChanged(object sender, MachineStatuses e)
+ {
+ InvalidateRelayCommands();
+ }
+
+ public MaintenanceCommand()
+ {
+ TangoIOC.Default.Inject(this);
+ IsEnabled = true;
+ Command = new RelayCommand(Execute, CanExecute);
+ }
+
+ protected virtual bool CanExecute()
+ {
+ if (!IsEnabled) return false;
+ if (MachineProvider == null) return false;
+ if (!MachineProvider.MachineOperator.CanPrint) return false;
+
+ return true;
+ }
+
+ private void Execute()
+ {
+ OnExecute();
+ }
+
+ protected abstract void OnExecute();
+ }
+}
diff --git a/Software/Visual_Studio/PPC/Modules/Tango.PPC.Maintenance/Tango.PPC.Maintenance.csproj b/Software/Visual_Studio/PPC/Modules/Tango.PPC.Maintenance/Tango.PPC.Maintenance.csproj
index 3f9f7c7b9..42d4a396e 100644
--- a/Software/Visual_Studio/PPC/Modules/Tango.PPC.Maintenance/Tango.PPC.Maintenance.csproj
+++ b/Software/Visual_Studio/PPC/Modules/Tango.PPC.Maintenance/Tango.PPC.Maintenance.csproj
@@ -85,6 +85,10 @@
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
+ <Page Include="Themes\Generic.xaml">
+ <SubType>Designer</SubType>
+ <Generator>MSBuild:Compile</Generator>
+ </Page>
<Page Include="Views\GeneralGuideView.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
@@ -102,6 +106,13 @@
<Compile Include="..\..\..\Versioning\GlobalVersionInfo.cs">
<Link>GlobalVersionInfo.cs</Link>
</Compile>
+ <Compile Include="Commands\HomingMotorCommand.cs" />
+ <Compile Include="Commands\OpenCloseDyeingHeadCommand.cs" />
+ <Compile Include="Commands\OpenCloseRightLeadingWheelsCommand.cs" />
+ <Compile Include="Commands\OpenCloseLeftLeadingWheelsCommand.cs" />
+ <Compile Include="Commands\OpenCloseMotorCommand.cs" />
+ <Compile Include="Commands\ResetThreadLoadingCommand.cs" />
+ <Compile Include="Controls\StateTouchButton.cs" />
<Compile Include="Converters\LiquidTypeToBrushConverter.cs" />
<Compile Include="Converters\MidTankLevelToElementHeightConverter.cs" />
<Compile Include="Converters\StringToFirstLetterConverter.cs" />
@@ -113,6 +124,7 @@
<Compile Include="Guides\HandleWasteCartridgeGuide.cs" />
<Compile Include="Guides\LoadNewThreadGuide.cs" />
<Compile Include="Helpers\GuideHelper.cs" />
+ <Compile Include="MaintenanceCommand.cs" />
<Compile Include="MaintenanceModule.cs" />
<Compile Include="Models\MidTankLevelModel.cs" />
<Compile Include="Models\OverallTemperatureModel.cs" />
@@ -265,6 +277,7 @@
<Resource Include="Images\cone-full.png" />
<Resource Include="Images\l-full.png" />
</ItemGroup>
+ <ItemGroup />
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<ProjectExtensions>
<VisualStudio>
diff --git a/Software/Visual_Studio/PPC/Modules/Tango.PPC.Maintenance/Themes/Generic.xaml b/Software/Visual_Studio/PPC/Modules/Tango.PPC.Maintenance/Themes/Generic.xaml
new file mode 100644
index 000000000..a77cc2281
--- /dev/null
+++ b/Software/Visual_Studio/PPC/Modules/Tango.PPC.Maintenance/Themes/Generic.xaml
@@ -0,0 +1,9 @@
+<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
+ xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+ xmlns:touch="clr-namespace:Tango.Touch.Controls;assembly=Tango.Touch"
+ xmlns:local="clr-namespace:Tango.PPC.Maintenance.Controls">
+
+ <Style TargetType="{x:Type local:StateTouchButton}" BasedOn="{StaticResource {x:Type touch:TouchButton}}">
+
+ </Style>
+</ResourceDictionary> \ No newline at end of file
diff --git a/Software/Visual_Studio/PPC/Modules/Tango.PPC.Maintenance/ViewModels/MaintenanceViewVM.cs b/Software/Visual_Studio/PPC/Modules/Tango.PPC.Maintenance/ViewModels/MaintenanceViewVM.cs
index aeb349bdc..8d221c3f3 100644
--- a/Software/Visual_Studio/PPC/Modules/Tango.PPC.Maintenance/ViewModels/MaintenanceViewVM.cs
+++ b/Software/Visual_Studio/PPC/Modules/Tango.PPC.Maintenance/ViewModels/MaintenanceViewVM.cs
@@ -11,6 +11,7 @@ using Tango.Integration.Operation;
using Tango.Logging;
using Tango.PMR.MachineStatus;
using Tango.PPC.Common;
+using Tango.PPC.Maintenance.Commands;
using Tango.PPC.Maintenance.Helpers;
using Tango.PPC.Maintenance.Models;
using Tango.PPC.Maintenance.Views;
@@ -38,11 +39,15 @@ namespace Tango.PPC.Maintenance.ViewModels
set { _overallTemperature = value; RaisePropertyChangedAuto(); }
}
- public RelayCommand OpenDyeingHeadCommand { get; set; }
+ public RelayCommand ExportLogsCommand { get; set; }
- public RelayCommand CloseDyeingHeadCommand { get; set; }
+ public OpenCloseDyeingHeadCommand OpenCloseDyeingHeadCommand { get; set; }
- public RelayCommand ExportLogsCommand { get; set; }
+ public OpenCloseLeftLeadingWheelsCommand OpenCloseLeftLeadingWheelsCommand { get; set; }
+
+ public OpenCloseRightLeadingWheelsCommand OpenCloseRightLeadingWheelsCommand { get; set; }
+
+ public ResetThreadLoadingCommand ResetThreadLoadingCommand { get; set; }
public MaintenanceViewVM()
{
@@ -50,10 +55,12 @@ namespace Tango.PPC.Maintenance.ViewModels
OverallTemperature = new OverallTemperatureModel();
OpenGuideCommand = new RelayCommand<GuideBase>(OpenGuide);
-
- OpenDyeingHeadCommand = new RelayCommand(OpenDyeingHead);
- CloseDyeingHeadCommand = new RelayCommand(CloseDyeingHead);
ExportLogsCommand = new RelayCommand(ExportLogsToStorage);
+
+ OpenCloseDyeingHeadCommand = new OpenCloseDyeingHeadCommand();
+ OpenCloseLeftLeadingWheelsCommand = new OpenCloseLeftLeadingWheelsCommand();
+ OpenCloseRightLeadingWheelsCommand = new OpenCloseRightLeadingWheelsCommand();
+ ResetThreadLoadingCommand = new ResetThreadLoadingCommand();
}
public override void OnApplicationStarted()
@@ -101,86 +108,6 @@ namespace Tango.PPC.Maintenance.ViewModels
}
}
- private void OpenDyeingHead()
- {
- IsFree = false;
-
- try
- {
- NotificationProvider.SetGlobalBusyMessage("Opening dyeing head lead...");
-
- MachineProvider.MachineOperator.StartMotorHoming(new PMR.Diagnostics.MotorHomingRequest()
- {
- Direction = PMR.Diagnostics.MotorDirection.Backward,
- MotorType = PMR.Hardware.HardwareMotorType.MotoDhLid,
- Speed = 400,
- }).Subscribe((response) =>
- {
- //Next
- }, (ex) =>
- {
- //Error
- IsFree = true;
- NotificationProvider.ReleaseGlobalBusyMessage();
- LogManager.Log(ex, "Error opening dyeing head lead.");
- NotificationProvider.ShowError(ex.FlattenMessage());
- }, () =>
- {
- //Complete
- IsFree = true;
- NotificationProvider.ReleaseGlobalBusyMessage();
- NotificationProvider.ShowSuccess("The dyeing head lead is now opened.");
- });
- }
- catch (Exception ex)
- {
- LogManager.Log(ex, "Error opening dyeing head lead.");
- NotificationProvider.ReleaseGlobalBusyMessage();
- NotificationProvider.ShowError(ex.FlattenMessage());
- IsFree = true;
- }
- }
-
- private void CloseDyeingHead()
- {
- IsFree = false;
-
- try
- {
- NotificationProvider.SetGlobalBusyMessage("Closing dyeing head lead...");
-
- MachineProvider.MachineOperator.StartMotorHoming(new PMR.Diagnostics.MotorHomingRequest()
- {
- Direction = PMR.Diagnostics.MotorDirection.Forward,
- MotorType = PMR.Hardware.HardwareMotorType.MotoDhLid,
- Speed = 400,
- }).Subscribe((response) =>
- {
- //Next
- }, (ex) =>
- {
- //Error
- IsFree = true;
- NotificationProvider.ReleaseGlobalBusyMessage();
- LogManager.Log(ex, "Error closing dyeing head lead.");
- NotificationProvider.ShowError(ex.FlattenMessage());
- }, () =>
- {
- //Complete
- IsFree = true;
- NotificationProvider.ReleaseGlobalBusyMessage();
- NotificationProvider.ShowSuccess("The dyeing head lead is now closed.");
- });
- }
- catch (Exception ex)
- {
- LogManager.Log(ex, "Error closing dyeing head lead.");
- NotificationProvider.ReleaseGlobalBusyMessage();
- NotificationProvider.ShowError(ex.FlattenMessage());
- IsFree = true;
- }
- }
-
private async void ExportLogsToStorage()
{
var result = await NavigationManager.
diff --git a/Software/Visual_Studio/PPC/Modules/Tango.PPC.Maintenance/Views/MaintenanceView.xaml b/Software/Visual_Studio/PPC/Modules/Tango.PPC.Maintenance/Views/MaintenanceView.xaml
index dbe09ca19..538d4e96d 100644
--- a/Software/Visual_Studio/PPC/Modules/Tango.PPC.Maintenance/Views/MaintenanceView.xaml
+++ b/Software/Visual_Studio/PPC/Modules/Tango.PPC.Maintenance/Views/MaintenanceView.xaml
@@ -5,8 +5,10 @@
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:vm="clr-namespace:Tango.PPC.Maintenance.ViewModels"
xmlns:global="clr-namespace:Tango.PPC.Maintenance"
+ xmlns:arr="clr-namespace:System.Collections;assembly=mscorlib"
xmlns:touch="clr-namespace:Tango.Touch.Controls;assembly=Tango.Touch"
xmlns:localConverters="clr-namespace:Tango.PPC.Maintenance.Converters"
+ xmlns:localControls="clr-namespace:Tango.PPC.Maintenance.Controls"
xmlns:local="clr-namespace:Tango.PPC.Maintenance.Views"
mc:Ignorable="d"
d:DesignHeight="1280" d:DesignWidth="800" d:DataContext="{d:DesignInstance Type=vm:MaintenanceViewVM, IsDesignTimeCreatable=False}" DataContext="{x:Static global:ViewModelLocator.MaintenanceViewVM}">
@@ -171,10 +173,24 @@
</StackPanel>
<StackPanel Style="{StaticResource Level2ContainerExtraMargin}">
- <UniformGrid Columns="2" Margin="40 0">
- <touch:TouchButton Command="{Binding OpenDyeingHeadCommand}" Margin="20" CornerRadius="25" Height="50" FontSize="18" Style="{StaticResource TangoHollowButton}">OPEN DYEING HEAD LEAD</touch:TouchButton>
+ <UniformGrid Columns="2" Margin="0 0">
- <touch:TouchButton Command="{Binding CloseDyeingHeadCommand}" Margin="20" CornerRadius="25" Height="50" FontSize="18" Style="{StaticResource TangoHollowButton}">CLOSE DYEING HEAD LEAD</touch:TouchButton>
+ <localControls:StateTouchButton Command="{Binding OpenCloseLeftLeadingWheelsCommand.Command}" SelectedState="{Binding OpenCloseLeftLeadingWheelsCommand.State}" Margin="20" CornerRadius="25" Height="50" FontSize="18" Style="{StaticResource TangoHollowButton}">
+ <localControls:ButtonState Value="Closed" Content="OPEN LEFT LEADING WHEELS" />
+ <localControls:ButtonState Value="Opened" Content="CLOSE LEFT LEADING WHEELS" />
+ </localControls:StateTouchButton>
+
+ <localControls:StateTouchButton Command="{Binding OpenCloseRightLeadingWheelsCommand.Command}" SelectedState="{Binding OpenCloseRightLeadingWheelsCommand.State}" Margin="20" CornerRadius="25" Height="50" FontSize="18" Style="{StaticResource TangoHollowButton}">
+ <localControls:ButtonState Value="Closed" Content="OPEN RIGHT LEADING WHEELS" />
+ <localControls:ButtonState Value="Opened" Content="CLOSE RIGHT LEADING WHEELS" />
+ </localControls:StateTouchButton>
+
+ <localControls:StateTouchButton Command="{Binding OpenCloseDyeingHeadCommand.Command}" SelectedState="{Binding OpenCloseDyeingHeadCommand.State}" Margin="20" CornerRadius="25" Height="50" FontSize="18" Style="{StaticResource TangoHollowButton}">
+ <localControls:ButtonState Value="Closed" Content="OPEN DYEING HEAD LEAD" />
+ <localControls:ButtonState Value="Opened" Content="CLOSE DYEING HEAD LEAD" />
+ </localControls:StateTouchButton>
+
+ <touch:TouchButton Margin="20" CornerRadius="25" Height="50" FontSize="18" Style="{StaticResource TangoHollowButton}" Command="{Binding ResetThreadLoadingCommand.Command}">RESET THREAD LOADING</touch:TouchButton>
<touch:TouchButton Margin="20" CornerRadius="25" Height="50" FontSize="18" Style="{StaticResource TangoHollowButton}" Command="{Binding ExportLogsCommand}" Visibility="{Binding ApplicationManager.IsInTechnicianMode,Converter={StaticResource BooleanToVisibilityConverter}}">EXPORT SYSTEM LOGS</touch:TouchButton>
</UniformGrid>
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 01ccc7654..11a400fd3 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.5.0")]
+[assembly: AssemblyVersion("1.1.6.0")]
diff --git a/Software/Visual_Studio/Tango.Integration/Operation/MachineOperator.cs b/Software/Visual_Studio/Tango.Integration/Operation/MachineOperator.cs
index d020fd2a6..9768498c6 100644
--- a/Software/Visual_Studio/Tango.Integration/Operation/MachineOperator.cs
+++ b/Software/Visual_Studio/Tango.Integration/Operation/MachineOperator.cs
@@ -2174,6 +2174,27 @@ namespace Tango.Integration.Operation
job.NumberOfUnits = 1;
}
+ if (job.EnableLubrication)
+ {
+ try
+ {
+ foreach (var stop in job.Segments.SelectMany(x => x.BrushStops).Where(x => x.BrushColorSpace != ColorSpaces.Volume))
+ {
+ var lubricantVolume = stop.LiquidVolumes.SingleOrDefault(x => x.IdsPack != null && x.IdsPack.LiquidType != null && x.LiquidType == LiquidTypes.Lubricant);
+
+ if (lubricantVolume != null)
+ {
+ lubricantVolume.Volume = 100;
+ }
+ }
+ }
+ catch (Exception ex)
+ {
+ System.Diagnostics.Debugger.Break();
+ LogManager.Log(ex, "Error in setting automatic lubrication volumes.");
+ }
+ }
+
//Modify transparent/white brush stops. (Transparent/white stops should be all zeros and 100% TI)
foreach (var stop in job.Segments.SelectMany(x => x.BrushStops).Where(x => x.IsTransparent || x.IsWhite).ToList())
{
@@ -2333,6 +2354,12 @@ namespace Tango.Integration.Operation
ThreadFactory.StartNew(async () =>
{
+ if (handler.IsCanceled)
+ {
+ Status = MachineStatuses.ReadyToDye;
+ return;
+ }
+
Status = MachineStatuses.GettingReady;
RunningJob = clonedJob;
OnPrintingStarted(handler, clonedJob);
@@ -2408,6 +2435,12 @@ namespace Tango.Integration.Operation
LogManager.Log($"Job upload method is set to {JobUploadStrategy}...");
+ if (handler.IsCanceled)
+ {
+ Status = MachineStatuses.ReadyToDye;
+ return;
+ }
+
var oldKeepAlive = UseKeepAlive;
if (JobUploadStrategy == JobUploadStrategy.JobDescriptionFile)
@@ -2428,9 +2461,21 @@ namespace Tango.Integration.Operation
Message = "Uploading job description file...",
});
+ if (handler.IsCanceled)
+ {
+ Status = MachineStatuses.ReadyToDye;
+ return;
+ }
+
LogManager.Log("Creating storage API manager...");
var storage = CreateStorageManager();
+ if (handler.IsCanceled)
+ {
+ Status = MachineStatuses.ReadyToDye;
+ return;
+ }
+
//Suppress keep alive while job uploads.
//storage.SuppressKeepAliveWhileFileUploads = true;
UseKeepAlive = false; //This is a work around for Shlomo not managing to keep alive while parsing the file.
diff --git a/Software/Visual_Studio/Tango.PMR/ExtensionMethods/VersionPackageDescriptorExtensions.cs b/Software/Visual_Studio/Tango.PMR/ExtensionMethods/VersionPackageDescriptorExtensions.cs
index 78b179736..766b03270 100644
--- a/Software/Visual_Studio/Tango.PMR/ExtensionMethods/VersionPackageDescriptorExtensions.cs
+++ b/Software/Visual_Studio/Tango.PMR/ExtensionMethods/VersionPackageDescriptorExtensions.cs
@@ -25,20 +25,21 @@ public static class VersionPackageDescriptorExtensions
throw new InvalidDataException("TFP package contains multiple MCU files.");
}
- var mcuFile = descriptor.FileDescriptors.SingleOrDefault(x => x.Destination == VersionFileDestination.Mcu);
-
- if (String.IsNullOrWhiteSpace(mcuFile.Version))
+ if (descriptor.FileDescriptors.GroupBy(x => x.FileName).Any(x => x.Count() > 1))
{
- throw new InvalidDataException("TFP package MCU does specify any version.");
+ throw new InvalidDataException("The TPF package cannot contain duplicate file names.");
}
- try
- {
- Version.Parse(mcuFile.Version);
- }
- catch
+ foreach (var item in descriptor.FileDescriptors)
{
- throw new InvalidDataException($"TFP package MCU version '{mcuFile.Version}' is invalid.");
+ try
+ {
+ Version.Parse(item.Version);
+ }
+ catch
+ {
+ throw new InvalidDataException($"Invalid version ({item.Version}) for file '{item.FileName}'.");
+ }
}
}
diff --git a/Software/Visual_Studio/Tango.RemoteDesktop/Tango.RemoteDesktop.csproj b/Software/Visual_Studio/Tango.RemoteDesktop/Tango.RemoteDesktop.csproj
index 8a1d51cf3..34afb4bce 100644
--- a/Software/Visual_Studio/Tango.RemoteDesktop/Tango.RemoteDesktop.csproj
+++ b/Software/Visual_Studio/Tango.RemoteDesktop/Tango.RemoteDesktop.csproj
@@ -30,6 +30,7 @@
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
+ <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
</PropertyGroup>
<ItemGroup>
<Reference Include="PresentationCore" />
diff --git a/Software/Visual_Studio/Utilities/Tango.CctOptimizer.CLI/App.config b/Software/Visual_Studio/Utilities/Tango.CctOptimizer.CLI/App.config
new file mode 100644
index 000000000..a46da65da
--- /dev/null
+++ b/Software/Visual_Studio/Utilities/Tango.CctOptimizer.CLI/App.config
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<configuration>
+ <configSections>
+ <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
+ <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
+ </configSections>
+ <startup>
+ <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1" />
+ </startup>
+ <entityFramework>
+ <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />
+ <providers>
+ <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
+ </providers>
+ </entityFramework>
+ <runtime>
+ <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
+ <dependentAssembly>
+ <assemblyIdentity name="Microsoft.IdentityModel.Clients.ActiveDirectory" publicKeyToken="31bf3856ad364e35" culture="neutral" />
+ <bindingRedirect oldVersion="0.0.0.0-5.0.5.0" newVersion="5.0.5.0" />
+ </dependentAssembly>
+ <dependentAssembly>
+ <assemblyIdentity name="Z.EntityFramework.Extensions" publicKeyToken="59b66d028979105b" culture="neutral" />
+ <bindingRedirect oldVersion="0.0.0.0-4.0.50.0" newVersion="4.0.50.0" />
+ </dependentAssembly>
+ </assemblyBinding>
+ </runtime>
+</configuration> \ No newline at end of file
diff --git a/Software/Visual_Studio/Utilities/Tango.CctOptimizer.CLI/Program.cs b/Software/Visual_Studio/Utilities/Tango.CctOptimizer.CLI/Program.cs
new file mode 100644
index 000000000..06c960e13
--- /dev/null
+++ b/Software/Visual_Studio/Utilities/Tango.CctOptimizer.CLI/Program.cs
@@ -0,0 +1,36 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using Tango.BL;
+using Tango.BL.Entities;
+
+namespace Tango.CctOptimizer.CLI
+{
+ class Program
+ {
+ static void Main(string[] args)
+ {
+ using (ObservablesContext db = ObservablesContext.CreateDefault())
+ {
+ var notUsedCcts = db.Ccts.Where(x => x.Rmls.All(y=>y.Cct.FileName != x.FileName)).ToObservableCollection();
+
+ foreach ( var cct in notUsedCcts)
+ {
+ cct.DeleteCascadeAsync(db);
+ }
+
+ Dictionary <string, List<Cct>> duplicates = db.Ccts.Where(x => x.Rmls.All(y => y.Cct.FileName == x.FileName)).GroupBy(x => x.FileName).Where(x => x.Count() > 1).ToDictionary(g=>g.Key, g => g.ToList());
+ foreach (var value in duplicates.Values)
+ {
+ var res = db.Rmls.Where(x => value.All(y => y.Guid == x.CctGuid )).ToList();
+
+ }
+
+ db.SaveChanges();
+
+ }
+ }
+ }
+}
diff --git a/Software/Visual_Studio/Utilities/Tango.CctOptimizer.CLI/Properties/AssemblyInfo.cs b/Software/Visual_Studio/Utilities/Tango.CctOptimizer.CLI/Properties/AssemblyInfo.cs
new file mode 100644
index 000000000..38926dca0
--- /dev/null
+++ b/Software/Visual_Studio/Utilities/Tango.CctOptimizer.CLI/Properties/AssemblyInfo.cs
@@ -0,0 +1,36 @@
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// General Information about an assembly is controlled through the following
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("Tango.CctOptimizer.CLI")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("Tango.CctOptimizer.CLI")]
+[assembly: AssemblyCopyright("Copyright © 2020")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible
+// to COM components. If you need to access a type in this assembly from
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("69168924-9aa8-447d-ad64-f07dbf4f0909")]
+
+// Version information for an assembly consists of the following four values:
+//
+// Major Version
+// Minor Version
+// Build Number
+// Revision
+//
+// You can specify all the values or you can default the Build and Revision Numbers
+// by using the '*' as shown below:
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]
diff --git a/Software/Visual_Studio/Utilities/Tango.CctOptimizer.CLI/Tango.CctOptimizer.CLI.csproj b/Software/Visual_Studio/Utilities/Tango.CctOptimizer.CLI/Tango.CctOptimizer.CLI.csproj
new file mode 100644
index 000000000..14dd0b54b
--- /dev/null
+++ b/Software/Visual_Studio/Utilities/Tango.CctOptimizer.CLI/Tango.CctOptimizer.CLI.csproj
@@ -0,0 +1,71 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
+ <PropertyGroup>
+ <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+ <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+ <ProjectGuid>{69168924-9AA8-447D-AD64-F07DBF4F0909}</ProjectGuid>
+ <OutputType>Exe</OutputType>
+ <RootNamespace>Tango.CctOptimizer.CLI</RootNamespace>
+ <AssemblyName>Tango.CctOptimizer.CLI</AssemblyName>
+ <TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion>
+ <FileAlignment>512</FileAlignment>
+ <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
+ <Deterministic>true</Deterministic>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+ <PlatformTarget>AnyCPU</PlatformTarget>
+ <DebugSymbols>true</DebugSymbols>
+ <DebugType>full</DebugType>
+ <Optimize>false</Optimize>
+ <OutputPath>bin\Debug\</OutputPath>
+ <DefineConstants>DEBUG;TRACE</DefineConstants>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+ <PlatformTarget>AnyCPU</PlatformTarget>
+ <DebugType>pdbonly</DebugType>
+ <Optimize>true</Optimize>
+ <OutputPath>bin\Release\</OutputPath>
+ <DefineConstants>TRACE</DefineConstants>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ </PropertyGroup>
+ <ItemGroup>
+ <Reference Include="EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL">
+ <HintPath>..\..\packages\EntityFramework.6.2.0\lib\net45\EntityFramework.dll</HintPath>
+ </Reference>
+ <Reference Include="EntityFramework.SqlServer, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL">
+ <HintPath>..\..\packages\EntityFramework.6.2.0\lib\net45\EntityFramework.SqlServer.dll</HintPath>
+ </Reference>
+ <Reference Include="System" />
+ <Reference Include="System.ComponentModel.DataAnnotations" />
+ <Reference Include="System.Core" />
+ <Reference Include="System.Xml.Linq" />
+ <Reference Include="System.Data.DataSetExtensions" />
+ <Reference Include="Microsoft.CSharp" />
+ <Reference Include="System.Data" />
+ <Reference Include="System.Net.Http" />
+ <Reference Include="System.Xml" />
+ </ItemGroup>
+ <ItemGroup>
+ <Compile Include="Program.cs" />
+ <Compile Include="Properties\AssemblyInfo.cs" />
+ </ItemGroup>
+ <ItemGroup>
+ <None Include="App.config" />
+ <None Include="packages.config" />
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\..\Tango.BL\Tango.BL.csproj">
+ <Project>{f441feee-322a-4943-b566-110e12fd3b72}</Project>
+ <Name>Tango.BL</Name>
+ </ProjectReference>
+ <ProjectReference Include="..\..\Tango.Core\Tango.Core.csproj">
+ <Project>{a34ee0f0-649d-41c8-8489-b6f1cc6924ee}</Project>
+ <Name>Tango.Core</Name>
+ </ProjectReference>
+ </ItemGroup>
+ <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
+</Project> \ No newline at end of file
diff --git a/Software/Visual_Studio/Utilities/Tango.CctOptimizer.CLI/packages.config b/Software/Visual_Studio/Utilities/Tango.CctOptimizer.CLI/packages.config
new file mode 100644
index 000000000..b3daf0d6c
--- /dev/null
+++ b/Software/Visual_Studio/Utilities/Tango.CctOptimizer.CLI/packages.config
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<packages>
+ <package id="EntityFramework" version="6.2.0" targetFramework="net461" />
+</packages> \ No newline at end of file
diff --git a/Software/Visual_Studio/Utilities/Tango.LogViewer.UI/LogViewerManager.cs b/Software/Visual_Studio/Utilities/Tango.LogViewer.UI/LogViewerManager.cs
index 9c385b387..3615eb50a 100644
--- a/Software/Visual_Studio/Utilities/Tango.LogViewer.UI/LogViewerManager.cs
+++ b/Software/Visual_Studio/Utilities/Tango.LogViewer.UI/LogViewerManager.cs
@@ -64,7 +64,7 @@ namespace Tango.LogViewer.UI
logfileName = logfileName.Substring(0, indexPos);
}
- String dateString = System.IO.Path.GetFileNameWithoutExtension(filePath).Replace($"{fileName}-", "");
+ String dateString = System.IO.Path.GetFileNameWithoutExtension(filePath).Replace($"{fileName}-", "").Replace("_session", "");
indexPos = dateString.IndexOf(FileLogger.FILE_SET_EXTENSION);
int indexOfFile = 0;
CountOfSet = 0;
diff --git a/Software/Visual_Studio/Utilities/Tango.LogViewer.UI/MainWindow.xaml b/Software/Visual_Studio/Utilities/Tango.LogViewer.UI/MainWindow.xaml
index 952fb853b..f1c947402 100644
--- a/Software/Visual_Studio/Utilities/Tango.LogViewer.UI/MainWindow.xaml
+++ b/Software/Visual_Studio/Utilities/Tango.LogViewer.UI/MainWindow.xaml
@@ -219,7 +219,7 @@
</StackPanel>
<Border Visibility="{Binding IsEmbeddedLog, Converter={StaticResource BooleanToVisibilityInverseConverter}}" Grid.Column="0" Grid.Row="1" BorderThickness="1" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" BorderBrush="{StaticResource BorderGrayBrush}" Margin="0 0 10 0">
- <DataGrid x:Name="ActionGrid" Background="Transparent" RenderOptions.EdgeMode="Aliased" RenderOptions.BitmapScalingMode="LowQuality" MaxWidth="{Binding RelativeSource={RelativeSource AncestorType=Grid},Path=ActualWidth}" AutoGenerateColumns="False" SelectionMode="Single" ItemsSource="{Binding LogsViewSource}" SelectedItem="{Binding SelectedLog}" RowHeight="40" CanUserAddRows="False" CanUserDeleteRows="False" CanUserReorderColumns="True" IsReadOnly="True"
+ <DataGrid x:Name="ActionGrid" HorizontalScrollBarVisibility="Disabled" Background="Transparent" RenderOptions.EdgeMode="Aliased" RenderOptions.BitmapScalingMode="LowQuality" MaxWidth="{Binding RelativeSource={RelativeSource AncestorType=Grid},Path=ActualWidth}" AutoGenerateColumns="False" SelectionMode="Single" ItemsSource="{Binding LogsViewSource}" SelectedItem="{Binding SelectedLog}" RowHeight="40" CanUserAddRows="False" CanUserDeleteRows="False" CanUserReorderColumns="True" IsReadOnly="True"
CellStyle="{StaticResource LogDataGridCellStyle}" RowStyle="{StaticResource LogDataGridRowStyle}" Foreground="Gainsboro">
<DataGrid.Resources>
<Style BasedOn="{StaticResource MetroDataGridColumnHeader}" TargetType="{x:Type DataGridColumnHeader}">
@@ -251,7 +251,7 @@
<TextBlock Text="Loading..." FontStyle="Italic" Margin="0 40 0 0" FontSize="18" VerticalAlignment="Center"></TextBlock>
</StackPanel>
<Border Visibility="{Binding IsEmbeddedLog, Converter={StaticResource BoolToVisibilityConverter}}" Grid.Column="0" Grid.Row="1" BorderThickness="1" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" BorderBrush="{StaticResource BorderGrayBrush}" Margin="0 0 10 0">
- <DataGrid x:Name="embededGrid" Background="Transparent" RenderOptions.EdgeMode="Aliased" RenderOptions.BitmapScalingMode="LowQuality" MaxWidth="{Binding RelativeSource={RelativeSource AncestorType=Grid},Path=ActualWidth}" AutoGenerateColumns="False" SelectionMode="Single" ItemsSource="{Binding LogsViewSource}" SelectedItem="{Binding SelectedLog}" RowHeight="40" CanUserAddRows="False" CanUserDeleteRows="False" CanUserReorderColumns="True" IsReadOnly="True"
+ <DataGrid x:Name="embededGrid" HorizontalScrollBarVisibility="Disabled" Background="Transparent" RenderOptions.EdgeMode="Aliased" RenderOptions.BitmapScalingMode="LowQuality" MaxWidth="{Binding RelativeSource={RelativeSource AncestorType=Grid},Path=ActualWidth}" AutoGenerateColumns="False" SelectionMode="Single" ItemsSource="{Binding LogsViewSource}" SelectedItem="{Binding SelectedLog}" RowHeight="40" CanUserAddRows="False" CanUserDeleteRows="False" CanUserReorderColumns="True" IsReadOnly="True"
CellStyle="{StaticResource LogDataGridCellStyle}" RowStyle="{StaticResource EmLogDataGridRowStyle}" Foreground="Gainsboro">
<DataGrid.Resources>
<Style BasedOn="{StaticResource MetroDataGridColumnHeader}" TargetType="{x:Type DataGridColumnHeader}">