From e2ae3a8f203d149094aa48ef576f7f0bc241fc8e Mon Sep 17 00:00:00 2001 From: Roy Ben-Shabat Date: Thu, 26 Jul 2018 14:08:27 +0300 Subject: Fixed several bugs with machine studio. --- .../StudioApplication/DefaultStudioApplicationManager.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/StudioApplication') diff --git a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/StudioApplication/DefaultStudioApplicationManager.cs b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/StudioApplication/DefaultStudioApplicationManager.cs index d33b12a17..debeccded 100644 --- a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/StudioApplication/DefaultStudioApplicationManager.cs +++ b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/StudioApplication/DefaultStudioApplicationManager.cs @@ -135,7 +135,7 @@ namespace Tango.MachineStudio.UI.StudioApplication { get { - return AssemblyHelper.GetCurrentAssemblyVersion().ToString(3); + return AssemblyHelper.GetCurrentAssemblyVersion().ToString(4); } } -- cgit v1.3.1 From 1e3777f0813b2ac26ae0b52e89c171955a949563 Mon Sep 17 00:00:00 2001 From: Roy Ben-Shabat Date: Sun, 29 Jul 2018 09:54:44 +0300 Subject: Moved external bridge classes to ExternalBridge namespace. --- .../ViewModels/MainViewVM.cs | 2 +- .../ViewModels/MainViewVM.cs | 2 +- .../ViewModels/DirectSynchronizationViewVM.cs | 2 +- .../ViewModels/MachineTechViewVM.cs | 2 +- .../Diagnostics/DefaultDiagnosticsFrameProvider.cs | 2 +- .../EventLogging/DefaultEventLogger.cs | 2 +- .../Messages/MachineConnectionChangedMessage.cs | 2 +- .../StudioApplication/IStudioApplicationManager.cs | 2 +- .../DefaultStudioApplicationManager.cs | 2 +- .../Tango.MachineStudio.UI/ViewModelLocator.cs | 2 +- .../ViewModels/MachineConnectionViewVM.cs | 2 +- .../ViewModels/MainViewVM.cs | 2 +- .../Views/ConnectedMachineView.xaml | 2 +- .../Views/MachineConnectionView.xaml | 2 +- .../Views/ReportIssueView.xaml | 2 +- .../Views/ResolvedIssuesView.xaml | 2 +- .../Application/IPPCApplicationManager.cs | 2 +- .../Connection/DefaultMachineProvider.cs | 2 +- .../Diagnostics/DefaultDiagnosticsFrameProvider.cs | 2 +- .../EventLogging/DefaultEventLogger.cs | 2 +- .../PPC/Tango.PPC.UI/ViewModelLocator.cs | 2 +- .../IExternalBridgeClientExtensions.cs | 2 +- .../ExternalBridge/ExternalBridgeScanner.cs | 166 +++++++++++++++++++++ .../ExternalBridge/ExternalBridgeService.cs | 119 +++++++++++++++ .../ExternalBridge/ExternalBridgeTcpClient.cs | 103 +++++++++++++ .../ExternalBridge/ExternalBridgeUsbClient.cs | 114 ++++++++++++++ .../ExternalBridge/IExternalBridgeClient.cs | 30 ++++ .../ExternalBridge/IExternalBridgeSecureClient.cs | 22 +++ .../ExternalBridge/IExternalBridgeService.cs | 21 +++ .../Services/ExternalBridgeScanner.cs | 166 --------------------- .../Services/ExternalBridgeService.cs | 119 --------------- .../Services/ExternalBridgeTcpClient.cs | 103 ------------- .../Services/ExternalBridgeUsbClient.cs | 114 -------------- .../Services/IExternalBridgeClient.cs | 30 ---- .../Services/IExternalBridgeSecureClient.cs | 22 --- .../Services/IExternalBridgeService.cs | 21 --- .../Tango.Integration/Tango.Integration.csproj | 14 +- 37 files changed, 604 insertions(+), 604 deletions(-) create mode 100644 Software/Visual_Studio/Tango.Integration/ExternalBridge/ExternalBridgeScanner.cs create mode 100644 Software/Visual_Studio/Tango.Integration/ExternalBridge/ExternalBridgeService.cs create mode 100644 Software/Visual_Studio/Tango.Integration/ExternalBridge/ExternalBridgeTcpClient.cs create mode 100644 Software/Visual_Studio/Tango.Integration/ExternalBridge/ExternalBridgeUsbClient.cs create mode 100644 Software/Visual_Studio/Tango.Integration/ExternalBridge/IExternalBridgeClient.cs create mode 100644 Software/Visual_Studio/Tango.Integration/ExternalBridge/IExternalBridgeSecureClient.cs create mode 100644 Software/Visual_Studio/Tango.Integration/ExternalBridge/IExternalBridgeService.cs delete mode 100644 Software/Visual_Studio/Tango.Integration/Services/ExternalBridgeScanner.cs delete mode 100644 Software/Visual_Studio/Tango.Integration/Services/ExternalBridgeService.cs delete mode 100644 Software/Visual_Studio/Tango.Integration/Services/ExternalBridgeTcpClient.cs delete mode 100644 Software/Visual_Studio/Tango.Integration/Services/ExternalBridgeUsbClient.cs delete mode 100644 Software/Visual_Studio/Tango.Integration/Services/IExternalBridgeClient.cs delete mode 100644 Software/Visual_Studio/Tango.Integration/Services/IExternalBridgeSecureClient.cs delete mode 100644 Software/Visual_Studio/Tango.Integration/Services/IExternalBridgeService.cs (limited to 'Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/StudioApplication') diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.DataCapture/ViewModels/MainViewVM.cs b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.DataCapture/ViewModels/MainViewVM.cs index 5bd6ff809..9876dca9e 100644 --- a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.DataCapture/ViewModels/MainViewVM.cs +++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.DataCapture/ViewModels/MainViewVM.cs @@ -14,7 +14,7 @@ using Tango.Core.Commands; using Tango.Core.Helpers; using Tango.Integration.Diagnostics; using Tango.Integration.Operation; -using Tango.Integration.Services; +using Tango.Integration.ExternalBridge; using Tango.MachineStudio.Common.Diagnostics; using Tango.MachineStudio.Common.EventLogging; using Tango.MachineStudio.Common.Notifications; diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Developer/ViewModels/MainViewVM.cs b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Developer/ViewModels/MainViewVM.cs index 0a033b118..a58757633 100644 --- a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Developer/ViewModels/MainViewVM.cs +++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Developer/ViewModels/MainViewVM.cs @@ -10,7 +10,7 @@ using System.Windows.Media; using Tango.Core.Commands; using Tango.BL.Entities; using Tango.Integration.Operation; -using Tango.Integration.Services; +using Tango.Integration.ExternalBridge; using Tango.Logging; using Tango.MachineStudio.Common.Authentication; using Tango.MachineStudio.Common.Controls; diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Synchronization/ViewModels/DirectSynchronizationViewVM.cs b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Synchronization/ViewModels/DirectSynchronizationViewVM.cs index b2175b46c..a09e698e3 100644 --- a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Synchronization/ViewModels/DirectSynchronizationViewVM.cs +++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Synchronization/ViewModels/DirectSynchronizationViewVM.cs @@ -11,7 +11,7 @@ using System.Threading.Tasks; using Tango.Core.Commands; using Tango.Core.Helpers; using Tango.BL.Entities; -using Tango.Integration.Services; +using Tango.Integration.ExternalBridge; using Tango.MachineStudio.Common.Notifications; using Tango.MachineStudio.Common.StudioApplication; using Tango.MachineStudio.Synchronization.Navigation; diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/ViewModels/MachineTechViewVM.cs b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/ViewModels/MachineTechViewVM.cs index 0c09850c1..d403223ec 100644 --- a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/ViewModels/MachineTechViewVM.cs +++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/ViewModels/MachineTechViewVM.cs @@ -25,7 +25,7 @@ using Tango.MachineStudio.Technician.TechItems; using Tango.PMR.Diagnostics; using Tango.Settings; using Tango.SharedUI; -using Tango.Integration.Services; +using Tango.Integration.ExternalBridge; using Tango.BL.Enumerations; using Tango.BL; using Tango.MachineStudio.Common.EventLogging; diff --git a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Diagnostics/DefaultDiagnosticsFrameProvider.cs b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Diagnostics/DefaultDiagnosticsFrameProvider.cs index d34ef4b96..957648536 100644 --- a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Diagnostics/DefaultDiagnosticsFrameProvider.cs +++ b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Diagnostics/DefaultDiagnosticsFrameProvider.cs @@ -5,7 +5,7 @@ using System.Text; using System.Threading.Tasks; using Tango.Core; using Tango.Integration.Operation; -using Tango.Integration.Services; +using Tango.Integration.ExternalBridge; using Tango.MachineStudio.Common.StudioApplication; using Tango.PMR.Diagnostics; diff --git a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/EventLogging/DefaultEventLogger.cs b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/EventLogging/DefaultEventLogger.cs index b33b771ae..c5b9c63cb 100644 --- a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/EventLogging/DefaultEventLogger.cs +++ b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/EventLogging/DefaultEventLogger.cs @@ -10,7 +10,7 @@ using Tango.BL; using Tango.BL.Entities; using Tango.BL.Enumerations; using Tango.Core; -using Tango.Integration.Services; +using Tango.Integration.ExternalBridge; using Tango.Logging; using Tango.MachineStudio.Common.Authentication; using Tango.MachineStudio.Common.Diagnostics; diff --git a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Messages/MachineConnectionChangedMessage.cs b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Messages/MachineConnectionChangedMessage.cs index 90820ed47..af36f2edf 100644 --- a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Messages/MachineConnectionChangedMessage.cs +++ b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Messages/MachineConnectionChangedMessage.cs @@ -3,7 +3,7 @@ using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; -using Tango.Integration.Services; +using Tango.Integration.ExternalBridge; namespace Tango.MachineStudio.Common.Messages { diff --git a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/StudioApplication/IStudioApplicationManager.cs b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/StudioApplication/IStudioApplicationManager.cs index 00e67ff3b..464f932f6 100644 --- a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/StudioApplication/IStudioApplicationManager.cs +++ b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/StudioApplication/IStudioApplicationManager.cs @@ -5,7 +5,7 @@ using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows; -using Tango.Integration.Services; +using Tango.Integration.ExternalBridge; namespace Tango.MachineStudio.Common.StudioApplication { diff --git a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/StudioApplication/DefaultStudioApplicationManager.cs b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/StudioApplication/DefaultStudioApplicationManager.cs index debeccded..d6a832c8a 100644 --- a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/StudioApplication/DefaultStudioApplicationManager.cs +++ b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/StudioApplication/DefaultStudioApplicationManager.cs @@ -15,7 +15,7 @@ using Tango.MachineStudio.Common.Modules; using Tango.MachineStudio.Common; using Tango.Settings; using System.Windows; -using Tango.Integration.Services; +using Tango.Integration.ExternalBridge; using Tango.MachineStudio.Common.EventLogging; using Tango.BL.Enumerations; using Tango.Core.DI; diff --git a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/ViewModelLocator.cs b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/ViewModelLocator.cs index 8a5ce3d8b..2c816eb6c 100644 --- a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/ViewModelLocator.cs +++ b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/ViewModelLocator.cs @@ -1,6 +1,6 @@ using System; using Tango.Core.DI; -using Tango.Integration.Services; +using Tango.Integration.ExternalBridge; using Tango.Logging; using Tango.MachineStudio.Common.Authentication; using Tango.MachineStudio.Common.Diagnostics; diff --git a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/ViewModels/MachineConnectionViewVM.cs b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/ViewModels/MachineConnectionViewVM.cs index 3cd3fb5f9..60447f37a 100644 --- a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/ViewModels/MachineConnectionViewVM.cs +++ b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/ViewModels/MachineConnectionViewVM.cs @@ -4,7 +4,7 @@ using System.Linq; using System.Text; using System.Threading.Tasks; using Tango.Core.Commands; -using Tango.Integration.Services; +using Tango.Integration.ExternalBridge; using Tango.MachineStudio.Common.Notifications; using Tango.SharedUI; diff --git a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/ViewModels/MainViewVM.cs b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/ViewModels/MainViewVM.cs index 278926de9..d209e3f27 100644 --- a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/ViewModels/MainViewVM.cs +++ b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/ViewModels/MainViewVM.cs @@ -13,7 +13,7 @@ using System.Windows.Media; using Tango.BL.Entities; using Tango.Core.Commands; using Tango.Core.DI; -using Tango.Integration.Services; +using Tango.Integration.ExternalBridge; using Tango.Logging; using Tango.MachineStudio.Common; using Tango.MachineStudio.Common.Authentication; diff --git a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Views/ConnectedMachineView.xaml b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Views/ConnectedMachineView.xaml index 39c42392d..bb8b65f6a 100644 --- a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Views/ConnectedMachineView.xaml +++ b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Views/ConnectedMachineView.xaml @@ -4,7 +4,7 @@ xmlns:mahapps="http://metro.mahapps.com/winfx/xaml/controls" xmlns:materialDesign="http://materialdesigninxaml.net/winfx/xaml/themes" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" - xmlns:integration="clr-namespace:Tango.Integration.Services;assembly=Tango.Integration" + xmlns:integration="clr-namespace:Tango.Integration.ExternalBridge;assembly=Tango.Integration" xmlns:integ="clr-namespace:Tango.Integration.Operation;assembly=Tango.Integration" xmlns:converters="clr-namespace:Tango.SharedUI.Converters;assembly=Tango.SharedUI" xmlns:controls="clr-namespace:Tango.SharedUI.Controls;assembly=Tango.SharedUI" diff --git a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Views/MachineConnectionView.xaml b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Views/MachineConnectionView.xaml index 6f0a74805..3a8baf7e5 100644 --- a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Views/MachineConnectionView.xaml +++ b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Views/MachineConnectionView.xaml @@ -5,7 +5,7 @@ xmlns:mahapps="http://metro.mahapps.com/winfx/xaml/controls" xmlns:materialDesign="http://materialdesigninxaml.net/winfx/xaml/themes" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" - xmlns:integration="clr-namespace:Tango.Integration.Services;assembly=Tango.Integration" + xmlns:integration="clr-namespace:Tango.Integration.ExternalBridge;assembly=Tango.Integration" xmlns:converters="clr-namespace:Tango.SharedUI.Converters;assembly=Tango.SharedUI" xmlns:local="clr-namespace:Tango.MachineStudio.UI.Views" mc:Ignorable="d" diff --git a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Views/ReportIssueView.xaml b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Views/ReportIssueView.xaml index 37cd0b793..2a6228eda 100644 --- a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Views/ReportIssueView.xaml +++ b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Views/ReportIssueView.xaml @@ -6,7 +6,7 @@ xmlns:materialDesign="http://materialdesigninxaml.net/winfx/xaml/themes" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:autoComplete="clr-namespace:Tango.AutoComplete.Editors;assembly=Tango.AutoComplete" - xmlns:integration="clr-namespace:Tango.Integration.Services;assembly=Tango.Integration" + xmlns:integration="clr-namespace:Tango.Integration.ExternalBridge;assembly=Tango.Integration" xmlns:converters="clr-namespace:Tango.SharedUI.Converters;assembly=Tango.SharedUI" xmlns:vm="clr-namespace:Tango.MachineStudio.UI.ViewModels" xmlns:tfs="clr-namespace:Tango.TFS;assembly=Tango.TFS" diff --git a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Views/ResolvedIssuesView.xaml b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Views/ResolvedIssuesView.xaml index 4fb457f87..3b5affbbf 100644 --- a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Views/ResolvedIssuesView.xaml +++ b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Views/ResolvedIssuesView.xaml @@ -6,7 +6,7 @@ xmlns:materialDesign="http://materialdesigninxaml.net/winfx/xaml/themes" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:autoComplete="clr-namespace:Tango.AutoComplete.Editors;assembly=Tango.AutoComplete" - xmlns:integration="clr-namespace:Tango.Integration.Services;assembly=Tango.Integration" + xmlns:integration="clr-namespace:Tango.Integration.ExternalBridge;assembly=Tango.Integration" xmlns:converters="clr-namespace:Tango.SharedUI.Converters;assembly=Tango.SharedUI" xmlns:vm="clr-namespace:Tango.MachineStudio.UI.ViewModels" xmlns:tfs="clr-namespace:Tango.TFS;assembly=Tango.TFS" diff --git a/Software/Visual_Studio/PPC/Tango.PPC.Common/Application/IPPCApplicationManager.cs b/Software/Visual_Studio/PPC/Tango.PPC.Common/Application/IPPCApplicationManager.cs index 1ac70c650..50bceb3e1 100644 --- a/Software/Visual_Studio/PPC/Tango.PPC.Common/Application/IPPCApplicationManager.cs +++ b/Software/Visual_Studio/PPC/Tango.PPC.Common/Application/IPPCApplicationManager.cs @@ -6,7 +6,7 @@ using System.Threading.Tasks; using System.Windows; using Tango.BL.Entities; using Tango.Integration.Operation; -using Tango.Integration.Services; +using Tango.Integration.ExternalBridge; namespace Tango.PPC.Common.Application { diff --git a/Software/Visual_Studio/PPC/Tango.PPC.Common/Connection/DefaultMachineProvider.cs b/Software/Visual_Studio/PPC/Tango.PPC.Common/Connection/DefaultMachineProvider.cs index 160029222..8b0098eb8 100644 --- a/Software/Visual_Studio/PPC/Tango.PPC.Common/Connection/DefaultMachineProvider.cs +++ b/Software/Visual_Studio/PPC/Tango.PPC.Common/Connection/DefaultMachineProvider.cs @@ -7,7 +7,7 @@ using Tango.BL; using Tango.BL.Entities; using Tango.Core; using Tango.Integration.Operation; -using Tango.Integration.Services; +using Tango.Integration.ExternalBridge; using Tango.PMR.Connection; using Tango.Transport.Adapters; diff --git a/Software/Visual_Studio/PPC/Tango.PPC.Common/Diagnostics/DefaultDiagnosticsFrameProvider.cs b/Software/Visual_Studio/PPC/Tango.PPC.Common/Diagnostics/DefaultDiagnosticsFrameProvider.cs index 28255820c..bff64feb7 100644 --- a/Software/Visual_Studio/PPC/Tango.PPC.Common/Diagnostics/DefaultDiagnosticsFrameProvider.cs +++ b/Software/Visual_Studio/PPC/Tango.PPC.Common/Diagnostics/DefaultDiagnosticsFrameProvider.cs @@ -5,7 +5,7 @@ using System.Text; using System.Threading.Tasks; using Tango.Core; using Tango.Integration.Operation; -using Tango.Integration.Services; +using Tango.Integration.ExternalBridge; using Tango.PMR.Diagnostics; using Tango.PPC.Common.Application; using Tango.PPC.Common.Connection; diff --git a/Software/Visual_Studio/PPC/Tango.PPC.Common/EventLogging/DefaultEventLogger.cs b/Software/Visual_Studio/PPC/Tango.PPC.Common/EventLogging/DefaultEventLogger.cs index da904b74e..d981723be 100644 --- a/Software/Visual_Studio/PPC/Tango.PPC.Common/EventLogging/DefaultEventLogger.cs +++ b/Software/Visual_Studio/PPC/Tango.PPC.Common/EventLogging/DefaultEventLogger.cs @@ -10,7 +10,7 @@ using Tango.BL; using Tango.BL.Entities; using Tango.BL.Enumerations; using Tango.Core; -using Tango.Integration.Services; +using Tango.Integration.ExternalBridge; using Tango.PMR.Diagnostics; using Tango.Integration.Operation; using Tango.PPC.Common.Application; diff --git a/Software/Visual_Studio/PPC/Tango.PPC.UI/ViewModelLocator.cs b/Software/Visual_Studio/PPC/Tango.PPC.UI/ViewModelLocator.cs index d396920ab..a56b9bd4c 100644 --- a/Software/Visual_Studio/PPC/Tango.PPC.UI/ViewModelLocator.cs +++ b/Software/Visual_Studio/PPC/Tango.PPC.UI/ViewModelLocator.cs @@ -1,7 +1,7 @@ using System; using System.Windows; using Tango.Core.DI; -using Tango.Integration.Services; +using Tango.Integration.ExternalBridge; using Tango.Logging; using Tango.PPC.Common.Application; using Tango.PPC.Common.Authentication; diff --git a/Software/Visual_Studio/Tango.Integration/ExtensionMethods/IExternalBridgeClientExtensions.cs b/Software/Visual_Studio/Tango.Integration/ExtensionMethods/IExternalBridgeClientExtensions.cs index 62a7c1523..3e9546983 100644 --- a/Software/Visual_Studio/Tango.Integration/ExtensionMethods/IExternalBridgeClientExtensions.cs +++ b/Software/Visual_Studio/Tango.Integration/ExtensionMethods/IExternalBridgeClientExtensions.cs @@ -3,7 +3,7 @@ using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; -using Tango.Integration.Services; +using Tango.Integration.ExternalBridge; /// /// Contains extension methods. diff --git a/Software/Visual_Studio/Tango.Integration/ExternalBridge/ExternalBridgeScanner.cs b/Software/Visual_Studio/Tango.Integration/ExternalBridge/ExternalBridgeScanner.cs new file mode 100644 index 000000000..f9d103de2 --- /dev/null +++ b/Software/Visual_Studio/Tango.Integration/ExternalBridge/ExternalBridgeScanner.cs @@ -0,0 +1,166 @@ +using System; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.IO.Ports; +using System.Linq; +using System.Management; +using System.Net; +using System.Net.NetworkInformation; +using System.Net.Sockets; +using System.Text; +using System.Threading; +using System.Threading.Tasks; +using Tango.Core; +using Tango.Core.Helpers; +using Tango.Logging; +using Tango.PMR; +using Tango.PMR.Common; +using Tango.PMR.Integration; +using Tango.Settings; +using Tango.Transport.Adapters; + +namespace Tango.Integration.ExternalBridge +{ + /// + /// Scans for available machines on the local area network and physically connected via USB. + /// + /// + public class ExternalBridgeScanner : ExtendedObject + { + private Thread _tcpDiscoveryThread; + private Thread _usbDiscoveryThread; + private UdpClient _server; + private IntegrationSettings _settings; + + private ObservableCollection _availableMachines; + /// + /// Gets the available machines. + /// + public ObservableCollection AvailableMachines + { + get { return _availableMachines; } + private set { _availableMachines = value; RaisePropertyChangedAuto(); } + } + + private bool _isStarted; + /// + /// Gets or sets a value indicating whether this instance is started. + /// + public bool IsStarted + { + get { return _isStarted; } + private set { _isStarted = value; RaisePropertyChangedAuto(); } + } + + /// + /// Initializes a new instance of the class. + /// + public ExternalBridgeScanner() + { + _settings = SettingsManager.Default.GetOrCreate(); + _server = new UdpClient(_settings.ExternalBridgeServiceDiscoveryPort); + AvailableMachines = new ObservableCollection(); + } + + /// + /// Start scanning. (Results will be available through ). + /// + public void Start() + { + if (!IsStarted) + { + LogManager.Log("External bridge scanner started..."); + + IsStarted = true; + + _tcpDiscoveryThread = new Thread(TcpDiscoveryThreadMethod); + _tcpDiscoveryThread.IsBackground = true; + _tcpDiscoveryThread.Start(); + + _usbDiscoveryThread = new Thread(UsbDiscoveryThreadMethod); + _usbDiscoveryThread.IsBackground = true; + _usbDiscoveryThread.Start(); + } + } + + /// + /// Stops this instance. + /// + public void Stop() + { + if (IsStarted) + { + IsStarted = false; + LogManager.Log("External bridge scanner stopped."); + } + } + + /// + /// USB discovery thread method. + /// + private void UsbDiscoveryThreadMethod() + { + while (IsStarted) + { + foreach (var device in Transport.Components.ComPortEnumerator.EnumerateComPorts()) + { + if (device.Description.Contains(_settings.EmbeddedDeviceName) || !_settings.FilterExternalBridgeUsbMachines) + { + if (!AvailableMachines.OfType().ToList().Exists(x => x.ComPort == device.Port)) + { + LogManager.Log("Found a new machine via USB " + device.Description); + ThreadsHelper.InvokeUINow(() => + { + AvailableMachines.Add(new ExternalBridgeUsbClient(device.Port, device.Description, _settings.EmbeddedSerialBaudRate)); + }); + } + } + } + + Thread.Sleep(2000); + } + } + + /// + /// TCP discovery thread method. + /// + private void TcpDiscoveryThreadMethod() + { + while (IsStarted) + { + var ClientEp = new IPEndPoint(IPAddress.Any, 0); + var ClientRequestData = _server.Receive(ref ClientEp); + + ExternalBridgeUdpDiscoveryPacket packet = ExternalBridgeUdpDiscoveryPacket.Parser.ParseFrom(ClientRequestData); + + if (!AvailableMachines.OfType().ToList().Exists(x => x.SerialNumber == packet.SerialNumber)) + { + ExternalBridgeTcpClient newMachine = new ExternalBridgeTcpClient(packet.SerialNumber, ClientEp.Address.ToString()); + + LogManager.Log("Found a new machine via TCP " + newMachine.SerialNumber); + + ThreadsHelper.InvokeUINow(() => + { + AvailableMachines.Add(newMachine); + }); + } + + Thread.Sleep(1000); + } + } + + /// + /// Handles the available machines component state changed event. + /// + /// The sender. + /// The e. + private void Client_StateChanged(object sender, Transport.TransportComponentState e) + { + if (e == Transport.TransportComponentState.Failed || e == Transport.TransportComponentState.Disposed) + { + LogManager.Log("External bridge client failed or disposed. Removing from available machines..."); + AvailableMachines.Remove(sender as IExternalBridgeClient); + } + } + } +} diff --git a/Software/Visual_Studio/Tango.Integration/ExternalBridge/ExternalBridgeService.cs b/Software/Visual_Studio/Tango.Integration/ExternalBridge/ExternalBridgeService.cs new file mode 100644 index 000000000..8408d33af --- /dev/null +++ b/Software/Visual_Studio/Tango.Integration/ExternalBridge/ExternalBridgeService.cs @@ -0,0 +1,119 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Google.Protobuf; +using Tango.BL.Entities; +using Tango.Integration.Operation; +using Tango.PMR; +using Tango.PMR.Common; +using Tango.Transport; +using Tango.Transport.Transporters; +using Tango.PMR.Integration; +using Tango.Transport.Discovery; +using Tango.Transport.Servers; +using Tango.Transport.Adapters; + +namespace Tango.Integration.ExternalBridge +{ + public class ExternalBridgeService : BasicTransporter, IExternalBridgeService + { + private UdpDiscoveryService _discoverySevice; + private TcpServer _tcpServer; + + public IMachineOperator MachineOperator { get; private set; } + + public Machine Machine { get; private set; } + + public bool IsStarted { get; private set; } + + public ExternalBridgeService(IMachineOperator machineOperator, Machine machine) + { + Machine = machine; + MachineOperator = machineOperator; + + _tcpServer = new TcpServer(1984); + _tcpServer.ClientConnected += _tcpServer_ClientConnected; + + _discoverySevice = new UdpDiscoveryService(8888, new ExternalBridgeUdpDiscoveryPacket() + { + SerialNumber = Machine.SerialNumber, + }); + } + + private async void _tcpServer_ClientConnected(object sender, ClientConnectedEventArgs e) + { + Adapter = new TcpTransportAdapter(e.Socket); + await Connect(); + } + + public void Start() + { + if (!IsStarted) + { + _tcpServer.Start(); + _discoverySevice.Start(); + + IsStarted = true; + } + } + + public void Stop() + { + if (IsStarted) + { + _tcpServer.Stop(); + _discoverySevice.Stop(); + + IsStarted = false; + } + } + + protected async override void OnRequestReceived(MessageContainer container) + { + base.OnRequestReceived(container); + + if (container.Type == MessageType.ExternalClientLoginRequest) + { + var request = MessageFactory.ParseTangoMessageFromContainer(container); + + var response = new ExternalClientLoginResponse(); + response.Authenticated = false; + + if (request.Message.Password == "1234") + { + response.Authenticated = true; + response.SerialNumber = Machine.SerialNumber; + } + + await SendResponse(response, container.Token); + } + else + { + MachineOperator.RequestTimeout = TimeSpan.FromSeconds(60); + + if (!container.Continuous) + { + var response = await MachineOperator.SendRequest(container); + await SendResponse(response); + } + else + { + MachineOperator.SendContinuousRequest(container).Subscribe((response) => + { + + SendResponse(response); + + },(ex) => + { + if (ex is ResponseErrorException) + { + SendResponse((ex as ResponseErrorException).Container); + } + }); + } + } + } + } +} diff --git a/Software/Visual_Studio/Tango.Integration/ExternalBridge/ExternalBridgeTcpClient.cs b/Software/Visual_Studio/Tango.Integration/ExternalBridge/ExternalBridgeTcpClient.cs new file mode 100644 index 000000000..a81e64c02 --- /dev/null +++ b/Software/Visual_Studio/Tango.Integration/ExternalBridge/ExternalBridgeTcpClient.cs @@ -0,0 +1,103 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Tango.BL; +using Tango.BL.Entities; +using Tango.Integration.Operation; +using Tango.PMR.Integration; +using Tango.Settings; +using Tango.Transport.Adapters; +using Tango.Transport.Transporters; + +namespace Tango.Integration.ExternalBridge +{ + /// + /// Represents a secure external bridge TCP client. + /// + /// + /// + public class ExternalBridgeTcpClient : MachineOperator, IExternalBridgeSecureClient + { + private String _serialNumber; + /// + /// Gets the machine serial number. + /// + public String SerialNumber + { + get { return _serialNumber; } + set + { + _serialNumber = value; + RaisePropertyChangedAuto(); + + Machine = ObservablesEntitiesAdapter.Instance.Machines.SingleOrDefault(x => x.SerialNumber == _serialNumber); + } + } + + private String _ipAddress; + /// + /// Gets or sets the machine IP address. + /// + public String IPAddress + { + get { return _ipAddress; } + set { _ipAddress = value; RaisePropertyChangedAuto(); } + } + + /// + /// Gets a value indicating whether this client requires authentication. + /// + public bool RequiresAuthentication => true; + + /// + /// Connects the transport component. + /// + /// + public override async Task Connect() + { + await Disconnect(); + Adapter = new TcpTransportAdapter(IPAddress, SettingsManager.Default.GetOrCreate().ExternalBridgeServicePort); + await base.Connect(); + } + + /// + /// Authenticates with the service using the specified password. + /// + /// The password. + /// + public async Task Authenticate(String password) + { + var response = await SendRequest(new ExternalClientLoginRequest() + { + Password = password + }); + return response.Message.Authenticated; + } + + /// + /// Initializes a new instance of the class. + /// + /// The machine serial number. + /// The machine IP address. + public ExternalBridgeTcpClient(String serialNumber, String ipAddress) + { + SerialNumber = serialNumber; + IPAddress = ipAddress; + UseKeepAlive = true; + EnableDiagnostics = true; + } + + /// + /// Returns a that represents this instance. + /// + /// + /// A that represents this instance. + /// + public override string ToString() + { + return SerialNumber; + } + } +} diff --git a/Software/Visual_Studio/Tango.Integration/ExternalBridge/ExternalBridgeUsbClient.cs b/Software/Visual_Studio/Tango.Integration/ExternalBridge/ExternalBridgeUsbClient.cs new file mode 100644 index 000000000..0e5dca2d0 --- /dev/null +++ b/Software/Visual_Studio/Tango.Integration/ExternalBridge/ExternalBridgeUsbClient.cs @@ -0,0 +1,114 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Tango.BL; +using Tango.BL.Entities; +using Tango.Integration.Operation; +using Tango.PMR.Integration; +using Tango.Settings; +using Tango.Transport.Adapters; +using Tango.Transport.Transporters; + +namespace Tango.Integration.ExternalBridge +{ + /// + /// Represents an external bridge USB client. + /// + /// + /// This isn't really an external bridge client, but merely a transporter for communicating with a Tango machine embedded device. + /// + /// + /// + public class ExternalBridgeUsbClient : MachineOperator, IExternalBridgeClient + { + private String _serialNumber; + /// + /// Gets the machine serial number. + /// + public String SerialNumber + { + get { return _serialNumber; } + set + { + _serialNumber = value; + RaisePropertyChangedAuto(); + + Machine = ObservablesEntitiesAdapter.Instance.Machines.SingleOrDefault(x => x.SerialNumber == _serialNumber); + RaisePropertyChanged(nameof(Machine)); + } + } + + private String _comPort; + /// + /// Gets or sets the serial COM port. + /// + public String ComPort + { + get { return _comPort; } + set { _comPort = value; RaisePropertyChangedAuto(); } + } + + private UsbSerialBaudRates _baudRate; + /// + /// Gets or sets the baud rate. + /// + public UsbSerialBaudRates BaudRate + { + get { return _baudRate; } + set { _baudRate = value; RaisePropertyChangedAuto(); } + } + + private String _Device; + /// + /// Gets or sets the USB device name. + /// + public String Device + { + get { return _Device; } + set { _Device = value; RaisePropertyChangedAuto(); } + } + + /// + /// Connects the transport component. + /// + /// + public override async Task Connect() + { + await Disconnect(); + Adapter = new UsbTransportAdapter(ComPort) { BaudRate = BaudRate }; + await base.Connect(); + } + + /// + /// Gets a value indicating whether this client requires authentication. + /// + public bool RequiresAuthentication => false; + + /// + /// Initializes a new instance of the class. + /// + /// The COM port. + /// The device. + public ExternalBridgeUsbClient(String comPort, String device,UsbSerialBaudRates baudRate = UsbSerialBaudRates.BR_115200) + { + ComPort = comPort; + Device = device; + BaudRate = baudRate; + UseKeepAlive = false; + EnableDiagnostics = true; + } + + /// + /// Returns a that represents this instance. + /// + /// + /// A that represents this instance. + /// + public override string ToString() + { + return Device; + } + } +} diff --git a/Software/Visual_Studio/Tango.Integration/ExternalBridge/IExternalBridgeClient.cs b/Software/Visual_Studio/Tango.Integration/ExternalBridge/IExternalBridgeClient.cs new file mode 100644 index 000000000..b1d084cfa --- /dev/null +++ b/Software/Visual_Studio/Tango.Integration/ExternalBridge/IExternalBridgeClient.cs @@ -0,0 +1,30 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Net.Sockets; +using System.Text; +using System.Threading.Tasks; +using Tango.BL.Entities; +using Tango.Integration.Operation; +using Tango.Transport; +using Tango.Transport.Transporters; + +namespace Tango.Integration.ExternalBridge +{ + /// + /// Represents a Tango machine external bridge service client. + /// + /// + public interface IExternalBridgeClient : IMachineOperator + { + /// + /// Gets a value indicating whether this client requires authentication. + /// + bool RequiresAuthentication { get; } + + /// + /// Gets or sets the machine serial number. + /// + String SerialNumber { get; set; } + } +} diff --git a/Software/Visual_Studio/Tango.Integration/ExternalBridge/IExternalBridgeSecureClient.cs b/Software/Visual_Studio/Tango.Integration/ExternalBridge/IExternalBridgeSecureClient.cs new file mode 100644 index 000000000..e109837fb --- /dev/null +++ b/Software/Visual_Studio/Tango.Integration/ExternalBridge/IExternalBridgeSecureClient.cs @@ -0,0 +1,22 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Tango.Integration.ExternalBridge +{ + /// + /// Represents a secure external bridge client which requires authentication. + /// + /// + public interface IExternalBridgeSecureClient : IExternalBridgeClient + { + /// + /// Authenticates with the service using the specified password. + /// + /// The password. + /// + Task Authenticate(String password); + } +} diff --git a/Software/Visual_Studio/Tango.Integration/ExternalBridge/IExternalBridgeService.cs b/Software/Visual_Studio/Tango.Integration/ExternalBridge/IExternalBridgeService.cs new file mode 100644 index 000000000..d8e106ac4 --- /dev/null +++ b/Software/Visual_Studio/Tango.Integration/ExternalBridge/IExternalBridgeService.cs @@ -0,0 +1,21 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Tango.BL.Entities; +using Tango.Integration.Operation; +using Tango.Transport; +using Tango.Transport.Transporters; + +namespace Tango.Integration.ExternalBridge +{ + public interface IExternalBridgeService : ITransporter + { + IMachineOperator MachineOperator { get; } + Machine Machine { get; } + bool IsStarted { get; } + void Start(); + void Stop(); + } +} diff --git a/Software/Visual_Studio/Tango.Integration/Services/ExternalBridgeScanner.cs b/Software/Visual_Studio/Tango.Integration/Services/ExternalBridgeScanner.cs deleted file mode 100644 index 8aca73e46..000000000 --- a/Software/Visual_Studio/Tango.Integration/Services/ExternalBridgeScanner.cs +++ /dev/null @@ -1,166 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Collections.ObjectModel; -using System.IO.Ports; -using System.Linq; -using System.Management; -using System.Net; -using System.Net.NetworkInformation; -using System.Net.Sockets; -using System.Text; -using System.Threading; -using System.Threading.Tasks; -using Tango.Core; -using Tango.Core.Helpers; -using Tango.Logging; -using Tango.PMR; -using Tango.PMR.Common; -using Tango.PMR.Integration; -using Tango.Settings; -using Tango.Transport.Adapters; - -namespace Tango.Integration.Services -{ - /// - /// Scans for available machines on the local area network and physically connected via USB. - /// - /// - public class ExternalBridgeScanner : ExtendedObject - { - private Thread _tcpDiscoveryThread; - private Thread _usbDiscoveryThread; - private UdpClient _server; - private IntegrationSettings _settings; - - private ObservableCollection _availableMachines; - /// - /// Gets the available machines. - /// - public ObservableCollection AvailableMachines - { - get { return _availableMachines; } - private set { _availableMachines = value; RaisePropertyChangedAuto(); } - } - - private bool _isStarted; - /// - /// Gets or sets a value indicating whether this instance is started. - /// - public bool IsStarted - { - get { return _isStarted; } - private set { _isStarted = value; RaisePropertyChangedAuto(); } - } - - /// - /// Initializes a new instance of the class. - /// - public ExternalBridgeScanner() - { - _settings = SettingsManager.Default.GetOrCreate(); - _server = new UdpClient(_settings.ExternalBridgeServiceDiscoveryPort); - AvailableMachines = new ObservableCollection(); - } - - /// - /// Start scanning. (Results will be available through ). - /// - public void Start() - { - if (!IsStarted) - { - LogManager.Log("External bridge scanner started..."); - - IsStarted = true; - - _tcpDiscoveryThread = new Thread(TcpDiscoveryThreadMethod); - _tcpDiscoveryThread.IsBackground = true; - _tcpDiscoveryThread.Start(); - - _usbDiscoveryThread = new Thread(UsbDiscoveryThreadMethod); - _usbDiscoveryThread.IsBackground = true; - _usbDiscoveryThread.Start(); - } - } - - /// - /// Stops this instance. - /// - public void Stop() - { - if (IsStarted) - { - IsStarted = false; - LogManager.Log("External bridge scanner stopped."); - } - } - - /// - /// USB discovery thread method. - /// - private void UsbDiscoveryThreadMethod() - { - while (IsStarted) - { - foreach (var device in Transport.Components.ComPortEnumerator.EnumerateComPorts()) - { - if (device.Description.Contains(_settings.EmbeddedDeviceName) || !_settings.FilterExternalBridgeUsbMachines) - { - if (!AvailableMachines.OfType().ToList().Exists(x => x.ComPort == device.Port)) - { - LogManager.Log("Found a new machine via USB " + device.Description); - ThreadsHelper.InvokeUINow(() => - { - AvailableMachines.Add(new ExternalBridgeUsbClient(device.Port, device.Description, _settings.EmbeddedSerialBaudRate)); - }); - } - } - } - - Thread.Sleep(2000); - } - } - - /// - /// TCP discovery thread method. - /// - private void TcpDiscoveryThreadMethod() - { - while (IsStarted) - { - var ClientEp = new IPEndPoint(IPAddress.Any, 0); - var ClientRequestData = _server.Receive(ref ClientEp); - - ExternalBridgeUdpDiscoveryPacket packet = ExternalBridgeUdpDiscoveryPacket.Parser.ParseFrom(ClientRequestData); - - if (!AvailableMachines.OfType().ToList().Exists(x => x.SerialNumber == packet.SerialNumber)) - { - ExternalBridgeTcpClient newMachine = new ExternalBridgeTcpClient(packet.SerialNumber, ClientEp.Address.ToString()); - - LogManager.Log("Found a new machine via TCP " + newMachine.SerialNumber); - - ThreadsHelper.InvokeUINow(() => - { - AvailableMachines.Add(newMachine); - }); - } - - Thread.Sleep(1000); - } - } - - /// - /// Handles the available machines component state changed event. - /// - /// The sender. - /// The e. - private void Client_StateChanged(object sender, Transport.TransportComponentState e) - { - if (e == Transport.TransportComponentState.Failed || e == Transport.TransportComponentState.Disposed) - { - LogManager.Log("External bridge client failed or disposed. Removing from available machines..."); - AvailableMachines.Remove(sender as IExternalBridgeClient); - } - } - } -} diff --git a/Software/Visual_Studio/Tango.Integration/Services/ExternalBridgeService.cs b/Software/Visual_Studio/Tango.Integration/Services/ExternalBridgeService.cs deleted file mode 100644 index 408ec2822..000000000 --- a/Software/Visual_Studio/Tango.Integration/Services/ExternalBridgeService.cs +++ /dev/null @@ -1,119 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using Google.Protobuf; -using Tango.BL.Entities; -using Tango.Integration.Operation; -using Tango.PMR; -using Tango.PMR.Common; -using Tango.Transport; -using Tango.Transport.Transporters; -using Tango.PMR.Integration; -using Tango.Transport.Discovery; -using Tango.Transport.Servers; -using Tango.Transport.Adapters; - -namespace Tango.Integration.Services -{ - public class ExternalBridgeService : BasicTransporter, IExternalBridgeService - { - private UdpDiscoveryService _discoverySevice; - private TcpServer _tcpServer; - - public IMachineOperator MachineOperator { get; private set; } - - public Machine Machine { get; private set; } - - public bool IsStarted { get; private set; } - - public ExternalBridgeService(IMachineOperator machineOperator, Machine machine) - { - Machine = machine; - MachineOperator = machineOperator; - - _tcpServer = new TcpServer(1984); - _tcpServer.ClientConnected += _tcpServer_ClientConnected; - - _discoverySevice = new UdpDiscoveryService(8888, new ExternalBridgeUdpDiscoveryPacket() - { - SerialNumber = Machine.SerialNumber, - }); - } - - private async void _tcpServer_ClientConnected(object sender, ClientConnectedEventArgs e) - { - Adapter = new TcpTransportAdapter(e.Socket); - await Connect(); - } - - public void Start() - { - if (!IsStarted) - { - _tcpServer.Start(); - _discoverySevice.Start(); - - IsStarted = true; - } - } - - public void Stop() - { - if (IsStarted) - { - _tcpServer.Stop(); - _discoverySevice.Stop(); - - IsStarted = false; - } - } - - protected async override void OnRequestReceived(MessageContainer container) - { - base.OnRequestReceived(container); - - if (container.Type == MessageType.ExternalClientLoginRequest) - { - var request = MessageFactory.ParseTangoMessageFromContainer(container); - - var response = new ExternalClientLoginResponse(); - response.Authenticated = false; - - if (request.Message.Password == "1234") - { - response.Authenticated = true; - response.SerialNumber = Machine.SerialNumber; - } - - await SendResponse(response, container.Token); - } - else - { - MachineOperator.RequestTimeout = TimeSpan.FromSeconds(60); - - if (!container.Continuous) - { - var response = await MachineOperator.SendRequest(container); - await SendResponse(response); - } - else - { - MachineOperator.SendContinuousRequest(container).Subscribe((response) => - { - - SendResponse(response); - - },(ex) => - { - if (ex is ResponseErrorException) - { - SendResponse((ex as ResponseErrorException).Container); - } - }); - } - } - } - } -} diff --git a/Software/Visual_Studio/Tango.Integration/Services/ExternalBridgeTcpClient.cs b/Software/Visual_Studio/Tango.Integration/Services/ExternalBridgeTcpClient.cs deleted file mode 100644 index 9dc44dbf9..000000000 --- a/Software/Visual_Studio/Tango.Integration/Services/ExternalBridgeTcpClient.cs +++ /dev/null @@ -1,103 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using Tango.BL; -using Tango.BL.Entities; -using Tango.Integration.Operation; -using Tango.PMR.Integration; -using Tango.Settings; -using Tango.Transport.Adapters; -using Tango.Transport.Transporters; - -namespace Tango.Integration.Services -{ - /// - /// Represents a secure external bridge TCP client. - /// - /// - /// - public class ExternalBridgeTcpClient : MachineOperator, IExternalBridgeSecureClient - { - private String _serialNumber; - /// - /// Gets the machine serial number. - /// - public String SerialNumber - { - get { return _serialNumber; } - set - { - _serialNumber = value; - RaisePropertyChangedAuto(); - - Machine = ObservablesEntitiesAdapter.Instance.Machines.SingleOrDefault(x => x.SerialNumber == _serialNumber); - } - } - - private String _ipAddress; - /// - /// Gets or sets the machine IP address. - /// - public String IPAddress - { - get { return _ipAddress; } - set { _ipAddress = value; RaisePropertyChangedAuto(); } - } - - /// - /// Gets a value indicating whether this client requires authentication. - /// - public bool RequiresAuthentication => true; - - /// - /// Connects the transport component. - /// - /// - public override async Task Connect() - { - await Disconnect(); - Adapter = new TcpTransportAdapter(IPAddress, SettingsManager.Default.GetOrCreate().ExternalBridgeServicePort); - await base.Connect(); - } - - /// - /// Authenticates with the service using the specified password. - /// - /// The password. - /// - public async Task Authenticate(String password) - { - var response = await SendRequest(new ExternalClientLoginRequest() - { - Password = password - }); - return response.Message.Authenticated; - } - - /// - /// Initializes a new instance of the class. - /// - /// The machine serial number. - /// The machine IP address. - public ExternalBridgeTcpClient(String serialNumber, String ipAddress) - { - SerialNumber = serialNumber; - IPAddress = ipAddress; - UseKeepAlive = true; - EnableDiagnostics = true; - } - - /// - /// Returns a that represents this instance. - /// - /// - /// A that represents this instance. - /// - public override string ToString() - { - return SerialNumber; - } - } -} diff --git a/Software/Visual_Studio/Tango.Integration/Services/ExternalBridgeUsbClient.cs b/Software/Visual_Studio/Tango.Integration/Services/ExternalBridgeUsbClient.cs deleted file mode 100644 index 7a901ccf2..000000000 --- a/Software/Visual_Studio/Tango.Integration/Services/ExternalBridgeUsbClient.cs +++ /dev/null @@ -1,114 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using Tango.BL; -using Tango.BL.Entities; -using Tango.Integration.Operation; -using Tango.PMR.Integration; -using Tango.Settings; -using Tango.Transport.Adapters; -using Tango.Transport.Transporters; - -namespace Tango.Integration.Services -{ - /// - /// Represents an external bridge USB client. - /// - /// - /// This isn't really an external bridge client, but merely a transporter for communicating with a Tango machine embedded device. - /// - /// - /// - public class ExternalBridgeUsbClient : MachineOperator, IExternalBridgeClient - { - private String _serialNumber; - /// - /// Gets the machine serial number. - /// - public String SerialNumber - { - get { return _serialNumber; } - set - { - _serialNumber = value; - RaisePropertyChangedAuto(); - - Machine = ObservablesEntitiesAdapter.Instance.Machines.SingleOrDefault(x => x.SerialNumber == _serialNumber); - RaisePropertyChanged(nameof(Machine)); - } - } - - private String _comPort; - /// - /// Gets or sets the serial COM port. - /// - public String ComPort - { - get { return _comPort; } - set { _comPort = value; RaisePropertyChangedAuto(); } - } - - private UsbSerialBaudRates _baudRate; - /// - /// Gets or sets the baud rate. - /// - public UsbSerialBaudRates BaudRate - { - get { return _baudRate; } - set { _baudRate = value; RaisePropertyChangedAuto(); } - } - - private String _Device; - /// - /// Gets or sets the USB device name. - /// - public String Device - { - get { return _Device; } - set { _Device = value; RaisePropertyChangedAuto(); } - } - - /// - /// Connects the transport component. - /// - /// - public override async Task Connect() - { - await Disconnect(); - Adapter = new UsbTransportAdapter(ComPort) { BaudRate = BaudRate }; - await base.Connect(); - } - - /// - /// Gets a value indicating whether this client requires authentication. - /// - public bool RequiresAuthentication => false; - - /// - /// Initializes a new instance of the class. - /// - /// The COM port. - /// The device. - public ExternalBridgeUsbClient(String comPort, String device,UsbSerialBaudRates baudRate = UsbSerialBaudRates.BR_115200) - { - ComPort = comPort; - Device = device; - BaudRate = baudRate; - UseKeepAlive = false; - EnableDiagnostics = true; - } - - /// - /// Returns a that represents this instance. - /// - /// - /// A that represents this instance. - /// - public override string ToString() - { - return Device; - } - } -} diff --git a/Software/Visual_Studio/Tango.Integration/Services/IExternalBridgeClient.cs b/Software/Visual_Studio/Tango.Integration/Services/IExternalBridgeClient.cs deleted file mode 100644 index 00cfdeace..000000000 --- a/Software/Visual_Studio/Tango.Integration/Services/IExternalBridgeClient.cs +++ /dev/null @@ -1,30 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Net.Sockets; -using System.Text; -using System.Threading.Tasks; -using Tango.BL.Entities; -using Tango.Integration.Operation; -using Tango.Transport; -using Tango.Transport.Transporters; - -namespace Tango.Integration.Services -{ - /// - /// Represents a Tango machine external bridge service client. - /// - /// - public interface IExternalBridgeClient : IMachineOperator - { - /// - /// Gets a value indicating whether this client requires authentication. - /// - bool RequiresAuthentication { get; } - - /// - /// Gets or sets the machine serial number. - /// - String SerialNumber { get; set; } - } -} diff --git a/Software/Visual_Studio/Tango.Integration/Services/IExternalBridgeSecureClient.cs b/Software/Visual_Studio/Tango.Integration/Services/IExternalBridgeSecureClient.cs deleted file mode 100644 index 56eb1976d..000000000 --- a/Software/Visual_Studio/Tango.Integration/Services/IExternalBridgeSecureClient.cs +++ /dev/null @@ -1,22 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace Tango.Integration.Services -{ - /// - /// Represents a secure external bridge client which requires authentication. - /// - /// - public interface IExternalBridgeSecureClient : IExternalBridgeClient - { - /// - /// Authenticates with the service using the specified password. - /// - /// The password. - /// - Task Authenticate(String password); - } -} diff --git a/Software/Visual_Studio/Tango.Integration/Services/IExternalBridgeService.cs b/Software/Visual_Studio/Tango.Integration/Services/IExternalBridgeService.cs deleted file mode 100644 index 66fab6fdc..000000000 --- a/Software/Visual_Studio/Tango.Integration/Services/IExternalBridgeService.cs +++ /dev/null @@ -1,21 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using Tango.BL.Entities; -using Tango.Integration.Operation; -using Tango.Transport; -using Tango.Transport.Transporters; - -namespace Tango.Integration.Services -{ - public interface IExternalBridgeService : ITransporter - { - IMachineOperator MachineOperator { get; } - Machine Machine { get; } - bool IsStarted { get; } - void Start(); - void Stop(); - } -} diff --git a/Software/Visual_Studio/Tango.Integration/Tango.Integration.csproj b/Software/Visual_Studio/Tango.Integration/Tango.Integration.csproj index 9e386c9c2..f5d1c587f 100644 --- a/Software/Visual_Studio/Tango.Integration/Tango.Integration.csproj +++ b/Software/Visual_Studio/Tango.Integration/Tango.Integration.csproj @@ -95,14 +95,14 @@ - - - - - + + + + + - - + + -- cgit v1.3.1 From d62b12aab4f521ff287da135b6e66e92629a50dd Mon Sep 17 00:00:00 2001 From: Roy Ben-Shabat Date: Sun, 29 Jul 2018 10:56:41 +0300 Subject: Added data source in about dialog in machine studio. Added last monitor in machine studio settings. --- Software/DB/Tango.mdf | Bin 75497472 -> 75497472 bytes Software/DB/Tango_log.ldf | Bin 1835008 -> 1835008 bytes .../MachineStudioSettings.cs | 8 + .../Tango.MachineStudio.UI/MainWindow.xaml | 2 +- .../Tango.MachineStudio.UI/MainWindow.xaml.cs | 20 ++- .../DefaultStudioApplicationManager.cs | 114 ++++++++------- .../ViewModels/AboutViewVM.cs | 5 + .../Tango.MachineStudio.UI/Views/AboutView.xaml | 4 +- .../PPC/Modules/Tango.PPC.MachineSettings/App.xaml | 11 ++ .../Images/ppc-module.png | Bin 0 -> 1748 bytes .../MachineSettingsModule.cs | 84 +++++++++++ .../Properties/AssemblyInfo.cs | 20 +++ .../Properties/Resources.Designer.cs | 71 +++++++++ .../Properties/Resources.resx | 117 +++++++++++++++ .../Properties/Settings.Designer.cs | 30 ++++ .../Properties/Settings.settings | 7 + .../Tango.PPC.MachineSettings.csproj | 161 +++++++++++++++++++++ .../Tango.PPC.MachineSettings/ViewModelLocator.cs | 32 ++++ .../ViewModels/MainViewVM.cs | 24 +++ .../Tango.PPC.MachineSettings/Views/MainView.xaml | 14 ++ .../Views/MainView.xaml.cs | 28 ++++ .../Modules/Tango.PPC.MachineSettings/app.config | 61 ++++++++ .../Tango.PPC.MachineSettings/packages.config | 7 + Software/Visual_Studio/Tango.sln | 55 ++++++- 24 files changed, 817 insertions(+), 58 deletions(-) create mode 100644 Software/Visual_Studio/PPC/Modules/Tango.PPC.MachineSettings/App.xaml create mode 100644 Software/Visual_Studio/PPC/Modules/Tango.PPC.MachineSettings/Images/ppc-module.png create mode 100644 Software/Visual_Studio/PPC/Modules/Tango.PPC.MachineSettings/MachineSettingsModule.cs create mode 100644 Software/Visual_Studio/PPC/Modules/Tango.PPC.MachineSettings/Properties/AssemblyInfo.cs create mode 100644 Software/Visual_Studio/PPC/Modules/Tango.PPC.MachineSettings/Properties/Resources.Designer.cs create mode 100644 Software/Visual_Studio/PPC/Modules/Tango.PPC.MachineSettings/Properties/Resources.resx create mode 100644 Software/Visual_Studio/PPC/Modules/Tango.PPC.MachineSettings/Properties/Settings.Designer.cs create mode 100644 Software/Visual_Studio/PPC/Modules/Tango.PPC.MachineSettings/Properties/Settings.settings create mode 100644 Software/Visual_Studio/PPC/Modules/Tango.PPC.MachineSettings/Tango.PPC.MachineSettings.csproj create mode 100644 Software/Visual_Studio/PPC/Modules/Tango.PPC.MachineSettings/ViewModelLocator.cs create mode 100644 Software/Visual_Studio/PPC/Modules/Tango.PPC.MachineSettings/ViewModels/MainViewVM.cs create mode 100644 Software/Visual_Studio/PPC/Modules/Tango.PPC.MachineSettings/Views/MainView.xaml create mode 100644 Software/Visual_Studio/PPC/Modules/Tango.PPC.MachineSettings/Views/MainView.xaml.cs create mode 100644 Software/Visual_Studio/PPC/Modules/Tango.PPC.MachineSettings/app.config create mode 100644 Software/Visual_Studio/PPC/Modules/Tango.PPC.MachineSettings/packages.config (limited to 'Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/StudioApplication') diff --git a/Software/DB/Tango.mdf b/Software/DB/Tango.mdf index c88505833..163460bb9 100644 Binary files a/Software/DB/Tango.mdf and b/Software/DB/Tango.mdf differ diff --git a/Software/DB/Tango_log.ldf b/Software/DB/Tango_log.ldf index 665a0d93e..44c77937d 100644 Binary files a/Software/DB/Tango_log.ldf and b/Software/DB/Tango_log.ldf differ diff --git a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/MachineStudioSettings.cs b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/MachineStudioSettings.cs index b12d9a580..d63e07594 100644 --- a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/MachineStudioSettings.cs +++ b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/MachineStudioSettings.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; +using System.Windows; using Tango.Logging; using Tango.Settings; @@ -40,13 +41,20 @@ namespace Tango.MachineStudio.Common /// public List LoggingCategories { get; set; } + /// + /// Gets or sets the last bounds. + /// + public Rect LastBounds { get; set; } + /// /// Initializes a new instance of the class. /// public MachineStudioSettings() { + LastBounds = new Rect(); LoggingCategories = new List(); UpdateServiceAddress = "http://twine01/MachineStudioUpdateService/MachineStudioUpdateService.svc"; + } } } diff --git a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/MainWindow.xaml b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/MainWindow.xaml index 1dfe4c18f..b8a6cd1c0 100644 --- a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/MainWindow.xaml +++ b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/MainWindow.xaml @@ -8,7 +8,7 @@ xmlns:views="clr-namespace:Tango.MachineStudio.UI.Views" xmlns:sharedControls="clr-namespace:Tango.SharedUI.Controls;assembly=Tango.SharedUI" mc:Ignorable="d" - Title="Tango" Height="800" Width="1280" WindowStartupLocation="CenterOwner" WindowState="Maximized" Foreground="#494949" BorderThickness="1" BorderBrush="{StaticResource AccentColorBrush}"> + Title="Tango" Height="800" Width="1280" Foreground="#494949" BorderThickness="1" BorderBrush="{StaticResource AccentColorBrush}"> diff --git a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/MainWindow.xaml.cs b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/MainWindow.xaml.cs index 9901d3b80..f0f93a867 100644 --- a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/MainWindow.xaml.cs +++ b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/MainWindow.xaml.cs @@ -18,7 +18,9 @@ using System.Windows.Shapes; using Tango.Core.DI; using Tango.Core.Helpers; using Tango.Logging; +using Tango.MachineStudio.Common; using Tango.MachineStudio.Common.StudioApplication; +using Tango.Settings; namespace Tango.MachineStudio.UI { @@ -37,10 +39,20 @@ namespace Tango.MachineStudio.UI try { InitializeComponent(); + + WindowStartupLocation = WindowStartupLocation.Manual; + + var r = SettingsManager.Default.GetOrCreate().LastBounds; + + if (r.Width > 0 && r.Height > 0) + { + Left = r.Left; + } + Instance = this; ThreadsHelper.SetDisptacher(Dispatcher); - this.Closing += MainWindow_Closing; + Closing += MainWindow_Closing; } catch (Exception ex) { @@ -49,6 +61,12 @@ namespace Tango.MachineStudio.UI this.Loaded += MainWindow_Loaded; this.SizeChanged += MainWindow_SizeChanged; + ContentRendered += MainWindow_ContentRendered; + } + + private void MainWindow_ContentRendered(object sender, EventArgs e) + { + WindowState = WindowState.Maximized; } private void MainWindow_SizeChanged(object sender, SizeChangedEventArgs e) diff --git a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/StudioApplication/DefaultStudioApplicationManager.cs b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/StudioApplication/DefaultStudioApplicationManager.cs index d6a832c8a..c7ac60ace 100644 --- a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/StudioApplication/DefaultStudioApplicationManager.cs +++ b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/StudioApplication/DefaultStudioApplicationManager.cs @@ -148,76 +148,92 @@ namespace Tango.MachineStudio.UI.StudioApplication IsShuttingDown = true; - await Task.Factory.StartNew(async () => + try { + Rect r = new Rect( + MainWindow.Instance.Left, + MainWindow.Instance.Top, + MainWindow.Instance.Width, + MainWindow.Instance.Height); + + await Task.Factory.StartNew(async () => + { //Do Shutdown Procedures... foreach (var vm in TangoIOC.Default.GetAllInstancesByBase()) - { - try { - var result = await vm.OnShutdownRequest(); - if (!result) + try + { + var result = await vm.OnShutdownRequest(); + if (!result) + { + IsShuttingDown = false; + return; + } + } + catch (Exception ex) { - IsShuttingDown = false; - return; + LogManager.Log(ex, "Error on shutdown request with " + vm.GetType().Name); } } - catch (Exception ex) + + foreach (var vm in TangoIOC.Default.GetAllInstancesByBase()) { - LogManager.Log(ex, "Error on shutdown request with " + vm.GetType().Name); + vm.OnShuttingDown(); } - } - foreach (var vm in TangoIOC.Default.GetAllInstancesByBase()) - { - vm.OnShuttingDown(); - } + SettingsManager.Default.GetOrCreate().LastBounds = r; - try - { - SettingsManager.Default.Save(); - } - catch (Exception ex) - { - LogManager.Log(ex, "Error saving settings."); - } + try + { + SettingsManager.Default.Save(); + } + catch (Exception ex) + { + LogManager.Log(ex, "Error saving settings."); + } - _navigationManager.NavigateTo(NavigationView.ShutdownView); + _navigationManager.NavigateTo(NavigationView.ShutdownView); - Thread.Sleep(1500); + Thread.Sleep(1500); - foreach (var window in _openedWindows) - { - ThreadsHelper.InvokeUI(() => + foreach (var window in _openedWindows) { - window.Close(); - }); - } + ThreadsHelper.InvokeUI(() => + { + window.Close(); + }); + } - try - { - if (ConnectedMachine != null) + try { - ConnectedMachine.Disconnect().Wait(); + if (ConnectedMachine != null) + { + ConnectedMachine.Disconnect().Wait(); + } + } + catch (Exception ex) + { + LogManager.Log(ex, "Error disconnecting from machine."); } - } - catch (Exception ex) - { - LogManager.Log(ex, "Error disconnecting from machine."); - } - var eventLogger = TangoIOC.Default.GetInstance(); - if (eventLogger != null) - { - eventLogger.Log(EventTypes.ApplicationTerminated, "Application Terminated!"); - eventLogger.FlushAll(); - } + var eventLogger = TangoIOC.Default.GetInstance(); + if (eventLogger != null) + { + eventLogger.Log(EventTypes.ApplicationTerminated, "Application Terminated!"); + eventLogger.FlushAll(); + } - Thread.Sleep(1500); + Thread.Sleep(1500); - Environment.Exit(0); + Environment.Exit(0); - }); + }); + } + catch (Exception ex) + { + IsShuttingDown = false; + LogManager.Log(ex,"An error occurred while shutting down machine studio."); + } } /// @@ -264,7 +280,7 @@ namespace Tango.MachineStudio.UI.StudioApplication { get { - return typeof(ExtendedObject).Assembly.GetName().Version.ToString(3); + return typeof(ExtendedObject).Assembly.GetName().Version.ToString(3); } } diff --git a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/ViewModels/AboutViewVM.cs b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/ViewModels/AboutViewVM.cs index 5fe3b06b8..0b8a205f7 100644 --- a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/ViewModels/AboutViewVM.cs +++ b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/ViewModels/AboutViewVM.cs @@ -3,7 +3,9 @@ using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; +using Tango.Core; using Tango.MachineStudio.Common.StudioApplication; +using Tango.Settings; using Tango.SharedUI; namespace Tango.MachineStudio.UI.ViewModels @@ -12,9 +14,12 @@ namespace Tango.MachineStudio.UI.ViewModels { public IStudioApplicationManager ApplicationManager { get; set; } + public CoreSettings Settings { get; set; } + public AboutViewVM(IStudioApplicationManager applicationManager) { ApplicationManager = applicationManager; + Settings = SettingsManager.Default.GetOrCreate(); } } } diff --git a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Views/AboutView.xaml b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Views/AboutView.xaml index 2ac0df9de..0f8bceac7 100644 --- a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Views/AboutView.xaml +++ b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Views/AboutView.xaml @@ -36,13 +36,15 @@ - + Machine Studio: v Core Libraries: v Build Date: + Data Source: + diff --git a/Software/Visual_Studio/PPC/Modules/Tango.PPC.MachineSettings/App.xaml b/Software/Visual_Studio/PPC/Modules/Tango.PPC.MachineSettings/App.xaml new file mode 100644 index 000000000..e3b2c28f8 --- /dev/null +++ b/Software/Visual_Studio/PPC/Modules/Tango.PPC.MachineSettings/App.xaml @@ -0,0 +1,11 @@ + + + + + + + + + \ No newline at end of file diff --git a/Software/Visual_Studio/PPC/Modules/Tango.PPC.MachineSettings/Images/ppc-module.png b/Software/Visual_Studio/PPC/Modules/Tango.PPC.MachineSettings/Images/ppc-module.png new file mode 100644 index 000000000..6f27f49be Binary files /dev/null and b/Software/Visual_Studio/PPC/Modules/Tango.PPC.MachineSettings/Images/ppc-module.png differ diff --git a/Software/Visual_Studio/PPC/Modules/Tango.PPC.MachineSettings/MachineSettingsModule.cs b/Software/Visual_Studio/PPC/Modules/Tango.PPC.MachineSettings/MachineSettingsModule.cs new file mode 100644 index 000000000..0d6f7c75f --- /dev/null +++ b/Software/Visual_Studio/PPC/Modules/Tango.PPC.MachineSettings/MachineSettingsModule.cs @@ -0,0 +1,84 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Media.Imaging; +using Tango.BL.Enumerations; +using Tango.PPC.Common; +using Tango.PPC.MachineSettings.Views; +using Tango.SharedUI.Helpers; + +namespace Tango.PPC.MachineSettings +{ + /// + /// Represents a PPC . + /// + /// + [PPCModule(2)] + public class MachineSettingsModule : PPCModuleBase + { + /// + /// Gets the module name. + /// + public override string Name + { + get + { + return "Settings"; + } + } + + /// + /// Gets the module description. + /// + public override string Description + { + get + { + return "Local Machine Settings"; + } + } + + /// + /// Gets the module cover image. + /// + public override BitmapSource Image + { + get + { + return ResourceHelper.GetImageFromResources("Images/ppc-module.png"); + } + } + + /// + /// Gets the module entry point view type. + /// + public override Type MainViewType + { + get + { + return typeof(MainView); + } + } + + /// + /// Gets the permission required to see and load this module. + /// + public override Permissions Permission + { + get + { + return Permissions.RunMachineStudio; + } + } + + /// + /// Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + /// + public override void Dispose() + { + //Dispose module here... + } + } +} diff --git a/Software/Visual_Studio/PPC/Modules/Tango.PPC.MachineSettings/Properties/AssemblyInfo.cs b/Software/Visual_Studio/PPC/Modules/Tango.PPC.MachineSettings/Properties/AssemblyInfo.cs new file mode 100644 index 000000000..52774bee8 --- /dev/null +++ b/Software/Visual_Studio/PPC/Modules/Tango.PPC.MachineSettings/Properties/AssemblyInfo.cs @@ -0,0 +1,20 @@ +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 Module")] +[assembly: AssemblyVersion("2.0.1.1407")] + +[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) +)] diff --git a/Software/Visual_Studio/PPC/Modules/Tango.PPC.MachineSettings/Properties/Resources.Designer.cs b/Software/Visual_Studio/PPC/Modules/Tango.PPC.MachineSettings/Properties/Resources.Designer.cs new file mode 100644 index 000000000..05abad8e0 --- /dev/null +++ b/Software/Visual_Studio/PPC/Modules/Tango.PPC.MachineSettings/Properties/Resources.Designer.cs @@ -0,0 +1,71 @@ +//------------------------------------------------------------------------------ +// +// 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. +// +//------------------------------------------------------------------------------ + +namespace Tango.PPC.MachineSettings.Properties +{ + + + /// + /// A strongly-typed resource class, for looking up localized strings, etc. + /// + // 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() + { + } + + /// + /// Returns the cached ResourceManager instance used by this class. + /// + [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.MachineSettings.Properties.Resources", typeof(Resources).Assembly); + resourceMan = temp; + } + return resourceMan; + } + } + + /// + /// Overrides the current thread's CurrentUICulture property for all + /// resource lookups using this strongly typed resource class. + /// + [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/Modules/Tango.PPC.MachineSettings/Properties/Resources.resx b/Software/Visual_Studio/PPC/Modules/Tango.PPC.MachineSettings/Properties/Resources.resx new file mode 100644 index 000000000..af7dbebba --- /dev/null +++ b/Software/Visual_Studio/PPC/Modules/Tango.PPC.MachineSettings/Properties/Resources.resx @@ -0,0 +1,117 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/Software/Visual_Studio/PPC/Modules/Tango.PPC.MachineSettings/Properties/Settings.Designer.cs b/Software/Visual_Studio/PPC/Modules/Tango.PPC.MachineSettings/Properties/Settings.Designer.cs new file mode 100644 index 000000000..b16d01807 --- /dev/null +++ b/Software/Visual_Studio/PPC/Modules/Tango.PPC.MachineSettings/Properties/Settings.Designer.cs @@ -0,0 +1,30 @@ +//------------------------------------------------------------------------------ +// +// 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. +// +//------------------------------------------------------------------------------ + +namespace Tango.PPC.MachineSettings.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/Modules/Tango.PPC.MachineSettings/Properties/Settings.settings b/Software/Visual_Studio/PPC/Modules/Tango.PPC.MachineSettings/Properties/Settings.settings new file mode 100644 index 000000000..033d7a5e9 --- /dev/null +++ b/Software/Visual_Studio/PPC/Modules/Tango.PPC.MachineSettings/Properties/Settings.settings @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/Software/Visual_Studio/PPC/Modules/Tango.PPC.MachineSettings/Tango.PPC.MachineSettings.csproj b/Software/Visual_Studio/PPC/Modules/Tango.PPC.MachineSettings/Tango.PPC.MachineSettings.csproj new file mode 100644 index 000000000..d0fccad96 --- /dev/null +++ b/Software/Visual_Studio/PPC/Modules/Tango.PPC.MachineSettings/Tango.PPC.MachineSettings.csproj @@ -0,0 +1,161 @@ + + + + + Debug + AnyCPU + {91B70E9B-66A7-4873-AE10-400E71CF404F} + library + Tango.PPC.MachineSettings + Tango.PPC.MachineSettings + v4.6 + 512 + {60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} + 4 + + + true + full + false + ..\..\..\Build\Debug\PPC\ + DEBUG;TRACE + prompt + 4 + + + pdbonly + true + ..\..\..\Build\Release\PPC\ + TRACE + prompt + 4 + + + + ..\..\..\packages\EntityFramework.6.0.0\lib\net45\EntityFramework.dll + True + + + ..\..\..\packages\EntityFramework.6.0.0\lib\net45\EntityFramework.SqlServer.dll + + + ..\..\..\packages\FontAwesome.WPF.4.7.0.9\lib\net40\FontAwesome.WPF.dll + + + ..\..\..\packages\Google.Protobuf.3.4.1\lib\net45\Google.Protobuf.dll + + + + + + ..\..\..\packages\Expression.Blend.Sdk.1.0.2\lib\net45\System.Windows.Interactivity.dll + + + + + + + + + 4.0 + + + + + + + + MSBuild:Compile + Designer + + + Designer + MSBuild:Compile + + + + + GlobalVersionInfo.cs + + + + Code + + + True + True + Resources.resx + + + True + Settings.settings + True + + + + + MainView.xaml + + + ResXFileCodeGenerator + Resources.Designer.cs + + + + + SettingsSingleFileGenerator + Settings.Designer.cs + + + + + {f441feee-322a-4943-b566-110e12fd3b72} + Tango.BL + + + {a34ee0f0-649d-41c8-8489-b6f1cc6924ee} + Tango.Core + + + {b112d89a-a106-41ae-a0c1-4abc84c477f5} + Tango.DragAndDrop + + + {bc932dbd-7cdb-488c-99e4-f02cf441f55e} + Tango.Logging + + + {e4927038-348d-4295-aaf4-861c58cb3943} + Tango.PMR + + + {d8f1ad85-526a-4f50-b6dc-d437af63d8d8} + Tango.Settings + + + {8491d07b-c1f6-4b62-a412-41b9fd2d6538} + Tango.SharedUI + + + {fd86424c-6e84-491b-8df9-3d0f5c236a2a} + Tango.Touch + + + {74e700b0-1156-4126-be40-ee450d3c3026} + Tango.Transport + + + {0be74eee-22cb-4dba-b896-793b9e1a3ac0} + Tango.PPC.Common + + + + + + + + + + + + \ No newline at end of file diff --git a/Software/Visual_Studio/PPC/Modules/Tango.PPC.MachineSettings/ViewModelLocator.cs b/Software/Visual_Studio/PPC/Modules/Tango.PPC.MachineSettings/ViewModelLocator.cs new file mode 100644 index 000000000..5d3e101cd --- /dev/null +++ b/Software/Visual_Studio/PPC/Modules/Tango.PPC.MachineSettings/ViewModelLocator.cs @@ -0,0 +1,32 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Tango.Core.DI; +using Tango.PPC.MachineSettings.ViewModels; + +namespace Tango.PPC.MachineSettings +{ + public static class ViewModelLocator + { + /// + /// Initializes a new instance of the ViewModelLocator class. + /// + static ViewModelLocator() + { + TangoIOC.Default.Register(); + } + + /// + /// Gets the main view VM. + /// + public static MainViewVM MainViewVM + { + get + { + return TangoIOC.Default.GetInstance(); + } + } + } +} diff --git a/Software/Visual_Studio/PPC/Modules/Tango.PPC.MachineSettings/ViewModels/MainViewVM.cs b/Software/Visual_Studio/PPC/Modules/Tango.PPC.MachineSettings/ViewModels/MainViewVM.cs new file mode 100644 index 000000000..877374a40 --- /dev/null +++ b/Software/Visual_Studio/PPC/Modules/Tango.PPC.MachineSettings/ViewModels/MainViewVM.cs @@ -0,0 +1,24 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Tango.PPC.Common; + +namespace Tango.PPC.MachineSettings.ViewModels +{ + /// + /// Represents the main view VM and entry point for . + /// + /// + public class MainViewVM : PPCViewModel + { + /// + /// Called when the application has been started + /// + public override void OnApplicationStarted() + { + //Start initializing here rather then in the constructor. + } + } +} diff --git a/Software/Visual_Studio/PPC/Modules/Tango.PPC.MachineSettings/Views/MainView.xaml b/Software/Visual_Studio/PPC/Modules/Tango.PPC.MachineSettings/Views/MainView.xaml new file mode 100644 index 000000000..ff27b26f3 --- /dev/null +++ b/Software/Visual_Studio/PPC/Modules/Tango.PPC.MachineSettings/Views/MainView.xaml @@ -0,0 +1,14 @@ + + + + + diff --git a/Software/Visual_Studio/PPC/Modules/Tango.PPC.MachineSettings/Views/MainView.xaml.cs b/Software/Visual_Studio/PPC/Modules/Tango.PPC.MachineSettings/Views/MainView.xaml.cs new file mode 100644 index 000000000..4a9e38e05 --- /dev/null +++ b/Software/Visual_Studio/PPC/Modules/Tango.PPC.MachineSettings/Views/MainView.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.PPC.MachineSettings.Views +{ + /// + /// Interaction logic for MainView.xaml + /// + public partial class MainView : UserControl + { + public MainView() + { + InitializeComponent(); + } + } +} diff --git a/Software/Visual_Studio/PPC/Modules/Tango.PPC.MachineSettings/app.config b/Software/Visual_Studio/PPC/Modules/Tango.PPC.MachineSettings/app.config new file mode 100644 index 000000000..77b7003e2 --- /dev/null +++ b/Software/Visual_Studio/PPC/Modules/Tango.PPC.MachineSettings/app.config @@ -0,0 +1,61 @@ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Software/Visual_Studio/PPC/Modules/Tango.PPC.MachineSettings/packages.config b/Software/Visual_Studio/PPC/Modules/Tango.PPC.MachineSettings/packages.config new file mode 100644 index 000000000..80367fdd2 --- /dev/null +++ b/Software/Visual_Studio/PPC/Modules/Tango.PPC.MachineSettings/packages.config @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/Software/Visual_Studio/Tango.sln b/Software/Visual_Studio/Tango.sln index 9fed570ea..ed2b5f28e 100644 --- a/Software/Visual_Studio/Tango.sln +++ b/Software/Visual_Studio/Tango.sln @@ -208,6 +208,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Tango.CatalogGenerator", "U EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Tango.AnimatedGif", "Tango.AnimatedGif\Tango.AnimatedGif.csproj", "{D129789C-3096-4D0B-8DD7-FE24A4DF4B21}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Tango.PPC.MachineSettings", "PPC\Modules\Tango.PPC.MachineSettings\Tango.PPC.MachineSettings.csproj", "{91B70E9B-66A7-4873-AE10-400E71CF404F}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution AppVeyor|Any CPU = AppVeyor|Any CPU @@ -3607,6 +3609,46 @@ Global {D129789C-3096-4D0B-8DD7-FE24A4DF4B21}.Release|x64.Build.0 = Release|Any CPU {D129789C-3096-4D0B-8DD7-FE24A4DF4B21}.Release|x86.ActiveCfg = Release|Any CPU {D129789C-3096-4D0B-8DD7-FE24A4DF4B21}.Release|x86.Build.0 = Release|Any CPU + {91B70E9B-66A7-4873-AE10-400E71CF404F}.AppVeyor|Any CPU.ActiveCfg = Release|Any CPU + {91B70E9B-66A7-4873-AE10-400E71CF404F}.AppVeyor|Any CPU.Build.0 = Release|Any CPU + {91B70E9B-66A7-4873-AE10-400E71CF404F}.AppVeyor|ARM.ActiveCfg = Release|Any CPU + {91B70E9B-66A7-4873-AE10-400E71CF404F}.AppVeyor|ARM.Build.0 = Release|Any CPU + {91B70E9B-66A7-4873-AE10-400E71CF404F}.AppVeyor|ARM64.ActiveCfg = Release|Any CPU + {91B70E9B-66A7-4873-AE10-400E71CF404F}.AppVeyor|ARM64.Build.0 = Release|Any CPU + {91B70E9B-66A7-4873-AE10-400E71CF404F}.AppVeyor|x64.ActiveCfg = Release|Any CPU + {91B70E9B-66A7-4873-AE10-400E71CF404F}.AppVeyor|x64.Build.0 = Release|Any CPU + {91B70E9B-66A7-4873-AE10-400E71CF404F}.AppVeyor|x86.ActiveCfg = Release|Any CPU + {91B70E9B-66A7-4873-AE10-400E71CF404F}.AppVeyor|x86.Build.0 = Release|Any CPU + {91B70E9B-66A7-4873-AE10-400E71CF404F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {91B70E9B-66A7-4873-AE10-400E71CF404F}.Debug|Any CPU.Build.0 = Debug|Any CPU + {91B70E9B-66A7-4873-AE10-400E71CF404F}.Debug|ARM.ActiveCfg = Debug|Any CPU + {91B70E9B-66A7-4873-AE10-400E71CF404F}.Debug|ARM.Build.0 = Debug|Any CPU + {91B70E9B-66A7-4873-AE10-400E71CF404F}.Debug|ARM64.ActiveCfg = Debug|Any CPU + {91B70E9B-66A7-4873-AE10-400E71CF404F}.Debug|ARM64.Build.0 = Debug|Any CPU + {91B70E9B-66A7-4873-AE10-400E71CF404F}.Debug|x64.ActiveCfg = Debug|Any CPU + {91B70E9B-66A7-4873-AE10-400E71CF404F}.Debug|x64.Build.0 = Debug|Any CPU + {91B70E9B-66A7-4873-AE10-400E71CF404F}.Debug|x86.ActiveCfg = Debug|Any CPU + {91B70E9B-66A7-4873-AE10-400E71CF404F}.Debug|x86.Build.0 = Debug|Any CPU + {91B70E9B-66A7-4873-AE10-400E71CF404F}.DefaultBuild|Any CPU.ActiveCfg = Debug|Any CPU + {91B70E9B-66A7-4873-AE10-400E71CF404F}.DefaultBuild|Any CPU.Build.0 = Debug|Any CPU + {91B70E9B-66A7-4873-AE10-400E71CF404F}.DefaultBuild|ARM.ActiveCfg = Debug|Any CPU + {91B70E9B-66A7-4873-AE10-400E71CF404F}.DefaultBuild|ARM.Build.0 = Debug|Any CPU + {91B70E9B-66A7-4873-AE10-400E71CF404F}.DefaultBuild|ARM64.ActiveCfg = Debug|Any CPU + {91B70E9B-66A7-4873-AE10-400E71CF404F}.DefaultBuild|ARM64.Build.0 = Debug|Any CPU + {91B70E9B-66A7-4873-AE10-400E71CF404F}.DefaultBuild|x64.ActiveCfg = Debug|Any CPU + {91B70E9B-66A7-4873-AE10-400E71CF404F}.DefaultBuild|x64.Build.0 = Debug|Any CPU + {91B70E9B-66A7-4873-AE10-400E71CF404F}.DefaultBuild|x86.ActiveCfg = Debug|Any CPU + {91B70E9B-66A7-4873-AE10-400E71CF404F}.DefaultBuild|x86.Build.0 = Debug|Any CPU + {91B70E9B-66A7-4873-AE10-400E71CF404F}.Release|Any CPU.ActiveCfg = Release|Any CPU + {91B70E9B-66A7-4873-AE10-400E71CF404F}.Release|Any CPU.Build.0 = Release|Any CPU + {91B70E9B-66A7-4873-AE10-400E71CF404F}.Release|ARM.ActiveCfg = Release|Any CPU + {91B70E9B-66A7-4873-AE10-400E71CF404F}.Release|ARM.Build.0 = Release|Any CPU + {91B70E9B-66A7-4873-AE10-400E71CF404F}.Release|ARM64.ActiveCfg = Release|Any CPU + {91B70E9B-66A7-4873-AE10-400E71CF404F}.Release|ARM64.Build.0 = Release|Any CPU + {91B70E9B-66A7-4873-AE10-400E71CF404F}.Release|x64.ActiveCfg = Release|Any CPU + {91B70E9B-66A7-4873-AE10-400E71CF404F}.Release|x64.Build.0 = Release|Any CPU + {91B70E9B-66A7-4873-AE10-400E71CF404F}.Release|x86.ActiveCfg = Release|Any CPU + {91B70E9B-66A7-4873-AE10-400E71CF404F}.Release|x86.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -3670,14 +3712,15 @@ Global {729455D4-C384-4497-AF5D-0A598F86DAC6} = {0048447D-1D94-4E60-9DAD-7349C777CB4E} {0440A135-0DF0-4232-AB3C-98B9283123B3} = {5F6BBAA8-EAD0-4B18-97E5-55B4F56DD760} {808E47B6-BAA7-4D23-83CB-40C53DC4B38A} = {5F6BBAA8-EAD0-4B18-97E5-55B4F56DD760} + {91B70E9B-66A7-4873-AE10-400E71CF404F} = {0048447D-1D94-4E60-9DAD-7349C777CB4E} 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 -- cgit v1.3.1