aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio
diff options
context:
space:
mode:
authorRoy <roy.mail.net@gmail.com>2018-01-07 09:27:42 +0200
committerRoy <roy.mail.net@gmail.com>2018-01-07 09:27:42 +0200
commitdd18ae0c096a34048477297ba848a089a99eece1 (patch)
treebf036a7fac1b0d1f0439fb0e039e15c491e3881a /Software/Visual_Studio
parent6900c4dea48adb484efc9648e081b7b3f75bd60c (diff)
downloadTango-dd18ae0c096a34048477297ba848a089a99eece1.tar.gz
Tango-dd18ae0c096a34048477297ba848a089a99eece1.zip
Progress on machine designer...
Diffstat (limited to 'Software/Visual_Studio')
-rw-r--r--Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.DB/App.config8
-rw-r--r--Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Developer/Tango.MachineStudio.Developer.csproj1
-rw-r--r--Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Developer/app.config11
-rw-r--r--Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.MachineDesigner/Images/android.pngbin0 -> 1416 bytes
-rw-r--r--Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.MachineDesigner/Images/dispenser.pngbin16541 -> 11951 bytes
-rw-r--r--Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.MachineDesigner/Images/hardware.pngbin0 -> 1005 bytes
-rw-r--r--Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.MachineDesigner/Images/mid-tank.pngbin2624 -> 2164 bytes
-rw-r--r--Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.MachineDesigner/Images/ti-tm4c129x.pngbin352430 -> 271765 bytes
-rw-r--r--Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.MachineDesigner/Tango.MachineStudio.MachineDesigner.csproj4
-rw-r--r--Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.MachineDesigner/ViewModels/MainViewVM.cs181
-rw-r--r--Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.MachineDesigner/Views/MainView.xaml685
-rw-r--r--Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.MachineDesigner/Views/MainView.xaml.cs74
-rw-r--r--Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Tango.MachineStudio.Common.csproj1
-rw-r--r--Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/app.config11
-rw-r--r--Software/Visual_Studio/Tango.Core/ExtensionMethods/IEnumerableExtensions.cs13
-rw-r--r--Software/Visual_Studio/Tango.Core/ExtensionMethods/ObjectExtensions.cs17
-rw-r--r--Software/Visual_Studio/Tango.Core/ExtensionMethods/ObservableCollectionExtensions.cs26
-rw-r--r--Software/Visual_Studio/Tango.Core/Tango.Core.csproj1
-rw-r--r--Software/Visual_Studio/Tango.DAL.Observables/Enumerations/LiquidTypes.cs30
-rw-r--r--Software/Visual_Studio/Tango.DAL.Observables/ExtensionMethods/ConfigurationExtensions.cs3
-rw-r--r--Software/Visual_Studio/Tango.DAL.Observables/ExtensionMethods/ObservableEntityExtensions.cs1
-rw-r--r--Software/Visual_Studio/Tango.DAL.Observables/ObservableEntity.cs17
-rw-r--r--Software/Visual_Studio/Tango.DAL.Observables/ObservablesEntitiesAdapter.cs78
-rw-r--r--Software/Visual_Studio/Tango.DAL.Observables/Tango.DAL.Observables.csproj3
-rw-r--r--Software/Visual_Studio/Tango.DAL.Observables/packages.config1
-rw-r--r--Software/Visual_Studio/Tango.DragAndDrop/DragAndDropService.cs10
26 files changed, 896 insertions, 280 deletions
diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.DB/App.config b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.DB/App.config
index 2fb423e8b..f89af9711 100644
--- a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.DB/App.config
+++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.DB/App.config
@@ -10,4 +10,12 @@
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
</providers>
</entityFramework>
+ <runtime>
+ <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
+ <dependentAssembly>
+ <assemblyIdentity name="System.Reactive.Core" publicKeyToken="94bc3704cddfc263" culture="neutral" />
+ <bindingRedirect oldVersion="0.0.0.0-3.0.3000.0" newVersion="3.0.3000.0" />
+ </dependentAssembly>
+ </assemblyBinding>
+ </runtime>
</configuration> \ No newline at end of file
diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Developer/Tango.MachineStudio.Developer.csproj b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Developer/Tango.MachineStudio.Developer.csproj
index 269720012..44b50b443 100644
--- a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Developer/Tango.MachineStudio.Developer.csproj
+++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Developer/Tango.MachineStudio.Developer.csproj
@@ -85,6 +85,7 @@
<Generator>ResXFileCodeGenerator</Generator>
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
</EmbeddedResource>
+ <None Include="app.config" />
<None Include="Properties\Settings.settings">
<Generator>SettingsSingleFileGenerator</Generator>
<LastGenOutput>Settings.Designer.cs</LastGenOutput>
diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Developer/app.config b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Developer/app.config
new file mode 100644
index 000000000..cacd4cd77
--- /dev/null
+++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Developer/app.config
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8"?>
+<configuration>
+ <runtime>
+ <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
+ <dependentAssembly>
+ <assemblyIdentity name="System.Reactive.Core" publicKeyToken="94bc3704cddfc263" culture="neutral" />
+ <bindingRedirect oldVersion="0.0.0.0-3.0.3000.0" newVersion="3.0.3000.0" />
+ </dependentAssembly>
+ </assemblyBinding>
+ </runtime>
+</configuration> \ No newline at end of file
diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.MachineDesigner/Images/android.png b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.MachineDesigner/Images/android.png
new file mode 100644
index 000000000..7fc5fbfe1
--- /dev/null
+++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.MachineDesigner/Images/android.png
Binary files differ
diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.MachineDesigner/Images/dispenser.png b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.MachineDesigner/Images/dispenser.png
index b7c292bf9..a070c94e0 100644
--- a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.MachineDesigner/Images/dispenser.png
+++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.MachineDesigner/Images/dispenser.png
Binary files differ
diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.MachineDesigner/Images/hardware.png b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.MachineDesigner/Images/hardware.png
new file mode 100644
index 000000000..856cf1ec7
--- /dev/null
+++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.MachineDesigner/Images/hardware.png
Binary files differ
diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.MachineDesigner/Images/mid-tank.png b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.MachineDesigner/Images/mid-tank.png
index 6603d1b9f..4da752a42 100644
--- a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.MachineDesigner/Images/mid-tank.png
+++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.MachineDesigner/Images/mid-tank.png
Binary files differ
diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.MachineDesigner/Images/ti-tm4c129x.png b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.MachineDesigner/Images/ti-tm4c129x.png
index 9c280255e..e414e3355 100644
--- a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.MachineDesigner/Images/ti-tm4c129x.png
+++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.MachineDesigner/Images/ti-tm4c129x.png
Binary files differ
diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.MachineDesigner/Tango.MachineStudio.MachineDesigner.csproj b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.MachineDesigner/Tango.MachineStudio.MachineDesigner.csproj
index 2c3f6c674..96d7ddb8f 100644
--- a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.MachineDesigner/Tango.MachineStudio.MachineDesigner.csproj
+++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.MachineDesigner/Tango.MachineStudio.MachineDesigner.csproj
@@ -197,5 +197,9 @@
<ItemGroup>
<Resource Include="Images\embedded-software.png" />
</ItemGroup>
+ <ItemGroup>
+ <Resource Include="Images\android.png" />
+ <Resource Include="Images\hardware.png" />
+ </ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
</Project> \ No newline at end of file
diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.MachineDesigner/ViewModels/MainViewVM.cs b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.MachineDesigner/ViewModels/MainViewVM.cs
index 241297d85..22e350745 100644
--- a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.MachineDesigner/ViewModels/MainViewVM.cs
+++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.MachineDesigner/ViewModels/MainViewVM.cs
@@ -1,9 +1,14 @@
using System;
using System.Collections.Generic;
+using System.Collections.ObjectModel;
+using System.ComponentModel;
using System.Linq;
+using System.Reflection;
using System.Text;
using System.Threading.Tasks;
+using System.Windows.Data;
using Tango.Core.Commands;
+using Tango.Core.Helpers;
using Tango.DAL.Observables;
using Tango.MachineStudio.Common.Notifications;
using Tango.SharedUI;
@@ -32,7 +37,14 @@ namespace Tango.MachineStudio.MachineDesigner.ViewModels
public Machine Machine
{
get { return _machine; }
- set { _machine = value; RaisePropertyChangedAuto(); OnMachineChanged(); }
+ set { _machine = value; RaisePropertyChangedAuto(); }
+ }
+
+ private Machine _selectedMachine;
+ public Machine SelectedMachine
+ {
+ get { return _selectedMachine; }
+ set { _selectedMachine = value; RaisePropertyChangedAuto(); OnSelectedMachineChanged(); }
}
private Configuration _configuration;
@@ -55,6 +67,33 @@ namespace Tango.MachineStudio.MachineDesigner.ViewModels
set { _selectedIds = value; RaisePropertyChangedAuto(); InvalidateRelayCommands(); }
}
+ private ObservableCollection<Configuration> _history;
+
+ public ObservableCollection<Configuration> History
+ {
+ get { return _history; }
+ set { _history = value; RaisePropertyChangedAuto(); }
+ }
+
+
+ private Configuration _selectedHistoryConfiguration;
+ /// <summary>
+ /// Gets or sets the selected history configuration.
+ /// </summary>
+ public Configuration SelectedHistoryConfiguration
+ {
+ get { return _selectedHistoryConfiguration; }
+ set { _selectedHistoryConfiguration = value; RaisePropertyChangedAuto(); OnHistoryConfigurationSelected(); }
+ }
+
+ private String _filter;
+
+ public String Filter
+ {
+ get { return _filter; }
+ set { _filter = value; RaisePropertyChangedAuto(); OnFilterChanged(); }
+ }
+
public RelayCommand SaveCommand { get; set; }
public RelayCommand AddIdsCommand { get; set; }
@@ -71,21 +110,34 @@ namespace Tango.MachineStudio.MachineDesigner.ViewModels
Adapter = ObservablesEntitiesAdapter.Instance;
Configuration = new Configuration();
Configuration.Name = "Untitled";
+ Machine = new Machine();
+ Machine.Configuration = Configuration;
+ Configuration.ApplicationFirmwareVersions = Adapter.ApplicationFirmwareVersions.First();
SaveCommand = new RelayCommand(Save, (x) => !_isSaving);
AddIdsCommand = new RelayCommand(AddIds, (x) => !_isSaving && Configuration.IdsPacks.Count < 8);
RemoveIdsCommand = new RelayCommand(RemoveIds, (x) => !_isSaving && SelectedIds != null);
}
- private void OnMachineChanged()
+ private void OnSelectedMachineChanged()
{
- if (Machine != null)
+ if (SelectedMachine != null)
{
- Configuration = Machine.Configuration;
+ Machine = SelectedMachine.CloneEntity();
+ Configuration = Machine.Configuration.CloneConfiguration();
+ History = SelectedMachine.MachinesConfigurations.Select(x => x.Configuration).ToObservableCollection();
}
else
{
- Configuration = new Configuration() { Name = "Untitled" };
+ History = new ObservableCollection<Configuration>();
+ }
+ }
+
+ private void OnHistoryConfigurationSelected()
+ {
+ if (SelectedHistoryConfiguration != null)
+ {
+ Configuration = SelectedHistoryConfiguration.CloneConfiguration();
}
}
@@ -101,6 +153,12 @@ namespace Tango.MachineStudio.MachineDesigner.ViewModels
Configuration.ApplicationVersionGuid = applicationVersion.Guid;
}
+ public void DropHardwareVersion(HardwareVersion hardwareVersion)
+ {
+ Configuration.HardwareVersions = hardwareVersion;
+ Configuration.HardwareVersionGuid = hardwareVersion.Guid;
+ }
+
public void DropEmbeddedFirmware(EmbeddedFirmwareVersion embeddedFirmwareVersion)
{
Configuration.EmbeddedFirmwareVersions = embeddedFirmwareVersion;
@@ -113,6 +171,12 @@ namespace Tango.MachineStudio.MachineDesigner.ViewModels
Configuration.EmbeddedSoftwareVersionGuid = embeddedSoftwareVersion.Guid;
}
+ public void DropApplicationOsVersion(ApplicationOsVersion applicationOsVersion)
+ {
+ Configuration.ApplicationOsVersions = applicationOsVersion;
+ Configuration.ApplicationVersionGuid = applicationOsVersion.Guid;
+ }
+
private void RemoveIds()
{
Configuration.IdsPacks.Remove(SelectedIds);
@@ -121,7 +185,7 @@ namespace Tango.MachineStudio.MachineDesigner.ViewModels
private void AddIds()
{
- Configuration.IdsPacks.Add(new IdsPack());
+ Configuration.IdsPacks.Add(new IdsPack() { Configuration = Configuration });
InvalidateRelayCommands();
}
@@ -149,6 +213,42 @@ namespace Tango.MachineStudio.MachineDesigner.ViewModels
idsPack.LiquidTypeGuid = liquidType.Guid;
}
+ private void OnFilterChanged()
+ {
+
+
+ List<ICollectionView> collections = new List<ICollectionView>();
+ collections.Add(Adapter.ApplicationDisplayPanelVersionsViewSource);
+ collections.Add(Adapter.ApplicationVersionsViewSource);
+ collections.Add(Adapter.EmbeddedSoftwareVersionsViewSource);
+ collections.Add(Adapter.EmbeddedFirmwareVersionsViewSource);
+ collections.Add(Adapter.ApplicationOsVersionsViewSource);
+ collections.Add(Adapter.ApplicationVersionsViewSource);
+ collections.Add(Adapter.DispensersViewSource);
+ collections.Add(Adapter.CartridgeTypesViewSource);
+ collections.Add(Adapter.LiquidTypesViewSource);
+ collections.Add(Adapter.MidTankTypesViewSource);
+ collections.Add(Adapter.HardwareVersionsViewSource);
+
+ foreach (var collection in collections)
+ {
+ collection.Filter = (x) =>
+ {
+ foreach (var prop in x.GetType().GetProperties(BindingFlags.Public | BindingFlags.Instance).Where(y => y.PropertyType == typeof(String)))
+ {
+ String value = prop.GetValue(x).ToStringSafe();
+
+ if (value != null)
+ {
+ return value.ToLower().Contains(Filter.ToLower());
+ }
+ }
+
+ return false;
+ };
+ }
+ }
+
private async void Save()
{
_isSaving = true;
@@ -156,10 +256,67 @@ namespace Tango.MachineStudio.MachineDesigner.ViewModels
try
{
- using (_notification.PushTaskItem("Saving Configuration..."))
+ using (_notification.PushTaskItem("Saving Machine Configuration..."))
{
- await Configuration.SaveAsync();
- Configuration = Adapter.Configurations.SingleOrDefault(x => x.Guid == Configuration.Guid);
+ if (!Adapter.Machines.ToList().Exists(x => x.SerialNumber.ToLower() == Machine.SerialNumber.ToLower()))
+ {
+ if (!_notification.ShowQuestion("The specified machine serial number does not exist. Do you wish to create a new machine?"))
+ {
+ return;
+ }
+ else
+ {
+ Machine.Configuration = Configuration;
+ Configuration.CreationDate = DateTime.UtcNow;
+ Machine.ProductionDate = DateTime.UtcNow;
+ Machine.MachinesConfigurations.Add(new MachinesConfiguration()
+ {
+ Configuration = Configuration,
+ Machine = Machine,
+ });
+ await Machine.SaveAsync();
+
+ Machine = Adapter.Machines.SingleOrDefault(x => x.Guid == Machine.Guid);
+ Configuration = Machine.Configuration.CloneConfiguration();
+ }
+ }
+ else
+ {
+ foreach (var ids in Configuration.IdsPacks)
+ {
+ ids.Configuration = Configuration;
+ ids.ConfigurationGuid = Configuration.Guid;
+ }
+
+ var machine = Adapter.Machines.Single(x => x.SerialNumber.ToLower() == Machine.SerialNumber.ToLower());
+
+ //Set 'Real machine' parameters...
+
+ bool add_history = History.Count == 0 || History.First().Name != Configuration.Name;
+
+ machine.Name = Machine.Name;
+ machine.SerialNumber = Machine.SerialNumber;
+ machine.Configuration = Configuration;
+ machine.Organization = Machine.Organization;
+
+
+ if (add_history)
+ {
+ machine.MachinesConfigurations.Add(new MachinesConfiguration()
+ {
+ Configuration = Configuration,
+ Machine = machine
+ });
+ }
+
+ await machine.SaveAsync();
+
+ Machine = Adapter.Machines.SingleOrDefault(x => x.Guid == machine.Guid);
+ Configuration = Machine.Configuration.CloneConfiguration();
+ }
+
+ SetHistory(Machine);
+ Machine = Machine.CloneEntity();
}
}
catch (Exception ex)
@@ -172,5 +329,11 @@ namespace Tango.MachineStudio.MachineDesigner.ViewModels
InvalidateRelayCommands();
}
}
+
+ private void SetHistory(Machine machine)
+ {
+ History = machine.MachinesConfigurations.Select(x => x.Configuration).ToObservableCollection();
+ History.Insert(0, machine.Configuration);
+ }
}
}
diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.MachineDesigner/Views/MainView.xaml b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.MachineDesigner/Views/MainView.xaml
index 48b90aa6b..03a3e2636 100644
--- a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.MachineDesigner/Views/MainView.xaml
+++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.MachineDesigner/Views/MainView.xaml
@@ -79,16 +79,16 @@
<Grid Grid.Column="1">
<Grid.RowDefinitions>
- <RowDefinition Height="89*"/>
+ <RowDefinition Height="90"/>
<RowDefinition Height="631*"/>
</Grid.RowDefinitions>
- <Grid>
- <TextBlock FontSize="30" FontStyle="Italic" VerticalAlignment="Center" Margin="50 10 10 10" Foreground="Silver" FontWeight="Bold">MACHINE DESIGNER</TextBlock>
- <StackPanel Orientation="Horizontal" HorizontalAlignment="Right" VerticalAlignment="Center" Margin="0 0 50 0">
- <StackPanel Orientation="Horizontal">
+ <Grid ClipToBounds="False">
+ <StackPanel>
+ <TextBlock FontSize="30" FontStyle="Italic" VerticalAlignment="Center" Margin="50 10 10 0" Foreground="Silver" FontWeight="Bold">MACHINE DESIGNER</TextBlock>
+ <StackPanel Orientation="Horizontal" Margin="280 10 0 0">
<fa:ImageAwesome Icon="Key" Width="24" Height="24" Foreground="Silver"></fa:ImageAwesome>
- <autoComplete:AutoCompleteTextBox FontSize="14" Margin="5 0 0 0" Width="200" materialDesign:HintAssist.Hint="Enter machine serial number" DisplayMember="SerialNumber" Provider="{StaticResource ResourceKey=MachinesProvider}" SelectedItem="{Binding Machine,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}">
+ <autoComplete:AutoCompleteTextBox FontSize="16" Width="300" Margin="5 0 0 0" materialDesign:HintAssist.Hint="Enter serial number" DisplayMember="SerialNumber" Provider="{StaticResource ResourceKey=MachinesProvider}" SelectedItem="{Binding SelectedMachine,Mode=TwoWay}">
<autoComplete:AutoCompleteTextBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding SerialNumber}"></TextBlock>
@@ -100,17 +100,39 @@
</autoComplete:AutoCompleteTextBox>
</StackPanel>
</StackPanel>
+ <StackPanel Orientation="Horizontal" HorizontalAlignment="Right" VerticalAlignment="Center" Margin="0 0 50 0">
+
+ </StackPanel>
</Grid>
-
- <Viewbox MaxWidth="1200" Grid.RowSpan="2" >
- <Grid>
- <Image Source="../Images/machine-full-fx.png" MaxWidth="800" RenderOptions.BitmapScalingMode="Fant">
+
+ <Viewbox MaxWidth="1200" Grid.Row="1" >
+ <Grid VerticalAlignment="Top">
+
+ <Image IsHitTestVisible="False" Source="../Images/machine-full-fx.png" MaxWidth="800" RenderOptions.BitmapScalingMode="Fant">
<Image.Effect>
<DropShadowEffect ShadowDepth="0" BlurRadius="20" Opacity="1" RenderingBias="Performance" Color="DimGray"></DropShadowEffect>
</Image.Effect>
</Image>
- <Canvas>
+ <Canvas ClipToBounds="False" x:Name="canvas">
+
+ <Grid x:Name="hardwareGrid" Style="{StaticResource draggableGrid}" Width="118" Height="27" Canvas.Left="342" Canvas.Top="80" Background="#6B303030" IsHitTestVisible="True" dragAndDrop:DragAndDropService.Drop="MachineDrop">
+ <Border BorderBrush="#6C6C6C" BorderThickness="1" IsHitTestVisible="False">
+ <StackPanel Orientation="Horizontal">
+ <Image Source="../Images/hardware.png" Width="10" VerticalAlignment="Center" Margin="5" RenderOptions.BitmapScalingMode="Fant"></Image>
+ <TextBlock Padding="2 0 2 0" VerticalAlignment="Center" TextAlignment="Center" Foreground="Gainsboro" IsHitTestVisible="False" FontSize="6" TextWrapping="Wrap">
+ <Run Text="{Binding Configuration.HardwareVersions.Name}"></Run>
+ <Run Text="{Binding Configuration.HardwareVersions.Version}"></Run>
+ </TextBlock>
+ </StackPanel>
+ </Border>
+ </Grid>
+
+ <TextBlock Canvas.Left="532" FontStyle="Italic" Foreground="Gray" Canvas.Top="-22">Hardware</TextBlock>
+ <Grid Width="97" Height="90" Canvas.Left="431" Canvas.Top="-13">
+ <Rectangle Stroke="Gray" VerticalAlignment="Top" StrokeThickness="1" StrokeDashArray="5" RenderTransformOrigin="0.5,0.5"/>
+ <Rectangle Stroke="Gray" HorizontalAlignment="Left" StrokeThickness="1" StrokeDashArray="5" RenderTransformOrigin="0.5,0.5"/>
+ </Grid>
<TextBlock Canvas.Top="222" Canvas.Left="446" FontStyle="Italic" Foreground="Gray">Add IDS</TextBlock>
<Grid Width="23" Height="20" Canvas.Top="231" Canvas.Left="414">
@@ -131,7 +153,7 @@
<materialDesign:PackIcon Kind="Minus" Width="24" Height="24"></materialDesign:PackIcon>
</Button>
- <Grid Width="310" Height="195" Canvas.Top="314" Canvas.Left="420">
+ <Grid x:Name="gridIds" Width="310" Height="195" Canvas.Top="314" Canvas.Left="420">
<ListBox ItemsSource="{Binding Configuration.IdsPacks}" SelectedItem="{Binding SelectedIds}" ScrollViewer.VerticalScrollBarVisibility="Disabled" ScrollViewer.HorizontalScrollBarVisibility="Disabled">
<ListBox.ItemContainerStyle>
<Style TargetType="ListBoxItem" BasedOn="{StaticResource {x:Type ListBoxItem}}">
@@ -148,6 +170,10 @@
<ItemsControl.ItemTemplate>
<DataTemplate>
<Grid dragAndDrop:DragAndDropService.DraggableBorderBrush="{StaticResource AccentColorBrush}" dragAndDrop:DragAndDropService.Drop="OnDropOnIdsPack">
+ <Grid.RowDefinitions>
+ <RowDefinition Height="1*"/>
+ <RowDefinition Height="30"/>
+ </Grid.RowDefinitions>
<Grid.Style>
<Style TargetType="Grid" BasedOn="{StaticResource draggableGrid}">
<Style.Triggers>
@@ -200,6 +226,34 @@
</Rectangle>
</Grid>
</UniformGrid>
+
+ <Grid Grid.Row="1" Margin="3" IsHitTestVisible="False">
+ <Grid.Style>
+ <Style TargetType="Grid">
+ <Style.Triggers>
+ <DataTrigger Binding="{Binding CartridgeTypes}" Value="{x:Null}">
+ <Setter Property="Opacity" Value="0.2"></Setter>
+ </DataTrigger>
+ </Style.Triggers>
+ </Style>
+ </Grid.Style>
+ <Border BorderBrush="#252525" BorderThickness="1" CornerRadius="3">
+ <Border.Background>
+ <LinearGradientBrush>
+ <GradientStop Color="#FF252525"/>
+ <GradientStop Color="#FF838383" Offset="1"/>
+ </LinearGradientBrush>
+ </Border.Background>
+ </Border>
+ <Border BorderBrush="#252525" BorderThickness="1" CornerRadius="3">
+ <Border.Background>
+ <LinearGradientBrush Opacity="0.7">
+ <GradientStop Offset="0" Color="Transparent" />
+ <GradientStop Offset="1" Color="{Binding LiquidTypes.Color,Converter={StaticResource ColorToIntegerConverter}}"/>
+ </LinearGradientBrush>
+ </Border.Background>
+ </Border>
+ </Grid>
</Grid>
</DataTemplate>
</ItemsControl.ItemTemplate>
@@ -226,59 +280,60 @@
</Rectangle>
</Grid>
- <Grid Style="{StaticResource draggableGrid}" Width="100" Height="100" Canvas.Left="70" Canvas.Top="331" IsHitTestVisible="True" SnapsToDevicePixels="True" dragAndDrop:DragAndDropService.Drop="OnEmbeddedDrop">
+ <Grid x:Name="gridEmbedded" Style="{StaticResource draggableGrid}" Width="70" Height="100" Canvas.Left="80" Canvas.Top="331" IsHitTestVisible="True" SnapsToDevicePixels="True" dragAndDrop:DragAndDropService.Drop="OnEmbeddedDrop">
<Image Source="../Images/ti-tm4c129x.png" RenderOptions.BitmapScalingMode="Fant"></Image>
</Grid>
- <Grid Width="42" IsHitTestVisible="True" SnapsToDevicePixels="True" ClipToBounds="True" Height="32" Canvas.Left="102" Canvas.Top="395">
+ <Grid Width="61" IsHitTestVisible="True" SnapsToDevicePixels="True" ClipToBounds="True" Height="42" Canvas.Left="85" Canvas.Top="385">
<Grid.RowDefinitions>
<RowDefinition Height="1*" />
<RowDefinition Height="1*" />
</Grid.RowDefinitions>
- <TextBlock Padding="1" Foreground="Gainsboro" IsHitTestVisible="False" FontSize="5" TextAlignment="Center" TextWrapping="Wrap">
- <Run Text="{Binding Configuration.EmbeddedFirmwareVersions.Name}"></Run>
- <Run></Run>
- <Run Text="{Binding Configuration.EmbeddedFirmwareVersions.Version}"></Run>
- </TextBlock>
- <Rectangle IsHitTestVisible="False" Stroke="DimGray" Margin="1" StrokeThickness="1" StrokeDashArray="5" VerticalAlignment="Bottom"></Rectangle>
- <TextBlock Padding="1" IsHitTestVisible="False" Foreground="Gainsboro" FontSize="5" TextAlignment="Center" Grid.Row="1" TextWrapping="Wrap">
+
+ <StackPanel Orientation="Horizontal">
+ <Image Source="../Images/embedded.png" Width="10" VerticalAlignment="Center" Margin="1" RenderOptions.BitmapScalingMode="Fant"></Image>
+ <TextBlock VerticalAlignment="Center" Padding="1" Foreground="Gainsboro" IsHitTestVisible="False" FontSize="5" TextAlignment="Center" TextWrapping="Wrap" Height="15" Margin="0,6,0,0" Width="47"><Run Text="{Binding Configuration.EmbeddedFirmwareVersions.Name}"/><Run Text=" "/><Run Text="{Binding Configuration.EmbeddedFirmwareVersions.Version}"/></TextBlock>
+ </StackPanel>
+ <StackPanel Grid.Row="1" Orientation="Horizontal">
+ <Image Source="../Images/embedded-software.png" Width="10" VerticalAlignment="Center" Margin="1" RenderOptions.BitmapScalingMode="Fant"></Image>
+ <TextBlock Padding="1" IsHitTestVisible="False" VerticalAlignment="Center" Foreground="Gainsboro" FontSize="5" TextAlignment="Center" TextWrapping="Wrap" Height="14" Margin="0,6,0,1" Width="47">
<Run Text="{Binding Configuration.EmbeddedSoftwareVersions.Name}"></Run>
- <Run></Run>
<Run Text="{Binding Configuration.EmbeddedSoftwareVersions.Version}"></Run>
- </TextBlock>
+ </TextBlock>
+ </StackPanel>
</Grid>
- <TextBlock Canvas.Top="163" Canvas.Left="288" FontStyle="Italic" Foreground="Gray">Touch Panel:</TextBlock>
+ <TextBlock Canvas.Top="163" Canvas.Left="288" FontStyle="Italic" Foreground="Gray">Touch Panel</TextBlock>
<Grid Width="53" Height="55" Canvas.Top="184" Canvas.Left="279">
<Rectangle Stroke="Gray" VerticalAlignment="Bottom" StrokeThickness="1" StrokeDashArray="5" RenderTransformOrigin="0.5,0.5"/>
<Rectangle Stroke="Gray" HorizontalAlignment="Right" StrokeThickness="1" StrokeDashArray="5" RenderTransformOrigin="0.5,0.5"/>
</Grid>
- <TextBlock Canvas.Top="441" Canvas.Left="156" FontStyle="Italic" Foreground="Gray">Embedded Firmware:</TextBlock>
+ <TextBlock Canvas.Top="441" Canvas.Left="156" FontStyle="Italic" Foreground="Gray">Embedded Firmware</TextBlock>
<Grid Width="82" Height="26" Canvas.Top="410" Canvas.Left="158">
<Rectangle Stroke="Gray" VerticalAlignment="Top" StrokeThickness="1" StrokeDashArray="5" RenderTransformOrigin="0.5,0.5"/>
<Rectangle Stroke="Gray" HorizontalAlignment="Right" StrokeThickness="1" StrokeDashArray="6" RenderTransformOrigin="0.5,0.5"/>
</Grid>
- <TextBlock Canvas.Top="310" Canvas.Left="340" FontStyle="Italic" Foreground="Gray">Dispensers:</TextBlock>
+ <TextBlock Canvas.Top="310" Canvas.Left="340" FontStyle="Italic" Foreground="Gray">Dispensers</TextBlock>
<Grid Width="53" Height="20" Canvas.Top="331" Canvas.Left="377">
<Rectangle Stroke="Gray" VerticalAlignment="Bottom" StrokeThickness="1" StrokeDashArray="5" RenderTransformOrigin="0.5,0.5"/>
<Rectangle Stroke="Gray" HorizontalAlignment="Left" StrokeThickness="1" StrokeDashArray="5" RenderTransformOrigin="0.5,0.5"/>
</Grid>
- <TextBlock Canvas.Top="420" Canvas.Left="340" FontStyle="Italic" Foreground="Gray">Mid Tanks:</TextBlock>
+ <TextBlock Canvas.Top="420" Canvas.Left="340" FontStyle="Italic" Foreground="Gray">Mid Tanks</TextBlock>
<Grid Width="53" Height="44" Canvas.Top="441" Canvas.Left="362">
<Rectangle Stroke="Gray" VerticalAlignment="Bottom" StrokeThickness="1" StrokeDashArray="5" RenderTransformOrigin="0.5,0.5"/>
<Rectangle Stroke="Gray" HorizontalAlignment="Left" StrokeThickness="1" StrokeDashArray="5" RenderTransformOrigin="0.5,0.5"/>
</Grid>
- <Grid Width="67" IsHitTestVisible="True" SnapsToDevicePixels="True" ClipToBounds="True" Height="90" Canvas.Left="188" Canvas.Top="198" dragAndDrop:DragAndDropService.Drop="OnTabletDrop" dragAndDrop:DragAndDropService.DraggableBorderBrush="{StaticResource AccentColorBrush}" dragAndDrop:DragAndDropService.DraggableBackground="#202020">
+ <Grid x:Name="gridTablet" Width="67" IsHitTestVisible="True" SnapsToDevicePixels="True" ClipToBounds="True" Height="90" Canvas.Left="188" Canvas.Top="198" dragAndDrop:DragAndDropService.Drop="OnTabletDrop" dragAndDrop:DragAndDropService.DraggableBorderBrush="{StaticResource AccentColorBrush}" dragAndDrop:DragAndDropService.DraggableBackground="#151515">
<Grid.Style>
<Style TargetType="Grid" BasedOn="{StaticResource draggableGrid}">
- <Setter Property="Background" Value="Transparent"></Setter>
+ <Setter Property="Background" Value="#2B2B2B"></Setter>
<Style.Triggers>
<Trigger Property="dragAndDrop:DragAndDropService.IsDraggableOver" Value="True">
- <Setter Property="Background" Value="#151515"></Setter>
+ <Setter Property="Background" Value="Black"></Setter>
</Trigger>
</Style.Triggers>
</Style>
@@ -286,18 +341,32 @@
<Grid.RowDefinitions>
<RowDefinition Height="1*" />
<RowDefinition Height="1*" />
+ <RowDefinition Height="1*" />
</Grid.RowDefinitions>
- <TextBlock Padding="2" Foreground="Gainsboro" IsHitTestVisible="False" FontSize="6" TextAlignment="Center" TextWrapping="Wrap">
+
+ <StackPanel>
+ <Image Source="../Images/tablet.png" Width="10" Margin="2" RenderOptions.BitmapScalingMode="Fant"></Image>
+ <TextBlock Padding="2" Foreground="Gainsboro" IsHitTestVisible="False" FontSize="6" TextAlignment="Center" TextWrapping="Wrap">
<Run Text="{Binding Configuration.ApplicationDisplayPanelVersions.Name}"></Run>
- <Run></Run>
<Run Text="{Binding Configuration.ApplicationDisplayPanelVersions.Version}"></Run>
- </TextBlock>
- <Rectangle IsHitTestVisible="False" Stroke="DimGray" Margin="5 5 5 5" StrokeThickness="1" StrokeDashArray="5" VerticalAlignment="Bottom"></Rectangle>
- <TextBlock Padding="2" IsHitTestVisible="False" Foreground="Gainsboro" FontSize="6" TextAlignment="Center" Grid.Row="1" TextWrapping="Wrap">
+ </TextBlock>
+ </StackPanel>
+
+ <StackPanel Grid.Row="2" >
+ <Image Source="../Images/app.png" Width="10" Margin="2" RenderOptions.BitmapScalingMode="Fant"></Image>
+ <TextBlock Padding="2" IsHitTestVisible="False" Foreground="Gainsboro" FontSize="6" TextAlignment="Center" TextWrapping="Wrap">
<Run Text="{Binding Configuration.ApplicationVersions.Name}"></Run>
- <Run></Run>
<Run Text="{Binding Configuration.ApplicationVersions.Version}"></Run>
- </TextBlock>
+ </TextBlock>
+ </StackPanel>
+
+ <StackPanel Grid.Row="1" >
+ <Image Source="../Images/android.png" Width="10" Margin="2" RenderOptions.BitmapScalingMode="Fant"></Image>
+ <TextBlock Padding="2" IsHitTestVisible="False" Foreground="Gainsboro" FontSize="6" TextAlignment="Center" TextWrapping="Wrap">
+ <Run Text="{Binding Configuration.ApplicationOsVersions.Name}"></Run>
+ <Run Text="{Binding Configuration.ApplicationOsVersions.Version}"></Run>
+ </TextBlock>
+ </StackPanel>
</Grid>
</Canvas>
</Grid>
@@ -343,238 +412,362 @@
<Grid Grid.Column="1">
<Grid.RowDefinitions>
- <RowDefinition Height="1*"/>
- <RowDefinition Height="60"/>
+ <RowDefinition/>
+ <RowDefinition Height="70"/>
</Grid.RowDefinitions>
<ScrollViewer HorizontalScrollBarVisibility="Disabled" VerticalScrollBarVisibility="Auto">
<Grid>
- <materialDesign:Card Margin="5,10,5,0" Background="{DynamicResource MaterialDesignBackground}">
- <StackPanel>
- <Expander HorizontalAlignment="Stretch" Header="Dispensers" IsExpanded="True">
- <ListBox ItemsSource="{Binding Adapter.DispensersViewSource}" HorizontalContentAlignment="Stretch">
- <ListBox.ItemContainerStyle>
- <Style TargetType="ListBoxItem" BasedOn="{StaticResource {x:Type ListBoxItem}}">
- <Setter Property="HorizontalContentAlignment" Value="Stretch"></Setter>
- <Setter Property="VerticalContentAlignment" Value="Stretch"></Setter>
- <Setter Property="Padding" Value="1"></Setter>
- </Style>
- </ListBox.ItemContainerStyle>
- <ListBox.ItemTemplate>
- <DataTemplate>
- <Grid Background="Transparent" IsHitTestVisible="True" dragAndDrop:DragAndDropService.DraggableBorderBrush="{StaticResource AccentColorBrush}" dragAndDrop:DragAndDropService.Draggable="True" dragAndDrop:DragAndDropService.DraggingSurface="{Binding RelativeSource={RelativeSource AncestorType=UserControl},Path=DraggingSurface}">
- <StackPanel Orientation="Horizontal" Margin="2 8">
- <Image IsHitTestVisible="False" Width="24" Height="24" Source="../Images/injection.png" Stretch="Fill" RenderOptions.BitmapScalingMode="Fant"></Image>
- <StackPanel Margin="5 0 0 0" IsHitTestVisible="False">
- <TextBlock IsHitTestVisible="False" FontSize="10" Foreground="DimGray"><Run Text="{Binding DispenserTypes.Name}"></Run></TextBlock>
- <TextBlock IsHitTestVisible="False" FontSize="10" Foreground="DimGray" Margin="0 2 0 0"><Run Text="{Binding SerialNumber}"></Run></TextBlock>
+ <StackPanel>
+ <materialDesign:Card Margin="5,10,5,0" Background="{DynamicResource MaterialDesignBackground}" Padding="20 10">
+ <StackPanel>
+ <TextBlock Text="MACHINE CONFIGURATION" Foreground="Gray" FontWeight="Bold" FontStyle="Italic" FontSize="16"></TextBlock>
+
+ <TextBlock Margin="0 10 0 0" FontSize="10" Foreground="Gray">Serial Number</TextBlock>
+ <TextBox Text="{Binding Machine.SerialNumber,UpdateSourceTrigger=PropertyChanged}"></TextBox>
+
+ <TextBlock Margin="0 15 0 0" FontSize="10" Foreground="Gray">Machine Name</TextBlock>
+ <TextBox Text="{Binding Machine.Name,UpdateSourceTrigger=PropertyChanged}"></TextBox>
+
+ <TextBlock Margin="0 15 0 0" FontSize="10" Foreground="Gray">Machine Version</TextBlock>
+ <ComboBox ItemsSource="{Binding Adapter.MachineVersions}" SelectedItem="{Binding Machine.MachineVersions}" DisplayMemberPath="Name"></ComboBox>
+
+ <TextBlock Margin="0 15 0 0" FontSize="10" Foreground="Gray">Organization</TextBlock>
+ <ComboBox ItemsSource="{Binding Adapter.Organizations}" SelectedItem="{Binding Machine.Organization}" DisplayMemberPath="Name"></ComboBox>
+
+ <UniformGrid Columns="2" Margin="0 15 0 0">
+ <TextBlock FontSize="10" Foreground="Gray" VerticalAlignment="Center">Enable Synchronization</TextBlock>
+ <ToggleButton HorizontalAlignment="Right"></ToggleButton>
+ </UniformGrid>
+
+ <TextBlock Margin="0 15 0 0" FontSize="10" Foreground="Gray">Configuration Name</TextBlock>
+ <TextBox Text="{Binding Configuration.Name,UpdateSourceTrigger=PropertyChanged}"></TextBox>
+ </StackPanel>
+ </materialDesign:Card>
+
+ <materialDesign:Card Margin="5,10,5,0" Background="{DynamicResource MaterialDesignBackground}">
+ <StackPanel>
+ <Expander HorizontalAlignment="Stretch" Header="Configuration History">
+ <ListBox ItemsSource="{Binding History}" HorizontalContentAlignment="Stretch" SelectedItem="{Binding SelectedHistoryConfiguration}">
+ <ListBox.ItemContainerStyle>
+ <Style TargetType="ListBoxItem" BasedOn="{StaticResource {x:Type ListBoxItem}}">
+ <Setter Property="HorizontalContentAlignment" Value="Stretch"></Setter>
+ <Setter Property="VerticalContentAlignment" Value="Stretch"></Setter>
+ <Setter Property="Padding" Value="1"></Setter>
+ </Style>
+ </ListBox.ItemContainerStyle>
+ <ListBox.ItemTemplate>
+ <DataTemplate>
+ <Grid Background="Transparent" IsHitTestVisible="True" dragAndDrop:DragAndDropService.DraggableBorderBrush="{StaticResource AccentColorBrush}" dragAndDrop:DragAndDropService.Draggable="True" dragAndDrop:DragAndDropService.DraggingSurface="{Binding RelativeSource={RelativeSource AncestorType=UserControl},Path=DraggingSurface}">
+ <StackPanel Orientation="Horizontal" Margin="2 8">
+ <materialDesign:PackIcon Kind="Clock" Width="24" Height="24" VerticalAlignment="Center"></materialDesign:PackIcon>
+ <StackPanel Margin="5 0 0 0" IsHitTestVisible="False">
+ <TextBlock IsHitTestVisible="False" FontSize="10" Foreground="DimGray"><Run Text="{Binding Name}"></Run></TextBlock>
+ <TextBlock IsHitTestVisible="False" FontSize="10" Foreground="DimGray" Margin="0 2 0 0"><Run Text="{Binding CreationDate}"></Run></TextBlock>
+ </StackPanel>
</StackPanel>
- </StackPanel>
- <Rectangle Margin="0 10 0 0" VerticalAlignment="Bottom" Stroke="Gainsboro" StrokeThickness="1"></Rectangle>
- </Grid>
- </DataTemplate>
- </ListBox.ItemTemplate>
- </ListBox>
- </Expander>
- <Border Height="1" HorizontalAlignment="Stretch" Background="{DynamicResource MaterialDesignDivider}" SnapsToDevicePixels="True" />
- <Expander IsExpanded="True" HorizontalAlignment="Stretch" Header="Cartridges">
- <ListBox ItemsSource="{Binding Adapter.CartridgeTypesViewSource}" HorizontalContentAlignment="Stretch">
- <ListBox.ItemContainerStyle>
- <Style TargetType="ListBoxItem" BasedOn="{StaticResource {x:Type ListBoxItem}}">
- <Setter Property="HorizontalContentAlignment" Value="Stretch"></Setter>
- <Setter Property="VerticalContentAlignment" Value="Stretch"></Setter>
- <Setter Property="Padding" Value="1"></Setter>
- </Style>
- </ListBox.ItemContainerStyle>
- <ListBox.ItemTemplate>
- <DataTemplate>
- <Grid Background="Transparent" IsHitTestVisible="True" dragAndDrop:DragAndDropService.DraggableBorderBrush="{StaticResource AccentColorBrush}" dragAndDrop:DragAndDropService.Draggable="True" dragAndDrop:DragAndDropService.DraggingSurface="{Binding RelativeSource={RelativeSource AncestorType=UserControl},Path=DraggingSurface}">
- <StackPanel Orientation="Horizontal" Margin="2 8">
- <Image IsHitTestVisible="False" Width="24" Height="24" Source="../Images/cartridge.png" Stretch="Fill" RenderOptions.BitmapScalingMode="Fant"></Image>
- <StackPanel Margin="5 0 0 0" IsHitTestVisible="False">
- <TextBlock IsHitTestVisible="False" FontSize="10" Foreground="DimGray"><Run Text="{Binding Name}"></Run></TextBlock>
+ <Rectangle Margin="0 10 0 0" VerticalAlignment="Bottom" Stroke="Gainsboro" StrokeThickness="1"></Rectangle>
+ </Grid>
+ </DataTemplate>
+ </ListBox.ItemTemplate>
+ </ListBox>
+ </Expander>
+ </StackPanel>
+ </materialDesign:Card>
+
+ <materialDesign:Card Margin="5,10,5,0" Padding="10" Background="{DynamicResource MaterialDesignBackground}">
+ <DockPanel>
+ <materialDesign:PackIcon Kind="Magnify" Width="28" Height="28"></materialDesign:PackIcon>
+ <TextBox Margin="5 0 0 0" materialDesign:HintAssist.Hint="Search Component..." Text="{Binding Filter,UpdateSourceTrigger=PropertyChanged}"></TextBox>
+ </DockPanel>
+ </materialDesign:Card>
+ <materialDesign:Card Margin="5,10,5,0" Background="{DynamicResource MaterialDesignBackground}">
+ <StackPanel>
+ <Expander HorizontalAlignment="Stretch" Header="Dispensers">
+ <ListBox ItemsSource="{Binding Adapter.DispensersViewSource}" HorizontalContentAlignment="Stretch">
+ <ListBox.ItemContainerStyle>
+ <Style TargetType="ListBoxItem" BasedOn="{StaticResource {x:Type ListBoxItem}}">
+ <Setter Property="HorizontalContentAlignment" Value="Stretch"></Setter>
+ <Setter Property="VerticalContentAlignment" Value="Stretch"></Setter>
+ <Setter Property="Padding" Value="1"></Setter>
+ </Style>
+ </ListBox.ItemContainerStyle>
+ <ListBox.ItemTemplate>
+ <DataTemplate>
+ <Grid Background="Transparent" IsHitTestVisible="True" dragAndDrop:DragAndDropService.DraggableBorderBrush="{StaticResource AccentColorBrush}" dragAndDrop:DragAndDropService.Draggable="True" dragAndDrop:DragAndDropService.DraggingSurface="{Binding RelativeSource={RelativeSource AncestorType=UserControl},Path=DraggingSurface}">
+ <StackPanel Orientation="Horizontal" Margin="2 8">
+ <Image IsHitTestVisible="False" Width="24" Height="24" Source="../Images/injection.png" Stretch="Fill" RenderOptions.BitmapScalingMode="Fant"></Image>
+ <StackPanel Margin="5 0 0 0" IsHitTestVisible="False">
+ <TextBlock IsHitTestVisible="False" FontSize="10" Foreground="DimGray"><Run Text="{Binding DispenserTypes.Name}"></Run></TextBlock>
+ <TextBlock IsHitTestVisible="False" FontSize="10" Foreground="DimGray" Margin="0 2 0 0"><Run Text="{Binding SerialNumber}"></Run></TextBlock>
+ </StackPanel>
</StackPanel>
- </StackPanel>
- <Rectangle Margin="0 10 0 0" VerticalAlignment="Bottom" Stroke="Gainsboro" StrokeThickness="1"></Rectangle>
- </Grid>
- </DataTemplate>
- </ListBox.ItemTemplate>
- </ListBox>
- </Expander>
- <Border Height="1" HorizontalAlignment="Stretch" Background="{DynamicResource MaterialDesignDivider}" SnapsToDevicePixels="True" />
- <Expander IsExpanded="True" HorizontalAlignment="Stretch" Header="Mid Tanks">
- <ListBox ItemsSource="{Binding Adapter.MidTankTypesViewSource}" HorizontalContentAlignment="Stretch">
- <ListBox.ItemContainerStyle>
- <Style TargetType="ListBoxItem" BasedOn="{StaticResource {x:Type ListBoxItem}}">
- <Setter Property="HorizontalContentAlignment" Value="Stretch"></Setter>
- <Setter Property="VerticalContentAlignment" Value="Stretch"></Setter>
- <Setter Property="Padding" Value="1"></Setter>
- </Style>
- </ListBox.ItemContainerStyle>
- <ListBox.ItemTemplate>
- <DataTemplate>
- <Grid Background="Transparent" IsHitTestVisible="True" dragAndDrop:DragAndDropService.DraggableBorderBrush="{StaticResource AccentColorBrush}" dragAndDrop:DragAndDropService.Draggable="True" dragAndDrop:DragAndDropService.DraggingSurface="{Binding RelativeSource={RelativeSource AncestorType=UserControl},Path=DraggingSurface}">
- <StackPanel Orientation="Horizontal" Margin="2 8">
- <Image IsHitTestVisible="False" Width="24" Height="24" Source="../Images/tank.png" Stretch="Fill" RenderOptions.BitmapScalingMode="Fant"></Image>
- <StackPanel Margin="5 0 0 0" IsHitTestVisible="False">
- <TextBlock IsHitTestVisible="False" FontSize="10" Foreground="DimGray"><Run Text="{Binding Name}"></Run></TextBlock>
+ <Rectangle Margin="0 10 0 0" VerticalAlignment="Bottom" Stroke="Gainsboro" StrokeThickness="1"></Rectangle>
+ </Grid>
+ </DataTemplate>
+ </ListBox.ItemTemplate>
+ </ListBox>
+ </Expander>
+ <Border Height="1" HorizontalAlignment="Stretch" Background="{DynamicResource MaterialDesignDivider}" SnapsToDevicePixels="True" />
+ <Expander HorizontalAlignment="Stretch" Header="Cartridges">
+ <ListBox ItemsSource="{Binding Adapter.CartridgeTypesViewSource}" HorizontalContentAlignment="Stretch">
+ <ListBox.ItemContainerStyle>
+ <Style TargetType="ListBoxItem" BasedOn="{StaticResource {x:Type ListBoxItem}}">
+ <Setter Property="HorizontalContentAlignment" Value="Stretch"></Setter>
+ <Setter Property="VerticalContentAlignment" Value="Stretch"></Setter>
+ <Setter Property="Padding" Value="1"></Setter>
+ </Style>
+ </ListBox.ItemContainerStyle>
+ <ListBox.ItemTemplate>
+ <DataTemplate>
+ <Grid Background="Transparent" IsHitTestVisible="True" dragAndDrop:DragAndDropService.DraggableBorderBrush="{StaticResource AccentColorBrush}" dragAndDrop:DragAndDropService.Draggable="True" dragAndDrop:DragAndDropService.DraggingSurface="{Binding RelativeSource={RelativeSource AncestorType=UserControl},Path=DraggingSurface}">
+ <StackPanel Orientation="Horizontal" Margin="2 8">
+ <Image IsHitTestVisible="False" Width="24" Height="24" Source="../Images/cartridge.png" Stretch="Fill" RenderOptions.BitmapScalingMode="Fant"></Image>
+ <StackPanel Margin="5 0 0 0" IsHitTestVisible="False">
+ <TextBlock IsHitTestVisible="False" FontSize="10" Foreground="DimGray"><Run Text="{Binding Name}"></Run></TextBlock>
+ </StackPanel>
</StackPanel>
- </StackPanel>
- <Rectangle Margin="0 10 0 0" VerticalAlignment="Bottom" Stroke="Gainsboro" StrokeThickness="1"></Rectangle>
- </Grid>
- </DataTemplate>
- </ListBox.ItemTemplate>
- </ListBox>
- </Expander>
- <Border Height="1" HorizontalAlignment="Stretch" Background="{DynamicResource MaterialDesignDivider}" SnapsToDevicePixels="True" />
- <Expander IsExpanded="True" HorizontalAlignment="Stretch" Header="Liquids">
- <ListBox ItemsSource="{Binding Adapter.LiquidTypesViewSource}" HorizontalContentAlignment="Stretch">
- <ListBox.ItemContainerStyle>
- <Style TargetType="ListBoxItem" BasedOn="{StaticResource {x:Type ListBoxItem}}">
- <Setter Property="HorizontalContentAlignment" Value="Stretch"></Setter>
- <Setter Property="VerticalContentAlignment" Value="Stretch"></Setter>
- <Setter Property="Padding" Value="1"></Setter>
- </Style>
- </ListBox.ItemContainerStyle>
- <ListBox.ItemTemplate>
- <DataTemplate>
- <Grid Background="Transparent" IsHitTestVisible="True" dragAndDrop:DragAndDropService.DraggableBorderBrush="{StaticResource AccentColorBrush}" dragAndDrop:DragAndDropService.Draggable="True" dragAndDrop:DragAndDropService.DraggingSurface="{Binding RelativeSource={RelativeSource AncestorType=UserControl},Path=DraggingSurface}">
- <StackPanel Orientation="Horizontal" Margin="2 8">
- <Image IsHitTestVisible="False" Width="24" Height="24" Source="../Images/liquid.png" Stretch="Fill" RenderOptions.BitmapScalingMode="Fant"></Image>
- <StackPanel Margin="5 0 0 0" IsHitTestVisible="False">
- <TextBlock IsHitTestVisible="False" FontSize="10" Foreground="DimGray"><Run Text="{Binding Name}"></Run></TextBlock>
- <TextBlock IsHitTestVisible="False" FontSize="10" Foreground="DimGray"><Run>v</Run><Run Text="{Binding Version}"></Run></TextBlock>
- <Rectangle Height="5" Width="170">
- <Rectangle.Fill>
- <SolidColorBrush Color="{Binding Color,Converter={StaticResource ColorToIntegerConverter}}"></SolidColorBrush>
- </Rectangle.Fill>
- </Rectangle>
+ <Rectangle Margin="0 10 0 0" VerticalAlignment="Bottom" Stroke="Gainsboro" StrokeThickness="1"></Rectangle>
+ </Grid>
+ </DataTemplate>
+ </ListBox.ItemTemplate>
+ </ListBox>
+ </Expander>
+ <Border Height="1" HorizontalAlignment="Stretch" Background="{DynamicResource MaterialDesignDivider}" SnapsToDevicePixels="True" />
+ <Expander HorizontalAlignment="Stretch" Header="Mid Tanks">
+ <ListBox ItemsSource="{Binding Adapter.MidTankTypesViewSource}" HorizontalContentAlignment="Stretch">
+ <ListBox.ItemContainerStyle>
+ <Style TargetType="ListBoxItem" BasedOn="{StaticResource {x:Type ListBoxItem}}">
+ <Setter Property="HorizontalContentAlignment" Value="Stretch"></Setter>
+ <Setter Property="VerticalContentAlignment" Value="Stretch"></Setter>
+ <Setter Property="Padding" Value="1"></Setter>
+ </Style>
+ </ListBox.ItemContainerStyle>
+ <ListBox.ItemTemplate>
+ <DataTemplate>
+ <Grid Background="Transparent" IsHitTestVisible="True" dragAndDrop:DragAndDropService.DraggableBorderBrush="{StaticResource AccentColorBrush}" dragAndDrop:DragAndDropService.Draggable="True" dragAndDrop:DragAndDropService.DraggingSurface="{Binding RelativeSource={RelativeSource AncestorType=UserControl},Path=DraggingSurface}">
+ <StackPanel Orientation="Horizontal" Margin="2 8">
+ <Image IsHitTestVisible="False" Width="24" Height="24" Source="../Images/tank.png" Stretch="Fill" RenderOptions.BitmapScalingMode="Fant"></Image>
+ <StackPanel Margin="5 0 0 0" IsHitTestVisible="False">
+ <TextBlock IsHitTestVisible="False" FontSize="10" Foreground="DimGray"><Run Text="{Binding Name}"></Run></TextBlock>
+ </StackPanel>
</StackPanel>
- </StackPanel>
- <Rectangle Margin="0 10 0 0" VerticalAlignment="Bottom" Stroke="Gainsboro" StrokeThickness="1"></Rectangle>
- </Grid>
- </DataTemplate>
- </ListBox.ItemTemplate>
- </ListBox>
- </Expander>
- <Border Height="1" HorizontalAlignment="Stretch" Background="{DynamicResource MaterialDesignDivider}" SnapsToDevicePixels="True" />
- <Expander IsExpanded="True" HorizontalAlignment="Stretch" Header="Touch Panels">
- <ListBox ItemsSource="{Binding Adapter.ApplicationDisplayPanelVersionsViewSource}" HorizontalContentAlignment="Stretch">
- <ListBox.ItemContainerStyle>
- <Style TargetType="ListBoxItem" BasedOn="{StaticResource {x:Type ListBoxItem}}">
- <Setter Property="HorizontalContentAlignment" Value="Stretch"></Setter>
- <Setter Property="VerticalContentAlignment" Value="Stretch"></Setter>
- <Setter Property="Padding" Value="1"></Setter>
- </Style>
- </ListBox.ItemContainerStyle>
- <ListBox.ItemTemplate>
- <DataTemplate>
- <Grid Background="Transparent" IsHitTestVisible="True" dragAndDrop:DragAndDropService.DraggableBorderBrush="{StaticResource AccentColorBrush}" dragAndDrop:DragAndDropService.Draggable="True" dragAndDrop:DragAndDropService.DraggingSurface="{Binding RelativeSource={RelativeSource AncestorType=UserControl},Path=DraggingSurface}">
- <StackPanel Orientation="Horizontal" Margin="2 8">
- <Image IsHitTestVisible="False" Width="24" Height="24" Source="../Images/tablet.png" Stretch="Fill" RenderOptions.BitmapScalingMode="Fant"></Image>
- <StackPanel Margin="5 0 0 0" IsHitTestVisible="False">
- <TextBlock IsHitTestVisible="False" FontSize="10" Foreground="DimGray"><Run Text="{Binding Name}"></Run></TextBlock>
- <TextBlock IsHitTestVisible="False" FontSize="10" Foreground="DimGray"><Run>v</Run><Run Text="{Binding Version}"></Run></TextBlock>
+ <Rectangle Margin="0 10 0 0" VerticalAlignment="Bottom" Stroke="Gainsboro" StrokeThickness="1"></Rectangle>
+ </Grid>
+ </DataTemplate>
+ </ListBox.ItemTemplate>
+ </ListBox>
+ </Expander>
+ <Border Height="1" HorizontalAlignment="Stretch" Background="{DynamicResource MaterialDesignDivider}" SnapsToDevicePixels="True" />
+ <Expander HorizontalAlignment="Stretch" Header="Liquids">
+ <ListBox ItemsSource="{Binding Adapter.LiquidTypesViewSource}" HorizontalContentAlignment="Stretch">
+ <ListBox.ItemContainerStyle>
+ <Style TargetType="ListBoxItem" BasedOn="{StaticResource {x:Type ListBoxItem}}">
+ <Setter Property="HorizontalContentAlignment" Value="Stretch"></Setter>
+ <Setter Property="VerticalContentAlignment" Value="Stretch"></Setter>
+ <Setter Property="Padding" Value="1"></Setter>
+ </Style>
+ </ListBox.ItemContainerStyle>
+ <ListBox.ItemTemplate>
+ <DataTemplate>
+ <Grid Background="Transparent" IsHitTestVisible="True" dragAndDrop:DragAndDropService.DraggableBorderBrush="{StaticResource AccentColorBrush}" dragAndDrop:DragAndDropService.Draggable="True" dragAndDrop:DragAndDropService.DraggingSurface="{Binding RelativeSource={RelativeSource AncestorType=UserControl},Path=DraggingSurface}">
+ <StackPanel Orientation="Horizontal" Margin="2 8">
+ <Image IsHitTestVisible="False" Width="24" Height="24" Source="../Images/liquid.png" Stretch="Fill" RenderOptions.BitmapScalingMode="Fant"></Image>
+ <StackPanel Margin="5 0 0 0" IsHitTestVisible="False">
+ <TextBlock IsHitTestVisible="False" FontSize="10" Foreground="DimGray"><Run Text="{Binding Name}"></Run></TextBlock>
+ <TextBlock IsHitTestVisible="False" FontSize="10" Foreground="DimGray"><Run>v</Run><Run Text="{Binding Version}"></Run></TextBlock>
+ <Rectangle Height="5" Width="170">
+ <Rectangle.Fill>
+ <SolidColorBrush Color="{Binding Color,Converter={StaticResource ColorToIntegerConverter}}"></SolidColorBrush>
+ </Rectangle.Fill>
+ </Rectangle>
+ </StackPanel>
</StackPanel>
- </StackPanel>
- <Rectangle Margin="0 10 0 0" VerticalAlignment="Bottom" Stroke="Gainsboro" StrokeThickness="1"></Rectangle>
- </Grid>
- </DataTemplate>
- </ListBox.ItemTemplate>
- </ListBox>
- </Expander>
- <Border Height="1" HorizontalAlignment="Stretch" Background="{DynamicResource MaterialDesignDivider}" SnapsToDevicePixels="True" />
- <Expander IsExpanded="True" HorizontalAlignment="Stretch" Header="Application Versions">
- <ListBox ItemsSource="{Binding Adapter.ApplicationVersions}" HorizontalContentAlignment="Stretch">
- <ListBox.ItemContainerStyle>
- <Style TargetType="ListBoxItem" BasedOn="{StaticResource {x:Type ListBoxItem}}">
- <Setter Property="HorizontalContentAlignment" Value="Stretch"></Setter>
- <Setter Property="VerticalContentAlignment" Value="Stretch"></Setter>
- <Setter Property="Padding" Value="1"></Setter>
- </Style>
- </ListBox.ItemContainerStyle>
- <ListBox.ItemTemplate>
- <DataTemplate>
- <Grid Background="Transparent" IsHitTestVisible="True" dragAndDrop:DragAndDropService.DraggableBorderBrush="{StaticResource AccentColorBrush}" dragAndDrop:DragAndDropService.Draggable="True" dragAndDrop:DragAndDropService.DraggingSurface="{Binding RelativeSource={RelativeSource AncestorType=UserControl},Path=DraggingSurface}">
- <StackPanel Orientation="Horizontal" Margin="2 8">
- <Image IsHitTestVisible="False" Width="24" Height="24" Source="../Images/app.png" Stretch="Fill" RenderOptions.BitmapScalingMode="Fant"></Image>
- <StackPanel Margin="5 0 0 0" IsHitTestVisible="False">
- <TextBlock IsHitTestVisible="False" FontSize="10" Foreground="DimGray"><Run Text="{Binding Name}"></Run></TextBlock>
- <TextBlock IsHitTestVisible="False" FontSize="10" Foreground="DimGray"><Run>v</Run><Run Text="{Binding Version}"></Run></TextBlock>
+ <Rectangle Margin="0 10 0 0" VerticalAlignment="Bottom" Stroke="Gainsboro" StrokeThickness="1"></Rectangle>
+ </Grid>
+ </DataTemplate>
+ </ListBox.ItemTemplate>
+ </ListBox>
+ </Expander>
+ <Border Height="1" HorizontalAlignment="Stretch" Background="{DynamicResource MaterialDesignDivider}" SnapsToDevicePixels="True" />
+ <Expander HorizontalAlignment="Stretch" Header="Touch Panels">
+ <ListBox ItemsSource="{Binding Adapter.ApplicationDisplayPanelVersionsViewSource}" HorizontalContentAlignment="Stretch">
+ <ListBox.ItemContainerStyle>
+ <Style TargetType="ListBoxItem" BasedOn="{StaticResource {x:Type ListBoxItem}}">
+ <Setter Property="HorizontalContentAlignment" Value="Stretch"></Setter>
+ <Setter Property="VerticalContentAlignment" Value="Stretch"></Setter>
+ <Setter Property="Padding" Value="1"></Setter>
+ </Style>
+ </ListBox.ItemContainerStyle>
+ <ListBox.ItemTemplate>
+ <DataTemplate>
+ <Grid Background="Transparent" IsHitTestVisible="True" dragAndDrop:DragAndDropService.DraggableBorderBrush="{StaticResource AccentColorBrush}" dragAndDrop:DragAndDropService.Draggable="True" dragAndDrop:DragAndDropService.DraggingSurface="{Binding RelativeSource={RelativeSource AncestorType=UserControl},Path=DraggingSurface}">
+ <StackPanel Orientation="Horizontal" Margin="2 8">
+ <Image IsHitTestVisible="False" Width="24" Height="24" Source="../Images/tablet.png" Stretch="Fill" RenderOptions.BitmapScalingMode="Fant"></Image>
+ <StackPanel Margin="5 0 0 0" IsHitTestVisible="False">
+ <TextBlock IsHitTestVisible="False" FontSize="10" Foreground="DimGray"><Run Text="{Binding Name}"></Run></TextBlock>
+ <TextBlock IsHitTestVisible="False" FontSize="10" Foreground="DimGray"><Run>v</Run><Run Text="{Binding Version}"></Run></TextBlock>
+ </StackPanel>
</StackPanel>
- </StackPanel>
- <Rectangle Margin="0 10 0 0" VerticalAlignment="Bottom" Stroke="Gainsboro" StrokeThickness="1"></Rectangle>
- </Grid>
- </DataTemplate>
- </ListBox.ItemTemplate>
- </ListBox>
- </Expander>
- <Border Height="1" HorizontalAlignment="Stretch" Background="{DynamicResource MaterialDesignDivider}" SnapsToDevicePixels="True" />
- <Expander IsExpanded="True" HorizontalAlignment="Stretch" Header="Embedded Firmware Versions">
- <ListBox ItemsSource="{Binding Adapter.EmbeddedFirmwareVersionsViewSource}" HorizontalContentAlignment="Stretch">
- <ListBox.ItemContainerStyle>
- <Style TargetType="ListBoxItem" BasedOn="{StaticResource {x:Type ListBoxItem}}">
- <Setter Property="HorizontalContentAlignment" Value="Stretch"></Setter>
- <Setter Property="VerticalContentAlignment" Value="Stretch"></Setter>
- <Setter Property="Padding" Value="1"></Setter>
- </Style>
- </ListBox.ItemContainerStyle>
- <ListBox.ItemTemplate>
- <DataTemplate>
- <Grid Background="Transparent" IsHitTestVisible="True" dragAndDrop:DragAndDropService.DraggableBorderBrush="{StaticResource AccentColorBrush}" dragAndDrop:DragAndDropService.Draggable="True" dragAndDrop:DragAndDropService.DraggingSurface="{Binding RelativeSource={RelativeSource AncestorType=UserControl},Path=DraggingSurface}">
- <StackPanel Orientation="Horizontal" Margin="2 8">
- <Image IsHitTestVisible="False" Width="24" Height="24" Source="../Images/embedded.png" Stretch="Fill" RenderOptions.BitmapScalingMode="Fant"></Image>
- <StackPanel Margin="5 0 0 0" IsHitTestVisible="False">
- <TextBlock IsHitTestVisible="False" FontSize="10" Foreground="DimGray"><Run Text="{Binding Name}"></Run></TextBlock>
- <TextBlock IsHitTestVisible="False" FontSize="10" Foreground="DimGray"><Run>v</Run><Run Text="{Binding Version}"></Run></TextBlock>
+ <Rectangle Margin="0 10 0 0" VerticalAlignment="Bottom" Stroke="Gainsboro" StrokeThickness="1"></Rectangle>
+ </Grid>
+ </DataTemplate>
+ </ListBox.ItemTemplate>
+ </ListBox>
+ </Expander>
+ <Border Height="1" HorizontalAlignment="Stretch" Background="{DynamicResource MaterialDesignDivider}" SnapsToDevicePixels="True" />
+ <Expander HorizontalAlignment="Stretch" Header="OS Versions">
+ <ListBox ItemsSource="{Binding Adapter.ApplicationOsVersionsViewSource}" HorizontalContentAlignment="Stretch">
+ <ListBox.ItemContainerStyle>
+ <Style TargetType="ListBoxItem" BasedOn="{StaticResource {x:Type ListBoxItem}}">
+ <Setter Property="HorizontalContentAlignment" Value="Stretch"></Setter>
+ <Setter Property="VerticalContentAlignment" Value="Stretch"></Setter>
+ <Setter Property="Padding" Value="1"></Setter>
+ </Style>
+ </ListBox.ItemContainerStyle>
+ <ListBox.ItemTemplate>
+ <DataTemplate>
+ <Grid Background="Transparent" IsHitTestVisible="True" dragAndDrop:DragAndDropService.DraggableBorderBrush="{StaticResource AccentColorBrush}" dragAndDrop:DragAndDropService.Draggable="True" dragAndDrop:DragAndDropService.DraggingSurface="{Binding RelativeSource={RelativeSource AncestorType=UserControl},Path=DraggingSurface}">
+ <StackPanel Orientation="Horizontal" Margin="2 8">
+ <Image IsHitTestVisible="False" Width="24" Height="24" Source="../Images/android.png" Stretch="Fill" RenderOptions.BitmapScalingMode="Fant"></Image>
+ <StackPanel Margin="5 0 0 0" IsHitTestVisible="False">
+ <TextBlock IsHitTestVisible="False" FontSize="10" Foreground="DimGray"><Run Text="{Binding Name}"></Run></TextBlock>
+ <TextBlock IsHitTestVisible="False" FontSize="10" Foreground="DimGray"><Run>v</Run><Run Text="{Binding Version}"></Run></TextBlock>
+ </StackPanel>
</StackPanel>
- </StackPanel>
- <Rectangle Margin="0 10 0 0" VerticalAlignment="Bottom" Stroke="Gainsboro" StrokeThickness="1"></Rectangle>
- </Grid>
- </DataTemplate>
- </ListBox.ItemTemplate>
- </ListBox>
- </Expander>
- <Border Height="1" HorizontalAlignment="Stretch" Background="{DynamicResource MaterialDesignDivider}" SnapsToDevicePixels="True" />
- <Expander IsExpanded="True" HorizontalAlignment="Stretch" Header="Embedded Software Versions">
- <ListBox ItemsSource="{Binding Adapter.EmbeddedSoftwareVersionsViewSource}" HorizontalContentAlignment="Stretch">
- <ListBox.ItemContainerStyle>
- <Style TargetType="ListBoxItem" BasedOn="{StaticResource {x:Type ListBoxItem}}">
- <Setter Property="HorizontalContentAlignment" Value="Stretch"></Setter>
- <Setter Property="VerticalContentAlignment" Value="Stretch"></Setter>
- <Setter Property="Padding" Value="1"></Setter>
- </Style>
- </ListBox.ItemContainerStyle>
- <ListBox.ItemTemplate>
- <DataTemplate>
- <Grid Background="Transparent" IsHitTestVisible="True" dragAndDrop:DragAndDropService.DraggableBorderBrush="{StaticResource AccentColorBrush}" dragAndDrop:DragAndDropService.Draggable="True" dragAndDrop:DragAndDropService.DraggingSurface="{Binding RelativeSource={RelativeSource AncestorType=UserControl},Path=DraggingSurface}">
- <StackPanel Orientation="Horizontal" Margin="2 8">
- <Image IsHitTestVisible="False" Width="24" Height="24" Source="../Images/embedded-software.png" Stretch="Fill" RenderOptions.BitmapScalingMode="Fant"></Image>
- <StackPanel Margin="5 0 0 0" IsHitTestVisible="False">
- <TextBlock IsHitTestVisible="False" FontSize="10" Foreground="DimGray"><Run Text="{Binding Name}"></Run></TextBlock>
- <TextBlock IsHitTestVisible="False" FontSize="10" Foreground="DimGray"><Run>v</Run><Run Text="{Binding Version}"></Run></TextBlock>
+ <Rectangle Margin="0 10 0 0" VerticalAlignment="Bottom" Stroke="Gainsboro" StrokeThickness="1"></Rectangle>
+ </Grid>
+ </DataTemplate>
+ </ListBox.ItemTemplate>
+ </ListBox>
+ </Expander>
+ <Border Height="1" HorizontalAlignment="Stretch" Background="{DynamicResource MaterialDesignDivider}" SnapsToDevicePixels="True" />
+ <Expander HorizontalAlignment="Stretch" Header="Application Versions">
+ <ListBox ItemsSource="{Binding Adapter.ApplicationVersions}" HorizontalContentAlignment="Stretch">
+ <ListBox.ItemContainerStyle>
+ <Style TargetType="ListBoxItem" BasedOn="{StaticResource {x:Type ListBoxItem}}">
+ <Setter Property="HorizontalContentAlignment" Value="Stretch"></Setter>
+ <Setter Property="VerticalContentAlignment" Value="Stretch"></Setter>
+ <Setter Property="Padding" Value="1"></Setter>
+ </Style>
+ </ListBox.ItemContainerStyle>
+ <ListBox.ItemTemplate>
+ <DataTemplate>
+ <Grid Background="Transparent" IsHitTestVisible="True" dragAndDrop:DragAndDropService.DraggableBorderBrush="{StaticResource AccentColorBrush}" dragAndDrop:DragAndDropService.Draggable="True" dragAndDrop:DragAndDropService.DraggingSurface="{Binding RelativeSource={RelativeSource AncestorType=UserControl},Path=DraggingSurface}">
+ <StackPanel Orientation="Horizontal" Margin="2 8">
+ <Image IsHitTestVisible="False" Width="24" Height="24" Source="../Images/app.png" Stretch="Fill" RenderOptions.BitmapScalingMode="Fant"></Image>
+ <StackPanel Margin="5 0 0 0" IsHitTestVisible="False">
+ <TextBlock IsHitTestVisible="False" FontSize="10" Foreground="DimGray"><Run Text="{Binding Name}"></Run></TextBlock>
+ <TextBlock IsHitTestVisible="False" FontSize="10" Foreground="DimGray"><Run>v</Run><Run Text="{Binding Version}"></Run></TextBlock>
+ </StackPanel>
</StackPanel>
- </StackPanel>
- <Rectangle Margin="0 10 0 0" VerticalAlignment="Bottom" Stroke="Gainsboro" StrokeThickness="1"></Rectangle>
- </Grid>
- </DataTemplate>
- </ListBox.ItemTemplate>
- </ListBox>
- </Expander>
- </StackPanel>
- </materialDesign:Card>
+ <Rectangle Margin="0 10 0 0" VerticalAlignment="Bottom" Stroke="Gainsboro" StrokeThickness="1"></Rectangle>
+ </Grid>
+ </DataTemplate>
+ </ListBox.ItemTemplate>
+ </ListBox>
+ </Expander>
+ <Border Height="1" HorizontalAlignment="Stretch" Background="{DynamicResource MaterialDesignDivider}" SnapsToDevicePixels="True" />
+ <Expander HorizontalAlignment="Stretch" Header="Embedded Firmware Versions">
+ <ListBox ItemsSource="{Binding Adapter.EmbeddedFirmwareVersionsViewSource}" HorizontalContentAlignment="Stretch">
+ <ListBox.ItemContainerStyle>
+ <Style TargetType="ListBoxItem" BasedOn="{StaticResource {x:Type ListBoxItem}}">
+ <Setter Property="HorizontalContentAlignment" Value="Stretch"></Setter>
+ <Setter Property="VerticalContentAlignment" Value="Stretch"></Setter>
+ <Setter Property="Padding" Value="1"></Setter>
+ </Style>
+ </ListBox.ItemContainerStyle>
+ <ListBox.ItemTemplate>
+ <DataTemplate>
+ <Grid Background="Transparent" IsHitTestVisible="True" dragAndDrop:DragAndDropService.DraggableBorderBrush="{StaticResource AccentColorBrush}" dragAndDrop:DragAndDropService.Draggable="True" dragAndDrop:DragAndDropService.DraggingSurface="{Binding RelativeSource={RelativeSource AncestorType=UserControl},Path=DraggingSurface}">
+ <StackPanel Orientation="Horizontal" Margin="2 8">
+ <Image IsHitTestVisible="False" Width="24" Height="24" Source="../Images/embedded.png" Stretch="Fill" RenderOptions.BitmapScalingMode="Fant"></Image>
+ <StackPanel Margin="5 0 0 0" IsHitTestVisible="False">
+ <TextBlock IsHitTestVisible="False" FontSize="10" Foreground="DimGray"><Run Text="{Binding Name}"></Run></TextBlock>
+ <TextBlock IsHitTestVisible="False" FontSize="10" Foreground="DimGray"><Run>v</Run><Run Text="{Binding Version}"></Run></TextBlock>
+ </StackPanel>
+ </StackPanel>
+
+ <Rectangle Margin="0 10 0 0" VerticalAlignment="Bottom" Stroke="Gainsboro" StrokeThickness="1"></Rectangle>
+ </Grid>
+ </DataTemplate>
+ </ListBox.ItemTemplate>
+ </ListBox>
+ </Expander>
+ <Border Height="1" HorizontalAlignment="Stretch" Background="{DynamicResource MaterialDesignDivider}" SnapsToDevicePixels="True" />
+ <Expander HorizontalAlignment="Stretch" Header="Embedded Software Versions">
+ <ListBox ItemsSource="{Binding Adapter.EmbeddedSoftwareVersionsViewSource}" HorizontalContentAlignment="Stretch">
+ <ListBox.ItemContainerStyle>
+ <Style TargetType="ListBoxItem" BasedOn="{StaticResource {x:Type ListBoxItem}}">
+ <Setter Property="HorizontalContentAlignment" Value="Stretch"></Setter>
+ <Setter Property="VerticalContentAlignment" Value="Stretch"></Setter>
+ <Setter Property="Padding" Value="1"></Setter>
+ </Style>
+ </ListBox.ItemContainerStyle>
+ <ListBox.ItemTemplate>
+ <DataTemplate>
+ <Grid Background="Transparent" IsHitTestVisible="True" dragAndDrop:DragAndDropService.DraggableBorderBrush="{StaticResource AccentColorBrush}" dragAndDrop:DragAndDropService.Draggable="True" dragAndDrop:DragAndDropService.DraggingSurface="{Binding RelativeSource={RelativeSource AncestorType=UserControl},Path=DraggingSurface}">
+ <StackPanel Orientation="Horizontal" Margin="2 8">
+ <Image IsHitTestVisible="False" Width="24" Height="24" Source="../Images/embedded-software.png" Stretch="Fill" RenderOptions.BitmapScalingMode="Fant"></Image>
+ <StackPanel Margin="5 0 0 0" IsHitTestVisible="False">
+ <TextBlock IsHitTestVisible="False" FontSize="10" Foreground="DimGray"><Run Text="{Binding Name}"></Run></TextBlock>
+ <TextBlock IsHitTestVisible="False" FontSize="10" Foreground="DimGray"><Run>v</Run><Run Text="{Binding Version}"></Run></TextBlock>
+ </StackPanel>
+ </StackPanel>
+
+ <Rectangle Margin="0 10 0 0" VerticalAlignment="Bottom" Stroke="Gainsboro" StrokeThickness="1"></Rectangle>
+ </Grid>
+ </DataTemplate>
+ </ListBox.ItemTemplate>
+ </ListBox>
+ </Expander>
+ <Border Height="1" HorizontalAlignment="Stretch" Background="{DynamicResource MaterialDesignDivider}" SnapsToDevicePixels="True" />
+ <Expander HorizontalAlignment="Stretch" Header="Hardware Versions">
+ <ListBox ItemsSource="{Binding Adapter.HardwareVersionsViewSource}" HorizontalContentAlignment="Stretch">
+ <ListBox.ItemContainerStyle>
+ <Style TargetType="ListBoxItem" BasedOn="{StaticResource {x:Type ListBoxItem}}">
+ <Setter Property="HorizontalContentAlignment" Value="Stretch"></Setter>
+ <Setter Property="VerticalContentAlignment" Value="Stretch"></Setter>
+ <Setter Property="Padding" Value="1"></Setter>
+ </Style>
+ </ListBox.ItemContainerStyle>
+ <ListBox.ItemTemplate>
+ <DataTemplate>
+ <Grid Background="Transparent" IsHitTestVisible="True" dragAndDrop:DragAndDropService.DraggableBorderBrush="{StaticResource AccentColorBrush}" dragAndDrop:DragAndDropService.Draggable="True" dragAndDrop:DragAndDropService.DraggingSurface="{Binding RelativeSource={RelativeSource AncestorType=UserControl},Path=DraggingSurface}">
+ <StackPanel Orientation="Horizontal" Margin="2 8">
+ <Image IsHitTestVisible="False" Width="24" Height="24" Source="../Images/hardware.png" Stretch="Fill" RenderOptions.BitmapScalingMode="Fant"></Image>
+ <StackPanel Margin="5 0 0 0" IsHitTestVisible="False">
+ <TextBlock IsHitTestVisible="False" FontSize="10" Foreground="DimGray"><Run Text="{Binding Name}"></Run></TextBlock>
+ <TextBlock IsHitTestVisible="False" FontSize="10" Foreground="DimGray"><Run>v</Run><Run Text="{Binding Version}"></Run></TextBlock>
+ </StackPanel>
+ </StackPanel>
+
+ <Rectangle Margin="0 10 0 0" VerticalAlignment="Bottom" Stroke="Gainsboro" StrokeThickness="1"></Rectangle>
+ </Grid>
+ </DataTemplate>
+ </ListBox.ItemTemplate>
+ </ListBox>
+ </Expander>
+ </StackPanel>
+ </materialDesign:Card>
+ </StackPanel>
</Grid>
</ScrollViewer>
<Grid Grid.Row="1" Margin="10">
- <Button Height="40" Command="{Binding SaveCommand}">SAVE</Button>
+ <Button Height="50" Command="{Binding SaveCommand}">
+ <StackPanel Orientation="Horizontal">
+ <materialDesign:PackIcon Width="24" Height="24" VerticalAlignment="Center" Kind="ContentSave"></materialDesign:PackIcon>
+ <TextBlock FontSize="18" Margin="10 0 0 0" VerticalAlignment="Center">SAVE</TextBlock>
+ </StackPanel>
+ </Button>
</Grid>
</Grid>
</Grid>
diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.MachineDesigner/Views/MainView.xaml.cs b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.MachineDesigner/Views/MainView.xaml.cs
index ebf45624d..7c2a38401 100644
--- a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.MachineDesigner/Views/MainView.xaml.cs
+++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.MachineDesigner/Views/MainView.xaml.cs
@@ -10,6 +10,7 @@ using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
+using System.Windows.Media.Animation;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
@@ -25,15 +26,54 @@ namespace Tango.MachineStudio.MachineDesigner.Views
public partial class MainView : UserControl
{
private MainViewVM _vm;
+ private Rectangle _highlightRect;
+ private bool _highlightShown;
+ private DoubleAnimation _highlightAnimation;
public MainView()
{
InitializeComponent();
DraggingSurface = dragSufrace;
- this.Loaded += (x, y) =>
+ this.Loaded += (x, y) =>
{
_vm = DataContext as MainViewVM;
};
+
+ DragAndDropService.DragStarted += DragAndDropService_DragStarted;
+ DragAndDropService.DragEnded += DragAndDropService_DragEnded;
+
+ _highlightRect = new Rectangle();
+ _highlightRect.IsHitTestVisible = false;
+ _highlightRect.Stroke = Application.Current.Resources["AccentColorBrush"] as Brush;
+ _highlightRect.StrokeThickness = 2;
+ _highlightRect.StrokeDashArray = new DoubleCollection(new double[] { 3, 3, 3, 3 });
+ }
+
+ private void DragAndDropService_DragEnded(object sender, FrameworkElement e)
+ {
+ canvas.Children.Remove(_highlightRect);
+ _highlightShown = false;
+ _highlightRect.BeginAnimation(Rectangle.OpacityProperty, null);
+ }
+
+ private void DragAndDropService_DragStarted(object sender, FrameworkElement e)
+ {
+ if (e.DataContext is HardwareVersion)
+ {
+ SetHighlightRegion(hardwareGrid);
+ }
+ else if (e.DataContext is ApplicationVersion || e.DataContext is ApplicationOsVersion || e.DataContext is ApplicationDisplayPanelVersion)
+ {
+ SetHighlightRegion(gridTablet);
+ }
+ else if (e.DataContext is EmbeddedFirmwareVersion || e.DataContext is EmbeddedSoftwareVersion)
+ {
+ SetHighlightRegion(gridEmbedded);
+ }
+ else if (e.DataContext is Dispenser || e.DataContext is Cartridge || e.DataContext is LiquidType || e.DataContext is MidTankType)
+ {
+ SetHighlightRegion(gridIds);
+ }
}
public DraggingSurface DraggingSurface
@@ -74,6 +114,10 @@ namespace Tango.MachineStudio.MachineDesigner.Views
{
_vm.DropApplicationVersion(e.Draggable.DataContext as ApplicationVersion);
}
+ else if (e.Draggable.DataContext is ApplicationOsVersion)
+ {
+ _vm.DropApplicationOsVersion(e.Draggable.DataContext as ApplicationOsVersion);
+ }
}
private void OnEmbeddedDrop(object sender, DropEventArgs e)
@@ -87,5 +131,33 @@ namespace Tango.MachineStudio.MachineDesigner.Views
_vm.DropEmbeddedSoftware(e.Draggable.DataContext as EmbeddedSoftwareVersion);
}
}
+
+ private void MachineDrop(object sender, DropEventArgs e)
+ {
+ if (e.Draggable.DataContext is HardwareVersion)
+ {
+ _vm.DropHardwareVersion(e.Draggable.DataContext as HardwareVersion);
+ }
+ }
+
+ private void SetHighlightRegion(FrameworkElement element)
+ {
+ if (!_highlightShown)
+ {
+ _highlightRect.Width = element.Width;
+ _highlightRect.Height = element.Height;
+ Canvas.SetLeft(_highlightRect, Canvas.GetLeft(element));
+ Canvas.SetTop(_highlightRect, Canvas.GetTop(element));
+ canvas.Children.Add(_highlightRect);
+ _highlightShown = true;
+ _highlightAnimation = new DoubleAnimation();
+ _highlightAnimation.From = 0;
+ _highlightAnimation.To = 1;
+ _highlightAnimation.Duration = TimeSpan.FromSeconds(0.2);
+ _highlightAnimation.AutoReverse = true;
+ _highlightAnimation.RepeatBehavior = RepeatBehavior.Forever;
+ _highlightRect.BeginAnimation(Rectangle.OpacityProperty, _highlightAnimation);
+ }
+ }
}
}
diff --git a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Tango.MachineStudio.Common.csproj b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Tango.MachineStudio.Common.csproj
index 5cf171090..49fee31f1 100644
--- a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Tango.MachineStudio.Common.csproj
+++ b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Tango.MachineStudio.Common.csproj
@@ -120,6 +120,7 @@
<Generator>ResXFileCodeGenerator</Generator>
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
</EmbeddedResource>
+ <None Include="app.config" />
<None Include="packages.config" />
<None Include="Properties\Settings.settings">
<Generator>SettingsSingleFileGenerator</Generator>
diff --git a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/app.config b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/app.config
new file mode 100644
index 000000000..cacd4cd77
--- /dev/null
+++ b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/app.config
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8"?>
+<configuration>
+ <runtime>
+ <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
+ <dependentAssembly>
+ <assemblyIdentity name="System.Reactive.Core" publicKeyToken="94bc3704cddfc263" culture="neutral" />
+ <bindingRedirect oldVersion="0.0.0.0-3.0.3000.0" newVersion="3.0.3000.0" />
+ </dependentAssembly>
+ </assemblyBinding>
+ </runtime>
+</configuration> \ No newline at end of file
diff --git a/Software/Visual_Studio/Tango.Core/ExtensionMethods/IEnumerableExtensions.cs b/Software/Visual_Studio/Tango.Core/ExtensionMethods/IEnumerableExtensions.cs
index 0e430e631..a0bad0323 100644
--- a/Software/Visual_Studio/Tango.Core/ExtensionMethods/IEnumerableExtensions.cs
+++ b/Software/Visual_Studio/Tango.Core/ExtensionMethods/IEnumerableExtensions.cs
@@ -18,5 +18,18 @@ public static class IEnumerableExtensions
{
return new ObservableCollection<T>(enumerable);
}
+
+ /// <summary>
+ /// Replace an element in the array.
+ /// </summary>
+ /// <typeparam name="T"></typeparam>
+ /// <param name="items">The items.</param>
+ /// <param name="condition">The condition.</param>
+ /// <param name="replaceAction">The replace action.</param>
+ /// <returns></returns>
+ public static IEnumerable<T> Replace<T>(this IEnumerable<T> items, Predicate<T> condition, Func<T, T> replaceAction)
+ {
+ return items.Select(item => condition(item) ? replaceAction(item) : item);
+ }
}
diff --git a/Software/Visual_Studio/Tango.Core/ExtensionMethods/ObjectExtensions.cs b/Software/Visual_Studio/Tango.Core/ExtensionMethods/ObjectExtensions.cs
index a9855c49e..87beb06c3 100644
--- a/Software/Visual_Studio/Tango.Core/ExtensionMethods/ObjectExtensions.cs
+++ b/Software/Visual_Studio/Tango.Core/ExtensionMethods/ObjectExtensions.cs
@@ -10,23 +10,6 @@ using Tango.Serialization;
public static class ObjectExtensions
{
- /// <summary>
- /// Performs a deep clone of the specified object and returns the new instance.
- /// </summary>
- /// <typeparam name="T"></typeparam>
- /// <param name="obj">The object.</param>
- /// <returns></returns>
- public static T DeepClone<T>(this T obj)
- {
- XmlDataSerializer serializer = new XmlDataSerializer();
- using (MemoryStream ms = new MemoryStream())
- {
- serializer.SerializeToStream(obj, ms);
- ms.Position = 0;
- return serializer.DeserializeFromStream<T>(ms);
- }
- }
-
public static T ShallowClone<T>(this T obj)
{
var cloned = Activator.CreateInstance<T>();
diff --git a/Software/Visual_Studio/Tango.Core/ExtensionMethods/ObservableCollectionExtensions.cs b/Software/Visual_Studio/Tango.Core/ExtensionMethods/ObservableCollectionExtensions.cs
new file mode 100644
index 000000000..57acccab7
--- /dev/null
+++ b/Software/Visual_Studio/Tango.Core/ExtensionMethods/ObservableCollectionExtensions.cs
@@ -0,0 +1,26 @@
+using System;
+using System.Collections.Generic;
+using System.Collections.ObjectModel;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+
+public static class ObservableCollectionExtensions
+{
+ /// <summary>
+ /// Replace an element in the array.
+ /// </summary>
+ /// <typeparam name="T"></typeparam>
+ /// <param name="items">The items.</param>
+ /// <param name="condition">The condition.</param>
+ /// <param name="replaceAction">The replace action.</param>
+ /// <returns></returns>
+ public static void Replace<T>(this ObservableCollection<T> items, T oldElement, T newElement)
+ {
+ int index = items.IndexOf(oldElement);
+ items.Remove(oldElement);
+ items.Insert(index, newElement);
+ }
+}
+
diff --git a/Software/Visual_Studio/Tango.Core/Tango.Core.csproj b/Software/Visual_Studio/Tango.Core/Tango.Core.csproj
index 59afc2931..c560aa06f 100644
--- a/Software/Visual_Studio/Tango.Core/Tango.Core.csproj
+++ b/Software/Visual_Studio/Tango.Core/Tango.Core.csproj
@@ -80,6 +80,7 @@
<Compile Include="ExtensionMethods\DateTimeExtensions.cs" />
<Compile Include="ExtensionMethods\DependencyObjectExtensions.cs" />
<Compile Include="ExtensionMethods\EnumExtensions.cs" />
+ <Compile Include="ExtensionMethods\ObservableCollectionExtensions.cs" />
<Compile Include="ExtensionMethods\IEnumerableExtensions.cs" />
<Compile Include="ExtensionMethods\IMessageExtensions.cs" />
<Compile Include="ExtensionMethods\IParameterizedExtensions.cs" />
diff --git a/Software/Visual_Studio/Tango.DAL.Observables/Enumerations/LiquidTypes.cs b/Software/Visual_Studio/Tango.DAL.Observables/Enumerations/LiquidTypes.cs
index 79bb28717..bc2bf036b 100644
--- a/Software/Visual_Studio/Tango.DAL.Observables/Enumerations/LiquidTypes.cs
+++ b/Software/Visual_Studio/Tango.DAL.Observables/Enumerations/LiquidTypes.cs
@@ -16,10 +16,40 @@ namespace Tango.DAL.Observables
Cyan = 1,
/// <summary>
+ /// (Red)
+ /// </summary>
+ [Description("Red")]
+ Red = 7,
+
+ /// <summary>
+ /// (Transparent Ink)
+ /// </summary>
+ [Description("Transparent Ink")]
+ TransparentInk = 6,
+
+ /// <summary>
/// (Magenta)
/// </summary>
[Description("Magenta")]
Magenta = 2,
+ /// <summary>
+ /// (Lubricant)
+ /// </summary>
+ [Description("Lubricant")]
+ Lubricant = 5,
+
+ /// <summary>
+ /// (Yellow)
+ /// </summary>
+ [Description("Yellow")]
+ Yellow = 2,
+
+ /// <summary>
+ /// (Black)
+ /// </summary>
+ [Description("Black")]
+ Black = 4,
+
}
}
diff --git a/Software/Visual_Studio/Tango.DAL.Observables/ExtensionMethods/ConfigurationExtensions.cs b/Software/Visual_Studio/Tango.DAL.Observables/ExtensionMethods/ConfigurationExtensions.cs
index aa2012dba..266451c86 100644
--- a/Software/Visual_Studio/Tango.DAL.Observables/ExtensionMethods/ConfigurationExtensions.cs
+++ b/Software/Visual_Studio/Tango.DAL.Observables/ExtensionMethods/ConfigurationExtensions.cs
@@ -15,7 +15,8 @@ public static class ConfigurationExtensions
foreach (var idsPack in configuration.IdsPacks)
{
IdsPack clonedPack = idsPack.CloneEntity();
- clonedPack.Dispenser = idsPack.Dispenser.CloneEntity();
+ clonedPack.Configuration = cloned;
+ clonedPack.Dispenser = idsPack.Dispenser;
clonedPack.CartridgeTypes = idsPack.CartridgeTypes;
clonedPack.MidTankTypes = idsPack.MidTankTypes;
cloned.IdsPacks.Add(clonedPack);
diff --git a/Software/Visual_Studio/Tango.DAL.Observables/ExtensionMethods/ObservableEntityExtensions.cs b/Software/Visual_Studio/Tango.DAL.Observables/ExtensionMethods/ObservableEntityExtensions.cs
index eb7e6efb9..b5b767d12 100644
--- a/Software/Visual_Studio/Tango.DAL.Observables/ExtensionMethods/ObservableEntityExtensions.cs
+++ b/Software/Visual_Studio/Tango.DAL.Observables/ExtensionMethods/ObservableEntityExtensions.cs
@@ -10,6 +10,7 @@ public static class ObservableEntityExtensions
public static T CloneEntity<T>(this T entity) where T : class, IObservableEntity
{
T cloned = entity.ShallowClone();
+ cloned.ID = 0;
cloned.Guid = Guid.NewGuid().ToString();
cloned.LastUpdated = DateTime.UtcNow;
return cloned;
diff --git a/Software/Visual_Studio/Tango.DAL.Observables/ObservableEntity.cs b/Software/Visual_Studio/Tango.DAL.Observables/ObservableEntity.cs
index 4ae7c6835..0e9f59e54 100644
--- a/Software/Visual_Studio/Tango.DAL.Observables/ObservableEntity.cs
+++ b/Software/Visual_Studio/Tango.DAL.Observables/ObservableEntity.cs
@@ -14,6 +14,7 @@ using Tango.DAL.Remote.DB;
using Tango.DAL.Remote;
using Tango.Settings;
using Tango.Core.Helpers;
+using Force.DeepCloner;
namespace Tango.DAL.Observables
{
@@ -237,6 +238,22 @@ namespace Tango.DAL.Observables
});
}
+ public void ReplaceWith(ObservableEntity<T> entity)
+ {
+ entity.DeepCloneTo(this);
+ _isNew = false;
+ }
+
+ public ObservableEntity<T> DeepClone()
+ {
+ return DeepClonerExtensions.DeepClone(this);
+ }
+
+ public void CopyTo(ObservableEntity<T> entity)
+ {
+ this.DeepCloneTo(entity);
+ }
+
internal override void Save(List<IObservableEntity> savedEntities)
{
savedEntities.Add(this);
diff --git a/Software/Visual_Studio/Tango.DAL.Observables/ObservablesEntitiesAdapter.cs b/Software/Visual_Studio/Tango.DAL.Observables/ObservablesEntitiesAdapter.cs
index 228c8c7ac..63f33d1cb 100644
--- a/Software/Visual_Studio/Tango.DAL.Observables/ObservablesEntitiesAdapter.cs
+++ b/Software/Visual_Studio/Tango.DAL.Observables/ObservablesEntitiesAdapter.cs
@@ -5,8 +5,11 @@ using System.ComponentModel;
using System.Data.Entity;
using System.Linq;
using System.Text;
+using System.Threading;
using System.Threading.Tasks;
+using System.Windows;
using System.Windows.Data;
+using System.Windows.Threading;
using Tango.Core;
using Tango.DAL.Remote.DB;
using Tango.Settings;
@@ -17,6 +20,8 @@ namespace Tango.DAL.Observables
{
public event Action Initialized;
+ private static object _syncLock = new object();
+
private static ObservablesEntitiesAdapter _instance;
public static ObservablesEntitiesAdapter Instance
@@ -45,30 +50,85 @@ namespace Tango.DAL.Observables
public void Initialize()
{
- Invalidate();
+ Invalidate(true);
Initialized?.Invoke();
}
public void SaveChanges()
{
- Context.SaveChanges();
- Invalidate();
+ try
+ {
+ Context.SaveChanges();
+ }
+ catch
+ {
+ throw;
+ }
+ finally
+ {
+ Invalidate();
+ }
}
- public void Invalidate()
+ public void Invoke(Action action)
+ {
+ lock (_syncLock)
+ {
+ action();
+ }
+ }
+
+ public void Invalidate(bool initializing = false)
{
LoadedObjectsService.Reset();
+ if (initializing)
+ {
+ //Remove Unlinked Configurations..
+ List<CONFIGURATION> remove_configurations = new List<CONFIGURATION>();
+
+ foreach (var config in Context.CONFIGURATIONS)
+ {
+ if (Context.MACHINE_VERSIONS.FirstOrDefault(x => x.DEFAULT_CONFIGURATION_GUID == config.GUID) != null)
+ {
+ continue;
+ }
+
+ if (Context.MACHINES_CONFIGURATIONS.FirstOrDefault(x => x.CONFIGURATION_GUID == config.GUID) != null)
+ {
+ continue;
+ }
+
+ if (Context.MACHINES.FirstOrDefault(x => x.CONFIGURATION_GUID == config.GUID) != null)
+ {
+ continue;
+ }
+
+ remove_configurations.Add(config);
+ }
+
+ foreach (var config in remove_configurations)
+ {
+ Context.CONFIGURATIONS.Remove(config);
+ }
+
+ Context.SaveChanges();
+ //Remove Unlinked Configurations..
+ }
+
Organizations = Context.ORGANIZATIONS.Where(x => !x.DELETED).ToList().Select(x => ObservableEntity.CreateObservableFromEntity<Organization>(x)).ToObservableCollection();
+
OrganizationsViewSource = CreateCollectionView(Organizations);
Machines = Context.MACHINES.Where(x => !x.DELETED).ToList().Select(x => ObservableEntity.CreateObservableFromEntity<Machine>(x)).ToObservableCollection();
foreach (var machine in Machines)
{
- machine.MachinesConfigurations = machine.MachinesConfigurations.OrderByDescending(x => x.LastUpdated).ToObservableCollection();
+ machine.MachinesConfigurations = machine.MachinesConfigurations.OrderByDescending(x => x.Configuration.CreationDate).Take(30).ToObservableCollection();
}
+ MachinesConfigurations = Context.MACHINES_CONFIGURATIONS.Where(x => !x.DELETED).ToList().Select(x => ObservableEntity.CreateObservableFromEntity<MachinesConfiguration>(x)).ToObservableCollection();
+
MachineVersions = Context.MACHINE_VERSIONS.Where(x => !x.DELETED).ToList().OrderBy(x => x.VERSION).Select(x => ObservableEntity.CreateObservableFromEntity<MachineVersion>(x)).ToObservableCollection();
Addresses = Context.ADDRESSES.Where(x => !x.DELETED).ToList().OrderBy(x => x.ADDRESS_STRING).Select(x => ObservableEntity.CreateObservableFromEntity<Address>(x)).ToObservableCollection();
@@ -111,7 +171,7 @@ namespace Tango.DAL.Observables
HardwareVersions = Context.HARDWARE_VERSIONS.Where(x => !x.DELETED).ToList().OrderBy(x => x.VERSION).Select(x => ObservableEntity.CreateObservableFromEntity<HardwareVersion>(x)).ToObservableCollection();
- IdsPacks = Context.IDS_PACKS.Where(x => !x.DELETED).ToList().OrderBy(x => x.CONFIGURATION_GUID).Select(x => ObservableEntity.CreateObservableFromEntity<IdsPack>(x)).ToObservableCollection();
+ IdsPacks = Context.IDS_PACKS.Where(x => !x.DELETED).ToList().Select(x => ObservableEntity.CreateObservableFromEntity<IdsPack>(x)).ToObservableCollection();
Dispensers = Context.DISPENSERS.Where(x => !x.DELETED).ToList().Select(x => ObservableEntity.CreateObservableFromEntity<Dispenser>(x)).ToObservableCollection();
@@ -155,6 +215,12 @@ namespace Tango.DAL.Observables
Cats = Context.CATS.Where(x => !x.DELETED).ToList().Select(x => ObservableEntity.CreateObservableFromEntity<Cat>(x)).ToObservableCollection();
InitCollectionSources();
+
+ BindingOperations.EnableCollectionSynchronization(Machines, _syncLock);
+ BindingOperations.EnableCollectionSynchronization(MachinesViewSource, _syncLock);
+
+ BindingOperations.EnableCollectionSynchronization(MachinesConfigurations, _syncLock);
+ BindingOperations.EnableCollectionSynchronization(MachinesConfigurationsViewSource, _syncLock);
}
private ICollectionView CreateCollectionView<T>(ObservableCollection<T> collection)
diff --git a/Software/Visual_Studio/Tango.DAL.Observables/Tango.DAL.Observables.csproj b/Software/Visual_Studio/Tango.DAL.Observables/Tango.DAL.Observables.csproj
index e777d87f5..7bab22a0a 100644
--- a/Software/Visual_Studio/Tango.DAL.Observables/Tango.DAL.Observables.csproj
+++ b/Software/Visual_Studio/Tango.DAL.Observables/Tango.DAL.Observables.csproj
@@ -30,6 +30,9 @@
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
+ <Reference Include="DeepCloner, Version=0.10.0.0, Culture=neutral, PublicKeyToken=dc0b95cf99bf4e99, processorArchitecture=MSIL">
+ <HintPath>..\packages\DeepCloner.0.10.2\lib\net40\DeepCloner.dll</HintPath>
+ </Reference>
<Reference Include="EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL">
<HintPath>..\packages\EntityFramework.6.0.0\lib\net45\EntityFramework.dll</HintPath>
</Reference>
diff --git a/Software/Visual_Studio/Tango.DAL.Observables/packages.config b/Software/Visual_Studio/Tango.DAL.Observables/packages.config
index 5148e8474..0650c2517 100644
--- a/Software/Visual_Studio/Tango.DAL.Observables/packages.config
+++ b/Software/Visual_Studio/Tango.DAL.Observables/packages.config
@@ -1,5 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
+ <package id="DeepCloner" version="0.10.2" targetFramework="net46" />
<package id="EntityFramework" version="6.0.0" targetFramework="net46" />
<package id="Humanizer" version="2.2.0" targetFramework="net46" />
<package id="Humanizer.Core" version="2.2.0" targetFramework="net46" />
diff --git a/Software/Visual_Studio/Tango.DragAndDrop/DragAndDropService.cs b/Software/Visual_Studio/Tango.DragAndDrop/DragAndDropService.cs
index 52cb0d954..122954de8 100644
--- a/Software/Visual_Studio/Tango.DragAndDrop/DragAndDropService.cs
+++ b/Software/Visual_Studio/Tango.DragAndDrop/DragAndDropService.cs
@@ -45,6 +45,13 @@ namespace Tango.DragAndDrop
private static Border _dragBorder;
private const int MIN_DRAG_OFFSET = 8;
+ #region Events
+
+ public static event EventHandler<FrameworkElement> DragStarted;
+ public static event EventHandler<FrameworkElement> DragEnded;
+
+ #endregion
+
#region Delegates
/// <summary>
@@ -421,6 +428,8 @@ namespace Tango.DragAndDrop
{
if (Mouse.LeftButton == MouseButtonState.Pressed && _currentDragedElement != null)
{
+ DragStarted?.Invoke(_currentDragedElement, _currentDragedElement);
+
var surface = GetDraggingSurface(_currentDragedElement);
var rootElement = surface.Parent as FrameworkElement;
@@ -473,6 +482,7 @@ namespace Tango.DragAndDrop
}
else
{
+ DragEnded?.Invoke(_currentDragedElement, _currentDragedElement);
DropDraggable();
}
}