diff options
| author | Avi Levkovich <avi@twine-s.com> | 2019-10-30 17:55:39 +0200 |
|---|---|---|
| committer | Avi Levkovich <avi@twine-s.com> | 2019-10-30 17:55:39 +0200 |
| commit | 3e22430905c4c247672237a6d64425f3f958626e (patch) | |
| tree | a0fbf053a2ddf1fefc9f0ae3281fb06e70e5e52e /Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.HardwareDesigner/ViewModels/MainViewVM.cs | |
| parent | cc657620eac3b626cf0790802c2a5ae3196c396b (diff) | |
| parent | 43113f6b264c8d334393c6116e1858eeec7ca5c6 (diff) | |
| download | Tango-3e22430905c4c247672237a6d64425f3f958626e.tar.gz Tango-3e22430905c4c247672237a6d64425f3f958626e.zip | |
Merge branch 'master' of https://twinetfs.visualstudio.com/_git/Tango
Diffstat (limited to 'Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.HardwareDesigner/ViewModels/MainViewVM.cs')
| -rw-r--r-- | Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.HardwareDesigner/ViewModels/MainViewVM.cs | 89 |
1 files changed, 87 insertions, 2 deletions
diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.HardwareDesigner/ViewModels/MainViewVM.cs b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.HardwareDesigner/ViewModels/MainViewVM.cs index 918eb02d4..40dc82d29 100644 --- a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.HardwareDesigner/ViewModels/MainViewVM.cs +++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.HardwareDesigner/ViewModels/MainViewVM.cs @@ -14,6 +14,8 @@ using System.Runtime.CompilerServices; using Tango.MachineStudio.Common; using Tango.Core.ExtensionMethods; using Tango.MachineStudio.HardwareDesigner.Views; +using Microsoft.Win32; +using System.IO; namespace Tango.MachineStudio.HardwareDesigner.ViewModels { @@ -87,7 +89,7 @@ namespace Tango.MachineStudio.HardwareDesigner.ViewModels return name; } } - + private ObservableCollection<HardwareVersion> _hardwareVersions; public ObservableCollection<HardwareVersion> HardwareVersions { @@ -107,6 +109,10 @@ namespace Tango.MachineStudio.HardwareDesigner.ViewModels public RelayCommand OpenComparisonWizardCommand { get; set; } + public RelayCommand ExportHardwareVersionCommand { get; set; } + + public RelayCommand ImportHardwareVersionCommand { get; set; } + public MainViewVM(INotificationProvider notification) { _notification = notification; @@ -122,7 +128,86 @@ namespace Tango.MachineStudio.HardwareDesigner.ViewModels CopyParametersCommand = new RelayCommand(CopyParameters, (x) => SelectedVersion != null && IsFree); CloneCommand = new RelayCommand(CloneCurrentVersion, () => SelectedVersion != null && IsFree); - OpenComparisonWizardCommand = new RelayCommand(OpenComparisonWizard); + OpenComparisonWizardCommand = new RelayCommand(OpenComparisonWizard, () => IsFree); + ExportHardwareVersionCommand = new RelayCommand(ExportHardwareVersion, () => IsFree && SelectedVersion != null && CurrentVersion != null); + ImportHardwareVersionCommand = new RelayCommand(ImportHardwareVersion, () => IsFree); + } + + private async void ExportHardwareVersion() + { + SaveFileDialog dlg = new SaveFileDialog(); + dlg.Title = "Export hardware version"; + dlg.DefaultExt = ".hv"; + dlg.Filter = "Hardware Version Files|*.hv"; + + if (dlg.ShowDialog().Value) + { + try + { + var json = await CurrentVersion.ToHardwareVersionFile(); + File.WriteAllText(dlg.FileName, json); + } + catch (Exception ex) + { + LogManager.Log(ex, "Error exporting hardware version."); + _notification.ShowError($"An error occurred while trying to export the selected hardware version.\n{ex.FlattenMessage()}"); + } + } + } + + private async void ImportHardwareVersion() + { + OpenFileDialog dlg = new OpenFileDialog(); + dlg.Title = "Import hardware version"; + dlg.DefaultExt = ".hv"; + dlg.Filter = "Hardware Version Files|*.hv"; + + if (dlg.ShowDialog().Value) + { + try + { + var hv = await HardwareVersion.FromHardwareVersionFile(File.ReadAllText(dlg.FileName)); + + String name = _notification.ShowTextInput("Enter hardware version name", "Name", hv.Name); + if (!String.IsNullOrWhiteSpace(name)) + { + using (_notification.PushTaskItem("Importing hardware version...")) + { + try + { + IsFree = false; + + hv.Name = name; + hv.Version = HardwareVersions.Max(x => x.Version) + 1; + + _db.HardwareVersions.Add(hv); + await _db.SaveChangesAsync(); + + RefreshVersions(); + + InvokeUI(() => + { + SelectedVersion = HardwareVersions.SingleOrDefault(x => x.Guid == hv.Guid); + }); + } + catch (Exception ex) + { + LogManager.Log(ex, "Error importing hardware version."); + _notification.ShowError($"An error occurred while trying to import the selected hardware version.\n{ex.FlattenMessage()}"); + } + finally + { + IsFree = true; + } + } + } + } + catch (Exception ex) + { + LogManager.Log(ex, "Error importing hardware version."); + _notification.ShowError($"An error occurred while trying to load the selected hardware version file.\n{ex.FlattenMessage()}"); + } + } } public override void OnApplicationReady() |
