aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRoy Ben Shabat <Roy.mail.net@gmail.com>2020-03-30 00:56:02 +0300
committerRoy Ben Shabat <Roy.mail.net@gmail.com>2020-03-30 00:56:02 +0300
commit091a4bdeb2feadb4962c6be5deb367ab56d81707 (patch)
tree289a672287063108b851b2831d4c699dcddd26d9
parent3d6a882cf14f36297d8b379e0fdf65376064edf7 (diff)
downloadTango-091a4bdeb2feadb4962c6be5deb367ab56d81707.tar.gz
Tango-091a4bdeb2feadb4962c6be5deb367ab56d81707.zip
Implemented PPC Updates & Packages.
Moved PPC/FSE interfaces to PPC.Shared. Changes Generic Serialization to json.
-rw-r--r--Software/DB/PPC/Tango.mdfbin75497472 -> 75497472 bytes
-rw-r--r--Software/DB/PPC/Tango_log.ldfbin53673984 -> 53673984 bytes
-rw-r--r--Software/DB/TCC/TCC.mdfbin8388608 -> 8388608 bytes
-rw-r--r--Software/DB/TCC/TCC_log.ldfbin8388608 -> 8388608 bytes
-rw-r--r--Software/Visual_Studio/FSE/Modules/Tango.FSE.PPCConsole/Tango.FSE.PPCConsole.csproj12
-rw-r--r--Software/Visual_Studio/FSE/Modules/Tango.FSE.PPCConsole/ViewModelLocator.cs9
-rw-r--r--Software/Visual_Studio/FSE/Modules/Tango.FSE.PPCConsole/ViewModels/MainViewVM.cs1
-rw-r--r--Software/Visual_Studio/FSE/Modules/Tango.FSE.PPCConsole/ViewModels/MonitoringViewVM.cs2
-rw-r--r--Software/Visual_Studio/FSE/Modules/Tango.FSE.PPCConsole/ViewModels/UpdatesViewVM.cs138
-rw-r--r--Software/Visual_Studio/FSE/Modules/Tango.FSE.PPCConsole/Views/MainView.xaml2
-rw-r--r--Software/Visual_Studio/FSE/Modules/Tango.FSE.PPCConsole/Views/UpdatesView.xaml123
-rw-r--r--Software/Visual_Studio/FSE/Modules/Tango.FSE.PPCConsole/Views/UpdatesView.xaml.cs28
-rw-r--r--Software/Visual_Studio/FSE/Tango.FSE.Common/FSEViewModel.cs7
-rw-r--r--Software/Visual_Studio/FSE/Tango.FSE.Common/MachineUpdates/IMachineUpdatesProvider.cs13
-rw-r--r--Software/Visual_Studio/FSE/Tango.FSE.Common/MachineUpdates/MachineUpdatesResult.cs22
-rw-r--r--Software/Visual_Studio/FSE/Tango.FSE.Common/Performance/PerformancePackageEventArgs.cs2
-rw-r--r--Software/Visual_Studio/FSE/Tango.FSE.Common/Resources/Styles.xaml39
-rw-r--r--Software/Visual_Studio/FSE/Tango.FSE.Common/SystemInfo/ISystemInfoProvider.cs2
-rw-r--r--Software/Visual_Studio/FSE/Tango.FSE.Common/Tango.FSE.Common.csproj6
-rw-r--r--Software/Visual_Studio/FSE/Tango.FSE.UI/MachineUpdates/DefaultMachineUpdatesProvider.cs51
-rw-r--r--Software/Visual_Studio/FSE/Tango.FSE.UI/Performance/DefaultPerformanceProvider.cs2
-rw-r--r--Software/Visual_Studio/FSE/Tango.FSE.UI/SystemInfo/DefaultSystemInfoProvider.cs2
-rw-r--r--Software/Visual_Studio/FSE/Tango.FSE.UI/Tango.FSE.UI.csproj5
-rw-r--r--Software/Visual_Studio/FSE/Tango.FSE.UI/ViewModelLocator.cs4
-rw-r--r--Software/Visual_Studio/PPC/Modules/Tango.PPC.Technician/Tango.PPC.Technician.csproj4
-rw-r--r--Software/Visual_Studio/PPC/Modules/Tango.PPC.Technician/ViewModels/PackagesViewVM.cs1
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.Common/MachineUpdate/MachineUpdateManager.cs43
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.Common/Performance/DefaultPerformanceService.cs2
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.Common/SystemInfo/DefaultSystemInfoService.cs2
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.Common/Tango.PPC.Common.csproj9
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.Common/UpdatePackages/DefaultPackageRunner.cs1
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.Common/UpdatePackages/IPackageRunner.cs1
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.Common/UpdatePackages/PPCPackageAttribute.cs1
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.Common/UpdatePackages/PackageStateChangedEventArgs.cs1
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.Common/UpdatePackages/PackagesFile.cs1
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.Shared/Information/GetMachineInformationRequest.cs (renamed from Software/Visual_Studio/Tango.Integration/ExternalBridge/Network/Information/GetMachineInformationRequest.cs)2
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.Shared/Information/GetMachineInformationResponse.cs (renamed from Software/Visual_Studio/Tango.Integration/ExternalBridge/Network/Information/GetMachineInformationResponse.cs)2
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.Shared/Information/InformationPackage.cs (renamed from Software/Visual_Studio/Tango.Integration/ExternalBridge/Network/Information/InformationPackage.cs)2
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.Shared/Performance/PerformancePackage.cs (renamed from Software/Visual_Studio/Tango.Integration/ExternalBridge/Network/Performance/PerformancePackage.cs)2
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.Shared/Performance/StartPerformanceUpdatesRequest.cs (renamed from Software/Visual_Studio/Tango.Integration/ExternalBridge/Network/Performance/StartPerformanceUpdatesRequest.cs)2
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.Shared/Performance/StartPerformanceUpdatesResponse.cs (renamed from Software/Visual_Studio/Tango.Integration/ExternalBridge/Network/Performance/StartPerformanceUpdatesResponse.cs)2
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.Shared/Properties/AssemblyInfo.cs23
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.Shared/Properties/Resources.Designer.cs62
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.Shared/Properties/Resources.resx117
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.Shared/Properties/Settings.Designer.cs30
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.Shared/Properties/Settings.settings7
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.Shared/Tango.PPC.Shared.csproj104
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.Shared/Themes/Generic.xaml6
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.Shared/Updates/GetUpdatesAndPackagesRequest.cs13
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.Shared/Updates/GetUpdatesAndPackagesResponse.cs22
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.Shared/Updates/PackageInstallation.cs (renamed from Software/Visual_Studio/PPC/Tango.PPC.Common/UpdatePackages/PackageInstallation.cs)2
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.Shared/Updates/PackageInstallationState.cs (renamed from Software/Visual_Studio/PPC/Tango.PPC.Common/UpdatePackages/PackageInstallationState.cs)2
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.Shared/Updates/PackageType.cs (renamed from Software/Visual_Studio/PPC/Tango.PPC.Common/UpdatePackages/PackageType.cs)2
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.UI/Tango.PPC.UI.csproj6
-rw-r--r--Software/Visual_Studio/Tango.Core/ExtensionMethods/ObjectExtensions.cs6
-rw-r--r--Software/Visual_Studio/Tango.FileSystem/FileExplorerControl.cs13
-rw-r--r--Software/Visual_Studio/Tango.Integration/ExternalBridge/ExternalBridgeService.cs2
-rw-r--r--Software/Visual_Studio/Tango.Integration/Tango.Integration.csproj8
-rw-r--r--Software/Visual_Studio/Tango.SharedUI/Helpers/DataGridHelper.cs67
-rw-r--r--Software/Visual_Studio/Tango.SharedUI/Tango.SharedUI.csproj3
-rw-r--r--Software/Visual_Studio/Tango.Transport/GenericMessageSerializer.cs137
-rw-r--r--Software/Visual_Studio/Tango.Transport/ProtoSerializer.cs87
-rw-r--r--Software/Visual_Studio/Tango.Transport/Tango.Transport.csproj4
-rw-r--r--Software/Visual_Studio/Tango.Transport/TransporterBase.cs12
-rw-r--r--Software/Visual_Studio/Tango.sln35
65 files changed, 1178 insertions, 140 deletions
diff --git a/Software/DB/PPC/Tango.mdf b/Software/DB/PPC/Tango.mdf
index b785ddea1..30056be9a 100644
--- a/Software/DB/PPC/Tango.mdf
+++ b/Software/DB/PPC/Tango.mdf
Binary files differ
diff --git a/Software/DB/PPC/Tango_log.ldf b/Software/DB/PPC/Tango_log.ldf
index 3f2b8561e..0509b635d 100644
--- a/Software/DB/PPC/Tango_log.ldf
+++ b/Software/DB/PPC/Tango_log.ldf
Binary files differ
diff --git a/Software/DB/TCC/TCC.mdf b/Software/DB/TCC/TCC.mdf
index e9c5e31ae..55f397ec0 100644
--- a/Software/DB/TCC/TCC.mdf
+++ b/Software/DB/TCC/TCC.mdf
Binary files differ
diff --git a/Software/DB/TCC/TCC_log.ldf b/Software/DB/TCC/TCC_log.ldf
index 701c8f115..8e326c1e0 100644
--- a/Software/DB/TCC/TCC_log.ldf
+++ b/Software/DB/TCC/TCC_log.ldf
Binary files differ
diff --git a/Software/Visual_Studio/FSE/Modules/Tango.FSE.PPCConsole/Tango.FSE.PPCConsole.csproj b/Software/Visual_Studio/FSE/Modules/Tango.FSE.PPCConsole/Tango.FSE.PPCConsole.csproj
index be14e05f1..9484930e4 100644
--- a/Software/Visual_Studio/FSE/Modules/Tango.FSE.PPCConsole/Tango.FSE.PPCConsole.csproj
+++ b/Software/Visual_Studio/FSE/Modules/Tango.FSE.PPCConsole/Tango.FSE.PPCConsole.csproj
@@ -112,6 +112,10 @@
<Compile Include="ViewModels\MainViewVM.cs" />
<Compile Include="ViewModels\MonitoringViewVM.cs" />
<Compile Include="ViewModels\RemoteDesktopViewVM.cs" />
+ <Compile Include="ViewModels\UpdatesViewVM.cs" />
+ <Compile Include="Views\UpdatesView.xaml.cs">
+ <DependentUpon>UpdatesView.xaml</DependentUpon>
+ </Compile>
<Compile Include="Views\ConsoleView.xaml.cs">
<DependentUpon>ConsoleView.xaml</DependentUpon>
</Compile>
@@ -158,6 +162,10 @@
</None>
</ItemGroup>
<ItemGroup>
+ <ProjectReference Include="..\..\..\PPC\Tango.PPC.Shared\Tango.PPC.Shared.csproj">
+ <Project>{208C8BD8-72C6-4E3C-ACAA-351091A2ACC7}</Project>
+ <Name>Tango.PPC.Shared</Name>
+ </ProjectReference>
<ProjectReference Include="..\..\..\SideChains\RealTimeGraphX-master\RealTimeGraphX.WPF\RealTimeGraphX.WPF.csproj">
<Project>{6b9774f7-960d-438e-ad81-c6b9be328d50}</Project>
<Name>RealTimeGraphX.WPF</Name>
@@ -236,6 +244,10 @@
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
+ <Page Include="Views\UpdatesView.xaml">
+ <Generator>MSBuild:Compile</Generator>
+ <SubType>Designer</SubType>
+ </Page>
<Page Include="Views\ConsoleView.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
diff --git a/Software/Visual_Studio/FSE/Modules/Tango.FSE.PPCConsole/ViewModelLocator.cs b/Software/Visual_Studio/FSE/Modules/Tango.FSE.PPCConsole/ViewModelLocator.cs
index 93317651c..4faa72e8e 100644
--- a/Software/Visual_Studio/FSE/Modules/Tango.FSE.PPCConsole/ViewModelLocator.cs
+++ b/Software/Visual_Studio/FSE/Modules/Tango.FSE.PPCConsole/ViewModelLocator.cs
@@ -17,6 +17,7 @@ namespace Tango.FSE.PPCConsole
TangoIOC.Default.Register<RemoteDesktopViewVM>();
TangoIOC.Default.Register<MonitoringViewVM>();
TangoIOC.Default.Register<FileSystemViewVM>();
+ TangoIOC.Default.Register<UpdatesViewVM>();
}
public static MainViewVM MainViewVM
@@ -58,5 +59,13 @@ namespace Tango.FSE.PPCConsole
return TangoIOC.Default.GetInstance<FileSystemViewVM>();
}
}
+
+ public static UpdatesViewVM UpdatesViewVM
+ {
+ get
+ {
+ return TangoIOC.Default.GetInstance<UpdatesViewVM>();
+ }
+ }
}
}
diff --git a/Software/Visual_Studio/FSE/Modules/Tango.FSE.PPCConsole/ViewModels/MainViewVM.cs b/Software/Visual_Studio/FSE/Modules/Tango.FSE.PPCConsole/ViewModels/MainViewVM.cs
index 5c73f70cc..e18a75ef6 100644
--- a/Software/Visual_Studio/FSE/Modules/Tango.FSE.PPCConsole/ViewModels/MainViewVM.cs
+++ b/Software/Visual_Studio/FSE/Modules/Tango.FSE.PPCConsole/ViewModels/MainViewVM.cs
@@ -19,6 +19,7 @@ namespace Tango.FSE.PPCConsole.ViewModels
RemoteDesktopView,
MonitoringView,
FileSystemView,
+ UpdatesView,
}
private NavigationView _selectedView;
diff --git a/Software/Visual_Studio/FSE/Modules/Tango.FSE.PPCConsole/ViewModels/MonitoringViewVM.cs b/Software/Visual_Studio/FSE/Modules/Tango.FSE.PPCConsole/ViewModels/MonitoringViewVM.cs
index 890adcf54..64c8a124e 100644
--- a/Software/Visual_Studio/FSE/Modules/Tango.FSE.PPCConsole/ViewModels/MonitoringViewVM.cs
+++ b/Software/Visual_Studio/FSE/Modules/Tango.FSE.PPCConsole/ViewModels/MonitoringViewVM.cs
@@ -13,7 +13,7 @@ using Tango.Core.Helpers;
using Tango.FSE.Common;
using Tango.FSE.Common.Graphs;
using Tango.FSE.Common.Performance;
-using Tango.Integration.ExternalBridge.Network.Information;
+using Tango.PPC.Shared.Information;
using Tango.SystemInfo;
using static Tango.SharedUI.Controls.NavigationControl;
diff --git a/Software/Visual_Studio/FSE/Modules/Tango.FSE.PPCConsole/ViewModels/UpdatesViewVM.cs b/Software/Visual_Studio/FSE/Modules/Tango.FSE.PPCConsole/ViewModels/UpdatesViewVM.cs
new file mode 100644
index 000000000..df29a6eeb
--- /dev/null
+++ b/Software/Visual_Studio/FSE/Modules/Tango.FSE.PPCConsole/ViewModels/UpdatesViewVM.cs
@@ -0,0 +1,138 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Diagnostics;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows.Data;
+using Tango.BL.Entities;
+using Tango.Core.Commands;
+using Tango.FSE.Common;
+using Tango.PPC.Shared.Updates;
+using static Tango.SharedUI.Controls.NavigationControl;
+
+namespace Tango.FSE.PPCConsole.ViewModels
+{
+ public class UpdatesViewVM : FSEViewModel, INavigationViewModel
+ {
+ private bool _loaded;
+ private ICollectionView _updatesView;
+ private ICollectionView _packagesView;
+
+ private List<TangoUpdate> _updates;
+ public List<TangoUpdate> Updates
+ {
+ get { return _updates; }
+ set { _updates = value; RaisePropertyChangedAuto(); }
+ }
+
+ private List<PackageInstallation> _packages;
+ public List<PackageInstallation> Packages
+ {
+ get { return _packages; }
+ set { _packages = value; RaisePropertyChangedAuto(); }
+ }
+
+ private String _filter;
+ public String Filter
+ {
+ get { return _filter; }
+ set { _filter = value; RaisePropertyChangedAuto(); OnFilterChanged(); }
+ }
+
+ public RelayCommand RefreshCommand { get; set; }
+ public RelayCommand<TangoUpdate> UpdateDetailsCommand { get; set; }
+
+ public UpdatesViewVM()
+ {
+ UpdateDetailsCommand = new RelayCommand<TangoUpdate>(DisplayUpdateDetails);
+ RefreshCommand = new RelayCommand(RefreshUpdates);
+ }
+
+ private void RefreshUpdates()
+ {
+ _loaded = false;
+ LoadMachineUpdates();
+ }
+
+ private void DisplayUpdateDetails(TangoUpdate update)
+ {
+ Debug.WriteLine($"Update Details: {update.ApplicationVersion}");
+ }
+
+ public override void OnNavigatedTo()
+ {
+ base.OnNavigatedTo();
+ LoadMachineUpdates();
+ }
+
+ public override void OnApplicationStarted()
+ {
+ base.OnApplicationStarted();
+ MachineProvider.MachineConnected += MachineProvider_MachineConnected;
+ }
+
+ private void MachineProvider_MachineConnected(object sender, Common.Connection.MachineConnectedEventArgs e)
+ {
+ _loaded = false;
+
+ if (IsVisible)
+ {
+ LoadMachineUpdates();
+ }
+ }
+
+ private void OnFilterChanged()
+ {
+ _updatesView?.Refresh();
+ _packagesView?.Refresh();
+ }
+
+ private async void LoadMachineUpdates()
+ {
+ if (!_loaded)
+ {
+ try
+ {
+ IsFree = false;
+ await Task.Delay(1000);
+ var result = await MachineUpdatesProvider.GetUpdates();
+ Updates = result.Updates.ToList();
+ Packages = result.Packages.ToList();
+
+ _filter = null;
+ RaisePropertyChanged(nameof(Filter));
+
+ _updatesView = CollectionViewSource.GetDefaultView(Updates);
+ _updatesView.Filter = OnUpdatesFilter;
+
+ _packagesView = CollectionViewSource.GetDefaultView(Packages);
+ _packagesView.Filter = OnPackagesFilter;
+
+ _loaded = true;
+ }
+ catch (Exception ex)
+ {
+ LogManager.Log(ex, "Error retrieving machine updates.");
+ }
+ finally
+ {
+ IsFree = true;
+ }
+ }
+ }
+
+ private bool OnPackagesFilter(object obj)
+ {
+ PackageInstallation package = obj as PackageInstallation;
+ return String.IsNullOrWhiteSpace(Filter) || package.PackageName.ToLower().Contains(Filter.ToLower());
+ }
+
+ private bool OnUpdatesFilter(object obj)
+ {
+ TangoUpdate update = obj as TangoUpdate;
+ return String.IsNullOrWhiteSpace(Filter) || update.UpdateStatus.ToDescription().ToLower().Contains(Filter.ToLower());
+ }
+ }
+}
diff --git a/Software/Visual_Studio/FSE/Modules/Tango.FSE.PPCConsole/Views/MainView.xaml b/Software/Visual_Studio/FSE/Modules/Tango.FSE.PPCConsole/Views/MainView.xaml
index e11014515..93e1355be 100644
--- a/Software/Visual_Studio/FSE/Modules/Tango.FSE.PPCConsole/Views/MainView.xaml
+++ b/Software/Visual_Studio/FSE/Modules/Tango.FSE.PPCConsole/Views/MainView.xaml
@@ -34,7 +34,7 @@
<local:RemoteDesktopView Tag="REMOTE DESKTOP" />
<local:ConsoleView Tag="COMMAND PROMPT" />
<local:FileSystemView Tag="FILE SYSTEM" />
- <ContentControl Tag="UPDATES" />
+ <local:UpdatesView Tag="UPDATES" />
</commonControls:FSETabControl>
<TextBlock resolution:ResolutionHelper.MinWidth="1500" Margin="10 0 0 0" FontFamily="{StaticResource hand}" FontSize="{StaticResource FSE_ModuleHeaderFontSize}" Foreground="{StaticResource FSE_PrimaryAccentDarkBrush}" VerticalAlignment="Top" HorizontalAlignment="Left" Text="{Binding ElementName=tabs,Path=SelectedElement.Tag,Converter={StaticResource StringToTitleCaseConverter}}"></TextBlock>
diff --git a/Software/Visual_Studio/FSE/Modules/Tango.FSE.PPCConsole/Views/UpdatesView.xaml b/Software/Visual_Studio/FSE/Modules/Tango.FSE.PPCConsole/Views/UpdatesView.xaml
new file mode 100644
index 000000000..232d30893
--- /dev/null
+++ b/Software/Visual_Studio/FSE/Modules/Tango.FSE.PPCConsole/Views/UpdatesView.xaml
@@ -0,0 +1,123 @@
+<UserControl x:Class="Tango.FSE.PPCConsole.Views.UpdatesView"
+ xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
+ xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+ xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
+ xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
+ xmlns:global="clr-namespace:Tango.FSE.PPCConsole"
+ xmlns:controls="clr-namespace:Tango.FSE.Common.Controls;assembly=Tango.FSE.Common"
+ xmlns:helpers="clr-namespace:Tango.SharedUI.Helpers;assembly=Tango.SharedUI"
+ xmlns:vm="clr-namespace:Tango.FSE.PPCConsole.ViewModels"
+ xmlns:local="clr-namespace:Tango.FSE.PPCConsole.Views"
+ xmlns:material="http://materialdesigninxaml.net/winfx/xaml/themes"
+ xmlns:dragablz="http://dragablz.net/winfx/xaml/dragablz"
+ mc:Ignorable="d"
+ d:DesignHeight="450" d:DesignWidth="800" d:DataContext="{d:DesignInstance Type=vm:UpdatesViewVM, IsDesignTimeCreatable=False}" DataContext="{x:Static global:ViewModelLocator.UpdatesViewVM}">
+ <Grid>
+ <dragablz:TabablzControl FixedHeaderCount="2" Margin="0 20 0 0">
+ <TabItem Header="SOFTWARE UPDATES">
+ <Border Margin="0 10 0 0" BorderBrush="{StaticResource FSE_BorderBrush}" BorderThickness="1" CornerRadius="3" Padding="5" Background="{StaticResource FSE_PrimaryBackgroundDarkBrush}">
+ <DataGrid Style="{StaticResource FSE_DataGrid}" CellStyle="{StaticResource FSE_DataGrid_Cell}" ItemsSource="{Binding Updates}" helpers:DataGridHelper.DoubleClickCommand="{Binding UpdateDetailsCommand}">
+ <DataGrid.Columns>
+ <DataGridTemplateColumn Header="">
+ <DataGridTemplateColumn.CellTemplate>
+ <DataTemplate>
+ <material:PackIcon Width="20" Height="20">
+ <material:PackIcon.Style>
+ <Style TargetType="material:PackIcon">
+ <Setter Property="Kind" Value="Information"></Setter>
+ <Style.Triggers>
+ <DataTrigger Binding="{Binding IsSetup}" Value="True">
+ <Setter Property="Kind" Value="Settings"></Setter>
+ </DataTrigger>
+ <DataTrigger Binding="{Binding IsUpdate}" Value="True">
+ <Setter Property="Kind" Value="CloudDownload"></Setter>
+ </DataTrigger>
+ <DataTrigger Binding="{Binding IsDataBase}" Value="True">
+ <Setter Property="Kind" Value="Database"></Setter>
+ </DataTrigger>
+ <DataTrigger Binding="{Binding IsSynchronization}" Value="True">
+ <Setter Property="Kind" Value="Sync"></Setter>
+ </DataTrigger>
+ <DataTrigger Binding="{Binding IsOfflineUpdate}" Value="True">
+ <Setter Property="Kind" Value="Sd"></Setter>
+ </DataTrigger>
+ <DataTrigger Binding="{Binding IsOfflineFirmwareUpgrade}" Value="True">
+ <Setter Property="Kind" Value="Chip"></Setter>
+ </DataTrigger>
+ <DataTrigger Binding="{Binding IsStarted}" Value="True">
+ <Setter Property="Foreground" Value="{StaticResource FSE_OrangeBrush}"></Setter>
+ </DataTrigger>
+ <DataTrigger Binding="{Binding IsCompleted}" Value="True">
+ <Setter Property="Foreground" Value="{StaticResource FSE_GreenBrush}"></Setter>
+ </DataTrigger>
+ <DataTrigger Binding="{Binding IsFailed}" Value="True">
+ <Setter Property="Foreground" Value="{StaticResource FSE_RedBrush}"></Setter>
+ </DataTrigger>
+ </Style.Triggers>
+ </Style>
+ </material:PackIcon.Style>
+ </material:PackIcon>
+ </DataTemplate>
+ </DataGridTemplateColumn.CellTemplate>
+ </DataGridTemplateColumn>
+ <DataGridTextColumn Header="STARTED" Binding="{Binding StartDate,Converter={StaticResource DateTimeUTCToShortDateTimeConverter}}" Width="Auto" />
+ <DataGridTextColumn Header="APPLICATION" Binding="{Binding ApplicationVersion}" Width="Auto" />
+ <DataGridTextColumn Header="FIRMWARE" Binding="{Binding FirmwareVersion}" Width="Auto" />
+ <DataGridTextColumn Header="ENDED" Binding="{Binding EndDate,TargetNullValue='Never',FallbackValue='Never',Converter={StaticResource DateTimeUTCToShortDateTimeConverter}}" Width="Auto" />
+ <DataGridTextColumn Header="STATUS" Binding="{Binding UpdateStatus,Converter={StaticResource EnumToDescriptionConverter}}" Width="Auto" />
+ <DataGridTextColumn Header="FAILED REASON" Binding="{Binding FailedReason,Converter={StaticResource StringToOneLineConverter},ConverterParameter='80'}" Width="*" />
+ </DataGrid.Columns>
+ </DataGrid>
+ </Border>
+ </TabItem>
+ <TabItem Header="INSTALLED PACKAGES">
+ <Border Margin="0 10 0 0" BorderBrush="{StaticResource FSE_BorderBrush}" BorderThickness="1" CornerRadius="3" Padding="5" Background="{StaticResource FSE_PrimaryBackgroundDarkBrush}">
+ <DataGrid Style="{StaticResource FSE_DataGrid}" CellStyle="{StaticResource FSE_DataGrid_Cell}" ItemsSource="{Binding Packages}" SelectedItem="{Binding SelectedPackage}">
+ <DataGrid.Columns>
+ <DataGridTemplateColumn Header="">
+ <DataGridTemplateColumn.CellTemplate>
+ <DataTemplate>
+ <material:PackIcon Width="20" Height="20">
+ <material:PackIcon.Style>
+ <Style TargetType="material:PackIcon">
+ <Setter Property="Kind" Value="Pause"></Setter>
+ <Setter Property="Foreground" Value="{StaticResource FSE_PrimaryForegroundBrush}"></Setter>
+ <Style.Triggers>
+ <DataTrigger Binding="{Binding State}" Value="Failed">
+ <Setter Property="Kind" Value="Alert"></Setter>
+ <Setter Property="Foreground" Value="{StaticResource FSE_ErrorBrush}"></Setter>
+ </DataTrigger>
+ <DataTrigger Binding="{Binding State}" Value="Installed">
+ <Setter Property="Kind" Value="Check"></Setter>
+ <Setter Property="Foreground" Value="{StaticResource FSE_SuccessBrush}"></Setter>
+ </DataTrigger>
+ </Style.Triggers>
+ </Style>
+ </material:PackIcon.Style>
+ </material:PackIcon>
+ </DataTemplate>
+ </DataGridTemplateColumn.CellTemplate>
+ </DataGridTemplateColumn>
+ <DataGridTextColumn Header="Type" Width="60" Binding="{Binding Type}" />
+ <DataGridTextColumn Header="Date" Width="120" Binding="{Binding InstallationDate,Converter={StaticResource DateTimeUTCToShortDateTimeConverter}}" />
+ <DataGridTextColumn Header="Name" Width="*" Binding="{Binding PackageName}" />
+ </DataGrid.Columns>
+ </DataGrid>
+ </Border>
+ </TabItem>
+ </dragablz:TabablzControl>
+
+ <StackPanel Orientation="Horizontal" HorizontalAlignment="Right" VerticalAlignment="Top" Margin="0 20 20 0">
+ <material:PackIcon Kind="Search" VerticalAlignment="Center" Height="Auto" Width="25" />
+ <TextBox Margin="5 0 0 0" Padding="7" material:HintAssist.Hint="Filter..." VerticalContentAlignment="Center" IsEnabled="{Binding IsFree}" Style="{StaticResource FSE_Rounded_Corners_TextBox}" Width="200" Text="{Binding Filter,UpdateSourceTrigger=PropertyChanged,Delay=500}"></TextBox>
+ <controls:IconButton Icon="Refresh" Margin="40 0 0 0" Command="{Binding RefreshCommand}" IsEnabled="{Binding IsFree}" ToolTip="Refresh updates"></controls:IconButton>
+ </StackPanel>
+
+ <Grid Margin="4 74 4 4" Background="{StaticResource FSE_SemiTransparentBrush}" Visibility="{Binding IsBusy,Converter={StaticResource BooleanToVisibilityConverter},FallbackValue=Collapsed}">
+ <StackPanel HorizontalAlignment="Center" VerticalAlignment="Center">
+ <ProgressBar Style="{StaticResource FSE_CircularProgressBar}" Width="100" Height="100" IsIndeterminate="True"></ProgressBar>
+ <TextBlock HorizontalAlignment="Center" Margin="0 20 0 0">Loading machine updates...</TextBlock>
+ </StackPanel>
+ </Grid>
+ </Grid>
+</UserControl>
diff --git a/Software/Visual_Studio/FSE/Modules/Tango.FSE.PPCConsole/Views/UpdatesView.xaml.cs b/Software/Visual_Studio/FSE/Modules/Tango.FSE.PPCConsole/Views/UpdatesView.xaml.cs
new file mode 100644
index 000000000..959223f9b
--- /dev/null
+++ b/Software/Visual_Studio/FSE/Modules/Tango.FSE.PPCConsole/Views/UpdatesView.xaml.cs
@@ -0,0 +1,28 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows;
+using System.Windows.Controls;
+using System.Windows.Data;
+using System.Windows.Documents;
+using System.Windows.Input;
+using System.Windows.Media;
+using System.Windows.Media.Imaging;
+using System.Windows.Navigation;
+using System.Windows.Shapes;
+
+namespace Tango.FSE.PPCConsole.Views
+{
+ /// <summary>
+ /// Interaction logic for ConsoleView.xaml
+ /// </summary>
+ public partial class UpdatesView : UserControl
+ {
+ public UpdatesView()
+ {
+ InitializeComponent();
+ }
+ }
+}
diff --git a/Software/Visual_Studio/FSE/Tango.FSE.Common/FSEViewModel.cs b/Software/Visual_Studio/FSE/Tango.FSE.Common/FSEViewModel.cs
index ce61f30c6..bae284bfe 100644
--- a/Software/Visual_Studio/FSE/Tango.FSE.Common/FSEViewModel.cs
+++ b/Software/Visual_Studio/FSE/Tango.FSE.Common/FSEViewModel.cs
@@ -23,6 +23,7 @@ using Tango.FSE.Common.Logging;
using Tango.FSE.Common.Navigation;
using Tango.FSE.Common.Notifications;
using Tango.FSE.Common.Performance;
+using Tango.FSE.Common.MachineUpdates;
using Tango.FSE.Common.RemoteDesktop;
using Tango.FSE.Common.Resolution;
using Tango.FSE.Common.Storage;
@@ -126,6 +127,12 @@ namespace Tango.FSE.Common
public IStorageProvider StorageProvider { get; set; }
/// <summary>
+ /// Gets or sets the machine updates provider.
+ /// </summary>
+ [TangoInject]
+ public IMachineUpdatesProvider MachineUpdatesProvider { get; set; }
+
+ /// <summary>
/// Gets or sets the FSE service.
/// </summary>
[TangoInject]
diff --git a/Software/Visual_Studio/FSE/Tango.FSE.Common/MachineUpdates/IMachineUpdatesProvider.cs b/Software/Visual_Studio/FSE/Tango.FSE.Common/MachineUpdates/IMachineUpdatesProvider.cs
new file mode 100644
index 000000000..eff9e655b
--- /dev/null
+++ b/Software/Visual_Studio/FSE/Tango.FSE.Common/MachineUpdates/IMachineUpdatesProvider.cs
@@ -0,0 +1,13 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Tango.FSE.Common.MachineUpdates
+{
+ public interface IMachineUpdatesProvider
+ {
+ Task<MachineUpdatesResult> GetUpdates();
+ }
+}
diff --git a/Software/Visual_Studio/FSE/Tango.FSE.Common/MachineUpdates/MachineUpdatesResult.cs b/Software/Visual_Studio/FSE/Tango.FSE.Common/MachineUpdates/MachineUpdatesResult.cs
new file mode 100644
index 000000000..870b4b618
--- /dev/null
+++ b/Software/Visual_Studio/FSE/Tango.FSE.Common/MachineUpdates/MachineUpdatesResult.cs
@@ -0,0 +1,22 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using Tango.BL.Entities;
+using Tango.PPC.Shared.Updates;
+
+namespace Tango.FSE.Common.MachineUpdates
+{
+ public class MachineUpdatesResult
+ {
+ public List<TangoUpdate> Updates { get; set; }
+ public List<PackageInstallation> Packages { get; set; }
+
+ public MachineUpdatesResult()
+ {
+ Updates = new List<TangoUpdate>();
+ Packages = new List<PackageInstallation>();
+ }
+ }
+}
diff --git a/Software/Visual_Studio/FSE/Tango.FSE.Common/Performance/PerformancePackageEventArgs.cs b/Software/Visual_Studio/FSE/Tango.FSE.Common/Performance/PerformancePackageEventArgs.cs
index 669890a29..c177ed5a6 100644
--- a/Software/Visual_Studio/FSE/Tango.FSE.Common/Performance/PerformancePackageEventArgs.cs
+++ b/Software/Visual_Studio/FSE/Tango.FSE.Common/Performance/PerformancePackageEventArgs.cs
@@ -3,7 +3,7 @@ using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
-using Tango.Integration.ExternalBridge.Network.Performance;
+using Tango.PPC.Shared.Performance;
namespace Tango.FSE.Common.Performance
{
diff --git a/Software/Visual_Studio/FSE/Tango.FSE.Common/Resources/Styles.xaml b/Software/Visual_Studio/FSE/Tango.FSE.Common/Resources/Styles.xaml
index 5ff141bd7..8b549f98f 100644
--- a/Software/Visual_Studio/FSE/Tango.FSE.Common/Resources/Styles.xaml
+++ b/Software/Visual_Studio/FSE/Tango.FSE.Common/Resources/Styles.xaml
@@ -467,19 +467,24 @@
<Setter Property="BorderBrush" Value="{StaticResource FSE_BorderBrush}"></Setter>
<Setter Property="Foreground" Value="{StaticResource FSE_PrimaryForegroundBrush}"></Setter>
<Setter Property="VerticalContentAlignment" Value="Center"></Setter>
+ <Setter Property="HorizontalContentAlignment" Value="Stretch"></Setter>
+ <Setter Property="KeyboardNavigation.TabNavigation" Value="None"/>
+ <Setter Property="FocusVisualStyle" Value="{x:Null}"/>
+ <Setter Property="ScrollViewer.PanningMode" Value="VerticalFirst"/>
+ <Setter Property="Stylus.IsFlicksEnabled" Value="False"/>
<Setter Property="Padding" Value="3"></Setter>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type TextBoxBase}">
- <Border Background="{TemplateBinding Background}" x:Name="Bd" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" CornerRadius="5">
- <material:Ripple Feedback="{StaticResource FSE_PrimaryForegroundBrush}">
- <ScrollViewer x:Name="PART_ContentHost"/>
+ <Border x:Name="border" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" SnapsToDevicePixels="True" CornerRadius="5">
+ <material:Ripple HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch" Feedback="{StaticResource FSE_PrimaryForegroundBrush}">
+ <ScrollViewer x:Name="PART_ContentHost" Focusable="false" HorizontalScrollBarVisibility="Hidden" VerticalScrollBarVisibility="Hidden"/>
</material:Ripple>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsEnabled" Value="False">
- <Setter Property="Background" Value="{DynamicResource {x:Static SystemColors.ControlBrushKey}}" TargetName="Bd"/>
- <Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.GrayTextBrushKey}}"/>
+ <Setter Property="Background" Value="{StaticResource FSE_PrimaryBackgroundLightBrush}" TargetName="border"/>
+ <Setter Property="Foreground" Value="{StaticResource FSE_GrayBrush}"/>
</Trigger>
<Trigger Property="Width" Value="Auto">
<Setter Property="MinWidth" Value="100"/>
@@ -493,4 +498,28 @@
</Setter>
</Style>
+ <Style x:Key="FSE_DataGrid_Cell" TargetType="DataGridCell" BasedOn="{StaticResource {x:Type DataGridCell}}">
+ <Setter Property="BorderThickness" Value="0"/>
+ <Setter Property="FocusVisualStyle" Value="{x:Null}"/>
+ <Setter Property="VerticalContentAlignment" Value="Center"></Setter>
+ </Style>
+
+ <Style x:Key="FSE_DataGrid" TargetType="DataGrid" BasedOn="{StaticResource {x:Type DataGrid}}">
+ <Setter Property="Background" Value="Transparent"></Setter>
+ <Setter Property="AutoGenerateColumns" Value="False"></Setter>
+ <Setter Property="CanUserAddRows" Value="False"></Setter>
+ <Setter Property="CanUserDeleteRows" Value="False"></Setter>
+ <Setter Property="CanUserReorderColumns" Value="False"></Setter>
+ <Setter Property="CanUserResizeColumns" Value="False"></Setter>
+ <Setter Property="CanUserResizeRows" Value="False"></Setter>
+ <Setter Property="CanUserSortColumns" Value="False"></Setter>
+ <Setter Property="IsReadOnly" Value="True"></Setter>
+ <Setter Property="SelectionMode" Value="Single"></Setter>
+ <Setter Property="SelectionUnit" Value="FullRow"></Setter>
+ <Setter Property="RowHeight" Value="35"></Setter>
+ <Setter Property="HorizontalGridLinesBrush" Value="{StaticResource FSE_PrimaryBackgroundBrush}"></Setter>
+ <Setter Property="HorizontalScrollBarVisibility" Value="Disabled"></Setter>
+ <Setter Property="CellStyle" Value="{StaticResource LogsGridCellStyle}" />
+ </Style>
+
</ResourceDictionary> \ No newline at end of file
diff --git a/Software/Visual_Studio/FSE/Tango.FSE.Common/SystemInfo/ISystemInfoProvider.cs b/Software/Visual_Studio/FSE/Tango.FSE.Common/SystemInfo/ISystemInfoProvider.cs
index d21224c4d..b842d034f 100644
--- a/Software/Visual_Studio/FSE/Tango.FSE.Common/SystemInfo/ISystemInfoProvider.cs
+++ b/Software/Visual_Studio/FSE/Tango.FSE.Common/SystemInfo/ISystemInfoProvider.cs
@@ -3,7 +3,7 @@ using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
-using Tango.Integration.ExternalBridge.Network.Information;
+using Tango.PPC.Shared.Information;
namespace Tango.FSE.Common.SystemInfo
{
diff --git a/Software/Visual_Studio/FSE/Tango.FSE.Common/Tango.FSE.Common.csproj b/Software/Visual_Studio/FSE/Tango.FSE.Common/Tango.FSE.Common.csproj
index ce56e7f69..f2bbcb71f 100644
--- a/Software/Visual_Studio/FSE/Tango.FSE.Common/Tango.FSE.Common.csproj
+++ b/Software/Visual_Studio/FSE/Tango.FSE.Common/Tango.FSE.Common.csproj
@@ -135,6 +135,8 @@
<Compile Include="FSEModuleBase.cs" />
<Compile Include="Performance\IPerformanceProvider.cs" />
<Compile Include="Performance\PerformancePackageEventArgs.cs" />
+ <Compile Include="MachineUpdates\IMachineUpdatesProvider.cs" />
+ <Compile Include="MachineUpdates\MachineUpdatesResult.cs" />
<Compile Include="RemoteDesktop\DesktopFrameReceivedEventArgs.cs" />
<Compile Include="RemoteDesktop\IRemoteDesktopProvider.cs" />
<Compile Include="Resolution\IResolutionService.cs" />
@@ -272,6 +274,10 @@
</None>
</ItemGroup>
<ItemGroup>
+ <ProjectReference Include="..\..\PPC\Tango.PPC.Shared\Tango.PPC.Shared.csproj">
+ <Project>{208C8BD8-72C6-4E3C-ACAA-351091A2ACC7}</Project>
+ <Name>Tango.PPC.Shared</Name>
+ </ProjectReference>
<ProjectReference Include="..\..\SideChains\RealTimeGraphX-master\RealTimeGraphX.WPF\RealTimeGraphX.WPF.csproj">
<Project>{6b9774f7-960d-438e-ad81-c6b9be328d50}</Project>
<Name>RealTimeGraphX.WPF</Name>
diff --git a/Software/Visual_Studio/FSE/Tango.FSE.UI/MachineUpdates/DefaultMachineUpdatesProvider.cs b/Software/Visual_Studio/FSE/Tango.FSE.UI/MachineUpdates/DefaultMachineUpdatesProvider.cs
new file mode 100644
index 000000000..4f2ee9b02
--- /dev/null
+++ b/Software/Visual_Studio/FSE/Tango.FSE.UI/MachineUpdates/DefaultMachineUpdatesProvider.cs
@@ -0,0 +1,51 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using Tango.Core.DI;
+using Tango.FSE.Common.Connection;
+using Tango.FSE.Common.MachineUpdates;
+using Tango.PPC.Shared.Updates;
+using Tango.Transport;
+
+namespace Tango.FSE.UI.MachineUpdates
+{
+ public class DefaultMachineUpdatesProvider : IMachineUpdatesProvider
+ {
+ private MachineUpdatesResult _lastResult;
+ private IMachineProvider MachineProvider { get; set; }
+
+ public DefaultMachineUpdatesProvider(IMachineProvider machineProvider)
+ {
+ MachineProvider = machineProvider;
+ MachineProvider.MachineDisconnected += MachineProvider_MachineDisconnected;
+ }
+
+ private void MachineProvider_MachineDisconnected(object sender, MachineDisconnectedEventArgs e)
+ {
+ _lastResult = null;
+ }
+
+ public async Task<MachineUpdatesResult> GetUpdates()
+ {
+ if (_lastResult != null)
+ {
+ return _lastResult;
+ }
+
+ var response = await MachineProvider.MachineOperator.SendGenericRequest<GetUpdatesAndPackagesRequest, GetUpdatesAndPackagesResponse>(new GetUpdatesAndPackagesRequest() { }, new TransportRequestConfig()
+ {
+ Timeout = TimeSpan.FromSeconds(30)
+ });
+
+ MachineUpdatesResult result = new MachineUpdatesResult();
+ result.Updates = response.Updates.Select(x => x.ToObservable()).ToList();
+ result.Packages = response.Packages;
+
+ _lastResult = result;
+
+ return result;
+ }
+ }
+}
diff --git a/Software/Visual_Studio/FSE/Tango.FSE.UI/Performance/DefaultPerformanceProvider.cs b/Software/Visual_Studio/FSE/Tango.FSE.UI/Performance/DefaultPerformanceProvider.cs
index 69184290a..8debcd73b 100644
--- a/Software/Visual_Studio/FSE/Tango.FSE.UI/Performance/DefaultPerformanceProvider.cs
+++ b/Software/Visual_Studio/FSE/Tango.FSE.UI/Performance/DefaultPerformanceProvider.cs
@@ -7,7 +7,7 @@ using Tango.Core;
using Tango.Core.DI;
using Tango.FSE.Common.Connection;
using Tango.FSE.Common.Performance;
-using Tango.Integration.ExternalBridge.Network.Performance;
+using Tango.PPC.Shared.Performance;
namespace Tango.FSE.UI.Performance
{
diff --git a/Software/Visual_Studio/FSE/Tango.FSE.UI/SystemInfo/DefaultSystemInfoProvider.cs b/Software/Visual_Studio/FSE/Tango.FSE.UI/SystemInfo/DefaultSystemInfoProvider.cs
index e691939f0..5fcc1809d 100644
--- a/Software/Visual_Studio/FSE/Tango.FSE.UI/SystemInfo/DefaultSystemInfoProvider.cs
+++ b/Software/Visual_Studio/FSE/Tango.FSE.UI/SystemInfo/DefaultSystemInfoProvider.cs
@@ -7,7 +7,7 @@ using Tango.Core;
using Tango.Core.DI;
using Tango.FSE.Common.Connection;
using Tango.FSE.Common.SystemInfo;
-using Tango.Integration.ExternalBridge.Network.Information;
+using Tango.PPC.Shared.Information;
namespace Tango.FSE.UI.SystemInfo
{
diff --git a/Software/Visual_Studio/FSE/Tango.FSE.UI/Tango.FSE.UI.csproj b/Software/Visual_Studio/FSE/Tango.FSE.UI/Tango.FSE.UI.csproj
index b4854db5a..eb6810d48 100644
--- a/Software/Visual_Studio/FSE/Tango.FSE.UI/Tango.FSE.UI.csproj
+++ b/Software/Visual_Studio/FSE/Tango.FSE.UI/Tango.FSE.UI.csproj
@@ -170,6 +170,7 @@
</Compile>
<Compile Include="Panes\MachineConnectionPaneVM.cs" />
<Compile Include="Performance\DefaultPerformanceProvider.cs" />
+ <Compile Include="MachineUpdates\DefaultMachineUpdatesProvider.cs" />
<Compile Include="RemoteDesktop\DefaultRemoteDesktopProvider.cs" />
<Compile Include="Resolution\DefaultResolutionService.cs" />
<Compile Include="Storage\DefaultStorageProvider.cs" />
@@ -331,6 +332,10 @@
</None>
</ItemGroup>
<ItemGroup>
+ <ProjectReference Include="..\..\PPC\Tango.PPC.Shared\Tango.PPC.Shared.csproj">
+ <Project>{208C8BD8-72C6-4E3C-ACAA-351091A2ACC7}</Project>
+ <Name>Tango.PPC.Shared</Name>
+ </ProjectReference>
<ProjectReference Include="..\..\SideChains\Tango.AutoComplete\Tango.AutoComplete.csproj">
<Project>{bb2abb74-ba58-4812-83aa-ec8171f42df4}</Project>
<Name>Tango.AutoComplete</Name>
diff --git a/Software/Visual_Studio/FSE/Tango.FSE.UI/ViewModelLocator.cs b/Software/Visual_Studio/FSE/Tango.FSE.UI/ViewModelLocator.cs
index 1ffb0cbb7..d94e4ff9c 100644
--- a/Software/Visual_Studio/FSE/Tango.FSE.UI/ViewModelLocator.cs
+++ b/Software/Visual_Studio/FSE/Tango.FSE.UI/ViewModelLocator.cs
@@ -19,6 +19,7 @@ using Tango.FSE.Common.Modules;
using Tango.FSE.Common.Navigation;
using Tango.FSE.Common.Notifications;
using Tango.FSE.Common.Performance;
+using Tango.FSE.Common.MachineUpdates;
using Tango.FSE.Common.RemoteDesktop;
using Tango.FSE.Common.Resolution;
using Tango.FSE.Common.Storage;
@@ -36,6 +37,7 @@ using Tango.FSE.UI.Modules;
using Tango.FSE.UI.Navigation;
using Tango.FSE.UI.Notifications;
using Tango.FSE.UI.Performance;
+using Tango.FSE.UI.MachineUpdates;
using Tango.FSE.UI.RemoteDesktop;
using Tango.FSE.UI.Resolution;
using Tango.FSE.UI.Storage;
@@ -67,6 +69,7 @@ namespace Tango.FSE.UI
TangoIOC.Default.Unregister<IFileSystemProvider>();
TangoIOC.Default.Unregister<IStorageProvider>();
TangoIOC.Default.Unregister<FSEServicesContainer>();
+ TangoIOC.Default.Unregister<IMachineUpdatesProvider>();
//TangoIOC.Default.Unregister<ExternalBridgeScanner>();
//TangoIOC.Default.Unregister<IDiagnosticsFrameProvider>();
//TangoIOC.Default.Unregister<IEventLogger>();
@@ -93,6 +96,7 @@ namespace Tango.FSE.UI
TangoIOC.Default.Register<ILoggingProvider, DefaultLoggingProvider>();
TangoIOC.Default.Register<IFileSystemProvider, DefaultFileSystemProvider>();
TangoIOC.Default.Register<IStorageProvider, DefaultStorageProvider>();
+ TangoIOC.Default.Register<IMachineUpdatesProvider, DefaultMachineUpdatesProvider>();
TangoIOC.Default.Register<MainWindowVM>();
TangoIOC.Default.Register<MainViewVM>();
diff --git a/Software/Visual_Studio/PPC/Modules/Tango.PPC.Technician/Tango.PPC.Technician.csproj b/Software/Visual_Studio/PPC/Modules/Tango.PPC.Technician/Tango.PPC.Technician.csproj
index bdbc5992c..e8eec7b2f 100644
--- a/Software/Visual_Studio/PPC/Modules/Tango.PPC.Technician/Tango.PPC.Technician.csproj
+++ b/Software/Visual_Studio/PPC/Modules/Tango.PPC.Technician/Tango.PPC.Technician.csproj
@@ -181,6 +181,10 @@
<Project>{0BE74EEE-22CB-4DBA-B896-793B9E1A3AC0}</Project>
<Name>Tango.PPC.Common</Name>
</ProjectReference>
+ <ProjectReference Include="..\..\Tango.PPC.Shared\Tango.PPC.Shared.csproj">
+ <Project>{208C8BD8-72C6-4E3C-ACAA-351091A2ACC7}</Project>
+ <Name>Tango.PPC.Shared</Name>
+ </ProjectReference>
<ProjectReference Include="..\Tango.PPC.Browser\Tango.PPC.Browser.csproj">
<Project>{f02eaa84-ad59-465b-99a2-4422c13bfb72}</Project>
<Name>Tango.PPC.Browser</Name>
diff --git a/Software/Visual_Studio/PPC/Modules/Tango.PPC.Technician/ViewModels/PackagesViewVM.cs b/Software/Visual_Studio/PPC/Modules/Tango.PPC.Technician/ViewModels/PackagesViewVM.cs
index 3f3e44c4d..1d7e1780a 100644
--- a/Software/Visual_Studio/PPC/Modules/Tango.PPC.Technician/ViewModels/PackagesViewVM.cs
+++ b/Software/Visual_Studio/PPC/Modules/Tango.PPC.Technician/ViewModels/PackagesViewVM.cs
@@ -6,6 +6,7 @@ using System.Threading.Tasks;
using Tango.Core.DI;
using Tango.PPC.Common;
using Tango.PPC.Common.UpdatePackages;
+using Tango.PPC.Shared.Updates;
namespace Tango.PPC.Technician.ViewModels
{
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 1d010ecfb..733574f72 100644
--- a/Software/Visual_Studio/PPC/Tango.PPC.Common/MachineUpdate/MachineUpdateManager.cs
+++ b/Software/Visual_Studio/PPC/Tango.PPC.Common/MachineUpdate/MachineUpdateManager.cs
@@ -31,10 +31,14 @@ using Tango.SharedUI.Helpers;
using Tango.SQLExaminer;
using Tango.Transport.Web;
using System.Data.Entity;
+using Tango.PPC.Common.ExternalBridge;
+using Tango.Integration.ExternalBridge;
+using Tango.BL.DTO;
+using Tango.PPC.Shared.Updates;
namespace Tango.PPC.Common.MachineUpdate
{
- public class MachineUpdateManager : ExtendedObject, IMachineUpdateManager
+ public class MachineUpdateManager : ExtendedObject, IMachineUpdateManager, IExternalBridgeRequestHandler
{
private IPPCApplicationManager _app_manager;
private IMachineProvider _machineProvider;
@@ -95,7 +99,7 @@ namespace Tango.PPC.Common.MachineUpdate
/// Initializes a new instance of the <see cref="MachineUpdateManager"/> class.
/// </summary>
/// <param name="applicationManager">The application manager.</param>
- public MachineUpdateManager(PPCWebClient ppcWebClient, IPPCApplicationManager applicationManager, IMachineProvider machineProvider, IPackageRunner packageRunner)
+ public MachineUpdateManager(PPCWebClient ppcWebClient, IPPCApplicationManager applicationManager, IMachineProvider machineProvider, IPackageRunner packageRunner, IPPCExternalBridgeService externalBridge)
{
_client = ppcWebClient;
_machineProvider = machineProvider;
@@ -111,6 +115,8 @@ namespace Tango.PPC.Common.MachineUpdate
_checkForUpdateTimer = new System.Timers.Timer(_settings.AutoUpdateCheckInterval.TotalMilliseconds);
_checkForUpdateTimer.Elapsed += _checkForUpdateTimer_Elapsed;
_checkForUpdateTimer.Start();
+
+ externalBridge.RegisterRequestHandler(this);
}
#endregion
@@ -1676,5 +1682,38 @@ namespace Tango.PPC.Common.MachineUpdate
}
#endregion
+
+ #region External Bridge
+
+ public void OnReceiverDisconnected(ExternalBridgeReceiver receiver)
+ {
+
+ }
+
+ [ExternalBridgeRequestHandlerMethod(typeof(GetUpdatesAndPackagesRequest))]
+ public async void OnGetUpdatesAndPackagesRequest(GetUpdatesAndPackagesRequest request, String token, ExternalBridgeReceiver receiver)
+ {
+ try
+ {
+ using (ObservablesContext db = ObservablesContext.CreateDefault())
+ {
+ var updates = await db.TangoUpdates.OrderByDescending(x => x.StartDate).ToListAsync();
+ var updatesDTO = updates.Select(x => TangoUpdateDTO.FromObservable(x)).ToList();
+ var packages = (await _packageRunner.GetPackagesFile()).PackageInstallations;
+
+ var response = new GetUpdatesAndPackagesResponse();
+ response.Updates.AddRange(updatesDTO);
+ response.Packages.AddRange(packages);
+
+ await receiver.SendGenericResponse(response, token);
+ }
+ }
+ catch (Exception ex)
+ {
+ await receiver.SendErrorResponse(ex, token);
+ }
+ }
+
+ #endregion
}
}
diff --git a/Software/Visual_Studio/PPC/Tango.PPC.Common/Performance/DefaultPerformanceService.cs b/Software/Visual_Studio/PPC/Tango.PPC.Common/Performance/DefaultPerformanceService.cs
index 2279d204c..d327f6b00 100644
--- a/Software/Visual_Studio/PPC/Tango.PPC.Common/Performance/DefaultPerformanceService.cs
+++ b/Software/Visual_Studio/PPC/Tango.PPC.Common/Performance/DefaultPerformanceService.cs
@@ -10,8 +10,8 @@ using System.Threading.Tasks;
using Tango.Core;
using Tango.Core.DI;
using Tango.Integration.ExternalBridge;
-using Tango.Integration.ExternalBridge.Network.Performance;
using Tango.PPC.Common.ExternalBridge;
+using Tango.PPC.Shared.Performance;
namespace Tango.PPC.Common.Performance
{
diff --git a/Software/Visual_Studio/PPC/Tango.PPC.Common/SystemInfo/DefaultSystemInfoService.cs b/Software/Visual_Studio/PPC/Tango.PPC.Common/SystemInfo/DefaultSystemInfoService.cs
index a5e8516a4..ef8e31bce 100644
--- a/Software/Visual_Studio/PPC/Tango.PPC.Common/SystemInfo/DefaultSystemInfoService.cs
+++ b/Software/Visual_Studio/PPC/Tango.PPC.Common/SystemInfo/DefaultSystemInfoService.cs
@@ -8,10 +8,10 @@ using System.Threading.Tasks;
using Tango.Core;
using Tango.Core.DI;
using Tango.Integration.ExternalBridge;
-using Tango.Integration.ExternalBridge.Network.Information;
using Tango.PPC.Common.Application;
using Tango.PPC.Common.Connectivity;
using Tango.PPC.Common.ExternalBridge;
+using Tango.PPC.Shared.Information;
using Tango.Settings;
using Tango.SystemInfo;
diff --git a/Software/Visual_Studio/PPC/Tango.PPC.Common/Tango.PPC.Common.csproj b/Software/Visual_Studio/PPC/Tango.PPC.Common/Tango.PPC.Common.csproj
index ad197f47b..9575b7137 100644
--- a/Software/Visual_Studio/PPC/Tango.PPC.Common/Tango.PPC.Common.csproj
+++ b/Software/Visual_Studio/PPC/Tango.PPC.Common/Tango.PPC.Common.csproj
@@ -181,13 +181,10 @@
<Compile Include="UpdatePackages\IPackageRunner.cs" />
<Compile Include="UpdatePackages\IPPCPackage.cs" />
<Compile Include="UpdatePackages\PackageContext.cs" />
- <Compile Include="UpdatePackages\PackageInstallation.cs" />
- <Compile Include="UpdatePackages\PackageInstallationState.cs" />
<Compile Include="UpdatePackages\PackageProgressEventArgs.cs" />
<Compile Include="UpdatePackages\PackageRunnerResult.cs" />
<Compile Include="UpdatePackages\PackageStateChangedEventArgs.cs" />
<Compile Include="UpdatePackages\PackagesFile.cs" />
- <Compile Include="UpdatePackages\PackageType.cs" />
<Compile Include="UpdatePackages\PPCPackageAttribute.cs" />
<Compile Include="Publish\PPCPublisher.cs" />
<Compile Include="Publish\PublishInfo.cs" />
@@ -429,6 +426,10 @@
<Project>{6aa425c9-ea6a-4b01-aaed-5ff122e8b663}</Project>
<Name>Tango.WiFi</Name>
</ProjectReference>
+ <ProjectReference Include="..\Tango.PPC.Shared\Tango.PPC.Shared.csproj">
+ <Project>{208c8bd8-72c6-4e3c-acaa-351091a2acc7}</Project>
+ <Name>Tango.PPC.Shared</Name>
+ </ProjectReference>
</ItemGroup>
<ItemGroup>
<BootstrapperPackage Include=".NETFramework,Version=v4.6">
@@ -455,7 +456,7 @@
</Target>
<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/PPC/Tango.PPC.Common/UpdatePackages/DefaultPackageRunner.cs b/Software/Visual_Studio/PPC/Tango.PPC.Common/UpdatePackages/DefaultPackageRunner.cs
index c94aedeb0..68b31da4e 100644
--- a/Software/Visual_Studio/PPC/Tango.PPC.Common/UpdatePackages/DefaultPackageRunner.cs
+++ b/Software/Visual_Studio/PPC/Tango.PPC.Common/UpdatePackages/DefaultPackageRunner.cs
@@ -15,6 +15,7 @@ using Tango.Core.Helpers;
using Tango.PPC.Common.Application;
using Tango.PPC.Common.Connection;
using Tango.PPC.Common.Notifications;
+using Tango.PPC.Shared.Updates;
namespace Tango.PPC.Common.UpdatePackages
{
diff --git a/Software/Visual_Studio/PPC/Tango.PPC.Common/UpdatePackages/IPackageRunner.cs b/Software/Visual_Studio/PPC/Tango.PPC.Common/UpdatePackages/IPackageRunner.cs
index b864100aa..cdffd1ddc 100644
--- a/Software/Visual_Studio/PPC/Tango.PPC.Common/UpdatePackages/IPackageRunner.cs
+++ b/Software/Visual_Studio/PPC/Tango.PPC.Common/UpdatePackages/IPackageRunner.cs
@@ -3,6 +3,7 @@ using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
+using Tango.PPC.Shared.Updates;
namespace Tango.PPC.Common.UpdatePackages
{
diff --git a/Software/Visual_Studio/PPC/Tango.PPC.Common/UpdatePackages/PPCPackageAttribute.cs b/Software/Visual_Studio/PPC/Tango.PPC.Common/UpdatePackages/PPCPackageAttribute.cs
index 3186b57b1..6067b0c18 100644
--- a/Software/Visual_Studio/PPC/Tango.PPC.Common/UpdatePackages/PPCPackageAttribute.cs
+++ b/Software/Visual_Studio/PPC/Tango.PPC.Common/UpdatePackages/PPCPackageAttribute.cs
@@ -3,6 +3,7 @@ using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
+using Tango.PPC.Shared.Updates;
namespace Tango.PPC.Common.UpdatePackages
{
diff --git a/Software/Visual_Studio/PPC/Tango.PPC.Common/UpdatePackages/PackageStateChangedEventArgs.cs b/Software/Visual_Studio/PPC/Tango.PPC.Common/UpdatePackages/PackageStateChangedEventArgs.cs
index 9c8cbe2c0..cadba4c72 100644
--- a/Software/Visual_Studio/PPC/Tango.PPC.Common/UpdatePackages/PackageStateChangedEventArgs.cs
+++ b/Software/Visual_Studio/PPC/Tango.PPC.Common/UpdatePackages/PackageStateChangedEventArgs.cs
@@ -3,6 +3,7 @@ using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
+using Tango.PPC.Shared.Updates;
namespace Tango.PPC.Common.UpdatePackages
{
diff --git a/Software/Visual_Studio/PPC/Tango.PPC.Common/UpdatePackages/PackagesFile.cs b/Software/Visual_Studio/PPC/Tango.PPC.Common/UpdatePackages/PackagesFile.cs
index 2fbd30d9f..7af30d2ec 100644
--- a/Software/Visual_Studio/PPC/Tango.PPC.Common/UpdatePackages/PackagesFile.cs
+++ b/Software/Visual_Studio/PPC/Tango.PPC.Common/UpdatePackages/PackagesFile.cs
@@ -3,6 +3,7 @@ using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
+using Tango.PPC.Shared.Updates;
namespace Tango.PPC.Common.UpdatePackages
{
diff --git a/Software/Visual_Studio/Tango.Integration/ExternalBridge/Network/Information/GetMachineInformationRequest.cs b/Software/Visual_Studio/PPC/Tango.PPC.Shared/Information/GetMachineInformationRequest.cs
index 38c06b024..1464c15ac 100644
--- a/Software/Visual_Studio/Tango.Integration/ExternalBridge/Network/Information/GetMachineInformationRequest.cs
+++ b/Software/Visual_Studio/PPC/Tango.PPC.Shared/Information/GetMachineInformationRequest.cs
@@ -4,7 +4,7 @@ using System.Linq;
using System.Text;
using System.Threading.Tasks;
-namespace Tango.Integration.ExternalBridge.Network.Information
+namespace Tango.PPC.Shared.Information
{
public class GetMachineInformationRequest
{
diff --git a/Software/Visual_Studio/Tango.Integration/ExternalBridge/Network/Information/GetMachineInformationResponse.cs b/Software/Visual_Studio/PPC/Tango.PPC.Shared/Information/GetMachineInformationResponse.cs
index 5ae1aa440..e88bfce05 100644
--- a/Software/Visual_Studio/Tango.Integration/ExternalBridge/Network/Information/GetMachineInformationResponse.cs
+++ b/Software/Visual_Studio/PPC/Tango.PPC.Shared/Information/GetMachineInformationResponse.cs
@@ -4,7 +4,7 @@ using System.Linq;
using System.Text;
using System.Threading.Tasks;
-namespace Tango.Integration.ExternalBridge.Network.Information
+namespace Tango.PPC.Shared.Information
{
public class GetMachineInformationResponse
{
diff --git a/Software/Visual_Studio/Tango.Integration/ExternalBridge/Network/Information/InformationPackage.cs b/Software/Visual_Studio/PPC/Tango.PPC.Shared/Information/InformationPackage.cs
index afa23492e..e48413db6 100644
--- a/Software/Visual_Studio/Tango.Integration/ExternalBridge/Network/Information/InformationPackage.cs
+++ b/Software/Visual_Studio/PPC/Tango.PPC.Shared/Information/InformationPackage.cs
@@ -5,7 +5,7 @@ using System.Text;
using System.Threading.Tasks;
using Tango.SystemInfo;
-namespace Tango.Integration.ExternalBridge.Network.Information
+namespace Tango.PPC.Shared.Information
{
public class InformationPackage
{
diff --git a/Software/Visual_Studio/Tango.Integration/ExternalBridge/Network/Performance/PerformancePackage.cs b/Software/Visual_Studio/PPC/Tango.PPC.Shared/Performance/PerformancePackage.cs
index 56921e0c5..855437bcc 100644
--- a/Software/Visual_Studio/Tango.Integration/ExternalBridge/Network/Performance/PerformancePackage.cs
+++ b/Software/Visual_Studio/PPC/Tango.PPC.Shared/Performance/PerformancePackage.cs
@@ -4,7 +4,7 @@ using System.Linq;
using System.Text;
using System.Threading.Tasks;
-namespace Tango.Integration.ExternalBridge.Network.Performance
+namespace Tango.PPC.Shared.Performance
{
public class PerformancePackage
{
diff --git a/Software/Visual_Studio/Tango.Integration/ExternalBridge/Network/Performance/StartPerformanceUpdatesRequest.cs b/Software/Visual_Studio/PPC/Tango.PPC.Shared/Performance/StartPerformanceUpdatesRequest.cs
index 2c036e937..69fbaf631 100644
--- a/Software/Visual_Studio/Tango.Integration/ExternalBridge/Network/Performance/StartPerformanceUpdatesRequest.cs
+++ b/Software/Visual_Studio/PPC/Tango.PPC.Shared/Performance/StartPerformanceUpdatesRequest.cs
@@ -4,7 +4,7 @@ using System.Linq;
using System.Text;
using System.Threading.Tasks;
-namespace Tango.Integration.ExternalBridge.Network.Performance
+namespace Tango.PPC.Shared.Performance
{
public class StartPerformanceUpdatesRequest
{
diff --git a/Software/Visual_Studio/Tango.Integration/ExternalBridge/Network/Performance/StartPerformanceUpdatesResponse.cs b/Software/Visual_Studio/PPC/Tango.PPC.Shared/Performance/StartPerformanceUpdatesResponse.cs
index 8eb22bdef..196225572 100644
--- a/Software/Visual_Studio/Tango.Integration/ExternalBridge/Network/Performance/StartPerformanceUpdatesResponse.cs
+++ b/Software/Visual_Studio/PPC/Tango.PPC.Shared/Performance/StartPerformanceUpdatesResponse.cs
@@ -4,7 +4,7 @@ using System.Linq;
using System.Text;
using System.Threading.Tasks;
-namespace Tango.Integration.ExternalBridge.Network.Performance
+namespace Tango.PPC.Shared.Performance
{
public class StartPerformanceUpdatesResponse
{
diff --git a/Software/Visual_Studio/PPC/Tango.PPC.Shared/Properties/AssemblyInfo.cs b/Software/Visual_Studio/PPC/Tango.PPC.Shared/Properties/AssemblyInfo.cs
new file mode 100644
index 000000000..c9efeb790
--- /dev/null
+++ b/Software/Visual_Studio/PPC/Tango.PPC.Shared/Properties/AssemblyInfo.cs
@@ -0,0 +1,23 @@
+using System.Reflection;
+using System.Resources;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+using System.Windows;
+
+// General Information about an assembly is controlled through the following
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("Tango Panel PC Shared Library")]
+[assembly: AssemblyVersion("1.0.0.0")]
+
+[assembly: ThemeInfo(
+ ResourceDictionaryLocation.None, //where theme specific resource dictionaries are located
+ //(used if a resource is not found in the page,
+ // or application resource dictionaries)
+ ResourceDictionaryLocation.SourceAssembly //where the generic resource dictionary is located
+ //(used if a resource is not found in the page,
+ // app, or any theme specific resource dictionaries)
+)]
+
+//Friends With
+[assembly: InternalsVisibleTo("Tango.PPC.UI")]
diff --git a/Software/Visual_Studio/PPC/Tango.PPC.Shared/Properties/Resources.Designer.cs b/Software/Visual_Studio/PPC/Tango.PPC.Shared/Properties/Resources.Designer.cs
new file mode 100644
index 000000000..416184c0f
--- /dev/null
+++ b/Software/Visual_Studio/PPC/Tango.PPC.Shared/Properties/Resources.Designer.cs
@@ -0,0 +1,62 @@
+//------------------------------------------------------------------------------
+// <auto-generated>
+// This code was generated by a tool.
+// Runtime Version:4.0.30319.42000
+//
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+namespace Tango.PPC.Shared.Properties {
+
+
+ /// <summary>
+ /// A strongly-typed resource class, for looking up localized strings, etc.
+ /// </summary>
+ // This class was auto-generated by the StronglyTypedResourceBuilder
+ // class via a tool like ResGen or Visual Studio.
+ // To add or remove a member, edit your .ResX file then rerun ResGen
+ // with the /str option, or rebuild your VS project.
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+ internal class Resources {
+
+ private static global::System.Resources.ResourceManager resourceMan;
+
+ private static global::System.Globalization.CultureInfo resourceCulture;
+
+ [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
+ internal Resources() {
+ }
+
+ /// <summary>
+ /// Returns the cached ResourceManager instance used by this class.
+ /// </summary>
+ [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+ internal static global::System.Resources.ResourceManager ResourceManager {
+ get {
+ if ((resourceMan == null)) {
+ global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Tango.PPC.Shared.Properties.Resources", typeof(Resources).Assembly);
+ resourceMan = temp;
+ }
+ return resourceMan;
+ }
+ }
+
+ /// <summary>
+ /// Overrides the current thread's CurrentUICulture property for all
+ /// resource lookups using this strongly typed resource class.
+ /// </summary>
+ [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+ internal static global::System.Globalization.CultureInfo Culture {
+ get {
+ return resourceCulture;
+ }
+ set {
+ resourceCulture = value;
+ }
+ }
+ }
+}
diff --git a/Software/Visual_Studio/PPC/Tango.PPC.Shared/Properties/Resources.resx b/Software/Visual_Studio/PPC/Tango.PPC.Shared/Properties/Resources.resx
new file mode 100644
index 000000000..af7dbebba
--- /dev/null
+++ b/Software/Visual_Studio/PPC/Tango.PPC.Shared/Properties/Resources.resx
@@ -0,0 +1,117 @@
+<?xml version="1.0" encoding="utf-8"?>
+<root>
+ <!--
+ Microsoft ResX Schema
+
+ Version 2.0
+
+ The primary goals of this format is to allow a simple XML format
+ that is mostly human readable. The generation and parsing of the
+ various data types are done through the TypeConverter classes
+ associated with the data types.
+
+ Example:
+
+ ... ado.net/XML headers & schema ...
+ <resheader name="resmimetype">text/microsoft-resx</resheader>
+ <resheader name="version">2.0</resheader>
+ <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+ <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+ <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+ <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+ <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+ <value>[base64 mime encoded serialized .NET Framework object]</value>
+ </data>
+ <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+ <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+ <comment>This is a comment</comment>
+ </data>
+
+ There are any number of "resheader" rows that contain simple
+ name/value pairs.
+
+ Each data row contains a name, and value. The row also contains a
+ type or mimetype. Type corresponds to a .NET class that support
+ text/value conversion through the TypeConverter architecture.
+ Classes that don't support this are serialized and stored with the
+ mimetype set.
+
+ The mimetype is used for serialized objects, and tells the
+ ResXResourceReader how to depersist the object. This is currently not
+ extensible. For a given mimetype the value must be set accordingly:
+
+ Note - application/x-microsoft.net.object.binary.base64 is the format
+ that the ResXResourceWriter will generate, however the reader can
+ read any of the formats listed below.
+
+ mimetype: application/x-microsoft.net.object.binary.base64
+ value : The object must be serialized with
+ : System.Serialization.Formatters.Binary.BinaryFormatter
+ : and then encoded with base64 encoding.
+
+ mimetype: application/x-microsoft.net.object.soap.base64
+ value : The object must be serialized with
+ : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+ : and then encoded with base64 encoding.
+
+ mimetype: application/x-microsoft.net.object.bytearray.base64
+ value : The object must be serialized into a byte array
+ : using a System.ComponentModel.TypeConverter
+ : and then encoded with base64 encoding.
+ -->
+ <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+ <xsd:element name="root" msdata:IsDataSet="true">
+ <xsd:complexType>
+ <xsd:choice maxOccurs="unbounded">
+ <xsd:element name="metadata">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="value" type="xsd:string" minOccurs="0" />
+ </xsd:sequence>
+ <xsd:attribute name="name" type="xsd:string" />
+ <xsd:attribute name="type" type="xsd:string" />
+ <xsd:attribute name="mimetype" type="xsd:string" />
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="assembly">
+ <xsd:complexType>
+ <xsd:attribute name="alias" type="xsd:string" />
+ <xsd:attribute name="name" type="xsd:string" />
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="data">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+ <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+ </xsd:sequence>
+ <xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" />
+ <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+ <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="resheader">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+ </xsd:sequence>
+ <xsd:attribute name="name" type="xsd:string" use="required" />
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:choice>
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:schema>
+ <resheader name="resmimetype">
+ <value>text/microsoft-resx</value>
+ </resheader>
+ <resheader name="version">
+ <value>2.0</value>
+ </resheader>
+ <resheader name="reader">
+ <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+ </resheader>
+ <resheader name="writer">
+ <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+ </resheader>
+</root> \ No newline at end of file
diff --git a/Software/Visual_Studio/PPC/Tango.PPC.Shared/Properties/Settings.Designer.cs b/Software/Visual_Studio/PPC/Tango.PPC.Shared/Properties/Settings.Designer.cs
new file mode 100644
index 000000000..0b65472a5
--- /dev/null
+++ b/Software/Visual_Studio/PPC/Tango.PPC.Shared/Properties/Settings.Designer.cs
@@ -0,0 +1,30 @@
+//------------------------------------------------------------------------------
+// <auto-generated>
+// This code was generated by a tool.
+// Runtime Version:4.0.30319.42000
+//
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+namespace Tango.PPC.Shared.Properties
+{
+
+
+ [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")]
+ internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase
+ {
+
+ private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
+
+ public static Settings Default
+ {
+ get
+ {
+ return defaultInstance;
+ }
+ }
+ }
+}
diff --git a/Software/Visual_Studio/PPC/Tango.PPC.Shared/Properties/Settings.settings b/Software/Visual_Studio/PPC/Tango.PPC.Shared/Properties/Settings.settings
new file mode 100644
index 000000000..033d7a5e9
--- /dev/null
+++ b/Software/Visual_Studio/PPC/Tango.PPC.Shared/Properties/Settings.settings
@@ -0,0 +1,7 @@
+<?xml version='1.0' encoding='utf-8'?>
+<SettingsFile xmlns="uri:settings" CurrentProfile="(Default)">
+ <Profiles>
+ <Profile Name="(Default)" />
+ </Profiles>
+ <Settings />
+</SettingsFile> \ No newline at end of file
diff --git a/Software/Visual_Studio/PPC/Tango.PPC.Shared/Tango.PPC.Shared.csproj b/Software/Visual_Studio/PPC/Tango.PPC.Shared/Tango.PPC.Shared.csproj
new file mode 100644
index 000000000..2ae1c7575
--- /dev/null
+++ b/Software/Visual_Studio/PPC/Tango.PPC.Shared/Tango.PPC.Shared.csproj
@@ -0,0 +1,104 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
+ <PropertyGroup>
+ <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+ <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+ <ProjectGuid>{208C8BD8-72C6-4E3C-ACAA-351091A2ACC7}</ProjectGuid>
+ <OutputType>library</OutputType>
+ <RootNamespace>Tango.PPC.Shared</RootNamespace>
+ <AssemblyName>Tango.PPC.Shared</AssemblyName>
+ <TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion>
+ <FileAlignment>512</FileAlignment>
+ <ProjectTypeGuids>{60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
+ <WarningLevel>4</WarningLevel>
+ <Deterministic>true</Deterministic>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+ <DebugSymbols>true</DebugSymbols>
+ <DebugType>full</DebugType>
+ <Optimize>false</Optimize>
+ <OutputPath>..\..\Build\PPC\Debug\</OutputPath>
+ <DefineConstants>DEBUG;TRACE</DefineConstants>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+ <DebugType>pdbonly</DebugType>
+ <Optimize>true</Optimize>
+ <OutputPath>..\..\Build\PPC\Release\</OutputPath>
+ <DefineConstants>TRACE</DefineConstants>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ </PropertyGroup>
+ <ItemGroup>
+ <Reference Include="System" />
+ <Reference Include="System.Data" />
+ <Reference Include="System.Xml" />
+ <Reference Include="Microsoft.CSharp" />
+ <Reference Include="System.Core" />
+ <Reference Include="System.Xml.Linq" />
+ <Reference Include="System.Data.DataSetExtensions" />
+ <Reference Include="System.Net.Http" />
+ <Reference Include="System.Xaml">
+ <RequiredTargetFramework>4.0</RequiredTargetFramework>
+ </Reference>
+ <Reference Include="WindowsBase" />
+ <Reference Include="PresentationCore" />
+ <Reference Include="PresentationFramework" />
+ </ItemGroup>
+ <ItemGroup>
+ <Page Include="Themes\Generic.xaml">
+ <Generator>MSBuild:Compile</Generator>
+ <SubType>Designer</SubType>
+ </Page>
+ </ItemGroup>
+ <ItemGroup>
+ <Compile Include="..\..\Versioning\GlobalVersionInfo.cs">
+ <Link>GlobalVersionInfo.cs</Link>
+ </Compile>
+ <Compile Include="Information\GetMachineInformationRequest.cs" />
+ <Compile Include="Information\GetMachineInformationResponse.cs" />
+ <Compile Include="Information\InformationPackage.cs" />
+ <Compile Include="Performance\PerformancePackage.cs" />
+ <Compile Include="Performance\StartPerformanceUpdatesRequest.cs" />
+ <Compile Include="Performance\StartPerformanceUpdatesResponse.cs" />
+ <Compile Include="Properties\AssemblyInfo.cs">
+ <SubType>Code</SubType>
+ </Compile>
+ <Compile Include="Properties\Resources.Designer.cs">
+ <AutoGen>True</AutoGen>
+ <DesignTime>True</DesignTime>
+ <DependentUpon>Resources.resx</DependentUpon>
+ </Compile>
+ <Compile Include="Properties\Settings.Designer.cs">
+ <AutoGen>True</AutoGen>
+ <DependentUpon>Settings.settings</DependentUpon>
+ <DesignTimeSharedInput>True</DesignTimeSharedInput>
+ </Compile>
+ <Compile Include="Updates\GetUpdatesAndPackagesRequest.cs" />
+ <Compile Include="Updates\GetUpdatesAndPackagesResponse.cs" />
+ <Compile Include="Updates\PackageInstallation.cs" />
+ <Compile Include="Updates\PackageInstallationState.cs" />
+ <Compile Include="Updates\PackageType.cs" />
+ <EmbeddedResource Include="Properties\Resources.resx">
+ <Generator>ResXFileCodeGenerator</Generator>
+ <LastGenOutput>Resources.Designer.cs</LastGenOutput>
+ </EmbeddedResource>
+ <None Include="Properties\Settings.settings">
+ <Generator>SettingsSingleFileGenerator</Generator>
+ <LastGenOutput>Settings.Designer.cs</LastGenOutput>
+ </None>
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\..\Tango.BL\Tango.BL.csproj">
+ <Project>{f441feee-322a-4943-b566-110e12fd3b72}</Project>
+ <Name>Tango.BL</Name>
+ </ProjectReference>
+ <ProjectReference Include="..\..\Tango.SystemInfo\Tango.SystemInfo.csproj">
+ <Project>{997a961c-beda-4b56-aa0f-c39e532f7ffa}</Project>
+ <Name>Tango.SystemInfo</Name>
+ </ProjectReference>
+ </ItemGroup>
+ <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
+</Project> \ No newline at end of file
diff --git a/Software/Visual_Studio/PPC/Tango.PPC.Shared/Themes/Generic.xaml b/Software/Visual_Studio/PPC/Tango.PPC.Shared/Themes/Generic.xaml
new file mode 100644
index 000000000..1226f66d1
--- /dev/null
+++ b/Software/Visual_Studio/PPC/Tango.PPC.Shared/Themes/Generic.xaml
@@ -0,0 +1,6 @@
+<ResourceDictionary
+ xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
+ xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+ xmlns:local="clr-namespace:Tango.PPC.Shared">
+
+</ResourceDictionary>
diff --git a/Software/Visual_Studio/PPC/Tango.PPC.Shared/Updates/GetUpdatesAndPackagesRequest.cs b/Software/Visual_Studio/PPC/Tango.PPC.Shared/Updates/GetUpdatesAndPackagesRequest.cs
new file mode 100644
index 000000000..f8cadc49d
--- /dev/null
+++ b/Software/Visual_Studio/PPC/Tango.PPC.Shared/Updates/GetUpdatesAndPackagesRequest.cs
@@ -0,0 +1,13 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Tango.PPC.Shared.Updates
+{
+ public class GetUpdatesAndPackagesRequest
+ {
+
+ }
+}
diff --git a/Software/Visual_Studio/PPC/Tango.PPC.Shared/Updates/GetUpdatesAndPackagesResponse.cs b/Software/Visual_Studio/PPC/Tango.PPC.Shared/Updates/GetUpdatesAndPackagesResponse.cs
new file mode 100644
index 000000000..d264739d7
--- /dev/null
+++ b/Software/Visual_Studio/PPC/Tango.PPC.Shared/Updates/GetUpdatesAndPackagesResponse.cs
@@ -0,0 +1,22 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using Tango.BL.DTO;
+
+namespace Tango.PPC.Shared.Updates
+{
+ public class GetUpdatesAndPackagesResponse
+ {
+ public List<TangoUpdateDTO> Updates { get; set; }
+
+ public List<PackageInstallation> Packages { get; set; }
+
+ public GetUpdatesAndPackagesResponse()
+ {
+ Updates = new List<TangoUpdateDTO>();
+ Packages = new List<PackageInstallation>();
+ }
+ }
+}
diff --git a/Software/Visual_Studio/PPC/Tango.PPC.Common/UpdatePackages/PackageInstallation.cs b/Software/Visual_Studio/PPC/Tango.PPC.Shared/Updates/PackageInstallation.cs
index bf00915bd..639fd76bf 100644
--- a/Software/Visual_Studio/PPC/Tango.PPC.Common/UpdatePackages/PackageInstallation.cs
+++ b/Software/Visual_Studio/PPC/Tango.PPC.Shared/Updates/PackageInstallation.cs
@@ -4,7 +4,7 @@ using System.Linq;
using System.Text;
using System.Threading.Tasks;
-namespace Tango.PPC.Common.UpdatePackages
+namespace Tango.PPC.Shared.Updates
{
public class PackageInstallation
{
diff --git a/Software/Visual_Studio/PPC/Tango.PPC.Common/UpdatePackages/PackageInstallationState.cs b/Software/Visual_Studio/PPC/Tango.PPC.Shared/Updates/PackageInstallationState.cs
index 1300352fb..51ae2abce 100644
--- a/Software/Visual_Studio/PPC/Tango.PPC.Common/UpdatePackages/PackageInstallationState.cs
+++ b/Software/Visual_Studio/PPC/Tango.PPC.Shared/Updates/PackageInstallationState.cs
@@ -4,7 +4,7 @@ using System.Linq;
using System.Text;
using System.Threading.Tasks;
-namespace Tango.PPC.Common.UpdatePackages
+namespace Tango.PPC.Shared.Updates
{
public enum PackageInstallationState
{
diff --git a/Software/Visual_Studio/PPC/Tango.PPC.Common/UpdatePackages/PackageType.cs b/Software/Visual_Studio/PPC/Tango.PPC.Shared/Updates/PackageType.cs
index 48a2140b1..0e553ca21 100644
--- a/Software/Visual_Studio/PPC/Tango.PPC.Common/UpdatePackages/PackageType.cs
+++ b/Software/Visual_Studio/PPC/Tango.PPC.Shared/Updates/PackageType.cs
@@ -4,7 +4,7 @@ using System.Linq;
using System.Text;
using System.Threading.Tasks;
-namespace Tango.PPC.Common.UpdatePackages
+namespace Tango.PPC.Shared.Updates
{
public enum PackageType
{
diff --git a/Software/Visual_Studio/PPC/Tango.PPC.UI/Tango.PPC.UI.csproj b/Software/Visual_Studio/PPC/Tango.PPC.UI/Tango.PPC.UI.csproj
index 45eaa0e50..9a5824d81 100644
--- a/Software/Visual_Studio/PPC/Tango.PPC.UI/Tango.PPC.UI.csproj
+++ b/Software/Visual_Studio/PPC/Tango.PPC.UI/Tango.PPC.UI.csproj
@@ -558,6 +558,10 @@
<Project>{0be74eee-22cb-4dba-b896-793b9e1a3ac0}</Project>
<Name>Tango.PPC.Common</Name>
</ProjectReference>
+ <ProjectReference Include="..\Tango.PPC.Shared\Tango.PPC.Shared.csproj">
+ <Project>{208c8bd8-72c6-4e3c-acaa-351091a2acc7}</Project>
+ <Name>Tango.PPC.Shared</Name>
+ </ProjectReference>
</ItemGroup>
<ItemGroup>
<Resource Include="Images\liquid.png" />
@@ -693,7 +697,7 @@ if $(ConfigurationName) == Debug copy /Y "$(TargetDir)Packages" "$(TargetDir)"</
</PropertyGroup>
<ProjectExtensions>
<VisualStudio>
- <UserProperties BuildVersion_AssemblyInfoFilename="Properties\AssemblyInfo.cs" BuildVersion_UpdateAssemblyVersion="True" BuildVersion_BuildVersioningStyle="None.None.Increment.TimeStamp" BuildVersion_UseGlobalSettings="False" BuildVersion_StartDate="2000/1/1" />
+ <UserProperties BuildVersion_StartDate="2000/1/1" BuildVersion_UseGlobalSettings="False" BuildVersion_BuildVersioningStyle="None.None.Increment.TimeStamp" BuildVersion_UpdateAssemblyVersion="True" BuildVersion_AssemblyInfoFilename="Properties\AssemblyInfo.cs" />
</VisualStudio>
</ProjectExtensions>
</Project> \ No newline at end of file
diff --git a/Software/Visual_Studio/Tango.Core/ExtensionMethods/ObjectExtensions.cs b/Software/Visual_Studio/Tango.Core/ExtensionMethods/ObjectExtensions.cs
index cee991507..3b344ce56 100644
--- a/Software/Visual_Studio/Tango.Core/ExtensionMethods/ObjectExtensions.cs
+++ b/Software/Visual_Studio/Tango.Core/ExtensionMethods/ObjectExtensions.cs
@@ -126,7 +126,11 @@ namespace Tango.Core.ExtensionMethods
var desProp = destination.GetType().GetProperty(prop.Name, BindingFlags.Public | BindingFlags.Instance);
- if (desProp != null && desProp.PropertyType == prop.PropertyType && desProp.SetMethod != null)
+ if (desProp != null && desProp.SetMethod != null && desProp.PropertyType.IsEnum && prop.PropertyType.IsEnum)
+ {
+ desProp.SetValue(destination, Enum.Parse(desProp.PropertyType, value.ToString()));
+ }
+ else if (desProp != null && desProp.PropertyType == prop.PropertyType && desProp.SetMethod != null)
{
desProp.SetValue(destination, value);
}
diff --git a/Software/Visual_Studio/Tango.FileSystem/FileExplorerControl.cs b/Software/Visual_Studio/Tango.FileSystem/FileExplorerControl.cs
index 0769b3576..0a7fe8ddc 100644
--- a/Software/Visual_Studio/Tango.FileSystem/FileExplorerControl.cs
+++ b/Software/Visual_Studio/Tango.FileSystem/FileExplorerControl.cs
@@ -415,6 +415,19 @@ namespace Tango.FileSystem
UploadCommandInternal = new RelayCommand(() =>
{
UploadCommand?.Execute(null);
+ },() =>
+ {
+ if (CurrentItem == null) return false;
+
+ if (CurrentItem is FolderItem)
+ {
+ if ((CurrentItem as FolderItem).IsRoot)
+ {
+ return false;
+ }
+ }
+
+ return true;
});
}
diff --git a/Software/Visual_Studio/Tango.Integration/ExternalBridge/ExternalBridgeService.cs b/Software/Visual_Studio/Tango.Integration/ExternalBridge/ExternalBridgeService.cs
index 58df06fd8..f981ce8bb 100644
--- a/Software/Visual_Studio/Tango.Integration/ExternalBridge/ExternalBridgeService.cs
+++ b/Software/Visual_Studio/Tango.Integration/ExternalBridge/ExternalBridgeService.cs
@@ -427,7 +427,7 @@ namespace Tango.Integration.ExternalBridge
{
if (_requestHandlers.ContainsKey(genericType.Name))
{
- var innerMessage = ProtoSerializer.DeserializeFromByteString(genericType, (message as GenericRequest).Data); //JsonConvert.DeserializeObject(json, _genericMessageSettings);
+ var innerMessage = GenericMessageSerializer.DeserializeFromByteString(genericType, (message as GenericRequest).Data); //JsonConvert.DeserializeObject(json, _genericMessageSettings);
var handler = _requestHandlers[genericType.Name];
handler.Method.Invoke(handler.Handler, new object[]
diff --git a/Software/Visual_Studio/Tango.Integration/Tango.Integration.csproj b/Software/Visual_Studio/Tango.Integration/Tango.Integration.csproj
index 1356c115c..8ecbd3d09 100644
--- a/Software/Visual_Studio/Tango.Integration/Tango.Integration.csproj
+++ b/Software/Visual_Studio/Tango.Integration/Tango.Integration.csproj
@@ -106,12 +106,6 @@
<Compile Include="ExternalBridge\IExternalBridgeRequestHandler.cs" />
<Compile Include="ExternalBridge\ExternalBridgeSignalRConfiguration.cs" />
<Compile Include="ExternalBridge\ExternalBridgeSignalRClient.cs" />
- <Compile Include="ExternalBridge\Network\Information\GetMachineInformationRequest.cs" />
- <Compile Include="ExternalBridge\Network\Information\GetMachineInformationResponse.cs" />
- <Compile Include="ExternalBridge\Network\Information\InformationPackage.cs" />
- <Compile Include="ExternalBridge\Network\Performance\PerformancePackage.cs" />
- <Compile Include="ExternalBridge\Network\Performance\StartPerformanceUpdatesRequest.cs" />
- <Compile Include="ExternalBridge\Network\Performance\StartPerformanceUpdatesResponse.cs" />
<Compile Include="ExternalBridge\Web\MachineInfo.cs" />
<Compile Include="IntegrationSettings.cs" />
<Compile Include="JobRuns\BasicJobRunsLogger.cs" />
@@ -221,7 +215,7 @@
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<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.SharedUI/Helpers/DataGridHelper.cs b/Software/Visual_Studio/Tango.SharedUI/Helpers/DataGridHelper.cs
new file mode 100644
index 000000000..80c847a45
--- /dev/null
+++ b/Software/Visual_Studio/Tango.SharedUI/Helpers/DataGridHelper.cs
@@ -0,0 +1,67 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows;
+using System.Windows.Controls;
+using System.Windows.Input;
+
+namespace Tango.SharedUI.Helpers
+{
+ public static class DataGridHelper
+ {
+ #region DoubleClickCommand
+
+ /// <summary>
+ /// Determines whether an element is DoubleClickCommand by the drag and drop service.
+ /// </summary>
+ public static readonly DependencyProperty DoubleClickCommandProperty =
+ DependencyProperty.RegisterAttached("DoubleClickCommand",
+ typeof(ICommand), typeof(DataGridHelper),
+ new FrameworkPropertyMetadata(null, DoubleClickCommandChanged));
+
+ /// <summary>
+ /// DoubleClickCommand changed.
+ /// </summary>
+ /// <param name="d">The d.</param>
+ /// <param name="e">The <see cref="DependencyPropertyChangedEventArgs"/> instance containing the event data.</param>
+ private static void DoubleClickCommandChanged(DependencyObject d, DependencyPropertyChangedEventArgs xx)
+ {
+ if (xx.NewValue != null)
+ {
+ var dataGrid = d as DataGrid;
+
+ dataGrid.MouseDoubleClick += (x, e) =>
+ {
+ if (dataGrid.SelectedItem != null && (e.OriginalSource as UIElement != null) && (e.OriginalSource as FrameworkElement).DataContext == dataGrid.SelectedItem)
+ {
+ (xx.NewValue as ICommand)?.Execute(dataGrid.SelectedItem);
+ }
+ };
+ }
+ }
+
+ /// <summary>
+ /// Sets the DoubleClickCommand attached property.
+ /// </summary>
+ /// <param name="dataGrid">The element.</param>
+ /// <param name="value">if set to <c>true</c> [value].</param>
+ public static void SetDoubleClickCommand(DataGrid dataGrid, ICommand value)
+ {
+ dataGrid.SetValue(DoubleClickCommandProperty, value);
+ }
+
+ /// <summary>
+ /// Gets the DoubleClickCommand attached property.
+ /// </summary>
+ /// <param name="dataGrid">The element.</param>
+ /// <returns></returns>
+ public static ICommand GetDoubleClickCommand(DataGrid dataGrid)
+ {
+ return (ICommand)dataGrid.GetValue(DoubleClickCommandProperty);
+ }
+
+ #endregion
+ }
+}
diff --git a/Software/Visual_Studio/Tango.SharedUI/Tango.SharedUI.csproj b/Software/Visual_Studio/Tango.SharedUI/Tango.SharedUI.csproj
index 4764d0eac..000a4e5d7 100644
--- a/Software/Visual_Studio/Tango.SharedUI/Tango.SharedUI.csproj
+++ b/Software/Visual_Studio/Tango.SharedUI/Tango.SharedUI.csproj
@@ -156,6 +156,7 @@
<Compile Include="Effects\DisplaySettingEffect.cs" />
<Compile Include="ExtensionMethods\FrameworkElementExtensions.cs" />
<Compile Include="Animations\GridLengthAnimation.cs" />
+ <Compile Include="Helpers\DataGridHelper.cs" />
<Compile Include="Helpers\PasswordHelper.cs" />
<Compile Include="Helpers\ResourceHelper.cs" />
<Compile Include="Helpers\UIHelper.cs" />
@@ -254,7 +255,7 @@
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<ProjectExtensions>
<VisualStudio>
- <UserProperties BuildVersion_AssemblyInfoFilename="Properties\AssemblyInfo.cs" BuildVersion_UpdateAssemblyVersion="True" BuildVersion_BuildVersioningStyle="None.None.Increment.TimeStamp" BuildVersion_UseGlobalSettings="False" BuildVersion_StartDate="2000/1/1" />
+ <UserProperties BuildVersion_StartDate="2000/1/1" BuildVersion_UseGlobalSettings="False" BuildVersion_BuildVersioningStyle="None.None.Increment.TimeStamp" BuildVersion_UpdateAssemblyVersion="True" BuildVersion_AssemblyInfoFilename="Properties\AssemblyInfo.cs" />
</VisualStudio>
</ProjectExtensions>
</Project> \ No newline at end of file
diff --git a/Software/Visual_Studio/Tango.Transport/GenericMessageSerializer.cs b/Software/Visual_Studio/Tango.Transport/GenericMessageSerializer.cs
new file mode 100644
index 000000000..aa3486dc3
--- /dev/null
+++ b/Software/Visual_Studio/Tango.Transport/GenericMessageSerializer.cs
@@ -0,0 +1,137 @@
+using Google.Protobuf;
+using Newtonsoft.Json;
+using ProtoBuf;
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using Tango.PMR;
+using Tango.PMR.Common;
+using Tango.PMR.Integration;
+
+namespace Tango.Transport
+{
+ public static class GenericMessageSerializer
+ {
+ public enum GenericMessageSerializerMode
+ {
+ Json,
+ Protobuf
+ }
+
+ public static GenericMessageSerializerMode Mode { get; set; }
+
+ static GenericMessageSerializer()
+ {
+ ProtoBuf.Meta.RuntimeTypeModel.Default.AutoAddMissingTypes = true;
+ ProtoBuf.Meta.RuntimeTypeModel.Default.AutoAddProtoContractTypesOnly = false;
+ ProtoBuf.Meta.RuntimeTypeModel.Default.InferTagFromNameDefault = true;
+ ProtoBuf.Meta.RuntimeTypeModel.Default.UseImplicitZeroDefaults = true;
+ }
+
+ public static object Deserialize(Type type, byte[] array)
+ {
+ if (Mode == GenericMessageSerializerMode.Json)
+ {
+ return JsonConvert.DeserializeObject(Encoding.UTF8.GetString(array), type);
+ }
+ else
+ {
+ AutoProtobuf.Build(type);
+
+ using (MemoryStream ms = new MemoryStream(array))
+ {
+ return Serializer.Deserialize(type, ms);
+ }
+ }
+ }
+
+ public static object DeserializeFromByteString(Type type, ByteString byteString)
+ {
+ if (Mode == GenericMessageSerializerMode.Json)
+ {
+ return JsonConvert.DeserializeObject(byteString.ToStringUtf8(), type);
+ }
+ else
+ {
+ AutoProtobuf.Build(type);
+ return Deserialize(type, byteString.ToByteArray());
+ }
+ }
+
+ //---------------------------------------------------------------------
+
+ public static byte[] Serialize<T>(T message)
+ {
+ if (Mode == GenericMessageSerializerMode.Json)
+ {
+ return Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(message));
+ }
+ else
+ {
+ AutoProtobuf.Build<T>();
+
+ using (MemoryStream ms = new MemoryStream())
+ {
+ Serializer.Serialize<T>(ms, message);
+ return ms.ToArray();
+ }
+ }
+ }
+
+ public static T Deserialize<T>(byte[] array)
+ {
+ if (Mode == GenericMessageSerializerMode.Json)
+ {
+ return (T)Deserialize(typeof(T), array);
+ }
+ else
+ {
+ AutoProtobuf.Build<T>();
+
+ using (MemoryStream ms = new MemoryStream(array))
+ {
+ return Serializer.Deserialize<T>(ms);
+ }
+ }
+ }
+
+ public static ByteString SerializeToByteString<T>(T message)
+ {
+ if (Mode == GenericMessageSerializerMode.Json)
+ {
+ return ByteString.CopyFromUtf8(JsonConvert.SerializeObject(message));
+ }
+ else
+ {
+ AutoProtobuf.Build<T>();
+
+ return ByteString.CopyFrom(Serialize<T>(message));
+ }
+ }
+
+ public static T DeserializeFromByteString<T>(ByteString byteString)
+ {
+ if (Mode == GenericMessageSerializerMode.Json)
+ {
+ return JsonConvert.DeserializeObject<T>(byteString.ToStringUtf8());
+ }
+ else
+ {
+ AutoProtobuf.Build<T>();
+
+ return Deserialize<T>(byteString.ToByteArray());
+ }
+ }
+
+ public static T ExtractGenericRequestFromContainer<T>(MessageContainer container) where T : class
+ {
+ var message = MessageFactory.ExtractMessageFromContainer(container);
+ var genericType = Type.GetType((message as GenericRequest).Type);
+ var innerMessage = DeserializeFromByteString(genericType, (message as GenericRequest).Data);
+ return innerMessage as T;
+ }
+ }
+}
diff --git a/Software/Visual_Studio/Tango.Transport/ProtoSerializer.cs b/Software/Visual_Studio/Tango.Transport/ProtoSerializer.cs
deleted file mode 100644
index c974f2712..000000000
--- a/Software/Visual_Studio/Tango.Transport/ProtoSerializer.cs
+++ /dev/null
@@ -1,87 +0,0 @@
-using Google.Protobuf;
-using ProtoBuf;
-using System;
-using System.Collections.Generic;
-using System.IO;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using Tango.PMR;
-using Tango.PMR.Common;
-using Tango.PMR.Integration;
-
-namespace Tango.Transport
-{
- public static class ProtoSerializer
- {
- static ProtoSerializer()
- {
- ProtoBuf.Meta.RuntimeTypeModel.Default.AutoAddMissingTypes = true;
- ProtoBuf.Meta.RuntimeTypeModel.Default.AutoAddProtoContractTypesOnly = false;
- ProtoBuf.Meta.RuntimeTypeModel.Default.InferTagFromNameDefault = true;
- ProtoBuf.Meta.RuntimeTypeModel.Default.UseImplicitZeroDefaults = true;
- }
-
- public static object Deserialize(Type type, byte[] array)
- {
- AutoProtobuf.Build(type);
-
- using (MemoryStream ms = new MemoryStream(array))
- {
- return Serializer.Deserialize(type, ms);
- }
- }
-
- public static object DeserializeFromByteString(Type type, ByteString byteString)
- {
- AutoProtobuf.Build(type);
-
- return Deserialize(type, byteString.ToByteArray());
- }
-
- //---------------------------------------------------------------------
-
- public static byte[] Serialize<T>(T message)
- {
- AutoProtobuf.Build<T>();
-
- using (MemoryStream ms = new MemoryStream())
- {
- Serializer.Serialize<T>(ms, message);
- return ms.ToArray();
- }
- }
-
- public static T Deserialize<T>(byte[] array)
- {
- AutoProtobuf.Build<T>();
-
- using (MemoryStream ms = new MemoryStream(array))
- {
- return Serializer.Deserialize<T>(ms);
- }
- }
-
- public static ByteString SerializeToByteString<T>(T message)
- {
- AutoProtobuf.Build<T>();
-
- return ByteString.CopyFrom(Serialize<T>(message));
- }
-
- public static T DeserializeFromByteString<T>(ByteString byteString)
- {
- AutoProtobuf.Build<T>();
-
- return Deserialize<T>(byteString.ToByteArray());
- }
-
- public static T ExtractGenericRequestFromContainer<T>(MessageContainer container) where T : class
- {
- var message = MessageFactory.ExtractMessageFromContainer(container);
- var genericType = Type.GetType((message as GenericRequest).Type);
- var innerMessage = ProtoSerializer.DeserializeFromByteString(genericType, (message as GenericRequest).Data);
- return innerMessage as T;
- }
- }
-}
diff --git a/Software/Visual_Studio/Tango.Transport/Tango.Transport.csproj b/Software/Visual_Studio/Tango.Transport/Tango.Transport.csproj
index 120584798..f83384097 100644
--- a/Software/Visual_Studio/Tango.Transport/Tango.Transport.csproj
+++ b/Software/Visual_Studio/Tango.Transport/Tango.Transport.csproj
@@ -125,7 +125,7 @@
<Compile Include="PendingResponse.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="ITransporter.cs" />
- <Compile Include="ProtoSerializer.cs" />
+ <Compile Include="GenericMessageSerializer.cs" />
<Compile Include="RequestFailedEventArgs.cs" />
<Compile Include="ResponseErrorException.cs" />
<Compile Include="Routing\SimpleTransportRouter.cs" />
@@ -186,7 +186,7 @@
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<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.Transport/TransporterBase.cs b/Software/Visual_Studio/Tango.Transport/TransporterBase.cs
index 5e076738c..0958e4d9f 100644
--- a/Software/Visual_Studio/Tango.Transport/TransporterBase.cs
+++ b/Software/Visual_Studio/Tango.Transport/TransporterBase.cs
@@ -334,7 +334,7 @@ namespace Tango.Transport
if (handlers.Count > 0)
{
- var innerRequest = ProtoSerializer.DeserializeFromByteString(handlers[0].RequestType, genericRequest.Data);
+ var innerRequest = GenericMessageSerializer.DeserializeFromByteString(handlers[0].RequestType, genericRequest.Data);
foreach (var handler in handlers)
{
@@ -930,10 +930,10 @@ namespace Tango.Transport
{
GenericRequest genericRequest = new GenericRequest();
genericRequest.Type = request.GetType().AssemblyQualifiedName;
- genericRequest.Data = ProtoSerializer.SerializeToByteString<Request>(request);
+ genericRequest.Data = GenericMessageSerializer.SerializeToByteString<Request>(request);
var response = await SendRequest<GenericRequest, GenericResponse>(genericRequest, config);
- var responseObject = ProtoSerializer.DeserializeFromByteString<Response>(response.Message.Data);
+ var responseObject = GenericMessageSerializer.DeserializeFromByteString<Response>(response.Message.Data);
return responseObject;
}
@@ -949,7 +949,7 @@ namespace Tango.Transport
{
GenericResponse genericResponse = new GenericResponse();
- genericResponse.Data = ProtoSerializer.SerializeToByteString<Response>(response);
+ genericResponse.Data = GenericMessageSerializer.SerializeToByteString<Response>(response);
await SendResponse<GenericResponse>(genericResponse, token, config);
}
@@ -966,7 +966,7 @@ namespace Tango.Transport
GenericRequest genericRequest = new GenericRequest();
genericRequest.Type = request.GetType().AssemblyQualifiedName;
- genericRequest.Data = ProtoSerializer.SerializeToByteString<Request>(request);
+ genericRequest.Data = GenericMessageSerializer.SerializeToByteString<Request>(request);
Subject<Response> subject = new Subject<Response>();
@@ -975,7 +975,7 @@ namespace Tango.Transport
try
{
- var responseObject = ProtoSerializer.DeserializeFromByteString<Response>(response.Message.Data);
+ var responseObject = GenericMessageSerializer.DeserializeFromByteString<Response>(response.Message.Data);
subject.OnNext(responseObject);
}
catch (Exception ex)
diff --git a/Software/Visual_Studio/Tango.sln b/Software/Visual_Studio/Tango.sln
index 6e79d8d13..96548aaac 100644
--- a/Software/Visual_Studio/Tango.sln
+++ b/Software/Visual_Studio/Tango.sln
@@ -369,6 +369,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Tango.SystemInfo", "Tango.S
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Tango.FileSystem", "Tango.FileSystem\Tango.FileSystem.csproj", "{C6EBBBBE-2123-44DC-AEF7-A0D47D736AC0}"
EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Tango.PPC.Shared", "PPC\Tango.PPC.Shared\Tango.PPC.Shared.csproj", "{208C8BD8-72C6-4E3C-ACAA-351091A2ACC7}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -3422,6 +3424,26 @@ Global
{C6EBBBBE-2123-44DC-AEF7-A0D47D736AC0}.Release|x64.Build.0 = Release|Any CPU
{C6EBBBBE-2123-44DC-AEF7-A0D47D736AC0}.Release|x86.ActiveCfg = Release|Any CPU
{C6EBBBBE-2123-44DC-AEF7-A0D47D736AC0}.Release|x86.Build.0 = Release|Any CPU
+ {208C8BD8-72C6-4E3C-ACAA-351091A2ACC7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {208C8BD8-72C6-4E3C-ACAA-351091A2ACC7}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {208C8BD8-72C6-4E3C-ACAA-351091A2ACC7}.Debug|ARM.ActiveCfg = Debug|Any CPU
+ {208C8BD8-72C6-4E3C-ACAA-351091A2ACC7}.Debug|ARM.Build.0 = Debug|Any CPU
+ {208C8BD8-72C6-4E3C-ACAA-351091A2ACC7}.Debug|ARM64.ActiveCfg = Debug|Any CPU
+ {208C8BD8-72C6-4E3C-ACAA-351091A2ACC7}.Debug|ARM64.Build.0 = Debug|Any CPU
+ {208C8BD8-72C6-4E3C-ACAA-351091A2ACC7}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {208C8BD8-72C6-4E3C-ACAA-351091A2ACC7}.Debug|x64.Build.0 = Debug|Any CPU
+ {208C8BD8-72C6-4E3C-ACAA-351091A2ACC7}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {208C8BD8-72C6-4E3C-ACAA-351091A2ACC7}.Debug|x86.Build.0 = Debug|Any CPU
+ {208C8BD8-72C6-4E3C-ACAA-351091A2ACC7}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {208C8BD8-72C6-4E3C-ACAA-351091A2ACC7}.Release|Any CPU.Build.0 = Release|Any CPU
+ {208C8BD8-72C6-4E3C-ACAA-351091A2ACC7}.Release|ARM.ActiveCfg = Release|Any CPU
+ {208C8BD8-72C6-4E3C-ACAA-351091A2ACC7}.Release|ARM.Build.0 = Release|Any CPU
+ {208C8BD8-72C6-4E3C-ACAA-351091A2ACC7}.Release|ARM64.ActiveCfg = Release|Any CPU
+ {208C8BD8-72C6-4E3C-ACAA-351091A2ACC7}.Release|ARM64.Build.0 = Release|Any CPU
+ {208C8BD8-72C6-4E3C-ACAA-351091A2ACC7}.Release|x64.ActiveCfg = Release|Any CPU
+ {208C8BD8-72C6-4E3C-ACAA-351091A2ACC7}.Release|x64.Build.0 = Release|Any CPU
+ {208C8BD8-72C6-4E3C-ACAA-351091A2ACC7}.Release|x86.ActiveCfg = Release|Any CPU
+ {208C8BD8-72C6-4E3C-ACAA-351091A2ACC7}.Release|x86.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@@ -3544,14 +3566,15 @@ Global
{834C81C3-09B5-45D7-BE12-E7D1E6655A7C} = {004337EB-0761-4D30-B9F5-AE6E1CFC6013}
{866B916A-207C-43F0-B403-7C4A820C2E11} = {4EE6DBA1-71BC-49E2-8DC7-266487E61050}
{A07E6CB4-0132-4EB1-9A38-C8C057884DC2} = {EC62BC9C-F2FE-4333-B7E4-110E38D43958}
+ {208C8BD8-72C6-4E3C-ACAA-351091A2ACC7} = {C81ED1A3-D18C-4D80-A8F5-061994A14A60}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
- SolutionGuid = {7986F7F4-A86A-4994-B1B6-0988D7F057B6}
- BuildVersion_BuildVersioningStyle = None.None.Increment.DeltaBaseYearDayOfYear
- BuildVersion_UpdateAssemblyVersion = True
- BuildVersion_UpdateFileVersion = False
- BuildVersion_StartDate = 2000/1/1
- BuildVersion_AssemblyInfoFilename = Properties\AssemblyInfo.cs
BuildVersion_UseGlobalSettings = False
+ BuildVersion_AssemblyInfoFilename = Properties\AssemblyInfo.cs
+ BuildVersion_StartDate = 2000/1/1
+ BuildVersion_UpdateFileVersion = False
+ BuildVersion_UpdateAssemblyVersion = True
+ BuildVersion_BuildVersioningStyle = None.None.Increment.DeltaBaseYearDayOfYear
+ SolutionGuid = {7986F7F4-A86A-4994-B1B6-0988D7F057B6}
EndGlobalSection
EndGlobal