aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/SideChains/RealTimeGraphEx/FastGraphs
ModeNameSize
-rw-r--r--RealTimeGraphExEllipseScroll.cs4002logstatsplain
-rw-r--r--RealTimeGraphExLineErase.cs8808logstatsplain
-rw-r--r--RealTimeGraphExLineScroll.cs8221logstatsplain
-rw-r--r--RealTimeGraphExMultiLineErase.cs7685logstatsplain
-rw-r--r--RealTimeGraphExMultiLineScroll.cs9115logstatsplain
-rw-r--r--RealTimeGraphExShapeErase.cs13308logstatsplain
-rw-r--r--RealTimeGraphExShapeScroll.cs12863logstatsplain
-rw-r--r--RealTimeGraphExWaveErase.cs2526logstatsplain
-rw-r--r--RealTimeGraphExWav
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.BL.Enumerations;
using Tango.Core.Commands;
using Tango.Integration.Operation;
using Tango.SharedUI.Helpers;

namespace Tango.MachineStudio.Technician.TechItems
{
    [TechItem(21)]
    public class JobRunnerItem : TechItem
    {
        public event Action StartJob;
        public event Action StopJob;

        private Job _job;
        /// <summary>
        /// Gets or sets the job.
        /// </summary>
        [XmlIgnore]
        public Job Job
        {
            get { return _job; }
            set { _job = value; RaisePropertyChangedAuto(); }
        }

        private Segment _segment;
        /// <summary>
        /// Gets or sets the segment.
        /// </summary>
        [XmlIgnore]
        public Segment Segment
        {
            get { return _segment; }
            set { _segment = value; RaisePropertyChangedAuto(); }
        }

        private BrushStop _brushStop;
        /// <summary>
        /// Gets or sets the brush stop.
        /// </summary>
        [XmlIgnore]
        public BrushStop BrushStop
        {
            get { return _brushStop; }
            set { _brushStop = value; RaisePropertyChangedAuto(); }
        }

        private Machine _machine;
        /// <summary>
        /// Gets or sets the machine.
        /// </summary>
        [XmlIgnore]
        public Machine Machine
        {
            get { return _machine; }
            set { _machine = value; RaisePropertyChangedAuto(); Init(); StartStopJobCommand.RaiseCanExecuteChanged(); }
        }

        private ProcessParametersTable _processParameters;
        /// <summary>
        /// Gets or sets the process parameters.
        /// </summary>
        [XmlIgnore]
        public ProcessParametersTable ProcessParameters
        {
            get { return _processParameters; }
            set { _processParameters = value; RaisePropertyChangedAuto(); Init(); StartStopJobCommand.RaiseCanExecuteChanged(); }
        }

        private Rml _rml;
        /// <summary>
        /// Gets or sets the RML.
        /// </summary>
        [XmlIgnore]
        public Rml Rml
        {
            get { return _rml; }
            set { _rml = value; RaisePropertyChangedAuto(); Init(); StartStopJobCommand.RaiseCanExecuteChanged(); }
        }

        private RunningJobStatus _runningJobStatus;
        /// <summary>
        /// Gets or sets the running job status.
        /// </summary>
        [XmlIgnore]
        public RunningJobStatus RunningJobStatus
        {
            get { return _runningJobStatus; }
            set { _runningJobStatus = value; RaisePropertyChangedAuto(); }
        }

        private bool _isJobStarted;
        [XmlIgnore]
        public bool IsJobStarted
        {
            get { return _isJobStarted; }
            set { _isJobStarted = value; RaisePropertyChangedAuto(); }
        }

        /// <summary>
        /// Gets or sets the start stop job command.
        /// </summary>
        [XmlIgnore]
        public RelayCommand StartStopJobCommand { get; set; }

        [XmlIgnore]
        public JobHandler JobHandler { get; set; }

        /// <summary>
        /// Initializes a new instance of the <see cref="JobRunnerItem"/> class.
        /// </summary>
        public JobRunnerItem() : base()
        {
            StartStopJobCommand = new RelayCommand(StartStopJob, (x) => Job != null && Segment != null && BrushStop != null && Machine != null && Rml != null && ProcessParameters != null);

            Job = new Job();
            Job.Name = "Job Runner";
            Job.WindingMethod = Adapter.WindingMethods.FirstOrDefault();
            Job.SpoolType = Adapter.SpoolTypes.FirstOrDefault();
            Job.JobType = JobTypes.Sewing;

            Segment = Job.AddSolidSegment();
            BrushStop = Segment.AddBrushStop();
            BrushStop.ColorSpace = Adapter.ColorSpaces.SingleOrDefault(x => x.Code == ColorSpaces.Volume.ToInt32());

            Name = "Job Runner";
            Description = "Job Runner";
            Image = ResourceHelper.GetImageFromResources("Images/rgb-big.png");
        }

        private void StartStopJob()
        {
            if (!IsJobStarted)
            {
                IsJobStarted = true;
                StartJob?.Invoke();
            }
            else
            {
                StopJob?.Invoke();
            }
        }

        /// <summary>
        /// Initializes the specified configuration.
        /// </summary>
        /// <param name="configuration">The configuration.</param>
        /// <param name="rml">The RML.</param>
        /// <param name="processParameters">The process parameters.</param>
        public void Init()
        {
            if (Machine != null && Rml != null && ProcessParameters != null && BrushStop != null)
            {
                Job.Machine = Machine;
                Job.Rml = Rml;
                BrushStop.SetLiquidVolumes(Machine.Configuration, Rml, ProcessParameters);
            }
        }

        /// <summary>
        /// Initializes a new instance of the <see cref="JobRunnerItem"/> class.
        /// </summary>
        /// <param name="job">The job.</param>
        public JobRunnerItem(Job job) : this()
        {

        }

        /// <summary>
        /// Clones this instance.
        /// </summary>
        /// <returns></returns>
        public override TechItem Clone()
        {
            JobRunnerItem cloned = base.Clone() as JobRunnerItem;
            cloned.Job = Job.Clone();
            cloned.Segment = cloned.Job.Segments.First();
            cloned.BrushStop = cloned.Job.Segments.First().BrushStops.First();
            return cloned;
        }
    }
}