aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio
diff options
context:
space:
mode:
authorRoy Ben-Shabat <Roy@Twine-s.com>2018-11-25 17:52:49 +0200
committerRoy Ben-Shabat <Roy@Twine-s.com>2018-11-25 17:52:49 +0200
commit9277bbd2fa070c69b83904f8fe5628fab2b947b8 (patch)
tree3099f9ce92f04c28517eb13938e913a1e376b3fe /Software/Visual_Studio
parentf779e2b6f0bb1dedc7644c64651b59e31ce62c00 (diff)
downloadTango-9277bbd2fa070c69b83904f8fe5628fab2b947b8.tar.gz
Tango-9277bbd2fa070c69b83904f8fe5628fab2b947b8.zip
Working on job export import to storage.
Diffstat (limited to 'Software/Visual_Studio')
-rw-r--r--Software/Visual_Studio/PPC/Modules/Tango.PPC.Jobs/Tango.PPC.Jobs.csproj8
-rw-r--r--Software/Visual_Studio/PPC/Modules/Tango.PPC.Jobs/ViewModels/JobsViewVM.cs61
-rw-r--r--Software/Visual_Studio/PPC/Modules/Tango.PPC.Jobs/Views/JobsView.xaml1
-rw-r--r--Software/Visual_Studio/PPC/Modules/Tango.PPC.Storage/Models/StorageNavigationIntent.cs14
-rw-r--r--Software/Visual_Studio/PPC/Modules/Tango.PPC.Storage/Models/StorageNavigationRequest.cs26
-rw-r--r--Software/Visual_Studio/PPC/Modules/Tango.PPC.Storage/Tango.PPC.Storage.csproj2
-rw-r--r--Software/Visual_Studio/PPC/Modules/Tango.PPC.Storage/ViewModels/MainViewVM.cs35
-rw-r--r--Software/Visual_Studio/PPC/Modules/Tango.PPC.Storage/Views/MainView.xaml26
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.Common/MachineUpdate/IMachineUpdateManager.cs7
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.Common/MachineUpdate/MachineUpdateManager.cs34
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.Common/MachineUpdate/MachineUpdateSteps.cs3
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.Publisher/MainWindow.xaml1
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.Publisher/MainWindowVM.cs185
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.UI/Navigation/DefaultNavigationManager.cs37
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.UI/ViewModels/MachineUpdateViewVM.cs48
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.UI/Views/MachineUpdateView.xaml17
-rw-r--r--Software/Visual_Studio/Tango.BL/Builders/JobBuilder.cs1
-rw-r--r--Software/Visual_Studio/Tango.BL/EntitiesExtensions/Job.cs154
-rw-r--r--Software/Visual_Studio/Tango.Core/ExtensionMethods/ObjectExtensions.cs23
-rw-r--r--Software/Visual_Studio/Tango.Core/ExtensionMethods/StringExtensions.cs10
-rw-r--r--Software/Visual_Studio/Tango.Explorer/ExplorerControl.cs25
-rw-r--r--Software/Visual_Studio/Tango.Explorer/ExplorerFileItem.cs8
-rw-r--r--Software/Visual_Studio/Tango.Explorer/ExplorerFolderItem.cs11
-rw-r--r--Software/Visual_Studio/Tango.PMR/Common/ErrorCode.cs54
-rw-r--r--Software/Visual_Studio/Tango.PMR/Exports/JobFile.cs723
-rw-r--r--Software/Visual_Studio/Tango.PMR/Exports/JobFileBrushStop.cs754
-rw-r--r--Software/Visual_Studio/Tango.PMR/Exports/JobFileSegment.cs209
-rw-r--r--Software/Visual_Studio/Tango.PMR/Hardware/HardwareBlower.cs40
-rw-r--r--Software/Visual_Studio/Tango.PMR/IO/GetStorageInfoRequest.cs65
-rw-r--r--Software/Visual_Studio/Tango.PMR/Printing/JobTicket.cs4
-rw-r--r--Software/Visual_Studio/Tango.PMR/Tango.PMR.csproj5
-rw-r--r--Software/Visual_Studio/Tango.Touch/Controls/TouchPanel.xaml8
32 files changed, 2411 insertions, 188 deletions
diff --git a/Software/Visual_Studio/PPC/Modules/Tango.PPC.Jobs/Tango.PPC.Jobs.csproj b/Software/Visual_Studio/PPC/Modules/Tango.PPC.Jobs/Tango.PPC.Jobs.csproj
index ad98f7511..aa473ec02 100644
--- a/Software/Visual_Studio/PPC/Modules/Tango.PPC.Jobs/Tango.PPC.Jobs.csproj
+++ b/Software/Visual_Studio/PPC/Modules/Tango.PPC.Jobs/Tango.PPC.Jobs.csproj
@@ -233,6 +233,10 @@
<Project>{b112d89a-a106-41ae-a0c1-4abc84c477f5}</Project>
<Name>Tango.DragAndDrop</Name>
</ProjectReference>
+ <ProjectReference Include="..\..\..\Tango.Explorer\Tango.Explorer.csproj">
+ <Project>{4399AF76-DB52-4CFB-8020-6F85BDB29FD5}</Project>
+ <Name>Tango.Explorer</Name>
+ </ProjectReference>
<ProjectReference Include="..\..\..\Tango.Hive\Tango.Hive.csproj">
<Project>{942134ac-6ea2-4500-8f22-0f739b70a05f}</Project>
<Name>Tango.Hive</Name>
@@ -269,6 +273,10 @@
<Project>{0be74eee-22cb-4dba-b896-793b9e1a3ac0}</Project>
<Name>Tango.PPC.Common</Name>
</ProjectReference>
+ <ProjectReference Include="..\Tango.PPC.Storage\Tango.PPC.Storage.csproj">
+ <Project>{04febb02-f782-4b96-b47d-f6902afa43be}</Project>
+ <Name>Tango.PPC.Storage</Name>
+ </ProjectReference>
</ItemGroup>
<ItemGroup>
<Resource Include="Images\jobs-module.png" />
diff --git a/Software/Visual_Studio/PPC/Modules/Tango.PPC.Jobs/ViewModels/JobsViewVM.cs b/Software/Visual_Studio/PPC/Modules/Tango.PPC.Jobs/ViewModels/JobsViewVM.cs
index c4bd1f5b8..2f22e2f2d 100644
--- a/Software/Visual_Studio/PPC/Modules/Tango.PPC.Jobs/ViewModels/JobsViewVM.cs
+++ b/Software/Visual_Studio/PPC/Modules/Tango.PPC.Jobs/ViewModels/JobsViewVM.cs
@@ -22,6 +22,11 @@ using Tango.PPC.Jobs.Views;
using System.Data.Entity;
using Tango.BL.Builders;
using Tango.PPC.Jobs.NavigationObjects;
+using Tango.PPC.Storage;
+using Tango.Explorer;
+using System.IO;
+using Google.Protobuf;
+using Tango.PMR.Exports;
namespace Tango.PPC.Jobs.ViewModels
{
@@ -137,6 +142,11 @@ namespace Tango.PPC.Jobs.ViewModels
/// </summary>
public RelayCommand CloneJobsCommand { get; set; }
+ /// <summary>
+ /// Gets or sets the export job command.
+ /// </summary>
+ public RelayCommand ExportJobCommand { get; set; }
+
#endregion
#region Constructors
@@ -162,6 +172,7 @@ namespace Tango.PPC.Jobs.ViewModels
AddJobCommand = new RelayCommand(AddNewJob);
DeleteJobsCommand = new RelayCommand(() => DeleteJobs(SelectedJobs));
CloneJobsCommand = new RelayCommand(() => CloneJobs(SelectedJobs));
+ ExportJobCommand = new RelayCommand(ExportJob);
RegisterForMessage<JobRemovedMessage>(HandleJobRemovedMessage);
RegisterForMessage<JobSavedMessage>(HandleJobSavedMessage);
@@ -451,6 +462,56 @@ namespace Tango.PPC.Jobs.ViewModels
public override void OnApplicationReady()
{
base.OnApplicationReady();
+ StorageProvider.RegisterFileHandler(ExplorerFileDefinition.Job.Extension, HandleJobFileLoaded);
+ }
+
+ #endregion
+
+ #region Job Export
+
+ private async void ExportJob()
+ {
+ var selected_job = SelectedJobs.First();
+ ClearSelection();
+
+ var result = await NavigationManager.
+ NavigateForResult<StorageModule,
+ Storage.Views.MainView, ExplorerFileItem,
+ Storage.Models.StorageNavigationRequest>(
+ new Storage.Models.StorageNavigationRequest()
+ {
+ Intent = Storage.Models.StorageNavigationIntent.SaveFile,
+ DefaultFileName = selected_job.Name + ExplorerFileDefinition.Job.Extension,
+ Filter = ExplorerFileDefinition.Job.Extension
+ });
+
+ if (result != null)
+ {
+ var jobFile = await selected_job.ToJobFile();
+
+ using (FileStream fs = new FileStream(result.Path, FileMode.Create))
+ {
+ jobFile.WriteTo(fs);
+ }
+
+ await NotificationProvider.ShowInfo("Job saved.");
+ }
+ }
+
+ #endregion
+
+ #region Handle Job File Loading From Storage
+
+ private async void HandleJobFileLoaded(ExplorerFileItem jobFile)
+ {
+ using (ObservablesContext jobContext = ObservablesContext.CreateDefault())
+ {
+ JobFile jFile = JobFile.Parser.ParseFrom(File.ReadAllBytes(jobFile.Path));
+ var job = await Job.FromJobFile(jFile, MachineProvider.Machine.Guid, AuthenticationProvider.CurrentUser.Guid);
+ jobContext.Jobs.Add(job);
+ await jobContext.SaveChangesAsync();
+ LoadJobs();
+ }
}
#endregion
diff --git a/Software/Visual_Studio/PPC/Modules/Tango.PPC.Jobs/Views/JobsView.xaml b/Software/Visual_Studio/PPC/Modules/Tango.PPC.Jobs/Views/JobsView.xaml
index a583681f3..89feb8dc3 100644
--- a/Software/Visual_Studio/PPC/Modules/Tango.PPC.Jobs/Views/JobsView.xaml
+++ b/Software/Visual_Studio/PPC/Modules/Tango.PPC.Jobs/Views/JobsView.xaml
@@ -81,6 +81,7 @@
</Style>
</touch:TouchIconButton.Style>
</touch:TouchIconButton>
+ <touch:TouchIconButton Command="{Binding ExportJobCommand}" Margin="0 0 30 0" Padding="20" Icon="HddRegular" Style="{StaticResource TangoRoundTouchIconButton}"></touch:TouchIconButton>
<touch:TouchIconButton Command="{Binding CloneJobsCommand}" Margin="0 0 30 0" Padding="20" Icon="CopyRegular" Style="{StaticResource TangoRoundTouchIconButton}"></touch:TouchIconButton>
<touch:TouchIconButton Command="{Binding DeleteJobsCommand}" Padding="20" Icon="TrashAltRegular" Style="{StaticResource TangoRoundTouchIconButton}"></touch:TouchIconButton>
</StackPanel>
diff --git a/Software/Visual_Studio/PPC/Modules/Tango.PPC.Storage/Models/StorageNavigationIntent.cs b/Software/Visual_Studio/PPC/Modules/Tango.PPC.Storage/Models/StorageNavigationIntent.cs
new file mode 100644
index 000000000..2c2a7f10d
--- /dev/null
+++ b/Software/Visual_Studio/PPC/Modules/Tango.PPC.Storage/Models/StorageNavigationIntent.cs
@@ -0,0 +1,14 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Tango.PPC.Storage.Models
+{
+ public enum StorageNavigationIntent
+ {
+ LoadFile,
+ SaveFile
+ }
+}
diff --git a/Software/Visual_Studio/PPC/Modules/Tango.PPC.Storage/Models/StorageNavigationRequest.cs b/Software/Visual_Studio/PPC/Modules/Tango.PPC.Storage/Models/StorageNavigationRequest.cs
new file mode 100644
index 000000000..32a546f4f
--- /dev/null
+++ b/Software/Visual_Studio/PPC/Modules/Tango.PPC.Storage/Models/StorageNavigationRequest.cs
@@ -0,0 +1,26 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Tango.PPC.Storage.Models
+{
+ public class StorageNavigationRequest
+ {
+ /// <summary>
+ /// Gets or sets the request intent.
+ /// </summary>
+ public StorageNavigationIntent Intent { get; set; }
+
+ /// <summary>
+ /// Gets or sets the file display filter (e.g .tup|.job|.ccp).
+ /// </summary>
+ public String Filter { get; set; }
+
+ /// <summary>
+ /// Gets or sets the default file name when saving a file.
+ /// </summary>
+ public String DefaultFileName { get; set; }
+ }
+}
diff --git a/Software/Visual_Studio/PPC/Modules/Tango.PPC.Storage/Tango.PPC.Storage.csproj b/Software/Visual_Studio/PPC/Modules/Tango.PPC.Storage/Tango.PPC.Storage.csproj
index b6a2c885b..83f23e6b9 100644
--- a/Software/Visual_Studio/PPC/Modules/Tango.PPC.Storage/Tango.PPC.Storage.csproj
+++ b/Software/Visual_Studio/PPC/Modules/Tango.PPC.Storage/Tango.PPC.Storage.csproj
@@ -50,6 +50,8 @@
<Compile Include="..\..\..\Versioning\GlobalVersionInfo.cs">
<Link>GlobalVersionInfo.cs</Link>
</Compile>
+ <Compile Include="Models\StorageNavigationIntent.cs" />
+ <Compile Include="Models\StorageNavigationRequest.cs" />
<Compile Include="StorageModule.cs" />
<Compile Include="Properties\AssemblyInfo.cs">
<SubType>Code</SubType>
diff --git a/Software/Visual_Studio/PPC/Modules/Tango.PPC.Storage/ViewModels/MainViewVM.cs b/Software/Visual_Studio/PPC/Modules/Tango.PPC.Storage/ViewModels/MainViewVM.cs
index e62ebc932..05316d1f6 100644
--- a/Software/Visual_Studio/PPC/Modules/Tango.PPC.Storage/ViewModels/MainViewVM.cs
+++ b/Software/Visual_Studio/PPC/Modules/Tango.PPC.Storage/ViewModels/MainViewVM.cs
@@ -7,6 +7,7 @@ using Tango.Core.Commands;
using Tango.Explorer;
using Tango.PPC.Common;
using Tango.PPC.Common.Navigation;
+using Tango.PPC.Storage.Models;
using Tango.PPC.Storage.TaskBarItems;
using Tango.PPC.Storage.ViewContracts;
@@ -16,7 +17,7 @@ namespace Tango.PPC.Storage.ViewModels
/// Represents the main view VM and entry point for <see cref="Storage.StorageModule"/>.
/// </summary>
/// <seealso cref="Tango.PPC.Common.PPCViewModel" />
- public class MainViewVM : PPCViewModel<IMainView>, INavigationResultProvider<ExplorerFileItem, String>
+ public class MainViewVM : PPCViewModel<IMainView>, INavigationResultProvider<ExplorerFileItem, StorageNavigationRequest>
{
private bool _allow_exit;
private ExplorerFileItem _selectedItem;
@@ -28,14 +29,22 @@ namespace Tango.PPC.Storage.ViewModels
set { _currentPath = value; RaisePropertyChangedAuto(); }
}
- public RelayCommand CloseCommand { get; set; }
+ private StorageNavigationRequest _request;
+ public StorageNavigationRequest Request
+ {
+ get { return _request; }
+ set { _request = value; RaisePropertyChangedAuto(); }
+ }
public RelayCommand<ExplorerFileItem> FileSelectedCommand { get; set; }
+ public RelayCommand SaveCommand { get; set; }
+
public MainViewVM()
{
- CloseCommand = new RelayCommand(Close);
FileSelectedCommand = new RelayCommand<ExplorerFileItem>(OnFileSelected);
+ SaveCommand = new RelayCommand(OnSaveCommand);
+ Request = new StorageNavigationRequest();
}
public override void OnApplicationStarted()
@@ -61,6 +70,7 @@ namespace Tango.PPC.Storage.ViewModels
if (StorageProvider.IsConnected && StorageProvider.Drive != null)
{
+ CurrentPath = null;
CurrentPath = StorageProvider.Drive.RootDirectory.FullName;
}
else
@@ -71,9 +81,10 @@ namespace Tango.PPC.Storage.ViewModels
}
}
- private async void Close()
+ public override void OnNavigatedFrom()
{
- await NavigationManager.NavigateBack();
+ base.OnNavigatedFrom();
+ Request = new StorageNavigationRequest();
}
/// <summary>
@@ -114,6 +125,7 @@ namespace Tango.PPC.Storage.ViewModels
{
if (_allow_exit || CurrentPath == StorageProvider.Drive.RootDirectory.FullName)
{
+ Request = null;
return Task.FromResult(true);
}
else
@@ -127,7 +139,7 @@ namespace Tango.PPC.Storage.ViewModels
{
_allow_exit = true;
await NavigationManager.NavigateBack();
- await NotificationProvider.ShowInfo($"File Selected: {fileItem.Name}");
+ StorageProvider.SubmitFileSelection(fileItem);
}
public ExplorerFileItem GetNavigationResult()
@@ -135,9 +147,18 @@ namespace Tango.PPC.Storage.ViewModels
return _selectedItem;
}
- public void OnNavigationObjectReceived(string extension)
+ public void OnNavigationObjectReceived(StorageNavigationRequest request)
{
+ Request = request;
+ }
+ private void OnSaveCommand()
+ {
+ _selectedItem = new ExplorerFileItem()
+ {
+ Path = CurrentPath + "\\" + Request.DefaultFileName,
+ };
+ NavigationManager.NavigateBack();
}
}
}
diff --git a/Software/Visual_Studio/PPC/Modules/Tango.PPC.Storage/Views/MainView.xaml b/Software/Visual_Studio/PPC/Modules/Tango.PPC.Storage/Views/MainView.xaml
index 2fea4ce20..d7817fe6f 100644
--- a/Software/Visual_Studio/PPC/Modules/Tango.PPC.Storage/Views/MainView.xaml
+++ b/Software/Visual_Studio/PPC/Modules/Tango.PPC.Storage/Views/MainView.xaml
@@ -6,13 +6,37 @@
xmlns:touch="clr-namespace:Tango.Touch.Controls;assembly=Tango.Touch"
xmlns:explorer="clr-namespace:Tango.Explorer;assembly=Tango.Explorer"
xmlns:vm="clr-namespace:Tango.PPC.Storage.ViewModels"
+ xmlns:models="clr-namespace:Tango.PPC.Storage.Models"
xmlns:global="clr-namespace:Tango.PPC.Storage"
xmlns:local="clr-namespace:Tango.PPC.Storage.Views"
mc:Ignorable="d"
d:DesignHeight="1280" d:DesignWidth="800" d:DataContext="{d:DesignInstance Type=vm:MainViewVM, IsDesignTimeCreatable=False}" DataContext="{x:Static global:ViewModelLocator.MainViewVM}" Background="{StaticResource TangoPrimaryBackgroundBrush}">
<Grid>
<Grid Margin="10">
- <explorer:ExplorerControl x:Name="explorer" CurrentPath="{Binding CurrentPath,Mode=TwoWay}" FileSelectedCommand="{Binding FileSelectedCommand}" />
+ <DockPanel>
+
+ <Grid DockPanel.Dock="Top" Visibility="{Binding Request.Intent,Converter={StaticResource EnumToVisibilityConverter},ConverterParameter=SaveFile,TargetNullValue=Visibility.Collapsed,FallbackValue=Visibility.Collapsed}">
+ <Border BorderThickness="0 0 0 1" BorderBrush="{StaticResource TangoDividerBrush}" Padding="20">
+ <DockPanel>
+ <touch:TouchButton Command="{Binding SaveCommand}" Margin="20 0 0 0" Height="50" Width="200" Style="{StaticResource TangoHollowButton}" CornerRadius="0" DockPanel.Dock="Right">SAVE</touch:TouchButton>
+ <touch:TouchTextBox VerticalAlignment="Bottom" Text="{Binding Request.DefaultFileName}" />
+ </DockPanel>
+ </Border>
+ </Grid>
+
+ <explorer:ExplorerControl x:Name="explorer" CurrentPath="{Binding CurrentPath,Mode=TwoWay}" FileSelectedCommand="{Binding FileSelectedCommand}" Filter="{Binding Request.Filter}">
+ <explorer:ExplorerControl.Style>
+ <Style TargetType="explorer:ExplorerControl" BasedOn="{StaticResource {x:Type explorer:ExplorerControl}}">
+ <Setter Property="EnableFileSelection" Value="True"></Setter>
+ <Style.Triggers>
+ <DataTrigger Binding="{Binding Request.Intent}" Value="SaveFile">
+ <Setter Property="EnableFileSelection" Value="False"></Setter>
+ </DataTrigger>
+ </Style.Triggers>
+ </Style>
+ </explorer:ExplorerControl.Style>
+ </explorer:ExplorerControl>
+ </DockPanel>
</Grid>
</Grid>
</UserControl>
diff --git a/Software/Visual_Studio/PPC/Tango.PPC.Common/MachineUpdate/IMachineUpdateManager.cs b/Software/Visual_Studio/PPC/Tango.PPC.Common/MachineUpdate/IMachineUpdateManager.cs
index d2be997b5..13752b931 100644
--- a/Software/Visual_Studio/PPC/Tango.PPC.Common/MachineUpdate/IMachineUpdateManager.cs
+++ b/Software/Visual_Studio/PPC/Tango.PPC.Common/MachineUpdate/IMachineUpdateManager.cs
@@ -43,6 +43,13 @@ namespace Tango.PPC.Common.MachineUpdate
Task<MachineUpdateResult> Update(String serialNumber, String machineServiceAddress);
/// <summary>
+ /// Performs a machine update using the specified software update package path.
+ /// </summary>
+ /// <param name="fileName">Name of the file.</param>
+ /// <returns></returns>
+ Task<MachineUpdateResult> Update(String fileName);
+
+ /// <summary>
/// Checks if any update are available for the specified machine serial number.
/// </summary>
/// <param name="serialNumber">The serial number.</param>
diff --git a/Software/Visual_Studio/PPC/Tango.PPC.Common/MachineUpdate/MachineUpdateManager.cs b/Software/Visual_Studio/PPC/Tango.PPC.Common/MachineUpdate/MachineUpdateManager.cs
index a75ca9017..d3757e50d 100644
--- a/Software/Visual_Studio/PPC/Tango.PPC.Common/MachineUpdate/MachineUpdateManager.cs
+++ b/Software/Visual_Studio/PPC/Tango.PPC.Common/MachineUpdate/MachineUpdateManager.cs
@@ -445,6 +445,40 @@ namespace Tango.PPC.Common.MachineUpdate
});
}
+ /// <summary>
+ /// Performs a machine update using the specified software update package path.
+ /// </summary>
+ /// <param name="fileName">Name of the file.</param>
+ /// <returns></returns>
+ public Task<MachineUpdateResult> Update(string fileName)
+ {
+ return Task.Factory.StartNew<MachineUpdateResult>(() =>
+ {
+ CurrentStep = MachineUpdateSteps.UpdatingFromPackage;
+
+ LogManager.Log($"Starting machine update from update package '{fileName}'...");
+
+ //Create temporary folders for packages.
+ var _newPackageTempFolder = TemporaryManager.CreateFolder();
+ _newPackageTempFolder.Persist = true;
+
+ LogManager.Log("Extracting downloaded zip file...");
+ //Extract software package.
+ ZipFile.ExtractToDirectory(fileName, _newPackageTempFolder);
+
+ LogManager.Log("Copying latest updater utility to application path...");
+ //Copy new updater utility to app path.
+ File.Copy(Path.Combine(_newPackageTempFolder, "Tango.PPC.Updater.exe"), Path.Combine(PathHelper.GetStartupPath(), "Tango.PPC.Updater.exe"), true);
+
+ LogManager.Log("Update operation completed!");
+
+ return new MachineUpdateResult()
+ {
+ UpdatePackagePath = _newPackageTempFolder,
+ };
+ });
+ }
+
#endregion
}
}
diff --git a/Software/Visual_Studio/PPC/Tango.PPC.Common/MachineUpdate/MachineUpdateSteps.cs b/Software/Visual_Studio/PPC/Tango.PPC.Common/MachineUpdate/MachineUpdateSteps.cs
index 3d8208e4b..74931d2d4 100644
--- a/Software/Visual_Studio/PPC/Tango.PPC.Common/MachineUpdate/MachineUpdateSteps.cs
+++ b/Software/Visual_Studio/PPC/Tango.PPC.Common/MachineUpdate/MachineUpdateSteps.cs
@@ -16,6 +16,7 @@ namespace Tango.PPC.Common.MachineUpdate
[Description("Synchronizing Data")]
SynchronizingData,
[Description("Updating Configuration")]
- SynchronizingMachineConfiguration
+ SynchronizingMachineConfiguration,
+ UpdatingFromPackage
}
}
diff --git a/Software/Visual_Studio/PPC/Tango.PPC.Publisher/MainWindow.xaml b/Software/Visual_Studio/PPC/Tango.PPC.Publisher/MainWindow.xaml
index 8e9b31dff..327cab826 100644
--- a/Software/Visual_Studio/PPC/Tango.PPC.Publisher/MainWindow.xaml
+++ b/Software/Visual_Studio/PPC/Tango.PPC.Publisher/MainWindow.xaml
@@ -18,6 +18,7 @@
<DockPanel Margin="10">
<Grid Height="50" DockPanel.Dock="Bottom">
<StackPanel Orientation="Horizontal" HorizontalAlignment="Right">
+ <Button Width="150" Command="{Binding CreateTupCommand}">CREATE TUP FILE</Button>
<Button Width="150" Command="{Binding PublishCommand}">PUBLISH</Button>
</StackPanel>
</Grid>
diff --git a/Software/Visual_Studio/PPC/Tango.PPC.Publisher/MainWindowVM.cs b/Software/Visual_Studio/PPC/Tango.PPC.Publisher/MainWindowVM.cs
index aec2581de..5891f1228 100644
--- a/Software/Visual_Studio/PPC/Tango.PPC.Publisher/MainWindowVM.cs
+++ b/Software/Visual_Studio/PPC/Tango.PPC.Publisher/MainWindowVM.cs
@@ -141,6 +141,8 @@ namespace Tango.PPC.Publisher
public RelayCommand PublishCommand { get; set; }
+ public RelayCommand CreateTupCommand { get; set; }
+
public MainWindowVM()
{
SelectedBuildConfiguration = "Release";
@@ -165,6 +167,7 @@ namespace Tango.PPC.Publisher
LocalVersion = FileVersionInfo.GetVersionInfo(Core.Helpers.AssemblyHelper.GetCurrentAssemblyFolder() + "\\Tango.PPC.UI.exe").ProductVersion;
PublishCommand = new RelayCommand(Publish);
+ CreateTupCommand = new RelayCommand(PublishTupFile);
}
private async void OnSelectedMachineVersionChanged()
@@ -187,8 +190,6 @@ namespace Tango.PPC.Publisher
private void Publish()
{
- String _appPath = String.Format(AppDomain.CurrentDomain.BaseDirectory + "..\\{0}", SelectedBuildConfiguration);
-
Task.Factory.StartNew(async () =>
{
IsUpdating = true;
@@ -207,77 +208,7 @@ namespace Tango.PPC.Publisher
tempFile = TemporaryManager.Default.CreateFile(".zip");
- using (ZipFile zip = new ZipFile())
- {
- String provision_dir = "Provision Scripts";
-
- zip.AddDirectoryByName(provision_dir);
-
- ExaminerSequenceConfiguration provision_config = new ExaminerSequenceConfiguration();
-
- foreach (var item in ProvisionSequenceItems)
- {
- provision_config.Items.Add(new ExaminerSequenceItem()
- {
- Direction = item.Direction,
- FileName = item.FileName,
- Index = item.Index,
- Name = item.Name,
- Type = item.Type,
- RequiresSerialNumber = item.RequiresSerialNumber
- });
-
- zip.AddFile(item.FilePath, provision_dir);
- }
-
- String provision_config_file = TemporaryManager.Default.CreateFile(".zip");
- provision_config.ToFile(provision_config_file);
-
- var cf = zip.AddFile(provision_config_file, provision_dir);
- cf.FileName = provision_dir + "\\config.xml";
-
-
-
- String update_dir = "Update Scripts";
-
- zip.AddDirectoryByName(update_dir);
-
- ExaminerSequenceConfiguration update_config = new ExaminerSequenceConfiguration();
-
- foreach (var item in UpdateSequenceItems)
- {
- update_config.Items.Add(new ExaminerSequenceItem()
- {
- Direction = item.Direction,
- FileName = item.FileName,
- Index = item.Index,
- Name = item.Name,
- Type = item.Type,
- RequiresSerialNumber = item.RequiresSerialNumber
- });
-
- zip.AddFile(item.FilePath, update_dir);
- }
-
- String update_config_file = TemporaryManager.Default.CreateFile(".zip");
- update_config.ToFile(update_config_file);
-
- var cuf = zip.AddFile(update_config_file, update_dir);
- cuf.FileName = update_dir + "\\config.xml";
-
- foreach (var file in Directory.GetFiles(_appPath, "*.*", SearchOption.TopDirectoryOnly))
- {
- zip.AddFile(file, "/");
- }
-
- zip.SaveProgress += (x, e) =>
- {
- MaxProgress = e.EntriesTotal;
- Progress = e.EntriesSaved;
- };
-
- zip.Save(tempFile);
- }
+ CreateTupPackage(tempFile);
Progress = 0;
MaxProgress = 100;
@@ -318,6 +249,34 @@ namespace Tango.PPC.Publisher
});
}
+ private void PublishTupFile()
+ {
+ SaveFileDialog dlg = new SaveFileDialog();
+ dlg.Filter = "Tango Update Package|*.tup";
+ dlg.DefaultExt = ".tup";
+ if (dlg.ShowDialog().Value)
+ {
+ Task.Factory.StartNew(() =>
+ {
+ try
+ {
+ IsUpdating = true;
+ CreateTupPackage(dlg.FileName);
+ Progress = 0;
+ ShowInfo("Package file created successfully!");
+ }
+ catch (Exception ex)
+ {
+ ShowError(ex.Message);
+ }
+ finally
+ {
+ IsUpdating = false;
+ }
+ });
+ }
+ }
+
private void ShowError(String error)
{
MessageBox.Show(error, "PPC Publisher", MessageBoxButton.OK, MessageBoxImage.Error);
@@ -333,6 +292,86 @@ namespace Tango.PPC.Publisher
return MessageBox.Show(message, "PPC Publisher", MessageBoxButton.YesNo, MessageBoxImage.Information) == MessageBoxResult.Yes;
}
+
+
+ private void CreateTupPackage(String filePath)
+ {
+ String _appPath = String.Format(AppDomain.CurrentDomain.BaseDirectory + "..\\{0}", SelectedBuildConfiguration);
+ var tempFile = filePath;
+
+ using (ZipFile zip = new ZipFile())
+ {
+ String provision_dir = "Provision Scripts";
+
+ zip.AddDirectoryByName(provision_dir);
+
+ ExaminerSequenceConfiguration provision_config = new ExaminerSequenceConfiguration();
+
+ foreach (var item in ProvisionSequenceItems)
+ {
+ provision_config.Items.Add(new ExaminerSequenceItem()
+ {
+ Direction = item.Direction,
+ FileName = item.FileName,
+ Index = item.Index,
+ Name = item.Name,
+ Type = item.Type,
+ RequiresSerialNumber = item.RequiresSerialNumber
+ });
+
+ zip.AddFile(item.FilePath, provision_dir);
+ }
+
+ String provision_config_file = TemporaryManager.Default.CreateFile(".zip");
+ provision_config.ToFile(provision_config_file);
+
+ var cf = zip.AddFile(provision_config_file, provision_dir);
+ cf.FileName = provision_dir + "\\config.xml";
+
+
+
+ String update_dir = "Update Scripts";
+
+ zip.AddDirectoryByName(update_dir);
+
+ ExaminerSequenceConfiguration update_config = new ExaminerSequenceConfiguration();
+
+ foreach (var item in UpdateSequenceItems)
+ {
+ update_config.Items.Add(new ExaminerSequenceItem()
+ {
+ Direction = item.Direction,
+ FileName = item.FileName,
+ Index = item.Index,
+ Name = item.Name,
+ Type = item.Type,
+ RequiresSerialNumber = item.RequiresSerialNumber
+ });
+
+ zip.AddFile(item.FilePath, update_dir);
+ }
+
+ String update_config_file = TemporaryManager.Default.CreateFile(".zip");
+ update_config.ToFile(update_config_file);
+
+ var cuf = zip.AddFile(update_config_file, update_dir);
+ cuf.FileName = update_dir + "\\config.xml";
+
+ foreach (var file in Directory.GetFiles(_appPath, "*.*", SearchOption.TopDirectoryOnly))
+ {
+ zip.AddFile(file, "/");
+ }
+
+ zip.SaveProgress += (x, e) =>
+ {
+ MaxProgress = e.EntriesTotal;
+ Progress = e.EntriesSaved;
+ };
+
+ zip.Save(tempFile);
+ }
+ }
+
protected override void RaisePropertyChangedAuto([CallerMemberName] string caller = null)
{
base.RaisePropertyChangedAuto(caller);
diff --git a/Software/Visual_Studio/PPC/Tango.PPC.UI/Navigation/DefaultNavigationManager.cs b/Software/Visual_Studio/PPC/Tango.PPC.UI/Navigation/DefaultNavigationManager.cs
index eee37b2e0..efe8149f6 100644
--- a/Software/Visual_Studio/PPC/Tango.PPC.UI/Navigation/DefaultNavigationManager.cs
+++ b/Software/Visual_Studio/PPC/Tango.PPC.UI/Navigation/DefaultNavigationManager.cs
@@ -213,30 +213,37 @@ namespace Tango.PPC.UI.Navigation
{
var moduleNavigation = moduleView.FindChildOffline<NavigationControl>();
- moduleNavigation.RegisterForLoadedOrNow(async (x, e) =>
+ if (moduleNavigation != null)
{
- foreach (var view in path.Skip(1))
+ moduleNavigation.RegisterForLoadedOrNow(async (x, e) =>
{
- await Task.Delay(100);
- var v = moduleNavigation.NavigateTo(view);
-
- if (v != null)
+ foreach (var view in path.Skip(1))
{
- _currentVM = v.DataContext;
+ await Task.Delay(100);
+ var v = moduleNavigation.NavigateTo(view);
- if (view != path.Last())
+ if (v != null)
{
- moduleNavigation = v.FindChildOffline<NavigationControl>();
+ _currentVM = v.DataContext;
+
+ if (view != path.Last())
+ {
+ moduleNavigation = v.FindChildOffline<NavigationControl>();
+ }
+ }
+ else
+ {
+ throw LogManager.Log(new ArgumentNullException("Could not navigate to " + fullPath));
}
}
- else
- {
- throw LogManager.Log(new ArgumentNullException("Could not navigate to " + fullPath));
- }
- }
+ NavigationCycleCompleted?.Invoke(fromVM, _currentVM);
+ });
+ }
+ else
+ {
NavigationCycleCompleted?.Invoke(fromVM, _currentVM);
- });
+ }
}
return true;
diff --git a/Software/Visual_Studio/PPC/Tango.PPC.UI/ViewModels/MachineUpdateViewVM.cs b/Software/Visual_Studio/PPC/Tango.PPC.UI/ViewModels/MachineUpdateViewVM.cs
index 451cd07a1..f582d0bb0 100644
--- a/Software/Visual_Studio/PPC/Tango.PPC.UI/ViewModels/MachineUpdateViewVM.cs
+++ b/Software/Visual_Studio/PPC/Tango.PPC.UI/ViewModels/MachineUpdateViewVM.cs
@@ -7,6 +7,7 @@ using System.Text;
using System.Threading.Tasks;
using Tango.Core.Commands;
using Tango.Core.Helpers;
+using Tango.Explorer;
using Tango.PPC.Common;
using Tango.PPC.Common.MachineUpdate;
using Tango.PPC.UI.ViewsContracts;
@@ -17,7 +18,6 @@ namespace Tango.PPC.UI.ViewModels
{
public enum MachineUpdateView
{
-
UpdateCheckView,
UpdateCheckErrorView,
UpdateAvailableView,
@@ -26,6 +26,8 @@ namespace Tango.PPC.UI.ViewModels
UpdateDbProgressView,
UpdateCompletedView,
UpdateFailedView,
+ UpdateFromPackageView,
+ UpdateFailedFromPackageView,
}
private MachineUpdateResult _update_result;
@@ -209,6 +211,11 @@ namespace Tango.PPC.UI.ViewModels
#endregion
+ #region Override Methods
+
+ /// <summary>
+ /// Called when the application has been started.
+ /// </summary>
public override void OnApplicationStarted()
{
@@ -222,5 +229,44 @@ namespace Tango.PPC.UI.ViewModels
{
return View.NavigateTo(view);
}
+
+ /// <summary>
+ /// Called when the application is ready and all modules views are loaded.
+ /// </summary>
+ public override void OnApplicationReady()
+ {
+ base.OnApplicationReady();
+
+ StorageProvider.RegisterFileHandler(ExplorerFileDefinition.Update.Extension, HandleSoftwareUpdatePackageLoaded);
+ }
+
+ #endregion
+
+ #region Handle USB Update
+
+ private async void HandleSoftwareUpdatePackageLoaded(ExplorerFileItem fileItem)
+ {
+ if (await NotificationProvider.ShowQuestion("Do you with to install the selected software package?"))
+ {
+ await NavigationManager.NavigateTo(Common.Navigation.NavigationView.MachineUpdateView);
+ await NavigateTo(MachineUpdateView.UpdateFromPackageView);
+
+ LogManager.Log("Starting machine update from package...");
+
+ try
+ {
+ _update_result = await MachineUpdateManager.Update(fileItem.Path);
+ LogManager.Log("Machine update from package completed.");
+ await NavigateTo(MachineUpdateView.UpdateCompletedView);
+ }
+ catch (Exception ex)
+ {
+ LogManager.Log(ex, "Machine update from package failed.");
+ await NavigateTo(MachineUpdateView.UpdateFailedFromPackageView);
+ }
+ }
+ }
+
+ #endregion
}
}
diff --git a/Software/Visual_Studio/PPC/Tango.PPC.UI/Views/MachineUpdateView.xaml b/Software/Visual_Studio/PPC/Tango.PPC.UI/Views/MachineUpdateView.xaml
index b17a53422..06a330675 100644
--- a/Software/Visual_Studio/PPC/Tango.PPC.UI/Views/MachineUpdateView.xaml
+++ b/Software/Visual_Studio/PPC/Tango.PPC.UI/Views/MachineUpdateView.xaml
@@ -159,6 +159,23 @@
</StackPanel>
</Grid>
+ <Grid controls:NavigationControl.NavigationName="UpdateFromPackageView">
+ <StackPanel HorizontalAlignment="Center" Margin="0 200 0 0">
+ <touch:TouchBusyIndicator Width="250" Height="250" IsIndeterminate="{Binding IsVisible}" />
+ <TextBlock DockPanel.Dock="Top" Margin="0 100" FontSize="{StaticResource TangoHeaderFontSize}" HorizontalAlignment="Center" TextWrapping="Wrap" TextAlignment="Center">
+ Updating your software
+ </TextBlock>
+ </StackPanel>
+ </Grid>
+
+ <Grid controls:NavigationControl.NavigationName="UpdateFailedFromPackageView">
+ <StackPanel HorizontalAlignment="Center" Margin="0 50 0 0">
+ <touch:TouchIcon Icon="AlertOctagon" Foreground="{StaticResource TangoErrorBrush}" Width="70" Height="70" />
+ <TextBlock VerticalAlignment="Center" Margin="0 10 0 0" Foreground="{StaticResource TangoErrorBrush}" FontSize="{StaticResource TangoTitleFontSize}">An error occurred while trying to update the machine.</TextBlock>
+
+ <touch:TouchButton Style="{StaticResource TangoFlatButton}" Margin="0 200 0 0" Padding="20" Width="300" HorizontalContentAlignment="Center" CornerRadius="35" Command="{Binding ToApplicationCommand}">Back To Application</touch:TouchButton>
+ </StackPanel>
+ </Grid>
</controls:NavigationControl>
</DockPanel>
</Grid>
diff --git a/Software/Visual_Studio/Tango.BL/Builders/JobBuilder.cs b/Software/Visual_Studio/Tango.BL/Builders/JobBuilder.cs
index d8d58d69b..da418a990 100644
--- a/Software/Visual_Studio/Tango.BL/Builders/JobBuilder.cs
+++ b/Software/Visual_Studio/Tango.BL/Builders/JobBuilder.cs
@@ -23,6 +23,7 @@ namespace Tango.BL.Builders
Include(x => x.Rml).
Include(x => x.ColorSpace).
Include(x => x.SpoolType).
+ Include(x => x.Customer).
Include(x => x.WindingMethod);
}
diff --git a/Software/Visual_Studio/Tango.BL/EntitiesExtensions/Job.cs b/Software/Visual_Studio/Tango.BL/EntitiesExtensions/Job.cs
index 9ec711857..911a55e22 100644
--- a/Software/Visual_Studio/Tango.BL/EntitiesExtensions/Job.cs
+++ b/Software/Visual_Studio/Tango.BL/EntitiesExtensions/Job.cs
@@ -1,4 +1,5 @@
-using Newtonsoft.Json;
+using Google.Protobuf;
+using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
@@ -10,9 +11,11 @@ using System.Text;
using System.Threading.Tasks;
using System.Windows.Media.Imaging;
using Tango.BL.Attributes;
+using Tango.BL.Builders;
using Tango.BL.Enumerations;
using Tango.Core;
using Tango.Logging;
+using Tango.PMR.Exports;
namespace Tango.BL.Entities
{
@@ -500,6 +503,155 @@ namespace Tango.BL.Entities
};
}
+ public Task<JobFile> ToJobFile()
+ {
+ return Task.Factory.StartNew<JobFile>(() =>
+ {
+ using (ObservablesContext db = ObservablesContext.CreateDefault())
+ {
+ var job = new JobBuilder(db).Set(Guid).WithUser().WithRML().WithSegments().WithBrushStops().Build();
+
+ var jobFile = new JobFile();
+
+ jobFile.ColorSpaceGuid = job.ColorSpaceGuid.ToStringOrEmpty();
+ jobFile.Customer = job.Customer != null ? job.Customer.Name : String.Empty;
+ jobFile.Description = job.Description.ToStringOrEmpty();
+
+ if (job.HasEmbroideryFile)
+ {
+ jobFile.HasEmbroideryFile = job.HasEmbroideryFile;
+ jobFile.EmbroideryFileData = ByteString.CopyFrom(job.EmbroideryFileData);
+ jobFile.EmbroideryFileName = job.EmbroideryFileName;
+ jobFile.EmbroideryJpeg = ByteString.CopyFrom(job.EmbroideryJpeg);
+ }
+
+ jobFile.EnableInterSegment = job.EnableInterSegment;
+ jobFile.EnableLubrication = job.EnableLubrication;
+ jobFile.InterSegmentLength = job.InterSegmentLength;
+ jobFile.LengthPercentageFactor = job.LengthPercentageFactor;
+ jobFile.Name = job.Name.ToStringOrEmpty();
+ jobFile.NumberOfUnits = job.NumberOfUnits;
+ jobFile.RmlGuid = job.RmlGuid;
+ jobFile.SampleUnitsOrMeters = job.SampleUnitsOrMeters;
+ jobFile.SpoolsDistribution = job.SpoolsDistribution;
+ jobFile.SpoolTypeGuid = job.SpoolTypeGuid;
+ jobFile.Type = job.Type;
+ jobFile.WindingMethodGuid = job.WindingMethodGuid;
+
+ foreach (var segment in job.Segments.OrderBy(x => x.SegmentIndex))
+ {
+ JobFileSegment s = new JobFileSegment();
+ s.Length = segment.Length;
+ s.Name = segment.Name.ToStringOrEmpty();
+ jobFile.Segments.Add(s);
+
+ foreach (var stop in segment.BrushStops.OrderBy(x => x.StopIndex))
+ {
+ JobFileBrushStop st = new JobFileBrushStop();
+ stop.MapPrimitivesWithStringsNoNullsTo(st);
+ s.BrushStops.Add(st);
+ }
+ }
+
+ return jobFile;
+ }
+ });
+ }
+
+ public static Task<Job> FromJobFile(JobFile jobFile, String machineGuid, String userGuid)
+ {
+ return Task.Factory.StartNew(() =>
+ {
+ using (ObservablesContext db = ObservablesContext.CreateDefault())
+ {
+ var job = new Job();
+ job.MachineGuid = machineGuid;
+ job.UserGuid = userGuid;
+
+ var job_color_space = db.ColorSpaces.SingleOrDefault(x => x.Guid == jobFile.ColorSpaceGuid);
+ if (job_color_space == null) throw new ArgumentException("Could not load the specified job file. Job color space could not be located on database.");
+ job.ColorSpaceGuid = jobFile.ColorSpaceGuid;
+
+
+ var job_customer = db.Customers.FirstOrDefault(x => x.Name == jobFile.Customer);
+
+ if (job_customer != null)
+ {
+ job.CustomerGuid = job_customer.Guid;
+ }
+
+ job.Description = jobFile.Description.ToNullIfEmpty();
+
+ if (jobFile.HasEmbroideryFile)
+ {
+ job.HasEmbroideryFile = jobFile.HasEmbroideryFile;
+ job.EmbroideryFileData = jobFile.EmbroideryFileData.ToByteArray();
+ job.EmbroideryFileName = jobFile.EmbroideryFileName;
+ job.EmbroideryJpeg = jobFile.EmbroideryJpeg.ToByteArray();
+ }
+ job.EnableInterSegment = jobFile.EnableInterSegment;
+ job.EnableLubrication = jobFile.EnableLubrication;
+ job.InterSegmentLength = jobFile.InterSegmentLength;
+ job.LengthPercentageFactor = jobFile.LengthPercentageFactor;
+ job.Name = jobFile.Name.ToNullIfEmpty();
+ job.NumberOfUnits = jobFile.NumberOfUnits;
+
+ var job_rml = db.Rmls.SingleOrDefault(x => x.Guid == jobFile.RmlGuid);
+
+ if (job_rml == null) throw new ArgumentException("Could not load the specified job file. Job media type could not be located on database.");
+
+ job.RmlGuid = jobFile.RmlGuid;
+ job.SampleUnitsOrMeters = jobFile.SampleUnitsOrMeters;
+ job.SpoolsDistribution = jobFile.SpoolsDistribution;
+
+ var job_spool_type = db.SpoolTypes.SingleOrDefault(x => x.Guid == jobFile.SpoolTypeGuid);
+
+ if (job_spool_type == null) throw new ArgumentException("Could not load the specified job file. Job spool type could not be located on database.");
+
+ job.SpoolTypeGuid = jobFile.SpoolTypeGuid;
+ job.Type = jobFile.Type;
+
+ var job_winding_method = db.WindingMethods.Single(x => x.Guid == jobFile.WindingMethodGuid);
+
+ if (job_winding_method == null) throw new ArgumentException("Could not load the specified job file. Job winding method could not be located on database.");
+
+ job.WindingMethodGuid = jobFile.WindingMethodGuid;
+
+ for (int i = 0; i < jobFile.Segments.Count; i++)
+ {
+ var segment = jobFile.Segments[i];
+ Segment s = new Segment();
+ s.JobGuid = job.Guid;
+ s.Name = segment.Name.ToNullIfEmpty();
+ s.Length = segment.Length;
+ s.SegmentIndex = i + 1;
+ job.Segments.Add(s);
+
+ for (int j = 0; j < segment.BrushStops.Count; j++)
+ {
+ var stop = segment.BrushStops[j];
+
+ var stop_color_space = db.ColorSpaces.SingleOrDefault(x => x.Guid == stop.ColorSpaceGuid);
+ if (stop_color_space == null) throw new ArgumentException("Could not load the specified job file. Job brush stop color space could not be located on database.");
+
+ if (!String.IsNullOrWhiteSpace(stop.ColorCatalogGuid))
+ {
+ var stop_color_catalog = db.ColorCatalogs.SingleOrDefault(x => x.Guid == stop.ColorCatalogGuid);
+ if (stop_color_catalog == null) throw new ArgumentException("Could not load the specified job file. Job brush stop catalog color could not be located on database.");
+ }
+
+ BrushStop st = new BrushStop();
+ st.StopIndex = j + 1;
+ st.SegmentGuid = s.Guid;
+ stop.MapPrimitivesWithStringsNoNullsTo(st);
+ s.BrushStops.Add(st);
+ }
+ }
+
+ return job;
+ }
+ });
+ }
#endregion
diff --git a/Software/Visual_Studio/Tango.Core/ExtensionMethods/ObjectExtensions.cs b/Software/Visual_Studio/Tango.Core/ExtensionMethods/ObjectExtensions.cs
index 7d0c86e06..cff4e6a3a 100644
--- a/Software/Visual_Studio/Tango.Core/ExtensionMethods/ObjectExtensions.cs
+++ b/Software/Visual_Studio/Tango.Core/ExtensionMethods/ObjectExtensions.cs
@@ -74,6 +74,29 @@ public static class ObjectExtensions
}
/// <summary>
+ /// Maps the object properties values to the destination object including strings and without assigning null string values from the source.
+ /// </summary>
+ /// <param name="source">The source.</param>
+ /// <param name="destination">The destination.</param>
+ public static void MapPrimitivesWithStringsNoNullsTo(this object source, object destination)
+ {
+ foreach (var prop in source.GetType().GetProperties(BindingFlags.Public | BindingFlags.Instance).Where(x => x.PropertyType.IsPrimitive || x.PropertyType == typeof(String)))
+ {
+ var desProp = destination.GetType().GetProperty(prop.Name, BindingFlags.Public | BindingFlags.Instance);
+
+ if (desProp != null && (desProp.PropertyType.IsPrimitive || desProp.PropertyType == typeof(String)) && desProp.SetMethod != null)
+ {
+ var value = prop.GetValue(source);
+
+ if (desProp.PropertyType != typeof(String) || !String.IsNullOrEmpty(value as String))
+ {
+ desProp.SetValue(destination, value);
+ }
+ }
+ }
+ }
+
+ /// <summary>
/// Maps the object properties values to the destination object.
/// </summary>
/// <param name="source">The source.</param>
diff --git a/Software/Visual_Studio/Tango.Core/ExtensionMethods/StringExtensions.cs b/Software/Visual_Studio/Tango.Core/ExtensionMethods/StringExtensions.cs
index 71ed2b03f..f03bcb647 100644
--- a/Software/Visual_Studio/Tango.Core/ExtensionMethods/StringExtensions.cs
+++ b/Software/Visual_Studio/Tango.Core/ExtensionMethods/StringExtensions.cs
@@ -223,4 +223,14 @@ public static class StringExtensions
"$1 $2"
);
}
+
+ public static String ToStringOrEmpty(this String str)
+ {
+ return str != null ? str : String.Empty;
+ }
+
+ public static String ToNullIfEmpty(this String str)
+ {
+ return String.IsNullOrEmpty(str) ? null : str;
+ }
}
diff --git a/Software/Visual_Studio/Tango.Explorer/ExplorerControl.cs b/Software/Visual_Studio/Tango.Explorer/ExplorerControl.cs
index d84138e0f..77116e94c 100644
--- a/Software/Visual_Studio/Tango.Explorer/ExplorerControl.cs
+++ b/Software/Visual_Studio/Tango.Explorer/ExplorerControl.cs
@@ -61,6 +61,23 @@ namespace Tango.Explorer
public static readonly DependencyProperty FileSelectedCommandProperty =
DependencyProperty.Register("FileSelectedCommand", typeof(RelayCommand<ExplorerFileItem>), typeof(ExplorerControl), new PropertyMetadata(null));
+ public String Filter
+ {
+ get { return (String)GetValue(FilterProperty); }
+ set { SetValue(FilterProperty, value); }
+ }
+ public static readonly DependencyProperty FilterProperty =
+ DependencyProperty.Register("Filter", typeof(String), typeof(ExplorerControl), new PropertyMetadata(null));
+
+ public bool EnableFileSelection
+ {
+ get { return (bool)GetValue(EnableFileSelectionProperty); }
+ set { SetValue(EnableFileSelectionProperty, value); }
+ }
+ public static readonly DependencyProperty EnableFileSelectionProperty =
+ DependencyProperty.Register("EnableFileSelection", typeof(bool), typeof(ExplorerControl), new PropertyMetadata(true));
+
+
static ExplorerControl()
{
DefaultStyleKeyProperty.OverrideMetadata(typeof(ExplorerControl), new FrameworkPropertyMetadata(typeof(ExplorerControl)));
@@ -83,7 +100,7 @@ namespace Tango.Explorer
}
else if (Directory.Exists(CurrentPath))
{
- CurrentFolder = ExplorerFolderItem.LoadFromPath(CurrentPath);
+ CurrentFolder = ExplorerFolderItem.LoadFromPath(CurrentPath, Filter);
}
_changing_current_path = false;
@@ -107,11 +124,11 @@ namespace Tango.Explorer
if (SelectedItem is ExplorerFolderItem)
{
var folder = SelectedItem as ExplorerFolderItem;
- folder = ExplorerFolderItem.LoadFromPath(folder.Path);
+ folder = ExplorerFolderItem.LoadFromPath(folder.Path, Filter);
CurrentFolder = folder;
SelectedItem = null;
}
- else if (SelectedItem is ExplorerFileItem)
+ else if (SelectedItem is ExplorerFileItem && EnableFileSelection)
{
FileSelectedCommand?.Execute(SelectedItem);
}
@@ -126,7 +143,7 @@ namespace Tango.Explorer
if (parentPath != null)
{
- CurrentFolder = ExplorerFolderItem.LoadFromPath(parentPath);
+ CurrentFolder = ExplorerFolderItem.LoadFromPath(parentPath, Filter);
}
}
}
diff --git a/Software/Visual_Studio/Tango.Explorer/ExplorerFileItem.cs b/Software/Visual_Studio/Tango.Explorer/ExplorerFileItem.cs
index 6340ea848..046b7a740 100644
--- a/Software/Visual_Studio/Tango.Explorer/ExplorerFileItem.cs
+++ b/Software/Visual_Studio/Tango.Explorer/ExplorerFileItem.cs
@@ -23,5 +23,13 @@ namespace Tango.Explorer
return fileItem;
}
+
+ /// <summary>
+ /// Gets the file extension.
+ /// </summary>
+ public String Extension
+ {
+ get { return System.IO.Path.GetExtension(Path).ToLower(); }
+ }
}
}
diff --git a/Software/Visual_Studio/Tango.Explorer/ExplorerFolderItem.cs b/Software/Visual_Studio/Tango.Explorer/ExplorerFolderItem.cs
index 48f870b20..dde105767 100644
--- a/Software/Visual_Studio/Tango.Explorer/ExplorerFolderItem.cs
+++ b/Software/Visual_Studio/Tango.Explorer/ExplorerFolderItem.cs
@@ -12,7 +12,7 @@ namespace Tango.Explorer
{
public class ExplorerFolderItem : ExplorerItem
{
- private static List<String> extensions = ExplorerFileDefinition.GetSupportedExtensions().Select(x => x.Replace(".","")).ToList();
+ private static List<String> extensions = ExplorerFileDefinition.GetSupportedExtensions().Select(x => x.Replace(".", "")).ToList();
public List<ExplorerItem> Items { get; set; }
@@ -21,7 +21,7 @@ namespace Tango.Explorer
Items = new List<ExplorerItem>();
}
- public static ExplorerFolderItem LoadFromPath(String path)
+ public static ExplorerFolderItem LoadFromPath(String path, String filter)
{
ExplorerFolderItem folderItem = new ExplorerFolderItem();
@@ -38,9 +38,12 @@ namespace Tango.Explorer
folderItem.Items.Add(fItem);
}
- foreach (var file in Directory.GetFiles(path,"*.*").Where(f => extensions.Contains(f.Split('.').Last().ToLower())).ToArray())
+ foreach (var file in Directory.GetFiles(path, "*.*").Where(f => extensions.Contains(f.Split('.').Last().ToLower())).ToArray())
{
- folderItem.Items.Add(ExplorerFileItem.LoadFromPath(file));
+ if (filter == null || filter.ToLower().Replace("*", "").Replace(";", "").Split('|').Contains(System.IO.Path.GetExtension(file).ToLower()))
+ {
+ folderItem.Items.Add(ExplorerFileItem.LoadFromPath(file));
+ }
}
return folderItem;
diff --git a/Software/Visual_Studio/Tango.PMR/Common/ErrorCode.cs b/Software/Visual_Studio/Tango.PMR/Common/ErrorCode.cs
index eb58a8672..abf50dc08 100644
--- a/Software/Visual_Studio/Tango.PMR/Common/ErrorCode.cs
+++ b/Software/Visual_Studio/Tango.PMR/Common/ErrorCode.cs
@@ -22,19 +22,35 @@ namespace Tango.PMR.Common {
static ErrorCodeReflection() {
byte[] descriptorData = global::System.Convert.FromBase64String(
string.Concat(
- "Cg9FcnJvckNvZGUucHJvdG8SEFRhbmdvLlBNUi5Db21tb24q7QMKCUVycm9y",
+ "Cg9FcnJvckNvZGUucHJvdG8SEFRhbmdvLlBNUi5Db21tb24qqgkKCUVycm9y",
"Q29kZRIICgROT05FEAASEQoNR0VORVJBTF9FUlJPUhABEgsKB0JBRF9DUkMQ",
"AhIeChpJTlZBTElEX0RJR0lUQUxfUElOX05VTUJFUhADEhsKF1VOQVVUSE9S",
"SVpFRF9DT05ORUNUSU9OEAQSHwobQ09OVElOVU9VU19SRVNQT05TRV9BQk9S",
"VEVEEAUSDgoKSk9CX0ZBSUxFRBAGEhUKEUlOVkFMSURfUEFSQU1FVEVSEAcS",
"FgoRSU5WQUxJRF9VUExPQURfSUQQ6AcSEwoORklMRV9OT1RfRk9VTkQQ6QcS",
"FwoSSU5WQUxJRF9QUk9DRVNTX0lEEOoHEh0KGEZJTEVfTEVOR1RIX09VVF9P",
- "Rl9SQU5HRRDrBxIaChVKT0JfVU5TUEVDSUZJRURfRVJST1IQ0A8SFQoQSk9C",
- "X1RIUkVBRF9CUkVBSxDRDxIbChZKT0JfV0lOREVSX0RBTkNFUl9GQUlMENIP",
- "EhsKFkpPQl9QT09MRVJfREFOQ0VSX0ZBSUwQ0w8SGwoWSk9CX0ZFRURFUl9E",
- "QU5DRVJfRkFJTBDUDxITCg5KT0JfT1VUX09GX0RZRRDVDxIUCg9KT0JfT1RI",
- "RVJfQUxBUk0Q1g8SFwoSTk9fSk9CX0lOX1BST0dSRVNTENcPQhwKGmNvbS50",
- "d2luZS50YW5nby5wbXIuY29tbW9uYgZwcm90bzM="));
+ "Rl9SQU5HRRDrBxIaChVGSUxFX1JFUVVFU1RfRElTS19FUlIQ7AcSGQoURklM",
+ "RV9SRVFVRVNUX0lOVF9FUlIQ7QcSGwoWRklMRV9SRVFVRVNUX05PVF9SRUFE",
+ "WRDuBxIZChRGSUxFX1JFUVVFU1RfTk9fRklMRRDvBxIZChRGSUxFX1JFUVVF",
+ "U1RfTk9fUEFUSBDwBxIeChlGSUxFX1JFUVVFU1RfSU5WQUxJRF9OQU1FEPEH",
+ "EhgKE0ZJTEVfUkVRVUVTVF9ERU5JRUQQ8gcSFwoSRklMRV9SRVFVRVNUX0VY",
+ "SVNUEPMHEiAKG0ZJTEVfUkVRVUVTVF9JTlZBTElEX09CSkVDVBD0BxIhChxG",
+ "SUxFX1JFUVVFU1RfV1JJVEVfUFJPVEVDVEVEEPUHEh8KGkZJTEVfUkVRVUVT",
+ "VF9JTlZBTElEX0RSSVZFEPYHEh0KGEZJTEVfUkVRVUVTVF9OT1RfRU5BQkxF",
+ "RBD3BxIfChpGSUxFX1JFUVVFU1RfTk9fRklMRVNZU1RFTRD4BxIeChlGSUxF",
+ "X1JFUVVFU1RfTUtGU19BQk9SVEVEEPkHEhkKFEZJTEVfUkVRVUVTVF9USU1F",
+ "T1VUEPoHEhgKE0ZJTEVfUkVRVUVTVF9MT0NLRUQQ+wcSIQocRklMRV9SRVFV",
+ "RVNUX05PVF9FTk9VR0hfQ09SRRD8BxIlCiBGSUxFX1JFUVVFU1RfVE9PX01B",
+ "TllfT1BFTl9GSUxFUxD9BxIjCh5GSUxFX1JFUVVFU1RfSU5WQUxJRF9QQVJB",
+ "TUVURVIQ/gcSGgoVSk9CX1VOU1BFQ0lGSUVEX0VSUk9SENAPEhUKEEpPQl9U",
+ "SFJFQURfQlJFQUsQ0Q8SGwoWSk9CX1dJTkRFUl9EQU5DRVJfRkFJTBDSDxIb",
+ "ChZKT0JfUE9PTEVSX0RBTkNFUl9GQUlMENMPEhsKFkpPQl9GRUVERVJfREFO",
+ "Q0VSX0ZBSUwQ1A8SEwoOSk9CX09VVF9PRl9EWUUQ1Q8SFAoPSk9CX09USEVS",
+ "X0FMQVJNENYPEhcKEk5PX0pPQl9JTl9QUk9HUkVTUxDXDxIaChVKT0JfVEVN",
+ "UEVSQVRVUkVfQUxBUk0Q2A8SEQoMSk9CX0xTX0FMQVJNENkPEhcKEkpPQl9Q",
+ "UkVTU1VSRV9BTEFSTRDaDxIWChFKT0JfQ1VSUkVOVF9BTEFSTRDbDxIUCg9K",
+ "T0JfTU9UT1JfQUxBUk0Q3A9CHAoaY29tLnR3aW5lLnRhbmdvLnBtci5jb21t",
+ "b25iBnByb3RvMw=="));
descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData,
new pbr::FileDescriptor[] { },
new pbr::GeneratedClrTypeInfo(new[] {typeof(global::Tango.PMR.Common.ErrorCode), }, null));
@@ -80,6 +96,25 @@ namespace Tango.PMR.Common {
///Returned by FileChunkUploadResponse when the uploaded file size exceeds the expected Length from FileUploadRequest.
/// </summary>
[pbr::OriginalName("FILE_LENGTH_OUT_OF_RANGE")] FileLengthOutOfRange = 1003,
+ [pbr::OriginalName("FILE_REQUEST_DISK_ERR")] FileRequestDiskErr = 1004,
+ [pbr::OriginalName("FILE_REQUEST_INT_ERR")] FileRequestIntErr = 1005,
+ [pbr::OriginalName("FILE_REQUEST_NOT_READY")] FileRequestNotReady = 1006,
+ [pbr::OriginalName("FILE_REQUEST_NO_FILE")] FileRequestNoFile = 1007,
+ [pbr::OriginalName("FILE_REQUEST_NO_PATH")] FileRequestNoPath = 1008,
+ [pbr::OriginalName("FILE_REQUEST_INVALID_NAME")] FileRequestInvalidName = 1009,
+ [pbr::OriginalName("FILE_REQUEST_DENIED")] FileRequestDenied = 1010,
+ [pbr::OriginalName("FILE_REQUEST_EXIST")] FileRequestExist = 1011,
+ [pbr::OriginalName("FILE_REQUEST_INVALID_OBJECT")] FileRequestInvalidObject = 1012,
+ [pbr::OriginalName("FILE_REQUEST_WRITE_PROTECTED")] FileRequestWriteProtected = 1013,
+ [pbr::OriginalName("FILE_REQUEST_INVALID_DRIVE")] FileRequestInvalidDrive = 1014,
+ [pbr::OriginalName("FILE_REQUEST_NOT_ENABLED")] FileRequestNotEnabled = 1015,
+ [pbr::OriginalName("FILE_REQUEST_NO_FILESYSTEM")] FileRequestNoFilesystem = 1016,
+ [pbr::OriginalName("FILE_REQUEST_MKFS_ABORTED")] FileRequestMkfsAborted = 1017,
+ [pbr::OriginalName("FILE_REQUEST_TIMEOUT")] FileRequestTimeout = 1018,
+ [pbr::OriginalName("FILE_REQUEST_LOCKED")] FileRequestLocked = 1019,
+ [pbr::OriginalName("FILE_REQUEST_NOT_ENOUGH_CORE")] FileRequestNotEnoughCore = 1020,
+ [pbr::OriginalName("FILE_REQUEST_TOO_MANY_OPEN_FILES")] FileRequestTooManyOpenFiles = 1021,
+ [pbr::OriginalName("FILE_REQUEST_INVALID_PARAMETER")] FileRequestInvalidParameter = 1022,
/// <summary>
///Job Failure
/// </summary>
@@ -94,6 +129,11 @@ namespace Tango.PMR.Common {
///Occurs when ResumeCurrentJobRequest was called but no job is in progress.
/// </summary>
[pbr::OriginalName("NO_JOB_IN_PROGRESS")] NoJobInProgress = 2007,
+ [pbr::OriginalName("JOB_TEMPERATURE_ALARM")] JobTemperatureAlarm = 2008,
+ [pbr::OriginalName("JOB_LS_ALARM")] JobLsAlarm = 2009,
+ [pbr::OriginalName("JOB_PRESSURE_ALARM")] JobPressureAlarm = 2010,
+ [pbr::OriginalName("JOB_CURRENT_ALARM")] JobCurrentAlarm = 2011,
+ [pbr::OriginalName("JOB_MOTOR_ALARM")] JobMotorAlarm = 2012,
}
#endregion
diff --git a/Software/Visual_Studio/Tango.PMR/Exports/JobFile.cs b/Software/Visual_Studio/Tango.PMR/Exports/JobFile.cs
new file mode 100644
index 000000000..00d398e30
--- /dev/null
+++ b/Software/Visual_Studio/Tango.PMR/Exports/JobFile.cs
@@ -0,0 +1,723 @@
+// Generated by the protocol buffer compiler. DO NOT EDIT!
+// source: JobFile.proto
+#pragma warning disable 1591, 0612, 3021
+#region Designer generated code
+
+using pb = global::Google.Protobuf;
+using pbc = global::Google.Protobuf.Collections;
+using pbr = global::Google.Protobuf.Reflection;
+using scg = global::System.Collections.Generic;
+namespace Tango.PMR.Exports {
+
+ /// <summary>Holder for reflection information generated from JobFile.proto</summary>
+ public static partial class JobFileReflection {
+
+ #region Descriptor
+ /// <summary>File descriptor for JobFile.proto</summary>
+ public static pbr::FileDescriptor Descriptor {
+ get { return descriptor; }
+ }
+ private static pbr::FileDescriptor descriptor;
+
+ static JobFileReflection() {
+ byte[] descriptorData = global::System.Convert.FromBase64String(
+ string.Concat(
+ "Cg1Kb2JGaWxlLnByb3RvEhFUYW5nby5QTVIuRXhwb3J0cxoUSm9iRmlsZVNl",
+ "Z21lbnQucHJvdG8ioQQKB0pvYkZpbGUSDAoETmFtZRgBIAEoCRITCgtEZXNj",
+ "cmlwdGlvbhgCIAEoCRIaChJFbmFibGVJbnRlclNlZ21lbnQYAyABKAgSGgoS",
+ "SW50ZXJTZWdtZW50TGVuZ3RoGAQgASgBEg8KB1JtbEd1aWQYBSABKAkSGQoR",
+ "V2luZGluZ01ldGhvZEd1aWQYBiABKAkSFQoNU3Bvb2xUeXBlR3VpZBgHIAEo",
+ "CRIZChFFbmFibGVMdWJyaWNhdGlvbhgIIAEoCBIZChFIYXNFbWJyb2lkZXJ5",
+ "RmlsZRgJIAEoCBIaChJFbWJyb2lkZXJ5RmlsZURhdGEYCiABKAwSGgoSRW1i",
+ "cm9pZGVyeUZpbGVOYW1lGAsgASgJEhYKDkVtYnJvaWRlcnlKcGVnGAwgASgM",
+ "EhYKDkNvbG9yU3BhY2VHdWlkGA0gASgJEhUKDU51bWJlck9mVW5pdHMYDiAB",
+ "KAUSDAoEVHlwZRgPIAEoBRIQCghDdXN0b21lchgQIAEoCRIaChJTcG9vbHNE",
+ "aXN0cmlidXRpb24YESABKAUSFQoNTnVtYmVyT2ZIZWFkcxgSIAEoBRIbChNT",
+ "YW1wbGVVbml0c09yTWV0ZXJzGBMgASgFEh4KFkxlbmd0aFBlcmNlbnRhZ2VG",
+ "YWN0b3IYFCABKAESMwoIU2VnbWVudHMYFSADKAsyIS5UYW5nby5QTVIuRXhw",
+ "b3J0cy5Kb2JGaWxlU2VnbWVudEIdChtjb20udHdpbmUudGFuZ28ucG1yLmV4",
+ "cG9ydHNiBnByb3RvMw=="));
+ descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData,
+ new pbr::FileDescriptor[] { global::Tango.PMR.Exports.JobFileSegmentReflection.Descriptor, },
+ new pbr::GeneratedClrTypeInfo(null, new pbr::GeneratedClrTypeInfo[] {
+ new pbr::GeneratedClrTypeInfo(typeof(global::Tango.PMR.Exports.JobFile), global::Tango.PMR.Exports.JobFile.Parser, new[]{ "Name", "Description", "EnableInterSegment", "InterSegmentLength", "RmlGuid", "WindingMethodGuid", "SpoolTypeGuid", "EnableLubrication", "HasEmbroideryFile", "EmbroideryFileData", "EmbroideryFileName", "EmbroideryJpeg", "ColorSpaceGuid", "NumberOfUnits", "Type", "Customer", "SpoolsDistribution", "NumberOfHeads", "SampleUnitsOrMeters", "LengthPercentageFactor", "Segments" }, null, null, null)
+ }));
+ }
+ #endregion
+
+ }
+ #region Messages
+ public sealed partial class JobFile : pb::IMessage<JobFile> {
+ private static readonly pb::MessageParser<JobFile> _parser = new pb::MessageParser<JobFile>(() => new JobFile());
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public static pb::MessageParser<JobFile> Parser { get { return _parser; } }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public static pbr::MessageDescriptor Descriptor {
+ get { return global::Tango.PMR.Exports.JobFileReflection.Descriptor.MessageTypes[0]; }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ pbr::MessageDescriptor pb::IMessage.Descriptor {
+ get { return Descriptor; }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public JobFile() {
+ OnConstruction();
+ }
+
+ partial void OnConstruction();
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public JobFile(JobFile other) : this() {
+ name_ = other.name_;
+ description_ = other.description_;
+ enableInterSegment_ = other.enableInterSegment_;
+ interSegmentLength_ = other.interSegmentLength_;
+ rmlGuid_ = other.rmlGuid_;
+ windingMethodGuid_ = other.windingMethodGuid_;
+ spoolTypeGuid_ = other.spoolTypeGuid_;
+ enableLubrication_ = other.enableLubrication_;
+ hasEmbroideryFile_ = other.hasEmbroideryFile_;
+ embroideryFileData_ = other.embroideryFileData_;
+ embroideryFileName_ = other.embroideryFileName_;
+ embroideryJpeg_ = other.embroideryJpeg_;
+ colorSpaceGuid_ = other.colorSpaceGuid_;
+ numberOfUnits_ = other.numberOfUnits_;
+ type_ = other.type_;
+ customer_ = other.customer_;
+ spoolsDistribution_ = other.spoolsDistribution_;
+ numberOfHeads_ = other.numberOfHeads_;
+ sampleUnitsOrMeters_ = other.sampleUnitsOrMeters_;
+ lengthPercentageFactor_ = other.lengthPercentageFactor_;
+ segments_ = other.segments_.Clone();
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public JobFile Clone() {
+ return new JobFile(this);
+ }
+
+ /// <summary>Field number for the "Name" field.</summary>
+ public const int NameFieldNumber = 1;
+ private string name_ = "";
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public string Name {
+ get { return name_; }
+ set {
+ name_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
+ }
+ }
+
+ /// <summary>Field number for the "Description" field.</summary>
+ public const int DescriptionFieldNumber = 2;
+ private string description_ = "";
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public string Description {
+ get { return description_; }
+ set {
+ description_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
+ }
+ }
+
+ /// <summary>Field number for the "EnableInterSegment" field.</summary>
+ public const int EnableInterSegmentFieldNumber = 3;
+ private bool enableInterSegment_;
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public bool EnableInterSegment {
+ get { return enableInterSegment_; }
+ set {
+ enableInterSegment_ = value;
+ }
+ }
+
+ /// <summary>Field number for the "InterSegmentLength" field.</summary>
+ public const int InterSegmentLengthFieldNumber = 4;
+ private double interSegmentLength_;
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public double InterSegmentLength {
+ get { return interSegmentLength_; }
+ set {
+ interSegmentLength_ = value;
+ }
+ }
+
+ /// <summary>Field number for the "RmlGuid" field.</summary>
+ public const int RmlGuidFieldNumber = 5;
+ private string rmlGuid_ = "";
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public string RmlGuid {
+ get { return rmlGuid_; }
+ set {
+ rmlGuid_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
+ }
+ }
+
+ /// <summary>Field number for the "WindingMethodGuid" field.</summary>
+ public const int WindingMethodGuidFieldNumber = 6;
+ private string windingMethodGuid_ = "";
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public string WindingMethodGuid {
+ get { return windingMethodGuid_; }
+ set {
+ windingMethodGuid_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
+ }
+ }
+
+ /// <summary>Field number for the "SpoolTypeGuid" field.</summary>
+ public const int SpoolTypeGuidFieldNumber = 7;
+ private string spoolTypeGuid_ = "";
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public string SpoolTypeGuid {
+ get { return spoolTypeGuid_; }
+ set {
+ spoolTypeGuid_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
+ }
+ }
+
+ /// <summary>Field number for the "EnableLubrication" field.</summary>
+ public const int EnableLubricationFieldNumber = 8;
+ private bool enableLubrication_;
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public bool EnableLubrication {
+ get { return enableLubrication_; }
+ set {
+ enableLubrication_ = value;
+ }
+ }
+
+ /// <summary>Field number for the "HasEmbroideryFile" field.</summary>
+ public const int HasEmbroideryFileFieldNumber = 9;
+ private bool hasEmbroideryFile_;
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public bool HasEmbroideryFile {
+ get { return hasEmbroideryFile_; }
+ set {
+ hasEmbroideryFile_ = value;
+ }
+ }
+
+ /// <summary>Field number for the "EmbroideryFileData" field.</summary>
+ public const int EmbroideryFileDataFieldNumber = 10;
+ private pb::ByteString embroideryFileData_ = pb::ByteString.Empty;
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public pb::ByteString EmbroideryFileData {
+ get { return embroideryFileData_; }
+ set {
+ embroideryFileData_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
+ }
+ }
+
+ /// <summary>Field number for the "EmbroideryFileName" field.</summary>
+ public const int EmbroideryFileNameFieldNumber = 11;
+ private string embroideryFileName_ = "";
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public string EmbroideryFileName {
+ get { return embroideryFileName_; }
+ set {
+ embroideryFileName_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
+ }
+ }
+
+ /// <summary>Field number for the "EmbroideryJpeg" field.</summary>
+ public const int EmbroideryJpegFieldNumber = 12;
+ private pb::ByteString embroideryJpeg_ = pb::ByteString.Empty;
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public pb::ByteString EmbroideryJpeg {
+ get { return embroideryJpeg_; }
+ set {
+ embroideryJpeg_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
+ }
+ }
+
+ /// <summary>Field number for the "ColorSpaceGuid" field.</summary>
+ public const int ColorSpaceGuidFieldNumber = 13;
+ private string colorSpaceGuid_ = "";
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public string ColorSpaceGuid {
+ get { return colorSpaceGuid_; }
+ set {
+ colorSpaceGuid_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
+ }
+ }
+
+ /// <summary>Field number for the "NumberOfUnits" field.</summary>
+ public const int NumberOfUnitsFieldNumber = 14;
+ private int numberOfUnits_;
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public int NumberOfUnits {
+ get { return numberOfUnits_; }
+ set {
+ numberOfUnits_ = value;
+ }
+ }
+
+ /// <summary>Field number for the "Type" field.</summary>
+ public const int TypeFieldNumber = 15;
+ private int type_;
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public int Type {
+ get { return type_; }
+ set {
+ type_ = value;
+ }
+ }
+
+ /// <summary>Field number for the "Customer" field.</summary>
+ public const int CustomerFieldNumber = 16;
+ private string customer_ = "";
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public string Customer {
+ get { return customer_; }
+ set {
+ customer_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
+ }
+ }
+
+ /// <summary>Field number for the "SpoolsDistribution" field.</summary>
+ public const int SpoolsDistributionFieldNumber = 17;
+ private int spoolsDistribution_;
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public int SpoolsDistribution {
+ get { return spoolsDistribution_; }
+ set {
+ spoolsDistribution_ = value;
+ }
+ }
+
+ /// <summary>Field number for the "NumberOfHeads" field.</summary>
+ public const int NumberOfHeadsFieldNumber = 18;
+ private int numberOfHeads_;
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public int NumberOfHeads {
+ get { return numberOfHeads_; }
+ set {
+ numberOfHeads_ = value;
+ }
+ }
+
+ /// <summary>Field number for the "SampleUnitsOrMeters" field.</summary>
+ public const int SampleUnitsOrMetersFieldNumber = 19;
+ private int sampleUnitsOrMeters_;
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public int SampleUnitsOrMeters {
+ get { return sampleUnitsOrMeters_; }
+ set {
+ sampleUnitsOrMeters_ = value;
+ }
+ }
+
+ /// <summary>Field number for the "LengthPercentageFactor" field.</summary>
+ public const int LengthPercentageFactorFieldNumber = 20;
+ private double lengthPercentageFactor_;
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public double LengthPercentageFactor {
+ get { return lengthPercentageFactor_; }
+ set {
+ lengthPercentageFactor_ = value;
+ }
+ }
+
+ /// <summary>Field number for the "Segments" field.</summary>
+ public const int SegmentsFieldNumber = 21;
+ private static readonly pb::FieldCodec<global::Tango.PMR.Exports.JobFileSegment> _repeated_segments_codec
+ = pb::FieldCodec.ForMessage(170, global::Tango.PMR.Exports.JobFileSegment.Parser);
+ private readonly pbc::RepeatedField<global::Tango.PMR.Exports.JobFileSegment> segments_ = new pbc::RepeatedField<global::Tango.PMR.Exports.JobFileSegment>();
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public pbc::RepeatedField<global::Tango.PMR.Exports.JobFileSegment> Segments {
+ get { return segments_; }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public override bool Equals(object other) {
+ return Equals(other as JobFile);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public bool Equals(JobFile other) {
+ if (ReferenceEquals(other, null)) {
+ return false;
+ }
+ if (ReferenceEquals(other, this)) {
+ return true;
+ }
+ if (Name != other.Name) return false;
+ if (Description != other.Description) return false;
+ if (EnableInterSegment != other.EnableInterSegment) return false;
+ if (InterSegmentLength != other.InterSegmentLength) return false;
+ if (RmlGuid != other.RmlGuid) return false;
+ if (WindingMethodGuid != other.WindingMethodGuid) return false;
+ if (SpoolTypeGuid != other.SpoolTypeGuid) return false;
+ if (EnableLubrication != other.EnableLubrication) return false;
+ if (HasEmbroideryFile != other.HasEmbroideryFile) return false;
+ if (EmbroideryFileData != other.EmbroideryFileData) return false;
+ if (EmbroideryFileName != other.EmbroideryFileName) return false;
+ if (EmbroideryJpeg != other.EmbroideryJpeg) return false;
+ if (ColorSpaceGuid != other.ColorSpaceGuid) return false;
+ if (NumberOfUnits != other.NumberOfUnits) return false;
+ if (Type != other.Type) return false;
+ if (Customer != other.Customer) return false;
+ if (SpoolsDistribution != other.SpoolsDistribution) return false;
+ if (NumberOfHeads != other.NumberOfHeads) return false;
+ if (SampleUnitsOrMeters != other.SampleUnitsOrMeters) return false;
+ if (LengthPercentageFactor != other.LengthPercentageFactor) return false;
+ if(!segments_.Equals(other.segments_)) return false;
+ return true;
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public override int GetHashCode() {
+ int hash = 1;
+ if (Name.Length != 0) hash ^= Name.GetHashCode();
+ if (Description.Length != 0) hash ^= Description.GetHashCode();
+ if (EnableInterSegment != false) hash ^= EnableInterSegment.GetHashCode();
+ if (InterSegmentLength != 0D) hash ^= InterSegmentLength.GetHashCode();
+ if (RmlGuid.Length != 0) hash ^= RmlGuid.GetHashCode();
+ if (WindingMethodGuid.Length != 0) hash ^= WindingMethodGuid.GetHashCode();
+ if (SpoolTypeGuid.Length != 0) hash ^= SpoolTypeGuid.GetHashCode();
+ if (EnableLubrication != false) hash ^= EnableLubrication.GetHashCode();
+ if (HasEmbroideryFile != false) hash ^= HasEmbroideryFile.GetHashCode();
+ if (EmbroideryFileData.Length != 0) hash ^= EmbroideryFileData.GetHashCode();
+ if (EmbroideryFileName.Length != 0) hash ^= EmbroideryFileName.GetHashCode();
+ if (EmbroideryJpeg.Length != 0) hash ^= EmbroideryJpeg.GetHashCode();
+ if (ColorSpaceGuid.Length != 0) hash ^= ColorSpaceGuid.GetHashCode();
+ if (NumberOfUnits != 0) hash ^= NumberOfUnits.GetHashCode();
+ if (Type != 0) hash ^= Type.GetHashCode();
+ if (Customer.Length != 0) hash ^= Customer.GetHashCode();
+ if (SpoolsDistribution != 0) hash ^= SpoolsDistribution.GetHashCode();
+ if (NumberOfHeads != 0) hash ^= NumberOfHeads.GetHashCode();
+ if (SampleUnitsOrMeters != 0) hash ^= SampleUnitsOrMeters.GetHashCode();
+ if (LengthPercentageFactor != 0D) hash ^= LengthPercentageFactor.GetHashCode();
+ hash ^= segments_.GetHashCode();
+ return hash;
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public override string ToString() {
+ return pb::JsonFormatter.ToDiagnosticString(this);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public void WriteTo(pb::CodedOutputStream output) {
+ if (Name.Length != 0) {
+ output.WriteRawTag(10);
+ output.WriteString(Name);
+ }
+ if (Description.Length != 0) {
+ output.WriteRawTag(18);
+ output.WriteString(Description);
+ }
+ if (EnableInterSegment != false) {
+ output.WriteRawTag(24);
+ output.WriteBool(EnableInterSegment);
+ }
+ if (InterSegmentLength != 0D) {
+ output.WriteRawTag(33);
+ output.WriteDouble(InterSegmentLength);
+ }
+ if (RmlGuid.Length != 0) {
+ output.WriteRawTag(42);
+ output.WriteString(RmlGuid);
+ }
+ if (WindingMethodGuid.Length != 0) {
+ output.WriteRawTag(50);
+ output.WriteString(WindingMethodGuid);
+ }
+ if (SpoolTypeGuid.Length != 0) {
+ output.WriteRawTag(58);
+ output.WriteString(SpoolTypeGuid);
+ }
+ if (EnableLubrication != false) {
+ output.WriteRawTag(64);
+ output.WriteBool(EnableLubrication);
+ }
+ if (HasEmbroideryFile != false) {
+ output.WriteRawTag(72);
+ output.WriteBool(HasEmbroideryFile);
+ }
+ if (EmbroideryFileData.Length != 0) {
+ output.WriteRawTag(82);
+ output.WriteBytes(EmbroideryFileData);
+ }
+ if (EmbroideryFileName.Length != 0) {
+ output.WriteRawTag(90);
+ output.WriteString(EmbroideryFileName);
+ }
+ if (EmbroideryJpeg.Length != 0) {
+ output.WriteRawTag(98);
+ output.WriteBytes(EmbroideryJpeg);
+ }
+ if (ColorSpaceGuid.Length != 0) {
+ output.WriteRawTag(106);
+ output.WriteString(ColorSpaceGuid);
+ }
+ if (NumberOfUnits != 0) {
+ output.WriteRawTag(112);
+ output.WriteInt32(NumberOfUnits);
+ }
+ if (Type != 0) {
+ output.WriteRawTag(120);
+ output.WriteInt32(Type);
+ }
+ if (Customer.Length != 0) {
+ output.WriteRawTag(130, 1);
+ output.WriteString(Customer);
+ }
+ if (SpoolsDistribution != 0) {
+ output.WriteRawTag(136, 1);
+ output.WriteInt32(SpoolsDistribution);
+ }
+ if (NumberOfHeads != 0) {
+ output.WriteRawTag(144, 1);
+ output.WriteInt32(NumberOfHeads);
+ }
+ if (SampleUnitsOrMeters != 0) {
+ output.WriteRawTag(152, 1);
+ output.WriteInt32(SampleUnitsOrMeters);
+ }
+ if (LengthPercentageFactor != 0D) {
+ output.WriteRawTag(161, 1);
+ output.WriteDouble(LengthPercentageFactor);
+ }
+ segments_.WriteTo(output, _repeated_segments_codec);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public int CalculateSize() {
+ int size = 0;
+ if (Name.Length != 0) {
+ size += 1 + pb::CodedOutputStream.ComputeStringSize(Name);
+ }
+ if (Description.Length != 0) {
+ size += 1 + pb::CodedOutputStream.ComputeStringSize(Description);
+ }
+ if (EnableInterSegment != false) {
+ size += 1 + 1;
+ }
+ if (InterSegmentLength != 0D) {
+ size += 1 + 8;
+ }
+ if (RmlGuid.Length != 0) {
+ size += 1 + pb::CodedOutputStream.ComputeStringSize(RmlGuid);
+ }
+ if (WindingMethodGuid.Length != 0) {
+ size += 1 + pb::CodedOutputStream.ComputeStringSize(WindingMethodGuid);
+ }
+ if (SpoolTypeGuid.Length != 0) {
+ size += 1 + pb::CodedOutputStream.ComputeStringSize(SpoolTypeGuid);
+ }
+ if (EnableLubrication != false) {
+ size += 1 + 1;
+ }
+ if (HasEmbroideryFile != false) {
+ size += 1 + 1;
+ }
+ if (EmbroideryFileData.Length != 0) {
+ size += 1 + pb::CodedOutputStream.ComputeBytesSize(EmbroideryFileData);
+ }
+ if (EmbroideryFileName.Length != 0) {
+ size += 1 + pb::CodedOutputStream.ComputeStringSize(EmbroideryFileName);
+ }
+ if (EmbroideryJpeg.Length != 0) {
+ size += 1 + pb::CodedOutputStream.ComputeBytesSize(EmbroideryJpeg);
+ }
+ if (ColorSpaceGuid.Length != 0) {
+ size += 1 + pb::CodedOutputStream.ComputeStringSize(ColorSpaceGuid);
+ }
+ if (NumberOfUnits != 0) {
+ size += 1 + pb::CodedOutputStream.ComputeInt32Size(NumberOfUnits);
+ }
+ if (Type != 0) {
+ size += 1 + pb::CodedOutputStream.ComputeInt32Size(Type);
+ }
+ if (Customer.Length != 0) {
+ size += 2 + pb::CodedOutputStream.ComputeStringSize(Customer);
+ }
+ if (SpoolsDistribution != 0) {
+ size += 2 + pb::CodedOutputStream.ComputeInt32Size(SpoolsDistribution);
+ }
+ if (NumberOfHeads != 0) {
+ size += 2 + pb::CodedOutputStream.ComputeInt32Size(NumberOfHeads);
+ }
+ if (SampleUnitsOrMeters != 0) {
+ size += 2 + pb::CodedOutputStream.ComputeInt32Size(SampleUnitsOrMeters);
+ }
+ if (LengthPercentageFactor != 0D) {
+ size += 2 + 8;
+ }
+ size += segments_.CalculateSize(_repeated_segments_codec);
+ return size;
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public void MergeFrom(JobFile other) {
+ if (other == null) {
+ return;
+ }
+ if (other.Name.Length != 0) {
+ Name = other.Name;
+ }
+ if (other.Description.Length != 0) {
+ Description = other.Description;
+ }
+ if (other.EnableInterSegment != false) {
+ EnableInterSegment = other.EnableInterSegment;
+ }
+ if (other.InterSegmentLength != 0D) {
+ InterSegmentLength = other.InterSegmentLength;
+ }
+ if (other.RmlGuid.Length != 0) {
+ RmlGuid = other.RmlGuid;
+ }
+ if (other.WindingMethodGuid.Length != 0) {
+ WindingMethodGuid = other.WindingMethodGuid;
+ }
+ if (other.SpoolTypeGuid.Length != 0) {
+ SpoolTypeGuid = other.SpoolTypeGuid;
+ }
+ if (other.EnableLubrication != false) {
+ EnableLubrication = other.EnableLubrication;
+ }
+ if (other.HasEmbroideryFile != false) {
+ HasEmbroideryFile = other.HasEmbroideryFile;
+ }
+ if (other.EmbroideryFileData.Length != 0) {
+ EmbroideryFileData = other.EmbroideryFileData;
+ }
+ if (other.EmbroideryFileName.Length != 0) {
+ EmbroideryFileName = other.EmbroideryFileName;
+ }
+ if (other.EmbroideryJpeg.Length != 0) {
+ EmbroideryJpeg = other.EmbroideryJpeg;
+ }
+ if (other.ColorSpaceGuid.Length != 0) {
+ ColorSpaceGuid = other.ColorSpaceGuid;
+ }
+ if (other.NumberOfUnits != 0) {
+ NumberOfUnits = other.NumberOfUnits;
+ }
+ if (other.Type != 0) {
+ Type = other.Type;
+ }
+ if (other.Customer.Length != 0) {
+ Customer = other.Customer;
+ }
+ if (other.SpoolsDistribution != 0) {
+ SpoolsDistribution = other.SpoolsDistribution;
+ }
+ if (other.NumberOfHeads != 0) {
+ NumberOfHeads = other.NumberOfHeads;
+ }
+ if (other.SampleUnitsOrMeters != 0) {
+ SampleUnitsOrMeters = other.SampleUnitsOrMeters;
+ }
+ if (other.LengthPercentageFactor != 0D) {
+ LengthPercentageFactor = other.LengthPercentageFactor;
+ }
+ segments_.Add(other.segments_);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public void MergeFrom(pb::CodedInputStream input) {
+ uint tag;
+ while ((tag = input.ReadTag()) != 0) {
+ switch(tag) {
+ default:
+ input.SkipLastField();
+ break;
+ case 10: {
+ Name = input.ReadString();
+ break;
+ }
+ case 18: {
+ Description = input.ReadString();
+ break;
+ }
+ case 24: {
+ EnableInterSegment = input.ReadBool();
+ break;
+ }
+ case 33: {
+ InterSegmentLength = input.ReadDouble();
+ break;
+ }
+ case 42: {
+ RmlGuid = input.ReadString();
+ break;
+ }
+ case 50: {
+ WindingMethodGuid = input.ReadString();
+ break;
+ }
+ case 58: {
+ SpoolTypeGuid = input.ReadString();
+ break;
+ }
+ case 64: {
+ EnableLubrication = input.ReadBool();
+ break;
+ }
+ case 72: {
+ HasEmbroideryFile = input.ReadBool();
+ break;
+ }
+ case 82: {
+ EmbroideryFileData = input.ReadBytes();
+ break;
+ }
+ case 90: {
+ EmbroideryFileName = input.ReadString();
+ break;
+ }
+ case 98: {
+ EmbroideryJpeg = input.ReadBytes();
+ break;
+ }
+ case 106: {
+ ColorSpaceGuid = input.ReadString();
+ break;
+ }
+ case 112: {
+ NumberOfUnits = input.ReadInt32();
+ break;
+ }
+ case 120: {
+ Type = input.ReadInt32();
+ break;
+ }
+ case 130: {
+ Customer = input.ReadString();
+ break;
+ }
+ case 136: {
+ SpoolsDistribution = input.ReadInt32();
+ break;
+ }
+ case 144: {
+ NumberOfHeads = input.ReadInt32();
+ break;
+ }
+ case 152: {
+ SampleUnitsOrMeters = input.ReadInt32();
+ break;
+ }
+ case 161: {
+ LengthPercentageFactor = input.ReadDouble();
+ break;
+ }
+ case 170: {
+ segments_.AddEntriesFrom(input, _repeated_segments_codec);
+ break;
+ }
+ }
+ }
+ }
+
+ }
+
+ #endregion
+
+}
+
+#endregion Designer generated code
diff --git a/Software/Visual_Studio/Tango.PMR/Exports/JobFileBrushStop.cs b/Software/Visual_Studio/Tango.PMR/Exports/JobFileBrushStop.cs
new file mode 100644
index 000000000..5fa9a2eab
--- /dev/null
+++ b/Software/Visual_Studio/Tango.PMR/Exports/JobFileBrushStop.cs
@@ -0,0 +1,754 @@
+// Generated by the protocol buffer compiler. DO NOT EDIT!
+// source: JobFileBrushStop.proto
+#pragma warning disable 1591, 0612, 3021
+#region Designer generated code
+
+using pb = global::Google.Protobuf;
+using pbc = global::Google.Protobuf.Collections;
+using pbr = global::Google.Protobuf.Reflection;
+using scg = global::System.Collections.Generic;
+namespace Tango.PMR.Exports {
+
+ /// <summary>Holder for reflection information generated from JobFileBrushStop.proto</summary>
+ public static partial class JobFileBrushStopReflection {
+
+ #region Descriptor
+ /// <summary>File descriptor for JobFileBrushStop.proto</summary>
+ public static pbr::FileDescriptor Descriptor {
+ get { return descriptor; }
+ }
+ private static pbr::FileDescriptor descriptor;
+
+ static JobFileBrushStopReflection() {
+ byte[] descriptorData = global::System.Convert.FromBase64String(
+ string.Concat(
+ "ChZKb2JGaWxlQnJ1c2hTdG9wLnByb3RvEhFUYW5nby5QTVIuRXhwb3J0cyLX",
+ "AgoQSm9iRmlsZUJydXNoU3RvcBIWCg5Db2xvclNwYWNlR3VpZBgBIAEoCRIV",
+ "Cg1PZmZzZXRQZXJjZW50GAIgASgBEgwKBEN5YW4YAyABKAESDwoHTWFnZW50",
+ "YRgEIAEoARIOCgZZZWxsb3cYBSABKAESDQoFQmxhY2sYBiABKAESCwoDUmVk",
+ "GAcgASgFEg0KBUdyZWVuGAggASgFEgwKBEJsdWUYCSABKAUSCQoBTBgKIAEo",
+ "ARIJCgFBGAsgASgBEgkKAUIYDCABKAESCgoCVjAYDSABKAESCgoCVjEYDiAB",
+ "KAESCgoCVjIYDyABKAESCgoCVjMYECABKAESCgoCVjQYESABKAESCgoCVjUY",
+ "EiABKAESCgoCVjYYEyABKAESCgoCVjcYFCABKAESEQoJQ29ycmVjdGVkGBUg",
+ "ASgIEhgKEENvbG9yQ2F0YWxvZ0d1aWQYFiABKAlCHQobY29tLnR3aW5lLnRh",
+ "bmdvLnBtci5leHBvcnRzYgZwcm90bzM="));
+ descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData,
+ new pbr::FileDescriptor[] { },
+ new pbr::GeneratedClrTypeInfo(null, new pbr::GeneratedClrTypeInfo[] {
+ new pbr::GeneratedClrTypeInfo(typeof(global::Tango.PMR.Exports.JobFileBrushStop), global::Tango.PMR.Exports.JobFileBrushStop.Parser, new[]{ "ColorSpaceGuid", "OffsetPercent", "Cyan", "Magenta", "Yellow", "Black", "Red", "Green", "Blue", "L", "A", "B", "V0", "V1", "V2", "V3", "V4", "V5", "V6", "V7", "Corrected", "ColorCatalogGuid" }, null, null, null)
+ }));
+ }
+ #endregion
+
+ }
+ #region Messages
+ public sealed partial class JobFileBrushStop : pb::IMessage<JobFileBrushStop> {
+ private static readonly pb::MessageParser<JobFileBrushStop> _parser = new pb::MessageParser<JobFileBrushStop>(() => new JobFileBrushStop());
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public static pb::MessageParser<JobFileBrushStop> Parser { get { return _parser; } }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public static pbr::MessageDescriptor Descriptor {
+ get { return global::Tango.PMR.Exports.JobFileBrushStopReflection.Descriptor.MessageTypes[0]; }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ pbr::MessageDescriptor pb::IMessage.Descriptor {
+ get { return Descriptor; }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public JobFileBrushStop() {
+ OnConstruction();
+ }
+
+ partial void OnConstruction();
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public JobFileBrushStop(JobFileBrushStop other) : this() {
+ colorSpaceGuid_ = other.colorSpaceGuid_;
+ offsetPercent_ = other.offsetPercent_;
+ cyan_ = other.cyan_;
+ magenta_ = other.magenta_;
+ yellow_ = other.yellow_;
+ black_ = other.black_;
+ red_ = other.red_;
+ green_ = other.green_;
+ blue_ = other.blue_;
+ l_ = other.l_;
+ a_ = other.a_;
+ b_ = other.b_;
+ v0_ = other.v0_;
+ v1_ = other.v1_;
+ v2_ = other.v2_;
+ v3_ = other.v3_;
+ v4_ = other.v4_;
+ v5_ = other.v5_;
+ v6_ = other.v6_;
+ v7_ = other.v7_;
+ corrected_ = other.corrected_;
+ colorCatalogGuid_ = other.colorCatalogGuid_;
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public JobFileBrushStop Clone() {
+ return new JobFileBrushStop(this);
+ }
+
+ /// <summary>Field number for the "ColorSpaceGuid" field.</summary>
+ public const int ColorSpaceGuidFieldNumber = 1;
+ private string colorSpaceGuid_ = "";
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public string ColorSpaceGuid {
+ get { return colorSpaceGuid_; }
+ set {
+ colorSpaceGuid_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
+ }
+ }
+
+ /// <summary>Field number for the "OffsetPercent" field.</summary>
+ public const int OffsetPercentFieldNumber = 2;
+ private double offsetPercent_;
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public double OffsetPercent {
+ get { return offsetPercent_; }
+ set {
+ offsetPercent_ = value;
+ }
+ }
+
+ /// <summary>Field number for the "Cyan" field.</summary>
+ public const int CyanFieldNumber = 3;
+ private double cyan_;
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public double Cyan {
+ get { return cyan_; }
+ set {
+ cyan_ = value;
+ }
+ }
+
+ /// <summary>Field number for the "Magenta" field.</summary>
+ public const int MagentaFieldNumber = 4;
+ private double magenta_;
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public double Magenta {
+ get { return magenta_; }
+ set {
+ magenta_ = value;
+ }
+ }
+
+ /// <summary>Field number for the "Yellow" field.</summary>
+ public const int YellowFieldNumber = 5;
+ private double yellow_;
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public double Yellow {
+ get { return yellow_; }
+ set {
+ yellow_ = value;
+ }
+ }
+
+ /// <summary>Field number for the "Black" field.</summary>
+ public const int BlackFieldNumber = 6;
+ private double black_;
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public double Black {
+ get { return black_; }
+ set {
+ black_ = value;
+ }
+ }
+
+ /// <summary>Field number for the "Red" field.</summary>
+ public const int RedFieldNumber = 7;
+ private int red_;
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public int Red {
+ get { return red_; }
+ set {
+ red_ = value;
+ }
+ }
+
+ /// <summary>Field number for the "Green" field.</summary>
+ public const int GreenFieldNumber = 8;
+ private int green_;
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public int Green {
+ get { return green_; }
+ set {
+ green_ = value;
+ }
+ }
+
+ /// <summary>Field number for the "Blue" field.</summary>
+ public const int BlueFieldNumber = 9;
+ private int blue_;
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public int Blue {
+ get { return blue_; }
+ set {
+ blue_ = value;
+ }
+ }
+
+ /// <summary>Field number for the "L" field.</summary>
+ public const int LFieldNumber = 10;
+ private double l_;
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public double L {
+ get { return l_; }
+ set {
+ l_ = value;
+ }
+ }
+
+ /// <summary>Field number for the "A" field.</summary>
+ public const int AFieldNumber = 11;
+ private double a_;
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public double A {
+ get { return a_; }
+ set {
+ a_ = value;
+ }
+ }
+
+ /// <summary>Field number for the "B" field.</summary>
+ public const int BFieldNumber = 12;
+ private double b_;
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public double B {
+ get { return b_; }
+ set {
+ b_ = value;
+ }
+ }
+
+ /// <summary>Field number for the "V0" field.</summary>
+ public const int V0FieldNumber = 13;
+ private double v0_;
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public double V0 {
+ get { return v0_; }
+ set {
+ v0_ = value;
+ }
+ }
+
+ /// <summary>Field number for the "V1" field.</summary>
+ public const int V1FieldNumber = 14;
+ private double v1_;
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public double V1 {
+ get { return v1_; }
+ set {
+ v1_ = value;
+ }
+ }
+
+ /// <summary>Field number for the "V2" field.</summary>
+ public const int V2FieldNumber = 15;
+ private double v2_;
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public double V2 {
+ get { return v2_; }
+ set {
+ v2_ = value;
+ }
+ }
+
+ /// <summary>Field number for the "V3" field.</summary>
+ public const int V3FieldNumber = 16;
+ private double v3_;
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public double V3 {
+ get { return v3_; }
+ set {
+ v3_ = value;
+ }
+ }
+
+ /// <summary>Field number for the "V4" field.</summary>
+ public const int V4FieldNumber = 17;
+ private double v4_;
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public double V4 {
+ get { return v4_; }
+ set {
+ v4_ = value;
+ }
+ }
+
+ /// <summary>Field number for the "V5" field.</summary>
+ public const int V5FieldNumber = 18;
+ private double v5_;
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public double V5 {
+ get { return v5_; }
+ set {
+ v5_ = value;
+ }
+ }
+
+ /// <summary>Field number for the "V6" field.</summary>
+ public const int V6FieldNumber = 19;
+ private double v6_;
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public double V6 {
+ get { return v6_; }
+ set {
+ v6_ = value;
+ }
+ }
+
+ /// <summary>Field number for the "V7" field.</summary>
+ public const int V7FieldNumber = 20;
+ private double v7_;
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public double V7 {
+ get { return v7_; }
+ set {
+ v7_ = value;
+ }
+ }
+
+ /// <summary>Field number for the "Corrected" field.</summary>
+ public const int CorrectedFieldNumber = 21;
+ private bool corrected_;
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public bool Corrected {
+ get { return corrected_; }
+ set {
+ corrected_ = value;
+ }
+ }
+
+ /// <summary>Field number for the "ColorCatalogGuid" field.</summary>
+ public const int ColorCatalogGuidFieldNumber = 22;
+ private string colorCatalogGuid_ = "";
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public string ColorCatalogGuid {
+ get { return colorCatalogGuid_; }
+ set {
+ colorCatalogGuid_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
+ }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public override bool Equals(object other) {
+ return Equals(other as JobFileBrushStop);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public bool Equals(JobFileBrushStop other) {
+ if (ReferenceEquals(other, null)) {
+ return false;
+ }
+ if (ReferenceEquals(other, this)) {
+ return true;
+ }
+ if (ColorSpaceGuid != other.ColorSpaceGuid) return false;
+ if (OffsetPercent != other.OffsetPercent) return false;
+ if (Cyan != other.Cyan) return false;
+ if (Magenta != other.Magenta) return false;
+ if (Yellow != other.Yellow) return false;
+ if (Black != other.Black) return false;
+ if (Red != other.Red) return false;
+ if (Green != other.Green) return false;
+ if (Blue != other.Blue) return false;
+ if (L != other.L) return false;
+ if (A != other.A) return false;
+ if (B != other.B) return false;
+ if (V0 != other.V0) return false;
+ if (V1 != other.V1) return false;
+ if (V2 != other.V2) return false;
+ if (V3 != other.V3) return false;
+ if (V4 != other.V4) return false;
+ if (V5 != other.V5) return false;
+ if (V6 != other.V6) return false;
+ if (V7 != other.V7) return false;
+ if (Corrected != other.Corrected) return false;
+ if (ColorCatalogGuid != other.ColorCatalogGuid) return false;
+ return true;
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public override int GetHashCode() {
+ int hash = 1;
+ if (ColorSpaceGuid.Length != 0) hash ^= ColorSpaceGuid.GetHashCode();
+ if (OffsetPercent != 0D) hash ^= OffsetPercent.GetHashCode();
+ if (Cyan != 0D) hash ^= Cyan.GetHashCode();
+ if (Magenta != 0D) hash ^= Magenta.GetHashCode();
+ if (Yellow != 0D) hash ^= Yellow.GetHashCode();
+ if (Black != 0D) hash ^= Black.GetHashCode();
+ if (Red != 0) hash ^= Red.GetHashCode();
+ if (Green != 0) hash ^= Green.GetHashCode();
+ if (Blue != 0) hash ^= Blue.GetHashCode();
+ if (L != 0D) hash ^= L.GetHashCode();
+ if (A != 0D) hash ^= A.GetHashCode();
+ if (B != 0D) hash ^= B.GetHashCode();
+ if (V0 != 0D) hash ^= V0.GetHashCode();
+ if (V1 != 0D) hash ^= V1.GetHashCode();
+ if (V2 != 0D) hash ^= V2.GetHashCode();
+ if (V3 != 0D) hash ^= V3.GetHashCode();
+ if (V4 != 0D) hash ^= V4.GetHashCode();
+ if (V5 != 0D) hash ^= V5.GetHashCode();
+ if (V6 != 0D) hash ^= V6.GetHashCode();
+ if (V7 != 0D) hash ^= V7.GetHashCode();
+ if (Corrected != false) hash ^= Corrected.GetHashCode();
+ if (ColorCatalogGuid.Length != 0) hash ^= ColorCatalogGuid.GetHashCode();
+ return hash;
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public override string ToString() {
+ return pb::JsonFormatter.ToDiagnosticString(this);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public void WriteTo(pb::CodedOutputStream output) {
+ if (ColorSpaceGuid.Length != 0) {
+ output.WriteRawTag(10);
+ output.WriteString(ColorSpaceGuid);
+ }
+ if (OffsetPercent != 0D) {
+ output.WriteRawTag(17);
+ output.WriteDouble(OffsetPercent);
+ }
+ if (Cyan != 0D) {
+ output.WriteRawTag(25);
+ output.WriteDouble(Cyan);
+ }
+ if (Magenta != 0D) {
+ output.WriteRawTag(33);
+ output.WriteDouble(Magenta);
+ }
+ if (Yellow != 0D) {
+ output.WriteRawTag(41);
+ output.WriteDouble(Yellow);
+ }
+ if (Black != 0D) {
+ output.WriteRawTag(49);
+ output.WriteDouble(Black);
+ }
+ if (Red != 0) {
+ output.WriteRawTag(56);
+ output.WriteInt32(Red);
+ }
+ if (Green != 0) {
+ output.WriteRawTag(64);
+ output.WriteInt32(Green);
+ }
+ if (Blue != 0) {
+ output.WriteRawTag(72);
+ output.WriteInt32(Blue);
+ }
+ if (L != 0D) {
+ output.WriteRawTag(81);
+ output.WriteDouble(L);
+ }
+ if (A != 0D) {
+ output.WriteRawTag(89);
+ output.WriteDouble(A);
+ }
+ if (B != 0D) {
+ output.WriteRawTag(97);
+ output.WriteDouble(B);
+ }
+ if (V0 != 0D) {
+ output.WriteRawTag(105);
+ output.WriteDouble(V0);
+ }
+ if (V1 != 0D) {
+ output.WriteRawTag(113);
+ output.WriteDouble(V1);
+ }
+ if (V2 != 0D) {
+ output.WriteRawTag(121);
+ output.WriteDouble(V2);
+ }
+ if (V3 != 0D) {
+ output.WriteRawTag(129, 1);
+ output.WriteDouble(V3);
+ }
+ if (V4 != 0D) {
+ output.WriteRawTag(137, 1);
+ output.WriteDouble(V4);
+ }
+ if (V5 != 0D) {
+ output.WriteRawTag(145, 1);
+ output.WriteDouble(V5);
+ }
+ if (V6 != 0D) {
+ output.WriteRawTag(153, 1);
+ output.WriteDouble(V6);
+ }
+ if (V7 != 0D) {
+ output.WriteRawTag(161, 1);
+ output.WriteDouble(V7);
+ }
+ if (Corrected != false) {
+ output.WriteRawTag(168, 1);
+ output.WriteBool(Corrected);
+ }
+ if (ColorCatalogGuid.Length != 0) {
+ output.WriteRawTag(178, 1);
+ output.WriteString(ColorCatalogGuid);
+ }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public int CalculateSize() {
+ int size = 0;
+ if (ColorSpaceGuid.Length != 0) {
+ size += 1 + pb::CodedOutputStream.ComputeStringSize(ColorSpaceGuid);
+ }
+ if (OffsetPercent != 0D) {
+ size += 1 + 8;
+ }
+ if (Cyan != 0D) {
+ size += 1 + 8;
+ }
+ if (Magenta != 0D) {
+ size += 1 + 8;
+ }
+ if (Yellow != 0D) {
+ size += 1 + 8;
+ }
+ if (Black != 0D) {
+ size += 1 + 8;
+ }
+ if (Red != 0) {
+ size += 1 + pb::CodedOutputStream.ComputeInt32Size(Red);
+ }
+ if (Green != 0) {
+ size += 1 + pb::CodedOutputStream.ComputeInt32Size(Green);
+ }
+ if (Blue != 0) {
+ size += 1 + pb::CodedOutputStream.ComputeInt32Size(Blue);
+ }
+ if (L != 0D) {
+ size += 1 + 8;
+ }
+ if (A != 0D) {
+ size += 1 + 8;
+ }
+ if (B != 0D) {
+ size += 1 + 8;
+ }
+ if (V0 != 0D) {
+ size += 1 + 8;
+ }
+ if (V1 != 0D) {
+ size += 1 + 8;
+ }
+ if (V2 != 0D) {
+ size += 1 + 8;
+ }
+ if (V3 != 0D) {
+ size += 2 + 8;
+ }
+ if (V4 != 0D) {
+ size += 2 + 8;
+ }
+ if (V5 != 0D) {
+ size += 2 + 8;
+ }
+ if (V6 != 0D) {
+ size += 2 + 8;
+ }
+ if (V7 != 0D) {
+ size += 2 + 8;
+ }
+ if (Corrected != false) {
+ size += 2 + 1;
+ }
+ if (ColorCatalogGuid.Length != 0) {
+ size += 2 + pb::CodedOutputStream.ComputeStringSize(ColorCatalogGuid);
+ }
+ return size;
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public void MergeFrom(JobFileBrushStop other) {
+ if (other == null) {
+ return;
+ }
+ if (other.ColorSpaceGuid.Length != 0) {
+ ColorSpaceGuid = other.ColorSpaceGuid;
+ }
+ if (other.OffsetPercent != 0D) {
+ OffsetPercent = other.OffsetPercent;
+ }
+ if (other.Cyan != 0D) {
+ Cyan = other.Cyan;
+ }
+ if (other.Magenta != 0D) {
+ Magenta = other.Magenta;
+ }
+ if (other.Yellow != 0D) {
+ Yellow = other.Yellow;
+ }
+ if (other.Black != 0D) {
+ Black = other.Black;
+ }
+ if (other.Red != 0) {
+ Red = other.Red;
+ }
+ if (other.Green != 0) {
+ Green = other.Green;
+ }
+ if (other.Blue != 0) {
+ Blue = other.Blue;
+ }
+ if (other.L != 0D) {
+ L = other.L;
+ }
+ if (other.A != 0D) {
+ A = other.A;
+ }
+ if (other.B != 0D) {
+ B = other.B;
+ }
+ if (other.V0 != 0D) {
+ V0 = other.V0;
+ }
+ if (other.V1 != 0D) {
+ V1 = other.V1;
+ }
+ if (other.V2 != 0D) {
+ V2 = other.V2;
+ }
+ if (other.V3 != 0D) {
+ V3 = other.V3;
+ }
+ if (other.V4 != 0D) {
+ V4 = other.V4;
+ }
+ if (other.V5 != 0D) {
+ V5 = other.V5;
+ }
+ if (other.V6 != 0D) {
+ V6 = other.V6;
+ }
+ if (other.V7 != 0D) {
+ V7 = other.V7;
+ }
+ if (other.Corrected != false) {
+ Corrected = other.Corrected;
+ }
+ if (other.ColorCatalogGuid.Length != 0) {
+ ColorCatalogGuid = other.ColorCatalogGuid;
+ }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public void MergeFrom(pb::CodedInputStream input) {
+ uint tag;
+ while ((tag = input.ReadTag()) != 0) {
+ switch(tag) {
+ default:
+ input.SkipLastField();
+ break;
+ case 10: {
+ ColorSpaceGuid = input.ReadString();
+ break;
+ }
+ case 17: {
+ OffsetPercent = input.ReadDouble();
+ break;
+ }
+ case 25: {
+ Cyan = input.ReadDouble();
+ break;
+ }
+ case 33: {
+ Magenta = input.ReadDouble();
+ break;
+ }
+ case 41: {
+ Yellow = input.ReadDouble();
+ break;
+ }
+ case 49: {
+ Black = input.ReadDouble();
+ break;
+ }
+ case 56: {
+ Red = input.ReadInt32();
+ break;
+ }
+ case 64: {
+ Green = input.ReadInt32();
+ break;
+ }
+ case 72: {
+ Blue = input.ReadInt32();
+ break;
+ }
+ case 81: {
+ L = input.ReadDouble();
+ break;
+ }
+ case 89: {
+ A = input.ReadDouble();
+ break;
+ }
+ case 97: {
+ B = input.ReadDouble();
+ break;
+ }
+ case 105: {
+ V0 = input.ReadDouble();
+ break;
+ }
+ case 113: {
+ V1 = input.ReadDouble();
+ break;
+ }
+ case 121: {
+ V2 = input.ReadDouble();
+ break;
+ }
+ case 129: {
+ V3 = input.ReadDouble();
+ break;
+ }
+ case 137: {
+ V4 = input.ReadDouble();
+ break;
+ }
+ case 145: {
+ V5 = input.ReadDouble();
+ break;
+ }
+ case 153: {
+ V6 = input.ReadDouble();
+ break;
+ }
+ case 161: {
+ V7 = input.ReadDouble();
+ break;
+ }
+ case 168: {
+ Corrected = input.ReadBool();
+ break;
+ }
+ case 178: {
+ ColorCatalogGuid = input.ReadString();
+ break;
+ }
+ }
+ }
+ }
+
+ }
+
+ #endregion
+
+}
+
+#endregion Designer generated code
diff --git a/Software/Visual_Studio/Tango.PMR/Exports/JobFileSegment.cs b/Software/Visual_Studio/Tango.PMR/Exports/JobFileSegment.cs
new file mode 100644
index 000000000..0f01474a4
--- /dev/null
+++ b/Software/Visual_Studio/Tango.PMR/Exports/JobFileSegment.cs
@@ -0,0 +1,209 @@
+// Generated by the protocol buffer compiler. DO NOT EDIT!
+// source: JobFileSegment.proto
+#pragma warning disable 1591, 0612, 3021
+#region Designer generated code
+
+using pb = global::Google.Protobuf;
+using pbc = global::Google.Protobuf.Collections;
+using pbr = global::Google.Protobuf.Reflection;
+using scg = global::System.Collections.Generic;
+namespace Tango.PMR.Exports {
+
+ /// <summary>Holder for reflection information generated from JobFileSegment.proto</summary>
+ public static partial class JobFileSegmentReflection {
+
+ #region Descriptor
+ /// <summary>File descriptor for JobFileSegment.proto</summary>
+ public static pbr::FileDescriptor Descriptor {
+ get { return descriptor; }
+ }
+ private static pbr::FileDescriptor descriptor;
+
+ static JobFileSegmentReflection() {
+ byte[] descriptorData = global::System.Convert.FromBase64String(
+ string.Concat(
+ "ChRKb2JGaWxlU2VnbWVudC5wcm90bxIRVGFuZ28uUE1SLkV4cG9ydHMaFkpv",
+ "YkZpbGVCcnVzaFN0b3AucHJvdG8iZwoOSm9iRmlsZVNlZ21lbnQSDAoETmFt",
+ "ZRgBIAEoCRIOCgZMZW5ndGgYAiABKAESNwoKQnJ1c2hTdG9wcxgDIAMoCzIj",
+ "LlRhbmdvLlBNUi5FeHBvcnRzLkpvYkZpbGVCcnVzaFN0b3BCHQobY29tLnR3",
+ "aW5lLnRhbmdvLnBtci5leHBvcnRzYgZwcm90bzM="));
+ descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData,
+ new pbr::FileDescriptor[] { global::Tango.PMR.Exports.JobFileBrushStopReflection.Descriptor, },
+ new pbr::GeneratedClrTypeInfo(null, new pbr::GeneratedClrTypeInfo[] {
+ new pbr::GeneratedClrTypeInfo(typeof(global::Tango.PMR.Exports.JobFileSegment), global::Tango.PMR.Exports.JobFileSegment.Parser, new[]{ "Name", "Length", "BrushStops" }, null, null, null)
+ }));
+ }
+ #endregion
+
+ }
+ #region Messages
+ public sealed partial class JobFileSegment : pb::IMessage<JobFileSegment> {
+ private static readonly pb::MessageParser<JobFileSegment> _parser = new pb::MessageParser<JobFileSegment>(() => new JobFileSegment());
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public static pb::MessageParser<JobFileSegment> Parser { get { return _parser; } }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public static pbr::MessageDescriptor Descriptor {
+ get { return global::Tango.PMR.Exports.JobFileSegmentReflection.Descriptor.MessageTypes[0]; }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ pbr::MessageDescriptor pb::IMessage.Descriptor {
+ get { return Descriptor; }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public JobFileSegment() {
+ OnConstruction();
+ }
+
+ partial void OnConstruction();
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public JobFileSegment(JobFileSegment other) : this() {
+ name_ = other.name_;
+ length_ = other.length_;
+ brushStops_ = other.brushStops_.Clone();
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public JobFileSegment Clone() {
+ return new JobFileSegment(this);
+ }
+
+ /// <summary>Field number for the "Name" field.</summary>
+ public const int NameFieldNumber = 1;
+ private string name_ = "";
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public string Name {
+ get { return name_; }
+ set {
+ name_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
+ }
+ }
+
+ /// <summary>Field number for the "Length" field.</summary>
+ public const int LengthFieldNumber = 2;
+ private double length_;
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public double Length {
+ get { return length_; }
+ set {
+ length_ = value;
+ }
+ }
+
+ /// <summary>Field number for the "BrushStops" field.</summary>
+ public const int BrushStopsFieldNumber = 3;
+ private static readonly pb::FieldCodec<global::Tango.PMR.Exports.JobFileBrushStop> _repeated_brushStops_codec
+ = pb::FieldCodec.ForMessage(26, global::Tango.PMR.Exports.JobFileBrushStop.Parser);
+ private readonly pbc::RepeatedField<global::Tango.PMR.Exports.JobFileBrushStop> brushStops_ = new pbc::RepeatedField<global::Tango.PMR.Exports.JobFileBrushStop>();
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public pbc::RepeatedField<global::Tango.PMR.Exports.JobFileBrushStop> BrushStops {
+ get { return brushStops_; }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public override bool Equals(object other) {
+ return Equals(other as JobFileSegment);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public bool Equals(JobFileSegment other) {
+ if (ReferenceEquals(other, null)) {
+ return false;
+ }
+ if (ReferenceEquals(other, this)) {
+ return true;
+ }
+ if (Name != other.Name) return false;
+ if (Length != other.Length) return false;
+ if(!brushStops_.Equals(other.brushStops_)) return false;
+ return true;
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public override int GetHashCode() {
+ int hash = 1;
+ if (Name.Length != 0) hash ^= Name.GetHashCode();
+ if (Length != 0D) hash ^= Length.GetHashCode();
+ hash ^= brushStops_.GetHashCode();
+ return hash;
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public override string ToString() {
+ return pb::JsonFormatter.ToDiagnosticString(this);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public void WriteTo(pb::CodedOutputStream output) {
+ if (Name.Length != 0) {
+ output.WriteRawTag(10);
+ output.WriteString(Name);
+ }
+ if (Length != 0D) {
+ output.WriteRawTag(17);
+ output.WriteDouble(Length);
+ }
+ brushStops_.WriteTo(output, _repeated_brushStops_codec);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public int CalculateSize() {
+ int size = 0;
+ if (Name.Length != 0) {
+ size += 1 + pb::CodedOutputStream.ComputeStringSize(Name);
+ }
+ if (Length != 0D) {
+ size += 1 + 8;
+ }
+ size += brushStops_.CalculateSize(_repeated_brushStops_codec);
+ return size;
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public void MergeFrom(JobFileSegment other) {
+ if (other == null) {
+ return;
+ }
+ if (other.Name.Length != 0) {
+ Name = other.Name;
+ }
+ if (other.Length != 0D) {
+ Length = other.Length;
+ }
+ brushStops_.Add(other.brushStops_);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public void MergeFrom(pb::CodedInputStream input) {
+ uint tag;
+ while ((tag = input.ReadTag()) != 0) {
+ switch(tag) {
+ default:
+ input.SkipLastField();
+ break;
+ case 10: {
+ Name = input.ReadString();
+ break;
+ }
+ case 17: {
+ Length = input.ReadDouble();
+ break;
+ }
+ case 26: {
+ brushStops_.AddEntriesFrom(input, _repeated_brushStops_codec);
+ break;
+ }
+ }
+ }
+ }
+
+ }
+
+ #endregion
+
+}
+
+#endregion Designer generated code
diff --git a/Software/Visual_Studio/Tango.PMR/Hardware/HardwareBlower.cs b/Software/Visual_Studio/Tango.PMR/Hardware/HardwareBlower.cs
index caf7f29a8..8138b2d70 100644
--- a/Software/Visual_Studio/Tango.PMR/Hardware/HardwareBlower.cs
+++ b/Software/Visual_Studio/Tango.PMR/Hardware/HardwareBlower.cs
@@ -23,15 +23,15 @@ namespace Tango.PMR.Hardware {
byte[] descriptorData = global::System.Convert.FromBase64String(
string.Concat(
"ChRIYXJkd2FyZUJsb3dlci5wcm90bxISVGFuZ28uUE1SLkhhcmR3YXJlGhhI",
- "YXJkd2FyZUJsb3dlclR5cGUucHJvdG8idgoOSGFyZHdhcmVCbG93ZXISQgoS",
- "SGFyZHdhcmVCbG93ZXJUeXBlGAEgASgOMiYuVGFuZ28uUE1SLkhhcmR3YXJl",
- "LkhhcmR3YXJlQmxvd2VyVHlwZRIPCgdFbmFibGVkGAIgASgIEg8KB1ZvbHRh",
- "Z2UYAyABKAFCHgocY29tLnR3aW5lLnRhbmdvLnBtci5oYXJkd2FyZWIGcHJv",
- "dG8z"));
+ "YXJkd2FyZUJsb3dlclR5cGUucHJvdG8ijgEKDkhhcmR3YXJlQmxvd2VyEkIK",
+ "EkhhcmR3YXJlQmxvd2VyVHlwZRgBIAEoDjImLlRhbmdvLlBNUi5IYXJkd2Fy",
+ "ZS5IYXJkd2FyZUJsb3dlclR5cGUSDwoHRW5hYmxlZBgCIAEoCBIPCgdWb2x0",
+ "YWdlGAMgASgBEhYKDkhlYXRpbmdWb2x0YWdlGAQgASgBQh4KHGNvbS50d2lu",
+ "ZS50YW5nby5wbXIuaGFyZHdhcmViBnByb3RvMw=="));
descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData,
new pbr::FileDescriptor[] { global::Tango.PMR.Hardware.HardwareBlowerTypeReflection.Descriptor, },
new pbr::GeneratedClrTypeInfo(null, new pbr::GeneratedClrTypeInfo[] {
- new pbr::GeneratedClrTypeInfo(typeof(global::Tango.PMR.Hardware.HardwareBlower), global::Tango.PMR.Hardware.HardwareBlower.Parser, new[]{ "HardwareBlowerType", "Enabled", "Voltage" }, null, null, null)
+ new pbr::GeneratedClrTypeInfo(typeof(global::Tango.PMR.Hardware.HardwareBlower), global::Tango.PMR.Hardware.HardwareBlower.Parser, new[]{ "HardwareBlowerType", "Enabled", "Voltage", "HeatingVoltage" }, null, null, null)
}));
}
#endregion
@@ -65,6 +65,7 @@ namespace Tango.PMR.Hardware {
hardwareBlowerType_ = other.hardwareBlowerType_;
enabled_ = other.enabled_;
voltage_ = other.voltage_;
+ heatingVoltage_ = other.heatingVoltage_;
}
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
@@ -105,6 +106,17 @@ namespace Tango.PMR.Hardware {
}
}
+ /// <summary>Field number for the "HeatingVoltage" field.</summary>
+ public const int HeatingVoltageFieldNumber = 4;
+ private double heatingVoltage_;
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public double HeatingVoltage {
+ get { return heatingVoltage_; }
+ set {
+ heatingVoltage_ = value;
+ }
+ }
+
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
public override bool Equals(object other) {
return Equals(other as HardwareBlower);
@@ -121,6 +133,7 @@ namespace Tango.PMR.Hardware {
if (HardwareBlowerType != other.HardwareBlowerType) return false;
if (Enabled != other.Enabled) return false;
if (Voltage != other.Voltage) return false;
+ if (HeatingVoltage != other.HeatingVoltage) return false;
return true;
}
@@ -130,6 +143,7 @@ namespace Tango.PMR.Hardware {
if (HardwareBlowerType != 0) hash ^= HardwareBlowerType.GetHashCode();
if (Enabled != false) hash ^= Enabled.GetHashCode();
if (Voltage != 0D) hash ^= Voltage.GetHashCode();
+ if (HeatingVoltage != 0D) hash ^= HeatingVoltage.GetHashCode();
return hash;
}
@@ -152,6 +166,10 @@ namespace Tango.PMR.Hardware {
output.WriteRawTag(25);
output.WriteDouble(Voltage);
}
+ if (HeatingVoltage != 0D) {
+ output.WriteRawTag(33);
+ output.WriteDouble(HeatingVoltage);
+ }
}
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
@@ -166,6 +184,9 @@ namespace Tango.PMR.Hardware {
if (Voltage != 0D) {
size += 1 + 8;
}
+ if (HeatingVoltage != 0D) {
+ size += 1 + 8;
+ }
return size;
}
@@ -183,6 +204,9 @@ namespace Tango.PMR.Hardware {
if (other.Voltage != 0D) {
Voltage = other.Voltage;
}
+ if (other.HeatingVoltage != 0D) {
+ HeatingVoltage = other.HeatingVoltage;
+ }
}
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
@@ -205,6 +229,10 @@ namespace Tango.PMR.Hardware {
Voltage = input.ReadDouble();
break;
}
+ case 33: {
+ HeatingVoltage = input.ReadDouble();
+ break;
+ }
}
}
}
diff --git a/Software/Visual_Studio/Tango.PMR/IO/GetStorageInfoRequest.cs b/Software/Visual_Studio/Tango.PMR/IO/GetStorageInfoRequest.cs
index ae06664ae..e77104d56 100644
--- a/Software/Visual_Studio/Tango.PMR/IO/GetStorageInfoRequest.cs
+++ b/Software/Visual_Studio/Tango.PMR/IO/GetStorageInfoRequest.cs
@@ -22,14 +22,13 @@ namespace Tango.PMR.IO {
static GetStorageInfoRequestReflection() {
byte[] descriptorData = global::System.Convert.FromBase64String(
string.Concat(
- "ChtHZXRTdG9yYWdlSW5mb1JlcXVlc3QucHJvdG8SDFRhbmdvLlBNUi5JTyI8",
- "ChVHZXRTdG9yYWdlSW5mb1JlcXVlc3QSEAoIQ2FwYWNpdHkYASABKAUSEQoJ",
- "RnJlZVNwYWNlGAIgASgFQhgKFmNvbS50d2luZS50YW5nby5wbXIuaW9iBnBy",
- "b3RvMw=="));
+ "ChtHZXRTdG9yYWdlSW5mb1JlcXVlc3QucHJvdG8SDFRhbmdvLlBNUi5JTyIX",
+ "ChVHZXRTdG9yYWdlSW5mb1JlcXVlc3RCGAoWY29tLnR3aW5lLnRhbmdvLnBt",
+ "ci5pb2IGcHJvdG8z"));
descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData,
new pbr::FileDescriptor[] { },
new pbr::GeneratedClrTypeInfo(null, new pbr::GeneratedClrTypeInfo[] {
- new pbr::GeneratedClrTypeInfo(typeof(global::Tango.PMR.IO.GetStorageInfoRequest), global::Tango.PMR.IO.GetStorageInfoRequest.Parser, new[]{ "Capacity", "FreeSpace" }, null, null, null)
+ new pbr::GeneratedClrTypeInfo(typeof(global::Tango.PMR.IO.GetStorageInfoRequest), global::Tango.PMR.IO.GetStorageInfoRequest.Parser, null, null, null, null)
}));
}
#endregion
@@ -60,8 +59,6 @@ namespace Tango.PMR.IO {
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
public GetStorageInfoRequest(GetStorageInfoRequest other) : this() {
- capacity_ = other.capacity_;
- freeSpace_ = other.freeSpace_;
}
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
@@ -69,28 +66,6 @@ namespace Tango.PMR.IO {
return new GetStorageInfoRequest(this);
}
- /// <summary>Field number for the "Capacity" field.</summary>
- public const int CapacityFieldNumber = 1;
- private int capacity_;
- [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
- public int Capacity {
- get { return capacity_; }
- set {
- capacity_ = value;
- }
- }
-
- /// <summary>Field number for the "FreeSpace" field.</summary>
- public const int FreeSpaceFieldNumber = 2;
- private int freeSpace_;
- [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
- public int FreeSpace {
- get { return freeSpace_; }
- set {
- freeSpace_ = value;
- }
- }
-
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
public override bool Equals(object other) {
return Equals(other as GetStorageInfoRequest);
@@ -104,16 +79,12 @@ namespace Tango.PMR.IO {
if (ReferenceEquals(other, this)) {
return true;
}
- if (Capacity != other.Capacity) return false;
- if (FreeSpace != other.FreeSpace) return false;
return true;
}
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
public override int GetHashCode() {
int hash = 1;
- if (Capacity != 0) hash ^= Capacity.GetHashCode();
- if (FreeSpace != 0) hash ^= FreeSpace.GetHashCode();
return hash;
}
@@ -124,25 +95,11 @@ namespace Tango.PMR.IO {
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
public void WriteTo(pb::CodedOutputStream output) {
- if (Capacity != 0) {
- output.WriteRawTag(8);
- output.WriteInt32(Capacity);
- }
- if (FreeSpace != 0) {
- output.WriteRawTag(16);
- output.WriteInt32(FreeSpace);
- }
}
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
public int CalculateSize() {
int size = 0;
- if (Capacity != 0) {
- size += 1 + pb::CodedOutputStream.ComputeInt32Size(Capacity);
- }
- if (FreeSpace != 0) {
- size += 1 + pb::CodedOutputStream.ComputeInt32Size(FreeSpace);
- }
return size;
}
@@ -151,12 +108,6 @@ namespace Tango.PMR.IO {
if (other == null) {
return;
}
- if (other.Capacity != 0) {
- Capacity = other.Capacity;
- }
- if (other.FreeSpace != 0) {
- FreeSpace = other.FreeSpace;
- }
}
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
@@ -167,14 +118,6 @@ namespace Tango.PMR.IO {
default:
input.SkipLastField();
break;
- case 8: {
- Capacity = input.ReadInt32();
- break;
- }
- case 16: {
- FreeSpace = input.ReadInt32();
- break;
- }
}
}
}
diff --git a/Software/Visual_Studio/Tango.PMR/Printing/JobTicket.cs b/Software/Visual_Studio/Tango.PMR/Printing/JobTicket.cs
index 73aac06dc..65bc41bec 100644
--- a/Software/Visual_Studio/Tango.PMR/Printing/JobTicket.cs
+++ b/Software/Visual_Studio/Tango.PMR/Printing/JobTicket.cs
@@ -25,7 +25,7 @@ namespace Tango.PMR.Printing {
"Cg9Kb2JUaWNrZXQucHJvdG8SElRhbmdvLlBNUi5QcmludGluZxoQSm9iU2Vn",
"bWVudC5wcm90bxoXUHJvY2Vzc1BhcmFtZXRlcnMucHJvdG8aFkpvYldpbmRp",
"bmdNZXRob2QucHJvdG8aDkpvYlNwb29sLnByb3RvIs0CCglKb2JUaWNrZXQS",
- "DAoEZ3VpZBgBIAEoCRIMCgROYW1lGAIgASgJEhoKEkVuYWJsZUludGVyU2Vn",
+ "DAoER3VpZBgBIAEoCRIMCgROYW1lGAIgASgJEhoKEkVuYWJsZUludGVyU2Vn",
"bWVudBgDIAEoCBIaChJJbnRlclNlZ21lbnRMZW5ndGgYBCABKAESDgoGTGVu",
"Z3RoGAUgASgBEkAKEVByb2Nlc3NQYXJhbWV0ZXJzGAYgASgLMiUuVGFuZ28u",
"UE1SLlByaW50aW5nLlByb2Nlc3NQYXJhbWV0ZXJzEjsKDVdpbmRpbmdNZXRo",
@@ -84,7 +84,7 @@ namespace Tango.PMR.Printing {
return new JobTicket(this);
}
- /// <summary>Field number for the "guid" field.</summary>
+ /// <summary>Field number for the "Guid" field.</summary>
public const int GuidFieldNumber = 1;
private string guid_ = "";
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
diff --git a/Software/Visual_Studio/Tango.PMR/Tango.PMR.csproj b/Software/Visual_Studio/Tango.PMR/Tango.PMR.csproj
index 48d204d0f..02c47913b 100644
--- a/Software/Visual_Studio/Tango.PMR/Tango.PMR.csproj
+++ b/Software/Visual_Studio/Tango.PMR/Tango.PMR.csproj
@@ -136,6 +136,9 @@
<Compile Include="Embroidery\Stitch.cs" />
<Compile Include="Embroidery\StitchColor.cs" />
<Compile Include="Embroidery\StitchFlag.cs" />
+ <Compile Include="Exports\JobFile.cs" />
+ <Compile Include="Exports\JobFileBrushStop.cs" />
+ <Compile Include="Exports\JobFileSegment.cs" />
<Compile Include="ExtensionMethods.cs" />
<Compile Include="Hardware\HardwareBlower.cs" />
<Compile Include="Hardware\HardwareBlowerType.cs" />
@@ -245,7 +248,7 @@
</PropertyGroup>
<ProjectExtensions>
<VisualStudio>
- <UserProperties BuildVersion_StartDate="2000/1/1" BuildVersion_UseGlobalSettings="False" BuildVersion_BuildVersioningStyle="None.None.Increment.TimeStamp" BuildVersion_UpdateAssemblyVersion="True" BuildVersion_AssemblyInfoFilename="Properties\AssemblyInfo.cs" />
+ <UserProperties BuildVersion_AssemblyInfoFilename="Properties\AssemblyInfo.cs" BuildVersion_UpdateAssemblyVersion="True" BuildVersion_BuildVersioningStyle="None.None.Increment.TimeStamp" BuildVersion_UseGlobalSettings="False" BuildVersion_StartDate="2000/1/1" />
</VisualStudio>
</ProjectExtensions>
</Project> \ No newline at end of file
diff --git a/Software/Visual_Studio/Tango.Touch/Controls/TouchPanel.xaml b/Software/Visual_Studio/Tango.Touch/Controls/TouchPanel.xaml
index 0b480ecf6..515fef750 100644
--- a/Software/Visual_Studio/Tango.Touch/Controls/TouchPanel.xaml
+++ b/Software/Visual_Studio/Tango.Touch/Controls/TouchPanel.xaml
@@ -163,16 +163,16 @@
<DataTrigger.EnterActions>
<BeginStoryboard>
<Storyboard>
- <DoubleAnimation Storyboard.TargetProperty="RenderTransform.ScaleX" From="0" To="1" Duration="00:00:0.2" />
- <DoubleAnimation Storyboard.TargetProperty="RenderTransform.ScaleY" From="0" To="1" Duration="00:00:0.2" />
+ <DoubleAnimation Storyboard.TargetProperty="RenderTransform.ScaleX" From="0" To="1" Duration="00:00:0.1" />
+ <DoubleAnimation Storyboard.TargetProperty="RenderTransform.ScaleY" From="0" To="1" Duration="00:00:0.1" />
</Storyboard>
</BeginStoryboard>
</DataTrigger.EnterActions>
<DataTrigger.ExitActions>
<BeginStoryboard>
<Storyboard>
- <DoubleAnimation Storyboard.TargetProperty="RenderTransform.ScaleX" From="1" To="0" Duration="00:00:0.2" />
- <DoubleAnimation Storyboard.TargetProperty="RenderTransform.ScaleY" From="1" To="0" Duration="00:00:0.2" />
+ <DoubleAnimation Storyboard.TargetProperty="RenderTransform.ScaleX" From="1" To="0" Duration="00:00:0.1" />
+ <DoubleAnimation Storyboard.TargetProperty="RenderTransform.ScaleY" From="1" To="0" Duration="00:00:0.1" />
</Storyboard>
</BeginStoryboard>
</DataTrigger.ExitActions>