From c6b01f3e683b83fb0d6bf080efbd24a9a732b9f5 Mon Sep 17 00:00:00 2001 From: Roy Ben-Shabat Date: Sun, 15 Jul 2018 13:22:53 +0300 Subject: Implemented process parameters item on machine studio tech board. --- .../TechItems/ProcessParametersItem.cs | 133 +++++++++++++++++++++ .../TechItems/TechItem.cs | 1 + 2 files changed, 134 insertions(+) create mode 100644 Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/TechItems/ProcessParametersItem.cs (limited to 'Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/TechItems') diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/TechItems/ProcessParametersItem.cs b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/TechItems/ProcessParametersItem.cs new file mode 100644 index 000000000..a6d3ae8f0 --- /dev/null +++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/TechItems/ProcessParametersItem.cs @@ -0,0 +1,133 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Media; +using System.Xml.Serialization; +using Tango.BL.Entities; +using Tango.Core.Commands; +using Tango.SharedUI.Helpers; + +namespace Tango.MachineStudio.Technician.TechItems +{ + /// + /// Represents a process parameters table item. + /// + /// + [TechItem(20)] + public class ProcessParametersItem : TechItem + { + public class ParameterIndex + { + public String Name { get; set; } + public int Index { get; set; } + } + + private static int _counter = 0; + + public event EventHandler PushParametersPressed; + + private String _displayName; + /// + /// Gets or sets the display name. + /// + public String DisplayName + { + get { return _displayName; } + set { _displayName = value; RaisePropertyChangedAuto(); } + } + + private ProcessParametersTable _processParameters; + /// + /// Gets or sets the process parameters. + /// + public ProcessParametersTable ProcessParameters + { + get { return _processParameters; } + set { _processParameters = value; RaisePropertyChangedAuto(); } + } + + /// + /// Gets or sets the parameters indices. + /// + public List ParametersIndices { get; set; } + + /// + /// Gets or sets the push parameters command. + /// + [XmlIgnore] + public RelayCommand PushParametersCommand { get; set; } + + private Rml _selectedResetRml; + /// + /// Gets or sets the selected reset RML. + /// + [XmlIgnore] + public Rml SelectedResetRML + { + get { return _selectedResetRml; } + set { _selectedResetRml = value; RaisePropertyChangedAuto(); ResetToRMLCommand.RaiseCanExecuteChanged(); } + } + + + /// + /// Gets or sets the push parameters command. + /// + [XmlIgnore] + public RelayCommand ResetToRMLCommand { get; set; } + + /// + /// Initializes a new instance of the class. + /// + public ProcessParametersItem() : base() + { + ParametersIndices = new List(); + DisplayName = "Process parameters " + _counter++; + Name = "Process Parameters"; + Description = "Process parameters table"; + Image = ResourceHelper.GetImageFromResources("Images/process-params.png"); + ProcessParameters = new ProcessParametersTable(); + Color = Colors.DodgerBlue; + PushParametersCommand = new RelayCommand(() => PushParametersPressed?.Invoke(this, ProcessParameters)); + + ResetToRMLCommand = new RelayCommand(ResetToRml, () => SelectedResetRML != null); + } + + private void ResetToRml() + { + if (SelectedResetRML != null) + { + var group = SelectedResetRML.ProcessParametersTablesGroups.FirstOrDefault(x => x.Active); + + if (group != null) + { + var table = group.ProcessParametersTables.OrderBy(x => x.TableIndex).FirstOrDefault(); + + if (table != null) + { + ProcessParameters = table.Clone(); + } + } + } + } + + /// + /// Initializes a new instance of the class. + /// + /// The process parameters. + public ProcessParametersItem(ProcessParametersTable processParameters) : this() + { + + } + + public override TechItem Clone() + { + ProcessParametersItem cloned = base.Clone() as ProcessParametersItem; + cloned.ProcessParameters = ProcessParameters.Clone(); + cloned.ParametersIndices = ParametersIndices.Select(x => new ParameterIndex() { Index = x.Index, Name = x.Name }).ToList(); + return cloned; + } + + } +} diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/TechItems/TechItem.cs b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/TechItems/TechItem.cs index 24ca57a4a..ff75c1644 100644 --- a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/TechItems/TechItem.cs +++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/TechItems/TechItem.cs @@ -34,6 +34,7 @@ namespace Tango.MachineStudio.Technician.TechItems [XmlInclude(typeof(WinderItem))] [XmlInclude(typeof(DancerItem))] [XmlInclude(typeof(SpeedSensorItem))] + [XmlInclude(typeof(ProcessParametersItem))] public abstract class TechItem : ExtendedObject { /// -- cgit v1.3.1