Ejemplo n.º 1
0
        public BaseStep Clone()
        {
            var step = new BaseStep(Name, LuaName, DefaultPosition);

            step.Owner = Owner;
            return(step);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Добавить базовый шаг
        /// </summary>
        /// <param name="luaName">Lua-имя</param>
        /// <param name="name">Имя</param>
        /// <param name="defaultPosition">Стандартная позиция шага в
        /// базовой операции.</param>
        public void AddStep(string luaName, string name, int defaultPosition)
        {
            if (Steps.Count == 0)
            {
                var emptyStep = new BaseStep("", "");
                emptyStep.Owner = this;
                // Пустой объект, если не должно быть выбрано никаких объектов
                Steps.Add(emptyStep);
            }

            var step = new BaseStep(name, luaName, defaultPosition);

            step.Owner = this;
            Steps.Add(step);
        }
Ejemplo n.º 3
0
        public override bool SetNewValue(string newVal, bool isExtraValue)
        {
            State state = Owner;

            Step equalStep = state.Steps
                             .Where(x => x.GetBaseStepName() == newVal)
                             .FirstOrDefault();

            if (equalStep == null)
            {
                equalStep = state.Steps
                            .Where(x => x.GetBaseStepLuaName() == newVal)
                            .FirstOrDefault();
            }

            if (equalStep != null && newVal != string.Empty)
            {
                return(false);
            }

            Mode     mode     = state.Owner;
            BaseStep baseStep = mode.BaseOperation
                                .GetStateBaseSteps(state.Type)
                                .Where(x => x.LuaName == newVal).FirstOrDefault();

            if (baseStep == null)
            {
                baseStep = mode.BaseOperation
                           .GetStateBaseSteps(state.Type)
                           .Where(x => x.Name == newVal).FirstOrDefault();
            }

            if (baseStep != null)
            {
                this.baseStep       = baseStep.Clone();
                this.baseStep.Owner = this;
                if (name.Contains(NewStepName) && baseStep.Name != string.Empty)
                {
                    name = baseStep.Name;
                }

                return(true);
            }

            return(false);
        }
Ejemplo n.º 4
0
        /// <summary>
        /// Копирование состояний и базовых шагов
        /// </summary>
        /// <param name="newOwner">Новая операция-владелец</param>
        /// <returns></returns>
        private Dictionary <string, List <BaseStep> > CloneStates(
            BaseOperation newOwner)
        {
            var clonedStates = new Dictionary <string, List <BaseStep> >();

            foreach (var state in States)
            {
                var             clonedSteps = new List <BaseStep>();
                List <BaseStep> steps       = state.Value;
                foreach (var step in steps)
                {
                    BaseStep clonedStep = step.Clone();
                    clonedStep.Owner = newOwner;
                    clonedSteps.Add(clonedStep);
                }

                clonedStates.Add(state.Key, clonedSteps);
            }

            return(clonedStates);
        }
Ejemplo n.º 5
0
        /// <summary>
        /// Добавить базовый шаг
        /// </summary>
        /// <param name="stateTypeStr">Тип состояния</param>
        /// <param name="luaName">Lua-имя</param>
        /// <param name="name">Имя</param>
        /// <param name="defaultPosition">Стандартная позиция шага в
        /// базовой операции.</param>
        public void AddStep(string stateTypeStr, string luaName, string name,
                            int defaultPosition)
        {
            var step = new BaseStep(name, luaName, defaultPosition);

            step.Owner = this;

            if (states.ContainsKey(stateTypeStr))
            {
                states[stateTypeStr].Add(step);
            }
            else
            {
                var emptyStep = new BaseStep(string.Empty, string.Empty);
                emptyStep.Owner = this;

                var stepsList = new List <BaseStep>();
                stepsList.Add(emptyStep);
                stepsList.Add(step);

                states.Add(stateTypeStr, stepsList);
            }
        }
Ejemplo n.º 6
0
        public void SetUpFromBaseTechObject(BaseStep baseStep)
        {
            bool setBaseStep = true;

            SetNewValue(baseStep.Name, setBaseStep);
        }
Ejemplo n.º 7
0
        /// <summary>
        /// Создание нового шага.
        /// </summary>
        /// <param name="name">Имя шага.</param>
        /// <param name="getN">Функция получения номера шага.</param>
        /// <param name="isMainStep">Признак того, является ли шаг
        /// шагом операции. </param>
        /// <param name="owner">Владелец шага (Состояние)</param>
        public Step(string name, GetN getN, State owner,
                    bool isMainStep = false)
        {
            this.name      = name;
            this.getN      = getN;
            IsMainStep     = isMainStep;
            Owner          = owner;
            baseStep       = new BaseStep(string.Empty, string.Empty);
            baseStep.Owner = this;

            items = new List <ITreeViewItem>();

            actions = new List <Action>();
            actions.Add(new Action("Включать", this, Action.OpenDevices,
                                   new Device.DeviceType[]
            {
                Device.DeviceType.V,
                Device.DeviceType.DO,
                Device.DeviceType.M
            }));

            actions.Add(new Action("Включать реверс", this,
                                   Action.OpenReverseDevices,
                                   new Device.DeviceType[]
            {
                Device.DeviceType.M
            },
                                   new Device.DeviceSubType[]
            {
                Device.DeviceSubType.M_REV_FREQ,
                Device.DeviceSubType.M_REV_FREQ_2,
                Device.DeviceSubType.M_REV_FREQ_2_ERROR,
                Device.DeviceSubType.M_ATV,
                Device.DeviceSubType.M
            }));

            actions.Add(new Action("Выключать", this, Action.CloseDevices,
                                   new Device.DeviceType[]
            {
                Device.DeviceType.V,
                Device.DeviceType.DO,
                Device.DeviceType.M
            }));
            actions[2].DrawStyle = DrawInfo.Style.RED_BOX;

            actions.Add(new ActionGroup("Верхние седла", this,
                                        ActionGroup.OpenedUpperSeats,
                                        new Device.DeviceType[]
            {
                Device.DeviceType.V
            },
                                        new Device.DeviceSubType[]
            {
                Device.DeviceSubType.V_MIXPROOF,
                Device.DeviceSubType.V_AS_MIXPROOF,
                Device.DeviceSubType.V_IOLINK_MIXPROOF
            }));
            actions[3].DrawStyle = DrawInfo.Style.GREEN_UPPER_BOX;

            actions.Add(new ActionGroup("Нижние седла", this,
                                        ActionGroup.OpenedLowerSeats,
                                        new Device.DeviceType[]
            {
                Device.DeviceType.V
            },
                                        new Device.DeviceSubType[]
            {
                Device.DeviceSubType.V_MIXPROOF,
                Device.DeviceSubType.V_AS_MIXPROOF,
                Device.DeviceSubType.V_IOLINK_MIXPROOF
            }));
            actions[4].DrawStyle = DrawInfo.Style.GREEN_LOWER_BOX;

            actions.Add(new Action("Сигналы для включения", this,
                                   Action.RequiredFB,
                                   new Device.DeviceType[]
            {
                Device.DeviceType.DI,
                Device.DeviceType.GS
            }));

            actions.Add(new ActionGroupWash("Устройства", this,
                                            ActionGroupWash.SingleGroupAction));

            // Специальное действие - выдача дискретных сигналов
            // при наличии входного дискретного сигнала.
            actions.Add(new ActionGroup("Группы DI -> DO DO ...", this,
                                        ActionGroup.DIDO,
                                        new Device.DeviceType[]
            {
                Device.DeviceType.DI,
                Device.DeviceType.SB,
                Device.DeviceType.DO
            }));

            // Специальное действие - выдача аналоговых сигналов при
            // наличии входного  аналогового сигнала.
            actions.Add(new ActionGroup("Группы AI -> AO AO ...", this,
                                        ActionGroup.AIAO,
                                        new Device.DeviceType[]
            {
                Device.DeviceType.AI,
                Device.DeviceType.AO,
                Device.DeviceType.M
            }));

            items.AddRange(actions.ToArray());

            if (!isMainStep)
            {
                timeParam = new ObjectProperty("Время (параметр)", -1, -1);
                nextStepN = new ObjectProperty("Номер следующего шага", -1, -1);

                items.Add(timeParam);
                items.Add(nextStepN);
            }
        }