Tango/Software/.metadata/.plugins/org.eclipse.core.resources/.history/65/9098c44222b80019199adde58e229227, branch software Twine softwares http://git.tvcloud.fr/Tango/atom/Software/.metadata/.plugins/org.eclipse.core.resources/.history/65/9098c44222b80019199adde58e229227?h=software 2019-08-15T06:28:24Z update the pitot function toget pressure with the new orifice 2019-08-15T06:28:24Z Avi Levkovich avi@twine-s.com 2019-08-15T06:28:24Z urn:sha1:04db0ce68722b5c8cd87fe6142298c8a1de4f061 and sensor. + stubs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Media.Imaging;
using Tango.Core;
using Tango.BL.Entities;
using Tango.BL.Enumerations;

namespace Tango.PPC.Common
{
    /// <summary>
    /// Represents a base class for PPC modules.
    /// </summary>
    /// <seealso cref="Tango.MachineStudio.Common.IStudioModule" />
    public abstract class PPCModuleBase : ExtendedObject, IPPCModule
    {
        private bool _isInitialized;

        /// <summary>
        /// Occurs when the module has been initialized.
        /// </summary>
        public event EventHandler Initialized;

        /// <summary>
        /// Gets the module name.
        /// </summary>
        public abstract string Name { get; }

        /// <summary>
        /// Gets the module description.
        /// </summary>
        public abstract string Description { get; }

        /// <summary>
        /// Gets the module cover image.
        /// </summary>
        public abstract BitmapSource Image { get; }

        /// <summary>
        /// Gets the module entry point view type.
        /// </summary>
        public abstract Type MainViewType { get; }

        /// <summary>
        /// Gets the permission required to see and load this module.
        /// </summary>
        public abstract Permissions Permission { get; }

        /// <summary>
        /// Gets a value indicating whether this module has been initialized.
        /// </summary>
        public bool IsInitialized
        {
            get
            {
                return _isInitialized;
            }
            private set
            {
                _isInitialized = value;
            }
        }

        /// <summary>
        /// Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.
        /// </summary>
        public abstract void Dispose();

        /// <summary>
        /// Perform any operations required to initialize this module.
        /// </summary>
        public void Initialize()
        {
            if (!IsInitialized)
            {
                OnInitialized();
                IsInitialized = true;
            }
        }

        /// <summary>
        /// Called when machine studio initializes this module.
        /// </summary>
        protected virtual void OnInitialized()
        {
            Initialized?.Invoke(this, new EventArgs());
        }
    }
}