From f87208b19e183d309a3bcacd26ecc74c4da728d4 Mon Sep 17 00:00:00 2001 From: Roy Ben Shabat Date: Tue, 9 Sep 2025 12:34:54 +0300 Subject: Changed PPC CMYK color space label to Volume. Re-implemented machine designer clone. --- .../ViewModels/MachineCreationDialogVM.cs | 4 +- .../ViewModels/MainViewVM.cs | 52 +++++++++++++++++++--- .../Views/MachineSettingsView.xaml | 2 +- 3 files changed, 48 insertions(+), 10 deletions(-) (limited to 'Software/Visual_Studio/MachineStudio') diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.MachineDesigner/ViewModels/MachineCreationDialogVM.cs b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.MachineDesigner/ViewModels/MachineCreationDialogVM.cs index 9d203b76d..93c7490fb 100644 --- a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.MachineDesigner/ViewModels/MachineCreationDialogVM.cs +++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.MachineDesigner/ViewModels/MachineCreationDialogVM.cs @@ -17,7 +17,7 @@ namespace Tango.MachineStudio.MachineDesigner.ViewModels public List HardwareVersionsFiltered { - get { return HardwareVersions.Where(x => x.MachineType == (int)MachineType).ToList(); } + get { return HardwareVersions != null ? HardwareVersions.Where(x => x.MachineType == (int)MachineType).ToList() : null; } } private HardwareVersion _selectedHardwareVersion; @@ -64,7 +64,7 @@ namespace Tango.MachineStudio.MachineDesigner.ViewModels protected override bool CanOK() { - return base.CanOK() && !String.IsNullOrWhiteSpace(SerialNumber) && !String.IsNullOrWhiteSpace(Name) && SelectedHardwareVersion != null; + return base.CanOK() && !String.IsNullOrWhiteSpace(SerialNumber) && !String.IsNullOrWhiteSpace(Name) && (SelectedHardwareVersion != null || HardwareVersions == null); } } } diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.MachineDesigner/ViewModels/MainViewVM.cs b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.MachineDesigner/ViewModels/MainViewVM.cs index c928af0c7..06d702ca0 100644 --- a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.MachineDesigner/ViewModels/MainViewVM.cs +++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.MachineDesigner/ViewModels/MainViewVM.cs @@ -537,13 +537,51 @@ namespace Tango.MachineStudio.MachineDesigner.ViewModels machineConfigBeforeClone = ActiveMachine.Configuration; IsNewMachine = true; - ActiveMachine = ActiveMachine.Clone(); - ActiveMachine.Name = machineCreationDialogVM.Name; - ActiveMachine.SerialNumber = machineCreationDialogVM.SerialNumber; - ActiveMachine.IsDeviceRegistered = false; - ActiveMachine.DeviceId = null; - ActiveMachine.DeviceName = null; - ActiveMachine.ActivationKey = null; + var cloned = ActiveMachine.Clone(); + cloned.Name = machineCreationDialogVM.Name; + cloned.SerialNumber = machineCreationDialogVM.SerialNumber; + cloned.IsDeviceRegistered = false; + cloned.DeviceId = null; + cloned.DeviceName = null; + cloned.ActivationKey = null; + cloned.Organization = null; + cloned.SiteGuid = null; + cloned.OrganizationGuid = null; + + while (cloned.ActivationKey == null) //Generate a random password and make sure no machine matches it. + { + cloned.ActivationKey = PasswordGenerator.Generate(8, PasswordGenerator.PasswordType.Alpha, PasswordGenerator.PasswordCasing.Upper); + if (await ActiveMachineAdapter.Context.Machines.Where(x => x.ActivationKey == cloned.ActivationKey).CountAsync() == 0) + { + break; + } + + cloned.ActivationKey = null; + } + + + for (int i = 0; i < ActiveMachine.Configuration.IdsPacks.Count; i++) + { + var dispenser = ActiveMachine.Configuration.IdsPacks[i].Dispenser; + + if (dispenser != null) + { + var clonedDispenser = new Dispenser(); + clonedDispenser.CalibrationData = dispenser.CalibrationData; + clonedDispenser.DispenserType = dispenser.DispenserType; + clonedDispenser.DispenserTypeGuid = dispenser.DispenserTypeGuid; + clonedDispenser.NlPerPulse = dispenser.NlPerPulse; + clonedDispenser.PartNumber = dispenser.PartNumber; + clonedDispenser.PcbSerial = dispenser.PcbSerial; + clonedDispenser.PcbVersion = dispenser.PcbVersion; + clonedDispenser.ProductionDate = dispenser.ProductionDate; + clonedDispenser.SerialNumber = cloned.SerialNumber + "_D" + (i + 1); + + cloned.Configuration.IdsPacks[i].Dispenser = clonedDispenser; + } + } + + ActiveMachine = cloned; ActiveMachineAdapter.Context.Machines.Add(ActiveMachine); } } diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.MachineDesigner/Views/MachineSettingsView.xaml b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.MachineDesigner/Views/MachineSettingsView.xaml index 2ef48f9b3..96b5e0ee1 100644 --- a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.MachineDesigner/Views/MachineSettingsView.xaml +++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.MachineDesigner/Views/MachineSettingsView.xaml @@ -69,7 +69,7 @@ -